From 66ced29c6d50f09896080a4fa4b7d19d4286245f Mon Sep 17 00:00:00 2001 From: xeltica Date: Tue, 31 Aug 2021 12:37:43 +0900 Subject: [PATCH] wip --- CHANGELOG.md | 8 + nodemon.json | 4 +- package.json | 9 +- src/app.ts | 2 +- src/controllers/index.ts | 7 + src/controllers/meta.ts | 11 + src/controllers/ranking.ts | 21 + src/functions/format.ts | 2 +- src/functions/gen-token.ts | 2 +- src/functions/get-scores.ts | 2 +- src/misc/error.ts | 3 + src/misc/welcome-message.ts | 8 + .../entities/{usedToken.ts => used-token.ts} | 0 src/models/entities/user.ts | 4 +- src/models/index.ts | 2 +- src/{server/router.ts => router.old} | 19 +- src/{server => }/server.ts | 21 +- src/server/die.ts | 6 - src/server/render.ts | 10 - src/services/db.ts | 2 +- src/services/worker.ts | 2 +- src/types/{AlertMode.ts => alert-mode.ts} | 0 src/views/_base.pug | 19 +- styles/_colors.scss | 300 ----------- styles/_xeltica-design.scss | 501 ------------------ styles/style.scss | 58 -- tsconfig.json | 2 +- yarn.lock | 417 ++++++++++++++- 28 files changed, 477 insertions(+), 965 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 src/controllers/index.ts create mode 100644 src/controllers/meta.ts create mode 100644 src/controllers/ranking.ts create mode 100644 src/misc/error.ts create mode 100644 src/misc/welcome-message.ts rename src/models/entities/{usedToken.ts => used-token.ts} (100%) rename src/{server/router.ts => router.old} (93%) rename src/{server => }/server.ts (70%) delete mode 100644 src/server/die.ts delete mode 100644 src/server/render.ts rename src/types/{AlertMode.ts => alert-mode.ts} (100%) delete mode 100644 styles/_colors.scss delete mode 100644 styles/_xeltica-design.scss delete mode 100644 styles/style.scss diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..98eeddd --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +## 2.0 + +* デザイン面・機能面での大幅な作り直し + +## 1.5.1 + +* インスタンスの接続エラーにより後続処理が行えなくなる重大な不具合を修正 +* 全員分の算出が終わるまで、ランキングを非表示に \ No newline at end of file diff --git a/nodemon.json b/nodemon.json index 5a4b862..c01de7a 100644 --- a/nodemon.json +++ b/nodemon.json @@ -1,5 +1,5 @@ { - "watch": ["src", ["styles"]], - "ext": "ts,pug,scss", + "watch": ["src"], + "ext": "ts", "exec": "run-s build start" } \ No newline at end of file diff --git a/package.json b/package.json index f6e81e8..812d3da 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,8 @@ "start": "node built/app.js", "lint": "eslint src/index.ts", "lint:fix": "eslint --fix src/index.ts", - "build:views": "copyfiles -u 1 src/views/*.pug ./built/", "clean": "rimraf built", - "build:scripts": "tsc", - "build:styles": "sass styles/:built/assets", + "build:backend": "tsc", "build": "run-p build:*", "migrate": "ts-node --project ./tsconfig.migration.json ./node_modules/typeorm/cli.js migration:run", "migrate:revert": "ts-node --project ./tsconfig.migration.json ./node_modules/typeorm/cli.js migration:revert", @@ -27,6 +25,8 @@ "@types/node-cron": "^2.0.3", "@types/uuid": "^8.0.0", "axios": "^0.19.2", + "class-transformer": "^0.4.0", + "class-validator": "^0.13.1", "dayjs": "^1.10.2", "delay": "^4.4.0", "koa": "^2.13.0", @@ -40,8 +40,9 @@ "node-cron": "^2.0.3", "pg": "^8.3.0", "pug": "^3.0.0", - "reflect-metadata": "^0.1.10", + "reflect-metadata": "^0.1.13", "rndstr": "^1.0.0", + "routing-controllers": "^0.9.0", "sass": "^1.26.10", "typeorm": "0.2.25", "typescript": "^3.9.7", diff --git a/src/app.ts b/src/app.ts index f7f3319..e775d28 100644 --- a/src/app.ts +++ b/src/app.ts @@ -4,5 +4,5 @@ import 'reflect-metadata'; (async () => { await initDb(); (await import('./services/worker')).default(); - (await import('./server/server')).default(); + (await import('./server')).default(); })(); \ No newline at end of file diff --git a/src/controllers/index.ts b/src/controllers/index.ts new file mode 100644 index 0000000..53b5aff --- /dev/null +++ b/src/controllers/index.ts @@ -0,0 +1,7 @@ +import { MetaController } from "./meta"; +import { RankingController } from "./ranking"; + +export default [ + MetaController, + RankingController, +]; \ No newline at end of file diff --git a/src/controllers/meta.ts b/src/controllers/meta.ts new file mode 100644 index 0000000..203fbd9 --- /dev/null +++ b/src/controllers/meta.ts @@ -0,0 +1,11 @@ +import { Get, JsonController } from "routing-controllers"; + +@JsonController() +export class MetaController { + @Get('/meta') + get() { + return { + honi: 'ほに', + }; + } +} \ No newline at end of file diff --git a/src/controllers/ranking.ts b/src/controllers/ranking.ts new file mode 100644 index 0000000..c6ac9bb --- /dev/null +++ b/src/controllers/ranking.ts @@ -0,0 +1,21 @@ +import { Get, JsonController, QueryParam } from "routing-controllers"; +import { getRanking } from "../functions/ranking"; +import { getState } from "../store"; + +@JsonController() +export class RankingController { + @Get('/ranking') + get( + @QueryParam('limit', { type: Number, required: false }) + limit?: number + ) { + return this.getResponse(getState().nowCalculating) + } + + private getResponse(isCalculating: boolean, limit?: number) { + return { + isCalculating, + ranking: isCalculating ? [] : getRanking(limit), + }; + } +} \ No newline at end of file diff --git a/src/functions/format.ts b/src/functions/format.ts index 5ef3336..72acec5 100644 --- a/src/functions/format.ts +++ b/src/functions/format.ts @@ -1,6 +1,6 @@ import { config } from '../config'; import { User } from '../models/entities/user'; -import { Score } from '../types/Score'; +import { Score } from '../types/score'; export const defaultTemplate = `昨日のMisskeyの活動は diff --git a/src/functions/gen-token.ts b/src/functions/gen-token.ts index af520f2..fdd978f 100644 --- a/src/functions/gen-token.ts +++ b/src/functions/gen-token.ts @@ -1,5 +1,5 @@ import rndstr from 'rndstr'; -import { UsedToken } from '../models/entities/usedToken'; +import { UsedToken } from '../models/entities/used-token'; import { UsedTokens } from '../models'; export const genToken = async (): Promise => { diff --git a/src/functions/get-scores.ts b/src/functions/get-scores.ts index 0ddbb7b..cec1dfb 100644 --- a/src/functions/get-scores.ts +++ b/src/functions/get-scores.ts @@ -1,5 +1,5 @@ import { User } from '../models/entities/user'; -import { Score } from '../types/Score'; +import { Score } from '../types/score'; import { api } from '../services/misskey'; import { toSignedString } from './to-signed-string'; diff --git a/src/misc/error.ts b/src/misc/error.ts new file mode 100644 index 0000000..f301988 --- /dev/null +++ b/src/misc/error.ts @@ -0,0 +1,3 @@ +export const errors = { + +}; \ No newline at end of file diff --git a/src/misc/welcome-message.ts b/src/misc/welcome-message.ts new file mode 100644 index 0000000..b55e11f --- /dev/null +++ b/src/misc/welcome-message.ts @@ -0,0 +1,8 @@ +export const welcomeMessage = [ + 'ついついノートしすぎていませんか?', + 'Misskey, しすぎていませんか?', + '今日、何ノート書いた?', + '10000 ノートは初心者、そう思っていませんか?', + '息するように Misskey、そんなあなたへ。', + 'あなたは真の Misskey 廃人ですか?', +]; \ No newline at end of file diff --git a/src/models/entities/usedToken.ts b/src/models/entities/used-token.ts similarity index 100% rename from src/models/entities/usedToken.ts rename to src/models/entities/used-token.ts diff --git a/src/models/entities/user.ts b/src/models/entities/user.ts index 92094d8..5543fc1 100644 --- a/src/models/entities/user.ts +++ b/src/models/entities/user.ts @@ -1,6 +1,6 @@ import { Entity, Column, PrimaryGeneratedColumn, Index } from 'typeorm'; -import { AlertMode, alertModes } from '../../types/AlertMode'; -import { visibilities, Visibility } from '../../types/Visibility'; +import { AlertMode, alertModes } from '../../types/alert-mode'; +import { visibilities, Visibility } from '../../types/visibility'; @Entity() @Index([ 'username', 'host' ], { unique: true }) diff --git a/src/models/index.ts b/src/models/index.ts index 2fa6915..8c60a30 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -1,5 +1,5 @@ import { User } from './entities/user'; -import { UsedToken } from './entities/usedToken'; +import { UsedToken } from './entities/used-token'; import { getRepository } from 'typeorm'; export const Users = getRepository(User); diff --git a/src/server/router.ts b/src/router.old similarity index 93% rename from src/server/router.ts rename to src/router.old index 2c35b02..9907fc8 100644 --- a/src/server/router.ts +++ b/src/router.old @@ -3,7 +3,6 @@ import Router from 'koa-router'; import axios from 'axios'; import crypto from 'crypto'; -import { die } from './die'; import { v4 as uuid } from 'uuid'; import { config } from '../config'; import { upsertUser, getUser, getUserCount, updateUser, updateUsersMisshaiToken, getUserByMisshaiToken, deleteUser } from '../functions/users'; @@ -16,21 +15,13 @@ import { visibilities, Visibility } from '../types/Visibility'; import { defaultTemplate, variables } from '../functions/format'; import { getRanking } from '../functions/ranking'; import { getState } from '../store'; +import { welcomeMessage } from '../misc/welcome-message'; export const router = new Router(); const sessionHostCache: Record = { }; const tokenSecretCache: Record = { }; -const welcomeMessage = [ - 'ついついノートしすぎていませんか?', - 'Misskey, しすぎていませんか?', - '今日、何ノート書いた?', - '10000 ノートは初心者、そう思っていませんか?', - '息するように Misskey、そんなあなたへ。', - 'あなたは真の Misskey 廃人ですか?', -]; - const login = async (ctx: Context, user: Record, host: string, token: string) => { const isNewcomer = !(await getUser(user.username as string, host)); await upsertUser(user.username as string, host, token); @@ -140,14 +131,6 @@ router.get('/login', async ctx => { } }); -router.get('/terms', async ctx => { - await ctx.render('term'); -}); - -router.get('/about', async ctx => { - await ctx.render('about'); -}); - router.get('/teapot', async ctx => { await die(ctx, 'I\'m a teapot', 418); }); diff --git a/src/server/server.ts b/src/server.ts similarity index 70% rename from src/server/server.ts rename to src/server.ts index fde269c..ac90d66 100644 --- a/src/server/server.ts +++ b/src/server.ts @@ -1,27 +1,26 @@ -import 'reflect-metadata'; - -import Koa from 'koa'; import bodyParser from 'koa-bodyparser'; import serve from 'koa-static'; import mount from 'koa-mount'; +import { createKoaServer } from 'routing-controllers'; -import constant from '../const'; -import { router } from './router'; -import { render } from './render'; -import { config } from '../config'; +import constant from './const'; +import { config } from './config'; +import controllers from './controllers'; + +import 'reflect-metadata'; export default (): void => { - const app = new Koa(); + const app = createKoaServer({ + controllers, + routePrefix: '/api/v1', + }); console.log('Misshaialert v' + constant.version); console.log('Initializing DB connection...'); - app.use(bodyParser()); - app.use(render); app.use(mount('/assets', serve(__dirname + '/../assets'))); - app.use(router.routes()); app.keys = [ '人類', 'ミス廃化', '計画', 'ここに極まれり', 'フッフッフ...' ]; diff --git a/src/server/die.ts b/src/server/die.ts deleted file mode 100644 index 4b26e22..0000000 --- a/src/server/die.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Context } from 'koa'; - -export const die = (ctx: Context, error = '問題が発生しました。お手数ですが、最初からやり直してください。', status = 400): Promise => { - ctx.status = status; - return ctx.render('error', { error }); -}; diff --git a/src/server/render.ts b/src/server/render.ts deleted file mode 100644 index 5a3ad50..0000000 --- a/src/server/render.ts +++ /dev/null @@ -1,10 +0,0 @@ -import views from 'koa-views'; - - -import constant from '../const'; - -export const render = views(__dirname + '/../views', { - extension: 'pug', options: { - ...constant, - } -}); \ No newline at end of file diff --git a/src/services/db.ts b/src/services/db.ts index ab62265..a46a95b 100644 --- a/src/services/db.ts +++ b/src/services/db.ts @@ -1,7 +1,7 @@ import { getConnection, createConnection, Connection } from 'typeorm'; import { config } from '../config'; import { User } from '../models/entities/user'; -import { UsedToken } from '../models/entities/usedToken'; +import { UsedToken } from '../models/entities/used-token'; export const entities = [ User, diff --git a/src/services/worker.ts b/src/services/worker.ts index 7d159fa..2698f6a 100644 --- a/src/services/worker.ts +++ b/src/services/worker.ts @@ -5,7 +5,7 @@ import { Not } from 'typeorm'; import { deleteUser } from '../functions/users'; import { MiUser, updateScore } from '../functions/update-score'; import { updateRating } from '../functions/update-rating'; -import { AlertMode } from '../types/AlertMode'; +import { AlertMode } from '../types/alert-mode'; import { Users } from '../models'; import { send } from './send'; import { api } from './misskey'; diff --git a/src/types/AlertMode.ts b/src/types/alert-mode.ts similarity index 100% rename from src/types/AlertMode.ts rename to src/types/alert-mode.ts diff --git a/src/views/_base.pug b/src/views/_base.pug index 7f33a6f..36ffef0 100644 --- a/src/views/_base.pug +++ b/src/views/_base.pug @@ -3,7 +3,6 @@ doctype html html head meta(charset="UTF-8") - link(href='https://unpkg.com/sanitize.css' rel='stylesheet') meta(name="viewport", content="width=device-width, initial-scale=1.0") block meta - const title = 'みす廃アラート' @@ -16,20 +15,6 @@ html meta(name='twitter:card' content='summary') meta(name='twitter:site' content='@Xeltica') meta(name='twitter:creator' content='@Xeltica') - link(rel='stylesheet' href='/assets/style.css') - block style body - .background - .xd-container.xd-vstack - block content - footer - .xd-card - a(href="/terms") 利用規約 - | ・ - +exta(href="https://github.com/Xeltica/misshaialert") リポジトリ - p (C)2020-2021 Xeltica - - a(href="/about") version #{version} - block footer - block script - script(defer src='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/js/all.min.js') - \ No newline at end of file + #app + script(src=`/assets/frontend.${version}.js`) \ No newline at end of file diff --git a/styles/_colors.scss b/styles/_colors.scss deleted file mode 100644 index 986e193..0000000 --- a/styles/_colors.scss +++ /dev/null @@ -1,300 +0,0 @@ -/* -https://github.com/shuhei/material-colors -ISC License -Copyright 2014 Shuhei Kagawa -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -$md-red-50: #ffebee; -$md-red-100: #ffcdd2; -$md-red-200: #ef9a9a; -$md-red-300: #e57373; -$md-red-400: #ef5350; -$md-red-500: #f44336; -$md-red-600: #e53935; -$md-red-700: #d32f2f; -$md-red-800: #c62828; -$md-red-900: #b71c1c; -$md-red-a100: #ff8a80; -$md-red-a200: #ff5252; -$md-red-a400: #ff1744; -$md-red-a700: #d50000; - -$md-pink-50: #fce4ec; -$md-pink-100: #f8bbd0; -$md-pink-200: #f48fb1; -$md-pink-300: #f06292; -$md-pink-400: #ec407a; -$md-pink-500: #e91e63; -$md-pink-600: #d81b60; -$md-pink-700: #c2185b; -$md-pink-800: #ad1457; -$md-pink-900: #880e4f; -$md-pink-a100: #ff80ab; -$md-pink-a200: #ff4081; -$md-pink-a400: #f50057; -$md-pink-a700: #c51162; - -$md-purple-50: #f3e5f5; -$md-purple-100: #e1bee7; -$md-purple-200: #ce93d8; -$md-purple-300: #ba68c8; -$md-purple-400: #ab47bc; -$md-purple-500: #9c27b0; -$md-purple-600: #8e24aa; -$md-purple-700: #7b1fa2; -$md-purple-800: #6a1b9a; -$md-purple-900: #4a148c; -$md-purple-a100: #ea80fc; -$md-purple-a200: #e040fb; -$md-purple-a400: #d500f9; -$md-purple-a700: #aa00ff; - -$md-deep-purple-50: #ede7f6; -$md-deep-purple-100: #d1c4e9; -$md-deep-purple-200: #b39ddb; -$md-deep-purple-300: #9575cd; -$md-deep-purple-400: #7e57c2; -$md-deep-purple-500: #673ab7; -$md-deep-purple-600: #5e35b1; -$md-deep-purple-700: #512da8; -$md-deep-purple-800: #4527a0; -$md-deep-purple-900: #311b92; -$md-deep-purple-a100: #b388ff; -$md-deep-purple-a200: #7c4dff; -$md-deep-purple-a400: #651fff; -$md-deep-purple-a700: #6200ea; - -$md-indigo-50: #e8eaf6; -$md-indigo-100: #c5cae9; -$md-indigo-200: #9fa8da; -$md-indigo-300: #7986cb; -$md-indigo-400: #5c6bc0; -$md-indigo-500: #3f51b5; -$md-indigo-600: #3949ab; -$md-indigo-700: #303f9f; -$md-indigo-800: #283593; -$md-indigo-900: #1a237e; -$md-indigo-a100: #8c9eff; -$md-indigo-a200: #536dfe; -$md-indigo-a400: #3d5afe; -$md-indigo-a700: #304ffe; - -$md-blue-50: #e3f2fd; -$md-blue-100: #bbdefb; -$md-blue-200: #90caf9; -$md-blue-300: #64b5f6; -$md-blue-400: #42a5f5; -$md-blue-500: #2196f3; -$md-blue-600: #1e88e5; -$md-blue-700: #1976d2; -$md-blue-800: #1565c0; -$md-blue-900: #0d47a1; -$md-blue-a100: #82b1ff; -$md-blue-a200: #448aff; -$md-blue-a400: #2979ff; -$md-blue-a700: #2962ff; - -$md-light-blue-50: #e1f5fe; -$md-light-blue-100: #b3e5fc; -$md-light-blue-200: #81d4fa; -$md-light-blue-300: #4fc3f7; -$md-light-blue-400: #29b6f6; -$md-light-blue-500: #03a9f4; -$md-light-blue-600: #039be5; -$md-light-blue-700: #0288d1; -$md-light-blue-800: #0277bd; -$md-light-blue-900: #01579b; -$md-light-blue-a100: #80d8ff; -$md-light-blue-a200: #40c4ff; -$md-light-blue-a400: #00b0ff; -$md-light-blue-a700: #0091ea; - -$md-cyan-50: #e0f7fa; -$md-cyan-100: #b2ebf2; -$md-cyan-200: #80deea; -$md-cyan-300: #4dd0e1; -$md-cyan-400: #26c6da; -$md-cyan-500: #00bcd4; -$md-cyan-600: #00acc1; -$md-cyan-700: #0097a7; -$md-cyan-800: #00838f; -$md-cyan-900: #006064; -$md-cyan-a100: #84ffff; -$md-cyan-a200: #18ffff; -$md-cyan-a400: #00e5ff; -$md-cyan-a700: #00b8d4; - -$md-teal-50: #e0f2f1; -$md-teal-100: #b2dfdb; -$md-teal-200: #80cbc4; -$md-teal-300: #4db6ac; -$md-teal-400: #26a69a; -$md-teal-500: #009688; -$md-teal-600: #00897b; -$md-teal-700: #00796b; -$md-teal-800: #00695c; -$md-teal-900: #004d40; -$md-teal-a100: #a7ffeb; -$md-teal-a200: #64ffda; -$md-teal-a400: #1de9b6; -$md-teal-a700: #00bfa5; - -$md-green-50: #e8f5e9; -$md-green-100: #c8e6c9; -$md-green-200: #a5d6a7; -$md-green-300: #81c784; -$md-green-400: #66bb6a; -$md-green-500: #4caf50; -$md-green-600: #43a047; -$md-green-700: #388e3c; -$md-green-800: #2e7d32; -$md-green-900: #1b5e20; -$md-green-a100: #b9f6ca; -$md-green-a200: #69f0ae; -$md-green-a400: #00e676; -$md-green-a700: #00c853; - -$md-light-green-50: #f1f8e9; -$md-light-green-100: #dcedc8; -$md-light-green-200: #c5e1a5; -$md-light-green-300: #aed581; -$md-light-green-400: #9ccc65; -$md-light-green-500: #8bc34a; -$md-light-green-600: #7cb342; -$md-light-green-700: #689f38; -$md-light-green-800: #558b2f; -$md-light-green-900: #33691e; -$md-light-green-a100: #ccff90; -$md-light-green-a200: #b2ff59; -$md-light-green-a400: #76ff03; -$md-light-green-a700: #64dd17; - -$md-lime-50: #f9fbe7; -$md-lime-100: #f0f4c3; -$md-lime-200: #e6ee9c; -$md-lime-300: #dce775; -$md-lime-400: #d4e157; -$md-lime-500: #cddc39; -$md-lime-600: #c0ca33; -$md-lime-700: #afb42b; -$md-lime-800: #9e9d24; -$md-lime-900: #827717; -$md-lime-a100: #f4ff81; -$md-lime-a200: #eeff41; -$md-lime-a400: #c6ff00; -$md-lime-a700: #aeea00; - -$md-yellow-50: #fffde7; -$md-yellow-100: #fff9c4; -$md-yellow-200: #fff59d; -$md-yellow-300: #fff176; -$md-yellow-400: #ffee58; -$md-yellow-500: #ffeb3b; -$md-yellow-600: #fdd835; -$md-yellow-700: #fbc02d; -$md-yellow-800: #f9a825; -$md-yellow-900: #f57f17; -$md-yellow-a100: #ffff8d; -$md-yellow-a200: #ffff00; -$md-yellow-a400: #ffea00; -$md-yellow-a700: #ffd600; - -$md-amber-50: #fff8e1; -$md-amber-100: #ffecb3; -$md-amber-200: #ffe082; -$md-amber-300: #ffd54f; -$md-amber-400: #ffca28; -$md-amber-500: #ffc107; -$md-amber-600: #ffb300; -$md-amber-700: #ffa000; -$md-amber-800: #ff8f00; -$md-amber-900: #ff6f00; -$md-amber-a100: #ffe57f; -$md-amber-a200: #ffd740; -$md-amber-a400: #ffc400; -$md-amber-a700: #ffab00; - -$md-orange-50: #fff3e0; -$md-orange-100: #ffe0b2; -$md-orange-200: #ffcc80; -$md-orange-300: #ffb74d; -$md-orange-400: #ffa726; -$md-orange-500: #ff9800; -$md-orange-600: #fb8c00; -$md-orange-700: #f57c00; -$md-orange-800: #ef6c00; -$md-orange-900: #e65100; -$md-orange-a100: #ffd180; -$md-orange-a200: #ffab40; -$md-orange-a400: #ff9100; -$md-orange-a700: #ff6d00; - -$md-deep-orange-50: #fbe9e7; -$md-deep-orange-100: #ffccbc; -$md-deep-orange-200: #ffab91; -$md-deep-orange-300: #ff8a65; -$md-deep-orange-400: #ff7043; -$md-deep-orange-500: #ff5722; -$md-deep-orange-600: #f4511e; -$md-deep-orange-700: #e64a19; -$md-deep-orange-800: #d84315; -$md-deep-orange-900: #bf360c; -$md-deep-orange-a100: #ff9e80; -$md-deep-orange-a200: #ff6e40; -$md-deep-orange-a400: #ff3d00; -$md-deep-orange-a700: #dd2c00; - -$md-brown-50: #efebe9; -$md-brown-100: #d7ccc8; -$md-brown-200: #bcaaa4; -$md-brown-300: #a1887f; -$md-brown-400: #8d6e63; -$md-brown-500: #795548; -$md-brown-600: #6d4c41; -$md-brown-700: #5d4037; -$md-brown-800: #4e342e; -$md-brown-900: #3e2723; - -$md-grey-50: #fafafa; -$md-grey-100: #f5f5f5; -$md-grey-200: #eeeeee; -$md-grey-300: #e0e0e0; -$md-grey-400: #bdbdbd; -$md-grey-500: #9e9e9e; -$md-grey-600: #757575; -$md-grey-700: #616161; -$md-grey-800: #424242; -$md-grey-900: #212121; - -$md-blue-grey-50: #eceff1; -$md-blue-grey-100: #cfd8dc; -$md-blue-grey-200: #b0bec5; -$md-blue-grey-300: #90a4ae; -$md-blue-grey-400: #78909c; -$md-blue-grey-500: #607d8b; -$md-blue-grey-600: #546e7a; -$md-blue-grey-700: #455a64; -$md-blue-grey-800: #37474f; -$md-blue-grey-900: #263238; - -$md-black: #000000; - -$md-white: #ffffff; - -$md-dark-text-primary: rgba(0, 0, 0, 0.87); -$md-dark-text-secondary: rgba(0, 0, 0, 0.54); -$md-dark-text-disabled: rgba(0, 0, 0, 0.38); -$md-dark-text-dividers: rgba(0, 0, 0, 0.12); - -$md-light-text-primary: rgba(255, 255, 255, 1); -$md-light-text-secondary: rgba(255, 255, 255, 0.7); -$md-light-text-disabled: rgba(255, 255, 255, 0.5); -$md-light-text-dividers: rgba(255, 255, 255, 0.12); - -$md-dark-icons-active: rgba(0, 0, 0, 0.54); -$md-dark-icons-inactive: rgba(0, 0, 0, 0.38); - -$md-light-icons-active: rgba(255, 255, 255, 1); -$md-light-icons-inactive: rgba(255, 255, 255, 0.5); \ No newline at end of file diff --git a/styles/_xeltica-design.scss b/styles/_xeltica-design.scss deleted file mode 100644 index 31259af..0000000 --- a/styles/_xeltica-design.scss +++ /dev/null @@ -1,501 +0,0 @@ -/* - Xeltica Design CSS Framework - (C)2020 Xeltica -*/ - -* { - box-sizing: border-box; - line-height: 1.8em; -} - -html { - $primary: rgb(134, 179, 0); - $fg: rgba(255, 255, 255, 0.8); - $bg: rgba(24, 24, 24, 0.8); - $overlay: transparentize($bg, 0.5); - $danger: #c72c2c; - font-size: 18px; - @media screen and (max-width: 640px) { - font-size: 15px; - } - --primary: #{$primary}; - --primary-light: #{lighten($primary, 5%)}; - --primary-dark: #{darken($primary, 5%)}; - --primary-fg: white; - --bg: #{$bg}; - --bg-pale-1: #{darken($bg, 5%)}; - --bg-pale-2: #{darken($bg, 10%)}; - --overlay: #{$overlay}; - --fg: #{$fg}; - // --divider: rgba(70, 70, 70, 0.25); - --radius: 0px; - --margin: 16px; - - --bg-danger: #{$danger}; - --fg-danger: white; - --divider-danger: #400e0e; - --bg-danger-lighten: #{lighten($danger, 5%)}; - --bg-danger-darken: #{darken($danger, 5%)}; -} - -body { - background: var(--bg); - color: var(--fg); -} - -h1, h2, h3, h4, h5, h6 { - font-weight: normal; - margin: 0; - margin-bottom: 8px; -} - -dl { - margin: 0; - > dt { - font-weight: bold; - } - > dd { - margin-left: 2rem; - @media screen and (max-width: 640px) { - margin-left: 0; - } - } -} - -h1 { font-size: 2.5rem; } -h2 { font-size: 1.6rem; } -h3 { font-size: 1.4rem; } -h4 { font-size: 1.2rem; } -h5 { font-size: 1.1rem; } -h6 { font-size: 1.05rem; } - -input.xd-input { - outline: none; - border-radius: var(--radius); - color: var(--fg); - background: transparent; - border: 1px solid var(--fg); - padding: 2px 8px; - font-size: 1rem; - - &:focus { - border-color: var(--primary); - } -} - -p { - margin: 1em 0; - &:first-child { - margin-top: 0; - } -} - -.xd-inputs { - display: flex; - > *:not(:first-child) { - border-left: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - - > *:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } -} - -.xd-main { - background: var(--bg); - padding: 32px; - border-radius: var(--radius); - border: 1px solid var(--divider); - max-width: 960px; - margin: 24px auto; - backdrop-filter: blur(32px) saturate(4); - -webkit-backdrop-filter: blur(32px) saturate(4); - box-shadow: 0 0 16px black; -} - -button, .xd-button { - display: flex; - color: var(--fg); - background: var(--bg); - border: 1px solid var(--bg-pale-1); - align-items: center; - justify-content: center; - border-radius: var(--radius); - font-size: 1rem; - outline: none; - padding: 2px 8px; - text-decoration: none; - cursor: pointer; - - &:hover, &:focus { - background: var(--bg-pale-1); - } - &:active { - background: var(--bg-pale-2); - } - - &.primary { - background: var(--primary); - color: var(--primary-fg); - border-color: var(--primary-dark); - &:hover, &:focus { - background: var(--primary-light); - } - &:active { - background: var(--primary-dark); - } - } - - &.danger { - background: var(--bg-danger); - color: white; - border-color: var(--divider-danger); - &:hover, &:focus { - background: var(--bg-danger-lighten); - } - &:active { - background: var(--bg-danger-lighten); - } - } -} - -textarea { - width: 100%; - font-size: 1rem; - padding: 16px; - border-radius: var(--radius); - background: var(--overlay); - border: none; - outline: none; - height: 8rem; - line-height: 1.2; - color: var(--fg); - &:focus { - border: 1px solid var(--primary); - } -} - -// ul, ol { -// > ul, > ol { -// margin-bottom: 0; -// } -// } - -a, .link { - text-decoration: none; - color: var(--primary); - &:hover { - opacity: 0.7; - } -} - -table { - border: 1px solid var(--divider); - border-radius: var(--radius); - background: var(--overlay); - width: 100%; - - > thead { - background: var(--overlay); - margin-bottom: 2px; - text-align: left; - } - > tbody > tr { - border-bottom: 1px solid var(--overlay); - } - th, td { - padding: 4px 8px; - } -} - -code { - border-radius: var(--radius); - color: #0f0; - background: #000; - padding: 8px; -} - -.xd-container { - max-width: 960px; - margin: 64px auto; -} - -.xd-hstack { - display: flex; - > *:not(:last-child) { - margin-right: var(--margin); - } - - > * { - width: 100%; - } - - @media screen and (max-width: 640px) { - flex-direction: column; - > * { - margin-bottom: var(--margin); - } - } -} - -.xd-vstack { - display: flex; - flex-direction: column; - > *:not(:last-child) { - margin-bottom: var(--margin); - } -} - -.xd-card { - background: var(--bg); - padding: 16px; - border-radius: var(--radius); - border: 1px solid var(--divider); - // backdrop-filter: blur(32px) saturate(4); - // -webkit-backdrop-filter: blur(32px) saturate(4); - box-shadow: 0 0 16px black; - overflow: hidden; - - - h1 { font-size: 2rem; } - h2 { font-size: 1.5rem; } - h3 { font-size: 1.3rem; } - h4 { font-size: 1.17rem; } - h5 { font-size: 1.12rem; } - h6 { font-size: 1.08rem; } - - > .media { - width: 100%; - height: auto; - object-fit: cover; - } - - > .body { - padding: 16px; - } - - > .header, > .footer { - padding: 8px 16px; - } - - > .header { - > h1.title { - font-size: 1.5rem; - margin: 0; - font-weight: bold; - } - } - - > .footer { - background: var(--bg-pale-1); - border-top: 1px solid var(--divider); - } - @media screen and (max-width: 640px) { - border-radius: 0; - } -} - -.xd-cards { - list-style: none; - display: flex; - flex-direction: row; - flex-wrap: nowrap; - justify-content: left; - - > .xd-card { - width: 100%; - margin: 8px; - } - - &.center { - justify-content: center; - } - @media screen and (max-width: 640px) { - flex-wrap: wrap; - > .xd-card { - margin: 8px 0; - } - } - - &.wrap { - flex-wrap: wrap; - } -} - -.mx-auto { margin-left: auto; margin-right: auto; } -.my-auto { margin-top: auto; margin-bottom: auto; } - -.px-auto { padding-left: auto; padding-right: auto; } -.py-auto { padding-top: auto; padding-bottom: auto; } - -@for $v from -5 through 5 { - $size: $v * 8px; - .ma-#{$v} { margin: $size; } - .ml-#{$v} { margin-left: $size; } - .mr-#{$v} { margin-right: $size; } - .mt-#{$v} { margin-top: $size; } - .mb-#{$v} { margin-bottom: $size; } - .mx-#{$v} { margin-left: $size; margin-right: $size; } - .my-#{$v} { margin-top: $size; margin-bottom: $size; } - - .pa-#{$v} { padding: $size; } - .pl-#{$v} { padding-left: $size; } - .pr-#{$v} { padding-right: $size; } - .pt-#{$v} { padding-top: $size; } - .pb-#{$v} { padding-bottom: $size; } - .px-#{$v} { padding-left: $size; padding-right: $size; } - .py-#{$v} { padding-top: $size; padding-bottom: $size; } -} - -.xd-slide-in { - animation: slideIn 1s ease-out; -} - -@keyframes slideIn { - 0% { - transform: translateY(32px); - opacity: 0; - } - - 100% { - transform: none; - opacity: 1; - } -} - -figure { - margin: 0; - padding: 0; -} - -@each $mode in none, block, inline, flex, grid, inline-block, inline-flex { - .display-#{$mode} { display: $mode; } -} - -@media screen and (min-width: 901px) { - .hide-on-pc { - display: none !important; - } -} - -@media screen and (max-width: 900px) and (min-width: 641px) { - .hide-on-tablet { - display: none !important; - } -} - -@media screen and (max-width: 640px) { - .hide-on-mobile { - display: none !important; - } -} - -@for $i from -18 through 18 { - .xd-tilt-#{$i * 5} { - display: inline-block; - transform: rotateZ($i * 5deg); - } -} - -@keyframes blink { - 0% { opacity: 1 } - 10% { opacity: 1 } - 12% { opacity: 0 } - 14% { opacity: 1 } - 20% { opacity: 1 } - 21% { opacity: 0 } - 39% { opacity: 0 } - 40% { opacity: 1 } - 48% { opacity: 1 } - 49% { opacity: 0 } - 50% { opacity: 1 } - 54% { opacity: 1 } - 55% { opacity: 0 } - 56% { opacity: 1 } - 85% { opacity: 1 } - 89% { opacity: 0 } - 95% { opacity: 1 } -} - -.xd-big { - font-size: 2rem; -} - -.xd-small { - font-size: 0.5rem; -} - -.xd-blink { - animation: blink 2s infinite linear; -} - -.xd-fluid { - width: 100%; -} - -img, .xd-responsive { - max-width: 100%; -} - -.xd-footer { - text-align: center; - // background: darken($bg, 2); -} - -.xd-columns { - display: flex; - - @media screen and (max-width: 640px) { - flex-wrap: wrap; - } - - .xd-column { - &.gap-1 { margin: 8px; } - &.gap-2 { margin: 16px; } - &.gap-3 { margin: 24px; } - } -} - -.xd-alert { - padding: 8px 16px; - display: flex; - align-items: center; - border-radius: var(--radius); - width: 100%; - background: var(--bg); - border: 1px solid var(--bg-pale-2); - color: var(--fg); - font-size: 75%; - - > .icon { - opacity: 0.5; - font-size: 1.2rem; - margin-right: 16px; - } - - &.danger { - > .icon { - opacity: 1; - } - background: var(--bg-danger); - border: 1px solid var(--divider-danger); - color: var(--fg-danger); - } - -} - -.xd-center { - text-align: center; -} - -.xd-centerized { - display: flex; - justify-content: center; - align-items: center; - text-align: center; - width: 100vw; - height: 100vh; -} \ No newline at end of file diff --git a/styles/style.scss b/styles/style.scss deleted file mode 100644 index 8b895c4..0000000 --- a/styles/style.scss +++ /dev/null @@ -1,58 +0,0 @@ -@import '_xeltica-design.scss'; - -body { - background: var(--bg-pale-1); -} - -h1> a { - border-bottom: none; -} - -.background { - position: fixed; - z-index: -50; - inset: 0; - - background: radial-gradient( - farthest-corner at 0 0, - #86b300 0%, - #86b300 40%, - #6900ba 90%, - #6900ba 100% - ); -} - -.background:before { - z-index: -200; - position: absolute; - inset: 0; - background: radial-gradient( - 60vw at 150vh 50vh, - #ff9900 0%, - #ff9900 20%, - rgba(0, 0, 0, 0) 100% - ); - content: ""; -} - -.background:after { - z-index: -100; - position: absolute; - inset: 0; - background: radial-gradient( - 50vw at 120vw 120vh, - rgba(0, 30, 190, 1) 0%, - rgba(0, 30, 190, 0) 100% - ); - content: ""; -} - -details > summary { - margin-bottom: 8px; - cursor: pointer; -} - -h1 > small { - margin-left: 1rem; - font-size: 1.2rem; -} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 114bba1..30966cb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -64,7 +64,7 @@ /* Experimental Options */ "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ /* Advanced Options */ "skipLibCheck": true, /* Skip type checking of declaration files. */ diff --git a/yarn.lock b/yarn.lock index fe057f6..0bd7e7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -265,6 +265,11 @@ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.0.0.tgz#165aae4819ad2174a17476dbe66feebd549556c0" integrity sha512-xSQfNcvOiE5f9dyd4Kzxbof1aTrLobL278pGLKOZI6esGfZ7ts9Ka16CzIN6Y8hFHE1C7jIBZokULhK1bOgjRw== +"@types/validator@^13.1.3": + version "13.6.3" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.6.3.tgz#31ca2e997bf13a0fffca30a25747d5b9f7dbb7de" + integrity sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw== + "@typescript-eslint/eslint-plugin@^3.7.0": version "3.7.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz#d144c49a9a0ffe8dd704bb179c243df76c111bc9" @@ -330,7 +335,7 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@^1.3.5: +accepts@^1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -428,6 +433,11 @@ append-field@^0.1.0: resolved "https://registry.yarnpkg.com/append-field/-/append-field-0.1.0.tgz#6ddc58fa083c7bc545d3c5995b2830cc2366d44a" integrity sha1-bdxY+gg8e8VF08WZWygwzCNm1Eo= +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" + integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -435,6 +445,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -489,6 +504,22 @@ bluebird@^3.1.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +body-parser@1.19.0, body-parser@^1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + boxen@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" @@ -643,6 +674,20 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +class-transformer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.4.0.tgz#b52144117b423c516afb44cc1c76dbad31c2165b" + integrity sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA== + +class-validator@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.13.1.tgz#381b2001ee6b9e05afd133671fbdf760da7dec67" + integrity sha512-zWIeYFhUitvAHBwNhDdCRK09hWx+P0HUwFE8US8/CxFpMVzkUK8RJl7yOIE+BVu2lxyPNgeOaFv78tLE47jBIg== + dependencies: + "@types/validator" "^13.1.3" + libphonenumber-js "^1.9.7" + validator "^13.5.2" + cli-boxes@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" @@ -734,7 +779,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -788,18 +833,33 @@ constantinople@^4.0.1: "@babel/parser" "^7.6.0" "@babel/types" "^7.6.1" -content-disposition@~0.5.2: +content-disposition@0.5.3, content-disposition@~0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== dependencies: safe-buffer "5.1.2" -content-type@^1.0.4: +content-type@^1.0.4, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +cookie@0.4.1, cookie@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + cookies@~0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" @@ -867,6 +927,13 @@ dayjs@^1.10.2: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.2.tgz#8f3a424ceb944a8193506804b0045a773d2d0672" integrity sha512-h/YtykNNTR8Qgtd1Fxl5J1/SFP1b7SOk/M1P+Re+bCdFMV0IMkuKNgHPN7rlvvuhfw24w0LX78iYKt4YmePJNQ== +debug@2.6.9, debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -874,13 +941,6 @@ debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -949,12 +1009,12 @@ depd@^1.1.2, depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -depd@~2.0.0: +depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -destroy@^1.0.4: +destroy@^1.0.4, destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= @@ -1026,7 +1086,7 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -encodeurl@^1.0.2: +encodeurl@^1.0.2, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= @@ -1083,7 +1143,7 @@ escape-goat@^2.0.0: resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== -escape-html@^1.0.3: +escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= @@ -1212,6 +1272,61 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +express-session@^1.17.1: + version "1.17.2" + resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.2.tgz#397020374f9bf7997f891b85ea338767b30d0efd" + integrity sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ== + dependencies: + cookie "0.4.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~2.0.0" + on-headers "~1.0.2" + parseurl "~1.3.3" + safe-buffer "5.2.1" + uid-safe "~2.1.5" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -1258,6 +1373,19 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -1294,7 +1422,12 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" -fresh@~0.5.2: +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2, fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= @@ -1369,6 +1502,18 @@ glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.4: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" @@ -1469,6 +1614,17 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -1480,7 +1636,7 @@ http-errors@1.7.3, http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@^1.6.3, http-errors@^1.7.3: +http-errors@^1.3.1, http-errors@^1.6.3, http-errors@^1.7.3: version "1.8.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== @@ -1569,6 +1725,11 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1817,7 +1978,7 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" -koa-bodyparser@^4.3.0: +koa-bodyparser@^4.2.1, koa-bodyparser@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz#274c778555ff48fa221ee7f36a9fbdbace22759a" integrity sha512-uyV8G29KAGwZc4q/0WUAjH+Tsmuv9ImfBUF2oZVyZtaeo0husInagyn/JH85xMSxM0hEk/mbCII5ubLDuqW/Rw== @@ -1860,6 +2021,18 @@ koa-multer@^1.0.2: dependencies: multer "1.3.0" +koa-router@^7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-7.4.0.tgz#aee1f7adc02d5cb31d7d67465c9eacc825e8c5e0" + integrity sha512-IWhaDXeAnfDBEpWS6hkGdZ1ablgr6Q6pGdXCyK38RbzuH4LkUOpPqPw+3f8l8aTDrQmBQ7xJc0bs2yV4dzcO+g== + dependencies: + debug "^3.1.0" + http-errors "^1.3.1" + koa-compose "^3.0.0" + methods "^1.0.1" + path-to-regexp "^1.1.1" + urijs "^1.19.0" + koa-router@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-9.1.0.tgz#47d1ce2109fd62b1d76eb42df90b635ff93b6831" @@ -1939,6 +2112,35 @@ koa@^2.13.0: type-is "^1.6.16" vary "^1.1.2" +koa@^2.8.2: + version "2.13.1" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.1.tgz#6275172875b27bcfe1d454356a5b6b9f5a9b1051" + integrity sha512-Lb2Dloc72auj5vK4X4qqL7B5jyDPQaZucc9sR/71byg7ryoD1NCaCm63CShk9ID9quQvDEi1bGR/iGjCG7As3w== + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.8.0" + debug "~3.1.0" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^1.2.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + latest-version@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" @@ -1954,6 +2156,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +libphonenumber-js@^1.9.7: + version "1.9.25" + resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.9.25.tgz#e54b570f03d36ce059a88ab01ec49b9037ec1c97" + integrity sha512-LsSjcmXXGujESsrOsF2rrLdmuABj3OluCzPJKVNslJ2qc7xF5KdKXN8y0OcxHVurqosVf1/r4itrVrKSrlbVHA== + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -2024,7 +2231,12 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= -methods@^1.1.2: +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +methods@^1.0.1, methods@^1.1.2, methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= @@ -2041,6 +2253,11 @@ mime-types@^2.1.18, mime-types@~2.1.24: dependencies: mime-db "1.44.0" +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -2058,7 +2275,7 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@^0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -2075,6 +2292,11 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -2094,6 +2316,20 @@ multer@1.3.0: type-is "^1.6.4" xtend "^4.0.0" +multer@^1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.3.tgz#4db352d6992e028ac0eacf7be45c6efd0264297b" + integrity sha512-np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg== + dependencies: + append-field "^1.0.0" + busboy "^0.2.11" + concat-stream "^1.5.2" + mkdirp "^0.5.4" + object-assign "^4.1.1" + on-finished "^2.3.0" + type-is "^1.6.4" + xtend "^4.0.0" + mz@^2.4.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -2230,13 +2466,18 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -on-finished@^2.3.0: +on-finished@^2.3.0, on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2367,7 +2608,7 @@ parse5@^5.1.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -parseurl@^1.3.2: +parseurl@^1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -2402,6 +2643,18 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-to-regexp@^1.1.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-to-regexp@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.1.0.tgz#0b18f88b7a0ce0bfae6a25990c909ab86f512427" @@ -2561,6 +2814,14 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= +proxy-addr@~2.0.5: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -2694,16 +2955,41 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + qs@^6.5.2: version "6.9.4" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + rangestr@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/rangestr/-/rangestr-0.0.1.tgz#f72ff9246f10f2a7d7c16e14616f617be2c2635a" integrity sha1-9y/5JG8Q8qfXwW4UYW9he+LCY1o= +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-body@^2.3.3: version "2.4.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" @@ -2773,7 +3059,7 @@ readdirp@~3.4.0: dependencies: picomatch "^2.2.1" -reflect-metadata@^0.1.10, reflect-metadata@^0.1.13: +reflect-metadata@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== @@ -2856,12 +3142,31 @@ rndstr@^1.0.0: rangestr "0.0.1" seedrandom "2.4.2" +routing-controllers@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/routing-controllers/-/routing-controllers-0.9.0.tgz#979016523db37832d4c9a23c33b2654a89a563de" + integrity sha512-OtARLKA6j8enNgGqi/hoRqBsTjVo2hbxc1+MeKi8mvelNn18+LXUdHpzY3z4GbCERBtaj8CwVjcsiQR+2w6ZFg== + dependencies: + cookie "^0.4.0" + express-session "^1.17.1" + glob "^7.1.4" + reflect-metadata "^0.1.13" + template-url "^1.0.0" + optionalDependencies: + body-parser "^1.19.0" + express "^4.17.1" + koa "^2.8.2" + koa-bodyparser "^4.2.1" + koa-multer "^1.0.2" + koa-router "^7.4.0" + multer "^1.4.2" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1: +safe-buffer@5.2.1, safe-buffer@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2915,6 +3220,35 @@ semver@^7.2.1, semver@^7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -3041,7 +3375,7 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0, statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -3170,6 +3504,11 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +template-url@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/template-url/-/template-url-1.0.0.tgz#d9456bee70cac6617b462a7b08db29fb813a0b09" + integrity sha1-2UVr7nDKxmF7Rip7CNsp+4E6Cwk= + term-size@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" @@ -3294,7 +3633,7 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@^1.6.16, type-is@^1.6.4: +type-is@^1.6.16, type-is@^1.6.4, type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -3345,6 +3684,13 @@ tz-offset@0.0.1: resolved "https://registry.yarnpkg.com/tz-offset/-/tz-offset-0.0.1.tgz#fef920257024d3583ed9072a767721a18bdb8a76" integrity sha512-kMBmblijHJXyOpKzgDhKx9INYU4u4E1RPMB0HqmKSgWG8vEcf3exEfLh4FFfzd3xdQOw9EuIy/cP0akY6rHopQ== +uid-safe@~2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" + integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== + dependencies: + random-bytes "~1.0.0" + undefsafe@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" @@ -3359,7 +3705,7 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unpipe@1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= @@ -3390,6 +3736,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urijs@^1.19.0: + version "1.19.7" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.7.tgz#4f594e59113928fea63c00ce688fb395b1168ab9" + integrity sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA== + url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" @@ -3402,6 +3753,11 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -3432,7 +3788,12 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vary@^1.1.2: +validator@^13.5.2: + version "13.6.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.6.0.tgz#1e71899c14cdc7b2068463cb24c1cc16f6ec7059" + integrity sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg== + +vary@^1.1.2, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=