vortex123 commited on
Commit
3b1f2ce
1 Parent(s): ddc09a2

Upload 19 files

Browse files
.dockerignore ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .dockerignore
2
+ Dockerfile
3
+ .eslintignore
4
+ .eslintrc.json
5
+ .gitignore
6
+ .prettierignore
7
+ .prettierrc.json
8
+ .replit
9
+ LICENSE
10
+ README.md
11
+ replit.nix
12
+ .github/
.eslintignore ADDED
@@ -0,0 +1 @@
 
 
1
+ node_modules
.eslintrc.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "root": true,
3
+ "parserOptions": {
4
+ "ecmaVersion": "latest",
5
+ "sourceType": "module"
6
+ }
7
+ }
.github/ISSUE_TEMPLATE/bug_report.md ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ""
5
+ labels: ""
6
+ assignees: ""
7
+ ---
8
+
9
+ Issue tracker is **ONLY** used for reporting bugs. New features should be discussed on our Discord server.
10
+
11
+ <!--- Provide a general summary of the issue in the Title above -->
12
+
13
+ ## Expected Behavior
14
+
15
+ <!--- Tell us what should happen -->
16
+
17
+ ## Current Behavior
18
+
19
+ <!--- Tell us what happens instead of the expected behavior -->
20
+
21
+ ## Possible Solution
22
+
23
+ <!--- Not obligatory, but suggest a fix/reason for the bug, -->
24
+
25
+ ## Steps to Reproduce
26
+
27
+ <!--- Provide a link to a live example, or an unambiguous set of steps to -->
28
+ <!--- reproduce this bug. Include code to reproduce, if relevant -->
29
+
30
+ 1.
31
+ 2.
32
+ 3.
33
+ 4.
34
+
35
+ ## Context (Environment)
36
+
37
+ <!--- How has this issue affected you? What are you trying to accomplish? -->
38
+ <!--- Providing context helps us come up with a solution that is most useful in the real world -->
39
+
40
+ <!--- Provide a general summary of the issue in the Title above -->
41
+
42
+ ## Detailed Description
43
+
44
+ <!--- Provide a detailed description of the change or addition you are proposing -->
45
+
46
+ ## Possible Implementation
47
+
48
+ <!--- Not obligatory, but suggest an idea for implementing addition or change -->
.github/ISSUE_TEMPLATE/config.yml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Community Support
4
+ url: https://discord.gg/unblock
5
+ about: Please ask and answer questions here.
6
+ - name: Heroku, Repl.it, Blocked site issues
7
+ url: https://www.youtube.com/watch?v=BLUkgRAy_Vo
8
+ about: Do not create issues for these.
.github/workflows/docker-image.yml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Build and Push to Docker Hub
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ schedule:
7
+ - cron: "30 12 * * 0" # Run once every Sunday
8
+
9
+
10
+ jobs:
11
+ build_and_push_docker_images:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Set up QEMU
15
+ uses: docker/setup-qemu-action@v3
16
+
17
+ - name: Set up Docker Buildx
18
+ uses: docker/setup-buildx-action@v3
19
+
20
+ - name: Login to Docker Hub
21
+ uses: docker/login-action@v3
22
+ with:
23
+ username: ${{ secrets.DOCKERUSERNAME }}
24
+ password: ${{ secrets.DOCKERPASSWORD }}
25
+
26
+ - name: Build and push
27
+ uses: docker/build-push-action@v6
28
+ with:
29
+ platforms: linux/amd64,linux/arm64
30
+ push: true
31
+ tags: ${{ secrets.DOCKERUSERNAME }}/ultraviolet-node:latest
.github/workflows/eslint.yml ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # ESLint is a tool for identifying and reporting on patterns
6
+ # found in ECMAScript/JavaScript code.
7
+ # More details at https://github.com/eslint/eslint
8
+ # and https://eslint.org
9
+
10
+ # https://github.com/actions/starter-workflows/blob/main/code-scanning/eslint.yml
11
+
12
+ name: ESLint
13
+
14
+ on:
15
+ push:
16
+ branches: ["main"]
17
+ pull_request:
18
+ branches: ["main"]
19
+ schedule:
20
+ - cron: "30 12 * * 0" # Run once every Sunday
21
+
22
+ jobs:
23
+ eslint:
24
+ name: Run eslint scanning
25
+ runs-on: ubuntu-latest
26
+ permissions:
27
+ contents: read
28
+ security-events: write
29
+ actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
30
+ steps:
31
+ - name: Checkout code
32
+ uses: actions/checkout@v3
33
+
34
+ - name: Install ESLint
35
+ run: |
36
+ npm install [email protected]
37
+ npm install @microsoft/[email protected]
38
+
39
+ - name: Run ESLint
40
+ run: npx eslint .
41
+ --config .eslintrc.json
42
+ --ext .js,.jsx,.ts,.tsx
43
+ --format @microsoft/eslint-formatter-sarif
44
+ --output-file eslint-results.sarif
45
+ continue-on-error: true
46
+
47
+ - name: Upload analysis results to GitHub
48
+ uses: github/codeql-action/upload-sarif@v2
49
+ with:
50
+ sarif_file: eslint-results.sarif
51
+ wait-for-processing: true
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ node_modules
.prettierignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ static
2
+ node_modules
.prettierrc.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "useTabs": false,
3
+ "singleQuote": false
4
+ }
.replit ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ language = "nix"
2
+ run = ["npm", "start"]
3
+
4
+ [packager]
5
+ language = "nodejs-npm"
6
+
7
+ [nix]
8
+ channel = "stable-22_05"
9
+
10
+ [debugger]
11
+
12
+ [unitTest]
13
+ language = "nodejs"
Dockerfile ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:18-alpine
2
+
3
+ ENV NODE_ENV=production
4
+ ARG NPM_BUILD="npm install --omit=dev"
5
+ EXPOSE 8080/tcp
6
+
7
+ LABEL maintainer="TitaniumNetwork Ultraviolet Team"
8
+ LABEL summary="Ultraviolet Proxy Image"
9
+ LABEL description="Example application of Ultraviolet which can be deployed in production."
10
+
11
+ WORKDIR /app
12
+
13
+ COPY ["package.json", "package-lock.json", "./"]
14
+ RUN apk add --upgrade --no-cache python3 make g++
15
+ RUN $NPM_BUILD
16
+
17
+ COPY . .
18
+
19
+ ENTRYPOINT [ "node" ]
20
+ CMD ["src/index.js"]
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Titanium Network
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
app.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "Ultraviolet App",
3
+ "description": "Node.js Ultraviolet instance",
4
+ "repository": "https://github.com/titaniumnetwork-dev/Ultraviolet-App",
5
+ "logo": "https://raw.githubusercontent.com/titaniumnetwork-dev/Ultraviolet-Static/main/public/uv.png",
6
+ "keywords": ["tomp", "ultraviolet"]
7
+ }
docker-compose.yml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ ultraviolet:
3
+ image: diffusehyperion/ultraviolet
4
+ container_name: ultraviolet
5
+ restart: unless-stopped
6
+ ports:
7
+ - "8080:8080"
8
+
9
+ networks:
10
+ default:
11
+ name: ultraviolet
package-lock.json ADDED
@@ -0,0 +1,2151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "uv-app",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "uv-app",
9
+ "version": "1.0.0",
10
+ "license": "GPL-3.0-or-later",
11
+ "dependencies": {
12
+ "@mercuryworkshop/bare-mux": "^2.0.5",
13
+ "@mercuryworkshop/epoxy-transport": "^2.1.9",
14
+ "@titaniumnetwork-dev/ultraviolet": "^3.2.7",
15
+ "express": "^4.18.2",
16
+ "ultraviolet-static": "github:titaniumnetwork-dev/Ultraviolet-Static",
17
+ "wisp-server-node": "^1.1.3",
18
+ "ws": "^8.17.1"
19
+ },
20
+ "devDependencies": {
21
+ "eslint": "^8.36.0",
22
+ "prettier": "^2.8.4"
23
+ },
24
+ "engines": {
25
+ "node": ">=16.0.0",
26
+ "npm": ">=7.0.0"
27
+ }
28
+ },
29
+ "node_modules/@eslint-community/eslint-utils": {
30
+ "version": "4.4.0",
31
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
32
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
33
+ "dev": true,
34
+ "license": "MIT",
35
+ "dependencies": {
36
+ "eslint-visitor-keys": "^3.3.0"
37
+ },
38
+ "engines": {
39
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
40
+ },
41
+ "peerDependencies": {
42
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
43
+ }
44
+ },
45
+ "node_modules/@eslint-community/regexpp": {
46
+ "version": "4.11.0",
47
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
48
+ "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
49
+ "dev": true,
50
+ "license": "MIT",
51
+ "engines": {
52
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
53
+ }
54
+ },
55
+ "node_modules/@eslint/eslintrc": {
56
+ "version": "2.1.4",
57
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
58
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
59
+ "dev": true,
60
+ "license": "MIT",
61
+ "dependencies": {
62
+ "ajv": "^6.12.4",
63
+ "debug": "^4.3.2",
64
+ "espree": "^9.6.0",
65
+ "globals": "^13.19.0",
66
+ "ignore": "^5.2.0",
67
+ "import-fresh": "^3.2.1",
68
+ "js-yaml": "^4.1.0",
69
+ "minimatch": "^3.1.2",
70
+ "strip-json-comments": "^3.1.1"
71
+ },
72
+ "engines": {
73
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
74
+ },
75
+ "funding": {
76
+ "url": "https://opencollective.com/eslint"
77
+ }
78
+ },
79
+ "node_modules/@eslint/js": {
80
+ "version": "8.57.0",
81
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
82
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
83
+ "dev": true,
84
+ "license": "MIT",
85
+ "engines": {
86
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
87
+ }
88
+ },
89
+ "node_modules/@humanwhocodes/config-array": {
90
+ "version": "0.11.14",
91
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
92
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
93
+ "deprecated": "Use @eslint/config-array instead",
94
+ "dev": true,
95
+ "license": "Apache-2.0",
96
+ "dependencies": {
97
+ "@humanwhocodes/object-schema": "^2.0.2",
98
+ "debug": "^4.3.1",
99
+ "minimatch": "^3.0.5"
100
+ },
101
+ "engines": {
102
+ "node": ">=10.10.0"
103
+ }
104
+ },
105
+ "node_modules/@humanwhocodes/module-importer": {
106
+ "version": "1.0.1",
107
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
108
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
109
+ "dev": true,
110
+ "license": "Apache-2.0",
111
+ "engines": {
112
+ "node": ">=12.22"
113
+ },
114
+ "funding": {
115
+ "type": "github",
116
+ "url": "https://github.com/sponsors/nzakas"
117
+ }
118
+ },
119
+ "node_modules/@humanwhocodes/object-schema": {
120
+ "version": "2.0.3",
121
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
122
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
123
+ "deprecated": "Use @eslint/object-schema instead",
124
+ "dev": true,
125
+ "license": "BSD-3-Clause"
126
+ },
127
+ "node_modules/@mercuryworkshop/bare-mux": {
128
+ "version": "2.0.5",
129
+ "resolved": "https://registry.npmjs.org/@mercuryworkshop/bare-mux/-/bare-mux-2.0.5.tgz",
130
+ "integrity": "sha512-Uu0JGqqh4K0MuOGnz5QI8DvnW3SGqmdeIP5HET1JKFjMy3HqPpRrIb3UAETZ7TPYjWgR/YJxNp2DmCsPluohCg=="
131
+ },
132
+ "node_modules/@mercuryworkshop/epoxy-tls": {
133
+ "version": "2.1.3-1",
134
+ "resolved": "https://registry.npmjs.org/@mercuryworkshop/epoxy-tls/-/epoxy-tls-2.1.3-1.tgz",
135
+ "integrity": "sha512-Thc8mBNwr95oxPyOI5GP8PanXzIZO9gijgQUfH7p+mLR+vlO2lG9FJbEA8SK6sfEtj2/kE8nR3mmIpn4hYPqpg==",
136
+ "license": "AGPL-3.0-only"
137
+ },
138
+ "node_modules/@mercuryworkshop/epoxy-transport": {
139
+ "version": "2.1.9",
140
+ "resolved": "https://registry.npmjs.org/@mercuryworkshop/epoxy-transport/-/epoxy-transport-2.1.9.tgz",
141
+ "integrity": "sha512-2tu5aDQL422ItCD6rDFXyO2k5sQCPMFoaylpGLmtsjRDpUNJIKuLx7rIc6U+XS4QLfiVkvemoO39nh5136Voxw==",
142
+ "license": "AGPL-3.0-only",
143
+ "dependencies": {
144
+ "@mercuryworkshop/epoxy-tls": "2.1.3-1"
145
+ }
146
+ },
147
+ "node_modules/@nodelib/fs.scandir": {
148
+ "version": "2.1.5",
149
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
150
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
151
+ "dev": true,
152
+ "license": "MIT",
153
+ "dependencies": {
154
+ "@nodelib/fs.stat": "2.0.5",
155
+ "run-parallel": "^1.1.9"
156
+ },
157
+ "engines": {
158
+ "node": ">= 8"
159
+ }
160
+ },
161
+ "node_modules/@nodelib/fs.stat": {
162
+ "version": "2.0.5",
163
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
164
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
165
+ "dev": true,
166
+ "license": "MIT",
167
+ "engines": {
168
+ "node": ">= 8"
169
+ }
170
+ },
171
+ "node_modules/@nodelib/fs.walk": {
172
+ "version": "1.2.8",
173
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
174
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
175
+ "dev": true,
176
+ "license": "MIT",
177
+ "dependencies": {
178
+ "@nodelib/fs.scandir": "2.1.5",
179
+ "fastq": "^1.6.0"
180
+ },
181
+ "engines": {
182
+ "node": ">= 8"
183
+ }
184
+ },
185
+ "node_modules/@titaniumnetwork-dev/ultraviolet": {
186
+ "version": "3.2.7",
187
+ "resolved": "https://registry.npmjs.org/@titaniumnetwork-dev/ultraviolet/-/ultraviolet-3.2.7.tgz",
188
+ "integrity": "sha512-leR8Cxtgld9NykRbEbYejbD85dOLh0rqQe6tfcsaFEBIChWG9QF10x1qoJBQ3wXSvZ+wqh3cBNYrucYpHOWpUA==",
189
+ "license": "MIT"
190
+ },
191
+ "node_modules/@ungap/structured-clone": {
192
+ "version": "1.2.0",
193
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
194
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
195
+ "dev": true,
196
+ "license": "ISC"
197
+ },
198
+ "node_modules/accepts": {
199
+ "version": "1.3.8",
200
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
201
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
202
+ "license": "MIT",
203
+ "dependencies": {
204
+ "mime-types": "~2.1.34",
205
+ "negotiator": "0.6.3"
206
+ },
207
+ "engines": {
208
+ "node": ">= 0.6"
209
+ }
210
+ },
211
+ "node_modules/acorn": {
212
+ "version": "8.12.1",
213
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
214
+ "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
215
+ "dev": true,
216
+ "license": "MIT",
217
+ "bin": {
218
+ "acorn": "bin/acorn"
219
+ },
220
+ "engines": {
221
+ "node": ">=0.4.0"
222
+ }
223
+ },
224
+ "node_modules/acorn-jsx": {
225
+ "version": "5.3.2",
226
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
227
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
228
+ "dev": true,
229
+ "license": "MIT",
230
+ "peerDependencies": {
231
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
232
+ }
233
+ },
234
+ "node_modules/ajv": {
235
+ "version": "6.12.6",
236
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
237
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
238
+ "dev": true,
239
+ "license": "MIT",
240
+ "dependencies": {
241
+ "fast-deep-equal": "^3.1.1",
242
+ "fast-json-stable-stringify": "^2.0.0",
243
+ "json-schema-traverse": "^0.4.1",
244
+ "uri-js": "^4.2.2"
245
+ },
246
+ "funding": {
247
+ "type": "github",
248
+ "url": "https://github.com/sponsors/epoberezkin"
249
+ }
250
+ },
251
+ "node_modules/ansi-regex": {
252
+ "version": "5.0.1",
253
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
254
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
255
+ "dev": true,
256
+ "license": "MIT",
257
+ "engines": {
258
+ "node": ">=8"
259
+ }
260
+ },
261
+ "node_modules/ansi-styles": {
262
+ "version": "4.3.0",
263
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
264
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
265
+ "dev": true,
266
+ "license": "MIT",
267
+ "dependencies": {
268
+ "color-convert": "^2.0.1"
269
+ },
270
+ "engines": {
271
+ "node": ">=8"
272
+ },
273
+ "funding": {
274
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
275
+ }
276
+ },
277
+ "node_modules/argparse": {
278
+ "version": "2.0.1",
279
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
280
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
281
+ "dev": true,
282
+ "license": "Python-2.0"
283
+ },
284
+ "node_modules/array-flatten": {
285
+ "version": "1.1.1",
286
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
287
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
288
+ "license": "MIT"
289
+ },
290
+ "node_modules/balanced-match": {
291
+ "version": "1.0.2",
292
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
293
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
294
+ "dev": true,
295
+ "license": "MIT"
296
+ },
297
+ "node_modules/body-parser": {
298
+ "version": "1.20.2",
299
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
300
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
301
+ "license": "MIT",
302
+ "dependencies": {
303
+ "bytes": "3.1.2",
304
+ "content-type": "~1.0.5",
305
+ "debug": "2.6.9",
306
+ "depd": "2.0.0",
307
+ "destroy": "1.2.0",
308
+ "http-errors": "2.0.0",
309
+ "iconv-lite": "0.4.24",
310
+ "on-finished": "2.4.1",
311
+ "qs": "6.11.0",
312
+ "raw-body": "2.5.2",
313
+ "type-is": "~1.6.18",
314
+ "unpipe": "1.0.0"
315
+ },
316
+ "engines": {
317
+ "node": ">= 0.8",
318
+ "npm": "1.2.8000 || >= 1.4.16"
319
+ }
320
+ },
321
+ "node_modules/body-parser/node_modules/debug": {
322
+ "version": "2.6.9",
323
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
324
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
325
+ "license": "MIT",
326
+ "dependencies": {
327
+ "ms": "2.0.0"
328
+ }
329
+ },
330
+ "node_modules/body-parser/node_modules/ms": {
331
+ "version": "2.0.0",
332
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
333
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
334
+ "license": "MIT"
335
+ },
336
+ "node_modules/brace-expansion": {
337
+ "version": "1.1.11",
338
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
339
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
340
+ "dev": true,
341
+ "license": "MIT",
342
+ "dependencies": {
343
+ "balanced-match": "^1.0.0",
344
+ "concat-map": "0.0.1"
345
+ }
346
+ },
347
+ "node_modules/bufferutil": {
348
+ "version": "4.0.8",
349
+ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz",
350
+ "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==",
351
+ "hasInstallScript": true,
352
+ "license": "MIT",
353
+ "dependencies": {
354
+ "node-gyp-build": "^4.3.0"
355
+ },
356
+ "engines": {
357
+ "node": ">=6.14.2"
358
+ }
359
+ },
360
+ "node_modules/bytes": {
361
+ "version": "3.1.2",
362
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
363
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
364
+ "license": "MIT",
365
+ "engines": {
366
+ "node": ">= 0.8"
367
+ }
368
+ },
369
+ "node_modules/call-bind": {
370
+ "version": "1.0.7",
371
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
372
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
373
+ "license": "MIT",
374
+ "dependencies": {
375
+ "es-define-property": "^1.0.0",
376
+ "es-errors": "^1.3.0",
377
+ "function-bind": "^1.1.2",
378
+ "get-intrinsic": "^1.2.4",
379
+ "set-function-length": "^1.2.1"
380
+ },
381
+ "engines": {
382
+ "node": ">= 0.4"
383
+ },
384
+ "funding": {
385
+ "url": "https://github.com/sponsors/ljharb"
386
+ }
387
+ },
388
+ "node_modules/callsites": {
389
+ "version": "3.1.0",
390
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
391
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
392
+ "dev": true,
393
+ "license": "MIT",
394
+ "engines": {
395
+ "node": ">=6"
396
+ }
397
+ },
398
+ "node_modules/chalk": {
399
+ "version": "4.1.2",
400
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
401
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
402
+ "dev": true,
403
+ "license": "MIT",
404
+ "dependencies": {
405
+ "ansi-styles": "^4.1.0",
406
+ "supports-color": "^7.1.0"
407
+ },
408
+ "engines": {
409
+ "node": ">=10"
410
+ },
411
+ "funding": {
412
+ "url": "https://github.com/chalk/chalk?sponsor=1"
413
+ }
414
+ },
415
+ "node_modules/color-convert": {
416
+ "version": "2.0.1",
417
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
418
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
419
+ "dev": true,
420
+ "license": "MIT",
421
+ "dependencies": {
422
+ "color-name": "~1.1.4"
423
+ },
424
+ "engines": {
425
+ "node": ">=7.0.0"
426
+ }
427
+ },
428
+ "node_modules/color-name": {
429
+ "version": "1.1.4",
430
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
431
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
432
+ "dev": true,
433
+ "license": "MIT"
434
+ },
435
+ "node_modules/concat-map": {
436
+ "version": "0.0.1",
437
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
438
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
439
+ "dev": true,
440
+ "license": "MIT"
441
+ },
442
+ "node_modules/content-disposition": {
443
+ "version": "0.5.4",
444
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
445
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
446
+ "license": "MIT",
447
+ "dependencies": {
448
+ "safe-buffer": "5.2.1"
449
+ },
450
+ "engines": {
451
+ "node": ">= 0.6"
452
+ }
453
+ },
454
+ "node_modules/content-type": {
455
+ "version": "1.0.5",
456
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
457
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
458
+ "license": "MIT",
459
+ "engines": {
460
+ "node": ">= 0.6"
461
+ }
462
+ },
463
+ "node_modules/cookie": {
464
+ "version": "0.6.0",
465
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
466
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
467
+ "license": "MIT",
468
+ "engines": {
469
+ "node": ">= 0.6"
470
+ }
471
+ },
472
+ "node_modules/cookie-signature": {
473
+ "version": "1.0.6",
474
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
475
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
476
+ "license": "MIT"
477
+ },
478
+ "node_modules/cross-spawn": {
479
+ "version": "7.0.3",
480
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
481
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
482
+ "dev": true,
483
+ "license": "MIT",
484
+ "dependencies": {
485
+ "path-key": "^3.1.0",
486
+ "shebang-command": "^2.0.0",
487
+ "which": "^2.0.1"
488
+ },
489
+ "engines": {
490
+ "node": ">= 8"
491
+ }
492
+ },
493
+ "node_modules/debug": {
494
+ "version": "4.3.6",
495
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
496
+ "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
497
+ "dev": true,
498
+ "license": "MIT",
499
+ "dependencies": {
500
+ "ms": "2.1.2"
501
+ },
502
+ "engines": {
503
+ "node": ">=6.0"
504
+ },
505
+ "peerDependenciesMeta": {
506
+ "supports-color": {
507
+ "optional": true
508
+ }
509
+ }
510
+ },
511
+ "node_modules/deep-is": {
512
+ "version": "0.1.4",
513
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
514
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
515
+ "dev": true,
516
+ "license": "MIT"
517
+ },
518
+ "node_modules/define-data-property": {
519
+ "version": "1.1.4",
520
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
521
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
522
+ "license": "MIT",
523
+ "dependencies": {
524
+ "es-define-property": "^1.0.0",
525
+ "es-errors": "^1.3.0",
526
+ "gopd": "^1.0.1"
527
+ },
528
+ "engines": {
529
+ "node": ">= 0.4"
530
+ },
531
+ "funding": {
532
+ "url": "https://github.com/sponsors/ljharb"
533
+ }
534
+ },
535
+ "node_modules/depd": {
536
+ "version": "2.0.0",
537
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
538
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
539
+ "license": "MIT",
540
+ "engines": {
541
+ "node": ">= 0.8"
542
+ }
543
+ },
544
+ "node_modules/destroy": {
545
+ "version": "1.2.0",
546
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
547
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
548
+ "license": "MIT",
549
+ "engines": {
550
+ "node": ">= 0.8",
551
+ "npm": "1.2.8000 || >= 1.4.16"
552
+ }
553
+ },
554
+ "node_modules/doctrine": {
555
+ "version": "3.0.0",
556
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
557
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
558
+ "dev": true,
559
+ "license": "Apache-2.0",
560
+ "dependencies": {
561
+ "esutils": "^2.0.2"
562
+ },
563
+ "engines": {
564
+ "node": ">=6.0.0"
565
+ }
566
+ },
567
+ "node_modules/ee-first": {
568
+ "version": "1.1.1",
569
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
570
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
571
+ "license": "MIT"
572
+ },
573
+ "node_modules/encodeurl": {
574
+ "version": "1.0.2",
575
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
576
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
577
+ "license": "MIT",
578
+ "engines": {
579
+ "node": ">= 0.8"
580
+ }
581
+ },
582
+ "node_modules/es-define-property": {
583
+ "version": "1.0.0",
584
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
585
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
586
+ "license": "MIT",
587
+ "dependencies": {
588
+ "get-intrinsic": "^1.2.4"
589
+ },
590
+ "engines": {
591
+ "node": ">= 0.4"
592
+ }
593
+ },
594
+ "node_modules/es-errors": {
595
+ "version": "1.3.0",
596
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
597
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
598
+ "license": "MIT",
599
+ "engines": {
600
+ "node": ">= 0.4"
601
+ }
602
+ },
603
+ "node_modules/escape-html": {
604
+ "version": "1.0.3",
605
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
606
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
607
+ "license": "MIT"
608
+ },
609
+ "node_modules/escape-string-regexp": {
610
+ "version": "4.0.0",
611
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
612
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
613
+ "dev": true,
614
+ "license": "MIT",
615
+ "engines": {
616
+ "node": ">=10"
617
+ },
618
+ "funding": {
619
+ "url": "https://github.com/sponsors/sindresorhus"
620
+ }
621
+ },
622
+ "node_modules/eslint": {
623
+ "version": "8.57.0",
624
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
625
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
626
+ "dev": true,
627
+ "license": "MIT",
628
+ "dependencies": {
629
+ "@eslint-community/eslint-utils": "^4.2.0",
630
+ "@eslint-community/regexpp": "^4.6.1",
631
+ "@eslint/eslintrc": "^2.1.4",
632
+ "@eslint/js": "8.57.0",
633
+ "@humanwhocodes/config-array": "^0.11.14",
634
+ "@humanwhocodes/module-importer": "^1.0.1",
635
+ "@nodelib/fs.walk": "^1.2.8",
636
+ "@ungap/structured-clone": "^1.2.0",
637
+ "ajv": "^6.12.4",
638
+ "chalk": "^4.0.0",
639
+ "cross-spawn": "^7.0.2",
640
+ "debug": "^4.3.2",
641
+ "doctrine": "^3.0.0",
642
+ "escape-string-regexp": "^4.0.0",
643
+ "eslint-scope": "^7.2.2",
644
+ "eslint-visitor-keys": "^3.4.3",
645
+ "espree": "^9.6.1",
646
+ "esquery": "^1.4.2",
647
+ "esutils": "^2.0.2",
648
+ "fast-deep-equal": "^3.1.3",
649
+ "file-entry-cache": "^6.0.1",
650
+ "find-up": "^5.0.0",
651
+ "glob-parent": "^6.0.2",
652
+ "globals": "^13.19.0",
653
+ "graphemer": "^1.4.0",
654
+ "ignore": "^5.2.0",
655
+ "imurmurhash": "^0.1.4",
656
+ "is-glob": "^4.0.0",
657
+ "is-path-inside": "^3.0.3",
658
+ "js-yaml": "^4.1.0",
659
+ "json-stable-stringify-without-jsonify": "^1.0.1",
660
+ "levn": "^0.4.1",
661
+ "lodash.merge": "^4.6.2",
662
+ "minimatch": "^3.1.2",
663
+ "natural-compare": "^1.4.0",
664
+ "optionator": "^0.9.3",
665
+ "strip-ansi": "^6.0.1",
666
+ "text-table": "^0.2.0"
667
+ },
668
+ "bin": {
669
+ "eslint": "bin/eslint.js"
670
+ },
671
+ "engines": {
672
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
673
+ },
674
+ "funding": {
675
+ "url": "https://opencollective.com/eslint"
676
+ }
677
+ },
678
+ "node_modules/eslint-scope": {
679
+ "version": "7.2.2",
680
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
681
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
682
+ "dev": true,
683
+ "license": "BSD-2-Clause",
684
+ "dependencies": {
685
+ "esrecurse": "^4.3.0",
686
+ "estraverse": "^5.2.0"
687
+ },
688
+ "engines": {
689
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
690
+ },
691
+ "funding": {
692
+ "url": "https://opencollective.com/eslint"
693
+ }
694
+ },
695
+ "node_modules/eslint-visitor-keys": {
696
+ "version": "3.4.3",
697
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
698
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
699
+ "dev": true,
700
+ "license": "Apache-2.0",
701
+ "engines": {
702
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
703
+ },
704
+ "funding": {
705
+ "url": "https://opencollective.com/eslint"
706
+ }
707
+ },
708
+ "node_modules/espree": {
709
+ "version": "9.6.1",
710
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
711
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
712
+ "dev": true,
713
+ "license": "BSD-2-Clause",
714
+ "dependencies": {
715
+ "acorn": "^8.9.0",
716
+ "acorn-jsx": "^5.3.2",
717
+ "eslint-visitor-keys": "^3.4.1"
718
+ },
719
+ "engines": {
720
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
721
+ },
722
+ "funding": {
723
+ "url": "https://opencollective.com/eslint"
724
+ }
725
+ },
726
+ "node_modules/esquery": {
727
+ "version": "1.6.0",
728
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
729
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
730
+ "dev": true,
731
+ "license": "BSD-3-Clause",
732
+ "dependencies": {
733
+ "estraverse": "^5.1.0"
734
+ },
735
+ "engines": {
736
+ "node": ">=0.10"
737
+ }
738
+ },
739
+ "node_modules/esrecurse": {
740
+ "version": "4.3.0",
741
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
742
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
743
+ "dev": true,
744
+ "license": "BSD-2-Clause",
745
+ "dependencies": {
746
+ "estraverse": "^5.2.0"
747
+ },
748
+ "engines": {
749
+ "node": ">=4.0"
750
+ }
751
+ },
752
+ "node_modules/estraverse": {
753
+ "version": "5.3.0",
754
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
755
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
756
+ "dev": true,
757
+ "license": "BSD-2-Clause",
758
+ "engines": {
759
+ "node": ">=4.0"
760
+ }
761
+ },
762
+ "node_modules/esutils": {
763
+ "version": "2.0.3",
764
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
765
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
766
+ "dev": true,
767
+ "license": "BSD-2-Clause",
768
+ "engines": {
769
+ "node": ">=0.10.0"
770
+ }
771
+ },
772
+ "node_modules/etag": {
773
+ "version": "1.8.1",
774
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
775
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
776
+ "license": "MIT",
777
+ "engines": {
778
+ "node": ">= 0.6"
779
+ }
780
+ },
781
+ "node_modules/express": {
782
+ "version": "4.19.2",
783
+ "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
784
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
785
+ "license": "MIT",
786
+ "dependencies": {
787
+ "accepts": "~1.3.8",
788
+ "array-flatten": "1.1.1",
789
+ "body-parser": "1.20.2",
790
+ "content-disposition": "0.5.4",
791
+ "content-type": "~1.0.4",
792
+ "cookie": "0.6.0",
793
+ "cookie-signature": "1.0.6",
794
+ "debug": "2.6.9",
795
+ "depd": "2.0.0",
796
+ "encodeurl": "~1.0.2",
797
+ "escape-html": "~1.0.3",
798
+ "etag": "~1.8.1",
799
+ "finalhandler": "1.2.0",
800
+ "fresh": "0.5.2",
801
+ "http-errors": "2.0.0",
802
+ "merge-descriptors": "1.0.1",
803
+ "methods": "~1.1.2",
804
+ "on-finished": "2.4.1",
805
+ "parseurl": "~1.3.3",
806
+ "path-to-regexp": "0.1.7",
807
+ "proxy-addr": "~2.0.7",
808
+ "qs": "6.11.0",
809
+ "range-parser": "~1.2.1",
810
+ "safe-buffer": "5.2.1",
811
+ "send": "0.18.0",
812
+ "serve-static": "1.15.0",
813
+ "setprototypeof": "1.2.0",
814
+ "statuses": "2.0.1",
815
+ "type-is": "~1.6.18",
816
+ "utils-merge": "1.0.1",
817
+ "vary": "~1.1.2"
818
+ },
819
+ "engines": {
820
+ "node": ">= 0.10.0"
821
+ }
822
+ },
823
+ "node_modules/express/node_modules/debug": {
824
+ "version": "2.6.9",
825
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
826
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
827
+ "license": "MIT",
828
+ "dependencies": {
829
+ "ms": "2.0.0"
830
+ }
831
+ },
832
+ "node_modules/express/node_modules/ms": {
833
+ "version": "2.0.0",
834
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
835
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
836
+ "license": "MIT"
837
+ },
838
+ "node_modules/fast-deep-equal": {
839
+ "version": "3.1.3",
840
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
841
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
842
+ "dev": true,
843
+ "license": "MIT"
844
+ },
845
+ "node_modules/fast-json-stable-stringify": {
846
+ "version": "2.1.0",
847
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
848
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
849
+ "dev": true,
850
+ "license": "MIT"
851
+ },
852
+ "node_modules/fast-levenshtein": {
853
+ "version": "2.0.6",
854
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
855
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
856
+ "dev": true,
857
+ "license": "MIT"
858
+ },
859
+ "node_modules/fastq": {
860
+ "version": "1.17.1",
861
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
862
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
863
+ "dev": true,
864
+ "license": "ISC",
865
+ "dependencies": {
866
+ "reusify": "^1.0.4"
867
+ }
868
+ },
869
+ "node_modules/file-entry-cache": {
870
+ "version": "6.0.1",
871
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
872
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
873
+ "dev": true,
874
+ "license": "MIT",
875
+ "dependencies": {
876
+ "flat-cache": "^3.0.4"
877
+ },
878
+ "engines": {
879
+ "node": "^10.12.0 || >=12.0.0"
880
+ }
881
+ },
882
+ "node_modules/finalhandler": {
883
+ "version": "1.2.0",
884
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
885
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
886
+ "license": "MIT",
887
+ "dependencies": {
888
+ "debug": "2.6.9",
889
+ "encodeurl": "~1.0.2",
890
+ "escape-html": "~1.0.3",
891
+ "on-finished": "2.4.1",
892
+ "parseurl": "~1.3.3",
893
+ "statuses": "2.0.1",
894
+ "unpipe": "~1.0.0"
895
+ },
896
+ "engines": {
897
+ "node": ">= 0.8"
898
+ }
899
+ },
900
+ "node_modules/finalhandler/node_modules/debug": {
901
+ "version": "2.6.9",
902
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
903
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
904
+ "license": "MIT",
905
+ "dependencies": {
906
+ "ms": "2.0.0"
907
+ }
908
+ },
909
+ "node_modules/finalhandler/node_modules/ms": {
910
+ "version": "2.0.0",
911
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
912
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
913
+ "license": "MIT"
914
+ },
915
+ "node_modules/find-up": {
916
+ "version": "5.0.0",
917
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
918
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
919
+ "dev": true,
920
+ "license": "MIT",
921
+ "dependencies": {
922
+ "locate-path": "^6.0.0",
923
+ "path-exists": "^4.0.0"
924
+ },
925
+ "engines": {
926
+ "node": ">=10"
927
+ },
928
+ "funding": {
929
+ "url": "https://github.com/sponsors/sindresorhus"
930
+ }
931
+ },
932
+ "node_modules/flat-cache": {
933
+ "version": "3.2.0",
934
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
935
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
936
+ "dev": true,
937
+ "license": "MIT",
938
+ "dependencies": {
939
+ "flatted": "^3.2.9",
940
+ "keyv": "^4.5.3",
941
+ "rimraf": "^3.0.2"
942
+ },
943
+ "engines": {
944
+ "node": "^10.12.0 || >=12.0.0"
945
+ }
946
+ },
947
+ "node_modules/flatted": {
948
+ "version": "3.3.1",
949
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
950
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
951
+ "dev": true,
952
+ "license": "ISC"
953
+ },
954
+ "node_modules/forwarded": {
955
+ "version": "0.2.0",
956
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
957
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
958
+ "license": "MIT",
959
+ "engines": {
960
+ "node": ">= 0.6"
961
+ }
962
+ },
963
+ "node_modules/fresh": {
964
+ "version": "0.5.2",
965
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
966
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
967
+ "license": "MIT",
968
+ "engines": {
969
+ "node": ">= 0.6"
970
+ }
971
+ },
972
+ "node_modules/fs.realpath": {
973
+ "version": "1.0.0",
974
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
975
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
976
+ "dev": true,
977
+ "license": "ISC"
978
+ },
979
+ "node_modules/function-bind": {
980
+ "version": "1.1.2",
981
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
982
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
983
+ "license": "MIT",
984
+ "funding": {
985
+ "url": "https://github.com/sponsors/ljharb"
986
+ }
987
+ },
988
+ "node_modules/get-intrinsic": {
989
+ "version": "1.2.4",
990
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
991
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
992
+ "license": "MIT",
993
+ "dependencies": {
994
+ "es-errors": "^1.3.0",
995
+ "function-bind": "^1.1.2",
996
+ "has-proto": "^1.0.1",
997
+ "has-symbols": "^1.0.3",
998
+ "hasown": "^2.0.0"
999
+ },
1000
+ "engines": {
1001
+ "node": ">= 0.4"
1002
+ },
1003
+ "funding": {
1004
+ "url": "https://github.com/sponsors/ljharb"
1005
+ }
1006
+ },
1007
+ "node_modules/glob": {
1008
+ "version": "7.2.3",
1009
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1010
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1011
+ "deprecated": "Glob versions prior to v9 are no longer supported",
1012
+ "dev": true,
1013
+ "license": "ISC",
1014
+ "dependencies": {
1015
+ "fs.realpath": "^1.0.0",
1016
+ "inflight": "^1.0.4",
1017
+ "inherits": "2",
1018
+ "minimatch": "^3.1.1",
1019
+ "once": "^1.3.0",
1020
+ "path-is-absolute": "^1.0.0"
1021
+ },
1022
+ "engines": {
1023
+ "node": "*"
1024
+ },
1025
+ "funding": {
1026
+ "url": "https://github.com/sponsors/isaacs"
1027
+ }
1028
+ },
1029
+ "node_modules/glob-parent": {
1030
+ "version": "6.0.2",
1031
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1032
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1033
+ "dev": true,
1034
+ "license": "ISC",
1035
+ "dependencies": {
1036
+ "is-glob": "^4.0.3"
1037
+ },
1038
+ "engines": {
1039
+ "node": ">=10.13.0"
1040
+ }
1041
+ },
1042
+ "node_modules/globals": {
1043
+ "version": "13.24.0",
1044
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
1045
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
1046
+ "dev": true,
1047
+ "license": "MIT",
1048
+ "dependencies": {
1049
+ "type-fest": "^0.20.2"
1050
+ },
1051
+ "engines": {
1052
+ "node": ">=8"
1053
+ },
1054
+ "funding": {
1055
+ "url": "https://github.com/sponsors/sindresorhus"
1056
+ }
1057
+ },
1058
+ "node_modules/gopd": {
1059
+ "version": "1.0.1",
1060
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
1061
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
1062
+ "license": "MIT",
1063
+ "dependencies": {
1064
+ "get-intrinsic": "^1.1.3"
1065
+ },
1066
+ "funding": {
1067
+ "url": "https://github.com/sponsors/ljharb"
1068
+ }
1069
+ },
1070
+ "node_modules/graphemer": {
1071
+ "version": "1.4.0",
1072
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
1073
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
1074
+ "dev": true,
1075
+ "license": "MIT"
1076
+ },
1077
+ "node_modules/has-flag": {
1078
+ "version": "4.0.0",
1079
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1080
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1081
+ "dev": true,
1082
+ "license": "MIT",
1083
+ "engines": {
1084
+ "node": ">=8"
1085
+ }
1086
+ },
1087
+ "node_modules/has-property-descriptors": {
1088
+ "version": "1.0.2",
1089
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
1090
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
1091
+ "license": "MIT",
1092
+ "dependencies": {
1093
+ "es-define-property": "^1.0.0"
1094
+ },
1095
+ "funding": {
1096
+ "url": "https://github.com/sponsors/ljharb"
1097
+ }
1098
+ },
1099
+ "node_modules/has-proto": {
1100
+ "version": "1.0.3",
1101
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
1102
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
1103
+ "license": "MIT",
1104
+ "engines": {
1105
+ "node": ">= 0.4"
1106
+ },
1107
+ "funding": {
1108
+ "url": "https://github.com/sponsors/ljharb"
1109
+ }
1110
+ },
1111
+ "node_modules/has-symbols": {
1112
+ "version": "1.0.3",
1113
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
1114
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
1115
+ "license": "MIT",
1116
+ "engines": {
1117
+ "node": ">= 0.4"
1118
+ },
1119
+ "funding": {
1120
+ "url": "https://github.com/sponsors/ljharb"
1121
+ }
1122
+ },
1123
+ "node_modules/hasown": {
1124
+ "version": "2.0.2",
1125
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1126
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1127
+ "license": "MIT",
1128
+ "dependencies": {
1129
+ "function-bind": "^1.1.2"
1130
+ },
1131
+ "engines": {
1132
+ "node": ">= 0.4"
1133
+ }
1134
+ },
1135
+ "node_modules/http-errors": {
1136
+ "version": "2.0.0",
1137
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1138
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1139
+ "license": "MIT",
1140
+ "dependencies": {
1141
+ "depd": "2.0.0",
1142
+ "inherits": "2.0.4",
1143
+ "setprototypeof": "1.2.0",
1144
+ "statuses": "2.0.1",
1145
+ "toidentifier": "1.0.1"
1146
+ },
1147
+ "engines": {
1148
+ "node": ">= 0.8"
1149
+ }
1150
+ },
1151
+ "node_modules/iconv-lite": {
1152
+ "version": "0.4.24",
1153
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1154
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1155
+ "license": "MIT",
1156
+ "dependencies": {
1157
+ "safer-buffer": ">= 2.1.2 < 3"
1158
+ },
1159
+ "engines": {
1160
+ "node": ">=0.10.0"
1161
+ }
1162
+ },
1163
+ "node_modules/ignore": {
1164
+ "version": "5.3.2",
1165
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
1166
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
1167
+ "dev": true,
1168
+ "license": "MIT",
1169
+ "engines": {
1170
+ "node": ">= 4"
1171
+ }
1172
+ },
1173
+ "node_modules/import-fresh": {
1174
+ "version": "3.3.0",
1175
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1176
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1177
+ "dev": true,
1178
+ "license": "MIT",
1179
+ "dependencies": {
1180
+ "parent-module": "^1.0.0",
1181
+ "resolve-from": "^4.0.0"
1182
+ },
1183
+ "engines": {
1184
+ "node": ">=6"
1185
+ },
1186
+ "funding": {
1187
+ "url": "https://github.com/sponsors/sindresorhus"
1188
+ }
1189
+ },
1190
+ "node_modules/imurmurhash": {
1191
+ "version": "0.1.4",
1192
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1193
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
1194
+ "dev": true,
1195
+ "license": "MIT",
1196
+ "engines": {
1197
+ "node": ">=0.8.19"
1198
+ }
1199
+ },
1200
+ "node_modules/inflight": {
1201
+ "version": "1.0.6",
1202
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1203
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1204
+ "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.",
1205
+ "dev": true,
1206
+ "license": "ISC",
1207
+ "dependencies": {
1208
+ "once": "^1.3.0",
1209
+ "wrappy": "1"
1210
+ }
1211
+ },
1212
+ "node_modules/inherits": {
1213
+ "version": "2.0.4",
1214
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1215
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1216
+ "license": "ISC"
1217
+ },
1218
+ "node_modules/ipaddr.js": {
1219
+ "version": "1.9.1",
1220
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1221
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
1222
+ "license": "MIT",
1223
+ "engines": {
1224
+ "node": ">= 0.10"
1225
+ }
1226
+ },
1227
+ "node_modules/is-extglob": {
1228
+ "version": "2.1.1",
1229
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1230
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1231
+ "dev": true,
1232
+ "license": "MIT",
1233
+ "engines": {
1234
+ "node": ">=0.10.0"
1235
+ }
1236
+ },
1237
+ "node_modules/is-glob": {
1238
+ "version": "4.0.3",
1239
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1240
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1241
+ "dev": true,
1242
+ "license": "MIT",
1243
+ "dependencies": {
1244
+ "is-extglob": "^2.1.1"
1245
+ },
1246
+ "engines": {
1247
+ "node": ">=0.10.0"
1248
+ }
1249
+ },
1250
+ "node_modules/is-path-inside": {
1251
+ "version": "3.0.3",
1252
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
1253
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
1254
+ "dev": true,
1255
+ "license": "MIT",
1256
+ "engines": {
1257
+ "node": ">=8"
1258
+ }
1259
+ },
1260
+ "node_modules/isexe": {
1261
+ "version": "2.0.0",
1262
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1263
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1264
+ "dev": true,
1265
+ "license": "ISC"
1266
+ },
1267
+ "node_modules/js-yaml": {
1268
+ "version": "4.1.0",
1269
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
1270
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
1271
+ "dev": true,
1272
+ "license": "MIT",
1273
+ "dependencies": {
1274
+ "argparse": "^2.0.1"
1275
+ },
1276
+ "bin": {
1277
+ "js-yaml": "bin/js-yaml.js"
1278
+ }
1279
+ },
1280
+ "node_modules/json-buffer": {
1281
+ "version": "3.0.1",
1282
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
1283
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
1284
+ "dev": true,
1285
+ "license": "MIT"
1286
+ },
1287
+ "node_modules/json-schema-traverse": {
1288
+ "version": "0.4.1",
1289
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1290
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1291
+ "dev": true,
1292
+ "license": "MIT"
1293
+ },
1294
+ "node_modules/json-stable-stringify-without-jsonify": {
1295
+ "version": "1.0.1",
1296
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1297
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
1298
+ "dev": true,
1299
+ "license": "MIT"
1300
+ },
1301
+ "node_modules/keyv": {
1302
+ "version": "4.5.4",
1303
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
1304
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
1305
+ "dev": true,
1306
+ "license": "MIT",
1307
+ "dependencies": {
1308
+ "json-buffer": "3.0.1"
1309
+ }
1310
+ },
1311
+ "node_modules/levn": {
1312
+ "version": "0.4.1",
1313
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1314
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1315
+ "dev": true,
1316
+ "license": "MIT",
1317
+ "dependencies": {
1318
+ "prelude-ls": "^1.2.1",
1319
+ "type-check": "~0.4.0"
1320
+ },
1321
+ "engines": {
1322
+ "node": ">= 0.8.0"
1323
+ }
1324
+ },
1325
+ "node_modules/locate-path": {
1326
+ "version": "6.0.0",
1327
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
1328
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
1329
+ "dev": true,
1330
+ "license": "MIT",
1331
+ "dependencies": {
1332
+ "p-locate": "^5.0.0"
1333
+ },
1334
+ "engines": {
1335
+ "node": ">=10"
1336
+ },
1337
+ "funding": {
1338
+ "url": "https://github.com/sponsors/sindresorhus"
1339
+ }
1340
+ },
1341
+ "node_modules/lodash.merge": {
1342
+ "version": "4.6.2",
1343
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1344
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1345
+ "dev": true,
1346
+ "license": "MIT"
1347
+ },
1348
+ "node_modules/media-typer": {
1349
+ "version": "0.3.0",
1350
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1351
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
1352
+ "license": "MIT",
1353
+ "engines": {
1354
+ "node": ">= 0.6"
1355
+ }
1356
+ },
1357
+ "node_modules/merge-descriptors": {
1358
+ "version": "1.0.1",
1359
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1360
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
1361
+ "license": "MIT"
1362
+ },
1363
+ "node_modules/methods": {
1364
+ "version": "1.1.2",
1365
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1366
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
1367
+ "license": "MIT",
1368
+ "engines": {
1369
+ "node": ">= 0.6"
1370
+ }
1371
+ },
1372
+ "node_modules/mime": {
1373
+ "version": "1.6.0",
1374
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1375
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1376
+ "license": "MIT",
1377
+ "bin": {
1378
+ "mime": "cli.js"
1379
+ },
1380
+ "engines": {
1381
+ "node": ">=4"
1382
+ }
1383
+ },
1384
+ "node_modules/mime-db": {
1385
+ "version": "1.52.0",
1386
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1387
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1388
+ "license": "MIT",
1389
+ "engines": {
1390
+ "node": ">= 0.6"
1391
+ }
1392
+ },
1393
+ "node_modules/mime-types": {
1394
+ "version": "2.1.35",
1395
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1396
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1397
+ "license": "MIT",
1398
+ "dependencies": {
1399
+ "mime-db": "1.52.0"
1400
+ },
1401
+ "engines": {
1402
+ "node": ">= 0.6"
1403
+ }
1404
+ },
1405
+ "node_modules/minimatch": {
1406
+ "version": "3.1.2",
1407
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1408
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1409
+ "dev": true,
1410
+ "license": "ISC",
1411
+ "dependencies": {
1412
+ "brace-expansion": "^1.1.7"
1413
+ },
1414
+ "engines": {
1415
+ "node": "*"
1416
+ }
1417
+ },
1418
+ "node_modules/ms": {
1419
+ "version": "2.1.2",
1420
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1421
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1422
+ "dev": true,
1423
+ "license": "MIT"
1424
+ },
1425
+ "node_modules/natural-compare": {
1426
+ "version": "1.4.0",
1427
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1428
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
1429
+ "dev": true,
1430
+ "license": "MIT"
1431
+ },
1432
+ "node_modules/negotiator": {
1433
+ "version": "0.6.3",
1434
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1435
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1436
+ "license": "MIT",
1437
+ "engines": {
1438
+ "node": ">= 0.6"
1439
+ }
1440
+ },
1441
+ "node_modules/node-gyp-build": {
1442
+ "version": "4.8.1",
1443
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz",
1444
+ "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==",
1445
+ "license": "MIT",
1446
+ "bin": {
1447
+ "node-gyp-build": "bin.js",
1448
+ "node-gyp-build-optional": "optional.js",
1449
+ "node-gyp-build-test": "build-test.js"
1450
+ }
1451
+ },
1452
+ "node_modules/object-inspect": {
1453
+ "version": "1.13.2",
1454
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
1455
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
1456
+ "license": "MIT",
1457
+ "engines": {
1458
+ "node": ">= 0.4"
1459
+ },
1460
+ "funding": {
1461
+ "url": "https://github.com/sponsors/ljharb"
1462
+ }
1463
+ },
1464
+ "node_modules/on-finished": {
1465
+ "version": "2.4.1",
1466
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1467
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1468
+ "license": "MIT",
1469
+ "dependencies": {
1470
+ "ee-first": "1.1.1"
1471
+ },
1472
+ "engines": {
1473
+ "node": ">= 0.8"
1474
+ }
1475
+ },
1476
+ "node_modules/once": {
1477
+ "version": "1.4.0",
1478
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1479
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1480
+ "dev": true,
1481
+ "license": "ISC",
1482
+ "dependencies": {
1483
+ "wrappy": "1"
1484
+ }
1485
+ },
1486
+ "node_modules/optionator": {
1487
+ "version": "0.9.4",
1488
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
1489
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
1490
+ "dev": true,
1491
+ "license": "MIT",
1492
+ "dependencies": {
1493
+ "deep-is": "^0.1.3",
1494
+ "fast-levenshtein": "^2.0.6",
1495
+ "levn": "^0.4.1",
1496
+ "prelude-ls": "^1.2.1",
1497
+ "type-check": "^0.4.0",
1498
+ "word-wrap": "^1.2.5"
1499
+ },
1500
+ "engines": {
1501
+ "node": ">= 0.8.0"
1502
+ }
1503
+ },
1504
+ "node_modules/p-limit": {
1505
+ "version": "3.1.0",
1506
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
1507
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
1508
+ "dev": true,
1509
+ "license": "MIT",
1510
+ "dependencies": {
1511
+ "yocto-queue": "^0.1.0"
1512
+ },
1513
+ "engines": {
1514
+ "node": ">=10"
1515
+ },
1516
+ "funding": {
1517
+ "url": "https://github.com/sponsors/sindresorhus"
1518
+ }
1519
+ },
1520
+ "node_modules/p-locate": {
1521
+ "version": "5.0.0",
1522
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
1523
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
1524
+ "dev": true,
1525
+ "license": "MIT",
1526
+ "dependencies": {
1527
+ "p-limit": "^3.0.2"
1528
+ },
1529
+ "engines": {
1530
+ "node": ">=10"
1531
+ },
1532
+ "funding": {
1533
+ "url": "https://github.com/sponsors/sindresorhus"
1534
+ }
1535
+ },
1536
+ "node_modules/parent-module": {
1537
+ "version": "1.0.1",
1538
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1539
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1540
+ "dev": true,
1541
+ "license": "MIT",
1542
+ "dependencies": {
1543
+ "callsites": "^3.0.0"
1544
+ },
1545
+ "engines": {
1546
+ "node": ">=6"
1547
+ }
1548
+ },
1549
+ "node_modules/parseurl": {
1550
+ "version": "1.3.3",
1551
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1552
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1553
+ "license": "MIT",
1554
+ "engines": {
1555
+ "node": ">= 0.8"
1556
+ }
1557
+ },
1558
+ "node_modules/path-exists": {
1559
+ "version": "4.0.0",
1560
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1561
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
1562
+ "dev": true,
1563
+ "license": "MIT",
1564
+ "engines": {
1565
+ "node": ">=8"
1566
+ }
1567
+ },
1568
+ "node_modules/path-is-absolute": {
1569
+ "version": "1.0.1",
1570
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1571
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1572
+ "dev": true,
1573
+ "license": "MIT",
1574
+ "engines": {
1575
+ "node": ">=0.10.0"
1576
+ }
1577
+ },
1578
+ "node_modules/path-key": {
1579
+ "version": "3.1.1",
1580
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1581
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1582
+ "dev": true,
1583
+ "license": "MIT",
1584
+ "engines": {
1585
+ "node": ">=8"
1586
+ }
1587
+ },
1588
+ "node_modules/path-to-regexp": {
1589
+ "version": "0.1.7",
1590
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1591
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
1592
+ "license": "MIT"
1593
+ },
1594
+ "node_modules/prelude-ls": {
1595
+ "version": "1.2.1",
1596
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
1597
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
1598
+ "dev": true,
1599
+ "license": "MIT",
1600
+ "engines": {
1601
+ "node": ">= 0.8.0"
1602
+ }
1603
+ },
1604
+ "node_modules/prettier": {
1605
+ "version": "2.8.8",
1606
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
1607
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
1608
+ "dev": true,
1609
+ "license": "MIT",
1610
+ "bin": {
1611
+ "prettier": "bin-prettier.js"
1612
+ },
1613
+ "engines": {
1614
+ "node": ">=10.13.0"
1615
+ },
1616
+ "funding": {
1617
+ "url": "https://github.com/prettier/prettier?sponsor=1"
1618
+ }
1619
+ },
1620
+ "node_modules/proxy-addr": {
1621
+ "version": "2.0.7",
1622
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1623
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1624
+ "license": "MIT",
1625
+ "dependencies": {
1626
+ "forwarded": "0.2.0",
1627
+ "ipaddr.js": "1.9.1"
1628
+ },
1629
+ "engines": {
1630
+ "node": ">= 0.10"
1631
+ }
1632
+ },
1633
+ "node_modules/punycode": {
1634
+ "version": "2.3.1",
1635
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1636
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1637
+ "dev": true,
1638
+ "license": "MIT",
1639
+ "engines": {
1640
+ "node": ">=6"
1641
+ }
1642
+ },
1643
+ "node_modules/qs": {
1644
+ "version": "6.11.0",
1645
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1646
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1647
+ "license": "BSD-3-Clause",
1648
+ "dependencies": {
1649
+ "side-channel": "^1.0.4"
1650
+ },
1651
+ "engines": {
1652
+ "node": ">=0.6"
1653
+ },
1654
+ "funding": {
1655
+ "url": "https://github.com/sponsors/ljharb"
1656
+ }
1657
+ },
1658
+ "node_modules/queue-microtask": {
1659
+ "version": "1.2.3",
1660
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1661
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1662
+ "dev": true,
1663
+ "funding": [
1664
+ {
1665
+ "type": "github",
1666
+ "url": "https://github.com/sponsors/feross"
1667
+ },
1668
+ {
1669
+ "type": "patreon",
1670
+ "url": "https://www.patreon.com/feross"
1671
+ },
1672
+ {
1673
+ "type": "consulting",
1674
+ "url": "https://feross.org/support"
1675
+ }
1676
+ ],
1677
+ "license": "MIT"
1678
+ },
1679
+ "node_modules/range-parser": {
1680
+ "version": "1.2.1",
1681
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1682
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1683
+ "license": "MIT",
1684
+ "engines": {
1685
+ "node": ">= 0.6"
1686
+ }
1687
+ },
1688
+ "node_modules/raw-body": {
1689
+ "version": "2.5.2",
1690
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
1691
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
1692
+ "license": "MIT",
1693
+ "dependencies": {
1694
+ "bytes": "3.1.2",
1695
+ "http-errors": "2.0.0",
1696
+ "iconv-lite": "0.4.24",
1697
+ "unpipe": "1.0.0"
1698
+ },
1699
+ "engines": {
1700
+ "node": ">= 0.8"
1701
+ }
1702
+ },
1703
+ "node_modules/resolve-from": {
1704
+ "version": "4.0.0",
1705
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1706
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1707
+ "dev": true,
1708
+ "license": "MIT",
1709
+ "engines": {
1710
+ "node": ">=4"
1711
+ }
1712
+ },
1713
+ "node_modules/reusify": {
1714
+ "version": "1.0.4",
1715
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1716
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1717
+ "dev": true,
1718
+ "license": "MIT",
1719
+ "engines": {
1720
+ "iojs": ">=1.0.0",
1721
+ "node": ">=0.10.0"
1722
+ }
1723
+ },
1724
+ "node_modules/rimraf": {
1725
+ "version": "3.0.2",
1726
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1727
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1728
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
1729
+ "dev": true,
1730
+ "license": "ISC",
1731
+ "dependencies": {
1732
+ "glob": "^7.1.3"
1733
+ },
1734
+ "bin": {
1735
+ "rimraf": "bin.js"
1736
+ },
1737
+ "funding": {
1738
+ "url": "https://github.com/sponsors/isaacs"
1739
+ }
1740
+ },
1741
+ "node_modules/run-parallel": {
1742
+ "version": "1.2.0",
1743
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1744
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1745
+ "dev": true,
1746
+ "funding": [
1747
+ {
1748
+ "type": "github",
1749
+ "url": "https://github.com/sponsors/feross"
1750
+ },
1751
+ {
1752
+ "type": "patreon",
1753
+ "url": "https://www.patreon.com/feross"
1754
+ },
1755
+ {
1756
+ "type": "consulting",
1757
+ "url": "https://feross.org/support"
1758
+ }
1759
+ ],
1760
+ "license": "MIT",
1761
+ "dependencies": {
1762
+ "queue-microtask": "^1.2.2"
1763
+ }
1764
+ },
1765
+ "node_modules/safe-buffer": {
1766
+ "version": "5.2.1",
1767
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1768
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1769
+ "funding": [
1770
+ {
1771
+ "type": "github",
1772
+ "url": "https://github.com/sponsors/feross"
1773
+ },
1774
+ {
1775
+ "type": "patreon",
1776
+ "url": "https://www.patreon.com/feross"
1777
+ },
1778
+ {
1779
+ "type": "consulting",
1780
+ "url": "https://feross.org/support"
1781
+ }
1782
+ ],
1783
+ "license": "MIT"
1784
+ },
1785
+ "node_modules/safer-buffer": {
1786
+ "version": "2.1.2",
1787
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1788
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1789
+ "license": "MIT"
1790
+ },
1791
+ "node_modules/send": {
1792
+ "version": "0.18.0",
1793
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1794
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1795
+ "license": "MIT",
1796
+ "dependencies": {
1797
+ "debug": "2.6.9",
1798
+ "depd": "2.0.0",
1799
+ "destroy": "1.2.0",
1800
+ "encodeurl": "~1.0.2",
1801
+ "escape-html": "~1.0.3",
1802
+ "etag": "~1.8.1",
1803
+ "fresh": "0.5.2",
1804
+ "http-errors": "2.0.0",
1805
+ "mime": "1.6.0",
1806
+ "ms": "2.1.3",
1807
+ "on-finished": "2.4.1",
1808
+ "range-parser": "~1.2.1",
1809
+ "statuses": "2.0.1"
1810
+ },
1811
+ "engines": {
1812
+ "node": ">= 0.8.0"
1813
+ }
1814
+ },
1815
+ "node_modules/send/node_modules/debug": {
1816
+ "version": "2.6.9",
1817
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1818
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1819
+ "license": "MIT",
1820
+ "dependencies": {
1821
+ "ms": "2.0.0"
1822
+ }
1823
+ },
1824
+ "node_modules/send/node_modules/debug/node_modules/ms": {
1825
+ "version": "2.0.0",
1826
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1827
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
1828
+ "license": "MIT"
1829
+ },
1830
+ "node_modules/send/node_modules/ms": {
1831
+ "version": "2.1.3",
1832
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1833
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1834
+ "license": "MIT"
1835
+ },
1836
+ "node_modules/serve-static": {
1837
+ "version": "1.15.0",
1838
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1839
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1840
+ "license": "MIT",
1841
+ "dependencies": {
1842
+ "encodeurl": "~1.0.2",
1843
+ "escape-html": "~1.0.3",
1844
+ "parseurl": "~1.3.3",
1845
+ "send": "0.18.0"
1846
+ },
1847
+ "engines": {
1848
+ "node": ">= 0.8.0"
1849
+ }
1850
+ },
1851
+ "node_modules/set-function-length": {
1852
+ "version": "1.2.2",
1853
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
1854
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
1855
+ "license": "MIT",
1856
+ "dependencies": {
1857
+ "define-data-property": "^1.1.4",
1858
+ "es-errors": "^1.3.0",
1859
+ "function-bind": "^1.1.2",
1860
+ "get-intrinsic": "^1.2.4",
1861
+ "gopd": "^1.0.1",
1862
+ "has-property-descriptors": "^1.0.2"
1863
+ },
1864
+ "engines": {
1865
+ "node": ">= 0.4"
1866
+ }
1867
+ },
1868
+ "node_modules/setprototypeof": {
1869
+ "version": "1.2.0",
1870
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1871
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
1872
+ "license": "ISC"
1873
+ },
1874
+ "node_modules/shebang-command": {
1875
+ "version": "2.0.0",
1876
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1877
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1878
+ "dev": true,
1879
+ "license": "MIT",
1880
+ "dependencies": {
1881
+ "shebang-regex": "^3.0.0"
1882
+ },
1883
+ "engines": {
1884
+ "node": ">=8"
1885
+ }
1886
+ },
1887
+ "node_modules/shebang-regex": {
1888
+ "version": "3.0.0",
1889
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1890
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1891
+ "dev": true,
1892
+ "license": "MIT",
1893
+ "engines": {
1894
+ "node": ">=8"
1895
+ }
1896
+ },
1897
+ "node_modules/side-channel": {
1898
+ "version": "1.0.6",
1899
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
1900
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
1901
+ "license": "MIT",
1902
+ "dependencies": {
1903
+ "call-bind": "^1.0.7",
1904
+ "es-errors": "^1.3.0",
1905
+ "get-intrinsic": "^1.2.4",
1906
+ "object-inspect": "^1.13.1"
1907
+ },
1908
+ "engines": {
1909
+ "node": ">= 0.4"
1910
+ },
1911
+ "funding": {
1912
+ "url": "https://github.com/sponsors/ljharb"
1913
+ }
1914
+ },
1915
+ "node_modules/statuses": {
1916
+ "version": "2.0.1",
1917
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1918
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
1919
+ "license": "MIT",
1920
+ "engines": {
1921
+ "node": ">= 0.8"
1922
+ }
1923
+ },
1924
+ "node_modules/strip-ansi": {
1925
+ "version": "6.0.1",
1926
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1927
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1928
+ "dev": true,
1929
+ "license": "MIT",
1930
+ "dependencies": {
1931
+ "ansi-regex": "^5.0.1"
1932
+ },
1933
+ "engines": {
1934
+ "node": ">=8"
1935
+ }
1936
+ },
1937
+ "node_modules/strip-json-comments": {
1938
+ "version": "3.1.1",
1939
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1940
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
1941
+ "dev": true,
1942
+ "license": "MIT",
1943
+ "engines": {
1944
+ "node": ">=8"
1945
+ },
1946
+ "funding": {
1947
+ "url": "https://github.com/sponsors/sindresorhus"
1948
+ }
1949
+ },
1950
+ "node_modules/supports-color": {
1951
+ "version": "7.2.0",
1952
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1953
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1954
+ "dev": true,
1955
+ "license": "MIT",
1956
+ "dependencies": {
1957
+ "has-flag": "^4.0.0"
1958
+ },
1959
+ "engines": {
1960
+ "node": ">=8"
1961
+ }
1962
+ },
1963
+ "node_modules/text-table": {
1964
+ "version": "0.2.0",
1965
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1966
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
1967
+ "dev": true,
1968
+ "license": "MIT"
1969
+ },
1970
+ "node_modules/toidentifier": {
1971
+ "version": "1.0.1",
1972
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1973
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1974
+ "license": "MIT",
1975
+ "engines": {
1976
+ "node": ">=0.6"
1977
+ }
1978
+ },
1979
+ "node_modules/type-check": {
1980
+ "version": "0.4.0",
1981
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
1982
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1983
+ "dev": true,
1984
+ "license": "MIT",
1985
+ "dependencies": {
1986
+ "prelude-ls": "^1.2.1"
1987
+ },
1988
+ "engines": {
1989
+ "node": ">= 0.8.0"
1990
+ }
1991
+ },
1992
+ "node_modules/type-fest": {
1993
+ "version": "0.20.2",
1994
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
1995
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
1996
+ "dev": true,
1997
+ "license": "(MIT OR CC0-1.0)",
1998
+ "engines": {
1999
+ "node": ">=10"
2000
+ },
2001
+ "funding": {
2002
+ "url": "https://github.com/sponsors/sindresorhus"
2003
+ }
2004
+ },
2005
+ "node_modules/type-is": {
2006
+ "version": "1.6.18",
2007
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
2008
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
2009
+ "license": "MIT",
2010
+ "dependencies": {
2011
+ "media-typer": "0.3.0",
2012
+ "mime-types": "~2.1.24"
2013
+ },
2014
+ "engines": {
2015
+ "node": ">= 0.6"
2016
+ }
2017
+ },
2018
+ "node_modules/ultraviolet-static": {
2019
+ "version": "1.0.5",
2020
+ "resolved": "git+ssh://[email protected]/titaniumnetwork-dev/Ultraviolet-Static.git#d9a30997be87d0f25f36c85e2fc851528d8f8e23"
2021
+ },
2022
+ "node_modules/unpipe": {
2023
+ "version": "1.0.0",
2024
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
2025
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
2026
+ "license": "MIT",
2027
+ "engines": {
2028
+ "node": ">= 0.8"
2029
+ }
2030
+ },
2031
+ "node_modules/uri-js": {
2032
+ "version": "4.4.1",
2033
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2034
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2035
+ "dev": true,
2036
+ "license": "BSD-2-Clause",
2037
+ "dependencies": {
2038
+ "punycode": "^2.1.0"
2039
+ }
2040
+ },
2041
+ "node_modules/utf-8-validate": {
2042
+ "version": "6.0.4",
2043
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.4.tgz",
2044
+ "integrity": "sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==",
2045
+ "hasInstallScript": true,
2046
+ "license": "MIT",
2047
+ "dependencies": {
2048
+ "node-gyp-build": "^4.3.0"
2049
+ },
2050
+ "engines": {
2051
+ "node": ">=6.14.2"
2052
+ }
2053
+ },
2054
+ "node_modules/utils-merge": {
2055
+ "version": "1.0.1",
2056
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
2057
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
2058
+ "license": "MIT",
2059
+ "engines": {
2060
+ "node": ">= 0.4.0"
2061
+ }
2062
+ },
2063
+ "node_modules/vary": {
2064
+ "version": "1.1.2",
2065
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2066
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
2067
+ "license": "MIT",
2068
+ "engines": {
2069
+ "node": ">= 0.8"
2070
+ }
2071
+ },
2072
+ "node_modules/which": {
2073
+ "version": "2.0.2",
2074
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2075
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2076
+ "dev": true,
2077
+ "license": "ISC",
2078
+ "dependencies": {
2079
+ "isexe": "^2.0.0"
2080
+ },
2081
+ "bin": {
2082
+ "node-which": "bin/node-which"
2083
+ },
2084
+ "engines": {
2085
+ "node": ">= 8"
2086
+ }
2087
+ },
2088
+ "node_modules/wisp-server-node": {
2089
+ "version": "1.1.3",
2090
+ "resolved": "https://registry.npmjs.org/wisp-server-node/-/wisp-server-node-1.1.3.tgz",
2091
+ "integrity": "sha512-q44uIL68WhOnSEE1HJvMwXVZ6OzFIK+PBQfv04cr3svfOpbZfsuzLiYUz12P57PkxZxfNsjsYqrXjvf55P8S4Q==",
2092
+ "license": "AGPL-3.0-only",
2093
+ "dependencies": {
2094
+ "bufferutil": "^4.0.8",
2095
+ "utf-8-validate": "^6.0.4",
2096
+ "ws": "^8.18.0"
2097
+ }
2098
+ },
2099
+ "node_modules/word-wrap": {
2100
+ "version": "1.2.5",
2101
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
2102
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
2103
+ "dev": true,
2104
+ "license": "MIT",
2105
+ "engines": {
2106
+ "node": ">=0.10.0"
2107
+ }
2108
+ },
2109
+ "node_modules/wrappy": {
2110
+ "version": "1.0.2",
2111
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2112
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2113
+ "dev": true,
2114
+ "license": "ISC"
2115
+ },
2116
+ "node_modules/ws": {
2117
+ "version": "8.18.0",
2118
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
2119
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
2120
+ "license": "MIT",
2121
+ "engines": {
2122
+ "node": ">=10.0.0"
2123
+ },
2124
+ "peerDependencies": {
2125
+ "bufferutil": "^4.0.1",
2126
+ "utf-8-validate": ">=5.0.2"
2127
+ },
2128
+ "peerDependenciesMeta": {
2129
+ "bufferutil": {
2130
+ "optional": true
2131
+ },
2132
+ "utf-8-validate": {
2133
+ "optional": true
2134
+ }
2135
+ }
2136
+ },
2137
+ "node_modules/yocto-queue": {
2138
+ "version": "0.1.0",
2139
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
2140
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
2141
+ "dev": true,
2142
+ "license": "MIT",
2143
+ "engines": {
2144
+ "node": ">=10"
2145
+ },
2146
+ "funding": {
2147
+ "url": "https://github.com/sponsors/sindresorhus"
2148
+ }
2149
+ }
2150
+ }
2151
+ }
package.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "uv-app",
3
+ "version": "1.0.0",
4
+ "description": "Ultraviolet instance",
5
+ "type": "module",
6
+ "engines": {
7
+ "npm": ">=7.0.0",
8
+ "node": ">=16.0.0"
9
+ },
10
+ "scripts": {
11
+ "start": "node src/index.js"
12
+ },
13
+ "keywords": [
14
+ "proxy"
15
+ ],
16
+ "author": "",
17
+ "license": "GPL-3.0-or-later",
18
+ "dependencies": {
19
+ "@mercuryworkshop/bare-mux": "^2.0.5",
20
+ "@mercuryworkshop/epoxy-transport": "^2.1.9",
21
+ "@titaniumnetwork-dev/ultraviolet": "^3.2.7",
22
+ "express": "^4.18.2",
23
+ "ultraviolet-static": "github:titaniumnetwork-dev/Ultraviolet-Static",
24
+ "wisp-server-node": "^1.1.3",
25
+ "ws": "^8.17.1"
26
+ },
27
+ "devDependencies": {
28
+ "eslint": "^8.36.0",
29
+ "prettier": "^2.8.4"
30
+ },
31
+ "packageManager": "[email protected]"
32
+ }
replit.nix ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ { pkgs }: {
2
+ deps = [
3
+ pkgs.nodejs-18_x
4
+ ];
5
+ }
src/index.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import express from "express";
2
+ import { createServer } from "node:http";
3
+ import { publicPath } from "ultraviolet-static";
4
+ import { uvPath } from "@titaniumnetwork-dev/ultraviolet";
5
+ import { epoxyPath } from "@mercuryworkshop/epoxy-transport";
6
+ import { baremuxPath } from "@mercuryworkshop/bare-mux/node";
7
+ import { join } from "node:path";
8
+ import { hostname } from "node:os";
9
+ import wisp from "wisp-server-node"
10
+
11
+ const app = express();
12
+ // Load our publicPath first and prioritize it over UV.
13
+ app.use(express.static(publicPath));
14
+ // Load vendor files last.
15
+ // The vendor's uv.config.js won't conflict with our uv.config.js inside the publicPath directory.
16
+ app.use("/uv/", express.static(uvPath));
17
+ app.use("/epoxy/", express.static(epoxyPath));
18
+ app.use("/baremux/", express.static(baremuxPath));
19
+
20
+ // Error for everything else
21
+ app.use((req, res) => {
22
+ res.status(404);
23
+ res.sendFile(join(publicPath, "404.html"));
24
+ });
25
+
26
+ const server = createServer();
27
+
28
+ server.on("request", (req, res) => {
29
+ res.setHeader("Cross-Origin-Opener-Policy", "same-origin");
30
+ res.setHeader("Cross-Origin-Embedder-Policy", "require-corp");
31
+ app(req, res);
32
+ });
33
+ server.on("upgrade", (req, socket, head) => {
34
+ if (req.url.endsWith("/wisp/"))
35
+ wisp.routeRequest(req, socket, head);
36
+ else
37
+ socket.end();
38
+ });
39
+
40
+ let port = parseInt(process.env.PORT || "");
41
+
42
+ if (isNaN(port)) port = 8080;
43
+
44
+ server.on("listening", () => {
45
+ const address = server.address();
46
+
47
+ // by default we are listening on 0.0.0.0 (every interface)
48
+ // we just need to list a few
49
+ console.log("Listening on:");
50
+ console.log(`\thttp://localhost:${address.port}`);
51
+ console.log(`\thttp://${hostname()}:${address.port}`);
52
+ console.log(
53
+ `\thttp://${address.family === "IPv6" ? `[${address.address}]` : address.address
54
+ }:${address.port}`
55
+ );
56
+ });
57
+
58
+ // https://expressjs.com/en/advanced/healthcheck-graceful-shutdown.html
59
+ process.on("SIGINT", shutdown);
60
+ process.on("SIGTERM", shutdown);
61
+
62
+ function shutdown() {
63
+ console.log("SIGTERM signal received: closing HTTP server");
64
+ server.close();
65
+ process.exit(0);
66
+ }
67
+
68
+ server.listen({
69
+ port,
70
+ });