diff --git a/frontend/.prettierrc b/frontend/.prettierrc
new file mode 100644
index 0000000..9145d2d
--- /dev/null
+++ b/frontend/.prettierrc
@@ -0,0 +1,7 @@
+{
+ "tabWidth": 4,
+ "useTabs": true,
+ "singleQuote": true,
+ "trailingComma": "none",
+ "endOfLine": "lf"
+}
diff --git a/frontend/README.md b/frontend/README.md
deleted file mode 100644
index 576b980..0000000
--- a/frontend/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# frontend
-
-## Project setup
-```
-npm install
-```
-
-### Compiles and hot-reloads for development
-```
-npm run serve
-```
-
-### Compiles and minifies for production
-```
-npm run build
-```
-
-### Lints and fixes files
-```
-npm run lint
-```
-
-### Customize configuration
-See [Configuration Reference](https://cli.vuejs.org/config/).
diff --git a/frontend/babel.config.js b/frontend/babel.config.js
index 162a3ea..1f4c9ae 100644
--- a/frontend/babel.config.js
+++ b/frontend/babel.config.js
@@ -1,3 +1,3 @@
module.exports = {
- presets: ["@vue/cli-plugin-babel/preset"],
+ presets: ['@vue/cli-plugin-babel/preset']
};
diff --git a/frontend/eslintrc.js b/frontend/eslintrc.js
new file mode 100644
index 0000000..fc186bc
--- /dev/null
+++ b/frontend/eslintrc.js
@@ -0,0 +1,29 @@
+module.exports = {
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ project: 'tsconfig.json',
+ tsconfigRootDir: __dirname,
+ sourceType: 'module'
+ },
+ plugins: ['@typescript-eslint/eslint-plugin', 'no-relative-import-paths'],
+ extends: [
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:prettier/recommended'
+ ],
+ root: true,
+ env: {
+ node: true,
+ jest: true
+ },
+ ignorePatterns: ['.eslintrc.js'],
+ rules: {
+ '@typescript-eslint/interface-name-prefix': 'off',
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ 'no-relative-import-paths/no-relative-import-paths': [
+ 'error',
+ { allowSameFolder: true, rootDir: 'src' }
+ ]
+ }
+};
diff --git a/frontend/package.json b/frontend/package.json
index 72570a1..1dee7ce 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,64 +1,64 @@
{
- "name": "frontend",
- "version": "0.1.0",
- "private": true,
- "scripts": {
- "serve": "vue-cli-service build --watch",
- "build": "vue-cli-service build",
- "lint": "vue-cli-service lint"
- },
- "dependencies": {
- "axios": "^0.27.2",
- "class-transformer": "^0.5.1",
- "class-validator": "^0.13.2",
- "core-js": "^3.8.3",
- "filesize": "^9.0.11",
- "jwt-decode": "^3.1.2",
- "naive-ui": "^2.32.1",
- "stream-browserify": "^3.0.0",
- "util": "^0.12.4",
- "vue": "^3.2.13",
- "vue-router": "^4.0.3"
- },
- "devDependencies": {
- "@typescript-eslint/eslint-plugin": "^5.4.0",
- "@typescript-eslint/parser": "^5.4.0",
- "@vue/cli-plugin-babel": "~5.0.0",
- "@vue/cli-plugin-eslint": "~5.0.0",
- "@vue/cli-plugin-router": "~5.0.0",
- "@vue/cli-plugin-typescript": "~5.0.0",
- "@vue/cli-service": "~5.0.0",
- "@vue/eslint-config-typescript": "^9.1.0",
- "eslint": "^7.32.0",
- "eslint-config-prettier": "^8.3.0",
- "eslint-plugin-prettier": "^4.0.0",
- "eslint-plugin-vue": "^8.0.3",
- "prettier": "^2.4.1",
- "sass": "^1.32.7",
- "sass-loader": "^12.0.0",
- "typescript": "~4.5.5",
- "vfonts": "^0.0.3"
- },
- "eslintConfig": {
- "root": true,
- "env": {
- "node": true
- },
- "extends": [
- "plugin:vue/vue3-essential",
- "eslint:recommended",
- "@vue/typescript/recommended",
- "plugin:prettier/recommended"
- ],
- "parserOptions": {
- "ecmaVersion": 2020
- },
- "rules": {}
- },
- "browserslist": [
- "> 1%",
- "last 2 versions",
- "not dead",
- "not ie 11"
- ]
+ "name": "frontend",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "serve": "vue-cli-service build --watch --dest ../run/static",
+ "build": "vue-cli-service build",
+ "lint": "vue-cli-service lint"
+ },
+ "dependencies": {
+ "axios": "^0.27.2",
+ "class-transformer": "^0.5.1",
+ "class-validator": "^0.13.2",
+ "core-js": "^3.8.3",
+ "filesize": "^9.0.11",
+ "jwt-decode": "^3.1.2",
+ "naive-ui": "^2.32.1",
+ "stream-browserify": "^3.0.0",
+ "util": "^0.12.4",
+ "vue": "^3.2.13",
+ "vue-router": "^4.0.3"
+ },
+ "devDependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.4.0",
+ "@typescript-eslint/parser": "^5.4.0",
+ "@vue/cli-plugin-babel": "~5.0.0",
+ "@vue/cli-plugin-eslint": "~5.0.0",
+ "@vue/cli-plugin-router": "~5.0.0",
+ "@vue/cli-plugin-typescript": "~5.0.0",
+ "@vue/cli-service": "~5.0.0",
+ "@vue/eslint-config-typescript": "^9.1.0",
+ "eslint": "^7.32.0",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-vue": "^8.0.3",
+ "prettier": "^2.4.1",
+ "sass": "^1.32.7",
+ "sass-loader": "^12.0.0",
+ "typescript": "~4.5.5",
+ "vfonts": "^0.0.3"
+ },
+ "eslintConfig": {
+ "root": true,
+ "env": {
+ "node": true
+ },
+ "extends": [
+ "plugin:vue/vue3-essential",
+ "eslint:recommended",
+ "@vue/typescript/recommended",
+ "plugin:prettier/recommended"
+ ],
+ "parserOptions": {
+ "ecmaVersion": 2020
+ },
+ "rules": {}
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions",
+ "not dead",
+ "not ie 11"
+ ]
}
diff --git a/frontend/public/index.html b/frontend/public/index.html
index 05b8556..ed5728d 100644
--- a/frontend/public/index.html
+++ b/frontend/public/index.html
@@ -1,18 +1,22 @@
-
-
-
-
-
-
- <%= htmlWebpackPlugin.options.title %>
-
-
-
-
-
-
+
+
+
+
+
+
+ <%= htmlWebpackPlugin.options.title %>
+
+
+
+
+
+
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index ade3bb9..089e1c2 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -1,62 +1,62 @@
-
-
+
+
diff --git a/frontend/src/AppAsyncWrapper.vue b/frontend/src/AppAsyncWrapper.vue
index 9442630..c223354 100644
--- a/frontend/src/AppAsyncWrapper.vue
+++ b/frontend/src/AppAsyncWrapper.vue
@@ -1,12 +1,12 @@
-
-
-
- Loading...
-
-
+
+
+
+ Loading...
+
+
diff --git a/frontend/src/api/admin.ts b/frontend/src/api/admin.ts
index fb7aad7..76f2299 100644
--- a/frontend/src/api/admin.ts
+++ b/frontend/src/api/admin.ts
@@ -1,54 +1,54 @@
-import { Requests, Responses, UserRole, get_token, post_token } from "./base";
+import { Requests, Responses, UserRole, get_token, post_token } from './base';
export const get_users = (token: string): Promise =>
- get_token("/api/admin/users", token);
+ get_token('/api/admin/users', token);
export const set_role = (
- user: number,
- role: UserRole,
- token: string
+ user: number,
+ role: UserRole,
+ token: string
): Promise =>
- post_token(
- "/api/admin/set_role",
- {
- user,
- role,
- },
- token
- );
+ post_token(
+ '/api/admin/set_role',
+ {
+ user,
+ role
+ },
+ token
+ );
export const logout = (
- user: number,
- token: string
+ user: number,
+ token: string
): Promise =>
- post_token(
- "/api/admin/logout",
- {
- user,
- },
- token
- );
+ post_token(
+ '/api/admin/logout',
+ {
+ user
+ },
+ token
+ );
export const delete_user = (
- user: number,
- token: string
+ user: number,
+ token: string
): Promise =>
- post_token(
- "/api/admin/delete",
- {
- user,
- },
- token
- );
+ post_token(
+ '/api/admin/delete',
+ {
+ user
+ },
+ token
+ );
export const disable_tfa = (
- user: number,
- token: string
+ user: number,
+ token: string
): Promise =>
- post_token(
- "/api/admin/disable_2fa",
- {
- user,
- },
- token
- );
+ post_token(
+ '/api/admin/disable_2fa',
+ {
+ user
+ },
+ token
+ );
diff --git a/frontend/src/api/auth.ts b/frontend/src/api/auth.ts
index c1f3b1b..c4d9afd 100644
--- a/frontend/src/api/auth.ts
+++ b/frontend/src/api/auth.ts
@@ -1,93 +1,93 @@
-import { Responses, Requests, post, post_token } from "./base";
+import { Responses, Requests, post, post_token } from './base';
export const auth_login = (
- username: string,
- password: string,
- otp?: string
+ username: string,
+ password: string,
+ otp?: string
): Promise<
- | Responses.Auth.LoginResponse
- | Responses.Auth.TfaRequiredResponse
- | Responses.ErrorResponse
+ | Responses.Auth.LoginResponse
+ | Responses.Auth.TfaRequiredResponse
+ | Responses.ErrorResponse
> =>
- post("/api/auth/login", {
- username: username,
- password: password,
- otp: otp,
- });
+ post('/api/auth/login', {
+ username: username,
+ password: password,
+ otp: otp
+ });
export const auth_signup = (
- username: string,
- password: string
+ username: string,
+ password: string
): Promise =>
- post("/api/auth/signup", {
- username: username,
- password: password,
- });
+ post('/api/auth/signup', {
+ username: username,
+ password: password
+ });
export const refresh_token = (
- token: string
+ token: string
): Promise =>
- post_token("/api/auth/refresh", {}, token);
+ post_token('/api/auth/refresh', {}, token);
export const change_password = (
- oldPw: string,
- newPw: string,
- token: string
+ oldPw: string,
+ newPw: string,
+ token: string
): Promise =>
- post_token(
- "/api/auth/change_password",
- {
- oldPassword: oldPw,
- newPassword: newPw,
- },
- token
- );
+ post_token(
+ '/api/auth/change_password',
+ {
+ oldPassword: oldPw,
+ newPassword: newPw
+ },
+ token
+ );
export const logout_all = (
- token: string
+ token: string
): Promise =>
- post_token("/api/auth/logout_all", {}, token);
+ post_token('/api/auth/logout_all', {}, token);
export function tfa_setup(
- mail: false,
- token: string
+ mail: false,
+ token: string
): Promise;
export function tfa_setup(
- mail: true,
- token: string
+ mail: true,
+ token: string
): Promise;
export function tfa_setup(
- mail: boolean,
- token: string
+ mail: boolean,
+ token: string
): Promise<
- | Responses.Auth.RequestEmailTfaResponse
- | Responses.Auth.RequestTotpTfaResponse
- | Responses.ErrorResponse
+ | Responses.Auth.RequestEmailTfaResponse
+ | Responses.Auth.RequestTotpTfaResponse
+ | Responses.ErrorResponse
> {
- return post_token(
- "/api/auth/2fa/setup",
- {
- mail,
- },
- token
- );
+ return post_token(
+ '/api/auth/2fa/setup',
+ {
+ mail
+ },
+ token
+ );
}
export const tfa_complete = (
- mail: boolean,
- code: string,
- token: string
+ mail: boolean,
+ code: string,
+ token: string
): Promise =>
- post_token(
- "/api/auth/2fa/complete",
- {
- mail,
- code,
- },
- token
- );
+ post_token(
+ '/api/auth/2fa/complete',
+ {
+ mail,
+ code
+ },
+ token
+ );
export const tfa_disable = (
- token: string
+ token: string
): Promise =>
- post_token("/api/auth/2fa/disable", {}, token);
+ post_token('/api/auth/2fa/disable', {}, token);
diff --git a/frontend/src/api/base.ts b/frontend/src/api/base.ts
index 54d91d9..826f983 100644
--- a/frontend/src/api/base.ts
+++ b/frontend/src/api/base.ts
@@ -1,62 +1,62 @@
-import axios from "axios";
-import { Requests, Responses, UserRole } from "../dto";
+import axios from 'axios';
+import { Requests, Responses, UserRole } from '../dto';
export { Requests, Responses, UserRole };
export const post = (url: string, data: T) =>
- axios
- .post(url, data, {
- headers: { "Content-type": "application/json" },
- })
- .then((res) => res.data)
- .catch((err) => err.response.data);
+ axios
+ .post(url, data, {
+ headers: { 'Content-type': 'application/json' }
+ })
+ .then((res) => res.data)
+ .catch((err) => err.response.data);
export const post_token = (
- url: string,
- data: T,
- token: string
+ url: string,
+ data: T,
+ token: string
) =>
- axios
- .post(url, data, {
- headers: {
- Authorization: "Bearer " + token,
- "Content-type": "application/json",
- },
- })
- .then((res) => res.data)
- .catch((err) => err.response.data);
+ axios
+ .post(url, data, {
+ headers: {
+ Authorization: 'Bearer ' + token,
+ 'Content-type': 'application/json'
+ }
+ })
+ .then((res) => res.data)
+ .catch((err) => err.response.data);
export const post_token_form = (
- url: string,
- data: FormData,
- token: string,
- onProgress: (progressEvent: ProgressEvent) => void
+ url: string,
+ data: FormData,
+ token: string,
+ onProgress: (progressEvent: ProgressEvent) => void
) =>
- axios
- .post(url, data, {
- headers: {
- Authorization: "Bearer " + token,
- "Content-type": "multipart/form-data",
- },
- onUploadProgress: onProgress,
- })
- .then((res) => res.data)
- .catch((err) => err.response.data);
+ axios
+ .post(url, data, {
+ headers: {
+ Authorization: 'Bearer ' + token,
+ 'Content-type': 'multipart/form-data'
+ },
+ onUploadProgress: onProgress
+ })
+ .then((res) => res.data)
+ .catch((err) => err.response.data);
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const get = (url: string) =>
- axios
- .get(url)
- .then((res) => res.data)
- .catch((err) => err.response.data);
+ axios
+ .get(url)
+ .then((res) => res.data)
+ .catch((err) => err.response.data);
export const get_token = (url: string, token: string) =>
- axios
- .get(url, {
- headers: { Authorization: "Bearer " + token },
- })
- .then((res) => res.data)
- .catch((err) => err.response.data);
+ axios
+ .get(url, {
+ headers: { Authorization: 'Bearer ' + token }
+ })
+ .then((res) => res.data)
+ .catch((err) => err.response.data);
export const isErrorResponse = (
- res: Responses.BaseResponse
+ res: Responses.BaseResponse
): res is Responses.ErrorResponse => res.statusCode != 200;
diff --git a/frontend/src/api/fs.ts b/frontend/src/api/fs.ts
index 9c16066..dfc9ef5 100644
--- a/frontend/src/api/fs.ts
+++ b/frontend/src/api/fs.ts
@@ -1,84 +1,89 @@
import {
- Responses,
- Requests,
- get_token,
- post_token,
- post_token_form,
- isErrorResponse,
-} from "./base";
+ Responses,
+ Requests,
+ get_token,
+ post_token,
+ post_token_form,
+ isErrorResponse
+} from './base';
export const get_root = (
- token: string
+ token: string
): Promise =>
- get_token("/api/fs/root", token);
+ get_token('/api/fs/root', token);
export const get_node = (
- token: string,
- node: number
+ token: string,
+ node: number
): Promise =>
- get_token(`/api/fs/node/${node}`, token);
+ get_token(`/api/fs/node/${node}`, token);
export const get_path = (
- token: string,
- node: number
+ token: string,
+ node: number
): Promise =>
- get_token(`/api/fs/path/${node}`, token);
+ get_token(`/api/fs/path/${node}`, token);
export const create_folder = (
- token: string,
- parent: number,
- name: string
+ token: string,
+ parent: number,
+ name: string
): Promise =>
- post_token(
- "/api/fs/createFolder",
- {
- parent: parent,
- name: name,
- },
- token
- );
+ post_token(
+ '/api/fs/createFolder',
+ {
+ parent: parent,
+ name: name
+ },
+ token
+ );
export const create_file = (
- token: string,
- parent: number,
- name: string
+ token: string,
+ parent: number,
+ name: string
): Promise =>
- post_token(
- "/api/fs/createFile",
- {
- parent: parent,
- name: name,
- },
- token
- );
+ post_token(
+ '/api/fs/createFile',
+ {
+ parent: parent,
+ name: name
+ },
+ token
+ );
export const delete_node = (
- token: string,
- node: number
+ token: string,
+ node: number
): Promise =>
- post_token(`/api/fs/delete/${node}`, {}, token);
+ post_token(`/api/fs/delete/${node}`, {}, token);
export const upload_file = async (
- token: string,
- parent: number,
- file: File,
- onProgress: (progressEvent: ProgressEvent) => void
+ token: string,
+ parent: number,
+ file: File,
+ onProgress: (progressEvent: ProgressEvent) => void
): Promise => {
- const node = await create_file(token, parent, file.name);
- if (isErrorResponse(node)) return node;
+ const node = await create_file(token, parent, file.name);
+ if (isErrorResponse(node)) return node;
- const form = new FormData();
- form.set("file", file);
- return post_token_form(`/api/fs/upload/${node.id}`, form, token, onProgress);
+ const form = new FormData();
+ form.set('file', file);
+ return post_token_form(
+ `/api/fs/upload/${node.id}`,
+ form,
+ token,
+ onProgress
+ );
};
export function download_file(token: string, id: number) {
- const form = document.createElement("form");
- form.method = "post";
- form.target = "_blank";
- form.action = "/api/fs/download";
- form.innerHTML = ``;
- document.body.appendChild(form);
- form.submit();
- document.body.removeChild(form);
+ const form = document.createElement('form');
+ form.method = 'post';
+ form.target = '_blank';
+ form.action = '/api/fs/download';
+ form.innerHTML = ``;
+ document.body.appendChild(form);
+ form.submit();
+ document.body.removeChild(form);
}
diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts
index b54dd28..576da46 100644
--- a/frontend/src/api/index.ts
+++ b/frontend/src/api/index.ts
@@ -1,6 +1,6 @@
-export { Requests, Responses, UserRole, isErrorResponse } from "./base";
-export * as Auth from "./auth";
-export * as FS from "./fs";
-export * as User from "./user";
-export * as Admin from "./admin";
-export * from "./util";
+export { Requests, Responses, UserRole, isErrorResponse } from './base';
+export * as Auth from './auth';
+export * as FS from './fs';
+export * as User from './user';
+export * as Admin from './admin';
+export * from './util';
diff --git a/frontend/src/api/user.ts b/frontend/src/api/user.ts
index 670e55f..13e2d89 100644
--- a/frontend/src/api/user.ts
+++ b/frontend/src/api/user.ts
@@ -1,11 +1,11 @@
-import { Responses, get_token, post_token } from "@/api/base";
+import { Responses, get_token, post_token } from '@/api/base';
export const get_user_info = (
- token: string
+ token: string
): Promise =>
- get_token("/api/user/info", token);
+ get_token('/api/user/info', token);
export const delete_user = (
- token: string
+ token: string
): Promise =>
- post_token("/api/user/delete", {}, token);
+ post_token('/api/user/delete', {}, token);
diff --git a/frontend/src/api/util.ts b/frontend/src/api/util.ts
index 72bfd63..905d4aa 100644
--- a/frontend/src/api/util.ts
+++ b/frontend/src/api/util.ts
@@ -1,25 +1,25 @@
-import jwtDecode, { JwtPayload } from "jwt-decode";
-import { Ref, UnwrapRef } from "vue";
-import { isErrorResponse } from "./base";
-import { refresh_token } from "./auth";
+import jwtDecode, { JwtPayload } from 'jwt-decode';
+import { Ref, UnwrapRef } from 'vue';
+import { isErrorResponse } from './base';
+import { refresh_token } from './auth';
export async function check_token(
- token: TokenInjectType
+ token: TokenInjectType
): Promise {
- if (!token.jwt.value) return token.logout();
- const payload = jwtDecode(token.jwt.value);
- if (!payload) return token.logout();
- // Expires in more than 60 Minute
- if (payload.exp && payload.exp > Math.floor(Date.now() / 1000 + 60 * 60))
- return token.jwt.value;
- const new_token = await refresh_token(token.jwt.value);
- if (isErrorResponse(new_token)) return token.logout();
- token.setToken(new_token.jwt);
- return new_token.jwt;
+ if (!token.jwt.value) return token.logout();
+ const payload = jwtDecode(token.jwt.value);
+ if (!payload) return token.logout();
+ // Expires in more than 60 Minute
+ if (payload.exp && payload.exp > Math.floor(Date.now() / 1000 + 60 * 60))
+ return token.jwt.value;
+ const new_token = await refresh_token(token.jwt.value);
+ if (isErrorResponse(new_token)) return token.logout();
+ token.setToken(new_token.jwt);
+ return new_token.jwt;
}
export type TokenInjectType = {
- jwt: Ref>;
- setToken: (token: string) => void;
- logout: () => void;
+ jwt: Ref>;
+ setToken: (token: string) => void;
+ logout: () => void;
};
diff --git a/frontend/src/components/FSView/DirEntry.vue b/frontend/src/components/FSView/DirEntry.vue
index 10c4290..548e3f8 100644
--- a/frontend/src/components/FSView/DirEntry.vue
+++ b/frontend/src/components/FSView/DirEntry.vue
@@ -1,40 +1,40 @@
-
- {{ node.name }}
- |
-
- Download
- |
-
- delete
- |
+
+ {{ node.name }}
+ |
+
+ Download
+ |
+
+ delete
+ |
diff --git a/frontend/src/components/FSView/DirViewer.vue b/frontend/src/components/FSView/DirViewer.vue
index fc1fcf0..d77fc14 100644
--- a/frontend/src/components/FSView/DirViewer.vue
+++ b/frontend/src/components/FSView/DirViewer.vue
@@ -1,101 +1,108 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/frontend/src/components/FSView/FileViewer.vue b/frontend/src/components/FSView/FileViewer.vue
index 9cec46c..9bda494 100644
--- a/frontend/src/components/FSView/FileViewer.vue
+++ b/frontend/src/components/FSView/FileViewer.vue
@@ -1,38 +1,38 @@
-
- ..
-
-
-
-
- delete
-
-
+
+ ..
+
+
+
+
+ delete
+
+
diff --git a/frontend/src/components/HelloWorld.vue b/frontend/src/components/HelloWorld.vue
index 2fb8b10..775d75f 100644
--- a/frontend/src/components/HelloWorld.vue
+++ b/frontend/src/components/HelloWorld.vue
@@ -1,140 +1,156 @@
-
-
{{ msg }}
-
- For a guide and recipes on how to configure / customize this project,
- check out the
- vue-cli documentation.
-
-
Installed CLI Plugins
-
-
Essential Links
-
-
Ecosystem
-
-
+
+
{{ msg }}
+
+ For a guide and recipes on how to configure / customize this
+ project,
+ check out the
+ vue-cli documentation.
+
+
Installed CLI Plugins
+
+
Essential Links
+
+
Ecosystem
+
+
diff --git a/frontend/src/components/UploadDialog/UploadEntry.vue b/frontend/src/components/UploadDialog/UploadEntry.vue
index 1479bdf..392e0e9 100644
--- a/frontend/src/components/UploadDialog/UploadEntry.vue
+++ b/frontend/src/components/UploadDialog/UploadEntry.vue
@@ -1,51 +1,51 @@
-
- {{ file.name }} - {{ filesize(progress) }} / {{ filesize(file.size) }} -
- {{ Math.floor(percentage * 1000) / 1000 }}%
-
- {{ file.name }} - Error: {{ err }}
- {{ file.name }} - Completed
-
+
+ {{ file.name }} - {{ filesize(progress) }} / {{ filesize(file.size) }} -
+ {{ Math.floor(percentage * 1000) / 1000 }}%
+
+ {{ file.name }} - Error: {{ err }}
+ {{ file.name }} - Completed
+
diff --git a/frontend/src/components/UploadDialog/UploadFileDialog.vue b/frontend/src/components/UploadDialog/UploadFileDialog.vue
index 4dcc9ac..d830a5d 100644
--- a/frontend/src/components/UploadDialog/UploadFileDialog.vue
+++ b/frontend/src/components/UploadDialog/UploadFileDialog.vue
@@ -1,10 +1,10 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/frontend/src/dto/index.ts b/frontend/src/dto/index.ts
index 9fa4ceb..704c086 100644
--- a/frontend/src/dto/index.ts
+++ b/frontend/src/dto/index.ts
@@ -1,8 +1,8 @@
-export * as Requests from "./requests";
-export * as Responses from "./responses";
+export * as Requests from './requests';
+export * as Responses from './responses';
export {
- UserRole,
- validateSync,
- validateAsync,
- validateAsyncInline,
-} from "./utils";
+ UserRole,
+ validateSync,
+ validateAsync,
+ validateAsyncInline
+} from './utils';
diff --git a/frontend/src/dto/requests/admin.ts b/frontend/src/dto/requests/admin.ts
index 3b33f4b..91f281a 100644
--- a/frontend/src/dto/requests/admin.ts
+++ b/frontend/src/dto/requests/admin.ts
@@ -1,15 +1,15 @@
-import { BaseRequest } from "./base";
-import { IsEnum, IsNumber } from "class-validator";
-import { UserRole } from "../utils";
+import { BaseRequest } from './base';
+import { IsEnum, IsNumber } from 'class-validator';
+import { UserRole } from '@/dto';
export class AdminRequest extends BaseRequest {
- @IsNumber()
- user: number;
+ @IsNumber()
+ user: number;
}
export class SetUserRole extends AdminRequest {
- @IsEnum(UserRole)
- role: UserRole;
+ @IsEnum(UserRole)
+ role: UserRole;
}
export class LogoutAll extends AdminRequest {}
diff --git a/frontend/src/dto/requests/auth.ts b/frontend/src/dto/requests/auth.ts
index ae30c14..50ed258 100644
--- a/frontend/src/dto/requests/auth.ts
+++ b/frontend/src/dto/requests/auth.ts
@@ -1,50 +1,50 @@
-import { BaseRequest } from "./base";
+import { BaseRequest } from './base';
import {
- IsBoolean,
- IsEmail,
- IsNotEmpty,
- IsOptional,
- IsString,
-} from "class-validator";
+ IsBoolean,
+ IsEmail,
+ IsNotEmpty,
+ IsOptional,
+ IsString
+} from 'class-validator';
export class SignUpRequest extends BaseRequest {
- @IsEmail()
- username: string;
+ @IsEmail()
+ username: string;
- @IsNotEmpty()
- @IsString()
- password: string;
+ @IsNotEmpty()
+ @IsString()
+ password: string;
}
export class LoginRequest extends SignUpRequest {
- @IsOptional()
- @IsNotEmpty()
- @IsString()
- otp?: string;
+ @IsOptional()
+ @IsNotEmpty()
+ @IsString()
+ otp?: string;
}
export class TfaSetup extends BaseRequest {
- @IsNotEmpty()
- @IsBoolean()
- mail: boolean;
+ @IsNotEmpty()
+ @IsBoolean()
+ mail: boolean;
}
export class TfaComplete extends BaseRequest {
- @IsNotEmpty()
- @IsBoolean()
- mail: boolean;
+ @IsNotEmpty()
+ @IsBoolean()
+ mail: boolean;
- @IsNotEmpty()
- @IsString()
- code: string;
+ @IsNotEmpty()
+ @IsString()
+ code: string;
}
export class ChangePasswordRequest extends BaseRequest {
- @IsNotEmpty()
- @IsString()
- oldPassword: string;
+ @IsNotEmpty()
+ @IsString()
+ oldPassword: string;
- @IsNotEmpty()
- @IsString()
- newPassword: string;
+ @IsNotEmpty()
+ @IsString()
+ newPassword: string;
}
diff --git a/frontend/src/dto/requests/fs.ts b/frontend/src/dto/requests/fs.ts
index a26cdd5..0108865 100644
--- a/frontend/src/dto/requests/fs.ts
+++ b/frontend/src/dto/requests/fs.ts
@@ -1,14 +1,14 @@
-import { BaseRequest } from "./base";
-import { IsInt, IsNotEmpty, IsString, Min } from "class-validator";
+import { BaseRequest } from './base';
+import { IsInt, IsNotEmpty, IsString, Min } from 'class-validator';
export class CreateFolderRequest extends BaseRequest {
- @IsInt()
- @Min(1)
- parent: number;
+ @IsInt()
+ @Min(1)
+ parent: number;
- @IsNotEmpty()
- @IsString()
- name: string;
+ @IsNotEmpty()
+ @IsString()
+ name: string;
}
export class CreateFileRequest extends CreateFolderRequest {}
diff --git a/frontend/src/dto/requests/index.ts b/frontend/src/dto/requests/index.ts
index 3f4cf66..684e96f 100644
--- a/frontend/src/dto/requests/index.ts
+++ b/frontend/src/dto/requests/index.ts
@@ -1,4 +1,4 @@
-export * from "./base";
-export * as Auth from "./auth";
-export * as FS from "./fs";
-export * as Admin from "./admin";
+export * from './base';
+export * as Auth from './auth';
+export * as FS from './fs';
+export * as Admin from './admin';
diff --git a/frontend/src/dto/responses/admin.ts b/frontend/src/dto/responses/admin.ts
index b09564e..f62183b 100644
--- a/frontend/src/dto/responses/admin.ts
+++ b/frontend/src/dto/responses/admin.ts
@@ -1,58 +1,58 @@
-import { SuccessResponse } from "./base";
+import { SuccessResponse } from './base';
import {
- IsArray,
- IsBoolean,
- IsEnum,
- IsNotEmpty,
- IsNumber,
- IsString,
- ValidateNested,
-} from "class-validator";
-import { UserRole, ValidateConstructor } from "../utils";
+ IsArray,
+ IsBoolean,
+ IsEnum,
+ IsNotEmpty,
+ IsNumber,
+ IsString,
+ ValidateNested
+} from 'class-validator';
+import { UserRole, ValidateConstructor } from '../utils';
@ValidateConstructor
export class GetUsersEntry {
- constructor(
- id: number,
- gitlab: boolean,
- name: string,
- role: UserRole,
- tfaEnabled: boolean
- ) {
- this.id = id;
- this.gitlab = gitlab;
- this.name = name;
- this.role = role;
- this.tfaEnabled = tfaEnabled;
- }
+ constructor(
+ id: number,
+ gitlab: boolean,
+ name: string,
+ role: UserRole,
+ tfaEnabled: boolean
+ ) {
+ this.id = id;
+ this.gitlab = gitlab;
+ this.name = name;
+ this.role = role;
+ this.tfaEnabled = tfaEnabled;
+ }
- @IsNumber()
- id: number;
+ @IsNumber()
+ id: number;
- @IsBoolean()
- gitlab: boolean;
+ @IsBoolean()
+ gitlab: boolean;
- @IsString()
- @IsNotEmpty()
- name: string;
+ @IsString()
+ @IsNotEmpty()
+ name: string;
- @IsEnum(UserRole)
- role: UserRole;
+ @IsEnum(UserRole)
+ role: UserRole;
- @IsBoolean()
- tfaEnabled: boolean;
+ @IsBoolean()
+ tfaEnabled: boolean;
}
@ValidateConstructor
export class GetUsers extends SuccessResponse {
- constructor(users: GetUsersEntry[]) {
- super();
- this.users = users;
- }
+ constructor(users: GetUsersEntry[]) {
+ super();
+ this.users = users;
+ }
- @IsArray()
- @ValidateNested({ each: true })
- users: GetUsersEntry[];
+ @IsArray()
+ @ValidateNested({ each: true })
+ users: GetUsersEntry[];
}
export class LogoutAllUser extends SuccessResponse {}
diff --git a/frontend/src/dto/responses/auth.ts b/frontend/src/dto/responses/auth.ts
index e4c1359..76de70b 100644
--- a/frontend/src/dto/responses/auth.ts
+++ b/frontend/src/dto/responses/auth.ts
@@ -1,33 +1,33 @@
-import { SuccessResponse } from "./base";
-import { IsBase32, IsJWT, IsNotEmpty } from "class-validator";
-import { ValidateConstructor } from "../utils";
+import { SuccessResponse } from './base';
+import { IsBase32, IsJWT, IsNotEmpty } from 'class-validator';
+import { ValidateConstructor } from '../utils';
@ValidateConstructor
export class LoginResponse extends SuccessResponse {
- constructor(jwt: string) {
- super();
- this.jwt = jwt;
- }
+ constructor(jwt: string) {
+ super();
+ this.jwt = jwt;
+ }
- @IsNotEmpty()
- @IsJWT()
- jwt: string;
+ @IsNotEmpty()
+ @IsJWT()
+ jwt: string;
}
@ValidateConstructor
export class RequestTotpTfaResponse extends SuccessResponse {
- constructor(qrCode: string, secret: string) {
- super();
- this.qrCode = qrCode;
- this.secret = secret;
- }
+ constructor(qrCode: string, secret: string) {
+ super();
+ this.qrCode = qrCode;
+ this.secret = secret;
+ }
- @IsNotEmpty()
- qrCode: string;
+ @IsNotEmpty()
+ qrCode: string;
- @IsNotEmpty()
- @IsBase32()
- secret: string;
+ @IsNotEmpty()
+ @IsBase32()
+ secret: string;
}
export class TfaRequiredResponse extends SuccessResponse {}
diff --git a/frontend/src/dto/responses/base.ts b/frontend/src/dto/responses/base.ts
index d17e033..7667e40 100644
--- a/frontend/src/dto/responses/base.ts
+++ b/frontend/src/dto/responses/base.ts
@@ -1,25 +1,25 @@
-import { IsNumber, Max, Min } from "class-validator";
+import { IsNumber, Max, Min } from 'class-validator';
export class BaseResponse {
- constructor(statusCode: number) {
- this.statusCode = statusCode;
- }
+ constructor(statusCode: number) {
+ this.statusCode = statusCode;
+ }
- @IsNumber()
- @Min(100)
- @Max(599)
- statusCode: number;
+ @IsNumber()
+ @Min(100)
+ @Max(599)
+ statusCode: number;
}
export class SuccessResponse extends BaseResponse {
- constructor() {
- super(200);
- }
+ constructor() {
+ super(200);
+ }
- declare statusCode: 200;
+ declare statusCode: 200;
}
export class ErrorResponse extends BaseResponse {
- declare statusCode: 400 | 401 | 403;
- message?: string;
+ declare statusCode: 400 | 401 | 403;
+ message?: string;
}
diff --git a/frontend/src/dto/responses/fs.ts b/frontend/src/dto/responses/fs.ts
index d87c9e8..2ecb48c 100644
--- a/frontend/src/dto/responses/fs.ts
+++ b/frontend/src/dto/responses/fs.ts
@@ -1,87 +1,87 @@
-import { SuccessResponse } from "./base";
+import { SuccessResponse } from './base';
import {
- IsBoolean,
- IsInt,
- IsNotEmpty,
- IsOptional,
- IsString,
- Min,
-} from "class-validator";
-import { ValidateConstructor } from "../utils";
+ IsBoolean,
+ IsInt,
+ IsNotEmpty,
+ IsOptional,
+ IsString,
+ Min
+} from 'class-validator';
+import { ValidateConstructor } from '../utils';
@ValidateConstructor
export class GetRootResponse extends SuccessResponse {
- constructor(rootId: number) {
- super();
- this.rootId = rootId;
- }
- @IsInt()
- @Min(1)
- rootId: number;
+ constructor(rootId: number) {
+ super();
+ this.rootId = rootId;
+ }
+ @IsInt()
+ @Min(1)
+ rootId: number;
}
export class GetNodeResponse extends SuccessResponse {
- constructor(
- id: number,
- name: string,
- isFile: boolean,
- parent: number | null
- ) {
- super();
- this.id = id;
- this.name = name;
- this.isFile = isFile;
- this.parent = parent;
- }
+ constructor(
+ id: number,
+ name: string,
+ isFile: boolean,
+ parent: number | null
+ ) {
+ super();
+ this.id = id;
+ this.name = name;
+ this.isFile = isFile;
+ this.parent = parent;
+ }
- @IsInt()
- @Min(1)
- id: number;
+ @IsInt()
+ @Min(1)
+ id: number;
- @IsString()
- name: string;
+ @IsString()
+ name: string;
- @IsBoolean()
- isFile: boolean;
+ @IsBoolean()
+ isFile: boolean;
- @IsOptional()
- @IsInt()
- @Min(1)
- parent: number | null;
+ @IsOptional()
+ @IsInt()
+ @Min(1)
+ parent: number | null;
- @IsOptional()
- @IsInt({ each: true })
- @Min(1, { each: true })
- children?: number[];
+ @IsOptional()
+ @IsInt({ each: true })
+ @Min(1, { each: true })
+ children?: number[];
- @IsOptional()
- @IsInt()
- @Min(0)
- size?: number;
+ @IsOptional()
+ @IsInt()
+ @Min(0)
+ size?: number;
}
@ValidateConstructor
export class GetPathResponse extends SuccessResponse {
- constructor(path: string) {
- super();
- this.path = path;
- }
+ constructor(path: string) {
+ super();
+ this.path = path;
+ }
- @IsNotEmpty()
- @IsString()
- path: string;
+ @IsNotEmpty()
+ @IsString()
+ path: string;
}
@ValidateConstructor
export class CreateFolderResponse extends SuccessResponse {
- constructor(id: number) {
- super();
- this.id = id;
- }
+ constructor(id: number) {
+ super();
+ this.id = id;
+ }
- @IsInt()
- @Min(1)
- id: number;
+ @IsInt()
+ @Min(1)
+ id: number;
}
export class UploadFileResponse extends SuccessResponse {}
diff --git a/frontend/src/dto/responses/index.ts b/frontend/src/dto/responses/index.ts
index d985eea..0c84bc4 100644
--- a/frontend/src/dto/responses/index.ts
+++ b/frontend/src/dto/responses/index.ts
@@ -1,5 +1,5 @@
-export * from "./base";
-export * as Auth from "./auth";
-export * as FS from "./fs";
-export * as User from "./user";
-export * as Admin from "./admin";
+export * from './base';
+export * as Auth from './auth';
+export * as FS from './fs';
+export * as User from './user';
+export * as Admin from './admin';
diff --git a/frontend/src/dto/responses/user.ts b/frontend/src/dto/responses/user.ts
index 6d44861..706526b 100644
--- a/frontend/src/dto/responses/user.ts
+++ b/frontend/src/dto/responses/user.ts
@@ -1,25 +1,25 @@
-import { SuccessResponse } from "./base";
-import { ValidateConstructor } from "../utils";
-import { IsBoolean, IsNotEmpty, IsString } from "class-validator";
+import { SuccessResponse } from './base';
+import { ValidateConstructor } from '../utils';
+import { IsBoolean, IsNotEmpty, IsString } from 'class-validator';
@ValidateConstructor
export class UserInfoResponse extends SuccessResponse {
- constructor(name: string, gitlab: boolean, tfaEnabled: boolean) {
- super();
- this.name = name;
- this.gitlab = gitlab;
- this.tfaEnabled = tfaEnabled;
- }
+ constructor(name: string, gitlab: boolean, tfaEnabled: boolean) {
+ super();
+ this.name = name;
+ this.gitlab = gitlab;
+ this.tfaEnabled = tfaEnabled;
+ }
- @IsNotEmpty()
- @IsString()
- name: string;
+ @IsNotEmpty()
+ @IsString()
+ name: string;
- @IsBoolean()
- gitlab: boolean;
+ @IsBoolean()
+ gitlab: boolean;
- @IsBoolean()
- tfaEnabled: boolean;
+ @IsBoolean()
+ tfaEnabled: boolean;
}
export class DeleteUserResponse extends SuccessResponse {}
diff --git a/frontend/src/dto/utils.ts b/frontend/src/dto/utils.ts
index 229da51..cda3a2e 100644
--- a/frontend/src/dto/utils.ts
+++ b/frontend/src/dto/utils.ts
@@ -1,41 +1,43 @@
-import { validate, validateSync as _validateSync } from "class-validator";
+import { validate, validateSync as _validateSync } from 'class-validator';
export enum UserRole {
- ADMIN = 2,
- USER = 1,
- DISABLED = 0,
+ ADMIN = 2,
+ USER = 1,
+ DISABLED = 0
}
export function validateSync(data: T): void {
- const errors = _validateSync(data);
- if (errors.length > 0) {
- console.error("Validation failed, errors: ", errors);
- throw new Error("Validation failed");
- }
+ const errors = _validateSync(data);
+ if (errors.length > 0) {
+ console.error('Validation failed, errors: ', errors);
+ throw new Error('Validation failed');
+ }
}
export async function validateAsync(data: T): Promise {
- const errors = await validate(data);
- if (errors.length > 0) {
- console.error("Validation failed, errors: ", errors);
- throw new Error("Validation failed");
- }
+ const errors = await validate(data);
+ if (errors.length > 0) {
+ console.error('Validation failed, errors: ', errors);
+ throw new Error('Validation failed');
+ }
}
export async function validateAsyncInline(
- data: T
+ data: T
): Promise {
- await validateAsync(data);
- return data;
+ await validateAsync(data);
+ return data;
}
-export function ValidateConstructor(
- constr: T
-) {
- return class extends constr {
- constructor(...args: any[]) {
- super(...args);
- validateSync(this);
- }
- };
+export function ValidateConstructor<
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ T extends { new (...args: any[]): any }
+>(constr: T) {
+ return class extends constr {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ constructor(...args: any[]) {
+ super(...args);
+ validateSync(this);
+ }
+ };
}
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index 8e69ff4..61a7273 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -1,8 +1,8 @@
-import { createApp } from "vue";
-import router from "./router";
-import AppAsyncWrapper from "./AppAsyncWrapper.vue";
+import { createApp } from 'vue';
+import router from './router';
+import AppAsyncWrapper from './AppAsyncWrapper.vue';
const app = createApp(AppAsyncWrapper);
app.use(router);
app.config.unwrapInjectedRef = true;
-app.mount("#app");
+app.mount('#app');
diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts
index 8547abd..b045c4c 100644
--- a/frontend/src/router/index.ts
+++ b/frontend/src/router/index.ts
@@ -1,63 +1,63 @@
-import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
-import LoginView from "@/views/LoginView.vue";
-import SignupView from "@/views/SignupView.vue";
-import HomeView from "@/views/HomeView.vue";
-import AboutView from "@/views/AboutView.vue";
-import FSView from "@/views/FSView.vue";
-import SetTokenView from "@/views/SetTokenView.vue";
-import ProfileView from "@/views/ProfileView.vue";
-import TFAView from "@/views/TFAView.vue";
-import AdminView from "@/views/AdminView.vue";
+import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
+import LoginView from '@/views/LoginView.vue';
+import SignupView from '@/views/SignupView.vue';
+import HomeView from '@/views/HomeView.vue';
+import AboutView from '@/views/AboutView.vue';
+import FSView from '@/views/FSView.vue';
+import SetTokenView from '@/views/SetTokenView.vue';
+import ProfileView from '@/views/ProfileView.vue';
+import TFAView from '@/views/TFAView.vue';
+import AdminView from '@/views/AdminView.vue';
const routes: Array = [
- {
- path: "/",
- name: "home",
- component: HomeView,
- },
- {
- path: "/profile",
- name: "profile",
- component: ProfileView,
- },
- {
- path: "/profile/2fa-enable",
- name: "2fa",
- component: TFAView,
- },
- {
- path: "/admin",
- component: AdminView,
- },
- {
- path: "/about",
- component: AboutView,
- },
- {
- path: "/login",
- name: "login",
- component: LoginView,
- },
- {
- path: "/signup",
- name: "signup",
- component: SignupView,
- },
- {
- path: "/fs/:node_id",
- name: "fs",
- component: FSView,
- },
+ {
+ path: '/',
+ name: 'home',
+ component: HomeView
+ },
+ {
+ path: '/profile',
+ name: 'profile',
+ component: ProfileView
+ },
+ {
+ path: '/profile/2fa-enable',
+ name: '2fa',
+ component: TFAView
+ },
+ {
+ path: '/admin',
+ component: AdminView
+ },
+ {
+ path: '/about',
+ component: AboutView
+ },
+ {
+ path: '/login',
+ name: 'login',
+ component: LoginView
+ },
+ {
+ path: '/signup',
+ name: 'signup',
+ component: SignupView
+ },
+ {
+ path: '/fs/:node_id',
+ name: 'fs',
+ component: FSView
+ },
- {
- path: "/set_token",
- component: SetTokenView,
- },
+ {
+ path: '/set_token',
+ component: SetTokenView
+ }
];
const router = createRouter({
- history: createWebHistory(process.env.BASE_URL),
- routes,
+ history: createWebHistory(process.env.BASE_URL),
+ routes
});
export default router;
diff --git a/frontend/src/shims-vue.d.ts b/frontend/src/shims-vue.d.ts
index 3804a43..1877785 100644
--- a/frontend/src/shims-vue.d.ts
+++ b/frontend/src/shims-vue.d.ts
@@ -1,6 +1,6 @@
/* eslint-disable */
declare module '*.vue' {
- import type { DefineComponent } from 'vue'
- const component: DefineComponent<{}, {}, any>
- export default component
+ import type { DefineComponent } from 'vue';
+ const component: DefineComponent<{}, {}, any>;
+ export default component;
}
diff --git a/frontend/src/views/AboutView.vue b/frontend/src/views/AboutView.vue
index 3fa2807..7054f59 100644
--- a/frontend/src/views/AboutView.vue
+++ b/frontend/src/views/AboutView.vue
@@ -1,5 +1,5 @@
-
-
This is an about page
-
+
+
This is an about page
+
diff --git a/frontend/src/views/AdminView.vue b/frontend/src/views/AdminView.vue
index cf5eeff..fc715ee 100644
--- a/frontend/src/views/AdminView.vue
+++ b/frontend/src/views/AdminView.vue
@@ -1,109 +1,109 @@
-
-
- Name |
- Type |
- Role |
- Tfa Status |
- Actions |
-
-
- {{ user.name }} |
- {{ user.gitlab ? "Gitlab" : "Password" }} |
-
-
- |
- |
-
- {{ user.tfaEnabled ? "Enabled" : "Disabled" }}
- |
-
-
-
-
- |
-
-
+
+
+ Name |
+ Type |
+ Role |
+ Tfa Status |
+ Actions |
+
+
+ {{ user.name }} |
+ {{ user.gitlab ? 'Gitlab' : 'Password' }} |
+
+
+ |
+ |
+
+ {{ user.tfaEnabled ? 'Enabled' : 'Disabled' }}
+ |
+
+
+
+
+ |
+
+
diff --git a/frontend/src/views/FSView.vue b/frontend/src/views/FSView.vue
index 3325a6e..82f3bf5 100644
--- a/frontend/src/views/FSView.vue
+++ b/frontend/src/views/FSView.vue
@@ -1,70 +1,70 @@
-
+
diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue
index 2d36d45..0140b62 100644
--- a/frontend/src/views/HomeView.vue
+++ b/frontend/src/views/HomeView.vue
@@ -1,28 +1,28 @@
diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue
index 54f4f09..be6a3d0 100644
--- a/frontend/src/views/LoginView.vue
+++ b/frontend/src/views/LoginView.vue
@@ -1,61 +1,61 @@
-
-
-
-
- Login with gitlab
- Signup instead?
-
-
- Please input your 2 factor authentication code
-
-
-
+
+
+
+
+ Login with gitlab
+ Signup instead?
+
+
+ Please input your 2 factor authentication code
+
+
+
diff --git a/frontend/src/views/ProfileView.vue b/frontend/src/views/ProfileView.vue
index 5346fc0..f4cb406 100644
--- a/frontend/src/views/ProfileView.vue
+++ b/frontend/src/views/ProfileView.vue
@@ -1,112 +1,124 @@
-
-
- User: {{ user.name }}
- Signed in with {{ user.gitlab ? "gitlab" : "password" }}
-
-
-
-
-
-
-
-
-
- 2 Factor authentication:
- {{ user.tfaEnabled ? "Enabled" : "Disabled" }}
-
-
-
-
-
-
-
- Loading...
-
+
+
+ User: {{ user.name }}
+ Signed in with {{ user.gitlab ? 'gitlab' : 'password' }}
+
+
+
+
+
+
+
+
+
+ 2 Factor authentication:
+ {{ user.tfaEnabled ? 'Enabled' : 'Disabled' }}
+
+
+
+
+
+
+
+ Loading...
+
diff --git a/frontend/src/views/SetTokenView.vue b/frontend/src/views/SetTokenView.vue
index 4198c98..d15660e 100644
--- a/frontend/src/views/SetTokenView.vue
+++ b/frontend/src/views/SetTokenView.vue
@@ -1,19 +1,19 @@
- Click here to go home
+ Click here to go home
diff --git a/frontend/src/views/SignupView.vue b/frontend/src/views/SignupView.vue
index 541ace7..34491f9 100644
--- a/frontend/src/views/SignupView.vue
+++ b/frontend/src/views/SignupView.vue
@@ -1,35 +1,35 @@
-
-
-
-
-
- Login instead?
+
+
+
+
+
+ Login instead?
diff --git a/frontend/src/views/TFAView.vue b/frontend/src/views/TFAView.vue
index cc9d7d5..cf7582b 100644
--- a/frontend/src/views/TFAView.vue
+++ b/frontend/src/views/TFAView.vue
@@ -1,89 +1,89 @@
-
-
- Select 2 Factor authentication type:
-
-
-
-
-
-
- Please enter the code you got by mail
-
-
-
-
-
-
- Show manual input code
- {{ secret }}
-
- Please enter the current code
-
-
-
+
+
+ Select 2 Factor authentication type:
+
+
+
+
+
+
+ Please enter the code you got by mail
+
+
+
+
+
+
+ Show manual input code
+ {{ secret }}
+
+ Please enter the current code
+
+
+
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
index e47981e..261ceb9 100644
--- a/frontend/tsconfig.json
+++ b/frontend/tsconfig.json
@@ -1,43 +1,32 @@
{
- "compilerOptions": {
- "target": "esnext",
- "module": "esnext",
- "strict": true,
- "jsx": "preserve",
- "moduleResolution": "node",
- "skipLibCheck": true,
- "esModuleInterop": true,
- "allowSyntheticDefaultImports": true,
- "forceConsistentCasingInFileNames": true,
- "useDefineForClassFields": true,
- "sourceMap": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "strictPropertyInitialization": false,
- "baseUrl": ".",
- "types": [
- "webpack-env"
- ],
- "paths": {
- "@/*": [
- "src/*"
- ]
- },
- "lib": [
- "esnext",
- "dom",
- "dom.iterable",
- "scripthost"
- ]
- },
- "include": [
- "src/**/*.ts",
- "src/**/*.tsx",
- "src/**/*.vue",
- "tests/**/*.ts",
- "tests/**/*.tsx"
- ],
- "exclude": [
- "node_modules"
- ]
+ "compilerOptions": {
+ "target": "esnext",
+ "module": "esnext",
+ "strict": true,
+ "jsx": "preserve",
+ "moduleResolution": "node",
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "forceConsistentCasingInFileNames": true,
+ "useDefineForClassFields": true,
+ "sourceMap": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "strictPropertyInitialization": false,
+ "baseUrl": ".",
+ "types": ["webpack-env"],
+ "paths": {
+ "@/*": ["src/*"]
+ },
+ "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
+ },
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.tsx",
+ "src/**/*.vue",
+ "tests/**/*.ts",
+ "tests/**/*.tsx"
+ ],
+ "exclude": ["node_modules"]
}
diff --git a/frontend/vue.config.js b/frontend/vue.config.js
index bd9c9cd..aa99dc3 100644
--- a/frontend/vue.config.js
+++ b/frontend/vue.config.js
@@ -1,12 +1,12 @@
-const { defineConfig } = require("@vue/cli-service");
+const { defineConfig } = require('@vue/cli-service');
module.exports = defineConfig({
- transpileDependencies: true,
- configureWebpack: {
- resolve: {
- fallback: {
- crypto: false,
- stream: require.resolve("stream-browserify"),
- },
- },
- },
+ transpileDependencies: true,
+ configureWebpack: {
+ resolve: {
+ fallback: {
+ crypto: false,
+ stream: require.resolve('stream-browserify')
+ }
+ }
+ }
});
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index c34f1cb..8d312f3 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -1254,9 +1254,9 @@
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*":
- version "18.7.11"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.11.tgz#486e72cfccde88da24e1f23ff1b7d8bfb64e6250"
- integrity sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==
+ version "18.7.14"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.14.tgz#0fe081752a3333392d00586d815485a17c2cf3c9"
+ integrity sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==
"@types/node@~17.0.5":
version "17.0.45"
@@ -1323,13 +1323,13 @@
"@types/node" "*"
"@typescript-eslint/eslint-plugin@^5.4.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.34.0.tgz#d690f60e335596f38b01792e8f4b361d9bd0cb35"
- integrity sha512-eRfPPcasO39iwjlUAMtjeueRGuIrW3TQ9WseIDl7i5UWuFbf83yYaU7YPs4j8+4CxUMIsj1k+4kV+E+G+6ypDQ==
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz#471f64dc53600025e470dad2ca4a9f2864139019"
+ integrity sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==
dependencies:
- "@typescript-eslint/scope-manager" "5.34.0"
- "@typescript-eslint/type-utils" "5.34.0"
- "@typescript-eslint/utils" "5.34.0"
+ "@typescript-eslint/scope-manager" "5.36.1"
+ "@typescript-eslint/type-utils" "5.36.1"
+ "@typescript-eslint/utils" "5.36.1"
debug "^4.3.4"
functional-red-black-tree "^1.0.1"
ignore "^5.2.0"
@@ -1338,74 +1338,75 @@
tsutils "^3.21.0"
"@typescript-eslint/parser@^5.4.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.34.0.tgz#ca710858ea85dbfd30c9b416a335dc49e82dbc07"
- integrity sha512-SZ3NEnK4usd2CXkoV3jPa/vo1mWX1fqRyIVUQZR4As1vyp4fneknBNJj+OFtV8WAVgGf+rOHMSqQbs2Qn3nFZQ==
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.36.1.tgz#931c22c7bacefd17e29734628cdec8b2acdcf1ce"
+ integrity sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==
dependencies:
- "@typescript-eslint/scope-manager" "5.34.0"
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/typescript-estree" "5.34.0"
+ "@typescript-eslint/scope-manager" "5.36.1"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/typescript-estree" "5.36.1"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@5.34.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.34.0.tgz#14efd13dc57602937e25f188fd911f118781e527"
- integrity sha512-HNvASMQlah5RsBW6L6c7IJ0vsm+8Sope/wu5sEAf7joJYWNb1LDbJipzmdhdUOnfrDFE6LR1j57x1EYVxrY4ow==
+"@typescript-eslint/scope-manager@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz#23c49b7ddbcffbe09082e6694c2524950766513f"
+ integrity sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==
dependencies:
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/visitor-keys" "5.34.0"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/visitor-keys" "5.36.1"
-"@typescript-eslint/type-utils@5.34.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.34.0.tgz#7a324ab9ddd102cd5e1beefc94eea6f3eb32d32d"
- integrity sha512-Pxlno9bjsQ7hs1pdWRUv9aJijGYPYsHpwMeCQ/Inavhym3/XaKt1ZKAA8FIw4odTBfowBdZJDMxf2aavyMDkLg==
+"@typescript-eslint/type-utils@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz#016fc2bff6679f54c0b2df848a493f0ca3d4f625"
+ integrity sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==
dependencies:
- "@typescript-eslint/utils" "5.34.0"
+ "@typescript-eslint/typescript-estree" "5.36.1"
+ "@typescript-eslint/utils" "5.36.1"
debug "^4.3.4"
tsutils "^3.21.0"
-"@typescript-eslint/types@5.34.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.34.0.tgz#217bf08049e9e7b86694d982e88a2c1566330c78"
- integrity sha512-49fm3xbbUPuzBIOcy2CDpYWqy/X7VBkxVN+DC21e0zIm3+61Z0NZi6J9mqPmSW1BDVk9FIOvuCFyUPjXz93sjA==
+"@typescript-eslint/types@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.36.1.tgz#1cf0e28aed1cb3ee676917966eb23c2f8334ce2c"
+ integrity sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==
-"@typescript-eslint/typescript-estree@5.34.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.34.0.tgz#ba7b83f4bf8ccbabf074bbf1baca7a58de3ccb9a"
- integrity sha512-mXHAqapJJDVzxauEkfJI96j3D10sd567LlqroyCeJaHnu42sDbjxotGb3XFtGPYKPD9IyLjhsoULML1oI3M86A==
+"@typescript-eslint/typescript-estree@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz#b857f38d6200f7f3f4c65cd0a5afd5ae723f2adb"
+ integrity sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==
dependencies:
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/visitor-keys" "5.34.0"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/visitor-keys" "5.36.1"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/utils@5.34.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.34.0.tgz#0cae98f48d8f9e292e5caa9343611b6faf49e743"
- integrity sha512-kWRYybU4Rn++7lm9yu8pbuydRyQsHRoBDIo11k7eqBWTldN4xUdVUMCsHBiE7aoEkFzrUEaZy3iH477vr4xHAQ==
+"@typescript-eslint/utils@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.36.1.tgz#136d5208cc7a3314b11c646957f8f0b5c01e07ad"
+ integrity sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==
dependencies:
"@types/json-schema" "^7.0.9"
- "@typescript-eslint/scope-manager" "5.34.0"
- "@typescript-eslint/types" "5.34.0"
- "@typescript-eslint/typescript-estree" "5.34.0"
+ "@typescript-eslint/scope-manager" "5.36.1"
+ "@typescript-eslint/types" "5.36.1"
+ "@typescript-eslint/typescript-estree" "5.36.1"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
-"@typescript-eslint/visitor-keys@5.34.0":
- version "5.34.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.34.0.tgz#d0fb3e31033e82ddd5de048371ad39eb342b2d40"
- integrity sha512-O1moYjOSrab0a2fUvFpsJe0QHtvTC+cR+ovYpgKrAVXzqQyc74mv76TgY6z+aEtjQE2vgZux3CQVtGryqdcOAw==
+"@typescript-eslint/visitor-keys@5.36.1":
+ version "5.36.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz#7731175312d65738e501780f923896d200ad1615"
+ integrity sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==
dependencies:
- "@typescript-eslint/types" "5.34.0"
+ "@typescript-eslint/types" "5.36.1"
eslint-visitor-keys "^3.3.0"
-"@vue/babel-helper-vue-jsx-merge-props@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81"
- integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==
+"@vue/babel-helper-vue-jsx-merge-props@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz#8d53a1e21347db8edbe54d339902583176de09f2"
+ integrity sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==
"@vue/babel-helper-vue-transform-on@^1.0.2":
version "1.0.2"
@@ -1427,14 +1428,14 @@
html-tags "^3.1.0"
svg-tags "^1.0.0"
-"@vue/babel-plugin-transform-vue-jsx@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz#646046c652c2f0242727f34519d917b064041ed7"
- integrity sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==
+"@vue/babel-plugin-transform-vue-jsx@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz#4d4b3d46a39ea62b7467dd6e26ce47f7ceafb2fe"
+ integrity sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/plugin-syntax-jsx" "^7.2.0"
- "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1"
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
html-tags "^2.0.0"
lodash.kebabcase "^4.1.1"
svg-tags "^1.0.0"
@@ -1462,66 +1463,66 @@
semver "^7.3.4"
"@vue/babel-preset-jsx@^1.1.2":
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.3.1.tgz#10789417a17680d9855bd96fd9894d9b51fd979b"
- integrity sha512-ml+nqcSKp8uAqFZLNc7OWLMzR7xDBsUfkomF98DtiIBlLqlq4jCQoLINARhgqRIyKdB+mk/94NWpIb4pL6D3xw==
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz#f4914ba314235ab097bc4372ed67473c0780bfcc"
+ integrity sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==
dependencies:
- "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1"
- "@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
- "@vue/babel-sugar-composition-api-inject-h" "^1.3.0"
- "@vue/babel-sugar-composition-api-render-instance" "^1.3.0"
- "@vue/babel-sugar-functional-vue" "^1.2.2"
- "@vue/babel-sugar-inject-h" "^1.2.2"
- "@vue/babel-sugar-v-model" "^1.3.0"
- "@vue/babel-sugar-v-on" "^1.3.0"
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
+ "@vue/babel-sugar-composition-api-inject-h" "^1.4.0"
+ "@vue/babel-sugar-composition-api-render-instance" "^1.4.0"
+ "@vue/babel-sugar-functional-vue" "^1.4.0"
+ "@vue/babel-sugar-inject-h" "^1.4.0"
+ "@vue/babel-sugar-v-model" "^1.4.0"
+ "@vue/babel-sugar-v-on" "^1.4.0"
-"@vue/babel-sugar-composition-api-inject-h@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.3.0.tgz#1402f34cea217c7117fb66fdcbd94e1c370cd9c0"
- integrity sha512-pIDOutEpqbURdVw7xhgxmuDW8Tl+lTgzJZC5jdlUu0lY2+izT9kz3Umd/Tbu0U5cpCJ2Yhu87BZFBzWpS0Xemg==
+"@vue/babel-sugar-composition-api-inject-h@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz#187e1389f8871d89ece743bb50aed713be9d6c85"
+ integrity sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==
dependencies:
"@babel/plugin-syntax-jsx" "^7.2.0"
-"@vue/babel-sugar-composition-api-render-instance@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.3.0.tgz#3039d3d9eca09e56d41a56a03d73a146211c18a5"
- integrity sha512-NYNnU2r7wkJLMV5p9Zj4pswmCs037O/N2+/Fs6SyX7aRFzXJRP1/2CZh5cIwQxWQajHXuCUd5mTb7DxoBVWyTg==
+"@vue/babel-sugar-composition-api-render-instance@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz#2c1607ae6dffdab47e785bc01fa45ba756e992c1"
+ integrity sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==
dependencies:
"@babel/plugin-syntax-jsx" "^7.2.0"
-"@vue/babel-sugar-functional-vue@^1.2.2":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz#267a9ac8d787c96edbf03ce3f392c49da9bd2658"
- integrity sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==
+"@vue/babel-sugar-functional-vue@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz#60da31068567082287c7337c66ef4df04e0a1029"
+ integrity sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==
dependencies:
"@babel/plugin-syntax-jsx" "^7.2.0"
-"@vue/babel-sugar-inject-h@^1.2.2":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz#d738d3c893367ec8491dcbb669b000919293e3aa"
- integrity sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==
+"@vue/babel-sugar-inject-h@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz#bf39aa6631fb1d0399b1c49b4c59e1c8899b4363"
+ integrity sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==
dependencies:
"@babel/plugin-syntax-jsx" "^7.2.0"
-"@vue/babel-sugar-v-model@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.3.0.tgz#e4da7ae27a74c473b1abba060260ecaa8cb6e46b"
- integrity sha512-zcsabmdX48JmxTObn3xmrvvdbEy8oo63DphVyA3WRYGp4SEvJRpu/IvZCVPl/dXLuob2xO/QRuncqPgHvZPzpA==
+"@vue/babel-sugar-v-model@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz#a51d986609f430c4f70ada3a93cc560a2970f720"
+ integrity sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==
dependencies:
"@babel/plugin-syntax-jsx" "^7.2.0"
- "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1"
- "@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.4.0"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
camelcase "^5.0.0"
html-tags "^2.0.0"
svg-tags "^1.0.0"
-"@vue/babel-sugar-v-on@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.3.0.tgz#d35756f8720e527a3b1867e21c3c248cde47ca87"
- integrity sha512-8VZgrS0G5bh7+Prj7oJkzg9GvhSPnuW5YT6MNaVAEy4uwxRLJ8GqHenaStfllChTao4XZ3EZkNtHB4Xbr/ePdA==
+"@vue/babel-sugar-v-on@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz#43b7106a9672d8cbeefc0eb8afe1d376edc6166e"
+ integrity sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==
dependencies:
"@babel/plugin-syntax-jsx" "^7.2.0"
- "@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.4.0"
camelcase "^5.0.0"
"@vue/cli-overlay@^5.0.8":
@@ -1658,47 +1659,47 @@
semver "^7.3.4"
strip-ansi "^6.0.0"
-"@vue/compiler-core@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz#b3c42e04c0e0f2c496ff1784e543fbefe91e215a"
- integrity sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==
+"@vue/compiler-core@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.38.tgz#0a2a7bffd2280ac19a96baf5301838a2cf1964d7"
+ integrity sha512-/FsvnSu7Z+lkd/8KXMa4yYNUiqQrI22135gfsQYVGuh5tqEgOB0XqrUdb/KnCLa5+TmQLPwvyUnKMyCpu+SX3Q==
dependencies:
"@babel/parser" "^7.16.4"
- "@vue/shared" "3.2.37"
+ "@vue/shared" "3.2.38"
estree-walker "^2.0.2"
source-map "^0.6.1"
-"@vue/compiler-dom@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz#10d2427a789e7c707c872da9d678c82a0c6582b5"
- integrity sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==
+"@vue/compiler-dom@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.38.tgz#53d04ed0c0c62d1ef259bf82f9b28100a880b6fd"
+ integrity sha512-zqX4FgUbw56kzHlgYuEEJR8mefFiiyR3u96498+zWPsLeh1WKvgIReoNE+U7gG8bCUdvsrJ0JRmev0Ky6n2O0g==
dependencies:
- "@vue/compiler-core" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/compiler-core" "3.2.38"
+ "@vue/shared" "3.2.38"
-"@vue/compiler-sfc@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz#3103af3da2f40286edcd85ea495dcb35bc7f5ff4"
- integrity sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==
+"@vue/compiler-sfc@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.38.tgz#9e763019471a535eb1fceeaac9d4d18a83f0940f"
+ integrity sha512-KZjrW32KloMYtTcHAFuw3CqsyWc5X6seb8KbkANSWt3Cz9p2qA8c1GJpSkksFP9ABb6an0FLCFl46ZFXx3kKpg==
dependencies:
"@babel/parser" "^7.16.4"
- "@vue/compiler-core" "3.2.37"
- "@vue/compiler-dom" "3.2.37"
- "@vue/compiler-ssr" "3.2.37"
- "@vue/reactivity-transform" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/compiler-core" "3.2.38"
+ "@vue/compiler-dom" "3.2.38"
+ "@vue/compiler-ssr" "3.2.38"
+ "@vue/reactivity-transform" "3.2.38"
+ "@vue/shared" "3.2.38"
estree-walker "^2.0.2"
magic-string "^0.25.7"
postcss "^8.1.10"
source-map "^0.6.1"
-"@vue/compiler-ssr@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz#4899d19f3a5fafd61524a9d1aee8eb0505313cff"
- integrity sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==
+"@vue/compiler-ssr@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.38.tgz#933b23bf99e667e5078eefc6ba94cb95fd765dfe"
+ integrity sha512-bm9jOeyv1H3UskNm4S6IfueKjUNFmi2kRweFIGnqaGkkRePjwEcfCVqyS3roe7HvF4ugsEkhf4+kIvDhip6XzQ==
dependencies:
- "@vue/compiler-dom" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/compiler-dom" "3.2.38"
+ "@vue/shared" "3.2.38"
"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0":
version "3.3.0"
@@ -1728,53 +1729,53 @@
dependencies:
vue-eslint-parser "^8.0.0"
-"@vue/reactivity-transform@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz#0caa47c4344df4ae59f5a05dde2a8758829f8eca"
- integrity sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==
+"@vue/reactivity-transform@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.38.tgz#a856c217b2ead99eefb6fddb1d61119b2cb67984"
+ integrity sha512-3SD3Jmi1yXrDwiNJqQ6fs1x61WsDLqVk4NyKVz78mkaIRh6d3IqtRnptgRfXn+Fzf+m6B1KxBYWq1APj6h4qeA==
dependencies:
"@babel/parser" "^7.16.4"
- "@vue/compiler-core" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/compiler-core" "3.2.38"
+ "@vue/shared" "3.2.38"
estree-walker "^2.0.2"
magic-string "^0.25.7"
-"@vue/reactivity@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.37.tgz#5bc3847ac58828e2b78526e08219e0a1089f8848"
- integrity sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==
+"@vue/reactivity@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.38.tgz#d576fdcea98eefb96a1f1ad456e289263e87292e"
+ integrity sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==
dependencies:
- "@vue/shared" "3.2.37"
+ "@vue/shared" "3.2.38"
-"@vue/runtime-core@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz#7ba7c54bb56e5d70edfc2f05766e1ca8519966e3"
- integrity sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==
+"@vue/runtime-core@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.38.tgz#d19cf591c210713f80e6a94ffbfef307c27aea06"
+ integrity sha512-kk0qiSiXUU/IKxZw31824rxmFzrLr3TL6ZcbrxWTKivadoKupdlzbQM4SlGo4MU6Zzrqv4fzyUasTU1jDoEnzg==
dependencies:
- "@vue/reactivity" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/reactivity" "3.2.38"
+ "@vue/shared" "3.2.38"
-"@vue/runtime-dom@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz#002bdc8228fa63949317756fb1e92cdd3f9f4bbd"
- integrity sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==
+"@vue/runtime-dom@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.38.tgz#fec711f65c2485991289fd4798780aa506469b48"
+ integrity sha512-4PKAb/ck2TjxdMSzMsnHViOrrwpudk4/A56uZjhzvusoEU9xqa5dygksbzYepdZeB5NqtRw5fRhWIiQlRVK45A==
dependencies:
- "@vue/runtime-core" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/runtime-core" "3.2.38"
+ "@vue/shared" "3.2.38"
csstype "^2.6.8"
-"@vue/server-renderer@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz#840a29c8dcc29bddd9b5f5ffa22b95c0e72afdfc"
- integrity sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==
+"@vue/server-renderer@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.38.tgz#01a4c0f218e90b8ad1815074208a1974ded109aa"
+ integrity sha512-pg+JanpbOZ5kEfOZzO2bt02YHd+ELhYP8zPeLU1H0e7lg079NtuuSB8fjLdn58c4Ou8UQ6C1/P+528nXnLPAhA==
dependencies:
- "@vue/compiler-ssr" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/compiler-ssr" "3.2.38"
+ "@vue/shared" "3.2.38"
-"@vue/shared@3.2.37":
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.37.tgz#8e6adc3f2759af52f0e85863dfb0b711ecc5c702"
- integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==
+"@vue/shared@3.2.38":
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.38.tgz#e823f0cb2e85b6bf43430c0d6811b1441c300f3c"
+ integrity sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==
"@vue/vue-loader-v15@npm:vue-loader@^15.9.7":
version "15.10.0"
@@ -2334,9 +2335,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001373:
- version "1.0.30001382"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001382.tgz#4d37f0d0b6fffb826c8e5e1c0f4bf8ce592db949"
- integrity sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg==
+ version "1.0.30001385"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001385.tgz#51d5feeb60b831a5b4c7177f419732060418535c"
+ integrity sha512-MpiCqJGhBkHgpyimE9GWmZTnyHyEEM35u115bD3QBrXpjvL/JgcP8cUhKJshfmg4OtEHFenifcK5sZayEw5tvQ==
case-sensitive-paths-webpack-plugin@^2.3.0:
version "2.4.0"
@@ -2616,17 +2617,17 @@ copy-webpack-plugin@^9.0.1:
serialize-javascript "^6.0.0"
core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.8.3:
- version "3.24.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.24.1.tgz#d1af84a17e18dfdd401ee39da9996f9a7ba887de"
- integrity sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==
+ version "3.25.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.0.tgz#489affbfbf9cb3fa56192fe2dd9ebaee985a66c5"
+ integrity sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow==
dependencies:
browserslist "^4.21.3"
semver "7.0.0"
core-js@^3.8.3:
- version "3.24.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f"
- integrity sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg==
+ version "3.25.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.25.0.tgz#be71d9e0dd648ffd70c44a7ec2319d039357eceb"
+ integrity sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==
core-util-is@~1.0.0:
version "1.0.3"
@@ -3014,9 +3015,9 @@ ee-first@1.1.1:
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
electron-to-chromium@^1.4.202:
- version "1.4.226"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.226.tgz#837ea1d19b8305a913cd5f31d135681c4b6d63b1"
- integrity sha512-CvevLaSiUp0u12K0e+QhMX1hn724nSUNO9ToBek+FMHk/5RofrQs5MChjrD0re0IwqxDFxFMSZD+uic05i2Z5w==
+ version "1.4.235"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.235.tgz#48ac33c4e869a1795013788099470061463d1890"
+ integrity sha512-eNU2SmVZYTzYVA5aAWmhAJbdVil5/8H5nMq6kGD0Yxd4k2uKIuT8YmS46I0QXY7iOoPPcb6jjem9/2xyuH5+XQ==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -3273,9 +3274,9 @@ espree@^7.3.0, espree@^7.3.1:
eslint-visitor-keys "^1.3.0"
espree@^9.0.0:
- version "9.3.3"
- resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d"
- integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==
+ version "9.4.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a"
+ integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==
dependencies:
acorn "^8.8.0"
acorn-jsx "^5.3.2"
@@ -4700,9 +4701,9 @@ mz@^2.4.0:
thenify-all "^1.0.0"
naive-ui@^2.32.1:
- version "2.32.2"
- resolved "https://registry.yarnpkg.com/naive-ui/-/naive-ui-2.32.2.tgz#40f593df0b86b36f6af5635d9299417d45d6d96a"
- integrity sha512-vTNuZ8LBlfo/cdiv4S8o6Cg5g7p9V9cR5rK+Fag2cplOnng5twTILD3sBaCqw3k/BV1331Xdk26ml8Me8QJ7iA==
+ version "2.33.1"
+ resolved "https://registry.yarnpkg.com/naive-ui/-/naive-ui-2.33.1.tgz#ef1046b727145e868c4be32686fd6073219f07ac"
+ integrity sha512-S8iS5TsnJ5PAbUCCC+IGjW7H6fYJF5s0HTzuUjqRLS8C1tFxmWhKkBZU1db/vg/4O5GKEyjaoq4ZSzRHOwRTcQ==
dependencies:
"@css-render/plugin-bem" "^0.15.10"
"@css-render/vue3-ssr" "^0.15.10"
@@ -5667,9 +5668,9 @@ sass-loader@^12.0.0:
neo-async "^2.6.2"
sass@^1.32.7:
- version "1.54.5"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.5.tgz#93708f5560784f6ff2eab8542ade021a4a947b3a"
- integrity sha512-p7DTOzxkUPa/63FU0R3KApkRHwcVZYC0PLnLm5iyZACyp15qSi32x7zVUhRdABAATmkALqgGrjCJAcWvobmhHw==
+ version "1.54.6"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.6.tgz#5a12c268db26555c335028e355d6b7b1a5b9b4c8"
+ integrity sha512-DUqJjR2WxXBcZjRSZX5gCVyU+9fuC2qDfFzoKX9rV4rCOcec5mPtEafTcfsyL3YJuLONjWylBne+uXVh5rrmFw==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
@@ -6161,9 +6162,9 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.1.3:
- version "5.3.5"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc"
- integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==
+ version "5.3.6"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c"
+ integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==
dependencies:
"@jridgewell/trace-mapping" "^0.3.14"
jest-worker "^27.4.5"
@@ -6172,9 +6173,9 @@ terser-webpack-plugin@^5.1.1, terser-webpack-plugin@^5.1.3:
terser "^5.14.1"
terser@^5.10.0, terser@^5.14.1:
- version "5.14.2"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10"
- integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==
+ version "5.15.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425"
+ integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==
dependencies:
"@jridgewell/source-map" "^0.3.2"
acorn "^8.5.0"
@@ -6470,9 +6471,9 @@ vue-loader@^17.0.0:
loader-utils "^2.0.0"
vue-router@^4.0.3:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.1.4.tgz#290540caaf2c54e37a14dec047bd074002eca175"
- integrity sha512-UgYen33gOtwT3cOG1+yRen+Brk9py8CSlC9LEa3UjvKZ4EAoSo8NjZPDeDnmNerfazorHIJG1NC7qdi1SuQJnQ==
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.1.5.tgz#256f597e3f5a281a23352a6193aa6e342c8d9f9a"
+ integrity sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==
dependencies:
"@vue/devtools-api" "^6.1.4"
@@ -6490,15 +6491,15 @@ vue-template-es2015-compiler@^1.9.0:
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@^3.2.13:
- version "3.2.37"
- resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.37.tgz#da220ccb618d78579d25b06c7c21498ca4e5452e"
- integrity sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==
+ version "3.2.38"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.38.tgz#cda3a414631745b194971219318a792dbbccdec0"
+ integrity sha512-hHrScEFSmDAWL0cwO4B6WO7D3sALZPbfuThDsGBebthrNlDxdJZpGR3WB87VbjpPh96mep1+KzukYEhpHDFa8Q==
dependencies:
- "@vue/compiler-dom" "3.2.37"
- "@vue/compiler-sfc" "3.2.37"
- "@vue/runtime-dom" "3.2.37"
- "@vue/server-renderer" "3.2.37"
- "@vue/shared" "3.2.37"
+ "@vue/compiler-dom" "3.2.38"
+ "@vue/compiler-sfc" "3.2.38"
+ "@vue/runtime-dom" "3.2.38"
+ "@vue/server-renderer" "3.2.38"
+ "@vue/shared" "3.2.38"
vueuc@^0.4.47:
version "0.4.48"
@@ -6575,9 +6576,9 @@ webpack-dev-middleware@^5.3.1:
schema-utils "^4.0.0"
webpack-dev-server@^4.7.3:
- version "4.10.0"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz#de270d0009eba050546912be90116e7fd740a9ca"
- integrity sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.10.1.tgz#124ac9ac261e75303d74d95ab6712b4aec3e12ed"
+ integrity sha512-FIzMq3jbBarz3ld9l7rbM7m6Rj1lOsgq/DyLGMX/fPEB1UBUPtf5iL/4eNfhx8YYJTRlzfv107UfWSWcBK5Odw==
dependencies:
"@types/bonjour" "^3.5.9"
"@types/connect-history-api-fallback" "^1.3.5"