diff --git a/package.json b/package.json index 4b1c363..08069f0 100644 --- a/package.json +++ b/package.json @@ -16,13 +16,16 @@ "@types/debug": "^4.1.7", "@types/express": "^4.17.14", "@types/express-ws": "^3.0.1", + "@types/mongoose": "^5.11.97", "@types/morgan": "^1.9.3", "@types/node": "^18.11.9", "cookie-parser": "^1.4.6", "debug": "^4.3.4", "express": "~4.16.1", "express-ws": "^5.0.2", + "hc-sr04": "^0.0.1", "http-errors": "~1.6.3", + "mongoose": "^6.7.2", "morgan": "^1.10.0", "pug": "2.0.0-beta11" }, diff --git a/public/stylesheets/buttons.css b/public/stylesheets/buttons.css new file mode 100644 index 0000000..f8c4ab8 --- /dev/null +++ b/public/stylesheets/buttons.css @@ -0,0 +1,85 @@ +.btn { + padding: 11px 15px; + border: none; + cursor: pointer; + color: white; + font-size: 0.8em; + border-radius: 2px; + +} + + +.btn:disabled { + background-color: var(--disabled) !important; + color: #FFFFFF; + cursor: not-allowed; +} + + +.btn:hover { + background-color: var(--hover); +} + + +.btn-primary { + background-color: var(--primary); + color: white; +} + + +.btn-primary:hover { + background-color: var(--primary-bright); +} + + +.btn-secondary { + background-color: var(--secondary); + color: white; +} + +.btn-secondary:hover { + background-color: var(--secondary-bright); +} + +.btn-success { + background-color: var(--success); + color: white; +} + + +.btn-success:hover { + background-color: var(--success-bright); +} + + +.btn-warning { + background-color: var(--warning); + color: white; +} + + +.btn-warning:hover { + background-color: var(--warning-bright); +} + + +.btn-danger { + background-color: var(--danger); + color: white; +} + + +.btn-danger:hover { + background-color: var(--danger-bright); +} + + +.btn-dark { + color: white; + background-color: var(--dark); +} + + +.btn-dark:hover { + background-color: var(--dark-bright); +} diff --git a/public/stylesheets/colors.css b/public/stylesheets/colors.css new file mode 100644 index 0000000..fbe3542 --- /dev/null +++ b/public/stylesheets/colors.css @@ -0,0 +1,24 @@ +:root { + --primary-dark: #1E66B2; + --primary: #0086FD; + --primary-bright: #409DFC; + + --secondary: #555555; + --secondary-bright: #A3A3A3; + + --hover: grey; + + --disabled: #A4A4A4; + + --success: #31B600; + --success-bright: #6DC946; + + --warning: #ED6D05; + --warning-bright: #E28433; + + --danger: #FF1818; + --danger-bright: #DC4040; + + --dark: #911010; + --dark-bright: #A22F2F; +} \ No newline at end of file diff --git a/public/stylesheets/fonts.css b/public/stylesheets/fonts.css new file mode 100644 index 0000000..9b44389 --- /dev/null +++ b/public/stylesheets/fonts.css @@ -0,0 +1,119 @@ +/* roboto-100 - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 100; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-100.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-100.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-100italic - latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 100; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-100italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-100italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-300 - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-300italic - latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-regular - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-italic - latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-500 - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-500italic - latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 500; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-500italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-500italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-700 - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-700italic - latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-900 - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 900; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-900.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-900.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* roboto-900italic - latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 900; + src: local(''), + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-900italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('https://fonts.gaminggeneration.de/Roboto/roboto-v30-latin-900italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} diff --git a/public/stylesheets/modal.css b/public/stylesheets/modal.css index 576e4c1..1994be2 100644 --- a/public/stylesheets/modal.css +++ b/public/stylesheets/modal.css @@ -1,4 +1,3 @@ - /* The Modal (background) */ .modal { display: none; /* Hidden by default */ @@ -15,6 +14,7 @@ background-color: rgba(0, 0, 0, 0.7); /* Black w/ opacity */ } + /* Modal Content */ .modal-content { margin: auto; @@ -23,15 +23,22 @@ border: 1px solid #888888; width: 80%; text-align: center; - background-color: #fefefe; + background-color: #FEFEFE; } + +#modalInnerContent { + color: black; +} + + #modalTitle { font-size: 1.9em; font-weight: 500; margin-bottom: 12px; } + @keyframes modalBlendOut { 0% { opacity: 1; @@ -41,6 +48,7 @@ } } + @keyframes modalBlendIn { 0% { opacity: 0; @@ -50,25 +58,88 @@ } } + .modalBlendIn { animation: modalBlendIn 0.5s ease; } + .modalBlendOut { animation: modalBlendOut 0.8s ease; } + /* The Close Button */ .close { - color: #aaaaaa; + color: #AAAAAA; float: right; font-size: 28px; font-weight: bold; } + .close:hover, .close:focus { color: #000000; text-decoration: none; cursor: pointer; } + + + +.lds-ellipsis { + display: block; + position: relative; + left: 44.9%; + width: 64px; + height: 64px; +} +.lds-ellipsis div { + position: absolute; + top: 27px; + width: 11px; + height: 11px; + border-radius: 50%; + background: #00303F; + animation-timing-function: cubic-bezier(0, 1, 1, 0); +} +.lds-ellipsis div:nth-child(1) { + left: 6px; + animation: lds-ellipsis1 0.6s infinite; +} +.lds-ellipsis div:nth-child(2) { + left: 6px; + animation: lds-ellipsis2 0.6s infinite; +} +.lds-ellipsis div:nth-child(3) { + left: 26px; + animation: lds-ellipsis2 0.6s infinite; +} +.lds-ellipsis div:nth-child(4) { + left: 45px; + animation: lds-ellipsis3 0.6s infinite; +} +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } +} +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0); + } +} +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + 100% { + transform: translate(19px, 0); + } +} \ No newline at end of file diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 5145c6d..55c59bb 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1,5 +1,7 @@ -@import url("https://fonts.gaminggeneration.de/Roboto.css"); - +@import url("/stylesheets/colors.css"); +@import url("/stylesheets/fonts.css"); +@import url("/stylesheets/buttons.css"); +@import url("/stylesheets/modal.css"); body { color: white; diff --git a/src/Category.ts b/src/Category.ts new file mode 100644 index 0000000..1115b77 --- /dev/null +++ b/src/Category.ts @@ -0,0 +1,6 @@ +export enum Category { + ALCOHOLIC, + ALCOHOL_FREE, + SYRUP, + JUICE +} \ No newline at end of file diff --git a/src/Utils.ts b/src/Utils.ts new file mode 100644 index 0000000..258af84 --- /dev/null +++ b/src/Utils.ts @@ -0,0 +1,15 @@ +import * as dns from "dns"; + +export class Utils { + public static checkInternet(): Promise { + return new Promise(resolve => { + dns.resolve('gaminggeneration.de', (err) => { + if (err) + resolve(false); + else + resolve(true); + }); + }); + + } +} \ No newline at end of file diff --git a/src/WebSocketEvent.ts b/src/WebSocketEvent.ts new file mode 100644 index 0000000..bfd9d87 --- /dev/null +++ b/src/WebSocketEvent.ts @@ -0,0 +1,7 @@ +export enum WebSocketEvent { + STATUS_STARTING, + STATUS_READY, + STATUS_FILLING, + STATUS_REFRESHING, + STATUS_ERROR +} \ No newline at end of file diff --git a/src/WebSocketPayload.ts b/src/WebSocketPayload.ts new file mode 100644 index 0000000..61ace5e --- /dev/null +++ b/src/WebSocketPayload.ts @@ -0,0 +1,52 @@ +import {WebSocketEvent} from "./WebSocketEvent"; + +export class WebSocketPayload { + set event(value: WebSocketEvent) { + this._event = value; + } + + set status(value: boolean) { + this._status = value; + } + + set data(value: object | undefined) { + this._data = value; + } + + private _event: WebSocketEvent; + private _status: boolean; + private _data: object | undefined; + + + get event(): WebSocketEvent { + return this._event; + } + + get status(): boolean { + return this._status; + } + + get data(): object | undefined { + return this._data; + } + + constructor(event: WebSocketEvent, status: boolean, data?: object) { + this._event = event; + this._status = status; + this._data = data; + } + + public static parseFromJSON(json: string): WebSocketPayload | null { + json = (window) ? atob(json) : Buffer.from(json, "base64").toString(); + let rawPayload: { event: string, status: boolean, data: object }; + try { + rawPayload = JSON.parse(json); + } catch (e) { + return null; + } + + let wsEvent = rawPayload.event; + + return new WebSocketPayload(wsEvent, rawPayload.status, rawPayload.data); + } +} \ No newline at end of file diff --git a/src/WebsocketApp.ts b/src/WebsocketApp.ts index 058e3bd..7e85d74 100644 --- a/src/WebsocketApp.ts +++ b/src/WebsocketApp.ts @@ -33,13 +33,12 @@ export class WebsocketApp { this.log("Error " + err); }); - this._app.set("port", WebsocketApp.port); - + this.loadRoutes(); } public loadRoutes( ) : void { - + this._app.use( "/", require("./routes/ws/websocket") ); } public listen(): Promise { diff --git a/src/database/AbstractContainer.ts b/src/database/AbstractContainer.ts new file mode 100644 index 0000000..32e9898 --- /dev/null +++ b/src/database/AbstractContainer.ts @@ -0,0 +1,26 @@ +import {IContainer} from "./IContainer"; +import {IIngredient} from "./IIngredient"; +import {HCSR04} from "hc-sr04"; + +export abstract class AbstractContainer implements IContainer { + slot: number = 1; + content: IIngredient | undefined; + sensorEcho: number = 26; + sensorFilledMax: number = 0; + sensorFilledMin: number = 0; + sensorTrigger: number = 27; + volume: number = 1000; + sensor: HCSR04; + + protected constructor() { + this.sensor = new HCSR04(this.sensorTrigger, this.sensorEcho); + } + + public measure() : Number { + let dist = this.sensor.distance(); + return dist * 100 / (this.sensorFilledMax + this.sensorFilledMin); + } + + + +} \ No newline at end of file diff --git a/src/database/Container.ts b/src/database/Container.ts new file mode 100644 index 0000000..60720de --- /dev/null +++ b/src/database/Container.ts @@ -0,0 +1,17 @@ +import * as Mongoose from "mongoose"; +import {AbstractContainer} from "./AbstractContainer"; +import mongoose from "mongoose"; + +export const ContainerSchema = new Mongoose.Schema({ + slot: {type: Number}, + volume: {type: Number, required: true, default: 1000}, + sensorEcho: Number, + sensorTrigger: Number, + content: {type: String}, + sensorFilledMax: Number, + sensorFilledMin: Number +}); + +const Container = mongoose.model('Container', ContainerSchema); +export default Container; + diff --git a/src/database/Database.ts b/src/database/Database.ts new file mode 100644 index 0000000..404401f --- /dev/null +++ b/src/database/Database.ts @@ -0,0 +1,33 @@ +import * as Mongoose from "mongoose"; +import debug from "debug"; +import Ingredient from "./Ingredient"; +import Drink from "./Drink"; +import Container from "./Container"; + +const log = debug("itender:server"); + +export class Database { + public static connect(): Promise { + return new Promise(async (resolve, reject) => { + try { + await Mongoose.connect("mongodb://localhost:27017/iTender?retryWrites=true"); + log("Connected to Database"); + /*if (Mongoose.connection.readyState == Mongoose.ConnectionStates.connected) { + resolve(); + } else { + reject("Can't connect to database"); + }*/ + + // Preload schemes + Ingredient.find(); + Drink.find(); + Container.find(); + + resolve(); + } catch (e) { + reject("Exception whilst connecting to Database " + e); + } + + }); + } +} \ No newline at end of file diff --git a/src/database/Drink.ts b/src/database/Drink.ts new file mode 100644 index 0000000..a04fbfa --- /dev/null +++ b/src/database/Drink.ts @@ -0,0 +1,11 @@ +import {IDrink} from "./IDrink"; +import * as mongoose from "mongoose"; + +export const DrinkSchema = new mongoose.Schema({ + name: {type: String, required: true}, + ingredients: [{type: {type: mongoose.Types.ObjectId, ref: "Ingredient", required: true}, amount: { type: Number } }], + category: String +}); + +const Drink = mongoose.model('Drink', DrinkSchema); +export default Drink; diff --git a/src/database/IContainer.ts b/src/database/IContainer.ts new file mode 100644 index 0000000..73944e1 --- /dev/null +++ b/src/database/IContainer.ts @@ -0,0 +1,12 @@ +import {IIngredient} from "./IIngredient"; +import * as mongoose from "mongoose"; + +export interface IContainer extends mongoose.Document { + slot: number; + content: IIngredient|undefined; + volume: number; + sensorFilledMin : number; + sensorFilledMax: number; + sensorTrigger: number; + sensorEcho: number; +} \ No newline at end of file diff --git a/src/database/IDrink.ts b/src/database/IDrink.ts new file mode 100644 index 0000000..7ab5bb5 --- /dev/null +++ b/src/database/IDrink.ts @@ -0,0 +1,15 @@ +import {IIngredient} from "./IIngredient"; +import {Category} from "../Category"; +import * as mongoose from "mongoose"; + +export interface IDrink extends mongoose.Document { + // Name for the Drink + name: string; + + // Ingredients + ingredients: { type: IIngredient, amount: Number }[]; + + // Category of the drink + category: Category; + +} \ No newline at end of file diff --git a/src/database/IIngredient.ts b/src/database/IIngredient.ts new file mode 100644 index 0000000..8f83c70 --- /dev/null +++ b/src/database/IIngredient.ts @@ -0,0 +1,10 @@ +import {Category} from "../Category"; +import * as mongoose from "mongoose"; + +export interface IIngredient extends mongoose.Document{ + // Name of the ingredient + name: string; + + // Category of the ingredient + category: Category; +} \ No newline at end of file diff --git a/src/database/Ingredient.ts b/src/database/Ingredient.ts new file mode 100644 index 0000000..aaec7e6 --- /dev/null +++ b/src/database/Ingredient.ts @@ -0,0 +1,12 @@ +import * as Mongoose from "mongoose"; +import mongoose from "mongoose"; +import {IIngredient} from "./IIngredient"; + +export const IngredientSchema = new Mongoose.Schema({ + name: {type: String, required: true}, + category: String +}); + + +const Ingredient = mongoose.model('Ingredient', IngredientSchema); +export default Ingredient; \ No newline at end of file diff --git a/src/iTender.ts b/src/iTender.ts new file mode 100644 index 0000000..5d21c33 --- /dev/null +++ b/src/iTender.ts @@ -0,0 +1,36 @@ +import {iTenderStatus} from "./iTenderStatus"; +import {AbstractContainer} from "./database/AbstractContainer"; + +export class iTender { + private static _status: iTenderStatus; + + private static containers: AbstractContainer[]; + + static set status(value: iTenderStatus) { + this._status = value; + } + + static get status(): iTenderStatus { + return this._status; + } + + static startFill() { + // todo Fill method + } + + static stopFill() { + // todo Stop fill method + } + + static measureContainers() { + for( let container of this.containers ) + { + container.measure(); + } + } + + static loadContainers() { + + } + +} \ No newline at end of file diff --git a/src/iTenderStatus.ts b/src/iTenderStatus.ts new file mode 100644 index 0000000..637bc22 --- /dev/null +++ b/src/iTenderStatus.ts @@ -0,0 +1,7 @@ +export enum iTenderStatus { + STARTING, + READY, + FILLING, + REFRESHING, + ERROR +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 2c299f4..df0eb8a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,10 @@ import {App} from "./App"; import debug from "debug"; import {WebsocketApp} from "./WebsocketApp"; +import {Database} from "./database/Database"; +import Drink from "./database/Drink"; +import Ingredient from "./database/Ingredient"; +import {Category} from "./Category"; const log = debug("itender:server"); @@ -11,9 +15,11 @@ const wsApp = new WebsocketApp(); (async( ) => { try { - log("Starting...") + log("Starting..."); + await Database.connect(); await app.listen(); await wsApp.listen(); + await test(); } catch( e ) { console.error("---- ERROR ----") @@ -22,3 +28,31 @@ const wsApp = new WebsocketApp(); } })(); + +async function test() { + console.log("Testing fn"); + + + let drink = await Drink.findOne( { name: "Mezzo Mix" } ).populate("ingredients.type"); + console.log(drink); + //console.log(drink.ingredients) + /*let ingredient = new Ingredient(); + ingredient.name = "Cola"; + ingredient.category = Category.ALCOHOL_FREE; + + await ingredient.save(); + + let ingredient2 = new Ingredient(); + ingredient2.name = "Fanta"; + ingredient2.category = Category.ALCOHOL_FREE; + + await ingredient2.save(); + + let drink = new Drink(); + drink.name = "Mezzo Mix"; + drink.ingredients = [ {type: ingredient2, amount: 2}, { type: ingredient, amount: 10 } ]; + + await drink.save();*/ + + +} \ No newline at end of file diff --git a/src/routes/websocket.js b/src/routes/websocket.js deleted file mode 100644 index 623e430..0000000 --- a/src/routes/websocket.js +++ /dev/null @@ -1,9 +0,0 @@ -var express = require('express'); -var router = express.Router(); - -/* GET users listing. */ -router.get('/', function(req, res, next) { - res.send('respond with a resource'); -}); - -module.exports = router; diff --git a/src/routes/ws/websocket.ts b/src/routes/ws/websocket.ts new file mode 100644 index 0000000..4244940 --- /dev/null +++ b/src/routes/ws/websocket.ts @@ -0,0 +1,33 @@ +import {WebSocketPayload} from "../../WebSocketPayload"; +import debug from "debug"; + +const express = require('express'); +const router = express.Router(); + +let currentWS: WebSocket; + +const log = debug("itender:websocket"); + +router.ws('/', (ws, req, next) => { + log("Incoming websocket connection") + ws.on('message', async (raw, bool) => { + let msg = WebSocketPayload.parseFromJSON(raw); + // If message is null, close the socket because it could not be decompiled + if (!msg) { + ws.close(1011); + return; + } + + switch (msg.event) { + + } + }); + + ws.on('open', (listener) => { + if (currentWS) + currentWS.close(1001); + currentWS = ws; + }); +}); + +module.exports = router; diff --git a/src/web/ButtonType.ts b/src/web/ButtonType.ts new file mode 100644 index 0000000..f9b9309 --- /dev/null +++ b/src/web/ButtonType.ts @@ -0,0 +1,5 @@ +export enum ButtonType { + SUCCESS = "success", + ERROR = "error", + +} \ No newline at end of file diff --git a/src/web/Modal.ts b/src/web/Modal.ts new file mode 100644 index 0000000..af2fa9c --- /dev/null +++ b/src/web/Modal.ts @@ -0,0 +1,105 @@ +import {ButtonType} from "./ButtonType"; + +export class Modal { + + private static currentModalId = ""; + + private _title: string = "iTender"; + private _content: string | undefined = ""; + private _id: string = ""; + private _loader: boolean = false; + private _buttons: { type: string, content: string, onclick: Function }[] = []; + + + constructor(id, title: string, content?: string) { + this._id = id; + this._title = title; + this._content = content; + } + + + set title(value: string) { + this._title = value; + } + + set content(value: string | undefined) { + this._content = value; + } + + set id(value: string) { + this._id = value; + } + + set loader(value: boolean) { + this._loader = value; + } + + public addButton( type: ButtonType, content: string, onclick: Function ) + { + this._buttons.push({type: type, content: content, onclick: onclick}); + } + + public open() { + if (!this._content) + this._content = ""; + + if (this._loader) + this._content += "
\n" + + "
\n" + + "
"; + + for (let btn of this._buttons) { + this._content += ``; + } + + Modal.open(this._title, this._content, this._id); + } + + /** + * @param title + * @param content + * @param id + */ + public static open(title: string, content: string, id?: string): void { + const modal = document.getElementById("modal"); + const modalContent = document.getElementById("modalInnerContent"); + + if (!modal || !modalContent) + return; + + modalContent.classList.add("modalBlendIn"); + modal.classList.add("modalBlendIn"); + + setTimeout(() => { + modalContent.classList.remove("modalBlendIn"); + modal.classList.remove("modalBlendIn"); + }, 800); + + modalContent.innerHTML = `

${title}

${content}`; + modal.style.display = "block"; + + this.currentModalId = id ? id : "null"; + } + + public static close(id?: string): void { + if (this.currentModalId != id) + return; + + const modal = document.getElementById("modal"); + const modalContent = document.getElementById("modal-content"); + const modalInnerContent = document.getElementById("modalInnerContent"); + + if (!modal || !modalContent || !modalInnerContent) + return; + + modalContent.classList.add("modalBlendOut"); + modal.classList.add("modalBlendOut"); + + setTimeout(() => { + modal.style.display = "none"; + modalInnerContent.innerHTML = ""; + modalContent.classList.remove("modalBlendOut"); + modal.classList.remove("modalBlendOut"); + }, 800); + } +} \ No newline at end of file diff --git a/src/web/WebSocketHandler.ts b/src/web/WebSocketHandler.ts new file mode 100644 index 0000000..56442a9 --- /dev/null +++ b/src/web/WebSocketHandler.ts @@ -0,0 +1,29 @@ +import {Modal} from "./Modal"; + +export class WebSocketHandler { + private socket : WebSocket; + + constructor() { + this.socket = new WebSocket((window.location.protocol == "http:" ? "ws://" : "wss://") + window.location.hostname + ":3005"); + this.socket.onopen = this.onOpen; + this.socket.onclose = this.onClose; + this.socket.onerror = this.onError; + } + + private onOpen( event ) + { + Modal.close("start"); + } + + private onClose( event ) { + console.error("WS Closed!", event ); + //openModal("Einen Augenblick...", `Es wurde ein Verbindungsfehler erkannt.\nBitte warten Sie, während der Prozess neu gestartet wird...` ); + //window.location.reload(); + } + + private onError( event ) { + console.error("WS Error", event); + //openModal("Einen Augenblick...", `Es wurde ein kritischer Fehler festgestellt.\nBitte warten Sie, während der Prozess neu gestartet wird...` ); + //window.location.reload(); + } +} \ No newline at end of file diff --git a/src/web/main.ts b/src/web/main.ts index a291497..e3e0dbd 100644 --- a/src/web/main.ts +++ b/src/web/main.ts @@ -1,3 +1,5 @@ +import {WebSocketHandler} from "./WebSocketHandler"; +import {Modal} from "./Modal"; const main = document.getElementById("main"); const time = document.getElementById("title"); @@ -5,12 +7,13 @@ const time = document.getElementById("title"); document.addEventListener("DOMContentLoaded", () => { console.log("DOM Loaded"); - openModal("iTender", "Starten...") + let modal = new Modal("start", "iTender"); + modal.content = "Willkommen"; + modal.loader = true; + modal.open(); + connect(); setTimeout( load, 1000); - setTimeout( () => closeModal(), 2500 ); - - }); function load() @@ -48,44 +51,9 @@ function load() } } - -function openModal(title, content) { - const modal = document.getElementById("modal"); - const modalContent = document.getElementById("modalInnerContent"); - - if(!modal || !modalContent) - return; - - modalContent.classList.add("modalBlendIn"); - modal.classList.add("modalBlendIn"); - - setTimeout(() => { - modalContent.classList.remove("modalBlendIn"); - modal.classList.remove("modalBlendIn"); - }, 800); - - modalContent.innerHTML = `

${title}

${content}`; - modal.style.display = "block"; +let wsHandler; +function connect() +{ + wsHandler = new WebSocketHandler(); } - -function closeModal() { - const modal = document.getElementById("modal"); - const modalContent = document.getElementById("modal-content"); - const modalInnerContent = document.getElementById("modalInnerContent"); - - if(!modal || !modalContent || !modalInnerContent) - return; - - modalContent.classList.add("modalBlendOut"); - modal.classList.add("modalBlendOut"); - - setTimeout(() => { - modal.style.display = "none"; - modalInnerContent.innerHTML = ""; - modalContent.classList.remove("modalBlendOut"); - modal.classList.remove("modalBlendOut"); - }, 800); - - -} \ No newline at end of file diff --git a/views/layout.pug b/views/layout.pug index e02480d..e99ea90 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -4,7 +4,6 @@ html title iTender link(rel='stylesheet', href='/stylesheets/reset.css') link(rel='stylesheet', href='/stylesheets/style.css') - link(rel='stylesheet', href='/stylesheets/modal.css') body div.modal#modal div.modal-content#modal-content @@ -29,4 +28,4 @@ html setTimeout( () => { window.location.reload(); - }, 30000 ); + }, 120000 ); diff --git a/yarn.lock b/yarn.lock index 85f9c0f..9269a79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,736 @@ # yarn lockfile v1 +"@aws-crypto/ie11-detection@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz#9c39f4a5558196636031a933ec1b4792de959d6a" + integrity sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz#741c9024df55ec59b51e5b1f5d806a4852699fb5" + integrity sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A== + dependencies: + "@aws-crypto/ie11-detection" "^2.0.0" + "@aws-crypto/sha256-js" "^2.0.0" + "@aws-crypto/supports-web-crypto" "^2.0.0" + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz#f1f936039bdebd0b9e2dd834d65afdc2aac4efcb" + integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz#c81e5d378b8a74ff1671b58632779986e50f4c99" + integrity sha512-iXLdKH19qPmIC73fVCrHWCSYjN/sxaAvZ3jNNyw6FclmHyjLKg0f69WlC9KTnyElxCR5MO9SKaG00VwlJwyAkQ== + dependencies: + "@aws-crypto/util" "^2.0.2" + "@aws-sdk/types" "^3.110.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz#9f02aafad8789cac9c0ab5faaebb1ab8aa841338" + integrity sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-2.0.2.tgz#adf5ff5dfbc7713082f897f1d01e551ce0edb9c0" + integrity sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA== + dependencies: + "@aws-sdk/types" "^3.110.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.208.0.tgz#a8cd5c59d2b95c51f11e420858029bcc54af786f" + integrity sha512-mQkDR+8VLCafg9KI4TgftftBOL170ricyb+HgV8n5jLDrEG+TfOfud8e6us2lIFESEuMpohC+/8yIcf6JjKkMg== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-cognito-identity@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.209.0.tgz#531b9cecea275f9a82671b78b4f1f660d743b1a7" + integrity sha512-u7lqFKi2PXC/LZzBEBCczlF78/bclv5Gndy4AWxNBdDBbJyuQrE+hk+IIwQQznCeFfgFOhpQMcWFPZH3tSH/qQ== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/client-sts" "3.209.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/credential-provider-node" "3.209.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-signing" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.209.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso-oidc@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.209.0.tgz#45a353b99adf00f177b47cf5559b06769a2d2506" + integrity sha512-KSmT181IcE32lqoZsS0h400qiL/BSQ84DS1iPOqP0NkLcgnvmOkKygVpYjTql2xSUWLQBwPNFihYJ+jmAj3HtQ== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.209.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.209.0.tgz#61c6067842cb0af863d5cae5ef8e1c85cd67d3fd" + integrity sha512-rh9QktLCOVTbvDzCb0ikSe4Q1I35Wxcx5XZ7k1J+2ze54FOBfCr3vOwcQpo5tpYWEe1Ysbt3gvA8RAqj9oDFdw== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.209.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/client-sts@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.209.0.tgz#bda5bc27a1df1db9a2cfc056d9bb8bd2ff815a86" + integrity sha512-zWlM+9/JbshEgrG79KZlqYusUziKiKqe8vRlvQ9wcuEHNbQnAri4UvObEKik+7YpTBeP3mR+US1T71G0PqJByw== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/credential-provider-node" "3.209.0" + "@aws-sdk/fetch-http-handler" "3.208.0" + "@aws-sdk/hash-node" "3.208.0" + "@aws-sdk/invalid-dependency" "3.208.0" + "@aws-sdk/middleware-content-length" "3.208.0" + "@aws-sdk/middleware-endpoint" "3.208.0" + "@aws-sdk/middleware-host-header" "3.208.0" + "@aws-sdk/middleware-logger" "3.208.0" + "@aws-sdk/middleware-recursion-detection" "3.208.0" + "@aws-sdk/middleware-retry" "3.209.0" + "@aws-sdk/middleware-sdk-sts" "3.208.0" + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/middleware-signing" "3.208.0" + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/middleware-user-agent" "3.208.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/node-http-handler" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/smithy-client" "3.209.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.209.0" + "@aws-sdk/util-defaults-mode-node" "3.209.0" + "@aws-sdk/util-endpoints" "3.209.0" + "@aws-sdk/util-user-agent-browser" "3.208.0" + "@aws-sdk/util-user-agent-node" "3.209.0" + "@aws-sdk/util-utf8-browser" "3.188.0" + "@aws-sdk/util-utf8-node" "3.208.0" + fast-xml-parser "4.0.11" + tslib "^2.3.1" + +"@aws-sdk/config-resolver@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.209.0.tgz#88132abc79aa4763e042177595f1f5288b6f3abe" + integrity sha512-wLXI1Jg9xx9wE8vdIfOgSKnoBWbn9j3IvW4+7PnM/nf5xC30/Jp4j+JndEG/BKyDQF7HJQTIeRpSkwKaqJhCRA== + dependencies: + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-config-provider" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-cognito-identity@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.209.0.tgz#faf92c820962e451f4f75d2abce063c3953a3b0d" + integrity sha512-31OAwgElZlJyPoV0WwerRSIrrlMlbXX6rpoBceHu9m+wACu18P+GwqKjMCjTL04Q+z7zr699pLCLp5lbLYJe3w== + dependencies: + "@aws-sdk/client-cognito-identity" "3.209.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-env@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.208.0.tgz#5bc653ea24acbd1e80ee9e218fde2ecf44af7043" + integrity sha512-FB+KUSpZc03wVTXxGnMmgtaP0sJOv0D7oyogHb7wcf5b7RjjwqoaeUcJHTdKRZaW6e1foLk3/L9uebxiWefDbQ== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-imds@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.209.0.tgz#9ad521de804abdbc8e6c9125b2c7b22d6d5aceb0" + integrity sha512-EjA1nWduIHjALjNF6O2lpKVOoTIlfGHgvqCxjFf7XNqBTTKWCxEflcmUgqXwo9A7TU0mTTyr7nLGMAsNE2CR3w== + dependencies: + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-ini@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.209.0.tgz#8ddb84d63f3db0027b52afe3a2deb2e037eee8ea" + integrity sha512-aszuzkKIg7V+tCcq8RNpr1dAyECXWvJRAvzlmE5ZBYtjHMIX/qVAqSP4sfLNeI/Qagyj7W0TeVA1XVRjkivjYA== + dependencies: + "@aws-sdk/credential-provider-env" "3.208.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/credential-provider-sso" "3.209.0" + "@aws-sdk/credential-provider-web-identity" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-node@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.209.0.tgz#f3a9612f6b14f1f0a4ab6a92a11f7a74def2d407" + integrity sha512-R0kV6B+GxbfdSowf/6eeEAHZC6X7P/IxJ/o/gCuMmAOixge0e6AWVgCvrd0cg0togJHWbmoYSuUyqWPIMxM1Yg== + dependencies: + "@aws-sdk/credential-provider-env" "3.208.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/credential-provider-ini" "3.209.0" + "@aws-sdk/credential-provider-process" "3.209.0" + "@aws-sdk/credential-provider-sso" "3.209.0" + "@aws-sdk/credential-provider-web-identity" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-process@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.209.0.tgz#6db05007ff8a49b88d602ba3ac329daa5b54d508" + integrity sha512-G0urC5p1kgUfgpK8lncdisSewa8onnoQAVdf2Uh51hOqc7UufGce+ouvLH8J2iMkMaL1MSyu8fqwfZNyDtH37g== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-sso@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.209.0.tgz#d8ec04bcd6d201e5913457da9a4e2ca8ad72263c" + integrity sha512-SKzUYOn2EFx58+iU1KihGLtBz9s1jolWUQ6HYxOy4AkWnZVGUt9Vb4mIo6wB07nSSUgYRxOSYn21SKvvBzpc2g== + dependencies: + "@aws-sdk/client-sso" "3.209.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/token-providers" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-web-identity@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.208.0.tgz#f9461bfdb05cd0e8105a877e3420245ca0698430" + integrity sha512-7wtrdEr8uvDr5t0stimrXGsW4G+TQyluZ9OucCCY0HXgNihmnk1BIu+COuOSxRtFXHwCh4rIPaVE1ABG2Mq24g== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/credential-providers@^3.186.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.209.0.tgz#9762fcae45dfb266956750bec5145591979e1dce" + integrity sha512-/oQJwzTedZC5TbQJ2pwHcpbcZS7O1RzP/3+cICw73WrIjlrpS1JGmTCvTGrIfGE8RUk5GKdLN3fjgTpVCS82cA== + dependencies: + "@aws-sdk/client-cognito-identity" "3.209.0" + "@aws-sdk/client-sso" "3.209.0" + "@aws-sdk/client-sts" "3.209.0" + "@aws-sdk/credential-provider-cognito-identity" "3.209.0" + "@aws-sdk/credential-provider-env" "3.208.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/credential-provider-ini" "3.209.0" + "@aws-sdk/credential-provider-node" "3.209.0" + "@aws-sdk/credential-provider-process" "3.209.0" + "@aws-sdk/credential-provider-sso" "3.209.0" + "@aws-sdk/credential-provider-web-identity" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/fetch-http-handler@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.208.0.tgz#b7d6e46cd6fdb635498a8de12bed6611b0eff6eb" + integrity sha512-GuwkwOeyLKCbSbnFlyHdlKd7u54cnQUI8NfVDAxpZvomY3PV476Tzg8XEyOYE67r5rR6XMqn6IK1PmFAACY+ew== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/querystring-builder" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-base64" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/hash-node@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.208.0.tgz#5dfeca399e1c6cfc73e1fa37479f4e32dfb42972" + integrity sha512-X5u6nD9+wzaA6qhqbobxsIgiyDJMW8NgqjZgHoc5x1wz4unHUCEuSBZy1kbIZ6+EPZ9bQHQZ21gKgf1j5vhsvQ== + dependencies: + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/invalid-dependency@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.208.0.tgz#7efeec2b9cd89c66e2840add2dcd3aa46fd7a665" + integrity sha512-mUpbtijk14KntYy+w5FSvmsfj/Dqa8HylYeCKniKBKkQ1avjEz7CdizVoxyZrR3rldnLE3gItr0FEDRUhtfkAA== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/is-array-buffer@3.201.0": + version "3.201.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz#06e557adc284fac2f26071c2944ae01f61b95854" + integrity sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/middleware-content-length@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.208.0.tgz#72a1d85fb8650c230d6a6d2599493fe8c65e2a8b" + integrity sha512-8bLh7lHtmKQQ2fk0fGiP7pcVJglB/dz7Q9OooxFYK+eybqxfIDDUgKphA8AFT5W34tJRh5nhT3QTJ6zrOTQM3w== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-endpoint@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.208.0.tgz#b4bfeda86cd715d230dbcae81b874831cdab2cf4" + integrity sha512-pVa/cyB6ronfTVAoKUUTFbAPslDPU43DWOKXY/bACC3ys1lFo1CWjz4dLSQARxEEW3iZ1yZTy0zoHXnNrw5CFQ== + dependencies: + "@aws-sdk/middleware-serde" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/url-parser" "3.208.0" + "@aws-sdk/util-config-provider" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-host-header@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.208.0.tgz#48beb23baae85ecace2963f5eef1df02cee285ba" + integrity sha512-3oyXK81TLWOZ2T/9Ltpbj/Z7R4QWSf+FCQRpY48ND2im/ALkgFRk/tmDTOshv+TQzW1q2lOSEeq4vK6yOCar7g== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-logger@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.208.0.tgz#f0c6dcf3d6c686fe0d1abf5fb4d02f4f0ee65373" + integrity sha512-mwSpuWruB8RrgUAAW7w/lvadnMDesl/bZ2IELBgJri+2rIqLGbAtygJBiG0Y3e8/IeOHuKuGkN1rFYZ4SKr7/A== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-recursion-detection@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.208.0.tgz#210200e409fedf7ae31dc591e2df1839c33d4af3" + integrity sha512-Dgpf5NEOYXvkQuGcbxvDovTh4HwO4ULJReGko67NJjgdZZyFS1fNykVPncxenRpsN9SJBigswYs3lwPVpqijzA== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-retry@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.209.0.tgz#7508046a2bd0670b91cc000c84011b004457d9c7" + integrity sha512-PGHbpGw74HxmtqsMEH+xn2oC5/BPdHVyapB66x83n+sywt1ejTiarbQhNs70YzcSsTrJfbhbrFP1V9AzRmMaQA== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/service-error-classification" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-sts@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.208.0.tgz#fd7ea287e944b9fc99a71ca143ea49bd36b6c49b" + integrity sha512-lFVodZHYLF7puXgNZ1m5ycKbyCPp79nqI+pkRXl066ZtZWzCW8+JKCaLjF3jfXlnvg6foPDJdxUvt0VU5EddGg== + dependencies: + "@aws-sdk/middleware-signing" "3.208.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-serde@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.208.0.tgz#d16474ee3897b1c6cd52979d69cc8b36f490b771" + integrity sha512-3h2yP6qyf/IhfdvyFeNX7w4BF37vOZvfUDBq+wb1QEc7DCAskoUKWtCCKJ9HDq3IJQp8hzqY82eawUir6flqlQ== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-signing@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.208.0.tgz#28e3c45f11d114704a7c78a3cfef8b6e51610126" + integrity sha512-cMSWhg8xOrxZw04EYKEQQQ7RT+03rigS4KS3Uy6x/M+jFyoM+sRiY/7376sJCwlpvKH2xJIVpwPbKk/uz4j4DA== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/signature-v4" "3.208.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-middleware" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-stack@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.208.0.tgz#8cd5da676db9f58fb5b3f8593aaab334485c413e" + integrity sha512-bvFPUa+RTB7PSRCUsO6bRlEtiEadrDES+dpNmInMNQ9kmbd4OhNOCb664hhtiglIIXX5cd8mSPEo+w/RV0kEEQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/middleware-user-agent@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.208.0.tgz#4fe36f9ced65a487536d23b9679c549b830d7d0d" + integrity sha512-6RNf+TOZpiCy7xUcDSh8ji/x8ht1oAM+qIhm6hsEPLdI1cTvbPZrwowO9Y6L0J68V9OkEgLYiq77KKKYT7QQSw== + dependencies: + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/node-config-provider@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.209.0.tgz#c621abfc1816533e5e2013b7943eb86cd1363c0c" + integrity sha512-jNrUn8qTN9BIxHCcLTv2s2h8Riaz4kjwDhubVQNyI0WGZ+PYKATnZjA+Guzbnq2WMzZmwrMIE5GoOiVsPD8xYQ== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/node-http-handler@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.208.0.tgz#69fa111ff7064e6891ae78dfc22aef86a57d7d58" + integrity sha512-2t0b9Id7WekluqxQdPugAZhe/wdzW0L53rfMEfDS3R0INNSq1sEfddIfCzJrmfWDCrCOGIDNyxo/w7Ki3NclzQ== + dependencies: + "@aws-sdk/abort-controller" "3.208.0" + "@aws-sdk/protocol-http" "3.208.0" + "@aws-sdk/querystring-builder" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/property-provider@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.208.0.tgz#d3b153ee36c92df9000f9c6f9132b70ad50596c2" + integrity sha512-aUhfuwXjZ5TGzLhBstuAMmbnxHXeSGhzoIS8yy465ifgc95p6cHFZf+ZibgwgCMaGrKlTDCia2zwwpKQHN+4cw== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/protocol-http@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.208.0.tgz#e58d0cd04978a3ed97b6c165c1fc19ff1437139e" + integrity sha512-Sr9dmaW0Z9X9s16NHZn94efLRpaqLyLqABFPgjqE8cYP6eLX/VrmZGNR62GFVxCiyEEpVxy4Ddk1YkbRwnuonA== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-builder@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.208.0.tgz#fc2dcef63700a39739d540689c2a4b58995133ee" + integrity sha512-1Rpauh5hWlK++KjsHQjHcSN7yE05hj1FVb0HaeLrFIJB5rQYWXK7DpOUhmv5SOmU+q6cIM2kNCrSxH31+WglMw== + dependencies: + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-uri-escape" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-parser@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.208.0.tgz#0409561bb71a67b274277e7b57ecde1b07220f9a" + integrity sha512-dVVLdP3il9bJX74/BNBjFn59XrEVBUZ4xSKYH6t7dgSz9uSu8DcT4pPzwaq+/94dVewCW3zq2jVA1iw1rK7JVQ== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/service-error-classification@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.208.0.tgz#fb14070c7863f7637fd7ef14afe0df2949e8ec83" + integrity sha512-ZZWV3AOTd8UDcfXCNoQ8v4sHaTgFxGaXWO0NHHgqFbVYr1d+8EXQiOy/v8JsY1jrfoXBWXptTOcioCTeM0xBpw== + +"@aws-sdk/shared-ini-file-loader@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.209.0.tgz#0f8d6ca76516a8fbe37aca4d1b446d914f5f5525" + integrity sha512-hji3B/q3zFuElaUQM/ZZUFbCFBsaVjpWATgiDTnSYP+MShWvvwm/WigeC2aCNos1bs/8HVizOy9cmvK63vLZbw== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.208.0.tgz#61f248b60c5ab34722d17e50af34f0ce7e13c63c" + integrity sha512-+c5A8RsN4Lk3TXFiQ3ZsW7sJ4zYPPmYQ55ITSfjock5hzgM1vW43Mgvjjq6foW5L7SNfdhLH+NrhpgFwSF/GeA== + dependencies: + "@aws-sdk/is-array-buffer" "3.201.0" + "@aws-sdk/types" "3.208.0" + "@aws-sdk/util-hex-encoding" "3.201.0" + "@aws-sdk/util-middleware" "3.208.0" + "@aws-sdk/util-uri-escape" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/smithy-client@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.209.0.tgz#61ab9ca8396b6ffb36eb4968f284cd214571491d" + integrity sha512-+d9lPAFOu3hZdLfyzMurRU6xZ+eqwKbF6HY7mDL4hGafRb/uw28HBncSwyUk5s7MIND9+RnvY4F/MwBq9wznXg== + dependencies: + "@aws-sdk/middleware-stack" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/token-providers@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.209.0.tgz#fedcc8c7d8587aadd46c922db8c047a1a9b4213a" + integrity sha512-MMtL/yD98SxjejcZYghLN4qhC1TDNeHjnzb+zBcXANxgh5m+QdhERsZkDGU8QiEo+DL6M2HKbwyXu82z89sqnQ== + dependencies: + "@aws-sdk/client-sso-oidc" "3.209.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/shared-ini-file-loader" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/types@3.208.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.208.0.tgz#b674c31d6ebd34f970102b96bb128b7c2e28a670" + integrity sha512-5AuOPtY1Hdf4xoEo+voRijl3OnFm8IB+oITXl+SN2iASJv+XPnRNw/QVbIxfGeWgWhmK31F+XdjTYsjT2rx8Qw== + +"@aws-sdk/url-parser@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.208.0.tgz#2af6d80ed1eba61ce3fd73b48f78c1db168e25c3" + integrity sha512-zhU231xkZbUh68Z/TGNRW30MGTZQVigGuMiJU6eOtL2aOulnKqI1Yjs/QejrTtPWsqSihWvxOUZ2cVRPyeOvrA== + dependencies: + "@aws-sdk/querystring-parser" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-base64@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz#36b430e5396251f761590f7c2f0c5c12193f353c" + integrity sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg== + dependencies: + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-body-length-browser@3.188.0": + version "3.188.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz#e1d949318c10a621b38575a9ef01e39f9857ddb0" + integrity sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-body-length-node@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz#baabd1fa1206ff2bd4ce3785122d86eb3258dd20" + integrity sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-buffer-from@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz#285e86f6dc9030148a4147d65239e75cb254a1b0" + integrity sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw== + dependencies: + "@aws-sdk/is-array-buffer" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/util-config-provider@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz#c485fd83fbac051337e5f6be60ea3f9fa61c0139" + integrity sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-browser@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.209.0.tgz#a410b7d59d70cc6c2f8e1cba5f01239793e1cab1" + integrity sha512-c+AlHqsgeDr9+87fS1wfnyVzEH3myt56GvNt0puzIv0QQqfpobMnfN8/Fy0cqMpf1eQNYY4a6lFlkComsXi5dw== + dependencies: + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-node@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.209.0.tgz#515e0b0a1f82d4efc5c462840db323c64458b925" + integrity sha512-RljPVLog6EX052DQjx4XQ95n7ZiAbmn7Vd6YSn1x93U797umaC5CnrT7a/WusTQACtxBDFWcosRgO1ZGDXuRKQ== + dependencies: + "@aws-sdk/config-resolver" "3.209.0" + "@aws-sdk/credential-provider-imds" "3.209.0" + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/property-provider" "3.208.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-endpoints@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.209.0.tgz#b0a571906767da3273ec022fb0250d7b02d8b40b" + integrity sha512-jwraCtWjQ0P4LyIg4qoQRF94mTUg0zFPmicy4v+Dq1V8BBRf6YWa9B10SoIdGIKQXmQvoyahK5OuH5SWKkY2pw== + dependencies: + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-hex-encoding@3.201.0": + version "3.201.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz#21d7ec319240ee68c33d938e71cb79830bea315d" + integrity sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz#0f598fc238a1256e4bcb64d01459f03a922dd4c3" + integrity sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-middleware@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.208.0.tgz#e3f13d19042b34c83bb95294d26f125675bf5647" + integrity sha512-oXilrYpXwaPyMw1uNjL1wmR54zeFzIWx2ve1MSMheIYr26deFP3RpMfKkGXwiOvXzZ9pzTcA8shNLhg1frO/zg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-uri-escape@3.201.0": + version "3.201.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz#5e708d4cde001a4558ee616f889ceacfadd2ab03" + integrity sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-browser@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.208.0.tgz#cdc629bee35b24598017941e8d9324bd78dd5cb2" + integrity sha512-Z5n9Kg2pBstzzQgRymQRgb4pM0bNPLGQejB3ZmCAphaxvuTBfu2E6KO55h5WwkFHUuh0i5u2wn1BI9R66S8CgQ== + dependencies: + "@aws-sdk/types" "3.208.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-node@3.209.0": + version "3.209.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.209.0.tgz#551b016611453139820224aee630e2b39de34f2a" + integrity sha512-lWfvnSX8rckMGaalrKZmBlPW7F0QOviG7XbLffwToN4HnYUyXcZXIE4EzOQzuOvDsOUlos/xLkUj6krdIAApcA== + dependencies: + "@aws-sdk/node-config-provider" "3.209.0" + "@aws-sdk/types" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-utf8-browser@3.188.0", "@aws-sdk/util-utf8-browser@^3.0.0": + version "3.188.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz#484762bd600401350e148277731d6744a4a92225" + integrity sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8-node@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz#eba17de0f92f87b98481c2e2d0ceaa05c7994d67" + integrity sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ== + dependencies: + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -222,6 +952,13 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== +"@types/mongoose@^5.11.97": + version "5.11.97" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.11.97.tgz#80b0357f3de6807eb597262f52e49c3e13ee14d8" + integrity sha512-cqwOVYT3qXyLiGw7ueU2kX9noE8DPGRY6z8eUxudhXY8NZ7DMKYAxyZkLSevGfhCX3dO/AoX5/SO9lAzfjon0Q== + dependencies: + mongoose "*" + "@types/morgan@^1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.3.tgz#ae04180dff02c437312bc0cfb1e2960086b2f540" @@ -262,6 +999,19 @@ "@types/mime" "*" "@types/node" "*" +"@types/webidl-conversions@*": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz#2b8e60e33906459219aa587e9d1a612ae994cfe7" + integrity sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog== + +"@types/whatwg-url@^8.2.1": + version "8.2.2" + resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.2.tgz#749d5b3873e845897ada99be4448041d4cc39e63" + integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA== + dependencies: + "@types/node" "*" + "@types/webidl-conversions" "*" + "@types/ws@*": version "8.5.3" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" @@ -556,6 +1306,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + basic-auth@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" @@ -568,6 +1323,13 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + body-parser@1.18.3: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" @@ -589,6 +1351,11 @@ boolean@^3.0.1: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -614,6 +1381,13 @@ browserslist@^4.14.5: node-releases "^2.0.6" update-browserslist-db "^1.0.9" +bson@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-4.7.0.tgz#7874a60091ffc7a45c5dd2973b5cad7cded9718a" + integrity sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA== + dependencies: + buffer "^5.6.0" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -624,6 +1398,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -852,6 +1634,13 @@ debug@2.6.9: dependencies: ms "2.0.0" +debug@4.x, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -859,13 +1648,6 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - decamelize@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -891,6 +1673,11 @@ define-properties@^1.1.3: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -975,6 +1762,14 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +epoll@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/epoll/-/epoll-4.0.1.tgz#62b787d29980394798fa7b9a45fbefea518fc732" + integrity sha512-BgCq0nEsk+XI7y9qjrRtt9uXsyFEdvevvq42xl6t/hKZjxLSDZreD9rTZ0pU40V//c3Zzk2PZGuIsn8YJHSJ4g== + dependencies: + bindings "^1.5.0" + nan "^2.14.2" + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" @@ -1104,6 +1899,13 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-xml-parser@4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz#42332a9aca544520631c8919e6ea871c0185a985" + integrity sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA== + dependencies: + strnum "^1.0.5" + fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -1116,6 +1918,11 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1300,6 +2107,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hc-sr04@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/hc-sr04/-/hc-sr04-0.0.1.tgz#f062a3bd6ee1d544d93345795a007067770b0c6f" + integrity sha512-ApE3UtyAYANbqaWG3+swzUN5g6e0lRIsLRvBd8VH5IeaqcIGQv3Q9rDY1VnDPt69MfKKaWzlqKCPJ016XiSjgQ== + dependencies: + onoff "^6.0.3" + http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -1322,6 +2136,11 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -1350,6 +2169,11 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -1478,6 +2302,11 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" +kareem@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.4.1.tgz#7d81ec518204a48c1cb16554af126806c3cd82b0" + integrity sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA== + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -1514,6 +2343,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash@^4.17.10, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -1558,6 +2392,11 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -1610,6 +2449,40 @@ minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +mongodb-connection-string-url@^2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz#1ee2496f4c4eae64f63c4b2d512aebc89996160a" + integrity sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w== + dependencies: + "@types/whatwg-url" "^8.2.1" + whatwg-url "^11.0.0" + +mongodb@4.11.0: + version "4.11.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.11.0.tgz#d28fdc7509f24d0d274f456529441fa3e570415c" + integrity sha512-9l9n4Nk2BYZzljW3vHah3Z0rfS5npKw6ktnkmFgTcnzaXH1DRm3pDl6VMHu84EVb1lzmSaJC4OzWZqTkB5i2wg== + dependencies: + bson "^4.7.0" + denque "^2.1.0" + mongodb-connection-string-url "^2.5.4" + socks "^2.7.1" + optionalDependencies: + "@aws-sdk/credential-providers" "^3.186.0" + saslprep "^1.0.3" + +mongoose@*, mongoose@^6.7.2: + version "6.7.2" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-6.7.2.tgz#457994b254a2afd1e03dd8f0b3046ff3d2ed276e" + integrity sha512-lrP2V5U1qhaf+z33fiIn7aYAZZ1fVDly+TkFRjTujNBF/FIHESATj2RbgAOSlWqv32fsZXkXejXzeVfjbv35Ow== + dependencies: + bson "^4.7.0" + kareem "2.4.1" + mongodb "4.11.0" + mpath "0.9.0" + mquery "4.0.3" + ms "2.1.3" + sift "16.0.1" + morgan@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -1621,6 +2494,18 @@ morgan@^1.10.0: on-finished "~2.3.0" on-headers "~1.0.2" +mpath@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.9.0.tgz#0c122fe107846e31fc58c75b09c35514b3871904" + integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== + +mquery@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-4.0.3.tgz#4d15f938e6247d773a942c912d9748bd1965f89d" + integrity sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA== + dependencies: + debug "4.x" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -1631,11 +2516,16 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nan@^2.14.2: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -1721,6 +2611,14 @@ once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" +onoff@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/onoff/-/onoff-6.0.3.tgz#b8e41aec363bebbb3d76e47d74b8ae9cea8d4280" + integrity sha512-xtVlwRDzswYM69bzzIui/qzu7QHsFnjsQiCV1iYVA/HXt5xdc9utc97SYAlXzK8wAhIN7+H7MaVqh2vpfdKk9A== + dependencies: + epoll "^4.0.1" + lodash.debounce "^4.0.8" + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -1945,7 +2843,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -2063,6 +2961,13 @@ safe-buffer@^5.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +saslprep@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" + integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== + dependencies: + sparse-bitfield "^3.0.3" + schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" @@ -2166,6 +3071,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +sift@16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053" + integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ== + simple-update-notifier@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz#7edf75c5bdd04f88828d632f762b2bc32996a9cc" @@ -2173,6 +3083,19 @@ simple-update-notifier@^1.0.7: dependencies: semver "~7.0.0" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -2198,6 +3121,13 @@ source-map@~0.5.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + sprintf-js@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" @@ -2213,6 +3143,11 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + sumchecker@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" @@ -2301,6 +3236,13 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + ts-loader@^9.4.1: version "9.4.1" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.1.tgz#b6f3d82db0eac5a8295994f8cb5e4940ff6b1060" @@ -2330,6 +3272,16 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.3.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + tunnel@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" @@ -2410,6 +3362,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -2433,6 +3390,11 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + webpack-cli@^4.10.0: version "4.10.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" @@ -2494,6 +3456,14 @@ webpack@^5.74.0: watchpack "^2.4.0" webpack-sources "^3.2.3" +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"