git: b60b3ff7cad4 - main - www/opengist: New Port: Self-hosted Pastebin powered by Git

From: Santhosh Raju <fox_at_FreeBSD.org>
Date: Sat, 16 Nov 2024 18:21:09 UTC
The branch main has been updated by fox:

URL: https://cgit.FreeBSD.org/ports/commit/?id=b60b3ff7cad4221d55a0144542d5dd494b2bc936

commit b60b3ff7cad4221d55a0144542d5dd494b2bc936
Author:     Santhosh Raju <fox@FreeBSD.org>
AuthorDate: 2024-11-16 18:15:13 +0000
Commit:     Santhosh Raju <fox@FreeBSD.org>
CommitDate: 2024-11-16 18:20:48 +0000

    www/opengist: New Port: Self-hosted Pastebin powered by Git
    
    Self-hosted pastebin powered by Git, open-source alternative to Github Gist.
    
    WWW: https://opengist.io/
---
 www/Makefile                               |    1 +
 www/opengist/Makefile                      |   61 +
 www/opengist/distinfo                      |    7 +
 www/opengist/files/opengist.in             |   58 +
 www/opengist/files/patch-package-lock.json | 7322 ++++++++++++++++++++++++++++
 www/opengist/files/patch-package.json      |   13 +
 www/opengist/pkg-descr                     |    4 +
 www/opengist/pkg-plist                     |   16 +
 8 files changed, 7482 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index 424e222ff4ca..bd39b966f937 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -498,6 +498,7 @@
     SUBDIR += onlyoffice-documentserver
     SUBDIR += opencart
     SUBDIR += openemr
+    SUBDIR += opengist
     SUBDIR += openresty
     SUBDIR += orangehrm
     SUBDIR += osrm-backend
diff --git a/www/opengist/Makefile b/www/opengist/Makefile
new file mode 100644
index 000000000000..8f98ca7bf15c
--- /dev/null
+++ b/www/opengist/Makefile
@@ -0,0 +1,61 @@
+PORTNAME=	opengist
+PORTVERSION=	1.8.1
+DISTVERSIONPREFIX=	v
+CATEGORIES=	www textproc
+MASTER_SITES=	LOCAL/fox/:js
+DISTFILES=	opengist-${DISTVERSION}-node_modules.tgz:js
+
+MAINTAINER=	fox@FreeBSD.org
+COMMENT=	Self-hosted pastebin powered by Git, open-source alternative to Github Gist.
+WWW=		https://opengist.io/
+
+LICENSE=	AGPLv3
+
+BUILD_DEPENDS=	npm${NODEJS_SUFFIX}>0:www/npm${NODEJS_SUFFIX}
+RUN_DEPENDS=	git:devel/git
+
+USES=		go:modules nodejs:20,build
+USE_RC_SUBR=	opengist
+
+USE_GITHUB=	nodefault
+GH_ACCOUNT=	thomiceli
+GH_PROJECT=	opengist
+
+GO_MODULE=	github.com/thomiceli/opengist
+GO_TARGET=	.
+GO_BUILDFLAGS=	-tags fs_embed \
+		-ldflags="-X github.com/thomiceli/opengist/internal/config.OpengistVersion=v${DISTVERSION}"
+
+post-extract:
+	@${RLN} ${WRKDIR}/node_modules ${WRKSRC}/node_modules
+
+pre-build:
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} npx --offline vite -c public/vite.config.js build
+	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+	EMBED=1 npx --offline postcss 'public/assets/embed-*.css' -c public/postcss.config.js --replace
+
+post-install:
+	${MKDIR} ${STAGEDIR}${PREFIX}/etc/${PORTNAME}
+	${INSTALL_DATA} ${WRKSRC}/config.yml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}/config.yml.sample
+	${MKDIR} ${STAGEDIR}/var/run/${PORTNAME}
+	${MKDIR} ${STAGEDIR}${WWWDIR}/assets
+	cd ${WRKSRC} && ${INSTALL_DATA} public/assets/* ${STAGEDIR}${WWWDIR}/assets
+	cd ${WRKSRC} && ${INSTALL_DATA} public/manifest.json ${STAGEDIR}${WWWDIR}
+
+#
+# To update the opengist-${DISTVERSION}-node_modules.tgz archive:
+# 1. Comment out the DISTFILES and post-extract lines
+# 2. Run 'make makesum regenerate-node_modules-distfile clean'
+# 3. Upload the archive
+# 4. Uncomment the lines from step #1
+# 5. Run 'make makesum'
+#
+
+regenerate-node_modules-distfile: patch
+	cd ${WRKSRC} && \
+	${RM} -r node_modules && \
+	${MAKE_ENV} npm install --prefix ${WRKSRC} && \
+	${TAR} czf ${DISTDIR}/opengist-${DISTVERSION}-node_modules.tgz node_modules && \
+	${ECHO} "Please upload the file ${DISTDIR}/opengist-${DISTVERSION}-node_modules.tgz"
+
+.include <bsd.port.mk>
diff --git a/www/opengist/distinfo b/www/opengist/distinfo
new file mode 100644
index 000000000000..57e46617b694
--- /dev/null
+++ b/www/opengist/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1731775790
+SHA256 (go/www_opengist/opengist-v1.8.1/opengist-1.8.1-node_modules.tgz) = e42cb24f3fe6c12cfdad2de2ac3ad829108cdcb99a988197177c924b65b8a885
+SIZE (go/www_opengist/opengist-v1.8.1/opengist-1.8.1-node_modules.tgz) = 22842430
+SHA256 (go/www_opengist/opengist-v1.8.1/v1.8.1.mod) = 5d7a604b4ac7fd4d6e52fcc87e825b75f6c8b7c5ea531111437e74304b9edc36
+SIZE (go/www_opengist/opengist-v1.8.1/v1.8.1.mod) = 5058
+SHA256 (go/www_opengist/opengist-v1.8.1/v1.8.1.zip) = f097bab3a178016af715e73f2e5008c4e89b9806456022141573ce19c454f7d8
+SIZE (go/www_opengist/opengist-v1.8.1/v1.8.1.zip) = 1610649
diff --git a/www/opengist/files/opengist.in b/www/opengist/files/opengist.in
new file mode 100644
index 000000000000..9681c7d7fd1a
--- /dev/null
+++ b/www/opengist/files/opengist.in
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# PROVIDE: opengist
+# REQUIRE: LOGIN NETWORKING
+# KEYWORD: shutdown
+#
+
+. /etc/rc.subr
+
+name=opengist
+rcvar=opengist_enable
+
+load_rc_config $name
+
+: ${opengist_enable:="NO"}
+: ${opengist_home:="%%WWWDIR%%"}
+: ${opengist_config_file:="%%PREFIX%%/etc/${name}/config.yml"}
+: ${opengist_syslog_output_enable:="NO"}
+: ${opengist_syslog_output_priority:="info"}
+: ${opengist_syslog_output_facility:="daemon"}
+
+if checkyesno opengist_syslog_output_enable; then
+	opengist_syslog_output_flags="-t ${name} -T ${name}"
+
+	if [ -n "${opengist_syslog_output_priority}" ]; then
+		opengist_syslog_output_flags="${opengist_syslog_output_flags} -s ${opengist_syslog_output_priority}"
+	fi
+
+	if [ -n "${opengist_syslog_output_facility}" ]; then
+		opengist_syslog_output_flags="${opengist_syslog_output_flags} -l ${opengist_syslog_output_facility}"
+	fi
+fi
+
+pidfile=/var/run/opengist/${name}.pid
+procname="%%PREFIX%%/bin/${name}"
+
+start_cmd="${name}_start"
+start_precmd="${name}_precmd"
+
+opengist_precmd()
+{
+	if [ ! -f ${opengist_config_file} ]
+	then
+		echo ${opengist_config_file} missing.
+		return 1
+	fi
+}
+
+opengist_start() {
+        /usr/sbin/daemon -f ${opengist_syslog_output_flags} -p ${pidfile} \
+                /usr/bin/env -i \
+                "PATH=%%PREFIX%%/bin:${PATH}" \
+                ${procname} -c ${opengist_config_file}
+}
+
+cd ${opengist_home}
+
+run_rc_command "$1"
diff --git a/www/opengist/files/patch-package-lock.json b/www/opengist/files/patch-package-lock.json
new file mode 100644
index 000000000000..8ef6c61731ba
--- /dev/null
+++ b/www/opengist/files/patch-package-lock.json
@@ -0,0 +1,7322 @@
+--- package-lock.json.orig	1979-11-30 00:00:00 UTC
++++ package-lock.json
+@@ -34,6 +34,8 @@
+     },
+     "node_modules/@alloc/quick-lru": {
+       "version": "5.2.0",
++      "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
++      "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+       "dev": true,
+       "license": "MIT",
+       "engines": {
+@@ -41,52 +43,52 @@
+       },
+       "funding": {
+         "url": "https://github.com/sponsors/sindresorhus"
+-      },
+-      "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+-      "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="
++      }
+     },
+     "node_modules/@babel/code-frame": {
+-      "version": "7.24.6",
++      "version": "7.25.7",
++      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz",
++      "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+-        "@babel/highlight": "^7.24.6",
++        "@babel/highlight": "^7.25.7",
+         "picocolors": "^1.0.0"
+       },
+       "engines": {
+         "node": ">=6.9.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz",
+-      "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA=="
++      }
+     },
+     "node_modules/@babel/helper-validator-identifier": {
+-      "version": "7.24.6",
++      "version": "7.25.7",
++      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz",
++      "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==",
+       "dev": true,
+       "license": "MIT",
+       "engines": {
+         "node": ">=6.9.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz",
+-      "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw=="
++      }
+     },
+     "node_modules/@babel/highlight": {
+-      "version": "7.24.6",
++      "version": "7.25.7",
++      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz",
++      "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+-        "@babel/helper-validator-identifier": "^7.24.6",
++        "@babel/helper-validator-identifier": "^7.25.7",
+         "chalk": "^2.4.2",
+         "js-tokens": "^4.0.0",
+         "picocolors": "^1.0.0"
+       },
+       "engines": {
+         "node": ">=6.9.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz",
+-      "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ=="
++      }
+     },
+     "node_modules/@codemirror/autocomplete": {
+-      "version": "6.16.2",
++      "version": "6.18.1",
++      "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.16.2.tgz",
++      "integrity": "sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -100,12 +102,12 @@
+         "@codemirror/state": "^6.0.0",
+         "@codemirror/view": "^6.0.0",
+         "@lezer/common": "^1.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.16.2.tgz",
+-      "integrity": "sha512-MjfDrHy0gHKlPWsvSsikhO1+BOh+eBHNgfH1OXs1+DAf30IonQldgMM3kxLDTG9ktE7kDLaA1j/l7KMPA4KNfw=="
++      }
+     },
+     "node_modules/@codemirror/commands": {
+       "version": "6.5.0",
++      "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.5.0.tgz",
++      "integrity": "sha512-rK+sj4fCAN/QfcY9BEzYMgp4wwL/q5aj/VfNSoH1RWPF9XS/dUwBkvlL3hpWgEjOqlpdN1uLC9UkjJ4tmyjJYg==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -113,12 +115,12 @@
+         "@codemirror/state": "^6.4.0",
+         "@codemirror/view": "^6.0.0",
+         "@lezer/common": "^1.1.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.5.0.tgz",
+-      "integrity": "sha512-rK+sj4fCAN/QfcY9BEzYMgp4wwL/q5aj/VfNSoH1RWPF9XS/dUwBkvlL3hpWgEjOqlpdN1uLC9UkjJ4tmyjJYg=="
++      }
+     },
+     "node_modules/@codemirror/lang-javascript": {
+       "version": "6.2.2",
++      "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz",
++      "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -129,12 +131,12 @@
+         "@codemirror/view": "^6.17.0",
+         "@lezer/common": "^1.0.0",
+         "@lezer/javascript": "^1.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz",
+-      "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg=="
++      }
+     },
+     "node_modules/@codemirror/language": {
+-      "version": "6.10.2",
++      "version": "6.10.3",
++      "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz",
++      "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -144,79 +146,436 @@
+         "@lezer/highlight": "^1.0.0",
+         "@lezer/lr": "^1.0.0",
+         "style-mod": "^4.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz",
+-      "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA=="
++      }
+     },
+     "node_modules/@codemirror/lint": {
+-      "version": "6.8.0",
++      "version": "6.8.2",
++      "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.0.tgz",
++      "integrity": "sha512-lsFofvaw0lnPRJlQylNsC4IRt/1lI4OD/yYslrSGVndOJfStc58v+8p9dgGiD90ktOfL7OhBWns1ZETYgz0EJA==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+         "@codemirror/state": "^6.0.0",
+         "@codemirror/view": "^6.0.0",
+         "crelt": "^1.0.5"
+-      },
+-      "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.0.tgz",
+-      "integrity": "sha512-lsFofvaw0lnPRJlQylNsC4IRt/1lI4OD/yYslrSGVndOJfStc58v+8p9dgGiD90ktOfL7OhBWns1ZETYgz0EJA=="
++      }
+     },
+     "node_modules/@codemirror/search": {
+       "version": "6.5.6",
++      "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz",
++      "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+         "@codemirror/state": "^6.0.0",
+         "@codemirror/view": "^6.0.0",
+         "crelt": "^1.0.5"
+-      },
+-      "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz",
+-      "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q=="
++      }
+     },
+     "node_modules/@codemirror/state": {
+       "version": "6.4.1",
+-      "dev": true,
+-      "license": "MIT",
+       "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz",
+-      "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A=="
++      "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==",
++      "dev": true,
++      "license": "MIT"
+     },
+     "node_modules/@codemirror/text": {
+       "version": "0.19.6",
+-      "dev": true,
+-      "license": "MIT",
+       "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz",
+-      "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA=="
++      "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==",
++      "dev": true,
++      "license": "MIT"
+     },
+     "node_modules/@codemirror/view": {
+       "version": "6.26.3",
++      "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.3.tgz",
++      "integrity": "sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+         "@codemirror/state": "^6.4.0",
+         "style-mod": "^4.1.0",
+         "w3c-keyname": "^2.2.4"
+-      },
+-      "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.3.tgz",
+-      "integrity": "sha512-gmqxkPALZjkgSxIeeweY/wGQXBfwTUaLs8h7OKtSwfbj9Ct3L11lD+u1sS7XHppxFQoMDiMDp07P9f3I2jWOHw=="
++      }
+     },
+-    "node_modules/@esbuild/linux-x64": {
++    "node_modules/@esbuild/android-arm": {
+       "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
++      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+       "cpu": [
++        "arm"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "android"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/android-arm64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
++      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
++      "cpu": [
++        "arm64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "android"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/android-x64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
++      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
++      "cpu": [
+         "x64"
+       ],
+       "dev": true,
+       "license": "MIT",
+       "optional": true,
+       "os": [
++        "android"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/darwin-arm64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
++      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
++      "cpu": [
++        "arm64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "darwin"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/darwin-x64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
++      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
++      "cpu": [
++        "x64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "darwin"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/freebsd-arm64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
++      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
++      "cpu": [
++        "arm64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "freebsd"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/freebsd-x64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
++      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
++      "cpu": [
++        "x64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "freebsd"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-arm": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
++      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
++      "cpu": [
++        "arm"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
+         "linux"
+       ],
+       "engines": {
+         "node": ">=12"
+-      },
++      }
++    },
++    "node_modules/@esbuild/linux-arm64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
++      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
++      "cpu": [
++        "arm64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-ia32": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
++      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
++      "cpu": [
++        "ia32"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-loong64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
++      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
++      "cpu": [
++        "loong64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-mips64el": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
++      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
++      "cpu": [
++        "mips64el"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-ppc64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
++      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
++      "cpu": [
++        "ppc64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-riscv64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
++      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
++      "cpu": [
++        "riscv64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-s390x": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
++      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
++      "cpu": [
++        "s390x"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/linux-x64": {
++      "version": "0.18.20",
+       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+-      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="
++      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
++      "cpu": [
++        "x64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "linux"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
+     },
++    "node_modules/@esbuild/netbsd-x64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
++      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
++      "cpu": [
++        "x64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "netbsd"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/openbsd-x64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
++      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
++      "cpu": [
++        "x64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "openbsd"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/sunos-x64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
++      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
++      "cpu": [
++        "x64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "sunos"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/win32-arm64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
++      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
++      "cpu": [
++        "arm64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "win32"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/win32-ia32": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
++      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
++      "cpu": [
++        "ia32"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "win32"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
++    "node_modules/@esbuild/win32-x64": {
++      "version": "0.18.20",
++      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
++      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
++      "cpu": [
++        "x64"
++      ],
++      "dev": true,
++      "license": "MIT",
++      "optional": true,
++      "os": [
++        "win32"
++      ],
++      "engines": {
++        "node": ">=12"
++      }
++    },
+     "node_modules/@isaacs/cliui": {
+       "version": "8.0.2",
++      "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
++      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+       "dev": true,
+       "license": "ISC",
+       "dependencies": {
+@@ -229,12 +588,12 @@
+       },
+       "engines": {
+         "node": ">=12"
+-      },
+-      "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+-      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="
++      }
+     },
+     "node_modules/@jridgewell/gen-mapping": {
+       "version": "0.3.5",
++      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
++      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -244,101 +603,101 @@
+       },
+       "engines": {
+         "node": ">=6.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+-      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg=="
++      }
+     },
+     "node_modules/@jridgewell/resolve-uri": {
+       "version": "3.1.2",
++      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
++      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+       "dev": true,
+       "license": "MIT",
+       "engines": {
+         "node": ">=6.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+-      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="
++      }
+     },
+     "node_modules/@jridgewell/set-array": {
+       "version": "1.2.1",
++      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
++      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+       "dev": true,
+       "license": "MIT",
+       "engines": {
+         "node": ">=6.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+-      "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="
++      }
+     },
+     "node_modules/@jridgewell/source-map": {
+       "version": "0.3.6",
++      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
++      "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+       "dev": true,
+       "license": "MIT",
+       "peer": true,
+       "dependencies": {
+         "@jridgewell/gen-mapping": "^0.3.5",
+         "@jridgewell/trace-mapping": "^0.3.25"
+-      },
+-      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+-      "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ=="
++      }
+     },
+     "node_modules/@jridgewell/sourcemap-codec": {
+       "version": "1.4.15",
+-      "dev": true,
+-      "license": "MIT",
+       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+-      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
++      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
++      "dev": true,
++      "license": "MIT"
+     },
+     "node_modules/@jridgewell/trace-mapping": {
+       "version": "0.3.25",
++      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
++      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+         "@jridgewell/resolve-uri": "^3.1.0",
+         "@jridgewell/sourcemap-codec": "^1.4.14"
+-      },
+-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+-      "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="
++      }
+     },
+     "node_modules/@lezer/common": {
+       "version": "1.2.1",
+-      "dev": true,
+-      "license": "MIT",
+       "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz",
+-      "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ=="
++      "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==",
++      "dev": true,
++      "license": "MIT"
+     },
+     "node_modules/@lezer/highlight": {
+       "version": "1.2.0",
++      "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz",
++      "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+         "@lezer/common": "^1.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz",
+-      "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA=="
++      }
+     },
+     "node_modules/@lezer/javascript": {
+-      "version": "1.4.16",
++      "version": "1.4.19",
++      "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.16.tgz",
++      "integrity": "sha512-84UXR3N7s11MPQHWgMnjb9571fr19MmXnr5zTv2XX0gHXXUvW3uPJ8GCjKrfTXmSdfktjRK0ayKklw+A13rk4g==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+         "@lezer/common": "^1.2.0",
+         "@lezer/highlight": "^1.1.3",
+         "@lezer/lr": "^1.3.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.16.tgz",
+-      "integrity": "sha512-84UXR3N7s11MPQHWgMnjb9571fr19MmXnr5zTv2XX0gHXXUvW3uPJ8GCjKrfTXmSdfktjRK0ayKklw+A13rk4g=="
++      }
+     },
+     "node_modules/@lezer/lr": {
+-      "version": "1.4.1",
++      "version": "1.4.2",
++      "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.1.tgz",
++      "integrity": "sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+         "@lezer/common": "^1.0.0"
+-      },
+-      "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.1.tgz",
+-      "integrity": "sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw=="
++      }
+     },
+     "node_modules/@nodelib/fs.scandir": {
+       "version": "2.1.5",
++      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
++      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -347,22 +706,22 @@
+       },
+       "engines": {
+         "node": ">= 8"
+-      },
+-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="
++      }
+     },
+     "node_modules/@nodelib/fs.stat": {
+       "version": "2.0.5",
++      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
++      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+       "dev": true,
+       "license": "MIT",
+       "engines": {
+         "node": ">= 8"
+-      },
+-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
++      }
+     },
+     "node_modules/@nodelib/fs.walk": {
+       "version": "1.2.8",
++      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
++      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+       "dev": true,
+       "license": "MIT",
+       "dependencies": {
+@@ -371,23 +730,309 @@
+       },
+       "engines": {
+         "node": ">= 8"
++      }
++    },
++    "node_modules/@parcel/watcher": {
++      "version": "2.4.1",
++      "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz",
++      "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
++      "dev": true,
++      "license": "MIT",
++      "dependencies": {
++        "detect-libc": "^1.0.3",
++        "is-glob": "^4.0.3",
++        "micromatch": "^4.0.5",
++        "node-addon-api": "^7.0.0"
+       },
+-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="
++      "engines": {
++        "node": ">= 10.0.0"
++      },
++      "funding": {
++        "type": "opencollective",
++        "url": "https://opencollective.com/parcel"
++      },
++      "optionalDependencies": {
++        "@parcel/watcher-android-arm64": "2.4.1",
*** 6575 LINES SKIPPED ***