├── packages
├── client
│ ├── .env
│ ├── .prettierrc
│ ├── postcss.config.cjs
│ ├── src
│ │ ├── style.css
│ │ ├── pages
│ │ │ ├── LogsView.vue
│ │ │ ├── DiagnoseView.vue
│ │ │ ├── LoginView.vue
│ │ │ ├── AppView.vue
│ │ │ └── ClientsView.vue
│ │ ├── endpoints.ts
│ │ ├── vite-env.d.ts
│ │ ├── index.vue
│ │ ├── main.ts
│ │ ├── axios.ts
│ │ ├── router.ts
│ │ └── components
│ │ │ ├── NavigationMenu.vue
│ │ │ ├── Toolbar.vue
│ │ │ └── ClientsTable.vue
│ ├── vite.config.ts
│ ├── tsconfig.node.json
│ ├── tailwind.config.cjs
│ ├── .gitignore
│ ├── index.html
│ ├── tsconfig.json
│ ├── package.json
│ ├── README.md
│ └── pnpm-lock.yaml
└── server
│ ├── .gitignore
│ ├── .env
│ ├── .prettierrc
│ ├── src
│ ├── service
│ │ ├── diagnose.ts
│ │ ├── stats.ts
│ │ └── wireguard.ts
│ ├── utils
│ │ ├── db.ts
│ │ ├── ip.ts
│ │ ├── parser.ts
│ │ └── orm.ts
│ └── index.ts
│ ├── package.json
│ └── tsconfig.json
├── pnpm-workspace.yaml
├── .gitignore
├── .vscode
└── settings.json
├── deployment
└── pm2
│ ├── dev.config.js
│ └── prod.config.js
├── package.json
├── README.md
└── pnpm-lock.yaml
/packages/client/.env:
--------------------------------------------------------------------------------
1 | VITE_SERVER_BASE_URL=""
--------------------------------------------------------------------------------
/packages/server/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .env.local
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/client'
3 | - 'packages/server'
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /packages/server/node_modules/
3 | /packages/client/node_modules/
4 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cSpell.words": [
3 | "Axios",
4 | "vueuse"
5 | ]
6 | }
--------------------------------------------------------------------------------
/packages/server/.env:
--------------------------------------------------------------------------------
1 | JWT_SECRET="somesuperlongstringofchars"
2 | AUTH_USERNAME="admin"
3 | AUTH_PASSWORD="admin"
--------------------------------------------------------------------------------
/packages/client/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 4,
3 | "singleQuote": true,
4 | "semi": false,
5 | "printWidth": 120
6 | }
--------------------------------------------------------------------------------
/packages/server/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 120,
3 | "tabWidth": 4,
4 | "semi": false,
5 | "singleQuote": true
6 | }
--------------------------------------------------------------------------------
/packages/client/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/packages/client/src/style.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | body {
6 | background: black
7 | }
8 |
9 |
--------------------------------------------------------------------------------
/packages/client/src/pages/LogsView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | logs
5 |
6 |
--------------------------------------------------------------------------------
/packages/client/src/pages/DiagnoseView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | diagnose
5 |
6 |
--------------------------------------------------------------------------------
/packages/client/src/endpoints.ts:
--------------------------------------------------------------------------------
1 | const CLIENTS = '/api/v1/clients'
2 | const STATS = '/api/v1/stats'
3 | const LOGIN = '/api/v1/login'
4 |
5 | export default {
6 | CLIENTS,
7 | STATS,
8 | LOGIN
9 | }
--------------------------------------------------------------------------------
/packages/client/vite.config.ts:
--------------------------------------------------------------------------------
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 | })
8 |
--------------------------------------------------------------------------------
/packages/client/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | declare module '*.vue' {
4 | import type { DefineComponent } from 'vue'
5 | const component: DefineComponent<{}, {}, any>
6 | export default component
7 | }
8 |
--------------------------------------------------------------------------------
/packages/client/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "ESNext",
5 | "moduleResolution": "Node",
6 | "allowSyntheticDefaultImports": true
7 | },
8 | "include": ["vite.config.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/packages/client/src/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
--------------------------------------------------------------------------------
/packages/client/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: [
4 | "./index.html",
5 | "./src/**/*.{vue,js,ts,jsx,tsx}",
6 | ],
7 | corePlugins: {
8 | preflight: false,
9 | },
10 | theme: {
11 | extend: {},
12 | },
13 | plugins: [],
14 | }
--------------------------------------------------------------------------------
/deployment/pm2/dev.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | apps: [
3 | {
4 | name: "@wg-insights/client",
5 | script: "pnpm",
6 | args: "client:dev"
7 | },
8 | {
9 | name: "@wg-insights/server",
10 | script: "pnpm",
11 | args: "server:dev"
12 | },
13 | ],
14 | };
15 |
--------------------------------------------------------------------------------
/deployment/pm2/prod.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | apps: [
3 | {
4 | name: "@wg-insights/client",
5 | script: "pnpm",
6 | args: "client:start"
7 | },
8 | {
9 | name: "@wg-insights/server",
10 | script: "pnpm",
11 | args: "server:start"
12 | },
13 | ],
14 | };
15 |
--------------------------------------------------------------------------------
/packages/client/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import './style.css'
3 | import index from './index.vue'
4 | import router from './router'
5 |
6 | const BASE_URL = import.meta.env
7 | console.error(BASE_URL)
8 | export const CLIENTS = BASE_URL + 'clients'
9 | export const DIAGNOSTICS = BASE_URL + 'diagnostic'
10 |
11 | createApp(index).use(router).mount('#app')
12 |
--------------------------------------------------------------------------------
/packages/client/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/packages/client/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 🐉 Wireguard Insights
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/client/src/axios.ts:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 | import router from "./router";
3 |
4 | export const instance = axios.create({
5 | withCredentials: true,
6 | baseURL: import.meta.env.VITE_SERVER_BASE_URL || 'http://localhost:5000',
7 | })
8 |
9 | instance.interceptors.response.use((response) => response, async (error) => {
10 | if (error.response.status === 401) {
11 | await router.replace('/login')
12 | }
13 | })
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wg-insights",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "client:start": "pnpm --filter @wg-insights/client start",
9 | "server:start": "pnpm --filter @wg-insights/server start",
10 | "client:dev": "pnpm --filter @wg-insights/client dev",
11 | "server:dev": "pnpm --filter @wg-insights/server dev"
12 | },
13 | "keywords": [],
14 | "author": "",
15 | "license": "ISC"
16 | }
17 |
--------------------------------------------------------------------------------
/packages/client/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "moduleResolution": "Node",
7 | "strict": false,
8 | "jsx": "preserve",
9 | "sourceMap": true,
10 | "resolveJsonModule": true,
11 | "isolatedModules": true,
12 | "esModuleInterop": true,
13 | "lib": ["ESNext", "DOM"],
14 | "skipLibCheck": true,
15 | "types": ["naive-ui/volar"]
16 | },
17 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
18 | "references": [{ "path": "./tsconfig.node.json" }]
19 | }
20 |
--------------------------------------------------------------------------------
/packages/server/src/service/diagnose.ts:
--------------------------------------------------------------------------------
1 | import wireguard from './wireguard'
2 | import ping from 'ping'
3 |
4 | const onlyUnique = (value: any, index: any, self: any) => {
5 | return self.indexOf(value) === index
6 | }
7 |
8 | export default {
9 | /**
10 | * pings unique list of client endpoints for time and packetloss
11 | */
12 | run: async () => {
13 | const clients = await wireguard.getClients()
14 | // console.log(clients)
15 | const uniqueEndpoints = clients.map((client) => client.endpoint).filter(Boolean).map(endpoint => endpoint.split(':')[0]).filter(onlyUnique)
16 | const pingedEndpoints = await Promise.all(uniqueEndpoints.map(endpoint => ping.promise.probe(endpoint)))
17 | return pingedEndpoints.map(({ alive, time, host, packetLoss }) => ({ alive, time, host, packetLoss }))
18 | },
19 | }
20 |
--------------------------------------------------------------------------------
/packages/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@wg-insights/client",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite --host",
8 | "start": "vue-tsc --noEmit && vite build && vite preview --host",
9 | "build": "vue-tsc --noEmit && vite build",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "@vicons/fluent": "^0.12.0",
14 | "@vicons/ionicons5": "^0.12.0",
15 | "@vueuse/core": "^9.3.0",
16 | "@vueuse/integrations": "^9.3.0",
17 | "axios": "^1.1.2",
18 | "fuse.js": "^6.6.2",
19 | "naive-ui": "^2.33.3",
20 | "vfonts": "^0.0.3",
21 | "vite": "^3.1.0",
22 | "vue": "^3.2.37",
23 | "vue-router": "4"
24 | },
25 | "devDependencies": {
26 | "@vicons/fa": "^0.12.0",
27 | "@vitejs/plugin-vue": "^3.1.0",
28 | "autoprefixer": "^10.4.12",
29 | "postcss": "^8.4.17",
30 | "tailwindcss": "^3.1.8",
31 | "typescript": "^4.6.4",
32 | "vue-tsc": "^0.40.4"
33 | }
34 | }
--------------------------------------------------------------------------------
/packages/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@wg-insights/server",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "repository": "git@github.com:Mhdi-kr/wg-insights.git",
6 | "license": "MIT",
7 | "dependencies": {
8 | "axios": "^1.1.0",
9 | "bcrypt": "^5.1.0",
10 | "cookie-parser": "^1.4.6",
11 | "cors": "^2.8.5",
12 | "digital-unit-converter": "^1.0.1",
13 | "dotenv": "^16.0.3",
14 | "express": "^4.18.1",
15 | "jsonwebtoken": "^8.5.1",
16 | "ping": "^0.4.2",
17 | "sqlite3": "^5.1.2"
18 | },
19 | "scripts": {
20 | "start": "ts-node src/index.ts",
21 | "dev": "nodemon src/index.ts"
22 | },
23 | "devDependencies": {
24 | "@types/bcrypt": "^5.0.0",
25 | "@types/cookie-parser": "^1.4.3",
26 | "@types/cors": "^2.8.12",
27 | "@types/express": "^4.17.14",
28 | "@types/jsonwebtoken": "^8.5.9",
29 | "@types/node": "^18.7.23",
30 | "@types/ping": "^0.4.1",
31 | "nodemon": "^2.0.20",
32 | "ts-node": "^10.9.1",
33 | "typescript": "^4.8.4"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/packages/server/src/utils/db.ts:
--------------------------------------------------------------------------------
1 | import sqlite, { Statement } from 'sqlite3';
2 |
3 | export const db = new sqlite.Database('wg.sql');
4 |
5 | export const run = (stmt: Statement, args: any[]) => new Promise((resolve, reject) => {
6 | stmt.run(args, (r: any, err: any) => {
7 | if ((r && r.errno) || err) {
8 | reject(r.errno || err);
9 | }
10 | resolve(r);
11 | });
12 | });
13 |
14 | export const finalize = (stmt: Statement) => new Promise((resolve, reject) => {
15 | stmt.finalize((err: any) => {
16 | if (err) {
17 | reject(err);
18 | }
19 | resolve(true);
20 | });
21 | });
22 |
23 | export const all = (statement: string) => {
24 | return new Promise((resolve, reject) => {
25 | db.all(statement, (err, row) => {
26 | if (err) {
27 | reject(err);
28 | }
29 | resolve(row);
30 | })
31 | });
32 | }
33 |
34 |
35 | db.serialize(() => {
36 | db.run("CREATE TABLE IF NOT EXISTS peers (public_key TEXT UNIQUE, sent INTEGER DEFAULT 0 NOT NULL, received INTEGER DEFAULT 0 NOT NULL, iface TEXT, remaining INTEGER DEFAULT 10 NOT NULL)");
37 | });
38 |
--------------------------------------------------------------------------------
/packages/client/README.md:
--------------------------------------------------------------------------------
1 | # Vue 3 + TypeScript + Vite
2 |
3 | This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `
39 |
--------------------------------------------------------------------------------
/packages/client/src/pages/AppView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
15 |
16 |
17 |
18 |
19 |
59 |
--------------------------------------------------------------------------------
/packages/server/src/utils/ip.ts:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import cp from 'child_process';
3 | import util from 'util';
4 | import { Address, Peer } from './orm';
5 | const exec = util.promisify(cp.exec);
6 |
7 | export const findUnusedIp = (wgServerAddresses: Address, entries: Peer[]) => {
8 | // Assume the both IPv4 and IPv6 are free at a
9 | // specific address and we do not need to calculate
10 | // free address for both IP versions
11 | const ips = entries.map(e => e.allowedIps.split('/')[0]);
12 | const occupiedAddresses = ips.map(ip => Number(ip.split('.')[3]));
13 | let startAddress = Number(wgServerAddresses.IPv4.address.split('.')[3]) + 1;
14 | while (occupiedAddresses.includes(startAddress)) {
15 | startAddress++;
16 | }
17 | const unusedAddress = wgServerAddresses.IPv4.address.split('.');
18 | unusedAddress.pop();
19 | unusedAddress.push(`${startAddress}`);
20 | const unusedV6Address = wgServerAddresses.IPv6.address.split('::');
21 | return {
22 | IPv4: {
23 | address: unusedAddress.join('.'),
24 | range: 32
25 | },
26 | IPv6: {
27 | address: unusedV6Address.join(':').concat('::', String(startAddress)),
28 | range: 128
29 | }
30 | } as Address;
31 | };
32 |
33 | export const generateAllowedIps = async (excludeIps?: string[]) => {
34 | if (!excludeIps) {
35 | return '0.0.0.0/0,::/0';
36 | }
37 | const { data: { data: result } } = await axios.get('https://hooks.arcemtene.com/wireguard/allowedips', {
38 | params: {
39 | allowed: '0.0.0.0/0, ::/0',
40 | disallowed: excludeIps.join(',')
41 | }
42 | });
43 | result.pop();
44 | result.push({ id: '::/1' }, { id: '8000::/1' });
45 | return result.map((r: { id: string }) => r.id).join(',');
46 | }
47 |
48 | export const findMachinePublicIp = async () => {
49 | const { stdout } = await exec(`ip -4 addr | sed -ne 's|^.* inet \\([^/]*\\)/.* scope global.*$|\\1|p' | awk '{print $1}' | head -1`);
50 | return stdout.trim();
51 | };
--------------------------------------------------------------------------------
/packages/client/src/components/NavigationMenu.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
13 |
14 | {{ item.title }}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
59 |
--------------------------------------------------------------------------------
/packages/server/src/service/stats.ts:
--------------------------------------------------------------------------------
1 | import cp from 'child_process'
2 | import util from 'util'
3 | import ping from 'ping'
4 | import parser from '../utils/parser'
5 |
6 | const destinations = [
7 | {
8 | name: 'cloudflare',
9 | ip: '1.1.1.1',
10 | },
11 | {
12 | name: 'google',
13 | ip: '8.8.8.8',
14 | },
15 | ]
16 |
17 | const exec = util.promisify(cp.exec)
18 |
19 | const checkWireguard = async () => {
20 | try {
21 | const { stderr, stdout } = await exec('systemctl --no-page show wg-quick@wg0.service')
22 | const { status } = parser('systemctl status wg-quick@wg0.service', stdout)
23 | return status
24 | } catch (error) {}
25 | }
26 |
27 | const checkConnection = () => {
28 | return Promise.all(
29 | destinations.map(async ({ name, ip }) => {
30 | const { host, alive, time } = await ping.promise.probe(ip)
31 | return {
32 | name,
33 | host,
34 | alive,
35 | time,
36 | }
37 | })
38 | )
39 | }
40 |
41 | const checkSystemResources = async () => {
42 | try {
43 | const { stdout, stderr } = await exec('top -b -n 1')
44 | const { status } = parser('top -b -n 1', stdout)
45 | return status
46 | } catch (error) {}
47 | }
48 |
49 | /**
50 | * returns the systemctl status of wireguard service and ping status to cloudflare and google dns resolver endpoints
51 | */
52 | export default async () => {
53 | // todo handle this error
54 | const [wireguardService, ping, resources] = await Promise.all([
55 | checkWireguard(),
56 | checkConnection(),
57 | checkSystemResources(),
58 | ])
59 | return {
60 | resources,
61 | ping: [
62 | {
63 | name: 'wireguard',
64 | host: null,
65 | alive: wireguardService,
66 | message: wireguardService ? 'active' : 'inactive',
67 | time: null
68 | },
69 | ...ping
70 | ],
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 🐉 Wireguard Insights
2 |
3 | A self-hosted HTTP and web-based adapter for wireguard servers to manage peers and configuration.
4 |
5 | ## Features
6 |
7 | - 🔐 Secure authentication
8 | - 📊 Real-time Wireguard service status, Google and CloudFlare ping, server resources statistics
9 | - 💾 Create, read, update and delete clients
10 | - 🔎 search for and filter clients
11 | - 🔌 Real-time client connection status and statistics
12 | - 📄 Serving client configuration in file and QR code format
13 | - 🎒 Backup methods for Wireguard server configuration
14 | - ✅ Compatible with the widely used `wireguard-install.sh` script
15 |
16 | ## Story
17 |
18 | I was looking for a usable and preferably good-looking UI to manage my Wireguard peers and server. I've tested many repositories with quite high number of stars but none of them satisfied me because I was looking for:
19 |
20 | - Easy to deploy, least number of required environment variables
21 | - Compatibility with the widely used `wireguard-install.sh` script (so I don't lose my previously generated peers)
22 | - Almost no infrastructure dependencies such as databases
23 | - Have amazing client side filtering and search capabilities
24 |
25 | ## Installation
26 |
27 | You can try using this software on your local machine or deploy it else where and keep it running with PM2.
28 |
29 | ### Local machine
30 |
31 | 1. Clone this git repository
32 | 2. Install dependencies for both `client` and `server` packages using single `pnpm install`
33 | 3. Run the server running `pnpm server:start`
34 | 4. Run the client running `pnpm client:start`
35 |
36 | ### PM2
37 |
38 | ```bash
39 | # install node, npm and pm2
40 | npm i -g pm2
41 |
42 | # start both client and server
43 | pm2 start deployment/pm2/prod.config.js
44 |
45 | # start the client only
46 | pm2 start deployment/pm2/prod.config.js --only @wg-insights/client
47 |
48 | # start the server only
49 | pm2 start deployment/pm2/prod.config.js --only @wg-insights/server
50 | ```
51 |
52 | ## Development
53 |
54 | 1. Clone this git repository
55 | 2. Install dependencies for `client` and `server` packages running `pnpm install`
56 | 3. Run the server running `pnpm server:dev`
57 | 4. Run the client running `pnpm client:dev`
58 |
59 | Client uses HMR in vite and the server uses nodemon for you to be able to iterate quickly.
60 |
61 | ## Environment variables
62 |
--------------------------------------------------------------------------------
/packages/client/src/pages/ClientsView.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
72 |
--------------------------------------------------------------------------------
/packages/client/src/components/Toolbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 🐉
6 | |
7 | Wireguard Insights
8 |
9 |
10 |
11 |
12 |
18 | {{ resource.name }}
19 |
20 |
21 | {{ resource.message }}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | {{ destination.message || destination.time + 'ms' }}
35 |
36 |
37 |
38 |
39 |
40 |
41 |
75 |
76 |
83 |
--------------------------------------------------------------------------------
/packages/server/src/utils/parser.ts:
--------------------------------------------------------------------------------
1 | export default (command: string, stdout: string) => {
2 | switch (command) {
3 | case 'systemctl status wg-quick@wg0.service':
4 | const [key, value] = stdout
5 | .split('\n')
6 | .find((line) => line.includes('ActiveState'))
7 | ?.split('ActiveState=') || ['ActiveState=', '']
8 | return { status: value === 'active' }
9 | case 'wg show':
10 | const peers = stdout
11 | .replaceAll(' ', '')
12 | .split('\n\n')
13 | .map((i) => i.split('\n'))
14 | .filter((i) => i[0].includes('peer'))
15 | .map((i) => {
16 | const [publicKey, psk, endpoint, allowedIps, lastTlsHandshake, transfer] = i
17 | return {
18 | publicKey: !!publicKey ? publicKey.split('peer:')[1] : null,
19 | endpoint: !!endpoint ? endpoint.split('endpoint:')[1] : null,
20 | allowedIps: !!allowedIps ? allowedIps.split('allowedips:')[1] : null,
21 | lastTlsHandshake: !!lastTlsHandshake
22 | ? String(lastTlsHandshake.split('latesthandshake:')[1]).replace('ago', '')
23 | : null,
24 | transfer: !!transfer
25 | ? transfer
26 | .split('transfer:')[1]
27 | .split(',')
28 | .reduce(
29 | (acc, curr, i) => ({
30 | ...acc,
31 | [i === 0 ? 'recieved' : 'sent']: String(curr)
32 | .replace('received', '')
33 | .replace('sent', ''),
34 | }),
35 | { recieved: null, sent: null }
36 | )
37 | : { recieved: null, sent: null },
38 | }
39 | })
40 | return { peers }
41 | case 'cat /etc/wireguard/wg0.conf':
42 | const [_, ...rest] = stdout.split('\n\n').map((i) => i.split('\n'))
43 | const entriers = rest.map(([client, _, publicKey, psk, allowedIps]) => ({
44 | client: !!client ? client.split('### Client ')[1] : null,
45 | publicKey: !!publicKey ? publicKey.split('PublicKey = ')[1] : null,
46 | allowedIps: !!allowedIps ? allowedIps.split('AllowedIPs = ')[1] : null,
47 | }))
48 | return { entriers }
49 | case 'top -b -n 1':
50 | const [topStr, tasksStr, cpuStr, memStr, swapStr] = stdout.split('\n').map((i) => i.replaceAll(' ', ''))
51 | const total = memStr.split(':')[1].split(',')[0].split('total')[0]
52 | const used = memStr.split(':')[1].split(',')[2].split('used')[0]
53 | return {
54 | status: [
55 | {
56 | name: 'RAM',
57 | message: [used, '/', total].join(''),
58 | percent: ((parseInt(used)) / parseInt(total)) * 100
59 | },
60 | {
61 | name: 'CPU',
62 | message: cpuStr.split(',')[1].split('sy')[0],
63 | precent: parseInt(cpuStr.split(',')[1].split('sy')[0]),
64 | }
65 | ]
66 | }
67 | case 'wg genkey':
68 | return {
69 | key: stdout.trim()
70 | };
71 | case 'wg pubkey':
72 | return {
73 | key: stdout.trim()
74 | };
75 | case 'wg genpsk':
76 | return {
77 | key: stdout.trim()
78 | };
79 | default:
80 | return {}
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/packages/server/src/index.ts:
--------------------------------------------------------------------------------
1 | import express from 'express'
2 | import cors from 'cors'
3 | import * as jwt from 'jsonwebtoken'
4 | import cookieParser from 'cookie-parser'
5 | import bcrypt from 'bcrypt'
6 |
7 | import stats from './service/stats'
8 | import wireguard from './service/wireguard'
9 | import diagnose from './service/diagnose'
10 | import { ORM } from './utils/orm'
11 | import './utils/db'
12 |
13 | const app = express()
14 | const port = process.env.HTTP_SERVER_PORT || 5000
15 | const origin = process.env.CLIENT_ORIGIN || /(http|https):\/\/(.*):(5173|4173)/
16 | const router = express.Router()
17 | export const ORMInstance = new ORM()
18 |
19 | app.use(cookieParser())
20 | app.use(cors({ credentials: true, origin }))
21 | app.use(express.json())
22 |
23 | // login route
24 | app.post('/api/v1/login', (req, res) => {
25 | try {
26 | const { username, password } = req.body
27 | const u = process.env.AUTH_USERNAME || 'admin'
28 | const p = process.env.AUTH_PASSWORD || 'admin'
29 | if (username !== u || password !== p) return res.sendStatus(401)
30 | const secret = process.env.JWT_SECRET || 'somesuperlongstringofchars'
31 | const hash = bcrypt.hashSync(u + ':' + p, 10)
32 | const token = jwt.sign({
33 | hash
34 | }, secret, { expiresIn: '24h' })
35 | return res.cookie('token', token, { httpOnly: true }).json({
36 | success: token
37 | })
38 | } catch (error) {
39 | console.error(error)
40 | }
41 | })
42 |
43 | // auth middleware
44 | const auth = (req, res) => {
45 | try {
46 | const token = req.cookies.token
47 | const u = process.env.AUTH_USERNAME || 'admin'
48 | const p = process.env.AUTH_PASSWORD || 'admin'
49 | const { hash: jwtHash } = jwt.decode(token) as { hash: string }
50 | const isEqual = bcrypt.compareSync(u + ':' + p, jwtHash)
51 | return isEqual ? req.next() : res.sendStatus(401)
52 | } catch (error) {
53 | console.error(error)
54 | return res.sendStatus(401)
55 | }
56 | }
57 |
58 | // register auth middleware
59 | router.use(auth)
60 |
61 | // get all clients
62 | router.get('/clients', async (req, res) => {
63 | try {
64 | res.send({
65 | data: await wireguard.getClients(),
66 | })
67 | } catch (error) {
68 | console.error(error)
69 | }
70 | })
71 |
72 | // create new client
73 | router.post('/clients', async (req, res) => {
74 | try {
75 | return res.send({
76 | data: await wireguard.createClient({
77 | name: req.body.name,
78 | excludeIps: req.body.excludeIps,
79 | endpoint: req.body.endpoint,
80 | endpointListenPort: req.body.endpointPort
81 | }),
82 | })
83 | } catch (error) {
84 | console.error(error)
85 | }
86 | })
87 |
88 | // edit an existing client
89 | router.patch('/clients/edit/', async (req, res) => {
90 | try {
91 | return res.send({
92 | data: await wireguard.editClient(req.body.publicKey, req.body.fields),
93 | })
94 | } catch (error) {
95 | console.error(error)
96 | }
97 | })
98 |
99 | // revoke an existing client by its public key
100 | router.delete('/clients/:publicKey', async (req, res) => {
101 | try {
102 | return res.send({
103 | data: await wireguard.revokeClient(req.params.publicKey),
104 | })
105 | } catch (error) {
106 | console.error(error)
107 | }
108 | })
109 |
110 | router.post('/clients/suspend', async (req, res) => {
111 | try {
112 | return res.send({
113 | data: await wireguard.suspendClient(req.body.publicKey),
114 | })
115 | } catch (error) {
116 | console.error(error)
117 | }
118 | });
119 |
120 | router.post('/clients/unsuspend/', async (req, res) => {
121 | try {
122 | return res.send({
123 | data: await wireguard.unsuspendClient(req.body.publicKey, req.body.resetRemaining),
124 | })
125 | } catch (error) {
126 | console.error(error)
127 | }
128 | });
129 |
130 | router.get('/health', (req, res) => res.sendStatus(200))
131 |
132 | router.get('/stats', async (req, res) => {
133 | try {
134 | res.send({
135 | data: await stats(),
136 | })
137 | } catch (error) {
138 | console.error(error)
139 | }
140 | })
141 |
142 | router.get('/diagnose', async (req, res) => {
143 | try {
144 | res.send({
145 | data: await diagnose.run()
146 | })
147 | } catch (error) {
148 | console.error(error)
149 | }
150 | })
151 |
152 | app.use('/api/v1/', router)
153 |
154 | app.listen(port, async () => {
155 | await ORMInstance.loadInterfaces()
156 | console.log(`Example app listening on port ${port}`)
157 | })
158 |
--------------------------------------------------------------------------------
/packages/server/src/service/wireguard.ts:
--------------------------------------------------------------------------------
1 | import cp from 'child_process'
2 | import util from 'util'
3 | import ping from 'ping'
4 | import parser from '../utils/parser'
5 | import { ORMInstance } from '../index'
6 | import { findMachinePublicIp, findUnusedIp, generateAllowedIps } from '../utils/ip'
7 |
8 | const exec = util.promisify(cp.exec)
9 |
10 | export default {
11 | /**
12 | * get a list of all client objects
13 | */
14 | getClients: async () => {
15 | const [wgShow] = await Promise.all([exec("wg show")])
16 | const { peers } = parser('wg show', wgShow.stdout)
17 | const { peers: entries } = ORMInstance.selectInterface('wg0')
18 | const entryPeerJoin = peers?.map(peer => {
19 | const foundClient = entries?.find(entry => entry.publicKey === peer.publicKey)
20 | if (!foundClient) return null
21 | return {
22 | ...peer,
23 | ...foundClient
24 | }
25 | }).filter(Boolean) || []
26 | const pingedList = entryPeerJoin.map(async (client) => {
27 | if(!client) return null
28 | const [ destinationIp ] = client.allowedIps?.split('/') || '/'
29 | const { alive } = await ping.promise.probe(destinationIp, { deadline: 3, min_reply: 1 })
30 | return { ...client, status: alive }
31 | }).filter(Boolean)
32 |
33 | return await Promise.all(pingedList)
34 | },
35 | /**
36 | * get a certain client by its public key string
37 | * @param {any} pk:string
38 | */
39 | getClientByPK: async (pk: string) => {
40 | return {}
41 | },
42 | /**
43 | * create a new client
44 | * @param {any} deps:any
45 | */
46 | createClient: async (deps: {
47 | name: string,
48 | excludeIps?: string[],
49 | endpoint?: string,
50 | endpointListenPort?: string
51 | }) => {
52 | // create private key
53 | const generatePrivateKeyCommand = 'wg genkey';
54 | const [wgGenkey] = await Promise.all([exec(generatePrivateKeyCommand)]);
55 | const { key: clientPrivateKey} = parser(generatePrivateKeyCommand, wgGenkey.stdout);
56 | // create publickey
57 | const generatePublicKeyCommand = `echo ${clientPrivateKey} | wg pubkey`;
58 | const [wgGenPubKey] = await Promise.all([exec(generatePublicKeyCommand)]);
59 | const { key: clientPublicKey } = parser('wg pubkey', wgGenPubKey.stdout);
60 | // create preshared key
61 | const generatePresharedKey = 'wg genpsk';
62 | const [wgGenPsk] = await Promise.all([exec(generatePresharedKey)]);
63 | const { key: clientPresharedKey } = parser(generatePresharedKey, wgGenPsk.stdout);
64 | // find unused ip for new client
65 | const { peers, iface } = ORMInstance.selectInterface('wg0')
66 | const unusedIp = findUnusedIp(
67 | iface.Address,
68 | peers
69 | );
70 | const clientAddress = `${unusedIp.IPv4.address}/${unusedIp.IPv4.range},${unusedIp.IPv6.address}/${unusedIp.IPv6.range}`;
71 | const allowedIps = await generateAllowedIps(deps.excludeIps);
72 | const machinePublicIp = await findMachinePublicIp();
73 | // Update server conf
74 | console.log(peers, iface);
75 | ORMInstance.selectInterface('wg0').peers.push({
76 | client: deps.name,
77 | publicKey: clientPublicKey,
78 | allowedIps: clientAddress,
79 | presharedKey: clientPresharedKey
80 | });
81 | await ORMInstance.selectInterface('wg0').save()
82 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' })
83 | // create server public key
84 | const generateServerPublicKeyCommand = `echo ${iface.PrivateKey} | wg pubkey`;
85 | const [wgGenServerPubKey] = await Promise.all([exec(generateServerPublicKeyCommand)]);
86 | const { key: serverPublicKey } = parser('wg pubkey', wgGenServerPubKey.stdout);
87 | return {
88 | rawContent: `[Interface]
89 | PrivateKey = ${clientPrivateKey}
90 | Address = ${clientAddress}
91 | DNS = 1.1.1.1,8.8.8.8
92 |
93 | [Peer]
94 | PublicKey = ${serverPublicKey}
95 | PresharedKey = ${clientPresharedKey}
96 | Endpoint = ${deps.endpoint || machinePublicIp}:${deps.endpointListenPort || iface.ListenPort}
97 | AllowedIPs = ${allowedIps}
98 | `
99 | };
100 | },
101 | /**
102 | * modify an existing client fetched by its
103 | * @param {any} deps:any
104 | */
105 | editClient: async (pk: string, payload: {
106 | name?: string
107 | }) => {
108 | const peerIndex = ORMInstance.selectInterface('wg0').peers.findIndex(p => p.publicKey === pk);
109 | ORMInstance.selectInterface('wg0').peers[peerIndex].client = payload.name;
110 | ORMInstance.selectInterface('wg0').save();
111 | return ORMInstance.selectInterface('wg0').peers[peerIndex];
112 | },
113 | /**
114 | * revoke an existing client fetched by its public key
115 | */
116 | revokeClient: async (pk: string) => {
117 | ORMInstance.selectInterface('wg0').peers = ORMInstance.selectInterface('wg0').peers.filter(p => p.publicKey !== pk);
118 | console.log(ORMInstance.selectInterface('wg0').peers, pk);
119 | await ORMInstance.selectInterface('wg0').save();
120 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' });
121 | return {
122 | success: true,
123 | deletedUserKey: pk
124 | };
125 | },
126 | suspendClient: async (pk: string) => {
127 | const peer = ORMInstance.selectInterface('wg0').peers.find(p => p.publicKey === pk);
128 | peer.isSuspended = true;
129 | await ORMInstance.selectInterface('wg0').save();
130 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' });
131 | return {
132 | success: true,
133 | suspendedPublicKey: pk
134 | };
135 | },
136 | unsuspendClient: async (pk: string, shouldResetRemaining: boolean) => {
137 | const peer = ORMInstance.selectInterface('wg0').peers.find(p => p.publicKey === pk);
138 | peer.isSuspended = false;
139 | await ORMInstance.selectInterface('wg0').save();
140 | if (shouldResetRemaining) {
141 | await ORMInstance.resetRemainingTraffic(pk);
142 | }
143 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' });
144 | return {
145 | success: true,
146 | unsuspendedPublicKey: pk
147 | };
148 | },
149 | }
150 |
--------------------------------------------------------------------------------
/packages/server/src/utils/orm.ts:
--------------------------------------------------------------------------------
1 | import cp from 'child_process';
2 | import util from 'util';
3 | const exec = util.promisify(cp.exec)
4 | import fs from 'fs/promises';
5 | import { db, run, finalize, all } from './db';
6 | import { DataUnit } from 'digital-unit-converter';
7 | import parser from './parser';
8 |
9 | const WG_CONFIG_FILE_PATH = '/etc/wireguard/';
10 | export type Address = {
11 | IPv4: {
12 | address: string,
13 | range: number
14 | },
15 | IPv6: {
16 | address: string,
17 | range: number
18 | }
19 | }
20 | type Interface = {
21 | Address: Address;
22 | ListenPort: number;
23 | MTU: number;
24 | PostUp: string;
25 | PostDown: string;
26 | PrivateKey: string;
27 | };
28 |
29 | export type Peer = {
30 | client: string;
31 | publicKey: string;
32 | allowedIps: string;
33 | presharedKey: string;
34 | isSuspended?: boolean;
35 | };
36 |
37 | type ConfigType = {
38 | iface: Interface;
39 | interfaceName: string;
40 | peers: Peer[];
41 | save: () => Promise
42 | };
43 |
44 | const deserializer = (fileContent: string) => {
45 | const [rawServerInterface, ...rawPeers] = fileContent.split('\n\n').map((i) => i.split('\n'))
46 |
47 | const peers = rawPeers.map(([client, _, publicKey, psk, allowedIps]) => ({
48 | client: !!client ? client.split('### Client ')[1] : null,
49 | publicKey: !!publicKey ? publicKey.split('PublicKey = ')[1] : null,
50 | allowedIps: !!allowedIps ? allowedIps.split('AllowedIPs = ')[1] : null,
51 | presharedKey: !!psk ? psk.split('PresharedKey = ')[1] : null,
52 | isSuspended: !!publicKey ? publicKey[0] === '#' : false
53 | })) as Peer[];
54 | const serverInterface = rawServerInterface.reduce((si, l) => {
55 | const [key, value] = l.split(' =').map(s => s.trim());
56 | switch (key.toLowerCase()) {
57 | case 'address': {
58 | si[key] = value.split(',').reduce((addr, ipWithRange, i) => {
59 | const [ip, range] = ipWithRange.split('/');
60 | if (i === 0) {
61 | addr['IPv4'] = {
62 | address: ip,
63 | range: Number(range),
64 | };
65 | } else {
66 | addr['IPv6'] = {
67 | address: ip,
68 | range: Number(range),
69 | };
70 | }
71 | return addr;
72 | }, {})
73 | return si;
74 | }
75 | case 'listenport': {
76 | si[key] = Number(value);
77 | return si;
78 | }
79 | case 'mtu': {
80 | si[key] = Number(value);
81 | return si;
82 | }
83 | case 'postup': {
84 | si[key] = value;
85 | return si;
86 | }
87 | case 'postdown': {
88 | si[key] = value;
89 | return si;
90 | }
91 | case 'privatekey': {
92 | si[key] = value;
93 | return si;
94 | }
95 | default:
96 | return si;
97 | }
98 | }, {} as Interface);
99 | return {
100 | iface: serverInterface,
101 | peers: peers.filter(p => !!p.client && !!p.publicKey)
102 | } as Config
103 | };
104 |
105 | const serializer = (config: Config) => {
106 | const serializedPeers = config.peers.reduce((r, p) => {
107 | return `${r}
108 | ### Client ${p.client}
109 | ${p.isSuspended ? '#' : ''}[Peer]
110 | ${p.isSuspended ? '#' : ''}PublicKey = ${p.publicKey}
111 | ${p.isSuspended ? '#' : ''}PresharedKey = ${p.presharedKey}
112 | ${p.isSuspended ? '#' : ''}AllowedIPs = ${p.allowedIps}
113 | `;
114 | }, '');
115 | const ipv4AddressWithRange = `${config.iface.Address.IPv4.address}/${config.iface.Address.IPv4.range}`;
116 | const ipv6AddressWithRange = `${config.iface.Address.IPv6.address}/${config.iface.Address.IPv6.range}`;
117 | const serializedConfig = `[Interface]
118 | Address = ${ipv4AddressWithRange},${ipv6AddressWithRange}
119 | ListenPort = ${config.iface.ListenPort}
120 | MTU = ${config.iface.MTU}
121 | PrivateKey = ${config.iface.PrivateKey}
122 | PostUp = ${config.iface.PostUp}
123 | PostDown = ${config.iface.PostDown}
124 | ${serializedPeers}
125 | `;
126 | return serializedConfig;
127 | };
128 |
129 | class Config implements ConfigType {
130 | peers: Peer[];
131 | iface: Interface;
132 | interfaceName: string;
133 | constructor(rawContent: string, interfaceName: string) {
134 | const res = deserializer(rawContent)
135 | this.interfaceName = interfaceName;
136 | this.iface = res.iface;
137 | this.peers = res.peers;
138 | }
139 | async save() {
140 | const rawContent = serializer(this);
141 | await fs.writeFile(WG_CONFIG_FILE_PATH + this.interfaceName + '.conf', rawContent);
142 | }
143 | toJSON() {
144 | const iface = {
145 | ...this.iface
146 | };
147 | delete iface.PrivateKey;
148 | const peers = this.peers.map(p => {
149 | delete p.presharedKey;
150 | return p;
151 | });
152 | return {
153 | interface: iface,
154 | peers
155 | };
156 | }
157 | }
158 |
159 | export class ORM {
160 | interfaces: { [key: string]: Config };
161 | selectInterface(name: string) {
162 | return this.interfaces[name];
163 | }
164 | async upsertPeers(iface: string, pubkeys: string[]) {
165 | try {
166 | const stmt = db.prepare("INSERT INTO peers VALUES (?, ?, ?, ?, ?)");
167 | for (const pubkey of pubkeys) {
168 | await run(stmt, [pubkey, 0, 0, iface, 10]);
169 | }
170 | await finalize(stmt);
171 | } catch (error) {
172 | // console.log(error);
173 | }
174 | }
175 | async resetRemainingTraffic(pubkey: string) {
176 | const statement = db.prepare('UPDATE peers SET remaining = ? WHERE public_key = ?');
177 | await run(statement, [10, pubkey]);
178 | }
179 | async updateTrafficUsage(pubkey: string, sent: string, received: string) {
180 | const dataUnitMap = {
181 | 'B': DataUnit.BYTE,
182 | 'KiB': DataUnit.KIBIBYTE,
183 | 'MiB': DataUnit.MEBIBYTE,
184 | 'GiB': DataUnit.GIBIBYTE
185 | };
186 | const sentUnit = sent.slice(-3);
187 | const sentAmount = sent.slice(0, -3 + sent.length);
188 | const receivedUnit = received.slice(-3);
189 | const receivedAmount = received.slice(0, -3 + received.length);
190 | const [firstPeer] = await all('SELECT * FROM peers WHERE public_key = ' + `'${pubkey}'`);
191 | const sentGbs = DataUnit.GIGABYTE.convert(parseFloat(sentAmount), dataUnitMap[sentUnit]);
192 | const receivedGbs = DataUnit.GIGABYTE.convert(parseFloat(receivedAmount), dataUnitMap[receivedUnit]);
193 | const diffSent = sentGbs - firstPeer.sent;
194 | const diffReceived = receivedGbs - firstPeer.received;
195 | const statement = db.prepare('UPDATE peers SET sent = ?, received = ?, remaining = ? WHERE public_key = ?');
196 | const newRemainingAmount = firstPeer.remaining - (diffSent + diffReceived);
197 | if (newRemainingAmount === 0 || newRemainingAmount < 0) {
198 | const peer = this.selectInterface('wg0').peers.find(p => p.publicKey === pubkey);
199 | peer.isSuspended = true;
200 | await this.selectInterface('wg0').save();
201 | await exec('wg syncconf wg0 <(wg-quick strip wg0)', { shell: '/bin/bash' });
202 | }
203 | await run(statement, [sentGbs, receivedGbs, newRemainingAmount, pubkey]);
204 | }
205 | async loadInterfaces() {
206 | const readInterfaceConfig = async () => {
207 | const configFiles = (await fs.readdir(WG_CONFIG_FILE_PATH)).filter(f => f.includes('.conf'));
208 | const results = await Promise.all(configFiles.map(async (cf) => {
209 | const configFileContents = await fs.readFile(WG_CONFIG_FILE_PATH + cf, { 'encoding': 'utf-8' });
210 | const interfaceName = cf.split('.conf')[0];
211 | return {
212 | config: new Config(configFileContents, interfaceName),
213 | interfaceName
214 | }
215 | }));
216 | this.interfaces = results.reduce((acc, { config, interfaceName }) => ({
217 | ...acc,
218 | [interfaceName]: config
219 | }), {});
220 | const promises = results.map(async (r) => {
221 | await this.upsertPeers(r.interfaceName, r.config.peers.map(p => p.publicKey))
222 | });
223 | await Promise.all(promises);
224 | };
225 | const upsertPeersInterval = setInterval(readInterfaceConfig, 1000 * 60 * 5);
226 | await readInterfaceConfig();
227 | const updateTrafficUsageInterval = setInterval(async () => {
228 | const [wgShow] = await Promise.all([exec("wg show")])
229 | const { peers } = parser('wg show', wgShow.stdout)
230 | const { peers: entries } = this.selectInterface('wg0')
231 | const promises = peers?.map(async (peer) => {
232 | const foundClient = entries?.find(entry => entry.publicKey === peer.publicKey)
233 | if (!foundClient) return null
234 | await this.updateTrafficUsage(peer.publicKey, peer.transfer.sent, peer.transfer.recieved);
235 | });
236 | await Promise.all(promises);
237 | }, 1000 * 60 * 5);
238 | }
239 | };
--------------------------------------------------------------------------------
/packages/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "ES2021", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26 |
27 | /* Modules */
28 | "module": "CommonJS", /* Specify what module code is generated. */
29 | "rootDir": "./src/", /* Specify the root folder within your source files. */
30 | "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38 | // "resolveJsonModule": true, /* Enable importing .json files. */
39 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
40 |
41 | /* JavaScript Support */
42 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
43 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
44 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
45 |
46 | /* Emit */
47 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
48 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
49 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
50 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
51 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
52 | "outDir": "./dist/", /* Specify an output folder for all emitted files. */
53 | // "removeComments": true, /* Disable emitting comments. */
54 | // "noEmit": true, /* Disable emitting files from a compilation. */
55 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
56 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
57 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
58 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
60 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
61 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
62 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
63 | // "newLine": "crlf", /* Set the newline character for emitting files. */
64 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
65 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
66 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
67 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
68 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
69 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
70 |
71 | /* Interop Constraints */
72 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
73 | "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
74 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
75 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
76 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
77 |
78 | /* Type Checking */
79 | "strict": false, /* Enable all strict type-checking options. */
80 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
81 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
82 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
83 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
84 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
85 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
86 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
87 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
88 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
89 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
90 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
91 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
92 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
93 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
94 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
95 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
96 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
97 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
98 |
99 | /* Completeness */
100 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
101 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/packages/client/src/components/ClientsTable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
21 |
22 |
30 |
38 |
39 |
40 |
41 | close
42 |
43 | confirm
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | Add Client
59 |
60 |
61 |
62 |
63 |
73 |
74 |
75 |
76 |
77 |
314 |
315 |
320 |
--------------------------------------------------------------------------------
/packages/client/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@vicons/fa': ^0.12.0
5 | '@vicons/fluent': ^0.12.0
6 | '@vicons/ionicons5': ^0.12.0
7 | '@vitejs/plugin-vue': ^3.1.0
8 | '@vueuse/core': ^9.3.0
9 | '@vueuse/integrations': ^9.3.0
10 | autoprefixer: ^10.4.12
11 | axios: ^1.1.2
12 | fuse.js: ^6.6.2
13 | naive-ui: ^2.33.3
14 | postcss: ^8.4.17
15 | tailwindcss: ^3.1.8
16 | typescript: ^4.6.4
17 | vfonts: ^0.0.3
18 | vite: ^3.1.0
19 | vue: ^3.2.37
20 | vue-router: '4'
21 | vue-tsc: ^0.40.4
22 |
23 | dependencies:
24 | '@vicons/fluent': 0.12.0
25 | '@vicons/ionicons5': 0.12.0
26 | '@vueuse/core': 9.3.0_vue@3.2.40
27 | '@vueuse/integrations': 9.3.0_yblxu6vzosngh3prdbtjbo3wse
28 | axios: 1.1.2
29 | fuse.js: 6.6.2
30 | naive-ui: 2.33.3_vue@3.2.40
31 | vfonts: 0.0.3
32 | vite: 3.1.4
33 | vue: 3.2.40
34 | vue-router: 4.1.5_vue@3.2.40
35 |
36 | devDependencies:
37 | '@vicons/fa': 0.12.0
38 | '@vitejs/plugin-vue': 3.1.0_vite@3.1.4+vue@3.2.40
39 | autoprefixer: 10.4.12_postcss@8.4.17
40 | postcss: 8.4.17
41 | tailwindcss: 3.1.8
42 | typescript: 4.8.4
43 | vue-tsc: 0.40.13_typescript@4.8.4
44 |
45 | packages:
46 |
47 | /@babel/helper-string-parser/7.18.10:
48 | resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==}
49 | engines: {node: '>=6.9.0'}
50 |
51 | /@babel/helper-validator-identifier/7.19.1:
52 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
53 | engines: {node: '>=6.9.0'}
54 |
55 | /@babel/parser/7.19.3:
56 | resolution: {integrity: sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==}
57 | engines: {node: '>=6.0.0'}
58 | hasBin: true
59 | dependencies:
60 | '@babel/types': 7.19.3
61 |
62 | /@babel/types/7.19.3:
63 | resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==}
64 | engines: {node: '>=6.9.0'}
65 | dependencies:
66 | '@babel/helper-string-parser': 7.18.10
67 | '@babel/helper-validator-identifier': 7.19.1
68 | to-fast-properties: 2.0.0
69 |
70 | /@css-render/plugin-bem/0.15.11_css-render@0.15.11:
71 | resolution: {integrity: sha512-Bn8qadYPIz5DhZ4obTGHOJzeziQH6kY0+Fk5AEvwuuy378SLwwvXuuoechLjBHcgKkPCM03Oo4dDSGP/6NMdyw==}
72 | peerDependencies:
73 | css-render: ~0.15.11
74 | dependencies:
75 | css-render: 0.15.11
76 | dev: false
77 |
78 | /@css-render/vue3-ssr/0.15.11_vue@3.2.40:
79 | resolution: {integrity: sha512-n+SuqLPbY30FUTM8slX75OaEG+c8XlTOFrAklekX2XQGvBbz9XdBE6hTEgGlV5kPcTMqTJeCG7Vzhs9/29VC7w==}
80 | peerDependencies:
81 | vue: ^3.0.11
82 | dependencies:
83 | vue: 3.2.40
84 | dev: false
85 |
86 | /@emotion/hash/0.8.0:
87 | resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
88 | dev: false
89 |
90 | /@esbuild/android-arm/0.15.10:
91 | resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==}
92 | engines: {node: '>=12'}
93 | cpu: [arm]
94 | os: [android]
95 | requiresBuild: true
96 | optional: true
97 |
98 | /@esbuild/linux-loong64/0.15.10:
99 | resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==}
100 | engines: {node: '>=12'}
101 | cpu: [loong64]
102 | os: [linux]
103 | requiresBuild: true
104 | optional: true
105 |
106 | /@juggle/resize-observer/3.4.0:
107 | resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
108 | dev: false
109 |
110 | /@nodelib/fs.scandir/2.1.5:
111 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
112 | engines: {node: '>= 8'}
113 | dependencies:
114 | '@nodelib/fs.stat': 2.0.5
115 | run-parallel: 1.2.0
116 | dev: true
117 |
118 | /@nodelib/fs.stat/2.0.5:
119 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
120 | engines: {node: '>= 8'}
121 | dev: true
122 |
123 | /@nodelib/fs.walk/1.2.8:
124 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
125 | engines: {node: '>= 8'}
126 | dependencies:
127 | '@nodelib/fs.scandir': 2.1.5
128 | fastq: 1.13.0
129 | dev: true
130 |
131 | /@types/lodash-es/4.17.6:
132 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==}
133 | dependencies:
134 | '@types/lodash': 4.14.186
135 | dev: false
136 |
137 | /@types/lodash/4.14.186:
138 | resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==}
139 | dev: false
140 |
141 | /@types/node/17.0.45:
142 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
143 | dev: false
144 |
145 | /@types/web-bluetooth/0.0.15:
146 | resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==}
147 | dev: false
148 |
149 | /@vicons/fa/0.12.0:
150 | resolution: {integrity: sha512-g2PIeJLsTHUjt6bK63LxqC0uYQB7iu+xViJOxvp1s8b9/akpXVPVWjDTTsP980/0KYyMMe4U7F/aUo7wY+MsXA==}
151 | dev: true
152 |
153 | /@vicons/fluent/0.12.0:
154 | resolution: {integrity: sha512-ATCiqPuiJ6RI5GBlD3BIpZ9Xw4MsCA4RpI5oR6MCti4quS4mX1Gp6N74FCzw7lgOj+80rV4HMKhZTVInwimpVQ==}
155 | dev: false
156 |
157 | /@vicons/ionicons5/0.12.0:
158 | resolution: {integrity: sha512-Iy1EUVRpX0WWxeu1VIReR1zsZLMc4fqpt223czR+Rpnrwu7pt46nbnC2ycO7ItI/uqDLJxnbcMC7FujKs9IfFA==}
159 | dev: false
160 |
161 | /@vitejs/plugin-vue/3.1.0_vite@3.1.4+vue@3.2.40:
162 | resolution: {integrity: sha512-fmxtHPjSOEIRg6vHYDaem+97iwCUg/uSIaTzp98lhELt2ISOQuDo2hbkBdXod0g15IhfPMQmAxh4heUks2zvDA==}
163 | engines: {node: ^14.18.0 || >=16.0.0}
164 | peerDependencies:
165 | vite: ^3.0.0
166 | vue: ^3.2.25
167 | dependencies:
168 | vite: 3.1.4
169 | vue: 3.2.40
170 | dev: true
171 |
172 | /@volar/code-gen/0.40.13:
173 | resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==}
174 | dependencies:
175 | '@volar/source-map': 0.40.13
176 | dev: true
177 |
178 | /@volar/source-map/0.40.13:
179 | resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==}
180 | dependencies:
181 | '@vue/reactivity': 3.2.38
182 | dev: true
183 |
184 | /@volar/typescript-faster/0.40.13:
185 | resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==}
186 | dependencies:
187 | semver: 7.3.7
188 | dev: true
189 |
190 | /@volar/vue-language-core/0.40.13:
191 | resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==}
192 | dependencies:
193 | '@volar/code-gen': 0.40.13
194 | '@volar/source-map': 0.40.13
195 | '@vue/compiler-core': 3.2.40
196 | '@vue/compiler-dom': 3.2.40
197 | '@vue/compiler-sfc': 3.2.40
198 | '@vue/reactivity': 3.2.40
199 | '@vue/shared': 3.2.40
200 | dev: true
201 |
202 | /@volar/vue-typescript/0.40.13:
203 | resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==}
204 | dependencies:
205 | '@volar/code-gen': 0.40.13
206 | '@volar/typescript-faster': 0.40.13
207 | '@volar/vue-language-core': 0.40.13
208 | dev: true
209 |
210 | /@vue/compiler-core/3.2.40:
211 | resolution: {integrity: sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==}
212 | dependencies:
213 | '@babel/parser': 7.19.3
214 | '@vue/shared': 3.2.40
215 | estree-walker: 2.0.2
216 | source-map: 0.6.1
217 |
218 | /@vue/compiler-dom/3.2.40:
219 | resolution: {integrity: sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==}
220 | dependencies:
221 | '@vue/compiler-core': 3.2.40
222 | '@vue/shared': 3.2.40
223 |
224 | /@vue/compiler-sfc/3.2.40:
225 | resolution: {integrity: sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==}
226 | dependencies:
227 | '@babel/parser': 7.19.3
228 | '@vue/compiler-core': 3.2.40
229 | '@vue/compiler-dom': 3.2.40
230 | '@vue/compiler-ssr': 3.2.40
231 | '@vue/reactivity-transform': 3.2.40
232 | '@vue/shared': 3.2.40
233 | estree-walker: 2.0.2
234 | magic-string: 0.25.9
235 | postcss: 8.4.17
236 | source-map: 0.6.1
237 |
238 | /@vue/compiler-ssr/3.2.40:
239 | resolution: {integrity: sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==}
240 | dependencies:
241 | '@vue/compiler-dom': 3.2.40
242 | '@vue/shared': 3.2.40
243 |
244 | /@vue/devtools-api/6.4.2:
245 | resolution: {integrity: sha512-6hNZ23h1M2Llky+SIAmVhL7s6BjLtZBCzjIz9iRSBUsysjE7kC39ulW0dH4o/eZtycmSt4qEr6RDVGTIuWu+ow==}
246 | dev: false
247 |
248 | /@vue/reactivity-transform/3.2.40:
249 | resolution: {integrity: sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==}
250 | dependencies:
251 | '@babel/parser': 7.19.3
252 | '@vue/compiler-core': 3.2.40
253 | '@vue/shared': 3.2.40
254 | estree-walker: 2.0.2
255 | magic-string: 0.25.9
256 |
257 | /@vue/reactivity/3.2.38:
258 | resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==}
259 | dependencies:
260 | '@vue/shared': 3.2.38
261 | dev: true
262 |
263 | /@vue/reactivity/3.2.40:
264 | resolution: {integrity: sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==}
265 | dependencies:
266 | '@vue/shared': 3.2.40
267 |
268 | /@vue/runtime-core/3.2.40:
269 | resolution: {integrity: sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg==}
270 | dependencies:
271 | '@vue/reactivity': 3.2.40
272 | '@vue/shared': 3.2.40
273 |
274 | /@vue/runtime-dom/3.2.40:
275 | resolution: {integrity: sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww==}
276 | dependencies:
277 | '@vue/runtime-core': 3.2.40
278 | '@vue/shared': 3.2.40
279 | csstype: 2.6.21
280 |
281 | /@vue/server-renderer/3.2.40_vue@3.2.40:
282 | resolution: {integrity: sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w==}
283 | peerDependencies:
284 | vue: 3.2.40
285 | dependencies:
286 | '@vue/compiler-ssr': 3.2.40
287 | '@vue/shared': 3.2.40
288 | vue: 3.2.40
289 |
290 | /@vue/shared/3.2.38:
291 | resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==}
292 | dev: true
293 |
294 | /@vue/shared/3.2.40:
295 | resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==}
296 |
297 | /@vueuse/core/9.3.0_vue@3.2.40:
298 | resolution: {integrity: sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==}
299 | dependencies:
300 | '@types/web-bluetooth': 0.0.15
301 | '@vueuse/metadata': 9.3.0
302 | '@vueuse/shared': 9.3.0_vue@3.2.40
303 | vue-demi: 0.13.11_vue@3.2.40
304 | transitivePeerDependencies:
305 | - '@vue/composition-api'
306 | - vue
307 | dev: false
308 |
309 | /@vueuse/integrations/9.3.0_yblxu6vzosngh3prdbtjbo3wse:
310 | resolution: {integrity: sha512-KkJpC97VioZUpSw7rvgnqoLgTztLlLLGdYp6WQKn69cJiItsJVSRZrmI+X9YVxPBzuLvRymYZfp0RMyISVFHTw==}
311 | peerDependencies:
312 | async-validator: '*'
313 | axios: '*'
314 | change-case: '*'
315 | drauu: '*'
316 | focus-trap: '*'
317 | fuse.js: '*'
318 | jwt-decode: '*'
319 | nprogress: '*'
320 | qrcode: '*'
321 | universal-cookie: '*'
322 | peerDependenciesMeta:
323 | async-validator:
324 | optional: true
325 | axios:
326 | optional: true
327 | change-case:
328 | optional: true
329 | drauu:
330 | optional: true
331 | focus-trap:
332 | optional: true
333 | fuse.js:
334 | optional: true
335 | jwt-decode:
336 | optional: true
337 | nprogress:
338 | optional: true
339 | qrcode:
340 | optional: true
341 | universal-cookie:
342 | optional: true
343 | dependencies:
344 | '@vueuse/core': 9.3.0_vue@3.2.40
345 | '@vueuse/shared': 9.3.0_vue@3.2.40
346 | axios: 1.1.2
347 | fuse.js: 6.6.2
348 | vue-demi: 0.13.11_vue@3.2.40
349 | transitivePeerDependencies:
350 | - '@vue/composition-api'
351 | - vue
352 | dev: false
353 |
354 | /@vueuse/metadata/9.3.0:
355 | resolution: {integrity: sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==}
356 | dev: false
357 |
358 | /@vueuse/shared/9.3.0_vue@3.2.40:
359 | resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==}
360 | dependencies:
361 | vue-demi: 0.13.11_vue@3.2.40
362 | transitivePeerDependencies:
363 | - '@vue/composition-api'
364 | - vue
365 | dev: false
366 |
367 | /acorn-node/1.8.2:
368 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
369 | dependencies:
370 | acorn: 7.4.1
371 | acorn-walk: 7.2.0
372 | xtend: 4.0.2
373 | dev: true
374 |
375 | /acorn-walk/7.2.0:
376 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
377 | engines: {node: '>=0.4.0'}
378 | dev: true
379 |
380 | /acorn/7.4.1:
381 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
382 | engines: {node: '>=0.4.0'}
383 | hasBin: true
384 | dev: true
385 |
386 | /anymatch/3.1.2:
387 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
388 | engines: {node: '>= 8'}
389 | dependencies:
390 | normalize-path: 3.0.0
391 | picomatch: 2.3.1
392 | dev: true
393 |
394 | /arg/5.0.2:
395 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
396 | dev: true
397 |
398 | /async-validator/4.2.5:
399 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
400 | dev: false
401 |
402 | /asynckit/0.4.0:
403 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
404 | dev: false
405 |
406 | /autoprefixer/10.4.12_postcss@8.4.17:
407 | resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==}
408 | engines: {node: ^10 || ^12 || >=14}
409 | hasBin: true
410 | peerDependencies:
411 | postcss: ^8.1.0
412 | dependencies:
413 | browserslist: 4.21.4
414 | caniuse-lite: 1.0.30001415
415 | fraction.js: 4.2.0
416 | normalize-range: 0.1.2
417 | picocolors: 1.0.0
418 | postcss: 8.4.17
419 | postcss-value-parser: 4.2.0
420 | dev: true
421 |
422 | /axios/1.1.2:
423 | resolution: {integrity: sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA==}
424 | dependencies:
425 | follow-redirects: 1.15.2
426 | form-data: 4.0.0
427 | proxy-from-env: 1.1.0
428 | transitivePeerDependencies:
429 | - debug
430 | dev: false
431 |
432 | /binary-extensions/2.2.0:
433 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
434 | engines: {node: '>=8'}
435 | dev: true
436 |
437 | /braces/3.0.2:
438 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
439 | engines: {node: '>=8'}
440 | dependencies:
441 | fill-range: 7.0.1
442 | dev: true
443 |
444 | /browserslist/4.21.4:
445 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==}
446 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
447 | hasBin: true
448 | dependencies:
449 | caniuse-lite: 1.0.30001415
450 | electron-to-chromium: 1.4.271
451 | node-releases: 2.0.6
452 | update-browserslist-db: 1.0.9_browserslist@4.21.4
453 | dev: true
454 |
455 | /camelcase-css/2.0.1:
456 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
457 | engines: {node: '>= 6'}
458 | dev: true
459 |
460 | /caniuse-lite/1.0.30001415:
461 | resolution: {integrity: sha512-ER+PfgCJUe8BqunLGWd/1EY4g8AzQcsDAVzdtMGKVtQEmKAwaFfU6vb7EAVIqTMYsqxBorYZi2+22Iouj/y7GQ==}
462 | dev: true
463 |
464 | /chokidar/3.5.3:
465 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
466 | engines: {node: '>= 8.10.0'}
467 | dependencies:
468 | anymatch: 3.1.2
469 | braces: 3.0.2
470 | glob-parent: 5.1.2
471 | is-binary-path: 2.1.0
472 | is-glob: 4.0.3
473 | normalize-path: 3.0.0
474 | readdirp: 3.6.0
475 | optionalDependencies:
476 | fsevents: 2.3.2
477 | dev: true
478 |
479 | /color-name/1.1.4:
480 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
481 | dev: true
482 |
483 | /combined-stream/1.0.8:
484 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
485 | engines: {node: '>= 0.8'}
486 | dependencies:
487 | delayed-stream: 1.0.0
488 | dev: false
489 |
490 | /css-render/0.15.11:
491 | resolution: {integrity: sha512-hnLrHPUndVUTF5nmNPRey6hpixK02IPUGdEsm2xRjvJuewToyrVFx9Nmai8rgfVzhTFo5SJVh2PHAtzaIV8JKw==}
492 | dependencies:
493 | '@emotion/hash': 0.8.0
494 | '@types/node': 17.0.45
495 | csstype: 3.0.11
496 | dev: false
497 |
498 | /cssesc/3.0.0:
499 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
500 | engines: {node: '>=4'}
501 | hasBin: true
502 | dev: true
503 |
504 | /csstype/2.6.21:
505 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
506 |
507 | /csstype/3.0.11:
508 | resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
509 | dev: false
510 |
511 | /date-fns-tz/1.3.7_date-fns@2.29.3:
512 | resolution: {integrity: sha512-1t1b8zyJo+UI8aR+g3iqr5fkUHWpd58VBx8J/ZSQ+w7YrGlw80Ag4sA86qkfCXRBLmMc4I2US+aPMd4uKvwj5g==}
513 | peerDependencies:
514 | date-fns: '>=2.0.0'
515 | dependencies:
516 | date-fns: 2.29.3
517 | dev: false
518 |
519 | /date-fns/2.29.3:
520 | resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==}
521 | engines: {node: '>=0.11'}
522 | dev: false
523 |
524 | /defined/1.0.0:
525 | resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==}
526 | dev: true
527 |
528 | /delayed-stream/1.0.0:
529 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
530 | engines: {node: '>=0.4.0'}
531 | dev: false
532 |
533 | /detective/5.2.1:
534 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==}
535 | engines: {node: '>=0.8.0'}
536 | hasBin: true
537 | dependencies:
538 | acorn-node: 1.8.2
539 | defined: 1.0.0
540 | minimist: 1.2.6
541 | dev: true
542 |
543 | /didyoumean/1.2.2:
544 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
545 | dev: true
546 |
547 | /dlv/1.1.3:
548 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
549 | dev: true
550 |
551 | /electron-to-chromium/1.4.271:
552 | resolution: {integrity: sha512-BCPBtK07xR1/uY2HFDtl3wK2De66AW4MSiPlLrnPNxKC/Qhccxd59W73654S3y6Rb/k3hmuGJOBnhjfoutetXA==}
553 | dev: true
554 |
555 | /esbuild-android-64/0.15.10:
556 | resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==}
557 | engines: {node: '>=12'}
558 | cpu: [x64]
559 | os: [android]
560 | requiresBuild: true
561 | optional: true
562 |
563 | /esbuild-android-arm64/0.15.10:
564 | resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==}
565 | engines: {node: '>=12'}
566 | cpu: [arm64]
567 | os: [android]
568 | requiresBuild: true
569 | optional: true
570 |
571 | /esbuild-darwin-64/0.15.10:
572 | resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==}
573 | engines: {node: '>=12'}
574 | cpu: [x64]
575 | os: [darwin]
576 | requiresBuild: true
577 | optional: true
578 |
579 | /esbuild-darwin-arm64/0.15.10:
580 | resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==}
581 | engines: {node: '>=12'}
582 | cpu: [arm64]
583 | os: [darwin]
584 | requiresBuild: true
585 | optional: true
586 |
587 | /esbuild-freebsd-64/0.15.10:
588 | resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==}
589 | engines: {node: '>=12'}
590 | cpu: [x64]
591 | os: [freebsd]
592 | requiresBuild: true
593 | optional: true
594 |
595 | /esbuild-freebsd-arm64/0.15.10:
596 | resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==}
597 | engines: {node: '>=12'}
598 | cpu: [arm64]
599 | os: [freebsd]
600 | requiresBuild: true
601 | optional: true
602 |
603 | /esbuild-linux-32/0.15.10:
604 | resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==}
605 | engines: {node: '>=12'}
606 | cpu: [ia32]
607 | os: [linux]
608 | requiresBuild: true
609 | optional: true
610 |
611 | /esbuild-linux-64/0.15.10:
612 | resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==}
613 | engines: {node: '>=12'}
614 | cpu: [x64]
615 | os: [linux]
616 | requiresBuild: true
617 | optional: true
618 |
619 | /esbuild-linux-arm/0.15.10:
620 | resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==}
621 | engines: {node: '>=12'}
622 | cpu: [arm]
623 | os: [linux]
624 | requiresBuild: true
625 | optional: true
626 |
627 | /esbuild-linux-arm64/0.15.10:
628 | resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==}
629 | engines: {node: '>=12'}
630 | cpu: [arm64]
631 | os: [linux]
632 | requiresBuild: true
633 | optional: true
634 |
635 | /esbuild-linux-mips64le/0.15.10:
636 | resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==}
637 | engines: {node: '>=12'}
638 | cpu: [mips64el]
639 | os: [linux]
640 | requiresBuild: true
641 | optional: true
642 |
643 | /esbuild-linux-ppc64le/0.15.10:
644 | resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==}
645 | engines: {node: '>=12'}
646 | cpu: [ppc64]
647 | os: [linux]
648 | requiresBuild: true
649 | optional: true
650 |
651 | /esbuild-linux-riscv64/0.15.10:
652 | resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==}
653 | engines: {node: '>=12'}
654 | cpu: [riscv64]
655 | os: [linux]
656 | requiresBuild: true
657 | optional: true
658 |
659 | /esbuild-linux-s390x/0.15.10:
660 | resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==}
661 | engines: {node: '>=12'}
662 | cpu: [s390x]
663 | os: [linux]
664 | requiresBuild: true
665 | optional: true
666 |
667 | /esbuild-netbsd-64/0.15.10:
668 | resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==}
669 | engines: {node: '>=12'}
670 | cpu: [x64]
671 | os: [netbsd]
672 | requiresBuild: true
673 | optional: true
674 |
675 | /esbuild-openbsd-64/0.15.10:
676 | resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==}
677 | engines: {node: '>=12'}
678 | cpu: [x64]
679 | os: [openbsd]
680 | requiresBuild: true
681 | optional: true
682 |
683 | /esbuild-sunos-64/0.15.10:
684 | resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==}
685 | engines: {node: '>=12'}
686 | cpu: [x64]
687 | os: [sunos]
688 | requiresBuild: true
689 | optional: true
690 |
691 | /esbuild-windows-32/0.15.10:
692 | resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==}
693 | engines: {node: '>=12'}
694 | cpu: [ia32]
695 | os: [win32]
696 | requiresBuild: true
697 | optional: true
698 |
699 | /esbuild-windows-64/0.15.10:
700 | resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==}
701 | engines: {node: '>=12'}
702 | cpu: [x64]
703 | os: [win32]
704 | requiresBuild: true
705 | optional: true
706 |
707 | /esbuild-windows-arm64/0.15.10:
708 | resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==}
709 | engines: {node: '>=12'}
710 | cpu: [arm64]
711 | os: [win32]
712 | requiresBuild: true
713 | optional: true
714 |
715 | /esbuild/0.15.10:
716 | resolution: {integrity: sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==}
717 | engines: {node: '>=12'}
718 | hasBin: true
719 | requiresBuild: true
720 | optionalDependencies:
721 | '@esbuild/android-arm': 0.15.10
722 | '@esbuild/linux-loong64': 0.15.10
723 | esbuild-android-64: 0.15.10
724 | esbuild-android-arm64: 0.15.10
725 | esbuild-darwin-64: 0.15.10
726 | esbuild-darwin-arm64: 0.15.10
727 | esbuild-freebsd-64: 0.15.10
728 | esbuild-freebsd-arm64: 0.15.10
729 | esbuild-linux-32: 0.15.10
730 | esbuild-linux-64: 0.15.10
731 | esbuild-linux-arm: 0.15.10
732 | esbuild-linux-arm64: 0.15.10
733 | esbuild-linux-mips64le: 0.15.10
734 | esbuild-linux-ppc64le: 0.15.10
735 | esbuild-linux-riscv64: 0.15.10
736 | esbuild-linux-s390x: 0.15.10
737 | esbuild-netbsd-64: 0.15.10
738 | esbuild-openbsd-64: 0.15.10
739 | esbuild-sunos-64: 0.15.10
740 | esbuild-windows-32: 0.15.10
741 | esbuild-windows-64: 0.15.10
742 | esbuild-windows-arm64: 0.15.10
743 |
744 | /escalade/3.1.1:
745 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
746 | engines: {node: '>=6'}
747 | dev: true
748 |
749 | /estree-walker/2.0.2:
750 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
751 |
752 | /evtd/0.2.4:
753 | resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==}
754 | dev: false
755 |
756 | /fast-glob/3.2.12:
757 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
758 | engines: {node: '>=8.6.0'}
759 | dependencies:
760 | '@nodelib/fs.stat': 2.0.5
761 | '@nodelib/fs.walk': 1.2.8
762 | glob-parent: 5.1.2
763 | merge2: 1.4.1
764 | micromatch: 4.0.5
765 | dev: true
766 |
767 | /fastq/1.13.0:
768 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
769 | dependencies:
770 | reusify: 1.0.4
771 | dev: true
772 |
773 | /fill-range/7.0.1:
774 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
775 | engines: {node: '>=8'}
776 | dependencies:
777 | to-regex-range: 5.0.1
778 | dev: true
779 |
780 | /follow-redirects/1.15.2:
781 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
782 | engines: {node: '>=4.0'}
783 | peerDependencies:
784 | debug: '*'
785 | peerDependenciesMeta:
786 | debug:
787 | optional: true
788 | dev: false
789 |
790 | /form-data/4.0.0:
791 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
792 | engines: {node: '>= 6'}
793 | dependencies:
794 | asynckit: 0.4.0
795 | combined-stream: 1.0.8
796 | mime-types: 2.1.35
797 | dev: false
798 |
799 | /fraction.js/4.2.0:
800 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
801 | dev: true
802 |
803 | /fsevents/2.3.2:
804 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
805 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
806 | os: [darwin]
807 | requiresBuild: true
808 | optional: true
809 |
810 | /function-bind/1.1.1:
811 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
812 |
813 | /fuse.js/6.6.2:
814 | resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==}
815 | engines: {node: '>=10'}
816 | dev: false
817 |
818 | /glob-parent/5.1.2:
819 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
820 | engines: {node: '>= 6'}
821 | dependencies:
822 | is-glob: 4.0.3
823 | dev: true
824 |
825 | /glob-parent/6.0.2:
826 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
827 | engines: {node: '>=10.13.0'}
828 | dependencies:
829 | is-glob: 4.0.3
830 | dev: true
831 |
832 | /has/1.0.3:
833 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
834 | engines: {node: '>= 0.4.0'}
835 | dependencies:
836 | function-bind: 1.1.1
837 |
838 | /highlight.js/11.6.0:
839 | resolution: {integrity: sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==}
840 | engines: {node: '>=12.0.0'}
841 | dev: false
842 |
843 | /is-binary-path/2.1.0:
844 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
845 | engines: {node: '>=8'}
846 | dependencies:
847 | binary-extensions: 2.2.0
848 | dev: true
849 |
850 | /is-core-module/2.10.0:
851 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==}
852 | dependencies:
853 | has: 1.0.3
854 |
855 | /is-extglob/2.1.1:
856 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
857 | engines: {node: '>=0.10.0'}
858 | dev: true
859 |
860 | /is-glob/4.0.3:
861 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
862 | engines: {node: '>=0.10.0'}
863 | dependencies:
864 | is-extglob: 2.1.1
865 | dev: true
866 |
867 | /is-number/7.0.0:
868 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
869 | engines: {node: '>=0.12.0'}
870 | dev: true
871 |
872 | /lilconfig/2.0.6:
873 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
874 | engines: {node: '>=10'}
875 | dev: true
876 |
877 | /lodash-es/4.17.21:
878 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
879 | dev: false
880 |
881 | /lodash/4.17.21:
882 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
883 | dev: false
884 |
885 | /lru-cache/6.0.0:
886 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
887 | engines: {node: '>=10'}
888 | dependencies:
889 | yallist: 4.0.0
890 | dev: true
891 |
892 | /magic-string/0.25.9:
893 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
894 | dependencies:
895 | sourcemap-codec: 1.4.8
896 |
897 | /merge2/1.4.1:
898 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
899 | engines: {node: '>= 8'}
900 | dev: true
901 |
902 | /micromatch/4.0.5:
903 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
904 | engines: {node: '>=8.6'}
905 | dependencies:
906 | braces: 3.0.2
907 | picomatch: 2.3.1
908 | dev: true
909 |
910 | /mime-db/1.52.0:
911 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
912 | engines: {node: '>= 0.6'}
913 | dev: false
914 |
915 | /mime-types/2.1.35:
916 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
917 | engines: {node: '>= 0.6'}
918 | dependencies:
919 | mime-db: 1.52.0
920 | dev: false
921 |
922 | /minimist/1.2.6:
923 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
924 | dev: true
925 |
926 | /naive-ui/2.33.3_vue@3.2.40:
927 | resolution: {integrity: sha512-yz2aKdghMVadtvCSBXyjU2bAuGmwLEUcbzmXdUhSdtcbI6mT+mT8vRy43FnbJangPQ87v080q453vtnydNcnhA==}
928 | peerDependencies:
929 | vue: ^3.0.0
930 | dependencies:
931 | '@css-render/plugin-bem': 0.15.11_css-render@0.15.11
932 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.40
933 | '@types/lodash': 4.14.186
934 | '@types/lodash-es': 4.17.6
935 | async-validator: 4.2.5
936 | css-render: 0.15.11
937 | date-fns: 2.29.3
938 | date-fns-tz: 1.3.7_date-fns@2.29.3
939 | evtd: 0.2.4
940 | highlight.js: 11.6.0
941 | lodash: 4.17.21
942 | lodash-es: 4.17.21
943 | seemly: 0.3.6
944 | treemate: 0.3.11
945 | vdirs: 0.1.8_vue@3.2.40
946 | vooks: 0.2.12_vue@3.2.40
947 | vue: 3.2.40
948 | vueuc: 0.4.49_vue@3.2.40
949 | dev: false
950 |
951 | /nanoid/3.3.4:
952 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
953 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
954 | hasBin: true
955 |
956 | /node-releases/2.0.6:
957 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
958 | dev: true
959 |
960 | /normalize-path/3.0.0:
961 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
962 | engines: {node: '>=0.10.0'}
963 | dev: true
964 |
965 | /normalize-range/0.1.2:
966 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
967 | engines: {node: '>=0.10.0'}
968 | dev: true
969 |
970 | /object-hash/3.0.0:
971 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
972 | engines: {node: '>= 6'}
973 | dev: true
974 |
975 | /path-parse/1.0.7:
976 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
977 |
978 | /picocolors/1.0.0:
979 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
980 |
981 | /picomatch/2.3.1:
982 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
983 | engines: {node: '>=8.6'}
984 | dev: true
985 |
986 | /pify/2.3.0:
987 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
988 | engines: {node: '>=0.10.0'}
989 | dev: true
990 |
991 | /postcss-import/14.1.0_postcss@8.4.17:
992 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
993 | engines: {node: '>=10.0.0'}
994 | peerDependencies:
995 | postcss: ^8.0.0
996 | dependencies:
997 | postcss: 8.4.17
998 | postcss-value-parser: 4.2.0
999 | read-cache: 1.0.0
1000 | resolve: 1.22.1
1001 | dev: true
1002 |
1003 | /postcss-js/4.0.0_postcss@8.4.17:
1004 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
1005 | engines: {node: ^12 || ^14 || >= 16}
1006 | peerDependencies:
1007 | postcss: ^8.3.3
1008 | dependencies:
1009 | camelcase-css: 2.0.1
1010 | postcss: 8.4.17
1011 | dev: true
1012 |
1013 | /postcss-load-config/3.1.4_postcss@8.4.17:
1014 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
1015 | engines: {node: '>= 10'}
1016 | peerDependencies:
1017 | postcss: '>=8.0.9'
1018 | ts-node: '>=9.0.0'
1019 | peerDependenciesMeta:
1020 | postcss:
1021 | optional: true
1022 | ts-node:
1023 | optional: true
1024 | dependencies:
1025 | lilconfig: 2.0.6
1026 | postcss: 8.4.17
1027 | yaml: 1.10.2
1028 | dev: true
1029 |
1030 | /postcss-nested/5.0.6_postcss@8.4.17:
1031 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
1032 | engines: {node: '>=12.0'}
1033 | peerDependencies:
1034 | postcss: ^8.2.14
1035 | dependencies:
1036 | postcss: 8.4.17
1037 | postcss-selector-parser: 6.0.10
1038 | dev: true
1039 |
1040 | /postcss-selector-parser/6.0.10:
1041 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
1042 | engines: {node: '>=4'}
1043 | dependencies:
1044 | cssesc: 3.0.0
1045 | util-deprecate: 1.0.2
1046 | dev: true
1047 |
1048 | /postcss-value-parser/4.2.0:
1049 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1050 | dev: true
1051 |
1052 | /postcss/8.4.17:
1053 | resolution: {integrity: sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==}
1054 | engines: {node: ^10 || ^12 || >=14}
1055 | dependencies:
1056 | nanoid: 3.3.4
1057 | picocolors: 1.0.0
1058 | source-map-js: 1.0.2
1059 |
1060 | /proxy-from-env/1.1.0:
1061 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1062 | dev: false
1063 |
1064 | /queue-microtask/1.2.3:
1065 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1066 | dev: true
1067 |
1068 | /quick-lru/5.1.1:
1069 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
1070 | engines: {node: '>=10'}
1071 | dev: true
1072 |
1073 | /read-cache/1.0.0:
1074 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1075 | dependencies:
1076 | pify: 2.3.0
1077 | dev: true
1078 |
1079 | /readdirp/3.6.0:
1080 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1081 | engines: {node: '>=8.10.0'}
1082 | dependencies:
1083 | picomatch: 2.3.1
1084 | dev: true
1085 |
1086 | /resolve/1.22.1:
1087 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
1088 | hasBin: true
1089 | dependencies:
1090 | is-core-module: 2.10.0
1091 | path-parse: 1.0.7
1092 | supports-preserve-symlinks-flag: 1.0.0
1093 |
1094 | /reusify/1.0.4:
1095 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1096 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1097 | dev: true
1098 |
1099 | /rollup/2.78.1:
1100 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==}
1101 | engines: {node: '>=10.0.0'}
1102 | hasBin: true
1103 | optionalDependencies:
1104 | fsevents: 2.3.2
1105 |
1106 | /run-parallel/1.2.0:
1107 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1108 | dependencies:
1109 | queue-microtask: 1.2.3
1110 | dev: true
1111 |
1112 | /seemly/0.3.6:
1113 | resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==}
1114 | dev: false
1115 |
1116 | /semver/7.3.7:
1117 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==}
1118 | engines: {node: '>=10'}
1119 | hasBin: true
1120 | dependencies:
1121 | lru-cache: 6.0.0
1122 | dev: true
1123 |
1124 | /source-map-js/1.0.2:
1125 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1126 | engines: {node: '>=0.10.0'}
1127 |
1128 | /source-map/0.6.1:
1129 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1130 | engines: {node: '>=0.10.0'}
1131 |
1132 | /sourcemap-codec/1.4.8:
1133 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
1134 |
1135 | /supports-preserve-symlinks-flag/1.0.0:
1136 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1137 | engines: {node: '>= 0.4'}
1138 |
1139 | /tailwindcss/3.1.8:
1140 | resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==}
1141 | engines: {node: '>=12.13.0'}
1142 | hasBin: true
1143 | dependencies:
1144 | arg: 5.0.2
1145 | chokidar: 3.5.3
1146 | color-name: 1.1.4
1147 | detective: 5.2.1
1148 | didyoumean: 1.2.2
1149 | dlv: 1.1.3
1150 | fast-glob: 3.2.12
1151 | glob-parent: 6.0.2
1152 | is-glob: 4.0.3
1153 | lilconfig: 2.0.6
1154 | normalize-path: 3.0.0
1155 | object-hash: 3.0.0
1156 | picocolors: 1.0.0
1157 | postcss: 8.4.17
1158 | postcss-import: 14.1.0_postcss@8.4.17
1159 | postcss-js: 4.0.0_postcss@8.4.17
1160 | postcss-load-config: 3.1.4_postcss@8.4.17
1161 | postcss-nested: 5.0.6_postcss@8.4.17
1162 | postcss-selector-parser: 6.0.10
1163 | postcss-value-parser: 4.2.0
1164 | quick-lru: 5.1.1
1165 | resolve: 1.22.1
1166 | transitivePeerDependencies:
1167 | - ts-node
1168 | dev: true
1169 |
1170 | /to-fast-properties/2.0.0:
1171 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1172 | engines: {node: '>=4'}
1173 |
1174 | /to-regex-range/5.0.1:
1175 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1176 | engines: {node: '>=8.0'}
1177 | dependencies:
1178 | is-number: 7.0.0
1179 | dev: true
1180 |
1181 | /treemate/0.3.11:
1182 | resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
1183 | dev: false
1184 |
1185 | /typescript/4.8.4:
1186 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==}
1187 | engines: {node: '>=4.2.0'}
1188 | hasBin: true
1189 | dev: true
1190 |
1191 | /update-browserslist-db/1.0.9_browserslist@4.21.4:
1192 | resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==}
1193 | hasBin: true
1194 | peerDependencies:
1195 | browserslist: '>= 4.21.0'
1196 | dependencies:
1197 | browserslist: 4.21.4
1198 | escalade: 3.1.1
1199 | picocolors: 1.0.0
1200 | dev: true
1201 |
1202 | /util-deprecate/1.0.2:
1203 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1204 | dev: true
1205 |
1206 | /vdirs/0.1.8_vue@3.2.40:
1207 | resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
1208 | peerDependencies:
1209 | vue: ^3.0.11
1210 | dependencies:
1211 | evtd: 0.2.4
1212 | vue: 3.2.40
1213 | dev: false
1214 |
1215 | /vfonts/0.0.3:
1216 | resolution: {integrity: sha512-nguyw8L6Un8eelg1vQ31vIU2ESxqid7EYmy8V+MDeMaHBqaRSkg3dTBToC1PR00D89UzS/SLkfYPnx0Wf23IQQ==}
1217 | dev: false
1218 |
1219 | /vite/3.1.4:
1220 | resolution: {integrity: sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==}
1221 | engines: {node: ^14.18.0 || >=16.0.0}
1222 | hasBin: true
1223 | peerDependencies:
1224 | less: '*'
1225 | sass: '*'
1226 | stylus: '*'
1227 | terser: ^5.4.0
1228 | peerDependenciesMeta:
1229 | less:
1230 | optional: true
1231 | sass:
1232 | optional: true
1233 | stylus:
1234 | optional: true
1235 | terser:
1236 | optional: true
1237 | dependencies:
1238 | esbuild: 0.15.10
1239 | postcss: 8.4.17
1240 | resolve: 1.22.1
1241 | rollup: 2.78.1
1242 | optionalDependencies:
1243 | fsevents: 2.3.2
1244 |
1245 | /vooks/0.2.12_vue@3.2.40:
1246 | resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
1247 | peerDependencies:
1248 | vue: ^3.0.0
1249 | dependencies:
1250 | evtd: 0.2.4
1251 | vue: 3.2.40
1252 | dev: false
1253 |
1254 | /vue-demi/0.13.11_vue@3.2.40:
1255 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
1256 | engines: {node: '>=12'}
1257 | hasBin: true
1258 | requiresBuild: true
1259 | peerDependencies:
1260 | '@vue/composition-api': ^1.0.0-rc.1
1261 | vue: ^3.0.0-0 || ^2.6.0
1262 | peerDependenciesMeta:
1263 | '@vue/composition-api':
1264 | optional: true
1265 | dependencies:
1266 | vue: 3.2.40
1267 | dev: false
1268 |
1269 | /vue-router/4.1.5_vue@3.2.40:
1270 | resolution: {integrity: sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==}
1271 | peerDependencies:
1272 | vue: ^3.2.0
1273 | dependencies:
1274 | '@vue/devtools-api': 6.4.2
1275 | vue: 3.2.40
1276 | dev: false
1277 |
1278 | /vue-tsc/0.40.13_typescript@4.8.4:
1279 | resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==}
1280 | hasBin: true
1281 | peerDependencies:
1282 | typescript: '*'
1283 | dependencies:
1284 | '@volar/vue-language-core': 0.40.13
1285 | '@volar/vue-typescript': 0.40.13
1286 | typescript: 4.8.4
1287 | dev: true
1288 |
1289 | /vue/3.2.40:
1290 | resolution: {integrity: sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A==}
1291 | dependencies:
1292 | '@vue/compiler-dom': 3.2.40
1293 | '@vue/compiler-sfc': 3.2.40
1294 | '@vue/runtime-dom': 3.2.40
1295 | '@vue/server-renderer': 3.2.40_vue@3.2.40
1296 | '@vue/shared': 3.2.40
1297 |
1298 | /vueuc/0.4.49_vue@3.2.40:
1299 | resolution: {integrity: sha512-WarAC44a/Yx78CxkAgROYLq+LkAeCGA/6wHidVoFmHLbzyF3SiP2nzRNGD/8zJeJInXv18EnWK6A//eGgMMq8w==}
1300 | peerDependencies:
1301 | vue: ^3.0.11
1302 | dependencies:
1303 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.40
1304 | '@juggle/resize-observer': 3.4.0
1305 | css-render: 0.15.11
1306 | evtd: 0.2.4
1307 | seemly: 0.3.6
1308 | vdirs: 0.1.8_vue@3.2.40
1309 | vooks: 0.2.12_vue@3.2.40
1310 | vue: 3.2.40
1311 | dev: false
1312 |
1313 | /xtend/4.0.2:
1314 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
1315 | engines: {node: '>=0.4'}
1316 | dev: true
1317 |
1318 | /yallist/4.0.0:
1319 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1320 | dev: true
1321 |
1322 | /yaml/1.10.2:
1323 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1324 | engines: {node: '>= 6'}
1325 | dev: true
1326 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | importers:
4 |
5 | .:
6 | specifiers: {}
7 |
8 | packages/client:
9 | specifiers:
10 | '@vicons/fa': ^0.12.0
11 | '@vicons/fluent': ^0.12.0
12 | '@vicons/ionicons5': ^0.12.0
13 | '@vitejs/plugin-vue': ^3.1.0
14 | '@vueuse/core': ^9.3.0
15 | '@vueuse/integrations': ^9.3.0
16 | autoprefixer: ^10.4.12
17 | axios: ^1.1.2
18 | fuse.js: ^6.6.2
19 | naive-ui: ^2.33.3
20 | postcss: ^8.4.17
21 | tailwindcss: ^3.1.8
22 | typescript: ^4.6.4
23 | vfonts: ^0.0.3
24 | vite: ^3.1.0
25 | vue: ^3.2.37
26 | vue-router: '4'
27 | vue-tsc: ^0.40.4
28 | dependencies:
29 | '@vicons/fluent': 0.12.0
30 | '@vicons/ionicons5': 0.12.0
31 | '@vueuse/core': 9.3.0_vue@3.2.41
32 | '@vueuse/integrations': 9.3.0_hantc6qpdbc7anq3owc6fzcp54
33 | axios: 1.1.3
34 | fuse.js: 6.6.2
35 | naive-ui: 2.33.5_vue@3.2.41
36 | vfonts: 0.0.3
37 | vite: 3.1.8
38 | vue: 3.2.41
39 | vue-router: 4.1.5_vue@3.2.41
40 | devDependencies:
41 | '@vicons/fa': 0.12.0
42 | '@vitejs/plugin-vue': 3.1.2_vite@3.1.8+vue@3.2.41
43 | autoprefixer: 10.4.12_postcss@8.4.18
44 | postcss: 8.4.18
45 | tailwindcss: 3.1.8
46 | typescript: 4.8.4
47 | vue-tsc: 0.40.13_typescript@4.8.4
48 |
49 | packages/server:
50 | specifiers:
51 | '@types/bcrypt': ^5.0.0
52 | '@types/cookie-parser': ^1.4.3
53 | '@types/cors': ^2.8.12
54 | '@types/express': ^4.17.14
55 | '@types/jsonwebtoken': ^8.5.9
56 | '@types/node': ^18.7.23
57 | '@types/ping': ^0.4.1
58 | axios: ^1.1.0
59 | bcrypt: ^5.1.0
60 | cookie-parser: ^1.4.6
61 | cors: ^2.8.5
62 | dotenv: ^16.0.3
63 | express: ^4.18.1
64 | jsonwebtoken: ^8.5.1
65 | nodemon: ^2.0.20
66 | ping: ^0.4.2
67 | ts-node: ^10.9.1
68 | typescript: ^4.8.4
69 | dependencies:
70 | axios: 1.1.3
71 | bcrypt: 5.1.0
72 | cookie-parser: 1.4.6
73 | cors: 2.8.5
74 | dotenv: 16.0.3
75 | express: 4.18.2
76 | jsonwebtoken: 8.5.1
77 | ping: 0.4.2
78 | devDependencies:
79 | '@types/bcrypt': 5.0.0
80 | '@types/cookie-parser': 1.4.3
81 | '@types/cors': 2.8.12
82 | '@types/express': 4.17.14
83 | '@types/jsonwebtoken': 8.5.9
84 | '@types/node': 18.11.0
85 | '@types/ping': 0.4.1
86 | nodemon: 2.0.20
87 | ts-node: 10.9.1_o6ib7qqltxpe7qrskddglns2ga
88 | typescript: 4.8.4
89 |
90 | packages:
91 |
92 | /@babel/helper-string-parser/7.19.4:
93 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==}
94 | engines: {node: '>=6.9.0'}
95 |
96 | /@babel/helper-validator-identifier/7.19.1:
97 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
98 | engines: {node: '>=6.9.0'}
99 |
100 | /@babel/parser/7.19.4:
101 | resolution: {integrity: sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==}
102 | engines: {node: '>=6.0.0'}
103 | hasBin: true
104 | dependencies:
105 | '@babel/types': 7.19.4
106 |
107 | /@babel/types/7.19.4:
108 | resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==}
109 | engines: {node: '>=6.9.0'}
110 | dependencies:
111 | '@babel/helper-string-parser': 7.19.4
112 | '@babel/helper-validator-identifier': 7.19.1
113 | to-fast-properties: 2.0.0
114 |
115 | /@cspotcode/source-map-support/0.8.1:
116 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
117 | engines: {node: '>=12'}
118 | dependencies:
119 | '@jridgewell/trace-mapping': 0.3.9
120 | dev: true
121 |
122 | /@css-render/plugin-bem/0.15.11_css-render@0.15.11:
123 | resolution: {integrity: sha512-Bn8qadYPIz5DhZ4obTGHOJzeziQH6kY0+Fk5AEvwuuy378SLwwvXuuoechLjBHcgKkPCM03Oo4dDSGP/6NMdyw==}
124 | peerDependencies:
125 | css-render: ~0.15.11
126 | dependencies:
127 | css-render: 0.15.11
128 | dev: false
129 |
130 | /@css-render/vue3-ssr/0.15.11_vue@3.2.41:
131 | resolution: {integrity: sha512-n+SuqLPbY30FUTM8slX75OaEG+c8XlTOFrAklekX2XQGvBbz9XdBE6hTEgGlV5kPcTMqTJeCG7Vzhs9/29VC7w==}
132 | peerDependencies:
133 | vue: ^3.0.11
134 | dependencies:
135 | vue: 3.2.41
136 | dev: false
137 |
138 | /@emotion/hash/0.8.0:
139 | resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
140 | dev: false
141 |
142 | /@esbuild/android-arm/0.15.11:
143 | resolution: {integrity: sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==}
144 | engines: {node: '>=12'}
145 | cpu: [arm]
146 | os: [android]
147 | requiresBuild: true
148 | optional: true
149 |
150 | /@esbuild/linux-loong64/0.15.11:
151 | resolution: {integrity: sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==}
152 | engines: {node: '>=12'}
153 | cpu: [loong64]
154 | os: [linux]
155 | requiresBuild: true
156 | optional: true
157 |
158 | /@jridgewell/resolve-uri/3.1.0:
159 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
160 | engines: {node: '>=6.0.0'}
161 | dev: true
162 |
163 | /@jridgewell/sourcemap-codec/1.4.14:
164 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
165 | dev: true
166 |
167 | /@jridgewell/trace-mapping/0.3.9:
168 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
169 | dependencies:
170 | '@jridgewell/resolve-uri': 3.1.0
171 | '@jridgewell/sourcemap-codec': 1.4.14
172 | dev: true
173 |
174 | /@juggle/resize-observer/3.4.0:
175 | resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
176 | dev: false
177 |
178 | /@mapbox/node-pre-gyp/1.0.10:
179 | resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==}
180 | hasBin: true
181 | dependencies:
182 | detect-libc: 2.0.1
183 | https-proxy-agent: 5.0.1
184 | make-dir: 3.1.0
185 | node-fetch: 2.6.7
186 | nopt: 5.0.0
187 | npmlog: 5.0.1
188 | rimraf: 3.0.2
189 | semver: 7.3.8
190 | tar: 6.1.11
191 | transitivePeerDependencies:
192 | - encoding
193 | - supports-color
194 | dev: false
195 |
196 | /@nodelib/fs.scandir/2.1.5:
197 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
198 | engines: {node: '>= 8'}
199 | dependencies:
200 | '@nodelib/fs.stat': 2.0.5
201 | run-parallel: 1.2.0
202 | dev: true
203 |
204 | /@nodelib/fs.stat/2.0.5:
205 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
206 | engines: {node: '>= 8'}
207 | dev: true
208 |
209 | /@nodelib/fs.walk/1.2.8:
210 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
211 | engines: {node: '>= 8'}
212 | dependencies:
213 | '@nodelib/fs.scandir': 2.1.5
214 | fastq: 1.13.0
215 | dev: true
216 |
217 | /@tsconfig/node10/1.0.9:
218 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
219 | dev: true
220 |
221 | /@tsconfig/node12/1.0.11:
222 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
223 | dev: true
224 |
225 | /@tsconfig/node14/1.0.3:
226 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
227 | dev: true
228 |
229 | /@tsconfig/node16/1.0.3:
230 | resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
231 | dev: true
232 |
233 | /@types/bcrypt/5.0.0:
234 | resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==}
235 | dependencies:
236 | '@types/node': 18.11.0
237 | dev: true
238 |
239 | /@types/body-parser/1.19.2:
240 | resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
241 | dependencies:
242 | '@types/connect': 3.4.35
243 | '@types/node': 18.11.0
244 | dev: true
245 |
246 | /@types/connect/3.4.35:
247 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
248 | dependencies:
249 | '@types/node': 18.11.0
250 | dev: true
251 |
252 | /@types/cookie-parser/1.4.3:
253 | resolution: {integrity: sha512-CqSKwFwefj4PzZ5n/iwad/bow2hTCh0FlNAeWLtQM3JA/NX/iYagIpWG2cf1bQKQ2c9gU2log5VUCrn7LDOs0w==}
254 | dependencies:
255 | '@types/express': 4.17.14
256 | dev: true
257 |
258 | /@types/cors/2.8.12:
259 | resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==}
260 | dev: true
261 |
262 | /@types/express-serve-static-core/4.17.31:
263 | resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==}
264 | dependencies:
265 | '@types/node': 18.11.0
266 | '@types/qs': 6.9.7
267 | '@types/range-parser': 1.2.4
268 | dev: true
269 |
270 | /@types/express/4.17.14:
271 | resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==}
272 | dependencies:
273 | '@types/body-parser': 1.19.2
274 | '@types/express-serve-static-core': 4.17.31
275 | '@types/qs': 6.9.7
276 | '@types/serve-static': 1.15.0
277 | dev: true
278 |
279 | /@types/jsonwebtoken/8.5.9:
280 | resolution: {integrity: sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==}
281 | dependencies:
282 | '@types/node': 18.11.0
283 | dev: true
284 |
285 | /@types/lodash-es/4.17.6:
286 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==}
287 | dependencies:
288 | '@types/lodash': 4.14.186
289 | dev: false
290 |
291 | /@types/lodash/4.14.186:
292 | resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==}
293 | dev: false
294 |
295 | /@types/mime/3.0.1:
296 | resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==}
297 | dev: true
298 |
299 | /@types/node/17.0.45:
300 | resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
301 | dev: false
302 |
303 | /@types/node/18.11.0:
304 | resolution: {integrity: sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==}
305 | dev: true
306 |
307 | /@types/ping/0.4.1:
308 | resolution: {integrity: sha512-q/D+xQvoqrHvntvz2A0Pb0ImYwnN3zakluUp8O2qoogGoVMVbdY2K/ulxHcCh9TzYzVoojayHBa9gYQDIZ4v0A==}
309 | dev: true
310 |
311 | /@types/qs/6.9.7:
312 | resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
313 | dev: true
314 |
315 | /@types/range-parser/1.2.4:
316 | resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==}
317 | dev: true
318 |
319 | /@types/serve-static/1.15.0:
320 | resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==}
321 | dependencies:
322 | '@types/mime': 3.0.1
323 | '@types/node': 18.11.0
324 | dev: true
325 |
326 | /@types/web-bluetooth/0.0.15:
327 | resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==}
328 | dev: false
329 |
330 | /@vicons/fa/0.12.0:
331 | resolution: {integrity: sha512-g2PIeJLsTHUjt6bK63LxqC0uYQB7iu+xViJOxvp1s8b9/akpXVPVWjDTTsP980/0KYyMMe4U7F/aUo7wY+MsXA==}
332 | dev: true
333 |
334 | /@vicons/fluent/0.12.0:
335 | resolution: {integrity: sha512-ATCiqPuiJ6RI5GBlD3BIpZ9Xw4MsCA4RpI5oR6MCti4quS4mX1Gp6N74FCzw7lgOj+80rV4HMKhZTVInwimpVQ==}
336 | dev: false
337 |
338 | /@vicons/ionicons5/0.12.0:
339 | resolution: {integrity: sha512-Iy1EUVRpX0WWxeu1VIReR1zsZLMc4fqpt223czR+Rpnrwu7pt46nbnC2ycO7ItI/uqDLJxnbcMC7FujKs9IfFA==}
340 | dev: false
341 |
342 | /@vitejs/plugin-vue/3.1.2_vite@3.1.8+vue@3.2.41:
343 | resolution: {integrity: sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==}
344 | engines: {node: ^14.18.0 || >=16.0.0}
345 | peerDependencies:
346 | vite: ^3.0.0
347 | vue: ^3.2.25
348 | dependencies:
349 | vite: 3.1.8
350 | vue: 3.2.41
351 | dev: true
352 |
353 | /@volar/code-gen/0.40.13:
354 | resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==}
355 | dependencies:
356 | '@volar/source-map': 0.40.13
357 | dev: true
358 |
359 | /@volar/source-map/0.40.13:
360 | resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==}
361 | dependencies:
362 | '@vue/reactivity': 3.2.38
363 | dev: true
364 |
365 | /@volar/typescript-faster/0.40.13:
366 | resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==}
367 | dependencies:
368 | semver: 7.3.8
369 | dev: true
370 |
371 | /@volar/vue-language-core/0.40.13:
372 | resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==}
373 | dependencies:
374 | '@volar/code-gen': 0.40.13
375 | '@volar/source-map': 0.40.13
376 | '@vue/compiler-core': 3.2.41
377 | '@vue/compiler-dom': 3.2.41
378 | '@vue/compiler-sfc': 3.2.41
379 | '@vue/reactivity': 3.2.41
380 | '@vue/shared': 3.2.41
381 | dev: true
382 |
383 | /@volar/vue-typescript/0.40.13:
384 | resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==}
385 | dependencies:
386 | '@volar/code-gen': 0.40.13
387 | '@volar/typescript-faster': 0.40.13
388 | '@volar/vue-language-core': 0.40.13
389 | dev: true
390 |
391 | /@vue/compiler-core/3.2.41:
392 | resolution: {integrity: sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==}
393 | dependencies:
394 | '@babel/parser': 7.19.4
395 | '@vue/shared': 3.2.41
396 | estree-walker: 2.0.2
397 | source-map: 0.6.1
398 |
399 | /@vue/compiler-dom/3.2.41:
400 | resolution: {integrity: sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==}
401 | dependencies:
402 | '@vue/compiler-core': 3.2.41
403 | '@vue/shared': 3.2.41
404 |
405 | /@vue/compiler-sfc/3.2.41:
406 | resolution: {integrity: sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==}
407 | dependencies:
408 | '@babel/parser': 7.19.4
409 | '@vue/compiler-core': 3.2.41
410 | '@vue/compiler-dom': 3.2.41
411 | '@vue/compiler-ssr': 3.2.41
412 | '@vue/reactivity-transform': 3.2.41
413 | '@vue/shared': 3.2.41
414 | estree-walker: 2.0.2
415 | magic-string: 0.25.9
416 | postcss: 8.4.18
417 | source-map: 0.6.1
418 |
419 | /@vue/compiler-ssr/3.2.41:
420 | resolution: {integrity: sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==}
421 | dependencies:
422 | '@vue/compiler-dom': 3.2.41
423 | '@vue/shared': 3.2.41
424 |
425 | /@vue/devtools-api/6.4.4:
426 | resolution: {integrity: sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw==}
427 | dev: false
428 |
429 | /@vue/reactivity-transform/3.2.41:
430 | resolution: {integrity: sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==}
431 | dependencies:
432 | '@babel/parser': 7.19.4
433 | '@vue/compiler-core': 3.2.41
434 | '@vue/shared': 3.2.41
435 | estree-walker: 2.0.2
436 | magic-string: 0.25.9
437 |
438 | /@vue/reactivity/3.2.38:
439 | resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==}
440 | dependencies:
441 | '@vue/shared': 3.2.38
442 | dev: true
443 |
444 | /@vue/reactivity/3.2.41:
445 | resolution: {integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==}
446 | dependencies:
447 | '@vue/shared': 3.2.41
448 |
449 | /@vue/runtime-core/3.2.41:
450 | resolution: {integrity: sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==}
451 | dependencies:
452 | '@vue/reactivity': 3.2.41
453 | '@vue/shared': 3.2.41
454 |
455 | /@vue/runtime-dom/3.2.41:
456 | resolution: {integrity: sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==}
457 | dependencies:
458 | '@vue/runtime-core': 3.2.41
459 | '@vue/shared': 3.2.41
460 | csstype: 2.6.21
461 |
462 | /@vue/server-renderer/3.2.41_vue@3.2.41:
463 | resolution: {integrity: sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==}
464 | peerDependencies:
465 | vue: 3.2.41
466 | dependencies:
467 | '@vue/compiler-ssr': 3.2.41
468 | '@vue/shared': 3.2.41
469 | vue: 3.2.41
470 |
471 | /@vue/shared/3.2.38:
472 | resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==}
473 | dev: true
474 |
475 | /@vue/shared/3.2.41:
476 | resolution: {integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==}
477 |
478 | /@vueuse/core/9.3.0_vue@3.2.41:
479 | resolution: {integrity: sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==}
480 | dependencies:
481 | '@types/web-bluetooth': 0.0.15
482 | '@vueuse/metadata': 9.3.0
483 | '@vueuse/shared': 9.3.0_vue@3.2.41
484 | vue-demi: 0.13.11_vue@3.2.41
485 | transitivePeerDependencies:
486 | - '@vue/composition-api'
487 | - vue
488 | dev: false
489 |
490 | /@vueuse/integrations/9.3.0_hantc6qpdbc7anq3owc6fzcp54:
491 | resolution: {integrity: sha512-KkJpC97VioZUpSw7rvgnqoLgTztLlLLGdYp6WQKn69cJiItsJVSRZrmI+X9YVxPBzuLvRymYZfp0RMyISVFHTw==}
492 | peerDependencies:
493 | async-validator: '*'
494 | axios: '*'
495 | change-case: '*'
496 | drauu: '*'
497 | focus-trap: '*'
498 | fuse.js: '*'
499 | jwt-decode: '*'
500 | nprogress: '*'
501 | qrcode: '*'
502 | universal-cookie: '*'
503 | peerDependenciesMeta:
504 | async-validator:
505 | optional: true
506 | axios:
507 | optional: true
508 | change-case:
509 | optional: true
510 | drauu:
511 | optional: true
512 | focus-trap:
513 | optional: true
514 | fuse.js:
515 | optional: true
516 | jwt-decode:
517 | optional: true
518 | nprogress:
519 | optional: true
520 | qrcode:
521 | optional: true
522 | universal-cookie:
523 | optional: true
524 | dependencies:
525 | '@vueuse/core': 9.3.0_vue@3.2.41
526 | '@vueuse/shared': 9.3.0_vue@3.2.41
527 | axios: 1.1.3
528 | fuse.js: 6.6.2
529 | vue-demi: 0.13.11_vue@3.2.41
530 | transitivePeerDependencies:
531 | - '@vue/composition-api'
532 | - vue
533 | dev: false
534 |
535 | /@vueuse/metadata/9.3.0:
536 | resolution: {integrity: sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==}
537 | dev: false
538 |
539 | /@vueuse/shared/9.3.0_vue@3.2.41:
540 | resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==}
541 | dependencies:
542 | vue-demi: 0.13.11_vue@3.2.41
543 | transitivePeerDependencies:
544 | - '@vue/composition-api'
545 | - vue
546 | dev: false
547 |
548 | /abbrev/1.1.1:
549 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
550 |
551 | /accepts/1.3.8:
552 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
553 | engines: {node: '>= 0.6'}
554 | dependencies:
555 | mime-types: 2.1.35
556 | negotiator: 0.6.3
557 | dev: false
558 |
559 | /acorn-node/1.8.2:
560 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
561 | dependencies:
562 | acorn: 7.4.1
563 | acorn-walk: 7.2.0
564 | xtend: 4.0.2
565 | dev: true
566 |
567 | /acorn-walk/7.2.0:
568 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
569 | engines: {node: '>=0.4.0'}
570 | dev: true
571 |
572 | /acorn-walk/8.2.0:
573 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
574 | engines: {node: '>=0.4.0'}
575 | dev: true
576 |
577 | /acorn/7.4.1:
578 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
579 | engines: {node: '>=0.4.0'}
580 | hasBin: true
581 | dev: true
582 |
583 | /acorn/8.8.0:
584 | resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==}
585 | engines: {node: '>=0.4.0'}
586 | hasBin: true
587 | dev: true
588 |
589 | /agent-base/6.0.2:
590 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
591 | engines: {node: '>= 6.0.0'}
592 | dependencies:
593 | debug: 4.3.4
594 | transitivePeerDependencies:
595 | - supports-color
596 | dev: false
597 |
598 | /ansi-regex/5.0.1:
599 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
600 | engines: {node: '>=8'}
601 | dev: false
602 |
603 | /anymatch/3.1.2:
604 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
605 | engines: {node: '>= 8'}
606 | dependencies:
607 | normalize-path: 3.0.0
608 | picomatch: 2.3.1
609 | dev: true
610 |
611 | /aproba/2.0.0:
612 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
613 | dev: false
614 |
615 | /are-we-there-yet/2.0.0:
616 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
617 | engines: {node: '>=10'}
618 | dependencies:
619 | delegates: 1.0.0
620 | readable-stream: 3.6.0
621 | dev: false
622 |
623 | /arg/4.1.3:
624 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
625 | dev: true
626 |
627 | /arg/5.0.2:
628 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
629 | dev: true
630 |
631 | /array-flatten/1.1.1:
632 | resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=}
633 | dev: false
634 |
635 | /async-validator/4.2.5:
636 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
637 | dev: false
638 |
639 | /asynckit/0.4.0:
640 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
641 | dev: false
642 |
643 | /autoprefixer/10.4.12_postcss@8.4.18:
644 | resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==}
645 | engines: {node: ^10 || ^12 || >=14}
646 | hasBin: true
647 | peerDependencies:
648 | postcss: ^8.1.0
649 | dependencies:
650 | browserslist: 4.21.4
651 | caniuse-lite: 1.0.30001419
652 | fraction.js: 4.2.0
653 | normalize-range: 0.1.2
654 | picocolors: 1.0.0
655 | postcss: 8.4.18
656 | postcss-value-parser: 4.2.0
657 | dev: true
658 |
659 | /axios/1.1.3:
660 | resolution: {integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==}
661 | dependencies:
662 | follow-redirects: 1.15.2
663 | form-data: 4.0.0
664 | proxy-from-env: 1.1.0
665 | transitivePeerDependencies:
666 | - debug
667 | dev: false
668 |
669 | /balanced-match/1.0.2:
670 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
671 |
672 | /bcrypt/5.1.0:
673 | resolution: {integrity: sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==}
674 | engines: {node: '>= 10.0.0'}
675 | requiresBuild: true
676 | dependencies:
677 | '@mapbox/node-pre-gyp': 1.0.10
678 | node-addon-api: 5.0.0
679 | transitivePeerDependencies:
680 | - encoding
681 | - supports-color
682 | dev: false
683 |
684 | /binary-extensions/2.2.0:
685 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
686 | engines: {node: '>=8'}
687 | dev: true
688 |
689 | /body-parser/1.20.1:
690 | resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
691 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
692 | dependencies:
693 | bytes: 3.1.2
694 | content-type: 1.0.4
695 | debug: 2.6.9
696 | depd: 2.0.0
697 | destroy: 1.2.0
698 | http-errors: 2.0.0
699 | iconv-lite: 0.4.24
700 | on-finished: 2.4.1
701 | qs: 6.11.0
702 | raw-body: 2.5.1
703 | type-is: 1.6.18
704 | unpipe: 1.0.0
705 | transitivePeerDependencies:
706 | - supports-color
707 | dev: false
708 |
709 | /brace-expansion/1.1.11:
710 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
711 | dependencies:
712 | balanced-match: 1.0.2
713 | concat-map: 0.0.1
714 |
715 | /braces/3.0.2:
716 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
717 | engines: {node: '>=8'}
718 | dependencies:
719 | fill-range: 7.0.1
720 | dev: true
721 |
722 | /browserslist/4.21.4:
723 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==}
724 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
725 | hasBin: true
726 | dependencies:
727 | caniuse-lite: 1.0.30001419
728 | electron-to-chromium: 1.4.283
729 | node-releases: 2.0.6
730 | update-browserslist-db: 1.0.10_browserslist@4.21.4
731 | dev: true
732 |
733 | /buffer-equal-constant-time/1.0.1:
734 | resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=}
735 | dev: false
736 |
737 | /bytes/3.1.2:
738 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
739 | engines: {node: '>= 0.8'}
740 | dev: false
741 |
742 | /call-bind/1.0.2:
743 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
744 | dependencies:
745 | function-bind: 1.1.1
746 | get-intrinsic: 1.1.3
747 | dev: false
748 |
749 | /camelcase-css/2.0.1:
750 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
751 | engines: {node: '>= 6'}
752 | dev: true
753 |
754 | /caniuse-lite/1.0.30001419:
755 | resolution: {integrity: sha512-aFO1r+g6R7TW+PNQxKzjITwLOyDhVRLjW0LcwS/HCZGUUKTGNp9+IwLC4xyDSZBygVL/mxaFR3HIV6wEKQuSzw==}
756 | dev: true
757 |
758 | /chokidar/3.5.3:
759 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
760 | engines: {node: '>= 8.10.0'}
761 | dependencies:
762 | anymatch: 3.1.2
763 | braces: 3.0.2
764 | glob-parent: 5.1.2
765 | is-binary-path: 2.1.0
766 | is-glob: 4.0.3
767 | normalize-path: 3.0.0
768 | readdirp: 3.6.0
769 | optionalDependencies:
770 | fsevents: 2.3.2
771 | dev: true
772 |
773 | /chownr/2.0.0:
774 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
775 | engines: {node: '>=10'}
776 | dev: false
777 |
778 | /color-name/1.1.4:
779 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
780 | dev: true
781 |
782 | /color-support/1.1.3:
783 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
784 | hasBin: true
785 | dev: false
786 |
787 | /combined-stream/1.0.8:
788 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
789 | engines: {node: '>= 0.8'}
790 | dependencies:
791 | delayed-stream: 1.0.0
792 | dev: false
793 |
794 | /concat-map/0.0.1:
795 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
796 |
797 | /console-control-strings/1.1.0:
798 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
799 | dev: false
800 |
801 | /content-disposition/0.5.4:
802 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
803 | engines: {node: '>= 0.6'}
804 | dependencies:
805 | safe-buffer: 5.2.1
806 | dev: false
807 |
808 | /content-type/1.0.4:
809 | resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==}
810 | engines: {node: '>= 0.6'}
811 | dev: false
812 |
813 | /cookie-parser/1.4.6:
814 | resolution: {integrity: sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==}
815 | engines: {node: '>= 0.8.0'}
816 | dependencies:
817 | cookie: 0.4.1
818 | cookie-signature: 1.0.6
819 | dev: false
820 |
821 | /cookie-signature/1.0.6:
822 | resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=}
823 | dev: false
824 |
825 | /cookie/0.4.1:
826 | resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==}
827 | engines: {node: '>= 0.6'}
828 | dev: false
829 |
830 | /cookie/0.5.0:
831 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
832 | engines: {node: '>= 0.6'}
833 | dev: false
834 |
835 | /cors/2.8.5:
836 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
837 | engines: {node: '>= 0.10'}
838 | dependencies:
839 | object-assign: 4.1.1
840 | vary: 1.1.2
841 | dev: false
842 |
843 | /create-require/1.1.1:
844 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
845 | dev: true
846 |
847 | /css-render/0.15.11:
848 | resolution: {integrity: sha512-hnLrHPUndVUTF5nmNPRey6hpixK02IPUGdEsm2xRjvJuewToyrVFx9Nmai8rgfVzhTFo5SJVh2PHAtzaIV8JKw==}
849 | dependencies:
850 | '@emotion/hash': 0.8.0
851 | '@types/node': 17.0.45
852 | csstype: 3.0.11
853 | dev: false
854 |
855 | /cssesc/3.0.0:
856 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
857 | engines: {node: '>=4'}
858 | hasBin: true
859 | dev: true
860 |
861 | /csstype/2.6.21:
862 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
863 |
864 | /csstype/3.0.11:
865 | resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
866 | dev: false
867 |
868 | /date-fns-tz/1.3.7_date-fns@2.29.3:
869 | resolution: {integrity: sha512-1t1b8zyJo+UI8aR+g3iqr5fkUHWpd58VBx8J/ZSQ+w7YrGlw80Ag4sA86qkfCXRBLmMc4I2US+aPMd4uKvwj5g==}
870 | peerDependencies:
871 | date-fns: '>=2.0.0'
872 | dependencies:
873 | date-fns: 2.29.3
874 | dev: false
875 |
876 | /date-fns/2.29.3:
877 | resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==}
878 | engines: {node: '>=0.11'}
879 | dev: false
880 |
881 | /debug/2.6.9:
882 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
883 | peerDependencies:
884 | supports-color: '*'
885 | peerDependenciesMeta:
886 | supports-color:
887 | optional: true
888 | dependencies:
889 | ms: 2.0.0
890 | dev: false
891 |
892 | /debug/3.2.7_supports-color@5.5.0:
893 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
894 | peerDependencies:
895 | supports-color: '*'
896 | peerDependenciesMeta:
897 | supports-color:
898 | optional: true
899 | dependencies:
900 | ms: 2.1.3
901 | supports-color: 5.5.0
902 | dev: true
903 |
904 | /debug/4.3.4:
905 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
906 | engines: {node: '>=6.0'}
907 | peerDependencies:
908 | supports-color: '*'
909 | peerDependenciesMeta:
910 | supports-color:
911 | optional: true
912 | dependencies:
913 | ms: 2.1.2
914 | dev: false
915 |
916 | /defined/1.0.1:
917 | resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
918 | dev: true
919 |
920 | /delayed-stream/1.0.0:
921 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
922 | engines: {node: '>=0.4.0'}
923 | dev: false
924 |
925 | /delegates/1.0.0:
926 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
927 | dev: false
928 |
929 | /depd/2.0.0:
930 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
931 | engines: {node: '>= 0.8'}
932 | dev: false
933 |
934 | /destroy/1.2.0:
935 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
936 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
937 | dev: false
938 |
939 | /detect-libc/2.0.1:
940 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==}
941 | engines: {node: '>=8'}
942 | dev: false
943 |
944 | /detective/5.2.1:
945 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==}
946 | engines: {node: '>=0.8.0'}
947 | hasBin: true
948 | dependencies:
949 | acorn-node: 1.8.2
950 | defined: 1.0.1
951 | minimist: 1.2.7
952 | dev: true
953 |
954 | /didyoumean/1.2.2:
955 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
956 | dev: true
957 |
958 | /diff/4.0.2:
959 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
960 | engines: {node: '>=0.3.1'}
961 | dev: true
962 |
963 | /dlv/1.1.3:
964 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
965 | dev: true
966 |
967 | /dotenv/16.0.3:
968 | resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==}
969 | engines: {node: '>=12'}
970 | dev: false
971 |
972 | /ecdsa-sig-formatter/1.0.11:
973 | resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
974 | dependencies:
975 | safe-buffer: 5.2.1
976 | dev: false
977 |
978 | /ee-first/1.1.1:
979 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
980 | dev: false
981 |
982 | /electron-to-chromium/1.4.283:
983 | resolution: {integrity: sha512-g6RQ9zCOV+U5QVHW9OpFR7rdk/V7xfopNXnyAamdpFgCHgZ1sjI8VuR1+zG2YG/TZk+tQ8mpNkug4P8FU0fuOA==}
984 | dev: true
985 |
986 | /emoji-regex/8.0.0:
987 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
988 | dev: false
989 |
990 | /encodeurl/1.0.2:
991 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
992 | engines: {node: '>= 0.8'}
993 | dev: false
994 |
995 | /esbuild-android-64/0.15.11:
996 | resolution: {integrity: sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==}
997 | engines: {node: '>=12'}
998 | cpu: [x64]
999 | os: [android]
1000 | requiresBuild: true
1001 | optional: true
1002 |
1003 | /esbuild-android-arm64/0.15.11:
1004 | resolution: {integrity: sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==}
1005 | engines: {node: '>=12'}
1006 | cpu: [arm64]
1007 | os: [android]
1008 | requiresBuild: true
1009 | optional: true
1010 |
1011 | /esbuild-darwin-64/0.15.11:
1012 | resolution: {integrity: sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==}
1013 | engines: {node: '>=12'}
1014 | cpu: [x64]
1015 | os: [darwin]
1016 | requiresBuild: true
1017 | optional: true
1018 |
1019 | /esbuild-darwin-arm64/0.15.11:
1020 | resolution: {integrity: sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==}
1021 | engines: {node: '>=12'}
1022 | cpu: [arm64]
1023 | os: [darwin]
1024 | requiresBuild: true
1025 | optional: true
1026 |
1027 | /esbuild-freebsd-64/0.15.11:
1028 | resolution: {integrity: sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==}
1029 | engines: {node: '>=12'}
1030 | cpu: [x64]
1031 | os: [freebsd]
1032 | requiresBuild: true
1033 | optional: true
1034 |
1035 | /esbuild-freebsd-arm64/0.15.11:
1036 | resolution: {integrity: sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==}
1037 | engines: {node: '>=12'}
1038 | cpu: [arm64]
1039 | os: [freebsd]
1040 | requiresBuild: true
1041 | optional: true
1042 |
1043 | /esbuild-linux-32/0.15.11:
1044 | resolution: {integrity: sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==}
1045 | engines: {node: '>=12'}
1046 | cpu: [ia32]
1047 | os: [linux]
1048 | requiresBuild: true
1049 | optional: true
1050 |
1051 | /esbuild-linux-64/0.15.11:
1052 | resolution: {integrity: sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==}
1053 | engines: {node: '>=12'}
1054 | cpu: [x64]
1055 | os: [linux]
1056 | requiresBuild: true
1057 | optional: true
1058 |
1059 | /esbuild-linux-arm/0.15.11:
1060 | resolution: {integrity: sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==}
1061 | engines: {node: '>=12'}
1062 | cpu: [arm]
1063 | os: [linux]
1064 | requiresBuild: true
1065 | optional: true
1066 |
1067 | /esbuild-linux-arm64/0.15.11:
1068 | resolution: {integrity: sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==}
1069 | engines: {node: '>=12'}
1070 | cpu: [arm64]
1071 | os: [linux]
1072 | requiresBuild: true
1073 | optional: true
1074 |
1075 | /esbuild-linux-mips64le/0.15.11:
1076 | resolution: {integrity: sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==}
1077 | engines: {node: '>=12'}
1078 | cpu: [mips64el]
1079 | os: [linux]
1080 | requiresBuild: true
1081 | optional: true
1082 |
1083 | /esbuild-linux-ppc64le/0.15.11:
1084 | resolution: {integrity: sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==}
1085 | engines: {node: '>=12'}
1086 | cpu: [ppc64]
1087 | os: [linux]
1088 | requiresBuild: true
1089 | optional: true
1090 |
1091 | /esbuild-linux-riscv64/0.15.11:
1092 | resolution: {integrity: sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==}
1093 | engines: {node: '>=12'}
1094 | cpu: [riscv64]
1095 | os: [linux]
1096 | requiresBuild: true
1097 | optional: true
1098 |
1099 | /esbuild-linux-s390x/0.15.11:
1100 | resolution: {integrity: sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==}
1101 | engines: {node: '>=12'}
1102 | cpu: [s390x]
1103 | os: [linux]
1104 | requiresBuild: true
1105 | optional: true
1106 |
1107 | /esbuild-netbsd-64/0.15.11:
1108 | resolution: {integrity: sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==}
1109 | engines: {node: '>=12'}
1110 | cpu: [x64]
1111 | os: [netbsd]
1112 | requiresBuild: true
1113 | optional: true
1114 |
1115 | /esbuild-openbsd-64/0.15.11:
1116 | resolution: {integrity: sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==}
1117 | engines: {node: '>=12'}
1118 | cpu: [x64]
1119 | os: [openbsd]
1120 | requiresBuild: true
1121 | optional: true
1122 |
1123 | /esbuild-sunos-64/0.15.11:
1124 | resolution: {integrity: sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==}
1125 | engines: {node: '>=12'}
1126 | cpu: [x64]
1127 | os: [sunos]
1128 | requiresBuild: true
1129 | optional: true
1130 |
1131 | /esbuild-windows-32/0.15.11:
1132 | resolution: {integrity: sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==}
1133 | engines: {node: '>=12'}
1134 | cpu: [ia32]
1135 | os: [win32]
1136 | requiresBuild: true
1137 | optional: true
1138 |
1139 | /esbuild-windows-64/0.15.11:
1140 | resolution: {integrity: sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==}
1141 | engines: {node: '>=12'}
1142 | cpu: [x64]
1143 | os: [win32]
1144 | requiresBuild: true
1145 | optional: true
1146 |
1147 | /esbuild-windows-arm64/0.15.11:
1148 | resolution: {integrity: sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==}
1149 | engines: {node: '>=12'}
1150 | cpu: [arm64]
1151 | os: [win32]
1152 | requiresBuild: true
1153 | optional: true
1154 |
1155 | /esbuild/0.15.11:
1156 | resolution: {integrity: sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==}
1157 | engines: {node: '>=12'}
1158 | hasBin: true
1159 | requiresBuild: true
1160 | optionalDependencies:
1161 | '@esbuild/android-arm': 0.15.11
1162 | '@esbuild/linux-loong64': 0.15.11
1163 | esbuild-android-64: 0.15.11
1164 | esbuild-android-arm64: 0.15.11
1165 | esbuild-darwin-64: 0.15.11
1166 | esbuild-darwin-arm64: 0.15.11
1167 | esbuild-freebsd-64: 0.15.11
1168 | esbuild-freebsd-arm64: 0.15.11
1169 | esbuild-linux-32: 0.15.11
1170 | esbuild-linux-64: 0.15.11
1171 | esbuild-linux-arm: 0.15.11
1172 | esbuild-linux-arm64: 0.15.11
1173 | esbuild-linux-mips64le: 0.15.11
1174 | esbuild-linux-ppc64le: 0.15.11
1175 | esbuild-linux-riscv64: 0.15.11
1176 | esbuild-linux-s390x: 0.15.11
1177 | esbuild-netbsd-64: 0.15.11
1178 | esbuild-openbsd-64: 0.15.11
1179 | esbuild-sunos-64: 0.15.11
1180 | esbuild-windows-32: 0.15.11
1181 | esbuild-windows-64: 0.15.11
1182 | esbuild-windows-arm64: 0.15.11
1183 |
1184 | /escalade/3.1.1:
1185 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1186 | engines: {node: '>=6'}
1187 | dev: true
1188 |
1189 | /escape-html/1.0.3:
1190 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
1191 | dev: false
1192 |
1193 | /estree-walker/2.0.2:
1194 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1195 |
1196 | /etag/1.8.1:
1197 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
1198 | engines: {node: '>= 0.6'}
1199 | dev: false
1200 |
1201 | /evtd/0.2.4:
1202 | resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==}
1203 | dev: false
1204 |
1205 | /express/4.18.2:
1206 | resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
1207 | engines: {node: '>= 0.10.0'}
1208 | dependencies:
1209 | accepts: 1.3.8
1210 | array-flatten: 1.1.1
1211 | body-parser: 1.20.1
1212 | content-disposition: 0.5.4
1213 | content-type: 1.0.4
1214 | cookie: 0.5.0
1215 | cookie-signature: 1.0.6
1216 | debug: 2.6.9
1217 | depd: 2.0.0
1218 | encodeurl: 1.0.2
1219 | escape-html: 1.0.3
1220 | etag: 1.8.1
1221 | finalhandler: 1.2.0
1222 | fresh: 0.5.2
1223 | http-errors: 2.0.0
1224 | merge-descriptors: 1.0.1
1225 | methods: 1.1.2
1226 | on-finished: 2.4.1
1227 | parseurl: 1.3.3
1228 | path-to-regexp: 0.1.7
1229 | proxy-addr: 2.0.7
1230 | qs: 6.11.0
1231 | range-parser: 1.2.1
1232 | safe-buffer: 5.2.1
1233 | send: 0.18.0
1234 | serve-static: 1.15.0
1235 | setprototypeof: 1.2.0
1236 | statuses: 2.0.1
1237 | type-is: 1.6.18
1238 | utils-merge: 1.0.1
1239 | vary: 1.1.2
1240 | transitivePeerDependencies:
1241 | - supports-color
1242 | dev: false
1243 |
1244 | /fast-glob/3.2.12:
1245 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
1246 | engines: {node: '>=8.6.0'}
1247 | dependencies:
1248 | '@nodelib/fs.stat': 2.0.5
1249 | '@nodelib/fs.walk': 1.2.8
1250 | glob-parent: 5.1.2
1251 | merge2: 1.4.1
1252 | micromatch: 4.0.5
1253 | dev: true
1254 |
1255 | /fastq/1.13.0:
1256 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
1257 | dependencies:
1258 | reusify: 1.0.4
1259 | dev: true
1260 |
1261 | /fill-range/7.0.1:
1262 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1263 | engines: {node: '>=8'}
1264 | dependencies:
1265 | to-regex-range: 5.0.1
1266 | dev: true
1267 |
1268 | /finalhandler/1.2.0:
1269 | resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
1270 | engines: {node: '>= 0.8'}
1271 | dependencies:
1272 | debug: 2.6.9
1273 | encodeurl: 1.0.2
1274 | escape-html: 1.0.3
1275 | on-finished: 2.4.1
1276 | parseurl: 1.3.3
1277 | statuses: 2.0.1
1278 | unpipe: 1.0.0
1279 | transitivePeerDependencies:
1280 | - supports-color
1281 | dev: false
1282 |
1283 | /follow-redirects/1.15.2:
1284 | resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
1285 | engines: {node: '>=4.0'}
1286 | peerDependencies:
1287 | debug: '*'
1288 | peerDependenciesMeta:
1289 | debug:
1290 | optional: true
1291 | dev: false
1292 |
1293 | /form-data/4.0.0:
1294 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
1295 | engines: {node: '>= 6'}
1296 | dependencies:
1297 | asynckit: 0.4.0
1298 | combined-stream: 1.0.8
1299 | mime-types: 2.1.35
1300 | dev: false
1301 |
1302 | /forwarded/0.2.0:
1303 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
1304 | engines: {node: '>= 0.6'}
1305 | dev: false
1306 |
1307 | /fraction.js/4.2.0:
1308 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
1309 | dev: true
1310 |
1311 | /fresh/0.5.2:
1312 | resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=}
1313 | engines: {node: '>= 0.6'}
1314 | dev: false
1315 |
1316 | /fs-minipass/2.1.0:
1317 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
1318 | engines: {node: '>= 8'}
1319 | dependencies:
1320 | minipass: 3.3.4
1321 | dev: false
1322 |
1323 | /fs.realpath/1.0.0:
1324 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1325 | dev: false
1326 |
1327 | /fsevents/2.3.2:
1328 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1329 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1330 | os: [darwin]
1331 | requiresBuild: true
1332 | optional: true
1333 |
1334 | /function-bind/1.1.1:
1335 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1336 |
1337 | /fuse.js/6.6.2:
1338 | resolution: {integrity: sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==}
1339 | engines: {node: '>=10'}
1340 | dev: false
1341 |
1342 | /gauge/3.0.2:
1343 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
1344 | engines: {node: '>=10'}
1345 | dependencies:
1346 | aproba: 2.0.0
1347 | color-support: 1.1.3
1348 | console-control-strings: 1.1.0
1349 | has-unicode: 2.0.1
1350 | object-assign: 4.1.1
1351 | signal-exit: 3.0.7
1352 | string-width: 4.2.3
1353 | strip-ansi: 6.0.1
1354 | wide-align: 1.1.5
1355 | dev: false
1356 |
1357 | /get-intrinsic/1.1.3:
1358 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==}
1359 | dependencies:
1360 | function-bind: 1.1.1
1361 | has: 1.0.3
1362 | has-symbols: 1.0.3
1363 | dev: false
1364 |
1365 | /glob-parent/5.1.2:
1366 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1367 | engines: {node: '>= 6'}
1368 | dependencies:
1369 | is-glob: 4.0.3
1370 | dev: true
1371 |
1372 | /glob-parent/6.0.2:
1373 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1374 | engines: {node: '>=10.13.0'}
1375 | dependencies:
1376 | is-glob: 4.0.3
1377 | dev: true
1378 |
1379 | /glob/7.2.3:
1380 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1381 | dependencies:
1382 | fs.realpath: 1.0.0
1383 | inflight: 1.0.6
1384 | inherits: 2.0.4
1385 | minimatch: 3.1.2
1386 | once: 1.4.0
1387 | path-is-absolute: 1.0.1
1388 | dev: false
1389 |
1390 | /has-flag/3.0.0:
1391 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1392 | engines: {node: '>=4'}
1393 | dev: true
1394 |
1395 | /has-symbols/1.0.3:
1396 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1397 | engines: {node: '>= 0.4'}
1398 | dev: false
1399 |
1400 | /has-unicode/2.0.1:
1401 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
1402 | dev: false
1403 |
1404 | /has/1.0.3:
1405 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1406 | engines: {node: '>= 0.4.0'}
1407 | dependencies:
1408 | function-bind: 1.1.1
1409 |
1410 | /highlight.js/11.6.0:
1411 | resolution: {integrity: sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==}
1412 | engines: {node: '>=12.0.0'}
1413 | dev: false
1414 |
1415 | /http-errors/2.0.0:
1416 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
1417 | engines: {node: '>= 0.8'}
1418 | dependencies:
1419 | depd: 2.0.0
1420 | inherits: 2.0.4
1421 | setprototypeof: 1.2.0
1422 | statuses: 2.0.1
1423 | toidentifier: 1.0.1
1424 | dev: false
1425 |
1426 | /https-proxy-agent/5.0.1:
1427 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
1428 | engines: {node: '>= 6'}
1429 | dependencies:
1430 | agent-base: 6.0.2
1431 | debug: 4.3.4
1432 | transitivePeerDependencies:
1433 | - supports-color
1434 | dev: false
1435 |
1436 | /iconv-lite/0.4.24:
1437 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
1438 | engines: {node: '>=0.10.0'}
1439 | dependencies:
1440 | safer-buffer: 2.1.2
1441 | dev: false
1442 |
1443 | /ignore-by-default/1.0.1:
1444 | resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
1445 | dev: true
1446 |
1447 | /inflight/1.0.6:
1448 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1449 | dependencies:
1450 | once: 1.4.0
1451 | wrappy: 1.0.2
1452 | dev: false
1453 |
1454 | /inherits/2.0.4:
1455 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1456 | dev: false
1457 |
1458 | /ipaddr.js/1.9.1:
1459 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
1460 | engines: {node: '>= 0.10'}
1461 | dev: false
1462 |
1463 | /is-binary-path/2.1.0:
1464 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1465 | engines: {node: '>=8'}
1466 | dependencies:
1467 | binary-extensions: 2.2.0
1468 | dev: true
1469 |
1470 | /is-core-module/2.10.0:
1471 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==}
1472 | dependencies:
1473 | has: 1.0.3
1474 |
1475 | /is-extglob/2.1.1:
1476 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1477 | engines: {node: '>=0.10.0'}
1478 | dev: true
1479 |
1480 | /is-fullwidth-code-point/3.0.0:
1481 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1482 | engines: {node: '>=8'}
1483 | dev: false
1484 |
1485 | /is-glob/4.0.3:
1486 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1487 | engines: {node: '>=0.10.0'}
1488 | dependencies:
1489 | is-extglob: 2.1.1
1490 | dev: true
1491 |
1492 | /is-number/7.0.0:
1493 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1494 | engines: {node: '>=0.12.0'}
1495 | dev: true
1496 |
1497 | /jsonwebtoken/8.5.1:
1498 | resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==}
1499 | engines: {node: '>=4', npm: '>=1.4.28'}
1500 | dependencies:
1501 | jws: 3.2.2
1502 | lodash.includes: 4.3.0
1503 | lodash.isboolean: 3.0.3
1504 | lodash.isinteger: 4.0.4
1505 | lodash.isnumber: 3.0.3
1506 | lodash.isplainobject: 4.0.6
1507 | lodash.isstring: 4.0.1
1508 | lodash.once: 4.1.1
1509 | ms: 2.1.3
1510 | semver: 5.7.1
1511 | dev: false
1512 |
1513 | /jwa/1.4.1:
1514 | resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
1515 | dependencies:
1516 | buffer-equal-constant-time: 1.0.1
1517 | ecdsa-sig-formatter: 1.0.11
1518 | safe-buffer: 5.2.1
1519 | dev: false
1520 |
1521 | /jws/3.2.2:
1522 | resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
1523 | dependencies:
1524 | jwa: 1.4.1
1525 | safe-buffer: 5.2.1
1526 | dev: false
1527 |
1528 | /lilconfig/2.0.6:
1529 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
1530 | engines: {node: '>=10'}
1531 | dev: true
1532 |
1533 | /lodash-es/4.17.21:
1534 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
1535 | dev: false
1536 |
1537 | /lodash.includes/4.3.0:
1538 | resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
1539 | dev: false
1540 |
1541 | /lodash.isboolean/3.0.3:
1542 | resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
1543 | dev: false
1544 |
1545 | /lodash.isinteger/4.0.4:
1546 | resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
1547 | dev: false
1548 |
1549 | /lodash.isnumber/3.0.3:
1550 | resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
1551 | dev: false
1552 |
1553 | /lodash.isplainobject/4.0.6:
1554 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
1555 | dev: false
1556 |
1557 | /lodash.isstring/4.0.1:
1558 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
1559 | dev: false
1560 |
1561 | /lodash.once/4.1.1:
1562 | resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
1563 | dev: false
1564 |
1565 | /lodash/4.17.21:
1566 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1567 | dev: false
1568 |
1569 | /lru-cache/6.0.0:
1570 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1571 | engines: {node: '>=10'}
1572 | dependencies:
1573 | yallist: 4.0.0
1574 |
1575 | /magic-string/0.25.9:
1576 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
1577 | dependencies:
1578 | sourcemap-codec: 1.4.8
1579 |
1580 | /make-dir/3.1.0:
1581 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
1582 | engines: {node: '>=8'}
1583 | dependencies:
1584 | semver: 6.3.0
1585 | dev: false
1586 |
1587 | /make-error/1.3.6:
1588 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
1589 | dev: true
1590 |
1591 | /media-typer/0.3.0:
1592 | resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
1593 | engines: {node: '>= 0.6'}
1594 | dev: false
1595 |
1596 | /merge-descriptors/1.0.1:
1597 | resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=}
1598 | dev: false
1599 |
1600 | /merge2/1.4.1:
1601 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1602 | engines: {node: '>= 8'}
1603 | dev: true
1604 |
1605 | /methods/1.1.2:
1606 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
1607 | engines: {node: '>= 0.6'}
1608 | dev: false
1609 |
1610 | /micromatch/4.0.5:
1611 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1612 | engines: {node: '>=8.6'}
1613 | dependencies:
1614 | braces: 3.0.2
1615 | picomatch: 2.3.1
1616 | dev: true
1617 |
1618 | /mime-db/1.52.0:
1619 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1620 | engines: {node: '>= 0.6'}
1621 | dev: false
1622 |
1623 | /mime-types/2.1.35:
1624 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1625 | engines: {node: '>= 0.6'}
1626 | dependencies:
1627 | mime-db: 1.52.0
1628 | dev: false
1629 |
1630 | /mime/1.6.0:
1631 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
1632 | engines: {node: '>=4'}
1633 | hasBin: true
1634 | dev: false
1635 |
1636 | /minimatch/3.1.2:
1637 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1638 | dependencies:
1639 | brace-expansion: 1.1.11
1640 |
1641 | /minimist/1.2.7:
1642 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
1643 | dev: true
1644 |
1645 | /minipass/3.3.4:
1646 | resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==}
1647 | engines: {node: '>=8'}
1648 | dependencies:
1649 | yallist: 4.0.0
1650 | dev: false
1651 |
1652 | /minizlib/2.1.2:
1653 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
1654 | engines: {node: '>= 8'}
1655 | dependencies:
1656 | minipass: 3.3.4
1657 | yallist: 4.0.0
1658 | dev: false
1659 |
1660 | /mkdirp/1.0.4:
1661 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
1662 | engines: {node: '>=10'}
1663 | hasBin: true
1664 | dev: false
1665 |
1666 | /ms/2.0.0:
1667 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
1668 | dev: false
1669 |
1670 | /ms/2.1.2:
1671 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1672 | dev: false
1673 |
1674 | /ms/2.1.3:
1675 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1676 |
1677 | /naive-ui/2.33.5_vue@3.2.41:
1678 | resolution: {integrity: sha512-O87zwOduut3Xk9NzGIX+LZYr6sW/Y0oGuNJ6T2dka+14CtHD9iidi8gdxg6obhMpzdwa3SnlxO7nzDLqmXVUwA==}
1679 | peerDependencies:
1680 | vue: ^3.0.0
1681 | dependencies:
1682 | '@css-render/plugin-bem': 0.15.11_css-render@0.15.11
1683 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.41
1684 | '@types/lodash': 4.14.186
1685 | '@types/lodash-es': 4.17.6
1686 | async-validator: 4.2.5
1687 | css-render: 0.15.11
1688 | date-fns: 2.29.3
1689 | date-fns-tz: 1.3.7_date-fns@2.29.3
1690 | evtd: 0.2.4
1691 | highlight.js: 11.6.0
1692 | lodash: 4.17.21
1693 | lodash-es: 4.17.21
1694 | seemly: 0.3.6
1695 | treemate: 0.3.11
1696 | vdirs: 0.1.8_vue@3.2.41
1697 | vooks: 0.2.12_vue@3.2.41
1698 | vue: 3.2.41
1699 | vueuc: 0.4.49_vue@3.2.41
1700 | dev: false
1701 |
1702 | /nanoid/3.3.4:
1703 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
1704 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1705 | hasBin: true
1706 |
1707 | /negotiator/0.6.3:
1708 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
1709 | engines: {node: '>= 0.6'}
1710 | dev: false
1711 |
1712 | /node-addon-api/5.0.0:
1713 | resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==}
1714 | dev: false
1715 |
1716 | /node-fetch/2.6.7:
1717 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
1718 | engines: {node: 4.x || >=6.0.0}
1719 | peerDependencies:
1720 | encoding: ^0.1.0
1721 | peerDependenciesMeta:
1722 | encoding:
1723 | optional: true
1724 | dependencies:
1725 | whatwg-url: 5.0.0
1726 | dev: false
1727 |
1728 | /node-releases/2.0.6:
1729 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
1730 | dev: true
1731 |
1732 | /nodemon/2.0.20:
1733 | resolution: {integrity: sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==}
1734 | engines: {node: '>=8.10.0'}
1735 | hasBin: true
1736 | dependencies:
1737 | chokidar: 3.5.3
1738 | debug: 3.2.7_supports-color@5.5.0
1739 | ignore-by-default: 1.0.1
1740 | minimatch: 3.1.2
1741 | pstree.remy: 1.1.8
1742 | semver: 5.7.1
1743 | simple-update-notifier: 1.0.7
1744 | supports-color: 5.5.0
1745 | touch: 3.1.0
1746 | undefsafe: 2.0.5
1747 | dev: true
1748 |
1749 | /nopt/1.0.10:
1750 | resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==}
1751 | hasBin: true
1752 | dependencies:
1753 | abbrev: 1.1.1
1754 | dev: true
1755 |
1756 | /nopt/5.0.0:
1757 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
1758 | engines: {node: '>=6'}
1759 | hasBin: true
1760 | dependencies:
1761 | abbrev: 1.1.1
1762 | dev: false
1763 |
1764 | /normalize-path/3.0.0:
1765 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1766 | engines: {node: '>=0.10.0'}
1767 | dev: true
1768 |
1769 | /normalize-range/0.1.2:
1770 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
1771 | engines: {node: '>=0.10.0'}
1772 | dev: true
1773 |
1774 | /npmlog/5.0.1:
1775 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
1776 | dependencies:
1777 | are-we-there-yet: 2.0.0
1778 | console-control-strings: 1.1.0
1779 | gauge: 3.0.2
1780 | set-blocking: 2.0.0
1781 | dev: false
1782 |
1783 | /object-assign/4.1.1:
1784 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1785 | engines: {node: '>=0.10.0'}
1786 | dev: false
1787 |
1788 | /object-hash/3.0.0:
1789 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
1790 | engines: {node: '>= 6'}
1791 | dev: true
1792 |
1793 | /object-inspect/1.12.2:
1794 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
1795 | dev: false
1796 |
1797 | /on-finished/2.4.1:
1798 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
1799 | engines: {node: '>= 0.8'}
1800 | dependencies:
1801 | ee-first: 1.1.1
1802 | dev: false
1803 |
1804 | /once/1.4.0:
1805 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1806 | dependencies:
1807 | wrappy: 1.0.2
1808 | dev: false
1809 |
1810 | /parseurl/1.3.3:
1811 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
1812 | engines: {node: '>= 0.8'}
1813 | dev: false
1814 |
1815 | /path-is-absolute/1.0.1:
1816 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1817 | engines: {node: '>=0.10.0'}
1818 | dev: false
1819 |
1820 | /path-parse/1.0.7:
1821 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1822 |
1823 | /path-to-regexp/0.1.7:
1824 | resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=}
1825 | dev: false
1826 |
1827 | /picocolors/1.0.0:
1828 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1829 |
1830 | /picomatch/2.3.1:
1831 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1832 | engines: {node: '>=8.6'}
1833 | dev: true
1834 |
1835 | /pify/2.3.0:
1836 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1837 | engines: {node: '>=0.10.0'}
1838 | dev: true
1839 |
1840 | /ping/0.4.2:
1841 | resolution: {integrity: sha512-1uAw0bzHtrPbPo2s6no06oZAzY6KqKclEJR1JRZKIHKXKlPdrz9N0/1MPPB+BbrvMjN3Mk0pcod3bfLNZFRo9w==}
1842 | engines: {node: '>=4.0.0'}
1843 | dependencies:
1844 | q: 1.5.1
1845 | underscore: 1.13.6
1846 | dev: false
1847 |
1848 | /postcss-import/14.1.0_postcss@8.4.18:
1849 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
1850 | engines: {node: '>=10.0.0'}
1851 | peerDependencies:
1852 | postcss: ^8.0.0
1853 | dependencies:
1854 | postcss: 8.4.18
1855 | postcss-value-parser: 4.2.0
1856 | read-cache: 1.0.0
1857 | resolve: 1.22.1
1858 | dev: true
1859 |
1860 | /postcss-js/4.0.0_postcss@8.4.18:
1861 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
1862 | engines: {node: ^12 || ^14 || >= 16}
1863 | peerDependencies:
1864 | postcss: ^8.3.3
1865 | dependencies:
1866 | camelcase-css: 2.0.1
1867 | postcss: 8.4.18
1868 | dev: true
1869 |
1870 | /postcss-load-config/3.1.4_postcss@8.4.18:
1871 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
1872 | engines: {node: '>= 10'}
1873 | peerDependencies:
1874 | postcss: '>=8.0.9'
1875 | ts-node: '>=9.0.0'
1876 | peerDependenciesMeta:
1877 | postcss:
1878 | optional: true
1879 | ts-node:
1880 | optional: true
1881 | dependencies:
1882 | lilconfig: 2.0.6
1883 | postcss: 8.4.18
1884 | yaml: 1.10.2
1885 | dev: true
1886 |
1887 | /postcss-nested/5.0.6_postcss@8.4.18:
1888 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
1889 | engines: {node: '>=12.0'}
1890 | peerDependencies:
1891 | postcss: ^8.2.14
1892 | dependencies:
1893 | postcss: 8.4.18
1894 | postcss-selector-parser: 6.0.10
1895 | dev: true
1896 |
1897 | /postcss-selector-parser/6.0.10:
1898 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
1899 | engines: {node: '>=4'}
1900 | dependencies:
1901 | cssesc: 3.0.0
1902 | util-deprecate: 1.0.2
1903 | dev: true
1904 |
1905 | /postcss-value-parser/4.2.0:
1906 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1907 | dev: true
1908 |
1909 | /postcss/8.4.18:
1910 | resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==}
1911 | engines: {node: ^10 || ^12 || >=14}
1912 | dependencies:
1913 | nanoid: 3.3.4
1914 | picocolors: 1.0.0
1915 | source-map-js: 1.0.2
1916 |
1917 | /proxy-addr/2.0.7:
1918 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
1919 | engines: {node: '>= 0.10'}
1920 | dependencies:
1921 | forwarded: 0.2.0
1922 | ipaddr.js: 1.9.1
1923 | dev: false
1924 |
1925 | /proxy-from-env/1.1.0:
1926 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1927 | dev: false
1928 |
1929 | /pstree.remy/1.1.8:
1930 | resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
1931 | dev: true
1932 |
1933 | /q/1.5.1:
1934 | resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
1935 | engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
1936 | dev: false
1937 |
1938 | /qs/6.11.0:
1939 | resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
1940 | engines: {node: '>=0.6'}
1941 | dependencies:
1942 | side-channel: 1.0.4
1943 | dev: false
1944 |
1945 | /queue-microtask/1.2.3:
1946 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1947 | dev: true
1948 |
1949 | /quick-lru/5.1.1:
1950 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
1951 | engines: {node: '>=10'}
1952 | dev: true
1953 |
1954 | /range-parser/1.2.1:
1955 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
1956 | engines: {node: '>= 0.6'}
1957 | dev: false
1958 |
1959 | /raw-body/2.5.1:
1960 | resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
1961 | engines: {node: '>= 0.8'}
1962 | dependencies:
1963 | bytes: 3.1.2
1964 | http-errors: 2.0.0
1965 | iconv-lite: 0.4.24
1966 | unpipe: 1.0.0
1967 | dev: false
1968 |
1969 | /read-cache/1.0.0:
1970 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1971 | dependencies:
1972 | pify: 2.3.0
1973 | dev: true
1974 |
1975 | /readable-stream/3.6.0:
1976 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
1977 | engines: {node: '>= 6'}
1978 | dependencies:
1979 | inherits: 2.0.4
1980 | string_decoder: 1.3.0
1981 | util-deprecate: 1.0.2
1982 | dev: false
1983 |
1984 | /readdirp/3.6.0:
1985 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1986 | engines: {node: '>=8.10.0'}
1987 | dependencies:
1988 | picomatch: 2.3.1
1989 | dev: true
1990 |
1991 | /resolve/1.22.1:
1992 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
1993 | hasBin: true
1994 | dependencies:
1995 | is-core-module: 2.10.0
1996 | path-parse: 1.0.7
1997 | supports-preserve-symlinks-flag: 1.0.0
1998 |
1999 | /reusify/1.0.4:
2000 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2001 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2002 | dev: true
2003 |
2004 | /rimraf/3.0.2:
2005 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2006 | hasBin: true
2007 | dependencies:
2008 | glob: 7.2.3
2009 | dev: false
2010 |
2011 | /rollup/2.78.1:
2012 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==}
2013 | engines: {node: '>=10.0.0'}
2014 | hasBin: true
2015 | optionalDependencies:
2016 | fsevents: 2.3.2
2017 |
2018 | /run-parallel/1.2.0:
2019 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2020 | dependencies:
2021 | queue-microtask: 1.2.3
2022 | dev: true
2023 |
2024 | /safe-buffer/5.2.1:
2025 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
2026 | dev: false
2027 |
2028 | /safer-buffer/2.1.2:
2029 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
2030 | dev: false
2031 |
2032 | /seemly/0.3.6:
2033 | resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==}
2034 | dev: false
2035 |
2036 | /semver/5.7.1:
2037 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
2038 | hasBin: true
2039 |
2040 | /semver/6.3.0:
2041 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
2042 | hasBin: true
2043 | dev: false
2044 |
2045 | /semver/7.0.0:
2046 | resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
2047 | hasBin: true
2048 | dev: true
2049 |
2050 | /semver/7.3.8:
2051 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
2052 | engines: {node: '>=10'}
2053 | hasBin: true
2054 | dependencies:
2055 | lru-cache: 6.0.0
2056 |
2057 | /send/0.18.0:
2058 | resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
2059 | engines: {node: '>= 0.8.0'}
2060 | dependencies:
2061 | debug: 2.6.9
2062 | depd: 2.0.0
2063 | destroy: 1.2.0
2064 | encodeurl: 1.0.2
2065 | escape-html: 1.0.3
2066 | etag: 1.8.1
2067 | fresh: 0.5.2
2068 | http-errors: 2.0.0
2069 | mime: 1.6.0
2070 | ms: 2.1.3
2071 | on-finished: 2.4.1
2072 | range-parser: 1.2.1
2073 | statuses: 2.0.1
2074 | transitivePeerDependencies:
2075 | - supports-color
2076 | dev: false
2077 |
2078 | /serve-static/1.15.0:
2079 | resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
2080 | engines: {node: '>= 0.8.0'}
2081 | dependencies:
2082 | encodeurl: 1.0.2
2083 | escape-html: 1.0.3
2084 | parseurl: 1.3.3
2085 | send: 0.18.0
2086 | transitivePeerDependencies:
2087 | - supports-color
2088 | dev: false
2089 |
2090 | /set-blocking/2.0.0:
2091 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
2092 | dev: false
2093 |
2094 | /setprototypeof/1.2.0:
2095 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
2096 | dev: false
2097 |
2098 | /side-channel/1.0.4:
2099 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
2100 | dependencies:
2101 | call-bind: 1.0.2
2102 | get-intrinsic: 1.1.3
2103 | object-inspect: 1.12.2
2104 | dev: false
2105 |
2106 | /signal-exit/3.0.7:
2107 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2108 | dev: false
2109 |
2110 | /simple-update-notifier/1.0.7:
2111 | resolution: {integrity: sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==}
2112 | engines: {node: '>=8.10.0'}
2113 | dependencies:
2114 | semver: 7.0.0
2115 | dev: true
2116 |
2117 | /source-map-js/1.0.2:
2118 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2119 | engines: {node: '>=0.10.0'}
2120 |
2121 | /source-map/0.6.1:
2122 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2123 | engines: {node: '>=0.10.0'}
2124 |
2125 | /sourcemap-codec/1.4.8:
2126 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
2127 |
2128 | /statuses/2.0.1:
2129 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
2130 | engines: {node: '>= 0.8'}
2131 | dev: false
2132 |
2133 | /string-width/4.2.3:
2134 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2135 | engines: {node: '>=8'}
2136 | dependencies:
2137 | emoji-regex: 8.0.0
2138 | is-fullwidth-code-point: 3.0.0
2139 | strip-ansi: 6.0.1
2140 | dev: false
2141 |
2142 | /string_decoder/1.3.0:
2143 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
2144 | dependencies:
2145 | safe-buffer: 5.2.1
2146 | dev: false
2147 |
2148 | /strip-ansi/6.0.1:
2149 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2150 | engines: {node: '>=8'}
2151 | dependencies:
2152 | ansi-regex: 5.0.1
2153 | dev: false
2154 |
2155 | /supports-color/5.5.0:
2156 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2157 | engines: {node: '>=4'}
2158 | dependencies:
2159 | has-flag: 3.0.0
2160 | dev: true
2161 |
2162 | /supports-preserve-symlinks-flag/1.0.0:
2163 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2164 | engines: {node: '>= 0.4'}
2165 |
2166 | /tailwindcss/3.1.8:
2167 | resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==}
2168 | engines: {node: '>=12.13.0'}
2169 | hasBin: true
2170 | dependencies:
2171 | arg: 5.0.2
2172 | chokidar: 3.5.3
2173 | color-name: 1.1.4
2174 | detective: 5.2.1
2175 | didyoumean: 1.2.2
2176 | dlv: 1.1.3
2177 | fast-glob: 3.2.12
2178 | glob-parent: 6.0.2
2179 | is-glob: 4.0.3
2180 | lilconfig: 2.0.6
2181 | normalize-path: 3.0.0
2182 | object-hash: 3.0.0
2183 | picocolors: 1.0.0
2184 | postcss: 8.4.18
2185 | postcss-import: 14.1.0_postcss@8.4.18
2186 | postcss-js: 4.0.0_postcss@8.4.18
2187 | postcss-load-config: 3.1.4_postcss@8.4.18
2188 | postcss-nested: 5.0.6_postcss@8.4.18
2189 | postcss-selector-parser: 6.0.10
2190 | postcss-value-parser: 4.2.0
2191 | quick-lru: 5.1.1
2192 | resolve: 1.22.1
2193 | transitivePeerDependencies:
2194 | - ts-node
2195 | dev: true
2196 |
2197 | /tar/6.1.11:
2198 | resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==}
2199 | engines: {node: '>= 10'}
2200 | dependencies:
2201 | chownr: 2.0.0
2202 | fs-minipass: 2.1.0
2203 | minipass: 3.3.4
2204 | minizlib: 2.1.2
2205 | mkdirp: 1.0.4
2206 | yallist: 4.0.0
2207 | dev: false
2208 |
2209 | /to-fast-properties/2.0.0:
2210 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
2211 | engines: {node: '>=4'}
2212 |
2213 | /to-regex-range/5.0.1:
2214 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2215 | engines: {node: '>=8.0'}
2216 | dependencies:
2217 | is-number: 7.0.0
2218 | dev: true
2219 |
2220 | /toidentifier/1.0.1:
2221 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
2222 | engines: {node: '>=0.6'}
2223 | dev: false
2224 |
2225 | /touch/3.1.0:
2226 | resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==}
2227 | hasBin: true
2228 | dependencies:
2229 | nopt: 1.0.10
2230 | dev: true
2231 |
2232 | /tr46/0.0.3:
2233 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
2234 | dev: false
2235 |
2236 | /treemate/0.3.11:
2237 | resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
2238 | dev: false
2239 |
2240 | /ts-node/10.9.1_o6ib7qqltxpe7qrskddglns2ga:
2241 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
2242 | hasBin: true
2243 | peerDependencies:
2244 | '@swc/core': '>=1.2.50'
2245 | '@swc/wasm': '>=1.2.50'
2246 | '@types/node': '*'
2247 | typescript: '>=2.7'
2248 | peerDependenciesMeta:
2249 | '@swc/core':
2250 | optional: true
2251 | '@swc/wasm':
2252 | optional: true
2253 | dependencies:
2254 | '@cspotcode/source-map-support': 0.8.1
2255 | '@tsconfig/node10': 1.0.9
2256 | '@tsconfig/node12': 1.0.11
2257 | '@tsconfig/node14': 1.0.3
2258 | '@tsconfig/node16': 1.0.3
2259 | '@types/node': 18.11.0
2260 | acorn: 8.8.0
2261 | acorn-walk: 8.2.0
2262 | arg: 4.1.3
2263 | create-require: 1.1.1
2264 | diff: 4.0.2
2265 | make-error: 1.3.6
2266 | typescript: 4.8.4
2267 | v8-compile-cache-lib: 3.0.1
2268 | yn: 3.1.1
2269 | dev: true
2270 |
2271 | /type-is/1.6.18:
2272 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
2273 | engines: {node: '>= 0.6'}
2274 | dependencies:
2275 | media-typer: 0.3.0
2276 | mime-types: 2.1.35
2277 | dev: false
2278 |
2279 | /typescript/4.8.4:
2280 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==}
2281 | engines: {node: '>=4.2.0'}
2282 | hasBin: true
2283 | dev: true
2284 |
2285 | /undefsafe/2.0.5:
2286 | resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
2287 | dev: true
2288 |
2289 | /underscore/1.13.6:
2290 | resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==}
2291 | dev: false
2292 |
2293 | /unpipe/1.0.0:
2294 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
2295 | engines: {node: '>= 0.8'}
2296 | dev: false
2297 |
2298 | /update-browserslist-db/1.0.10_browserslist@4.21.4:
2299 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==}
2300 | hasBin: true
2301 | peerDependencies:
2302 | browserslist: '>= 4.21.0'
2303 | dependencies:
2304 | browserslist: 4.21.4
2305 | escalade: 3.1.1
2306 | picocolors: 1.0.0
2307 | dev: true
2308 |
2309 | /util-deprecate/1.0.2:
2310 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2311 |
2312 | /utils-merge/1.0.1:
2313 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=}
2314 | engines: {node: '>= 0.4.0'}
2315 | dev: false
2316 |
2317 | /v8-compile-cache-lib/3.0.1:
2318 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
2319 | dev: true
2320 |
2321 | /vary/1.1.2:
2322 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
2323 | engines: {node: '>= 0.8'}
2324 | dev: false
2325 |
2326 | /vdirs/0.1.8_vue@3.2.41:
2327 | resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
2328 | peerDependencies:
2329 | vue: ^3.0.11
2330 | dependencies:
2331 | evtd: 0.2.4
2332 | vue: 3.2.41
2333 | dev: false
2334 |
2335 | /vfonts/0.0.3:
2336 | resolution: {integrity: sha512-nguyw8L6Un8eelg1vQ31vIU2ESxqid7EYmy8V+MDeMaHBqaRSkg3dTBToC1PR00D89UzS/SLkfYPnx0Wf23IQQ==}
2337 | dev: false
2338 |
2339 | /vite/3.1.8:
2340 | resolution: {integrity: sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==}
2341 | engines: {node: ^14.18.0 || >=16.0.0}
2342 | hasBin: true
2343 | peerDependencies:
2344 | less: '*'
2345 | sass: '*'
2346 | stylus: '*'
2347 | terser: ^5.4.0
2348 | peerDependenciesMeta:
2349 | less:
2350 | optional: true
2351 | sass:
2352 | optional: true
2353 | stylus:
2354 | optional: true
2355 | terser:
2356 | optional: true
2357 | dependencies:
2358 | esbuild: 0.15.11
2359 | postcss: 8.4.18
2360 | resolve: 1.22.1
2361 | rollup: 2.78.1
2362 | optionalDependencies:
2363 | fsevents: 2.3.2
2364 |
2365 | /vooks/0.2.12_vue@3.2.41:
2366 | resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
2367 | peerDependencies:
2368 | vue: ^3.0.0
2369 | dependencies:
2370 | evtd: 0.2.4
2371 | vue: 3.2.41
2372 | dev: false
2373 |
2374 | /vue-demi/0.13.11_vue@3.2.41:
2375 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
2376 | engines: {node: '>=12'}
2377 | hasBin: true
2378 | requiresBuild: true
2379 | peerDependencies:
2380 | '@vue/composition-api': ^1.0.0-rc.1
2381 | vue: ^3.0.0-0 || ^2.6.0
2382 | peerDependenciesMeta:
2383 | '@vue/composition-api':
2384 | optional: true
2385 | dependencies:
2386 | vue: 3.2.41
2387 | dev: false
2388 |
2389 | /vue-router/4.1.5_vue@3.2.41:
2390 | resolution: {integrity: sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==}
2391 | peerDependencies:
2392 | vue: ^3.2.0
2393 | dependencies:
2394 | '@vue/devtools-api': 6.4.4
2395 | vue: 3.2.41
2396 | dev: false
2397 |
2398 | /vue-tsc/0.40.13_typescript@4.8.4:
2399 | resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==}
2400 | hasBin: true
2401 | peerDependencies:
2402 | typescript: '*'
2403 | dependencies:
2404 | '@volar/vue-language-core': 0.40.13
2405 | '@volar/vue-typescript': 0.40.13
2406 | typescript: 4.8.4
2407 | dev: true
2408 |
2409 | /vue/3.2.41:
2410 | resolution: {integrity: sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==}
2411 | dependencies:
2412 | '@vue/compiler-dom': 3.2.41
2413 | '@vue/compiler-sfc': 3.2.41
2414 | '@vue/runtime-dom': 3.2.41
2415 | '@vue/server-renderer': 3.2.41_vue@3.2.41
2416 | '@vue/shared': 3.2.41
2417 |
2418 | /vueuc/0.4.49_vue@3.2.41:
2419 | resolution: {integrity: sha512-WarAC44a/Yx78CxkAgROYLq+LkAeCGA/6wHidVoFmHLbzyF3SiP2nzRNGD/8zJeJInXv18EnWK6A//eGgMMq8w==}
2420 | peerDependencies:
2421 | vue: ^3.0.11
2422 | dependencies:
2423 | '@css-render/vue3-ssr': 0.15.11_vue@3.2.41
2424 | '@juggle/resize-observer': 3.4.0
2425 | css-render: 0.15.11
2426 | evtd: 0.2.4
2427 | seemly: 0.3.6
2428 | vdirs: 0.1.8_vue@3.2.41
2429 | vooks: 0.2.12_vue@3.2.41
2430 | vue: 3.2.41
2431 | dev: false
2432 |
2433 | /webidl-conversions/3.0.1:
2434 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
2435 | dev: false
2436 |
2437 | /whatwg-url/5.0.0:
2438 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
2439 | dependencies:
2440 | tr46: 0.0.3
2441 | webidl-conversions: 3.0.1
2442 | dev: false
2443 |
2444 | /wide-align/1.1.5:
2445 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
2446 | dependencies:
2447 | string-width: 4.2.3
2448 | dev: false
2449 |
2450 | /wrappy/1.0.2:
2451 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2452 | dev: false
2453 |
2454 | /xtend/4.0.2:
2455 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
2456 | engines: {node: '>=0.4'}
2457 | dev: true
2458 |
2459 | /yallist/4.0.0:
2460 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2461 |
2462 | /yaml/1.10.2:
2463 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
2464 | engines: {node: '>= 6'}
2465 | dev: true
2466 |
2467 | /yn/3.1.1:
2468 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
2469 | engines: {node: '>=6'}
2470 | dev: true
2471 |
--------------------------------------------------------------------------------