├── .env ├── .gitignore ├── Makefile ├── README.md ├── docker-compose.yml ├── package.json ├── src ├── db.ts ├── middleware │ └── validate.ts ├── model.ts ├── note.controller.ts ├── note.schema.ts ├── routes.ts └── server.ts ├── tsconfig.json └── yarn.lock /.env: -------------------------------------------------------------------------------- 1 | POSTGRES_HOST=127.0.0.1 2 | POSTGRES_PORT=6500 3 | POSTGRES_USER=admin 4 | POSTGRES_PASSWORD=password123 5 | POSTGRES_DB=node_sequelize 6 | 7 | DATABASE_URL=postgresql://admin:password123@localhost:6500/node_sequelize?schema=public 8 | 9 | PORT=8000 10 | NODE_ENV=development 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | dev: 2 | docker-compose up -d 3 | dev-down: 4 | docker-compose down 5 | dev-down-v: 6 | docker-compose down -v 7 | 8 | start-server: 9 | yarn start -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Build a CRUD API with Node.js and Sequelize 2 | 3 | In this article, you'll learn how to build a complete CRUD API with Node.js and Sequelize. The REST API will run on an Express.js server and have endpoints for performing CRUD operations against a PostgreSQL database. 4 | 5 | ![Build a CRUD API with Node.js and Sequelize](https://codevoweb.com/wp-content/uploads/2023/01/Build-a-CRUD-API-with-Node.js-and-Sequelize.webp) 6 | 7 | ## Topics Covered 8 | 9 | - Run the Node.js Sequelize CRUD API Locally 10 | - Run the Sequelize CRUD API with React.js 11 | - Setup the Node.js Project 12 | - Setup the Database 13 | - Create the Sequelize Model 14 | - Create Validation Schemas with Zod 15 | - Create the CRUD Route Handlers 16 | - Create New Record 17 | - Edit Existing Record 18 | - Find One Record 19 | - Find All Records 20 | - Delete a Record 21 | - Create the API Routes 22 | - Setup CORS and API Router 23 | - Test the CRUD API 24 | - Perform Create Operation 25 | - Perform Update Operation 26 | - Perform Read Operation 27 | - Perform Delete Operation 28 | 29 | 30 | Read the entire article here: [https://codevoweb.com/build-a-crud-api-with-nodejs-and-sequelize/](https://codevoweb.com/build-a-crud-api-with-nodejs-and-sequelize/) 31 | 32 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | postgres: 4 | image: postgres:latest 5 | container_name: postgres 6 | ports: 7 | - '6500:5432' 8 | volumes: 9 | - progresDB:/data/postgres 10 | env_file: 11 | - ./.env 12 | volumes: 13 | progresDB: 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "crud-app-sequelize", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start": "ts-node-dev --respawn --transpile-only --exit-child src/server.ts" 8 | }, 9 | "devDependencies": { 10 | "@types/cors": "^2.8.13", 11 | "@types/express": "^4.17.15", 12 | "@types/morgan": "^1.9.4", 13 | "morgan": "^1.10.0", 14 | "ts-node-dev": "^2.0.0", 15 | "typescript": "^4.9.4" 16 | }, 17 | "dependencies": { 18 | "cors": "^2.8.5", 19 | "dotenv": "^16.0.3", 20 | "express": "^4.18.2", 21 | "pg": "^8.8.0", 22 | "pg-hstore": "^2.3.4", 23 | "sequelize": "^6.28.0", 24 | "zod": "^3.20.2" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/db.ts: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | import { Sequelize, DataTypes } from "sequelize"; 3 | 4 | const POSTGRES_URL = process.env.DATABASE_URL as unknown as string; 5 | const sequelize = new Sequelize(POSTGRES_URL); 6 | 7 | async function connectDB() { 8 | try { 9 | await sequelize.authenticate(); 10 | console.log("✅ Connection has been established successfully."); 11 | } catch (error) { 12 | console.error("Unable to connect to the database:", error); 13 | } 14 | } 15 | 16 | export { connectDB, sequelize, Sequelize, DataTypes }; 17 | -------------------------------------------------------------------------------- /src/middleware/validate.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from "express"; 2 | import { AnyZodObject, ZodError } from "zod"; 3 | 4 | export const validate = 5 | (schema: AnyZodObject) => 6 | (req: Request, res: Response, next: NextFunction) => { 7 | try { 8 | schema.parse({ 9 | params: req.params, 10 | query: req.query, 11 | body: req.body, 12 | }); 13 | 14 | next(); 15 | } catch (error) { 16 | if (error instanceof ZodError) { 17 | return res.status(400).json({ 18 | status: "fail", 19 | errors: error.errors, 20 | }); 21 | } 22 | next(error); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /src/model.ts: -------------------------------------------------------------------------------- 1 | import { sequelize, DataTypes } from "./db"; 2 | 3 | const NoteModel = sequelize.define("notes", { 4 | id: { 5 | type: DataTypes.UUID, 6 | defaultValue: DataTypes.UUIDV4, 7 | primaryKey: true, 8 | }, 9 | title: { 10 | type: DataTypes.STRING(100), 11 | allowNull: false, 12 | unique: true, 13 | }, 14 | content: { 15 | type: DataTypes.TEXT, 16 | allowNull: false, 17 | }, 18 | category: { 19 | type: DataTypes.STRING(50), 20 | allowNull: true, 21 | }, 22 | published: { 23 | type: DataTypes.BOOLEAN, 24 | defaultValue: false, 25 | allowNull: false, 26 | }, 27 | createdAt: { 28 | type: DataTypes.DATE, 29 | defaultValue: DataTypes.NOW, 30 | allowNull: false, 31 | }, 32 | updatedAt: { 33 | type: DataTypes.DATE, 34 | defaultValue: DataTypes.NOW, 35 | allowNull: false, 36 | }, 37 | }); 38 | 39 | export default NoteModel; 40 | -------------------------------------------------------------------------------- /src/note.controller.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from "express"; 2 | import NoteModel from "./model"; 3 | import { 4 | CreateNoteInput, 5 | FilterQueryInput, 6 | ParamsInput, 7 | UpdateNoteInput, 8 | } from "./note.schema"; 9 | 10 | export const createNoteController = async ( 11 | req: Request<{}, {}, CreateNoteInput>, 12 | res: Response 13 | ) => { 14 | try { 15 | const { title, content, category, published } = req.body; 16 | 17 | const note = await NoteModel.create({ 18 | title, 19 | content, 20 | category, 21 | published, 22 | }); 23 | 24 | res.status(201).json({ 25 | status: "success", 26 | data: { 27 | note, 28 | }, 29 | }); 30 | } catch (error: any) { 31 | if (error.name === "SequelizeUniqueConstraintError") { 32 | return res.status(409).json({ 33 | status: "failed", 34 | message: "Note with that title already exists", 35 | }); 36 | } 37 | 38 | res.status(500).json({ 39 | status: "error", 40 | message: error.message, 41 | }); 42 | } 43 | }; 44 | 45 | export const updateNoteController = async ( 46 | req: Request, 47 | res: Response 48 | ) => { 49 | try { 50 | const result = await NoteModel.update( 51 | { ...req.body, updatedAt: Date.now() }, 52 | { 53 | where: { 54 | id: req.params.noteId, 55 | }, 56 | } 57 | ); 58 | 59 | if (result[0] === 0) { 60 | return res.status(404).json({ 61 | status: "fail", 62 | message: "Note with that ID not found", 63 | }); 64 | } 65 | 66 | const note = await NoteModel.findByPk(req.params.noteId); 67 | 68 | res.status(200).json({ 69 | status: "success", 70 | data: { 71 | note, 72 | }, 73 | }); 74 | } catch (error: any) { 75 | res.status(500).json({ 76 | status: "error", 77 | message: error.message, 78 | }); 79 | } 80 | }; 81 | 82 | export const findNoteController = async ( 83 | req: Request, 84 | res: Response 85 | ) => { 86 | try { 87 | const note = await NoteModel.findByPk(req.params.noteId); 88 | 89 | if (!note) { 90 | return res.status(404).json({ 91 | status: "fail", 92 | message: "Note with that ID not found", 93 | }); 94 | } 95 | 96 | res.status(200).json({ 97 | status: "success", 98 | data: { 99 | note, 100 | }, 101 | }); 102 | } catch (error: any) { 103 | res.status(500).json({ 104 | status: "error", 105 | message: error.message, 106 | }); 107 | } 108 | }; 109 | 110 | export const findAllNotesController = async ( 111 | req: Request<{}, {}, {}, FilterQueryInput>, 112 | res: Response 113 | ) => { 114 | try { 115 | const page = req.query.page || 1; 116 | const limit = req.query.limit || 10; 117 | const skip = (page - 1) * limit; 118 | 119 | const notes = await NoteModel.findAll({ limit, offset: skip }); 120 | 121 | res.status(200).json({ 122 | status: "success", 123 | results: notes.length, 124 | notes, 125 | }); 126 | } catch (error: any) { 127 | res.status(500).json({ 128 | status: "error", 129 | message: error.message, 130 | }); 131 | } 132 | }; 133 | 134 | export const deleteNoteController = async ( 135 | req: Request, 136 | res: Response 137 | ) => { 138 | try { 139 | const result = await NoteModel.destroy({ 140 | where: { id: req.params.noteId }, 141 | force: true, 142 | }); 143 | 144 | if (result === 0) { 145 | return res.status(404).json({ 146 | status: "fail", 147 | message: "Note with that ID not found", 148 | }); 149 | } 150 | 151 | res.status(204).json(); 152 | } catch (error: any) { 153 | res.status(500).json({ 154 | status: "error", 155 | message: error.message, 156 | }); 157 | } 158 | }; 159 | -------------------------------------------------------------------------------- /src/note.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from "zod"; 2 | 3 | export const createNoteSchema = z.object({ 4 | body: z.object({ 5 | title: z.string({ 6 | required_error: "Title is required", 7 | }), 8 | content: z.string({ 9 | required_error: "Content is required", 10 | }), 11 | category: z.string().optional(), 12 | published: z.boolean().optional(), 13 | }), 14 | }); 15 | 16 | export const params = z.object({ 17 | noteId: z.string(), 18 | }); 19 | 20 | export const updateNoteSchema = z.object({ 21 | params, 22 | body: z 23 | .object({ 24 | title: z.string(), 25 | content: z.string(), 26 | category: z.string(), 27 | published: z.boolean(), 28 | }) 29 | .partial(), 30 | }); 31 | 32 | export const filterQuery = z.object({ 33 | limit: z.number().default(1), 34 | page: z.number().default(10), 35 | }); 36 | 37 | export type ParamsInput = z.TypeOf; 38 | export type FilterQueryInput = z.TypeOf; 39 | export type CreateNoteInput = z.TypeOf["body"]; 40 | export type UpdateNoteInput = z.TypeOf; 41 | -------------------------------------------------------------------------------- /src/routes.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import { validate } from "./middleware/validate"; 3 | import { 4 | createNoteController, 5 | deleteNoteController, 6 | findAllNotesController, 7 | findNoteController, 8 | updateNoteController, 9 | } from "./note.controller"; 10 | import { createNoteSchema, updateNoteSchema } from "./note.schema"; 11 | 12 | const router = express.Router(); 13 | 14 | router 15 | .route("/") 16 | .get(findAllNotesController) 17 | .post(validate(createNoteSchema), createNoteController); 18 | router 19 | .route("/:noteId") 20 | .get(findNoteController) 21 | .patch(validate(updateNoteSchema), updateNoteController) 22 | .delete(deleteNoteController); 23 | 24 | export default router; 25 | -------------------------------------------------------------------------------- /src/server.ts: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | import express, { Request, Response } from "express"; 3 | import morgan from "morgan"; 4 | import cors from "cors"; 5 | import { connectDB, sequelize } from "./db"; 6 | import noteRouter from "./routes"; 7 | 8 | const app = express(); 9 | 10 | app.use(express.json({ limit: "10kb" })); 11 | if (process.env.NODE_ENV === "development") app.use(morgan("dev")); 12 | 13 | app.use( 14 | cors({ 15 | origin: ["http://localhost:3000"], 16 | credentials: true, 17 | }) 18 | ); 19 | 20 | app.get("/api/healthchecker", (req: Request, res: Response) => { 21 | res.status(200).json({ 22 | status: "success", 23 | message: "Build CRUD API with Node.js and Sequelize", 24 | }); 25 | }); 26 | 27 | app.use("/api/notes", noteRouter); 28 | 29 | app.all("*", (req: Request, res: Response) => { 30 | res.status(404).json({ 31 | status: "fail", 32 | message: `Route: ${req.originalUrl} does not exist on this server`, 33 | }); 34 | }); 35 | 36 | const PORT = 8000; 37 | app.listen(PORT, async () => { 38 | console.log("🚀Server started Successfully"); 39 | await connectDB(); 40 | sequelize.sync({ force: false }).then(() => { 41 | console.log("✅Synced database successfully..."); 42 | }); 43 | }); 44 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2016", 4 | "experimentalDecorators": true, 5 | "emitDecoratorMetadata": true, 6 | "module": "commonjs", 7 | "esModuleInterop": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "strictPropertyInitialization": false, 11 | "skipLibCheck": true, 12 | "outDir": "./build", 13 | "rootDir": "." 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cspotcode/source-map-support@^0.8.0": 6 | version "0.8.1" 7 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 8 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "0.3.9" 11 | 12 | "@jridgewell/resolve-uri@^3.0.3": 13 | version "3.1.0" 14 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 15 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 16 | 17 | "@jridgewell/sourcemap-codec@^1.4.10": 18 | version "1.4.14" 19 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 20 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 21 | 22 | "@jridgewell/trace-mapping@0.3.9": 23 | version "0.3.9" 24 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 25 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 26 | dependencies: 27 | "@jridgewell/resolve-uri" "^3.0.3" 28 | "@jridgewell/sourcemap-codec" "^1.4.10" 29 | 30 | "@tsconfig/node10@^1.0.7": 31 | version "1.0.9" 32 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 33 | integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 34 | 35 | "@tsconfig/node12@^1.0.7": 36 | version "1.0.11" 37 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 38 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 39 | 40 | "@tsconfig/node14@^1.0.0": 41 | version "1.0.3" 42 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 43 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 44 | 45 | "@tsconfig/node16@^1.0.2": 46 | version "1.0.3" 47 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" 48 | integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== 49 | 50 | "@types/body-parser@*": 51 | version "1.19.2" 52 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" 53 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== 54 | dependencies: 55 | "@types/connect" "*" 56 | "@types/node" "*" 57 | 58 | "@types/connect@*": 59 | version "3.4.35" 60 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 61 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 62 | dependencies: 63 | "@types/node" "*" 64 | 65 | "@types/cors@^2.8.13": 66 | version "2.8.13" 67 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" 68 | integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== 69 | dependencies: 70 | "@types/node" "*" 71 | 72 | "@types/debug@^4.1.7": 73 | version "4.1.7" 74 | resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" 75 | integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== 76 | dependencies: 77 | "@types/ms" "*" 78 | 79 | "@types/express-serve-static-core@^4.17.31": 80 | version "4.17.32" 81 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz#93dda387f5516af616d8d3f05f2c4c79d81e1b82" 82 | integrity sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA== 83 | dependencies: 84 | "@types/node" "*" 85 | "@types/qs" "*" 86 | "@types/range-parser" "*" 87 | 88 | "@types/express@^4.17.15": 89 | version "4.17.15" 90 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.15.tgz#9290e983ec8b054b65a5abccb610411953d417ff" 91 | integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== 92 | dependencies: 93 | "@types/body-parser" "*" 94 | "@types/express-serve-static-core" "^4.17.31" 95 | "@types/qs" "*" 96 | "@types/serve-static" "*" 97 | 98 | "@types/mime@*": 99 | version "3.0.1" 100 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" 101 | integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== 102 | 103 | "@types/morgan@^1.9.4": 104 | version "1.9.4" 105 | resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.4.tgz#99965ad2bdc7c5cee28d8ce95cfa7300b19ea562" 106 | integrity sha512-cXoc4k+6+YAllH3ZHmx4hf7La1dzUk6keTR4bF4b4Sc0mZxU/zK4wO7l+ZzezXm/jkYj/qC+uYGZrarZdIVvyQ== 107 | dependencies: 108 | "@types/node" "*" 109 | 110 | "@types/ms@*": 111 | version "0.7.31" 112 | resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" 113 | integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== 114 | 115 | "@types/node@*": 116 | version "18.11.18" 117 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" 118 | integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== 119 | 120 | "@types/qs@*": 121 | version "6.9.7" 122 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 123 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 124 | 125 | "@types/range-parser@*": 126 | version "1.2.4" 127 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 128 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 129 | 130 | "@types/serve-static@*": 131 | version "1.15.0" 132 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" 133 | integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== 134 | dependencies: 135 | "@types/mime" "*" 136 | "@types/node" "*" 137 | 138 | "@types/strip-bom@^3.0.0": 139 | version "3.0.0" 140 | resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" 141 | integrity sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ== 142 | 143 | "@types/strip-json-comments@0.0.30": 144 | version "0.0.30" 145 | resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" 146 | integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== 147 | 148 | "@types/validator@^13.7.1": 149 | version "13.7.10" 150 | resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.10.tgz#f9763dc0933f8324920afa9c0790308eedf55ca7" 151 | integrity sha512-t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ== 152 | 153 | accepts@~1.3.8: 154 | version "1.3.8" 155 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 156 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 157 | dependencies: 158 | mime-types "~2.1.34" 159 | negotiator "0.6.3" 160 | 161 | acorn-walk@^8.1.1: 162 | version "8.2.0" 163 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 164 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 165 | 166 | acorn@^8.4.1: 167 | version "8.8.1" 168 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" 169 | integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== 170 | 171 | anymatch@~3.1.2: 172 | version "3.1.3" 173 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 174 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 175 | dependencies: 176 | normalize-path "^3.0.0" 177 | picomatch "^2.0.4" 178 | 179 | arg@^4.1.0: 180 | version "4.1.3" 181 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 182 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 183 | 184 | array-flatten@1.1.1: 185 | version "1.1.1" 186 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 187 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 188 | 189 | balanced-match@^1.0.0: 190 | version "1.0.2" 191 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 192 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 193 | 194 | basic-auth@~2.0.1: 195 | version "2.0.1" 196 | resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" 197 | integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== 198 | dependencies: 199 | safe-buffer "5.1.2" 200 | 201 | binary-extensions@^2.0.0: 202 | version "2.2.0" 203 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 204 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 205 | 206 | body-parser@1.20.1: 207 | version "1.20.1" 208 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 209 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 210 | dependencies: 211 | bytes "3.1.2" 212 | content-type "~1.0.4" 213 | debug "2.6.9" 214 | depd "2.0.0" 215 | destroy "1.2.0" 216 | http-errors "2.0.0" 217 | iconv-lite "0.4.24" 218 | on-finished "2.4.1" 219 | qs "6.11.0" 220 | raw-body "2.5.1" 221 | type-is "~1.6.18" 222 | unpipe "1.0.0" 223 | 224 | brace-expansion@^1.1.7: 225 | version "1.1.11" 226 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 227 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 228 | dependencies: 229 | balanced-match "^1.0.0" 230 | concat-map "0.0.1" 231 | 232 | braces@~3.0.2: 233 | version "3.0.2" 234 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 235 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 236 | dependencies: 237 | fill-range "^7.0.1" 238 | 239 | buffer-from@^1.0.0: 240 | version "1.1.2" 241 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 242 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 243 | 244 | buffer-writer@2.0.0: 245 | version "2.0.0" 246 | resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" 247 | integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== 248 | 249 | bytes@3.1.2: 250 | version "3.1.2" 251 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 252 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 253 | 254 | call-bind@^1.0.0: 255 | version "1.0.2" 256 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 257 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 258 | dependencies: 259 | function-bind "^1.1.1" 260 | get-intrinsic "^1.0.2" 261 | 262 | chokidar@^3.5.1: 263 | version "3.5.3" 264 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 265 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 266 | dependencies: 267 | anymatch "~3.1.2" 268 | braces "~3.0.2" 269 | glob-parent "~5.1.2" 270 | is-binary-path "~2.1.0" 271 | is-glob "~4.0.1" 272 | normalize-path "~3.0.0" 273 | readdirp "~3.6.0" 274 | optionalDependencies: 275 | fsevents "~2.3.2" 276 | 277 | concat-map@0.0.1: 278 | version "0.0.1" 279 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 280 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 281 | 282 | content-disposition@0.5.4: 283 | version "0.5.4" 284 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 285 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 286 | dependencies: 287 | safe-buffer "5.2.1" 288 | 289 | content-type@~1.0.4: 290 | version "1.0.4" 291 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 292 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 293 | 294 | cookie-signature@1.0.6: 295 | version "1.0.6" 296 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 297 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 298 | 299 | cookie@0.5.0: 300 | version "0.5.0" 301 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 302 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 303 | 304 | cors@^2.8.5: 305 | version "2.8.5" 306 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 307 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 308 | dependencies: 309 | object-assign "^4" 310 | vary "^1" 311 | 312 | create-require@^1.1.0: 313 | version "1.1.1" 314 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 315 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 316 | 317 | debug@2.6.9: 318 | version "2.6.9" 319 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 320 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 321 | dependencies: 322 | ms "2.0.0" 323 | 324 | debug@^4.3.3: 325 | version "4.3.4" 326 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 327 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 328 | dependencies: 329 | ms "2.1.2" 330 | 331 | depd@2.0.0, depd@~2.0.0: 332 | version "2.0.0" 333 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 334 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 335 | 336 | destroy@1.2.0: 337 | version "1.2.0" 338 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 339 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 340 | 341 | diff@^4.0.1: 342 | version "4.0.2" 343 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 344 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 345 | 346 | dotenv@^16.0.3: 347 | version "16.0.3" 348 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" 349 | integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== 350 | 351 | dottie@^2.0.2: 352 | version "2.0.2" 353 | resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.2.tgz#cc91c0726ce3a054ebf11c55fbc92a7f266dd154" 354 | integrity sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg== 355 | 356 | dynamic-dedupe@^0.3.0: 357 | version "0.3.0" 358 | resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" 359 | integrity sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ== 360 | dependencies: 361 | xtend "^4.0.0" 362 | 363 | ee-first@1.1.1: 364 | version "1.1.1" 365 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 366 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 367 | 368 | encodeurl@~1.0.2: 369 | version "1.0.2" 370 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 371 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 372 | 373 | escape-html@~1.0.3: 374 | version "1.0.3" 375 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 376 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 377 | 378 | etag@~1.8.1: 379 | version "1.8.1" 380 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 381 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 382 | 383 | express@^4.18.2: 384 | version "4.18.2" 385 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 386 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 387 | dependencies: 388 | accepts "~1.3.8" 389 | array-flatten "1.1.1" 390 | body-parser "1.20.1" 391 | content-disposition "0.5.4" 392 | content-type "~1.0.4" 393 | cookie "0.5.0" 394 | cookie-signature "1.0.6" 395 | debug "2.6.9" 396 | depd "2.0.0" 397 | encodeurl "~1.0.2" 398 | escape-html "~1.0.3" 399 | etag "~1.8.1" 400 | finalhandler "1.2.0" 401 | fresh "0.5.2" 402 | http-errors "2.0.0" 403 | merge-descriptors "1.0.1" 404 | methods "~1.1.2" 405 | on-finished "2.4.1" 406 | parseurl "~1.3.3" 407 | path-to-regexp "0.1.7" 408 | proxy-addr "~2.0.7" 409 | qs "6.11.0" 410 | range-parser "~1.2.1" 411 | safe-buffer "5.2.1" 412 | send "0.18.0" 413 | serve-static "1.15.0" 414 | setprototypeof "1.2.0" 415 | statuses "2.0.1" 416 | type-is "~1.6.18" 417 | utils-merge "1.0.1" 418 | vary "~1.1.2" 419 | 420 | fill-range@^7.0.1: 421 | version "7.0.1" 422 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 423 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 424 | dependencies: 425 | to-regex-range "^5.0.1" 426 | 427 | finalhandler@1.2.0: 428 | version "1.2.0" 429 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 430 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 431 | dependencies: 432 | debug "2.6.9" 433 | encodeurl "~1.0.2" 434 | escape-html "~1.0.3" 435 | on-finished "2.4.1" 436 | parseurl "~1.3.3" 437 | statuses "2.0.1" 438 | unpipe "~1.0.0" 439 | 440 | forwarded@0.2.0: 441 | version "0.2.0" 442 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 443 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 444 | 445 | fresh@0.5.2: 446 | version "0.5.2" 447 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 448 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 449 | 450 | fs.realpath@^1.0.0: 451 | version "1.0.0" 452 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 453 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 454 | 455 | fsevents@~2.3.2: 456 | version "2.3.2" 457 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 458 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 459 | 460 | function-bind@^1.1.1: 461 | version "1.1.1" 462 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 463 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 464 | 465 | get-intrinsic@^1.0.2: 466 | version "1.1.3" 467 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" 468 | integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== 469 | dependencies: 470 | function-bind "^1.1.1" 471 | has "^1.0.3" 472 | has-symbols "^1.0.3" 473 | 474 | glob-parent@~5.1.2: 475 | version "5.1.2" 476 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 477 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 478 | dependencies: 479 | is-glob "^4.0.1" 480 | 481 | glob@^7.1.3: 482 | version "7.2.3" 483 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 484 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 485 | dependencies: 486 | fs.realpath "^1.0.0" 487 | inflight "^1.0.4" 488 | inherits "2" 489 | minimatch "^3.1.1" 490 | once "^1.3.0" 491 | path-is-absolute "^1.0.0" 492 | 493 | has-symbols@^1.0.3: 494 | version "1.0.3" 495 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 496 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 497 | 498 | has@^1.0.3: 499 | version "1.0.3" 500 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 501 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 502 | dependencies: 503 | function-bind "^1.1.1" 504 | 505 | http-errors@2.0.0: 506 | version "2.0.0" 507 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 508 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 509 | dependencies: 510 | depd "2.0.0" 511 | inherits "2.0.4" 512 | setprototypeof "1.2.0" 513 | statuses "2.0.1" 514 | toidentifier "1.0.1" 515 | 516 | iconv-lite@0.4.24: 517 | version "0.4.24" 518 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 519 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 520 | dependencies: 521 | safer-buffer ">= 2.1.2 < 3" 522 | 523 | inflection@^1.13.2: 524 | version "1.13.4" 525 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.4.tgz#65aa696c4e2da6225b148d7a154c449366633a32" 526 | integrity sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw== 527 | 528 | inflight@^1.0.4: 529 | version "1.0.6" 530 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 531 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 532 | dependencies: 533 | once "^1.3.0" 534 | wrappy "1" 535 | 536 | inherits@2, inherits@2.0.4: 537 | version "2.0.4" 538 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 539 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 540 | 541 | ipaddr.js@1.9.1: 542 | version "1.9.1" 543 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 544 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 545 | 546 | is-binary-path@~2.1.0: 547 | version "2.1.0" 548 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 549 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 550 | dependencies: 551 | binary-extensions "^2.0.0" 552 | 553 | is-core-module@^2.9.0: 554 | version "2.11.0" 555 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 556 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 557 | dependencies: 558 | has "^1.0.3" 559 | 560 | is-extglob@^2.1.1: 561 | version "2.1.1" 562 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 563 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 564 | 565 | is-glob@^4.0.1, is-glob@~4.0.1: 566 | version "4.0.3" 567 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 568 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 569 | dependencies: 570 | is-extglob "^2.1.1" 571 | 572 | is-number@^7.0.0: 573 | version "7.0.0" 574 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 575 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 576 | 577 | lodash@^4.17.21: 578 | version "4.17.21" 579 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 580 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 581 | 582 | lru-cache@^6.0.0: 583 | version "6.0.0" 584 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 585 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 586 | dependencies: 587 | yallist "^4.0.0" 588 | 589 | make-error@^1.1.1: 590 | version "1.3.6" 591 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 592 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 593 | 594 | media-typer@0.3.0: 595 | version "0.3.0" 596 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 597 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 598 | 599 | merge-descriptors@1.0.1: 600 | version "1.0.1" 601 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 602 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 603 | 604 | methods@~1.1.2: 605 | version "1.1.2" 606 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 607 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 608 | 609 | mime-db@1.52.0: 610 | version "1.52.0" 611 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 612 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 613 | 614 | mime-types@~2.1.24, mime-types@~2.1.34: 615 | version "2.1.35" 616 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 617 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 618 | dependencies: 619 | mime-db "1.52.0" 620 | 621 | mime@1.6.0: 622 | version "1.6.0" 623 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 624 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 625 | 626 | minimatch@^3.1.1: 627 | version "3.1.2" 628 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 629 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 630 | dependencies: 631 | brace-expansion "^1.1.7" 632 | 633 | minimist@^1.2.6: 634 | version "1.2.7" 635 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 636 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 637 | 638 | mkdirp@^1.0.4: 639 | version "1.0.4" 640 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 641 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 642 | 643 | moment-timezone@^0.5.34: 644 | version "0.5.40" 645 | resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.40.tgz#c148f5149fd91dd3e29bf481abc8830ecba16b89" 646 | integrity sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg== 647 | dependencies: 648 | moment ">= 2.9.0" 649 | 650 | "moment@>= 2.9.0", moment@^2.29.1: 651 | version "2.29.4" 652 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" 653 | integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== 654 | 655 | morgan@^1.10.0: 656 | version "1.10.0" 657 | resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" 658 | integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== 659 | dependencies: 660 | basic-auth "~2.0.1" 661 | debug "2.6.9" 662 | depd "~2.0.0" 663 | on-finished "~2.3.0" 664 | on-headers "~1.0.2" 665 | 666 | ms@2.0.0: 667 | version "2.0.0" 668 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 669 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 670 | 671 | ms@2.1.2: 672 | version "2.1.2" 673 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 674 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 675 | 676 | ms@2.1.3: 677 | version "2.1.3" 678 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 679 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 680 | 681 | negotiator@0.6.3: 682 | version "0.6.3" 683 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 684 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 685 | 686 | normalize-path@^3.0.0, normalize-path@~3.0.0: 687 | version "3.0.0" 688 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 689 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 690 | 691 | object-assign@^4: 692 | version "4.1.1" 693 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 694 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 695 | 696 | object-inspect@^1.9.0: 697 | version "1.12.2" 698 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 699 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 700 | 701 | on-finished@2.4.1: 702 | version "2.4.1" 703 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 704 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 705 | dependencies: 706 | ee-first "1.1.1" 707 | 708 | on-finished@~2.3.0: 709 | version "2.3.0" 710 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 711 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== 712 | dependencies: 713 | ee-first "1.1.1" 714 | 715 | on-headers@~1.0.2: 716 | version "1.0.2" 717 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" 718 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== 719 | 720 | once@^1.3.0: 721 | version "1.4.0" 722 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 723 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 724 | dependencies: 725 | wrappy "1" 726 | 727 | packet-reader@1.0.0: 728 | version "1.0.0" 729 | resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" 730 | integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== 731 | 732 | parseurl@~1.3.3: 733 | version "1.3.3" 734 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 735 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 736 | 737 | path-is-absolute@^1.0.0: 738 | version "1.0.1" 739 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 740 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 741 | 742 | path-parse@^1.0.7: 743 | version "1.0.7" 744 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 745 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 746 | 747 | path-to-regexp@0.1.7: 748 | version "0.1.7" 749 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 750 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 751 | 752 | pg-connection-string@^2.5.0: 753 | version "2.5.0" 754 | resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" 755 | integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== 756 | 757 | pg-hstore@^2.3.4: 758 | version "2.3.4" 759 | resolved "https://registry.yarnpkg.com/pg-hstore/-/pg-hstore-2.3.4.tgz#4425e3e2a3e15d2a334c35581186c27cf2e9b8dd" 760 | integrity sha512-N3SGs/Rf+xA1M2/n0JBiXFDVMzdekwLZLAO0g7mpDY9ouX+fDI7jS6kTq3JujmYbtNSJ53TJ0q4G98KVZSM4EA== 761 | dependencies: 762 | underscore "^1.13.1" 763 | 764 | pg-int8@1.0.1: 765 | version "1.0.1" 766 | resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" 767 | integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== 768 | 769 | pg-pool@^3.5.2: 770 | version "3.5.2" 771 | resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.5.2.tgz#ed1bed1fb8d79f1c6fd5fb1c99e990fbf9ddf178" 772 | integrity sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w== 773 | 774 | pg-protocol@^1.5.0: 775 | version "1.5.0" 776 | resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.5.0.tgz#b5dd452257314565e2d54ab3c132adc46565a6a0" 777 | integrity sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ== 778 | 779 | pg-types@^2.1.0: 780 | version "2.2.0" 781 | resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" 782 | integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== 783 | dependencies: 784 | pg-int8 "1.0.1" 785 | postgres-array "~2.0.0" 786 | postgres-bytea "~1.0.0" 787 | postgres-date "~1.0.4" 788 | postgres-interval "^1.1.0" 789 | 790 | pg@^8.8.0: 791 | version "8.8.0" 792 | resolved "https://registry.yarnpkg.com/pg/-/pg-8.8.0.tgz#a77f41f9d9ede7009abfca54667c775a240da686" 793 | integrity sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw== 794 | dependencies: 795 | buffer-writer "2.0.0" 796 | packet-reader "1.0.0" 797 | pg-connection-string "^2.5.0" 798 | pg-pool "^3.5.2" 799 | pg-protocol "^1.5.0" 800 | pg-types "^2.1.0" 801 | pgpass "1.x" 802 | 803 | pgpass@1.x: 804 | version "1.0.5" 805 | resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" 806 | integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== 807 | dependencies: 808 | split2 "^4.1.0" 809 | 810 | picomatch@^2.0.4, picomatch@^2.2.1: 811 | version "2.3.1" 812 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 813 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 814 | 815 | postgres-array@~2.0.0: 816 | version "2.0.0" 817 | resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" 818 | integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== 819 | 820 | postgres-bytea@~1.0.0: 821 | version "1.0.0" 822 | resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" 823 | integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== 824 | 825 | postgres-date@~1.0.4: 826 | version "1.0.7" 827 | resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" 828 | integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== 829 | 830 | postgres-interval@^1.1.0: 831 | version "1.2.0" 832 | resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" 833 | integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== 834 | dependencies: 835 | xtend "^4.0.0" 836 | 837 | proxy-addr@~2.0.7: 838 | version "2.0.7" 839 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 840 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 841 | dependencies: 842 | forwarded "0.2.0" 843 | ipaddr.js "1.9.1" 844 | 845 | qs@6.11.0: 846 | version "6.11.0" 847 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 848 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 849 | dependencies: 850 | side-channel "^1.0.4" 851 | 852 | range-parser@~1.2.1: 853 | version "1.2.1" 854 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 855 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 856 | 857 | raw-body@2.5.1: 858 | version "2.5.1" 859 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 860 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 861 | dependencies: 862 | bytes "3.1.2" 863 | http-errors "2.0.0" 864 | iconv-lite "0.4.24" 865 | unpipe "1.0.0" 866 | 867 | readdirp@~3.6.0: 868 | version "3.6.0" 869 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 870 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 871 | dependencies: 872 | picomatch "^2.2.1" 873 | 874 | resolve@^1.0.0: 875 | version "1.22.1" 876 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 877 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 878 | dependencies: 879 | is-core-module "^2.9.0" 880 | path-parse "^1.0.7" 881 | supports-preserve-symlinks-flag "^1.0.0" 882 | 883 | retry-as-promised@^7.0.3: 884 | version "7.0.3" 885 | resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-7.0.3.tgz#ca3c13b15525a7bfbf0f56d2996f0e75649d068b" 886 | integrity sha512-SEvMa4khHvpU/o6zgh7sK24qm6rxVgKnrSyzb5POeDvZx5N9Bf0s5sQsQ4Fl+HjRp0X+w2UzACGfUnXtx6cJ9Q== 887 | 888 | rimraf@^2.6.1: 889 | version "2.7.1" 890 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 891 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 892 | dependencies: 893 | glob "^7.1.3" 894 | 895 | safe-buffer@5.1.2: 896 | version "5.1.2" 897 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 898 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 899 | 900 | safe-buffer@5.2.1: 901 | version "5.2.1" 902 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 903 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 904 | 905 | "safer-buffer@>= 2.1.2 < 3": 906 | version "2.1.2" 907 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 908 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 909 | 910 | semver@^7.3.5: 911 | version "7.3.8" 912 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" 913 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== 914 | dependencies: 915 | lru-cache "^6.0.0" 916 | 917 | send@0.18.0: 918 | version "0.18.0" 919 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 920 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 921 | dependencies: 922 | debug "2.6.9" 923 | depd "2.0.0" 924 | destroy "1.2.0" 925 | encodeurl "~1.0.2" 926 | escape-html "~1.0.3" 927 | etag "~1.8.1" 928 | fresh "0.5.2" 929 | http-errors "2.0.0" 930 | mime "1.6.0" 931 | ms "2.1.3" 932 | on-finished "2.4.1" 933 | range-parser "~1.2.1" 934 | statuses "2.0.1" 935 | 936 | sequelize-pool@^7.1.0: 937 | version "7.1.0" 938 | resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-7.1.0.tgz#210b391af4002762f823188fd6ecfc7413020768" 939 | integrity sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg== 940 | 941 | sequelize@^6.28.0: 942 | version "6.28.0" 943 | resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.28.0.tgz#d6bc4e36647e8501635467c0777c45a33f5d5ba8" 944 | integrity sha512-+WHqvUQgTp19GLkt+gyQ+F6qg+FIEO2O5F9C0TOYV/PjZ2a/XwWvVkL1NCkS4VSIjVVvAUutiW6Wv9ofveGaVw== 945 | dependencies: 946 | "@types/debug" "^4.1.7" 947 | "@types/validator" "^13.7.1" 948 | debug "^4.3.3" 949 | dottie "^2.0.2" 950 | inflection "^1.13.2" 951 | lodash "^4.17.21" 952 | moment "^2.29.1" 953 | moment-timezone "^0.5.34" 954 | pg-connection-string "^2.5.0" 955 | retry-as-promised "^7.0.3" 956 | semver "^7.3.5" 957 | sequelize-pool "^7.1.0" 958 | toposort-class "^1.0.1" 959 | uuid "^8.3.2" 960 | validator "^13.7.0" 961 | wkx "^0.5.0" 962 | 963 | serve-static@1.15.0: 964 | version "1.15.0" 965 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 966 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 967 | dependencies: 968 | encodeurl "~1.0.2" 969 | escape-html "~1.0.3" 970 | parseurl "~1.3.3" 971 | send "0.18.0" 972 | 973 | setprototypeof@1.2.0: 974 | version "1.2.0" 975 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 976 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 977 | 978 | side-channel@^1.0.4: 979 | version "1.0.4" 980 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 981 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 982 | dependencies: 983 | call-bind "^1.0.0" 984 | get-intrinsic "^1.0.2" 985 | object-inspect "^1.9.0" 986 | 987 | source-map-support@^0.5.12: 988 | version "0.5.21" 989 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 990 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 991 | dependencies: 992 | buffer-from "^1.0.0" 993 | source-map "^0.6.0" 994 | 995 | source-map@^0.6.0: 996 | version "0.6.1" 997 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 998 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 999 | 1000 | split2@^4.1.0: 1001 | version "4.1.0" 1002 | resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" 1003 | integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== 1004 | 1005 | statuses@2.0.1: 1006 | version "2.0.1" 1007 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1008 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1009 | 1010 | strip-bom@^3.0.0: 1011 | version "3.0.0" 1012 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1013 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 1014 | 1015 | strip-json-comments@^2.0.0: 1016 | version "2.0.1" 1017 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1018 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 1019 | 1020 | supports-preserve-symlinks-flag@^1.0.0: 1021 | version "1.0.0" 1022 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1023 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1024 | 1025 | to-regex-range@^5.0.1: 1026 | version "5.0.1" 1027 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1028 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1029 | dependencies: 1030 | is-number "^7.0.0" 1031 | 1032 | toidentifier@1.0.1: 1033 | version "1.0.1" 1034 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1035 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1036 | 1037 | toposort-class@^1.0.1: 1038 | version "1.0.1" 1039 | resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" 1040 | integrity sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg== 1041 | 1042 | tree-kill@^1.2.2: 1043 | version "1.2.2" 1044 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 1045 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 1046 | 1047 | ts-node-dev@^2.0.0: 1048 | version "2.0.0" 1049 | resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-2.0.0.tgz#bdd53e17ab3b5d822ef519928dc6b4a7e0f13065" 1050 | integrity sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w== 1051 | dependencies: 1052 | chokidar "^3.5.1" 1053 | dynamic-dedupe "^0.3.0" 1054 | minimist "^1.2.6" 1055 | mkdirp "^1.0.4" 1056 | resolve "^1.0.0" 1057 | rimraf "^2.6.1" 1058 | source-map-support "^0.5.12" 1059 | tree-kill "^1.2.2" 1060 | ts-node "^10.4.0" 1061 | tsconfig "^7.0.0" 1062 | 1063 | ts-node@^10.4.0: 1064 | version "10.9.1" 1065 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 1066 | integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 1067 | dependencies: 1068 | "@cspotcode/source-map-support" "^0.8.0" 1069 | "@tsconfig/node10" "^1.0.7" 1070 | "@tsconfig/node12" "^1.0.7" 1071 | "@tsconfig/node14" "^1.0.0" 1072 | "@tsconfig/node16" "^1.0.2" 1073 | acorn "^8.4.1" 1074 | acorn-walk "^8.1.1" 1075 | arg "^4.1.0" 1076 | create-require "^1.1.0" 1077 | diff "^4.0.1" 1078 | make-error "^1.1.1" 1079 | v8-compile-cache-lib "^3.0.1" 1080 | yn "3.1.1" 1081 | 1082 | tsconfig@^7.0.0: 1083 | version "7.0.0" 1084 | resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" 1085 | integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== 1086 | dependencies: 1087 | "@types/strip-bom" "^3.0.0" 1088 | "@types/strip-json-comments" "0.0.30" 1089 | strip-bom "^3.0.0" 1090 | strip-json-comments "^2.0.0" 1091 | 1092 | type-is@~1.6.18: 1093 | version "1.6.18" 1094 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1095 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1096 | dependencies: 1097 | media-typer "0.3.0" 1098 | mime-types "~2.1.24" 1099 | 1100 | typescript@^4.9.4: 1101 | version "4.9.4" 1102 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" 1103 | integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== 1104 | 1105 | underscore@^1.13.1: 1106 | version "1.13.6" 1107 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" 1108 | integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== 1109 | 1110 | unpipe@1.0.0, unpipe@~1.0.0: 1111 | version "1.0.0" 1112 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1113 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1114 | 1115 | utils-merge@1.0.1: 1116 | version "1.0.1" 1117 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1118 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1119 | 1120 | uuid@^8.3.2: 1121 | version "8.3.2" 1122 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 1123 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 1124 | 1125 | v8-compile-cache-lib@^3.0.1: 1126 | version "3.0.1" 1127 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 1128 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 1129 | 1130 | validator@^13.7.0: 1131 | version "13.7.0" 1132 | resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" 1133 | integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== 1134 | 1135 | vary@^1, vary@~1.1.2: 1136 | version "1.1.2" 1137 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1138 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1139 | 1140 | wkx@^0.5.0: 1141 | version "0.5.0" 1142 | resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.5.0.tgz#c6c37019acf40e517cc6b94657a25a3d4aa33e8c" 1143 | integrity sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg== 1144 | dependencies: 1145 | "@types/node" "*" 1146 | 1147 | wrappy@1: 1148 | version "1.0.2" 1149 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1150 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1151 | 1152 | xtend@^4.0.0: 1153 | version "4.0.2" 1154 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1155 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1156 | 1157 | yallist@^4.0.0: 1158 | version "4.0.0" 1159 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1160 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1161 | 1162 | yn@3.1.1: 1163 | version "3.1.1" 1164 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1165 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1166 | 1167 | zod@^3.20.2: 1168 | version "3.20.2" 1169 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.20.2.tgz#068606642c8f51b3333981f91c0a8ab37dfc2807" 1170 | integrity sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ== 1171 | --------------------------------------------------------------------------------