d|17kP5Sl2Mm=ll;?YXn
zLJzgp8Y$7El`6h7@~<@LVw6H455U;4g-wGrteA=1p9~F#J80-(i6{DZ&BAg4(iEc~
z6~9Jni~0Di0ga@TSVdF(Om#@Am;E=4gat$9AW6FMzvrjE5QWs;kUpyz1dO@f3)Y7@zuM|(hM!yy+>A(S5L
zu$+bPc%d6tom_+hMqJ?HRP1$bMMF|Oj)Rdp@6(|=EDu^eE8O9h6@!EKHfniM{Fm>q
zJ3khi1PP(B!bhq`!F!@OfvlHK_~Js^Kt_=^0glGx1h{sBhLf=HFWB!2ikoWSjz!-T
z!6wUkIL%RU^a^ndZzaYC*pdiBv$-4RvJ8dx?~F0?bV2x%6KEPU$1njH;cI%x^7;85
z!HG<=u%B^>#Xrv;)U!h{ykJ;Z$o^zs-hWV|J%mGkw>{3XYmH5^+=a&i4g@8!;O1G9
zRZ^ko$a|`R5FBP}gh;y?9uUxMvE0t4RlLZVu7+_3i2H!GNF1
zdVmENMd@C&Tr>Eex7+LpT#!Y7V-2Q?TL-+1*xqouzW%+6;vZHzrp8|8`i7O-ygr7p
zVvmE}9TrJ-&z>F{9iQxjB!%*K;rLzftN}`uCnjqJx1Y04&&S(x{<8Vnx)~Bur-jjV
zw5_6`q4yXyg53V(UK4>qvGNi`CkGcqDg!HbzYnx%6RWNk;Xdj(8M8ucV^LkipRug@
z^e~`YKE{LZ0YUF^-IFhejpZ*5b21IN+b~?z%YAmuiZp|zIJIKD0yuWk-q|V?^rV*^
zq|OG|@{z_wv@`*Fa2XJ*v7i-b@PnefN7u3&S(qG9ecV-BZo8XrIPS^@sbS6~+DBQu
zdFki}l7GFMd2>WwHeBA{aP_IqJU~Nrb+0{*GzXKnLCn|+s*&3UlBhHJn;=&^E&L_F
z@tP(jK|5-pM90`NCD3%kKkYEmIJlnXr}ImL+_oTokgItYaNWM#v;Mq{C1GQJoF|&e
zQ`aVy!c9g%?$t|VCFrbuvn@cq551l03SUDrRHf{JPVV=5l;774uqKOyl*`1nXBmVL
z2T*UeAoN9o;ox
zU29d;c3Q4XHun^xyn5&JVvlPm5;S7JaSxwh>8Fe%PR}HXH5A!5(aAz5t6qt8EmS63
zgW8Z#fw7Q>jMHVH^~1~b|Fq%#e{-J5?FUfj$d22UoxSWoBOyRRMpe36(meG40i9RV
AbN~PV
literal 0
HcmV?d00001
diff --git a/vscode/devbox/images/open.svg b/vscode/devbox/images/open.svg
new file mode 100644
index 00000000000..a4ca6b2489f
--- /dev/null
+++ b/vscode/devbox/images/open.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode/devbox/images/refresh.svg b/vscode/devbox/images/refresh.svg
new file mode 100644
index 00000000000..fa2801d2916
--- /dev/null
+++ b/vscode/devbox/images/refresh.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/vscode/devbox/package-lock.json b/vscode/devbox/package-lock.json
new file mode 100644
index 00000000000..5605e5700a6
--- /dev/null
+++ b/vscode/devbox/package-lock.json
@@ -0,0 +1,11807 @@
+{
+ "name": "devbox-sealos",
+ "version": "0.6.12",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "devbox-sealos",
+ "version": "0.6.12",
+ "license": "MIT",
+ "dependencies": {
+ "@chakra-ui/react": "^2.8.2",
+ "@emotion/react": "^11.13.3",
+ "@emotion/styled": "^11.13.0",
+ "axios": "^1.7.5",
+ "framer-motion": "^11.4.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-router-dom": "^6.26.1",
+ "ssh-config": "^5.0.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/preset-react": "^7.24.7",
+ "@babel/preset-typescript": "^7.24.7",
+ "@svgr/webpack": "^8.1.0",
+ "@types/mocha": "^10.0.7",
+ "@types/node": "20.x",
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@types/vscode": "^1.91.0",
+ "@typescript-eslint/eslint-plugin": "^7.14.1",
+ "@typescript-eslint/parser": "^7.11.0",
+ "@vscode/test-cli": "^0.0.9",
+ "@vscode/test-electron": "^2.4.0",
+ "autoprefixer": "^10.4.20",
+ "babel-loader": "^9.1.3",
+ "css-loader": "^7.1.2",
+ "eslint": "^8.57.0",
+ "html-webpack-plugin": "^5.6.0",
+ "style-loader": "^4.0.0",
+ "ts-loader": "^9.5.1",
+ "typescript": "^5.4.5",
+ "webpack": "^5.93.0",
+ "webpack-cli": "^5.1.4",
+ "webpack-dev-server": "^5.0.4",
+ "webpack-merge": "^6.0.1"
+ },
+ "engines": {
+ "vscode": "^1.91.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+ "dependencies": {
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.25.4.tgz",
+ "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.25.2.tgz",
+ "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.0",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-module-transforms": "^7.25.2",
+ "@babel/helpers": "^7.25.0",
+ "@babel/parser": "^7.25.0",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.2",
+ "@babel/types": "^7.25.2",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.25.5",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.25.5.tgz",
+ "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==",
+ "dependencies": {
+ "@babel/types": "^7.25.4",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
+ "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
+ "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
+ "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.25.2",
+ "@babel/helper-validator-option": "^7.24.8",
+ "browserslist": "^4.23.1",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
+ "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.25.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/traverse": "^7.25.4",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
+ "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
+ "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.24.8",
+ "@babel/types": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+ "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
+ "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
+ "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
+ "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
+ "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-wrap-function": "^7.25.0",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
+ "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+ "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
+ "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+ "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
+ "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
+ "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.25.0.tgz",
+ "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.4.tgz",
+ "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==",
+ "dependencies": {
+ "@babel/types": "^7.25.4"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.25.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz",
+ "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/traverse": "^7.25.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz",
+ "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
+ "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
+ "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
+ "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz",
+ "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
+ "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
+ "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz",
+ "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
+ "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
+ "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-remap-async-to-generator": "^7.25.0",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/traverse": "^7.25.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
+ "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-remap-async-to-generator": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
+ "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
+ "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
+ "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.4",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
+ "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
+ "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-replace-supers": "^7.25.0",
+ "@babel/traverse": "^7.25.4",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
+ "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/template": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
+ "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
+ "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
+ "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz",
+ "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.0",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
+ "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
+ "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
+ "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
+ "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.25.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
+ "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/traverse": "^7.25.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
+ "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
+ "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
+ "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
+ "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
+ "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
+ "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-simple-access": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
+ "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.0",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
+ "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
+ "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
+ "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
+ "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
+ "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
+ "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
+ "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
+ "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
+ "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
+ "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
+ "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.4",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
+ "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
+ "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-constant-elements": {
+ "version": "7.25.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz",
+ "integrity": "sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz",
+ "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz",
+ "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/types": "^7.25.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz",
+ "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz",
+ "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
+ "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
+ "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
+ "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
+ "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
+ "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
+ "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
+ "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz",
+ "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-create-class-features-plugin": "^7.25.0",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-syntax-typescript": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
+ "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
+ "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
+ "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
+ "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.2",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.25.4.tgz",
+ "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.25.4",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-validator-option": "^7.24.8",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.24.7",
+ "@babel/plugin-syntax-import-attributes": "^7.24.7",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.24.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.25.4",
+ "@babel/plugin-transform-async-to-generator": "^7.24.7",
+ "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
+ "@babel/plugin-transform-block-scoping": "^7.25.0",
+ "@babel/plugin-transform-class-properties": "^7.25.4",
+ "@babel/plugin-transform-class-static-block": "^7.24.7",
+ "@babel/plugin-transform-classes": "^7.25.4",
+ "@babel/plugin-transform-computed-properties": "^7.24.7",
+ "@babel/plugin-transform-destructuring": "^7.24.8",
+ "@babel/plugin-transform-dotall-regex": "^7.24.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.24.7",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
+ "@babel/plugin-transform-dynamic-import": "^7.24.7",
+ "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
+ "@babel/plugin-transform-export-namespace-from": "^7.24.7",
+ "@babel/plugin-transform-for-of": "^7.24.7",
+ "@babel/plugin-transform-function-name": "^7.25.1",
+ "@babel/plugin-transform-json-strings": "^7.24.7",
+ "@babel/plugin-transform-literals": "^7.25.2",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
+ "@babel/plugin-transform-member-expression-literals": "^7.24.7",
+ "@babel/plugin-transform-modules-amd": "^7.24.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.8",
+ "@babel/plugin-transform-modules-systemjs": "^7.25.0",
+ "@babel/plugin-transform-modules-umd": "^7.24.7",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
+ "@babel/plugin-transform-new-target": "^7.24.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
+ "@babel/plugin-transform-numeric-separator": "^7.24.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+ "@babel/plugin-transform-object-super": "^7.24.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.8",
+ "@babel/plugin-transform-parameters": "^7.24.7",
+ "@babel/plugin-transform-private-methods": "^7.25.4",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+ "@babel/plugin-transform-property-literals": "^7.24.7",
+ "@babel/plugin-transform-regenerator": "^7.24.7",
+ "@babel/plugin-transform-reserved-words": "^7.24.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.7",
+ "@babel/plugin-transform-spread": "^7.24.7",
+ "@babel/plugin-transform-sticky-regex": "^7.24.7",
+ "@babel/plugin-transform-template-literals": "^7.24.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.8",
+ "@babel/plugin-transform-unicode-escapes": "^7.24.7",
+ "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
+ "@babel/plugin-transform-unicode-regex": "^7.24.7",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.25.4",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.6",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.37.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/preset-react": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.24.7.tgz",
+ "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-validator-option": "^7.24.7",
+ "@babel/plugin-transform-react-display-name": "^7.24.7",
+ "@babel/plugin-transform-react-jsx": "^7.24.7",
+ "@babel/plugin-transform-react-jsx-development": "^7.24.7",
+ "@babel/plugin-transform-react-pure-annotations": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz",
+ "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-validator-option": "^7.24.7",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.7",
+ "@babel/plugin-transform-typescript": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.25.4.tgz",
+ "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.0.tgz",
+ "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.4.tgz",
+ "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.4",
+ "@babel/parser": "^7.25.4",
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.4",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.4.tgz",
+ "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
+ "node_modules/@chakra-ui/accordion": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/accordion/-/accordion-2.3.1.tgz",
+ "integrity": "sha512-FSXRm8iClFyU+gVaXisOSEw0/4Q+qZbFRiuhIAkVU6Boj0FxAMrlo9a8AV5TuF77rgaHytCdHk0Ng+cyUijrag==",
+ "dependencies": {
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/alert": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/alert/-/alert-2.2.2.tgz",
+ "integrity": "sha512-jHg4LYMRNOJH830ViLuicjb3F+v6iriE/2G5T+Sd0Hna04nukNJ1MxUmBPE+vI22me2dIflfelu2v9wdB6Pojw==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/spinner": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/anatomy": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/anatomy/-/anatomy-2.2.2.tgz",
+ "integrity": "sha512-MV6D4VLRIHr4PkW4zMyqfrNS1mPlCTiCXwvYGtDFQYr+xHFfonhAuf9WjsSc0nyp2m0OdkSLnzmVKkZFLo25Tg=="
+ },
+ "node_modules/@chakra-ui/avatar": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/avatar/-/avatar-2.3.0.tgz",
+ "integrity": "sha512-8gKSyLfygnaotbJbDMHDiJoF38OHXUYVme4gGxZ1fLnQEdPVEaIWfH+NndIjOM0z8S+YEFnT9KyGMUtvPrBk3g==",
+ "dependencies": {
+ "@chakra-ui/image": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/breadcrumb": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/breadcrumb/-/breadcrumb-2.2.0.tgz",
+ "integrity": "sha512-4cWCG24flYBxjruRi4RJREWTGF74L/KzI2CognAW/d/zWR0CjiScuJhf37Am3LFbCySP6WSoyBOtTIoTA4yLEA==",
+ "dependencies": {
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/breakpoint-utils": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz",
+ "integrity": "sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ }
+ },
+ "node_modules/@chakra-ui/button": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/button/-/button-2.1.0.tgz",
+ "integrity": "sha512-95CplwlRKmmUXkdEp/21VkEWgnwcx2TOBG6NfYlsuLBDHSLlo5FKIiE2oSi4zXc4TLcopGcWPNcm/NDaSC5pvA==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/spinner": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/card": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/card/-/card-2.2.0.tgz",
+ "integrity": "sha512-xUB/k5MURj4CtPAhdSoXZidUbm8j3hci9vnc+eZJVDqhDOShNlD6QeniQNRPRys4lWAQLCbFcrwL29C8naDi6g==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/checkbox": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/checkbox/-/checkbox-2.3.2.tgz",
+ "integrity": "sha512-85g38JIXMEv6M+AcyIGLh7igNtfpAN6KGQFYxY9tBj0eWvWk4NKQxvqqyVta0bSAyIl1rixNIIezNpNWk2iO4g==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/visually-hidden": "2.2.0",
+ "@zag-js/focus-visible": "0.16.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/clickable": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/clickable/-/clickable-2.1.0.tgz",
+ "integrity": "sha512-flRA/ClPUGPYabu+/GLREZVZr9j2uyyazCAUHAdrTUEdDYCr31SVGhgh7dgKdtq23bOvAQJpIJjw/0Bs0WvbXw==",
+ "dependencies": {
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/close-button": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/close-button/-/close-button-2.1.1.tgz",
+ "integrity": "sha512-gnpENKOanKexswSVpVz7ojZEALl2x5qjLYNqSQGbxz+aP9sOXPfUS56ebyBrre7T7exuWGiFeRwnM0oVeGPaiw==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.2.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/color-mode": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/color-mode/-/color-mode-2.2.0.tgz",
+ "integrity": "sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg==",
+ "dependencies": {
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/control-box": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/control-box/-/control-box-2.1.0.tgz",
+ "integrity": "sha512-gVrRDyXFdMd8E7rulL0SKeoljkLQiPITFnsyMO8EFHNZ+AHt5wK4LIguYVEq88APqAGZGfHFWXr79RYrNiE3Mg==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/counter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/counter/-/counter-2.1.0.tgz",
+ "integrity": "sha512-s6hZAEcWT5zzjNz2JIWUBzRubo9la/oof1W7EKZVVfPYHERnl5e16FmBC79Yfq8p09LQ+aqFKm/etYoJMMgghw==",
+ "dependencies": {
+ "@chakra-ui/number-utils": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/css-reset": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/css-reset/-/css-reset-2.3.0.tgz",
+ "integrity": "sha512-cQwwBy5O0jzvl0K7PLTLgp8ijqLPKyuEMiDXwYzl95seD3AoeuoCLyzZcJtVqaUZ573PiBdAbY/IlZcwDOItWg==",
+ "peerDependencies": {
+ "@emotion/react": ">=10.0.35",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/descendant": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/descendant/-/descendant-3.1.0.tgz",
+ "integrity": "sha512-VxCIAir08g5w27klLyi7PVo8BxhW4tgU/lxQyujkmi4zx7hT9ZdrcQLAted/dAa+aSIZ14S1oV0Q9lGjsAdxUQ==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/dom-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz",
+ "integrity": "sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ=="
+ },
+ "node_modules/@chakra-ui/editable": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/editable/-/editable-3.1.0.tgz",
+ "integrity": "sha512-j2JLrUL9wgg4YA6jLlbU88370eCRyor7DZQD9lzpY95tSOXpTljeg3uF9eOmDnCs6fxp3zDWIfkgMm/ExhcGTg==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/event-utils": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz",
+ "integrity": "sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw=="
+ },
+ "node_modules/@chakra-ui/focus-lock": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/focus-lock/-/focus-lock-2.1.0.tgz",
+ "integrity": "sha512-EmGx4PhWGjm4dpjRqM4Aa+rCWBxP+Rq8Uc/nAVnD4YVqkEhBkrPTpui2lnjsuxqNaZ24fIAZ10cF1hlpemte/w==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.1.0",
+ "react-focus-lock": "^2.9.4"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/form-control": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/form-control/-/form-control-2.2.0.tgz",
+ "integrity": "sha512-wehLC1t4fafCVJ2RvJQT2jyqsAwX7KymmiGqBu7nQoQz8ApTkGABWpo/QwDh3F/dBLrouHDoOvGmYTqft3Mirw==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/hooks": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/hooks/-/hooks-2.2.1.tgz",
+ "integrity": "sha512-RQbTnzl6b1tBjbDPf9zGRo9rf/pQMholsOudTxjy4i9GfTfz6kgp5ValGjQm2z7ng6Z31N1cnjZ1AlSzQ//ZfQ==",
+ "dependencies": {
+ "@chakra-ui/react-utils": "2.0.12",
+ "@chakra-ui/utils": "2.0.15",
+ "compute-scroll-into-view": "3.0.3",
+ "copy-to-clipboard": "3.3.3"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/icon": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/icon/-/icon-3.2.0.tgz",
+ "integrity": "sha512-xxjGLvlX2Ys4H0iHrI16t74rG9EBcpFvJ3Y3B7KMQTrnW34Kf7Da/UC8J67Gtx85mTHW020ml85SVPKORWNNKQ==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/image": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/image/-/image-2.1.0.tgz",
+ "integrity": "sha512-bskumBYKLiLMySIWDGcz0+D9Th0jPvmX6xnRMs4o92tT3Od/bW26lahmV2a2Op2ItXeCmRMY+XxJH5Gy1i46VA==",
+ "dependencies": {
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/input": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/input/-/input-2.1.2.tgz",
+ "integrity": "sha512-GiBbb3EqAA8Ph43yGa6Mc+kUPjh4Spmxp1Pkelr8qtudpc3p2PJOOebLpd90mcqw8UePPa+l6YhhPtp6o0irhw==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/layout": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/layout/-/layout-2.3.1.tgz",
+ "integrity": "sha512-nXuZ6WRbq0WdgnRgLw+QuxWAHuhDtVX8ElWqcTK+cSMFg/52eVP47czYBE5F35YhnoW2XBwfNoNgZ7+e8Z01Rg==",
+ "dependencies": {
+ "@chakra-ui/breakpoint-utils": "2.0.8",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/lazy-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz",
+ "integrity": "sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg=="
+ },
+ "node_modules/@chakra-ui/live-region": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/live-region/-/live-region-2.1.0.tgz",
+ "integrity": "sha512-ZOxFXwtaLIsXjqnszYYrVuswBhnIHHP+XIgK1vC6DePKtyK590Wg+0J0slDwThUAd4MSSIUa/nNX84x1GMphWw==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/media-query": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/media-query/-/media-query-3.3.0.tgz",
+ "integrity": "sha512-IsTGgFLoICVoPRp9ykOgqmdMotJG0CnPsKvGQeSFOB/dZfIujdVb14TYxDU4+MURXry1MhJ7LzZhv+Ml7cr8/g==",
+ "dependencies": {
+ "@chakra-ui/breakpoint-utils": "2.0.8",
+ "@chakra-ui/react-env": "3.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/menu": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/menu/-/menu-2.2.1.tgz",
+ "integrity": "sha512-lJS7XEObzJxsOwWQh7yfG4H8FzFPRP5hVPN/CL+JzytEINCSBvsCDHrYPQGp7jzpCi8vnTqQQGQe0f8dwnXd2g==",
+ "dependencies": {
+ "@chakra-ui/clickable": "2.1.0",
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-animation-state": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-disclosure": "2.1.0",
+ "@chakra-ui/react-use-focus-effect": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-outside-click": "2.2.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/modal": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/modal/-/modal-2.3.1.tgz",
+ "integrity": "sha512-TQv1ZaiJMZN+rR9DK0snx/OPwmtaGH1HbZtlYt4W4s6CzyK541fxLRTjIXfEzIGpvNW+b6VFuFjbcR78p4DEoQ==",
+ "dependencies": {
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/focus-lock": "2.1.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.1.0",
+ "aria-hidden": "^1.2.3",
+ "react-remove-scroll": "^2.5.6"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/number-input": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/number-input/-/number-input-2.1.2.tgz",
+ "integrity": "sha512-pfOdX02sqUN0qC2ysuvgVDiws7xZ20XDIlcNhva55Jgm095xjm8eVdIBfNm3SFbSUNxyXvLTW/YQanX74tKmuA==",
+ "dependencies": {
+ "@chakra-ui/counter": "2.1.0",
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0",
+ "@chakra-ui/react-use-interval": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/number-utils": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz",
+ "integrity": "sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg=="
+ },
+ "node_modules/@chakra-ui/object-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz",
+ "integrity": "sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ=="
+ },
+ "node_modules/@chakra-ui/pin-input": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/pin-input/-/pin-input-2.1.0.tgz",
+ "integrity": "sha512-x4vBqLStDxJFMt+jdAHHS8jbh294O53CPQJoL4g228P513rHylV/uPscYUHrVJXRxsHfRztQO9k45jjTYaPRMw==",
+ "dependencies": {
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/popover": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/popover/-/popover-2.2.1.tgz",
+ "integrity": "sha512-K+2ai2dD0ljvJnlrzesCDT9mNzLifE3noGKZ3QwLqd/K34Ym1W/0aL1ERSynrcG78NKoXS54SdEzkhCZ4Gn/Zg==",
+ "dependencies": {
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-animation-state": "2.1.0",
+ "@chakra-ui/react-use-disclosure": "2.1.0",
+ "@chakra-ui/react-use-focus-effect": "2.1.0",
+ "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/popper": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/popper/-/popper-3.1.0.tgz",
+ "integrity": "sha512-ciDdpdYbeFG7og6/6J8lkTFxsSvwTdMLFkpVylAF6VNC22jssiWfquj2eyD4rJnzkRFPvIWJq8hvbfhsm+AjSg==",
+ "dependencies": {
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@popperjs/core": "^2.9.3"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/portal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/portal/-/portal-2.1.0.tgz",
+ "integrity": "sha512-9q9KWf6SArEcIq1gGofNcFPSWEyl+MfJjEUg/un1SMlQjaROOh3zYr+6JAwvcORiX7tyHosnmWC3d3wI2aPSQg==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/progress": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/progress/-/progress-2.2.0.tgz",
+ "integrity": "sha512-qUXuKbuhN60EzDD9mHR7B67D7p/ZqNS2Aze4Pbl1qGGZfulPW0PY8Rof32qDtttDQBkzQIzFGE8d9QpAemToIQ==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/provider": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/provider/-/provider-2.4.2.tgz",
+ "integrity": "sha512-w0Tef5ZCJK1mlJorcSjItCSbyvVuqpvyWdxZiVQmE6fvSJR83wZof42ux0+sfWD+I7rHSfj+f9nzhNaEWClysw==",
+ "dependencies": {
+ "@chakra-ui/css-reset": "2.3.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-env": "3.1.0",
+ "@chakra-ui/system": "2.6.2",
+ "@chakra-ui/utils": "2.0.15"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/radio": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/radio/-/radio-2.1.2.tgz",
+ "integrity": "sha512-n10M46wJrMGbonaghvSRnZ9ToTv/q76Szz284gv4QUWvyljQACcGrXIONUnQ3BIwbOfkRqSk7Xl/JgZtVfll+w==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@zag-js/focus-visible": "0.16.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react/-/react-2.8.2.tgz",
+ "integrity": "sha512-Hn0moyxxyCDKuR9ywYpqgX8dvjqwu9ArwpIb9wHNYjnODETjLwazgNIliCVBRcJvysGRiV51U2/JtJVrpeCjUQ==",
+ "dependencies": {
+ "@chakra-ui/accordion": "2.3.1",
+ "@chakra-ui/alert": "2.2.2",
+ "@chakra-ui/avatar": "2.3.0",
+ "@chakra-ui/breadcrumb": "2.2.0",
+ "@chakra-ui/button": "2.1.0",
+ "@chakra-ui/card": "2.2.0",
+ "@chakra-ui/checkbox": "2.3.2",
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/control-box": "2.1.0",
+ "@chakra-ui/counter": "2.1.0",
+ "@chakra-ui/css-reset": "2.3.0",
+ "@chakra-ui/editable": "3.1.0",
+ "@chakra-ui/focus-lock": "2.1.0",
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/hooks": "2.2.1",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/image": "2.1.0",
+ "@chakra-ui/input": "2.1.2",
+ "@chakra-ui/layout": "2.3.1",
+ "@chakra-ui/live-region": "2.1.0",
+ "@chakra-ui/media-query": "3.3.0",
+ "@chakra-ui/menu": "2.2.1",
+ "@chakra-ui/modal": "2.3.1",
+ "@chakra-ui/number-input": "2.1.2",
+ "@chakra-ui/pin-input": "2.1.0",
+ "@chakra-ui/popover": "2.2.1",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/progress": "2.2.0",
+ "@chakra-ui/provider": "2.4.2",
+ "@chakra-ui/radio": "2.1.2",
+ "@chakra-ui/react-env": "3.1.0",
+ "@chakra-ui/select": "2.1.2",
+ "@chakra-ui/skeleton": "2.1.0",
+ "@chakra-ui/skip-nav": "2.1.0",
+ "@chakra-ui/slider": "2.1.0",
+ "@chakra-ui/spinner": "2.1.0",
+ "@chakra-ui/stat": "2.1.1",
+ "@chakra-ui/stepper": "2.3.1",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/switch": "2.1.2",
+ "@chakra-ui/system": "2.6.2",
+ "@chakra-ui/table": "2.1.0",
+ "@chakra-ui/tabs": "3.0.0",
+ "@chakra-ui/tag": "3.1.1",
+ "@chakra-ui/textarea": "2.1.2",
+ "@chakra-ui/theme": "3.3.1",
+ "@chakra-ui/theme-utils": "2.0.21",
+ "@chakra-ui/toast": "7.0.2",
+ "@chakra-ui/tooltip": "2.3.1",
+ "@chakra-ui/transition": "2.1.0",
+ "@chakra-ui/utils": "2.0.15",
+ "@chakra-ui/visually-hidden": "2.2.0"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-children-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz",
+ "integrity": "sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-context": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-context/-/react-context-2.1.0.tgz",
+ "integrity": "sha512-iahyStvzQ4AOwKwdPReLGfDesGG+vWJfEsn0X/NoGph/SkN+HXtv2sCfYFFR9k7bb+Kvc6YfpLlSuLvKMHi2+w==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-env": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-env/-/react-env-3.1.0.tgz",
+ "integrity": "sha512-Vr96GV2LNBth3+IKzr/rq1IcnkXv+MLmwjQH6C8BRtn3sNskgDFD5vLkVXcEhagzZMCh8FR3V/bzZPojBOyNhw==",
+ "dependencies": {
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-types/-/react-types-2.0.7.tgz",
+ "integrity": "sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-animation-state": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.1.0.tgz",
+ "integrity": "sha512-CFZkQU3gmDBwhqy0vC1ryf90BVHxVN8cTLpSyCpdmExUEtSEInSCGMydj2fvn7QXsz/za8JNdO2xxgJwxpLMtg==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-callback-ref": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.1.0.tgz",
+ "integrity": "sha512-efnJrBtGDa4YaxDzDE90EnKD3Vkh5a1t3w7PhnRQmsphLy3g2UieasoKTlT2Hn118TwDjIv5ZjHJW6HbzXA9wQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-controllable-state": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.1.0.tgz",
+ "integrity": "sha512-QR/8fKNokxZUs4PfxjXuwl0fj/d71WPrmLJvEpCTkHjnzu7LnYvzoe2wB867IdooQJL0G1zBxl0Dq+6W1P3jpg==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-disclosure": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.1.0.tgz",
+ "integrity": "sha512-Ax4pmxA9LBGMyEZJhhUZobg9C0t3qFE4jVF1tGBsrLDcdBeLR9fwOogIPY9Hf0/wqSlAryAimICbr5hkpa5GSw==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-event-listener": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.1.0.tgz",
+ "integrity": "sha512-U5greryDLS8ISP69DKDsYcsXRtAdnTQT+jjIlRYZ49K/XhUR/AqVZCK5BkR1spTDmO9H8SPhgeNKI70ODuDU/Q==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-focus-effect": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.1.0.tgz",
+ "integrity": "sha512-xzVboNy7J64xveLcxTIJ3jv+lUJKDwRM7Szwn9tNzUIPD94O3qwjV7DDCUzN2490nSYDF4OBMt/wuDBtaR3kUQ==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-focus-on-pointer-down": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.1.0.tgz",
+ "integrity": "sha512-2jzrUZ+aiCG/cfanrolsnSMDykCAbv9EK/4iUyZno6BYb3vziucmvgKuoXbMPAzWNtwUwtuMhkby8rc61Ue+Lg==",
+ "dependencies": {
+ "@chakra-ui/react-use-event-listener": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-interval": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-interval/-/react-use-interval-2.1.0.tgz",
+ "integrity": "sha512-8iWj+I/+A0J08pgEXP1J1flcvhLBHkk0ln7ZvGIyXiEyM6XagOTJpwNhiu+Bmk59t3HoV/VyvyJTa+44sEApuw==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-latest-ref": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.1.0.tgz",
+ "integrity": "sha512-m0kxuIYqoYB0va9Z2aW4xP/5b7BzlDeWwyXCH6QpT2PpW3/281L3hLCm1G0eOUcdVlayqrQqOeD6Mglq+5/xoQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-merge-refs": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.1.0.tgz",
+ "integrity": "sha512-lERa6AWF1cjEtWSGjxWTaSMvneccnAVH4V4ozh8SYiN9fSPZLlSG3kNxfNzdFvMEhM7dnP60vynF7WjGdTgQbQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-outside-click": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.2.0.tgz",
+ "integrity": "sha512-PNX+s/JEaMneijbgAM4iFL+f3m1ga9+6QK0E5Yh4s8KZJQ/bLwZzdhMz8J/+mL+XEXQ5J0N8ivZN28B82N1kNw==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-pan-event": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.1.0.tgz",
+ "integrity": "sha512-xmL2qOHiXqfcj0q7ZK5s9UjTh4Gz0/gL9jcWPA6GVf+A0Od5imEDa/Vz+533yQKWiNSm1QGrIj0eJAokc7O4fg==",
+ "dependencies": {
+ "@chakra-ui/event-utils": "2.0.8",
+ "@chakra-ui/react-use-latest-ref": "2.1.0",
+ "framesync": "6.1.2"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-previous": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-previous/-/react-use-previous-2.1.0.tgz",
+ "integrity": "sha512-pjxGwue1hX8AFcmjZ2XfrQtIJgqbTF3Qs1Dy3d1krC77dEsiCUbQ9GzOBfDc8pfd60DrB5N2tg5JyHbypqh0Sg==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-safe-layout-effect": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.1.0.tgz",
+ "integrity": "sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-size": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-size/-/react-use-size-2.1.0.tgz",
+ "integrity": "sha512-tbLqrQhbnqOjzTaMlYytp7wY8BW1JpL78iG7Ru1DlV4EWGiAmXFGvtnEt9HftU0NJ0aJyjgymkxfVGI55/1Z4A==",
+ "dependencies": {
+ "@zag-js/element-size": "0.10.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-timeout": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.1.0.tgz",
+ "integrity": "sha512-cFN0sobKMM9hXUhyCofx3/Mjlzah6ADaEl/AXl5Y+GawB5rgedgAcu2ErAgarEkwvsKdP6c68CKjQ9dmTQlJxQ==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-update-effect": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.1.0.tgz",
+ "integrity": "sha512-ND4Q23tETaR2Qd3zwCKYOOS1dfssojPLJMLvUtUbW5M9uW1ejYWgGUobeAiOVfSplownG8QYMmHTP86p/v0lbA==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-utils": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz",
+ "integrity": "sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==",
+ "dependencies": {
+ "@chakra-ui/utils": "2.0.15"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/select": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/select/-/select-2.1.2.tgz",
+ "integrity": "sha512-ZwCb7LqKCVLJhru3DXvKXpZ7Pbu1TDZ7N0PdQ0Zj1oyVLJyrpef1u9HR5u0amOpqcH++Ugt0f5JSmirjNlctjA==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/shared-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz",
+ "integrity": "sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q=="
+ },
+ "node_modules/@chakra-ui/skeleton": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/skeleton/-/skeleton-2.1.0.tgz",
+ "integrity": "sha512-JNRuMPpdZGd6zFVKjVQ0iusu3tXAdI29n4ZENYwAJEMf/fN0l12sVeirOxkJ7oEL0yOx2AgEYFSKdbcAgfUsAQ==",
+ "dependencies": {
+ "@chakra-ui/media-query": "3.3.0",
+ "@chakra-ui/react-use-previous": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/skip-nav": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/skip-nav/-/skip-nav-2.1.0.tgz",
+ "integrity": "sha512-Hk+FG+vadBSH0/7hwp9LJnLjkO0RPGnx7gBJWI4/SpoJf3e4tZlWYtwGj0toYY4aGKl93jVghuwGbDBEMoHDug==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/slider": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/slider/-/slider-2.1.0.tgz",
+ "integrity": "sha512-lUOBcLMCnFZiA/s2NONXhELJh6sY5WtbRykPtclGfynqqOo47lwWJx+VP7xaeuhDOPcWSSecWc9Y1BfPOCz9cQ==",
+ "dependencies": {
+ "@chakra-ui/number-utils": "2.0.7",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-latest-ref": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-pan-event": "2.1.0",
+ "@chakra-ui/react-use-size": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/spinner": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/spinner/-/spinner-2.1.0.tgz",
+ "integrity": "sha512-hczbnoXt+MMv/d3gE+hjQhmkzLiKuoTo42YhUG7Bs9OSv2lg1fZHW1fGNRFP3wTi6OIbD044U1P9HK+AOgFH3g==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/stat": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/stat/-/stat-2.1.1.tgz",
+ "integrity": "sha512-LDn0d/LXQNbAn2KaR3F1zivsZCewY4Jsy1qShmfBMKwn6rI8yVlbvu6SiA3OpHS0FhxbsZxQI6HefEoIgtqY6Q==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/stepper": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/stepper/-/stepper-2.3.1.tgz",
+ "integrity": "sha512-ky77lZbW60zYkSXhYz7kbItUpAQfEdycT0Q4bkHLxfqbuiGMf8OmgZOQkOB9uM4v0zPwy2HXhe0vq4Dd0xa55Q==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/styled-system": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/styled-system/-/styled-system-2.9.2.tgz",
+ "integrity": "sha512-To/Z92oHpIE+4nk11uVMWqo2GGRS86coeMmjxtpnErmWRdLcp1WVCVRAvn+ZwpLiNR+reWFr2FFqJRsREuZdAg==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5",
+ "csstype": "^3.1.2",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/switch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/switch/-/switch-2.1.2.tgz",
+ "integrity": "sha512-pgmi/CC+E1v31FcnQhsSGjJnOE2OcND4cKPyTE+0F+bmGm48Q/b5UmKD9Y+CmZsrt/7V3h8KNczowupfuBfIHA==",
+ "dependencies": {
+ "@chakra-ui/checkbox": "2.3.2",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/system": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/system/-/system-2.6.2.tgz",
+ "integrity": "sha512-EGtpoEjLrUu4W1fHD+a62XR+hzC5YfsWm+6lO0Kybcga3yYEij9beegO0jZgug27V+Rf7vns95VPVP6mFd/DEQ==",
+ "dependencies": {
+ "@chakra-ui/color-mode": "2.2.0",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-utils": "2.0.12",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/theme-utils": "2.0.21",
+ "@chakra-ui/utils": "2.0.15",
+ "react-fast-compare": "3.2.2"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/table": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/table/-/table-2.1.0.tgz",
+ "integrity": "sha512-o5OrjoHCh5uCLdiUb0Oc0vq9rIAeHSIRScc2ExTC9Qg/uVZl2ygLrjToCaKfaaKl1oQexIeAcZDKvPG8tVkHyQ==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/tabs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/tabs/-/tabs-3.0.0.tgz",
+ "integrity": "sha512-6Mlclp8L9lqXmsGWF5q5gmemZXOiOYuh0SGT/7PgJVNPz3LXREXlXg2an4MBUD8W5oTkduCX+3KTMCwRrVrDYw==",
+ "dependencies": {
+ "@chakra-ui/clickable": "2.1.0",
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/tag": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/tag/-/tag-3.1.1.tgz",
+ "integrity": "sha512-Bdel79Dv86Hnge2PKOU+t8H28nm/7Y3cKd4Kfk9k3lOpUh4+nkSGe58dhRzht59lEqa4N9waCgQiBdkydjvBXQ==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/textarea": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/textarea/-/textarea-2.1.2.tgz",
+ "integrity": "sha512-ip7tvklVCZUb2fOHDb23qPy/Fr2mzDOGdkrpbNi50hDCiV4hFX02jdQJdi3ydHZUyVgZVBKPOJ+lT9i7sKA2wA==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/theme": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/theme/-/theme-3.3.1.tgz",
+ "integrity": "sha512-Hft/VaT8GYnItGCBbgWd75ICrIrIFrR7lVOhV/dQnqtfGqsVDlrztbSErvMkoPKt0UgAkd9/o44jmZ6X4U2nZQ==",
+ "dependencies": {
+ "@chakra-ui/anatomy": "2.2.2",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/theme-tools": "2.1.2"
+ },
+ "peerDependencies": {
+ "@chakra-ui/styled-system": ">=2.8.0"
+ }
+ },
+ "node_modules/@chakra-ui/theme-tools": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/theme-tools/-/theme-tools-2.1.2.tgz",
+ "integrity": "sha512-Qdj8ajF9kxY4gLrq7gA+Azp8CtFHGO9tWMN2wfF9aQNgG9AuMhPrUzMq9AMQ0MXiYcgNq/FD3eegB43nHVmXVA==",
+ "dependencies": {
+ "@chakra-ui/anatomy": "2.2.2",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "color2k": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@chakra-ui/styled-system": ">=2.0.0"
+ }
+ },
+ "node_modules/@chakra-ui/theme-utils": {
+ "version": "2.0.21",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/theme-utils/-/theme-utils-2.0.21.tgz",
+ "integrity": "sha512-FjH5LJbT794r0+VSCXB3lT4aubI24bLLRWB+CuRKHijRvsOg717bRdUN/N1fEmEpFnRVrbewttWh/OQs0EWpWw==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/theme": "3.3.1",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/toast": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/toast/-/toast-7.0.2.tgz",
+ "integrity": "sha512-yvRP8jFKRs/YnkuE41BVTq9nB2v/KDRmje9u6dgDmE5+1bFt3bwjdf9gVbif4u5Ve7F7BGk5E093ARRVtvLvXA==",
+ "dependencies": {
+ "@chakra-ui/alert": "2.2.2",
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-timeout": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/theme": "3.3.1"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": "2.6.2",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/tooltip": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/tooltip/-/tooltip-2.3.1.tgz",
+ "integrity": "sha512-Rh39GBn/bL4kZpuEMPPRwYNnccRCL+w9OqamWHIB3Qboxs6h8cOyXfIdGxjo72lvhu1QI/a4KFqkM3St+WfC0A==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.1.0",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-disclosure": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/transition": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/transition/-/transition-2.1.0.tgz",
+ "integrity": "sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/utils": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/utils/-/utils-2.0.15.tgz",
+ "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==",
+ "dependencies": {
+ "@types/lodash.mergewith": "4.6.7",
+ "css-box-model": "1.2.1",
+ "framesync": "6.1.2",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/visually-hidden": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz",
+ "integrity": "sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz",
+ "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.2.0",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.13.1",
+ "resolved": "https://registry.npmmirror.com/@emotion/cache/-/cache-11.13.1.tgz",
+ "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz",
+ "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.13.3",
+ "resolved": "https://registry.npmmirror.com/@emotion/react/-/react-11.13.3.tgz",
+ "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/cache": "^11.13.0",
+ "@emotion/serialize": "^1.3.1",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/@emotion/serialize/-/serialize-1.3.1.tgz",
+ "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.0",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
+ },
+ "node_modules/@emotion/styled": {
+ "version": "11.13.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/styled/-/styled-11.13.0.tgz",
+ "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/is-prop-valid": "^1.3.0",
+ "@emotion/serialize": "^1.3.0",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0-rc.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
+ "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/utils/-/utils-1.4.0.tgz",
+ "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.11.0",
+ "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
+ "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.57.0.tgz",
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "deprecated": "Use @eslint/config-array instead",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@jsonjoy.com/base64": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz",
+ "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@jsonjoy.com/json-pack": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz",
+ "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==",
+ "dev": true,
+ "dependencies": {
+ "@jsonjoy.com/base64": "^1.1.1",
+ "@jsonjoy.com/util": "^1.1.2",
+ "hyperdyperid": "^1.2.0",
+ "thingies": "^1.20.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@jsonjoy.com/util": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@jsonjoy.com/util/-/util-1.3.0.tgz",
+ "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/@leichtgewicht/ip-codec": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
+ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
+ "dev": true
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmmirror.com/@remix-run/router/-/router-1.19.1.tgz",
+ "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz",
+ "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz",
+ "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz",
+ "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz",
+ "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz",
+ "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz",
+ "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz",
+ "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-svg-component": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz",
+ "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-preset": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz",
+ "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==",
+ "dev": true,
+ "dependencies": {
+ "@svgr/babel-plugin-add-jsx-attribute": "8.0.0",
+ "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0",
+ "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0",
+ "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0",
+ "@svgr/babel-plugin-svg-dynamic-title": "8.0.0",
+ "@svgr/babel-plugin-svg-em-dimensions": "8.0.0",
+ "@svgr/babel-plugin-transform-react-native-svg": "8.1.0",
+ "@svgr/babel-plugin-transform-svg-component": "8.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/core": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/core/-/core-8.1.0.tgz",
+ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@svgr/babel-preset": "8.1.0",
+ "camelcase": "^6.2.0",
+ "cosmiconfig": "^8.1.3",
+ "snake-case": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/hast-util-to-babel-ast": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz",
+ "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.21.3",
+ "entities": "^4.4.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/@svgr/plugin-jsx": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz",
+ "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@svgr/babel-preset": "8.1.0",
+ "@svgr/hast-util-to-babel-ast": "8.0.0",
+ "svg-parser": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@svgr/core": "*"
+ }
+ },
+ "node_modules/@svgr/plugin-svgo": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz",
+ "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^8.1.3",
+ "deepmerge": "^4.3.1",
+ "svgo": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@svgr/core": "*"
+ }
+ },
+ "node_modules/@svgr/webpack": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@svgr/webpack/-/webpack-8.1.0.tgz",
+ "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@babel/plugin-transform-react-constant-elements": "^7.21.3",
+ "@babel/preset-env": "^7.20.2",
+ "@babel/preset-react": "^7.18.6",
+ "@babel/preset-typescript": "^7.21.0",
+ "@svgr/core": "8.1.0",
+ "@svgr/plugin-jsx": "8.1.0",
+ "@svgr/plugin-svgo": "8.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.5",
+ "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz",
+ "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
+ "dev": true,
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/bonjour": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.13.tgz",
+ "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect-history-api-fallback": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
+ "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
+ "dev": true,
+ "dependencies": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.0.tgz",
+ "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.7",
+ "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
+ "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
+ "dev": true,
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+ "dev": true
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.21.tgz",
+ "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.19.5",
+ "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
+ "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/html-minifier-terser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
+ "dev": true
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz",
+ "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
+ "dev": true
+ },
+ "node_modules/@types/http-proxy": {
+ "version": "1.17.15",
+ "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.15.tgz",
+ "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.17.7",
+ "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.7.tgz",
+ "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA=="
+ },
+ "node_modules/@types/lodash.mergewith": {
+ "version": "4.6.7",
+ "resolved": "https://registry.npmmirror.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz",
+ "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "dev": true
+ },
+ "node_modules/@types/mocha": {
+ "version": "10.0.7",
+ "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.7.tgz",
+ "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.14.11",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.11.tgz",
+ "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-forge": {
+ "version": "1.3.11",
+ "resolved": "https://registry.npmmirror.com/@types/node-forge/-/node-forge-1.3.11.tgz",
+ "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.12",
+ "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.12.tgz",
+ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==",
+ "devOptional": true
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.15",
+ "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.15.tgz",
+ "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==",
+ "dev": true
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "dev": true
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.3",
+ "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.3.3.tgz",
+ "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
+ "devOptional": true,
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.3.0",
+ "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.0.tgz",
+ "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/retry": {
+ "version": "0.12.2",
+ "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.2.tgz",
+ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==",
+ "dev": true
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz",
+ "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
+ "dev": true,
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-index": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.4.tgz",
+ "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
+ "dev": true,
+ "dependencies": {
+ "@types/express": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.7",
+ "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz",
+ "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
+ "dev": true,
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/node": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/sockjs": {
+ "version": "0.3.36",
+ "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.36.tgz",
+ "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/vscode": {
+ "version": "1.91.0",
+ "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.91.0.tgz",
+ "integrity": "sha512-PgPr+bUODjG3y+ozWUCyzttqR9EHny9sPAfJagddQjDwdtf66y2sDKJMnFZRuzBA2YtBGASqJGPil8VDUPvO6A==",
+ "dev": true
+ },
+ "node_modules/@types/ws": {
+ "version": "8.5.12",
+ "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.12.tgz",
+ "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz",
+ "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/type-utils": "7.16.1",
+ "@typescript-eslint/utils": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^7.0.0",
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-7.16.1.tgz",
+ "integrity": "sha512-u+1Qx86jfGQ5i4JjK33/FnawZRpsLxRnKzGE6EABZ40KxVT/vWsiZFEBBHjFOljmmV3MBYOHEKi0Jm9hbAOClA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/typescript-estree": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz",
+ "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz",
+ "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "7.16.1",
+ "@typescript-eslint/utils": "7.16.1",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz",
+ "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-7.16.1.tgz",
+ "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/typescript-estree": "7.16.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz",
+ "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.16.1",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/@vscode/test-cli": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmmirror.com/@vscode/test-cli/-/test-cli-0.0.9.tgz",
+ "integrity": "sha512-vsl5/ueE3Jf0f6XzB0ECHHMsd5A0Yu6StElb8a+XsubZW7kHNAOw4Y3TSSuDzKEpLnJ92nbMy1Zl+KLGCE6NaA==",
+ "dev": true,
+ "dependencies": {
+ "@types/mocha": "^10.0.2",
+ "c8": "^9.1.0",
+ "chokidar": "^3.5.3",
+ "enhanced-resolve": "^5.15.0",
+ "glob": "^10.3.10",
+ "minimatch": "^9.0.3",
+ "mocha": "^10.2.0",
+ "supports-color": "^9.4.0",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "vscode-test": "out/bin.mjs"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vscode/test-electron": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.4.1.tgz",
+ "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==",
+ "dev": true,
+ "dependencies": {
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.5",
+ "jszip": "^3.10.1",
+ "ora": "^7.0.1",
+ "semver": "^7.6.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.12.1.tgz",
+ "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
+ "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
+ "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "dev": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "dev": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
+ "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-opt": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1",
+ "@webassemblyjs/wast-printer": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
+ "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
+ "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/wasm-gen": "1.12.1",
+ "@webassemblyjs/wasm-parser": "1.12.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
+ "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
+ "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.12.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webpack-cli/configtest": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
+ "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ }
+ },
+ "node_modules/@webpack-cli/info": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/@webpack-cli/info/-/info-2.0.2.tgz",
+ "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ }
+ },
+ "node_modules/@webpack-cli/serve": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@webpack-cli/serve/-/serve-2.0.5.tgz",
+ "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "node_modules/@zag-js/dom-query": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmmirror.com/@zag-js/dom-query/-/dom-query-0.16.0.tgz",
+ "integrity": "sha512-Oqhd6+biWyKnhKwFFuZrrf6lxBz2tX2pRQe6grUnYwO6HJ8BcbqZomy2lpOdr+3itlaUqx+Ywj5E5ZZDr/LBfQ=="
+ },
+ "node_modules/@zag-js/element-size": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmmirror.com/@zag-js/element-size/-/element-size-0.10.5.tgz",
+ "integrity": "sha512-uQre5IidULANvVkNOBQ1tfgwTQcGl4hliPSe69Fct1VfYb2Fd0jdAcGzqQgPhfrXFpR62MxLPB7erxJ/ngtL8w=="
+ },
+ "node_modules/@zag-js/focus-visible": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmmirror.com/@zag-js/focus-visible/-/focus-visible-0.16.0.tgz",
+ "integrity": "sha512-a7U/HSopvQbrDU4GLerpqiMcHKEkQkNPeDZJWz38cw/6Upunh41GjHetq5TB84hxyCaDzJ6q2nEdNoBQfC0FKA==",
+ "dependencies": {
+ "@zag-js/dom-query": "0.16.0"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.12.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz",
+ "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmmirror.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-html-community": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8.0"
+ ],
+ "bin": {
+ "ansi-html": "bin/ansi-html"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/aria-hidden": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/aria-hidden/-/aria-hidden-1.2.4.tgz",
+ "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.20",
+ "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.20.tgz",
+ "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.23.3",
+ "caniuse-lite": "^1.0.30001646",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.5.tgz",
+ "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/babel-loader": {
+ "version": "9.1.3",
+ "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-9.1.3.tgz",
+ "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
+ "dev": true,
+ "dependencies": {
+ "find-cache-dir": "^4.0.0",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 14.15.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0",
+ "webpack": ">=5"
+ }
+ },
+ "node_modules/babel-loader/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/babel-loader/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/babel-loader/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/babel-loader/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/babel-plugin-macros/node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
+ "dev": true
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bl": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/bl/-/bl-5.1.0.tgz",
+ "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/bonjour-service": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.2.1.tgz",
+ "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "multicast-dns": "^7.2.5"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "node_modules/browserslist": {
+ "version": "4.23.3",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.3.tgz",
+ "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001646",
+ "electron-to-chromium": "^1.5.4",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "dev": true,
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/c8": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmmirror.com/c8/-/c8-9.1.0.tgz",
+ "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==",
+ "dev": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@istanbuljs/schema": "^0.1.3",
+ "find-up": "^5.0.0",
+ "foreground-child": "^3.1.1",
+ "istanbul-lib-coverage": "^3.2.0",
+ "istanbul-lib-report": "^3.0.1",
+ "istanbul-reports": "^3.1.6",
+ "test-exclude": "^6.0.0",
+ "v8-to-istanbul": "^9.0.0",
+ "yargs": "^17.7.2",
+ "yargs-parser": "^21.1.1"
+ },
+ "bin": {
+ "c8": "bin/c8.js"
+ },
+ "engines": {
+ "node": ">=14.14.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+ "dev": true,
+ "dependencies": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001653",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz",
+ "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/clean-css": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.3.tgz",
+ "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
+ "dev": true,
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 10.0"
+ }
+ },
+ "node_modules/clean-css/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-4.0.0.tgz",
+ "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/color2k": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/color2k/-/color2k-2.0.3.tgz",
+ "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog=="
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
+ "dev": true
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz",
+ "integrity": "sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/connect-history-api-fallback": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-disposition/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "node_modules/copy-to-clipboard": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+ "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
+ "dependencies": {
+ "toggle-selection": "^1.0.6"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.38.1.tgz",
+ "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.23.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.3.6",
+ "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
+ "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-box-model": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/css-box-model/-/css-box-model-1.2.1.tgz",
+ "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==",
+ "dependencies": {
+ "tiny-invariant": "^1.0.6"
+ }
+ },
+ "node_modules/css-loader": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-7.1.2.tgz",
+ "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==",
+ "dev": true,
+ "dependencies": {
+ "icss-utils": "^5.1.0",
+ "postcss": "^8.4.33",
+ "postcss-modules-extract-imports": "^3.1.0",
+ "postcss-modules-local-by-default": "^4.0.5",
+ "postcss-modules-scope": "^3.2.0",
+ "postcss-modules-values": "^4.0.0",
+ "postcss-value-parser": "^4.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.27.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csso": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmmirror.com/csso/-/csso-5.0.5.tgz",
+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "~2.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-2.2.1.tgz",
+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.28",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.28",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.28.tgz",
+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
+ "dev": true
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz",
+ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.2.1.tgz",
+ "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "dev": true,
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.0.tgz",
+ "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "dev": true
+ },
+ "node_modules/detect-node-es": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz",
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
+ },
+ "node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dns-packet": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz",
+ "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
+ "dev": true,
+ "dependencies": {
+ "@leichtgewicht/ip-codec": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dev": true,
+ "dependencies": {
+ "utila": "~0.4"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.13",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
+ "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
+ "dev": true
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.0",
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
+ "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/envinfo": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.13.0.tgz",
+ "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==",
+ "dev": true,
+ "bin": {
+ "envinfo": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==",
+ "dev": true
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "dev": true
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/express": {
+ "version": "4.19.2",
+ "resolved": "https://registry.npmmirror.com/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.2",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.6.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/express/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.1.tgz",
+ "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==",
+ "dev": true
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "dev": true,
+ "dependencies": {
+ "websocket-driver": ">=0.5.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/find-cache-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
+ "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
+ "dev": true,
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/yocto-queue": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.1.1.tgz",
+ "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true,
+ "bin": {
+ "flat": "cli.js"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+ "dev": true
+ },
+ "node_modules/focus-lock": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmmirror.com/focus-lock/-/focus-lock-1.3.5.tgz",
+ "integrity": "sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ==",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.6",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz",
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.2.1.tgz",
+ "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "11.4.0",
+ "resolved": "https://registry.npmmirror.com/framer-motion/-/framer-motion-11.4.0.tgz",
+ "integrity": "sha512-gHKUZr88OTMFubkIPkaIZxxX18PhQ6IbYxBoXUVdBLQQKZ3teH2BtxMVVRUsuzIfKs259MlL0elgAiZf82fiHg==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/framesync": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/framesync/-/framesync-6.1.2.tgz",
+ "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==",
+ "dependencies": {
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/framesync/node_modules/tslib": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz",
+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/handle-thing": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz",
+ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+ "dev": true
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "node_modules/html-entities": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.5.2.tgz",
+ "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ]
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true
+ },
+ "node_modules/html-minifier-terser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+ "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
+ "dev": true,
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "clean-css": "^5.2.2",
+ "commander": "^8.3.0",
+ "he": "^1.2.0",
+ "param-case": "^3.0.4",
+ "relateurl": "^0.2.7",
+ "terser": "^5.10.0"
+ },
+ "bin": {
+ "html-minifier-terser": "cli.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/html-minifier-terser/node_modules/commander": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
+ "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "dev": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/html-webpack-plugin": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
+ "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==",
+ "dev": true,
+ "dependencies": {
+ "@types/html-minifier-terser": "^6.0.0",
+ "html-minifier-terser": "^6.0.2",
+ "lodash": "^4.17.21",
+ "pretty-error": "^4.0.0",
+ "tapable": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/html-webpack-plugin"
+ },
+ "peerDependencies": {
+ "@rspack/core": "0.x || 1.x",
+ "webpack": "^5.20.0"
+ },
+ "peerDependenciesMeta": {
+ "@rspack/core": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
+ "dev": true
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-parser-js": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz",
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
+ "dev": true
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "dev": true,
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/http-proxy-middleware": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
+ "dev": true,
+ "dependencies": {
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@types/express": "^4.17.13"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http-proxy-middleware/node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/hyperdyperid": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz",
+ "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.18"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "dev": true,
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.2.0.tgz",
+ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+ "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.",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/interpret": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
+ "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.14.0.tgz",
+ "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-network-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-network-error/-/is-network-error-1.1.0.tgz",
+ "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "dev": true,
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/launch-editor": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.8.1.tgz",
+ "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.8.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dev": true,
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.mergewith": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmmirror.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="
+ },
+ "node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+ "dev": true
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/memfs": {
+ "version": "4.11.1",
+ "resolved": "https://registry.npmmirror.com/memfs/-/memfs-4.11.1.tgz",
+ "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==",
+ "dev": true,
+ "dependencies": {
+ "@jsonjoy.com/json-pack": "^1.0.3",
+ "@jsonjoy.com/util": "^1.3.0",
+ "tree-dump": "^1.0.1",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 4.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/mocha": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.6.0.tgz",
+ "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "^4.1.3",
+ "browser-stdout": "^1.3.1",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.5",
+ "diff": "^5.2.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-up": "^5.0.0",
+ "glob": "^8.1.0",
+ "he": "^1.2.0",
+ "js-yaml": "^4.1.0",
+ "log-symbols": "^4.1.0",
+ "minimatch": "^5.1.6",
+ "ms": "^2.1.3",
+ "serialize-javascript": "^6.0.2",
+ "strip-json-comments": "^3.1.1",
+ "supports-color": "^8.1.1",
+ "workerpool": "^6.5.1",
+ "yargs": "^16.2.0",
+ "yargs-parser": "^20.2.9",
+ "yargs-unparser": "^2.0.0"
+ },
+ "bin": {
+ "_mocha": "bin/_mocha",
+ "mocha": "bin/mocha.js"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/multicast-dns": {
+ "version": "7.2.5",
+ "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz",
+ "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
+ "dev": true,
+ "dependencies": {
+ "dns-packet": "^5.2.2",
+ "thunky": "^1.0.2"
+ },
+ "bin": {
+ "multicast-dns": "cli.js"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dev": true,
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6.13.0"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "dev": true
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "dev": true
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/open/-/open-10.1.0.tgz",
+ "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
+ "dev": true,
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/ora": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/ora/-/ora-7.0.1.tgz",
+ "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "cli-cursor": "^4.0.0",
+ "cli-spinners": "^2.9.0",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^1.3.0",
+ "log-symbols": "^5.1.0",
+ "stdin-discarder": "^0.1.0",
+ "string-width": "^6.1.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/emoji-regex": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.3.0.tgz",
+ "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+ "dev": true
+ },
+ "node_modules/ora/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/log-symbols": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-5.1.0.tgz",
+ "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^5.0.0",
+ "is-unicode-supported": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/string-width": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-6.1.0.tgz",
+ "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^10.2.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-retry": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-6.2.0.tgz",
+ "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==",
+ "dev": true,
+ "dependencies": {
+ "@types/retry": "0.12.2",
+ "is-network-error": "^1.0.0",
+ "retry": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
+ "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
+ "dev": true
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz",
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.41",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.41.tgz",
+ "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.1",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
+ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
+ "dev": true,
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
+ "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
+ "dev": true,
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
+ "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "dev": true,
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/pretty-error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz",
+ "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.20",
+ "renderkid": "^3.0.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-addr/node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmmirror.com/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-clientside-effect": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmmirror.com/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
+ "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.13"
+ },
+ "peerDependencies": {
+ "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/react-fast-compare": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
+ },
+ "node_modules/react-focus-lock": {
+ "version": "2.13.2",
+ "resolved": "https://registry.npmmirror.com/react-focus-lock/-/react-focus-lock-2.13.2.tgz",
+ "integrity": "sha512-T/7bsofxYqnod2xadvuwjGKHOoL5GH7/EIPI5UyEvaU/c2CcphvGI371opFtuY/SYdbMsNiuF4HsHQ50nA/TKQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.0.0",
+ "focus-lock": "^1.3.5",
+ "prop-types": "^15.6.2",
+ "react-clientside-effect": "^1.2.6",
+ "use-callback-ref": "^1.3.2",
+ "use-sidecar": "^1.1.2"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.10",
+ "resolved": "https://registry.npmmirror.com/react-remove-scroll/-/react-remove-scroll-2.5.10.tgz",
+ "integrity": "sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.6",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-remove-scroll-bar": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmmirror.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
+ "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
+ "dependencies": {
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-router": {
+ "version": "6.26.1",
+ "resolved": "https://registry.npmmirror.com/react-router/-/react-router-6.26.1.tgz",
+ "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==",
+ "dependencies": {
+ "@remix-run/router": "1.19.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "6.26.1",
+ "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.26.1.tgz",
+ "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==",
+ "dependencies": {
+ "@remix-run/router": "1.19.1",
+ "react-router": "6.26.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/react-style-singleton": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "dependencies": {
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.20.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "dev": true,
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/renderkid": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz",
+ "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
+ "dev": true,
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-cwd/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-4.0.0.tgz",
+ "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/restore-cursor/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.0.0.tgz",
+ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
+ "dev": true
+ },
+ "node_modules/selfsigned": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.4.1.tgz",
+ "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/node-forge": "^1.3.0",
+ "node-forge": "^1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true
+ },
+ "node_modules/serve-index/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/serve-index/node_modules/setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ },
+ "node_modules/serve-index/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "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.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "dev": true
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/sockjs": {
+ "version": "0.3.24",
+ "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz",
+ "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+ "dev": true,
+ "dependencies": {
+ "faye-websocket": "^0.11.3",
+ "uuid": "^8.3.2",
+ "websocket-driver": "^0.7.4"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-support/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spdy": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz",
+ "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ }
+ },
+ "node_modules/spdy-transport/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/ssh-config": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/ssh-config/-/ssh-config-5.0.0.tgz",
+ "integrity": "sha512-RVJemF95DYAKfn2xogb75e4s3tyq6seexTg1CHXVxaas+OKv1PUsdIdz7ZyaZbW3TvSnJP+zgzNy5oRsrIhIAg=="
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stdin-discarder": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
+ "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-loader": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/style-loader/-/style-loader-4.0.0.tgz",
+ "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.27.0"
+ }
+ },
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ },
+ "node_modules/supports-color": {
+ "version": "9.4.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-9.4.0.tgz",
+ "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-parser": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/svg-parser/-/svg-parser-2.0.4.tgz",
+ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
+ "dev": true
+ },
+ "node_modules/svgo": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/svgo/-/svgo-3.3.2.tgz",
+ "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
+ "dev": true,
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^5.1.0",
+ "css-tree": "^2.3.1",
+ "css-what": "^6.1.0",
+ "csso": "^5.0.5",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/svgo"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/svgo/node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/svgo/node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/svgo/node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/svgo/node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/svgo/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.31.3",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-5.31.3.tgz",
+ "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.10",
+ "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
+ "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.20",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.26.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/test-exclude/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/test-exclude/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/test-exclude/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/thingies": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmmirror.com/thingies/-/thingies-1.21.0.tgz",
+ "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.18"
+ },
+ "peerDependencies": {
+ "tslib": "^2"
+ }
+ },
+ "node_modules/thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+ "dev": true
+ },
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toggle-selection": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz",
+ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tree-dump": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/tree-dump/-/tree-dump-1.0.2.tgz",
+ "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
+ "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/ts-loader": {
+ "version": "9.5.1",
+ "resolved": "https://registry.npmmirror.com/ts-loader/-/ts-loader-9.5.1.tgz",
+ "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4",
+ "source-map": "^0.7.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "*",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
+ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.5.3.tgz",
+ "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
+ "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/use-callback-ref": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz",
+ "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-sidecar": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/use-sidecar/-/use-sidecar-1.1.2.tgz",
+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
+ "dependencies": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
+ "dev": true
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
+ "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.12",
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.1.tgz",
+ "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
+ "dev": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "dev": true,
+ "dependencies": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.93.0",
+ "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.93.0.tgz",
+ "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
+ "dev": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.5",
+ "@webassemblyjs/ast": "^1.12.1",
+ "@webassemblyjs/wasm-edit": "^1.12.1",
+ "@webassemblyjs/wasm-parser": "^1.12.1",
+ "acorn": "^8.7.1",
+ "acorn-import-attributes": "^1.9.5",
+ "browserslist": "^4.21.10",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.17.0",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.11",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.10",
+ "watchpack": "^2.4.1",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-cli": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmmirror.com/webpack-cli/-/webpack-cli-5.1.4.tgz",
+ "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
+ "dev": true,
+ "dependencies": {
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^2.1.1",
+ "@webpack-cli/info": "^2.0.2",
+ "@webpack-cli/serve": "^2.0.5",
+ "colorette": "^2.0.14",
+ "commander": "^10.0.1",
+ "cross-spawn": "^7.0.3",
+ "envinfo": "^7.7.3",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^3.1.1",
+ "rechoir": "^0.8.0",
+ "webpack-merge": "^5.7.3"
+ },
+ "bin": {
+ "webpack-cli": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "@webpack-cli/generators": {
+ "optional": true
+ },
+ "webpack-bundle-analyzer": {
+ "optional": true
+ },
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-cli/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/webpack-cli/node_modules/webpack-merge": {
+ "version": "5.10.0",
+ "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.10.0.tgz",
+ "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==",
+ "dev": true,
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "flat": "^5.0.2",
+ "wildcard": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/webpack-dev-middleware": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz",
+ "integrity": "sha512-xD2qnNew+F6KwOGZR7kWdbIou/ud7cVqLEXeK1q0nHcNsX/u7ul/fSdlOTX4ntSL5FNFy7ZJJXbf0piF591JYw==",
+ "dev": true,
+ "dependencies": {
+ "colorette": "^2.0.10",
+ "memfs": "^4.6.0",
+ "mime-types": "^2.1.31",
+ "on-finished": "^2.4.1",
+ "range-parser": "^1.2.1",
+ "schema-utils": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/webpack-dev-middleware/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/webpack-dev-server": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz",
+ "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==",
+ "dev": true,
+ "dependencies": {
+ "@types/bonjour": "^3.5.13",
+ "@types/connect-history-api-fallback": "^1.5.4",
+ "@types/express": "^4.17.21",
+ "@types/serve-index": "^1.9.4",
+ "@types/serve-static": "^1.15.5",
+ "@types/sockjs": "^0.3.36",
+ "@types/ws": "^8.5.10",
+ "ansi-html-community": "^0.0.8",
+ "bonjour-service": "^1.2.1",
+ "chokidar": "^3.6.0",
+ "colorette": "^2.0.10",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^2.0.0",
+ "default-gateway": "^6.0.3",
+ "express": "^4.17.3",
+ "graceful-fs": "^4.2.6",
+ "html-entities": "^2.4.0",
+ "http-proxy-middleware": "^2.0.3",
+ "ipaddr.js": "^2.1.0",
+ "launch-editor": "^2.6.1",
+ "open": "^10.0.3",
+ "p-retry": "^6.2.0",
+ "rimraf": "^5.0.5",
+ "schema-utils": "^4.2.0",
+ "selfsigned": "^2.4.1",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.24",
+ "spdy": "^4.0.2",
+ "webpack-dev-middleware": "^7.1.0",
+ "ws": "^8.16.0"
+ },
+ "bin": {
+ "webpack-dev-server": "bin/webpack-dev-server.js"
+ },
+ "engines": {
+ "node": ">= 18.12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack": {
+ "optional": true
+ },
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/webpack-dev-server/node_modules/rimraf": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-5.0.10.tgz",
+ "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^10.3.7"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 12.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/webpack-merge": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-6.0.1.tgz",
+ "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==",
+ "dev": true,
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "flat": "^5.0.2",
+ "wildcard": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz",
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "dev": true,
+ "dependencies": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "dev": true
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/workerpool": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.5.1.tgz",
+ "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "dev": true,
+ "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
+ }
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-unparser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+ "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^6.0.0",
+ "decamelize": "^4.0.0",
+ "flat": "^5.0.2",
+ "is-plain-obj": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/vscode/devbox/package.json b/vscode/devbox/package.json
new file mode 100644
index 00000000000..0984d1b8efd
--- /dev/null
+++ b/vscode/devbox/package.json
@@ -0,0 +1,178 @@
+{
+ "name": "devbox-aio",
+ "displayName": "Devbox",
+ "description": "help code for cloud devbox in sailos/sealos",
+ "version": "0.8.5",
+ "keywords": [
+ "devbox",
+ "remote development",
+ "remote"
+ ],
+ "bugs": {
+ "url": "https://github.com/mlhiter/devbox/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/mlhiter/devbox"
+ },
+ "homepage": "https://github.com/mlhiter/devbox/blob/master/README.md",
+ "publisher": "labring",
+ "license": "MIT",
+ "icon": "images/icon.png",
+ "engines": {
+ "vscode": "^1.91.0"
+ },
+ "categories": [
+ "Other"
+ ],
+ "extensionKind": [
+ "ui"
+ ],
+ "activationEvents": [
+ "onStartupFinished",
+ "onUri"
+ ],
+ "main": "./dist/extension.js",
+ "contributes": {
+ "configuration": {
+ "type": "object",
+ "title": "devbox",
+ "properties": {}
+ },
+ "commands": [
+ {
+ "command": "devbox.openWebview",
+ "title": "Devbox: Open Webview"
+ },
+ {
+ "command": "devbox.connectRemoteSSH",
+ "title": "Devbox: Connect to Remote SSH"
+ },
+ {
+ "command": "devboxDashboard.refresh",
+ "title": "Refresh Devbox",
+ "icon": "images/refresh.svg"
+ },
+ {
+ "command": "devboxDashboard.createDevbox",
+ "title": "Create Devbox",
+ "icon": "images/create.svg"
+ },
+ {
+ "command": "devboxDashboard.deleteDevbox",
+ "title": "Delete Devbox"
+ },
+ {
+ "command": "devboxDashboard.openDevbox",
+ "title": "Open Devbox",
+ "icon": "images/open.svg"
+ }
+ ],
+ "views": {
+ "devboxView": [
+ {
+ "id": "devboxDashboard",
+ "name": "My Projects"
+ },
+ {
+ "id": "devboxFeedback",
+ "name": "Feedback"
+ }
+ ]
+ },
+ "viewsContainers": {
+ "activitybar": [
+ {
+ "id": "devboxView",
+ "title": "Devbox",
+ "icon": "images/explorer.svg"
+ }
+ ]
+ },
+ "viewsWelcome": [
+ {
+ "view": "devboxDashboard",
+ "contents": "View and manage your devboxes,Now you can create a new devbox."
+ }
+ ],
+ "menus": {
+ "view/title": [
+ {
+ "command": "devboxDashboard.createDevbox",
+ "when": "view == devboxDashboard",
+ "group": "navigation"
+ },
+ {
+ "command": "devboxDashboard.refresh",
+ "when": "view == devboxDashboard",
+ "group": "navigation"
+ }
+ ],
+ "view/item/context": [
+ {
+ "command": "devboxDashboard.deleteDevbox",
+ "when": "view == devboxDashboard && viewItem == devbox"
+ },
+ {
+ "command": "devboxDashboard.openDevbox",
+ "when": "view == devboxDashboard && viewItem == devbox",
+ "group": "inline"
+ }
+ ]
+ }
+ },
+ "extensionDependencies": [
+ "ms-vscode-remote.remote-ssh"
+ ],
+ "scripts": {
+ "vscode:prepublish": "npm run build && npm run package",
+ "dev": "webpack-dev-server -c webpack.dev.js",
+ "build": "webpack -c webpack.prod.js",
+ "compile": "webpack",
+ "watch": "webpack --watch",
+ "package": "webpack --mode production --devtool hidden-source-map",
+ "compile-tests": "tsc -p . --outDir out",
+ "watch-tests": "tsc -p . -w --outDir out",
+ "pretest": "npm run compile-tests && npm run compile && npm run lint",
+ "lint": "eslint src --ext ts",
+ "test": "vscode-test"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.25.2",
+ "@babel/preset-react": "^7.24.7",
+ "@babel/preset-typescript": "^7.24.7",
+ "@svgr/webpack": "^8.1.0",
+ "@types/mocha": "^10.0.7",
+ "@types/node": "20.x",
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@types/vscode": "^1.91.0",
+ "@typescript-eslint/eslint-plugin": "^7.14.1",
+ "@typescript-eslint/parser": "^7.11.0",
+ "@vscode/test-cli": "^0.0.9",
+ "@vscode/test-electron": "^2.4.0",
+ "autoprefixer": "^10.4.20",
+ "babel-loader": "^9.1.3",
+ "css-loader": "^7.1.2",
+ "eslint": "^8.57.0",
+ "html-webpack-plugin": "^5.6.0",
+ "style-loader": "^4.0.0",
+ "ts-loader": "^9.5.1",
+ "typescript": "^5.4.5",
+ "webpack": "^5.93.0",
+ "webpack-cli": "^5.1.4",
+ "webpack-dev-server": "^5.0.4",
+ "webpack-merge": "^6.0.1"
+ },
+ "dependencies": {
+ "@chakra-ui/react": "^2.8.2",
+ "@emotion/react": "^11.13.3",
+ "@emotion/styled": "^11.13.0",
+ "axios": "^1.7.5",
+ "framer-motion": "^11.4.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-router-dom": "^6.26.1",
+ "ssh-config": "^5.0.0"
+ }
+}
diff --git a/vscode/devbox/src/api/index.ts b/vscode/devbox/src/api/index.ts
new file mode 100644
index 00000000000..e634bcbd09f
--- /dev/null
+++ b/vscode/devbox/src/api/index.ts
@@ -0,0 +1,50 @@
+const fs = require('fs')
+
+export const parseSSHConfig = (configFilePath: string) => {
+ return new Promise((resolve, reject) => {
+ fs.readFile(configFilePath, 'utf-8', (err: any, data: any) => {
+ if (err) {
+ return reject(err)
+ }
+
+ const lines = data.split('\n')
+ const devboxList = [] as any[]
+ let currentHost = {} as any
+ let lastComment = ''
+
+ lines.forEach((line: string) => {
+ line = line.trim()
+
+ if (line.startsWith('#')) {
+ // 保存注释,特别是 WorkingDir 注释
+ lastComment = line
+ if (line.startsWith('# WorkingDir:')) {
+ currentHost.remotePath = line.split(':')[1].trim()
+ }
+ } else if (line.startsWith('Host ')) {
+ // 如果当前有主机信息且是 usw.sailos.io,则保存
+ if (currentHost.hostName === 'usw.sailos.io') {
+ devboxList.push(currentHost)
+ }
+ // 开始新的主机信息
+ currentHost = { host: line.split(' ')[1] }
+ } else if (line.startsWith('HostName ')) {
+ currentHost.hostName = line.split(' ')[1]
+ } else if (line.startsWith('User ')) {
+ currentHost.user = line.split(' ')[1]
+ } else if (line.startsWith('Port ')) {
+ currentHost.port = line.split(' ')[1]
+ } else if (line.startsWith('IdentityFile ')) {
+ currentHost.identityFile = line.split(' ')[1]
+ }
+ })
+
+ // 最后一个主机信息处理
+ if (currentHost.hostName === 'usw.sailos.io') {
+ devboxList.push(currentHost)
+ }
+
+ resolve(devboxList)
+ })
+ })
+}
diff --git a/vscode/devbox/src/commands/remoteConnector.ts b/vscode/devbox/src/commands/remoteConnector.ts
new file mode 100644
index 00000000000..9bca8f50d6f
--- /dev/null
+++ b/vscode/devbox/src/commands/remoteConnector.ts
@@ -0,0 +1,257 @@
+import path from 'path'
+import * as os from 'os'
+import * as fs from 'fs'
+import * as vscode from 'vscode'
+import SSHConfig from 'ssh-config'
+import { Disposable } from '../common/dispose'
+import { execSync } from 'child_process'
+import { modifiedRemoteSSHConfig } from '../utils/remoteSSHConfig'
+
+const defaultSSHConfigPath = path.resolve(os.homedir(), '.ssh/config')
+const defaultDevboxSSHConfigPath = path.resolve(
+ os.homedir(),
+ '.ssh/sealos/devbox_config'
+)
+const defaultSSHKeyPath = path.resolve(os.homedir(), '.ssh/sealos')
+
+export class RemoteSSHConnector extends Disposable {
+ constructor(context: vscode.ExtensionContext) {
+ super()
+ if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
+ this._register(
+ vscode.commands.registerCommand('devbox.connectRemoteSSH', (args) =>
+ this.connectRemoteSSH(args)
+ )
+ )
+ }
+ }
+
+ private async ensureRemoteSSHExtInstalled(): Promise {
+ const isOfficialVscode =
+ vscode.env.uriScheme === 'vscode' ||
+ vscode.env.uriScheme === 'vscode-insiders'
+ if (!isOfficialVscode) {
+ return true
+ }
+
+ const msVscodeRemoteExt = vscode.extensions.getExtension(
+ 'ms-vscode-remote.remote-ssh'
+ )
+ if (msVscodeRemoteExt) {
+ return true
+ }
+
+ const install = 'Install'
+ const cancel = 'Cancel'
+
+ const action = await vscode.window.showInformationMessage(
+ 'Please install "Remote - SSH" extension to connect to a Gitpod workspace.',
+ { modal: true },
+ install,
+ cancel
+ )
+
+ if (action === cancel) {
+ return false
+ }
+
+ vscode.window.showInformationMessage(
+ 'Installing "ms-vscode-remote.remote-ssh" extension'
+ )
+
+ await vscode.commands.executeCommand(
+ 'extension.open',
+ 'ms-vscode-remote.remote-ssh'
+ )
+ await vscode.commands.executeCommand(
+ 'workbench.extensions.installExtension',
+ 'ms-vscode-remote.remote-ssh'
+ )
+
+ return true
+ }
+
+ private async connectRemoteSSH(args: {
+ sshDomain: string
+ sshPort: string
+ base64PrivateKey: string
+ sshHostLabel: string
+ workingDir: string
+ }) {
+ this.ensureRemoteSSHExtInstalled()
+
+ const { sshDomain, sshPort, base64PrivateKey, sshHostLabel, workingDir } =
+ args
+
+ const randomSuffix = Math.random().toString(36).substring(2, 15)
+ const newSshHostLabel = sshHostLabel.replace(/\//g, '-')
+ const suffixSSHHostLabel = `${newSshHostLabel}-${randomSuffix}`
+
+ modifiedRemoteSSHConfig(newSshHostLabel, suffixSSHHostLabel)
+
+ const sshUser = sshDomain.split('@')[0]
+ const sshHost = sshDomain.split('@')[1]
+
+ // sshHostLabel: usw.sailos.io/ns-admin/devbox-1
+ // identityFileSSHLabel: usw.sailos.io_ns-admin_devbox-1
+ const identityFileSSHLabel = sshHostLabel.replace(/\//g, '_')
+
+ const normalPrivateKey = Buffer.from(base64PrivateKey, 'base64')
+
+ const sshConfig = new SSHConfig().append({
+ Host: suffixSSHHostLabel,
+ HostName: sshHost,
+ User: sshUser,
+ Port: sshPort,
+ IdentityFile: `~/.ssh/sealos/${identityFileSSHLabel}`,
+ IdentitiesOnly: 'yes',
+ StrictHostKeyChecking: 'no',
+ })
+ const sshConfigString = SSHConfig.stringify(sshConfig)
+
+ try {
+ // 1. ensure .ssh/config exists
+ if (!fs.existsSync(defaultSSHConfigPath)) {
+ fs.mkdirSync(path.resolve(os.homedir(), '.ssh'), {
+ recursive: true,
+ })
+ fs.writeFileSync(defaultSSHConfigPath, '', 'utf8')
+ // 设置 .ssh/config 文件的权限
+ if (os.platform() === 'win32') {
+ // Windows 系统
+ execSync(`icacls "${defaultSSHConfigPath}" /inheritance:r`)
+ execSync(
+ `icacls "${defaultSSHConfigPath}" /grant:r ${process.env.USERNAME}:F`
+ )
+ execSync(`icacls "${defaultSSHConfigPath}" /remove:g everyone`)
+ } else {
+ // Unix-like 系统 (Mac, Linux)
+ execSync(`chmod 600 "${defaultSSHConfigPath}"`)
+ }
+ }
+ // 2. ensure .ssh/sealos/devbox_config exists and has the correct jurisdiction
+ if (!fs.existsSync(defaultDevboxSSHConfigPath)) {
+ fs.mkdirSync(path.resolve(os.homedir(), '.ssh/sealos'), {
+ recursive: true,
+ })
+ fs.writeFileSync(defaultDevboxSSHConfigPath, '', 'utf8')
+ // 针对mac和windows区别处理
+ if (os.platform() === 'win32') {
+ // 移除继承的权限
+ execSync(`icacls "${defaultDevboxSSHConfigPath}" /inheritance:r`)
+ // 为当前用户授予完全控制权限
+ execSync(
+ `icacls "${defaultDevboxSSHConfigPath}" /grant:r ${process.env.USERNAME}:F`
+ )
+ // 确保其他用户无法访问
+ execSync(`icacls "${defaultDevboxSSHConfigPath}" /remove:g everyone`)
+ } else {
+ // 设置文件权限为 600(仅文件所有者可读写)
+ execSync(`chmod 600 "${defaultDevboxSSHConfigPath}"`)
+ }
+ }
+
+ // 3. ensure .ssh/config includes .ssh/sealos/devbox_config
+ const existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf8')
+ if (!existingSSHConfig.includes('Include ~/.ssh/sealos/devbox_config')) {
+ let existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf-8')
+ const newConfig =
+ 'Include ~/.ssh/sealos/devbox_config\n' + existingSSHConfig
+ fs.writeFileSync(defaultSSHConfigPath, newConfig)
+ }
+
+ // 读取现有的 devbox 配置文件
+ const existingDevboxConfigLines = fs
+ .readFileSync(defaultDevboxSSHConfigPath, 'utf8')
+ .split('\n')
+
+ // 用于存储需要保留的配置行
+ const newDevboxConfigLines = []
+ let skipLines = false
+
+ for (let i = 0; i < existingDevboxConfigLines.length; i++) {
+ const line = existingDevboxConfigLines[i].trim()
+
+ if (
+ line.startsWith('Host') &&
+ line.substring(5).trim().startsWith(newSshHostLabel)
+ ) {
+ // 如果当前行是要删除的 Host,开始跳过
+ skipLines = true
+ continue
+ }
+
+ if (skipLines) {
+ // 检查是否到达下一个 Host 或文件结束
+ if (
+ (line.startsWith('Host') && !line.startsWith('HostName')) ||
+ i === existingDevboxConfigLines.length - 1
+ ) {
+ skipLines = false
+ }
+ }
+
+ if (!skipLines) {
+ newDevboxConfigLines.push(existingDevboxConfigLines[i])
+ }
+ }
+
+ // 将新的配置写回文件
+ fs.writeFileSync(
+ defaultDevboxSSHConfigPath,
+ newDevboxConfigLines.join('\n')
+ )
+
+ // 5. write new ssh config to .ssh/sealos/devbox_config
+ fs.appendFileSync(
+ defaultDevboxSSHConfigPath,
+ `\n# WorkingDir: ${workingDir}\n`
+ )
+ fs.appendFileSync(defaultDevboxSSHConfigPath, sshConfigString)
+ vscode.window.showInformationMessage(
+ `SSH configuration for ${sshHost} with port ${sshPort} has been added.`
+ )
+ } catch (error) {
+ vscode.window.showErrorMessage(
+ `Failed to write SSH configuration: ${error}`
+ )
+ }
+
+ // create sealos privateKey file in .ssh/sealos
+ try {
+ const sshKeyPath = defaultSSHKeyPath + `/${identityFileSSHLabel}`
+ fs.writeFileSync(sshKeyPath, normalPrivateKey)
+
+ // 针对mac和windows区别处理
+ if (os.platform() === 'win32') {
+ // 移除继承的权限
+ execSync(`icacls "${sshKeyPath}" /inheritance:r`)
+ // 为当前用户授予完全控制权限
+ execSync(`icacls "${sshKeyPath}" /grant:r ${process.env.USERNAME}:F`)
+ // 确保其他用户无法访问
+ execSync(`icacls "${sshKeyPath}" /remove:g everyone`)
+ } else {
+ // 设置文件权限为 600(仅文件所有者可读写)
+ execSync(`chmod 600 "${sshKeyPath}"`)
+ }
+ } catch (error) {
+ vscode.window.showErrorMessage(
+ `Failed to write SSH private key: ${error}`
+ )
+ }
+
+ // 创建一个新的连接并打开新的窗口
+ await vscode.commands.executeCommand(
+ 'vscode.openFolder',
+ vscode.Uri.parse(
+ `vscode-remote://ssh-remote+${suffixSSHHostLabel}${workingDir}`
+ ),
+ {
+ forceNewWindow: true,
+ }
+ )
+ await vscode.window.showInformationMessage(
+ `Connected to ${sshHost} with port ${sshPort} successfully.`
+ )
+ }
+}
diff --git a/vscode/devbox/src/commands/treeview.ts b/vscode/devbox/src/commands/treeview.ts
new file mode 100644
index 00000000000..7071e122faf
--- /dev/null
+++ b/vscode/devbox/src/commands/treeview.ts
@@ -0,0 +1,242 @@
+import path from 'path'
+import * as os from 'os'
+import * as vscode from 'vscode'
+
+import { parseSSHConfig } from '../api'
+import { Disposable } from '../common/dispose'
+import { DevboxListItem } from '../types/devbox'
+
+export class TreeView extends Disposable {
+ constructor(context: vscode.ExtensionContext) {
+ super()
+ if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
+ const projectTreeDataProvider = new MyTreeDataProvider('devboxDashboard')
+ const feedbackTreeDataProvider = new MyTreeDataProvider('devboxFeedback')
+ // views
+ const devboxDashboardView = vscode.window.createTreeView(
+ 'devboxDashboard',
+ {
+ treeDataProvider: projectTreeDataProvider,
+ }
+ )
+ this._register(devboxDashboardView)
+
+ // 添加视图可见性变化事件监听器
+ this._register(
+ devboxDashboardView.onDidChangeVisibility(() => {
+ if (devboxDashboardView.visible) {
+ projectTreeDataProvider.refresh()
+ }
+ })
+ )
+
+ // commands
+ this._register(
+ vscode.commands.registerCommand('devboxDashboard.refresh', () => {
+ projectTreeDataProvider.refresh()
+ })
+ )
+ this._register(
+ vscode.commands.registerCommand(
+ 'devboxDashboard.createDevbox',
+ (item: MyTreeItem) => {
+ projectTreeDataProvider.create(item)
+ }
+ )
+ )
+ this._register(
+ vscode.commands.registerCommand(
+ 'devboxDashboard.openDevbox',
+ (item: MyTreeItem) => {
+ projectTreeDataProvider.open(item)
+ }
+ )
+ )
+ this._register(
+ vscode.commands.registerCommand(
+ 'devboxDashboard.deleteDevbox',
+ (item: MyTreeItem) => {
+ projectTreeDataProvider.delete(item)
+ }
+ )
+ )
+ }
+ }
+}
+
+class MyTreeDataProvider implements vscode.TreeDataProvider {
+ private _onDidChangeTreeData: vscode.EventEmitter =
+ new vscode.EventEmitter()
+ readonly onDidChangeTreeData: vscode.Event =
+ this._onDidChangeTreeData.event
+ private treeData: DevboxListItem[] = []
+ private treeName: string
+
+ constructor(treeName: string) {
+ this.treeName = treeName
+ this.refreshData()
+ }
+
+ refresh(): void {
+ this.refreshData()
+ }
+
+ private refreshData(): void {
+ if (this.treeName === 'devboxDashboard') {
+ const defaultSSHConfigPath = path.resolve(
+ os.homedir(),
+ '.ssh/sealos/devbox_config'
+ )
+
+ parseSSHConfig(defaultSSHConfigPath).then((data) => {
+ console.log(data)
+ this.treeData = data as DevboxListItem[]
+ this._onDidChangeTreeData.fire(undefined)
+ })
+ } else if (this.treeName === 'devboxFeedback') {
+ this.treeData = [
+ {
+ hostName: 'Give me a feedback in the GitHub repository',
+ host: '',
+ port: 0,
+ },
+ ]
+ this._onDidChangeTreeData.fire(undefined)
+ }
+ }
+
+ getTreeItem(element: MyTreeItem): vscode.TreeItem {
+ return element
+ }
+
+ create(item: MyTreeItem) {
+ vscode.commands.executeCommand('devbox.openWebview')
+ vscode.window.showInformationMessage('create')
+ }
+
+ async open(item: MyTreeItem) {
+ if (item.contextValue !== 'devbox') {
+ vscode.window.showInformationMessage('只能打开 Devbox 项目')
+ return
+ }
+
+ console.log(item.host)
+
+ vscode.commands.executeCommand(
+ 'vscode.openFolder',
+ vscode.Uri.parse(
+ `vscode-remote://ssh-remote+${item.host}${item.remotePath}`
+ ),
+ {
+ forceNewWindow: true,
+ }
+ )
+ }
+
+ delete(item: MyTreeItem) {
+ vscode.window.showInformationMessage('delete' + item.label)
+ }
+
+ getChildren(element?: MyTreeItem): Thenable {
+ if (!element) {
+ // 第一级:显示所有域名
+ const domains = [
+ ...new Set(this.treeData.map((item) => item.host.split('-')[0])),
+ ]
+ return Promise.resolve(
+ domains.map(
+ (domain) =>
+ new MyTreeItem(
+ domain,
+ domain,
+ 0,
+ vscode.TreeItemCollapsibleState.Collapsed
+ )
+ )
+ )
+ } else if (!element.namespace) {
+ // 第二级:显示指定域名下所有命名空间
+ const namespaces = [
+ ...new Set(
+ this.treeData
+ .filter((item) => item.host.startsWith(element.label as string))
+ .map((item) => {
+ const parts = item.host.split('-')
+ return parts.slice(1, 3).join('-')
+ })
+ ),
+ ]
+ return Promise.resolve(
+ namespaces.map(
+ (namespace) =>
+ new MyTreeItem(
+ namespace,
+ (element.label as string) ?? '',
+ 0,
+ vscode.TreeItemCollapsibleState.Collapsed,
+ namespace
+ )
+ )
+ )
+ } else if (!element.devboxName) {
+ // 第三级:显示指定命名空间下的所有 devbox
+ const devboxes = this.treeData.filter((item) => {
+ const parts = item.host.split('-')
+ const domain = parts[0]
+ const namespace = parts.slice(1, 3).join('-')
+ return domain === element.domain && namespace === element.namespace
+ })
+ return Promise.resolve(
+ devboxes.map((devbox) => {
+ const parts = devbox.host.split('-')
+ const devboxName = parts.slice(3, -1).join('-')
+ const treeItem = new MyTreeItem(
+ devboxName,
+ devbox.hostName,
+ devbox.port,
+ vscode.TreeItemCollapsibleState.None,
+ element.namespace,
+ devboxName,
+ devbox.host,
+ devbox.remotePath // 添加这个参数
+ )
+ treeItem.contextValue = 'devbox' // 确保设置了正确的 contextValue
+ return treeItem
+ })
+ )
+ }
+ return Promise.resolve([])
+ }
+}
+
+class MyTreeItem extends vscode.TreeItem {
+ domain: string
+ namespace?: string
+ devboxName?: string
+ sshPort: number
+ host: string // 添加这一行
+ remotePath: string
+
+ constructor(
+ label: string,
+ domain: string,
+ sshPort: number,
+ collapsibleState: vscode.TreeItemCollapsibleState,
+ namespace?: string,
+ devboxName?: string,
+ host?: string,
+ remotePath?: string // 添加这个参数
+ ) {
+ super(label, collapsibleState)
+ this.domain = domain
+ this.namespace = namespace
+ this.devboxName = devboxName
+ this.sshPort = sshPort
+ this.host = host || '' // 初始化 host 属性
+ this.remotePath = remotePath || '/home/sealos/project' // 设置默认值
+ // ... 其余代码保持不变
+
+ // 添加这行代码
+ this.contextValue = devboxName ? 'devbox' : undefined
+ }
+}
diff --git a/vscode/devbox/src/commands/webview.ts b/vscode/devbox/src/commands/webview.ts
new file mode 100644
index 00000000000..69a42dc7b1b
--- /dev/null
+++ b/vscode/devbox/src/commands/webview.ts
@@ -0,0 +1,74 @@
+import path from 'path'
+import * as vscode from 'vscode'
+
+import { Disposable } from '../common/dispose'
+
+export class Webview extends Disposable {
+ constructor(context: vscode.ExtensionContext) {
+ super()
+ if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
+ this._register(
+ vscode.commands.registerCommand(
+ 'devbox.openWebview',
+ this.openWebview.bind(this, context)
+ )
+ )
+ }
+ }
+
+ private async openWebview(context: vscode.ExtensionContext) {
+ const panel = vscode.window.createWebviewPanel(
+ 'react',
+ 'Create Devbox',
+ vscode.ViewColumn.One,
+ {
+ retainContextWhenHidden: true,
+ enableScripts: true,
+ }
+ )
+ let srcUrl = ''
+
+ const isProduction =
+ context.extensionMode === vscode.ExtensionMode.Production
+ if (isProduction) {
+ const filePath = vscode.Uri.file(
+ path.join(context.extensionPath, 'dist', 'static/js/main.js')
+ )
+ srcUrl = panel.webview.asWebviewUri(filePath).toString()
+ } else {
+ srcUrl = 'http://localhost:3001/static/js/main.js'
+ }
+ panel.webview.html = this.getWebviewContent(srcUrl)
+
+ const updateWebview = () => {
+ panel.webview.html = this.getWebviewContent(srcUrl)
+ }
+
+ updateWebview()
+
+ const interval = setInterval(updateWebview, 1000)
+
+ panel.onDidDispose(
+ () => {
+ clearInterval(interval)
+ },
+ null,
+ context.subscriptions
+ )
+ }
+ private getWebviewContent(srcUri: string) {
+ return `
+
+
+
+
+
+ webview-react
+
+
+
+
+
+ `
+ }
+}
diff --git a/vscode/devbox/src/common/dispose.ts b/vscode/devbox/src/common/dispose.ts
new file mode 100644
index 00000000000..d2768ea0117
--- /dev/null
+++ b/vscode/devbox/src/common/dispose.ts
@@ -0,0 +1,37 @@
+import * as vscode from 'vscode'
+
+export function disposeAll(disposables: vscode.Disposable[]): void {
+ while (disposables.length) {
+ const item = disposables.pop()
+ if (item) {
+ item.dispose()
+ }
+ }
+}
+
+export abstract class Disposable {
+ private _isDisposed = false
+
+ protected _disposables: vscode.Disposable[] = []
+
+ public dispose(): any {
+ if (this._isDisposed) {
+ return
+ }
+ this._isDisposed = true
+ disposeAll(this._disposables)
+ }
+
+ protected _register(value: T): T {
+ if (this._isDisposed) {
+ value.dispose()
+ } else {
+ this._disposables.push(value)
+ }
+ return value
+ }
+
+ protected get isDisposed(): boolean {
+ return this._isDisposed
+ }
+}
diff --git a/vscode/devbox/src/common/files.ts b/vscode/devbox/src/common/files.ts
new file mode 100644
index 00000000000..da09319f4a4
--- /dev/null
+++ b/vscode/devbox/src/common/files.ts
@@ -0,0 +1,35 @@
+import * as fs from 'fs'
+import * as os from 'os'
+
+const homeDir = os.homedir()
+
+export async function exists(path: string) {
+ try {
+ await fs.promises.access(path)
+ return true
+ } catch {
+ return false
+ }
+}
+
+export async function isFile(path: string) {
+ try {
+ const s = await fs.promises.stat(path)
+ return s.isFile()
+ } catch {
+ return false
+ }
+}
+
+export async function isDir(path: string) {
+ try {
+ const s = await fs.promises.stat(path)
+ return s.isDirectory()
+ } catch {
+ return false
+ }
+}
+
+export function untildify(path: string) {
+ return path.replace(/^~(?=$|\/|\\)/, homeDir)
+}
diff --git a/vscode/devbox/src/common/logger.ts b/vscode/devbox/src/common/logger.ts
new file mode 100644
index 00000000000..7e4f15bb1c5
--- /dev/null
+++ b/vscode/devbox/src/common/logger.ts
@@ -0,0 +1,69 @@
+import * as vscode from 'vscode'
+
+type LogLevel = 'Trace' | 'Info' | 'Error' | 'Warn' | 'Log'
+
+export default class Log {
+ private output: vscode.OutputChannel
+
+ constructor(name: string) {
+ this.output = vscode.window.createOutputChannel(name)
+ }
+
+ private data2String(data: any): string {
+ if (data instanceof Error) {
+ return data.stack || data.message
+ }
+ if (data.success === false && data.message) {
+ return data.message
+ }
+ return data.toString()
+ }
+
+ public trace(message: string, data?: any): void {
+ this.logLevel('Trace', message, data)
+ }
+
+ public info(message: string, data?: any): void {
+ this.logLevel('Info', message, data)
+ }
+
+ public error(message: string, data?: any): void {
+ this.logLevel('Error', message, data)
+ }
+
+ public warn(message: string, data?: any): void {
+ this.logLevel('Warn', message, data)
+ }
+
+ public log(message: string, data?: any): void {
+ this.logLevel('Log', message, data)
+ }
+
+ public logLevel(level: LogLevel, message: string, data?: any): void {
+ this.output.appendLine(`[${level} - ${this.now()}] ${message}`)
+ if (data) {
+ this.output.appendLine(this.data2String(data))
+ }
+ }
+
+ private now(): string {
+ const now = new Date()
+ return (
+ padLeft(now.getUTCHours() + '', 2, '0') +
+ ':' +
+ padLeft(now.getMinutes() + '', 2, '0') +
+ ':' +
+ padLeft(now.getUTCSeconds() + '', 2, '0') +
+ '.' +
+ now.getMilliseconds()
+ )
+ }
+
+ public show() {
+ this.output.show()
+ }
+}
+
+function padLeft(s: string, n: number, pad = ' ') {
+ return pad.repeat(Math.max(0, n - s.length)) + s
+}
diff --git a/vscode/devbox/src/extension.ts b/vscode/devbox/src/extension.ts
new file mode 100644
index 00000000000..a9de94050ce
--- /dev/null
+++ b/vscode/devbox/src/extension.ts
@@ -0,0 +1,72 @@
+import * as vscode from 'vscode'
+
+import { Webview } from './commands/webview'
+import { RemoteSSHConnector } from './commands/remoteConnector'
+import { TreeView } from './commands/treeview'
+
+export async function activate(context: vscode.ExtensionContext) {
+ // webview
+ const webview = new Webview(context)
+ context.subscriptions.push(webview)
+
+ // remote connector
+ const remoteConnector = new RemoteSSHConnector(context)
+ context.subscriptions.push(remoteConnector)
+
+ // tree view
+ const treeView = new TreeView(context)
+ context.subscriptions.push(treeView)
+
+ const handleUri = (uri: vscode.Uri) => {
+ console.log('uri', uri)
+
+ if (
+ uri.scheme !== 'vscode' &&
+ uri.scheme !== 'cursor' &&
+ uri.scheme !== 'vscode-insiders'
+ ) {
+ return
+ }
+
+ const queryParams = new URLSearchParams(uri.query)
+
+ const sshDomain = queryParams.get('sshDomain')
+ const sshPort = queryParams.get('sshPort')
+ const base64PrivateKey = queryParams.get('base64PrivateKey')
+ const workingDir = queryParams.get('workingDir')
+ const sshHostLabel = queryParams.get('sshHostLabel')
+
+ if (sshPort === '0') {
+ vscode.window.showInformationMessage(
+ `SSH Port is not correct,maybe your devbox's nodeport is over the limit`
+ )
+ return
+ }
+
+ {
+ if (
+ sshDomain &&
+ sshPort &&
+ base64PrivateKey &&
+ sshHostLabel &&
+ workingDir
+ ) {
+ vscode.commands.executeCommand('devbox.connectRemoteSSH', {
+ sshDomain,
+ sshPort,
+ base64PrivateKey,
+ sshHostLabel,
+ workingDir,
+ })
+ }
+ }
+ }
+
+ context.subscriptions.push(
+ vscode.window.registerUriHandler({
+ handleUri,
+ })
+ )
+}
+
+export function deactivate() {}
diff --git a/vscode/devbox/src/types/devbox.d.ts b/vscode/devbox/src/types/devbox.d.ts
new file mode 100644
index 00000000000..9c1bd72221f
--- /dev/null
+++ b/vscode/devbox/src/types/devbox.d.ts
@@ -0,0 +1,9 @@
+export interface DevboxListItem {
+ hostName: string
+ host: string
+ user?: string
+ port: number
+ identityFile?: string
+ status?: string
+ remotePath?: string
+}
diff --git a/vscode/devbox/src/utils/remoteSSHConfig.ts b/vscode/devbox/src/utils/remoteSSHConfig.ts
new file mode 100644
index 00000000000..8d847840be4
--- /dev/null
+++ b/vscode/devbox/src/utils/remoteSSHConfig.ts
@@ -0,0 +1,41 @@
+import * as vscode from 'vscode'
+
+// update Remote-SSH config
+export const modifiedRemoteSSHConfig = async (
+ sshHostLabel: string,
+ suffixSshHostLabel: string
+) => {
+ const existingSSHHostPlatforms = vscode.workspace
+ .getConfiguration('remote.SSH')
+ .get<{ [host: string]: string }>('remotePlatform', {})
+
+ console.log('existingSSHHostPlatforms', existingSSHHostPlatforms)
+ // delete repeated remotePlatform by sshDomain/namespace/devboxName
+ const newSSHHostPlatforms = Object.keys(existingSSHHostPlatforms).reduce(
+ (acc: { [host: string]: string }, host: string) => {
+ if (host.startsWith(sshHostLabel)) {
+ return acc
+ }
+ acc[host] = existingSSHHostPlatforms[host]
+ return acc
+ },
+ {}
+ )
+ // add new ssh host label
+ newSSHHostPlatforms[suffixSshHostLabel] = 'linux'
+
+ await vscode.workspace
+ .getConfiguration('remote.SSH')
+ .update(
+ 'remotePlatform',
+ newSSHHostPlatforms,
+ vscode.ConfigurationTarget.Global
+ )
+
+ await vscode.workspace
+ .getConfiguration('remote.SSH')
+ .update('useExecServer', false, vscode.ConfigurationTarget.Global)
+ await vscode.workspace
+ .getConfiguration('remote.SSH')
+ .update('localServerDownload', 'off', vscode.ConfigurationTarget.Global)
+}
diff --git a/vscode/devbox/src/utils/sshConfig.ts b/vscode/devbox/src/utils/sshConfig.ts
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/vscode/devbox/src/view/App.tsx b/vscode/devbox/src/view/App.tsx
new file mode 100644
index 00000000000..ad7a280bd63
--- /dev/null
+++ b/vscode/devbox/src/view/App.tsx
@@ -0,0 +1,20 @@
+import { ChakraProvider } from '@chakra-ui/react'
+import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
+
+import Template from './components/Template'
+import Info from './components/Info'
+
+const App = () => {
+ return (
+
+
+
+ } />
+ } />
+
+
+
+ )
+}
+
+export default App
diff --git a/vscode/devbox/src/view/components/Info.tsx b/vscode/devbox/src/view/components/Info.tsx
new file mode 100644
index 00000000000..0da6054f234
--- /dev/null
+++ b/vscode/devbox/src/view/components/Info.tsx
@@ -0,0 +1,129 @@
+import { useState } from 'react'
+import {
+ Box,
+ Button,
+ FormControl,
+ FormLabel,
+ Input,
+ Textarea,
+ Text,
+ InputGroup,
+ InputLeftAddon,
+} from '@chakra-ui/react'
+import { useNavigate, useLocation } from 'react-router-dom'
+
+import MyIcon from './MyIcon'
+
+interface NetworkItem {
+ port: number
+ remoteAccess: boolean
+ protocol: string
+ publicDomain: string
+ customDomain: string
+}
+
+const Info = () => {
+ const navigate = useNavigate()
+ const location = useLocation()
+ const template = location.state || { name: 'go', title: 'Go' }
+ const [projectName, setProjectName] = useState('')
+ const [networks, setNetworks] = useState([
+ {
+ port: 80,
+ remoteAccess: true,
+ protocol: 'https',
+ publicDomain: 'hello.cloud.xxx.io',
+ customDomain: '',
+ },
+ ])
+ const [githubRepo, setGithubRepo] = useState('')
+ const [projectDescription, setProjectDescription] = useState('')
+
+ const handleSubmit = () => {
+ console.log({ projectName, networks, githubRepo, projectDescription })
+ }
+
+ return (
+
+ {/* navbar */}
+
+ navigate('/')}
+ cursor={'pointer'}>
+
+ Choose Template
+
+
+
+ {/* form body */}
+
+ {/* template */}
+
+ Template
+
+
+
+
+ {template.title}
+
+
+
+ Quick Start a {template.title} Project
+
+
+
+ {/* project name */}
+
+ Project Name
+ setProjectName(e.target.value)}
+ placeholder="Please input project name"
+ />
+
+
+
+ Github Repo
+
+
+
+
+ setGithubRepo(e.target.value)}
+ placeholder="Github Repository"
+ />
+
+
+
+
+ Project Description
+
+
+
+ )
+}
+
+export default Info
diff --git a/vscode/devbox/src/view/components/MyIcon.tsx b/vscode/devbox/src/view/components/MyIcon.tsx
new file mode 100644
index 00000000000..ded08d4537d
--- /dev/null
+++ b/vscode/devbox/src/view/components/MyIcon.tsx
@@ -0,0 +1,53 @@
+import { Icon } from '@chakra-ui/react'
+import type { IconProps } from '@chakra-ui/react'
+
+const map = {
+ c: require('../public/c.svg').default,
+ flask: require('../public/flask.svg').default,
+ gin: require('../public/gin.svg').default,
+ go: require('../public/go.svg').default,
+ rust: require('../public/rust.svg').default,
+ hertz: require('../public/hertz.svg').default,
+ nodejs: require('../public/nodejs.svg').default,
+ nextjs: require('../public/nextjs.svg').default,
+ java: require('../public/java.svg').default,
+ python: require('../public/python.svg').default,
+ springBoot: require('../public/spring-boot.svg').default,
+ vue: require('../public/vue.svg').default,
+ ubuntu: require('../public/ubuntu.svg').default,
+ delete: require('../public/info/delete.svg').default,
+ add: require('../public/info/add.svg').default,
+ attach: require('../public/info/attach.svg').default,
+ arrowLeft: require('../public/info/arrow-left.svg').default,
+ debian: require('../public/debian.svg').default,
+}
+
+const MyIcon = ({
+ name,
+ w = 'auto',
+ h = 'auto',
+ ...props
+}: { name: string } & IconProps) => {
+ const IconComponent = map[name as keyof typeof map]
+
+ return IconComponent ? (
+
+ ) : (
+
+ )
+}
+
+export default MyIcon
diff --git a/vscode/devbox/src/view/components/Template.tsx b/vscode/devbox/src/view/components/Template.tsx
new file mode 100644
index 00000000000..3bd5e5b4fd6
--- /dev/null
+++ b/vscode/devbox/src/view/components/Template.tsx
@@ -0,0 +1,92 @@
+import { useState } from 'react'
+import { Box, Grid, Text, Button } from '@chakra-ui/react'
+import { useNavigate } from 'react-router-dom'
+
+import MyIcon from './MyIcon'
+import { templates } from '../constants/template'
+
+export interface TemplateItem {
+ name: string
+ title: string
+}
+
+const Template = () => {
+ const navigate = useNavigate()
+ const handleUseTemplate = ({ name, title }: TemplateItem) => {
+ navigate('/info', { state: { name, title } })
+ }
+
+ return (
+
+
+ Template
+
+ {templates.map((category) => (
+
+
+ {category.category}
+
+
+ {category.items.map((item) => (
+
+ ))}
+
+
+ ))}
+
+ )
+}
+
+const TemplateCard = ({
+ item,
+ onUse,
+}: {
+ item: TemplateItem
+ onUse: ({ name, title }: TemplateItem) => void
+}) => {
+ const [isHovered, setIsHovered] = useState(false)
+
+ return (
+ setIsHovered(true)}
+ onMouseLeave={() => setIsHovered(false)}
+ cursor="pointer"
+ bg={'#F3F3F3'}
+ _hover={{ bg: '#E3E3E3' }}
+ display={'flex'}
+ alignItems={'center'}
+ justifyContent={'space-between'}
+ onClick={() => onUse({ name: item.name, title: item.title })}>
+
+
+
+
+
+ {item.title}
+
+
+ Quick Start a {item.title} Project
+
+
+
+
+ )
+}
+
+export default Template
diff --git a/vscode/devbox/src/view/constants/template.ts b/vscode/devbox/src/view/constants/template.ts
new file mode 100644
index 00000000000..a065fe1d271
--- /dev/null
+++ b/vscode/devbox/src/view/constants/template.ts
@@ -0,0 +1,57 @@
+export const templates = [
+ {
+ category: 'Language',
+ items: [
+ {
+ title: 'Go',
+ name: 'go',
+ },
+ {
+ title: 'Python',
+ name: 'python',
+ },
+ {
+ title: 'Node.js',
+ name: 'nodejs',
+ },
+ { title: 'C', name: 'c' },
+ { title: 'Rust', name: 'rust' },
+ ],
+ },
+ {
+ category: 'Framework',
+ items: [
+ { name: 'gin', title: 'Gin' },
+ {
+ name: 'hertz',
+ title: 'Hertz',
+ },
+ { title: 'Flask', name: 'flask' },
+ {
+ title: 'Vue.js',
+ name: 'vue',
+ },
+ {
+ title: 'Next.js',
+ name: 'nextjs',
+ },
+ {
+ title: 'SpringBoot',
+ name: 'springBoot',
+ },
+ ],
+ },
+ {
+ category: 'Operating System',
+ items: [
+ {
+ title: 'Ubuntu',
+ name: 'ubuntu',
+ },
+ {
+ title: 'Debian',
+ name: 'debian',
+ },
+ ],
+ },
+]
diff --git a/vscode/devbox/src/view/index.html b/vscode/devbox/src/view/index.html
new file mode 100644
index 00000000000..dfeecc3b88c
--- /dev/null
+++ b/vscode/devbox/src/view/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ webview-react
+
+
+
+
+
diff --git a/vscode/devbox/src/view/index.tsx b/vscode/devbox/src/view/index.tsx
new file mode 100644
index 00000000000..685172a0848
--- /dev/null
+++ b/vscode/devbox/src/view/index.tsx
@@ -0,0 +1,8 @@
+import { createRoot } from 'react-dom/client'
+
+import App from './App'
+
+const root = document.getElementById('root')
+if (root) {
+ createRoot(root).render()
+}
diff --git a/vscode/devbox/src/view/public/c.svg b/vscode/devbox/src/view/public/c.svg
new file mode 100644
index 00000000000..28d09352393
--- /dev/null
+++ b/vscode/devbox/src/view/public/c.svg
@@ -0,0 +1,12 @@
+
diff --git a/vscode/devbox/src/view/public/debian.svg b/vscode/devbox/src/view/public/debian.svg
new file mode 100644
index 00000000000..e876a53c88f
--- /dev/null
+++ b/vscode/devbox/src/view/public/debian.svg
@@ -0,0 +1,10 @@
+
diff --git a/vscode/devbox/src/view/public/flask.svg b/vscode/devbox/src/view/public/flask.svg
new file mode 100644
index 00000000000..7bec65d3e7b
--- /dev/null
+++ b/vscode/devbox/src/view/public/flask.svg
@@ -0,0 +1,9 @@
+
diff --git a/vscode/devbox/src/view/public/gin.svg b/vscode/devbox/src/view/public/gin.svg
new file mode 100644
index 00000000000..f1581434a74
--- /dev/null
+++ b/vscode/devbox/src/view/public/gin.svg
@@ -0,0 +1,9 @@
+
diff --git a/vscode/devbox/src/view/public/go.svg b/vscode/devbox/src/view/public/go.svg
new file mode 100644
index 00000000000..47467683ecd
--- /dev/null
+++ b/vscode/devbox/src/view/public/go.svg
@@ -0,0 +1,30 @@
+
diff --git a/vscode/devbox/src/view/public/hertz.svg b/vscode/devbox/src/view/public/hertz.svg
new file mode 100644
index 00000000000..4607371b959
--- /dev/null
+++ b/vscode/devbox/src/view/public/hertz.svg
@@ -0,0 +1,9 @@
+
diff --git a/vscode/devbox/src/view/public/info/add.svg b/vscode/devbox/src/view/public/info/add.svg
new file mode 100644
index 00000000000..69f12fada89
--- /dev/null
+++ b/vscode/devbox/src/view/public/info/add.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode/devbox/src/view/public/info/arrow-left.svg b/vscode/devbox/src/view/public/info/arrow-left.svg
new file mode 100644
index 00000000000..317547225a4
--- /dev/null
+++ b/vscode/devbox/src/view/public/info/arrow-left.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode/devbox/src/view/public/info/attach.svg b/vscode/devbox/src/view/public/info/attach.svg
new file mode 100644
index 00000000000..8e3f4f22c7d
--- /dev/null
+++ b/vscode/devbox/src/view/public/info/attach.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode/devbox/src/view/public/info/delete.svg b/vscode/devbox/src/view/public/info/delete.svg
new file mode 100644
index 00000000000..a7c9f5bd80b
--- /dev/null
+++ b/vscode/devbox/src/view/public/info/delete.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode/devbox/src/view/public/java.svg b/vscode/devbox/src/view/public/java.svg
new file mode 100644
index 00000000000..d93bdcc87ed
--- /dev/null
+++ b/vscode/devbox/src/view/public/java.svg
@@ -0,0 +1,7 @@
+
diff --git a/vscode/devbox/src/view/public/nextjs.svg b/vscode/devbox/src/view/public/nextjs.svg
new file mode 100644
index 00000000000..e60aee1a277
--- /dev/null
+++ b/vscode/devbox/src/view/public/nextjs.svg
@@ -0,0 +1,10 @@
+
diff --git a/vscode/devbox/src/view/public/nodejs.svg b/vscode/devbox/src/view/public/nodejs.svg
new file mode 100644
index 00000000000..2c2662a6c17
--- /dev/null
+++ b/vscode/devbox/src/view/public/nodejs.svg
@@ -0,0 +1,26 @@
+
diff --git a/vscode/devbox/src/view/public/python.svg b/vscode/devbox/src/view/public/python.svg
new file mode 100644
index 00000000000..c02055de0c3
--- /dev/null
+++ b/vscode/devbox/src/view/public/python.svg
@@ -0,0 +1,14 @@
+
diff --git a/vscode/devbox/src/view/public/rust.svg b/vscode/devbox/src/view/public/rust.svg
new file mode 100644
index 00000000000..fa81c55e634
--- /dev/null
+++ b/vscode/devbox/src/view/public/rust.svg
@@ -0,0 +1,3 @@
+
diff --git a/vscode/devbox/src/view/public/spring-boot.svg b/vscode/devbox/src/view/public/spring-boot.svg
new file mode 100644
index 00000000000..0b29fa8ac54
--- /dev/null
+++ b/vscode/devbox/src/view/public/spring-boot.svg
@@ -0,0 +1,12 @@
+
diff --git a/vscode/devbox/src/view/public/ubuntu.svg b/vscode/devbox/src/view/public/ubuntu.svg
new file mode 100644
index 00000000000..0108d0f22f3
--- /dev/null
+++ b/vscode/devbox/src/view/public/ubuntu.svg
@@ -0,0 +1,11 @@
+
diff --git a/vscode/devbox/src/view/public/vue.svg b/vscode/devbox/src/view/public/vue.svg
new file mode 100644
index 00000000000..a18a6826070
--- /dev/null
+++ b/vscode/devbox/src/view/public/vue.svg
@@ -0,0 +1,11 @@
+
diff --git a/vscode/devbox/tsconfig.json b/vscode/devbox/tsconfig.json
new file mode 100644
index 00000000000..9d75c8ca57e
--- /dev/null
+++ b/vscode/devbox/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "ES2022",
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "outDir": "./out",
+ "sourceMap": true,
+ "rootDir": "src",
+ "jsx": "react-jsx",
+ "exactOptionalPropertyTypes": false,
+ "useUnknownInCatchVariables": false,
+ "alwaysStrict": true,
+ "noImplicitAny": true,
+ "noImplicitReturns": true,
+ "noImplicitOverride": true,
+ "noUnusedLocals": false,
+ "noUnusedParameters": false,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "strict": true
+ },
+ "include": ["src/**/*", "src/types/icon.d.ts"]
+}
diff --git a/vscode/devbox/vsc-extension-quickstart.md b/vscode/devbox/vsc-extension-quickstart.md
new file mode 100644
index 00000000000..f518bb846b1
--- /dev/null
+++ b/vscode/devbox/vsc-extension-quickstart.md
@@ -0,0 +1,48 @@
+# Welcome to your VS Code Extension
+
+## What's in the folder
+
+* This folder contains all of the files necessary for your extension.
+* `package.json` - this is the manifest file in which you declare your extension and command.
+ * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin.
+* `src/extension.ts` - this is the main file where you will provide the implementation of your command.
+ * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`.
+ * We pass the function containing the implementation of the command as the second parameter to `registerCommand`.
+
+## Setup
+
+* install the recommended extensions (amodio.tsl-problem-matcher, ms-vscode.extension-test-runner, and dbaeumer.vscode-eslint)
+
+
+## Get up and running straight away
+
+* Press `F5` to open a new window with your extension loaded.
+* Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`.
+* Set breakpoints in your code inside `src/extension.ts` to debug your extension.
+* Find output from your extension in the debug console.
+
+## Make changes
+
+* You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`.
+* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes.
+
+
+## Explore the API
+
+* You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`.
+
+## Run tests
+
+* Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner)
+* Run the "watch" task via the **Tasks: Run Task** command. Make sure this is running, or tests might not be discovered.
+* Open the Testing view from the activity bar and click the Run Test" button, or use the hotkey `Ctrl/Cmd + ; A`
+* See the output of the test result in the Test Results view.
+* Make changes to `src/test/extension.test.ts` or create new test files inside the `test` folder.
+ * The provided test runner will only consider files matching the name pattern `**.test.ts`.
+ * You can create folders inside the `test` folder to structure your tests any way you want.
+
+## Go further
+
+* Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension).
+* [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace.
+* Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration).
diff --git a/vscode/devbox/webpack.base.js b/vscode/devbox/webpack.base.js
new file mode 100644
index 00000000000..48740526f1e
--- /dev/null
+++ b/vscode/devbox/webpack.base.js
@@ -0,0 +1,45 @@
+const path = require('path')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+
+module.exports = {
+ entry: path.join(__dirname, './src/view/index.tsx'),
+ output: {
+ filename: './static/js/[name].js',
+ path: path.join(__dirname, './dist'),
+ clean: true,
+ publicPath: '/',
+ },
+ module: {
+ rules: [
+ {
+ test: /.(ts|tsx)$/,
+ use: {
+ loader: 'babel-loader',
+ options: {
+ presets: [
+ ['@babel/preset-react', { runtime: 'automatic' }],
+ '@babel/preset-typescript',
+ ],
+ },
+ },
+ },
+ {
+ test: /\.css$/,
+ use: ['style-loader', 'css-loader'],
+ },
+ {
+ test: /\.svg$/,
+ use: ['@svgr/webpack'],
+ },
+ ],
+ },
+ resolve: {
+ extensions: ['.js', '.tsx', '.ts'],
+ },
+ plugins: [
+ new HtmlWebpackPlugin({
+ template: path.resolve(__dirname, './src/view/index.html'),
+ inject: true,
+ }),
+ ],
+}
diff --git a/vscode/devbox/webpack.config.js b/vscode/devbox/webpack.config.js
new file mode 100644
index 00000000000..17d24cb61f9
--- /dev/null
+++ b/vscode/devbox/webpack.config.js
@@ -0,0 +1,48 @@
+//@ts-check
+
+'use strict'
+
+const path = require('path')
+
+//@ts-check
+/** @typedef {import('webpack').Configuration} WebpackConfig **/
+
+/** @type WebpackConfig */
+const extensionConfig = {
+ target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/
+ mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production')
+
+ entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/
+ output: {
+ // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/
+ path: path.resolve(__dirname, 'dist'),
+ filename: 'extension.js',
+ libraryTarget: 'commonjs2',
+ },
+ externals: {
+ vscode: 'commonjs vscode', // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
+ // modules added here also need to be added in the .vscodeignore file
+ },
+ resolve: {
+ // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader
+ extensions: ['.ts', '.js'],
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ exclude: /node_modules/,
+ use: [
+ {
+ loader: 'ts-loader',
+ },
+ ],
+ },
+ ],
+ },
+ devtool: 'nosources-source-map',
+ infrastructureLogging: {
+ level: 'log', // enables logging required for problem matchers
+ },
+}
+module.exports = [extensionConfig]
diff --git a/vscode/devbox/webpack.dev.js b/vscode/devbox/webpack.dev.js
new file mode 100644
index 00000000000..e3a22d04433
--- /dev/null
+++ b/vscode/devbox/webpack.dev.js
@@ -0,0 +1,17 @@
+const path = require('path')
+const { merge } = require('webpack-merge')
+const baseConfig = require('./webpack.base.js')
+
+module.exports = merge(baseConfig, {
+ mode: 'development',
+ devtool: 'source-map',
+ devServer: {
+ port: 3001,
+ compress: false,
+ hot: true,
+ historyApiFallback: true,
+ static: {
+ directory: path.join(__dirname, './src/view/public'),
+ },
+ },
+})
diff --git a/vscode/devbox/webpack.prod.js b/vscode/devbox/webpack.prod.js
new file mode 100644
index 00000000000..88b57243ce6
--- /dev/null
+++ b/vscode/devbox/webpack.prod.js
@@ -0,0 +1,6 @@
+const { merge } = require('webpack-merge')
+const baseConfig = require('./webpack.base.js')
+
+module.exports = merge(baseConfig, {
+ mode: 'production',
+})
From d4b09743387afa59c96c9c0d3962c2e9250265fe Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Mon, 28 Oct 2024 14:54:46 +0800
Subject: [PATCH 002/105] chore(devbox): adjust folder position
---
.../ide/vscode}/devbox/.eslintrc.json | 0
{vscode => extensions/ide/vscode}/devbox/.gitignore | 0
.../ide/vscode}/devbox/.vscode-test.mjs | 0
.../ide/vscode}/devbox/.vscodeignore | 0
.../ide/vscode}/devbox/CHANGELOG.md | 0
{vscode => extensions/ide/vscode}/devbox/LICENSE | 0
{vscode => extensions/ide/vscode}/devbox/README.md | 0
.../ide/vscode}/devbox/docs/note.md | 0
.../ide/vscode}/devbox/images/create.svg | 0
.../ide/vscode}/devbox/images/explorer.svg | 0
.../ide/vscode}/devbox/images/icon.png | Bin
.../ide/vscode}/devbox/images/open.svg | 0
.../ide/vscode}/devbox/images/refresh.svg | 0
.../ide/vscode}/devbox/package-lock.json | 0
.../ide/vscode}/devbox/package.json | 0
.../ide/vscode}/devbox/src/api/index.ts | 0
.../vscode}/devbox/src/commands/remoteConnector.ts | 0
.../ide/vscode}/devbox/src/commands/treeview.ts | 0
.../ide/vscode}/devbox/src/commands/webview.ts | 0
.../ide/vscode}/devbox/src/common/dispose.ts | 0
.../ide/vscode}/devbox/src/common/files.ts | 0
.../ide/vscode}/devbox/src/common/logger.ts | 0
.../ide/vscode}/devbox/src/extension.ts | 0
.../ide/vscode}/devbox/src/types/devbox.d.ts | 0
.../ide/vscode}/devbox/src/utils/remoteSSHConfig.ts | 0
.../ide/vscode}/devbox/src/utils/sshConfig.ts | 0
.../ide/vscode}/devbox/src/view/App.tsx | 0
.../ide/vscode}/devbox/src/view/components/Info.tsx | 0
.../vscode}/devbox/src/view/components/MyIcon.tsx | 0
.../vscode}/devbox/src/view/components/Template.tsx | 0
.../vscode}/devbox/src/view/constants/template.ts | 0
.../ide/vscode}/devbox/src/view/index.html | 0
.../ide/vscode}/devbox/src/view/index.tsx | 0
.../ide/vscode}/devbox/src/view/public/c.svg | 0
.../ide/vscode}/devbox/src/view/public/debian.svg | 0
.../ide/vscode}/devbox/src/view/public/flask.svg | 0
.../ide/vscode}/devbox/src/view/public/gin.svg | 0
.../ide/vscode}/devbox/src/view/public/go.svg | 0
.../ide/vscode}/devbox/src/view/public/hertz.svg | 0
.../ide/vscode}/devbox/src/view/public/info/add.svg | 0
.../devbox/src/view/public/info/arrow-left.svg | 0
.../vscode}/devbox/src/view/public/info/attach.svg | 0
.../vscode}/devbox/src/view/public/info/delete.svg | 0
.../ide/vscode}/devbox/src/view/public/java.svg | 0
.../ide/vscode}/devbox/src/view/public/nextjs.svg | 0
.../ide/vscode}/devbox/src/view/public/nodejs.svg | 0
.../ide/vscode}/devbox/src/view/public/python.svg | 0
.../ide/vscode}/devbox/src/view/public/rust.svg | 0
.../vscode}/devbox/src/view/public/spring-boot.svg | 0
.../ide/vscode}/devbox/src/view/public/ubuntu.svg | 0
.../ide/vscode}/devbox/src/view/public/vue.svg | 0
.../ide/vscode}/devbox/tsconfig.json | 0
.../ide/vscode}/devbox/vsc-extension-quickstart.md | 0
.../ide/vscode}/devbox/webpack.base.js | 0
.../ide/vscode}/devbox/webpack.config.js | 0
.../ide/vscode}/devbox/webpack.dev.js | 0
.../ide/vscode}/devbox/webpack.prod.js | 0
57 files changed, 0 insertions(+), 0 deletions(-)
rename {vscode => extensions/ide/vscode}/devbox/.eslintrc.json (100%)
rename {vscode => extensions/ide/vscode}/devbox/.gitignore (100%)
rename {vscode => extensions/ide/vscode}/devbox/.vscode-test.mjs (100%)
rename {vscode => extensions/ide/vscode}/devbox/.vscodeignore (100%)
rename {vscode => extensions/ide/vscode}/devbox/CHANGELOG.md (100%)
rename {vscode => extensions/ide/vscode}/devbox/LICENSE (100%)
rename {vscode => extensions/ide/vscode}/devbox/README.md (100%)
rename {vscode => extensions/ide/vscode}/devbox/docs/note.md (100%)
rename {vscode => extensions/ide/vscode}/devbox/images/create.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/images/explorer.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/images/icon.png (100%)
rename {vscode => extensions/ide/vscode}/devbox/images/open.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/images/refresh.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/package-lock.json (100%)
rename {vscode => extensions/ide/vscode}/devbox/package.json (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/api/index.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/commands/remoteConnector.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/commands/treeview.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/commands/webview.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/common/dispose.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/common/files.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/common/logger.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/extension.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/types/devbox.d.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/utils/remoteSSHConfig.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/utils/sshConfig.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/App.tsx (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/components/Info.tsx (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/components/MyIcon.tsx (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/components/Template.tsx (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/constants/template.ts (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/index.html (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/index.tsx (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/c.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/debian.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/flask.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/gin.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/go.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/hertz.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/info/add.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/info/arrow-left.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/info/attach.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/info/delete.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/java.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/nextjs.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/nodejs.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/python.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/rust.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/spring-boot.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/ubuntu.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/src/view/public/vue.svg (100%)
rename {vscode => extensions/ide/vscode}/devbox/tsconfig.json (100%)
rename {vscode => extensions/ide/vscode}/devbox/vsc-extension-quickstart.md (100%)
rename {vscode => extensions/ide/vscode}/devbox/webpack.base.js (100%)
rename {vscode => extensions/ide/vscode}/devbox/webpack.config.js (100%)
rename {vscode => extensions/ide/vscode}/devbox/webpack.dev.js (100%)
rename {vscode => extensions/ide/vscode}/devbox/webpack.prod.js (100%)
diff --git a/vscode/devbox/.eslintrc.json b/extensions/ide/vscode/devbox/.eslintrc.json
similarity index 100%
rename from vscode/devbox/.eslintrc.json
rename to extensions/ide/vscode/devbox/.eslintrc.json
diff --git a/vscode/devbox/.gitignore b/extensions/ide/vscode/devbox/.gitignore
similarity index 100%
rename from vscode/devbox/.gitignore
rename to extensions/ide/vscode/devbox/.gitignore
diff --git a/vscode/devbox/.vscode-test.mjs b/extensions/ide/vscode/devbox/.vscode-test.mjs
similarity index 100%
rename from vscode/devbox/.vscode-test.mjs
rename to extensions/ide/vscode/devbox/.vscode-test.mjs
diff --git a/vscode/devbox/.vscodeignore b/extensions/ide/vscode/devbox/.vscodeignore
similarity index 100%
rename from vscode/devbox/.vscodeignore
rename to extensions/ide/vscode/devbox/.vscodeignore
diff --git a/vscode/devbox/CHANGELOG.md b/extensions/ide/vscode/devbox/CHANGELOG.md
similarity index 100%
rename from vscode/devbox/CHANGELOG.md
rename to extensions/ide/vscode/devbox/CHANGELOG.md
diff --git a/vscode/devbox/LICENSE b/extensions/ide/vscode/devbox/LICENSE
similarity index 100%
rename from vscode/devbox/LICENSE
rename to extensions/ide/vscode/devbox/LICENSE
diff --git a/vscode/devbox/README.md b/extensions/ide/vscode/devbox/README.md
similarity index 100%
rename from vscode/devbox/README.md
rename to extensions/ide/vscode/devbox/README.md
diff --git a/vscode/devbox/docs/note.md b/extensions/ide/vscode/devbox/docs/note.md
similarity index 100%
rename from vscode/devbox/docs/note.md
rename to extensions/ide/vscode/devbox/docs/note.md
diff --git a/vscode/devbox/images/create.svg b/extensions/ide/vscode/devbox/images/create.svg
similarity index 100%
rename from vscode/devbox/images/create.svg
rename to extensions/ide/vscode/devbox/images/create.svg
diff --git a/vscode/devbox/images/explorer.svg b/extensions/ide/vscode/devbox/images/explorer.svg
similarity index 100%
rename from vscode/devbox/images/explorer.svg
rename to extensions/ide/vscode/devbox/images/explorer.svg
diff --git a/vscode/devbox/images/icon.png b/extensions/ide/vscode/devbox/images/icon.png
similarity index 100%
rename from vscode/devbox/images/icon.png
rename to extensions/ide/vscode/devbox/images/icon.png
diff --git a/vscode/devbox/images/open.svg b/extensions/ide/vscode/devbox/images/open.svg
similarity index 100%
rename from vscode/devbox/images/open.svg
rename to extensions/ide/vscode/devbox/images/open.svg
diff --git a/vscode/devbox/images/refresh.svg b/extensions/ide/vscode/devbox/images/refresh.svg
similarity index 100%
rename from vscode/devbox/images/refresh.svg
rename to extensions/ide/vscode/devbox/images/refresh.svg
diff --git a/vscode/devbox/package-lock.json b/extensions/ide/vscode/devbox/package-lock.json
similarity index 100%
rename from vscode/devbox/package-lock.json
rename to extensions/ide/vscode/devbox/package-lock.json
diff --git a/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
similarity index 100%
rename from vscode/devbox/package.json
rename to extensions/ide/vscode/devbox/package.json
diff --git a/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
similarity index 100%
rename from vscode/devbox/src/api/index.ts
rename to extensions/ide/vscode/devbox/src/api/index.ts
diff --git a/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
similarity index 100%
rename from vscode/devbox/src/commands/remoteConnector.ts
rename to extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
diff --git a/vscode/devbox/src/commands/treeview.ts b/extensions/ide/vscode/devbox/src/commands/treeview.ts
similarity index 100%
rename from vscode/devbox/src/commands/treeview.ts
rename to extensions/ide/vscode/devbox/src/commands/treeview.ts
diff --git a/vscode/devbox/src/commands/webview.ts b/extensions/ide/vscode/devbox/src/commands/webview.ts
similarity index 100%
rename from vscode/devbox/src/commands/webview.ts
rename to extensions/ide/vscode/devbox/src/commands/webview.ts
diff --git a/vscode/devbox/src/common/dispose.ts b/extensions/ide/vscode/devbox/src/common/dispose.ts
similarity index 100%
rename from vscode/devbox/src/common/dispose.ts
rename to extensions/ide/vscode/devbox/src/common/dispose.ts
diff --git a/vscode/devbox/src/common/files.ts b/extensions/ide/vscode/devbox/src/common/files.ts
similarity index 100%
rename from vscode/devbox/src/common/files.ts
rename to extensions/ide/vscode/devbox/src/common/files.ts
diff --git a/vscode/devbox/src/common/logger.ts b/extensions/ide/vscode/devbox/src/common/logger.ts
similarity index 100%
rename from vscode/devbox/src/common/logger.ts
rename to extensions/ide/vscode/devbox/src/common/logger.ts
diff --git a/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
similarity index 100%
rename from vscode/devbox/src/extension.ts
rename to extensions/ide/vscode/devbox/src/extension.ts
diff --git a/vscode/devbox/src/types/devbox.d.ts b/extensions/ide/vscode/devbox/src/types/devbox.d.ts
similarity index 100%
rename from vscode/devbox/src/types/devbox.d.ts
rename to extensions/ide/vscode/devbox/src/types/devbox.d.ts
diff --git a/vscode/devbox/src/utils/remoteSSHConfig.ts b/extensions/ide/vscode/devbox/src/utils/remoteSSHConfig.ts
similarity index 100%
rename from vscode/devbox/src/utils/remoteSSHConfig.ts
rename to extensions/ide/vscode/devbox/src/utils/remoteSSHConfig.ts
diff --git a/vscode/devbox/src/utils/sshConfig.ts b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
similarity index 100%
rename from vscode/devbox/src/utils/sshConfig.ts
rename to extensions/ide/vscode/devbox/src/utils/sshConfig.ts
diff --git a/vscode/devbox/src/view/App.tsx b/extensions/ide/vscode/devbox/src/view/App.tsx
similarity index 100%
rename from vscode/devbox/src/view/App.tsx
rename to extensions/ide/vscode/devbox/src/view/App.tsx
diff --git a/vscode/devbox/src/view/components/Info.tsx b/extensions/ide/vscode/devbox/src/view/components/Info.tsx
similarity index 100%
rename from vscode/devbox/src/view/components/Info.tsx
rename to extensions/ide/vscode/devbox/src/view/components/Info.tsx
diff --git a/vscode/devbox/src/view/components/MyIcon.tsx b/extensions/ide/vscode/devbox/src/view/components/MyIcon.tsx
similarity index 100%
rename from vscode/devbox/src/view/components/MyIcon.tsx
rename to extensions/ide/vscode/devbox/src/view/components/MyIcon.tsx
diff --git a/vscode/devbox/src/view/components/Template.tsx b/extensions/ide/vscode/devbox/src/view/components/Template.tsx
similarity index 100%
rename from vscode/devbox/src/view/components/Template.tsx
rename to extensions/ide/vscode/devbox/src/view/components/Template.tsx
diff --git a/vscode/devbox/src/view/constants/template.ts b/extensions/ide/vscode/devbox/src/view/constants/template.ts
similarity index 100%
rename from vscode/devbox/src/view/constants/template.ts
rename to extensions/ide/vscode/devbox/src/view/constants/template.ts
diff --git a/vscode/devbox/src/view/index.html b/extensions/ide/vscode/devbox/src/view/index.html
similarity index 100%
rename from vscode/devbox/src/view/index.html
rename to extensions/ide/vscode/devbox/src/view/index.html
diff --git a/vscode/devbox/src/view/index.tsx b/extensions/ide/vscode/devbox/src/view/index.tsx
similarity index 100%
rename from vscode/devbox/src/view/index.tsx
rename to extensions/ide/vscode/devbox/src/view/index.tsx
diff --git a/vscode/devbox/src/view/public/c.svg b/extensions/ide/vscode/devbox/src/view/public/c.svg
similarity index 100%
rename from vscode/devbox/src/view/public/c.svg
rename to extensions/ide/vscode/devbox/src/view/public/c.svg
diff --git a/vscode/devbox/src/view/public/debian.svg b/extensions/ide/vscode/devbox/src/view/public/debian.svg
similarity index 100%
rename from vscode/devbox/src/view/public/debian.svg
rename to extensions/ide/vscode/devbox/src/view/public/debian.svg
diff --git a/vscode/devbox/src/view/public/flask.svg b/extensions/ide/vscode/devbox/src/view/public/flask.svg
similarity index 100%
rename from vscode/devbox/src/view/public/flask.svg
rename to extensions/ide/vscode/devbox/src/view/public/flask.svg
diff --git a/vscode/devbox/src/view/public/gin.svg b/extensions/ide/vscode/devbox/src/view/public/gin.svg
similarity index 100%
rename from vscode/devbox/src/view/public/gin.svg
rename to extensions/ide/vscode/devbox/src/view/public/gin.svg
diff --git a/vscode/devbox/src/view/public/go.svg b/extensions/ide/vscode/devbox/src/view/public/go.svg
similarity index 100%
rename from vscode/devbox/src/view/public/go.svg
rename to extensions/ide/vscode/devbox/src/view/public/go.svg
diff --git a/vscode/devbox/src/view/public/hertz.svg b/extensions/ide/vscode/devbox/src/view/public/hertz.svg
similarity index 100%
rename from vscode/devbox/src/view/public/hertz.svg
rename to extensions/ide/vscode/devbox/src/view/public/hertz.svg
diff --git a/vscode/devbox/src/view/public/info/add.svg b/extensions/ide/vscode/devbox/src/view/public/info/add.svg
similarity index 100%
rename from vscode/devbox/src/view/public/info/add.svg
rename to extensions/ide/vscode/devbox/src/view/public/info/add.svg
diff --git a/vscode/devbox/src/view/public/info/arrow-left.svg b/extensions/ide/vscode/devbox/src/view/public/info/arrow-left.svg
similarity index 100%
rename from vscode/devbox/src/view/public/info/arrow-left.svg
rename to extensions/ide/vscode/devbox/src/view/public/info/arrow-left.svg
diff --git a/vscode/devbox/src/view/public/info/attach.svg b/extensions/ide/vscode/devbox/src/view/public/info/attach.svg
similarity index 100%
rename from vscode/devbox/src/view/public/info/attach.svg
rename to extensions/ide/vscode/devbox/src/view/public/info/attach.svg
diff --git a/vscode/devbox/src/view/public/info/delete.svg b/extensions/ide/vscode/devbox/src/view/public/info/delete.svg
similarity index 100%
rename from vscode/devbox/src/view/public/info/delete.svg
rename to extensions/ide/vscode/devbox/src/view/public/info/delete.svg
diff --git a/vscode/devbox/src/view/public/java.svg b/extensions/ide/vscode/devbox/src/view/public/java.svg
similarity index 100%
rename from vscode/devbox/src/view/public/java.svg
rename to extensions/ide/vscode/devbox/src/view/public/java.svg
diff --git a/vscode/devbox/src/view/public/nextjs.svg b/extensions/ide/vscode/devbox/src/view/public/nextjs.svg
similarity index 100%
rename from vscode/devbox/src/view/public/nextjs.svg
rename to extensions/ide/vscode/devbox/src/view/public/nextjs.svg
diff --git a/vscode/devbox/src/view/public/nodejs.svg b/extensions/ide/vscode/devbox/src/view/public/nodejs.svg
similarity index 100%
rename from vscode/devbox/src/view/public/nodejs.svg
rename to extensions/ide/vscode/devbox/src/view/public/nodejs.svg
diff --git a/vscode/devbox/src/view/public/python.svg b/extensions/ide/vscode/devbox/src/view/public/python.svg
similarity index 100%
rename from vscode/devbox/src/view/public/python.svg
rename to extensions/ide/vscode/devbox/src/view/public/python.svg
diff --git a/vscode/devbox/src/view/public/rust.svg b/extensions/ide/vscode/devbox/src/view/public/rust.svg
similarity index 100%
rename from vscode/devbox/src/view/public/rust.svg
rename to extensions/ide/vscode/devbox/src/view/public/rust.svg
diff --git a/vscode/devbox/src/view/public/spring-boot.svg b/extensions/ide/vscode/devbox/src/view/public/spring-boot.svg
similarity index 100%
rename from vscode/devbox/src/view/public/spring-boot.svg
rename to extensions/ide/vscode/devbox/src/view/public/spring-boot.svg
diff --git a/vscode/devbox/src/view/public/ubuntu.svg b/extensions/ide/vscode/devbox/src/view/public/ubuntu.svg
similarity index 100%
rename from vscode/devbox/src/view/public/ubuntu.svg
rename to extensions/ide/vscode/devbox/src/view/public/ubuntu.svg
diff --git a/vscode/devbox/src/view/public/vue.svg b/extensions/ide/vscode/devbox/src/view/public/vue.svg
similarity index 100%
rename from vscode/devbox/src/view/public/vue.svg
rename to extensions/ide/vscode/devbox/src/view/public/vue.svg
diff --git a/vscode/devbox/tsconfig.json b/extensions/ide/vscode/devbox/tsconfig.json
similarity index 100%
rename from vscode/devbox/tsconfig.json
rename to extensions/ide/vscode/devbox/tsconfig.json
diff --git a/vscode/devbox/vsc-extension-quickstart.md b/extensions/ide/vscode/devbox/vsc-extension-quickstart.md
similarity index 100%
rename from vscode/devbox/vsc-extension-quickstart.md
rename to extensions/ide/vscode/devbox/vsc-extension-quickstart.md
diff --git a/vscode/devbox/webpack.base.js b/extensions/ide/vscode/devbox/webpack.base.js
similarity index 100%
rename from vscode/devbox/webpack.base.js
rename to extensions/ide/vscode/devbox/webpack.base.js
diff --git a/vscode/devbox/webpack.config.js b/extensions/ide/vscode/devbox/webpack.config.js
similarity index 100%
rename from vscode/devbox/webpack.config.js
rename to extensions/ide/vscode/devbox/webpack.config.js
diff --git a/vscode/devbox/webpack.dev.js b/extensions/ide/vscode/devbox/webpack.dev.js
similarity index 100%
rename from vscode/devbox/webpack.dev.js
rename to extensions/ide/vscode/devbox/webpack.dev.js
diff --git a/vscode/devbox/webpack.prod.js b/extensions/ide/vscode/devbox/webpack.prod.js
similarity index 100%
rename from vscode/devbox/webpack.prod.js
rename to extensions/ide/vscode/devbox/webpack.prod.js
From eb6591d0169dd7b46715ccf5c1e446774daea155 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Mon, 28 Oct 2024 23:19:52 +0800
Subject: [PATCH 003/105] fix: package-lock and sanitized bug
---
extensions/ide/vscode/devbox/package-lock.json | 8 ++++----
.../ide/vscode/devbox/src/commands/remoteConnector.ts | 2 ++
extensions/ide/vscode/devbox/src/commands/webview.ts | 2 ++
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package-lock.json b/extensions/ide/vscode/devbox/package-lock.json
index 5605e5700a6..b53491fdab9 100644
--- a/extensions/ide/vscode/devbox/package-lock.json
+++ b/extensions/ide/vscode/devbox/package-lock.json
@@ -1,12 +1,12 @@
{
- "name": "devbox-sealos",
- "version": "0.6.12",
+ "name": "devbox-aio",
+ "version": "0.8.5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "devbox-sealos",
- "version": "0.6.12",
+ "name": "devbox-aio",
+ "version": "0.8.5",
"license": "MIT",
"dependencies": {
"@chakra-ui/react": "^2.8.2",
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index 9bca8f50d6f..ebc4768367a 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -224,6 +224,7 @@ export class RemoteSSHConnector extends Disposable {
// 针对mac和windows区别处理
if (os.platform() === 'win32') {
+ /* semgrep-ignore-start */
// 移除继承的权限
execSync(`icacls "${sshKeyPath}" /inheritance:r`)
// 为当前用户授予完全控制权限
@@ -234,6 +235,7 @@ export class RemoteSSHConnector extends Disposable {
// 设置文件权限为 600(仅文件所有者可读写)
execSync(`chmod 600 "${sshKeyPath}"`)
}
+ /* semgrep-ignore-end */
} catch (error) {
vscode.window.showErrorMessage(
`Failed to write SSH private key: ${error}`
diff --git a/extensions/ide/vscode/devbox/src/commands/webview.ts b/extensions/ide/vscode/devbox/src/commands/webview.ts
index 69a42dc7b1b..bfc7562c5f8 100644
--- a/extensions/ide/vscode/devbox/src/commands/webview.ts
+++ b/extensions/ide/vscode/devbox/src/commands/webview.ts
@@ -31,6 +31,7 @@ export class Webview extends Disposable {
const isProduction =
context.extensionMode === vscode.ExtensionMode.Production
if (isProduction) {
+ /* semgrep-ignore-start */
const filePath = vscode.Uri.file(
path.join(context.extensionPath, 'dist', 'static/js/main.js')
)
@@ -38,6 +39,7 @@ export class Webview extends Disposable {
} else {
srcUrl = 'http://localhost:3001/static/js/main.js'
}
+ /* semgrep-ignore-end */
panel.webview.html = this.getWebviewContent(srcUrl)
const updateWebview = () => {
From 693e717f81def0cf84f4912aa41ab204e13dc1a9 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Mon, 28 Oct 2024 23:23:44 +0800
Subject: [PATCH 004/105] fix: another try
---
extensions/ide/vscode/devbox/src/commands/remoteConnector.ts | 3 +--
extensions/ide/vscode/devbox/src/commands/webview.ts | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index ebc4768367a..82deca87c78 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -224,7 +224,7 @@ export class RemoteSSHConnector extends Disposable {
// 针对mac和windows区别处理
if (os.platform() === 'win32') {
- /* semgrep-ignore-start */
+ // noscan
// 移除继承的权限
execSync(`icacls "${sshKeyPath}" /inheritance:r`)
// 为当前用户授予完全控制权限
@@ -235,7 +235,6 @@ export class RemoteSSHConnector extends Disposable {
// 设置文件权限为 600(仅文件所有者可读写)
execSync(`chmod 600 "${sshKeyPath}"`)
}
- /* semgrep-ignore-end */
} catch (error) {
vscode.window.showErrorMessage(
`Failed to write SSH private key: ${error}`
diff --git a/extensions/ide/vscode/devbox/src/commands/webview.ts b/extensions/ide/vscode/devbox/src/commands/webview.ts
index bfc7562c5f8..db1446e5297 100644
--- a/extensions/ide/vscode/devbox/src/commands/webview.ts
+++ b/extensions/ide/vscode/devbox/src/commands/webview.ts
@@ -31,7 +31,7 @@ export class Webview extends Disposable {
const isProduction =
context.extensionMode === vscode.ExtensionMode.Production
if (isProduction) {
- /* semgrep-ignore-start */
+ // noscan
const filePath = vscode.Uri.file(
path.join(context.extensionPath, 'dist', 'static/js/main.js')
)
@@ -39,7 +39,6 @@ export class Webview extends Disposable {
} else {
srcUrl = 'http://localhost:3001/static/js/main.js'
}
- /* semgrep-ignore-end */
panel.webview.html = this.getWebviewContent(srcUrl)
const updateWebview = () => {
From ba3705e243e41a79b44a71754ad3780900a96f12 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 5 Nov 2024 18:03:23 +0800
Subject: [PATCH 005/105] fix: some rebase fix
---
frontend/providers/devbox/components/IDEButton.tsx | 6 +++---
.../devbox/deploy/manifests/deploy.yaml.tmpl | 4 ++--
frontend/providers/devbox/public/images/iris.svg | 14 --------------
frontend/providers/devbox/utils/adapt.ts | 1 -
4 files changed, 5 insertions(+), 20 deletions(-)
delete mode 100644 frontend/providers/devbox/public/images/iris.svg
diff --git a/frontend/providers/devbox/components/IDEButton.tsx b/frontend/providers/devbox/components/IDEButton.tsx
index 057d2d600ec..11c1a4fcf35 100644
--- a/frontend/providers/devbox/components/IDEButton.tsx
+++ b/frontend/providers/devbox/components/IDEButton.tsx
@@ -55,7 +55,7 @@ const IDEButton = ({
})
try {
- const { base64PrivateKey, userName } = await getSSHConnectionInfo({
+ const { base64PrivateKey, userName, token } = await getSSHConnectionInfo({
devboxName,
runtimeName: runtimeVersion
})
@@ -81,8 +81,8 @@ const IDEButton = ({
)}&sshPort=${encodeURIComponent(sshPort)}&base64PrivateKey=${encodeURIComponent(
base64PrivateKey
)}&sshHostLabel=${encodeURIComponent(
- `${env.sealosDomain}/${env.namespace}/${devboxName}`
- )}&workingDir=${encodeURIComponent(workingDir)}`
+ `${env.sealosDomain}-${env.namespace}-${devboxName}`
+ )}&workingDir=${encodeURIComponent(workingDir)}&token=${encodeURIComponent(token)}`
window.location.href = fullUri
} catch (error: any) {
diff --git a/frontend/providers/devbox/deploy/manifests/deploy.yaml.tmpl b/frontend/providers/devbox/deploy/manifests/deploy.yaml.tmpl
index a9c9e5343d2..d85a35da352 100644
--- a/frontend/providers/devbox/deploy/manifests/deploy.yaml.tmpl
+++ b/frontend/providers/devbox/deploy/manifests/deploy.yaml.tmpl
@@ -38,11 +38,11 @@ spec:
- name: devbox-frontend
env:
- name: SEALOS_DOMAIN
- value: {{ .cloudDomain }}
+ value: { { .cloudDomain } }
- name: INGRESS_SECRET
value: wildcard-cert
- name: REGISTRY_ADDR
- value: {{ .registryAddr }}
+ value: { { .registryAddr } }
- name: DEVBOX_AFFINITY_ENABLE
value: 'true'
- name: MONITOR_URL
diff --git a/frontend/providers/devbox/public/images/iris.svg b/frontend/providers/devbox/public/images/iris.svg
deleted file mode 100644
index 71b8493a516..00000000000
--- a/frontend/providers/devbox/public/images/iris.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
diff --git a/frontend/providers/devbox/utils/adapt.ts b/frontend/providers/devbox/utils/adapt.ts
index 7f9dacd4bea..b4425af7ebd 100644
--- a/frontend/providers/devbox/utils/adapt.ts
+++ b/frontend/providers/devbox/utils/adapt.ts
@@ -80,7 +80,6 @@ export const adaptDevboxDetail = (
xData: new Array(30).fill(0),
yData: new Array(30).fill('0')
},
- networks: devbox.portInfos || [],
lastTerminatedReason:
devbox.status.lastState?.terminated && devbox.status.lastState.terminated.reason === 'Error'
? devbox.status.state.waiting
From f4716fea5e80ceddd508f5b8f6c748fc1bafbb5c Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 6 Nov 2024 14:55:31 +0800
Subject: [PATCH 006/105] feat: db and network basic show
---
extensions/ide/vscode/devbox/package.json | 28 +++
extensions/ide/vscode/devbox/src/api/db.ts | 16 ++
.../ide/vscode/devbox/src/api/devbox.ts | 6 +
extensions/ide/vscode/devbox/src/api/index.ts | 198 +++++++++++++----
.../ide/vscode/devbox/src/api/network.ts | 14 ++
extensions/ide/vscode/devbox/src/api/ssh.ts | 50 +++++
.../devbox/src/commands/remoteConnector.ts | 134 +++++-------
.../ide/vscode/devbox/src/commands/tools.ts | 17 ++
.../vscode/devbox/src/commands/treeview.ts | 5 +-
extensions/ide/vscode/devbox/src/extension.ts | 76 +++----
.../devbox/src/providers/DBViewProvider.ts | 90 ++++++++
.../src/providers/NetworkViewProvider.ts | 89 ++++++++
.../devbox/src/utils/globalStateManager.ts | 63 ++++++
.../ide/vscode/devbox/src/utils/handleUri.ts | 56 +++++
.../devbox/src/utils/remoteSSHConfig.ts | 10 +-
.../app/api/v1/getDBSecretList/route.ts | 205 ++++++++++++++++++
.../app/api/v1/getDevboxDetail/route.ts | 60 ++---
.../devbox/app/api/v1/getNetworkList/route.ts | 65 ++++++
.../providers/devbox/components/IDEButton.tsx | 2 +-
frontend/providers/devbox/constants/db.ts | 28 +++
frontend/providers/devbox/types/cluster.d.ts | 31 +--
frontend/providers/devbox/types/db.d.ts | 3 +
frontend/providers/devbox/types/ingress.d.ts | 3 +-
frontend/providers/devbox/utils/adapt.ts | 9 +-
24 files changed, 1001 insertions(+), 257 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/src/api/db.ts
create mode 100644 extensions/ide/vscode/devbox/src/api/devbox.ts
create mode 100644 extensions/ide/vscode/devbox/src/api/network.ts
create mode 100644 extensions/ide/vscode/devbox/src/api/ssh.ts
create mode 100644 extensions/ide/vscode/devbox/src/commands/tools.ts
create mode 100644 extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
create mode 100644 extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
create mode 100644 extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
create mode 100644 extensions/ide/vscode/devbox/src/utils/handleUri.ts
create mode 100644 frontend/providers/devbox/app/api/v1/getDBSecretList/route.ts
create mode 100644 frontend/providers/devbox/app/api/v1/getNetworkList/route.ts
create mode 100644 frontend/providers/devbox/constants/db.ts
create mode 100644 frontend/providers/devbox/types/db.d.ts
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 0984d1b8efd..51116023733 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -66,6 +66,10 @@
"command": "devboxDashboard.openDevbox",
"title": "Open Devbox",
"icon": "images/open.svg"
+ },
+ {
+ "command": "devbox.openExternalLink",
+ "title": "Devbox:Open in Browser"
}
],
"views": {
@@ -78,6 +82,18 @@
"id": "devboxFeedback",
"name": "Feedback"
}
+ ],
+ "networkView": [
+ {
+ "id": "networkView",
+ "name": "Network"
+ }
+ ],
+ "dbView": [
+ {
+ "id": "dbView",
+ "name": "Database"
+ }
]
},
"viewsContainers": {
@@ -87,6 +103,18 @@
"title": "Devbox",
"icon": "images/explorer.svg"
}
+ ],
+ "panel": [
+ {
+ "id": "networkView",
+ "title": "Network",
+ "icon": "images/network.svg"
+ },
+ {
+ "id": "dbView",
+ "title": "Database",
+ "icon": "images/database.svg"
+ }
]
},
"viewsWelcome": [
diff --git a/extensions/ide/vscode/devbox/src/api/db.ts b/extensions/ide/vscode/devbox/src/api/db.ts
new file mode 100644
index 00000000000..605eddb1ed3
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/api/db.ts
@@ -0,0 +1,16 @@
+import { GET } from './index'
+
+export const getDBList = async () => {
+ const { dbList } = await GET('/api/v1/getDBSecretList')
+ return dbList
+}
+
+export interface DBResponse {
+ dbName: string
+ dbType: string
+ username: string
+ password: string
+ host: string
+ port: number
+ connection: string
+}
diff --git a/extensions/ide/vscode/devbox/src/api/devbox.ts b/extensions/ide/vscode/devbox/src/api/devbox.ts
new file mode 100644
index 00000000000..85a14599dd0
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/api/devbox.ts
@@ -0,0 +1,6 @@
+import { GET } from './index'
+
+export const getDevboxDetail = async () => {
+ const { devbox } = await GET('/api/v1/getDevboxDetail')
+ return devbox
+}
diff --git a/extensions/ide/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
index e634bcbd09f..30d442606fc 100644
--- a/extensions/ide/vscode/devbox/src/api/index.ts
+++ b/extensions/ide/vscode/devbox/src/api/index.ts
@@ -1,50 +1,152 @@
-const fs = require('fs')
-
-export const parseSSHConfig = (configFilePath: string) => {
- return new Promise((resolve, reject) => {
- fs.readFile(configFilePath, 'utf-8', (err: any, data: any) => {
- if (err) {
- return reject(err)
- }
-
- const lines = data.split('\n')
- const devboxList = [] as any[]
- let currentHost = {} as any
- let lastComment = ''
-
- lines.forEach((line: string) => {
- line = line.trim()
-
- if (line.startsWith('#')) {
- // 保存注释,特别是 WorkingDir 注释
- lastComment = line
- if (line.startsWith('# WorkingDir:')) {
- currentHost.remotePath = line.split(':')[1].trim()
- }
- } else if (line.startsWith('Host ')) {
- // 如果当前有主机信息且是 usw.sailos.io,则保存
- if (currentHost.hostName === 'usw.sailos.io') {
- devboxList.push(currentHost)
- }
- // 开始新的主机信息
- currentHost = { host: line.split(' ')[1] }
- } else if (line.startsWith('HostName ')) {
- currentHost.hostName = line.split(' ')[1]
- } else if (line.startsWith('User ')) {
- currentHost.user = line.split(' ')[1]
- } else if (line.startsWith('Port ')) {
- currentHost.port = line.split(' ')[1]
- } else if (line.startsWith('IdentityFile ')) {
- currentHost.identityFile = line.split(' ')[1]
- }
- })
-
- // 最后一个主机信息处理
- if (currentHost.hostName === 'usw.sailos.io') {
- devboxList.push(currentHost)
- }
-
- resolve(devboxList)
- })
+import axios, {
+ InternalAxiosRequestConfig,
+ AxiosHeaders,
+ AxiosResponse,
+ AxiosRequestConfig,
+} from 'axios'
+import { GlobalStateManager } from '../utils/globalStateManager'
+import * as vscode from 'vscode'
+
+const showStatus = (status: number) => {
+ let message = ''
+ switch (status) {
+ case 400:
+ message = 'request error(400)'
+ break
+ case 401:
+ message = 'unauthorized, please login again(401)'
+ break
+ case 403:
+ message = 'access denied(403)'
+ break
+ case 404:
+ message = 'request error(404)'
+ break
+ case 408:
+ message = 'request timeout(408)'
+ break
+ case 500:
+ message = 'server error(500)'
+ break
+ case 501:
+ message = 'service not implemented(501)'
+ break
+ case 502:
+ message = 'network error(502)'
+ break
+ case 503:
+ message = 'service unavailable(503)'
+ break
+ case 504:
+ message = 'network timeout(504)'
+ break
+ case 505:
+ message = 'HTTP version not supported(505)'
+ break
+ default:
+ message = `connection error(${status})!`
+ }
+ return `${message}, please check the network or contact the administrator!`
+}
+
+const request = axios.create({
+ baseURL: 'http://127.0.0.1:3000',
+ withCredentials: true,
+ timeout: 60000,
+})
+
+// request interceptor
+request.interceptors.request.use(
+ (config: InternalAxiosRequestConfig) => {
+ // auto append service prefix
+ if (config.url && !config.url?.startsWith('/api/')) {
+ config.url = '' + config.url
+ }
+ let _headers: AxiosHeaders = config.headers
+
+ //获取token,并将其添加至请求头中
+ const workspaceFolders = vscode.workspace.workspaceFolders
+
+ if (workspaceFolders && workspaceFolders.length > 0) {
+ const workspaceFolder = workspaceFolders[0]
+ const remoteUri = workspaceFolder.uri.authority
+ const devboxId = remoteUri.replace(/^ssh-remote\+/, '') // devbox = sshHostLabel
+ _headers['Authorization'] = encodeURIComponent(
+ GlobalStateManager.getToken(devboxId) || ''
+ )
+ }
+
+ if (!config.headers || config.headers['Content-Type'] === '') {
+ _headers['Content-Type'] = 'application/json'
+ }
+
+ config.headers = _headers
+ return config
+ },
+ (error: any) => {
+ error.data = {}
+ error.data.msg = 'server error, please contact the administrator!'
+ return Promise.resolve(error)
+ }
+)
+
+// response interceptor
+request.interceptors.response.use(
+ (response: AxiosResponse) => {
+ const { status, data } = response
+ if (status < 200 || status >= 300) {
+ return Promise.reject(
+ status + ':' + showStatus(status) + ', ' + typeof data === 'string'
+ ? data
+ : String(data)
+ )
+ }
+
+ const apiResp = data
+ if (apiResp.code < 200 || apiResp.code >= 400) {
+ return Promise.reject(apiResp.code + ':' + apiResp.message)
+ }
+
+ response.data = apiResp.data
+ return response.data
+ },
+ (error: any) => {
+ if (axios.isCancel(error)) {
+ return Promise.reject('cancel request' + String(error))
+ } else {
+ error.errMessage =
+ 'request timeout or server error, please check the network or contact the administrator!'
+ }
+ return Promise.reject(error)
+ }
+)
+
+export function GET(
+ url: string,
+ data?: { [key: string]: any },
+ config?: AxiosRequestConfig
+): Promise {
+ return request.get(url, {
+ params: data,
+ ...config,
+ })
+}
+
+export function POST(
+ url: string,
+ data?: { [key: string]: any },
+ config?: AxiosRequestConfig
+): Promise {
+ return request.post(url, data, config)
+}
+
+export function DELETE(
+ url: string,
+ data?: { [key: string]: any },
+ config?: AxiosRequestConfig
+): Promise {
+ return request.delete(url, {
+ params: data,
+ ...config,
})
}
diff --git a/extensions/ide/vscode/devbox/src/api/network.ts b/extensions/ide/vscode/devbox/src/api/network.ts
new file mode 100644
index 00000000000..dd201a94295
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/api/network.ts
@@ -0,0 +1,14 @@
+import { GET } from './index'
+
+export const getNetworkList = async () => {
+ const { networks } = await GET('/api/v1/getNetworkList')
+ return networks
+}
+
+export interface NetworkResponse {
+ address: string
+ port: number
+ protocol: string
+ name: string
+ namespace: string
+}
diff --git a/extensions/ide/vscode/devbox/src/api/ssh.ts b/extensions/ide/vscode/devbox/src/api/ssh.ts
new file mode 100644
index 00000000000..e634bcbd09f
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/api/ssh.ts
@@ -0,0 +1,50 @@
+const fs = require('fs')
+
+export const parseSSHConfig = (configFilePath: string) => {
+ return new Promise((resolve, reject) => {
+ fs.readFile(configFilePath, 'utf-8', (err: any, data: any) => {
+ if (err) {
+ return reject(err)
+ }
+
+ const lines = data.split('\n')
+ const devboxList = [] as any[]
+ let currentHost = {} as any
+ let lastComment = ''
+
+ lines.forEach((line: string) => {
+ line = line.trim()
+
+ if (line.startsWith('#')) {
+ // 保存注释,特别是 WorkingDir 注释
+ lastComment = line
+ if (line.startsWith('# WorkingDir:')) {
+ currentHost.remotePath = line.split(':')[1].trim()
+ }
+ } else if (line.startsWith('Host ')) {
+ // 如果当前有主机信息且是 usw.sailos.io,则保存
+ if (currentHost.hostName === 'usw.sailos.io') {
+ devboxList.push(currentHost)
+ }
+ // 开始新的主机信息
+ currentHost = { host: line.split(' ')[1] }
+ } else if (line.startsWith('HostName ')) {
+ currentHost.hostName = line.split(' ')[1]
+ } else if (line.startsWith('User ')) {
+ currentHost.user = line.split(' ')[1]
+ } else if (line.startsWith('Port ')) {
+ currentHost.port = line.split(' ')[1]
+ } else if (line.startsWith('IdentityFile ')) {
+ currentHost.identityFile = line.split(' ')[1]
+ }
+ })
+
+ // 最后一个主机信息处理
+ if (currentHost.hostName === 'usw.sailos.io') {
+ devboxList.push(currentHost)
+ }
+
+ resolve(devboxList)
+ })
+ })
+}
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index 82deca87c78..8548c4ce0f5 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -3,8 +3,9 @@ import * as os from 'os'
import * as fs from 'fs'
import * as vscode from 'vscode'
import SSHConfig from 'ssh-config'
-import { Disposable } from '../common/dispose'
import { execSync } from 'child_process'
+
+import { Disposable } from '../common/dispose'
import { modifiedRemoteSSHConfig } from '../utils/remoteSSHConfig'
const defaultSSHConfigPath = path.resolve(os.homedir(), '.ssh/config')
@@ -26,51 +27,6 @@ export class RemoteSSHConnector extends Disposable {
}
}
- private async ensureRemoteSSHExtInstalled(): Promise {
- const isOfficialVscode =
- vscode.env.uriScheme === 'vscode' ||
- vscode.env.uriScheme === 'vscode-insiders'
- if (!isOfficialVscode) {
- return true
- }
-
- const msVscodeRemoteExt = vscode.extensions.getExtension(
- 'ms-vscode-remote.remote-ssh'
- )
- if (msVscodeRemoteExt) {
- return true
- }
-
- const install = 'Install'
- const cancel = 'Cancel'
-
- const action = await vscode.window.showInformationMessage(
- 'Please install "Remote - SSH" extension to connect to a Gitpod workspace.',
- { modal: true },
- install,
- cancel
- )
-
- if (action === cancel) {
- return false
- }
-
- vscode.window.showInformationMessage(
- 'Installing "ms-vscode-remote.remote-ssh" extension'
- )
-
- await vscode.commands.executeCommand(
- 'extension.open',
- 'ms-vscode-remote.remote-ssh'
- )
- await vscode.commands.executeCommand(
- 'workbench.extensions.installExtension',
- 'ms-vscode-remote.remote-ssh'
- )
-
- return true
- }
-
private async connectRemoteSSH(args: {
sshDomain: string
sshPort: string
@@ -83,27 +39,21 @@ export class RemoteSSHConnector extends Disposable {
const { sshDomain, sshPort, base64PrivateKey, sshHostLabel, workingDir } =
args
- const randomSuffix = Math.random().toString(36).substring(2, 15)
- const newSshHostLabel = sshHostLabel.replace(/\//g, '-')
- const suffixSSHHostLabel = `${newSshHostLabel}-${randomSuffix}`
-
- modifiedRemoteSSHConfig(newSshHostLabel, suffixSSHHostLabel)
+ modifiedRemoteSSHConfig(sshHostLabel)
const sshUser = sshDomain.split('@')[0]
const sshHost = sshDomain.split('@')[1]
- // sshHostLabel: usw.sailos.io/ns-admin/devbox-1
- // identityFileSSHLabel: usw.sailos.io_ns-admin_devbox-1
- const identityFileSSHLabel = sshHostLabel.replace(/\//g, '_')
+ // sshHostLabel: usw.sailos.io_ns-admin_devbox-1
const normalPrivateKey = Buffer.from(base64PrivateKey, 'base64')
const sshConfig = new SSHConfig().append({
- Host: suffixSSHHostLabel,
+ Host: sshHostLabel,
HostName: sshHost,
User: sshUser,
Port: sshPort,
- IdentityFile: `~/.ssh/sealos/${identityFileSSHLabel}`,
+ IdentityFile: `~/.ssh/sealos/${sshHostLabel}`,
IdentitiesOnly: 'yes',
StrictHostKeyChecking: 'no',
})
@@ -116,41 +66,35 @@ export class RemoteSSHConnector extends Disposable {
recursive: true,
})
fs.writeFileSync(defaultSSHConfigPath, '', 'utf8')
- // 设置 .ssh/config 文件的权限
+ // .ssh/config authority
if (os.platform() === 'win32') {
- // Windows 系统
+ // Windows
execSync(`icacls "${defaultSSHConfigPath}" /inheritance:r`)
execSync(
`icacls "${defaultSSHConfigPath}" /grant:r ${process.env.USERNAME}:F`
)
execSync(`icacls "${defaultSSHConfigPath}" /remove:g everyone`)
} else {
- // Unix-like 系统 (Mac, Linux)
+ // Unix-like system (Mac, Linux)
execSync(`chmod 600 "${defaultSSHConfigPath}"`)
}
}
- // 2. ensure .ssh/sealos/devbox_config exists and has the correct jurisdiction
+ // 2. ensure .ssh/sealos/devbox_config exists and has the correct authority
if (!fs.existsSync(defaultDevboxSSHConfigPath)) {
fs.mkdirSync(path.resolve(os.homedir(), '.ssh/sealos'), {
recursive: true,
})
fs.writeFileSync(defaultDevboxSSHConfigPath, '', 'utf8')
- // 针对mac和windows区别处理
if (os.platform() === 'win32') {
- // 移除继承的权限
execSync(`icacls "${defaultDevboxSSHConfigPath}" /inheritance:r`)
- // 为当前用户授予完全控制权限
execSync(
`icacls "${defaultDevboxSSHConfigPath}" /grant:r ${process.env.USERNAME}:F`
)
- // 确保其他用户无法访问
execSync(`icacls "${defaultDevboxSSHConfigPath}" /remove:g everyone`)
} else {
- // 设置文件权限为 600(仅文件所有者可读写)
execSync(`chmod 600 "${defaultDevboxSSHConfigPath}"`)
}
}
-
// 3. ensure .ssh/config includes .ssh/sealos/devbox_config
const existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf8')
if (!existingSSHConfig.includes('Include ~/.ssh/sealos/devbox_config')) {
@@ -174,7 +118,7 @@ export class RemoteSSHConnector extends Disposable {
if (
line.startsWith('Host') &&
- line.substring(5).trim().startsWith(newSshHostLabel)
+ line.substring(5).trim().startsWith(sshHostLabel)
) {
// 如果当前行是要删除的 Host,开始跳过
skipLines = true
@@ -219,20 +163,14 @@ export class RemoteSSHConnector extends Disposable {
// create sealos privateKey file in .ssh/sealos
try {
- const sshKeyPath = defaultSSHKeyPath + `/${identityFileSSHLabel}`
+ const sshKeyPath = defaultSSHKeyPath + `/${sshHostLabel}`
fs.writeFileSync(sshKeyPath, normalPrivateKey)
- // 针对mac和windows区别处理
if (os.platform() === 'win32') {
- // noscan
- // 移除继承的权限
execSync(`icacls "${sshKeyPath}" /inheritance:r`)
- // 为当前用户授予完全控制权限
execSync(`icacls "${sshKeyPath}" /grant:r ${process.env.USERNAME}:F`)
- // 确保其他用户无法访问
execSync(`icacls "${sshKeyPath}" /remove:g everyone`)
} else {
- // 设置文件权限为 600(仅文件所有者可读写)
execSync(`chmod 600 "${sshKeyPath}"`)
}
} catch (error) {
@@ -245,7 +183,7 @@ export class RemoteSSHConnector extends Disposable {
await vscode.commands.executeCommand(
'vscode.openFolder',
vscode.Uri.parse(
- `vscode-remote://ssh-remote+${suffixSSHHostLabel}${workingDir}`
+ `vscode-remote://ssh-remote+${sshHostLabel}${workingDir}`
),
{
forceNewWindow: true,
@@ -255,4 +193,50 @@ export class RemoteSSHConnector extends Disposable {
`Connected to ${sshHost} with port ${sshPort} successfully.`
)
}
+
+ private async ensureRemoteSSHExtInstalled(): Promise {
+ const isOfficialVscode =
+ vscode.env.uriScheme === 'vscode' ||
+ vscode.env.uriScheme === 'vscode-insiders' ||
+ vscode.env.uriScheme === 'cursor'
+ if (!isOfficialVscode) {
+ return true
+ }
+
+ const msVscodeRemoteExt = vscode.extensions.getExtension(
+ 'ms-vscode-remote.remote-ssh'
+ )
+ if (msVscodeRemoteExt) {
+ return true
+ }
+
+ const install = 'Install'
+ const cancel = 'Cancel'
+
+ const action = await vscode.window.showInformationMessage(
+ 'Please install "Remote - SSH" extension to connect to a Gitpod workspace.',
+ { modal: true },
+ install,
+ cancel
+ )
+
+ if (action === cancel) {
+ return false
+ }
+
+ vscode.window.showInformationMessage(
+ 'Installing "ms-vscode-remote.remote-ssh" extension'
+ )
+
+ await vscode.commands.executeCommand(
+ 'extension.open',
+ 'ms-vscode-remote.remote-ssh'
+ )
+ await vscode.commands.executeCommand(
+ 'workbench.extensions.installExtension',
+ 'ms-vscode-remote.remote-ssh'
+ )
+
+ return true
+ }
}
diff --git a/extensions/ide/vscode/devbox/src/commands/tools.ts b/extensions/ide/vscode/devbox/src/commands/tools.ts
new file mode 100644
index 00000000000..a94ac643bf8
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/commands/tools.ts
@@ -0,0 +1,17 @@
+import * as vscode from 'vscode'
+
+import { Disposable } from '../common/dispose'
+
+export class ToolCommands extends Disposable {
+ constructor(context: vscode.ExtensionContext) {
+ super()
+ if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
+ // open external link
+ this._register(
+ vscode.commands.registerCommand('devbox.openExternalLink', (args) => {
+ vscode.env.openExternal(vscode.Uri.parse(args))
+ })
+ )
+ }
+ }
+}
diff --git a/extensions/ide/vscode/devbox/src/commands/treeview.ts b/extensions/ide/vscode/devbox/src/commands/treeview.ts
index 7071e122faf..73d318b9701 100644
--- a/extensions/ide/vscode/devbox/src/commands/treeview.ts
+++ b/extensions/ide/vscode/devbox/src/commands/treeview.ts
@@ -2,7 +2,7 @@ import path from 'path'
import * as os from 'os'
import * as vscode from 'vscode'
-import { parseSSHConfig } from '../api'
+import { parseSSHConfig } from '../api/ssh'
import { Disposable } from '../common/dispose'
import { DevboxListItem } from '../types/devbox'
@@ -89,7 +89,6 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
)
parseSSHConfig(defaultSSHConfigPath).then((data) => {
- console.log(data)
this.treeData = data as DevboxListItem[]
this._onDidChangeTreeData.fire(undefined)
})
@@ -120,8 +119,6 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
return
}
- console.log(item.host)
-
vscode.commands.executeCommand(
'vscode.openFolder',
vscode.Uri.parse(
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index a9de94050ce..d2be9dee5c8 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -3,12 +3,21 @@ import * as vscode from 'vscode'
import { Webview } from './commands/webview'
import { RemoteSSHConnector } from './commands/remoteConnector'
import { TreeView } from './commands/treeview'
+import { UriHandler } from './utils/handleUri'
+import { NetworkViewProvider } from './providers/NetworkViewProvider'
+import { DBViewProvider } from './providers/DbViewProvider'
+import { GlobalStateManager } from './utils/globalStateManager'
+import { ToolCommands } from './commands/tools'
export async function activate(context: vscode.ExtensionContext) {
// webview
const webview = new Webview(context)
context.subscriptions.push(webview)
+ // tools
+ const tools = new ToolCommands(context)
+ context.subscriptions.push(tools)
+
// remote connector
const remoteConnector = new RemoteSSHConnector(context)
context.subscriptions.push(remoteConnector)
@@ -17,54 +26,37 @@ export async function activate(context: vscode.ExtensionContext) {
const treeView = new TreeView(context)
context.subscriptions.push(treeView)
- const handleUri = (uri: vscode.Uri) => {
- console.log('uri', uri)
-
- if (
- uri.scheme !== 'vscode' &&
- uri.scheme !== 'cursor' &&
- uri.scheme !== 'vscode-insiders'
- ) {
- return
- }
+ // token manager
+ GlobalStateManager.init(context)
- const queryParams = new URLSearchParams(uri.query)
-
- const sshDomain = queryParams.get('sshDomain')
- const sshPort = queryParams.get('sshPort')
- const base64PrivateKey = queryParams.get('base64PrivateKey')
- const workingDir = queryParams.get('workingDir')
- const sshHostLabel = queryParams.get('sshHostLabel')
+ // network view
+ const networkViewProvider = new NetworkViewProvider()
+ context.subscriptions.push(
+ vscode.window.registerTreeDataProvider('networkView', networkViewProvider)
+ )
+ context.subscriptions.push(
+ vscode.workspace.onDidChangeWorkspaceFolders(() => {
+ networkViewProvider.refresh()
+ })
+ )
- if (sshPort === '0') {
- vscode.window.showInformationMessage(
- `SSH Port is not correct,maybe your devbox's nodeport is over the limit`
- )
- return
- }
+ // db view
+ const dbViewProvider = new DBViewProvider()
+ context.subscriptions.push(
+ vscode.window.registerTreeDataProvider('dbView', dbViewProvider)
+ )
+ context.subscriptions.push(
+ vscode.workspace.onDidChangeWorkspaceFolders(() => {
+ dbViewProvider.refresh()
+ })
+ )
- {
- if (
- sshDomain &&
- sshPort &&
- base64PrivateKey &&
- sshHostLabel &&
- workingDir
- ) {
- vscode.commands.executeCommand('devbox.connectRemoteSSH', {
- sshDomain,
- sshPort,
- base64PrivateKey,
- sshHostLabel,
- workingDir,
- })
- }
- }
- }
+ // handle uri
+ const uriHandler = new UriHandler()
context.subscriptions.push(
vscode.window.registerUriHandler({
- handleUri,
+ handleUri: (uri) => uriHandler.handle(uri),
})
)
}
diff --git a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
new file mode 100644
index 00000000000..d7dfa47ad44
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
@@ -0,0 +1,90 @@
+import * as vscode from 'vscode'
+import { getDBList, DBResponse } from '../api/db'
+
+interface Database {
+ dbType: string
+ username: string
+ password: string
+ host: string
+ port: number
+ connection: string
+}
+
+export class DBViewProvider implements vscode.TreeDataProvider {
+ private _onDidChangeTreeData: vscode.EventEmitter =
+ new vscode.EventEmitter()
+ readonly onDidChangeTreeData: vscode.Event =
+ this._onDidChangeTreeData.event
+ constructor() {
+ this.init()
+ }
+ private databases: Database[] = []
+
+ private async init() {
+ const dbList = await getDBList()
+ this.databases = dbList.map((db: DBResponse) => ({
+ dbName: db.dbName,
+ dbType: db.dbType,
+ username: db.username,
+ password: db.password,
+ host: db.host,
+ port: db.port,
+ connection: db.connection,
+ }))
+ this.refresh()
+ }
+
+ refresh(): void {
+ this._onDidChangeTreeData.fire(undefined)
+ }
+
+ getTreeItem(element: DatabaseItem): vscode.TreeItem {
+ return element
+ }
+
+ async getChildren(element?: DatabaseItem): Promise {
+ if (!element) {
+ const items: DatabaseItem[] = []
+ const remoteName = vscode.env.remoteName
+
+ if (!remoteName) {
+ return [
+ new DatabaseItem(
+ 'Not connected to the remote environment',
+ 'no-remote'
+ ),
+ ]
+ }
+
+ items.push(
+ new DatabaseItem(
+ `${'DBType'.padEnd(15)}${'Username'.padEnd(15)}${'Password'.padEnd(
+ 15
+ )}${'Host'.padEnd(25)}${'Port'.padEnd(10)}Connection`,
+ 'header'
+ )
+ )
+
+ this.databases.forEach((database) => {
+ const label = `${database.dbType.padEnd(15)}${database.username.padEnd(
+ 15
+ )}${database.password.padEnd(15)}${database.host.padEnd(
+ 20
+ )}${database.port.toString().padEnd(10)}${database.connection}`
+ items.push(new DatabaseItem(label, 'database'))
+ })
+
+ return items
+ }
+ return []
+ }
+}
+
+class DatabaseItem extends vscode.TreeItem {
+ constructor(
+ public override readonly label: string,
+ public override readonly contextValue: string
+ ) {
+ super(label, vscode.TreeItemCollapsibleState.None)
+ }
+}
diff --git a/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
new file mode 100644
index 00000000000..d1ef63fc3e2
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
@@ -0,0 +1,89 @@
+import * as vscode from 'vscode'
+import { getNetworkList, NetworkResponse } from '../api/network'
+
+interface Network {
+ address: string
+ port: number
+ protocol: string
+}
+
+export class NetworkViewProvider
+ implements vscode.TreeDataProvider
+{
+ private _onDidChangeTreeData: vscode.EventEmitter =
+ new vscode.EventEmitter()
+ readonly onDidChangeTreeData: vscode.Event =
+ this._onDidChangeTreeData.event
+ constructor() {
+ this.init()
+ }
+ private networks: Network[] = []
+
+ private async init() {
+ const networks = await getNetworkList()
+ this.networks = networks.map((network: NetworkResponse) => ({
+ address: network.address,
+ port: network.port,
+ protocol: network.protocol,
+ }))
+ this.refresh()
+ }
+
+ refresh(): void {
+ this._onDidChangeTreeData.fire(undefined)
+ }
+
+ getTreeItem(element: NetworkItem): vscode.TreeItem {
+ return element
+ }
+
+ async getChildren(element?: NetworkItem): Promise {
+ if (!element) {
+ const items: NetworkItem[] = []
+ const remoteName = vscode.env.remoteName
+
+ if (!remoteName) {
+ return [
+ new NetworkItem(
+ 'Not connected to the remote environment',
+ 'no-remote'
+ ),
+ ]
+ }
+
+ items.push(
+ new NetworkItem(
+ `${'Port'.padEnd(40)}${'Protocol'.padEnd(60)}Address`,
+ 'header'
+ )
+ )
+
+ this.networks.forEach((network) => {
+ const label = `${network.port
+ .toString()
+ .padEnd(38)}${network.protocol.padEnd(60)}${network.address}`
+ items.push(new NetworkItem(label, 'network'))
+ })
+
+ return items
+ }
+ return []
+ }
+}
+
+class NetworkItem extends vscode.TreeItem {
+ constructor(
+ public override readonly label: string,
+ public override readonly contextValue: string
+ ) {
+ super(label, vscode.TreeItemCollapsibleState.None)
+
+ if (contextValue === 'network') {
+ this.command = {
+ command: 'devbox.openExternalLink',
+ title: 'Devbox: Open in Browser',
+ arguments: [`https://${label.split(/\s+/).pop() || ''}`],
+ }
+ }
+ }
+}
diff --git a/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts b/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
new file mode 100644
index 00000000000..6164c6a6833
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
@@ -0,0 +1,63 @@
+import * as vscode from 'vscode'
+
+interface DevboxGlobalState {
+ token: string
+ workDir: string
+}
+
+export class GlobalStateManager {
+ private static context: vscode.ExtensionContext
+
+ static init(context: vscode.ExtensionContext) {
+ GlobalStateManager.context = context
+ }
+
+ // devboxId = `sshDomain_namespace_devboxName` = sshHostLabel
+
+ // devboxId:{
+ // token: string
+ // workDir: string
+ // }
+ static getToken(devboxId: string): string | undefined {
+ const state = (GlobalStateManager.context.globalState.get(
+ devboxId
+ ) as DevboxGlobalState) || {
+ token: '',
+ workDir: '',
+ }
+ return state.token
+ }
+ static getWorkDir(devboxId: string): string | undefined {
+ const state = (GlobalStateManager.context.globalState.get(
+ devboxId
+ ) as DevboxGlobalState) || {
+ token: '',
+ workDir: '',
+ }
+ return state.workDir
+ }
+
+ static setToken(devboxId: string, token: string) {
+ const state =
+ (GlobalStateManager.context.globalState.get(
+ devboxId
+ ) as DevboxGlobalState) || {}
+ const newState = {
+ ...state,
+ token,
+ }
+ GlobalStateManager.context.globalState.update(devboxId, newState)
+ }
+
+ static setWorkDir(devboxId: string, workDir: string) {
+ const state =
+ (GlobalStateManager.context.globalState.get(
+ devboxId
+ ) as DevboxGlobalState) || {}
+ const newState = {
+ ...state,
+ workDir,
+ }
+ GlobalStateManager.context.globalState.update(devboxId, newState)
+ }
+}
diff --git a/extensions/ide/vscode/devbox/src/utils/handleUri.ts b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
new file mode 100644
index 00000000000..898c0800ca4
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
@@ -0,0 +1,56 @@
+import * as vscode from 'vscode'
+import { GlobalStateManager } from './globalStateManager'
+
+export class UriHandler {
+ constructor() {}
+
+ public handle(uri: vscode.Uri): void {
+ if (
+ uri.scheme !== 'vscode' &&
+ uri.scheme !== 'cursor' &&
+ uri.scheme !== 'vscode-insiders'
+ ) {
+ return
+ }
+
+ const queryParams = new URLSearchParams(uri.query)
+ const params = this.extractParams(queryParams)
+
+ if (params.token && params.sshHostLabel) {
+ GlobalStateManager.setToken(params.sshHostLabel, params.token)
+ }
+
+ if (params.sshPort === '0') {
+ vscode.window.showInformationMessage(
+ `SSH Port is not correct,maybe your devbox's nodeport is over the limit`
+ )
+ return
+ }
+
+ if (this.validateParams(params)) {
+ vscode.commands.executeCommand('devbox.connectRemoteSSH', params)
+ }
+ }
+
+ private extractParams(queryParams: URLSearchParams) {
+ return {
+ sshDomain: queryParams.get('sshDomain'),
+ sshPort: queryParams.get('sshPort'),
+ base64PrivateKey: queryParams.get('base64PrivateKey'),
+ workingDir: queryParams.get('workingDir'),
+ sshHostLabel: queryParams.get('sshHostLabel'), // usw.sailos.io_ns-admin_devbox-1
+ token: queryParams.get('token'),
+ }
+ }
+
+ private validateParams(params: any): boolean {
+ return !!(
+ params.sshDomain &&
+ params.sshPort &&
+ params.base64PrivateKey &&
+ params.sshHostLabel &&
+ params.workingDir &&
+ params.authToken
+ )
+ }
+}
diff --git a/extensions/ide/vscode/devbox/src/utils/remoteSSHConfig.ts b/extensions/ide/vscode/devbox/src/utils/remoteSSHConfig.ts
index 8d847840be4..857e2f9d55e 100644
--- a/extensions/ide/vscode/devbox/src/utils/remoteSSHConfig.ts
+++ b/extensions/ide/vscode/devbox/src/utils/remoteSSHConfig.ts
@@ -1,16 +1,12 @@
import * as vscode from 'vscode'
// update Remote-SSH config
-export const modifiedRemoteSSHConfig = async (
- sshHostLabel: string,
- suffixSshHostLabel: string
-) => {
+export const modifiedRemoteSSHConfig = async (sshHostLabel: string) => {
const existingSSHHostPlatforms = vscode.workspace
.getConfiguration('remote.SSH')
.get<{ [host: string]: string }>('remotePlatform', {})
- console.log('existingSSHHostPlatforms', existingSSHHostPlatforms)
- // delete repeated remotePlatform by sshDomain/namespace/devboxName
+ // delete repeated remotePlatform by sshDomain_namespace_devboxName
const newSSHHostPlatforms = Object.keys(existingSSHHostPlatforms).reduce(
(acc: { [host: string]: string }, host: string) => {
if (host.startsWith(sshHostLabel)) {
@@ -22,7 +18,7 @@ export const modifiedRemoteSSHConfig = async (
{}
)
// add new ssh host label
- newSSHHostPlatforms[suffixSshHostLabel] = 'linux'
+ newSSHHostPlatforms[sshHostLabel] = 'linux'
await vscode.workspace
.getConfiguration('remote.SSH')
diff --git a/frontend/providers/devbox/app/api/v1/getDBSecretList/route.ts b/frontend/providers/devbox/app/api/v1/getDBSecretList/route.ts
new file mode 100644
index 00000000000..d01e397a119
--- /dev/null
+++ b/frontend/providers/devbox/app/api/v1/getDBSecretList/route.ts
@@ -0,0 +1,205 @@
+import { getPayloadWithoutVerification, verifyToken } from '@/services/backend/auth'
+import { getK8s } from '@/services/backend/kubernetes'
+import { jsonRes } from '@/services/backend/response'
+import type { DBType } from '@/types/db'
+import { DBTypeEnum } from '@/constants/db'
+import { NextRequest } from 'next/server'
+import { KbPgClusterType } from '@/types/cluster'
+import { adaptDBListItem } from '@/utils/adapt'
+
+export type SecretResponse = {
+ username: string
+ password: string
+ host: string
+ port: string
+ connection: string
+}
+
+const base = {
+ passwordKey: 'password',
+ usernameKey: 'username',
+ portKey: 'port',
+ hostKey: 'host'
+}
+
+const dbTypeMap = {
+ [DBTypeEnum.postgresql]: {
+ ...base,
+ connectKey: 'postgresql'
+ },
+ [DBTypeEnum.mongodb]: {
+ ...base,
+ connectKey: 'mongodb'
+ },
+ [DBTypeEnum.mysql]: {
+ ...base,
+ connectKey: 'mysql'
+ },
+ [DBTypeEnum.redis]: {
+ ...base,
+ connectKey: 'redis'
+ },
+ [DBTypeEnum.kafka]: {
+ ...base,
+ connectKey: 'kafka',
+ portKey: 'endpoint',
+ hostKey: 'endpoint'
+ },
+ [DBTypeEnum.qdrant]: {
+ ...base,
+ connectKey: 'qdrant'
+ },
+ [DBTypeEnum.nebula]: {
+ ...base,
+ connectKey: 'nebula'
+ },
+ [DBTypeEnum.weaviate]: {
+ ...base,
+ connectKey: 'weaviate'
+ },
+ [DBTypeEnum.milvus]: {
+ ...base,
+ portKey: 'port',
+ hostKey: 'host',
+ connectKey: 'milvus'
+ }
+}
+
+const buildConnectionInfo = (
+ dbType: DBType,
+ username: string,
+ password: string,
+ host: string,
+ port: string,
+ namespace: string
+) => {
+ if (dbTypeMap[dbType].connectKey === 'milvus') {
+ return {
+ connection: `${host}:${port}`
+ }
+ } else if (dbTypeMap[dbType].connectKey === 'kafka') {
+ const kafkaHost = port.split(':')[0].replace('-server', '-broker')
+ const kafkaPort = port.split(':')[1]
+ const host = kafkaHost + '.' + namespace + '.svc'
+
+ return {
+ host,
+ port: kafkaPort,
+ connection: `${host}:${kafkaPort}`
+ }
+ } else {
+ return {
+ connection: `${dbTypeMap[dbType].connectKey}://${username}:${password}@${host}:${port}`
+ }
+ }
+}
+
+export async function GET(req: NextRequest) {
+ try {
+ const { payload, token } = getPayloadWithoutVerification(req.headers)
+ if (!payload || !token) {
+ return jsonRes({
+ code: 401,
+ error: 'Unauthorized'
+ })
+ }
+ const devboxName = payload.devboxName
+ const namespace = payload.namespace
+
+ const { k8sCore, k8sCustomObjects } = await getK8s({
+ kubeconfig:
+ process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_MOCK_USER || '' : '',
+ useDefaultConfig: process.env.NODE_ENV !== 'development'
+ })
+
+ const response = await k8sCore.readNamespacedSecret(devboxName, namespace)
+
+ const jwtSecret = Buffer.from(
+ response.body.data?.['SEALOS_DEVBOX_JWT_SECRET'] as string,
+ 'base64'
+ ).toString('utf-8')
+
+ if (!verifyToken(token, jwtSecret)) {
+ return jsonRes({
+ code: 401,
+ error: 'Unauthorized'
+ })
+ }
+
+ const clustersResult = await k8sCustomObjects.listNamespacedCustomObject(
+ 'apps.kubeblocks.io',
+ 'v1alpha1',
+ namespace,
+ 'clusters'
+ )
+ const clusters = (clustersResult.body as { items: KbPgClusterType[] }).items.map(
+ adaptDBListItem
+ )
+
+ const dbList = clusters.map(async (cluster) => {
+ const dbName = cluster.name
+ const dbType = cluster.dbType
+ const secretName = dbName + '-conn-credential'
+
+ const secret = await k8sCore.readNamespacedSecret(secretName, namespace)
+
+ if (!secret.body?.data) {
+ return jsonRes({
+ code: 500,
+ message: 'secret is empty'
+ })
+ }
+
+ const username = Buffer.from(
+ secret.body.data[dbTypeMap[dbType].usernameKey] || '',
+ 'base64'
+ ).toString('utf-8')
+
+ const password = Buffer.from(
+ secret.body.data[dbTypeMap[dbType].passwordKey] || '',
+ 'base64'
+ ).toString('utf-8')
+
+ const hostKey = Buffer.from(
+ secret.body.data[dbTypeMap[dbType].hostKey] || '',
+ 'base64'
+ ).toString('utf-8')
+
+ const host = hostKey.includes('.svc') ? hostKey : hostKey + `.${namespace}.svc`
+
+ const port = Buffer.from(
+ secret.body.data[dbTypeMap[dbType].portKey] || '',
+ 'base64'
+ ).toString('utf-8')
+
+ const connectionInfo = buildConnectionInfo(dbType, username, password, host, port, namespace)
+
+ const data = {
+ dbName,
+ dbType,
+ username,
+ password,
+ host,
+ port,
+ ...connectionInfo
+ }
+
+ return data
+ })
+
+ const dbListResult = await Promise.all(dbList)
+
+ console.log('dbListResult', dbListResult)
+
+ return jsonRes({
+ data: {
+ dbList: dbListResult
+ }
+ })
+ } catch (err: any) {
+ return jsonRes({
+ code: 500,
+ error: err
+ })
+ }
+}
diff --git a/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts b/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts
index e49e5527581..967e7ce9bc1 100644
--- a/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts
+++ b/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts
@@ -1,12 +1,10 @@
import { NextRequest } from 'next/server'
import { KBDevboxType } from '@/types/k8s'
-import { devboxKey } from '@/constants/devbox'
-import { KbPgClusterType } from '@/types/cluster'
import { jsonRes } from '@/services/backend/response'
import { getK8s } from '@/services/backend/kubernetes'
import { getPayloadWithoutVerification, verifyToken } from '@/services/backend/auth'
-import { adaptDBListItem, adaptDevboxListItem, adaptIngressListItem } from '@/utils/adapt'
+import { adaptDevboxListItem } from '@/utils/adapt'
export const dynamic = 'force-dynamic'
@@ -23,7 +21,9 @@ export async function GET(req: NextRequest) {
const namespace = payload.namespace
const { k8sCore, k8sCustomObjects, k8sNetworkingApp } = await getK8s({
- useDefaultConfig: true
+ kubeconfig:
+ process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_MOCK_USER || '' : '',
+ useDefaultConfig: process.env.NODE_ENV !== 'development'
})
const response = await k8sCore.readNamespacedSecret(devboxName, namespace)
@@ -40,53 +40,19 @@ export async function GET(req: NextRequest) {
})
}
- const results = await Promise.allSettled([
- k8sCustomObjects.getNamespacedCustomObject(
- 'devbox.sealos.io',
- 'v1alpha1',
- namespace,
- 'devboxes',
- devboxName
- ),
- k8sCustomObjects.listNamespacedCustomObject(
- 'apps.kubeblocks.io',
- 'v1alpha1',
- namespace,
- 'clusters'
- ),
- k8sNetworkingApp.listNamespacedIngress(
- namespace,
- undefined,
- undefined,
- undefined,
- undefined,
- `${devboxKey}=${devboxName}`
- )
- ])
+ const devboxResult = await k8sCustomObjects.getNamespacedCustomObject(
+ 'devbox.sealos.io',
+ 'v1alpha1',
+ namespace,
+ 'devboxes',
+ devboxName
+ )
- const [devboxResult, clustersResult, ingressesResult] = results
-
- let devbox, clusters, ingresses
-
- if (devboxResult.status === 'fulfilled') {
- devbox = adaptDevboxListItem(devboxResult.value.body as KBDevboxType)
- }
-
- if (clustersResult.status === 'fulfilled') {
- clusters = (clustersResult.value.body as { items: KbPgClusterType[] }).items.map(
- adaptDBListItem
- )
- }
-
- if (ingressesResult.status === 'fulfilled') {
- ingresses = ingressesResult.value.body.items.map(adaptIngressListItem)
- }
+ const devbox = adaptDevboxListItem(devboxResult.body as KBDevboxType)
return jsonRes({
data: {
- devbox,
- clusters,
- ingresses
+ devbox
}
})
} catch (err: any) {
diff --git a/frontend/providers/devbox/app/api/v1/getNetworkList/route.ts b/frontend/providers/devbox/app/api/v1/getNetworkList/route.ts
new file mode 100644
index 00000000000..ae4dd1e9db5
--- /dev/null
+++ b/frontend/providers/devbox/app/api/v1/getNetworkList/route.ts
@@ -0,0 +1,65 @@
+import { NextRequest } from 'next/server'
+
+import { devboxKey } from '@/constants/devbox'
+import { jsonRes } from '@/services/backend/response'
+import { getK8s } from '@/services/backend/kubernetes'
+import { getPayloadWithoutVerification, verifyToken } from '@/services/backend/auth'
+import { adaptIngressListItem } from '@/utils/adapt'
+
+export const dynamic = 'force-dynamic'
+
+export async function GET(req: NextRequest) {
+ try {
+ const { payload, token } = getPayloadWithoutVerification(req.headers)
+ if (!payload || !token) {
+ return jsonRes({
+ code: 401,
+ error: 'Unauthorized'
+ })
+ }
+ const devboxName = payload.devboxName
+ const namespace = payload.namespace
+
+ const { k8sCore, k8sCustomObjects, k8sNetworkingApp } = await getK8s({
+ kubeconfig:
+ process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_MOCK_USER || '' : '',
+ useDefaultConfig: process.env.NODE_ENV !== 'development'
+ })
+
+ const response = await k8sCore.readNamespacedSecret(devboxName, namespace)
+
+ const jwtSecret = Buffer.from(
+ response.body.data?.['SEALOS_DEVBOX_JWT_SECRET'] as string,
+ 'base64'
+ ).toString('utf-8')
+
+ if (!verifyToken(token, jwtSecret)) {
+ return jsonRes({
+ code: 401,
+ error: 'Unauthorized'
+ })
+ }
+
+ const ingressesResult = await k8sNetworkingApp.listNamespacedIngress(
+ namespace,
+ undefined,
+ undefined,
+ undefined,
+ undefined,
+ `${devboxKey}=${devboxName}`
+ )
+
+ const networks = ingressesResult.body.items.map(adaptIngressListItem)
+
+ return jsonRes({
+ data: {
+ networks
+ }
+ })
+ } catch (err: any) {
+ return jsonRes({
+ code: 500,
+ error: err?.body || err
+ })
+ }
+}
diff --git a/frontend/providers/devbox/components/IDEButton.tsx b/frontend/providers/devbox/components/IDEButton.tsx
index 11c1a4fcf35..70e0da162b2 100644
--- a/frontend/providers/devbox/components/IDEButton.tsx
+++ b/frontend/providers/devbox/components/IDEButton.tsx
@@ -81,7 +81,7 @@ const IDEButton = ({
)}&sshPort=${encodeURIComponent(sshPort)}&base64PrivateKey=${encodeURIComponent(
base64PrivateKey
)}&sshHostLabel=${encodeURIComponent(
- `${env.sealosDomain}-${env.namespace}-${devboxName}`
+ `${env.sealosDomain}_${env.namespace}_${devboxName}`
)}&workingDir=${encodeURIComponent(workingDir)}&token=${encodeURIComponent(token)}`
window.location.href = fullUri
diff --git a/frontend/providers/devbox/constants/db.ts b/frontend/providers/devbox/constants/db.ts
new file mode 100644
index 00000000000..8623fa9aafa
--- /dev/null
+++ b/frontend/providers/devbox/constants/db.ts
@@ -0,0 +1,28 @@
+export enum DBTypeEnum {
+ postgresql = 'postgresql',
+ mongodb = 'mongodb',
+ mysql = 'apecloud-mysql',
+ redis = 'redis',
+ kafka = 'kafka',
+ qdrant = 'qdrant',
+ nebula = 'nebula',
+ weaviate = 'weaviate',
+ milvus = 'milvus'
+}
+
+export enum DBStatusEnum {
+ Creating = 'Creating',
+ Starting = 'Starting',
+ Stopping = 'Stopping',
+ Stopped = 'Stopped',
+ Running = 'Running',
+ Updating = 'Updating',
+ SpecUpdating = 'SpecUpdating',
+ Rebooting = 'Rebooting',
+ Upgrade = 'Upgrade',
+ VerticalScaling = 'VerticalScaling',
+ VolumeExpanding = 'VolumeExpanding',
+ Failed = 'Failed',
+ UnKnow = 'UnKnow',
+ Deleting = 'Deleting'
+}
diff --git a/frontend/providers/devbox/types/cluster.d.ts b/frontend/providers/devbox/types/cluster.d.ts
index bf68c14030d..47d9932fe21 100644
--- a/frontend/providers/devbox/types/cluster.d.ts
+++ b/frontend/providers/devbox/types/cluster.d.ts
@@ -1,31 +1,4 @@
-export enum DBTypeEnum {
- postgresql = 'postgresql',
- mongodb = 'mongodb',
- mysql = 'apecloud-mysql',
- redis = 'redis',
- kafka = 'kafka',
- qdrant = 'qdrant',
- nebula = 'nebula',
- weaviate = 'weaviate',
- milvus = 'milvus'
-}
-
-export enum DBStatusEnum {
- Creating = 'Creating',
- Starting = 'Starting',
- Stopping = 'Stopping',
- Stopped = 'Stopped',
- Running = 'Running',
- Updating = 'Updating',
- SpecUpdating = 'SpecUpdating',
- Rebooting = 'Rebooting',
- Upgrade = 'Upgrade',
- VerticalScaling = 'VerticalScaling',
- VolumeExpanding = 'VolumeExpanding',
- Failed = 'Failed',
- UnKnow = 'UnKnow',
- Deleting = 'Deleting'
-}
+import { DBType } from './db'
export type KbPgClusterType = {
apiVersion: 'apps.kubeblocks.io/v1alpha1'
@@ -97,7 +70,7 @@ export interface KubeBlockClusterStatus {
export interface DBListItemType {
id: string
name: string
- dbType: string
+ dbType: DBType
createTime: string
cpu: number
memory: number
diff --git a/frontend/providers/devbox/types/db.d.ts b/frontend/providers/devbox/types/db.d.ts
new file mode 100644
index 00000000000..242746a3321
--- /dev/null
+++ b/frontend/providers/devbox/types/db.d.ts
@@ -0,0 +1,3 @@
+import { DBTypeEnum } from '@/constants/db'
+
+export type DBType = `${DBTypeEnum}`
diff --git a/frontend/providers/devbox/types/ingress.d.ts b/frontend/providers/devbox/types/ingress.d.ts
index 3848c743b00..778c309df52 100644
--- a/frontend/providers/devbox/types/ingress.d.ts
+++ b/frontend/providers/devbox/types/ingress.d.ts
@@ -1,6 +1,7 @@
export interface IngressListItemType {
name: string
namespace: string
- host: string
+ address: string
port: number
+ protocol: string
}
diff --git a/frontend/providers/devbox/utils/adapt.ts b/frontend/providers/devbox/utils/adapt.ts
index b4425af7ebd..50e632ce21f 100644
--- a/frontend/providers/devbox/utils/adapt.ts
+++ b/frontend/providers/devbox/utils/adapt.ts
@@ -80,6 +80,7 @@ export const adaptDevboxDetail = (
xData: new Array(30).fill(0),
yData: new Array(30).fill('0')
},
+ networks: devbox.portInfos,
lastTerminatedReason:
devbox.status.lastState?.terminated && devbox.status.lastState.terminated.reason === 'Error'
? devbox.status.state.waiting
@@ -185,11 +186,13 @@ export const adaptDBListItem = (db: KbPgClusterType): DBListItemType => {
export const adaptIngressListItem = (ingress: V1Ingress): IngressListItemType => {
const firstRule = ingress.spec?.rules?.[0]
const firstPath = firstRule?.http?.paths?.[0]
-
+ const protocol = ingress.metadata?.annotations?.['nginx.ingress.kubernetes.io/backend-protocol']
+ console.log('ingress', ingress.spec)
return {
name: ingress.metadata?.name || '',
namespace: ingress.metadata?.namespace || '',
- host: firstRule?.host || '',
- port: firstPath?.backend?.service?.port?.number || 0
+ address: firstRule?.host || '',
+ port: firstPath?.backend?.service?.port?.number || 0,
+ protocol: protocol || 'http'
}
}
From f844e166f0f8639a4902098e266cf55113206af9 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 6 Nov 2024 15:03:31 +0800
Subject: [PATCH 007/105] fix: rebase cause svg lose
---
frontend/providers/devbox/public/images/Iris.svg | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 frontend/providers/devbox/public/images/Iris.svg
diff --git a/frontend/providers/devbox/public/images/Iris.svg b/frontend/providers/devbox/public/images/Iris.svg
new file mode 100644
index 00000000000..71b8493a516
--- /dev/null
+++ b/frontend/providers/devbox/public/images/Iris.svg
@@ -0,0 +1,14 @@
+
From 5e72a8302e47bb75828a97e3d97f8310c83caf87 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 6 Nov 2024 18:09:36 +0800
Subject: [PATCH 008/105] feat: devboxListView refactor
---
.../ide/vscode/devbox/images/delete.svg | 1 +
extensions/ide/vscode/devbox/package.json | 22 ++--
extensions/ide/vscode/devbox/src/api/ssh.ts | 51 ++++----
.../devbox/src/commands/remoteConnector.ts | 79 ++++--------
.../ide/vscode/devbox/src/constant/file.ts | 9 ++
extensions/ide/vscode/devbox/src/extension.ts | 8 +-
.../DevboxListViewProvider.ts} | 43 +++---
.../ide/vscode/devbox/src/utils/handleUri.ts | 7 +-
.../ide/vscode/devbox/src/utils/sshConfig.ts | 122 ++++++++++++++++++
9 files changed, 225 insertions(+), 117 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/images/delete.svg
create mode 100644 extensions/ide/vscode/devbox/src/constant/file.ts
rename extensions/ide/vscode/devbox/src/{commands/treeview.ts => providers/DevboxListViewProvider.ts} (86%)
diff --git a/extensions/ide/vscode/devbox/images/delete.svg b/extensions/ide/vscode/devbox/images/delete.svg
new file mode 100644
index 00000000000..fbb59e83b77
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/delete.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 51116023733..f4c70e70eb4 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -58,22 +58,23 @@
"title": "Create Devbox",
"icon": "images/create.svg"
},
- {
- "command": "devboxDashboard.deleteDevbox",
- "title": "Delete Devbox"
- },
{
"command": "devboxDashboard.openDevbox",
"title": "Open Devbox",
"icon": "images/open.svg"
},
+ {
+ "command": "devboxDashboard.deleteDevbox",
+ "title": "Delete Devbox",
+ "icon": "images/delete.svg"
+ },
{
"command": "devbox.openExternalLink",
"title": "Devbox:Open in Browser"
}
],
"views": {
- "devboxView": [
+ "devboxListView": [
{
"id": "devboxDashboard",
"name": "My Projects"
@@ -99,7 +100,7 @@
"viewsContainers": {
"activitybar": [
{
- "id": "devboxView",
+ "id": "devboxListView",
"title": "Devbox",
"icon": "images/explorer.svg"
}
@@ -138,13 +139,14 @@
],
"view/item/context": [
{
- "command": "devboxDashboard.deleteDevbox",
- "when": "view == devboxDashboard && viewItem == devbox"
+ "command": "devboxDashboard.openDevbox",
+ "when": "view == devboxDashboard && viewItem == devbox",
+ "group": "inline@1"
},
{
- "command": "devboxDashboard.openDevbox",
+ "command": "devboxDashboard.deleteDevbox",
"when": "view == devboxDashboard && viewItem == devbox",
- "group": "inline"
+ "group": "inline@2"
}
]
}
diff --git a/extensions/ide/vscode/devbox/src/api/ssh.ts b/extensions/ide/vscode/devbox/src/api/ssh.ts
index e634bcbd09f..55e605b497a 100644
--- a/extensions/ide/vscode/devbox/src/api/ssh.ts
+++ b/extensions/ide/vscode/devbox/src/api/ssh.ts
@@ -1,49 +1,52 @@
-const fs = require('fs')
+import fs from 'fs'
-export const parseSSHConfig = (configFilePath: string) => {
+import { GlobalStateManager } from '../utils/globalStateManager'
+
+export const parseSSHConfig = (filePath: string) => {
return new Promise((resolve, reject) => {
- fs.readFile(configFilePath, 'utf-8', (err: any, data: any) => {
+ fs.readFile(filePath, 'utf-8', (err: any, data: any) => {
if (err) {
return reject(err)
}
const lines = data.split('\n')
const devboxList = [] as any[]
- let currentHost = {} as any
- let lastComment = ''
+ let currentHostObj = {} as any
lines.forEach((line: string) => {
line = line.trim()
- if (line.startsWith('#')) {
- // 保存注释,特别是 WorkingDir 注释
- lastComment = line
- if (line.startsWith('# WorkingDir:')) {
- currentHost.remotePath = line.split(':')[1].trim()
- }
- } else if (line.startsWith('Host ')) {
- // 如果当前有主机信息且是 usw.sailos.io,则保存
- if (currentHost.hostName === 'usw.sailos.io') {
- devboxList.push(currentHost)
+ if (line.startsWith('Host ')) {
+ // TODO:这里改成注入,而不是硬编码
+ if (!!currentHostObj.StrictHostKeyChecking) {
+ currentHostObj.remotePath =
+ GlobalStateManager.getWorkDir('remotePath')
+ devboxList.push(currentHostObj)
}
- // 开始新的主机信息
- currentHost = { host: line.split(' ')[1] }
+ currentHostObj = { host: line.split(' ')[1] }
} else if (line.startsWith('HostName ')) {
- currentHost.hostName = line.split(' ')[1]
+ currentHostObj.hostName = line.split(' ')[1]
} else if (line.startsWith('User ')) {
- currentHost.user = line.split(' ')[1]
+ currentHostObj.user = line.split(' ')[1]
} else if (line.startsWith('Port ')) {
- currentHost.port = line.split(' ')[1]
+ currentHostObj.port = line.split(' ')[1]
} else if (line.startsWith('IdentityFile ')) {
- currentHost.identityFile = line.split(' ')[1]
+ currentHostObj.identityFile = line.split(' ')[1]
+ } else if (line.startsWith('IdentitiesOnly ')) {
+ currentHostObj.IdentitiesOnly = line.split(' ')[1]
+ } else if (line.startsWith('StrictHostKeyChecking ')) {
+ currentHostObj.StrictHostKeyChecking = line.split(' ')[1]
}
})
- // 最后一个主机信息处理
- if (currentHost.hostName === 'usw.sailos.io') {
- devboxList.push(currentHost)
+ // the last one
+ if (!!currentHostObj.StrictHostKeyChecking) {
+ currentHostObj.remotePath = GlobalStateManager.getWorkDir('remotePath')
+ devboxList.push(currentHostObj)
}
+ console.log(devboxList)
+
resolve(devboxList)
})
})
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index 8548c4ce0f5..eb4e89450e3 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -1,4 +1,3 @@
-import path from 'path'
import * as os from 'os'
import * as fs from 'fs'
import * as vscode from 'vscode'
@@ -7,13 +6,15 @@ import { execSync } from 'child_process'
import { Disposable } from '../common/dispose'
import { modifiedRemoteSSHConfig } from '../utils/remoteSSHConfig'
-
-const defaultSSHConfigPath = path.resolve(os.homedir(), '.ssh/config')
-const defaultDevboxSSHConfigPath = path.resolve(
- os.homedir(),
- '.ssh/sealos/devbox_config'
-)
-const defaultSSHKeyPath = path.resolve(os.homedir(), '.ssh/sealos')
+import {
+ defaultSSHConfigPath,
+ defaultDevboxSSHConfigPath,
+ defaultSSHKeyPath,
+} from '../constant/file'
+import {
+ convertSSHConfigToVersion2,
+ ensureFileExists,
+} from '../utils/sshConfig'
export class RemoteSSHConnector extends Disposable {
constructor(context: vscode.ExtensionContext) {
@@ -26,6 +27,22 @@ export class RemoteSSHConnector extends Disposable {
)
}
}
+ private sshConfigPreProcess() {
+ // 1. ensure .ssh/config exists
+ ensureFileExists(defaultSSHConfigPath, '.ssh')
+ // 2. ensure .ssh/sealos/devbox_config exists
+ ensureFileExists(defaultDevboxSSHConfigPath, '.ssh/sealos')
+ // 3. ensure .ssh/config includes .ssh/sealos/devbox_config
+ const existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf8')
+ if (!existingSSHConfig.includes('Include ~/.ssh/sealos/devbox_config')) {
+ let existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf-8')
+ const newConfig =
+ 'Include ~/.ssh/sealos/devbox_config\n' + existingSSHConfig
+ fs.writeFileSync(defaultSSHConfigPath, newConfig)
+ }
+ // 4. ensure sshConfig from version1 to version2
+ convertSSHConfigToVersion2(defaultDevboxSSHConfigPath)
+ }
private async connectRemoteSSH(args: {
sshDomain: string
@@ -59,51 +76,9 @@ export class RemoteSSHConnector extends Disposable {
})
const sshConfigString = SSHConfig.stringify(sshConfig)
- try {
- // 1. ensure .ssh/config exists
- if (!fs.existsSync(defaultSSHConfigPath)) {
- fs.mkdirSync(path.resolve(os.homedir(), '.ssh'), {
- recursive: true,
- })
- fs.writeFileSync(defaultSSHConfigPath, '', 'utf8')
- // .ssh/config authority
- if (os.platform() === 'win32') {
- // Windows
- execSync(`icacls "${defaultSSHConfigPath}" /inheritance:r`)
- execSync(
- `icacls "${defaultSSHConfigPath}" /grant:r ${process.env.USERNAME}:F`
- )
- execSync(`icacls "${defaultSSHConfigPath}" /remove:g everyone`)
- } else {
- // Unix-like system (Mac, Linux)
- execSync(`chmod 600 "${defaultSSHConfigPath}"`)
- }
- }
- // 2. ensure .ssh/sealos/devbox_config exists and has the correct authority
- if (!fs.existsSync(defaultDevboxSSHConfigPath)) {
- fs.mkdirSync(path.resolve(os.homedir(), '.ssh/sealos'), {
- recursive: true,
- })
- fs.writeFileSync(defaultDevboxSSHConfigPath, '', 'utf8')
- if (os.platform() === 'win32') {
- execSync(`icacls "${defaultDevboxSSHConfigPath}" /inheritance:r`)
- execSync(
- `icacls "${defaultDevboxSSHConfigPath}" /grant:r ${process.env.USERNAME}:F`
- )
- execSync(`icacls "${defaultDevboxSSHConfigPath}" /remove:g everyone`)
- } else {
- execSync(`chmod 600 "${defaultDevboxSSHConfigPath}"`)
- }
- }
- // 3. ensure .ssh/config includes .ssh/sealos/devbox_config
- const existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf8')
- if (!existingSSHConfig.includes('Include ~/.ssh/sealos/devbox_config')) {
- let existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf-8')
- const newConfig =
- 'Include ~/.ssh/sealos/devbox_config\n' + existingSSHConfig
- fs.writeFileSync(defaultSSHConfigPath, newConfig)
- }
+ this.sshConfigPreProcess()
+ try {
// 读取现有的 devbox 配置文件
const existingDevboxConfigLines = fs
.readFileSync(defaultDevboxSSHConfigPath, 'utf8')
diff --git a/extensions/ide/vscode/devbox/src/constant/file.ts b/extensions/ide/vscode/devbox/src/constant/file.ts
new file mode 100644
index 00000000000..71d5657f405
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/constant/file.ts
@@ -0,0 +1,9 @@
+import path from 'path'
+import * as os from 'os'
+
+export const defaultSSHConfigPath = path.resolve(os.homedir(), '.ssh/config')
+export const defaultDevboxSSHConfigPath = path.resolve(
+ os.homedir(),
+ '.ssh/sealos/devbox_config'
+)
+export const defaultSSHKeyPath = path.resolve(os.homedir(), '.ssh/sealos')
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index d2be9dee5c8..144ddac0bf3 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -2,7 +2,7 @@ import * as vscode from 'vscode'
import { Webview } from './commands/webview'
import { RemoteSSHConnector } from './commands/remoteConnector'
-import { TreeView } from './commands/treeview'
+import { DevboxListViewProvider } from './providers/DevboxListViewProvider'
import { UriHandler } from './utils/handleUri'
import { NetworkViewProvider } from './providers/NetworkViewProvider'
import { DBViewProvider } from './providers/DbViewProvider'
@@ -22,9 +22,9 @@ export async function activate(context: vscode.ExtensionContext) {
const remoteConnector = new RemoteSSHConnector(context)
context.subscriptions.push(remoteConnector)
- // tree view
- const treeView = new TreeView(context)
- context.subscriptions.push(treeView)
+ // devboxList view
+ const devboxListViewProvider = new DevboxListViewProvider(context)
+ context.subscriptions.push(devboxListViewProvider)
// token manager
GlobalStateManager.init(context)
diff --git a/extensions/ide/vscode/devbox/src/commands/treeview.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
similarity index 86%
rename from extensions/ide/vscode/devbox/src/commands/treeview.ts
rename to extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index 73d318b9701..35cbb76027f 100644
--- a/extensions/ide/vscode/devbox/src/commands/treeview.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -1,18 +1,18 @@
-import path from 'path'
-import * as os from 'os'
import * as vscode from 'vscode'
import { parseSSHConfig } from '../api/ssh'
import { Disposable } from '../common/dispose'
import { DevboxListItem } from '../types/devbox'
+import { defaultDevboxSSHConfigPath } from '../constant/file'
-export class TreeView extends Disposable {
+export class DevboxListViewProvider extends Disposable {
constructor(context: vscode.ExtensionContext) {
super()
if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
+ // view
const projectTreeDataProvider = new MyTreeDataProvider('devboxDashboard')
+ // TODO: 完善 feedback部分
const feedbackTreeDataProvider = new MyTreeDataProvider('devboxFeedback')
- // views
const devboxDashboardView = vscode.window.createTreeView(
'devboxDashboard',
{
@@ -20,8 +20,6 @@ export class TreeView extends Disposable {
}
)
this._register(devboxDashboardView)
-
- // 添加视图可见性变化事件监听器
this._register(
devboxDashboardView.onDidChangeVisibility(() => {
if (devboxDashboardView.visible) {
@@ -29,7 +27,6 @@ export class TreeView extends Disposable {
}
})
)
-
// commands
this._register(
vscode.commands.registerCommand('devboxDashboard.refresh', () => {
@@ -83,12 +80,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
private refreshData(): void {
if (this.treeName === 'devboxDashboard') {
- const defaultSSHConfigPath = path.resolve(
- os.homedir(),
- '.ssh/sealos/devbox_config'
- )
-
- parseSSHConfig(defaultSSHConfigPath).then((data) => {
+ parseSSHConfig(defaultDevboxSSHConfigPath).then((data) => {
this.treeData = data as DevboxListItem[]
this._onDidChangeTreeData.fire(undefined)
})
@@ -108,9 +100,11 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
return element
}
+ // TODO: 根据不同的代理跳转到不同的页面,而且可以进行设置里的配置
create(item: MyTreeItem) {
- vscode.commands.executeCommand('devbox.openWebview')
- vscode.window.showInformationMessage('create')
+ vscode.commands.executeCommand('devbox.openExternalLink', [
+ 'https://usw.sailos.io/?openapp=system-devbox',
+ ])
}
async open(item: MyTreeItem) {
@@ -138,7 +132,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
if (!element) {
// 第一级:显示所有域名
const domains = [
- ...new Set(this.treeData.map((item) => item.host.split('-')[0])),
+ ...new Set(this.treeData.map((item) => item.host.split('_')[0])),
]
return Promise.resolve(
domains.map(
@@ -157,10 +151,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
...new Set(
this.treeData
.filter((item) => item.host.startsWith(element.label as string))
- .map((item) => {
- const parts = item.host.split('-')
- return parts.slice(1, 3).join('-')
- })
+ .map((item) => item.host.split('_')[1])
),
]
return Promise.resolve(
@@ -178,15 +169,15 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
} else if (!element.devboxName) {
// 第三级:显示指定命名空间下的所有 devbox
const devboxes = this.treeData.filter((item) => {
- const parts = item.host.split('-')
+ const parts = item.host.split('_')
const domain = parts[0]
- const namespace = parts.slice(1, 3).join('-')
+ const namespace = parts[1]
return domain === element.domain && namespace === element.namespace
})
return Promise.resolve(
devboxes.map((devbox) => {
- const parts = devbox.host.split('-')
- const devboxName = parts.slice(3, -1).join('-')
+ const parts = devbox.host.split('_')
+ const devboxName = parts.slice(2).join('_')
const treeItem = new MyTreeItem(
devboxName,
devbox.hostName,
@@ -195,9 +186,9 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
element.namespace,
devboxName,
devbox.host,
- devbox.remotePath // 添加这个参数
+ devbox.remotePath
)
- treeItem.contextValue = 'devbox' // 确保设置了正确的 contextValue
+ treeItem.contextValue = 'devbox'
return treeItem
})
)
diff --git a/extensions/ide/vscode/devbox/src/utils/handleUri.ts b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
index 898c0800ca4..57a6b231ac6 100644
--- a/extensions/ide/vscode/devbox/src/utils/handleUri.ts
+++ b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
@@ -20,6 +20,10 @@ export class UriHandler {
GlobalStateManager.setToken(params.sshHostLabel, params.token)
}
+ if (params.workingDir && params.sshHostLabel) {
+ GlobalStateManager.setWorkDir(params.sshHostLabel, params.workingDir)
+ }
+
if (params.sshPort === '0') {
vscode.window.showInformationMessage(
`SSH Port is not correct,maybe your devbox's nodeport is over the limit`
@@ -44,13 +48,14 @@ export class UriHandler {
}
private validateParams(params: any): boolean {
+ console.log(params)
return !!(
params.sshDomain &&
params.sshPort &&
params.base64PrivateKey &&
params.sshHostLabel &&
params.workingDir &&
- params.authToken
+ params.token
)
}
}
diff --git a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
index e69de29bb2d..c25ccf1be83 100644
--- a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
+++ b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
@@ -0,0 +1,122 @@
+import * as os from 'os'
+import * as fs from 'fs'
+import path from 'path'
+import { execSync } from 'child_process'
+import { GlobalStateManager } from './globalStateManager'
+
+// 将老版本的 ssh 配置改成新版本的 ssh 配置
+// # WorkingDir: /home/sealos/project
+// Host bja.sealos.run-ns-wappehp7-test-t6unaf4bbob
+// HostName bja.sealos.run
+// User sealos
+// Port 40398
+// IdentityFile ~/.ssh/sealos/bja.sealos.run_ns-wappehp7_test
+// IdentitiesOnly yes
+// StrictHostKeyChecking no
+
+// 转换为下边的:
+// Host的转换,去掉随机串,然后-改为_
+// 去掉WorkingDir 的注释,改为全局存储
+// Host usw.sailos.io_ns-rqtny6y6_devbox
+// HostName usw.sailos.io
+// User devbox
+// Port 31328
+// IdentityFile ~/.ssh/sealos/usw.sailos.io_ns-rqtny6y6_devbox
+// IdentitiesOnly yes
+// StrictHostKeyChecking no
+export function convertSSHConfigToVersion2(filePath: string) {
+ const output: Record> = {}
+ let result = ''
+
+ fs.readFile(filePath, 'utf8', (err, data) => {
+ if (err) {
+ console.error('Error reading file:', err)
+ return
+ }
+
+ const lines = data.split('\n')
+ let currentWorkDir: any = null
+ let formattedHostName = ''
+
+ lines.forEach((line) => {
+ line = line.trim()
+
+ // 处理 WorkingDir 行
+ if (line.startsWith('# WorkingDir:')) {
+ currentWorkDir = line.split(': ')[1].trim()
+ return
+ }
+
+ // 处理 Host 行
+ const hostMatch = line.match(/^Host (.+)/)
+ if (hostMatch) {
+ let hostName = hostMatch[1]
+ if (hostName.includes('_ns-')) {
+ formattedHostName = hostName
+ } else {
+ hostName = hostName.replace(/-([^-\s]+)$/, '')
+ const namespace = hostName.match(/ns-([a-z0-9]+)(?=-)/)
+ if (namespace) {
+ formattedHostName = hostName.replace(
+ /^(.+)-ns-([a-z0-9]+)-(.+)$/,
+ '$1_ns-$2_$3'
+ )
+ } else {
+ formattedHostName = hostName
+ }
+ }
+
+ // 初始化 Host 对象
+ output[formattedHostName] = {
+ workDir: currentWorkDir,
+ }
+ return
+ }
+
+ // 处理其他配置项
+ if (currentWorkDir && line) {
+ const keyValueMatch = line.match(/(\S+)\s+(.+)/)
+ if (keyValueMatch) {
+ const [_, key, value] = keyValueMatch
+ output[formattedHostName][key] = value
+ }
+ }
+ })
+ console.log('output', output)
+
+ for (const [host, config] of Object.entries(output)) {
+ if (config.workDir) {
+ GlobalStateManager.setWorkDir(host, config.workDir)
+ }
+
+ result += `Host ${host}\n`
+ for (const [key, value] of Object.entries(config)) {
+ if (key !== 'workDir') {
+ result += ` ${key} ${value}\n`
+ }
+ }
+ result += '\n'
+ }
+ result = result.trim()
+ fs.writeFileSync(filePath, result, 'utf8')
+ })
+}
+
+export function ensureFileExists(filePath: string, parentDir: string) {
+ if (!fs.existsSync(filePath)) {
+ fs.mkdirSync(path.resolve(os.homedir(), parentDir), {
+ recursive: true,
+ })
+ fs.writeFileSync(filePath, '', 'utf8')
+ // .ssh/config authority
+ if (os.platform() === 'win32') {
+ // Windows
+ execSync(`icacls "${filePath}" /inheritance:r`)
+ execSync(`icacls "${filePath}" /grant:r ${process.env.USERNAME}:F`)
+ execSync(`icacls "${filePath}" /remove:g everyone`)
+ } else {
+ // Unix-like system (Mac, Linux)
+ execSync(`chmod 600 "${filePath}"`)
+ }
+ }
+}
From ac6d92fdc50e933abd1d8074b7b636793cbd666b Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 6 Nov 2024 18:24:12 +0800
Subject: [PATCH 009/105] fix: open devbox bug
---
extensions/ide/vscode/devbox/src/api/ssh.ts | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/api/ssh.ts b/extensions/ide/vscode/devbox/src/api/ssh.ts
index 55e605b497a..94fecae7414 100644
--- a/extensions/ide/vscode/devbox/src/api/ssh.ts
+++ b/extensions/ide/vscode/devbox/src/api/ssh.ts
@@ -17,10 +17,10 @@ export const parseSSHConfig = (filePath: string) => {
line = line.trim()
if (line.startsWith('Host ')) {
- // TODO:这里改成注入,而不是硬编码
- if (!!currentHostObj.StrictHostKeyChecking) {
- currentHostObj.remotePath =
- GlobalStateManager.getWorkDir('remotePath')
+ if (currentHostObj.strictHostKeyChecking) {
+ currentHostObj.remotePath = GlobalStateManager.getWorkDir(
+ currentHostObj.host
+ )
devboxList.push(currentHostObj)
}
currentHostObj = { host: line.split(' ')[1] }
@@ -33,20 +33,20 @@ export const parseSSHConfig = (filePath: string) => {
} else if (line.startsWith('IdentityFile ')) {
currentHostObj.identityFile = line.split(' ')[1]
} else if (line.startsWith('IdentitiesOnly ')) {
- currentHostObj.IdentitiesOnly = line.split(' ')[1]
+ currentHostObj.identitiesOnly = line.split(' ')[1]
} else if (line.startsWith('StrictHostKeyChecking ')) {
- currentHostObj.StrictHostKeyChecking = line.split(' ')[1]
+ currentHostObj.strictHostKeyChecking = line.split(' ')[1]
}
})
// the last one
- if (!!currentHostObj.StrictHostKeyChecking) {
- currentHostObj.remotePath = GlobalStateManager.getWorkDir('remotePath')
+ if (!!currentHostObj.strictHostKeyChecking) {
+ currentHostObj.remotePath = GlobalStateManager.getWorkDir(
+ currentHostObj.host
+ )
devboxList.push(currentHostObj)
}
- console.log(devboxList)
-
resolve(devboxList)
})
})
From 139cdb26b260942d6c51408a6e31b402381e22b3 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 6 Nov 2024 18:33:55 +0800
Subject: [PATCH 010/105] feat: delete ssh config
---
.../src/providers/DevboxListViewProvider.ts | 50 ++++++++++++++++++-
.../devbox/src/utils/globalStateManager.ts | 4 ++
2 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index 35cbb76027f..a4740e651ee 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -1,9 +1,11 @@
import * as vscode from 'vscode'
+import fs from 'fs'
import { parseSSHConfig } from '../api/ssh'
import { Disposable } from '../common/dispose'
import { DevboxListItem } from '../types/devbox'
import { defaultDevboxSSHConfigPath } from '../constant/file'
+import { GlobalStateManager } from '../utils/globalStateManager'
export class DevboxListViewProvider extends Disposable {
constructor(context: vscode.ExtensionContext) {
@@ -124,8 +126,52 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
)
}
- delete(item: MyTreeItem) {
- vscode.window.showInformationMessage('delete' + item.label)
+ async delete(item: MyTreeItem) {
+ const deletedHost = item.host
+ GlobalStateManager.remove(deletedHost)
+ // 删除ssh 配置
+ // TODO:抽象出一个 crud ssh 文件的模型
+ try {
+ const content = await fs.promises.readFile(
+ defaultDevboxSSHConfigPath,
+ 'utf8'
+ )
+ const lines = content.split('\n')
+
+ let newLines = []
+ let skipLines = false
+
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i].trim()
+
+ if (line.startsWith('Host ')) {
+ const hostValue = line.split(' ')[1]
+ if (hostValue === deletedHost) {
+ skipLines = true
+ continue
+ } else {
+ skipLines = false
+ }
+ }
+
+ if (skipLines && line.startsWith('Host ')) {
+ skipLines = false
+ }
+
+ if (!skipLines) {
+ newLines.push(lines[i])
+ }
+ }
+
+ await fs.promises.writeFile(
+ defaultDevboxSSHConfigPath,
+ newLines.join('\n')
+ )
+
+ this.refresh()
+ } catch (error) {
+ vscode.window.showErrorMessage(`删除 SSH 配置失败: ${error.message}`)
+ }
}
getChildren(element?: MyTreeItem): Thenable {
diff --git a/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts b/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
index 6164c6a6833..22d260da9d1 100644
--- a/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
+++ b/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
@@ -60,4 +60,8 @@ export class GlobalStateManager {
}
GlobalStateManager.context.globalState.update(devboxId, newState)
}
+
+ static remove(devboxId: string) {
+ GlobalStateManager.context.globalState.update(devboxId, undefined)
+ }
}
From b97218edd9a2d0bd4a0e573d49f93dcdc74d59df Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 10:04:24 +0800
Subject: [PATCH 011/105] fix: refresh devboxList after connect
---
extensions/ide/vscode/devbox/src/commands/remoteConnector.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index eb4e89450e3..55a85b793fa 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -164,6 +164,10 @@ export class RemoteSSHConnector extends Disposable {
forceNewWindow: true,
}
)
+
+ // refresh devboxList
+ await vscode.commands.executeCommand('devboxDashboard.refresh')
+
await vscode.window.showInformationMessage(
`Connected to ${sshHost} with port ${sshPort} successfully.`
)
From 6700bf29b31f394be1f391265308e0d65e037c21 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 10:10:12 +0800
Subject: [PATCH 012/105] fix: some type bug
---
frontend/providers/devbox/types/cluster.d.ts | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/frontend/providers/devbox/types/cluster.d.ts b/frontend/providers/devbox/types/cluster.d.ts
index 47d9932fe21..4c5ac5cb0b7 100644
--- a/frontend/providers/devbox/types/cluster.d.ts
+++ b/frontend/providers/devbox/types/cluster.d.ts
@@ -1,4 +1,4 @@
-import { DBType } from './db'
+import { DBType, DBStatusEnum } from './db'
export type KbPgClusterType = {
apiVersion: 'apps.kubeblocks.io/v1alpha1'
@@ -7,7 +7,7 @@ export type KbPgClusterType = {
annotations: Record
creationTimestamp: Date
labels: {
- 'clusterdefinition.kubeblocks.io/name': `${DBTypeEnum}`
+ 'clusterdefinition.kubeblocks.io/name': DBType
'clusterversion.kubeblocks.io/name': string
'sealos-db-provider/postgresql': string
[key: string]: string
@@ -21,12 +21,12 @@ export type KbPgClusterType = {
}
export interface KubeBlockClusterSpec {
- clusterDefinitionRef: `${DBTypeEnum}`
+ clusterDefinitionRef: DBType
clusterVersionRef: string
terminationPolicy: string
componentSpecs: {
- componentDefRef: `${DBTypeEnum}`
- name: `${DBTypeEnum}`
+ componentDefRef: DBType
+ name: DBType
replicas: number
resources: {
limits: {
From e38f1cdabd61613113b3b49ecb4d1ba1db1ab8c8 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 10:23:40 +0800
Subject: [PATCH 013/105] fix: typo bug
---
extensions/ide/vscode/devbox/package.json | 2 +-
extensions/ide/vscode/devbox/src/extension.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index f4c70e70eb4..c87bd11d3e9 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.8.5",
+ "version": "0.9.0",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index 144ddac0bf3..b4a98dd3f3f 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -5,7 +5,7 @@ import { RemoteSSHConnector } from './commands/remoteConnector'
import { DevboxListViewProvider } from './providers/DevboxListViewProvider'
import { UriHandler } from './utils/handleUri'
import { NetworkViewProvider } from './providers/NetworkViewProvider'
-import { DBViewProvider } from './providers/DbViewProvider'
+import { DBViewProvider } from './providers/DBViewProvider'
import { GlobalStateManager } from './utils/globalStateManager'
import { ToolCommands } from './commands/tools'
From 569607cb3b1b1db0bd40bb775cc55cf7bba3add1 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 10:25:55 +0800
Subject: [PATCH 014/105] chore: svg rename
---
.../providers/devbox/public/images/{Iris.svg => iris-test.svg} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename frontend/providers/devbox/public/images/{Iris.svg => iris-test.svg} (100%)
diff --git a/frontend/providers/devbox/public/images/Iris.svg b/frontend/providers/devbox/public/images/iris-test.svg
similarity index 100%
rename from frontend/providers/devbox/public/images/Iris.svg
rename to frontend/providers/devbox/public/images/iris-test.svg
From 90d4b8f7adaa61dd2f9dc4899163bf78d255c5d3 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 10:26:31 +0800
Subject: [PATCH 015/105] chore: svg rename
---
.../providers/devbox/public/images/{iris-test.svg => iris.svg} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename frontend/providers/devbox/public/images/{iris-test.svg => iris.svg} (100%)
diff --git a/frontend/providers/devbox/public/images/iris-test.svg b/frontend/providers/devbox/public/images/iris.svg
similarity index 100%
rename from frontend/providers/devbox/public/images/iris-test.svg
rename to frontend/providers/devbox/public/images/iris.svg
From c151d3e3916989f85ab6085910936575289e884d Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 10:34:02 +0800
Subject: [PATCH 016/105] feat: default runtime svg
---
.../[lang]/(platform)/devbox/create/components/Form.tsx | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
index 7d59eecce2c..f0bf167f952 100644
--- a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
+++ b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
@@ -377,6 +377,9 @@ const Form = ({
height={'32px'}
alt={item.id}
src={`/images/${item.id}.svg`}
+ onError={(e) => {
+ e.currentTarget.src = '/images/custom.svg'
+ }}
/>
{
+ e.currentTarget.src = '/images/custom.svg'
+ }}
/>
{
+ e.currentTarget.src = '/images/custom.svg'
+ }}
/>
Date: Thu, 7 Nov 2024 10:49:00 +0800
Subject: [PATCH 017/105] fix: refresh devboxlist and convert sshconfig to
version 2
---
extensions/ide/vscode/devbox/package.json | 2 +-
.../ide/vscode/devbox/src/providers/DevboxListViewProvider.ts | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index c87bd11d3e9..88a57436db0 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.0",
+ "version": "0.9.1",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index a4740e651ee..e2c2a6d6449 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -6,6 +6,7 @@ import { Disposable } from '../common/dispose'
import { DevboxListItem } from '../types/devbox'
import { defaultDevboxSSHConfigPath } from '../constant/file'
import { GlobalStateManager } from '../utils/globalStateManager'
+import { convertSSHConfigToVersion2 } from '../utils/sshConfig'
export class DevboxListViewProvider extends Disposable {
constructor(context: vscode.ExtensionContext) {
@@ -82,6 +83,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
private refreshData(): void {
if (this.treeName === 'devboxDashboard') {
+ convertSSHConfigToVersion2(defaultDevboxSSHConfigPath)
parseSSHConfig(defaultDevboxSSHConfigPath).then((data) => {
this.treeData = data as DevboxListItem[]
this._onDidChangeTreeData.fire(undefined)
From c67bf20ffcbfc60862b115d6383a4cb8e6e636c0 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 11:05:07 +0800
Subject: [PATCH 018/105] fix: form update runtimeVersion unchanged bug
---
.../(platform)/devbox/create/components/Form.tsx | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
index f0bf167f952..6010c672603 100644
--- a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
+++ b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
@@ -564,10 +564,12 @@ const Form = ({
) : (
From f93f75476d6457a06744e5c73cf3bc56c85567d2 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 12:17:06 +0800
Subject: [PATCH 019/105] feat: default runtime version
---
.../app/api/platform/getRuntime/route.ts | 69 +++++++++++--------
frontend/providers/devbox/types/k8s.d.ts | 3 +
2 files changed, 44 insertions(+), 28 deletions(-)
diff --git a/frontend/providers/devbox/app/api/platform/getRuntime/route.ts b/frontend/providers/devbox/app/api/platform/getRuntime/route.ts
index 8742092a3ac..b22ceef4647 100644
--- a/frontend/providers/devbox/app/api/platform/getRuntime/route.ts
+++ b/frontend/providers/devbox/app/api/platform/getRuntime/route.ts
@@ -77,15 +77,19 @@ export async function GET(req: NextRequest) {
languageList.forEach((item: any) => {
const language = item.metadata.name
const versions = runtimes.filter((runtime: any) => runtime.spec.classRef === language)
- languageVersionMap[language] = []
- versions.forEach((version: any) => {
- runtimeNamespaceMap[version.metadata.name] = item.metadata.namespace
- languageVersionMap[language].push({
- id: version.metadata.name,
- label: version.spec.version,
- defaultPorts: version.spec.config.appPorts.map((item: any) => item.port)
- })
- })
+ const defaultVersion = versions.find(
+ (v: any) => v.metadata.annotations?.['devbox.sealos.io/defaultVersion'] === 'true'
+ )
+ const otherVersions = versions.filter(
+ (v: any) => v.metadata.annotations?.['devbox.sealos.io/defaultVersion'] !== 'true'
+ )
+ const sortedVersions = defaultVersion ? [defaultVersion, ...otherVersions] : versions
+
+ languageVersionMap[language] = sortedVersions.map((version: any) => ({
+ id: version.metadata.name,
+ label: version.spec.version,
+ defaultPorts: version.spec.config.appPorts.map((item: any) => item.port)
+ }))
if (languageVersionMap[language].length === 0) {
delete languageVersionMap[language]
const index = languageTypeList.findIndex((item) => item.id === language)
@@ -98,15 +102,19 @@ export async function GET(req: NextRequest) {
frameworkList.forEach((item: any) => {
const framework = item.metadata.name
const versions = runtimes.filter((runtime: any) => runtime.spec.classRef === framework)
- frameworkVersionMap[framework] = []
- versions.forEach((version: any) => {
- runtimeNamespaceMap[version.metadata.name] = item.metadata.namespace
- frameworkVersionMap[framework].push({
- id: version.metadata.name,
- label: version.spec.version,
- defaultPorts: version.spec.config.appPorts.map((item: any) => item.port)
- })
- })
+ const defaultVersion = versions.find(
+ (v: any) => v.metadata.annotations?.['devbox.sealos.io/defaultVersion'] === 'true'
+ )
+ const otherVersions = versions.filter(
+ (v: any) => v.metadata.annotations?.['devbox.sealos.io/defaultVersion'] !== 'true'
+ )
+ const sortedVersions = defaultVersion ? [defaultVersion, ...otherVersions] : versions
+
+ frameworkVersionMap[framework] = sortedVersions.map((version: any) => ({
+ id: version.metadata.name,
+ label: version.spec.version,
+ defaultPorts: version.spec.config.appPorts.map((item: any) => item.port)
+ }))
if (frameworkVersionMap[framework].length === 0) {
delete frameworkVersionMap[framework]
const index = frameworkTypeList.findIndex((item) => item.id === framework)
@@ -115,23 +123,28 @@ export async function GET(req: NextRequest) {
}
}
})
+
osList.forEach((item: any) => {
const os = item.metadata.name
const versions = runtimes.filter((runtime: any) => runtime.spec.classRef === os)
- osVersionMap[os] = []
- versions.forEach((version: any) => {
- runtimeNamespaceMap[version.metadata.name] = item.metadata.namespace
- osVersionMap[os].push({
- id: version.metadata.name,
- label: version.spec.version,
- defaultPorts: version.spec.config.appPorts.map((item: any) => item.port)
- })
- })
+ const defaultVersion = versions.find(
+ (v: any) => v.metadata.annotations?.['devbox.sealos.io/defaultVersion'] === 'true'
+ )
+ const otherVersions = versions.filter(
+ (v: any) => v.metadata.annotations?.['devbox.sealos.io/defaultVersion'] !== 'true'
+ )
+ const sortedVersions = defaultVersion ? [defaultVersion, ...otherVersions] : versions
+
+ osVersionMap[os] = sortedVersions.map((version: any) => ({
+ id: version.metadata.name,
+ label: version.spec.version,
+ defaultPorts: version.spec.config.appPorts.map((item: any) => item.port)
+ }))
if (osVersionMap[os].length === 0) {
delete osVersionMap[os]
const index = osTypeList.findIndex((item) => item.id === os)
if (index !== -1) {
- frameworkTypeList.splice(index, 1)
+ osTypeList.splice(index, 1)
}
}
})
diff --git a/frontend/providers/devbox/types/k8s.d.ts b/frontend/providers/devbox/types/k8s.d.ts
index 2c9eb3fd226..69767db4993 100644
--- a/frontend/providers/devbox/types/k8s.d.ts
+++ b/frontend/providers/devbox/types/k8s.d.ts
@@ -128,6 +128,9 @@ export type KBRuntimeType = {
namespace: string
uid: string
creationTimestamp: string
+ annotations: {
+ 'devbox.sealos.io/defaultVersion': boolean
+ }
}
spec: {
classRef: string
From 9dc223f7af7686b44fc1c0bcc369c481c5232bc4 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 12:26:48 +0800
Subject: [PATCH 020/105] feat: params goto
---
.../app/[lang]/(platform)/(home)/page.tsx | 2 +-
.../devbox/create/components/Form.tsx | 1 -
.../[lang]/(platform)/devbox/create/page.tsx | 26 ++++++++++++++++---
.../devbox/app/[lang]/(platform)/layout.tsx | 11 ++++++++
4 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/frontend/providers/devbox/app/[lang]/(platform)/(home)/page.tsx b/frontend/providers/devbox/app/[lang]/(platform)/(home)/page.tsx
index 8410dd6d756..20f4c2d66e3 100644
--- a/frontend/providers/devbox/app/[lang]/(platform)/(home)/page.tsx
+++ b/frontend/providers/devbox/app/[lang]/(platform)/(home)/page.tsx
@@ -1,6 +1,6 @@
'use client'
-import { useRouter } from 'next/navigation'
+import { useRouter } from '@/i18n'
import { useQuery } from '@tanstack/react-query'
import { useCallback, useEffect, useRef, useState } from 'react'
diff --git a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
index 6010c672603..178b279f821 100644
--- a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
+++ b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/components/Form.tsx
@@ -6,7 +6,6 @@ import {
Center,
Flex,
FormControl,
- FormErrorMessage,
Grid,
IconButton,
Image,
diff --git a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/page.tsx b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/page.tsx
index 8df365c74f8..046b10011da 100644
--- a/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/page.tsx
+++ b/frontend/providers/devbox/app/[lang]/(platform)/devbox/create/page.tsx
@@ -31,7 +31,13 @@ import { useRuntimeStore } from '@/stores/runtime'
import { patchYamlList } from '@/utils/tools'
import { createDevbox, updateDevbox } from '@/api/devbox'
import { json2Devbox, json2Ingress, json2Service } from '@/utils/json2Yaml'
-import { LanguageTypeEnum, defaultDevboxEditValue, editModeMap } from '@/constants/devbox'
+import {
+ FrameworkTypeEnum,
+ LanguageTypeEnum,
+ OSTypeEnum,
+ defaultDevboxEditValue,
+ editModeMap
+} from '@/constants/devbox'
const ErrorModal = dynamic(() => import('@/components/modals/ErrorModal'))
@@ -46,7 +52,8 @@ const DevboxCreatePage = () => {
const { env } = useEnvStore()
const { checkQuotaAllow } = useUserStore()
- const { runtimeNamespaceMap, languageVersionMap } = useRuntimeStore()
+ const { runtimeNamespaceMap, languageVersionMap, frameworkVersionMap, osVersionMap } =
+ useRuntimeStore()
const { setDevboxDetail, devboxList } = useDevboxStore()
const crOldYamls = useRef([])
@@ -60,6 +67,7 @@ const DevboxCreatePage = () => {
const tabType = searchParams.get('type') || 'form'
const devboxName = searchParams.get('name') || ''
+ const runtime = searchParams.get('runtime') || ''
const formData2Yamls = (data: DevboxEditType) => [
{
@@ -86,8 +94,18 @@ const DevboxCreatePage = () => {
const defaultEdit = {
...defaultDevboxEditValue,
- runtimeVersion: languageVersionMap[LanguageTypeEnum.go][0].id,
- networks: languageVersionMap[LanguageTypeEnum.go][0].defaultPorts.map((port) => ({
+ runtimeType: runtime || LanguageTypeEnum.go,
+ runtimeVersion: runtime
+ ? languageVersionMap[runtime as LanguageTypeEnum]?.[0]?.id ||
+ frameworkVersionMap[runtime as FrameworkTypeEnum]?.[0]?.id ||
+ osVersionMap[runtime as OSTypeEnum]?.[0]?.id
+ : languageVersionMap[LanguageTypeEnum.go][0].id,
+ networks: (
+ languageVersionMap[runtime as LanguageTypeEnum]?.[0]?.defaultPorts ||
+ frameworkVersionMap[runtime as FrameworkTypeEnum]?.[0]?.defaultPorts ||
+ osVersionMap[runtime as OSTypeEnum]?.[0]?.defaultPorts ||
+ languageVersionMap[LanguageTypeEnum.go][0].defaultPorts
+ ).map((port) => ({
networkName: `${defaultDevboxEditValue.name}-${nanoid()}`,
portName: nanoid(),
port: port,
diff --git a/frontend/providers/devbox/app/[lang]/(platform)/layout.tsx b/frontend/providers/devbox/app/[lang]/(platform)/layout.tsx
index b8c92913113..287949f07ae 100644
--- a/frontend/providers/devbox/app/[lang]/(platform)/layout.tsx
+++ b/frontend/providers/devbox/app/[lang]/(platform)/layout.tsx
@@ -4,6 +4,7 @@ import throttle from 'lodash/throttle'
import { useEffect, useState } from 'react'
import { EVENT_NAME } from 'sealos-desktop-sdk'
import { usePathname, useRouter } from '@/i18n'
+import { useSearchParams } from 'next/navigation'
import { createSealosApp, sealosApp } from 'sealos-desktop-sdk/app'
import { useLoading } from '@/hooks/useLoading'
@@ -25,6 +26,7 @@ export default function PlatformLayout({ children }: { children: React.ReactNode
const { Loading } = useLoading()
const { setEnv, env } = useEnvStore()
const { setRuntime } = useRuntimeStore()
+ const searchParams = useSearchParams()
const { setSourcePrice } = usePriceStore()
const [refresh, setRefresh] = useState(false)
const { setScreenWidth, loading, setLastRoute } = useGlobalStore()
@@ -120,6 +122,15 @@ export default function PlatformLayout({ children }: { children: React.ReactNode
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [refresh, pathname])
+ useEffect(() => {
+ const page = searchParams.get('page')
+ const runtime = searchParams.get('runtime')
+
+ const path = `${page ? `/devbox/${page}` : ''}${runtime ? `?runtime=${runtime}` : ''}`
+
+ router.push(path)
+ }, [router, searchParams])
+
return (
From 200dfc9c849a24af7d30ff1e38115197d6f77989 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 14:19:06 +0800
Subject: [PATCH 021/105] feat: create new devbox
---
.../ide/vscode/devbox/src/providers/DevboxListViewProvider.ts | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index e2c2a6d6449..c9b420eb3ec 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -107,7 +107,9 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
// TODO: 根据不同的代理跳转到不同的页面,而且可以进行设置里的配置
create(item: MyTreeItem) {
vscode.commands.executeCommand('devbox.openExternalLink', [
- 'https://usw.sailos.io/?openapp=system-devbox',
+ `https://usw.sailos.io/?openapp=system-devbox?${encodeURIComponent(
+ `page=create`
+ )}`,
])
}
From 11fad1dd8da2c2695ea09e8f1b48f67737a384ea Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 15:07:55 +0800
Subject: [PATCH 022/105] fix: runtimeNamespace bug
---
.../devbox/app/api/platform/getRuntime/route.ts | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/frontend/providers/devbox/app/api/platform/getRuntime/route.ts b/frontend/providers/devbox/app/api/platform/getRuntime/route.ts
index b22ceef4647..de50f1c05e2 100644
--- a/frontend/providers/devbox/app/api/platform/getRuntime/route.ts
+++ b/frontend/providers/devbox/app/api/platform/getRuntime/route.ts
@@ -85,6 +85,10 @@ export async function GET(req: NextRequest) {
)
const sortedVersions = defaultVersion ? [defaultVersion, ...otherVersions] : versions
+ sortedVersions.forEach((version: any) => {
+ runtimeNamespaceMap[version.metadata.name] = item.metadata.namespace
+ })
+
languageVersionMap[language] = sortedVersions.map((version: any) => ({
id: version.metadata.name,
label: version.spec.version,
@@ -110,6 +114,10 @@ export async function GET(req: NextRequest) {
)
const sortedVersions = defaultVersion ? [defaultVersion, ...otherVersions] : versions
+ sortedVersions.forEach((version: any) => {
+ runtimeNamespaceMap[version.metadata.name] = item.metadata.namespace
+ })
+
frameworkVersionMap[framework] = sortedVersions.map((version: any) => ({
id: version.metadata.name,
label: version.spec.version,
@@ -135,6 +143,10 @@ export async function GET(req: NextRequest) {
)
const sortedVersions = defaultVersion ? [defaultVersion, ...otherVersions] : versions
+ sortedVersions.forEach((version: any) => {
+ runtimeNamespaceMap[version.metadata.name] = item.metadata.namespace
+ })
+
osVersionMap[os] = sortedVersions.map((version: any) => ({
id: version.metadata.name,
label: version.spec.version,
From bfebd11df96713f823990cb1e71f6b66d5f998fa Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 15:16:11 +0800
Subject: [PATCH 023/105] fix: api url bug,I deeeeead
---
extensions/ide/vscode/devbox/.gitignore | 2 ++
extensions/ide/vscode/devbox/src/api/index.ts | 10 +++++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/extensions/ide/vscode/devbox/.gitignore b/extensions/ide/vscode/devbox/.gitignore
index 0b60dfa12fb..c07295b244e 100644
--- a/extensions/ide/vscode/devbox/.gitignore
+++ b/extensions/ide/vscode/devbox/.gitignore
@@ -3,3 +3,5 @@ dist
node_modules
.vscode-test/
*.vsix
+
+.env*.local
diff --git a/extensions/ide/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
index 30d442606fc..68ff0c4b185 100644
--- a/extensions/ide/vscode/devbox/src/api/index.ts
+++ b/extensions/ide/vscode/devbox/src/api/index.ts
@@ -49,8 +49,16 @@ const showStatus = (status: number) => {
return `${message}, please check the network or contact the administrator!`
}
+const getBaseURL = () => {
+ const isDevelopment = process.env.NODE_ENV === 'development'
+ // TODO: 硬编码改为软编码
+ return isDevelopment
+ ? 'http://127.0.0.1:3000'
+ : 'https://devbox.usw.sailos.io'
+}
+
const request = axios.create({
- baseURL: 'http://127.0.0.1:3000',
+ baseURL: getBaseURL(),
withCredentials: true,
timeout: 60000,
})
From dcbaa21016b4b3a3c1222e86fda894c19b9c9cf1 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 16:22:21 +0800
Subject: [PATCH 024/105] perf: file deal
---
.../devbox/src/commands/remoteConnector.ts | 22 +++++++------------
.../ide/vscode/devbox/src/utils/handleUri.ts | 1 -
.../ide/vscode/devbox/src/utils/sshConfig.ts | 1 -
3 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index 55a85b793fa..7d7c13f0bc5 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -79,12 +79,11 @@ export class RemoteSSHConnector extends Disposable {
this.sshConfigPreProcess()
try {
- // 读取现有的 devbox 配置文件
const existingDevboxConfigLines = fs
.readFileSync(defaultDevboxSSHConfigPath, 'utf8')
.split('\n')
- // 用于存储需要保留的配置行
+ // replace the existing ssh config item
const newDevboxConfigLines = []
let skipLines = false
@@ -92,18 +91,16 @@ export class RemoteSSHConnector extends Disposable {
const line = existingDevboxConfigLines[i].trim()
if (
- line.startsWith('Host') &&
+ line.startsWith('Host ') &&
line.substring(5).trim().startsWith(sshHostLabel)
) {
- // 如果当前行是要删除的 Host,开始跳过
skipLines = true
continue
}
if (skipLines) {
- // 检查是否到达下一个 Host 或文件结束
if (
- (line.startsWith('Host') && !line.startsWith('HostName')) ||
+ line.startsWith('Host ') ||
i === existingDevboxConfigLines.length - 1
) {
skipLines = false
@@ -115,20 +112,16 @@ export class RemoteSSHConnector extends Disposable {
}
}
- // 将新的配置写回文件
fs.writeFileSync(
defaultDevboxSSHConfigPath,
newDevboxConfigLines.join('\n')
)
// 5. write new ssh config to .ssh/sealos/devbox_config
- fs.appendFileSync(
- defaultDevboxSSHConfigPath,
- `\n# WorkingDir: ${workingDir}\n`
- )
fs.appendFileSync(defaultDevboxSSHConfigPath, sshConfigString)
vscode.window.showInformationMessage(
- `SSH configuration for ${sshHost} with port ${sshPort} has been added.`
+ `SSH configuration for ${sshHost} with port ${sshPort} has been added.`,
+ { modal: false }
)
} catch (error) {
vscode.window.showErrorMessage(
@@ -136,7 +129,7 @@ export class RemoteSSHConnector extends Disposable {
)
}
- // create sealos privateKey file in .ssh/sealos
+ // 6. create sealos privateKey file in .ssh/sealos
try {
const sshKeyPath = defaultSSHKeyPath + `/${sshHostLabel}`
fs.writeFileSync(sshKeyPath, normalPrivateKey)
@@ -169,7 +162,8 @@ export class RemoteSSHConnector extends Disposable {
await vscode.commands.executeCommand('devboxDashboard.refresh')
await vscode.window.showInformationMessage(
- `Connected to ${sshHost} with port ${sshPort} successfully.`
+ `Connected to ${sshHost} with port ${sshPort} successfully.`,
+ { modal: false }
)
}
diff --git a/extensions/ide/vscode/devbox/src/utils/handleUri.ts b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
index 57a6b231ac6..c95b19d5fbe 100644
--- a/extensions/ide/vscode/devbox/src/utils/handleUri.ts
+++ b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
@@ -48,7 +48,6 @@ export class UriHandler {
}
private validateParams(params: any): boolean {
- console.log(params)
return !!(
params.sshDomain &&
params.sshPort &&
diff --git a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
index c25ccf1be83..2bbee4f3cb8 100644
--- a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
+++ b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
@@ -82,7 +82,6 @@ export function convertSSHConfigToVersion2(filePath: string) {
}
}
})
- console.log('output', output)
for (const [host, config] of Object.entries(output)) {
if (config.workDir) {
From d4f9ea56d488d86d1bd3910b44f46ea7ab4d74a1 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 16:36:25 +0800
Subject: [PATCH 025/105] chore: remove unused code
---
.../ide/vscode/devbox/package-lock.json | 7492 +----------------
extensions/ide/vscode/devbox/package.json | 31 +-
.../ide/vscode/devbox/src/commands/webview.ts | 75 -
extensions/ide/vscode/devbox/src/extension.ts | 5 -
extensions/ide/vscode/devbox/src/view/App.tsx | 20 -
.../devbox/src/view/components/Info.tsx | 129 -
.../devbox/src/view/components/MyIcon.tsx | 53 -
.../devbox/src/view/components/Template.tsx | 92 -
.../devbox/src/view/constants/template.ts | 57 -
.../ide/vscode/devbox/src/view/index.html | 12 -
.../ide/vscode/devbox/src/view/index.tsx | 8 -
.../ide/vscode/devbox/src/view/public/c.svg | 12 -
.../vscode/devbox/src/view/public/debian.svg | 10 -
.../vscode/devbox/src/view/public/flask.svg | 9 -
.../ide/vscode/devbox/src/view/public/gin.svg | 9 -
.../ide/vscode/devbox/src/view/public/go.svg | 30 -
.../vscode/devbox/src/view/public/hertz.svg | 9 -
.../devbox/src/view/public/info/add.svg | 3 -
.../src/view/public/info/arrow-left.svg | 3 -
.../devbox/src/view/public/info/attach.svg | 3 -
.../devbox/src/view/public/info/delete.svg | 3 -
.../vscode/devbox/src/view/public/java.svg | 7 -
.../vscode/devbox/src/view/public/nextjs.svg | 10 -
.../vscode/devbox/src/view/public/nodejs.svg | 26 -
.../vscode/devbox/src/view/public/python.svg | 14 -
.../vscode/devbox/src/view/public/rust.svg | 3 -
.../devbox/src/view/public/spring-boot.svg | 12 -
.../vscode/devbox/src/view/public/ubuntu.svg | 11 -
.../ide/vscode/devbox/src/view/public/vue.svg | 11 -
extensions/ide/vscode/devbox/webpack.base.js | 45 -
extensions/ide/vscode/devbox/webpack.dev.js | 17 -
extensions/ide/vscode/devbox/webpack.prod.js | 6 -
32 files changed, 122 insertions(+), 8105 deletions(-)
delete mode 100644 extensions/ide/vscode/devbox/src/commands/webview.ts
delete mode 100644 extensions/ide/vscode/devbox/src/view/App.tsx
delete mode 100644 extensions/ide/vscode/devbox/src/view/components/Info.tsx
delete mode 100644 extensions/ide/vscode/devbox/src/view/components/MyIcon.tsx
delete mode 100644 extensions/ide/vscode/devbox/src/view/components/Template.tsx
delete mode 100644 extensions/ide/vscode/devbox/src/view/constants/template.ts
delete mode 100644 extensions/ide/vscode/devbox/src/view/index.html
delete mode 100644 extensions/ide/vscode/devbox/src/view/index.tsx
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/c.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/debian.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/flask.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/gin.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/go.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/hertz.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/info/add.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/info/arrow-left.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/info/attach.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/info/delete.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/java.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/nextjs.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/nodejs.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/python.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/rust.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/spring-boot.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/ubuntu.svg
delete mode 100644 extensions/ide/vscode/devbox/src/view/public/vue.svg
delete mode 100644 extensions/ide/vscode/devbox/webpack.base.js
delete mode 100644 extensions/ide/vscode/devbox/webpack.dev.js
delete mode 100644 extensions/ide/vscode/devbox/webpack.prod.js
diff --git a/extensions/ide/vscode/devbox/package-lock.json b/extensions/ide/vscode/devbox/package-lock.json
index b53491fdab9..15b8ed191e8 100644
--- a/extensions/ide/vscode/devbox/package-lock.json
+++ b/extensions/ide/vscode/devbox/package-lock.json
@@ -1,3338 +1,50 @@
{
"name": "devbox-aio",
- "version": "0.8.5",
+ "version": "0.9.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "devbox-aio",
- "version": "0.8.5",
- "license": "MIT",
- "dependencies": {
- "@chakra-ui/react": "^2.8.2",
- "@emotion/react": "^11.13.3",
- "@emotion/styled": "^11.13.0",
- "axios": "^1.7.5",
- "framer-motion": "^11.4.0",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "react-router-dom": "^6.26.1",
- "ssh-config": "^5.0.0"
- },
- "devDependencies": {
- "@babel/core": "^7.25.2",
- "@babel/preset-react": "^7.24.7",
- "@babel/preset-typescript": "^7.24.7",
- "@svgr/webpack": "^8.1.0",
- "@types/mocha": "^10.0.7",
- "@types/node": "20.x",
- "@types/react": "^18.3.3",
- "@types/react-dom": "^18.3.0",
- "@types/vscode": "^1.91.0",
- "@typescript-eslint/eslint-plugin": "^7.14.1",
- "@typescript-eslint/parser": "^7.11.0",
- "@vscode/test-cli": "^0.0.9",
- "@vscode/test-electron": "^2.4.0",
- "autoprefixer": "^10.4.20",
- "babel-loader": "^9.1.3",
- "css-loader": "^7.1.2",
- "eslint": "^8.57.0",
- "html-webpack-plugin": "^5.6.0",
- "style-loader": "^4.0.0",
- "ts-loader": "^9.5.1",
- "typescript": "^5.4.5",
- "webpack": "^5.93.0",
- "webpack-cli": "^5.1.4",
- "webpack-dev-server": "^5.0.4",
- "webpack-merge": "^6.0.1"
- },
- "engines": {
- "vscode": "^1.91.0"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz",
- "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.7.tgz",
- "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
- "dependencies": {
- "@babel/highlight": "^7.24.7",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.25.4.tgz",
- "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.25.2",
- "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.25.2.tgz",
- "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
- "dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.0",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-module-transforms": "^7.25.2",
- "@babel/helpers": "^7.25.0",
- "@babel/parser": "^7.25.0",
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.2",
- "@babel/types": "^7.25.2",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.25.5",
- "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.25.5.tgz",
- "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==",
- "dependencies": {
- "@babel/types": "^7.25.4",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
- "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
- "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
- "dev": true,
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.25.2",
- "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
- "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.25.2",
- "@babel/helper-validator-option": "^7.24.8",
- "browserslist": "^4.23.1",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
- "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/traverse": "^7.25.4",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.25.2",
- "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
- "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.2",
- "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
- "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
- "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
- "dev": true,
- "dependencies": {
- "@babel/traverse": "^7.24.8",
- "@babel/types": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
- "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.25.2",
- "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
- "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-simple-access": "^7.24.7",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
- "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
- "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
- "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-wrap-function": "^7.25.0",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
- "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.24.8",
- "@babel/helper-optimise-call-expression": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
- "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
- "dev": true,
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
- "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
- "dev": true,
- "dependencies": {
- "@babel/traverse": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
- "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
- "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
- "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-wrap-function": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
- "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/traverse": "^7.25.0",
- "@babel/types": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.25.0.tgz",
- "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.24.7.tgz",
- "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.24.7",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.4.tgz",
- "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==",
- "dependencies": {
- "@babel/types": "^7.25.4"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.25.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz",
- "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz",
- "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
- "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
- "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.13.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
- "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
- "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz",
- "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
- "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
- "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
- "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz",
- "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
- "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
- "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
- "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-remap-async-to-generator": "^7.25.0",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/traverse": "^7.25.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
- "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-remap-async-to-generator": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
- "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
- "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
- "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
- "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0"
- }
- },
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
- "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-replace-supers": "^7.25.0",
- "@babel/traverse": "^7.25.4",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-classes/node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
- "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/template": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
- "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
- "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
- "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz",
- "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
- "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
- "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
- "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
- "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.25.1",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
- "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/traverse": "^7.25.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
- "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.25.2",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
- "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
- "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
- "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
- "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
- "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.8",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-simple-access": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
- "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-module-transforms": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "@babel/traverse": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
- "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
- "dev": true,
- "dependencies": {
- "@babel/helper-module-transforms": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
- "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-new-target": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
- "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
- "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
- "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
- "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
- "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-replace-supers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
- "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
- "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
- "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
- "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.25.4",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
- "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
- "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-constant-elements": {
- "version": "7.25.1",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz",
- "integrity": "sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz",
- "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.25.2",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz",
- "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-module-imports": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/plugin-syntax-jsx": "^7.24.7",
- "@babel/types": "^7.25.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz",
- "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==",
- "dev": true,
- "dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz",
- "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
- "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "regenerator-transform": "^0.15.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
- "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
- "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
- "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
- "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
- "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.24.8",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
- "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typescript": {
- "version": "7.25.2",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz",
- "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.24.7",
- "@babel/helper-create-class-features-plugin": "^7.25.0",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
- "@babel/plugin-syntax-typescript": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
- "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
- "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
- "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.24.7",
- "@babel/helper-plugin-utils": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
- "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/preset-env": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.25.4.tgz",
- "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.25.4",
- "@babel/helper-compilation-targets": "^7.25.2",
- "@babel/helper-plugin-utils": "^7.24.8",
- "@babel/helper-validator-option": "^7.24.8",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.24.7",
- "@babel/plugin-syntax-import-attributes": "^7.24.7",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.24.7",
- "@babel/plugin-transform-async-generator-functions": "^7.25.4",
- "@babel/plugin-transform-async-to-generator": "^7.24.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.24.7",
- "@babel/plugin-transform-block-scoping": "^7.25.0",
- "@babel/plugin-transform-class-properties": "^7.25.4",
- "@babel/plugin-transform-class-static-block": "^7.24.7",
- "@babel/plugin-transform-classes": "^7.25.4",
- "@babel/plugin-transform-computed-properties": "^7.24.7",
- "@babel/plugin-transform-destructuring": "^7.24.8",
- "@babel/plugin-transform-dotall-regex": "^7.24.7",
- "@babel/plugin-transform-duplicate-keys": "^7.24.7",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0",
- "@babel/plugin-transform-dynamic-import": "^7.24.7",
- "@babel/plugin-transform-exponentiation-operator": "^7.24.7",
- "@babel/plugin-transform-export-namespace-from": "^7.24.7",
- "@babel/plugin-transform-for-of": "^7.24.7",
- "@babel/plugin-transform-function-name": "^7.25.1",
- "@babel/plugin-transform-json-strings": "^7.24.7",
- "@babel/plugin-transform-literals": "^7.25.2",
- "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
- "@babel/plugin-transform-member-expression-literals": "^7.24.7",
- "@babel/plugin-transform-modules-amd": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.8",
- "@babel/plugin-transform-modules-systemjs": "^7.25.0",
- "@babel/plugin-transform-modules-umd": "^7.24.7",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
- "@babel/plugin-transform-new-target": "^7.24.7",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
- "@babel/plugin-transform-numeric-separator": "^7.24.7",
- "@babel/plugin-transform-object-rest-spread": "^7.24.7",
- "@babel/plugin-transform-object-super": "^7.24.7",
- "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
- "@babel/plugin-transform-optional-chaining": "^7.24.8",
- "@babel/plugin-transform-parameters": "^7.24.7",
- "@babel/plugin-transform-private-methods": "^7.25.4",
- "@babel/plugin-transform-private-property-in-object": "^7.24.7",
- "@babel/plugin-transform-property-literals": "^7.24.7",
- "@babel/plugin-transform-regenerator": "^7.24.7",
- "@babel/plugin-transform-reserved-words": "^7.24.7",
- "@babel/plugin-transform-shorthand-properties": "^7.24.7",
- "@babel/plugin-transform-spread": "^7.24.7",
- "@babel/plugin-transform-sticky-regex": "^7.24.7",
- "@babel/plugin-transform-template-literals": "^7.24.7",
- "@babel/plugin-transform-typeof-symbol": "^7.24.8",
- "@babel/plugin-transform-unicode-escapes": "^7.24.7",
- "@babel/plugin-transform-unicode-property-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-regex": "^7.24.7",
- "@babel/plugin-transform-unicode-sets-regex": "^7.25.4",
- "@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.10",
- "babel-plugin-polyfill-corejs3": "^0.10.6",
- "babel-plugin-polyfill-regenerator": "^0.6.1",
- "core-js-compat": "^3.37.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-env/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/preset-modules": {
- "version": "0.1.6-no-external-plugins",
- "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
- "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/preset-react": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.24.7.tgz",
- "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-validator-option": "^7.24.7",
- "@babel/plugin-transform-react-display-name": "^7.24.7",
- "@babel/plugin-transform-react-jsx": "^7.24.7",
- "@babel/plugin-transform-react-jsx-development": "^7.24.7",
- "@babel/plugin-transform-react-pure-annotations": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-typescript": {
- "version": "7.24.7",
- "resolved": "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz",
- "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.24.7",
- "@babel/helper-validator-option": "^7.24.7",
- "@babel/plugin-syntax-jsx": "^7.24.7",
- "@babel/plugin-transform-modules-commonjs": "^7.24.7",
- "@babel/plugin-transform-typescript": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
- "dev": true
- },
- "node_modules/@babel/runtime": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.25.4.tgz",
- "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.25.0",
- "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.0.tgz",
- "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
- "dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/parser": "^7.25.0",
- "@babel/types": "^7.25.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.4.tgz",
- "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==",
- "dependencies": {
- "@babel/code-frame": "^7.24.7",
- "@babel/generator": "^7.25.4",
- "@babel/parser": "^7.25.4",
- "@babel/template": "^7.25.0",
- "@babel/types": "^7.25.4",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse/node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.25.4",
- "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.4.tgz",
- "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==",
- "dependencies": {
- "@babel/helper-string-parser": "^7.24.8",
- "@babel/helper-validator-identifier": "^7.24.7",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true
- },
- "node_modules/@chakra-ui/accordion": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/accordion/-/accordion-2.3.1.tgz",
- "integrity": "sha512-FSXRm8iClFyU+gVaXisOSEw0/4Q+qZbFRiuhIAkVU6Boj0FxAMrlo9a8AV5TuF77rgaHytCdHk0Ng+cyUijrag==",
- "dependencies": {
- "@chakra-ui/descendant": "3.1.0",
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-controllable-state": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/transition": "2.1.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "framer-motion": ">=4.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/alert": {
- "version": "2.2.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/alert/-/alert-2.2.2.tgz",
- "integrity": "sha512-jHg4LYMRNOJH830ViLuicjb3F+v6iriE/2G5T+Sd0Hna04nukNJ1MxUmBPE+vI22me2dIflfelu2v9wdB6Pojw==",
- "dependencies": {
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/spinner": "2.1.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/anatomy": {
- "version": "2.2.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/anatomy/-/anatomy-2.2.2.tgz",
- "integrity": "sha512-MV6D4VLRIHr4PkW4zMyqfrNS1mPlCTiCXwvYGtDFQYr+xHFfonhAuf9WjsSc0nyp2m0OdkSLnzmVKkZFLo25Tg=="
- },
- "node_modules/@chakra-ui/avatar": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/avatar/-/avatar-2.3.0.tgz",
- "integrity": "sha512-8gKSyLfygnaotbJbDMHDiJoF38OHXUYVme4gGxZ1fLnQEdPVEaIWfH+NndIjOM0z8S+YEFnT9KyGMUtvPrBk3g==",
- "dependencies": {
- "@chakra-ui/image": "2.1.0",
- "@chakra-ui/react-children-utils": "2.0.6",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/breadcrumb": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/breadcrumb/-/breadcrumb-2.2.0.tgz",
- "integrity": "sha512-4cWCG24flYBxjruRi4RJREWTGF74L/KzI2CognAW/d/zWR0CjiScuJhf37Am3LFbCySP6WSoyBOtTIoTA4yLEA==",
- "dependencies": {
- "@chakra-ui/react-children-utils": "2.0.6",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/breakpoint-utils": {
- "version": "2.0.8",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz",
- "integrity": "sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==",
- "dependencies": {
- "@chakra-ui/shared-utils": "2.0.5"
- }
- },
- "node_modules/@chakra-ui/button": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/button/-/button-2.1.0.tgz",
- "integrity": "sha512-95CplwlRKmmUXkdEp/21VkEWgnwcx2TOBG6NfYlsuLBDHSLlo5FKIiE2oSi4zXc4TLcopGcWPNcm/NDaSC5pvA==",
- "dependencies": {
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/spinner": "2.1.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/card": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/card/-/card-2.2.0.tgz",
- "integrity": "sha512-xUB/k5MURj4CtPAhdSoXZidUbm8j3hci9vnc+eZJVDqhDOShNlD6QeniQNRPRys4lWAQLCbFcrwL29C8naDi6g==",
- "dependencies": {
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/checkbox": {
- "version": "2.3.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/checkbox/-/checkbox-2.3.2.tgz",
- "integrity": "sha512-85g38JIXMEv6M+AcyIGLh7igNtfpAN6KGQFYxY9tBj0eWvWk4NKQxvqqyVta0bSAyIl1rixNIIezNpNWk2iO4g==",
- "dependencies": {
- "@chakra-ui/form-control": "2.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-callback-ref": "2.1.0",
- "@chakra-ui/react-use-controllable-state": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
- "@chakra-ui/react-use-update-effect": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/visually-hidden": "2.2.0",
- "@zag-js/focus-visible": "0.16.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/clickable": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/clickable/-/clickable-2.1.0.tgz",
- "integrity": "sha512-flRA/ClPUGPYabu+/GLREZVZr9j2uyyazCAUHAdrTUEdDYCr31SVGhgh7dgKdtq23bOvAQJpIJjw/0Bs0WvbXw==",
- "dependencies": {
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/close-button": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/close-button/-/close-button-2.1.1.tgz",
- "integrity": "sha512-gnpENKOanKexswSVpVz7ojZEALl2x5qjLYNqSQGbxz+aP9sOXPfUS56ebyBrre7T7exuWGiFeRwnM0oVeGPaiw==",
- "dependencies": {
- "@chakra-ui/icon": "3.2.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/color-mode": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/color-mode/-/color-mode-2.2.0.tgz",
- "integrity": "sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg==",
- "dependencies": {
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/control-box": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/control-box/-/control-box-2.1.0.tgz",
- "integrity": "sha512-gVrRDyXFdMd8E7rulL0SKeoljkLQiPITFnsyMO8EFHNZ+AHt5wK4LIguYVEq88APqAGZGfHFWXr79RYrNiE3Mg==",
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/counter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/counter/-/counter-2.1.0.tgz",
- "integrity": "sha512-s6hZAEcWT5zzjNz2JIWUBzRubo9la/oof1W7EKZVVfPYHERnl5e16FmBC79Yfq8p09LQ+aqFKm/etYoJMMgghw==",
- "dependencies": {
- "@chakra-ui/number-utils": "2.0.7",
- "@chakra-ui/react-use-callback-ref": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/css-reset": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/css-reset/-/css-reset-2.3.0.tgz",
- "integrity": "sha512-cQwwBy5O0jzvl0K7PLTLgp8ijqLPKyuEMiDXwYzl95seD3AoeuoCLyzZcJtVqaUZ573PiBdAbY/IlZcwDOItWg==",
- "peerDependencies": {
- "@emotion/react": ">=10.0.35",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/descendant": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/descendant/-/descendant-3.1.0.tgz",
- "integrity": "sha512-VxCIAir08g5w27klLyi7PVo8BxhW4tgU/lxQyujkmi4zx7hT9ZdrcQLAted/dAa+aSIZ14S1oV0Q9lGjsAdxUQ==",
- "dependencies": {
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/dom-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz",
- "integrity": "sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ=="
- },
- "node_modules/@chakra-ui/editable": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/editable/-/editable-3.1.0.tgz",
- "integrity": "sha512-j2JLrUL9wgg4YA6jLlbU88370eCRyor7DZQD9lzpY95tSOXpTljeg3uF9eOmDnCs6fxp3zDWIfkgMm/ExhcGTg==",
- "dependencies": {
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-callback-ref": "2.1.0",
- "@chakra-ui/react-use-controllable-state": "2.1.0",
- "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
- "@chakra-ui/react-use-update-effect": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/event-utils": {
- "version": "2.0.8",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz",
- "integrity": "sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw=="
- },
- "node_modules/@chakra-ui/focus-lock": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/focus-lock/-/focus-lock-2.1.0.tgz",
- "integrity": "sha512-EmGx4PhWGjm4dpjRqM4Aa+rCWBxP+Rq8Uc/nAVnD4YVqkEhBkrPTpui2lnjsuxqNaZ24fIAZ10cF1hlpemte/w==",
- "dependencies": {
- "@chakra-ui/dom-utils": "2.1.0",
- "react-focus-lock": "^2.9.4"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/form-control": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/form-control/-/form-control-2.2.0.tgz",
- "integrity": "sha512-wehLC1t4fafCVJ2RvJQT2jyqsAwX7KymmiGqBu7nQoQz8ApTkGABWpo/QwDh3F/dBLrouHDoOvGmYTqft3Mirw==",
- "dependencies": {
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/hooks": {
- "version": "2.2.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/hooks/-/hooks-2.2.1.tgz",
- "integrity": "sha512-RQbTnzl6b1tBjbDPf9zGRo9rf/pQMholsOudTxjy4i9GfTfz6kgp5ValGjQm2z7ng6Z31N1cnjZ1AlSzQ//ZfQ==",
- "dependencies": {
- "@chakra-ui/react-utils": "2.0.12",
- "@chakra-ui/utils": "2.0.15",
- "compute-scroll-into-view": "3.0.3",
- "copy-to-clipboard": "3.3.3"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/icon": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/icon/-/icon-3.2.0.tgz",
- "integrity": "sha512-xxjGLvlX2Ys4H0iHrI16t74rG9EBcpFvJ3Y3B7KMQTrnW34Kf7Da/UC8J67Gtx85mTHW020ml85SVPKORWNNKQ==",
- "dependencies": {
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/image": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/image/-/image-2.1.0.tgz",
- "integrity": "sha512-bskumBYKLiLMySIWDGcz0+D9Th0jPvmX6xnRMs4o92tT3Od/bW26lahmV2a2Op2ItXeCmRMY+XxJH5Gy1i46VA==",
- "dependencies": {
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/input": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/input/-/input-2.1.2.tgz",
- "integrity": "sha512-GiBbb3EqAA8Ph43yGa6Mc+kUPjh4Spmxp1Pkelr8qtudpc3p2PJOOebLpd90mcqw8UePPa+l6YhhPtp6o0irhw==",
- "dependencies": {
- "@chakra-ui/form-control": "2.2.0",
- "@chakra-ui/object-utils": "2.1.0",
- "@chakra-ui/react-children-utils": "2.0.6",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/layout": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/layout/-/layout-2.3.1.tgz",
- "integrity": "sha512-nXuZ6WRbq0WdgnRgLw+QuxWAHuhDtVX8ElWqcTK+cSMFg/52eVP47czYBE5F35YhnoW2XBwfNoNgZ7+e8Z01Rg==",
- "dependencies": {
- "@chakra-ui/breakpoint-utils": "2.0.8",
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/object-utils": "2.1.0",
- "@chakra-ui/react-children-utils": "2.0.6",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/lazy-utils": {
- "version": "2.0.5",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz",
- "integrity": "sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg=="
- },
- "node_modules/@chakra-ui/live-region": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/live-region/-/live-region-2.1.0.tgz",
- "integrity": "sha512-ZOxFXwtaLIsXjqnszYYrVuswBhnIHHP+XIgK1vC6DePKtyK590Wg+0J0slDwThUAd4MSSIUa/nNX84x1GMphWw==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/media-query": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/media-query/-/media-query-3.3.0.tgz",
- "integrity": "sha512-IsTGgFLoICVoPRp9ykOgqmdMotJG0CnPsKvGQeSFOB/dZfIujdVb14TYxDU4+MURXry1MhJ7LzZhv+Ml7cr8/g==",
- "dependencies": {
- "@chakra-ui/breakpoint-utils": "2.0.8",
- "@chakra-ui/react-env": "3.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/menu": {
- "version": "2.2.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/menu/-/menu-2.2.1.tgz",
- "integrity": "sha512-lJS7XEObzJxsOwWQh7yfG4H8FzFPRP5hVPN/CL+JzytEINCSBvsCDHrYPQGp7jzpCi8vnTqQQGQe0f8dwnXd2g==",
- "dependencies": {
- "@chakra-ui/clickable": "2.1.0",
- "@chakra-ui/descendant": "3.1.0",
- "@chakra-ui/lazy-utils": "2.0.5",
- "@chakra-ui/popper": "3.1.0",
- "@chakra-ui/react-children-utils": "2.0.6",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-animation-state": "2.1.0",
- "@chakra-ui/react-use-controllable-state": "2.1.0",
- "@chakra-ui/react-use-disclosure": "2.1.0",
- "@chakra-ui/react-use-focus-effect": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/react-use-outside-click": "2.2.0",
- "@chakra-ui/react-use-update-effect": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/transition": "2.1.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "framer-motion": ">=4.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/modal": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/modal/-/modal-2.3.1.tgz",
- "integrity": "sha512-TQv1ZaiJMZN+rR9DK0snx/OPwmtaGH1HbZtlYt4W4s6CzyK541fxLRTjIXfEzIGpvNW+b6VFuFjbcR78p4DEoQ==",
- "dependencies": {
- "@chakra-ui/close-button": "2.1.1",
- "@chakra-ui/focus-lock": "2.1.0",
- "@chakra-ui/portal": "2.1.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/transition": "2.1.0",
- "aria-hidden": "^1.2.3",
- "react-remove-scroll": "^2.5.6"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "framer-motion": ">=4.0.0",
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/@chakra-ui/number-input": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/number-input/-/number-input-2.1.2.tgz",
- "integrity": "sha512-pfOdX02sqUN0qC2ysuvgVDiws7xZ20XDIlcNhva55Jgm095xjm8eVdIBfNm3SFbSUNxyXvLTW/YQanX74tKmuA==",
- "dependencies": {
- "@chakra-ui/counter": "2.1.0",
- "@chakra-ui/form-control": "2.2.0",
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-callback-ref": "2.1.0",
- "@chakra-ui/react-use-event-listener": "2.1.0",
- "@chakra-ui/react-use-interval": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
- "@chakra-ui/react-use-update-effect": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/number-utils": {
- "version": "2.0.7",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz",
- "integrity": "sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg=="
- },
- "node_modules/@chakra-ui/object-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz",
- "integrity": "sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ=="
- },
- "node_modules/@chakra-ui/pin-input": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/pin-input/-/pin-input-2.1.0.tgz",
- "integrity": "sha512-x4vBqLStDxJFMt+jdAHHS8jbh294O53CPQJoL4g228P513rHylV/uPscYUHrVJXRxsHfRztQO9k45jjTYaPRMw==",
- "dependencies": {
- "@chakra-ui/descendant": "3.1.0",
- "@chakra-ui/react-children-utils": "2.0.6",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-controllable-state": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/popover": {
- "version": "2.2.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/popover/-/popover-2.2.1.tgz",
- "integrity": "sha512-K+2ai2dD0ljvJnlrzesCDT9mNzLifE3noGKZ3QwLqd/K34Ym1W/0aL1ERSynrcG78NKoXS54SdEzkhCZ4Gn/Zg==",
- "dependencies": {
- "@chakra-ui/close-button": "2.1.1",
- "@chakra-ui/lazy-utils": "2.0.5",
- "@chakra-ui/popper": "3.1.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-animation-state": "2.1.0",
- "@chakra-ui/react-use-disclosure": "2.1.0",
- "@chakra-ui/react-use-focus-effect": "2.1.0",
- "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "framer-motion": ">=4.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/popper": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/popper/-/popper-3.1.0.tgz",
- "integrity": "sha512-ciDdpdYbeFG7og6/6J8lkTFxsSvwTdMLFkpVylAF6VNC22jssiWfquj2eyD4rJnzkRFPvIWJq8hvbfhsm+AjSg==",
- "dependencies": {
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@popperjs/core": "^2.9.3"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/portal": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/portal/-/portal-2.1.0.tgz",
- "integrity": "sha512-9q9KWf6SArEcIq1gGofNcFPSWEyl+MfJjEUg/un1SMlQjaROOh3zYr+6JAwvcORiX7tyHosnmWC3d3wI2aPSQg==",
- "dependencies": {
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/@chakra-ui/progress": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/progress/-/progress-2.2.0.tgz",
- "integrity": "sha512-qUXuKbuhN60EzDD9mHR7B67D7p/ZqNS2Aze4Pbl1qGGZfulPW0PY8Rof32qDtttDQBkzQIzFGE8d9QpAemToIQ==",
- "dependencies": {
- "@chakra-ui/react-context": "2.1.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/provider": {
- "version": "2.4.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/provider/-/provider-2.4.2.tgz",
- "integrity": "sha512-w0Tef5ZCJK1mlJorcSjItCSbyvVuqpvyWdxZiVQmE6fvSJR83wZof42ux0+sfWD+I7rHSfj+f9nzhNaEWClysw==",
- "dependencies": {
- "@chakra-ui/css-reset": "2.3.0",
- "@chakra-ui/portal": "2.1.0",
- "@chakra-ui/react-env": "3.1.0",
- "@chakra-ui/system": "2.6.2",
- "@chakra-ui/utils": "2.0.15"
- },
- "peerDependencies": {
- "@emotion/react": "^11.0.0",
- "@emotion/styled": "^11.0.0",
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/@chakra-ui/radio": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/radio/-/radio-2.1.2.tgz",
- "integrity": "sha512-n10M46wJrMGbonaghvSRnZ9ToTv/q76Szz284gv4QUWvyljQACcGrXIONUnQ3BIwbOfkRqSk7Xl/JgZtVfll+w==",
- "dependencies": {
- "@chakra-ui/form-control": "2.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@zag-js/focus-visible": "0.16.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react": {
- "version": "2.8.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react/-/react-2.8.2.tgz",
- "integrity": "sha512-Hn0moyxxyCDKuR9ywYpqgX8dvjqwu9ArwpIb9wHNYjnODETjLwazgNIliCVBRcJvysGRiV51U2/JtJVrpeCjUQ==",
- "dependencies": {
- "@chakra-ui/accordion": "2.3.1",
- "@chakra-ui/alert": "2.2.2",
- "@chakra-ui/avatar": "2.3.0",
- "@chakra-ui/breadcrumb": "2.2.0",
- "@chakra-ui/button": "2.1.0",
- "@chakra-ui/card": "2.2.0",
- "@chakra-ui/checkbox": "2.3.2",
- "@chakra-ui/close-button": "2.1.1",
- "@chakra-ui/control-box": "2.1.0",
- "@chakra-ui/counter": "2.1.0",
- "@chakra-ui/css-reset": "2.3.0",
- "@chakra-ui/editable": "3.1.0",
- "@chakra-ui/focus-lock": "2.1.0",
- "@chakra-ui/form-control": "2.2.0",
- "@chakra-ui/hooks": "2.2.1",
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/image": "2.1.0",
- "@chakra-ui/input": "2.1.2",
- "@chakra-ui/layout": "2.3.1",
- "@chakra-ui/live-region": "2.1.0",
- "@chakra-ui/media-query": "3.3.0",
- "@chakra-ui/menu": "2.2.1",
- "@chakra-ui/modal": "2.3.1",
- "@chakra-ui/number-input": "2.1.2",
- "@chakra-ui/pin-input": "2.1.0",
- "@chakra-ui/popover": "2.2.1",
- "@chakra-ui/popper": "3.1.0",
- "@chakra-ui/portal": "2.1.0",
- "@chakra-ui/progress": "2.2.0",
- "@chakra-ui/provider": "2.4.2",
- "@chakra-ui/radio": "2.1.2",
- "@chakra-ui/react-env": "3.1.0",
- "@chakra-ui/select": "2.1.2",
- "@chakra-ui/skeleton": "2.1.0",
- "@chakra-ui/skip-nav": "2.1.0",
- "@chakra-ui/slider": "2.1.0",
- "@chakra-ui/spinner": "2.1.0",
- "@chakra-ui/stat": "2.1.1",
- "@chakra-ui/stepper": "2.3.1",
- "@chakra-ui/styled-system": "2.9.2",
- "@chakra-ui/switch": "2.1.2",
- "@chakra-ui/system": "2.6.2",
- "@chakra-ui/table": "2.1.0",
- "@chakra-ui/tabs": "3.0.0",
- "@chakra-ui/tag": "3.1.1",
- "@chakra-ui/textarea": "2.1.2",
- "@chakra-ui/theme": "3.3.1",
- "@chakra-ui/theme-utils": "2.0.21",
- "@chakra-ui/toast": "7.0.2",
- "@chakra-ui/tooltip": "2.3.1",
- "@chakra-ui/transition": "2.1.0",
- "@chakra-ui/utils": "2.0.15",
- "@chakra-ui/visually-hidden": "2.2.0"
- },
- "peerDependencies": {
- "@emotion/react": "^11.0.0",
- "@emotion/styled": "^11.0.0",
- "framer-motion": ">=4.0.0",
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-children-utils": {
- "version": "2.0.6",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz",
- "integrity": "sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-context": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-context/-/react-context-2.1.0.tgz",
- "integrity": "sha512-iahyStvzQ4AOwKwdPReLGfDesGG+vWJfEsn0X/NoGph/SkN+HXtv2sCfYFFR9k7bb+Kvc6YfpLlSuLvKMHi2+w==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-env": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-env/-/react-env-3.1.0.tgz",
- "integrity": "sha512-Vr96GV2LNBth3+IKzr/rq1IcnkXv+MLmwjQH6C8BRtn3sNskgDFD5vLkVXcEhagzZMCh8FR3V/bzZPojBOyNhw==",
- "dependencies": {
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-types": {
- "version": "2.0.7",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-types/-/react-types-2.0.7.tgz",
- "integrity": "sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-animation-state": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.1.0.tgz",
- "integrity": "sha512-CFZkQU3gmDBwhqy0vC1ryf90BVHxVN8cTLpSyCpdmExUEtSEInSCGMydj2fvn7QXsz/za8JNdO2xxgJwxpLMtg==",
- "dependencies": {
- "@chakra-ui/dom-utils": "2.1.0",
- "@chakra-ui/react-use-event-listener": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-callback-ref": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.1.0.tgz",
- "integrity": "sha512-efnJrBtGDa4YaxDzDE90EnKD3Vkh5a1t3w7PhnRQmsphLy3g2UieasoKTlT2Hn118TwDjIv5ZjHJW6HbzXA9wQ==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-controllable-state": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.1.0.tgz",
- "integrity": "sha512-QR/8fKNokxZUs4PfxjXuwl0fj/d71WPrmLJvEpCTkHjnzu7LnYvzoe2wB867IdooQJL0G1zBxl0Dq+6W1P3jpg==",
- "dependencies": {
- "@chakra-ui/react-use-callback-ref": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-disclosure": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.1.0.tgz",
- "integrity": "sha512-Ax4pmxA9LBGMyEZJhhUZobg9C0t3qFE4jVF1tGBsrLDcdBeLR9fwOogIPY9Hf0/wqSlAryAimICbr5hkpa5GSw==",
- "dependencies": {
- "@chakra-ui/react-use-callback-ref": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-event-listener": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.1.0.tgz",
- "integrity": "sha512-U5greryDLS8ISP69DKDsYcsXRtAdnTQT+jjIlRYZ49K/XhUR/AqVZCK5BkR1spTDmO9H8SPhgeNKI70ODuDU/Q==",
- "dependencies": {
- "@chakra-ui/react-use-callback-ref": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-focus-effect": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.1.0.tgz",
- "integrity": "sha512-xzVboNy7J64xveLcxTIJ3jv+lUJKDwRM7Szwn9tNzUIPD94O3qwjV7DDCUzN2490nSYDF4OBMt/wuDBtaR3kUQ==",
- "dependencies": {
- "@chakra-ui/dom-utils": "2.1.0",
- "@chakra-ui/react-use-event-listener": "2.1.0",
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
- "@chakra-ui/react-use-update-effect": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-focus-on-pointer-down": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.1.0.tgz",
- "integrity": "sha512-2jzrUZ+aiCG/cfanrolsnSMDykCAbv9EK/4iUyZno6BYb3vziucmvgKuoXbMPAzWNtwUwtuMhkby8rc61Ue+Lg==",
- "dependencies": {
- "@chakra-ui/react-use-event-listener": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-interval": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-interval/-/react-use-interval-2.1.0.tgz",
- "integrity": "sha512-8iWj+I/+A0J08pgEXP1J1flcvhLBHkk0ln7ZvGIyXiEyM6XagOTJpwNhiu+Bmk59t3HoV/VyvyJTa+44sEApuw==",
- "dependencies": {
- "@chakra-ui/react-use-callback-ref": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-latest-ref": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.1.0.tgz",
- "integrity": "sha512-m0kxuIYqoYB0va9Z2aW4xP/5b7BzlDeWwyXCH6QpT2PpW3/281L3hLCm1G0eOUcdVlayqrQqOeD6Mglq+5/xoQ==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-merge-refs": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.1.0.tgz",
- "integrity": "sha512-lERa6AWF1cjEtWSGjxWTaSMvneccnAVH4V4ozh8SYiN9fSPZLlSG3kNxfNzdFvMEhM7dnP60vynF7WjGdTgQbQ==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-outside-click": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.2.0.tgz",
- "integrity": "sha512-PNX+s/JEaMneijbgAM4iFL+f3m1ga9+6QK0E5Yh4s8KZJQ/bLwZzdhMz8J/+mL+XEXQ5J0N8ivZN28B82N1kNw==",
- "dependencies": {
- "@chakra-ui/react-use-callback-ref": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-pan-event": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.1.0.tgz",
- "integrity": "sha512-xmL2qOHiXqfcj0q7ZK5s9UjTh4Gz0/gL9jcWPA6GVf+A0Od5imEDa/Vz+533yQKWiNSm1QGrIj0eJAokc7O4fg==",
- "dependencies": {
- "@chakra-ui/event-utils": "2.0.8",
- "@chakra-ui/react-use-latest-ref": "2.1.0",
- "framesync": "6.1.2"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-previous": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-previous/-/react-use-previous-2.1.0.tgz",
- "integrity": "sha512-pjxGwue1hX8AFcmjZ2XfrQtIJgqbTF3Qs1Dy3d1krC77dEsiCUbQ9GzOBfDc8pfd60DrB5N2tg5JyHbypqh0Sg==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-safe-layout-effect": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.1.0.tgz",
- "integrity": "sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-size": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-size/-/react-use-size-2.1.0.tgz",
- "integrity": "sha512-tbLqrQhbnqOjzTaMlYytp7wY8BW1JpL78iG7Ru1DlV4EWGiAmXFGvtnEt9HftU0NJ0aJyjgymkxfVGI55/1Z4A==",
- "dependencies": {
- "@zag-js/element-size": "0.10.5"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-timeout": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.1.0.tgz",
- "integrity": "sha512-cFN0sobKMM9hXUhyCofx3/Mjlzah6ADaEl/AXl5Y+GawB5rgedgAcu2ErAgarEkwvsKdP6c68CKjQ9dmTQlJxQ==",
- "dependencies": {
- "@chakra-ui/react-use-callback-ref": "2.1.0"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-use-update-effect": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.1.0.tgz",
- "integrity": "sha512-ND4Q23tETaR2Qd3zwCKYOOS1dfssojPLJMLvUtUbW5M9uW1ejYWgGUobeAiOVfSplownG8QYMmHTP86p/v0lbA==",
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/react-utils": {
- "version": "2.0.12",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz",
- "integrity": "sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==",
- "dependencies": {
- "@chakra-ui/utils": "2.0.15"
- },
- "peerDependencies": {
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/select": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/select/-/select-2.1.2.tgz",
- "integrity": "sha512-ZwCb7LqKCVLJhru3DXvKXpZ7Pbu1TDZ7N0PdQ0Zj1oyVLJyrpef1u9HR5u0amOpqcH++Ugt0f5JSmirjNlctjA==",
- "dependencies": {
- "@chakra-ui/form-control": "2.2.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/shared-utils": {
- "version": "2.0.5",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz",
- "integrity": "sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q=="
- },
- "node_modules/@chakra-ui/skeleton": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/skeleton/-/skeleton-2.1.0.tgz",
- "integrity": "sha512-JNRuMPpdZGd6zFVKjVQ0iusu3tXAdI29n4ZENYwAJEMf/fN0l12sVeirOxkJ7oEL0yOx2AgEYFSKdbcAgfUsAQ==",
- "dependencies": {
- "@chakra-ui/media-query": "3.3.0",
- "@chakra-ui/react-use-previous": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/skip-nav": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/skip-nav/-/skip-nav-2.1.0.tgz",
- "integrity": "sha512-Hk+FG+vadBSH0/7hwp9LJnLjkO0RPGnx7gBJWI4/SpoJf3e4tZlWYtwGj0toYY4aGKl93jVghuwGbDBEMoHDug==",
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/slider": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/slider/-/slider-2.1.0.tgz",
- "integrity": "sha512-lUOBcLMCnFZiA/s2NONXhELJh6sY5WtbRykPtclGfynqqOo47lwWJx+VP7xaeuhDOPcWSSecWc9Y1BfPOCz9cQ==",
- "dependencies": {
- "@chakra-ui/number-utils": "2.0.7",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-callback-ref": "2.1.0",
- "@chakra-ui/react-use-controllable-state": "2.1.0",
- "@chakra-ui/react-use-latest-ref": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/react-use-pan-event": "2.1.0",
- "@chakra-ui/react-use-size": "2.1.0",
- "@chakra-ui/react-use-update-effect": "2.1.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/spinner": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/spinner/-/spinner-2.1.0.tgz",
- "integrity": "sha512-hczbnoXt+MMv/d3gE+hjQhmkzLiKuoTo42YhUG7Bs9OSv2lg1fZHW1fGNRFP3wTi6OIbD044U1P9HK+AOgFH3g==",
- "dependencies": {
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/stat": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/stat/-/stat-2.1.1.tgz",
- "integrity": "sha512-LDn0d/LXQNbAn2KaR3F1zivsZCewY4Jsy1qShmfBMKwn6rI8yVlbvu6SiA3OpHS0FhxbsZxQI6HefEoIgtqY6Q==",
- "dependencies": {
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/stepper": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/stepper/-/stepper-2.3.1.tgz",
- "integrity": "sha512-ky77lZbW60zYkSXhYz7kbItUpAQfEdycT0Q4bkHLxfqbuiGMf8OmgZOQkOB9uM4v0zPwy2HXhe0vq4Dd0xa55Q==",
- "dependencies": {
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/styled-system": {
- "version": "2.9.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/styled-system/-/styled-system-2.9.2.tgz",
- "integrity": "sha512-To/Z92oHpIE+4nk11uVMWqo2GGRS86coeMmjxtpnErmWRdLcp1WVCVRAvn+ZwpLiNR+reWFr2FFqJRsREuZdAg==",
- "dependencies": {
- "@chakra-ui/shared-utils": "2.0.5",
- "csstype": "^3.1.2",
- "lodash.mergewith": "4.6.2"
- }
- },
- "node_modules/@chakra-ui/switch": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/switch/-/switch-2.1.2.tgz",
- "integrity": "sha512-pgmi/CC+E1v31FcnQhsSGjJnOE2OcND4cKPyTE+0F+bmGm48Q/b5UmKD9Y+CmZsrt/7V3h8KNczowupfuBfIHA==",
- "dependencies": {
- "@chakra-ui/checkbox": "2.3.2",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "framer-motion": ">=4.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/system": {
- "version": "2.6.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/system/-/system-2.6.2.tgz",
- "integrity": "sha512-EGtpoEjLrUu4W1fHD+a62XR+hzC5YfsWm+6lO0Kybcga3yYEij9beegO0jZgug27V+Rf7vns95VPVP6mFd/DEQ==",
- "dependencies": {
- "@chakra-ui/color-mode": "2.2.0",
- "@chakra-ui/object-utils": "2.1.0",
- "@chakra-ui/react-utils": "2.0.12",
- "@chakra-ui/styled-system": "2.9.2",
- "@chakra-ui/theme-utils": "2.0.21",
- "@chakra-ui/utils": "2.0.15",
- "react-fast-compare": "3.2.2"
- },
- "peerDependencies": {
- "@emotion/react": "^11.0.0",
- "@emotion/styled": "^11.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/table": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/table/-/table-2.1.0.tgz",
- "integrity": "sha512-o5OrjoHCh5uCLdiUb0Oc0vq9rIAeHSIRScc2ExTC9Qg/uVZl2ygLrjToCaKfaaKl1oQexIeAcZDKvPG8tVkHyQ==",
- "dependencies": {
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/tabs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/tabs/-/tabs-3.0.0.tgz",
- "integrity": "sha512-6Mlclp8L9lqXmsGWF5q5gmemZXOiOYuh0SGT/7PgJVNPz3LXREXlXg2an4MBUD8W5oTkduCX+3KTMCwRrVrDYw==",
- "dependencies": {
- "@chakra-ui/clickable": "2.1.0",
- "@chakra-ui/descendant": "3.1.0",
- "@chakra-ui/lazy-utils": "2.0.5",
- "@chakra-ui/react-children-utils": "2.0.6",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-controllable-state": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/tag": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/tag/-/tag-3.1.1.tgz",
- "integrity": "sha512-Bdel79Dv86Hnge2PKOU+t8H28nm/7Y3cKd4Kfk9k3lOpUh4+nkSGe58dhRzht59lEqa4N9waCgQiBdkydjvBXQ==",
- "dependencies": {
- "@chakra-ui/icon": "3.2.0",
- "@chakra-ui/react-context": "2.1.0"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/textarea": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/textarea/-/textarea-2.1.2.tgz",
- "integrity": "sha512-ip7tvklVCZUb2fOHDb23qPy/Fr2mzDOGdkrpbNi50hDCiV4hFX02jdQJdi3ydHZUyVgZVBKPOJ+lT9i7sKA2wA==",
- "dependencies": {
- "@chakra-ui/form-control": "2.2.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/theme": {
- "version": "3.3.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/theme/-/theme-3.3.1.tgz",
- "integrity": "sha512-Hft/VaT8GYnItGCBbgWd75ICrIrIFrR7lVOhV/dQnqtfGqsVDlrztbSErvMkoPKt0UgAkd9/o44jmZ6X4U2nZQ==",
- "dependencies": {
- "@chakra-ui/anatomy": "2.2.2",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/theme-tools": "2.1.2"
- },
- "peerDependencies": {
- "@chakra-ui/styled-system": ">=2.8.0"
- }
- },
- "node_modules/@chakra-ui/theme-tools": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/theme-tools/-/theme-tools-2.1.2.tgz",
- "integrity": "sha512-Qdj8ajF9kxY4gLrq7gA+Azp8CtFHGO9tWMN2wfF9aQNgG9AuMhPrUzMq9AMQ0MXiYcgNq/FD3eegB43nHVmXVA==",
- "dependencies": {
- "@chakra-ui/anatomy": "2.2.2",
- "@chakra-ui/shared-utils": "2.0.5",
- "color2k": "^2.0.2"
- },
- "peerDependencies": {
- "@chakra-ui/styled-system": ">=2.0.0"
- }
- },
- "node_modules/@chakra-ui/theme-utils": {
- "version": "2.0.21",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/theme-utils/-/theme-utils-2.0.21.tgz",
- "integrity": "sha512-FjH5LJbT794r0+VSCXB3lT4aubI24bLLRWB+CuRKHijRvsOg717bRdUN/N1fEmEpFnRVrbewttWh/OQs0EWpWw==",
- "dependencies": {
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/styled-system": "2.9.2",
- "@chakra-ui/theme": "3.3.1",
- "lodash.mergewith": "4.6.2"
- }
- },
- "node_modules/@chakra-ui/toast": {
- "version": "7.0.2",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/toast/-/toast-7.0.2.tgz",
- "integrity": "sha512-yvRP8jFKRs/YnkuE41BVTq9nB2v/KDRmje9u6dgDmE5+1bFt3bwjdf9gVbif4u5Ve7F7BGk5E093ARRVtvLvXA==",
- "dependencies": {
- "@chakra-ui/alert": "2.2.2",
- "@chakra-ui/close-button": "2.1.1",
- "@chakra-ui/portal": "2.1.0",
- "@chakra-ui/react-context": "2.1.0",
- "@chakra-ui/react-use-timeout": "2.1.0",
- "@chakra-ui/react-use-update-effect": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5",
- "@chakra-ui/styled-system": "2.9.2",
- "@chakra-ui/theme": "3.3.1"
- },
- "peerDependencies": {
- "@chakra-ui/system": "2.6.2",
- "framer-motion": ">=4.0.0",
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/@chakra-ui/tooltip": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/tooltip/-/tooltip-2.3.1.tgz",
- "integrity": "sha512-Rh39GBn/bL4kZpuEMPPRwYNnccRCL+w9OqamWHIB3Qboxs6h8cOyXfIdGxjo72lvhu1QI/a4KFqkM3St+WfC0A==",
- "dependencies": {
- "@chakra-ui/dom-utils": "2.1.0",
- "@chakra-ui/popper": "3.1.0",
- "@chakra-ui/portal": "2.1.0",
- "@chakra-ui/react-types": "2.0.7",
- "@chakra-ui/react-use-disclosure": "2.1.0",
- "@chakra-ui/react-use-event-listener": "2.1.0",
- "@chakra-ui/react-use-merge-refs": "2.1.0",
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "framer-motion": ">=4.0.0",
- "react": ">=18",
- "react-dom": ">=18"
- }
- },
- "node_modules/@chakra-ui/transition": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/transition/-/transition-2.1.0.tgz",
- "integrity": "sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ==",
- "dependencies": {
- "@chakra-ui/shared-utils": "2.0.5"
- },
- "peerDependencies": {
- "framer-motion": ">=4.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@chakra-ui/utils": {
- "version": "2.0.15",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/utils/-/utils-2.0.15.tgz",
- "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==",
- "dependencies": {
- "@types/lodash.mergewith": "4.6.7",
- "css-box-model": "1.2.1",
- "framesync": "6.1.2",
- "lodash.mergewith": "4.6.2"
- }
- },
- "node_modules/@chakra-ui/visually-hidden": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz",
- "integrity": "sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ==",
- "peerDependencies": {
- "@chakra-ui/system": ">=2.0.0",
- "react": ">=18"
- }
- },
- "node_modules/@discoveryjs/json-ext": {
- "version": "0.5.7",
- "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
- "dev": true,
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/@emotion/babel-plugin": {
- "version": "11.12.0",
- "resolved": "https://registry.npmmirror.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz",
- "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==",
- "dependencies": {
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/runtime": "^7.18.3",
- "@emotion/hash": "^0.9.2",
- "@emotion/memoize": "^0.9.0",
- "@emotion/serialize": "^1.2.0",
- "babel-plugin-macros": "^3.1.0",
- "convert-source-map": "^1.5.0",
- "escape-string-regexp": "^4.0.0",
- "find-root": "^1.1.0",
- "source-map": "^0.5.7",
- "stylis": "4.2.0"
- }
- },
- "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
- },
- "node_modules/@emotion/babel-plugin/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@emotion/cache": {
- "version": "11.13.1",
- "resolved": "https://registry.npmmirror.com/@emotion/cache/-/cache-11.13.1.tgz",
- "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
- "dependencies": {
- "@emotion/memoize": "^0.9.0",
- "@emotion/sheet": "^1.4.0",
- "@emotion/utils": "^1.4.0",
- "@emotion/weak-memoize": "^0.4.0",
- "stylis": "4.2.0"
- }
- },
- "node_modules/@emotion/hash": {
"version": "0.9.2",
- "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz",
- "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
- },
- "node_modules/@emotion/is-prop-valid": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz",
- "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==",
- "dependencies": {
- "@emotion/memoize": "^0.9.0"
- }
- },
- "node_modules/@emotion/memoize": {
- "version": "0.9.0",
- "resolved": "https://registry.npmmirror.com/@emotion/memoize/-/memoize-0.9.0.tgz",
- "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
- },
- "node_modules/@emotion/react": {
- "version": "11.13.3",
- "resolved": "https://registry.npmmirror.com/@emotion/react/-/react-11.13.3.tgz",
- "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==",
- "dependencies": {
- "@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.12.0",
- "@emotion/cache": "^11.13.0",
- "@emotion/serialize": "^1.3.1",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
- "@emotion/utils": "^1.4.0",
- "@emotion/weak-memoize": "^0.4.0",
- "hoist-non-react-statics": "^3.3.1"
- },
- "peerDependencies": {
- "react": ">=16.8.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@emotion/serialize": {
- "version": "1.3.1",
- "resolved": "https://registry.npmmirror.com/@emotion/serialize/-/serialize-1.3.1.tgz",
- "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==",
- "dependencies": {
- "@emotion/hash": "^0.9.2",
- "@emotion/memoize": "^0.9.0",
- "@emotion/unitless": "^0.10.0",
- "@emotion/utils": "^1.4.0",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@emotion/sheet": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/@emotion/sheet/-/sheet-1.4.0.tgz",
- "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
- },
- "node_modules/@emotion/styled": {
- "version": "11.13.0",
- "resolved": "https://registry.npmmirror.com/@emotion/styled/-/styled-11.13.0.tgz",
- "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==",
+ "license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.12.0",
- "@emotion/is-prop-valid": "^1.3.0",
- "@emotion/serialize": "^1.3.0",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
- "@emotion/utils": "^1.4.0"
+ "axios": "^1.7.5",
+ "ssh-config": "^5.0.0"
},
- "peerDependencies": {
- "@emotion/react": "^11.0.0-rc.0",
- "react": ">=16.8.0"
+ "devDependencies": {
+ "@types/node": "20.x",
+ "@types/vscode": "^1.91.0",
+ "@typescript-eslint/eslint-plugin": "^7.14.1",
+ "@typescript-eslint/parser": "^7.11.0",
+ "@vscode/test-cli": "^0.0.9",
+ "@vscode/test-electron": "^2.4.0",
+ "autoprefixer": "^10.4.20",
+ "eslint": "^8.57.0",
+ "ts-loader": "^9.5.1",
+ "typescript": "^5.4.5",
+ "webpack": "^5.93.0",
+ "webpack-cli": "^5.1.4"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "engines": {
+ "vscode": "^1.91.0"
}
},
- "node_modules/@emotion/unitless": {
- "version": "0.10.0",
- "resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.10.0.tgz",
- "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
},
- "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
- "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
- "peerDependencies": {
- "react": ">=16.8.0"
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
}
},
- "node_modules/@emotion/utils": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/@emotion/utils/-/utils-1.4.0.tgz",
- "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ=="
- },
- "node_modules/@emotion/weak-memoize": {
- "version": "0.4.0",
- "resolved": "https://registry.npmmirror.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
- "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
- },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -3525,6 +237,7 @@
"version": "0.3.5",
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -3538,6 +251,7 @@
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -3546,6 +260,7 @@
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -3563,73 +278,19 @@
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "dev": true
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.25",
"resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@jsonjoy.com/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==",
- "dev": true,
- "engines": {
- "node": ">=10.0"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
- "node_modules/@jsonjoy.com/json-pack": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz",
- "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==",
- "dev": true,
- "dependencies": {
- "@jsonjoy.com/base64": "^1.1.1",
- "@jsonjoy.com/util": "^1.1.2",
- "hyperdyperid": "^1.2.0",
- "thingies": "^1.20.0"
- },
- "engines": {
- "node": ">=10.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
- "node_modules/@jsonjoy.com/util": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/@jsonjoy.com/util/-/util-1.3.0.tgz",
- "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==",
- "dev": true,
- "engines": {
- "node": ">=10.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
- "node_modules/@leichtgewicht/ip-codec": {
- "version": "2.0.5",
- "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
- "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
- "dev": true
- },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -3655,321 +316,24 @@
"node_modules/@nodelib/fs.walk": {
"version": "1.2.8",
"resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@popperjs/core": {
- "version": "2.11.8",
- "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz",
- "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
- },
- "node_modules/@remix-run/router": {
- "version": "1.19.1",
- "resolved": "https://registry.npmmirror.com/@remix-run/router/-/router-1.19.1.tgz",
- "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz",
- "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz",
- "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz",
- "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz",
- "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz",
- "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz",
- "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz",
- "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-transform-svg-component": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz",
- "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-preset": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz",
- "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==",
- "dev": true,
- "dependencies": {
- "@svgr/babel-plugin-add-jsx-attribute": "8.0.0",
- "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0",
- "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0",
- "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0",
- "@svgr/babel-plugin-svg-dynamic-title": "8.0.0",
- "@svgr/babel-plugin-svg-em-dimensions": "8.0.0",
- "@svgr/babel-plugin-transform-react-native-svg": "8.1.0",
- "@svgr/babel-plugin-transform-svg-component": "8.0.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/core": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/@svgr/core/-/core-8.1.0.tgz",
- "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.21.3",
- "@svgr/babel-preset": "8.1.0",
- "camelcase": "^6.2.0",
- "cosmiconfig": "^8.1.3",
- "snake-case": "^3.0.4"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- }
- },
- "node_modules/@svgr/hast-util-to-babel-ast": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz",
- "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.21.3",
- "entities": "^4.4.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/@svgr/plugin-jsx": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz",
- "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.21.3",
- "@svgr/babel-preset": "8.1.0",
- "@svgr/hast-util-to-babel-ast": "8.0.0",
- "svg-parser": "^2.0.4"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@svgr/core": "*"
- }
- },
- "node_modules/@svgr/plugin-svgo": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz",
- "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==",
- "dev": true,
- "dependencies": {
- "cosmiconfig": "^8.1.3",
- "deepmerge": "^4.3.1",
- "svgo": "^3.0.2"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@svgr/core": "*"
- }
- },
- "node_modules/@svgr/webpack": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/@svgr/webpack/-/webpack-8.1.0.tgz",
- "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.21.3",
- "@babel/plugin-transform-react-constant-elements": "^7.21.3",
- "@babel/preset-env": "^7.20.2",
- "@babel/preset-react": "^7.18.6",
- "@babel/preset-typescript": "^7.21.0",
- "@svgr/core": "8.1.0",
- "@svgr/plugin-jsx": "8.1.0",
- "@svgr/plugin-svgo": "8.1.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- }
- },
- "node_modules/@trysound/sax": {
- "version": "0.2.0",
- "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz",
- "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
- "dev": true,
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/@types/body-parser": {
- "version": "1.19.5",
- "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz",
- "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
- "dev": true,
- "dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/bonjour": {
- "version": "3.5.13",
- "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.13.tgz",
- "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/connect": {
- "version": "3.4.38",
- "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz",
- "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"dependencies": {
- "@types/node": "*"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@types/connect-history-api-fallback": {
- "version": "1.5.4",
- "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
- "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
- "dependencies": {
- "@types/express-serve-static-core": "*",
- "@types/node": "*"
+ "optional": true,
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@types/eslint": {
@@ -3998,51 +362,6 @@
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true
},
- "node_modules/@types/express": {
- "version": "4.17.21",
- "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.21.tgz",
- "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
- "dev": true,
- "dependencies": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.33",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "node_modules/@types/express-serve-static-core": {
- "version": "4.19.5",
- "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
- "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
- "dev": true,
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
- }
- },
- "node_modules/@types/html-minifier-terser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
- "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
- "dev": true
- },
- "node_modules/@types/http-errors": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz",
- "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==",
- "dev": true
- },
- "node_modules/@types/http-proxy": {
- "version": "1.17.15",
- "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.15.tgz",
- "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.6",
"resolved": "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
@@ -4055,25 +374,6 @@
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"dev": true
},
- "node_modules/@types/lodash": {
- "version": "4.17.7",
- "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.7.tgz",
- "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA=="
- },
- "node_modules/@types/lodash.mergewith": {
- "version": "4.6.7",
- "resolved": "https://registry.npmmirror.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz",
- "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==",
- "dependencies": {
- "@types/lodash": "*"
- }
- },
- "node_modules/@types/mime": {
- "version": "1.3.5",
- "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz",
- "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
- "dev": true
- },
"node_modules/@types/mocha": {
"version": "10.0.7",
"resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.7.tgz",
@@ -4089,117 +389,12 @@
"undici-types": "~5.26.4"
}
},
- "node_modules/@types/node-forge": {
- "version": "1.3.11",
- "resolved": "https://registry.npmmirror.com/@types/node-forge/-/node-forge-1.3.11.tgz",
- "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/parse-json": {
- "version": "4.0.2",
- "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.2.tgz",
- "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.12",
- "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.12.tgz",
- "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==",
- "devOptional": true
- },
- "node_modules/@types/qs": {
- "version": "6.9.15",
- "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.15.tgz",
- "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==",
- "dev": true
- },
- "node_modules/@types/range-parser": {
- "version": "1.2.7",
- "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz",
- "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
- "dev": true
- },
- "node_modules/@types/react": {
- "version": "18.3.3",
- "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.3.3.tgz",
- "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
- "devOptional": true,
- "dependencies": {
- "@types/prop-types": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.3.0",
- "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.3.0.tgz",
- "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==",
- "dev": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/retry": {
- "version": "0.12.2",
- "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.2.tgz",
- "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==",
- "dev": true
- },
- "node_modules/@types/send": {
- "version": "0.17.4",
- "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz",
- "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
- "dev": true,
- "dependencies": {
- "@types/mime": "^1",
- "@types/node": "*"
- }
- },
- "node_modules/@types/serve-index": {
- "version": "1.9.4",
- "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.4.tgz",
- "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
- "dev": true,
- "dependencies": {
- "@types/express": "*"
- }
- },
- "node_modules/@types/serve-static": {
- "version": "1.15.7",
- "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz",
- "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
- "dev": true,
- "dependencies": {
- "@types/http-errors": "*",
- "@types/node": "*",
- "@types/send": "*"
- }
- },
- "node_modules/@types/sockjs": {
- "version": "0.3.36",
- "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.36.tgz",
- "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/vscode": {
"version": "1.91.0",
"resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.91.0.tgz",
"integrity": "sha512-PgPr+bUODjG3y+ozWUCyzttqR9EHny9sPAfJagddQjDwdtf66y2sDKJMnFZRuzBA2YtBGASqJGPil8VDUPvO6A==",
"dev": true
},
- "node_modules/@types/ws": {
- "version": "8.5.12",
- "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.12.tgz",
- "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "7.16.1",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz",
@@ -4632,37 +827,6 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
- "node_modules/@zag-js/dom-query": {
- "version": "0.16.0",
- "resolved": "https://registry.npmmirror.com/@zag-js/dom-query/-/dom-query-0.16.0.tgz",
- "integrity": "sha512-Oqhd6+biWyKnhKwFFuZrrf6lxBz2tX2pRQe6grUnYwO6HJ8BcbqZomy2lpOdr+3itlaUqx+Ywj5E5ZZDr/LBfQ=="
- },
- "node_modules/@zag-js/element-size": {
- "version": "0.10.5",
- "resolved": "https://registry.npmmirror.com/@zag-js/element-size/-/element-size-0.10.5.tgz",
- "integrity": "sha512-uQre5IidULANvVkNOBQ1tfgwTQcGl4hliPSe69Fct1VfYb2Fd0jdAcGzqQgPhfrXFpR62MxLPB7erxJ/ngtL8w=="
- },
- "node_modules/@zag-js/focus-visible": {
- "version": "0.16.0",
- "resolved": "https://registry.npmmirror.com/@zag-js/focus-visible/-/focus-visible-0.16.0.tgz",
- "integrity": "sha512-a7U/HSopvQbrDU4GLerpqiMcHKEkQkNPeDZJWz38cw/6Upunh41GjHetq5TB84hxyCaDzJ6q2nEdNoBQfC0FKA==",
- "dependencies": {
- "@zag-js/dom-query": "0.16.0"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dev": true,
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/acorn": {
"version": "8.12.1",
"resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz",
@@ -4721,45 +885,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
- "dev": true,
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-formats/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
"node_modules/ajv-keywords": {
"version": "3.5.2",
"resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
@@ -4778,18 +903,6 @@
"node": ">=6"
}
},
- "node_modules/ansi-html-community": {
- "version": "0.0.8",
- "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
- "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
- "dev": true,
- "engines": [
- "node >= 0.8.0"
- ],
- "bin": {
- "ansi-html": "bin/ansi-html"
- }
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -4833,23 +946,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/aria-hidden": {
- "version": "1.2.4",
- "resolved": "https://registry.npmmirror.com/aria-hidden/-/aria-hidden-1.2.4.tgz",
- "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==",
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
- "dev": true
- },
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
@@ -4911,153 +1007,6 @@
"proxy-from-env": "^1.1.0"
}
},
- "node_modules/babel-loader": {
- "version": "9.1.3",
- "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-9.1.3.tgz",
- "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
- "dev": true,
- "dependencies": {
- "find-cache-dir": "^4.0.0",
- "schema-utils": "^4.0.0"
- },
- "engines": {
- "node": ">= 14.15.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0",
- "webpack": ">=5"
- }
- },
- "node_modules/babel-loader/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/babel-loader/node_modules/ajv-keywords": {
- "version": "5.1.0",
- "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
- },
- "peerDependencies": {
- "ajv": "^8.8.2"
- }
- },
- "node_modules/babel-loader/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "node_modules/babel-loader/node_modules/schema-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.9",
- "ajv": "^8.9.0",
- "ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.1.0"
- },
- "engines": {
- "node": ">= 12.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/babel-plugin-macros": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
- "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
- "dependencies": {
- "@babel/runtime": "^7.12.5",
- "cosmiconfig": "^7.0.0",
- "resolve": "^1.19.0"
- },
- "engines": {
- "node": ">=10",
- "npm": ">=6"
- }
- },
- "node_modules/babel-plugin-macros/node_modules/cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
- "dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.11",
- "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
- "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "semver": "^6.3.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.10.6",
- "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
- "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2",
- "core-js-compat": "^3.38.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
- "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -5084,12 +1033,6 @@
}
]
},
- "node_modules/batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz",
- "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
- "dev": true
- },
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
@@ -5127,70 +1070,6 @@
"node": ">= 6"
}
},
- "node_modules/body-parser": {
- "version": "1.20.2",
- "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz",
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
- "dev": true,
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.11.0",
- "raw-body": "2.5.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/body-parser/node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/body-parser/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/bonjour-service": {
- "version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.2.1.tgz",
- "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "multicast-dns": "^7.2.5"
- }
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true
- },
"node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
@@ -5275,34 +1154,10 @@
}
},
"node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "node_modules/bundle-name": {
- "version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz",
- "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
- "dev": true,
- "dependencies": {
- "run-applescript": "^7.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
},
"node_modules/c8": {
"version": "9.1.0",
@@ -5329,43 +1184,15 @@
"node": ">=14.14.0"
}
},
- "node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
"engines": {
"node": ">=6"
}
},
- "node_modules/camel-case": {
- "version": "4.1.2",
- "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz",
- "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
- "dev": true,
- "dependencies": {
- "pascal-case": "^3.1.2",
- "tslib": "^2.0.3"
- }
- },
"node_modules/camelcase": {
"version": "6.3.0",
"resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
@@ -5459,27 +1286,6 @@
"node": ">=6.0"
}
},
- "node_modules/clean-css": {
- "version": "5.3.3",
- "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.3.tgz",
- "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
- "dev": true,
- "dependencies": {
- "source-map": "~0.6.0"
- },
- "engines": {
- "node": ">= 10.0"
- }
- },
- "node_modules/clean-css/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/cli-cursor": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-4.0.0.tgz",
@@ -5590,11 +1396,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "node_modules/color2k": {
- "version": "2.0.3",
- "resolved": "https://registry.npmmirror.com/color2k/-/color2k-2.0.3.tgz",
- "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog=="
- },
"node_modules/colorette": {
"version": "2.0.20",
"resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz",
@@ -5618,192 +1419,24 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "node_modules/common-path-prefix": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
- "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
- "dev": true
- },
- "node_modules/compressible": {
- "version": "2.0.18",
- "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz",
- "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
- "dev": true,
- "dependencies": {
- "mime-db": ">= 1.43.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/compression": {
- "version": "1.7.4",
- "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz",
- "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
- "dev": true,
- "dependencies": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
- "debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/compression/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/compression/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/compute-scroll-into-view": {
- "version": "3.0.3",
- "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz",
- "integrity": "sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A=="
- },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
- "node_modules/connect-history-api-fallback": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
- "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-disposition/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true
},
- "node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
- "dev": true
- },
- "node_modules/copy-to-clipboard": {
- "version": "3.3.3",
- "resolved": "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
- "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
- "dependencies": {
- "toggle-selection": "^1.0.6"
- }
- },
- "node_modules/core-js-compat": {
- "version": "3.38.1",
- "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.38.1.tgz",
- "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
- "dev": true,
- "dependencies": {
- "browserslist": "^4.23.3"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"dev": true
},
- "node_modules/cosmiconfig": {
- "version": "8.3.6",
- "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
- "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
- "dev": true,
- "dependencies": {
- "import-fresh": "^3.3.0",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.2.0",
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- },
- "peerDependencies": {
- "typescript": ">=4.9.5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -5818,144 +1451,11 @@
"node": ">= 8"
}
},
- "node_modules/css-box-model": {
- "version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/css-box-model/-/css-box-model-1.2.1.tgz",
- "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==",
- "dependencies": {
- "tiny-invariant": "^1.0.6"
- }
- },
- "node_modules/css-loader": {
- "version": "7.1.2",
- "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-7.1.2.tgz",
- "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==",
- "dev": true,
- "dependencies": {
- "icss-utils": "^5.1.0",
- "postcss": "^8.4.33",
- "postcss-modules-extract-imports": "^3.1.0",
- "postcss-modules-local-by-default": "^4.0.5",
- "postcss-modules-scope": "^3.2.0",
- "postcss-modules-values": "^4.0.0",
- "postcss-value-parser": "^4.2.0",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x",
- "webpack": "^5.27.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
- }
- },
- "node_modules/css-select": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz",
- "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.0.1",
- "domhandler": "^4.3.1",
- "domutils": "^2.8.0",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
- "dev": true,
- "dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
- }
- },
- "node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true,
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/csso": {
- "version": "5.0.5",
- "resolved": "https://registry.npmmirror.com/csso/-/csso-5.0.5.tgz",
- "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
- "dev": true,
- "dependencies": {
- "css-tree": "~2.2.0"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/csso/node_modules/css-tree": {
- "version": "2.2.1",
- "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-2.2.1.tgz",
- "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
- "dev": true,
- "dependencies": {
- "mdn-data": "2.0.28",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/csso/node_modules/mdn-data": {
- "version": "2.0.28",
- "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.28.tgz",
- "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
- "dev": true
- },
- "node_modules/csstype": {
- "version": "3.1.3",
- "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
- "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
- },
"node_modules/debug": {
"version": "4.3.5",
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.5.tgz",
"integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
+ "dev": true,
"dependencies": {
"ms": "2.1.2"
},
@@ -5986,84 +1486,6 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/default-browser": {
- "version": "5.2.1",
- "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.2.1.tgz",
- "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
- "dev": true,
- "dependencies": {
- "bundle-name": "^4.1.0",
- "default-browser-id": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/default-browser-id": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/default-browser-id/-/default-browser-id-5.0.0.tgz",
- "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
- "dev": true,
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/default-gateway": {
- "version": "6.0.3",
- "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz",
- "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
- "dev": true,
- "dependencies": {
- "execa": "^5.0.0"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-lazy-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
- "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -6072,36 +1494,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "dev": true,
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/detect-node": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz",
- "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
- "dev": true
- },
- "node_modules/detect-node-es": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz",
- "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
- },
"node_modules/diff": {
"version": "5.2.0",
"resolved": "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz",
@@ -6123,18 +1515,6 @@
"node": ">=8"
}
},
- "node_modules/dns-packet": {
- "version": "5.6.1",
- "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz",
- "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
- "dev": true,
- "dependencies": {
- "@leichtgewicht/ip-codec": "^2.0.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
@@ -6147,92 +1527,12 @@
"node": ">=6.0.0"
}
},
- "node_modules/dom-converter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz",
- "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
- "dev": true,
- "dependencies": {
- "utila": "~0.4"
- }
- },
- "node_modules/dom-serializer": {
- "version": "1.4.1",
- "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
- "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ]
- },
- "node_modules/domhandler": {
- "version": "4.3.1",
- "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz",
- "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.2.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
- "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
- "dev": true,
- "dependencies": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/dot-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz",
- "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
- "dev": true,
- "dependencies": {
- "no-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true
},
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "dev": true
- },
"node_modules/electron-to-chromium": {
"version": "1.5.13",
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
@@ -6245,15 +1545,6 @@
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/enhanced-resolve": {
"version": "5.17.0",
"resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz",
@@ -6267,15 +1558,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/entities": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
- "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
- "dev": true,
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
"node_modules/envinfo": {
"version": "7.13.0",
"resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.13.0.tgz",
@@ -6288,35 +1570,6 @@
"node": ">=4"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/es-module-lexer": {
"version": "1.5.4",
"resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
@@ -6332,16 +1585,11 @@
"node": ">=6"
}
},
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "dev": true
- },
"node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
"engines": {
"node": ">=10"
},
@@ -6525,21 +1773,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/eventemitter3": {
- "version": "4.0.7",
- "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
- "dev": true
- },
"node_modules/events": {
"version": "3.3.0",
"resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
@@ -6549,112 +1782,6 @@
"node": ">=0.8.x"
}
},
- "node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/execa/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/express": {
- "version": "4.19.2",
- "resolved": "https://registry.npmmirror.com/express/-/express-4.19.2.tgz",
- "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
- "dev": true,
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.2",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.6.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/express/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/express/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/express/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -6683,223 +1810,54 @@
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fast-uri": {
- "version": "3.0.1",
- "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.1.tgz",
- "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==",
- "dev": true
- },
- "node_modules/fastest-levenshtein": {
- "version": "1.0.16",
- "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
- "dev": true,
- "engines": {
- "node": ">= 4.9.1"
- }
- },
- "node_modules/fastq": {
- "version": "1.17.1",
- "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
- "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/faye-websocket": {
- "version": "0.11.4",
- "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz",
- "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
- "dev": true,
- "dependencies": {
- "websocket-driver": ">=0.5.1"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dev": true,
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/find-cache-dir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
- "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
- "dev": true,
- "dependencies": {
- "common-path-prefix": "^3.0.0",
- "pkg-dir": "^7.0.0"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-cache-dir/node_modules/find-up": {
- "version": "6.3.0",
- "resolved": "https://registry.npmmirror.com/find-up/-/find-up-6.3.0.tgz",
- "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^7.1.0",
- "path-exists": "^5.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-cache-dir/node_modules/locate-path": {
- "version": "7.2.0",
- "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-7.2.0.tgz",
- "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
- "dev": true,
- "dependencies": {
- "p-locate": "^6.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-cache-dir/node_modules/p-limit": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-4.0.0.tgz",
- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^1.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-cache-dir/node_modules/p-locate": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-6.0.0.tgz",
- "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
"dev": true,
- "dependencies": {
- "p-limit": "^4.0.0"
- },
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 4.9.1"
}
},
- "node_modules/find-cache-dir/node_modules/path-exists": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-5.0.0.tgz",
- "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "dependencies": {
+ "reusify": "^1.0.4"
}
},
- "node_modules/find-cache-dir/node_modules/pkg-dir": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-7.0.0.tgz",
- "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
"dependencies": {
- "find-up": "^6.3.0"
+ "flat-cache": "^3.0.4"
},
"engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/find-cache-dir/node_modules/yocto-queue": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.1.1.tgz",
- "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
- "engines": {
- "node": ">=12.20"
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/find-root": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/find-root/-/find-root-1.1.0.tgz",
- "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
- },
"node_modules/find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz",
@@ -6945,17 +1903,6 @@
"integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
"dev": true
},
- "node_modules/focus-lock": {
- "version": "1.3.5",
- "resolved": "https://registry.npmmirror.com/focus-lock/-/focus-lock-1.3.5.tgz",
- "integrity": "sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ==",
- "dependencies": {
- "tslib": "^2.0.3"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/follow-redirects": {
"version": "1.15.6",
"resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz",
@@ -7004,15 +1951,6 @@
"node": ">= 6"
}
},
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/fraction.js": {
"version": "4.3.7",
"resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -7026,52 +1964,6 @@
"url": "https://github.com/sponsors/rawify"
}
},
- "node_modules/framer-motion": {
- "version": "11.4.0",
- "resolved": "https://registry.npmmirror.com/framer-motion/-/framer-motion-11.4.0.tgz",
- "integrity": "sha512-gHKUZr88OTMFubkIPkaIZxxX18PhQ6IbYxBoXUVdBLQQKZ3teH2BtxMVVRUsuzIfKs259MlL0elgAiZf82fiHg==",
- "dependencies": {
- "tslib": "^2.4.0"
- },
- "peerDependencies": {
- "@emotion/is-prop-valid": "*",
- "react": "^18.0.0",
- "react-dom": "^18.0.0"
- },
- "peerDependenciesMeta": {
- "@emotion/is-prop-valid": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/framesync": {
- "version": "6.1.2",
- "resolved": "https://registry.npmmirror.com/framesync/-/framesync-6.1.2.tgz",
- "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==",
- "dependencies": {
- "tslib": "2.4.0"
- }
- },
- "node_modules/framesync/node_modules/tslib": {
- "version": "2.4.0",
- "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz",
- "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -7096,19 +1988,11 @@
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -7118,45 +2002,6 @@
"node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
- "dev": true,
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-nonce": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz",
- "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/glob": {
"version": "10.4.5",
"resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz",
@@ -7230,18 +2075,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -7254,12 +2087,6 @@
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
- "node_modules/handle-thing": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz",
- "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
- "dev": true
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
@@ -7269,46 +2096,11 @@
"node": ">=8"
}
},
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
- "dependencies": {
- "es-define-property": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -7325,171 +2117,12 @@
"he": "bin/he"
}
},
- "node_modules/hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "dependencies": {
- "react-is": "^16.7.0"
- }
- },
- "node_modules/hpack.js": {
- "version": "2.1.6",
- "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz",
- "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "obuf": "^1.0.0",
- "readable-stream": "^2.0.1",
- "wbuf": "^1.1.0"
- }
- },
- "node_modules/html-entities": {
- "version": "2.5.2",
- "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.5.2.tgz",
- "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/mdevils"
- },
- {
- "type": "patreon",
- "url": "https://patreon.com/mdevils"
- }
- ]
- },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz",
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
- "node_modules/html-minifier-terser": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
- "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
- "dev": true,
- "dependencies": {
- "camel-case": "^4.1.2",
- "clean-css": "^5.2.2",
- "commander": "^8.3.0",
- "he": "^1.2.0",
- "param-case": "^3.0.4",
- "relateurl": "^0.2.7",
- "terser": "^5.10.0"
- },
- "bin": {
- "html-minifier-terser": "cli.js"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/html-minifier-terser/node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
- "dev": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/html-webpack-plugin": {
- "version": "5.6.0",
- "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
- "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==",
- "dev": true,
- "dependencies": {
- "@types/html-minifier-terser": "^6.0.0",
- "html-minifier-terser": "^6.0.2",
- "lodash": "^4.17.21",
- "pretty-error": "^4.0.0",
- "tapable": "^2.0.0"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/html-webpack-plugin"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x",
- "webpack": "^5.20.0"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- },
- "webpack": {
- "optional": true
- }
- }
- },
- "node_modules/htmlparser2": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
- "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
- "dev": true,
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
- }
- },
- "node_modules/http-deceiver": {
- "version": "1.2.7",
- "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz",
- "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
- "dev": true
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dev": true,
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-parser-js": {
- "version": "0.5.8",
- "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz",
- "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
- "dev": true
- },
- "node_modules/http-proxy": {
- "version": "1.18.1",
- "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
- "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
- "dev": true,
- "dependencies": {
- "eventemitter3": "^4.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
"node_modules/http-proxy-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
@@ -7497,46 +2130,10 @@
"dev": true,
"dependencies": {
"agent-base": "^7.1.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/http-proxy-middleware": {
- "version": "2.0.6",
- "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
- "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
- "dev": true,
- "dependencies": {
- "@types/http-proxy": "^1.17.8",
- "http-proxy": "^1.18.1",
- "is-glob": "^4.0.1",
- "is-plain-obj": "^3.0.0",
- "micromatch": "^4.0.2"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "@types/express": "^4.17.13"
- },
- "peerDependenciesMeta": {
- "@types/express": {
- "optional": true
- }
- }
- },
- "node_modules/http-proxy-middleware/node_modules/is-plain-obj": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
- "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "debug": "^4.3.4"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
@@ -7552,48 +2149,6 @@
"node": ">= 14"
}
},
- "node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
- "dev": true,
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/hyperdyperid": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz",
- "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==",
- "dev": true,
- "engines": {
- "node": ">=10.18"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/icss-utils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz",
- "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
- "dev": true,
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
@@ -7633,6 +2188,7 @@
"version": "3.3.0",
"resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -7698,28 +2254,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dependencies": {
- "loose-envify": "^1.0.0"
- }
- },
- "node_modules/ipaddr.js": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
- "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
- },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -7736,6 +2270,7 @@
"version": "2.14.0",
"resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.14.0.tgz",
"integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==",
+ "dev": true,
"dependencies": {
"hasown": "^2.0.2"
},
@@ -7746,21 +2281,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
- "dev": true,
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -7791,24 +2311,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
- "dev": true,
- "dependencies": {
- "is-docker": "^3.0.0"
- },
- "bin": {
- "is-inside-container": "cli.js"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-interactive": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz",
@@ -7821,18 +2323,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-network-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/is-network-error/-/is-network-error-1.1.0.tgz",
- "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==",
- "dev": true,
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
@@ -7872,18 +2362,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
@@ -7896,21 +2374,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-wsl": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-3.1.0.tgz",
- "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
- "dev": true,
- "dependencies": {
- "is-inside-container": "^1.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
@@ -8024,11 +2487,6 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz",
@@ -8041,17 +2499,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -8061,7 +2508,8 @@
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
@@ -8075,18 +2523,6 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
@@ -8117,16 +2553,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/launch-editor": {
- "version": "2.8.1",
- "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.8.1.tgz",
- "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==",
- "dev": true,
- "dependencies": {
- "picocolors": "^1.0.0",
- "shell-quote": "^1.8.1"
- }
- },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
@@ -8149,11 +2575,6 @@
"immediate": "~3.0.5"
}
},
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
- },
"node_modules/loader-runner": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz",
@@ -8178,29 +2599,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
- "dev": true
- },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
- "node_modules/lodash.mergewith": {
- "version": "4.6.2",
- "resolved": "https://registry.npmmirror.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
- "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="
- },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -8217,26 +2621,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lower-case": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz",
- "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
- "dev": true,
- "dependencies": {
- "tslib": "^2.0.3"
- }
- },
"node_modules/lru-cache": {
"version": "10.4.3",
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz",
@@ -8258,46 +2642,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/memfs": {
- "version": "4.11.1",
- "resolved": "https://registry.npmmirror.com/memfs/-/memfs-4.11.1.tgz",
- "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==",
- "dev": true,
- "dependencies": {
- "@jsonjoy.com/json-pack": "^1.0.3",
- "@jsonjoy.com/util": "^1.3.0",
- "tree-dump": "^1.0.1",
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">= 4.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
- "dev": true
- },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -8313,15 +2657,6 @@
"node": ">= 8"
}
},
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/micromatch": {
"version": "4.0.7",
"resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.7.tgz",
@@ -8335,18 +2670,6 @@
"node": ">=8.6"
}
},
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
@@ -8375,12 +2698,6 @@
"node": ">=6"
}
},
- "node_modules/minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
- },
"node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz",
@@ -8571,20 +2888,8 @@
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/multicast-dns": {
- "version": "7.2.5",
- "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz",
- "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
- "dev": true,
- "dependencies": {
- "dns-packet": "^5.2.2",
- "thunky": "^1.0.2"
- },
- "bin": {
- "multicast-dns": "cli.js"
- }
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
},
"node_modules/nanoid": {
"version": "3.3.7",
@@ -8597,6 +2902,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -8610,40 +2916,12 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
- "node_modules/no-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz",
- "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
- "dev": true,
- "dependencies": {
- "lower-case": "^2.0.2",
- "tslib": "^2.0.3"
- }
- },
- "node_modules/node-forge": {
- "version": "1.3.1",
- "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz",
- "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
- "dev": true,
- "engines": {
- "node": ">= 6.13.0"
- }
- },
"node_modules/node-releases": {
"version": "2.0.18",
"resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz",
@@ -8668,77 +2946,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.2.tgz",
- "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/obuf": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
- "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
- "dev": true
- },
- "node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dev": true,
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
@@ -8763,24 +2970,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/open": {
- "version": "10.1.0",
- "resolved": "https://registry.npmmirror.com/open/-/open-10.1.0.tgz",
- "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
- "dev": true,
- "dependencies": {
- "default-browser": "^5.2.1",
- "define-lazy-prop": "^3.0.0",
- "is-inside-container": "^1.0.0",
- "is-wsl": "^3.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz",
@@ -8941,23 +3130,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-retry": {
- "version": "6.2.0",
- "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-6.2.0.tgz",
- "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==",
- "dev": true,
- "dependencies": {
- "@types/retry": "0.12.2",
- "is-network-error": "^1.0.0",
- "retry": "^0.13.1"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
@@ -8979,20 +3151,11 @@
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
- "node_modules/param-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz",
- "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
- "dev": true,
- "dependencies": {
- "dot-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
"dependencies": {
"callsites": "^3.0.0"
},
@@ -9000,42 +3163,6 @@
"node": ">=6"
}
},
- "node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/pascal-case": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz",
- "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
- "dev": true,
- "dependencies": {
- "no-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
@@ -9066,7 +3193,8 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
},
"node_modules/path-scurry": {
"version": "1.11.1",
@@ -9084,16 +3212,11 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
- "dev": true
- },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -9101,7 +3224,8 @@
"node_modules/picocolors": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz",
- "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
+ "dev": true
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -9198,6 +3322,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.0.1",
@@ -9207,78 +3332,6 @@
"node": "^10 || ^12 || >=14"
}
},
- "node_modules/postcss-modules-extract-imports": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
- "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
- "dev": true,
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-local-by-default": {
- "version": "4.0.5",
- "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
- "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
- "dev": true,
- "dependencies": {
- "icss-utils": "^5.0.0",
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.1.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-scope": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
- "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
- "dev": true,
- "dependencies": {
- "postcss-selector-parser": "^6.0.4"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-modules-values": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
- "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
- "dev": true,
- "dependencies": {
- "icss-utils": "^5.0.0"
- },
- "engines": {
- "node": "^10 || ^12 || >= 14"
- },
- "peerDependencies": {
- "postcss": "^8.1.0"
- }
- },
- "node_modules/postcss-selector-parser": {
- "version": "6.1.2",
- "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
- "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
- "dev": true,
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
@@ -9294,54 +3347,12 @@
"node": ">= 0.8.0"
}
},
- "node_modules/pretty-error": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz",
- "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.20",
- "renderkid": "^3.0.0"
- }
- },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dev": true,
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/proxy-addr/node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@@ -9356,21 +3367,6 @@
"node": ">=6"
}
},
- "node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -9400,202 +3396,6 @@
"safe-buffer": "^5.1.0"
}
},
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "dev": true,
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/raw-body/node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/react": {
- "version": "18.3.1",
- "resolved": "https://registry.npmmirror.com/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-clientside-effect": {
- "version": "1.2.6",
- "resolved": "https://registry.npmmirror.com/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
- "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
- "dependencies": {
- "@babel/runtime": "^7.12.13"
- },
- "peerDependencies": {
- "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.2"
- },
- "peerDependencies": {
- "react": "^18.3.1"
- }
- },
- "node_modules/react-fast-compare": {
- "version": "3.2.2",
- "resolved": "https://registry.npmmirror.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
- "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
- },
- "node_modules/react-focus-lock": {
- "version": "2.13.2",
- "resolved": "https://registry.npmmirror.com/react-focus-lock/-/react-focus-lock-2.13.2.tgz",
- "integrity": "sha512-T/7bsofxYqnod2xadvuwjGKHOoL5GH7/EIPI5UyEvaU/c2CcphvGI371opFtuY/SYdbMsNiuF4HsHQ50nA/TKQ==",
- "dependencies": {
- "@babel/runtime": "^7.0.0",
- "focus-lock": "^1.3.5",
- "prop-types": "^15.6.2",
- "react-clientside-effect": "^1.2.6",
- "use-callback-ref": "^1.3.2",
- "use-sidecar": "^1.1.2"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "node_modules/react-remove-scroll": {
- "version": "2.5.10",
- "resolved": "https://registry.npmmirror.com/react-remove-scroll/-/react-remove-scroll-2.5.10.tgz",
- "integrity": "sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==",
- "dependencies": {
- "react-remove-scroll-bar": "^2.3.6",
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.1.0",
- "use-callback-ref": "^1.3.0",
- "use-sidecar": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/react-remove-scroll-bar": {
- "version": "2.3.6",
- "resolved": "https://registry.npmmirror.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
- "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
- "dependencies": {
- "react-style-singleton": "^2.2.1",
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/react-router": {
- "version": "6.26.1",
- "resolved": "https://registry.npmmirror.com/react-router/-/react-router-6.26.1.tgz",
- "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==",
- "dependencies": {
- "@remix-run/router": "1.19.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/react-router-dom": {
- "version": "6.26.1",
- "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.26.1.tgz",
- "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==",
- "dependencies": {
- "@remix-run/router": "1.19.1",
- "react-router": "6.26.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
- }
- },
- "node_modules/react-style-singleton": {
- "version": "2.2.1",
- "resolved": "https://registry.npmmirror.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
- "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
- "dependencies": {
- "get-nonce": "^1.0.0",
- "invariant": "^2.2.4",
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -9635,98 +3435,6 @@
"node": ">= 10.13.0"
}
},
- "node_modules/regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.1",
- "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
- "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
- "dev": true,
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
- "dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
- "dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/relateurl": {
- "version": "0.2.7",
- "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz",
- "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/renderkid": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz",
- "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
- "dev": true,
- "dependencies": {
- "css-select": "^4.1.3",
- "dom-converter": "^0.2.0",
- "htmlparser2": "^6.1.0",
- "lodash": "^4.17.21",
- "strip-ansi": "^6.0.1"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
@@ -9736,25 +3444,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
- },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -9792,6 +3486,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
"engines": {
"node": ">=4"
}
@@ -9813,19 +3508,10 @@
}
},
"node_modules/restore-cursor/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/retry": {
- "version": "0.13.1",
- "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz",
- "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
},
"node_modules/reusify": {
"version": "1.0.4",
@@ -9896,18 +3582,6 @@
"node": "*"
}
},
- "node_modules/run-applescript": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/run-applescript/-/run-applescript-7.0.0.tgz",
- "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
- "dev": true,
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -9937,20 +3611,6 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "node_modules/scheduler": {
- "version": "0.23.2",
- "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
"node_modules/schema-utils": {
"version": "3.3.0",
"resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz",
@@ -9969,25 +3629,6 @@
"url": "https://opencollective.com/webpack"
}
},
- "node_modules/select-hose": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
- "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
- "dev": true
- },
- "node_modules/selfsigned": {
- "version": "2.4.1",
- "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.4.1.tgz",
- "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
- "dev": true,
- "dependencies": {
- "@types/node-forge": "^1.3.0",
- "node-forge": "^1"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/semver": {
"version": "7.6.3",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz",
@@ -10000,51 +3641,6 @@
"node": ">=10"
}
},
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dev": true,
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
"node_modules/serialize-javascript": {
"version": "6.0.2",
"resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
@@ -10054,128 +3650,12 @@
"randombytes": "^2.1.0"
}
},
- "node_modules/serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
- "dev": true,
- "dependencies": {
- "accepts": "~1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/serve-index/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/serve-index/node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-index/node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "dev": true,
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-index/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "dev": true
- },
- "node_modules/serve-index/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/serve-index/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
- },
- "node_modules/serve-index/node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dev": true,
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-function-length": {
- "version": "1.2.2",
- "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dev": true,
- "dependencies": {
- "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.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
"dev": true
},
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true
- },
"node_modules/shallow-clone": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
@@ -10209,33 +3689,6 @@
"node": ">=8"
}
},
- "node_modules/shell-quote": {
- "version": "1.8.1",
- "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz",
- "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/signal-exit": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
@@ -10257,27 +3710,6 @@
"node": ">=8"
}
},
- "node_modules/snake-case": {
- "version": "3.0.4",
- "resolved": "https://registry.npmmirror.com/snake-case/-/snake-case-3.0.4.tgz",
- "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
- "dev": true,
- "dependencies": {
- "dot-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
- "node_modules/sockjs": {
- "version": "0.3.24",
- "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz",
- "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
- "dev": true,
- "dependencies": {
- "faye-websocket": "^0.11.3",
- "uuid": "^8.3.2",
- "websocket-driver": "^0.7.4"
- }
- },
"node_modules/source-map": {
"version": "0.7.4",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
@@ -10292,6 +3724,7 @@
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz",
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"dev": true,
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -10315,64 +3748,11 @@
"node": ">=0.10.0"
}
},
- "node_modules/spdy": {
- "version": "4.0.2",
- "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz",
- "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
- "dev": true,
- "dependencies": {
- "debug": "^4.1.0",
- "handle-thing": "^2.0.0",
- "http-deceiver": "^1.2.7",
- "select-hose": "^2.0.0",
- "spdy-transport": "^3.0.0"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/spdy-transport": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz",
- "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
- "dev": true,
- "dependencies": {
- "debug": "^4.1.0",
- "detect-node": "^2.0.4",
- "hpack.js": "^2.1.6",
- "obuf": "^1.1.2",
- "readable-stream": "^3.0.6",
- "wbuf": "^1.7.3"
- }
- },
- "node_modules/spdy-transport/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/ssh-config": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/ssh-config/-/ssh-config-5.0.0.tgz",
"integrity": "sha512-RVJemF95DYAKfn2xogb75e4s3tyq6seexTg1CHXVxaas+OKv1PUsdIdz7ZyaZbW3TvSnJP+zgzNy5oRsrIhIAg=="
},
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/stdin-discarder": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
@@ -10487,15 +3867,6 @@
"node": ">=8"
}
},
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -10508,27 +3879,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/style-loader": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/style-loader/-/style-loader-4.0.0.tgz",
- "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==",
- "dev": true,
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.27.0"
- }
- },
- "node_modules/stylis": {
- "version": "4.2.0",
- "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.2.0.tgz",
- "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
- },
"node_modules/supports-color": {
"version": "9.4.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-9.4.0.tgz",
@@ -10545,6 +3895,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -10552,117 +3903,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/svg-parser": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/svg-parser/-/svg-parser-2.0.4.tgz",
- "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
- "dev": true
- },
- "node_modules/svgo": {
- "version": "3.3.2",
- "resolved": "https://registry.npmmirror.com/svgo/-/svgo-3.3.2.tgz",
- "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
- "dev": true,
- "dependencies": {
- "@trysound/sax": "0.2.0",
- "commander": "^7.2.0",
- "css-select": "^5.1.0",
- "css-tree": "^2.3.1",
- "css-what": "^6.1.0",
- "csso": "^5.0.5",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "svgo": "bin/svgo"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/svgo"
- }
- },
- "node_modules/svgo/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/svgo/node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
- "dev": true,
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/svgo/node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/svgo/node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/svgo/node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
- "dev": true,
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/svgo/node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
"node_modules/tapable": {
"version": "2.2.1",
"resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
@@ -10781,42 +4021,11 @@
"node": "*"
}
},
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/thingies": {
- "version": "1.21.0",
- "resolved": "https://registry.npmmirror.com/thingies/-/thingies-1.21.0.tgz",
- "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==",
- "dev": true,
- "engines": {
- "node": ">=10.18"
- },
- "peerDependencies": {
- "tslib": "^2"
- }
- },
- "node_modules/thunky": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
- "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
- "dev": true
- },
- "node_modules/tiny-invariant": {
- "version": "1.3.3",
- "resolved": "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
- "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "engines": {
- "node": ">=4"
- }
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
},
"node_modules/to-regex-range": {
"version": "5.0.1",
@@ -10830,36 +4039,6 @@
"node": ">=8.0"
}
},
- "node_modules/toggle-selection": {
- "version": "1.0.6",
- "resolved": "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz",
- "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tree-dump": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/tree-dump/-/tree-dump-1.0.2.tgz",
- "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==",
- "dev": true,
- "engines": {
- "node": ">=10.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/streamich"
- },
- "peerDependencies": {
- "tslib": "2"
- }
- },
"node_modules/ts-api-utils": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
@@ -10892,11 +4071,6 @@
"webpack": "^5.0.0"
}
},
- "node_modules/tslib": {
- "version": "2.6.3",
- "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
- },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
@@ -10921,19 +4095,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dev": true,
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/typescript": {
"version": "5.5.3",
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.5.3.tgz",
@@ -10953,55 +4114,6 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
- "dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/update-browserslist-db": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
@@ -11041,77 +4153,12 @@
"punycode": "^2.1.0"
}
},
- "node_modules/use-callback-ref": {
- "version": "1.3.2",
- "resolved": "https://registry.npmmirror.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz",
- "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==",
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/use-sidecar": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/use-sidecar/-/use-sidecar-1.1.2.tgz",
- "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
- "dependencies": {
- "detect-node-es": "^1.1.0",
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
- "node_modules/utila": {
- "version": "0.4.0",
- "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz",
- "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
- "dev": true
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/v8-to-istanbul": {
"version": "9.3.0",
"resolved": "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
@@ -11126,15 +4173,6 @@
"node": ">=10.12.0"
}
},
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/watchpack": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.1.tgz",
@@ -11148,15 +4186,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/wbuf": {
- "version": "1.7.3",
- "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz",
- "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
- "dev": true,
- "dependencies": {
- "minimalistic-assert": "^1.0.0"
- }
- },
"node_modules/webpack": {
"version": "5.93.0",
"resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.93.0.tgz",
@@ -11272,229 +4301,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/webpack-dev-middleware": {
- "version": "7.3.0",
- "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz",
- "integrity": "sha512-xD2qnNew+F6KwOGZR7kWdbIou/ud7cVqLEXeK1q0nHcNsX/u7ul/fSdlOTX4ntSL5FNFy7ZJJXbf0piF591JYw==",
- "dev": true,
- "dependencies": {
- "colorette": "^2.0.10",
- "memfs": "^4.6.0",
- "mime-types": "^2.1.31",
- "on-finished": "^2.4.1",
- "range-parser": "^1.2.1",
- "schema-utils": "^4.0.0"
- },
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "webpack": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-dev-middleware/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
- "version": "5.1.0",
- "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
- },
- "peerDependencies": {
- "ajv": "^8.8.2"
- }
- },
- "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "node_modules/webpack-dev-middleware/node_modules/schema-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.9",
- "ajv": "^8.9.0",
- "ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.1.0"
- },
- "engines": {
- "node": ">= 12.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/webpack-dev-server": {
- "version": "5.0.4",
- "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz",
- "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==",
- "dev": true,
- "dependencies": {
- "@types/bonjour": "^3.5.13",
- "@types/connect-history-api-fallback": "^1.5.4",
- "@types/express": "^4.17.21",
- "@types/serve-index": "^1.9.4",
- "@types/serve-static": "^1.15.5",
- "@types/sockjs": "^0.3.36",
- "@types/ws": "^8.5.10",
- "ansi-html-community": "^0.0.8",
- "bonjour-service": "^1.2.1",
- "chokidar": "^3.6.0",
- "colorette": "^2.0.10",
- "compression": "^1.7.4",
- "connect-history-api-fallback": "^2.0.0",
- "default-gateway": "^6.0.3",
- "express": "^4.17.3",
- "graceful-fs": "^4.2.6",
- "html-entities": "^2.4.0",
- "http-proxy-middleware": "^2.0.3",
- "ipaddr.js": "^2.1.0",
- "launch-editor": "^2.6.1",
- "open": "^10.0.3",
- "p-retry": "^6.2.0",
- "rimraf": "^5.0.5",
- "schema-utils": "^4.2.0",
- "selfsigned": "^2.4.1",
- "serve-index": "^1.9.1",
- "sockjs": "^0.3.24",
- "spdy": "^4.0.2",
- "webpack-dev-middleware": "^7.1.0",
- "ws": "^8.16.0"
- },
- "bin": {
- "webpack-dev-server": "bin/webpack-dev-server.js"
- },
- "engines": {
- "node": ">= 18.12.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.0.0"
- },
- "peerDependenciesMeta": {
- "webpack": {
- "optional": true
- },
- "webpack-cli": {
- "optional": true
- }
- }
- },
- "node_modules/webpack-dev-server/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/webpack-dev-server/node_modules/ajv-keywords": {
- "version": "5.1.0",
- "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
- },
- "peerDependencies": {
- "ajv": "^8.8.2"
- }
- },
- "node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "node_modules/webpack-dev-server/node_modules/rimraf": {
- "version": "5.0.10",
- "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-5.0.10.tgz",
- "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
- "dev": true,
- "dependencies": {
- "glob": "^10.3.7"
- },
- "bin": {
- "rimraf": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/webpack-dev-server/node_modules/schema-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.9",
- "ajv": "^8.9.0",
- "ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.1.0"
- },
- "engines": {
- "node": ">= 12.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/webpack-merge": {
- "version": "6.0.1",
- "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-6.0.1.tgz",
- "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==",
- "dev": true,
- "dependencies": {
- "clone-deep": "^4.0.1",
- "flat": "^5.0.2",
- "wildcard": "^2.0.1"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
"node_modules/webpack-sources": {
"version": "3.2.3",
"resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
@@ -11526,29 +4332,6 @@
"node": ">=4.0"
}
},
- "node_modules/websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
- "dev": true,
- "dependencies": {
- "http-parser-js": ">=0.5.1",
- "safe-buffer": ">=5.1.0",
- "websocket-extensions": ">=0.1.1"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/websocket-extensions": {
- "version": "0.1.4",
- "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
- "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
@@ -11685,27 +4468,6 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true
},
- "node_modules/ws": {
- "version": "8.18.0",
- "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz",
- "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
- "dev": true,
- "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
- }
- }
- },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
@@ -11715,20 +4477,6 @@
"node": ">=10"
}
},
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz",
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 88a57436db0..0cca52373ac 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.1",
+ "version": "0.9.2",
"keywords": [
"devbox",
"remote development",
@@ -40,10 +40,6 @@
"properties": {}
},
"commands": [
- {
- "command": "devbox.openWebview",
- "title": "Devbox: Open Webview"
- },
{
"command": "devbox.connectRemoteSSH",
"title": "Devbox: Connect to Remote SSH"
@@ -156,9 +152,6 @@
],
"scripts": {
"vscode:prepublish": "npm run build && npm run package",
- "dev": "webpack-dev-server -c webpack.dev.js",
- "build": "webpack -c webpack.prod.js",
- "compile": "webpack",
"watch": "webpack --watch",
"package": "webpack --mode production --devtool hidden-source-map",
"compile-tests": "tsc -p . --outDir out",
@@ -168,41 +161,21 @@
"test": "vscode-test"
},
"devDependencies": {
- "@babel/core": "^7.25.2",
- "@babel/preset-react": "^7.24.7",
- "@babel/preset-typescript": "^7.24.7",
- "@svgr/webpack": "^8.1.0",
- "@types/mocha": "^10.0.7",
"@types/node": "20.x",
- "@types/react": "^18.3.3",
- "@types/react-dom": "^18.3.0",
"@types/vscode": "^1.91.0",
"@typescript-eslint/eslint-plugin": "^7.14.1",
"@typescript-eslint/parser": "^7.11.0",
"@vscode/test-cli": "^0.0.9",
"@vscode/test-electron": "^2.4.0",
"autoprefixer": "^10.4.20",
- "babel-loader": "^9.1.3",
- "css-loader": "^7.1.2",
"eslint": "^8.57.0",
- "html-webpack-plugin": "^5.6.0",
- "style-loader": "^4.0.0",
"ts-loader": "^9.5.1",
"typescript": "^5.4.5",
"webpack": "^5.93.0",
- "webpack-cli": "^5.1.4",
- "webpack-dev-server": "^5.0.4",
- "webpack-merge": "^6.0.1"
+ "webpack-cli": "^5.1.4"
},
"dependencies": {
- "@chakra-ui/react": "^2.8.2",
- "@emotion/react": "^11.13.3",
- "@emotion/styled": "^11.13.0",
"axios": "^1.7.5",
- "framer-motion": "^11.4.0",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "react-router-dom": "^6.26.1",
"ssh-config": "^5.0.0"
}
}
diff --git a/extensions/ide/vscode/devbox/src/commands/webview.ts b/extensions/ide/vscode/devbox/src/commands/webview.ts
deleted file mode 100644
index db1446e5297..00000000000
--- a/extensions/ide/vscode/devbox/src/commands/webview.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import path from 'path'
-import * as vscode from 'vscode'
-
-import { Disposable } from '../common/dispose'
-
-export class Webview extends Disposable {
- constructor(context: vscode.ExtensionContext) {
- super()
- if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
- this._register(
- vscode.commands.registerCommand(
- 'devbox.openWebview',
- this.openWebview.bind(this, context)
- )
- )
- }
- }
-
- private async openWebview(context: vscode.ExtensionContext) {
- const panel = vscode.window.createWebviewPanel(
- 'react',
- 'Create Devbox',
- vscode.ViewColumn.One,
- {
- retainContextWhenHidden: true,
- enableScripts: true,
- }
- )
- let srcUrl = ''
-
- const isProduction =
- context.extensionMode === vscode.ExtensionMode.Production
- if (isProduction) {
- // noscan
- const filePath = vscode.Uri.file(
- path.join(context.extensionPath, 'dist', 'static/js/main.js')
- )
- srcUrl = panel.webview.asWebviewUri(filePath).toString()
- } else {
- srcUrl = 'http://localhost:3001/static/js/main.js'
- }
- panel.webview.html = this.getWebviewContent(srcUrl)
-
- const updateWebview = () => {
- panel.webview.html = this.getWebviewContent(srcUrl)
- }
-
- updateWebview()
-
- const interval = setInterval(updateWebview, 1000)
-
- panel.onDidDispose(
- () => {
- clearInterval(interval)
- },
- null,
- context.subscriptions
- )
- }
- private getWebviewContent(srcUri: string) {
- return `
-
-
-
-
-
- webview-react
-
-
-
-
-
- `
- }
-}
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index b4a98dd3f3f..0a7ab9a9dcc 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -1,6 +1,5 @@
import * as vscode from 'vscode'
-import { Webview } from './commands/webview'
import { RemoteSSHConnector } from './commands/remoteConnector'
import { DevboxListViewProvider } from './providers/DevboxListViewProvider'
import { UriHandler } from './utils/handleUri'
@@ -10,10 +9,6 @@ import { GlobalStateManager } from './utils/globalStateManager'
import { ToolCommands } from './commands/tools'
export async function activate(context: vscode.ExtensionContext) {
- // webview
- const webview = new Webview(context)
- context.subscriptions.push(webview)
-
// tools
const tools = new ToolCommands(context)
context.subscriptions.push(tools)
diff --git a/extensions/ide/vscode/devbox/src/view/App.tsx b/extensions/ide/vscode/devbox/src/view/App.tsx
deleted file mode 100644
index ad7a280bd63..00000000000
--- a/extensions/ide/vscode/devbox/src/view/App.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ChakraProvider } from '@chakra-ui/react'
-import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
-
-import Template from './components/Template'
-import Info from './components/Info'
-
-const App = () => {
- return (
-
-
-
- } />
- } />
-
-
-
- )
-}
-
-export default App
diff --git a/extensions/ide/vscode/devbox/src/view/components/Info.tsx b/extensions/ide/vscode/devbox/src/view/components/Info.tsx
deleted file mode 100644
index 0da6054f234..00000000000
--- a/extensions/ide/vscode/devbox/src/view/components/Info.tsx
+++ /dev/null
@@ -1,129 +0,0 @@
-import { useState } from 'react'
-import {
- Box,
- Button,
- FormControl,
- FormLabel,
- Input,
- Textarea,
- Text,
- InputGroup,
- InputLeftAddon,
-} from '@chakra-ui/react'
-import { useNavigate, useLocation } from 'react-router-dom'
-
-import MyIcon from './MyIcon'
-
-interface NetworkItem {
- port: number
- remoteAccess: boolean
- protocol: string
- publicDomain: string
- customDomain: string
-}
-
-const Info = () => {
- const navigate = useNavigate()
- const location = useLocation()
- const template = location.state || { name: 'go', title: 'Go' }
- const [projectName, setProjectName] = useState('')
- const [networks, setNetworks] = useState([
- {
- port: 80,
- remoteAccess: true,
- protocol: 'https',
- publicDomain: 'hello.cloud.xxx.io',
- customDomain: '',
- },
- ])
- const [githubRepo, setGithubRepo] = useState('')
- const [projectDescription, setProjectDescription] = useState('')
-
- const handleSubmit = () => {
- console.log({ projectName, networks, githubRepo, projectDescription })
- }
-
- return (
-
- {/* navbar */}
-
- navigate('/')}
- cursor={'pointer'}>
-
- Choose Template
-
-
-
- {/* form body */}
-
- {/* template */}
-
- Template
-
-
-
-
- {template.title}
-
-
-
- Quick Start a {template.title} Project
-
-
-
- {/* project name */}
-
- Project Name
- setProjectName(e.target.value)}
- placeholder="Please input project name"
- />
-
-
-
- Github Repo
-
-
-
-
- setGithubRepo(e.target.value)}
- placeholder="Github Repository"
- />
-
-
-
-
- Project Description
-
-
-
- )
-}
-
-export default Info
diff --git a/extensions/ide/vscode/devbox/src/view/components/MyIcon.tsx b/extensions/ide/vscode/devbox/src/view/components/MyIcon.tsx
deleted file mode 100644
index ded08d4537d..00000000000
--- a/extensions/ide/vscode/devbox/src/view/components/MyIcon.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import { Icon } from '@chakra-ui/react'
-import type { IconProps } from '@chakra-ui/react'
-
-const map = {
- c: require('../public/c.svg').default,
- flask: require('../public/flask.svg').default,
- gin: require('../public/gin.svg').default,
- go: require('../public/go.svg').default,
- rust: require('../public/rust.svg').default,
- hertz: require('../public/hertz.svg').default,
- nodejs: require('../public/nodejs.svg').default,
- nextjs: require('../public/nextjs.svg').default,
- java: require('../public/java.svg').default,
- python: require('../public/python.svg').default,
- springBoot: require('../public/spring-boot.svg').default,
- vue: require('../public/vue.svg').default,
- ubuntu: require('../public/ubuntu.svg').default,
- delete: require('../public/info/delete.svg').default,
- add: require('../public/info/add.svg').default,
- attach: require('../public/info/attach.svg').default,
- arrowLeft: require('../public/info/arrow-left.svg').default,
- debian: require('../public/debian.svg').default,
-}
-
-const MyIcon = ({
- name,
- w = 'auto',
- h = 'auto',
- ...props
-}: { name: string } & IconProps) => {
- const IconComponent = map[name as keyof typeof map]
-
- return IconComponent ? (
-
- ) : (
-
- )
-}
-
-export default MyIcon
diff --git a/extensions/ide/vscode/devbox/src/view/components/Template.tsx b/extensions/ide/vscode/devbox/src/view/components/Template.tsx
deleted file mode 100644
index 3bd5e5b4fd6..00000000000
--- a/extensions/ide/vscode/devbox/src/view/components/Template.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import { useState } from 'react'
-import { Box, Grid, Text, Button } from '@chakra-ui/react'
-import { useNavigate } from 'react-router-dom'
-
-import MyIcon from './MyIcon'
-import { templates } from '../constants/template'
-
-export interface TemplateItem {
- name: string
- title: string
-}
-
-const Template = () => {
- const navigate = useNavigate()
- const handleUseTemplate = ({ name, title }: TemplateItem) => {
- navigate('/info', { state: { name, title } })
- }
-
- return (
-
-
- Template
-
- {templates.map((category) => (
-
-
- {category.category}
-
-
- {category.items.map((item) => (
-
- ))}
-
-
- ))}
-
- )
-}
-
-const TemplateCard = ({
- item,
- onUse,
-}: {
- item: TemplateItem
- onUse: ({ name, title }: TemplateItem) => void
-}) => {
- const [isHovered, setIsHovered] = useState(false)
-
- return (
- setIsHovered(true)}
- onMouseLeave={() => setIsHovered(false)}
- cursor="pointer"
- bg={'#F3F3F3'}
- _hover={{ bg: '#E3E3E3' }}
- display={'flex'}
- alignItems={'center'}
- justifyContent={'space-between'}
- onClick={() => onUse({ name: item.name, title: item.title })}>
-
-
-
-
-
- {item.title}
-
-
- Quick Start a {item.title} Project
-
-
-
-
- )
-}
-
-export default Template
diff --git a/extensions/ide/vscode/devbox/src/view/constants/template.ts b/extensions/ide/vscode/devbox/src/view/constants/template.ts
deleted file mode 100644
index a065fe1d271..00000000000
--- a/extensions/ide/vscode/devbox/src/view/constants/template.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-export const templates = [
- {
- category: 'Language',
- items: [
- {
- title: 'Go',
- name: 'go',
- },
- {
- title: 'Python',
- name: 'python',
- },
- {
- title: 'Node.js',
- name: 'nodejs',
- },
- { title: 'C', name: 'c' },
- { title: 'Rust', name: 'rust' },
- ],
- },
- {
- category: 'Framework',
- items: [
- { name: 'gin', title: 'Gin' },
- {
- name: 'hertz',
- title: 'Hertz',
- },
- { title: 'Flask', name: 'flask' },
- {
- title: 'Vue.js',
- name: 'vue',
- },
- {
- title: 'Next.js',
- name: 'nextjs',
- },
- {
- title: 'SpringBoot',
- name: 'springBoot',
- },
- ],
- },
- {
- category: 'Operating System',
- items: [
- {
- title: 'Ubuntu',
- name: 'ubuntu',
- },
- {
- title: 'Debian',
- name: 'debian',
- },
- ],
- },
-]
diff --git a/extensions/ide/vscode/devbox/src/view/index.html b/extensions/ide/vscode/devbox/src/view/index.html
deleted file mode 100644
index dfeecc3b88c..00000000000
--- a/extensions/ide/vscode/devbox/src/view/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- webview-react
-
-
-
-
-
diff --git a/extensions/ide/vscode/devbox/src/view/index.tsx b/extensions/ide/vscode/devbox/src/view/index.tsx
deleted file mode 100644
index 685172a0848..00000000000
--- a/extensions/ide/vscode/devbox/src/view/index.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import { createRoot } from 'react-dom/client'
-
-import App from './App'
-
-const root = document.getElementById('root')
-if (root) {
- createRoot(root).render()
-}
diff --git a/extensions/ide/vscode/devbox/src/view/public/c.svg b/extensions/ide/vscode/devbox/src/view/public/c.svg
deleted file mode 100644
index 28d09352393..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/c.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/debian.svg b/extensions/ide/vscode/devbox/src/view/public/debian.svg
deleted file mode 100644
index e876a53c88f..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/debian.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/flask.svg b/extensions/ide/vscode/devbox/src/view/public/flask.svg
deleted file mode 100644
index 7bec65d3e7b..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/flask.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/gin.svg b/extensions/ide/vscode/devbox/src/view/public/gin.svg
deleted file mode 100644
index f1581434a74..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/gin.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/go.svg b/extensions/ide/vscode/devbox/src/view/public/go.svg
deleted file mode 100644
index 47467683ecd..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/go.svg
+++ /dev/null
@@ -1,30 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/hertz.svg b/extensions/ide/vscode/devbox/src/view/public/hertz.svg
deleted file mode 100644
index 4607371b959..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/hertz.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/info/add.svg b/extensions/ide/vscode/devbox/src/view/public/info/add.svg
deleted file mode 100644
index 69f12fada89..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/info/add.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/info/arrow-left.svg b/extensions/ide/vscode/devbox/src/view/public/info/arrow-left.svg
deleted file mode 100644
index 317547225a4..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/info/arrow-left.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/info/attach.svg b/extensions/ide/vscode/devbox/src/view/public/info/attach.svg
deleted file mode 100644
index 8e3f4f22c7d..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/info/attach.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/info/delete.svg b/extensions/ide/vscode/devbox/src/view/public/info/delete.svg
deleted file mode 100644
index a7c9f5bd80b..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/info/delete.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/java.svg b/extensions/ide/vscode/devbox/src/view/public/java.svg
deleted file mode 100644
index d93bdcc87ed..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/java.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/nextjs.svg b/extensions/ide/vscode/devbox/src/view/public/nextjs.svg
deleted file mode 100644
index e60aee1a277..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/nextjs.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/nodejs.svg b/extensions/ide/vscode/devbox/src/view/public/nodejs.svg
deleted file mode 100644
index 2c2662a6c17..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/nodejs.svg
+++ /dev/null
@@ -1,26 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/python.svg b/extensions/ide/vscode/devbox/src/view/public/python.svg
deleted file mode 100644
index c02055de0c3..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/python.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/rust.svg b/extensions/ide/vscode/devbox/src/view/public/rust.svg
deleted file mode 100644
index fa81c55e634..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/rust.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/spring-boot.svg b/extensions/ide/vscode/devbox/src/view/public/spring-boot.svg
deleted file mode 100644
index 0b29fa8ac54..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/spring-boot.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/ubuntu.svg b/extensions/ide/vscode/devbox/src/view/public/ubuntu.svg
deleted file mode 100644
index 0108d0f22f3..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/ubuntu.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/src/view/public/vue.svg b/extensions/ide/vscode/devbox/src/view/public/vue.svg
deleted file mode 100644
index a18a6826070..00000000000
--- a/extensions/ide/vscode/devbox/src/view/public/vue.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
diff --git a/extensions/ide/vscode/devbox/webpack.base.js b/extensions/ide/vscode/devbox/webpack.base.js
deleted file mode 100644
index 48740526f1e..00000000000
--- a/extensions/ide/vscode/devbox/webpack.base.js
+++ /dev/null
@@ -1,45 +0,0 @@
-const path = require('path')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-
-module.exports = {
- entry: path.join(__dirname, './src/view/index.tsx'),
- output: {
- filename: './static/js/[name].js',
- path: path.join(__dirname, './dist'),
- clean: true,
- publicPath: '/',
- },
- module: {
- rules: [
- {
- test: /.(ts|tsx)$/,
- use: {
- loader: 'babel-loader',
- options: {
- presets: [
- ['@babel/preset-react', { runtime: 'automatic' }],
- '@babel/preset-typescript',
- ],
- },
- },
- },
- {
- test: /\.css$/,
- use: ['style-loader', 'css-loader'],
- },
- {
- test: /\.svg$/,
- use: ['@svgr/webpack'],
- },
- ],
- },
- resolve: {
- extensions: ['.js', '.tsx', '.ts'],
- },
- plugins: [
- new HtmlWebpackPlugin({
- template: path.resolve(__dirname, './src/view/index.html'),
- inject: true,
- }),
- ],
-}
diff --git a/extensions/ide/vscode/devbox/webpack.dev.js b/extensions/ide/vscode/devbox/webpack.dev.js
deleted file mode 100644
index e3a22d04433..00000000000
--- a/extensions/ide/vscode/devbox/webpack.dev.js
+++ /dev/null
@@ -1,17 +0,0 @@
-const path = require('path')
-const { merge } = require('webpack-merge')
-const baseConfig = require('./webpack.base.js')
-
-module.exports = merge(baseConfig, {
- mode: 'development',
- devtool: 'source-map',
- devServer: {
- port: 3001,
- compress: false,
- hot: true,
- historyApiFallback: true,
- static: {
- directory: path.join(__dirname, './src/view/public'),
- },
- },
-})
diff --git a/extensions/ide/vscode/devbox/webpack.prod.js b/extensions/ide/vscode/devbox/webpack.prod.js
deleted file mode 100644
index 88b57243ce6..00000000000
--- a/extensions/ide/vscode/devbox/webpack.prod.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const { merge } = require('webpack-merge')
-const baseConfig = require('./webpack.base.js')
-
-module.exports = merge(baseConfig, {
- mode: 'production',
-})
From 8d8d4cfd79656fd31f5b85c3e6bc4cd9583bd321 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 23:02:41 +0800
Subject: [PATCH 026/105] fix: write ssh_config bug
---
.../devbox/src/commands/remoteConnector.ts | 13 +--
.../ide/vscode/devbox/src/utils/sshConfig.ts | 105 ++++++++----------
2 files changed, 50 insertions(+), 68 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index 7d7c13f0bc5..a21104ce2ca 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -101,7 +101,7 @@ export class RemoteSSHConnector extends Disposable {
if (skipLines) {
if (
line.startsWith('Host ') ||
- i === existingDevboxConfigLines.length - 1
+ i === existingDevboxConfigLines.length
) {
skipLines = false
}
@@ -118,11 +118,7 @@ export class RemoteSSHConnector extends Disposable {
)
// 5. write new ssh config to .ssh/sealos/devbox_config
- fs.appendFileSync(defaultDevboxSSHConfigPath, sshConfigString)
- vscode.window.showInformationMessage(
- `SSH configuration for ${sshHost} with port ${sshPort} has been added.`,
- { modal: false }
- )
+ fs.appendFileSync(defaultDevboxSSHConfigPath, `\n${sshConfigString}\n`)
} catch (error) {
vscode.window.showErrorMessage(
`Failed to write SSH configuration: ${error}`
@@ -160,11 +156,6 @@ export class RemoteSSHConnector extends Disposable {
// refresh devboxList
await vscode.commands.executeCommand('devboxDashboard.refresh')
-
- await vscode.window.showInformationMessage(
- `Connected to ${sshHost} with port ${sshPort} successfully.`,
- { modal: false }
- )
}
private async ensureRemoteSSHExtInstalled(): Promise {
diff --git a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
index 2bbee4f3cb8..360996ba692 100644
--- a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
+++ b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
@@ -28,77 +28,68 @@ export function convertSSHConfigToVersion2(filePath: string) {
const output: Record> = {}
let result = ''
- fs.readFile(filePath, 'utf8', (err, data) => {
- if (err) {
- console.error('Error reading file:', err)
- return
- }
+ const data = fs.readFileSync(filePath, 'utf8')
- const lines = data.split('\n')
- let currentWorkDir: any = null
- let formattedHostName = ''
+ const lines = data.split('\n')
+ let currentWorkDir: any = null
+ let formattedHostName = ''
- lines.forEach((line) => {
- line = line.trim()
+ lines.forEach((line) => {
+ line = line.trim()
- // 处理 WorkingDir 行
- if (line.startsWith('# WorkingDir:')) {
- currentWorkDir = line.split(': ')[1].trim()
- return
- }
+ if (line.startsWith('# WorkingDir:')) {
+ currentWorkDir = line.split(': ')[1].trim()
+ return
+ }
- // 处理 Host 行
- const hostMatch = line.match(/^Host (.+)/)
- if (hostMatch) {
- let hostName = hostMatch[1]
- if (hostName.includes('_ns-')) {
- formattedHostName = hostName
+ const hostMatch = line.match(/^Host (.+)/)
+ if (hostMatch) {
+ let hostName = hostMatch[1]
+ if (hostName.includes('_ns-')) {
+ formattedHostName = hostName
+ } else {
+ hostName = hostName.replace(/-([^-\s]+)$/, '')
+ const namespace = hostName.match(/ns-([a-z0-9]+)(?=-)/)
+ if (namespace) {
+ formattedHostName = hostName.replace(
+ /^(.+)-ns-([a-z0-9]+)-(.+)$/,
+ '$1_ns-$2_$3'
+ )
} else {
- hostName = hostName.replace(/-([^-\s]+)$/, '')
- const namespace = hostName.match(/ns-([a-z0-9]+)(?=-)/)
- if (namespace) {
- formattedHostName = hostName.replace(
- /^(.+)-ns-([a-z0-9]+)-(.+)$/,
- '$1_ns-$2_$3'
- )
- } else {
- formattedHostName = hostName
- }
- }
-
- // 初始化 Host 对象
- output[formattedHostName] = {
- workDir: currentWorkDir,
+ formattedHostName = hostName
}
- return
}
- // 处理其他配置项
- if (currentWorkDir && line) {
- const keyValueMatch = line.match(/(\S+)\s+(.+)/)
- if (keyValueMatch) {
- const [_, key, value] = keyValueMatch
- output[formattedHostName][key] = value
- }
+ output[formattedHostName] = {
+ workDir: currentWorkDir,
}
- })
+ return
+ }
- for (const [host, config] of Object.entries(output)) {
- if (config.workDir) {
- GlobalStateManager.setWorkDir(host, config.workDir)
+ if (line && !line.startsWith('# WorkingDir:')) {
+ const keyValueMatch = line.match(/(\S+)\s+(.+)/)
+ if (keyValueMatch) {
+ const [_, key, value] = keyValueMatch
+ output[formattedHostName][key] = value
}
+ }
+ })
- result += `Host ${host}\n`
- for (const [key, value] of Object.entries(config)) {
- if (key !== 'workDir') {
- result += ` ${key} ${value}\n`
- }
+ for (const [host, config] of Object.entries(output)) {
+ if (config.workDir) {
+ GlobalStateManager.setWorkDir(host, config.workDir)
+ }
+
+ result += `Host ${host}\n`
+ for (const [key, value] of Object.entries(config)) {
+ if (key !== 'workDir') {
+ result += ` ${key} ${value}\n`
}
- result += '\n'
}
- result = result.trim()
- fs.writeFileSync(filePath, result, 'utf8')
- })
+ result += '\n'
+ }
+ result = result.trim()
+ fs.writeFileSync(filePath, result, { encoding: 'utf8', flag: 'w' })
}
export function ensureFileExists(filePath: string, parentDir: string) {
From a4dba07b7ce848b1b08dfcad90ca6351e8d9de10 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Thu, 7 Nov 2024 23:04:51 +0800
Subject: [PATCH 027/105] chore: package adjust
---
extensions/ide/vscode/devbox/package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 0cca52373ac..ee528373294 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.2",
+ "version": "0.9.3",
"keywords": [
"devbox",
"remote development",
@@ -151,7 +151,7 @@
"ms-vscode-remote.remote-ssh"
],
"scripts": {
- "vscode:prepublish": "npm run build && npm run package",
+ "vscode:prepublish": "npm run package",
"watch": "webpack --watch",
"package": "webpack --mode production --devtool hidden-source-map",
"compile-tests": "tsc -p . --outDir out",
From 37b919888fbb9bd4599bfcba2239db72e69de126 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 00:25:50 +0800
Subject: [PATCH 028/105] chore: change some file
---
extensions/ide/vscode/devbox/.gitignore | 2 +-
extensions/ide/vscode/devbox/package-lock.json | 4 ++--
extensions/ide/vscode/devbox/package.json | 5 +++--
extensions/ide/vscode/devbox/src/api/index.ts | 1 +
4 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/extensions/ide/vscode/devbox/.gitignore b/extensions/ide/vscode/devbox/.gitignore
index c07295b244e..0d49789abb1 100644
--- a/extensions/ide/vscode/devbox/.gitignore
+++ b/extensions/ide/vscode/devbox/.gitignore
@@ -4,4 +4,4 @@ node_modules
.vscode-test/
*.vsix
-.env*.local
+.env
diff --git a/extensions/ide/vscode/devbox/package-lock.json b/extensions/ide/vscode/devbox/package-lock.json
index 15b8ed191e8..2d82c7f5d0d 100644
--- a/extensions/ide/vscode/devbox/package-lock.json
+++ b/extensions/ide/vscode/devbox/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "devbox-aio",
- "version": "0.9.2",
+ "version": "0.9.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "devbox-aio",
- "version": "0.9.2",
+ "version": "0.9.3",
"license": "MIT",
"dependencies": {
"axios": "^1.7.5",
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index ee528373294..5a38e5535f3 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.3",
+ "version": "0.9.4",
"keywords": [
"devbox",
"remote development",
@@ -152,12 +152,13 @@
],
"scripts": {
"vscode:prepublish": "npm run package",
+ "compile": "webpack",
"watch": "webpack --watch",
"package": "webpack --mode production --devtool hidden-source-map",
"compile-tests": "tsc -p . --outDir out",
"watch-tests": "tsc -p . -w --outDir out",
"pretest": "npm run compile-tests && npm run compile && npm run lint",
- "lint": "eslint src --ext ts",
+ "lint": "eslint src",
"test": "vscode-test"
},
"devDependencies": {
diff --git a/extensions/ide/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
index 68ff0c4b185..d7dad489b34 100644
--- a/extensions/ide/vscode/devbox/src/api/index.ts
+++ b/extensions/ide/vscode/devbox/src/api/index.ts
@@ -50,6 +50,7 @@ const showStatus = (status: number) => {
}
const getBaseURL = () => {
+ // inject env from launch.json(configurations.env)
const isDevelopment = process.env.NODE_ENV === 'development'
// TODO: 硬编码改为软编码
return isDevelopment
From 6659db05553cf52b06367cd30f9f444997c1d3db Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 01:29:17 +0800
Subject: [PATCH 029/105] feat: copy connection string
---
extensions/ide/vscode/devbox/package.json | 4 ++++
extensions/ide/vscode/devbox/src/commands/tools.ts | 8 ++++++++
.../vscode/devbox/src/providers/DBViewProvider.ts | 13 +++++++++++--
3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 5a38e5535f3..c88bc5630d4 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -67,6 +67,10 @@
{
"command": "devbox.openExternalLink",
"title": "Devbox:Open in Browser"
+ },
+ {
+ "command": "devbox.copy",
+ "title": "Copy Connection String"
}
],
"views": {
diff --git a/extensions/ide/vscode/devbox/src/commands/tools.ts b/extensions/ide/vscode/devbox/src/commands/tools.ts
index a94ac643bf8..b57e4303821 100644
--- a/extensions/ide/vscode/devbox/src/commands/tools.ts
+++ b/extensions/ide/vscode/devbox/src/commands/tools.ts
@@ -12,6 +12,14 @@ export class ToolCommands extends Disposable {
vscode.env.openExternal(vscode.Uri.parse(args))
})
)
+ this._register(
+ vscode.commands.registerCommand('devbox.copy', (connection: string) => {
+ vscode.env.clipboard.writeText(connection)
+ vscode.window.showInformationMessage(
+ 'Connection string copied to clipboard!'
+ )
+ })
+ )
}
}
}
diff --git a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
index d7dfa47ad44..da8b7b664dd 100644
--- a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
@@ -71,7 +71,7 @@ export class DBViewProvider implements vscode.TreeDataProvider {
)}${database.password.padEnd(15)}${database.host.padEnd(
20
)}${database.port.toString().padEnd(10)}${database.connection}`
- items.push(new DatabaseItem(label, 'database'))
+ items.push(new DatabaseItem(label, 'database', database.connection))
})
return items
@@ -83,8 +83,17 @@ export class DBViewProvider implements vscode.TreeDataProvider {
class DatabaseItem extends vscode.TreeItem {
constructor(
public override readonly label: string,
- public override readonly contextValue: string
+ public override readonly contextValue: string,
+ public readonly connection?: string
) {
super(label, vscode.TreeItemCollapsibleState.None)
+
+ if (connection) {
+ this.command = {
+ title: 'Copy Connection String',
+ command: 'devbox.copy',
+ arguments: [connection],
+ }
+ }
}
}
From 5303496614f4fca91efe877b2aac04c4f1c2ba97 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 10:31:48 +0800
Subject: [PATCH 030/105] fix: support remote-ssh customConfigFile
---
extensions/ide/vscode/devbox/package.json | 2 +-
.../devbox/src/commands/remoteConnector.ts | 42 +++++++++++++++----
2 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index c88bc5630d4..7b9a3597fc2 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.4",
+ "version": "0.9.5",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index a21104ce2ca..61620392ebe 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -27,23 +27,51 @@ export class RemoteSSHConnector extends Disposable {
)
}
}
+
+ private replaceHomePathInConfig(content: string): string {
+ return content.replace(
+ /Include ~\/.ssh\/sealos\/devbox_config/g,
+ `Include ${os.homedir()}/.ssh/sealos/devbox_config`
+ )
+ }
+
private sshConfigPreProcess() {
// 1. ensure .ssh/config exists
ensureFileExists(defaultSSHConfigPath, '.ssh')
// 2. ensure .ssh/sealos/devbox_config exists
ensureFileExists(defaultDevboxSSHConfigPath, '.ssh/sealos')
- // 3. ensure .ssh/config includes .ssh/sealos/devbox_config
- const existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf8')
- if (!existingSSHConfig.includes('Include ~/.ssh/sealos/devbox_config')) {
- let existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf-8')
- const newConfig =
- 'Include ~/.ssh/sealos/devbox_config\n' + existingSSHConfig
- fs.writeFileSync(defaultSSHConfigPath, newConfig)
+
+ const customConfigFile = vscode.workspace
+ .getConfiguration('remote.SSH')
+ .get('configFile', '')
+
+ if (customConfigFile) {
+ const resolvedPath = customConfigFile.replace(/^~/, os.homedir())
+ try {
+ const existingSSHConfig = fs.readFileSync(resolvedPath, 'utf8')
+ const updatedConfig = this.replaceHomePathInConfig(existingSSHConfig)
+ if (updatedConfig !== existingSSHConfig) {
+ fs.writeFileSync(resolvedPath, updatedConfig)
+ }
+ } catch (error) {
+ console.error(`Error reading/writing SSH config: ${error}`)
+ this.handleDefaultSSHConfig()
+ }
+ } else {
+ this.handleDefaultSSHConfig()
}
// 4. ensure sshConfig from version1 to version2
convertSSHConfigToVersion2(defaultDevboxSSHConfigPath)
}
+ private handleDefaultSSHConfig() {
+ const existingSSHConfig = fs.readFileSync(defaultSSHConfigPath, 'utf8')
+ const updatedConfig = this.replaceHomePathInConfig(existingSSHConfig)
+ if (updatedConfig !== existingSSHConfig) {
+ fs.writeFileSync(defaultSSHConfigPath, updatedConfig)
+ }
+ }
+
private async connectRemoteSSH(args: {
sshDomain: string
sshPort: string
From e761333cc6bd52e626db9b4ed1559fbff27e2dd3 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 11:58:29 +0800
Subject: [PATCH 031/105] feat: different region support
---
extensions/ide/vscode/devbox/package.json | 2 +-
extensions/ide/vscode/devbox/src/api/index.ts | 16 +++++-----
.../ide/vscode/devbox/src/constant/api.ts | 8 +++++
extensions/ide/vscode/devbox/src/extension.ts | 14 ++++++++-
.../src/providers/DevboxListViewProvider.ts | 30 +++++++++++++++----
.../devbox/src/utils/globalStateManager.ts | 27 +++++++++++++++++
.../ide/vscode/devbox/src/utils/handleUri.ts | 5 ++++
7 files changed, 86 insertions(+), 16 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/src/constant/api.ts
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 7b9a3597fc2..304be77438b 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.5",
+ "version": "0.9.6",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
index d7dad489b34..2234d3218cf 100644
--- a/extensions/ide/vscode/devbox/src/api/index.ts
+++ b/extensions/ide/vscode/devbox/src/api/index.ts
@@ -5,6 +5,11 @@ import axios, {
AxiosRequestConfig,
} from 'axios'
import { GlobalStateManager } from '../utils/globalStateManager'
+import {
+ defaultProductionUrl,
+ developmentUrl,
+ isDevelopment,
+} from '../constant/api'
import * as vscode from 'vscode'
const showStatus = (status: number) => {
@@ -49,17 +54,12 @@ const showStatus = (status: number) => {
return `${message}, please check the network or contact the administrator!`
}
-const getBaseURL = () => {
- // inject env from launch.json(configurations.env)
- const isDevelopment = process.env.NODE_ENV === 'development'
- // TODO: 硬编码改为软编码
- return isDevelopment
- ? 'http://127.0.0.1:3000'
- : 'https://devbox.usw.sailos.io'
+export const updateBaseUrl = (newBaseUrl: string) => {
+ request.defaults.baseURL = newBaseUrl
}
const request = axios.create({
- baseURL: getBaseURL(),
+ baseURL: isDevelopment ? developmentUrl : defaultProductionUrl,
withCredentials: true,
timeout: 60000,
})
diff --git a/extensions/ide/vscode/devbox/src/constant/api.ts b/extensions/ide/vscode/devbox/src/constant/api.ts
new file mode 100644
index 00000000000..f76e602afe7
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/constant/api.ts
@@ -0,0 +1,8 @@
+export const isDevelopment = process.env.NODE_ENV === 'development'
+
+export const developmentUrl = 'http://127.0.0.1:3000'
+export const uswUrl = 'https://usw.sailos.io'
+export const hzhUrl = 'https://hzh.sealos.run'
+export const bjaUrl = 'https://bja.sealos.run'
+export const gzgUrl = 'https://gzg.sealos.run'
+export const defaultProductionUrl = `http://devbox.${uswUrl}`
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index 0a7ab9a9dcc..372fc160856 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -7,6 +7,8 @@ import { NetworkViewProvider } from './providers/NetworkViewProvider'
import { DBViewProvider } from './providers/DBViewProvider'
import { GlobalStateManager } from './utils/globalStateManager'
import { ToolCommands } from './commands/tools'
+import { updateBaseUrl } from './api'
+import { isDevelopment } from './constant/api'
export async function activate(context: vscode.ExtensionContext) {
// tools
@@ -21,9 +23,19 @@ export async function activate(context: vscode.ExtensionContext) {
const devboxListViewProvider = new DevboxListViewProvider(context)
context.subscriptions.push(devboxListViewProvider)
- // token manager
+ // globalState manager
GlobalStateManager.init(context)
+ // update api base url
+ const workspaceFolders = vscode.workspace.workspaceFolders
+ if (workspaceFolders && workspaceFolders.length > 0 && !isDevelopment) {
+ const workspaceFolder = workspaceFolders[0]
+ const remoteUri = workspaceFolder.uri.authority
+ const devboxId = remoteUri.replace(/^ssh-remote\+/, '') // devbox = sshHostLabel
+ const region = GlobalStateManager.getRegion(devboxId)
+ updateBaseUrl(`http://devbox.${region}`)
+ }
+
// network view
const networkViewProvider = new NetworkViewProvider()
context.subscriptions.push(
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index c9b420eb3ec..ae6ead84bea 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -7,6 +7,7 @@ import { DevboxListItem } from '../types/devbox'
import { defaultDevboxSSHConfigPath } from '../constant/file'
import { GlobalStateManager } from '../utils/globalStateManager'
import { convertSSHConfigToVersion2 } from '../utils/sshConfig'
+import { uswUrl, hzhUrl, bjaUrl, gzgUrl } from '../constant/api'
export class DevboxListViewProvider extends Disposable {
constructor(context: vscode.ExtensionContext) {
@@ -105,12 +106,29 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
}
// TODO: 根据不同的代理跳转到不同的页面,而且可以进行设置里的配置
- create(item: MyTreeItem) {
- vscode.commands.executeCommand('devbox.openExternalLink', [
- `https://usw.sailos.io/?openapp=system-devbox?${encodeURIComponent(
- `page=create`
- )}`,
- ])
+ async create(item: MyTreeItem) {
+ const regions = [
+ { label: 'USW', url: uswUrl },
+ { label: 'HZH', url: hzhUrl },
+ { label: 'BJA', url: bjaUrl },
+ { label: 'GZG', url: gzgUrl },
+ ]
+
+ const selected = await vscode.window.showQuickPick(
+ regions.map((region) => region.label),
+ {
+ placeHolder: 'Please select a region',
+ }
+ )
+
+ if (selected) {
+ const targetUrl = regions.find((r) => r.label === selected)?.url
+ vscode.commands.executeCommand('devbox.openExternalLink', [
+ `${targetUrl}/?openapp=system-devbox?${encodeURIComponent(
+ 'page=create'
+ )}`,
+ ])
+ }
}
async open(item: MyTreeItem) {
diff --git a/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts b/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
index 22d260da9d1..aa5e09e2c76 100644
--- a/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
+++ b/extensions/ide/vscode/devbox/src/utils/globalStateManager.ts
@@ -3,6 +3,7 @@ import * as vscode from 'vscode'
interface DevboxGlobalState {
token: string
workDir: string
+ region: string
}
export class GlobalStateManager {
@@ -17,6 +18,7 @@ export class GlobalStateManager {
// devboxId:{
// token: string
// workDir: string
+ // region: string
// }
static getToken(devboxId: string): string | undefined {
const state = (GlobalStateManager.context.globalState.get(
@@ -24,6 +26,7 @@ export class GlobalStateManager {
) as DevboxGlobalState) || {
token: '',
workDir: '',
+ region: '',
}
return state.token
}
@@ -33,10 +36,22 @@ export class GlobalStateManager {
) as DevboxGlobalState) || {
token: '',
workDir: '',
+ region: '',
}
return state.workDir
}
+ static getRegion(devboxId: string): string | undefined {
+ const state = (GlobalStateManager.context.globalState.get(
+ devboxId
+ ) as DevboxGlobalState) || {
+ token: '',
+ workDir: '',
+ region: '',
+ }
+ return state.region
+ }
+
static setToken(devboxId: string, token: string) {
const state =
(GlobalStateManager.context.globalState.get(
@@ -61,6 +76,18 @@ export class GlobalStateManager {
GlobalStateManager.context.globalState.update(devboxId, newState)
}
+ static setRegion(devboxId: string, region: string) {
+ const state =
+ (GlobalStateManager.context.globalState.get(
+ devboxId
+ ) as DevboxGlobalState) || {}
+ const newState = {
+ ...state,
+ region,
+ }
+ GlobalStateManager.context.globalState.update(devboxId, newState)
+ }
+
static remove(devboxId: string) {
GlobalStateManager.context.globalState.update(devboxId, undefined)
}
diff --git a/extensions/ide/vscode/devbox/src/utils/handleUri.ts b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
index c95b19d5fbe..077e38e615d 100644
--- a/extensions/ide/vscode/devbox/src/utils/handleUri.ts
+++ b/extensions/ide/vscode/devbox/src/utils/handleUri.ts
@@ -24,6 +24,11 @@ export class UriHandler {
GlobalStateManager.setWorkDir(params.sshHostLabel, params.workingDir)
}
+ if (params.sshDomain && params.sshHostLabel) {
+ const region = params.sshDomain.split('@')[1]
+ GlobalStateManager.setRegion(params.sshHostLabel, region)
+ }
+
if (params.sshPort === '0') {
vscode.window.showInformationMessage(
`SSH Port is not correct,maybe your devbox's nodeport is over the limit`
From 9059067f34bbc431832240a571366fe37350c3a6 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 12:00:07 +0800
Subject: [PATCH 032/105] perf: some code adjust
---
extensions/ide/vscode/devbox/src/api/index.ts | 5 +++--
extensions/ide/vscode/devbox/src/extension.ts | 8 ++++----
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
index 2234d3218cf..8d465693cf2 100644
--- a/extensions/ide/vscode/devbox/src/api/index.ts
+++ b/extensions/ide/vscode/devbox/src/api/index.ts
@@ -1,16 +1,17 @@
+import * as vscode from 'vscode'
import axios, {
InternalAxiosRequestConfig,
AxiosHeaders,
AxiosResponse,
AxiosRequestConfig,
} from 'axios'
-import { GlobalStateManager } from '../utils/globalStateManager'
+
import {
defaultProductionUrl,
developmentUrl,
isDevelopment,
} from '../constant/api'
-import * as vscode from 'vscode'
+import { GlobalStateManager } from '../utils/globalStateManager'
const showStatus = (status: number) => {
let message = ''
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index 372fc160856..b8489c62923 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -1,14 +1,14 @@
import * as vscode from 'vscode'
+import { updateBaseUrl } from './api'
+import { UriHandler } from './utils/handleUri'
+import { isDevelopment } from './constant/api'
+import { ToolCommands } from './commands/tools'
import { RemoteSSHConnector } from './commands/remoteConnector'
import { DevboxListViewProvider } from './providers/DevboxListViewProvider'
-import { UriHandler } from './utils/handleUri'
import { NetworkViewProvider } from './providers/NetworkViewProvider'
import { DBViewProvider } from './providers/DBViewProvider'
import { GlobalStateManager } from './utils/globalStateManager'
-import { ToolCommands } from './commands/tools'
-import { updateBaseUrl } from './api'
-import { isDevelopment } from './constant/api'
export async function activate(context: vscode.ExtensionContext) {
// tools
From 09d66fd41e902d8f65f36e1d2ad4430b5cbe6066 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 14:53:05 +0800
Subject: [PATCH 033/105] feat: refresh button of db and network
---
extensions/ide/vscode/devbox/package.json | 35 ++++++++++++++-
extensions/ide/vscode/devbox/src/extension.ts | 22 ++-------
.../devbox/src/providers/DBViewProvider.ts | 44 +++++++++++++++---
.../src/providers/NetworkViewProvider.ts | 45 ++++++++++++++++---
.../app/api/v1/getDevboxDetail/route.ts | 2 +-
.../devbox/app/api/v1/getNetworkList/route.ts | 2 +-
6 files changed, 117 insertions(+), 33 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 304be77438b..225e14c2f71 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.6",
+ "version": "0.9.7",
"keywords": [
"devbox",
"remote development",
@@ -37,7 +37,18 @@
"configuration": {
"type": "object",
"title": "devbox",
- "properties": {}
+ "properties": {
+ "devbox.region": {
+ "type": "string",
+ "default": "默认值",
+ "description": "设置项1的描述"
+ },
+ "yourExtension.setting2": {
+ "type": "boolean",
+ "default": true,
+ "description": "设置项2的描述"
+ }
+ }
},
"commands": [
{
@@ -71,6 +82,16 @@
{
"command": "devbox.copy",
"title": "Copy Connection String"
+ },
+ {
+ "command": "devbox.refreshDatabase",
+ "title": "Refresh Database",
+ "icon": "images/refresh.svg"
+ },
+ {
+ "command": "devbox.refreshNetwork",
+ "title": "Refresh Network",
+ "icon": "images/refresh.svg"
}
],
"views": {
@@ -135,6 +156,16 @@
"command": "devboxDashboard.refresh",
"when": "view == devboxDashboard",
"group": "navigation"
+ },
+ {
+ "command": "devbox.refreshDatabase",
+ "when": "view == dbView",
+ "group": "navigation"
+ },
+ {
+ "command": "devbox.refreshNetwork",
+ "when": "view == networkView",
+ "group": "navigation"
}
],
"view/item/context": [
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index b8489c62923..990f1ef92b3 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -37,26 +37,12 @@ export async function activate(context: vscode.ExtensionContext) {
}
// network view
- const networkViewProvider = new NetworkViewProvider()
- context.subscriptions.push(
- vscode.window.registerTreeDataProvider('networkView', networkViewProvider)
- )
- context.subscriptions.push(
- vscode.workspace.onDidChangeWorkspaceFolders(() => {
- networkViewProvider.refresh()
- })
- )
+ const networkViewProvider = new NetworkViewProvider(context)
+ context.subscriptions.push(networkViewProvider)
// db view
- const dbViewProvider = new DBViewProvider()
- context.subscriptions.push(
- vscode.window.registerTreeDataProvider('dbView', dbViewProvider)
- )
- context.subscriptions.push(
- vscode.workspace.onDidChangeWorkspaceFolders(() => {
- dbViewProvider.refresh()
- })
- )
+ const dbViewProvider = new DBViewProvider(context)
+ context.subscriptions.push(dbViewProvider)
// handle uri
const uriHandler = new UriHandler()
diff --git a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
index da8b7b664dd..086f2cbd8af 100644
--- a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
@@ -1,5 +1,6 @@
import * as vscode from 'vscode'
import { getDBList, DBResponse } from '../api/db'
+import { Disposable } from '../common/dispose'
interface Database {
dbType: string
@@ -10,7 +11,40 @@ interface Database {
connection: string
}
-export class DBViewProvider implements vscode.TreeDataProvider {
+export class DBViewProvider extends Disposable {
+ constructor(context: vscode.ExtensionContext) {
+ super()
+ if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
+ // view
+ const dbTreeDataProvider = new MyDbTreeDataProvider()
+ const dbView = vscode.window.createTreeView('dbView', {
+ treeDataProvider: dbTreeDataProvider,
+ })
+ this._register(dbView)
+
+ // commands
+ this._register(
+ vscode.workspace.onDidChangeWorkspaceFolders(() => {
+ dbTreeDataProvider.refresh()
+ })
+ )
+ this._register(
+ dbView.onDidChangeVisibility(() => {
+ if (dbView.visible) {
+ dbTreeDataProvider.refresh()
+ }
+ })
+ )
+ this._register(
+ vscode.commands.registerCommand('devbox.refreshDatabase', () => {
+ dbTreeDataProvider.refresh()
+ })
+ )
+ }
+ }
+}
+
+class MyDbTreeDataProvider implements vscode.TreeDataProvider {
private _onDidChangeTreeData: vscode.EventEmitter =
new vscode.EventEmitter()
readonly onDidChangeTreeData: vscode.Event =
@@ -21,6 +55,10 @@ export class DBViewProvider implements vscode.TreeDataProvider {
private databases: Database[] = []
private async init() {
+ this.refresh()
+ }
+
+ async refresh(): Promise {
const dbList = await getDBList()
this.databases = dbList.map((db: DBResponse) => ({
dbName: db.dbName,
@@ -31,10 +69,6 @@ export class DBViewProvider implements vscode.TreeDataProvider {
port: db.port,
connection: db.connection,
}))
- this.refresh()
- }
-
- refresh(): void {
this._onDidChangeTreeData.fire(undefined)
}
diff --git a/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
index d1ef63fc3e2..30e36b6373e 100644
--- a/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
@@ -1,5 +1,6 @@
import * as vscode from 'vscode'
import { getNetworkList, NetworkResponse } from '../api/network'
+import { Disposable } from '../common/dispose'
interface Network {
address: string
@@ -7,29 +8,61 @@ interface Network {
protocol: string
}
-export class NetworkViewProvider
+export class NetworkViewProvider extends Disposable {
+ constructor(context: vscode.ExtensionContext) {
+ super()
+ if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
+ const networkTreeDataProvider = new MyNetworkTreeDataProvider()
+ const networkView = vscode.window.createTreeView('networkView', {
+ treeDataProvider: networkTreeDataProvider,
+ })
+ this._register(networkView)
+
+ this._register(
+ vscode.workspace.onDidChangeWorkspaceFolders(() => {
+ networkTreeDataProvider.refresh()
+ })
+ )
+ this._register(
+ networkView.onDidChangeVisibility(() => {
+ if (networkView.visible) {
+ networkTreeDataProvider.refresh()
+ }
+ })
+ )
+ this._register(
+ vscode.commands.registerCommand('devbox.refreshNetwork', () => {
+ networkTreeDataProvider.refresh()
+ })
+ )
+ }
+ }
+}
+
+class MyNetworkTreeDataProvider
implements vscode.TreeDataProvider
{
private _onDidChangeTreeData: vscode.EventEmitter =
new vscode.EventEmitter()
readonly onDidChangeTreeData: vscode.Event =
this._onDidChangeTreeData.event
+ private networks: Network[] = []
+
constructor() {
this.init()
}
- private networks: Network[] = []
private async init() {
+ this.refresh()
+ }
+
+ async refresh(): Promise {
const networks = await getNetworkList()
this.networks = networks.map((network: NetworkResponse) => ({
address: network.address,
port: network.port,
protocol: network.protocol,
}))
- this.refresh()
- }
-
- refresh(): void {
this._onDidChangeTreeData.fire(undefined)
}
diff --git a/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts b/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts
index 967e7ce9bc1..be7cefbb5b8 100644
--- a/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts
+++ b/frontend/providers/devbox/app/api/v1/getDevboxDetail/route.ts
@@ -20,7 +20,7 @@ export async function GET(req: NextRequest) {
const devboxName = payload.devboxName
const namespace = payload.namespace
- const { k8sCore, k8sCustomObjects, k8sNetworkingApp } = await getK8s({
+ const { k8sCore, k8sCustomObjects } = await getK8s({
kubeconfig:
process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_MOCK_USER || '' : '',
useDefaultConfig: process.env.NODE_ENV !== 'development'
diff --git a/frontend/providers/devbox/app/api/v1/getNetworkList/route.ts b/frontend/providers/devbox/app/api/v1/getNetworkList/route.ts
index ae4dd1e9db5..000859f1819 100644
--- a/frontend/providers/devbox/app/api/v1/getNetworkList/route.ts
+++ b/frontend/providers/devbox/app/api/v1/getNetworkList/route.ts
@@ -20,7 +20,7 @@ export async function GET(req: NextRequest) {
const devboxName = payload.devboxName
const namespace = payload.namespace
- const { k8sCore, k8sCustomObjects, k8sNetworkingApp } = await getK8s({
+ const { k8sCore, k8sNetworkingApp } = await getK8s({
kubeconfig:
process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_MOCK_USER || '' : '',
useDefaultConfig: process.env.NODE_ENV !== 'development'
From b397be917c17fab27c3e3b85e02d101e9728eb87 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 15:11:15 +0800
Subject: [PATCH 034/105] chore: add svg
---
extensions/ide/vscode/devbox/images/create.svg | 4 +---
extensions/ide/vscode/devbox/images/database.svg | 1 +
extensions/ide/vscode/devbox/images/delete.svg | 2 +-
extensions/ide/vscode/devbox/images/network.svg | 1 +
extensions/ide/vscode/devbox/images/open.svg | 4 +---
extensions/ide/vscode/devbox/images/refresh.svg | 2 +-
6 files changed, 6 insertions(+), 8 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/images/database.svg
create mode 100644 extensions/ide/vscode/devbox/images/network.svg
diff --git a/extensions/ide/vscode/devbox/images/create.svg b/extensions/ide/vscode/devbox/images/create.svg
index 3169c0becb9..aed9bc6919e 100644
--- a/extensions/ide/vscode/devbox/images/create.svg
+++ b/extensions/ide/vscode/devbox/images/create.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/database.svg b/extensions/ide/vscode/devbox/images/database.svg
new file mode 100644
index 00000000000..6b8df4c5ba7
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/database.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/delete.svg b/extensions/ide/vscode/devbox/images/delete.svg
index fbb59e83b77..a63b1e0fbcd 100644
--- a/extensions/ide/vscode/devbox/images/delete.svg
+++ b/extensions/ide/vscode/devbox/images/delete.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/network.svg b/extensions/ide/vscode/devbox/images/network.svg
new file mode 100644
index 00000000000..c5fe27fccbb
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/network.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/open.svg b/extensions/ide/vscode/devbox/images/open.svg
index a4ca6b2489f..f61ddd17549 100644
--- a/extensions/ide/vscode/devbox/images/open.svg
+++ b/extensions/ide/vscode/devbox/images/open.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/refresh.svg b/extensions/ide/vscode/devbox/images/refresh.svg
index fa2801d2916..9196015694d 100644
--- a/extensions/ide/vscode/devbox/images/refresh.svg
+++ b/extensions/ide/vscode/devbox/images/refresh.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
From 3fd4bbb8b432dc579f5768d676ffd3a306b3c7df Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 15:21:54 +0800
Subject: [PATCH 035/105] chore: theme adaptation
---
.../ide/vscode/devbox/images/dark/create.svg | 1 +
.../ide/vscode/devbox/images/dark/delete.svg | 1 +
.../ide/vscode/devbox/images/dark/open.svg | 1 +
.../ide/vscode/devbox/images/dark/refresh.svg | 1 +
.../ide/vscode/devbox/images/database.svg | 2 +-
.../devbox/images/{ => light}/create.svg | 0
.../devbox/images/{ => light}/delete.svg | 0
.../vscode/devbox/images/{ => light}/open.svg | 0
.../devbox/images/{ => light}/refresh.svg | 0
.../ide/vscode/devbox/images/network.svg | 2 +-
extensions/ide/vscode/devbox/package.json | 30 +++++++++++++++----
11 files changed, 30 insertions(+), 8 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/images/dark/create.svg
create mode 100644 extensions/ide/vscode/devbox/images/dark/delete.svg
create mode 100644 extensions/ide/vscode/devbox/images/dark/open.svg
create mode 100644 extensions/ide/vscode/devbox/images/dark/refresh.svg
rename extensions/ide/vscode/devbox/images/{ => light}/create.svg (100%)
rename extensions/ide/vscode/devbox/images/{ => light}/delete.svg (100%)
rename extensions/ide/vscode/devbox/images/{ => light}/open.svg (100%)
rename extensions/ide/vscode/devbox/images/{ => light}/refresh.svg (100%)
diff --git a/extensions/ide/vscode/devbox/images/dark/create.svg b/extensions/ide/vscode/devbox/images/dark/create.svg
new file mode 100644
index 00000000000..b57a90c83cd
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/dark/create.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/dark/delete.svg b/extensions/ide/vscode/devbox/images/dark/delete.svg
new file mode 100644
index 00000000000..a9cfe482b5f
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/dark/delete.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/dark/open.svg b/extensions/ide/vscode/devbox/images/dark/open.svg
new file mode 100644
index 00000000000..5f78b324216
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/dark/open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/dark/refresh.svg b/extensions/ide/vscode/devbox/images/dark/refresh.svg
new file mode 100644
index 00000000000..3fd56ae95f0
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/dark/refresh.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/database.svg b/extensions/ide/vscode/devbox/images/database.svg
index 6b8df4c5ba7..cbf53d73c4b 100644
--- a/extensions/ide/vscode/devbox/images/database.svg
+++ b/extensions/ide/vscode/devbox/images/database.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/create.svg b/extensions/ide/vscode/devbox/images/light/create.svg
similarity index 100%
rename from extensions/ide/vscode/devbox/images/create.svg
rename to extensions/ide/vscode/devbox/images/light/create.svg
diff --git a/extensions/ide/vscode/devbox/images/delete.svg b/extensions/ide/vscode/devbox/images/light/delete.svg
similarity index 100%
rename from extensions/ide/vscode/devbox/images/delete.svg
rename to extensions/ide/vscode/devbox/images/light/delete.svg
diff --git a/extensions/ide/vscode/devbox/images/open.svg b/extensions/ide/vscode/devbox/images/light/open.svg
similarity index 100%
rename from extensions/ide/vscode/devbox/images/open.svg
rename to extensions/ide/vscode/devbox/images/light/open.svg
diff --git a/extensions/ide/vscode/devbox/images/refresh.svg b/extensions/ide/vscode/devbox/images/light/refresh.svg
similarity index 100%
rename from extensions/ide/vscode/devbox/images/refresh.svg
rename to extensions/ide/vscode/devbox/images/light/refresh.svg
diff --git a/extensions/ide/vscode/devbox/images/network.svg b/extensions/ide/vscode/devbox/images/network.svg
index c5fe27fccbb..c5b58eef6a4 100644
--- a/extensions/ide/vscode/devbox/images/network.svg
+++ b/extensions/ide/vscode/devbox/images/network.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 225e14c2f71..71c2229ed91 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -58,22 +58,34 @@
{
"command": "devboxDashboard.refresh",
"title": "Refresh Devbox",
- "icon": "images/refresh.svg"
+ "icon": {
+ "light": "images/light/refresh.svg",
+ "dark": "images/dark/refresh.svg"
+ }
},
{
"command": "devboxDashboard.createDevbox",
"title": "Create Devbox",
- "icon": "images/create.svg"
+ "icon": {
+ "light": "images/light/create.svg",
+ "dark": "images/dark/create.svg"
+ }
},
{
"command": "devboxDashboard.openDevbox",
"title": "Open Devbox",
- "icon": "images/open.svg"
+ "icon": {
+ "light": "images/light/open.svg",
+ "dark": "images/dark/open.svg"
+ }
},
{
"command": "devboxDashboard.deleteDevbox",
"title": "Delete Devbox",
- "icon": "images/delete.svg"
+ "icon": {
+ "light": "images/light/delete.svg",
+ "dark": "images/dark/delete.svg"
+ }
},
{
"command": "devbox.openExternalLink",
@@ -86,12 +98,18 @@
{
"command": "devbox.refreshDatabase",
"title": "Refresh Database",
- "icon": "images/refresh.svg"
+ "icon": {
+ "light": "images/light/refresh.svg",
+ "dark": "images/dark/refresh.svg"
+ }
},
{
"command": "devbox.refreshNetwork",
"title": "Refresh Network",
- "icon": "images/refresh.svg"
+ "icon": {
+ "light": "images/light/refresh.svg",
+ "dark": "images/dark/refresh.svg"
+ }
}
],
"views": {
From 4010989ead41cca60ebbd5e999387d7db7a84e78 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 15:46:31 +0800
Subject: [PATCH 036/105] feat: adjust devboxList show
---
.../src/providers/DevboxListViewProvider.ts | 64 +++++++------------
1 file changed, 23 insertions(+), 41 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index ae6ead84bea..33ff2f60f36 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -198,50 +198,33 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
getChildren(element?: MyTreeItem): Thenable {
if (!element) {
- // 第一级:显示所有域名
- const domains = [
- ...new Set(this.treeData.map((item) => item.host.split('_')[0])),
- ]
- return Promise.resolve(
- domains.map(
- (domain) =>
- new MyTreeItem(
- domain,
- domain,
- 0,
- vscode.TreeItemCollapsibleState.Collapsed
- )
- )
- )
- } else if (!element.namespace) {
- // 第二级:显示指定域名下所有命名空间
- const namespaces = [
- ...new Set(
- this.treeData
- .filter((item) => item.host.startsWith(element.label as string))
- .map((item) => item.host.split('_')[1])
- ),
- ]
+ // domain/namespace
+ const domainNamespacePairs = this.treeData.reduce((acc, item) => {
+ const [domain, namespace] = item.host.split('_')
+ acc.add(`${domain}/${namespace}`)
+ return acc
+ }, new Set())
+
return Promise.resolve(
- namespaces.map(
- (namespace) =>
- new MyTreeItem(
- namespace,
- (element.label as string) ?? '',
- 0,
- vscode.TreeItemCollapsibleState.Collapsed,
- namespace
- )
- )
+ Array.from(domainNamespacePairs).map((pair) => {
+ const [domain, namespace] = pair.split('/')
+ return new MyTreeItem(
+ pair,
+ domain,
+ 0,
+ vscode.TreeItemCollapsibleState.Collapsed,
+ namespace
+ )
+ })
)
- } else if (!element.devboxName) {
- // 第三级:显示指定命名空间下的所有 devbox
+ } else {
+ // devbox
+ const [domain, namespace] = element.label?.toString().split('/') || []
const devboxes = this.treeData.filter((item) => {
const parts = item.host.split('_')
- const domain = parts[0]
- const namespace = parts[1]
- return domain === element.domain && namespace === element.namespace
+ return parts[0] === domain && parts[1] === namespace
})
+
return Promise.resolve(
devboxes.map((devbox) => {
const parts = devbox.host.split('_')
@@ -251,7 +234,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
devbox.hostName,
devbox.port,
vscode.TreeItemCollapsibleState.None,
- element.namespace,
+ namespace,
devboxName,
devbox.host,
devbox.remotePath
@@ -261,7 +244,6 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
})
)
}
- return Promise.resolve([])
}
}
From 5b5db104df382a64a5839b77bf77805770d18611 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 16:03:24 +0800
Subject: [PATCH 037/105] feat: settings to custom apiUrl
---
extensions/ide/vscode/devbox/package.json | 13 ++++---------
.../devbox/src/providers/DevboxListViewProvider.ts | 11 +++++++++--
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 71c2229ed91..c07a5c94387 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.7",
+ "version": "0.9.8",
"keywords": [
"devbox",
"remote development",
@@ -38,15 +38,10 @@
"type": "object",
"title": "devbox",
"properties": {
- "devbox.region": {
+ "devbox.apiUrl": {
"type": "string",
- "default": "默认值",
- "description": "设置项1的描述"
- },
- "yourExtension.setting2": {
- "type": "boolean",
- "default": true,
- "description": "设置项2的描述"
+ "default": "",
+ "description": "Customize your API base address for crud devbox in private deployment scenario. For example, https://usw.sailos.io. If you set it,devbox crud will use it and you cannot select region(USW/HZH/BJA/GZG) manually."
}
}
},
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index 33ff2f60f36..23878253a39 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -105,8 +105,14 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
return element
}
- // TODO: 根据不同的代理跳转到不同的页面,而且可以进行设置里的配置
async create(item: MyTreeItem) {
+ const apiUrl = vscode.workspace.getConfiguration('devbox').get('apiUrl')
+ if (apiUrl) {
+ vscode.commands.executeCommand('devbox.openExternalLink', [
+ `${apiUrl}/?openapp=system-devbox?${encodeURIComponent('page=create')}`,
+ ])
+ return
+ }
const regions = [
{ label: 'USW', url: uswUrl },
{ label: 'HZH', url: hzhUrl },
@@ -117,7 +123,8 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
const selected = await vscode.window.showQuickPick(
regions.map((region) => region.label),
{
- placeHolder: 'Please select a region',
+ placeHolder:
+ 'Please select a region.And you can customize your API base address in the settings(devbox.apiUrl).',
}
)
From 411ee0d45553d35d2d267f75caa8c18442a0457e Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 16:40:31 +0800
Subject: [PATCH 038/105] =?UTF-8?q?fix:=20=E7=BC=93=E5=85=B5=E4=B9=8B?=
=?UTF-8?q?=E8=AE=A1=EF=BC=8Cdevbox=20=E7=A1=AC=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
extensions/ide/vscode/devbox/package.json | 2 +-
.../ide/vscode/devbox/src/providers/DBViewProvider.ts | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index c07a5c94387..f684716693c 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.8",
+ "version": "0.9.9",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
index 086f2cbd8af..8bc4debcfa2 100644
--- a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
@@ -94,17 +94,17 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
new DatabaseItem(
`${'DBType'.padEnd(15)}${'Username'.padEnd(15)}${'Password'.padEnd(
15
- )}${'Host'.padEnd(25)}${'Port'.padEnd(10)}Connection`,
+ )}${'Host'.padEnd(80)}${'Port'.padEnd(40)}Connection`,
'header'
)
)
this.databases.forEach((database) => {
- const label = `${database.dbType.padEnd(15)}${database.username.padEnd(
+ const label = `${database.dbType.padEnd(15)} ${database.username.padEnd(
15
- )}${database.password.padEnd(15)}${database.host.padEnd(
- 20
- )}${database.port.toString().padEnd(10)}${database.connection}`
+ )}${database.password.padEnd(15)} ${database.host.padEnd(
+ 45
+ )} ${database.port.toString().padEnd(10)} ${database.connection}`
items.push(new DatabaseItem(label, 'database', database.connection))
})
From 4582365de285b46063ff2657b3163cb63b80f258 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Fri, 8 Nov 2024 17:12:59 +0800
Subject: [PATCH 039/105] feat: status un used version,haha
---
.../ide/vscode/devbox/src/api/devbox.ts | 6 ++-
extensions/ide/vscode/devbox/src/api/index.ts | 1 -
.../src/providers/DevboxListViewProvider.ts | 37 +++++++++++++++----
.../ide/vscode/devbox/src/types/devbox.d.ts | 3 ++
4 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/api/devbox.ts b/extensions/ide/vscode/devbox/src/api/devbox.ts
index 85a14599dd0..04b49384100 100644
--- a/extensions/ide/vscode/devbox/src/api/devbox.ts
+++ b/extensions/ide/vscode/devbox/src/api/devbox.ts
@@ -1,6 +1,8 @@
import { GET } from './index'
-export const getDevboxDetail = async () => {
- const { devbox } = await GET('/api/v1/getDevboxDetail')
+export const getDevboxDetail = async (token: string) => {
+ const { devbox } = await GET('/api/v1/getDevboxDetail', {
+ authorization: token,
+ })
return devbox
}
diff --git a/extensions/ide/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
index 8d465693cf2..6ca22b4e117 100644
--- a/extensions/ide/vscode/devbox/src/api/index.ts
+++ b/extensions/ide/vscode/devbox/src/api/index.ts
@@ -74,7 +74,6 @@ request.interceptors.request.use(
}
let _headers: AxiosHeaders = config.headers
- //获取token,并将其添加至请求头中
const workspaceFolders = vscode.workspace.workspaceFolders
if (workspaceFolders && workspaceFolders.length > 0) {
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index 23878253a39..7a877ae73ab 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -4,6 +4,7 @@ import fs from 'fs'
import { parseSSHConfig } from '../api/ssh'
import { Disposable } from '../common/dispose'
import { DevboxListItem } from '../types/devbox'
+import { getDevboxDetail } from '../api/devbox'
import { defaultDevboxSSHConfigPath } from '../constant/file'
import { GlobalStateManager } from '../utils/globalStateManager'
import { convertSSHConfigToVersion2 } from '../utils/sshConfig'
@@ -89,6 +90,28 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
this.treeData = data as DevboxListItem[]
this._onDidChangeTreeData.fire(undefined)
})
+ this.treeData.forEach(async (item) => {
+ const token = GlobalStateManager.getToken(item.host)
+ if (!token) {
+ return
+ }
+ // get devbox detail
+ const data = await getDevboxDetail(token)
+ const status = data.status.value
+ switch (status) {
+ case 'Running':
+ item.iconPath = new vscode.ThemeIcon('vm-running')
+ break
+ case 'Stopped':
+ item.iconPath = new vscode.ThemeIcon('vm')
+ break
+ case 'Error':
+ item.iconPath = new vscode.ThemeIcon('error')
+ break
+ default:
+ item.iconPath = new vscode.ThemeIcon('question')
+ }
+ })
} else if (this.treeName === 'devboxFeedback') {
this.treeData = [
{
@@ -199,7 +222,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
this.refresh()
} catch (error) {
- vscode.window.showErrorMessage(`删除 SSH 配置失败: ${error.message}`)
+ vscode.window.showErrorMessage(`Delete devbox failed: ${error.message}`)
}
}
@@ -259,7 +282,7 @@ class MyTreeItem extends vscode.TreeItem {
namespace?: string
devboxName?: string
sshPort: number
- host: string // 添加这一行
+ host: string
remotePath: string
constructor(
@@ -270,18 +293,18 @@ class MyTreeItem extends vscode.TreeItem {
namespace?: string,
devboxName?: string,
host?: string,
- remotePath?: string // 添加这个参数
+ remotePath?: string,
+ iconPath?: vscode.ThemeIcon
) {
super(label, collapsibleState)
this.domain = domain
this.namespace = namespace
this.devboxName = devboxName
this.sshPort = sshPort
- this.host = host || '' // 初始化 host 属性
- this.remotePath = remotePath || '/home/sealos/project' // 设置默认值
- // ... 其余代码保持不变
+ this.host = host || ''
+ this.remotePath = remotePath || '/home/sealos/project'
+ this.iconPath = iconPath
- // 添加这行代码
this.contextValue = devboxName ? 'devbox' : undefined
}
}
diff --git a/extensions/ide/vscode/devbox/src/types/devbox.d.ts b/extensions/ide/vscode/devbox/src/types/devbox.d.ts
index 9c1bd72221f..2b8468c0012 100644
--- a/extensions/ide/vscode/devbox/src/types/devbox.d.ts
+++ b/extensions/ide/vscode/devbox/src/types/devbox.d.ts
@@ -1,3 +1,5 @@
+import * as vscode from 'vscode'
+
export interface DevboxListItem {
hostName: string
host: string
@@ -6,4 +8,5 @@ export interface DevboxListItem {
identityFile?: string
status?: string
remotePath?: string
+ iconPath?: vscode.ThemeIcon
}
From 5c2340fd9f25f9c2b21769387b9b3818d452e889 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 11:55:44 +0800
Subject: [PATCH 040/105] fix: adjust vscode and code position
---
extensions/ide/vscode/devbox/.gitignore | 1 +
.../ide/vscode/devbox/.vscode/extensions.json | 8 ++++
.../ide/vscode/devbox/.vscode/launch.json | 20 ++++++++++
.../ide/vscode/devbox/.vscode/settings.json | 14 +++++++
.../ide/vscode/devbox/.vscode/tasks.json | 37 +++++++++++++++++++
extensions/ide/vscode/devbox/package.json | 2 +-
extensions/ide/vscode/devbox/src/extension.ts | 6 +--
7 files changed, 84 insertions(+), 4 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/.vscode/extensions.json
create mode 100644 extensions/ide/vscode/devbox/.vscode/launch.json
create mode 100644 extensions/ide/vscode/devbox/.vscode/settings.json
create mode 100644 extensions/ide/vscode/devbox/.vscode/tasks.json
diff --git a/extensions/ide/vscode/devbox/.gitignore b/extensions/ide/vscode/devbox/.gitignore
index 0d49789abb1..0db4f32e45f 100644
--- a/extensions/ide/vscode/devbox/.gitignore
+++ b/extensions/ide/vscode/devbox/.gitignore
@@ -5,3 +5,4 @@ node_modules
*.vsix
.env
+!.vscode/
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/.vscode/extensions.json b/extensions/ide/vscode/devbox/.vscode/extensions.json
new file mode 100644
index 00000000000..5906abf06f5
--- /dev/null
+++ b/extensions/ide/vscode/devbox/.vscode/extensions.json
@@ -0,0 +1,8 @@
+{
+ // See http://go.microsoft.com/fwlink/?LinkId=827846
+ // for the documentation about the extensions.json format
+ "recommendations": [
+ "dbaeumer.vscode-eslint",
+ "ms-vscode.extension-test-runner"
+ ]
+}
diff --git a/extensions/ide/vscode/devbox/.vscode/launch.json b/extensions/ide/vscode/devbox/.vscode/launch.json
new file mode 100644
index 00000000000..dea90a410ab
--- /dev/null
+++ b/extensions/ide/vscode/devbox/.vscode/launch.json
@@ -0,0 +1,20 @@
+// A launch configuration that compiles the extension and then opens it inside a new window
+// Use IntelliSense to learn about possible attributes.
+// Hover to view descriptions of existing attributes.
+// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Run Extension",
+ "type": "extensionHost",
+ "request": "launch",
+ "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
+ "outFiles": ["${workspaceFolder}/dist/**/*.js"],
+ "preLaunchTask": "${defaultBuildTask}",
+ "env": {
+ "NODE_ENV": "development"
+ }
+ }
+ ]
+}
diff --git a/extensions/ide/vscode/devbox/.vscode/settings.json b/extensions/ide/vscode/devbox/.vscode/settings.json
new file mode 100644
index 00000000000..0fb874633a8
--- /dev/null
+++ b/extensions/ide/vscode/devbox/.vscode/settings.json
@@ -0,0 +1,14 @@
+// Place your settings in this file to overwrite default and user settings.
+{
+ "files.exclude": {
+ "out": false, // set this to true to hide the "out" folder with the compiled JS files
+ "dist": false // set this to true to hide the "dist" folder with the compiled JS files
+ },
+ "search.exclude": {
+ "out": true, // set this to false to include "out" folder in search results
+ "dist": true // set this to false to include "dist" folder in search results
+ },
+ // Turn off tsc task auto detection since we have the necessary tasks as npm scripts
+ "typescript.tsc.autoDetect": "off",
+ "typescript.tsdk": "node_modules/typescript/lib"
+}
diff --git a/extensions/ide/vscode/devbox/.vscode/tasks.json b/extensions/ide/vscode/devbox/.vscode/tasks.json
new file mode 100644
index 00000000000..9e3300b04c2
--- /dev/null
+++ b/extensions/ide/vscode/devbox/.vscode/tasks.json
@@ -0,0 +1,37 @@
+// See https://go.microsoft.com/fwlink/?LinkId=733558
+// for the documentation about the tasks.json format
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "npm",
+ "script": "watch",
+ "problemMatcher": "$ts-webpack-watch",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "never",
+ "group": "watchers"
+ },
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ },
+ {
+ "type": "npm",
+ "script": "watch-tests",
+ "problemMatcher": "$tsc-watch",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "never",
+ "group": "watchers"
+ },
+ "group": "build"
+ },
+ {
+ "label": "tasks: watch-tests",
+ "dependsOn": ["npm: watch", "npm: watch-tests"],
+ "problemMatcher": []
+ }
+ ]
+}
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index f684716693c..df5908344e6 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.9",
+ "version": "0.9.10",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/extension.ts b/extensions/ide/vscode/devbox/src/extension.ts
index 990f1ef92b3..1254c46ae1e 100644
--- a/extensions/ide/vscode/devbox/src/extension.ts
+++ b/extensions/ide/vscode/devbox/src/extension.ts
@@ -15,6 +15,9 @@ export async function activate(context: vscode.ExtensionContext) {
const tools = new ToolCommands(context)
context.subscriptions.push(tools)
+ // globalState manager
+ GlobalStateManager.init(context)
+
// remote connector
const remoteConnector = new RemoteSSHConnector(context)
context.subscriptions.push(remoteConnector)
@@ -23,9 +26,6 @@ export async function activate(context: vscode.ExtensionContext) {
const devboxListViewProvider = new DevboxListViewProvider(context)
context.subscriptions.push(devboxListViewProvider)
- // globalState manager
- GlobalStateManager.init(context)
-
// update api base url
const workspaceFolders = vscode.workspace.workspaceFolders
if (workspaceFolders && workspaceFolders.length > 0 && !isDevelopment) {
From 3c624aab91d9b3ca7267852e9ae444bc3c7feec2 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 16:20:17 +0800
Subject: [PATCH 041/105] feat: devbox status
---
extensions/ide/vscode/devbox/package.json | 2 +-
.../ide/vscode/devbox/src/api/devbox.ts | 12 +++-
extensions/ide/vscode/devbox/src/api/index.ts | 8 ++-
.../src/providers/DevboxListViewProvider.ts | 69 +++++++++++--------
4 files changed, 56 insertions(+), 35 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index df5908344e6..b15079738f7 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.10",
+ "version": "0.9.11",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/api/devbox.ts b/extensions/ide/vscode/devbox/src/api/devbox.ts
index 04b49384100..d458cf2d9c5 100644
--- a/extensions/ide/vscode/devbox/src/api/devbox.ts
+++ b/extensions/ide/vscode/devbox/src/api/devbox.ts
@@ -1,8 +1,14 @@
import { GET } from './index'
export const getDevboxDetail = async (token: string) => {
- const { devbox } = await GET('/api/v1/getDevboxDetail', {
- authorization: token,
- })
+ const { devbox } = await GET(
+ '/api/v1/getDevboxDetail',
+ {},
+ {
+ headers: {
+ Authorization: encodeURIComponent(token),
+ },
+ }
+ )
return devbox
}
diff --git a/extensions/ide/vscode/devbox/src/api/index.ts b/extensions/ide/vscode/devbox/src/api/index.ts
index 6ca22b4e117..1db6a4ebeee 100644
--- a/extensions/ide/vscode/devbox/src/api/index.ts
+++ b/extensions/ide/vscode/devbox/src/api/index.ts
@@ -80,9 +80,11 @@ request.interceptors.request.use(
const workspaceFolder = workspaceFolders[0]
const remoteUri = workspaceFolder.uri.authority
const devboxId = remoteUri.replace(/^ssh-remote\+/, '') // devbox = sshHostLabel
- _headers['Authorization'] = encodeURIComponent(
- GlobalStateManager.getToken(devboxId) || ''
- )
+ if (!_headers['Authorization']) {
+ _headers['Authorization'] = encodeURIComponent(
+ GlobalStateManager.getToken(devboxId) || ''
+ )
+ }
}
if (!config.headers || config.headers['Content-Type'] === '') {
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index 7a877ae73ab..a066b3c8989 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -77,41 +77,53 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
constructor(treeName: string) {
this.treeName = treeName
this.refreshData()
+ if (this.treeName === 'devboxDashboard') {
+ setInterval(() => {
+ this.refresh()
+ }, 3 * 1000)
+ }
}
refresh(): void {
this.refreshData()
}
- private refreshData(): void {
+ private async refreshData(): Promise {
if (this.treeName === 'devboxDashboard') {
convertSSHConfigToVersion2(defaultDevboxSSHConfigPath)
- parseSSHConfig(defaultDevboxSSHConfigPath).then((data) => {
- this.treeData = data as DevboxListItem[]
- this._onDidChangeTreeData.fire(undefined)
- })
- this.treeData.forEach(async (item) => {
- const token = GlobalStateManager.getToken(item.host)
- if (!token) {
- return
- }
- // get devbox detail
- const data = await getDevboxDetail(token)
- const status = data.status.value
- switch (status) {
- case 'Running':
- item.iconPath = new vscode.ThemeIcon('vm-running')
- break
- case 'Stopped':
- item.iconPath = new vscode.ThemeIcon('vm')
- break
- case 'Error':
- item.iconPath = new vscode.ThemeIcon('error')
- break
- default:
- item.iconPath = new vscode.ThemeIcon('question')
- }
- })
+ const data = await parseSSHConfig(defaultDevboxSSHConfigPath)
+ this.treeData = data as DevboxListItem[]
+
+ await Promise.all(
+ this.treeData.map(async (item) => {
+ const token = GlobalStateManager.getToken(item.host)
+ if (!token) {
+ return
+ }
+ try {
+ const data = await getDevboxDetail(token)
+ const status = data.status.value
+ switch (status) {
+ case 'Running':
+ item.iconPath = new vscode.ThemeIcon('debug-start')
+ break
+ case 'Stopped':
+ item.iconPath = new vscode.ThemeIcon('debug-pause')
+ break
+ case 'Error':
+ item.iconPath = new vscode.ThemeIcon('error')
+ break
+ default:
+ item.iconPath = new vscode.ThemeIcon('question')
+ }
+ } catch (error) {
+ console.error(`get devbox detail failed: ${error}`)
+ item.iconPath = new vscode.ThemeIcon('warning')
+ }
+ })
+ )
+
+ this._onDidChangeTreeData.fire(undefined)
} else if (this.treeName === 'devboxFeedback') {
this.treeData = [
{
@@ -267,7 +279,8 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
namespace,
devboxName,
devbox.host,
- devbox.remotePath
+ devbox.remotePath,
+ devbox.iconPath
)
treeItem.contextValue = 'devbox'
return treeItem
From 1331f4650c8ecca6d2f8f1e2d53a4aee5658b5da Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 16:46:04 +0800
Subject: [PATCH 042/105] fix: delete devbox svg and adjust
---
extensions/ide/vscode/devbox/images/dark/delete.svg | 2 +-
extensions/ide/vscode/devbox/images/light/delete.svg | 2 +-
extensions/ide/vscode/devbox/package.json | 2 +-
.../devbox/src/providers/DevboxListViewProvider.ts | 12 +++++++++++-
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/extensions/ide/vscode/devbox/images/dark/delete.svg b/extensions/ide/vscode/devbox/images/dark/delete.svg
index a9cfe482b5f..2aeb11cb530 100644
--- a/extensions/ide/vscode/devbox/images/dark/delete.svg
+++ b/extensions/ide/vscode/devbox/images/dark/delete.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/light/delete.svg b/extensions/ide/vscode/devbox/images/light/delete.svg
index a63b1e0fbcd..3ff1185f5c5 100644
--- a/extensions/ide/vscode/devbox/images/light/delete.svg
+++ b/extensions/ide/vscode/devbox/images/light/delete.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index b15079738f7..25d3805f59a 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.11",
+ "version": "0.9.12",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index a066b3c8989..1e59008802b 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -191,9 +191,19 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
}
async delete(item: MyTreeItem) {
+ const result = await vscode.window.showWarningMessage(
+ `Are you sure to delete ${item.label}?(This action only delete the devbox from the local ssh config)`,
+ { modal: true },
+ 'Yes',
+ 'No'
+ )
+
+ if (result !== 'Yes') {
+ return
+ }
+
const deletedHost = item.host
GlobalStateManager.remove(deletedHost)
- // 删除ssh 配置
// TODO:抽象出一个 crud ssh 文件的模型
try {
const content = await fs.promises.readFile(
From a10c120eb342aaaa3efc61bf7d3694282630974c Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 17:11:04 +0800
Subject: [PATCH 043/105] fix: copy button
---
.../ide/vscode/devbox/images/dark/copy.svg | 1 +
.../ide/vscode/devbox/images/light/copy.svg | 1 +
extensions/ide/vscode/devbox/package.json | 11 +++++++-
.../ide/vscode/devbox/src/commands/tools.ts | 8 ------
.../devbox/src/providers/DBViewProvider.ts | 25 +++++++++++--------
5 files changed, 27 insertions(+), 19 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/images/dark/copy.svg
create mode 100644 extensions/ide/vscode/devbox/images/light/copy.svg
diff --git a/extensions/ide/vscode/devbox/images/dark/copy.svg b/extensions/ide/vscode/devbox/images/dark/copy.svg
new file mode 100644
index 00000000000..621ad50b7e3
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/dark/copy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/light/copy.svg b/extensions/ide/vscode/devbox/images/light/copy.svg
new file mode 100644
index 00000000000..3a932546b3b
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/light/copy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 25d3805f59a..2b6f6547ae3 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -88,7 +88,11 @@
},
{
"command": "devbox.copy",
- "title": "Copy Connection String"
+ "title": "Copy Connection String",
+ "icon": {
+ "light": "images/light/copy.svg",
+ "dark": "images/dark/copy.svg"
+ }
},
{
"command": "devbox.refreshDatabase",
@@ -191,6 +195,11 @@
"command": "devboxDashboard.deleteDevbox",
"when": "view == devboxDashboard && viewItem == devbox",
"group": "inline@2"
+ },
+ {
+ "command": "devbox.copy",
+ "when": "view == dbView && viewItem == database",
+ "group": "inline"
}
]
}
diff --git a/extensions/ide/vscode/devbox/src/commands/tools.ts b/extensions/ide/vscode/devbox/src/commands/tools.ts
index b57e4303821..a94ac643bf8 100644
--- a/extensions/ide/vscode/devbox/src/commands/tools.ts
+++ b/extensions/ide/vscode/devbox/src/commands/tools.ts
@@ -12,14 +12,6 @@ export class ToolCommands extends Disposable {
vscode.env.openExternal(vscode.Uri.parse(args))
})
)
- this._register(
- vscode.commands.registerCommand('devbox.copy', (connection: string) => {
- vscode.env.clipboard.writeText(connection)
- vscode.window.showInformationMessage(
- 'Connection string copied to clipboard!'
- )
- })
- )
}
}
}
diff --git a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
index 8bc4debcfa2..47c60a13c43 100644
--- a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
@@ -40,6 +40,11 @@ export class DBViewProvider extends Disposable {
dbTreeDataProvider.refresh()
})
)
+ this._register(
+ vscode.commands.registerCommand('devbox.copy', (item: DatabaseItem) => {
+ dbTreeDataProvider.copyConnectionString(item)
+ })
+ )
}
}
}
@@ -75,6 +80,14 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
getTreeItem(element: DatabaseItem): vscode.TreeItem {
return element
}
+ copyConnectionString(item: DatabaseItem) {
+ if (item.connectionString && item.contextValue === 'database') {
+ vscode.env.clipboard.writeText(item.connectionString)
+ vscode.window.showInformationMessage(
+ 'Connection string copied to clipboard!'
+ )
+ }
+ }
async getChildren(element?: DatabaseItem): Promise {
if (!element) {
@@ -104,7 +117,7 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
15
)}${database.password.padEnd(15)} ${database.host.padEnd(
45
- )} ${database.port.toString().padEnd(10)} ${database.connection}`
+ )} ${database.port.toString().padEnd(34)} ${'*'.repeat(20)}`
items.push(new DatabaseItem(label, 'database', database.connection))
})
@@ -118,16 +131,8 @@ class DatabaseItem extends vscode.TreeItem {
constructor(
public override readonly label: string,
public override readonly contextValue: string,
- public readonly connection?: string
+ public readonly connectionString?: string
) {
super(label, vscode.TreeItemCollapsibleState.None)
-
- if (connection) {
- this.command = {
- title: 'Copy Connection String',
- command: 'devbox.copy',
- arguments: [connection],
- }
- }
}
}
From 136b8a222cca8f7b17603fc24258e7da065e6d1a Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 17:22:14 +0800
Subject: [PATCH 044/105] fix: copy feat adjust
---
.../devbox/src/providers/DBViewProvider.ts | 26 +++++++++++++------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
index 47c60a13c43..369448051c9 100644
--- a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
@@ -82,9 +82,11 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
}
copyConnectionString(item: DatabaseItem) {
if (item.connectionString && item.contextValue === 'database') {
- vscode.env.clipboard.writeText(item.connectionString)
+ vscode.env.clipboard.writeText(
+ `${item.password}\n${item.connectionString}`
+ )
vscode.window.showInformationMessage(
- 'Connection string copied to clipboard!'
+ 'Password and Connection string,copied to clipboard!'
)
}
}
@@ -106,19 +108,26 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
items.push(
new DatabaseItem(
`${'DBType'.padEnd(15)}${'Username'.padEnd(15)}${'Password'.padEnd(
- 15
- )}${'Host'.padEnd(80)}${'Port'.padEnd(40)}Connection`,
+ 35
+ )}${'Host'.padEnd(60)}${'Port'.padEnd(40)}Connection`,
'header'
)
)
this.databases.forEach((database) => {
const label = `${database.dbType.padEnd(15)} ${database.username.padEnd(
- 15
- )}${database.password.padEnd(15)} ${database.host.padEnd(
+ 17
+ )}${'*'.repeat(10).padEnd(16)} ${database.host.padEnd(
45
)} ${database.port.toString().padEnd(34)} ${'*'.repeat(20)}`
- items.push(new DatabaseItem(label, 'database', database.connection))
+ items.push(
+ new DatabaseItem(
+ label,
+ 'database',
+ database.connection,
+ database.password
+ )
+ )
})
return items
@@ -131,7 +140,8 @@ class DatabaseItem extends vscode.TreeItem {
constructor(
public override readonly label: string,
public override readonly contextValue: string,
- public readonly connectionString?: string
+ public readonly connectionString?: string,
+ public readonly password?: string
) {
super(label, vscode.TreeItemCollapsibleState.None)
}
From 1de828dc253ad7c1096e681526e5367d04d41f1a Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 17:26:26 +0800
Subject: [PATCH 045/105] chore: some text adjust
---
extensions/ide/vscode/devbox/package.json | 2 +-
.../ide/vscode/devbox/src/providers/DevboxListViewProvider.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 2b6f6547ae3..0ede5ca8024 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.12",
+ "version": "0.9.13",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index 1e59008802b..228b5d98223 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -192,7 +192,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
async delete(item: MyTreeItem) {
const result = await vscode.window.showWarningMessage(
- `Are you sure to delete ${item.label}?(This action only delete the devbox from the local ssh config)`,
+ `Are you sure to delete ${item.label}?\n(This action will only delete the devbox ssh config in the local environment.)`,
{ modal: true },
'Yes',
'No'
From 3a521514e8f4836052c91c6fcd70299dfc50931d Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 17:48:55 +0800
Subject: [PATCH 046/105] feat: feedback
---
.../src/providers/DevboxListViewProvider.ts | 171 +++++++++++-------
1 file changed, 104 insertions(+), 67 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index 228b5d98223..b5ffcc6c391 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -15,15 +15,19 @@ export class DevboxListViewProvider extends Disposable {
super()
if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
// view
- const projectTreeDataProvider = new MyTreeDataProvider('devboxDashboard')
+ const projectTreeDataProvider = new ProjectTreeDataProvider()
// TODO: 完善 feedback部分
- const feedbackTreeDataProvider = new MyTreeDataProvider('devboxFeedback')
+ const feedbackTreeDataProvider = new FeedbackTreeDataProvider()
const devboxDashboardView = vscode.window.createTreeView(
'devboxDashboard',
{
treeDataProvider: projectTreeDataProvider,
}
)
+ const feedbackTreeView = vscode.window.createTreeView('devboxFeedback', {
+ treeDataProvider: feedbackTreeDataProvider,
+ })
+ this._register(feedbackTreeView)
this._register(devboxDashboardView)
this._register(
devboxDashboardView.onDidChangeVisibility(() => {
@@ -41,7 +45,7 @@ export class DevboxListViewProvider extends Disposable {
this._register(
vscode.commands.registerCommand(
'devboxDashboard.createDevbox',
- (item: MyTreeItem) => {
+ (item: ProjectTreeItem) => {
projectTreeDataProvider.create(item)
}
)
@@ -49,7 +53,7 @@ export class DevboxListViewProvider extends Disposable {
this._register(
vscode.commands.registerCommand(
'devboxDashboard.openDevbox',
- (item: MyTreeItem) => {
+ (item: ProjectTreeItem) => {
projectTreeDataProvider.open(item)
}
)
@@ -57,7 +61,7 @@ export class DevboxListViewProvider extends Disposable {
this._register(
vscode.commands.registerCommand(
'devboxDashboard.deleteDevbox',
- (item: MyTreeItem) => {
+ (item: ProjectTreeItem) => {
projectTreeDataProvider.delete(item)
}
)
@@ -66,22 +70,21 @@ export class DevboxListViewProvider extends Disposable {
}
}
-class MyTreeDataProvider implements vscode.TreeDataProvider {
- private _onDidChangeTreeData: vscode.EventEmitter =
- new vscode.EventEmitter()
- readonly onDidChangeTreeData: vscode.Event =
+class ProjectTreeDataProvider
+ implements vscode.TreeDataProvider
+{
+ private _onDidChangeTreeData: vscode.EventEmitter<
+ ProjectTreeItem | undefined
+ > = new vscode.EventEmitter()
+ readonly onDidChangeTreeData: vscode.Event =
this._onDidChangeTreeData.event
private treeData: DevboxListItem[] = []
- private treeName: string
- constructor(treeName: string) {
- this.treeName = treeName
+ constructor() {
this.refreshData()
- if (this.treeName === 'devboxDashboard') {
- setInterval(() => {
- this.refresh()
- }, 3 * 1000)
- }
+ setInterval(() => {
+ this.refresh()
+ }, 3 * 1000)
}
refresh(): void {
@@ -89,58 +92,47 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
}
private async refreshData(): Promise {
- if (this.treeName === 'devboxDashboard') {
- convertSSHConfigToVersion2(defaultDevboxSSHConfigPath)
- const data = await parseSSHConfig(defaultDevboxSSHConfigPath)
- this.treeData = data as DevboxListItem[]
+ convertSSHConfigToVersion2(defaultDevboxSSHConfigPath)
+ const data = await parseSSHConfig(defaultDevboxSSHConfigPath)
+ this.treeData = data as DevboxListItem[]
- await Promise.all(
- this.treeData.map(async (item) => {
- const token = GlobalStateManager.getToken(item.host)
- if (!token) {
- return
- }
- try {
- const data = await getDevboxDetail(token)
- const status = data.status.value
- switch (status) {
- case 'Running':
- item.iconPath = new vscode.ThemeIcon('debug-start')
- break
- case 'Stopped':
- item.iconPath = new vscode.ThemeIcon('debug-pause')
- break
- case 'Error':
- item.iconPath = new vscode.ThemeIcon('error')
- break
- default:
- item.iconPath = new vscode.ThemeIcon('question')
- }
- } catch (error) {
- console.error(`get devbox detail failed: ${error}`)
- item.iconPath = new vscode.ThemeIcon('warning')
+ await Promise.all(
+ this.treeData.map(async (item) => {
+ const token = GlobalStateManager.getToken(item.host)
+ if (!token) {
+ return
+ }
+ try {
+ const data = await getDevboxDetail(token)
+ const status = data.status.value
+ switch (status) {
+ case 'Running':
+ item.iconPath = new vscode.ThemeIcon('debug-start')
+ break
+ case 'Stopped':
+ item.iconPath = new vscode.ThemeIcon('debug-pause')
+ break
+ case 'Error':
+ item.iconPath = new vscode.ThemeIcon('error')
+ break
+ default:
+ item.iconPath = new vscode.ThemeIcon('question')
}
- })
- )
+ } catch (error) {
+ console.error(`get devbox detail failed: ${error}`)
+ item.iconPath = new vscode.ThemeIcon('warning')
+ }
+ })
+ )
- this._onDidChangeTreeData.fire(undefined)
- } else if (this.treeName === 'devboxFeedback') {
- this.treeData = [
- {
- hostName: 'Give me a feedback in the GitHub repository',
- host: '',
- port: 0,
- },
- ]
- this._onDidChangeTreeData.fire(undefined)
- }
+ this._onDidChangeTreeData.fire(undefined)
}
- getTreeItem(element: MyTreeItem): vscode.TreeItem {
+ getTreeItem(element: ProjectTreeItem): vscode.TreeItem {
return element
}
- async create(item: MyTreeItem) {
+ async create(item: ProjectTreeItem) {
const apiUrl = vscode.workspace.getConfiguration('devbox').get('apiUrl')
if (apiUrl) {
vscode.commands.executeCommand('devbox.openExternalLink', [
@@ -173,7 +165,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
}
}
- async open(item: MyTreeItem) {
+ async open(item: ProjectTreeItem) {
if (item.contextValue !== 'devbox') {
vscode.window.showInformationMessage('只能打开 Devbox 项目')
return
@@ -190,7 +182,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
)
}
- async delete(item: MyTreeItem) {
+ async delete(item: ProjectTreeItem) {
const result = await vscode.window.showWarningMessage(
`Are you sure to delete ${item.label}?\n(This action will only delete the devbox ssh config in the local environment.)`,
{ modal: true },
@@ -248,7 +240,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
}
}
- getChildren(element?: MyTreeItem): Thenable {
+ getChildren(element?: ProjectTreeItem): Thenable {
if (!element) {
// domain/namespace
const domainNamespacePairs = this.treeData.reduce((acc, item) => {
@@ -260,7 +252,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
return Promise.resolve(
Array.from(domainNamespacePairs).map((pair) => {
const [domain, namespace] = pair.split('/')
- return new MyTreeItem(
+ return new ProjectTreeItem(
pair,
domain,
0,
@@ -281,7 +273,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
devboxes.map((devbox) => {
const parts = devbox.host.split('_')
const devboxName = parts.slice(2).join('_')
- const treeItem = new MyTreeItem(
+ const treeItem = new ProjectTreeItem(
devboxName,
devbox.hostName,
devbox.port,
@@ -300,7 +292,7 @@ class MyTreeDataProvider implements vscode.TreeDataProvider {
}
}
-class MyTreeItem extends vscode.TreeItem {
+class ProjectTreeItem extends vscode.TreeItem {
domain: string
namespace?: string
devboxName?: string
@@ -331,3 +323,48 @@ class MyTreeItem extends vscode.TreeItem {
this.contextValue = devboxName ? 'devbox' : undefined
}
}
+
+class FeedbackTreeDataProvider
+ implements vscode.TreeDataProvider
+{
+ getTreeItem(element: FeedbackTreeItem): vscode.TreeItem {
+ return element
+ }
+ getChildren(element?: FeedbackTreeItem): Thenable {
+ return Promise.resolve([
+ new FeedbackTreeItem(
+ 'Give us a feedback in our GitHub repository',
+ vscode.TreeItemCollapsibleState.None,
+ new vscode.ThemeIcon('github'),
+ {
+ command: 'devbox.openExternalLink',
+ title: 'Open GitHub',
+ arguments: ['https://github.com/labring/sealos/issues/new/choose'],
+ }
+ ),
+ new FeedbackTreeItem(
+ 'Give us a feedback in our help desk system',
+ vscode.TreeItemCollapsibleState.None,
+ new vscode.ThemeIcon('comment'),
+ {
+ command: 'devbox.openExternalLink',
+ title: 'Open Help Desk',
+ arguments: ['https://hzh.sealos.run/?openapp=system-workorder'],
+ }
+ ),
+ ])
+ }
+}
+class FeedbackTreeItem extends vscode.TreeItem {
+ constructor(
+ label: string,
+ collapsibleState: vscode.TreeItemCollapsibleState,
+ iconPath?: vscode.ThemeIcon,
+ command?: vscode.Command
+ ) {
+ super(label, collapsibleState)
+ this.iconPath = iconPath
+ this.contextValue = 'feedback'
+ this.command = command
+ }
+}
From 14ef299ddfc00a4c3171b48852f34cd2399fe9fd Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 17:52:57 +0800
Subject: [PATCH 047/105] fix: db view adjust
---
.../devbox/src/providers/DBViewProvider.ts | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
index 369448051c9..05db894a53e 100644
--- a/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DBViewProvider.ts
@@ -82,11 +82,9 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
}
copyConnectionString(item: DatabaseItem) {
if (item.connectionString && item.contextValue === 'database') {
- vscode.env.clipboard.writeText(
- `${item.password}\n${item.connectionString}`
- )
+ vscode.env.clipboard.writeText(item.connectionString)
vscode.window.showInformationMessage(
- 'Password and Connection string,copied to clipboard!'
+ 'Connection string is copied to clipboard!'
)
}
}
@@ -107,9 +105,9 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
items.push(
new DatabaseItem(
- `${'DBType'.padEnd(15)}${'Username'.padEnd(15)}${'Password'.padEnd(
- 35
- )}${'Host'.padEnd(60)}${'Port'.padEnd(40)}Connection`,
+ `${'DBType'.padEnd(15)}${'Username'.padEnd(38)}${'Host'.padEnd(
+ 80
+ )}${'Port'.padEnd(40)}Connection`,
'header'
)
)
@@ -117,9 +115,9 @@ class MyDbTreeDataProvider implements vscode.TreeDataProvider {
this.databases.forEach((database) => {
const label = `${database.dbType.padEnd(15)} ${database.username.padEnd(
17
- )}${'*'.repeat(10).padEnd(16)} ${database.host.padEnd(
- 45
- )} ${database.port.toString().padEnd(34)} ${'*'.repeat(20)}`
+ )}${database.host.padEnd(65)} ${database.port
+ .toString()
+ .padEnd(34)} ${'*'.repeat(20)}`
items.push(
new DatabaseItem(
label,
From 36b6cf67b7315a0fe33fdd40a919a3c3fe677c65 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Tue, 12 Nov 2024 18:25:30 +0800
Subject: [PATCH 048/105] feat: open in vscode internal broswer
---
.../ide/vscode/devbox/images/dark/globe.svg | 1 +
.../devbox/images/dark/link-external.svg | 1 +
.../ide/vscode/devbox/images/light/globe.svg | 1 +
.../devbox/images/light/link-external.svg | 1 +
extensions/ide/vscode/devbox/package.json | 26 +++++++++++++
.../src/providers/NetworkViewProvider.ts | 37 +++++++++++++++++--
6 files changed, 63 insertions(+), 4 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/images/dark/globe.svg
create mode 100644 extensions/ide/vscode/devbox/images/dark/link-external.svg
create mode 100644 extensions/ide/vscode/devbox/images/light/globe.svg
create mode 100644 extensions/ide/vscode/devbox/images/light/link-external.svg
diff --git a/extensions/ide/vscode/devbox/images/dark/globe.svg b/extensions/ide/vscode/devbox/images/dark/globe.svg
new file mode 100644
index 00000000000..a622c0bc06c
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/dark/globe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/dark/link-external.svg b/extensions/ide/vscode/devbox/images/dark/link-external.svg
new file mode 100644
index 00000000000..16162dff9ec
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/dark/link-external.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/light/globe.svg b/extensions/ide/vscode/devbox/images/light/globe.svg
new file mode 100644
index 00000000000..4699fb54191
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/light/globe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/images/light/link-external.svg b/extensions/ide/vscode/devbox/images/light/link-external.svg
new file mode 100644
index 00000000000..9a594b72b63
--- /dev/null
+++ b/extensions/ide/vscode/devbox/images/light/link-external.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 0ede5ca8024..6ff3dd5914c 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -109,6 +109,22 @@
"light": "images/light/refresh.svg",
"dark": "images/dark/refresh.svg"
}
+ },
+ {
+ "command": "devbox.openInIntegratedBrowser",
+ "title": "Open in Integrated Browser",
+ "icon": {
+ "light": "images/light/globe.svg",
+ "dark": "images/dark/globe.svg"
+ }
+ },
+ {
+ "command": "devbox.openInExternalBrowser",
+ "title": "Open in External Browser",
+ "icon": {
+ "light": "images/light/link-external.svg",
+ "dark": "images/dark/link-external.svg"
+ }
}
],
"views": {
@@ -200,6 +216,16 @@
"command": "devbox.copy",
"when": "view == dbView && viewItem == database",
"group": "inline"
+ },
+ {
+ "command": "devbox.openInIntegratedBrowser",
+ "when": "view == networkView && viewItem == network",
+ "group": "inline@1"
+ },
+ {
+ "command": "devbox.openInExternalBrowser",
+ "when": "view == networkView && viewItem == network",
+ "group": "inline@2"
}
]
}
diff --git a/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
index 30e36b6373e..7d6bd0f2573 100644
--- a/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/NetworkViewProvider.ts
@@ -35,6 +35,19 @@ export class NetworkViewProvider extends Disposable {
networkTreeDataProvider.refresh()
})
)
+
+ this._register(
+ vscode.commands.registerCommand(
+ 'devbox.openInIntegratedBrowser',
+ (item) => networkTreeDataProvider.openInIntegratedBrowser(item)
+ )
+ )
+ this._register(
+ vscode.commands.registerCommand(
+ 'devbox.openInExternalBrowser',
+ (item) => networkTreeDataProvider.openInExternalBrowser(item)
+ )
+ )
}
}
}
@@ -55,6 +68,19 @@ class MyNetworkTreeDataProvider
private async init() {
this.refresh()
}
+ openInIntegratedBrowser(item: NetworkItem) {
+ vscode.commands.executeCommand(
+ 'simpleBrowser.show',
+ `https://${item.address.split(/\s+/).pop()}`
+ )
+ }
+
+ openInExternalBrowser(item: NetworkItem) {
+ vscode.commands.executeCommand(
+ 'devbox.openExternalLink',
+ `https://${item.address.split(/\s+/).pop()}`
+ )
+ }
async refresh(): Promise {
const networks = await getNetworkList()
@@ -79,7 +105,8 @@ class MyNetworkTreeDataProvider
return [
new NetworkItem(
'Not connected to the remote environment',
- 'no-remote'
+ 'no-remote',
+ ''
),
]
}
@@ -87,7 +114,8 @@ class MyNetworkTreeDataProvider
items.push(
new NetworkItem(
`${'Port'.padEnd(40)}${'Protocol'.padEnd(60)}Address`,
- 'header'
+ 'header',
+ ''
)
)
@@ -95,7 +123,7 @@ class MyNetworkTreeDataProvider
const label = `${network.port
.toString()
.padEnd(38)}${network.protocol.padEnd(60)}${network.address}`
- items.push(new NetworkItem(label, 'network'))
+ items.push(new NetworkItem(label, 'network', network.address))
})
return items
@@ -107,7 +135,8 @@ class MyNetworkTreeDataProvider
class NetworkItem extends vscode.TreeItem {
constructor(
public override readonly label: string,
- public override readonly contextValue: string
+ public override readonly contextValue: string,
+ public address: string
) {
super(label, vscode.TreeItemCollapsibleState.None)
From d8c26d45561e69301d069478e8cf9d1cd8ba4421 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 13 Nov 2024 11:20:31 +0800
Subject: [PATCH 049/105] fix: file authority problem adjust
---
.../ide/vscode/devbox/package-lock.json | 209 +++++++++++++++++-
extensions/ide/vscode/devbox/package.json | 3 +-
.../devbox/src/commands/remoteConnector.ts | 11 +-
.../ide/vscode/devbox/src/utils/file.ts | 14 ++
.../ide/vscode/devbox/src/utils/sshConfig.ts | 12 +-
5 files changed, 219 insertions(+), 30 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/src/utils/file.ts
diff --git a/extensions/ide/vscode/devbox/package-lock.json b/extensions/ide/vscode/devbox/package-lock.json
index 2d82c7f5d0d..f33a26b7138 100644
--- a/extensions/ide/vscode/devbox/package-lock.json
+++ b/extensions/ide/vscode/devbox/package-lock.json
@@ -1,15 +1,16 @@
{
"name": "devbox-aio",
- "version": "0.9.3",
+ "version": "0.9.14",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "devbox-aio",
- "version": "0.9.3",
+ "version": "0.9.14",
"license": "MIT",
"dependencies": {
"axios": "^1.7.5",
+ "execa": "^9.5.1",
"ssh-config": "^5.0.0"
},
"devDependencies": {
@@ -336,6 +337,22 @@
"node": ">=14"
}
},
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@types/eslint": {
"version": "9.6.0",
"resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.0.tgz",
@@ -1441,7 +1458,6 @@
"version": "7.0.3",
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -1782,6 +1798,42 @@
"node": ">=0.8.x"
}
},
+ "node_modules/execa": {
+ "version": "9.5.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-9.5.1.tgz",
+ "integrity": "sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg==",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.3",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.0",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.0.0"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -1834,6 +1886,31 @@
"reusify": "^1.0.4"
}
},
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/figures/node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -2002,6 +2079,21 @@
"node": "6.* || 8.* || >= 10.*"
}
},
+ "node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/glob": {
"version": "10.4.5",
"resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz",
@@ -2149,6 +2241,14 @@
"node": ">= 14"
}
},
+ "node_modules/human-signals": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-8.0.0.tgz",
+ "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
@@ -2362,6 +2462,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
@@ -2383,8 +2494,7 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/isobject": {
"version": "3.0.1",
@@ -2946,6 +3056,32 @@
"node": ">=0.10.0"
}
},
+ "node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
@@ -3163,6 +3299,17 @@
"node": ">=6"
}
},
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
@@ -3185,7 +3332,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -3347,6 +3493,20 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/pretty-ms": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmmirror.com/pretty-ms/-/pretty-ms-9.1.0.tgz",
+ "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==",
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -3672,7 +3832,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"dependencies": {
"shebang-regex": "^3.0.0"
},
@@ -3684,7 +3843,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -3693,7 +3851,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
"engines": {
"node": ">=14"
},
@@ -3867,6 +4024,17 @@
"node": ">=8"
}
},
+ "node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -4114,6 +4282,17 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
@@ -4336,7 +4515,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -4550,6 +4728,17 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/yoctocolors/-/yoctocolors-2.1.1.tgz",
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
}
}
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index 6ff3dd5914c..c930e5c5a1e 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.13",
+ "version": "0.9.14",
"keywords": [
"devbox",
"remote development",
@@ -260,6 +260,7 @@
},
"dependencies": {
"axios": "^1.7.5",
+ "execa": "^9.5.1",
"ssh-config": "^5.0.0"
}
}
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index 61620392ebe..c12b440111e 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -2,7 +2,6 @@ import * as os from 'os'
import * as fs from 'fs'
import * as vscode from 'vscode'
import SSHConfig from 'ssh-config'
-import { execSync } from 'child_process'
import { Disposable } from '../common/dispose'
import { modifiedRemoteSSHConfig } from '../utils/remoteSSHConfig'
@@ -15,6 +14,7 @@ import {
convertSSHConfigToVersion2,
ensureFileExists,
} from '../utils/sshConfig'
+import { ensureFileAccessPermission } from '../utils/file'
export class RemoteSSHConnector extends Disposable {
constructor(context: vscode.ExtensionContext) {
@@ -157,14 +157,7 @@ export class RemoteSSHConnector extends Disposable {
try {
const sshKeyPath = defaultSSHKeyPath + `/${sshHostLabel}`
fs.writeFileSync(sshKeyPath, normalPrivateKey)
-
- if (os.platform() === 'win32') {
- execSync(`icacls "${sshKeyPath}" /inheritance:r`)
- execSync(`icacls "${sshKeyPath}" /grant:r ${process.env.USERNAME}:F`)
- execSync(`icacls "${sshKeyPath}" /remove:g everyone`)
- } else {
- execSync(`chmod 600 "${sshKeyPath}"`)
- }
+ ensureFileAccessPermission(sshKeyPath)
} catch (error) {
vscode.window.showErrorMessage(
`Failed to write SSH private key: ${error}`
diff --git a/extensions/ide/vscode/devbox/src/utils/file.ts b/extensions/ide/vscode/devbox/src/utils/file.ts
new file mode 100644
index 00000000000..5f109b6c90d
--- /dev/null
+++ b/extensions/ide/vscode/devbox/src/utils/file.ts
@@ -0,0 +1,14 @@
+import { execa } from 'execa'
+import * as os from 'os'
+
+// File access permission modification
+export const ensureFileAccessPermission = async (path: string) => {
+ if (os.platform() === 'win32') {
+ const username = os.userInfo().username
+ await execa('icacls', [path, '/inheritance:r'])
+ await execa('icacls', [path, '/grant:r', `${username}:F`])
+ await execa('icacls', [path, '/remove:g', 'everyone'])
+ } else {
+ await execa('chmod', ['600', path])
+ }
+}
diff --git a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
index 360996ba692..a40739e264d 100644
--- a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
+++ b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
@@ -1,8 +1,8 @@
import * as os from 'os'
import * as fs from 'fs'
import path from 'path'
-import { execSync } from 'child_process'
import { GlobalStateManager } from './globalStateManager'
+import { ensureFileAccessPermission } from './file'
// 将老版本的 ssh 配置改成新版本的 ssh 配置
// # WorkingDir: /home/sealos/project
@@ -99,14 +99,6 @@ export function ensureFileExists(filePath: string, parentDir: string) {
})
fs.writeFileSync(filePath, '', 'utf8')
// .ssh/config authority
- if (os.platform() === 'win32') {
- // Windows
- execSync(`icacls "${filePath}" /inheritance:r`)
- execSync(`icacls "${filePath}" /grant:r ${process.env.USERNAME}:F`)
- execSync(`icacls "${filePath}" /remove:g everyone`)
- } else {
- // Unix-like system (Mac, Linux)
- execSync(`chmod 600 "${filePath}"`)
- }
+ ensureFileAccessPermission(filePath)
}
}
From 16a203a851903e663c0e96c8057f09bda4707ae3 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 13 Nov 2024 11:24:32 +0800
Subject: [PATCH 050/105] chore: adjust code position
---
.../vscode/devbox/src/commands/remoteConnector.ts | 7 ++-----
extensions/ide/vscode/devbox/src/utils/file.ts | 15 ++++++++++++++-
.../ide/vscode/devbox/src/utils/sshConfig.ts | 14 --------------
3 files changed, 16 insertions(+), 20 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
index c12b440111e..05f8ec7bed4 100644
--- a/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
+++ b/extensions/ide/vscode/devbox/src/commands/remoteConnector.ts
@@ -10,11 +10,8 @@ import {
defaultDevboxSSHConfigPath,
defaultSSHKeyPath,
} from '../constant/file'
-import {
- convertSSHConfigToVersion2,
- ensureFileExists,
-} from '../utils/sshConfig'
-import { ensureFileAccessPermission } from '../utils/file'
+import { convertSSHConfigToVersion2 } from '../utils/sshConfig'
+import { ensureFileAccessPermission, ensureFileExists } from '../utils/file'
export class RemoteSSHConnector extends Disposable {
constructor(context: vscode.ExtensionContext) {
diff --git a/extensions/ide/vscode/devbox/src/utils/file.ts b/extensions/ide/vscode/devbox/src/utils/file.ts
index 5f109b6c90d..726f014b002 100644
--- a/extensions/ide/vscode/devbox/src/utils/file.ts
+++ b/extensions/ide/vscode/devbox/src/utils/file.ts
@@ -1,5 +1,7 @@
-import { execa } from 'execa'
import * as os from 'os'
+import path from 'path'
+import * as fs from 'fs'
+import { execa } from 'execa'
// File access permission modification
export const ensureFileAccessPermission = async (path: string) => {
@@ -12,3 +14,14 @@ export const ensureFileAccessPermission = async (path: string) => {
await execa('chmod', ['600', path])
}
}
+
+export function ensureFileExists(filePath: string, parentDir: string) {
+ if (!fs.existsSync(filePath)) {
+ fs.mkdirSync(path.resolve(os.homedir(), parentDir), {
+ recursive: true,
+ })
+ fs.writeFileSync(filePath, '', 'utf8')
+ // .ssh/config authority
+ ensureFileAccessPermission(filePath)
+ }
+}
diff --git a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
index a40739e264d..fd067497797 100644
--- a/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
+++ b/extensions/ide/vscode/devbox/src/utils/sshConfig.ts
@@ -1,8 +1,5 @@
-import * as os from 'os'
import * as fs from 'fs'
-import path from 'path'
import { GlobalStateManager } from './globalStateManager'
-import { ensureFileAccessPermission } from './file'
// 将老版本的 ssh 配置改成新版本的 ssh 配置
// # WorkingDir: /home/sealos/project
@@ -91,14 +88,3 @@ export function convertSSHConfigToVersion2(filePath: string) {
result = result.trim()
fs.writeFileSync(filePath, result, { encoding: 'utf8', flag: 'w' })
}
-
-export function ensureFileExists(filePath: string, parentDir: string) {
- if (!fs.existsSync(filePath)) {
- fs.mkdirSync(path.resolve(os.homedir(), parentDir), {
- recursive: true,
- })
- fs.writeFileSync(filePath, '', 'utf8')
- // .ssh/config authority
- ensureFileAccessPermission(filePath)
- }
-}
From 7863fadbc87844e2e11af047fa3921d6135587c9 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 13 Nov 2024 11:45:08 +0800
Subject: [PATCH 051/105] fix: semgrep
---
extensions/ide/vscode/devbox/src/utils/file.ts | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/utils/file.ts b/extensions/ide/vscode/devbox/src/utils/file.ts
index 726f014b002..3ab0193367d 100644
--- a/extensions/ide/vscode/devbox/src/utils/file.ts
+++ b/extensions/ide/vscode/devbox/src/utils/file.ts
@@ -16,8 +16,16 @@ export const ensureFileAccessPermission = async (path: string) => {
}
export function ensureFileExists(filePath: string, parentDir: string) {
- if (!fs.existsSync(filePath)) {
- fs.mkdirSync(path.resolve(os.homedir(), parentDir), {
+ if (filePath.indexOf('\0') !== -1 || parentDir.indexOf('\0') !== -1) {
+ throw new Error('Invalid path')
+ }
+ const safeFilePath = path.normalize(filePath).replace(/^(\.\.(\/|\\|$))+/, '')
+ const safeParentDir = path
+ .normalize(parentDir)
+ .replace(/^(\.\.(\/|\\|$))+/, '')
+
+ if (!fs.existsSync(safeFilePath)) {
+ fs.mkdirSync(path.resolve(os.homedir(), safeParentDir), {
recursive: true,
})
fs.writeFileSync(filePath, '', 'utf8')
From f4f919fe2ec4698e575008b302e68ee84a25ea61 Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 13 Nov 2024 14:30:24 +0800
Subject: [PATCH 052/105] feat: web delete will cause local ssh deleted
---
.../ide/vscode/devbox/src/api/devbox.ts | 4 +-
.../src/providers/DevboxListViewProvider.ts | 47 +++++++++++++------
2 files changed, 35 insertions(+), 16 deletions(-)
diff --git a/extensions/ide/vscode/devbox/src/api/devbox.ts b/extensions/ide/vscode/devbox/src/api/devbox.ts
index d458cf2d9c5..1da38dcc036 100644
--- a/extensions/ide/vscode/devbox/src/api/devbox.ts
+++ b/extensions/ide/vscode/devbox/src/api/devbox.ts
@@ -1,8 +1,8 @@
import { GET } from './index'
-export const getDevboxDetail = async (token: string) => {
+export const getDevboxDetail = async (token: string, hostName: string) => {
const { devbox } = await GET(
- '/api/v1/getDevboxDetail',
+ `https://devbox.${hostName}/api/v1/getDevboxDetail`,
{},
{
headers: {
diff --git a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
index b5ffcc6c391..ec7c7e8b523 100644
--- a/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
+++ b/extensions/ide/vscode/devbox/src/providers/DevboxListViewProvider.ts
@@ -16,7 +16,6 @@ export class DevboxListViewProvider extends Disposable {
if (context.extension.extensionKind === vscode.ExtensionKind.UI) {
// view
const projectTreeDataProvider = new ProjectTreeDataProvider()
- // TODO: 完善 feedback部分
const feedbackTreeDataProvider = new FeedbackTreeDataProvider()
const devboxDashboardView = vscode.window.createTreeView(
'devboxDashboard',
@@ -62,7 +61,11 @@ export class DevboxListViewProvider extends Disposable {
vscode.commands.registerCommand(
'devboxDashboard.deleteDevbox',
(item: ProjectTreeItem) => {
- projectTreeDataProvider.delete(item)
+ projectTreeDataProvider.delete(
+ item.host,
+ item.label as string,
+ false
+ )
}
)
)
@@ -103,7 +106,7 @@ class ProjectTreeDataProvider
return
}
try {
- const data = await getDevboxDetail(token)
+ const data = await getDevboxDetail(token, item.hostName)
const status = data.status.value
switch (status) {
case 'Running':
@@ -120,6 +123,18 @@ class ProjectTreeDataProvider
}
} catch (error) {
console.error(`get devbox detail failed: ${error}`)
+ if (
+ error.toString().includes('500:secrets') &&
+ error.toString().includes('not found')
+ ) {
+ const hostParts = item.host.split('_')
+ const devboxName = hostParts.slice(2).join('_')
+ if (error.toString().includes(devboxName)) {
+ await this.delete(item.host, devboxName, true)
+
+ return
+ }
+ }
item.iconPath = new vscode.ThemeIcon('warning')
}
})
@@ -182,19 +197,23 @@ class ProjectTreeDataProvider
)
}
- async delete(item: ProjectTreeItem) {
- const result = await vscode.window.showWarningMessage(
- `Are you sure to delete ${item.label}?\n(This action will only delete the devbox ssh config in the local environment.)`,
- { modal: true },
- 'Yes',
- 'No'
- )
-
- if (result !== 'Yes') {
- return
+ async delete(
+ deletedHost: string,
+ devboxName: string,
+ isDeletedByWeb?: boolean
+ ) {
+ if (!isDeletedByWeb) {
+ const result = await vscode.window.showWarningMessage(
+ `Are you sure to delete ${devboxName}?\n(This action will only delete the devbox ssh config in the local environment.)`,
+ { modal: true },
+ 'Yes',
+ 'No'
+ )
+ if (result !== 'Yes') {
+ return
+ }
}
- const deletedHost = item.host
GlobalStateManager.remove(deletedHost)
// TODO:抽象出一个 crud ssh 文件的模型
try {
From b8e71006e719536cbc389b44cc5b27ff8758a82c Mon Sep 17 00:00:00 2001
From: mlhiter <3076438032@qq.com>
Date: Wed, 13 Nov 2024 14:51:54 +0800
Subject: [PATCH 053/105] fix: devboxList cpu/memory tooltip z-index
---
.../app/[lang]/(platform)/(home)/components/DevboxList.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/frontend/providers/devbox/app/[lang]/(platform)/(home)/components/DevboxList.tsx b/frontend/providers/devbox/app/[lang]/(platform)/(home)/components/DevboxList.tsx
index 0be248a0071..70d056c873c 100644
--- a/frontend/providers/devbox/app/[lang]/(platform)/(home)/components/DevboxList.tsx
+++ b/frontend/providers/devbox/app/[lang]/(platform)/(home)/components/DevboxList.tsx
@@ -171,7 +171,7 @@ const DevboxList = ({
key: 'cpu',
render: (item: DevboxListItemType) => (
-
+
(
-
+
Date: Wed, 13 Nov 2024 15:34:27 +0800
Subject: [PATCH 054/105] chore: 1.0.0
---
extensions/ide/vscode/devbox/CHANGELOG.md | 24 +++++++++-
extensions/ide/vscode/devbox/README.md | 41 ++++++++++++------
extensions/ide/vscode/devbox/package.json | 2 +-
.../ide/vscode/devbox/screenshot/create.png | Bin 0 -> 226593 bytes
.../ide/vscode/devbox/screenshot/database.png | Bin 0 -> 204027 bytes
.../ide/vscode/devbox/screenshot/dev.png | Bin 0 -> 546492 bytes
.../ide/vscode/devbox/screenshot/list.png | Bin 0 -> 148900 bytes
.../ide/vscode/devbox/screenshot/manage.png | Bin 0 -> 81136 bytes
.../ide/vscode/devbox/screenshot/network.png | Bin 0 -> 215740 bytes
.../devbox/screenshot/port-forward-result.png | Bin 0 -> 562367 bytes
.../vscode/devbox/screenshot/port-forward.png | Bin 0 -> 239122 bytes
.../devbox/screenshot/update-network.png | Bin 0 -> 237614 bytes
12 files changed, 52 insertions(+), 15 deletions(-)
create mode 100644 extensions/ide/vscode/devbox/screenshot/create.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/database.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/dev.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/list.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/manage.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/network.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/port-forward-result.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/port-forward.png
create mode 100644 extensions/ide/vscode/devbox/screenshot/update-network.png
diff --git a/extensions/ide/vscode/devbox/CHANGELOG.md b/extensions/ide/vscode/devbox/CHANGELOG.md
index 05fea708252..eac9809723d 100644
--- a/extensions/ide/vscode/devbox/CHANGELOG.md
+++ b/extensions/ide/vscode/devbox/CHANGELOG.md
@@ -6,4 +6,26 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
## [Unreleased]
-- Initial release
\ No newline at end of file
+## [1.0.0] - 2024-11-13
+
+### Added
+
+- Devbox basic management: Create(in web page),Delete(delete local ssh config),Open,Refresh,State.
+- Network panel,Database panel: View network and database information,open network port in browser or vscode integrated browser,copy database connection string.
+- Adapt to dark theme.
+- custom your own API Region and Zone.
+- Delete devbox in web page will delete local ssh config.
+
+### Fixed
+
+- windows file authority issue cause connection error.
+- Connection error caused by `Remote-SSH` custom ssh config path.
+
+### Changed
+
+- update ssh config file format.
+
+### Security
+
+- Replace `child_process` with `execa` to avoid security issues.
+- Deal with path traversal attack.
diff --git a/extensions/ide/vscode/devbox/README.md b/extensions/ide/vscode/devbox/README.md
index 63e77c2c054..907ddb9a15d 100644
--- a/extensions/ide/vscode/devbox/README.md
+++ b/extensions/ide/vscode/devbox/README.md
@@ -4,51 +4,66 @@ Sailos Devbox is a remote development&production environment that helps you deve
This plugin support connection and management of Devbox.
-> Note: Currently, only connections are supported, management will be supported later.
+> Note: Currently, only connections and simple devbox management are supported, other functions(including amazing AI features integrated with sailos natively) will be supported next version.
## Features
- Remote environment is based on Kubernetes, it has the advantages of K8S's environment.
+- Zero-configuration, no need to configure the environment, just connect to the Devbox.
- Preset popular languages and frameworks make it easy to get started with development.
- It has all the features of the editor, such as VSCode and Cursor.
+- Support local port forwarding and public port export.
## Usage
### 1. Connect to the remote environment
-Login to the [Sailos Devbox](https://usw.sailos.io/) and create new Devbox.
+Login to the [Sailos Devbox](https://usw.sailos.io/) and create a new Devbox.
-![create](https://raw.githubusercontent.com/mlhiter/typora-images/master/create-page.png)
+![create](screenshot/create.png)
Then you can connect to the Devbox by your own IDE in the list page.
-![list](https://raw.githubusercontent.com/mlhiter/typora-images/master/CleanShot%202024-09-27%20at%2015.44.57%402x.png)
+![list](screenshot/list.png)
After that, you can use the Devbox just like your local environment.
### 2. Develop your project just like your local environment.
-![dev](https://raw.githubusercontent.com/mlhiter/typora-images/master/img_v3_02f2_eb75e0b8-6eab-43e5-b383-6a953e7286eg.jpg)
+![dev](screenshot/dev.png)
### 3. Get your port export result
You can use local port forwarding supported by VSCode or Cursor to get your own page.
-![port-forward](https://raw.githubusercontent.com/mlhiter/typora-images/master/CleanShot%202024-09-27%20at%2015.10.37%402x.png)
+![port-forward](screenshot/port-forward.png)
-![port-forward-result](https://raw.githubusercontent.com/mlhiter/typora-images/master/CleanShot%202024-09-27%20at%2015.50.18%402x.png)
+![port-forward-result](screenshot/port-forward-result.png)
If you want to **share your port (maybe a page or an API) with others**,you can update your network config in Sailos Devbox Website to export your port **in public network**.
you can update a public port or there is **a preset default public export port**(Different runtime has a different default public export port).
-![update-network](https://raw.githubusercontent.com/mlhiter/typora-images/master/CleanShot%202024-09-27%20at%2015.54.36%402x.png)
+![update-network](screenshot/update-network.png)
-## Requirements
+## Managements
+
+### 1. basic
+
+You can do some simple management operations or give us feedback in the Devbox list page.
+
+> Note: Delete devbox only influence local ssh config, will not delete remote devbox.
-You need to install `Remote - SSH` extension in your IDE firstly.
+![manage](screenshot/manage.png)
-## Known Issues
+### 2. Network and Database panel
+
+You can view the network and database(all your databases in your namespace) of the Devbox in the Network and Database panel.
+
+![network](screenshot/network.png)
+![database](screenshot/database.png)
+
+## Requirements
-- Management function is not supported yet.
-- Local port forwarding only supports same port forwarding. such as devbox's 8080->localhost:8080.
+1. You need to install `Remote - SSH` extension in your IDE firstly.
+2. You need `a SSH client` in your local environment.
diff --git a/extensions/ide/vscode/devbox/package.json b/extensions/ide/vscode/devbox/package.json
index c930e5c5a1e..c411a4d6411 100644
--- a/extensions/ide/vscode/devbox/package.json
+++ b/extensions/ide/vscode/devbox/package.json
@@ -2,7 +2,7 @@
"name": "devbox-aio",
"displayName": "Devbox",
"description": "help code for cloud devbox in sailos/sealos",
- "version": "0.9.14",
+ "version": "1.0.0",
"keywords": [
"devbox",
"remote development",
diff --git a/extensions/ide/vscode/devbox/screenshot/create.png b/extensions/ide/vscode/devbox/screenshot/create.png
new file mode 100644
index 0000000000000000000000000000000000000000..59647daaa54aa491cea23f8cef9528e7928d47f3
GIT binary patch
literal 226593
zcmeFZXIPU_vo0(siXdR2DBUg~AYD3wg3^&DH3HIm@1Y1HAfVEuh9ZRCLWd9p0VyH$
zPH5753xp)(JnntYd%f@8uljwz&iS!_gu1ThS!>p;nS1V;S>fuc3RDz~6lczyp?dNB
z>B}=`E&`tm`sAd*Ul@-P3V?4Ut}hj2&y@5suL8e3HGlQOLPg~aC-5`*8ImyTGv|H{
z0X~et=ggV286;=U0^dn~{Vjv^|NQsj%Z#)C=jRLhzXmGWZ1|lyBXj1((@zlkU>$-w%NF`7?YT)Y97boUExS$g5;D)uow@43q|XGs3=<$V`vdG=nL>n1sS
z;2F|Ce0hD1eWSzm&tn2*;uzRB7#71mGX43jGJ$1ms6W0Ac#(#2U>PWmP1fO$3y?Vz
zR7Qo{bQY)J`_uG)O+2J3P)S{_%y;GrOT{D-<6!K2#8tigrb|^-wP8B?#Nn}?JIh4l
zaHdMEB@%n>Pg47}I$6Eu&cS`>*#>4waPOCJ*I_jMAdKwDkGTED6r9@|f>(xv&I)P9
zVv1)@kL7{`f;w{V{$++ibmaQgGh6;)X4vBg5zE(G{H!E$4q}{E~h(s1O79+>|VOp04)|bwp!;2CZHV^}t$?OwjMbo}DOD&Qv%e
zVPdYSgWom$m7Z0EAkrEz_$q&0X!NF`VK5^_)Xf-*n(#mA-qXhBD%(*C`W^^}<~`lf
zDQaEUt*P;A_fyg&<#t)Y`3|U{&|5uM+K;8ZfN28m)4X~bHzCJWg<3r|JZ3>V;c
zT4U}i#vKIk7K}G|s-e;)g&n4tXN`&RPbhKNW3TmY5kJew>2Zqc*XfRes2+lKWh%E9X3YOU)s&juRiI3A%bV9}c*@*nsj5+8}B4od;
zO4_xbBI3A3z#YY}i8#&HU@TSQ9%$?@ZNK^PF;l;4&3o_Xc>ST8{e;N-RP#1`y~ifM
z>37uW?SKeul2H(1FC&y-N0>16iin?(^#|`t&A`S<1FL^PjAT%>{${~VDsDv}#*7(@
z%fvj*2KjHK*rK=9c&u(iOhfg_&Vt@x`~4T6#|of-Q8(l{hnc3FI>|$y&8kuSOmbLQ
z$NMX{s~u-De}FI>q7GBFa|o3?MH-cAe28lM$=)<^)bQ|deTybkHQxn)ynEUjq{BoE
z1tuG}0VQ%YTaN5#?reJ>pmZu*f||;o%v{c}zz^v`gbt!eCTupc-k$PuItj&d#cvZ;
zN~LBl86r$vvqjcZ-fm4Jq`kX(R8ne;5#Vgu&x+Y%Jn@p;WmrH#RhM>liO@cd+#f!o{mPRG4L1;
zJj|}L)p49!q1rseV7A7vuz=IuFM?pLsaj|4?7=E*p4muI(r}&oW3oT^3Bb(GUM$kD
zQhWh6sJ8R(pG$rOoC?wDdiMa0w?Fhso6}9f=G_VC8Wgwfh+X{;N`_ur*N$i-Oi**P
zq2ETcV1;eAQ<~#0&L)g7XOJBT*<93(rYm#{4`z|}>8Rw^mVF|${vh73+av9K
z!`N(;Sh-n;l-qIM>bLIh2G>#ET;-H_UQoJ)3KN^8&wOh&gjL#E(RZOOvXG8snfti)
z)KDp*xX~Tw@huo7K<<0Eig2IAS%$~%YfIvqmi~McO6YHN2mx#b({)Y6NBW4wuC0a>Vw;V)TMK3vw(J#
zl+=M-?B>6Rvq|hwt~Y+wyEB!u1Bgb*cI2_wPGFN(pM|;^xW1I#0>@FYTx=-aw&}Nz
zx%44?UKHzQGn1tp-oib3q$61NrkoT~?dv#-mdjD1eL0snV-b`7X!7X6WckwjkFa~n
zU)0CF!eW>OjG`cq%{zJ}HSa}p=vK$sOw`yrc|Vj3}kd$fL&Q=nkr
z%s@ibAP!Tyy60f;0)G%&oz~#rPn^6drVH46rFc&C8o`qm;|nv9+++~}D=w=|E_TJsnH&GnbcK-n
zomh7WSoSvV4T-w^ye{d}!URyErHK{toFcbFBJv)jslQd})6OQoRBh*<7D$
zGKW%EU*w)~#MKpxCB%Nl(~=Hld5U|o*$p?1RyxbY?L&4qYNTlV<6WiPtY;K@QQGRY
zz2HG1&)zhFBTioRav7By`h_~~IJh3a<-k;?LNs$gp~l(a`|sHTRx-fbRW^m~kpYm^
z4d$VXTAR4s4}Y@%AzB#)+gxAaPJUyQR+5N&DrlW_h-yyDMAdrmryYi$eR1|e(%1HV
zJ;D?>*743t_HbgqC2D}gUIT9AOOve9MwE|A$!DDT0m>u84`mJ(j9iWuh
zaMd(1?M5%Y&=U#a&=>Di8G
zX~-GRkyNq?^Wf-eGt1uTWe=y>Kq&%ZwaWGgtp{5+Fw*#QBtm{6NX&hWS;|jPyFhEs
zspKO>mJd;4)bOBjd2P*RCPi2~-^k`Qh`8r+8AfRI_iMCwwdO>sZR@w9=-c<58RwWV
z>wBFS1n%Mc<^v?Pa^T_~99Ui*D5hADa^*+)ph8rd$q1?uz7th17jRv#$|eWErUq%6f00+Z
z%-T>sfGBZ4JFjtnqkl~U_)n!|LF;V!sIyZ{qFlb14L$(Kk>noazib$Kz0i&fYV^9V
zhUy5iE3gpvsDlsIM-~(I%VzfXiaJ|8x1@IVO9w5~7>#qaJ{dl<;jD!=zh0*1j$gA3
z7&_RU;i9)Hyf|fh+R_Hc9n?&4Cg@Z=Ex&p9r#>
z*W4b3KHiIT2)}x_!cnvI2~5Be?nCqOaL=mA)3R
zEOs^V#cg>t4At^@$Ejay;Dmik5ZHhMn?H}m!Lm~=l&{l&Ed!}vXzlJ^KZ#1Q9{j3t
zz?0WeKp^0V4@`EezP>msG1A?Q>zxUh47+sJPX5oKrpyD12YWRR)AayEKiL*|7D1bg
z7BKJ1n828<0rPNU93hn;>pg
z^Z%7!ATO73`aDZciJOc3PXmxul`E+iTl*XR6|;V%=sr4Fz<
z=jL5){xVKh0T{RPc!2URoXM33vwH{my64i(610tf%HBbQwO9lR;>
z^}=7|a_iMEouN4cRrvFnX8#FnoUFrhn!m{9Y1uEGW<8@C^CuAd9|}W`3!VDN`e!45
z`Tgr(XHMcwD(hba{Snx>|53pIc3l2P0e_>gfW`X1rGPwF{J?)WA2MHQcSgE9?k8*$
z5AK()+?@SM+l}X~j@8^4n@eVHyGAF;dNZuyee?aUImOBsV<^N$q2H|W3@M*}Gky9l
zX4miFXMSQL#YsdzbN|+oS%*$Dsxr9nBt6&5QV-;WP+=JA+TktR`!q3Oyb}t4u;F})GJ5_IeG)$SpZyC^
zMKYz&kHPq3XCuSZG}AcQ$|k)~Cy3PH-hm%JCJfpxW^9<~s`k#put^+D
zf1LBhY*EI#_E~?u@<1=^I1ygYz-{M5M>CO8O+<
z@}9pFe(iglcuf8gHm0LhJizyRWv)xPpMe>Q@?;76v&5{2+lVxuy(0w
zz1~VI1HF#3diy&|d>Ki0a1p+I8MOrr?olg=Tq-Df2t1S|%;@I0mSf?l!y8G&
z$LsRbW>2R;(AEC}*mJigwXIDu(*K-jpW?BA
z+ECZ9Eyzi>AR7@VFHH-{lkvHNp}a$j{H-6zf(6ESK5X-whkXUPvHoO0r?gMg@9u+5
z-oD;YcXYtfoLi8g4re9(&*`jqbWY3phw4i|Q|~{gXc6iode5^88j4*qP7Cx;k_?)f%c^u^`Pnyc41$
zZQ_yb#;i&@hra{(KdAGf;BRfgfBqvR4RFw9upG!QGZ)cexTA93~Q1&ahWX!OUb~k
zUxCMmMgpO;r;CeXqOeLd^EjvWgPHna-;2Nr?O|X`9~HLgaa2kymT=yyR879`$>VC{
zob&vXtmzE_i#*Ns!(g(#(B->iUM1BmVxU^D7Y+5EtFNFQQD-LA|D4^@4f?@^5%<}M
z>)T&;rJ_7p64d2D+6Nwpht;lwCRt6<`A@}VsLjBR
zw-@R;M-4>>p-N01iJl85D%bW0If{Y_tMXB-iP9i6z@U~G!Rr0}A14BAjn~@2jkE(a
z0XOGoqZ;`oIW)FF3S^lGS?CDbuH_Bp8!%^Mw{Haq|K+XF$VBZQpSWEs-n<~x
zNVuv}S`)JC_9N(f9aS=qfZW{MFtt2qAc;e42qOwPPSkcbu%$}+8Xv+DjOzP`
zHl=X-W)c4Nyf2#1WA9Zp72$?^vO+1AN{!YJQNAAi^*&+LY{Mni0!u?)K$a?EvDo5w
zyh+fP+hs0?OKsgF@D=bf@_N#vC&3JxQ6Entw{+7byp!*_cL9!)%!|Z%q4p9J-y9@B
zLXn<#s8r1|Oc)?Eu#Kobg&5Y+Je{UjpGZg0k~nHAW-<8`igT)r;&uJ!oeKp+UJISE_hZ^HZG0NHEqz-jB?ISWUSkQI
zFtvFxZ!K~5<}>Ch<+PX@&y#~yAOVm*DU|3BLu{jsYS6-k%jK4zFl3YrDGmbW%Ak^s
zfK&Yfy+=H)r*1(UT&Fd!dn@ayQdYX$DM3dpmEMHCGc-eJ79jHgB-#)U+5OBuOX%_A
z+9{B%qBgj@q=bkLgDA$a?TW5j(`C+)<3+|*pWpRNnA4^Ec(X|P9n5C7ZY7o~=DOv7
z_TFzaO?w`7oXc&1f*`yICsA=6ngA)5ZxbI8esuyI@cp#PeUiGEBtO|}cV5`9m5;wz
zm7dpVZoy1EOXgHU|FG}$RoA~avzM=(qn&g`#v_SoVjUhB(2a5-!iA`M@PbZaG}};-
zF<&!Rf5)o5ev_n2kJht2k4@26^>0jY7O}a!>OE>VTZN00$3`8eDhBP=%;r=KJOup<
z(+S35dlOWX6aL51ayisfW!4RHcT+NX)N@?0*0Es!gcsh9M-DZ#9G@AuUzXXeepUiQ
zhBx3e#3@E__9NSq<03tN_f@p-(gs;37|Qpx^~Y5VW!M);?$*@F#_Gm+v1TBjw7?o*
z%hf+amP&?}J}+_=m(2vph53Sa<2fVgI1Gzzaxg3n91m7JpTE1LGp084q5VV3W0QG7
z0lhryj3ebF{sUsJXVjW@F(a;}8sPyJIp}Crh#uE1Fa$CPr!xnfAEhDr2)EUWy7Pre
zlRi$-=!g7Bmh8lvHrE$**K80JWBclDoa*Kv9W1thuk@%;t55_>RX(E4S~h09nb
z!g>fqegYi!tfR!BYD_GG^xwPb@616xNdr`CqmmO-j>t8-k&+pojqgdjvCCFA$j8oj
zDPBpJjiH3%YON$4Zbn3cV7NPi=G4E|H)eA|uZ{G+nn9V#K4mKyU{4#t3z%GKPw-el
zIH99V%!ByNtj2+uCS{ZipvhN~n&d_#cZWYPNgDD=`wOFU?V&&wiI2DUD(yJTl3?Gn
zWBQCzE$LXPPSO3~lkZA;BDzI&*89=zjo#g^^wyh8P}^7KF2(%KTIwPByD5&1_<|Gv
z{m=x0W(ormhF`CJq0@tE;=1eWzBSSva%pp2TgPUWIN^ShvDk2`ix@2MnxSIZ>O3xRhqnstDv~1l
zAFCfKC6*3Qak}dsDmrPod^HW@2v(97-$H|vR2j1JY;V|tVo5^rhmB|CIk@Zp*Up8s)
z&v!N7>6hxJ^83%-Jt~Bv41dH66b?6Y{_ILp=?vB{aa>M+OV>qTv!?wDvC9ije4z7s
zT(Jd=d6cQQHL|z>tkPz_RmWaxyw10D_^{5EAsLRFOHX4mR!Tl77FmyBk$%>o82?bG
zTKR>_mm0st35vz;p*&+fNUK_!R0nfT*wgi3?c$d=tv}!CP)#+gvzbN^r7Fb)LyvbC
zMoV=Eg>-uXe+a7o+2pmVC{UG-DQKN3AjKy=4YP<5^faz`v#ZN93ZPL&|8b@9M74A&*PWfYr{Pz%
z3tpAH2{+xHZ|_XGA7lN<<=`=Z`);3FwE7GeYK^>Y8r=*u4N>&eOaYQm;zeN3`Jbz7
z;FC7ylA@+wmdQmFM0bYosE%cYxT%g@%P;!o0P(N$ntNE)nIwQ~9M{x(l<&^jIG$k~
zd6b<0@fLP}od2!!jkTL0rK5$~d?pCFu$VE=oTu$UZv!3)MNp5F>KeG7<0`AM-XE#k
zC#r|+&1T+~j$y><(IE6PQyK|NG_4BxgbKPsI*CDqD+azws}Oy%_*B@x;S+&JlNHx(A-W}oa3Eb<#-;$CM8u2_7petJM|bH@
zmw6A?6k&b`cSw}jowGuuPbD-UH=!!AoQ_+}1xJ1dRy#CibV;^D8M!Zf#GQ_h5A-4d
zl;cHYi{V2c1x4vx=^v`a^J8h=`mRr}ZSF4I_rGxJxANY8^A4PzCn5)>HDin3NxOHb
z5{1?+#c6iBCKtNSS7O6rQnjMy14JCBvHrU@gYvsAor4UVJM^!|)a(IlJ5&ayYQtBK
zq1T7Ipvs?={nI5qUo5YUZTU|}u68s!?xoGap6&)G;{`zIRE3x{ov#ATWssU0&!m^n
zfTAd>Nx-*sG2m^Xn+xNg+bDSrtZ`Opx_OjV8?*zOH4FDuVKLaGYu4`Y%vLauL2g_U
zQ8PZCGY(gwTO(vELeCk8@J&?Hg4wk(Uc+?93*fTI1O{?^S+$)JemMp)QcNO_Lhx0%
z4$?*%Of1%+g4vuLZ4NJ|Jh^sHrDn5OqiUgpEy+mK_02YJcp0#O!X}7w7q9j}Bwt)n
zSZ@xaVFSV((;mR~QjsaK2e*Rf==TSyW_Ac^WOQ-L7SjPc6f~?7&(p->buPHQ;!({k
z;xoISEamI5eX!bLucBw|q%s4BnJuSBnC0gl=@LeZ4O7{l_`!6`a~>uMaA*{nhE{0a
zKecIs+UkxxOwuOmz!ErZlf;S#pgqFeLeL*cHnb!B-MDxj?Utc0=mXZq?lNi`pjHX)
zJcwDpxswH9lbM3|*a
zE2*{S%SK2mE!2e49vWA-(9)7=!L96(X&*2amz86a8;=!s
zIMH;iOqT0SLp<{N0HRfo*Szj{da#t6r@9$$7xk&x;>4
zfVmB7Mwfa-_tB31hLlk@PAXs2eZwxT+3N2_|0bk+OdiLnQR@@$!X)g-Ch5?QYHfOX
zVBWsb7J)T?4#^$%joM^_h;KI$XPwE~;|_9D>$oR9Y|-5$Zx#HdS0ayh=ks%<6j=5a
z9=G8?!xO%`v<*=7Zn}#%nk7zt7?0Fi_!v^-H7*7um4`VKkze?XdN=g;7CV!;mD=aB
z?aE_=v94SKyeeyP7)#FwHCAYKy|?v&tFY6RJ`6m`H6iZ_d_voG=@_N3RkJ;%Eu85Q
z&!PQvdr^@=bIfsn#E6K?$ln^uR8!%|cask#xQ%8fJWUbUKB8opF4QU6L5n-m
ztc>EOLL)J&fi^u#q*rcWC{bS^4u|b3h)zq*9OWx}QA3#w>wJnY;s6y;
z#Wq?bso%wlg%A=R9#Z0j{J8?Pq|=^j)M(sps-dS8WFXojcn>Ejx-f&e^R7B$j{Tn(
zE!IYVc7FCJ8U+lF`4B5~V~PXpMfO91Du^)(Tz*jJa*8<7lb3fpXof09@H8>ARsPFa
z-vG2qx14^O`oCubg1+3F1!MIQPo%}Cs^$%Z3UvkJ?WOIuJZ4ww_7iD$IbS}Qsi0$u
zdo-G3wqEPJFvga1d4kEk(DQi3NHbrsffat9tHWV9nY)WpYY_++fY2f%Mh+J+JRCAZ
z3)g&^(E{$eqBYCy&5w{tX5?BrB4nWG7%NpXFEu8)CR(MVMhoK$jjK|%*f|`aTO;obCuBqSgFd|
z+Jt)w?VJAZnTqdUj%_!8Ydtw>w6t^w3LGsc1PO>E)!2!u0xr+8Cksck@*0b5kqI2<
zGgn_A*rwECF-hp6$jsU6`ZQ{v$Rc(0q3e?kuBUz_BNne{(
zyAv=0#|2gED&~g;@q}&dEaU!`P-Q~CfF%p#N~vPRPt<+|(ilm^?u>8L+^g7h(h5wu
zS@+?L_@y^FgRq&Q9n5YuwI0mlEe97DpY!~89k_O$dQ%YxM2ax=onn=P-YOR1
zY7y*2!PYcg8#Em5pQ#mYdeTOMV~lrSJAX(x{WgY&Zn9n4ub{UYGT!&4LSe>Ehdi^6
z(AI0Cd*ieER7JzMYCA&VW`~ion`Y({GUsC9-*|cU^AuLmT>up!?pN0^Igs9?1Os{4
z&B!h$xzfj^JyPntc(|^`HM=e6(ne}f-`oZ=*tIb<3^0vdEaX9XUUTDEBja0XnbE~QcMaFr
zG-9c}b_dK6*@hseI9t_08PP<~ZM2fbQ6XP_%eS+*YU@c2s<^T|&(MouR5xZHMOBHW
zdj5O9`n@P=68~3Ro{DQ2P9<>*djUF;BUrm<9!ab+n*mO7+;dAdG>lp~Q8+%SXRx3%
z9hp$*xwP?2({*pio6hA8%2XKHFmJDzG?1EfUkw5S74rI@2x5@Ix?4N_z7V%n+;L~D
zEZLq`v0-~=EWniYroxO;t{xT{X>-Mkx}V@NMh+GnT!m=P2Nz#n`^foh@3<4Dzu~m7
zv^kL@lN%h@#Zj580mQuiS`K1Ew{$Mhuv~nzoIExtrJw12TJffOaqfU{;))83DNlLEY_|5tPc7Bwp9>cPpTHG5~XTt@sNev|jXaj#6q;#Pj=tuk@Zy6N4HPw_ISy@wo
znPAJRSche6jljpk2wIwOeRCY9-on48qBQe2Rjz#M>>63;PVZM9Y=4x{d#QP&qpj^`
zqvcxcN&B-68bKk?ttp{+5x?6aI?_5yny&j6&s|>^Q5VbBSLRop%fQ9khEkG!{95JR
z%`>=Hc-oo#>jS0!yVWedpi)K|Qc!i#jrc2heHp@Ruw=9=nFKb!@247IWvt3f~!S05CE)^6*_r;dUBYe
z&;Ae~6`w^Ot9-Hw$nX~(gwa(gCOohKIf|*pubCHWOw`1PF228nv(`}yJ)zwZm@;9(
zb|*=ui1tUbG=L7o$#R3xLghaZO)y(dig>|%P*!1;NOSNZx3cfGd(UT29x6R-ZcpN$
z$eLMN^q74O5cBcM7Q*rUskePG02#L2o2Drsk73G4N`@@sCB;`l1J2|4jmOL~Jng0$
zhbxCm&%e4beqk*VsJ9-z@T#l@JTY1H!t5Hxpur(~-u2crY!n${N9S9J^%*|ntDY0K
zU2~P_i}WPXWb5z@w!<9~57eTGa$07f(kcd)31+OLDzr(!##teZjFE-f7k=4R!AjVMkc^gyVo
zT1++Bb{tLy9q*~()ZV$roXl!jPStuV1e!>14tx%wz-^*^%fM*`iBqNR;R`QwKAUlx
zyfSoE-qQ4T0Yaxf=9J+Aon$`Srhtfx3*ZtBc-NW`Q_qRtDN~;OK7);-8gfjpcqs*n
z!dt%7!(nFp4wFp5x}`?My+TJ3`*91>Thf0QF)_S&f)+x~moTN9-?KjSLJXT_veLS^(lFdJiIa*TOn=Y0HG>pl_6AINFjvKXMuw<CUr0*
zQu`^p!+qN{1ry8g@3}$tom(V#n+XTqZ{RgvP?PG1N$35gmqvF5gzPOUMo(iyv);VZ
zwCrtI>ajS{FhtrT?D^%n(i87{Qil>S^(+o2I!3nGOn`h(M_3u4AJo`3Yi1{*WeG-<
zdqxP86cLvnH4wTU$Yc{yXuT$yS>UiabD_REj^p$AHveK5ol*=$LYD+FylzLy37k5u
zZnhIgd6gB4o^;sGnvT#&HF3m3lU%A
zIE-4PHlPB{3udds14RI*={-uU|m;S8HCmSu9|gb
zB?Ajx?7Er4F*4-`#QjDWR{X?nNv)7yi$YO|Tj#s*#Uf*XN-TN(nFALv%IF)JSR#0c
zx$=<6&0>9^JHGb7-Z?DqRnr*2nNk^YS{bJGMpo?10!lbnnc(_-Iop
zyukoE2|b`)=F&XDZhw6h`{q3QyO{f64c=nU5aA5tL^e?HCe3O3s-<7@@)9WGo6%*v+x>Yc_g7F>e(YL(=n~D|`zy03c&g
z{Y|Z!X-43Z*bp@L6hzJL;K{oI+r(9C*B%2
zolOnsyXyA0cx^5pp8$z~0_OJt5xh
zKEdmKrJg~g-YQD|`ciw)n+h~|A@Bydrt9iwZtBhCZbuHD_!%3#eE!w89^-WaTGAjv
z_0$hc$SZ2=Z)|K#ZXzr-AZIF){ijY_jV4F7rpupvdRF*3_{#g^GDykosapYQV$}jQ
z#o8-k?pVWBy;I29;*ui-CJo8yPeBcr;OLukBHL7sTFPk*n88Gi%?Vj|eMo{Wa|J2S
zO!t&TCh{Z&547zq5m2Sld0@yS*mh4XtR&S`G%2|whQ$(ksongs8|zmUJ@=I{q&@M8
z>rf)dZS;t&FznT$N1*vH9x~?eNE>^Ih~+
z(J!AM5Ifypc5{~s(UNpp4mcAo`?XQm`T$H0(YIVWf&br|ho_D~K%!H~ZURkAeDO}R
z*%2MQc=fo}o)W0n=)iCb4KHKT9PYVT%)LQ=*5HdtAg=erM?JZvHiT_UHsyMAqt^8)
zFD#)F3kN&6wME_Aw}F54udkbM>wAhjt-Koe8h*iVn!9A%MnT7sgg%143wm<5do*Am
zXM5}-jMVPh7e#-;0&m6P3e&o)I_OaM*I7?5B86Ac6onsfDH
z=^0bj56
zSZo0)5S;MG9APEZ_&Ot@%}H>X{eD;G%%L{6bhAOQ6{rc)xczQxy3QG>c261QW$CL)
z^iWBaSeT34Z(#O`7EM953S99;&0WL#!hPa_*1Qz)VF`$%kZqmM=J|c5%LQ5w95zp)
zqLLdCX3GwPOEA_nfj7_DyprUp)>A^ypn%{#*IuER-727{cQ|0Sj~BtJ4s%!lva3BM
z!PtF{S!jjn$4SqP3dexOuHkgl(#OhDkwu_C=1cGh+-;2ML$}k)%||JUiCXx*Weqdi
zA^Rc&fv^YjW5-C54I157O{x;Lm*Ac4fw9sCin%*S6tVXFGc72pm+0Q-HzAoa7NkiCQ
zR9lLF^aM`=^3)zkpMTHFO3YPD%pIRR)UVpX#Z6Y`>%mP&ql<;|bEO6({0_cKIqBF;
z*MK~`zueq}IT&M>8<0#|#ai+v@j$TP0rX&0iaMA)~<6k
zpC{XE$W^m6u*&xt-ow=0B@xc$uRO;Cs?#qu*?%JUt}sIiS?R$^!;CizEjTOz9i`;#
z--T-0_t^A?dt^)c9;KYMMCu*4B@zxp;Ue#t_!`>zQt%kSF?nN
zNq&uRy5I_$Ar3#G`HpWo0(1$bhWjs|tejR?npg}*$AN4%f>(c{csbERQ_TbGVh*Hd
zN&;cMR@^GkaJc}i_ZRmc7l=5o!KLDf4?ym|Ax0l4`Fnn)O44^)r%2y-e~H^D{T|CO
zdam_6e7ZK%eTYVyz;AQ#*nVviwEFTc1>KKCAzONaJs(xD^9>yob!aJ$I$78?I$!V#
ze>{+KGQE0hlWCoIzbtcRLhYpuhEu83;cZQnJ4_0!D69cu*6)
zD}}3)7v2pkz06Ux_9)hem-u%$aB|fi;~H<28h#jB`}mv0?bD*bni$kVhnfVdL|5`S
zy?4aU=u~Jo6r~@>tJZ5WGcJW1qRpU@lpM@`arl{X@O%2GBf2Y<4^Dj3kjQNA!NI3A
zCtv*VI{QL;FCtkN8ju5=cKp;jQyJlU%Jb4(47i7S6!ekJh=XY_yo9G2XAo
zn#$=gDUTd}&fnz%z@#~1G|pD5RLtim&FR}n&0HkoBde9jcgln30?^r!hm&`ciw~mY
zkt)p2W3wbWr+K2!fS&pt?ZscFUS6sDHQ&)z>WnqW}1vKVaslO{j!1iVy(ES5j{#ehv|qgZI1
zj~i~N!1=)gl-=nDM}(Q)+=Dh$@rIxf^_uzP1LB^FIgBGwW8ALGkQvv#V-!#v@S;b}
zh-0kIZ+A*(8&PN{jZ2Te552oPQgnQ~`3pqfhL*8O10{Cnk$_)8dGLDxPSr>!=FV&k
z7IruyPB)~NfCfJUxJUp-%U9X8y~12kCFxP_sO9v-H%PLABx#i%HIc>3`-2*1PY(H(
zCHE*7I7
zl20ekHOPDCGVs=c8o-k71zIH~qCoV$vsY4ioXX!>GE@6WK!LiAoKD}@+ZU#*VAQy>
zwYVA2q1k>$?aEL$dC!Zt)AHeP1|H*jm&0WG0%V$a;=sAL)5BaeLm@4esC0xI)+P7D
z4Imkq<+RO3gT-x4Q!?o78M&V>?L6oFOHYdo`)6`MS?`?v
zX8yOfAU~kX<6F(b^M6nB{bPx@!hzz|=lquq&;NTY`j6Lq`_(?=Cm#KWRs9mv|HBh}
zFGZ?aZLk|Ib<~=6?n$%bls_bhof)&2t6H9#mIgwH!24e{3!h}-o|2J9mVwwmS_S_m
zWypTHnCxJ#QS%{mtUN7U>M&wNqzg&*FvEFtW&H+u@uMj3tbrUQrX6fv6bVp8t?rja
zdQpCi_oKStZ~Od!B5&0uULZ->kG)q{!$58|g*>|xO!$_s6ZR~Up1SuF^EK{sf+s%b
zTd+DnmxaJ%=cbnl$@Y5BJh>KPS
za!275J%nq2Ey&K2+FfYh#b8c47EA;Y+78
zeVd&d*lv`~Ru2@*-yz45$%hO7`|}6X(e~>#3o}4sV_~j#43^746M@8=0@RAc1hGye
zs!HB)p`?FQ;Icl9UtevA0phMZN))}z)NdqndrN#P6Z@2G-~+HnnO5(9yGLncamzVF
zsb0-7#Ufk;$6A9un
zBv!|DXd}JcY`r^Sm0?W-@rqh)2w-${OZ94q&EJ3;eXjZI_7Y~tQ7cDh0nIh2d_Ff(
zWdmG>@W?;Q_=U>YcKlPpf0&H_>KEQ~kls^WVA_aW+$`RK1P4-}$4=Qa$+HOlCl-es
zJXn;idc=m^{*IBUte&7DXWjyr;
zMrnY_>;B<8e^X&cj@!NT4=3~QA9{K5S4%4P=Fjv0RrUUhP6C&{3H+@c_5a4DZ~r5(
z|81oIzuuDfKLY#zD=-G~U$AoJ&MeS|GBnxfmo@0`%uD{%EC@g-rXA6nSH-Jgu3kjp
z&owbIP1eUvep((bE_=Ik1`2}Uky@dDMu~tuFHbv&&D{)BA$-kuQLeM!`jwG-PZwFn
zrbYs^zg#16bcA%MLDnqh+nt@AqYH_-k@rN}?b$C+lN}@;2XhV_u2V
zJ5~>NDIMG!WML$E91uu&?dM`7fQKM
zDNTlFmGn-&;~e~$r&sat_BY;kDVM3o|BP{;`jQX=u|M+xoJ6y*I{MuxHJd