├── .env.exemple
├── .gitignore
├── LICENSE
├── README.md
├── assets
└── blaze.png
├── package.json
├── prisma
├── migrations
│ ├── 20220327173518_create_colors
│ │ └── migration.sql
│ ├── 20220327180159_create_colors
│ │ └── migration.sql
│ ├── 20220420090747_init
│ │ └── migration.sql
│ ├── 20220420091541_alter_tables_name
│ │ └── migration.sql
│ ├── 20220420093220_alter_table_configs_for_standard
│ │ └── migration.sql
│ ├── 20220428174009_change_created_at_column_type
│ │ └── migration.sql
│ └── migration_lock.toml
└── schema.prisma
├── src
├── app.ts
├── bot
│ └── CreateBot.ts
├── helpers
│ ├── BotMetrics
│ │ └── MetricDouble.ts
│ └── Messages
│ │ └── MountMessageHelpers.ts
├── prisma
│ └── client.ts
├── router.ts
├── server.ts
└── useCases
│ ├── configs
│ ├── ConfigsController.ts
│ └── ConfigsUseCase.ts
│ └── counts
│ └── CountsUseCase.ts
├── tsconfig.json
└── yarn.lock
/.env.exemple:
--------------------------------------------------------------------------------
1 | PORT = 3000
2 | TOKEN_TELEGRAM = your bot token
3 | CHANNEL_NAME = your ID channel
4 | BOT_NAME = bot name
5 |
6 | DATABASE_URL="mysql://userDatabase:password@localhost:port/nameDatabase"
7 |
8 | API_BLAZE_DOUBLE_RECENT = https://blaze.com/api/roulette_games/recent
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | # Keep environment variables out of version control
3 | .env
4 | dist
5 | api
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Jocimar Costa
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Blaze Double
11 |
12 |
13 |
14 |
15 |
16 | ## 🤖 Bot Blaze
17 |
18 | A [Blaze][blaze] apostas é um cassino online que recentemente se tornou popular nas redes sociais.
19 |
20 | Esse bot tem como objetivo enviar mensagem em grupo/canal no telegram, indicando uma possível cor para apostar.
21 |
22 | * __O bot não faz a coleta da útima cor que saiu na blaze, isso você vai ter que fazer.__
23 | * __Para fazer alguma alteração no padrão desse Bot, acesse esse arquivo `MetricDouble.ts`.__
24 |
25 | Caminho:
26 | ```
27 | ./src/helpers/botMetrics/MetricDouble.ts
28 | ```
29 | * __Esse bot foi desenvolvido com o padrão de cores 🔴🔴🔴⚫, ao cadastrar seu bot , precisa informar o padrão, ou seja, a quantidade de vezes que precisa repetir uma cor para poder enviar o sinal no canal.__
30 |
31 |
32 | top
33 |
34 |
35 |
36 |
37 | ## ✨ Instalação
38 |
39 | _Para executar o bot, precisa seguir os passos a seguir._
40 | * __Presumo que já tenha [NodeJs][nodejs] instalado.__
41 |
42 | 1. Clone o repositório
43 | ```sh
44 | git clone https://github.com/jocimarjsc/blazebot
45 | ```
46 | 2. Instalar as dependências
47 | ```sh
48 | npm install
49 | ```
50 | ou
51 | ```sh
52 | yarn
53 | ```
54 | 3. Trocar o nome do arquivo `.env.exemple` para `.env`
55 |
56 | 4. Coloque os valores das variavés de ambiente no arquivo `.env`
57 | ```js
58 | PORT = 3000 //não alterar essa porta
59 |
60 | TOKEN_TELEGRAM = your bot token
61 |
62 | CHANNEL_NAME = your ID channel
63 |
64 | BOT_NAME = bot name
65 |
66 | DATABASE_URL="mysql://userDatabase:password@localhost:port/nameDatabase"
67 | ```
68 |
69 | top
70 |
71 |
72 |
73 |
74 | ### 🗃️ Banco de dados
75 |
76 | Para esse projeto é necessário ter um banco de dados, optei por usar o [MySql][mysql].
77 |
78 | 1. Instale o [MySql][mysql]
79 |
80 | 2. Crie um banco de dados com o seguinte nome `tips_blaze`
81 |
82 | top
83 |
84 |
85 |
86 |
87 | ## 📝 Como Usar
88 |
89 | 1. Deve-se executar
90 |
91 | ```
92 | npx prisma migrate dev --name add_tables
93 | ```
94 | ou
95 | ```
96 | yarn prisma migrate dev --name add_tables
97 | ```
98 |
99 | 2. Executar como desenvolvimento
100 | ```
101 | npm run dev
102 | ```
103 | ou
104 | ```
105 | yarn dev
106 | ```
107 | 3. Executar em produção
108 | ```
109 | npm run build
110 | ```
111 | ou
112 | ```
113 | yarn build
114 | ```
115 | Depois esse comando
116 | ```
117 | npm run start
118 | ```
119 | ou
120 | ```
121 | yarn start
122 | ```
123 |
124 | __Se tudo ocorreu bem, deve ver no console as seguintes messagens:__
125 | ```
126 | 🤖 Bot On! 🟢
127 | ✅ Server is running!
128 | ```
129 |
130 | top
131 |
132 | ## 📛 Rotas
133 | _Para que o BOT venha enviar mensagem no telegram, você precisa enviar uma request para a "Rota" abaixo._
134 |
135 | * Recebe a última cor que saiu na [Blaze][blaze], Método: "POST".
136 |
137 | ```
138 | https://localhost:3000/colors
139 | ```
140 | ~~~json
141 | //espera receber esses parametros
142 | {
143 | "colorName": "red",
144 | "number": "4"
145 | }
146 | ~~~
147 | * Se no console aparecer:
148 | ```
149 | ⚙️ Precisa configurar seu bot!
150 | ```
151 | _Abra a conversa do seu Bot no telegram use o comando `/start` e siga os passos para cadastrar seu bot._
152 |
153 | ## ⚠️ Observações
154 |
155 | 1. _Você precisa **COLETAR** a última cor que saiu na [Blaze][blaze]._
156 |
157 | top
158 |
159 | ## Contato
160 |
161 | Telegram: __@jocimarjsc__
162 |
163 |
164 |
165 | ---
166 | ⌨️ com ❤️ por [Jocimar Costa][GitHub] 😊
167 |
168 | [GitHub]: https://github.com/jocimarjsc
169 | [blaze]: https://blaze.com/r/KOGDR9
170 | [mysql]: https://dev.mysql.com/downloads/installer/
171 | [nodejs]: https://nodejs.org/en/
--------------------------------------------------------------------------------
/assets/blaze.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jocimarjsc/blazebot/f8d3fa1ad9ffffc362a97bf4050be51469e9282f/assets/blaze.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "botblaze",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "",
6 | "scripts": {
7 | "start": "node ./dist/server.js",
8 | "dev": "ts-node-dev --transpile-only --ignore-watch node_modules src/server.ts",
9 | "build": "tsc --build",
10 | "clean": "tsc --build --clean"
11 | },
12 | "devDependencies": {
13 | "@types/axios": "^0.14.0",
14 | "@types/cors": "^2.8.12",
15 | "@types/express": "^4.17.13",
16 | "prisma": "^3.11.1",
17 | "ts-node-dev": "^1.1.8",
18 | "typescript": "^4.6.3"
19 | },
20 | "dependencies": {
21 | "@prisma/client": "^3.11.1",
22 | "axios": "^0.27.2",
23 | "cors": "^2.8.5",
24 | "dotenv": "^16.0.0",
25 | "express": "^4.17.3",
26 | "mysql": "^2.18.1",
27 | "telegraf": "^4.7.0"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/prisma/migrations/20220327173518_create_colors/migration.sql:
--------------------------------------------------------------------------------
1 | -- CreateTable
2 | CREATE TABLE `Colors` (
3 | `id` VARCHAR(191) NOT NULL,
4 | `color` VARCHAR(191) NOT NULL,
5 | `number` VARCHAR(191) NOT NULL,
6 | `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
7 |
8 | PRIMARY KEY (`id`)
9 | ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
10 |
--------------------------------------------------------------------------------
/prisma/migrations/20220327180159_create_colors/migration.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Warnings:
3 |
4 | - You are about to drop the column `color` on the `colors` table. All the data in the column will be lost.
5 | - Added the required column `colorName` to the `Colors` table without a default value. This is not possible if the table is not empty.
6 |
7 | */
8 | -- AlterTable
9 | ALTER TABLE `colors` DROP COLUMN `color`,
10 | ADD COLUMN `colorName` VARCHAR(191) NOT NULL;
11 |
--------------------------------------------------------------------------------
/prisma/migrations/20220420090747_init/migration.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Warnings:
3 |
4 | - You are about to drop the `colors` table. If the table is not empty, all the data it contains will be lost.
5 |
6 | */
7 | -- DropTable
8 | DROP TABLE `colors`;
9 |
10 | -- CreateTable
11 | CREATE TABLE `config` (
12 | `id` VARCHAR(191) NOT NULL,
13 | `name` VARCHAR(191) NOT NULL,
14 | `default` VARCHAR(191) NOT NULL,
15 | `password` VARCHAR(191) NOT NULL,
16 | `activo` BOOLEAN NOT NULL,
17 | `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
18 | `updatedAt` DATETIME(3) NOT NULL,
19 |
20 | PRIMARY KEY (`id`)
21 | ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
22 |
23 | -- CreateTable
24 | CREATE TABLE `count` (
25 | `id` VARCHAR(191) NOT NULL,
26 | `countGreen` INTEGER NOT NULL,
27 | `countWhite` INTEGER NOT NULL,
28 | `countRed` INTEGER NOT NULL,
29 | `countGale1` INTEGER NOT NULL,
30 | `countGale2` INTEGER NOT NULL,
31 | `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
32 | `updatedAt` DATETIME(3) NOT NULL,
33 |
34 | PRIMARY KEY (`id`)
35 | ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
36 |
--------------------------------------------------------------------------------
/prisma/migrations/20220420091541_alter_tables_name/migration.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Warnings:
3 |
4 | - You are about to drop the `config` table. If the table is not empty, all the data it contains will be lost.
5 | - You are about to drop the `count` table. If the table is not empty, all the data it contains will be lost.
6 |
7 | */
8 | -- DropTable
9 | DROP TABLE `config`;
10 |
11 | -- DropTable
12 | DROP TABLE `count`;
13 |
14 | -- CreateTable
15 | CREATE TABLE `configs` (
16 | `id` VARCHAR(191) NOT NULL,
17 | `name` VARCHAR(191) NOT NULL,
18 | `default` VARCHAR(191) NOT NULL,
19 | `password` VARCHAR(191) NOT NULL,
20 | `activo` BOOLEAN NOT NULL,
21 | `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
22 | `updatedAt` DATETIME(3) NOT NULL,
23 |
24 | PRIMARY KEY (`id`)
25 | ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
26 |
27 | -- CreateTable
28 | CREATE TABLE `counts` (
29 | `id` VARCHAR(191) NOT NULL,
30 | `countGreen` INTEGER NOT NULL,
31 | `countWhite` INTEGER NOT NULL,
32 | `countRed` INTEGER NOT NULL,
33 | `countGale1` INTEGER NOT NULL,
34 | `countGale2` INTEGER NOT NULL,
35 | `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
36 | `updatedAt` DATETIME(3) NOT NULL,
37 |
38 | PRIMARY KEY (`id`)
39 | ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
40 |
--------------------------------------------------------------------------------
/prisma/migrations/20220420093220_alter_table_configs_for_standard/migration.sql:
--------------------------------------------------------------------------------
1 | /*
2 | Warnings:
3 |
4 | - You are about to drop the column `default` on the `configs` table. All the data in the column will be lost.
5 | - Added the required column `standard` to the `configs` table without a default value. This is not possible if the table is not empty.
6 |
7 | */
8 | -- AlterTable
9 | ALTER TABLE `configs` DROP COLUMN `default`,
10 | ADD COLUMN `standard` INTEGER NOT NULL;
11 |
--------------------------------------------------------------------------------
/prisma/migrations/20220428174009_change_created_at_column_type/migration.sql:
--------------------------------------------------------------------------------
1 | -- AlterTable
2 | ALTER TABLE `counts` MODIFY `createdAt` VARCHAR(191) NOT NULL;
3 |
--------------------------------------------------------------------------------
/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (i.e. Git)
3 | provider = "mysql"
--------------------------------------------------------------------------------
/prisma/schema.prisma:
--------------------------------------------------------------------------------
1 | // This is your Prisma schema file,
2 | // learn more about it in the docs: https://pris.ly/d/prisma-schema
3 |
4 | generator client {
5 | provider = "prisma-client-js"
6 | }
7 |
8 | datasource db {
9 | provider = "mysql"
10 | url = env("DATABASE_URL")
11 | }
12 |
13 | model Config {
14 | id String @id @default(uuid())
15 | name String
16 | standard Int
17 | password String
18 | activo Boolean
19 | createdAt DateTime @default(now())
20 | updatedAt DateTime @updatedAt
21 |
22 | @@map("configs")
23 | }
24 |
25 | model Count {
26 | id String @id @default(uuid())
27 | countGreen Int
28 | countWhite Int
29 | countRed Int
30 | countGale1 Int
31 | countGale2 Int
32 | createdAt String
33 | updatedAt DateTime @updatedAt
34 |
35 | @@map("counts")
36 | }
--------------------------------------------------------------------------------
/src/app.ts:
--------------------------------------------------------------------------------
1 | import express from "express"
2 | import cors from "cors"
3 | import * as dotenv from "dotenv";
4 | import { routes } from "./router"
5 | import { Bot } from "./bot/CreateBot";
6 |
7 | dotenv.config();
8 |
9 | const bot = new Bot()
10 | bot.inital()
11 | bot.commandBot()
12 |
13 | const app = express()
14 |
15 | app.use(cors())
16 |
17 | app.use(express.json())
18 |
19 | app.use(routes)
20 |
21 | export { app }
--------------------------------------------------------------------------------
/src/bot/CreateBot.ts:
--------------------------------------------------------------------------------
1 | import { Telegraf } from "telegraf"
2 | import { ConfigsController } from "../useCases/configs/ConfigsController"
3 | import { ConfigsUseCase } from "../useCases/configs/ConfigsUseCase"
4 | import { CountsUseCase } from "../useCases/counts/CountsUseCase"
5 |
6 | interface IMessage {
7 | countGreen?: number
8 | countRed?: number
9 | color?: string
10 | channel?: string
11 | message: string
12 | messageID?: number
13 | }
14 |
15 | interface IDataCount {
16 | id: string
17 | countWhite: number
18 | countGreen: number
19 | countRed: number
20 | countGale1: number
21 | countGale2: number
22 | totalWin?: number
23 | totalSent?: number
24 | percentageWin?: number
25 | }
26 |
27 | class Bot {
28 | start: string
29 | bots: Telegraf
30 |
31 | constructor() {
32 | this.start = "🤖 Bot On! 🟢"
33 | this.bots = new Telegraf(process.env.TOKEN_TELEGRAM)
34 | }
35 |
36 | public async inital() {
37 |
38 | try {
39 | console.log(this.start)
40 | this.bots.launch();
41 |
42 | process.once("SIGINT", () => this.bots.stop("SIGINT"));
43 | process.once("SIGTERM", () => this.bots.stop("SIGTERM"));
44 | } catch (error) {
45 | console.log("Error in connection of API!")
46 | }
47 | }
48 |
49 | async sendMessage({ countGreen, countRed, color, message }: IMessage) {
50 | try {
51 | const messageId = await this.bots.telegram.sendMessage(process.env.CHANNEL_NAME, message, { parse_mode: 'HTML' })
52 |
53 | return messageId.message_id
54 | } catch (error) {
55 | console.log("Error send message!")
56 | }
57 |
58 | }
59 |
60 | async deleteMessageWithID(messageID: any) {
61 | try {
62 | await this.bots.telegram.deleteMessage(process.env.CHANNEL_NAME, messageID)
63 | } catch (error) {
64 | console.log("Error in delete message!")
65 | }
66 | }
67 |
68 | async replyMessage({ message, messageID }: IMessage) {
69 | try {
70 | const messageId = await this.bots.telegram.sendMessage(process.env.CHANNEL_NAME, message, { reply_to_message_id: messageID, parse_mode: "HTML" })
71 | return messageId.message_id
72 | } catch (error) {
73 | console.log("Error reply message!")
74 | console.log(error.message)
75 | }
76 | }
77 |
78 | async commandBot() {
79 | this.bots.start(async (ctx) => {
80 | await ctx.reply(`🤖 Bem vindo ao ${ctx.botInfo.first_name} 📣\n\n/padrao Ver as configurações do Bot.\n\n/config Cadastrar e alterar as configs do Bot.\n\n/resultado Envia relatório no canal.\nVocê pode passar uma data\nExemplo: '24/01/2022', se não vai\nser enviado com a data do dia.\n\n/help Ajuda.`, { parse_mode: 'HTML' })
81 | })
82 |
83 | this.bots.help(async (ctx) => {
84 | await ctx.reply(`🤖 Bot Comandos 📣\n\n/padrao Ver as configurações do Bot.\n\n/config Cadastrar e alterar as configs do Bot.\n\n/resultado Envia relatório no canal.\nVocê pode passar uma data\nExemplo: '24/01/2022', se não vai\nser enviado com a data do dia.`, { parse_mode: 'HTML' })
85 | })
86 |
87 | this.bots.command("padrao", async (ctx) => {
88 | const configUseCase = new ConfigsUseCase()
89 | const configs = await configUseCase.show()
90 |
91 | if (configs !== null) {
92 | const { activo, standard } = await configUseCase.show()
93 | await ctx.reply(`🤖 Bot Configs ⚙️\n\nBot: ${activo ? "Ativado" : "Desativado"}\nPadrão: ${Number(standard)}`, { parse_mode: 'HTML' })
94 | return
95 | }
96 | await ctx.reply(`Você precisa configurar seu bot\n\n/config`, { parse_mode: 'HTML' })
97 | })
98 |
99 | this.bots.command("resultado", async (ctx) => {
100 | const [command, date] = ctx.message.text.split(" ")
101 | const countUseCase = new CountsUseCase()
102 | const data = await countUseCase.getCounts(date)
103 |
104 | if (data.length === 0) {
105 | console.log("Sem registro")
106 | await ctx.reply(`📊 Resultados até agora! 📈\n\n⛔Sem registro\n\n✅Acertos: 0\n❌Não Bateu: 0\n\n🥇Primeira Entrada: 0\n1️⃣Primeira Gale: 0\n2️⃣Segunda Gale: 0\n⚪Winn Branco: 0\n\n 0% de aproveitamento!`, { parse_mode: 'HTML' })
107 | return
108 | }
109 |
110 | const { greenWhite, green, red, gale1, gale2, totalWin, totalSent, percentageWin } = await this.calculateCounts(data)
111 |
112 | const message = `📊 Resultados até agora! 📈\n\n✅Acertos: ${totalWin}\n❌Não Bateu: ${red}\n\n🥇Primeira Entrada: ${green}\n1️⃣Primeira Gale: ${gale1}\n2️⃣Segunda Gale: ${gale2}\n⚪Winn Branco: ${greenWhite}\n\n ${Math.round(100 - percentageWin)}% de aproveitamento!`
113 | await this.sendMessage({ message })
114 | await ctx.replyWithHTML(`📨 Relatório enviado!`)
115 | return
116 | })
117 |
118 | this.bots.command("config", async (ctx) => {
119 | const configUseCase = new ConfigsUseCase()
120 | const configs = await configUseCase.show()
121 |
122 | const configsController = new ConfigsController()
123 |
124 | const respone = ctx.message.text.split(" ")
125 | const [_, botName, password, newDefault, activo] = ctx.message.text.split(" ")
126 | const newActivo = activo === "ativado" ? true : false
127 |
128 | if (respone.length !== 5) {
129 | await ctx.reply("⚠️ Parametros Errados!\n\nEnviar da seguinte maneira:\n\nComando: /config\nBot: nome do seu bot\nSenha: senha de acesso\nPadrão: número do seu padrão, ex. 3\nAtivo: ativado ou desativado\n\nExemplo: /config blaze-bot abc123 4 ativado", { parse_mode: 'HTML' })
130 | return
131 | }
132 |
133 | switch (activo) {
134 | case "ativado":
135 | case "desativado":
136 | if (configs === null) {
137 | await configsController.create({ name: botName, standard: Number(newDefault), activo: newActivo, password: password.toString() })
138 | await ctx.reply(`⚠️ Atenção ⚠️\n\nCadastro realizado!`, { parse_mode: 'HTML' })
139 | return
140 | }
141 |
142 | if (configs.password === password && configs.name === botName) {
143 | await configsController.create({ name: botName, standard: Number(newDefault), activo: newActivo, password: password.toString() })
144 | await ctx.reply(`⚠️ Atenção ⚠️\n\nParâmetros Alterados\n\nBot: ${newActivo ? "Ativado" : "Desativado"}\nPadrão: ${Number(newDefault)}`, { parse_mode: 'HTML' })
145 | return
146 | }
147 | await ctx.reply(`⚠️ Atenção ⚠️\n\nNome do Bot ou Senha errada!`, { parse_mode: 'HTML' })
148 | break;
149 | default:
150 | await ctx.reply("⚠️ Atenção ⚠️\n\nInforme se o BOT está \nativado ou desativado", { parse_mode: 'HTML' })
151 | break;
152 | }
153 | })
154 | }
155 |
156 | async calculateCounts(data: Array) {
157 | let greenWhite = null
158 | let green = null
159 | let red = null
160 | let gale1 = null
161 | let gale2 = null
162 |
163 | data.forEach(async counts => {
164 | greenWhite = greenWhite + counts.countWhite
165 | green = green + counts.countGreen
166 | red = red + counts.countRed
167 | gale1 = gale1 + counts.countGale1
168 | gale2 = gale2 + counts.countGale2
169 | })
170 | let totalWin = green + greenWhite + gale1 + gale2
171 | let totalSent = totalWin + red
172 | let percentageWin = Math.round((red * 100) / totalSent)
173 |
174 | return {
175 | greenWhite,
176 | green,
177 | red,
178 | gale1,
179 | gale2,
180 | totalWin,
181 | totalSent,
182 | percentageWin
183 | }
184 | }
185 | }
186 |
187 | export { Bot }
--------------------------------------------------------------------------------
/src/helpers/BotMetrics/MetricDouble.ts:
--------------------------------------------------------------------------------
1 | import { Bot } from "../../bot/CreateBot"
2 | import { MountMessageHelper } from "../Messages/MountMessageHelpers"
3 | import { CountsUseCase } from "../../useCases/counts/CountsUseCase"
4 | import { ConfigsUseCase } from "../../useCases/configs/ConfigsUseCase"
5 |
6 | interface ISequenceFour {
7 | colorName: string
8 | number: string
9 | standard: number
10 | }
11 |
12 | let data = {
13 | messageID: null,
14 | idMessageSent: null,
15 | standard: null,
16 | isEqual: false,
17 | countGale1: 0,
18 | countGale2: 0,
19 | gale: 0,
20 | counterTipSent: 0,
21 | countGreen: 0,
22 | countWhite: 0,
23 | countRed: 0,
24 | countColorEqual: 0,
25 | lastColor: "",
26 | colors: []
27 | }
28 |
29 | class MetricDouble {
30 | bot: Bot
31 | mounteMessageHelper: MountMessageHelper
32 | alert: Promise
33 | info: Promise
34 | cover: Promise
35 | entryBlack: Promise
36 | entryRed: Promise
37 | red: Promise
38 | greenWithWhite: Promise
39 | green: Promise
40 | date: string
41 | createdAt: string
42 |
43 | countsUseCase: CountsUseCase
44 | getConfigs: ConfigsUseCase
45 |
46 | constructor() {
47 | this.bot = new Bot()
48 | this.mounteMessageHelper = new MountMessageHelper()
49 | this.alert = this.mounteMessageHelper.Alert()
50 | this.info = this.mounteMessageHelper.Info()
51 | this.cover = this.mounteMessageHelper.Cover()
52 | this.entryBlack = this.mounteMessageHelper.Entryblack()
53 | this.entryRed = this.mounteMessageHelper.EntryRed()
54 | this.green = this.mounteMessageHelper.Green()
55 | this.greenWithWhite = this.mounteMessageHelper.GreenWithWhite()
56 | this.red = this.mounteMessageHelper.Red()
57 | this.date = Intl.DateTimeFormat("pt-br").format(new Date())
58 | this.createdAt = this.date
59 |
60 | this.countsUseCase = new CountsUseCase()
61 | this.getConfigs = new ConfigsUseCase()
62 | }
63 |
64 | async verifySequenceFour({ colorName, number }: ISequenceFour) {
65 | const configs = await this.getConfigs.findByName(process.env.BOT_NAME)
66 | if(!configs) {
67 | console.log("⛔ O nome do BOT no arquivo .env não é o mesmo nome que você cadastrou!")
68 | return
69 | }
70 | data.standard = configs.standard
71 |
72 | //import mensagens
73 | const ColorOfEntry = colorName === "red" ? await this.entryBlack : await this.entryRed
74 |
75 | if (data.lastColor === colorName || data.lastColor === "") {
76 | data.colors = []
77 | data.colors.push({ colorName, number })
78 | data.lastColor = colorName
79 | data.countColorEqual += 1
80 | data.isEqual = true
81 |
82 | if (colorName === "white") {
83 | data.countColorEqual = 0
84 | console.log(data.colors)
85 | console.log("--------------------------------------------------")
86 | }
87 |
88 | //possivel entrada
89 | if (data.isEqual === true && data.countColorEqual === data.standard - 1 && colorName !== "white") {
90 | const message = `Analisando Possível Entrada: ${ColorOfEntry}`
91 |
92 | const messageID = await this.bot.sendMessage({ message })
93 | data.messageID = messageID
94 | console.log(`BOT1: Analisando Possível Entrada: ${ColorOfEntry}`)
95 | console.log(data.colors)
96 | console.log("--------------------------------------------------")
97 |
98 | return data
99 | }
100 |
101 | //enviar tip
102 | if (data.isEqual === true && data.countColorEqual === data.standard && colorName !== "white") {
103 | if (data.messageID !== null) await this.bot.deleteMessageWithID(data.messageID)
104 | data.messageID = null
105 | const message = `✅Entrar: ${ColorOfEntry} ${await this.cover}\n${await this.info}`
106 | const message2 = `🎰BLAZE DOUBLE\n⚠️Última cor ${data.lastColor === "red" ? "🟥" : "⬛"}\n\n🎲 ENTRAR NO ${colorName === "black" ? "🟥" : "⬛"}⬜\n2️⃣ Máximo 02 Martingale`
107 | data.counterTipSent += 1
108 |
109 | const messageID = await this.bot.sendMessage({ message: message2 })
110 | data.idMessageSent = messageID
111 | console.log(`BOT1: TIP ENVIADA: ${ColorOfEntry} ${await this.cover}`)
112 | console.log(data.colors)
113 | console.log("--------------------------------------------------")
114 |
115 | return data
116 | }
117 |
118 | //conferencia red e martingale
119 | if (data.isEqual === true && data.lastColor === colorName && colorName !== "white" && data.countColorEqual > data.standard) {
120 | data.gale += 1
121 |
122 | //martingales
123 | if (data.gale === 1) {
124 | const message = `Vamos Primeira Gale`
125 | const messageID = await this.bot.replyMessage({ message: `Vamos Primeira Gale`, messageID: data.idMessageSent })
126 | data.messageID = messageID
127 | console.log(`BOT1: GALE: Vamos a Primeira Gale`)
128 | console.log(data.colors)
129 | console.log("--------------------------------------------------")
130 | return data
131 | }
132 |
133 | if (data.gale === 2) {
134 | if (data.messageID !== null) await this.bot.deleteMessageWithID(data.messageID)
135 | const message = `Vamos Primeira Gale`
136 | const messageID = await this.bot.replyMessage({ message: `Vamos Segunda Gale`, messageID: data.idMessageSent })
137 | data.messageID = messageID
138 | console.log(`BOT1: GALE: Vamos Segunda Gale`)
139 | console.log(data.colors)
140 | console.log("--------------------------------------------------")
141 | return data
142 | }
143 |
144 | //inicio conferencia red
145 | if (data.messageID !== null) await this.bot.deleteMessageWithID(data.messageID)
146 | data.gale = 0
147 | data.colors = []
148 | data.colors.push({ colorName, number })
149 | data.countColorEqual = 0
150 | data.countColorEqual += 1
151 | data.countRed += 1
152 | data.lastColor = colorName
153 |
154 | await this.countsUseCase.createCounts({
155 | countWhite: 0,
156 | countGreen: 0,
157 | countRed: 1,
158 | countGale1: data.gale === 1 ? 1 : 0,
159 | countGale2: data.gale === 2 ? 1 : 0,
160 | createdAt: this.createdAt
161 | })
162 |
163 | await this.bot.replyMessage({ message: `${await this.red}`, messageID: data.idMessageSent })
164 | console.log(`BOT1: RED: ${await this.red}`)
165 | console.log(data.colors)
166 | console.log("--------------------------------------------------")
167 | return data
168 | }
169 | console.log(data.colors)
170 | console.log("--------------------------------------------------")
171 | return data
172 | }
173 |
174 | if (data.lastColor !== colorName) {
175 | //possivel entrada e sequencia quebrada
176 | const possibleEntryCancel = data.isEqual === true && data.countColorEqual === data.standard - 1
177 | if (possibleEntryCancel) {
178 | if (data.messageID !== null) await this.bot.deleteMessageWithID(data.messageID)
179 | data.messageID = null
180 | console.log("BOT1: ---> Sequência Quebrada, Mensagem apagada.")
181 | console.log(data.colors)
182 | console.log("--------------------------------------------------")
183 | data.colors = []
184 | }
185 |
186 | //green na cor white
187 | const redWithWhite = colorName === "white" && data.countColorEqual >= data.standard
188 | if (redWithWhite) {
189 | if (data.messageID !== null) await this.bot.deleteMessageWithID(data.messageID)
190 | data.messageID = null
191 | const thisGale = data.gale === 1 ? "Primeira Gale" : "Segunda Gale"
192 | data.colors = []
193 | data.colors.push({ colorName, number })
194 | data.lastColor = colorName
195 | data.countColorEqual = 0
196 | data.countColorEqual += 1
197 | data.countWhite += 1
198 | data.isEqual = false
199 | data.countGale1 += data.gale === 1 ? 1 : 0
200 | data.countGale2 += data.gale === 2 ? 1 : 0
201 |
202 | await this.countsUseCase.createCounts({
203 | countWhite: 1,
204 | countGreen: 0,
205 | countRed: 0,
206 | countGale1: 0,
207 | countGale2: 0,
208 | createdAt: this.createdAt
209 | })
210 |
211 | await this.bot.replyMessage({ message: `${await this.greenWithWhite}${data.gale ? `\n${thisGale}` : ""}`, messageID: data.idMessageSent })
212 | console.log(`BOT1: GREEN WHITE: ${await this.greenWithWhite} ${data.gale ? `\n\n${thisGale}` : ""}`)
213 | console.log(data.colors)
214 | console.log("--------------------------------------------------")
215 | data.gale = 0
216 |
217 | return data
218 | }
219 |
220 | data.countColorEqual += 1
221 | data.isEqual = false
222 |
223 | //conferencia green
224 | if (data.isEqual === false && data.countColorEqual >= data.standard + 1 && data.lastColor !== "white") {
225 | if (data.messageID !== null) await this.bot.deleteMessageWithID(data.messageID)
226 | data.messageID = null
227 |
228 | const thisGale = data.gale === 1 ? "Primeira Gale" : "Segunda Gale"
229 |
230 | data.isEqual = false
231 | data.colors = []
232 | data.colors.push({ colorName, number })
233 | data.lastColor = colorName
234 | data.countGreen += data.gale === 1 || data.gale === 2 ? 0 : 1
235 | data.countColorEqual = 0
236 | data.countColorEqual += 1
237 | data.countGale1 += data.gale === 1 ? 1 : 0
238 | data.countGale2 += data.gale === 2 ? 1 : 0
239 |
240 | await this.countsUseCase.createCounts({
241 | countWhite: 0,
242 | countGreen: data.gale === 1 || data.gale === 2 ? 0 : 1,
243 | countRed: 0,
244 | countGale1: data.gale === 1 ? 1 : 0,
245 | countGale2: data.gale === 2 ? 1 : 0,
246 | createdAt: this.createdAt
247 | })
248 |
249 | await this.bot.replyMessage({ message: `${await this.green}${data.gale ? `\n${thisGale}` : ""}`, messageID: data.idMessageSent })
250 | console.log(`BOT1: GREEN: ${await this.green} ${data.gale ? `\n${thisGale}` : ""}`)
251 | console.log(data.colors)
252 | console.log("--------------------------------------------------")
253 | data.gale = 0
254 |
255 | return data
256 | }
257 |
258 | data.colors = []
259 | data.colors.push({ colorName, number })
260 | data.lastColor = colorName
261 |
262 | data.countColorEqual = 0
263 | data.countColorEqual += 1
264 |
265 | console.log(data.colors)
266 | console.log("--------------------------------------------------")
267 |
268 | return data
269 | }
270 |
271 | return data
272 | }
273 | // async verifySequenceFour({ colorName, number, standard }: ISequenceFour) {
274 | // //insira seu padrão aqui
275 | // const message = `Você precisa fazer o seu padrão!`
276 | // this.bot.sendMessage({ message })
277 | // console.log({ message })
278 |
279 | // return { message }
280 | // }
281 | }
282 |
283 | export { MetricDouble }
--------------------------------------------------------------------------------
/src/helpers/Messages/MountMessageHelpers.ts:
--------------------------------------------------------------------------------
1 | class MountMessageHelper {
2 | entryRed: string
3 | entryblack: string
4 | green: string
5 | red: string
6 | confirmedEntry: string
7 | info: string
8 | cover: string
9 | alert: string
10 | balance: string
11 | abortEntry: string
12 | greenWithWhite: string
13 |
14 | constructor() {
15 | this.confirmedEntry = "⚠️Entrada Confirmada⚠️"
16 | this.abortEntry = "⚠️ABORTAR ENTRADA⚠️ \n\n ❌❌❌❌❌❌❌❌❌"
17 | this.entryRed = "🔴"
18 | this.entryblack = "⚫"
19 | this.green = "WINNNN! ✅✅ 🤑💰"
20 | this.red = "REEED! ❌❌😯💨"
21 | this.info = "2️⃣ Máximo 02 Martingale"
22 | this.cover = "⚪"
23 | this.alert = "⚠️ATENÇÃO⚠️"
24 | this.balance = "📊 Balanço 📊"
25 | this.greenWithWhite = "WINNNN!!✅✅ 🤑💰\n\nNo Branco⚪"
26 | }
27 |
28 | async ConfirmedEntry() {
29 | return this.confirmedEntry
30 | }
31 |
32 | async AbortEntry() {
33 | return this.abortEntry
34 | }
35 |
36 | async EntryRed() {
37 | return this.entryRed
38 | }
39 |
40 | async Entryblack() {
41 | return this.entryblack
42 | }
43 |
44 | async Green() {
45 | return this.green
46 | }
47 |
48 | async GreenWithWhite() {
49 | return this.greenWithWhite
50 | }
51 |
52 | async Red() {
53 | return this.red
54 | }
55 |
56 | async Info() {
57 | return this.info
58 | }
59 |
60 | async Cover() {
61 | return this.cover
62 | }
63 |
64 | async Alert() {
65 | return this.alert
66 | }
67 |
68 | async Balance() {
69 | return this.balance
70 | }
71 | }
72 |
73 | export { MountMessageHelper }
--------------------------------------------------------------------------------
/src/prisma/client.ts:
--------------------------------------------------------------------------------
1 | import { PrismaClient } from "@prisma/client"
2 |
3 | const client = new PrismaClient()
4 |
5 | export { client }
--------------------------------------------------------------------------------
/src/router.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express"
2 | import { ConfigsController } from "./useCases/configs/ConfigsController"
3 |
4 | const routes = Router()
5 |
6 | const configController = new ConfigsController()
7 |
8 | routes.post("/colors", configController.handle)
9 |
10 | export { routes }
--------------------------------------------------------------------------------
/src/server.ts:
--------------------------------------------------------------------------------
1 | import { app } from "./app";
2 |
3 | app.listen(process.env.PORT || 3000, () => console.log("✅ Server is running!"))
--------------------------------------------------------------------------------
/src/useCases/configs/ConfigsController.ts:
--------------------------------------------------------------------------------
1 | import { Request, Response } from "express"
2 | import { MetricDouble } from "../../helpers/BotMetrics/MetricDouble"
3 | import { ConfigsUseCase } from "./ConfigsUseCase"
4 |
5 | interface IConfigsRequest {
6 | id?: string
7 | name: string
8 | standard: number
9 | password: string
10 | activo: boolean
11 | }
12 |
13 | class ConfigsController {
14 | async handle(request: Request, response: Response) {
15 | const { colorName, number } = request.body
16 | const configsUseCase = new ConfigsUseCase()
17 | const configs = await configsUseCase.show()
18 |
19 | if (!configs) {
20 | console.log("⚙️ Precisa configurar seu bot!")
21 | return response.status(501).json({ message: "Need to configure the bot!"})
22 | }
23 |
24 | if (configs.activo) {
25 | const metricDouble = new MetricDouble()
26 | const data = await metricDouble.verifySequenceFour({ colorName, number, standard: configs.standard })
27 |
28 | return response.json(data)
29 | }
30 |
31 | console.log("⛔Bot desativado")
32 |
33 | return response.status(501).json({ message: "Bot is desactived!"})
34 | }
35 |
36 | async create({ name, standard, activo, password }: IConfigsRequest) {
37 | const configsUseCase = new ConfigsUseCase()
38 |
39 | const alreadyExistsConfigs = await configsUseCase.show()
40 |
41 | if (!alreadyExistsConfigs) {
42 | const newConfigs = await configsUseCase.create({
43 | name, standard, activo, password
44 | })
45 |
46 | return newConfigs
47 | }
48 |
49 |
50 | const updateConfig = await configsUseCase.update({
51 | id: alreadyExistsConfigs.id,
52 | standard,
53 | activo
54 | })
55 |
56 | return updateConfig
57 | }
58 | }
59 |
60 | export { ConfigsController }
--------------------------------------------------------------------------------
/src/useCases/configs/ConfigsUseCase.ts:
--------------------------------------------------------------------------------
1 | import { client } from "../../prisma/client"
2 |
3 | interface IConfigsRequest {
4 | id?: string
5 | name?: string
6 | standard?: number
7 | password?: string
8 | activo?: boolean
9 | }
10 |
11 | class ConfigsUseCase {
12 | async create({ name, standard, password, activo }: IConfigsRequest) {
13 | const configs = await client.config.create({
14 | data: {
15 | name,
16 | standard,
17 | password,
18 | activo
19 | }
20 | })
21 |
22 | return configs
23 | }
24 |
25 | async show() {
26 | const configs = await client.config.findFirst()
27 |
28 | return configs
29 | }
30 |
31 | async findByName(name: string) {
32 | const config = await client.config.findFirst({
33 | where: { name }
34 | })
35 |
36 | return config
37 | }
38 |
39 | async update({ standard, activo, id }: IConfigsRequest) {
40 | const configs = await client.config.update({
41 | where: { id },
42 | data: {
43 | standard,
44 | activo
45 | }
46 | })
47 |
48 | return configs
49 | }
50 | }
51 |
52 | export { ConfigsUseCase }
--------------------------------------------------------------------------------
/src/useCases/counts/CountsUseCase.ts:
--------------------------------------------------------------------------------
1 | import { client } from "../../prisma/client"
2 |
3 | interface ICounts {
4 | id?: string
5 | countGreen?: number
6 | countWhite?: number
7 | countRed?: number
8 | countGale1?: number
9 | countGale2?: number
10 | createdAt: string
11 | }
12 |
13 | class CountsUseCase {
14 | async getCounts(consultationDate: string) {
15 | const d = new Date()
16 |
17 | const date = Intl.DateTimeFormat("pt-br").format(d)
18 |
19 | const counts = await client.count.findMany({
20 | where: {
21 | createdAt: consultationDate ? consultationDate : date
22 | }
23 | })
24 |
25 | return counts
26 | }
27 |
28 | async createCounts({ countGreen, countWhite, countRed, countGale1, countGale2, createdAt }: ICounts) {
29 | const counts = await client.count.create({
30 | data: {
31 | countGreen,
32 | countWhite,
33 | countRed,
34 | countGale1,
35 | countGale2,
36 | createdAt
37 | }
38 | })
39 |
40 | return counts
41 | }
42 |
43 | async updateCounts({ id, countGreen, countWhite, countRed, countGale1, countGale2 }: ICounts) {
44 | const updateCounts = await client.count.update({
45 | where: { id },
46 | data: {
47 | countGreen,
48 | countWhite,
49 | countRed,
50 | countGale1,
51 | countGale2
52 | }
53 | })
54 |
55 | return updateCounts
56 | }
57 | }
58 |
59 | export { CountsUseCase }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Enable incremental compilation */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 |
26 | /* Modules */
27 | "module": "commonjs", /* Specify what module code is generated. */
28 | // "rootDir": "./", /* Specify the root folder within your source files. */
29 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
34 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
36 | // "resolveJsonModule": true, /* Enable importing .json files */
37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */
38 |
39 | /* JavaScript Support */
40 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
41 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
43 |
44 | /* Emit */
45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
48 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
49 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
50 | "outDir": "dist", /* Specify an output folder for all emitted files. */
51 | // "removeComments": true, /* Disable emitting comments. */
52 | // "noEmit": true, /* Disable emitting files from a compilation. */
53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
61 | // "newLine": "crlf", /* Set the newline character for emitting files. */
62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
67 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
68 |
69 | /* Interop Constraints */
70 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
71 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
72 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
73 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
74 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
75 |
76 | /* Type Checking */
77 | "strict": false, /* Enable all strict type-checking options. */
78 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
79 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
80 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
81 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
82 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
83 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
84 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
85 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
86 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
87 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
88 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
89 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
90 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
91 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
92 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
93 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
94 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
95 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
96 |
97 | /* Completeness */
98 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
99 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@prisma/client@^3.11.1":
6 | version "3.11.1"
7 | resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.11.1.tgz#bde6dec71ae133d04ce1c6658e3d76627a3c6dc7"
8 | integrity sha512-B3C7zQG4HbjJzUr2Zg9UVkBJutbqq9/uqkl1S138+keZCubJrwizx3RuIvGwI+s+pm3qbsyNqXiZgL3Ir0fSng==
9 | dependencies:
10 | "@prisma/engines-version" "3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9"
11 |
12 | "@prisma/engines-version@3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9":
13 | version "3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9"
14 | resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9.tgz#81a1835b495ad287ad7824dbd62f74e9eee90fb9"
15 | integrity sha512-HkcsDniA4iNb/gi0iuyOJNAM7nD/LwQ0uJm15v360O5dee3TM4lWdSQiTYBMK6FF68ACUItmzSur7oYuUZ2zkQ==
16 |
17 | "@prisma/engines@3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9":
18 | version "3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9"
19 | resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9.tgz#09ac23f8f615a8586d8d44538060ada199fe872c"
20 | integrity sha512-MILbsGnvmnhCbFGa2/iSnsyGyazU3afzD7ldjCIeLIGKkNBMSZgA2IvpYsAXl+6qFHKGrS3B2otKfV31dwMSQw==
21 |
22 | "@types/axios@^0.14.0":
23 | version "0.14.0"
24 | resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46"
25 | integrity sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ==
26 | dependencies:
27 | axios "*"
28 |
29 | "@types/body-parser@*":
30 | version "1.19.2"
31 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
32 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
33 | dependencies:
34 | "@types/connect" "*"
35 | "@types/node" "*"
36 |
37 | "@types/connect@*":
38 | version "3.4.35"
39 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
40 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
41 | dependencies:
42 | "@types/node" "*"
43 |
44 | "@types/cors@^2.8.12":
45 | version "2.8.12"
46 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
47 | integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
48 |
49 | "@types/express-serve-static-core@^4.17.18":
50 | version "4.17.28"
51 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8"
52 | integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==
53 | dependencies:
54 | "@types/node" "*"
55 | "@types/qs" "*"
56 | "@types/range-parser" "*"
57 |
58 | "@types/express@^4.17.13":
59 | version "4.17.13"
60 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
61 | integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
62 | dependencies:
63 | "@types/body-parser" "*"
64 | "@types/express-serve-static-core" "^4.17.18"
65 | "@types/qs" "*"
66 | "@types/serve-static" "*"
67 |
68 | "@types/mime@^1":
69 | version "1.3.2"
70 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
71 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
72 |
73 | "@types/node@*":
74 | version "17.0.23"
75 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
76 | integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
77 |
78 | "@types/qs@*":
79 | version "6.9.7"
80 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
81 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
82 |
83 | "@types/range-parser@*":
84 | version "1.2.4"
85 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
86 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
87 |
88 | "@types/serve-static@*":
89 | version "1.13.10"
90 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9"
91 | integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==
92 | dependencies:
93 | "@types/mime" "^1"
94 | "@types/node" "*"
95 |
96 | "@types/strip-bom@^3.0.0":
97 | version "3.0.0"
98 | resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2"
99 | integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=
100 |
101 | "@types/strip-json-comments@0.0.30":
102 | version "0.0.30"
103 | resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1"
104 | integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==
105 |
106 | abort-controller@^3.0.0:
107 | version "3.0.0"
108 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
109 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
110 | dependencies:
111 | event-target-shim "^5.0.0"
112 |
113 | accepts@~1.3.8:
114 | version "1.3.8"
115 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
116 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
117 | dependencies:
118 | mime-types "~2.1.34"
119 | negotiator "0.6.3"
120 |
121 | anymatch@~3.1.2:
122 | version "3.1.2"
123 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
124 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
125 | dependencies:
126 | normalize-path "^3.0.0"
127 | picomatch "^2.0.4"
128 |
129 | arg@^4.1.0:
130 | version "4.1.3"
131 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
132 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
133 |
134 | array-flatten@1.1.1:
135 | version "1.1.1"
136 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
137 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
138 |
139 | asynckit@^0.4.0:
140 | version "0.4.0"
141 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
142 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
143 |
144 | axios@*, axios@^0.27.2:
145 | version "0.27.2"
146 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
147 | integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
148 | dependencies:
149 | follow-redirects "^1.14.9"
150 | form-data "^4.0.0"
151 |
152 | balanced-match@^1.0.0:
153 | version "1.0.2"
154 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
155 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
156 |
157 | bignumber.js@9.0.0:
158 | version "9.0.0"
159 | resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075"
160 | integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==
161 |
162 | binary-extensions@^2.0.0:
163 | version "2.2.0"
164 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
165 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
166 |
167 | body-parser@1.19.2:
168 | version "1.19.2"
169 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e"
170 | integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==
171 | dependencies:
172 | bytes "3.1.2"
173 | content-type "~1.0.4"
174 | debug "2.6.9"
175 | depd "~1.1.2"
176 | http-errors "1.8.1"
177 | iconv-lite "0.4.24"
178 | on-finished "~2.3.0"
179 | qs "6.9.7"
180 | raw-body "2.4.3"
181 | type-is "~1.6.18"
182 |
183 | brace-expansion@^1.1.7:
184 | version "1.1.11"
185 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
186 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
187 | dependencies:
188 | balanced-match "^1.0.0"
189 | concat-map "0.0.1"
190 |
191 | braces@~3.0.2:
192 | version "3.0.2"
193 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
194 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
195 | dependencies:
196 | fill-range "^7.0.1"
197 |
198 | buffer-alloc-unsafe@^1.1.0:
199 | version "1.1.0"
200 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
201 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
202 |
203 | buffer-alloc@^1.2.0:
204 | version "1.2.0"
205 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
206 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
207 | dependencies:
208 | buffer-alloc-unsafe "^1.1.0"
209 | buffer-fill "^1.0.0"
210 |
211 | buffer-fill@^1.0.0:
212 | version "1.0.0"
213 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
214 | integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
215 |
216 | buffer-from@^1.0.0:
217 | version "1.1.2"
218 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
219 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
220 |
221 | bytes@3.1.2:
222 | version "3.1.2"
223 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
224 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
225 |
226 | chokidar@^3.5.1:
227 | version "3.5.3"
228 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
229 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
230 | dependencies:
231 | anymatch "~3.1.2"
232 | braces "~3.0.2"
233 | glob-parent "~5.1.2"
234 | is-binary-path "~2.1.0"
235 | is-glob "~4.0.1"
236 | normalize-path "~3.0.0"
237 | readdirp "~3.6.0"
238 | optionalDependencies:
239 | fsevents "~2.3.2"
240 |
241 | combined-stream@^1.0.8:
242 | version "1.0.8"
243 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
244 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
245 | dependencies:
246 | delayed-stream "~1.0.0"
247 |
248 | concat-map@0.0.1:
249 | version "0.0.1"
250 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
251 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
252 |
253 | content-disposition@0.5.4:
254 | version "0.5.4"
255 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
256 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
257 | dependencies:
258 | safe-buffer "5.2.1"
259 |
260 | content-type@~1.0.4:
261 | version "1.0.4"
262 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
263 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
264 |
265 | cookie-signature@1.0.6:
266 | version "1.0.6"
267 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
268 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
269 |
270 | cookie@0.4.2:
271 | version "0.4.2"
272 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
273 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
274 |
275 | core-util-is@~1.0.0:
276 | version "1.0.3"
277 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
278 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
279 |
280 | cors@^2.8.5:
281 | version "2.8.5"
282 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
283 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
284 | dependencies:
285 | object-assign "^4"
286 | vary "^1"
287 |
288 | create-require@^1.1.0:
289 | version "1.1.1"
290 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
291 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
292 |
293 | debug@2.6.9:
294 | version "2.6.9"
295 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
296 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
297 | dependencies:
298 | ms "2.0.0"
299 |
300 | debug@^4.3.3:
301 | version "4.3.4"
302 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
303 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
304 | dependencies:
305 | ms "2.1.2"
306 |
307 | delayed-stream@~1.0.0:
308 | version "1.0.0"
309 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
310 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
311 |
312 | depd@~1.1.2:
313 | version "1.1.2"
314 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
315 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
316 |
317 | destroy@~1.0.4:
318 | version "1.0.4"
319 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
320 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
321 |
322 | diff@^4.0.1:
323 | version "4.0.2"
324 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
325 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
326 |
327 | dotenv@^16.0.0:
328 | version "16.0.0"
329 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411"
330 | integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==
331 |
332 | dynamic-dedupe@^0.3.0:
333 | version "0.3.0"
334 | resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1"
335 | integrity sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=
336 | dependencies:
337 | xtend "^4.0.0"
338 |
339 | ee-first@1.1.1:
340 | version "1.1.1"
341 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
342 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
343 |
344 | encodeurl@~1.0.2:
345 | version "1.0.2"
346 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
347 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
348 |
349 | escape-html@~1.0.3:
350 | version "1.0.3"
351 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
352 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
353 |
354 | etag@~1.8.1:
355 | version "1.8.1"
356 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
357 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
358 |
359 | event-target-shim@^5.0.0:
360 | version "5.0.1"
361 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
362 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
363 |
364 | express@^4.17.3:
365 | version "4.17.3"
366 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
367 | integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==
368 | dependencies:
369 | accepts "~1.3.8"
370 | array-flatten "1.1.1"
371 | body-parser "1.19.2"
372 | content-disposition "0.5.4"
373 | content-type "~1.0.4"
374 | cookie "0.4.2"
375 | cookie-signature "1.0.6"
376 | debug "2.6.9"
377 | depd "~1.1.2"
378 | encodeurl "~1.0.2"
379 | escape-html "~1.0.3"
380 | etag "~1.8.1"
381 | finalhandler "~1.1.2"
382 | fresh "0.5.2"
383 | merge-descriptors "1.0.1"
384 | methods "~1.1.2"
385 | on-finished "~2.3.0"
386 | parseurl "~1.3.3"
387 | path-to-regexp "0.1.7"
388 | proxy-addr "~2.0.7"
389 | qs "6.9.7"
390 | range-parser "~1.2.1"
391 | safe-buffer "5.2.1"
392 | send "0.17.2"
393 | serve-static "1.14.2"
394 | setprototypeof "1.2.0"
395 | statuses "~1.5.0"
396 | type-is "~1.6.18"
397 | utils-merge "1.0.1"
398 | vary "~1.1.2"
399 |
400 | fill-range@^7.0.1:
401 | version "7.0.1"
402 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
403 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
404 | dependencies:
405 | to-regex-range "^5.0.1"
406 |
407 | finalhandler@~1.1.2:
408 | version "1.1.2"
409 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
410 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
411 | dependencies:
412 | debug "2.6.9"
413 | encodeurl "~1.0.2"
414 | escape-html "~1.0.3"
415 | on-finished "~2.3.0"
416 | parseurl "~1.3.3"
417 | statuses "~1.5.0"
418 | unpipe "~1.0.0"
419 |
420 | follow-redirects@^1.14.9:
421 | version "1.15.1"
422 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
423 | integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
424 |
425 | form-data@^4.0.0:
426 | version "4.0.0"
427 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
428 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
429 | dependencies:
430 | asynckit "^0.4.0"
431 | combined-stream "^1.0.8"
432 | mime-types "^2.1.12"
433 |
434 | forwarded@0.2.0:
435 | version "0.2.0"
436 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
437 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
438 |
439 | fresh@0.5.2:
440 | version "0.5.2"
441 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
442 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
443 |
444 | fs.realpath@^1.0.0:
445 | version "1.0.0"
446 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
447 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
448 |
449 | fsevents@~2.3.2:
450 | version "2.3.2"
451 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
452 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
453 |
454 | function-bind@^1.1.1:
455 | version "1.1.1"
456 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
457 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
458 |
459 | glob-parent@~5.1.2:
460 | version "5.1.2"
461 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
462 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
463 | dependencies:
464 | is-glob "^4.0.1"
465 |
466 | glob@^7.1.3:
467 | version "7.2.0"
468 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
469 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
470 | dependencies:
471 | fs.realpath "^1.0.0"
472 | inflight "^1.0.4"
473 | inherits "2"
474 | minimatch "^3.0.4"
475 | once "^1.3.0"
476 | path-is-absolute "^1.0.0"
477 |
478 | has@^1.0.3:
479 | version "1.0.3"
480 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
481 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
482 | dependencies:
483 | function-bind "^1.1.1"
484 |
485 | http-errors@1.8.1:
486 | version "1.8.1"
487 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
488 | integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
489 | dependencies:
490 | depd "~1.1.2"
491 | inherits "2.0.4"
492 | setprototypeof "1.2.0"
493 | statuses ">= 1.5.0 < 2"
494 | toidentifier "1.0.1"
495 |
496 | iconv-lite@0.4.24:
497 | version "0.4.24"
498 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
499 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
500 | dependencies:
501 | safer-buffer ">= 2.1.2 < 3"
502 |
503 | inflight@^1.0.4:
504 | version "1.0.6"
505 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
506 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
507 | dependencies:
508 | once "^1.3.0"
509 | wrappy "1"
510 |
511 | inherits@2, inherits@2.0.4, inherits@~2.0.3:
512 | version "2.0.4"
513 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
514 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
515 |
516 | ipaddr.js@1.9.1:
517 | version "1.9.1"
518 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
519 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
520 |
521 | is-binary-path@~2.1.0:
522 | version "2.1.0"
523 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
524 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
525 | dependencies:
526 | binary-extensions "^2.0.0"
527 |
528 | is-core-module@^2.8.1:
529 | version "2.8.1"
530 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
531 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
532 | dependencies:
533 | has "^1.0.3"
534 |
535 | is-extglob@^2.1.1:
536 | version "2.1.1"
537 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
538 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
539 |
540 | is-glob@^4.0.1, is-glob@~4.0.1:
541 | version "4.0.3"
542 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
543 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
544 | dependencies:
545 | is-extglob "^2.1.1"
546 |
547 | is-number@^7.0.0:
548 | version "7.0.0"
549 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
550 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
551 |
552 | isarray@~1.0.0:
553 | version "1.0.0"
554 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
555 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
556 |
557 | make-error@^1.1.1:
558 | version "1.3.6"
559 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
560 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
561 |
562 | media-typer@0.3.0:
563 | version "0.3.0"
564 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
565 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
566 |
567 | merge-descriptors@1.0.1:
568 | version "1.0.1"
569 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
570 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
571 |
572 | methods@~1.1.2:
573 | version "1.1.2"
574 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
575 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
576 |
577 | mime-db@1.52.0:
578 | version "1.52.0"
579 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
580 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
581 |
582 | mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34:
583 | version "2.1.35"
584 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
585 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
586 | dependencies:
587 | mime-db "1.52.0"
588 |
589 | mime@1.6.0:
590 | version "1.6.0"
591 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
592 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
593 |
594 | minimatch@^3.0.4:
595 | version "3.1.2"
596 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
597 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
598 | dependencies:
599 | brace-expansion "^1.1.7"
600 |
601 | minimist@^1.2.5:
602 | version "1.2.6"
603 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
604 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
605 |
606 | mkdirp@^1.0.4:
607 | version "1.0.4"
608 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
609 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
610 |
611 | module-alias@^2.2.2:
612 | version "2.2.2"
613 | resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0"
614 | integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==
615 |
616 | ms@2.0.0:
617 | version "2.0.0"
618 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
619 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
620 |
621 | ms@2.1.2:
622 | version "2.1.2"
623 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
624 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
625 |
626 | ms@2.1.3:
627 | version "2.1.3"
628 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
629 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
630 |
631 | mysql@^2.18.1:
632 | version "2.18.1"
633 | resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717"
634 | integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==
635 | dependencies:
636 | bignumber.js "9.0.0"
637 | readable-stream "2.3.7"
638 | safe-buffer "5.1.2"
639 | sqlstring "2.3.1"
640 |
641 | negotiator@0.6.3:
642 | version "0.6.3"
643 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
644 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
645 |
646 | node-fetch@^2.6.7:
647 | version "2.6.7"
648 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
649 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
650 | dependencies:
651 | whatwg-url "^5.0.0"
652 |
653 | normalize-path@^3.0.0, normalize-path@~3.0.0:
654 | version "3.0.0"
655 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
656 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
657 |
658 | object-assign@^4:
659 | version "4.1.1"
660 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
661 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
662 |
663 | on-finished@~2.3.0:
664 | version "2.3.0"
665 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
666 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
667 | dependencies:
668 | ee-first "1.1.1"
669 |
670 | once@^1.3.0:
671 | version "1.4.0"
672 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
673 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
674 | dependencies:
675 | wrappy "1"
676 |
677 | p-timeout@^4.1.0:
678 | version "4.1.0"
679 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-4.1.0.tgz#788253c0452ab0ffecf18a62dff94ff1bd09ca0a"
680 | integrity sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==
681 |
682 | parseurl@~1.3.3:
683 | version "1.3.3"
684 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
685 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
686 |
687 | path-is-absolute@^1.0.0:
688 | version "1.0.1"
689 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
690 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
691 |
692 | path-parse@^1.0.7:
693 | version "1.0.7"
694 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
695 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
696 |
697 | path-to-regexp@0.1.7:
698 | version "0.1.7"
699 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
700 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
701 |
702 | picomatch@^2.0.4, picomatch@^2.2.1:
703 | version "2.3.1"
704 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
705 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
706 |
707 | prisma@^3.11.1:
708 | version "3.11.1"
709 | resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.11.1.tgz#fff9c0bcf83cb30c2e1d650882d5eb3c5565e028"
710 | integrity sha512-aYn8bQwt1xwR2oSsVNHT4PXU7EhsThIwmpNB/MNUaaMx5OPLTro6VdNJe/sJssXFLxhamfWeMjwmpXjljo6xkg==
711 | dependencies:
712 | "@prisma/engines" "3.11.1-1.1a2506facaf1a4727b7c26850735e88ec779dee9"
713 |
714 | process-nextick-args@~2.0.0:
715 | version "2.0.1"
716 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
717 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
718 |
719 | proxy-addr@~2.0.7:
720 | version "2.0.7"
721 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
722 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
723 | dependencies:
724 | forwarded "0.2.0"
725 | ipaddr.js "1.9.1"
726 |
727 | qs@6.9.7:
728 | version "6.9.7"
729 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe"
730 | integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==
731 |
732 | range-parser@~1.2.1:
733 | version "1.2.1"
734 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
735 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
736 |
737 | raw-body@2.4.3:
738 | version "2.4.3"
739 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c"
740 | integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==
741 | dependencies:
742 | bytes "3.1.2"
743 | http-errors "1.8.1"
744 | iconv-lite "0.4.24"
745 | unpipe "1.0.0"
746 |
747 | readable-stream@2.3.7:
748 | version "2.3.7"
749 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
750 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
751 | dependencies:
752 | core-util-is "~1.0.0"
753 | inherits "~2.0.3"
754 | isarray "~1.0.0"
755 | process-nextick-args "~2.0.0"
756 | safe-buffer "~5.1.1"
757 | string_decoder "~1.1.1"
758 | util-deprecate "~1.0.1"
759 |
760 | readdirp@~3.6.0:
761 | version "3.6.0"
762 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
763 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
764 | dependencies:
765 | picomatch "^2.2.1"
766 |
767 | resolve@^1.0.0:
768 | version "1.22.0"
769 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
770 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
771 | dependencies:
772 | is-core-module "^2.8.1"
773 | path-parse "^1.0.7"
774 | supports-preserve-symlinks-flag "^1.0.0"
775 |
776 | rimraf@^2.6.1:
777 | version "2.7.1"
778 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
779 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
780 | dependencies:
781 | glob "^7.1.3"
782 |
783 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
784 | version "5.1.2"
785 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
786 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
787 |
788 | safe-buffer@5.2.1:
789 | version "5.2.1"
790 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
791 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
792 |
793 | safe-compare@^1.1.4:
794 | version "1.1.4"
795 | resolved "https://registry.yarnpkg.com/safe-compare/-/safe-compare-1.1.4.tgz#5e0128538a82820e2e9250cd78e45da6786ba593"
796 | integrity sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==
797 | dependencies:
798 | buffer-alloc "^1.2.0"
799 |
800 | "safer-buffer@>= 2.1.2 < 3":
801 | version "2.1.2"
802 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
803 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
804 |
805 | sandwich-stream@^2.0.2:
806 | version "2.0.2"
807 | resolved "https://registry.yarnpkg.com/sandwich-stream/-/sandwich-stream-2.0.2.tgz#6d1feb6cf7e9fe9fadb41513459a72c2e84000fa"
808 | integrity sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ==
809 |
810 | send@0.17.2:
811 | version "0.17.2"
812 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820"
813 | integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==
814 | dependencies:
815 | debug "2.6.9"
816 | depd "~1.1.2"
817 | destroy "~1.0.4"
818 | encodeurl "~1.0.2"
819 | escape-html "~1.0.3"
820 | etag "~1.8.1"
821 | fresh "0.5.2"
822 | http-errors "1.8.1"
823 | mime "1.6.0"
824 | ms "2.1.3"
825 | on-finished "~2.3.0"
826 | range-parser "~1.2.1"
827 | statuses "~1.5.0"
828 |
829 | serve-static@1.14.2:
830 | version "1.14.2"
831 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa"
832 | integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==
833 | dependencies:
834 | encodeurl "~1.0.2"
835 | escape-html "~1.0.3"
836 | parseurl "~1.3.3"
837 | send "0.17.2"
838 |
839 | setprototypeof@1.2.0:
840 | version "1.2.0"
841 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
842 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
843 |
844 | source-map-support@^0.5.12, source-map-support@^0.5.17:
845 | version "0.5.21"
846 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
847 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
848 | dependencies:
849 | buffer-from "^1.0.0"
850 | source-map "^0.6.0"
851 |
852 | source-map@^0.6.0:
853 | version "0.6.1"
854 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
855 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
856 |
857 | sqlstring@2.3.1:
858 | version "2.3.1"
859 | resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40"
860 | integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=
861 |
862 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
863 | version "1.5.0"
864 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
865 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
866 |
867 | string_decoder@~1.1.1:
868 | version "1.1.1"
869 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
870 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
871 | dependencies:
872 | safe-buffer "~5.1.0"
873 |
874 | strip-bom@^3.0.0:
875 | version "3.0.0"
876 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
877 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
878 |
879 | strip-json-comments@^2.0.0:
880 | version "2.0.1"
881 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
882 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
883 |
884 | supports-preserve-symlinks-flag@^1.0.0:
885 | version "1.0.0"
886 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
887 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
888 |
889 | telegraf@^4.7.0:
890 | version "4.7.0"
891 | resolved "https://registry.yarnpkg.com/telegraf/-/telegraf-4.7.0.tgz#6ee8a8f98900a67472f1ca935c0aba3e8fa49f05"
892 | integrity sha512-rspH4kiVHE1zpnyQvlGFj+Tzu7zN02gSOcdLUayvnkaTwww2E6xBkwne+DKkDPdaRhvQ61J+dcVhLQv9fL+FsQ==
893 | dependencies:
894 | abort-controller "^3.0.0"
895 | debug "^4.3.3"
896 | minimist "^1.2.5"
897 | module-alias "^2.2.2"
898 | node-fetch "^2.6.7"
899 | p-timeout "^4.1.0"
900 | safe-compare "^1.1.4"
901 | sandwich-stream "^2.0.2"
902 | typegram "^3.8.0"
903 |
904 | to-regex-range@^5.0.1:
905 | version "5.0.1"
906 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
907 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
908 | dependencies:
909 | is-number "^7.0.0"
910 |
911 | toidentifier@1.0.1:
912 | version "1.0.1"
913 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
914 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
915 |
916 | tr46@~0.0.3:
917 | version "0.0.3"
918 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
919 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
920 |
921 | tree-kill@^1.2.2:
922 | version "1.2.2"
923 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
924 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
925 |
926 | ts-node-dev@^1.1.8:
927 | version "1.1.8"
928 | resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-1.1.8.tgz#95520d8ab9d45fffa854d6668e2f8f9286241066"
929 | integrity sha512-Q/m3vEwzYwLZKmV6/0VlFxcZzVV/xcgOt+Tx/VjaaRHyiBcFlV0541yrT09QjzzCxlDZ34OzKjrFAynlmtflEg==
930 | dependencies:
931 | chokidar "^3.5.1"
932 | dynamic-dedupe "^0.3.0"
933 | minimist "^1.2.5"
934 | mkdirp "^1.0.4"
935 | resolve "^1.0.0"
936 | rimraf "^2.6.1"
937 | source-map-support "^0.5.12"
938 | tree-kill "^1.2.2"
939 | ts-node "^9.0.0"
940 | tsconfig "^7.0.0"
941 |
942 | ts-node@^9.0.0:
943 | version "9.1.1"
944 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
945 | integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
946 | dependencies:
947 | arg "^4.1.0"
948 | create-require "^1.1.0"
949 | diff "^4.0.1"
950 | make-error "^1.1.1"
951 | source-map-support "^0.5.17"
952 | yn "3.1.1"
953 |
954 | tsconfig@^7.0.0:
955 | version "7.0.0"
956 | resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7"
957 | integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==
958 | dependencies:
959 | "@types/strip-bom" "^3.0.0"
960 | "@types/strip-json-comments" "0.0.30"
961 | strip-bom "^3.0.0"
962 | strip-json-comments "^2.0.0"
963 |
964 | type-is@~1.6.18:
965 | version "1.6.18"
966 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
967 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
968 | dependencies:
969 | media-typer "0.3.0"
970 | mime-types "~2.1.24"
971 |
972 | typegram@^3.8.0:
973 | version "3.8.0"
974 | resolved "https://registry.yarnpkg.com/typegram/-/typegram-3.8.0.tgz#6f09e1f3d27bb4659dcf6e294603550584c7b39c"
975 | integrity sha512-MdlbWu0HfmgFJf4+xj6eqGYuanV2LJxBYTzLrD0kTV+woQ5dxDD2k8UVVjYnbBGkAagAyxzQevPiFZRWLFHSBw==
976 |
977 | typescript@^4.6.3:
978 | version "4.6.3"
979 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c"
980 | integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==
981 |
982 | unpipe@1.0.0, unpipe@~1.0.0:
983 | version "1.0.0"
984 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
985 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
986 |
987 | util-deprecate@~1.0.1:
988 | version "1.0.2"
989 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
990 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
991 |
992 | utils-merge@1.0.1:
993 | version "1.0.1"
994 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
995 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
996 |
997 | vary@^1, vary@~1.1.2:
998 | version "1.1.2"
999 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
1000 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
1001 |
1002 | webidl-conversions@^3.0.0:
1003 | version "3.0.1"
1004 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
1005 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
1006 |
1007 | whatwg-url@^5.0.0:
1008 | version "5.0.0"
1009 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
1010 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
1011 | dependencies:
1012 | tr46 "~0.0.3"
1013 | webidl-conversions "^3.0.0"
1014 |
1015 | wrappy@1:
1016 | version "1.0.2"
1017 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1018 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1019 |
1020 | xtend@^4.0.0:
1021 | version "4.0.2"
1022 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
1023 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
1024 |
1025 | yn@3.1.1:
1026 | version "3.1.1"
1027 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
1028 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
1029 |
--------------------------------------------------------------------------------