├── 01-Login ├── .dockerignore ├── .browserslistrc ├── auth_config.json.example ├── exec.ps1 ├── public │ ├── logo.png │ └── favicon.ico ├── exec.sh ├── vite.config.js ├── src │ ├── shims-vue.d.ts │ ├── components │ │ ├── Error.vue │ │ ├── Hero.vue │ │ ├── HomeContent.vue │ │ └── NavBar.vue │ ├── views │ │ ├── Home.vue │ │ └── Profile.vue │ ├── router │ │ └── index.ts │ ├── App.vue │ ├── main.ts │ └── assets │ │ └── loading.svg ├── web-server.js ├── Dockerfile ├── package.json ├── tsconfig.json ├── index.html ├── loading.svg ├── README.md └── package-lock.json ├── 02-Calling-an-API ├── .dockerignore ├── .browserslistrc ├── exec.ps1 ├── public │ ├── logo.png │ └── favicon.ico ├── exec.sh ├── auth_config.json.example ├── src │ ├── shims-vue.d.ts │ ├── components │ │ ├── Error.vue │ │ ├── Hero.vue │ │ ├── HomeContent.vue │ │ └── NavBar.vue │ ├── views │ │ ├── Home.vue │ │ ├── Profile.vue │ │ └── ExternalApi.vue │ ├── App.vue │ ├── router │ │ └── index.ts │ ├── main.ts │ └── assets │ │ └── loading.svg ├── vite.config.js ├── Dockerfile ├── tsconfig.json ├── package.json ├── web-server.js ├── index.html ├── loading.svg └── README.md ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── Feature Request.yml │ └── Bug Report.yml ├── dependabot.yml ├── workflows │ └── semgrep.yml └── stale.yml ├── .gitignore ├── netlify.toml ├── LICENSE ├── README.md └── .circleci └── config.yml /01-Login/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .git 3 | -------------------------------------------------------------------------------- /02-Calling-an-API/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .git 3 | -------------------------------------------------------------------------------- /01-Login/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 4 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @auth0-samples/project-dx-sdks-engineer-codeowner 2 | -------------------------------------------------------------------------------- /02-Calling-an-API/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 4 | -------------------------------------------------------------------------------- /01-Login/auth_config.json.example: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "{DOMAIN}", 3 | "clientId": "{CLIENT_ID}" 4 | } -------------------------------------------------------------------------------- /01-Login/exec.ps1: -------------------------------------------------------------------------------- 1 | docker build --rm -t auth0-vue-01-login . 2 | docker run -p 3000:3000 --pid=host auth0-vue-01-login -------------------------------------------------------------------------------- /01-Login/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0-samples/auth0-vue-samples/HEAD/01-Login/public/logo.png -------------------------------------------------------------------------------- /01-Login/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0-samples/auth0-vue-samples/HEAD/01-Login/public/favicon.ico -------------------------------------------------------------------------------- /02-Calling-an-API/exec.ps1: -------------------------------------------------------------------------------- 1 | docker build --rm -t auth0-vue-02-api . 2 | docker run -p 3000:3000 --pid=host auth0-vue-02-api -------------------------------------------------------------------------------- /02-Calling-an-API/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0-samples/auth0-vue-samples/HEAD/02-Calling-an-API/public/logo.png -------------------------------------------------------------------------------- /01-Login/exec.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker build -t auth0-vue-01-login . 4 | docker run -p 3000:3000 --init auth0-vue-01-login -------------------------------------------------------------------------------- /02-Calling-an-API/exec.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker build -t auth0-vue-02-api . 4 | docker run -p 3000:3000 --init auth0-vue-02-api -------------------------------------------------------------------------------- /02-Calling-an-API/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/auth0-samples/auth0-vue-samples/HEAD/02-Calling-an-API/public/favicon.ico -------------------------------------------------------------------------------- /02-Calling-an-API/auth_config.json.example: -------------------------------------------------------------------------------- 1 | { 2 | "domain": "{DOMAIN}", 3 | "clientId": "{CLIENT_ID}", 4 | "authorizationParams": { 5 | "audience": "{API_IDENTIFIER}" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /01-Login/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log 5 | yarn-error.log 6 | test/unit/coverage 7 | test/e2e/reports 8 | selenium-debug.log 9 | auth0-variables.js 10 | .env 11 | auth_config.json -------------------------------------------------------------------------------- /01-Login/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module '*.vue' { 3 | import type { DefineComponent } from 'vue'; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } 7 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | declare module '*.vue' { 3 | import type { DefineComponent } from 'vue'; 4 | const component: DefineComponent<{}, {}, any>; 5 | export default component; 6 | } 7 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 🤔 Help & Questions 4 | url: https://community.auth0.com 5 | about: Ask general support or usage questions in the Auth0 Community forums. 6 | -------------------------------------------------------------------------------- /02-Calling-an-API/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | server: { 7 | proxy: { 8 | '/api': 'http://localhost:3001', 9 | } 10 | }, 11 | plugins: [vue()] 12 | }) -------------------------------------------------------------------------------- /01-Login/web-server.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | const express = require("express"); 3 | const { join } = require("path"); 4 | const morgan = require("morgan"); 5 | const app = express(); 6 | 7 | app.use(morgan("dev")); 8 | app.use(express.static(join(__dirname, "dist"))); 9 | 10 | app.use((_, res) => { 11 | res.sendFile(join(__dirname, "dist", "index.html")); 12 | }); 13 | 14 | app.listen(3000, () => console.log("Listening on port 3000")); 15 | -------------------------------------------------------------------------------- /01-Login/src/components/Error.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/components/Error.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | -------------------------------------------------------------------------------- /01-Login/src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 21 | 22 | 27 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | base = "01-Login" 3 | command = """if [ -z "${AUTH0_DOMAIN}" ] || [ -z "${AUTH0_CLIENT_ID}" ]; then 4 | echo "Error: One or both environment variables (AUTH0_DOMAIN, AUTH0_CLIENT_ID) are not set or are empty." 5 | exit 1 6 | fi 7 | printf '{\"domain\":\"%s\", \"clientId\":\"%s\"}' "${AUTH0_DOMAIN}" "${AUTH0_CLIENT_ID}" > auth_config.json 8 | cat auth_config.json 9 | npm install 10 | npm run build 11 | """ 12 | publish = "dist" 13 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 21 | 22 | 27 | -------------------------------------------------------------------------------- /01-Login/src/components/Hero.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/components/Hero.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | 4 | - package-ecosystem: "npm" 5 | directory: "/01-Login" 6 | schedule: 7 | interval: "daily" 8 | ignore: 9 | - dependency-name: "*" 10 | update-types: ["version-update:semver-major", "version-update:semver-patch"] 11 | 12 | - package-ecosystem: "npm" 13 | directory: "/02-Calling-an-API" 14 | schedule: 15 | interval: "daily" 16 | ignore: 17 | - dependency-name: "*" 18 | update-types: ["version-update:semver-major", "version-update:semver-patch"] 19 | -------------------------------------------------------------------------------- /.github/workflows/semgrep.yml: -------------------------------------------------------------------------------- 1 | name: Semgrep 2 | 3 | on: 4 | pull_request: {} 5 | 6 | push: 7 | branches: ["master", "main"] 8 | 9 | schedule: 10 | - cron: '30 0 1,15 * *' 11 | 12 | jobs: 13 | semgrep: 14 | name: Scan 15 | runs-on: ubuntu-latest 16 | container: 17 | image: returntocorp/semgrep 18 | # Skip any PR created by dependabot to avoid permission issues 19 | if: (github.actor != 'dependabot[bot]') 20 | steps: 21 | - uses: actions/checkout@v3 22 | 23 | - run: semgrep ci 24 | env: 25 | SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }} 26 | -------------------------------------------------------------------------------- /01-Login/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:16-alpine as build 2 | 3 | RUN apk update && apk upgrade && \ 4 | apk add --no-cache bash git openssh 5 | 6 | RUN mkdir /app 7 | 8 | WORKDIR /app 9 | 10 | COPY package.json . 11 | 12 | RUN npm install 13 | 14 | COPY . . 15 | 16 | RUN npm run build 17 | 18 | # --------------- 19 | 20 | FROM node:16-alpine 21 | 22 | RUN mkdir -p /app/dist 23 | 24 | WORKDIR /app 25 | 26 | COPY --from=build /app/dist ./dist 27 | COPY --from=build /app/package.json . 28 | COPY --from=build /app/web-server.js . 29 | 30 | ENV NODE_ENV production 31 | 32 | RUN npm install --production 33 | 34 | EXPOSE 3000 35 | 36 | CMD ["node", "web-server.js"] 37 | -------------------------------------------------------------------------------- /02-Calling-an-API/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:16-alpine as build 2 | 3 | RUN apk update && apk upgrade && \ 4 | apk add --no-cache bash git openssh 5 | 6 | RUN mkdir /app 7 | 8 | WORKDIR /app 9 | 10 | COPY package.json . 11 | 12 | RUN npm install 13 | 14 | COPY . . 15 | 16 | RUN npm run build 17 | 18 | # --------------- 19 | 20 | FROM node:16-alpine 21 | 22 | RUN mkdir -p /app/dist 23 | 24 | WORKDIR /app 25 | 26 | COPY --from=build /app/dist ./dist 27 | COPY --from=build /app/package.json . 28 | COPY --from=build /app/auth_config.json . 29 | COPY --from=build /app/web-server.js . 30 | 31 | ENV NODE_ENV production 32 | 33 | RUN npm install --production 34 | 35 | EXPOSE 3000 36 | 37 | CMD ["node", "web-server.js"] 38 | -------------------------------------------------------------------------------- /01-Login/src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createRouter as createVueRouter, createWebHashHistory, Router } from "vue-router"; 2 | import Home from "../views/Home.vue"; 3 | import Profile from "../views/Profile.vue"; 4 | import { createAuthGuard } from "@auth0/auth0-vue"; 5 | import { App } from 'vue'; 6 | 7 | export function createRouter(app: App): Router { 8 | return createVueRouter({ 9 | routes: [ 10 | { 11 | path: "/", 12 | name: "home", 13 | component: Home 14 | }, 15 | { 16 | path: "/profile", 17 | name: "profile", 18 | component: Profile, 19 | beforeEnter: createAuthGuard(app) 20 | } 21 | ], 22 | history: createWebHashHistory() 23 | }) 24 | } 25 | -------------------------------------------------------------------------------- /01-Login/src/App.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 31 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/App.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 31 | -------------------------------------------------------------------------------- /01-Login/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "01-login", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vite", 7 | "build": "vite build" 8 | }, 9 | "dependencies": { 10 | "@auth0/auth0-vue": "^2.3.0", 11 | "@fortawesome/fontawesome-svg-core": "^6.5.0", 12 | "@fortawesome/free-solid-svg-icons": "^6.5.0", 13 | "@fortawesome/vue-fontawesome": "^3.0.1", 14 | "@highlightjs/vue-plugin": "^2.1.0", 15 | "express": "^4.18.1", 16 | "highlight.js": "^11.9.0", 17 | "morgan": "^1.10.0", 18 | "vue": "^3.3.4", 19 | "vue-router": "^4.2.1" 20 | }, 21 | "devDependencies": { 22 | "@vitejs/plugin-vue": "^1.6.1", 23 | "@vue/compiler-sfc": "^3.3.4", 24 | "typescript": "^4.9.3", 25 | "vite": "^2.9.16" 26 | }, 27 | "prettier": { 28 | "singleQuote": false, 29 | "semi": true 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /01-Login/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "strict": true, 6 | "jsx": "preserve", 7 | "importHelpers": true, 8 | "moduleResolution": "node", 9 | "skipLibCheck": true, 10 | "esModuleInterop": true, 11 | "allowSyntheticDefaultImports": true, 12 | "sourceMap": true, 13 | "baseUrl": ".", 14 | "types": [ 15 | "webpack-env" 16 | ], 17 | "paths": { 18 | "@/*": [ 19 | "src/*" 20 | ] 21 | }, 22 | "lib": [ 23 | "esnext", 24 | "dom", 25 | "dom.iterable", 26 | "scripthost" 27 | ], 28 | "resolveJsonModule": true 29 | }, 30 | "include": [ 31 | "src/**/*.ts", 32 | "src/**/*.tsx", 33 | "src/**/*.vue", 34 | "tests/**/*.ts", 35 | "tests/**/*.tsx" 36 | ], 37 | "exclude": [ 38 | "node_modules" 39 | ] 40 | } -------------------------------------------------------------------------------- /02-Calling-an-API/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "strict": true, 6 | "jsx": "preserve", 7 | "importHelpers": true, 8 | "moduleResolution": "node", 9 | "skipLibCheck": true, 10 | "esModuleInterop": true, 11 | "allowSyntheticDefaultImports": true, 12 | "sourceMap": true, 13 | "baseUrl": ".", 14 | "types": [ 15 | "webpack-env" 16 | ], 17 | "paths": { 18 | "@/*": [ 19 | "src/*" 20 | ] 21 | }, 22 | "lib": [ 23 | "esnext", 24 | "dom", 25 | "dom.iterable", 26 | "scripthost" 27 | ], 28 | "resolveJsonModule": true 29 | }, 30 | "include": [ 31 | "src/**/*.ts", 32 | "src/**/*.tsx", 33 | "src/**/*.vue", 34 | "tests/**/*.ts", 35 | "tests/**/*.tsx" 36 | ], 37 | "exclude": [ 38 | "node_modules" 39 | ] 40 | } -------------------------------------------------------------------------------- /02-Calling-an-API/src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createRouter as createVueRouter, createWebHashHistory, Router } from "vue-router"; 2 | import Home from "../views/Home.vue"; 3 | import Profile from "../views/Profile.vue"; 4 | import ExternalApi from "../views/ExternalApi.vue"; 5 | import { createAuthGuard } from "@auth0/auth0-vue"; 6 | import { App } from 'vue'; 7 | 8 | export function createRouter(app: App): Router { 9 | return createVueRouter({ 10 | routes: [ 11 | { 12 | path: "/", 13 | name: "home", 14 | component: Home 15 | }, 16 | { 17 | path: "/profile", 18 | name: "profile", 19 | component: Profile, 20 | beforeEnter: createAuthGuard(app) 21 | }, 22 | { 23 | path: "/external-api", 24 | name: "external-api", 25 | component: ExternalApi, 26 | beforeEnter: createAuthGuard(app) 27 | } 28 | ], 29 | history: createWebHashHistory() 30 | }) 31 | } 32 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/views/Profile.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 36 | 37 | -------------------------------------------------------------------------------- /01-Login/src/views/Profile.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 37 | 38 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-stale - https://github.com/probot/stale 2 | 3 | # Number of days of inactivity before an Issue or Pull Request becomes stale 4 | daysUntilStale: 90 5 | 6 | # Number of days of inactivity before an Issue or Pull Request with the stale label is closed. 7 | daysUntilClose: 7 8 | 9 | # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable 10 | exemptLabels: [] 11 | 12 | # Set to true to ignore issues with an assignee (defaults to false) 13 | exemptAssignees: true 14 | 15 | # Label to use when marking as stale 16 | staleLabel: closed:stale 17 | 18 | # Comment to post when marking as stale. Set to `false` to disable 19 | markComment: > 20 | This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you have not received a response for our team (apologies for the delay) and this is still a blocker, please reply with additional information or just a ping. Thank you for your contribution! 🙇‍♂️ -------------------------------------------------------------------------------- /02-Calling-an-API/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "02-calling-an-api", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vite", 7 | "build": "vite build", 8 | "serve:backend": "node web-server.js", 9 | "serve:client": "vite" 10 | }, 11 | "dependencies": { 12 | "@auth0/auth0-vue": "^2.3.0", 13 | "@fortawesome/fontawesome-svg-core": "^6.5.0", 14 | "@fortawesome/free-solid-svg-icons": "^6.5.0", 15 | "@fortawesome/vue-fontawesome": "^3.0.1", 16 | "@highlightjs/vue-plugin": "^2.1.1", 17 | "cors": "^2.8.5", 18 | "express": "^4.18.2", 19 | "express-oauth2-jwt-bearer": "^1.6.0", 20 | "helmet": "^6.2.0", 21 | "highlight.js": "^11.9.0", 22 | "morgan": "^1.10.0", 23 | "vue": "^3.3.4", 24 | "vue-router": "^4.2.1" 25 | }, 26 | "devDependencies": { 27 | "@vitejs/plugin-vue": "^1.6.1", 28 | "@vue/compiler-sfc": "^3.3.4", 29 | "npm-run-all": "^4.1.5", 30 | "typescript": "^4.9.3", 31 | "vite": "^2.9.16" 32 | }, 33 | "prettier": { 34 | "singleQuote": false, 35 | "semi": true 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Auth0 Samples 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. -------------------------------------------------------------------------------- /01-Login/src/main.ts: -------------------------------------------------------------------------------- 1 | import App from "./App.vue"; 2 | import { createApp } from "vue"; 3 | import { createRouter } from "./router"; 4 | import { createAuth0 } from "@auth0/auth0-vue"; 5 | import { library } from "@fortawesome/fontawesome-svg-core"; 6 | import { faLink, faUser, faPowerOff } from "@fortawesome/free-solid-svg-icons"; 7 | import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; 8 | import authConfig from "../auth_config.json"; 9 | import hljs from 'highlight.js/lib/core'; 10 | import json from 'highlight.js/lib/languages/json'; 11 | import hljsVuePlugin from "@highlightjs/vue-plugin"; 12 | import "highlight.js/styles/github.css"; 13 | 14 | hljs.registerLanguage('json', json); 15 | 16 | const app = createApp(App); 17 | 18 | library.add(faLink, faUser, faPowerOff); 19 | 20 | app 21 | .use(hljsVuePlugin) 22 | .use(createRouter(app)) 23 | .use( 24 | createAuth0({ 25 | domain: authConfig.domain, 26 | clientId: authConfig.clientId, 27 | authorizationParams: { 28 | redirect_uri: window.location.origin, 29 | } 30 | }) 31 | ) 32 | .component("font-awesome-icon", FontAwesomeIcon) 33 | .mount("#app"); 34 | -------------------------------------------------------------------------------- /02-Calling-an-API/web-server.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const morgan = require("morgan"); 3 | const cors = require("cors"); 4 | const { auth } = require("express-oauth2-jwt-bearer"); 5 | const { join } = require("path"); 6 | const authConfig = require("./auth_config.json"); 7 | 8 | const app = express(); 9 | 10 | if (!authConfig.domain || !authConfig.authorizationParams.audience) { 11 | throw "Please make sure that auth_config.json is in place and populated"; 12 | } 13 | 14 | app.use(morgan("dev")); 15 | app.use(cors()); 16 | app.use(express.static(join(__dirname, "dist"))); 17 | 18 | const checkJwt = auth({ 19 | audience: authConfig.authorizationParams.audience, 20 | issuerBaseURL: `https://${authConfig.domain}`, 21 | }); 22 | 23 | app.get("/api/external", checkJwt, (req, res) => { 24 | res.send({ 25 | msg: "Your access token was successfully validated!" 26 | }); 27 | }); 28 | 29 | if (process.env.NODE_ENV === "production") { 30 | app.use((_, res) => { 31 | res.sendFile(join(__dirname, "dist", "index.html")); 32 | }); 33 | } 34 | const port = process.env.NODE_ENV === "production" ? 3000 : 3001; 35 | app.listen(port, () => console.log(`Server listening on port ${port}`)); -------------------------------------------------------------------------------- /02-Calling-an-API/src/main.ts: -------------------------------------------------------------------------------- 1 | import App from "./App.vue"; 2 | import { createApp } from "vue"; 3 | import { createRouter } from "./router"; 4 | import { createAuth0 } from "@auth0/auth0-vue"; 5 | import { library } from "@fortawesome/fontawesome-svg-core"; 6 | import { faLink, faUser, faPowerOff } from "@fortawesome/free-solid-svg-icons"; 7 | import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; 8 | import authConfig from "../auth_config.json"; 9 | import hljs from 'highlight.js/lib/core'; 10 | import json from 'highlight.js/lib/languages/json'; 11 | import hljsVuePlugin from "@highlightjs/vue-plugin"; 12 | import "highlight.js/styles/github.css"; 13 | 14 | hljs.registerLanguage('json', json); 15 | 16 | const app = createApp(App); 17 | 18 | library.add(faLink, faUser, faPowerOff); 19 | 20 | app 21 | .use(hljsVuePlugin) 22 | .use(createRouter(app)) 23 | .use( 24 | createAuth0({ 25 | domain: authConfig.domain, 26 | clientId: authConfig.clientId, 27 | authorizationParams: { 28 | redirect_uri: window.location.origin, 29 | audience: authConfig.authorizationParams.audience, 30 | } 31 | }) 32 | ) 33 | .component("font-awesome-icon", FontAwesomeIcon) 34 | .mount("#app"); 35 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/views/ExternalApi.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | -------------------------------------------------------------------------------- /01-Login/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 01-login 9 | 10 | 16 | 20 | 21 | 22 | 28 |
29 | 30 | 35 | 40 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /02-Calling-an-API/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 02 - Calling an API 9 | 10 | 16 | 20 | 21 | 22 | 28 |
29 | 30 | 31 | 36 | 41 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /01-Login/loading.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02-Calling-an-API/loading.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01-Login/src/assets/loading.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Feature Request.yml: -------------------------------------------------------------------------------- 1 | name: 🧩 Feature request 2 | description: Suggest an idea or a feature for this sample 3 | labels: ["feature request"] 4 | 5 | body: 6 | - type: checkboxes 7 | id: checklist 8 | attributes: 9 | label: Checklist 10 | options: 11 | - label: I have looked into the Readme ([Login](https://github.com/auth0-samples/auth0-vue-samples/tree/master/01-Login#readme)/[Calling an API](https://github.com/auth0-samples/auth0-vue-samples/tree/master/02-Calling-an-API#readme)) and have not found a suitable solution or answer. 12 | required: true 13 | - label: I have searched the [issues](https://github.com/auth0-samples/auth0-vue-samples/issues) and have not found a suitable solution or answer. 14 | required: true 15 | - label: I have searched the [Auth0 Community](https://community.auth0.com) forums and have not found a suitable solution or answer. 16 | required: true 17 | - label: I agree to the terms within the [Auth0 Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md). 18 | required: true 19 | 20 | - type: textarea 21 | id: description 22 | attributes: 23 | label: Describe the problem you'd like to have solved 24 | description: A clear and concise description of what the problem is. 25 | validations: 26 | required: true 27 | 28 | - type: textarea 29 | id: ideal-solution 30 | attributes: 31 | label: Describe the ideal solution 32 | description: A clear and concise description of what you want to happen. 33 | validations: 34 | required: true 35 | 36 | - type: textarea 37 | id: alternatives-and-workarounds 38 | attributes: 39 | label: Alternatives and current workarounds 40 | description: A clear and concise description of any alternatives you've considered or any workarounds that are currently in place. 41 | validations: 42 | required: false 43 | 44 | - type: textarea 45 | id: additional-context 46 | attributes: 47 | label: Additional context 48 | description: Add any other context or screenshots about the feature request here. 49 | validations: 50 | required: false 51 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/assets/loading.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01-Login/src/components/HomeContent.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 56 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/components/HomeContent.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Auth0 Vue.js Samples 2 | 3 | [![CircleCI](https://circleci.com/gh/auth0-samples/auth0-vue-samples.svg?style=svg)](https://circleci.com/gh/auth0-samples/auth0-vue-samples) 4 | 5 | This is the sample code for the [Auth0 Vue.js Quickstart](https://auth0.com/docs/quickstart/spa/vuejs) using [@auth0/auth0-vue](https://github.com/auth0/auth0-vue). 6 | 7 | There are two sample applications: 8 | 9 | - [01 - Login](./01-Login) — demonstrates logging in and viewing profile information 10 | - [02 - Calling an API](./02-Calling-an-API) — demonstrates how to call a third-party API using access tokens 11 | 12 | ## What is Auth0? 13 | 14 | Auth0 helps you to: 15 | 16 | - Add authentication with [multiple authentication sources](https://auth0.com/docs/connections), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce, among others**, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**. 17 | - Add authentication through more traditional **[username/password databases](https://auth0.com/docs/connections/database)**. 18 | - Add support for **[linking different user accounts](https://auth0.com/docs/users/user-account-linking)** with the same user. 19 | - Support for generating signed [Json Web Tokens](https://auth0.com/docs/security/tokens/json-web-tokens) to call your APIs and **flow the user identity** securely. 20 | - Analytics of how, when and where users are logging in. 21 | - Pull data from other sources and add it to the user profile, through [JavaScript rules](https://auth0.com/docs/rules). 22 | 23 | ## Create a Free Auth0 Account 24 | 25 | 1. Go to [Auth0](https://auth0.com/signup) and click Sign Up. 26 | 2. Use Google, GitHub or Microsoft Account to login. 27 | 28 | ## Issue Reporting 29 | 30 | If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues. 31 | 32 | ## Author 33 | 34 | [Auth0](https://auth0.com) 35 | 36 | ## Deploy to Netlify 37 | You can deploy this example as a site on your own to explore and experiment with, by clicking this button. 38 | After deploy, install Auth0 by Okta extension in Netlify and follow the steps to create an App. 39 | 40 | Deploy to Netlify 41 | 42 | ## License 43 | 44 | This project is licensed under the MIT license. See the [LICENSE](./LICENSE) file for more info. 45 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Bug Report.yml: -------------------------------------------------------------------------------- 1 | name: 🐞 Report a bug 2 | description: Have you found a bug or issue? Create a bug report for this sample 3 | 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | **Please do not report security vulnerabilities here**. The [Responsible Disclosure Program](https://auth0.com/responsible-disclosure-policy) details the procedure for disclosing security issues. 9 | 10 | - type: checkboxes 11 | id: checklist 12 | attributes: 13 | label: Checklist 14 | options: 15 | - label: I have looked into the Readme ([Login](https://github.com/auth0-samples/auth0-vue-samples/tree/master/01-Login#readme)/[Calling an API](https://github.com/auth0-samples/auth0-vue-samples/tree/master/02-Calling-an-API#readme)) and have not found a suitable solution or answer. 16 | required: true 17 | - label: I have searched the [issues](https://github.com/auth0-samples/auth0-vue-samples/issues) and have not found a suitable solution or answer. 18 | required: true 19 | - label: I have searched the [Auth0 Community](https://community.auth0.com) forums and have not found a suitable solution or answer. 20 | required: true 21 | - label: I agree to the terms within the [Auth0 Code of Conduct](https://github.com/auth0/open-source-template/blob/master/CODE-OF-CONDUCT.md). 22 | required: true 23 | 24 | - type: textarea 25 | id: description 26 | attributes: 27 | label: Description 28 | description: Provide a clear and concise description of the issue, including what you expected to happen. 29 | validations: 30 | required: true 31 | 32 | - type: textarea 33 | id: reproduction 34 | attributes: 35 | label: Reproduction 36 | description: Detail the steps taken to reproduce this error, and whether this issue can be reproduced consistently or if it is intermittent. 37 | placeholder: | 38 | 1. Step 1... 39 | 2. Step 2... 40 | 3. ... 41 | validations: 42 | required: true 43 | 44 | - type: textarea 45 | id: additional-context 46 | attributes: 47 | label: Additional context 48 | description: Any other relevant information you think would be useful. 49 | validations: 50 | required: false 51 | 52 | - type: dropdown 53 | id: environment-sample 54 | attributes: 55 | label: Sample 56 | multiple: false 57 | options: 58 | - Login 59 | - Calling an API 60 | validations: 61 | required: true 62 | 63 | - type: dropdown 64 | id: environment-browser 65 | attributes: 66 | label: Which browsers have you tested in? 67 | multiple: true 68 | options: 69 | - Chrome 70 | - Edge 71 | - Safari 72 | - Firefox 73 | - Opera 74 | - Other 75 | validations: 76 | required: true 77 | -------------------------------------------------------------------------------- /01-Login/README.md: -------------------------------------------------------------------------------- 1 | # Scenario #1 - Logging In and Gated Content 2 | 3 | This sample demonstrates: 4 | 5 | - Logging in to Auth0 using Redirect Mode 6 | - Accessing profile information that has been provided in the ID token 7 | - Gated content. The `/profile` route is not accessible without having first logged in 8 | 9 | ## Project setup 10 | 11 | ```bash 12 | npm install 13 | ``` 14 | 15 | ### Configuration 16 | 17 | The project needs to be configured with your Auth0 domain and client ID in order for the authentication flow to work. 18 | 19 | To do this, first copy `auth_config.json.example` into a new file in the same folder called `auth_config.json`, and replace the values within with your own Auth0 application credentials: 20 | 21 | ```json 22 | { 23 | "domain": "", 24 | "clientId": "" 25 | } 26 | ``` 27 | 28 | ### Compiles and hot-reloads for development 29 | 30 | ```bash 31 | npm run serve 32 | ``` 33 | 34 | ## Deployment 35 | 36 | ### Compiles and minifies for production 37 | 38 | ```bash 39 | npm run build 40 | ``` 41 | 42 | ### Docker build 43 | 44 | To build and run the Docker image, run `exec.sh`, or `exec.ps1` on Windows. 45 | 46 | ### Lints and fixes files 47 | 48 | ```bash 49 | npm run lint 50 | ``` 51 | 52 | ## What is Auth0? 53 | 54 | Auth0 helps you to: 55 | 56 | - Add authentication with [multiple authentication sources](https://docs.auth0.com/identityproviders), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce, among others**, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**. 57 | - Add authentication through more traditional **[username/password databases](https://docs.auth0.com/mysql-connection-tutorial)**. 58 | - Add support for **[linking different user accounts](https://docs.auth0.com/link-accounts)** with the same user. 59 | - Support for generating signed [Json Web Tokens](https://docs.auth0.com/jwt) to call your APIs and **flow the user identity** securely. 60 | - Analytics of how, when and where users are logging in. 61 | - Pull data from other sources and add it to the user profile, through [JavaScript rules](https://docs.auth0.com/rules). 62 | 63 | ## Create a Free Auth0 Account 64 | 65 | 1. Go to [Auth0](https://auth0.com/signup) and click Sign Up. 66 | 2. Use Google, GitHub or Microsoft Account to login. 67 | 68 | ## Issue Reporting 69 | 70 | If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues. 71 | 72 | ## Author 73 | 74 | [Auth0](https://auth0.com) 75 | 76 | ## License 77 | 78 | This project is licensed under the MIT license. See the [LICENSE](../LICENSE) file for more info. 79 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # Environment variables to be defined in the build configuration: 2 | # AUTH0_TEST_CLIENT_ID = Client id to use in test 3 | # AUTH0_TEST_DOMAIN = Domain to use in test 4 | # AUTH0_TEST_AUDIENCE = API Audience to use in test 5 | 6 | # Common logic 7 | defaults: &defaults 8 | steps: 9 | - attach_workspace: 10 | at: ~/ 11 | - run: 12 | name: Replace Auth0 test credentials 13 | command: | 14 | echo "{ \"domain\": \"$AUTH0_TEST_DOMAIN\", \"clientId\": \"$AUTH0_TEST_CLIENT_ID\", \"authorizationParams\": { \"audience\": \"$AUTH0_TEST_AUDIENCE\" } }" > $AUTH0_CFG 15 | 16 | - run: 17 | name: Build pull request 18 | command: | 19 | docker build -t $CIRCLE_JOB ./$SAMPLE_PATH 20 | docker run -d -p 3000:3000 --name $CIRCLE_SHA1 $CIRCLE_JOB 21 | - run: 22 | name: Wait for app to be available 23 | command: | 24 | sleep 10 25 | docker run --network host --rm appropriate/curl --retry 8 --retry-connrefused -v localhost:3000 26 | - run: 27 | name: Run tests 28 | command: | 29 | docker create --network host --name tester codeceptjs/codeceptjs codeceptjs run-multiple --all --steps --verbose 30 | docker cp $(pwd)/lock_login_spa_test.js tester:/tests/lock_login_test.js 31 | docker cp $(pwd)/codecept.conf.js tester:/tests/codecept.conf.js 32 | docker start -i tester 33 | working_directory: scripts 34 | - run: 35 | name: Copy app container logs 36 | command: | 37 | mkdir -p /tmp/out 38 | docker logs $CIRCLE_SHA1 > /tmp/out/app_logs.log 39 | docker cp tester:/tests/out /tmp/ 40 | when: on_fail 41 | - store_artifacts: 42 | path: /tmp/out 43 | 44 | # Jobs and Workflows 45 | version: 2.1 46 | parameters: 47 | machine_image: 48 | type: string 49 | default: ubuntu-2004:202201-02 50 | jobs: 51 | checkout: 52 | machine: 53 | image: << pipeline.parameters.machine_image >> 54 | steps: 55 | - checkout 56 | - run: git clone https://github.com/auth0-samples/spa-quickstarts-tests scripts 57 | - persist_to_workspace: 58 | root: ~/ 59 | paths: 60 | - project 61 | - scripts 62 | login: 63 | machine: 64 | image: << pipeline.parameters.machine_image >> 65 | environment: 66 | - AUTH0_CFG: 01-Login/auth_config.json 67 | - SAMPLE_PATH: 01-Login 68 | <<: *defaults 69 | 70 | api: 71 | machine: 72 | image: << pipeline.parameters.machine_image >> 73 | environment: 74 | - AUTH0_CFG: 02-Calling-an-API/auth_config.json 75 | - SAMPLE_PATH: 02-Calling-an-API 76 | <<: *defaults 77 | 78 | workflows: 79 | version: 2 80 | quickstarts_login: 81 | jobs: 82 | - checkout: 83 | context: Quickstart SPA Test 84 | - login: 85 | context: Quickstart SPA Test 86 | requires: 87 | - checkout 88 | 89 | - api: 90 | context: Quickstart SPA Test 91 | requires: 92 | - checkout 93 | -------------------------------------------------------------------------------- /02-Calling-an-API/README.md: -------------------------------------------------------------------------------- 1 | # Scenario #2 - Calling an External API 2 | 3 | For this scenario, an API endpoint `/api/external` has been included in the Express server that requires a bearer token to be supplied as a bearer token in the `Authorization` header (as provided during the authentication flow). This uses the [`express-oauth2-jwt-bearer`](https://github.com/auth0/node-oauth2-jwt-bearer) middleware to validate the token against the identifier of your API as set up in the Auth0 dashboard, as well as checking that the signature is valid. 4 | 5 | ## Project setup 6 | 7 | ```bash 8 | npm install 9 | ``` 10 | 11 | ### Configuration 12 | 13 | The project needs to be configured with your Auth0 domain and client ID in order for the authentication flow to work. When calling an external API, ensure to also set the `audience` to the value of your Auth0 API identifier. 14 | 15 | To do this, first copy `auth_config.sample.json` into a new file in the same folder called `auth_config.json`, and replace the values within with your own Auth0 application credentials: 16 | 17 | ```json 18 | { 19 | "domain": "", 20 | "clientId": "", 21 | "audience": "" 22 | } 23 | ``` 24 | 25 | ### Running in development 26 | 27 | This compiles and serves the Vue app, and starts the backend API server on port 3001: 28 | 29 | ```bash 30 | npm run serve 31 | ``` 32 | 33 | ## Deployment 34 | 35 | ### Compiles and minifies for production 36 | 37 | ```bash 38 | npm run build 39 | ``` 40 | 41 | ### Docker build 42 | 43 | To build the Docker image run `exec.sh`, or `exec.ps1` on Windows. 44 | 45 | ### Lints and fixes files 46 | 47 | ```bash 48 | npm run lint 49 | ``` 50 | 51 | ## What is Auth0? 52 | 53 | Auth0 helps you to: 54 | 55 | - Add authentication with [multiple authentication sources](https://docs.auth0.com/identityproviders), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce, among others**, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**. 56 | - Add authentication through more traditional **[username/password databases](https://docs.auth0.com/mysql-connection-tutorial)**. 57 | - Add support for **[linking different user accounts](https://docs.auth0.com/link-accounts)** with the same user. 58 | - Support for generating signed [Json Web Tokens](https://docs.auth0.com/jwt) to call your APIs and **flow the user identity** securely. 59 | - Analytics of how, when and where users are logging in. 60 | - Pull data from other sources and add it to the user profile, through [JavaScript rules](https://docs.auth0.com/rules). 61 | 62 | ## Create a Free Auth0 Account 63 | 64 | 1. Go to [Auth0](https://auth0.com/signup) and click Sign Up. 65 | 2. Use Google, GitHub or Microsoft Account to login. 66 | 67 | ## Issue Reporting 68 | 69 | If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues. 70 | 71 | ## Author 72 | 73 | [Auth0](https://auth0.com) 74 | 75 | ## License 76 | 77 | This project is licensed under the MIT license. See the [LICENSE](../LICENSE) file for more info. -------------------------------------------------------------------------------- /01-Login/src/components/NavBar.vue: -------------------------------------------------------------------------------- 1 | 94 | 95 | 121 | 122 | 128 | -------------------------------------------------------------------------------- /02-Calling-an-API/src/components/NavBar.vue: -------------------------------------------------------------------------------- 1 | 98 | 99 | 125 | 126 | 132 | -------------------------------------------------------------------------------- /01-Login/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "01-login", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "01-login", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "@auth0/auth0-vue": "^2.3.0", 12 | "@fortawesome/fontawesome-svg-core": "^6.5.0", 13 | "@fortawesome/free-solid-svg-icons": "^6.5.0", 14 | "@fortawesome/vue-fontawesome": "^3.0.1", 15 | "@highlightjs/vue-plugin": "^2.1.0", 16 | "express": "^4.18.1", 17 | "highlight.js": "^11.9.0", 18 | "morgan": "^1.10.0", 19 | "vue": "^3.3.4", 20 | "vue-router": "^4.2.1" 21 | }, 22 | "devDependencies": { 23 | "@vitejs/plugin-vue": "^1.6.1", 24 | "@vue/compiler-sfc": "^3.3.4", 25 | "typescript": "^4.9.3", 26 | "vite": "^2.9.16" 27 | } 28 | }, 29 | "node_modules/@auth0/auth0-spa-js": { 30 | "version": "2.1.1", 31 | "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-2.1.1.tgz", 32 | "integrity": "sha512-21qEf5Bjouy76CWd1gQgf/tT6iD513YFYaK0+3OF1nbwLtPFpxm5Ln94M7SCVFKfe5jbchWuEcIb1HLer3r6RA==" 33 | }, 34 | "node_modules/@auth0/auth0-vue": { 35 | "version": "2.3.0", 36 | "resolved": "https://registry.npmjs.org/@auth0/auth0-vue/-/auth0-vue-2.3.0.tgz", 37 | "integrity": "sha512-qg+Cmoem/MOpXfR4cdBdvvqukzzjh3mIO7hcBlmjJdjORiSKvHhCmgO4FVx0IVeFPpI4RLGvD1uR7DWT31h1bg==", 38 | "dependencies": { 39 | "@auth0/auth0-spa-js": "^2.1.1", 40 | "vue": "^3.2.41" 41 | }, 42 | "peerDependencies": { 43 | "vue-router": "^4.0.12" 44 | }, 45 | "peerDependenciesMeta": { 46 | "vue-router": { 47 | "optional": true 48 | } 49 | } 50 | }, 51 | "node_modules/@babel/parser": { 52 | "version": "7.21.9", 53 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz", 54 | "integrity": "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==", 55 | "bin": { 56 | "parser": "bin/babel-parser.js" 57 | }, 58 | "engines": { 59 | "node": ">=6.0.0" 60 | } 61 | }, 62 | "node_modules/@esbuild/linux-loong64": { 63 | "version": "0.14.54", 64 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", 65 | "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", 66 | "cpu": [ 67 | "loong64" 68 | ], 69 | "dev": true, 70 | "optional": true, 71 | "os": [ 72 | "linux" 73 | ], 74 | "engines": { 75 | "node": ">=12" 76 | } 77 | }, 78 | "node_modules/@fortawesome/fontawesome-common-types": { 79 | "version": "6.5.0", 80 | "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.0.tgz", 81 | "integrity": "sha512-vYC8oN2l8meu05sRi1j3Iie/HNFAeIxpitYFhsUrBc11TxiMken9QdXnSQ0q16FYsOSt/6soxs5ghdk+VYGiog==", 82 | "hasInstallScript": true, 83 | "engines": { 84 | "node": ">=6" 85 | } 86 | }, 87 | "node_modules/@fortawesome/fontawesome-svg-core": { 88 | "version": "6.5.0", 89 | "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.0.tgz", 90 | "integrity": "sha512-5DrR+oxQr+ruRQ3CEVV8DSCT/q8Atm56+FzAs0P6eW/epW47OmecSpSwc/YTlJ3u5BfPKUBSGyPR2qjZ+5eIgA==", 91 | "hasInstallScript": true, 92 | "dependencies": { 93 | "@fortawesome/fontawesome-common-types": "6.5.0" 94 | }, 95 | "engines": { 96 | "node": ">=6" 97 | } 98 | }, 99 | "node_modules/@fortawesome/free-solid-svg-icons": { 100 | "version": "6.5.0", 101 | "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.0.tgz", 102 | "integrity": "sha512-6ZPq8mme67Q7O9Fbp2O+Z7mPZbcWTsRv555JLftLaTodiV0Wq+99YgMhyQ8O6mgNQfComqS9OEvqs7M8ySA92g==", 103 | "hasInstallScript": true, 104 | "dependencies": { 105 | "@fortawesome/fontawesome-common-types": "6.5.0" 106 | }, 107 | "engines": { 108 | "node": ">=6" 109 | } 110 | }, 111 | "node_modules/@fortawesome/vue-fontawesome": { 112 | "version": "3.0.2", 113 | "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz", 114 | "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==", 115 | "peerDependencies": { 116 | "@fortawesome/fontawesome-svg-core": "~1 || ~6", 117 | "vue": ">= 3.0.0 < 4" 118 | } 119 | }, 120 | "node_modules/@highlightjs/vue-plugin": { 121 | "version": "2.1.0", 122 | "resolved": "https://registry.npmjs.org/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz", 123 | "integrity": "sha512-E+bmk4ncca+hBEYRV2a+1aIzIV0VSY/e5ArjpuSN9IO7wBJrzUE2u4ESCwrbQD7sAy+jWQjkV5qCCWgc+pu7CQ==", 124 | "peerDependencies": { 125 | "highlight.js": "^11.0.1", 126 | "vue": "^3" 127 | } 128 | }, 129 | "node_modules/@jridgewell/sourcemap-codec": { 130 | "version": "1.4.15", 131 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 132 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" 133 | }, 134 | "node_modules/@vitejs/plugin-vue": { 135 | "version": "1.10.2", 136 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.10.2.tgz", 137 | "integrity": "sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==", 138 | "dev": true, 139 | "engines": { 140 | "node": ">=12.0.0" 141 | }, 142 | "peerDependencies": { 143 | "vite": "^2.5.10" 144 | } 145 | }, 146 | "node_modules/@vue/compiler-core": { 147 | "version": "3.3.4", 148 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", 149 | "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", 150 | "dependencies": { 151 | "@babel/parser": "^7.21.3", 152 | "@vue/shared": "3.3.4", 153 | "estree-walker": "^2.0.2", 154 | "source-map-js": "^1.0.2" 155 | } 156 | }, 157 | "node_modules/@vue/compiler-dom": { 158 | "version": "3.3.4", 159 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", 160 | "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", 161 | "dependencies": { 162 | "@vue/compiler-core": "3.3.4", 163 | "@vue/shared": "3.3.4" 164 | } 165 | }, 166 | "node_modules/@vue/compiler-sfc": { 167 | "version": "3.3.4", 168 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", 169 | "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", 170 | "dependencies": { 171 | "@babel/parser": "^7.20.15", 172 | "@vue/compiler-core": "3.3.4", 173 | "@vue/compiler-dom": "3.3.4", 174 | "@vue/compiler-ssr": "3.3.4", 175 | "@vue/reactivity-transform": "3.3.4", 176 | "@vue/shared": "3.3.4", 177 | "estree-walker": "^2.0.2", 178 | "magic-string": "^0.30.0", 179 | "postcss": "^8.1.10", 180 | "source-map-js": "^1.0.2" 181 | } 182 | }, 183 | "node_modules/@vue/compiler-ssr": { 184 | "version": "3.3.4", 185 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", 186 | "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", 187 | "dependencies": { 188 | "@vue/compiler-dom": "3.3.4", 189 | "@vue/shared": "3.3.4" 190 | } 191 | }, 192 | "node_modules/@vue/devtools-api": { 193 | "version": "6.5.0", 194 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", 195 | "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" 196 | }, 197 | "node_modules/@vue/reactivity": { 198 | "version": "3.3.4", 199 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", 200 | "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", 201 | "dependencies": { 202 | "@vue/shared": "3.3.4" 203 | } 204 | }, 205 | "node_modules/@vue/reactivity-transform": { 206 | "version": "3.3.4", 207 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", 208 | "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", 209 | "dependencies": { 210 | "@babel/parser": "^7.20.15", 211 | "@vue/compiler-core": "3.3.4", 212 | "@vue/shared": "3.3.4", 213 | "estree-walker": "^2.0.2", 214 | "magic-string": "^0.30.0" 215 | } 216 | }, 217 | "node_modules/@vue/runtime-core": { 218 | "version": "3.3.4", 219 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", 220 | "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", 221 | "dependencies": { 222 | "@vue/reactivity": "3.3.4", 223 | "@vue/shared": "3.3.4" 224 | } 225 | }, 226 | "node_modules/@vue/runtime-dom": { 227 | "version": "3.3.4", 228 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", 229 | "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", 230 | "dependencies": { 231 | "@vue/runtime-core": "3.3.4", 232 | "@vue/shared": "3.3.4", 233 | "csstype": "^3.1.1" 234 | } 235 | }, 236 | "node_modules/@vue/server-renderer": { 237 | "version": "3.3.4", 238 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", 239 | "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", 240 | "dependencies": { 241 | "@vue/compiler-ssr": "3.3.4", 242 | "@vue/shared": "3.3.4" 243 | }, 244 | "peerDependencies": { 245 | "vue": "3.3.4" 246 | } 247 | }, 248 | "node_modules/@vue/shared": { 249 | "version": "3.3.4", 250 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", 251 | "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" 252 | }, 253 | "node_modules/accepts": { 254 | "version": "1.3.8", 255 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 256 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 257 | "dependencies": { 258 | "mime-types": "~2.1.34", 259 | "negotiator": "0.6.3" 260 | }, 261 | "engines": { 262 | "node": ">= 0.6" 263 | } 264 | }, 265 | "node_modules/array-flatten": { 266 | "version": "1.1.1", 267 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 268 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 269 | }, 270 | "node_modules/basic-auth": { 271 | "version": "2.0.1", 272 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 273 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 274 | "dependencies": { 275 | "safe-buffer": "5.1.2" 276 | }, 277 | "engines": { 278 | "node": ">= 0.8" 279 | } 280 | }, 281 | "node_modules/basic-auth/node_modules/safe-buffer": { 282 | "version": "5.1.2", 283 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 284 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 285 | }, 286 | "node_modules/body-parser": { 287 | "version": "1.20.1", 288 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 289 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 290 | "dependencies": { 291 | "bytes": "3.1.2", 292 | "content-type": "~1.0.4", 293 | "debug": "2.6.9", 294 | "depd": "2.0.0", 295 | "destroy": "1.2.0", 296 | "http-errors": "2.0.0", 297 | "iconv-lite": "0.4.24", 298 | "on-finished": "2.4.1", 299 | "qs": "6.11.0", 300 | "raw-body": "2.5.1", 301 | "type-is": "~1.6.18", 302 | "unpipe": "1.0.0" 303 | }, 304 | "engines": { 305 | "node": ">= 0.8", 306 | "npm": "1.2.8000 || >= 1.4.16" 307 | } 308 | }, 309 | "node_modules/bytes": { 310 | "version": "3.1.2", 311 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 312 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 313 | "engines": { 314 | "node": ">= 0.8" 315 | } 316 | }, 317 | "node_modules/call-bind": { 318 | "version": "1.0.2", 319 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 320 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 321 | "dependencies": { 322 | "function-bind": "^1.1.1", 323 | "get-intrinsic": "^1.0.2" 324 | }, 325 | "funding": { 326 | "url": "https://github.com/sponsors/ljharb" 327 | } 328 | }, 329 | "node_modules/content-disposition": { 330 | "version": "0.5.4", 331 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 332 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 333 | "dependencies": { 334 | "safe-buffer": "5.2.1" 335 | }, 336 | "engines": { 337 | "node": ">= 0.6" 338 | } 339 | }, 340 | "node_modules/content-type": { 341 | "version": "1.0.4", 342 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 343 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 344 | "engines": { 345 | "node": ">= 0.6" 346 | } 347 | }, 348 | "node_modules/cookie": { 349 | "version": "0.5.0", 350 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 351 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 352 | "engines": { 353 | "node": ">= 0.6" 354 | } 355 | }, 356 | "node_modules/cookie-signature": { 357 | "version": "1.0.6", 358 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 359 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 360 | }, 361 | "node_modules/csstype": { 362 | "version": "3.1.2", 363 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", 364 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 365 | }, 366 | "node_modules/debug": { 367 | "version": "2.6.9", 368 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 369 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 370 | "dependencies": { 371 | "ms": "2.0.0" 372 | } 373 | }, 374 | "node_modules/depd": { 375 | "version": "2.0.0", 376 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 377 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 378 | "engines": { 379 | "node": ">= 0.8" 380 | } 381 | }, 382 | "node_modules/destroy": { 383 | "version": "1.2.0", 384 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 385 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 386 | "engines": { 387 | "node": ">= 0.8", 388 | "npm": "1.2.8000 || >= 1.4.16" 389 | } 390 | }, 391 | "node_modules/ee-first": { 392 | "version": "1.1.1", 393 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 394 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 395 | }, 396 | "node_modules/encodeurl": { 397 | "version": "1.0.2", 398 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 399 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 400 | "engines": { 401 | "node": ">= 0.8" 402 | } 403 | }, 404 | "node_modules/esbuild": { 405 | "version": "0.14.54", 406 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", 407 | "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", 408 | "dev": true, 409 | "hasInstallScript": true, 410 | "bin": { 411 | "esbuild": "bin/esbuild" 412 | }, 413 | "engines": { 414 | "node": ">=12" 415 | }, 416 | "optionalDependencies": { 417 | "@esbuild/linux-loong64": "0.14.54", 418 | "esbuild-android-64": "0.14.54", 419 | "esbuild-android-arm64": "0.14.54", 420 | "esbuild-darwin-64": "0.14.54", 421 | "esbuild-darwin-arm64": "0.14.54", 422 | "esbuild-freebsd-64": "0.14.54", 423 | "esbuild-freebsd-arm64": "0.14.54", 424 | "esbuild-linux-32": "0.14.54", 425 | "esbuild-linux-64": "0.14.54", 426 | "esbuild-linux-arm": "0.14.54", 427 | "esbuild-linux-arm64": "0.14.54", 428 | "esbuild-linux-mips64le": "0.14.54", 429 | "esbuild-linux-ppc64le": "0.14.54", 430 | "esbuild-linux-riscv64": "0.14.54", 431 | "esbuild-linux-s390x": "0.14.54", 432 | "esbuild-netbsd-64": "0.14.54", 433 | "esbuild-openbsd-64": "0.14.54", 434 | "esbuild-sunos-64": "0.14.54", 435 | "esbuild-windows-32": "0.14.54", 436 | "esbuild-windows-64": "0.14.54", 437 | "esbuild-windows-arm64": "0.14.54" 438 | } 439 | }, 440 | "node_modules/esbuild-android-64": { 441 | "version": "0.14.54", 442 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", 443 | "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", 444 | "cpu": [ 445 | "x64" 446 | ], 447 | "dev": true, 448 | "optional": true, 449 | "os": [ 450 | "android" 451 | ], 452 | "engines": { 453 | "node": ">=12" 454 | } 455 | }, 456 | "node_modules/esbuild-android-arm64": { 457 | "version": "0.14.54", 458 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", 459 | "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", 460 | "cpu": [ 461 | "arm64" 462 | ], 463 | "dev": true, 464 | "optional": true, 465 | "os": [ 466 | "android" 467 | ], 468 | "engines": { 469 | "node": ">=12" 470 | } 471 | }, 472 | "node_modules/esbuild-darwin-64": { 473 | "version": "0.14.54", 474 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", 475 | "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", 476 | "cpu": [ 477 | "x64" 478 | ], 479 | "dev": true, 480 | "optional": true, 481 | "os": [ 482 | "darwin" 483 | ], 484 | "engines": { 485 | "node": ">=12" 486 | } 487 | }, 488 | "node_modules/esbuild-darwin-arm64": { 489 | "version": "0.14.54", 490 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", 491 | "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", 492 | "cpu": [ 493 | "arm64" 494 | ], 495 | "dev": true, 496 | "optional": true, 497 | "os": [ 498 | "darwin" 499 | ], 500 | "engines": { 501 | "node": ">=12" 502 | } 503 | }, 504 | "node_modules/esbuild-freebsd-64": { 505 | "version": "0.14.54", 506 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", 507 | "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", 508 | "cpu": [ 509 | "x64" 510 | ], 511 | "dev": true, 512 | "optional": true, 513 | "os": [ 514 | "freebsd" 515 | ], 516 | "engines": { 517 | "node": ">=12" 518 | } 519 | }, 520 | "node_modules/esbuild-freebsd-arm64": { 521 | "version": "0.14.54", 522 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", 523 | "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", 524 | "cpu": [ 525 | "arm64" 526 | ], 527 | "dev": true, 528 | "optional": true, 529 | "os": [ 530 | "freebsd" 531 | ], 532 | "engines": { 533 | "node": ">=12" 534 | } 535 | }, 536 | "node_modules/esbuild-linux-32": { 537 | "version": "0.14.54", 538 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", 539 | "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", 540 | "cpu": [ 541 | "ia32" 542 | ], 543 | "dev": true, 544 | "optional": true, 545 | "os": [ 546 | "linux" 547 | ], 548 | "engines": { 549 | "node": ">=12" 550 | } 551 | }, 552 | "node_modules/esbuild-linux-64": { 553 | "version": "0.14.54", 554 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", 555 | "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", 556 | "cpu": [ 557 | "x64" 558 | ], 559 | "dev": true, 560 | "optional": true, 561 | "os": [ 562 | "linux" 563 | ], 564 | "engines": { 565 | "node": ">=12" 566 | } 567 | }, 568 | "node_modules/esbuild-linux-arm": { 569 | "version": "0.14.54", 570 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", 571 | "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", 572 | "cpu": [ 573 | "arm" 574 | ], 575 | "dev": true, 576 | "optional": true, 577 | "os": [ 578 | "linux" 579 | ], 580 | "engines": { 581 | "node": ">=12" 582 | } 583 | }, 584 | "node_modules/esbuild-linux-arm64": { 585 | "version": "0.14.54", 586 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", 587 | "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", 588 | "cpu": [ 589 | "arm64" 590 | ], 591 | "dev": true, 592 | "optional": true, 593 | "os": [ 594 | "linux" 595 | ], 596 | "engines": { 597 | "node": ">=12" 598 | } 599 | }, 600 | "node_modules/esbuild-linux-mips64le": { 601 | "version": "0.14.54", 602 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", 603 | "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", 604 | "cpu": [ 605 | "mips64el" 606 | ], 607 | "dev": true, 608 | "optional": true, 609 | "os": [ 610 | "linux" 611 | ], 612 | "engines": { 613 | "node": ">=12" 614 | } 615 | }, 616 | "node_modules/esbuild-linux-ppc64le": { 617 | "version": "0.14.54", 618 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", 619 | "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", 620 | "cpu": [ 621 | "ppc64" 622 | ], 623 | "dev": true, 624 | "optional": true, 625 | "os": [ 626 | "linux" 627 | ], 628 | "engines": { 629 | "node": ">=12" 630 | } 631 | }, 632 | "node_modules/esbuild-linux-riscv64": { 633 | "version": "0.14.54", 634 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", 635 | "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", 636 | "cpu": [ 637 | "riscv64" 638 | ], 639 | "dev": true, 640 | "optional": true, 641 | "os": [ 642 | "linux" 643 | ], 644 | "engines": { 645 | "node": ">=12" 646 | } 647 | }, 648 | "node_modules/esbuild-linux-s390x": { 649 | "version": "0.14.54", 650 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", 651 | "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", 652 | "cpu": [ 653 | "s390x" 654 | ], 655 | "dev": true, 656 | "optional": true, 657 | "os": [ 658 | "linux" 659 | ], 660 | "engines": { 661 | "node": ">=12" 662 | } 663 | }, 664 | "node_modules/esbuild-netbsd-64": { 665 | "version": "0.14.54", 666 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", 667 | "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", 668 | "cpu": [ 669 | "x64" 670 | ], 671 | "dev": true, 672 | "optional": true, 673 | "os": [ 674 | "netbsd" 675 | ], 676 | "engines": { 677 | "node": ">=12" 678 | } 679 | }, 680 | "node_modules/esbuild-openbsd-64": { 681 | "version": "0.14.54", 682 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", 683 | "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", 684 | "cpu": [ 685 | "x64" 686 | ], 687 | "dev": true, 688 | "optional": true, 689 | "os": [ 690 | "openbsd" 691 | ], 692 | "engines": { 693 | "node": ">=12" 694 | } 695 | }, 696 | "node_modules/esbuild-sunos-64": { 697 | "version": "0.14.54", 698 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", 699 | "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", 700 | "cpu": [ 701 | "x64" 702 | ], 703 | "dev": true, 704 | "optional": true, 705 | "os": [ 706 | "sunos" 707 | ], 708 | "engines": { 709 | "node": ">=12" 710 | } 711 | }, 712 | "node_modules/esbuild-windows-32": { 713 | "version": "0.14.54", 714 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", 715 | "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", 716 | "cpu": [ 717 | "ia32" 718 | ], 719 | "dev": true, 720 | "optional": true, 721 | "os": [ 722 | "win32" 723 | ], 724 | "engines": { 725 | "node": ">=12" 726 | } 727 | }, 728 | "node_modules/esbuild-windows-64": { 729 | "version": "0.14.54", 730 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", 731 | "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", 732 | "cpu": [ 733 | "x64" 734 | ], 735 | "dev": true, 736 | "optional": true, 737 | "os": [ 738 | "win32" 739 | ], 740 | "engines": { 741 | "node": ">=12" 742 | } 743 | }, 744 | "node_modules/esbuild-windows-arm64": { 745 | "version": "0.14.54", 746 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", 747 | "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", 748 | "cpu": [ 749 | "arm64" 750 | ], 751 | "dev": true, 752 | "optional": true, 753 | "os": [ 754 | "win32" 755 | ], 756 | "engines": { 757 | "node": ">=12" 758 | } 759 | }, 760 | "node_modules/escape-html": { 761 | "version": "1.0.3", 762 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 763 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 764 | }, 765 | "node_modules/estree-walker": { 766 | "version": "2.0.2", 767 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 768 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 769 | }, 770 | "node_modules/etag": { 771 | "version": "1.8.1", 772 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 773 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 774 | "engines": { 775 | "node": ">= 0.6" 776 | } 777 | }, 778 | "node_modules/express": { 779 | "version": "4.18.2", 780 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 781 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 782 | "dependencies": { 783 | "accepts": "~1.3.8", 784 | "array-flatten": "1.1.1", 785 | "body-parser": "1.20.1", 786 | "content-disposition": "0.5.4", 787 | "content-type": "~1.0.4", 788 | "cookie": "0.5.0", 789 | "cookie-signature": "1.0.6", 790 | "debug": "2.6.9", 791 | "depd": "2.0.0", 792 | "encodeurl": "~1.0.2", 793 | "escape-html": "~1.0.3", 794 | "etag": "~1.8.1", 795 | "finalhandler": "1.2.0", 796 | "fresh": "0.5.2", 797 | "http-errors": "2.0.0", 798 | "merge-descriptors": "1.0.1", 799 | "methods": "~1.1.2", 800 | "on-finished": "2.4.1", 801 | "parseurl": "~1.3.3", 802 | "path-to-regexp": "0.1.7", 803 | "proxy-addr": "~2.0.7", 804 | "qs": "6.11.0", 805 | "range-parser": "~1.2.1", 806 | "safe-buffer": "5.2.1", 807 | "send": "0.18.0", 808 | "serve-static": "1.15.0", 809 | "setprototypeof": "1.2.0", 810 | "statuses": "2.0.1", 811 | "type-is": "~1.6.18", 812 | "utils-merge": "1.0.1", 813 | "vary": "~1.1.2" 814 | }, 815 | "engines": { 816 | "node": ">= 0.10.0" 817 | } 818 | }, 819 | "node_modules/finalhandler": { 820 | "version": "1.2.0", 821 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 822 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 823 | "dependencies": { 824 | "debug": "2.6.9", 825 | "encodeurl": "~1.0.2", 826 | "escape-html": "~1.0.3", 827 | "on-finished": "2.4.1", 828 | "parseurl": "~1.3.3", 829 | "statuses": "2.0.1", 830 | "unpipe": "~1.0.0" 831 | }, 832 | "engines": { 833 | "node": ">= 0.8" 834 | } 835 | }, 836 | "node_modules/forwarded": { 837 | "version": "0.2.0", 838 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 839 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 840 | "engines": { 841 | "node": ">= 0.6" 842 | } 843 | }, 844 | "node_modules/fresh": { 845 | "version": "0.5.2", 846 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 847 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 848 | "engines": { 849 | "node": ">= 0.6" 850 | } 851 | }, 852 | "node_modules/fsevents": { 853 | "version": "2.3.2", 854 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 855 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 856 | "dev": true, 857 | "hasInstallScript": true, 858 | "optional": true, 859 | "os": [ 860 | "darwin" 861 | ], 862 | "engines": { 863 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 864 | } 865 | }, 866 | "node_modules/function-bind": { 867 | "version": "1.1.1", 868 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 869 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 870 | }, 871 | "node_modules/get-intrinsic": { 872 | "version": "1.1.3", 873 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 874 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 875 | "dependencies": { 876 | "function-bind": "^1.1.1", 877 | "has": "^1.0.3", 878 | "has-symbols": "^1.0.3" 879 | }, 880 | "funding": { 881 | "url": "https://github.com/sponsors/ljharb" 882 | } 883 | }, 884 | "node_modules/has": { 885 | "version": "1.0.3", 886 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 887 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 888 | "dependencies": { 889 | "function-bind": "^1.1.1" 890 | }, 891 | "engines": { 892 | "node": ">= 0.4.0" 893 | } 894 | }, 895 | "node_modules/has-symbols": { 896 | "version": "1.0.3", 897 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 898 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 899 | "engines": { 900 | "node": ">= 0.4" 901 | }, 902 | "funding": { 903 | "url": "https://github.com/sponsors/ljharb" 904 | } 905 | }, 906 | "node_modules/highlight.js": { 907 | "version": "11.9.0", 908 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", 909 | "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", 910 | "engines": { 911 | "node": ">=12.0.0" 912 | } 913 | }, 914 | "node_modules/http-errors": { 915 | "version": "2.0.0", 916 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 917 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 918 | "dependencies": { 919 | "depd": "2.0.0", 920 | "inherits": "2.0.4", 921 | "setprototypeof": "1.2.0", 922 | "statuses": "2.0.1", 923 | "toidentifier": "1.0.1" 924 | }, 925 | "engines": { 926 | "node": ">= 0.8" 927 | } 928 | }, 929 | "node_modules/iconv-lite": { 930 | "version": "0.4.24", 931 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 932 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 933 | "dependencies": { 934 | "safer-buffer": ">= 2.1.2 < 3" 935 | }, 936 | "engines": { 937 | "node": ">=0.10.0" 938 | } 939 | }, 940 | "node_modules/inherits": { 941 | "version": "2.0.4", 942 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 943 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 944 | }, 945 | "node_modules/ipaddr.js": { 946 | "version": "1.9.1", 947 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 948 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 949 | "engines": { 950 | "node": ">= 0.10" 951 | } 952 | }, 953 | "node_modules/is-core-module": { 954 | "version": "2.11.0", 955 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 956 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 957 | "dev": true, 958 | "dependencies": { 959 | "has": "^1.0.3" 960 | }, 961 | "funding": { 962 | "url": "https://github.com/sponsors/ljharb" 963 | } 964 | }, 965 | "node_modules/magic-string": { 966 | "version": "0.30.0", 967 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", 968 | "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", 969 | "dependencies": { 970 | "@jridgewell/sourcemap-codec": "^1.4.13" 971 | }, 972 | "engines": { 973 | "node": ">=12" 974 | } 975 | }, 976 | "node_modules/media-typer": { 977 | "version": "0.3.0", 978 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 979 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 980 | "engines": { 981 | "node": ">= 0.6" 982 | } 983 | }, 984 | "node_modules/merge-descriptors": { 985 | "version": "1.0.1", 986 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 987 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 988 | }, 989 | "node_modules/methods": { 990 | "version": "1.1.2", 991 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 992 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 993 | "engines": { 994 | "node": ">= 0.6" 995 | } 996 | }, 997 | "node_modules/mime": { 998 | "version": "1.6.0", 999 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1000 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1001 | "bin": { 1002 | "mime": "cli.js" 1003 | }, 1004 | "engines": { 1005 | "node": ">=4" 1006 | } 1007 | }, 1008 | "node_modules/mime-db": { 1009 | "version": "1.52.0", 1010 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1011 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1012 | "engines": { 1013 | "node": ">= 0.6" 1014 | } 1015 | }, 1016 | "node_modules/mime-types": { 1017 | "version": "2.1.35", 1018 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1019 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1020 | "dependencies": { 1021 | "mime-db": "1.52.0" 1022 | }, 1023 | "engines": { 1024 | "node": ">= 0.6" 1025 | } 1026 | }, 1027 | "node_modules/morgan": { 1028 | "version": "1.10.0", 1029 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", 1030 | "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", 1031 | "dependencies": { 1032 | "basic-auth": "~2.0.1", 1033 | "debug": "2.6.9", 1034 | "depd": "~2.0.0", 1035 | "on-finished": "~2.3.0", 1036 | "on-headers": "~1.0.2" 1037 | }, 1038 | "engines": { 1039 | "node": ">= 0.8.0" 1040 | } 1041 | }, 1042 | "node_modules/morgan/node_modules/on-finished": { 1043 | "version": "2.3.0", 1044 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1045 | "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", 1046 | "dependencies": { 1047 | "ee-first": "1.1.1" 1048 | }, 1049 | "engines": { 1050 | "node": ">= 0.8" 1051 | } 1052 | }, 1053 | "node_modules/ms": { 1054 | "version": "2.0.0", 1055 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1056 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1057 | }, 1058 | "node_modules/nanoid": { 1059 | "version": "3.3.6", 1060 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 1061 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 1062 | "funding": [ 1063 | { 1064 | "type": "github", 1065 | "url": "https://github.com/sponsors/ai" 1066 | } 1067 | ], 1068 | "bin": { 1069 | "nanoid": "bin/nanoid.cjs" 1070 | }, 1071 | "engines": { 1072 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1073 | } 1074 | }, 1075 | "node_modules/negotiator": { 1076 | "version": "0.6.3", 1077 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1078 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 1079 | "engines": { 1080 | "node": ">= 0.6" 1081 | } 1082 | }, 1083 | "node_modules/object-inspect": { 1084 | "version": "1.12.2", 1085 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1086 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 1087 | "funding": { 1088 | "url": "https://github.com/sponsors/ljharb" 1089 | } 1090 | }, 1091 | "node_modules/on-finished": { 1092 | "version": "2.4.1", 1093 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1094 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1095 | "dependencies": { 1096 | "ee-first": "1.1.1" 1097 | }, 1098 | "engines": { 1099 | "node": ">= 0.8" 1100 | } 1101 | }, 1102 | "node_modules/on-headers": { 1103 | "version": "1.0.2", 1104 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 1105 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", 1106 | "engines": { 1107 | "node": ">= 0.8" 1108 | } 1109 | }, 1110 | "node_modules/parseurl": { 1111 | "version": "1.3.3", 1112 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1113 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1114 | "engines": { 1115 | "node": ">= 0.8" 1116 | } 1117 | }, 1118 | "node_modules/path-parse": { 1119 | "version": "1.0.7", 1120 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1121 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1122 | "dev": true 1123 | }, 1124 | "node_modules/path-to-regexp": { 1125 | "version": "0.1.7", 1126 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1127 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 1128 | }, 1129 | "node_modules/picocolors": { 1130 | "version": "1.0.0", 1131 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1132 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1133 | }, 1134 | "node_modules/postcss": { 1135 | "version": "8.4.31", 1136 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", 1137 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 1138 | "funding": [ 1139 | { 1140 | "type": "opencollective", 1141 | "url": "https://opencollective.com/postcss/" 1142 | }, 1143 | { 1144 | "type": "tidelift", 1145 | "url": "https://tidelift.com/funding/github/npm/postcss" 1146 | }, 1147 | { 1148 | "type": "github", 1149 | "url": "https://github.com/sponsors/ai" 1150 | } 1151 | ], 1152 | "dependencies": { 1153 | "nanoid": "^3.3.6", 1154 | "picocolors": "^1.0.0", 1155 | "source-map-js": "^1.0.2" 1156 | }, 1157 | "engines": { 1158 | "node": "^10 || ^12 || >=14" 1159 | } 1160 | }, 1161 | "node_modules/proxy-addr": { 1162 | "version": "2.0.7", 1163 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1164 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1165 | "dependencies": { 1166 | "forwarded": "0.2.0", 1167 | "ipaddr.js": "1.9.1" 1168 | }, 1169 | "engines": { 1170 | "node": ">= 0.10" 1171 | } 1172 | }, 1173 | "node_modules/qs": { 1174 | "version": "6.11.0", 1175 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1176 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1177 | "dependencies": { 1178 | "side-channel": "^1.0.4" 1179 | }, 1180 | "engines": { 1181 | "node": ">=0.6" 1182 | }, 1183 | "funding": { 1184 | "url": "https://github.com/sponsors/ljharb" 1185 | } 1186 | }, 1187 | "node_modules/range-parser": { 1188 | "version": "1.2.1", 1189 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1190 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1191 | "engines": { 1192 | "node": ">= 0.6" 1193 | } 1194 | }, 1195 | "node_modules/raw-body": { 1196 | "version": "2.5.1", 1197 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1198 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1199 | "dependencies": { 1200 | "bytes": "3.1.2", 1201 | "http-errors": "2.0.0", 1202 | "iconv-lite": "0.4.24", 1203 | "unpipe": "1.0.0" 1204 | }, 1205 | "engines": { 1206 | "node": ">= 0.8" 1207 | } 1208 | }, 1209 | "node_modules/resolve": { 1210 | "version": "1.22.1", 1211 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1212 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1213 | "dev": true, 1214 | "dependencies": { 1215 | "is-core-module": "^2.9.0", 1216 | "path-parse": "^1.0.7", 1217 | "supports-preserve-symlinks-flag": "^1.0.0" 1218 | }, 1219 | "bin": { 1220 | "resolve": "bin/resolve" 1221 | }, 1222 | "funding": { 1223 | "url": "https://github.com/sponsors/ljharb" 1224 | } 1225 | }, 1226 | "node_modules/rollup": { 1227 | "version": "2.77.3", 1228 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", 1229 | "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", 1230 | "dev": true, 1231 | "bin": { 1232 | "rollup": "dist/bin/rollup" 1233 | }, 1234 | "engines": { 1235 | "node": ">=10.0.0" 1236 | }, 1237 | "optionalDependencies": { 1238 | "fsevents": "~2.3.2" 1239 | } 1240 | }, 1241 | "node_modules/safe-buffer": { 1242 | "version": "5.2.1", 1243 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1244 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1245 | "funding": [ 1246 | { 1247 | "type": "github", 1248 | "url": "https://github.com/sponsors/feross" 1249 | }, 1250 | { 1251 | "type": "patreon", 1252 | "url": "https://www.patreon.com/feross" 1253 | }, 1254 | { 1255 | "type": "consulting", 1256 | "url": "https://feross.org/support" 1257 | } 1258 | ] 1259 | }, 1260 | "node_modules/safer-buffer": { 1261 | "version": "2.1.2", 1262 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1263 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1264 | }, 1265 | "node_modules/send": { 1266 | "version": "0.18.0", 1267 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1268 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1269 | "dependencies": { 1270 | "debug": "2.6.9", 1271 | "depd": "2.0.0", 1272 | "destroy": "1.2.0", 1273 | "encodeurl": "~1.0.2", 1274 | "escape-html": "~1.0.3", 1275 | "etag": "~1.8.1", 1276 | "fresh": "0.5.2", 1277 | "http-errors": "2.0.0", 1278 | "mime": "1.6.0", 1279 | "ms": "2.1.3", 1280 | "on-finished": "2.4.1", 1281 | "range-parser": "~1.2.1", 1282 | "statuses": "2.0.1" 1283 | }, 1284 | "engines": { 1285 | "node": ">= 0.8.0" 1286 | } 1287 | }, 1288 | "node_modules/send/node_modules/ms": { 1289 | "version": "2.1.3", 1290 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1291 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1292 | }, 1293 | "node_modules/serve-static": { 1294 | "version": "1.15.0", 1295 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1296 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1297 | "dependencies": { 1298 | "encodeurl": "~1.0.2", 1299 | "escape-html": "~1.0.3", 1300 | "parseurl": "~1.3.3", 1301 | "send": "0.18.0" 1302 | }, 1303 | "engines": { 1304 | "node": ">= 0.8.0" 1305 | } 1306 | }, 1307 | "node_modules/setprototypeof": { 1308 | "version": "1.2.0", 1309 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1310 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1311 | }, 1312 | "node_modules/side-channel": { 1313 | "version": "1.0.4", 1314 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1315 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1316 | "dependencies": { 1317 | "call-bind": "^1.0.0", 1318 | "get-intrinsic": "^1.0.2", 1319 | "object-inspect": "^1.9.0" 1320 | }, 1321 | "funding": { 1322 | "url": "https://github.com/sponsors/ljharb" 1323 | } 1324 | }, 1325 | "node_modules/source-map-js": { 1326 | "version": "1.0.2", 1327 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1328 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1329 | "engines": { 1330 | "node": ">=0.10.0" 1331 | } 1332 | }, 1333 | "node_modules/statuses": { 1334 | "version": "2.0.1", 1335 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1336 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 1337 | "engines": { 1338 | "node": ">= 0.8" 1339 | } 1340 | }, 1341 | "node_modules/supports-preserve-symlinks-flag": { 1342 | "version": "1.0.0", 1343 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1344 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1345 | "dev": true, 1346 | "engines": { 1347 | "node": ">= 0.4" 1348 | }, 1349 | "funding": { 1350 | "url": "https://github.com/sponsors/ljharb" 1351 | } 1352 | }, 1353 | "node_modules/toidentifier": { 1354 | "version": "1.0.1", 1355 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1356 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1357 | "engines": { 1358 | "node": ">=0.6" 1359 | } 1360 | }, 1361 | "node_modules/type-is": { 1362 | "version": "1.6.18", 1363 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1364 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1365 | "dependencies": { 1366 | "media-typer": "0.3.0", 1367 | "mime-types": "~2.1.24" 1368 | }, 1369 | "engines": { 1370 | "node": ">= 0.6" 1371 | } 1372 | }, 1373 | "node_modules/typescript": { 1374 | "version": "4.9.3", 1375 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", 1376 | "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", 1377 | "dev": true, 1378 | "bin": { 1379 | "tsc": "bin/tsc", 1380 | "tsserver": "bin/tsserver" 1381 | }, 1382 | "engines": { 1383 | "node": ">=4.2.0" 1384 | } 1385 | }, 1386 | "node_modules/unpipe": { 1387 | "version": "1.0.0", 1388 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1389 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 1390 | "engines": { 1391 | "node": ">= 0.8" 1392 | } 1393 | }, 1394 | "node_modules/utils-merge": { 1395 | "version": "1.0.1", 1396 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1397 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 1398 | "engines": { 1399 | "node": ">= 0.4.0" 1400 | } 1401 | }, 1402 | "node_modules/vary": { 1403 | "version": "1.1.2", 1404 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1405 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 1406 | "engines": { 1407 | "node": ">= 0.8" 1408 | } 1409 | }, 1410 | "node_modules/vite": { 1411 | "version": "2.9.16", 1412 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", 1413 | "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", 1414 | "dev": true, 1415 | "dependencies": { 1416 | "esbuild": "^0.14.27", 1417 | "postcss": "^8.4.13", 1418 | "resolve": "^1.22.0", 1419 | "rollup": ">=2.59.0 <2.78.0" 1420 | }, 1421 | "bin": { 1422 | "vite": "bin/vite.js" 1423 | }, 1424 | "engines": { 1425 | "node": ">=12.2.0" 1426 | }, 1427 | "optionalDependencies": { 1428 | "fsevents": "~2.3.2" 1429 | }, 1430 | "peerDependencies": { 1431 | "less": "*", 1432 | "sass": "*", 1433 | "stylus": "*" 1434 | }, 1435 | "peerDependenciesMeta": { 1436 | "less": { 1437 | "optional": true 1438 | }, 1439 | "sass": { 1440 | "optional": true 1441 | }, 1442 | "stylus": { 1443 | "optional": true 1444 | } 1445 | } 1446 | }, 1447 | "node_modules/vue": { 1448 | "version": "3.3.4", 1449 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", 1450 | "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", 1451 | "dependencies": { 1452 | "@vue/compiler-dom": "3.3.4", 1453 | "@vue/compiler-sfc": "3.3.4", 1454 | "@vue/runtime-dom": "3.3.4", 1455 | "@vue/server-renderer": "3.3.4", 1456 | "@vue/shared": "3.3.4" 1457 | } 1458 | }, 1459 | "node_modules/vue-router": { 1460 | "version": "4.2.1", 1461 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.1.tgz", 1462 | "integrity": "sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==", 1463 | "dependencies": { 1464 | "@vue/devtools-api": "^6.5.0" 1465 | }, 1466 | "funding": { 1467 | "url": "https://github.com/sponsors/posva" 1468 | }, 1469 | "peerDependencies": { 1470 | "vue": "^3.2.0" 1471 | } 1472 | } 1473 | }, 1474 | "dependencies": { 1475 | "@auth0/auth0-spa-js": { 1476 | "version": "2.1.1", 1477 | "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-2.1.1.tgz", 1478 | "integrity": "sha512-21qEf5Bjouy76CWd1gQgf/tT6iD513YFYaK0+3OF1nbwLtPFpxm5Ln94M7SCVFKfe5jbchWuEcIb1HLer3r6RA==" 1479 | }, 1480 | "@auth0/auth0-vue": { 1481 | "version": "2.3.0", 1482 | "resolved": "https://registry.npmjs.org/@auth0/auth0-vue/-/auth0-vue-2.3.0.tgz", 1483 | "integrity": "sha512-qg+Cmoem/MOpXfR4cdBdvvqukzzjh3mIO7hcBlmjJdjORiSKvHhCmgO4FVx0IVeFPpI4RLGvD1uR7DWT31h1bg==", 1484 | "requires": { 1485 | "@auth0/auth0-spa-js": "^2.1.1", 1486 | "vue": "^3.2.41" 1487 | } 1488 | }, 1489 | "@babel/parser": { 1490 | "version": "7.21.9", 1491 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz", 1492 | "integrity": "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==" 1493 | }, 1494 | "@esbuild/linux-loong64": { 1495 | "version": "0.14.54", 1496 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", 1497 | "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", 1498 | "dev": true, 1499 | "optional": true 1500 | }, 1501 | "@fortawesome/fontawesome-common-types": { 1502 | "version": "6.5.0", 1503 | "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.0.tgz", 1504 | "integrity": "sha512-vYC8oN2l8meu05sRi1j3Iie/HNFAeIxpitYFhsUrBc11TxiMken9QdXnSQ0q16FYsOSt/6soxs5ghdk+VYGiog==" 1505 | }, 1506 | "@fortawesome/fontawesome-svg-core": { 1507 | "version": "6.5.0", 1508 | "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.0.tgz", 1509 | "integrity": "sha512-5DrR+oxQr+ruRQ3CEVV8DSCT/q8Atm56+FzAs0P6eW/epW47OmecSpSwc/YTlJ3u5BfPKUBSGyPR2qjZ+5eIgA==", 1510 | "requires": { 1511 | "@fortawesome/fontawesome-common-types": "6.5.0" 1512 | } 1513 | }, 1514 | "@fortawesome/free-solid-svg-icons": { 1515 | "version": "6.5.0", 1516 | "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.0.tgz", 1517 | "integrity": "sha512-6ZPq8mme67Q7O9Fbp2O+Z7mPZbcWTsRv555JLftLaTodiV0Wq+99YgMhyQ8O6mgNQfComqS9OEvqs7M8ySA92g==", 1518 | "requires": { 1519 | "@fortawesome/fontawesome-common-types": "6.5.0" 1520 | } 1521 | }, 1522 | "@fortawesome/vue-fontawesome": { 1523 | "version": "3.0.2", 1524 | "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz", 1525 | "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==", 1526 | "requires": {} 1527 | }, 1528 | "@highlightjs/vue-plugin": { 1529 | "version": "2.1.0", 1530 | "resolved": "https://registry.npmjs.org/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz", 1531 | "integrity": "sha512-E+bmk4ncca+hBEYRV2a+1aIzIV0VSY/e5ArjpuSN9IO7wBJrzUE2u4ESCwrbQD7sAy+jWQjkV5qCCWgc+pu7CQ==", 1532 | "requires": {} 1533 | }, 1534 | "@jridgewell/sourcemap-codec": { 1535 | "version": "1.4.15", 1536 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 1537 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" 1538 | }, 1539 | "@vitejs/plugin-vue": { 1540 | "version": "1.10.2", 1541 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.10.2.tgz", 1542 | "integrity": "sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==", 1543 | "dev": true, 1544 | "requires": {} 1545 | }, 1546 | "@vue/compiler-core": { 1547 | "version": "3.3.4", 1548 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", 1549 | "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", 1550 | "requires": { 1551 | "@babel/parser": "^7.21.3", 1552 | "@vue/shared": "3.3.4", 1553 | "estree-walker": "^2.0.2", 1554 | "source-map-js": "^1.0.2" 1555 | } 1556 | }, 1557 | "@vue/compiler-dom": { 1558 | "version": "3.3.4", 1559 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", 1560 | "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", 1561 | "requires": { 1562 | "@vue/compiler-core": "3.3.4", 1563 | "@vue/shared": "3.3.4" 1564 | } 1565 | }, 1566 | "@vue/compiler-sfc": { 1567 | "version": "3.3.4", 1568 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", 1569 | "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", 1570 | "requires": { 1571 | "@babel/parser": "^7.20.15", 1572 | "@vue/compiler-core": "3.3.4", 1573 | "@vue/compiler-dom": "3.3.4", 1574 | "@vue/compiler-ssr": "3.3.4", 1575 | "@vue/reactivity-transform": "3.3.4", 1576 | "@vue/shared": "3.3.4", 1577 | "estree-walker": "^2.0.2", 1578 | "magic-string": "^0.30.0", 1579 | "postcss": "^8.1.10", 1580 | "source-map-js": "^1.0.2" 1581 | } 1582 | }, 1583 | "@vue/compiler-ssr": { 1584 | "version": "3.3.4", 1585 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", 1586 | "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", 1587 | "requires": { 1588 | "@vue/compiler-dom": "3.3.4", 1589 | "@vue/shared": "3.3.4" 1590 | } 1591 | }, 1592 | "@vue/devtools-api": { 1593 | "version": "6.5.0", 1594 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", 1595 | "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" 1596 | }, 1597 | "@vue/reactivity": { 1598 | "version": "3.3.4", 1599 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", 1600 | "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", 1601 | "requires": { 1602 | "@vue/shared": "3.3.4" 1603 | } 1604 | }, 1605 | "@vue/reactivity-transform": { 1606 | "version": "3.3.4", 1607 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", 1608 | "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", 1609 | "requires": { 1610 | "@babel/parser": "^7.20.15", 1611 | "@vue/compiler-core": "3.3.4", 1612 | "@vue/shared": "3.3.4", 1613 | "estree-walker": "^2.0.2", 1614 | "magic-string": "^0.30.0" 1615 | } 1616 | }, 1617 | "@vue/runtime-core": { 1618 | "version": "3.3.4", 1619 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", 1620 | "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", 1621 | "requires": { 1622 | "@vue/reactivity": "3.3.4", 1623 | "@vue/shared": "3.3.4" 1624 | } 1625 | }, 1626 | "@vue/runtime-dom": { 1627 | "version": "3.3.4", 1628 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", 1629 | "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", 1630 | "requires": { 1631 | "@vue/runtime-core": "3.3.4", 1632 | "@vue/shared": "3.3.4", 1633 | "csstype": "^3.1.1" 1634 | } 1635 | }, 1636 | "@vue/server-renderer": { 1637 | "version": "3.3.4", 1638 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", 1639 | "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", 1640 | "requires": { 1641 | "@vue/compiler-ssr": "3.3.4", 1642 | "@vue/shared": "3.3.4" 1643 | } 1644 | }, 1645 | "@vue/shared": { 1646 | "version": "3.3.4", 1647 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", 1648 | "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" 1649 | }, 1650 | "accepts": { 1651 | "version": "1.3.8", 1652 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1653 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1654 | "requires": { 1655 | "mime-types": "~2.1.34", 1656 | "negotiator": "0.6.3" 1657 | } 1658 | }, 1659 | "array-flatten": { 1660 | "version": "1.1.1", 1661 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1662 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 1663 | }, 1664 | "basic-auth": { 1665 | "version": "2.0.1", 1666 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 1667 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 1668 | "requires": { 1669 | "safe-buffer": "5.1.2" 1670 | }, 1671 | "dependencies": { 1672 | "safe-buffer": { 1673 | "version": "5.1.2", 1674 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1675 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1676 | } 1677 | } 1678 | }, 1679 | "body-parser": { 1680 | "version": "1.20.1", 1681 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 1682 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 1683 | "requires": { 1684 | "bytes": "3.1.2", 1685 | "content-type": "~1.0.4", 1686 | "debug": "2.6.9", 1687 | "depd": "2.0.0", 1688 | "destroy": "1.2.0", 1689 | "http-errors": "2.0.0", 1690 | "iconv-lite": "0.4.24", 1691 | "on-finished": "2.4.1", 1692 | "qs": "6.11.0", 1693 | "raw-body": "2.5.1", 1694 | "type-is": "~1.6.18", 1695 | "unpipe": "1.0.0" 1696 | } 1697 | }, 1698 | "bytes": { 1699 | "version": "3.1.2", 1700 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1701 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 1702 | }, 1703 | "call-bind": { 1704 | "version": "1.0.2", 1705 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1706 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1707 | "requires": { 1708 | "function-bind": "^1.1.1", 1709 | "get-intrinsic": "^1.0.2" 1710 | } 1711 | }, 1712 | "content-disposition": { 1713 | "version": "0.5.4", 1714 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1715 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1716 | "requires": { 1717 | "safe-buffer": "5.2.1" 1718 | } 1719 | }, 1720 | "content-type": { 1721 | "version": "1.0.4", 1722 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1723 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 1724 | }, 1725 | "cookie": { 1726 | "version": "0.5.0", 1727 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1728 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 1729 | }, 1730 | "cookie-signature": { 1731 | "version": "1.0.6", 1732 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1733 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 1734 | }, 1735 | "csstype": { 1736 | "version": "3.1.2", 1737 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", 1738 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 1739 | }, 1740 | "debug": { 1741 | "version": "2.6.9", 1742 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1743 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1744 | "requires": { 1745 | "ms": "2.0.0" 1746 | } 1747 | }, 1748 | "depd": { 1749 | "version": "2.0.0", 1750 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1751 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1752 | }, 1753 | "destroy": { 1754 | "version": "1.2.0", 1755 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1756 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1757 | }, 1758 | "ee-first": { 1759 | "version": "1.1.1", 1760 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1761 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1762 | }, 1763 | "encodeurl": { 1764 | "version": "1.0.2", 1765 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1766 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 1767 | }, 1768 | "esbuild": { 1769 | "version": "0.14.54", 1770 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", 1771 | "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", 1772 | "dev": true, 1773 | "requires": { 1774 | "@esbuild/linux-loong64": "0.14.54", 1775 | "esbuild-android-64": "0.14.54", 1776 | "esbuild-android-arm64": "0.14.54", 1777 | "esbuild-darwin-64": "0.14.54", 1778 | "esbuild-darwin-arm64": "0.14.54", 1779 | "esbuild-freebsd-64": "0.14.54", 1780 | "esbuild-freebsd-arm64": "0.14.54", 1781 | "esbuild-linux-32": "0.14.54", 1782 | "esbuild-linux-64": "0.14.54", 1783 | "esbuild-linux-arm": "0.14.54", 1784 | "esbuild-linux-arm64": "0.14.54", 1785 | "esbuild-linux-mips64le": "0.14.54", 1786 | "esbuild-linux-ppc64le": "0.14.54", 1787 | "esbuild-linux-riscv64": "0.14.54", 1788 | "esbuild-linux-s390x": "0.14.54", 1789 | "esbuild-netbsd-64": "0.14.54", 1790 | "esbuild-openbsd-64": "0.14.54", 1791 | "esbuild-sunos-64": "0.14.54", 1792 | "esbuild-windows-32": "0.14.54", 1793 | "esbuild-windows-64": "0.14.54", 1794 | "esbuild-windows-arm64": "0.14.54" 1795 | } 1796 | }, 1797 | "esbuild-android-64": { 1798 | "version": "0.14.54", 1799 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", 1800 | "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", 1801 | "dev": true, 1802 | "optional": true 1803 | }, 1804 | "esbuild-android-arm64": { 1805 | "version": "0.14.54", 1806 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", 1807 | "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", 1808 | "dev": true, 1809 | "optional": true 1810 | }, 1811 | "esbuild-darwin-64": { 1812 | "version": "0.14.54", 1813 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", 1814 | "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", 1815 | "dev": true, 1816 | "optional": true 1817 | }, 1818 | "esbuild-darwin-arm64": { 1819 | "version": "0.14.54", 1820 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", 1821 | "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", 1822 | "dev": true, 1823 | "optional": true 1824 | }, 1825 | "esbuild-freebsd-64": { 1826 | "version": "0.14.54", 1827 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", 1828 | "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", 1829 | "dev": true, 1830 | "optional": true 1831 | }, 1832 | "esbuild-freebsd-arm64": { 1833 | "version": "0.14.54", 1834 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", 1835 | "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", 1836 | "dev": true, 1837 | "optional": true 1838 | }, 1839 | "esbuild-linux-32": { 1840 | "version": "0.14.54", 1841 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", 1842 | "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", 1843 | "dev": true, 1844 | "optional": true 1845 | }, 1846 | "esbuild-linux-64": { 1847 | "version": "0.14.54", 1848 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", 1849 | "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", 1850 | "dev": true, 1851 | "optional": true 1852 | }, 1853 | "esbuild-linux-arm": { 1854 | "version": "0.14.54", 1855 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", 1856 | "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", 1857 | "dev": true, 1858 | "optional": true 1859 | }, 1860 | "esbuild-linux-arm64": { 1861 | "version": "0.14.54", 1862 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", 1863 | "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", 1864 | "dev": true, 1865 | "optional": true 1866 | }, 1867 | "esbuild-linux-mips64le": { 1868 | "version": "0.14.54", 1869 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", 1870 | "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", 1871 | "dev": true, 1872 | "optional": true 1873 | }, 1874 | "esbuild-linux-ppc64le": { 1875 | "version": "0.14.54", 1876 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", 1877 | "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", 1878 | "dev": true, 1879 | "optional": true 1880 | }, 1881 | "esbuild-linux-riscv64": { 1882 | "version": "0.14.54", 1883 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", 1884 | "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", 1885 | "dev": true, 1886 | "optional": true 1887 | }, 1888 | "esbuild-linux-s390x": { 1889 | "version": "0.14.54", 1890 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", 1891 | "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", 1892 | "dev": true, 1893 | "optional": true 1894 | }, 1895 | "esbuild-netbsd-64": { 1896 | "version": "0.14.54", 1897 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", 1898 | "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", 1899 | "dev": true, 1900 | "optional": true 1901 | }, 1902 | "esbuild-openbsd-64": { 1903 | "version": "0.14.54", 1904 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", 1905 | "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", 1906 | "dev": true, 1907 | "optional": true 1908 | }, 1909 | "esbuild-sunos-64": { 1910 | "version": "0.14.54", 1911 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", 1912 | "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", 1913 | "dev": true, 1914 | "optional": true 1915 | }, 1916 | "esbuild-windows-32": { 1917 | "version": "0.14.54", 1918 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", 1919 | "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", 1920 | "dev": true, 1921 | "optional": true 1922 | }, 1923 | "esbuild-windows-64": { 1924 | "version": "0.14.54", 1925 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", 1926 | "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", 1927 | "dev": true, 1928 | "optional": true 1929 | }, 1930 | "esbuild-windows-arm64": { 1931 | "version": "0.14.54", 1932 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", 1933 | "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", 1934 | "dev": true, 1935 | "optional": true 1936 | }, 1937 | "escape-html": { 1938 | "version": "1.0.3", 1939 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1940 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1941 | }, 1942 | "estree-walker": { 1943 | "version": "2.0.2", 1944 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1945 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1946 | }, 1947 | "etag": { 1948 | "version": "1.8.1", 1949 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1950 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 1951 | }, 1952 | "express": { 1953 | "version": "4.18.2", 1954 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 1955 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 1956 | "requires": { 1957 | "accepts": "~1.3.8", 1958 | "array-flatten": "1.1.1", 1959 | "body-parser": "1.20.1", 1960 | "content-disposition": "0.5.4", 1961 | "content-type": "~1.0.4", 1962 | "cookie": "0.5.0", 1963 | "cookie-signature": "1.0.6", 1964 | "debug": "2.6.9", 1965 | "depd": "2.0.0", 1966 | "encodeurl": "~1.0.2", 1967 | "escape-html": "~1.0.3", 1968 | "etag": "~1.8.1", 1969 | "finalhandler": "1.2.0", 1970 | "fresh": "0.5.2", 1971 | "http-errors": "2.0.0", 1972 | "merge-descriptors": "1.0.1", 1973 | "methods": "~1.1.2", 1974 | "on-finished": "2.4.1", 1975 | "parseurl": "~1.3.3", 1976 | "path-to-regexp": "0.1.7", 1977 | "proxy-addr": "~2.0.7", 1978 | "qs": "6.11.0", 1979 | "range-parser": "~1.2.1", 1980 | "safe-buffer": "5.2.1", 1981 | "send": "0.18.0", 1982 | "serve-static": "1.15.0", 1983 | "setprototypeof": "1.2.0", 1984 | "statuses": "2.0.1", 1985 | "type-is": "~1.6.18", 1986 | "utils-merge": "1.0.1", 1987 | "vary": "~1.1.2" 1988 | } 1989 | }, 1990 | "finalhandler": { 1991 | "version": "1.2.0", 1992 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 1993 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 1994 | "requires": { 1995 | "debug": "2.6.9", 1996 | "encodeurl": "~1.0.2", 1997 | "escape-html": "~1.0.3", 1998 | "on-finished": "2.4.1", 1999 | "parseurl": "~1.3.3", 2000 | "statuses": "2.0.1", 2001 | "unpipe": "~1.0.0" 2002 | } 2003 | }, 2004 | "forwarded": { 2005 | "version": "0.2.0", 2006 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 2007 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 2008 | }, 2009 | "fresh": { 2010 | "version": "0.5.2", 2011 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 2012 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 2013 | }, 2014 | "fsevents": { 2015 | "version": "2.3.2", 2016 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2017 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2018 | "dev": true, 2019 | "optional": true 2020 | }, 2021 | "function-bind": { 2022 | "version": "1.1.1", 2023 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2024 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 2025 | }, 2026 | "get-intrinsic": { 2027 | "version": "1.1.3", 2028 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 2029 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 2030 | "requires": { 2031 | "function-bind": "^1.1.1", 2032 | "has": "^1.0.3", 2033 | "has-symbols": "^1.0.3" 2034 | } 2035 | }, 2036 | "has": { 2037 | "version": "1.0.3", 2038 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2039 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2040 | "requires": { 2041 | "function-bind": "^1.1.1" 2042 | } 2043 | }, 2044 | "has-symbols": { 2045 | "version": "1.0.3", 2046 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 2047 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 2048 | }, 2049 | "highlight.js": { 2050 | "version": "11.9.0", 2051 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", 2052 | "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==" 2053 | }, 2054 | "http-errors": { 2055 | "version": "2.0.0", 2056 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 2057 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 2058 | "requires": { 2059 | "depd": "2.0.0", 2060 | "inherits": "2.0.4", 2061 | "setprototypeof": "1.2.0", 2062 | "statuses": "2.0.1", 2063 | "toidentifier": "1.0.1" 2064 | } 2065 | }, 2066 | "iconv-lite": { 2067 | "version": "0.4.24", 2068 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2069 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2070 | "requires": { 2071 | "safer-buffer": ">= 2.1.2 < 3" 2072 | } 2073 | }, 2074 | "inherits": { 2075 | "version": "2.0.4", 2076 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2077 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2078 | }, 2079 | "ipaddr.js": { 2080 | "version": "1.9.1", 2081 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 2082 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 2083 | }, 2084 | "is-core-module": { 2085 | "version": "2.11.0", 2086 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 2087 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 2088 | "dev": true, 2089 | "requires": { 2090 | "has": "^1.0.3" 2091 | } 2092 | }, 2093 | "magic-string": { 2094 | "version": "0.30.0", 2095 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", 2096 | "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", 2097 | "requires": { 2098 | "@jridgewell/sourcemap-codec": "^1.4.13" 2099 | } 2100 | }, 2101 | "media-typer": { 2102 | "version": "0.3.0", 2103 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2104 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 2105 | }, 2106 | "merge-descriptors": { 2107 | "version": "1.0.1", 2108 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 2109 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 2110 | }, 2111 | "methods": { 2112 | "version": "1.1.2", 2113 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 2114 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 2115 | }, 2116 | "mime": { 2117 | "version": "1.6.0", 2118 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2119 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 2120 | }, 2121 | "mime-db": { 2122 | "version": "1.52.0", 2123 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2124 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 2125 | }, 2126 | "mime-types": { 2127 | "version": "2.1.35", 2128 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2129 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2130 | "requires": { 2131 | "mime-db": "1.52.0" 2132 | } 2133 | }, 2134 | "morgan": { 2135 | "version": "1.10.0", 2136 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", 2137 | "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", 2138 | "requires": { 2139 | "basic-auth": "~2.0.1", 2140 | "debug": "2.6.9", 2141 | "depd": "~2.0.0", 2142 | "on-finished": "~2.3.0", 2143 | "on-headers": "~1.0.2" 2144 | }, 2145 | "dependencies": { 2146 | "on-finished": { 2147 | "version": "2.3.0", 2148 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2149 | "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", 2150 | "requires": { 2151 | "ee-first": "1.1.1" 2152 | } 2153 | } 2154 | } 2155 | }, 2156 | "ms": { 2157 | "version": "2.0.0", 2158 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2159 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 2160 | }, 2161 | "nanoid": { 2162 | "version": "3.3.6", 2163 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 2164 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" 2165 | }, 2166 | "negotiator": { 2167 | "version": "0.6.3", 2168 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 2169 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 2170 | }, 2171 | "object-inspect": { 2172 | "version": "1.12.2", 2173 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 2174 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 2175 | }, 2176 | "on-finished": { 2177 | "version": "2.4.1", 2178 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 2179 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 2180 | "requires": { 2181 | "ee-first": "1.1.1" 2182 | } 2183 | }, 2184 | "on-headers": { 2185 | "version": "1.0.2", 2186 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 2187 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 2188 | }, 2189 | "parseurl": { 2190 | "version": "1.3.3", 2191 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2192 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2193 | }, 2194 | "path-parse": { 2195 | "version": "1.0.7", 2196 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2197 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2198 | "dev": true 2199 | }, 2200 | "path-to-regexp": { 2201 | "version": "0.1.7", 2202 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2203 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 2204 | }, 2205 | "picocolors": { 2206 | "version": "1.0.0", 2207 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2208 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 2209 | }, 2210 | "postcss": { 2211 | "version": "8.4.31", 2212 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", 2213 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 2214 | "requires": { 2215 | "nanoid": "^3.3.6", 2216 | "picocolors": "^1.0.0", 2217 | "source-map-js": "^1.0.2" 2218 | } 2219 | }, 2220 | "proxy-addr": { 2221 | "version": "2.0.7", 2222 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 2223 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 2224 | "requires": { 2225 | "forwarded": "0.2.0", 2226 | "ipaddr.js": "1.9.1" 2227 | } 2228 | }, 2229 | "qs": { 2230 | "version": "6.11.0", 2231 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 2232 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 2233 | "requires": { 2234 | "side-channel": "^1.0.4" 2235 | } 2236 | }, 2237 | "range-parser": { 2238 | "version": "1.2.1", 2239 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2240 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2241 | }, 2242 | "raw-body": { 2243 | "version": "2.5.1", 2244 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 2245 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 2246 | "requires": { 2247 | "bytes": "3.1.2", 2248 | "http-errors": "2.0.0", 2249 | "iconv-lite": "0.4.24", 2250 | "unpipe": "1.0.0" 2251 | } 2252 | }, 2253 | "resolve": { 2254 | "version": "1.22.1", 2255 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2256 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2257 | "dev": true, 2258 | "requires": { 2259 | "is-core-module": "^2.9.0", 2260 | "path-parse": "^1.0.7", 2261 | "supports-preserve-symlinks-flag": "^1.0.0" 2262 | } 2263 | }, 2264 | "rollup": { 2265 | "version": "2.77.3", 2266 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", 2267 | "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", 2268 | "dev": true, 2269 | "requires": { 2270 | "fsevents": "~2.3.2" 2271 | } 2272 | }, 2273 | "safe-buffer": { 2274 | "version": "5.2.1", 2275 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2276 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2277 | }, 2278 | "safer-buffer": { 2279 | "version": "2.1.2", 2280 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2281 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2282 | }, 2283 | "send": { 2284 | "version": "0.18.0", 2285 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 2286 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 2287 | "requires": { 2288 | "debug": "2.6.9", 2289 | "depd": "2.0.0", 2290 | "destroy": "1.2.0", 2291 | "encodeurl": "~1.0.2", 2292 | "escape-html": "~1.0.3", 2293 | "etag": "~1.8.1", 2294 | "fresh": "0.5.2", 2295 | "http-errors": "2.0.0", 2296 | "mime": "1.6.0", 2297 | "ms": "2.1.3", 2298 | "on-finished": "2.4.1", 2299 | "range-parser": "~1.2.1", 2300 | "statuses": "2.0.1" 2301 | }, 2302 | "dependencies": { 2303 | "ms": { 2304 | "version": "2.1.3", 2305 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2306 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 2307 | } 2308 | } 2309 | }, 2310 | "serve-static": { 2311 | "version": "1.15.0", 2312 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 2313 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 2314 | "requires": { 2315 | "encodeurl": "~1.0.2", 2316 | "escape-html": "~1.0.3", 2317 | "parseurl": "~1.3.3", 2318 | "send": "0.18.0" 2319 | } 2320 | }, 2321 | "setprototypeof": { 2322 | "version": "1.2.0", 2323 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2324 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 2325 | }, 2326 | "side-channel": { 2327 | "version": "1.0.4", 2328 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2329 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2330 | "requires": { 2331 | "call-bind": "^1.0.0", 2332 | "get-intrinsic": "^1.0.2", 2333 | "object-inspect": "^1.9.0" 2334 | } 2335 | }, 2336 | "source-map-js": { 2337 | "version": "1.0.2", 2338 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2339 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 2340 | }, 2341 | "statuses": { 2342 | "version": "2.0.1", 2343 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 2344 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 2345 | }, 2346 | "supports-preserve-symlinks-flag": { 2347 | "version": "1.0.0", 2348 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2349 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2350 | "dev": true 2351 | }, 2352 | "toidentifier": { 2353 | "version": "1.0.1", 2354 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2355 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 2356 | }, 2357 | "type-is": { 2358 | "version": "1.6.18", 2359 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2360 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2361 | "requires": { 2362 | "media-typer": "0.3.0", 2363 | "mime-types": "~2.1.24" 2364 | } 2365 | }, 2366 | "typescript": { 2367 | "version": "4.9.3", 2368 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", 2369 | "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", 2370 | "dev": true 2371 | }, 2372 | "unpipe": { 2373 | "version": "1.0.0", 2374 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2375 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 2376 | }, 2377 | "utils-merge": { 2378 | "version": "1.0.1", 2379 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2380 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 2381 | }, 2382 | "vary": { 2383 | "version": "1.1.2", 2384 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2385 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 2386 | }, 2387 | "vite": { 2388 | "version": "2.9.16", 2389 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz", 2390 | "integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==", 2391 | "dev": true, 2392 | "requires": { 2393 | "esbuild": "^0.14.27", 2394 | "fsevents": "~2.3.2", 2395 | "postcss": "^8.4.13", 2396 | "resolve": "^1.22.0", 2397 | "rollup": ">=2.59.0 <2.78.0" 2398 | } 2399 | }, 2400 | "vue": { 2401 | "version": "3.3.4", 2402 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", 2403 | "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", 2404 | "requires": { 2405 | "@vue/compiler-dom": "3.3.4", 2406 | "@vue/compiler-sfc": "3.3.4", 2407 | "@vue/runtime-dom": "3.3.4", 2408 | "@vue/server-renderer": "3.3.4", 2409 | "@vue/shared": "3.3.4" 2410 | } 2411 | }, 2412 | "vue-router": { 2413 | "version": "4.2.1", 2414 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.1.tgz", 2415 | "integrity": "sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==", 2416 | "requires": { 2417 | "@vue/devtools-api": "^6.5.0" 2418 | } 2419 | } 2420 | } 2421 | } 2422 | --------------------------------------------------------------------------------