From 4fce5b46c98c9e773eca4d3487f9ed1fb91db7f5 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Wed, 12 Apr 2023 19:26:06 -0300 Subject: [PATCH 01/79] Build: server folder --- server/Dockerfile | 14 ++++++++++++++ server/package.json | 9 +++++++++ server/src/server.js | 0 3 files changed, 23 insertions(+) create mode 100644 server/Dockerfile create mode 100644 server/package.json create mode 100644 server/src/server.js diff --git a/server/Dockerfile b/server/Dockerfile new file mode 100644 index 000000000..1b965a5e8 --- /dev/null +++ b/server/Dockerfile @@ -0,0 +1,14 @@ +FROM node:16.15.1 + +WORKDIR /app + +COPY ./package*.json ./ +COPY ./yarn.lock ./ + +RUN yarn install + +COPY . . + +EXPOSE 5500 + +CMD ["yarn", "dev"] \ No newline at end of file diff --git a/server/package.json b/server/package.json new file mode 100644 index 000000000..0a9f4dcd2 --- /dev/null +++ b/server/package.json @@ -0,0 +1,9 @@ +{ + "name": "server", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "scripts": { + "dev": "nodemon -L src/server.js" + } +} diff --git a/server/src/server.js b/server/src/server.js new file mode 100644 index 000000000..e69de29bb From ff2b2ee003a859898943ed7d2ef7c9f7c540ad77 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Wed, 12 Apr 2023 19:27:08 -0300 Subject: [PATCH 02/79] Feat: created gitignore with some files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..97aca2ea1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +node_modules \ No newline at end of file From 164e305afd3dca6cc76bacf152c5f53ac65b2bbc Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 14:21:43 -0300 Subject: [PATCH 03/79] Fix: remoced and changed to app.ts --- server/src/server.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 server/src/server.js diff --git a/server/src/server.js b/server/src/server.js deleted file mode 100644 index e69de29bb..000000000 From 1a7985e534c32b4b13eccece6175fc2d2591dfb3 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 14:23:01 -0300 Subject: [PATCH 04/79] Fix: react-app ports changed to 3000:3000 --- docker-compose.yml | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..9c2a070cb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,48 @@ +version: "3" +services: + react-app: + build: + context: "./client" + dockerfile: Dockerfile + ports: + - 3000:3000 + container_name: react-container + environment: + - WATCHPACK_POLLING=true + networks: + - mern-stack-network + volumes: + - ./client:/app + tty: true + depends_on: + - api-server + api-server: + build: + context: "./server" + dockerfile: Dockerfile + ports: + - 5500:5500 + container_name: express-container + networks: + - mern-stack-network + volumes: + - ./server:/app + depends_on: + - mongo + mongo: + image: mongo + ports: + - 27017:27017 + container_name: mongo-container + networks: + - mern-stack-network + volumes: + - mongoData:/data/db + environment: + - MONGO_INITDB_ROOT_USERNAME=root + - MONGO_INITDB_ROOT_PASSWORD=secret + - MONGO_INITDB_DATABASE=pratical_test +networks: + mern-stack-network: +volumes: + mongoData: From 5e85e93a44210f7fc95a63821423f7b2aaa3b6af Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 14:24:21 -0300 Subject: [PATCH 05/79] Feat: added initial project config --- server/tsconfig.json | 109 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 server/tsconfig.json diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 000000000..a2e1ca448 --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,109 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + "experimentalDecorators": true /* Enable experimental support for legacy experimental decorators. */, + "emitDecoratorMetadata": true /* Emit design-type metadata for decorated declarations in source files. */, + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "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. */ + "outDir": "./dist" /* Specify an output folder for all emitted files. */, + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + "strictPropertyInitialization": false /* Check for class properties that are declared but not set in the constructor. */, + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From 1b313b63ba45f5f2bb3a359ae6678668c6f72a05 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 14:25:13 -0300 Subject: [PATCH 06/79] Feat: created src with main project structure --- server/src/app.ts | 23 ++ server/src/controllers/index.ts | 3 + .../pokemons/createPokemons.controller.ts | 8 + server/src/errors/AppError.ts | 9 + server/src/interfaces/pokemons/index.ts | 31 +++ .../errors/handleAppError.middleware.ts | 21 ++ server/src/models/Pokemons.ts | 243 ++++++++++++++++++ .../src/routers/pokemons/pokemons.routes.ts | 8 + server/src/services/index.ts | 3 + .../pokemons/createPokemons.service.ts | 7 + 10 files changed, 356 insertions(+) create mode 100644 server/src/app.ts create mode 100644 server/src/controllers/index.ts create mode 100644 server/src/controllers/pokemons/createPokemons.controller.ts create mode 100644 server/src/errors/AppError.ts create mode 100644 server/src/interfaces/pokemons/index.ts create mode 100644 server/src/middlewares/errors/handleAppError.middleware.ts create mode 100644 server/src/models/Pokemons.ts create mode 100644 server/src/routers/pokemons/pokemons.routes.ts create mode 100644 server/src/services/index.ts create mode 100644 server/src/services/pokemons/createPokemons.service.ts diff --git a/server/src/app.ts b/server/src/app.ts new file mode 100644 index 000000000..0cfcd7017 --- /dev/null +++ b/server/src/app.ts @@ -0,0 +1,23 @@ +import "dotenv/config"; +import express from "express"; +import "express-async-errors"; +import "reflect-metadata"; +import cors from "cors"; +import mongoose from "mongoose"; +import handleAppErrorMiddleware from "./middlewares/errors/handleAppError.middleware"; +import pokemonsRoute from "./routers/pokemons/pokemons.routes"; + +const app = express(); + +app.use(express.json()); +app.use(cors()); + +app.use("/pokemons", pokemonsRoute); + +app.use(handleAppErrorMiddleware); + +mongoose.connect(process.env.MONGO_URL!).then(() => { + app.listen(process.env.PORT || 5500, () => + console.log(`listening on port ${process.env.PORT}`) + ); +}); diff --git a/server/src/controllers/index.ts b/server/src/controllers/index.ts new file mode 100644 index 000000000..c4b93449b --- /dev/null +++ b/server/src/controllers/index.ts @@ -0,0 +1,3 @@ +import { createPokemonController } from "./pokemons/createPokemons.controller"; + +export { createPokemonController }; diff --git a/server/src/controllers/pokemons/createPokemons.controller.ts b/server/src/controllers/pokemons/createPokemons.controller.ts new file mode 100644 index 000000000..377afa9eb --- /dev/null +++ b/server/src/controllers/pokemons/createPokemons.controller.ts @@ -0,0 +1,8 @@ +import { Request, Response } from "express"; +import { createPokemonsService } from "../../services"; + +export const createPokemonController = async (req: Request, res: Response) => { + const data = req.body; + const newPokemon = await createPokemonsService(data); + return res.status(201).json({ message: "Done" }); +}; diff --git a/server/src/errors/AppError.ts b/server/src/errors/AppError.ts new file mode 100644 index 000000000..caca692f0 --- /dev/null +++ b/server/src/errors/AppError.ts @@ -0,0 +1,9 @@ +export class AppError extends Error { + statusCode; + + constructor(statusCode: number, message: string) { + super(); + this.statusCode = statusCode; + this.message = message; + } +} diff --git a/server/src/interfaces/pokemons/index.ts b/server/src/interfaces/pokemons/index.ts new file mode 100644 index 000000000..5140c4f5e --- /dev/null +++ b/server/src/interfaces/pokemons/index.ts @@ -0,0 +1,31 @@ +export interface ICreatePokemon { + name: string; + pokedexNumber: number; + imgName: string; + generation: string; + evolutionStage?: string; + evolved: number; + familyID?: number; + crossGen: number; + type1: string; + type2?: string; + weather1: string; + weather2?: string; + statTotal: number; + atk: number; + def: number; + sta: number; + legendary: number; + aquireable: number; + spawns: number; + regional: number; + raidable: number; + hatchable: number; + shiny: number; + nest: number; + new: number; + notGettable: number; + futureEvolve: number; + cp40: number; + cp39: number; +} diff --git a/server/src/middlewares/errors/handleAppError.middleware.ts b/server/src/middlewares/errors/handleAppError.middleware.ts new file mode 100644 index 000000000..bf13a7712 --- /dev/null +++ b/server/src/middlewares/errors/handleAppError.middleware.ts @@ -0,0 +1,21 @@ +import { Request, Response, NextFunction } from "express"; +import { AppError } from "../../errors/AppError"; + +const handleAppErrorMiddleware = ( + error: Error, + req: Request, + res: Response, + _: NextFunction +) => { + console.log(error.message); + if (error instanceof AppError) { + return res.status(error.statusCode).json({ + message: error.message, + }); + } + + return res.status(500).json({ + message: error.message, + }); +}; +export default handleAppErrorMiddleware; diff --git a/server/src/models/Pokemons.ts b/server/src/models/Pokemons.ts new file mode 100644 index 000000000..d4e34bf0b --- /dev/null +++ b/server/src/models/Pokemons.ts @@ -0,0 +1,243 @@ +import mongoose from "mongoose"; + +const Schema = mongoose.Schema; + +const pokemonSchema = new Schema({ + name: { + type: String, + required: [true, "Pokemon must have a name"], + }, + pokedexNumber: { + type: Number, + required: [true, "Required Field!"], + }, + imgName: { + type: String, + required: [true, "Required Field!"], + }, + generation: { + type: Number, + required: [true, "Required Field!"], + }, + evolutionStage: { + type: String, + enum: { + values: ["1", "2", "3", "Evolved", "Lower"], + message: "{VALUE} is not supported", + }, + }, + evolved: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "{VALUE} is not supported, must be 0 or 1", + }, + }, + familyID: { + type: Number, + }, + crossGen: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "{VALUE} is not supported, must be 0 or 1", + }, + }, + type1: { + type: String, + required: [true, "Required Field!"], + enum: { + values: [ + "grass", + "fire", + "water", + "bug", + "normal", + "poison", + "eletric", + "ground", + "fairy", + "fighting", + "psychic", + "rock", + "ghost", + "ice", + "dragon", + "dark", + "steel", + "flying", + ], + message: "{VALUE} is not supported", + }, + type2: { + type: String, + enum: { + values: [ + "grass", + "fire", + "water", + "bug", + "normal", + "poison", + "eletric", + "ground", + "fairy", + "fighting", + "psychic", + "rock", + "ghost", + "ice", + "dragon", + "dark", + "steel", + "flying", + ], + message: "{VALUE} is not supported", + }, + }, + weather1: { + type: String, + required: [true, "Required Field!"], + enum: { + values: [ + "Sunny/clear", + "Rainy", + "Partly cloud", + "Cloudy", + "Windy", + "Fog", + "Snow", + ], + message: "{VALUE} is not supported", + }, + }, + weather2: { + type: String, + enum: { + values: [ + "Sunny/clear", + "Rainy", + "Partly cloud", + "Cloudy", + "Windy", + "Fog", + "Snow", + ], + message: "{VALUE} is not supported", + }, + }, + statTotal: { + type: Number, + required: [true, "Required Field!"], + }, + atk: { + type: Number, + required: [true, "Required Field!"], + }, + def: { + type: Number, + required: [true, "Required Field!"], + }, + sta: { + type: Number, + required: [true, "Required Field!"], + }, + legendary: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1, 2], + message: "Must be 0, 1 or 2, got {VALUE}", + }, + }, + aquireable: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1, 2, 3], + message: "Must be 0, 1, 2 or 3, got {VALUE}", + }, + }, + spawns: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + regional: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + raidable: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1, 2, 3, 4, 5], + message: "Must be 0, 1, 2, 3, 4 or 5, got {VALUE}", + }, + }, + hatchable: { + type: Number, + required: [true, "Required Field!"], + max: [15, "Range 0 to 15, got {VALUE}"], + }, + shiny: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + nest: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + new: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + notGettable: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + futureEvolve: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + cp40: { + type: Number, + required: [true, "Required Field!"], + }, + cp39: { + type: Number, + required: [true, "Required Field!"], + }, + }, +}); + +export const PokemonsModel = mongoose.model("Pokemons", pokemonSchema); diff --git a/server/src/routers/pokemons/pokemons.routes.ts b/server/src/routers/pokemons/pokemons.routes.ts new file mode 100644 index 000000000..2a3461cfd --- /dev/null +++ b/server/src/routers/pokemons/pokemons.routes.ts @@ -0,0 +1,8 @@ +import { Router } from "express"; +import { createPokemonController } from "../../controllers"; + +const pokemonsRoute = Router(); + +pokemonsRoute.get("/", createPokemonController); + +export default pokemonsRoute; diff --git a/server/src/services/index.ts b/server/src/services/index.ts new file mode 100644 index 000000000..5378b6163 --- /dev/null +++ b/server/src/services/index.ts @@ -0,0 +1,3 @@ +import { createPokemonsService } from "./pokemons/createPokemons.service"; + +export { createPokemonsService }; diff --git a/server/src/services/pokemons/createPokemons.service.ts b/server/src/services/pokemons/createPokemons.service.ts new file mode 100644 index 000000000..8cd21075a --- /dev/null +++ b/server/src/services/pokemons/createPokemons.service.ts @@ -0,0 +1,7 @@ +import { PokemonsModel } from "../../models/Pokemons"; +import { AppError } from "../../errors/AppError"; +import { ICreatePokemon } from "../../interfaces/pokemons"; + +export const createPokemonsService = async (data: ICreatePokemon) => { + console.log(data); +}; From 4229a6830d3fcc9b89fe5a789c31a56d01b19ffb Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 14:26:32 -0300 Subject: [PATCH 07/79] Feat: created src with project main folders structure --- client/.gitignore | 24 + client/Dockerfile | 14 + client/index.html | 13 + client/package.json | 29 ++ client/public/vite.svg | 1 + client/src/App.tsx | 13 + client/src/assets/index.ts | 0 client/src/components/index.ts | 0 client/src/main.tsx | 9 + client/src/pages/index.ts | 0 client/src/providers/index.ts | 0 client/src/routes/index.ts | 0 client/src/service/index.ts | 0 client/src/style/index.ts | 0 client/src/vite-env.d.ts | 1 + client/tsconfig.json | 21 + client/tsconfig.node.json | 9 + client/vite.config.ts | 11 + client/yarn.lock | 851 +++++++++++++++++++++++++++++++++ 19 files changed, 996 insertions(+) create mode 100644 client/.gitignore create mode 100644 client/Dockerfile create mode 100644 client/index.html create mode 100644 client/package.json create mode 100644 client/public/vite.svg create mode 100644 client/src/App.tsx create mode 100644 client/src/assets/index.ts create mode 100644 client/src/components/index.ts create mode 100644 client/src/main.tsx create mode 100644 client/src/pages/index.ts create mode 100644 client/src/providers/index.ts create mode 100644 client/src/routes/index.ts create mode 100644 client/src/service/index.ts create mode 100644 client/src/style/index.ts create mode 100644 client/src/vite-env.d.ts create mode 100644 client/tsconfig.json create mode 100644 client/tsconfig.node.json create mode 100644 client/vite.config.ts create mode 100644 client/yarn.lock diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/client/Dockerfile b/client/Dockerfile new file mode 100644 index 000000000..9d2a857a4 --- /dev/null +++ b/client/Dockerfile @@ -0,0 +1,14 @@ +FROM node:16.15.1 + +WORKDIR /app + +COPY ./package*.json ./ +COPY ./yarn.lock ./ + +RUN yarn install + +COPY . . + +EXPOSE 3000 + +CMD ["yarn", "dev"] \ No newline at end of file diff --git a/client/index.html b/client/index.html new file mode 100644 index 000000000..e0d1c8408 --- /dev/null +++ b/client/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/client/package.json b/client/package.json new file mode 100644 index 000000000..760b27404 --- /dev/null +++ b/client/package.json @@ -0,0 +1,29 @@ +{ + "name": "client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.3.5", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-icons": "^4.8.0", + "react-paginate": "^8.2.0", + "react-router-dom": "^6.10.0" + }, + "devDependencies": { + "@types/axios": "^0.14.0", + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@types/react-paginate": "^7.1.1", + "@types/react-router-dom": "^5.3.3", + "@vitejs/plugin-react": "^3.1.0", + "typescript": "^4.9.3", + "vite": "^4.2.0" + } +} diff --git a/client/public/vite.svg b/client/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/App.tsx b/client/src/App.tsx new file mode 100644 index 000000000..5d09b5b01 --- /dev/null +++ b/client/src/App.tsx @@ -0,0 +1,13 @@ +import { useState } from "react"; + +function App() { + const [count, setCount] = useState(0); + + return ( + <> +

Hello World!

+ + ); +} + +export default App; diff --git a/client/src/assets/index.ts b/client/src/assets/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/components/index.ts b/client/src/components/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/main.tsx b/client/src/main.tsx new file mode 100644 index 000000000..3fd3a69d3 --- /dev/null +++ b/client/src/main.tsx @@ -0,0 +1,9 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App"; + +ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( + + + +); diff --git a/client/src/pages/index.ts b/client/src/pages/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/providers/index.ts b/client/src/providers/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/routes/index.ts b/client/src/routes/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/service/index.ts b/client/src/service/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/style/index.ts b/client/src/style/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/vite-env.d.ts b/client/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/client/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/client/tsconfig.json b/client/tsconfig.json new file mode 100644 index 000000000..3d0a51a86 --- /dev/null +++ b/client/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/client/tsconfig.node.json b/client/tsconfig.node.json new file mode 100644 index 000000000..9d31e2aed --- /dev/null +++ b/client/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/client/vite.config.ts b/client/vite.config.ts new file mode 100644 index 000000000..fd55ab1fd --- /dev/null +++ b/client/vite.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + server: { + host: true, + port: 3000, + }, +}); diff --git a/client/yarn.lock b/client/yarn.lock new file mode 100644 index 000000000..29eab8eba --- /dev/null +++ b/client/yarn.lock @@ -0,0 +1,851 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" + integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== + +"@babel/core@^7.20.12": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" + integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-compilation-targets" "^7.21.4" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.4" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.4" + "@babel/types" "^7.21.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/generator@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" + integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA== + dependencies: + "@babel/types" "^7.21.4" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" + integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg== + dependencies: + "@babel/compat-data" "^7.21.4" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.18.6": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== + dependencies: + "@babel/types" "^7.21.4" + +"@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.20.7", "@babel/parser@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== + +"@babel/plugin-transform-react-jsx-self@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54" + integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-react-jsx-source@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/template@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" + integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.4" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.4" + "@babel/types" "^7.21.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.18.6", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" + integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@esbuild/android-arm64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz#7b18cab5f4d93e878306196eed26b6d960c12576" + integrity sha512-QX48qmsEZW+gcHgTmAj+x21mwTz8MlYQBnzF6861cNdQGvj2jzzFjqH0EBabrIa/WVZ2CHolwMoqxVryqKt8+Q== + +"@esbuild/android-arm@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.16.tgz#5c47f6a7c2cada6ed4b4d4e72d8c66e76d812812" + integrity sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw== + +"@esbuild/android-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.16.tgz#8686a6e98359071ffd5312046551943e7244c51a" + integrity sha512-G4wfHhrrz99XJgHnzFvB4UwwPxAWZaZBOFXh+JH1Duf1I4vIVfuYY9uVLpx4eiV2D/Jix8LJY+TAdZ3i40tDow== + +"@esbuild/darwin-arm64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.16.tgz#aa79fbf447630ca0696a596beba962a775bbf394" + integrity sha512-/Ofw8UXZxuzTLsNFmz1+lmarQI6ztMZ9XktvXedTbt3SNWDn0+ODTwxExLYQ/Hod91EZB4vZPQJLoqLF0jvEzA== + +"@esbuild/darwin-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.16.tgz#d5d68ee510507104da7e7503224c647c957e163e" + integrity sha512-SzBQtCV3Pdc9kyizh36Ol+dNVhkDyIrGb/JXZqFq8WL37LIyrXU0gUpADcNV311sCOhvY+f2ivMhb5Tuv8nMOQ== + +"@esbuild/freebsd-arm64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.16.tgz#b00b4cc8c2e424907cfe3a607384ab24794edd52" + integrity sha512-ZqftdfS1UlLiH1DnS2u3It7l4Bc3AskKeu+paJSfk7RNOMrOxmeFDhLTMQqMxycP1C3oj8vgkAT6xfAuq7ZPRA== + +"@esbuild/freebsd-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.16.tgz#84af4430a07730b50bbc945a90cf7036c1853b76" + integrity sha512-rHV6zNWW1tjgsu0dKQTX9L0ByiJHHLvQKrWtnz8r0YYJI27FU3Xu48gpK2IBj1uCSYhJ+pEk6Y0Um7U3rIvV8g== + +"@esbuild/linux-arm64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.16.tgz#35571d15de6272c862d9ce6341372fb3cef0f266" + integrity sha512-8yoZhGkU6aHu38WpaM4HrRLTFc7/VVD9Q2SvPcmIQIipQt2I/GMTZNdEHXoypbbGao5kggLcxg0iBKjo0SQYKA== + +"@esbuild/linux-arm@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.16.tgz#b65c7cd5b0eadd08f91aab66b9dda81b6a4b2a70" + integrity sha512-n4O8oVxbn7nl4+m+ISb0a68/lcJClIbaGAoXwqeubj/D1/oMMuaAXmJVfFlRjJLu/ZvHkxoiFJnmbfp4n8cdSw== + +"@esbuild/linux-ia32@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.16.tgz#673a68cb251ce44a00a6422ada29064c5a1cd2c0" + integrity sha512-9ZBjlkdaVYxPNO8a7OmzDbOH9FMQ1a58j7Xb21UfRU29KcEEU3VTHk+Cvrft/BNv0gpWJMiiZ/f4w0TqSP0gLA== + +"@esbuild/linux-loong64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.16.tgz#477e2da34ab46ffdbf4740fa6441e80045249385" + integrity sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ== + +"@esbuild/linux-mips64el@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.16.tgz#e1e9687bbdaa831d7c34edc9278200982c1a4bf4" + integrity sha512-UPeRuFKCCJYpBbIdczKyHLAIU31GEm0dZl1eMrdYeXDH+SJZh/i+2cAmD3A1Wip9pIc5Sc6Kc5cFUrPXtR0XHA== + +"@esbuild/linux-ppc64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.16.tgz#2f19075d63622987e86e83a4b7866cd57b796c60" + integrity sha512-io6yShgIEgVUhExJejJ21xvO5QtrbiSeI7vYUnr7l+v/O9t6IowyhdiYnyivX2X5ysOVHAuyHW+Wyi7DNhdw6Q== + +"@esbuild/linux-riscv64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.16.tgz#bbf40a38f03ba2434fe69b5ceeec5d13c742b329" + integrity sha512-WhlGeAHNbSdG/I2gqX2RK2gfgSNwyJuCiFHMc8s3GNEMMHUI109+VMBfhVqRb0ZGzEeRiibi8dItR3ws3Lk+cA== + +"@esbuild/linux-s390x@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.16.tgz#d2b8c0779ccd2b7917cdf0fab8831a468e0f9c01" + integrity sha512-gHRReYsJtViir63bXKoFaQ4pgTyah4ruiMRQ6im9YZuv+gp3UFJkNTY4sFA73YDynmXZA6hi45en4BGhNOJUsw== + +"@esbuild/linux-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.16.tgz#da48b39cfdc1b12a74976625f583f031eac43590" + integrity sha512-mfiiBkxEbUHvi+v0P+TS7UnA9TeGXR48aK4XHkTj0ZwOijxexgMF01UDFaBX7Q6CQsB0d+MFNv9IiXbIHTNd4g== + +"@esbuild/netbsd-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.16.tgz#ddef985aed37cc81908d2573b66c0299dbc49037" + integrity sha512-n8zK1YRDGLRZfVcswcDMDM0j2xKYLNXqei217a4GyBxHIuPMGrrVuJ+Ijfpr0Kufcm7C1k/qaIrGy6eG7wvgmA== + +"@esbuild/openbsd-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.16.tgz#85035bf89efd66e9068bc72aa6bb85a2c317d090" + integrity sha512-lEEfkfsUbo0xC47eSTBqsItXDSzwzwhKUSsVaVjVji07t8+6KA5INp2rN890dHZeueXJAI8q0tEIfbwVRYf6Ew== + +"@esbuild/sunos-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.16.tgz#16338ecab854cb2d831cc9ee9cc21ef69566e1f3" + integrity sha512-jlRjsuvG1fgGwnE8Afs7xYDnGz0dBgTNZfgCK6TlvPH3Z13/P5pi6I57vyLE8qZYLrGVtwcm9UbUx1/mZ8Ukag== + +"@esbuild/win32-arm64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.16.tgz#423f46bb744aff897a5f74435469e1ef4952e343" + integrity sha512-TzoU2qwVe2boOHl/3KNBUv2PNUc38U0TNnzqOAcgPiD/EZxT2s736xfC2dYQbszAwo4MKzzwBV0iHjhfjxMimg== + +"@esbuild/win32-ia32@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.16.tgz#1978be5b192c7063bd2c8d5960eb213e1964740e" + integrity sha512-B8b7W+oo2yb/3xmwk9Vc99hC9bNolvqjaTZYEfMQhzdpBsjTvZBlXQ/teUE55Ww6sg//wlcDjOaqldOKyigWdA== + +"@esbuild/win32-x64@0.17.16": + version "0.17.16" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.16.tgz#260f19b0a3300d22c3a3f52722c671dc561edaa3" + integrity sha512-xJ7OH/nanouJO9pf03YsL9NAFQBHd8AqfrQd7Pf5laGyyTt/gToul6QYOA/i5i/q8y9iaM5DQFNTgpi995VkOg== + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@remix-run/router@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.5.0.tgz#57618e57942a5f0131374a9fdb0167e25a117fdc" + integrity sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg== + +"@types/axios@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" + integrity sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ== + dependencies: + axios "*" + +"@types/history@^4.7.11": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-dom@^18.0.11": + version "18.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" + integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== + dependencies: + "@types/react" "*" + +"@types/react-paginate@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/react-paginate/-/react-paginate-7.1.1.tgz#81cbe7bfcf2af60b9d784a56cd0e5d870675c68c" + integrity sha512-94cEJHfBaINba2XGQOWFJF/tYe+AImIhOPqMCfqyeFOgk0qUpDZyDOOW76A1rgdtWndR8UwsMPgV/uuTM8vZ7w== + dependencies: + "@types/react" "*" + +"@types/react-router-dom@^5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*": + version "5.1.20" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c" + integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react@*", "@types/react@^18.0.28": + version "18.0.35" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.35.tgz#192061cb1044fe01f2d3a94272cd35dd50502741" + integrity sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@vitejs/plugin-react@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240" + integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g== + dependencies: + "@babel/core" "^7.20.12" + "@babel/plugin-transform-react-jsx-self" "^7.18.6" + "@babel/plugin-transform-react-jsx-source" "^7.19.6" + magic-string "^0.27.0" + react-refresh "^0.14.0" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@*, axios@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.5.tgz#e07209b39a0d11848e3e341fa087acd71dadc542" + integrity sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +browserslist@^4.21.3: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +caniuse-lite@^1.0.30001449: + version "1.0.30001478" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a" + integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +debug@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +electron-to-chromium@^1.4.284: + version "1.4.360" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.360.tgz#7a24cf81588d6af82ab17d77715cdc09dacfafb2" + integrity sha512-EP/jdF15S+l3iSSzgUpUqeazvkbVFXNuVxwwLMVUSie3lUeH1HH70gKe0IS7TASB/0h5QPG2bLMzv2jelSztIQ== + +esbuild@^0.17.5: + version "0.17.16" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.16.tgz#5efec24a8ff29e0c157359f27e1b5532a728b720" + integrity sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg== + optionalDependencies: + "@esbuild/android-arm" "0.17.16" + "@esbuild/android-arm64" "0.17.16" + "@esbuild/android-x64" "0.17.16" + "@esbuild/darwin-arm64" "0.17.16" + "@esbuild/darwin-x64" "0.17.16" + "@esbuild/freebsd-arm64" "0.17.16" + "@esbuild/freebsd-x64" "0.17.16" + "@esbuild/linux-arm" "0.17.16" + "@esbuild/linux-arm64" "0.17.16" + "@esbuild/linux-ia32" "0.17.16" + "@esbuild/linux-loong64" "0.17.16" + "@esbuild/linux-mips64el" "0.17.16" + "@esbuild/linux-ppc64" "0.17.16" + "@esbuild/linux-riscv64" "0.17.16" + "@esbuild/linux-s390x" "0.17.16" + "@esbuild/linux-x64" "0.17.16" + "@esbuild/netbsd-x64" "0.17.16" + "@esbuild/openbsd-x64" "0.17.16" + "@esbuild/sunos-x64" "0.17.16" + "@esbuild/win32-arm64" "0.17.16" + "@esbuild/win32-ia32" "0.17.16" + "@esbuild/win32-x64" "0.17.16" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.3.4: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +postcss@^8.4.21: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prop-types@^15: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-icons@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.8.0.tgz#621e900caa23b912f737e41be57f27f6b2bff445" + integrity sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-paginate@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/react-paginate/-/react-paginate-8.2.0.tgz#947c3dcb444a6c16c1bcf8361871aa135baa3dcd" + integrity sha512-sJCz1PW+9PNIjUSn919nlcRVuleN2YPoFBOvL+6TPgrH/3lwphqiSOgdrLafLdyLDxsgK+oSgviqacF4hxsDIw== + dependencies: + prop-types "^15" + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-router-dom@^6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.10.0.tgz#090ddc5c84dc41b583ce08468c4007c84245f61f" + integrity sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg== + dependencies: + "@remix-run/router" "1.5.0" + react-router "6.10.0" + +react-router@6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.10.0.tgz#230f824fde9dd0270781b5cb497912de32c0a971" + integrity sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ== + dependencies: + "@remix-run/router" "1.5.0" + +react@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +resolve@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup@^3.18.0: + version "3.20.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.20.2.tgz#f798c600317f216de2e4ad9f4d9ab30a89b690ff" + integrity sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg== + optionalDependencies: + fsevents "~2.3.2" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +typescript@^4.9.3: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +vite@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.2.1.tgz#6c2eb337b0dfd80a9ded5922163b94949d7fc254" + integrity sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg== + dependencies: + esbuild "^0.17.5" + postcss "^8.4.21" + resolve "^1.22.1" + rollup "^3.18.0" + optionalDependencies: + fsevents "~2.3.2" + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From 99fa87d986e30fbe292cdacbcde0f2a0d68289dc Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 14:27:32 -0300 Subject: [PATCH 08/79] Feat: added project dependencies --- server/package.json | 19 +- server/yarn.lock | 977 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 995 insertions(+), 1 deletion(-) create mode 100644 server/yarn.lock diff --git a/server/package.json b/server/package.json index 0a9f4dcd2..c8514201f 100644 --- a/server/package.json +++ b/server/package.json @@ -4,6 +4,23 @@ "main": "index.js", "license": "MIT", "scripts": { - "dev": "nodemon -L src/server.js" + "build": "tsc", + "dev": "ts-node src/app.ts" + }, + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "express-async-errors": "^3.1.1", + "mongoose": "^7.0.3", + "reflect-metadata": "^0.1.13" + }, + "devDependencies": { + "@types/cors": "^2.8.13", + "@types/express": "^4.17.17", + "@types/mongoose": "^5.11.97", + "nodemon": "^2.0.22", + "ts-node": "^10.9.1", + "typescript": "^5.0.4" } } diff --git a/server/yarn.lock b/server/yarn.lock new file mode 100644 index 000000000..78ee5a913 --- /dev/null +++ b/server/yarn.lock @@ -0,0 +1,977 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/cors@^2.8.13": + version "2.8.13" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.13.tgz#b8ade22ba455a1b8cb3b5d3f35910fd204f84f94" + integrity sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@^4.17.17": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/mongoose@^5.11.97": + version "5.11.97" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.11.97.tgz#80b0357f3de6807eb597262f52e49c3e13ee14d8" + integrity sha512-cqwOVYT3qXyLiGw7ueU2kX9noE8DPGRY6z8eUxudhXY8NZ7DMKYAxyZkLSevGfhCX3dO/AoX5/SO9lAzfjon0Q== + dependencies: + mongoose "*" + +"@types/node@*": + version "18.15.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" + integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/serve-static@*": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/webidl-conversions@*": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz#2b8e60e33906459219aa587e9d1a612ae994cfe7" + integrity sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog== + +"@types/whatwg-url@^8.2.1": + version "8.2.2" + resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.2.tgz#749d5b3873e845897ada99be4448041d4cc39e63" + integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA== + dependencies: + "@types/node" "*" + "@types/webidl-conversions" "*" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +bson@^5.0.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-5.2.0.tgz#c81d35dd30e2798203e5422a639780ea98dd25ba" + integrity sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4.x: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +express-async-errors@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/express-async-errors/-/express-async-errors-3.1.1.tgz#6053236d61d21ddef4892d6bd1d736889fc9da41" + integrity sha512-h6aK1da4tpqWSbyCa3FxB/V6Ehd4EEB15zyQq9qe75OZBp0krinNKuH4rAY+S/U/2I36vdLAUFSjQJ+TFmODng== + +express@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== + +inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +kareem@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.5.1.tgz#7b8203e11819a8e77a34b3517d3ead206764d15d" + integrity sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +mongodb-connection-string-url@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz#57901bf352372abdde812c81be47b75c6b2ec5cf" + integrity sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ== + dependencies: + "@types/whatwg-url" "^8.2.1" + whatwg-url "^11.0.0" + +mongodb@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-5.1.0.tgz#e551f9e496777bde9173e51d16c163ab2c805b9d" + integrity sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw== + dependencies: + bson "^5.0.1" + mongodb-connection-string-url "^2.6.0" + socks "^2.7.1" + optionalDependencies: + saslprep "^1.0.3" + +mongoose@*, mongoose@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-7.0.3.tgz#576375acb436f96cd3350fb63fddbac7ae51ff9c" + integrity sha512-3n8vc1/mssuxKa6vfghSocp3MeiCFYzhX36Ok+PsDNNYzHC9tw3rNkAMLemIwZ2jgXqkZ7CfKOxkzjp/d/SWfg== + dependencies: + bson "^5.0.1" + kareem "2.5.1" + mongodb "5.1.0" + mpath "0.9.0" + mquery "5.0.0" + ms "2.1.3" + sift "16.0.1" + +mpath@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.9.0.tgz#0c122fe107846e31fc58c75b09c35514b3871904" + integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== + +mquery@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-5.0.0.tgz#a95be5dfc610b23862df34a47d3e5d60e110695d" + integrity sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg== + dependencies: + debug "4.x" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +nodemon@^2.0.22: + version "2.0.22" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" + integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== + dependencies: + chokidar "^3.5.2" + debug "^3.2.7" + ignore-by-default "^1.0.1" + minimatch "^3.1.2" + pstree.remy "^1.1.8" + semver "^5.7.1" + simple-update-notifier "^1.0.7" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== + +punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect-metadata@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== + +safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saslprep@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" + integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== + dependencies: + sparse-bitfield "^3.0.3" + +semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +sift@16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053" + integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ== + +simple-update-notifier@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" + integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== + dependencies: + semver "~7.0.0" + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== + dependencies: + memory-pager "^1.0.2" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== + dependencies: + nopt "~1.0.10" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From 471fcc3e409c788aae768bf1c58f628653be94f6 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:11:09 -0300 Subject: [PATCH 09/79] Feat: created and set some files to ignore --- server/.dockerignore | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 server/.dockerignore diff --git a/server/.dockerignore b/server/.dockerignore new file mode 100644 index 000000000..1d7d55faa --- /dev/null +++ b/server/.dockerignore @@ -0,0 +1,5 @@ +Dockerfile +.dockerignore +node_modules +npm-debug.log +dist \ No newline at end of file From 541630e210a2552376c14fec58dcc8a52642867d Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:12:47 -0300 Subject: [PATCH 10/79] Feat: created and added types of pokemons post route --- server/src/interfaces/pokemons/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/interfaces/pokemons/index.ts b/server/src/interfaces/pokemons/index.ts index 5140c4f5e..8b4558882 100644 --- a/server/src/interfaces/pokemons/index.ts +++ b/server/src/interfaces/pokemons/index.ts @@ -2,7 +2,7 @@ export interface ICreatePokemon { name: string; pokedexNumber: number; imgName: string; - generation: string; + generation: number; evolutionStage?: string; evolved: number; familyID?: number; From 2595d71bad29e5032c77dc377ea52068d0194aaa Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:14:48 -0300 Subject: [PATCH 11/79] Feat:created to be main exports controllers file, added listPokemonsController in exports --- server/src/controllers/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/controllers/index.ts b/server/src/controllers/index.ts index c4b93449b..b563898ca 100644 --- a/server/src/controllers/index.ts +++ b/server/src/controllers/index.ts @@ -1,3 +1,4 @@ import { createPokemonController } from "./pokemons/createPokemons.controller"; +import { listPokemonsController } from "./pokemons/listPokemons.controller"; -export { createPokemonController }; +export { createPokemonController, listPokemonsController }; From 172ec96ec486bf830de98843b7e00a0d78b88339 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:16:28 -0300 Subject: [PATCH 12/79] Feat: added route to get and create an pokemon --- server/src/routers/pokemons/pokemons.routes.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/src/routers/pokemons/pokemons.routes.ts b/server/src/routers/pokemons/pokemons.routes.ts index 2a3461cfd..d6fe863a0 100644 --- a/server/src/routers/pokemons/pokemons.routes.ts +++ b/server/src/routers/pokemons/pokemons.routes.ts @@ -1,8 +1,13 @@ import { Router } from "express"; -import { createPokemonController } from "../../controllers"; +import { + createPokemonController, + listPokemonsController, +} from "../../controllers"; const pokemonsRoute = Router(); -pokemonsRoute.get("/", createPokemonController); +pokemonsRoute.get("/", listPokemonsController); + +pokemonsRoute.post("/", createPokemonController); export default pokemonsRoute; From 8cc87d0015d7399747b09ea9fbf800473e698762 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:17:54 -0300 Subject: [PATCH 13/79] Feat: created to be servies main files exports, added create and list all services --- server/src/services/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/services/index.ts b/server/src/services/index.ts index 5378b6163..b655f39d5 100644 --- a/server/src/services/index.ts +++ b/server/src/services/index.ts @@ -1,3 +1,4 @@ import { createPokemonsService } from "./pokemons/createPokemons.service"; +import { listPokemonsService } from "./pokemons/listPokemons.service"; -export { createPokemonsService }; +export { createPokemonsService, listPokemonsService }; From 13fdd92b3e210e8669a2b09859e6458c78485306 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:19:20 -0300 Subject: [PATCH 14/79] Feat: added healthcheck --- docker-compose.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 9c2a070cb..9b990fa00 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,6 +42,12 @@ services: - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=secret - MONGO_INITDB_DATABASE=pratical_test + healthcheck: + test: ["CMD-SHELL", "pg_isready -U root -d pratical_test"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 5s networks: mern-stack-network: volumes: From 2632cdf404103b4015cabf0964d1c4fcbae03ec4 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:20:38 -0300 Subject: [PATCH 15/79] Feat: created controller to list all pokemons --- server/src/controllers/pokemons/listPokemons.controller.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 server/src/controllers/pokemons/listPokemons.controller.ts diff --git a/server/src/controllers/pokemons/listPokemons.controller.ts b/server/src/controllers/pokemons/listPokemons.controller.ts new file mode 100644 index 000000000..c1fbcbfa1 --- /dev/null +++ b/server/src/controllers/pokemons/listPokemons.controller.ts @@ -0,0 +1,7 @@ +import { Request, Response } from "express"; +import { listPokemonsService } from "../../services"; + +export const listPokemonsController = async (req: Request, res: Response) => { + const pokemonsList = await listPokemonsService(); + return res.status(200).json(pokemonsList); +}; From bec0a365d5aba7677f2e6eb36d300bea988be40a Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 16:21:10 -0300 Subject: [PATCH 16/79] Feat: created to list all pokemons in database --- server/src/services/pokemons/listPokemons.service.ts | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 server/src/services/pokemons/listPokemons.service.ts diff --git a/server/src/services/pokemons/listPokemons.service.ts b/server/src/services/pokemons/listPokemons.service.ts new file mode 100644 index 000000000..f9dde5c31 --- /dev/null +++ b/server/src/services/pokemons/listPokemons.service.ts @@ -0,0 +1,6 @@ +import { PokemonsModel } from "../../models/Pokemons"; + +export const listPokemonsService = async () => { + const pokemonsList = await PokemonsModel.find({}); + return pokemonsList; +}; From 55b012753a0dd839105ee8e6284273f472447812 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 20:18:20 -0300 Subject: [PATCH 17/79] Feat: created to handle request and response --- server/src/controllers/pokemons/createPokemons.controller.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/controllers/pokemons/createPokemons.controller.ts b/server/src/controllers/pokemons/createPokemons.controller.ts index 377afa9eb..2efe6f43f 100644 --- a/server/src/controllers/pokemons/createPokemons.controller.ts +++ b/server/src/controllers/pokemons/createPokemons.controller.ts @@ -3,6 +3,8 @@ import { createPokemonsService } from "../../services"; export const createPokemonController = async (req: Request, res: Response) => { const data = req.body; + const newPokemon = await createPokemonsService(data); - return res.status(201).json({ message: "Done" }); + + return res.status(201).json(newPokemon); }; From d1221f86bded341010342c5417b86c27b2a7e065 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 20:19:47 -0300 Subject: [PATCH 18/79] Feat: created to handle errors and set data in the database --- .../pokemons/createPokemons.service.ts | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/server/src/services/pokemons/createPokemons.service.ts b/server/src/services/pokemons/createPokemons.service.ts index 8cd21075a..63c2e17ac 100644 --- a/server/src/services/pokemons/createPokemons.service.ts +++ b/server/src/services/pokemons/createPokemons.service.ts @@ -3,5 +3,53 @@ import { AppError } from "../../errors/AppError"; import { ICreatePokemon } from "../../interfaces/pokemons"; export const createPokemonsService = async (data: ICreatePokemon) => { - console.log(data); + const foundPokemonName = await PokemonsModel.findOne({ + name: data.name, + }); + + const foundPokedex = await PokemonsModel.findOne({ + pokedexNumber: data.pokedexNumber, + }); + + if (foundPokemonName) { + throw new AppError(400, "Pokemon name already registered"); + } else if (foundPokedex) { + throw new AppError(400, "Pokedex number already in use"); + } + + const newPokemon = new PokemonsModel({ + name: data.name, + pokedexNumber: data.pokedexNumber, + imgName: data.imgName, + generation: data.generation, + evolutionStage: data.evolutionStage, + evolved: data.evolved, + familyID: data.familyID, + crossGen: data.crossGen, + type1: data.type1, + type2: data.type2, + weather1: data.weather1, + weather2: data.weather2, + statTotal: data.statTotal, + atk: data.atk, + def: data.def, + sta: data.sta, + legendary: data.legendary, + aquireable: data.aquireable, + spawns: data.spawns, + regional: data.regional, + raidable: data.raidable, + hatchable: data.hatchable, + shiny: data.shiny, + nest: data.nest, + new: data.new, + notGettable: data.notGettable, + futureEvolve: data.futureEvolve, + cp40: data.cp40, + cp39: data.cp39, + }); + + await newPokemon.save(); + + return newPokemon; }; From d2f0fd3d1e7319e70343f1d08a4ea290293061ea Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 20:22:06 -0300 Subject: [PATCH 19/79] Fix: fixed type1 scope closure --- server/src/models/Pokemons.ts | 342 +++++++++++++++++----------------- 1 file changed, 173 insertions(+), 169 deletions(-) diff --git a/server/src/models/Pokemons.ts b/server/src/models/Pokemons.ts index d4e34bf0b..57cd11087 100644 --- a/server/src/models/Pokemons.ts +++ b/server/src/models/Pokemons.ts @@ -1,14 +1,15 @@ import mongoose from "mongoose"; +import { ICreatePokemon } from "../interfaces/pokemons"; -const Schema = mongoose.Schema; - -const pokemonSchema = new Schema({ +const pokemonSchema = new mongoose.Schema({ name: { type: String, + unique: true, required: [true, "Pokemon must have a name"], }, pokedexNumber: { type: Number, + unique: true, required: [true, "Required Field!"], }, imgName: { @@ -71,173 +72,176 @@ const pokemonSchema = new Schema({ ], message: "{VALUE} is not supported", }, - type2: { - type: String, - enum: { - values: [ - "grass", - "fire", - "water", - "bug", - "normal", - "poison", - "eletric", - "ground", - "fairy", - "fighting", - "psychic", - "rock", - "ghost", - "ice", - "dragon", - "dark", - "steel", - "flying", - ], - message: "{VALUE} is not supported", - }, - }, - weather1: { - type: String, - required: [true, "Required Field!"], - enum: { - values: [ - "Sunny/clear", - "Rainy", - "Partly cloud", - "Cloudy", - "Windy", - "Fog", - "Snow", - ], - message: "{VALUE} is not supported", - }, - }, - weather2: { - type: String, - enum: { - values: [ - "Sunny/clear", - "Rainy", - "Partly cloud", - "Cloudy", - "Windy", - "Fog", - "Snow", - ], - message: "{VALUE} is not supported", - }, - }, - statTotal: { - type: Number, - required: [true, "Required Field!"], - }, - atk: { - type: Number, - required: [true, "Required Field!"], - }, - def: { - type: Number, - required: [true, "Required Field!"], - }, - sta: { - type: Number, - required: [true, "Required Field!"], - }, - legendary: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1, 2], - message: "Must be 0, 1 or 2, got {VALUE}", - }, - }, - aquireable: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1, 2, 3], - message: "Must be 0, 1, 2 or 3, got {VALUE}", - }, - }, - spawns: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1], - message: "Must be 0 or 1, got {VALUE}", - }, - }, - regional: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1], - message: "Must be 0 or 1, got {VALUE}", - }, - }, - raidable: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1, 2, 3, 4, 5], - message: "Must be 0, 1, 2, 3, 4 or 5, got {VALUE}", - }, - }, - hatchable: { - type: Number, - required: [true, "Required Field!"], - max: [15, "Range 0 to 15, got {VALUE}"], - }, - shiny: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1], - message: "Must be 0 or 1, got {VALUE}", - }, - }, - nest: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1], - message: "Must be 0 or 1, got {VALUE}", - }, - }, - new: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1], - message: "Must be 0 or 1, got {VALUE}", - }, - }, - notGettable: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1], - message: "Must be 0 or 1, got {VALUE}", - }, - }, - futureEvolve: { - type: Number, - required: [true, "Required Field!"], - enum: { - values: [0, 1], - message: "Must be 0 or 1, got {VALUE}", - }, - }, - cp40: { - type: Number, - required: [true, "Required Field!"], - }, - cp39: { - type: Number, - required: [true, "Required Field!"], + }, + type2: { + type: String, + enum: { + values: [ + "grass", + "fire", + "water", + "bug", + "normal", + "poison", + "eletric", + "ground", + "fairy", + "fighting", + "psychic", + "rock", + "ghost", + "ice", + "dragon", + "dark", + "steel", + "flying", + ], + message: "{VALUE} is not supported", + }, + }, + weather1: { + type: String, + required: [true, "Required Field!"], + enum: { + values: [ + "Sunny/clear", + "Rainy", + "Partly cloud", + "Cloudy", + "Windy", + "Fog", + "Snow", + ], + message: "{VALUE} is not supported", + }, + }, + weather2: { + type: String, + enum: { + values: [ + "Sunny/clear", + "Rainy", + "Partly cloud", + "Cloudy", + "Windy", + "Fog", + "Snow", + ], + message: "{VALUE} is not supported", + }, + }, + statTotal: { + type: Number, + required: [true, "Required Field!"], + }, + atk: { + type: Number, + required: [true, "Required Field!"], + }, + def: { + type: Number, + required: [true, "Required Field!"], + }, + sta: { + type: Number, + required: [true, "Required Field!"], + }, + legendary: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1, 2], + message: "Must be 0, 1 or 2, got {VALUE}", + }, + }, + aquireable: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1, 2, 3], + message: "Must be 0, 1, 2 or 3, got {VALUE}", + }, + }, + spawns: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + regional: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + raidable: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1, 2, 3, 4, 5], + message: "Must be 0, 1, 2, 3, 4 or 5, got {VALUE}", }, }, + hatchable: { + type: Number, + required: [true, "Required Field!"], + max: [15, "Range 0 to 15, got {VALUE}"], + }, + shiny: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + nest: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + new: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + notGettable: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + futureEvolve: { + type: Number, + required: [true, "Required Field!"], + enum: { + values: [0, 1], + message: "Must be 0 or 1, got {VALUE}", + }, + }, + cp40: { + type: Number, + required: [true, "Required Field!"], + }, + cp39: { + type: Number, + required: [true, "Required Field!"], + }, }); -export const PokemonsModel = mongoose.model("Pokemons", pokemonSchema); +export const PokemonsModel = mongoose.model( + "Pokemons", + pokemonSchema +); From 1e34af6d9936fbe9a15aec45452357d541e2fca5 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 20:22:35 -0300 Subject: [PATCH 20/79] Fix: removing console.logs --- server/src/services/pokemons/listPokemons.service.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/services/pokemons/listPokemons.service.ts b/server/src/services/pokemons/listPokemons.service.ts index f9dde5c31..408777519 100644 --- a/server/src/services/pokemons/listPokemons.service.ts +++ b/server/src/services/pokemons/listPokemons.service.ts @@ -2,5 +2,6 @@ import { PokemonsModel } from "../../models/Pokemons"; export const listPokemonsService = async () => { const pokemonsList = await PokemonsModel.find({}); + return pokemonsList; }; From b05040cd0878f108d70b0633607127c4b8f0f1b4 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Thu, 13 Apr 2023 20:23:20 -0300 Subject: [PATCH 21/79] Feat: added pg and reflect-metadata to dependencies --- server/package.json | 4 +- server/yarn.lock | 262 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 261 insertions(+), 5 deletions(-) diff --git a/server/package.json b/server/package.json index c8514201f..fd59f21eb 100644 --- a/server/package.json +++ b/server/package.json @@ -5,7 +5,7 @@ "license": "MIT", "scripts": { "build": "tsc", - "dev": "ts-node src/app.ts" + "dev": "ts-node-dev --ignore-watch node_modules src/app.ts" }, "dependencies": { "cors": "^2.8.5", @@ -13,6 +13,7 @@ "express": "^4.18.2", "express-async-errors": "^3.1.1", "mongoose": "^7.0.3", + "pg": "^8.10.0", "reflect-metadata": "^0.1.13" }, "devDependencies": { @@ -21,6 +22,7 @@ "@types/mongoose": "^5.11.97", "nodemon": "^2.0.22", "ts-node": "^10.9.1", + "ts-node-dev": "^2.0.0", "typescript": "^5.0.4" } } diff --git a/server/yarn.lock b/server/yarn.lock index 78ee5a913..24f0f71da 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -123,6 +123,16 @@ "@types/mime" "*" "@types/node" "*" +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + integrity sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ== + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== + "@types/webidl-conversions@*": version "7.0.0" resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz#2b8e60e33906459219aa587e9d1a612ae994cfe7" @@ -225,6 +235,16 @@ bson@^5.0.1: resolved "https://registry.yarnpkg.com/bson/-/bson-5.2.0.tgz#c81d35dd30e2798203e5422a639780ea98dd25ba" integrity sha512-HevkSpDbpUfsrHWmWiAsNavANKYIErV2ePXllp1bwq5CDreAaFVj6RVlZpJnxK4WWDCJ/5jMUpaY6G526q3Hjg== +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -238,7 +258,7 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.2" -chokidar@^3.5.2: +chokidar@^3.5.1, chokidar@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -334,6 +354,13 @@ dotenv@^16.0.3: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== +dynamic-dedupe@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" + integrity sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ== + dependencies: + xtend "^4.0.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -426,6 +453,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -452,6 +484,18 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -492,7 +536,15 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== -inherits@2.0.4: +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -514,6 +566,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -578,13 +637,23 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -minimatch@^3.1.2: +minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mongodb-connection-string-url@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz#57901bf352372abdde812c81be47b75c6b2ec5cf" @@ -694,21 +763,116 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +packet-reader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +pg-connection-string@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" + integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== + +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-pool@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" + integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== + +pg-protocol@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== + +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg@^8.10.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.10.0.tgz#5b8379c9b4a36451d110fc8cd98fc325fe62ad24" + integrity sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ== + dependencies: + buffer-writer "2.0.0" + packet-reader "1.0.0" + pg-connection-string "^2.5.0" + pg-pool "^3.6.0" + pg-protocol "^1.6.0" + pg-types "^2.1.0" + pgpass "1.x" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -761,6 +925,22 @@ reflect-metadata@^0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== +resolve@^1.0.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + safe-buffer@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -856,6 +1036,19 @@ socks@^2.7.1: ip "^2.0.0" smart-buffer "^4.2.0" +source-map-support@^0.5.12: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sparse-bitfield@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" @@ -863,11 +1056,26 @@ sparse-bitfield@^3.0.3: dependencies: memory-pager "^1.0.2" +split2@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -875,6 +1083,11 @@ supports-color@^5.5.0: dependencies: has-flag "^3.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -901,7 +1114,28 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" -ts-node@^10.9.1: +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-node-dev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-2.0.0.tgz#bdd53e17ab3b5d822ef519928dc6b4a7e0f13065" + integrity sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w== + dependencies: + chokidar "^3.5.1" + dynamic-dedupe "^0.3.0" + minimist "^1.2.6" + mkdirp "^1.0.4" + resolve "^1.0.0" + rimraf "^2.6.1" + source-map-support "^0.5.12" + tree-kill "^1.2.2" + ts-node "^10.4.0" + tsconfig "^7.0.0" + +ts-node@^10.4.0, ts-node@^10.9.1: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== @@ -920,6 +1154,16 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -971,6 +1215,16 @@ whatwg-url@^11.0.0: tr46 "^3.0.0" webidl-conversions "^7.0.0" +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" From e98e96daf0b474417cc802fe3366185044ba9895 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:18:51 -0300 Subject: [PATCH 22/79] Feat: added updatePokemonController in exports --- server/src/controllers/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/src/controllers/index.ts b/server/src/controllers/index.ts index b563898ca..b5cb604a2 100644 --- a/server/src/controllers/index.ts +++ b/server/src/controllers/index.ts @@ -1,4 +1,11 @@ import { createPokemonController } from "./pokemons/createPokemons.controller"; import { listPokemonsController } from "./pokemons/listPokemons.controller"; +import { retrievePokemonController } from "./pokemons/retrievePokemons.controller"; +import { updatePokemonController } from "./pokemons/updatePokemons.controller"; -export { createPokemonController, listPokemonsController }; +export { + createPokemonController, + listPokemonsController, + retrievePokemonController, + updatePokemonController, +}; From 26ad053aeaf795dc396c759d2ddf98c33be6207d Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:20:14 -0300 Subject: [PATCH 23/79] Feat: added name nad pokedexNumber in update interface --- server/src/interfaces/pokemons/index.ts | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/server/src/interfaces/pokemons/index.ts b/server/src/interfaces/pokemons/index.ts index 8b4558882..b70fd15fd 100644 --- a/server/src/interfaces/pokemons/index.ts +++ b/server/src/interfaces/pokemons/index.ts @@ -29,3 +29,35 @@ export interface ICreatePokemon { cp40: number; cp39: number; } + +export interface IUpdatePokemon { + name?: string; + pokedexNumber?: number; + imgName?: string; + generation?: number; + evolutionStage?: string; + evolved?: number; + familyID?: number; + crossGen?: number; + type1?: string; + type2?: string; + weather1?: string; + weather2?: string; + statTotal?: number; + atk?: number; + def?: number; + sta?: number; + legendary?: number; + aquireable?: number; + spawns?: number; + regional?: number; + raidable?: number; + hatchable?: number; + shiny?: number; + nest?: number; + new?: number; + notGettable?: number; + futureEvolve?: number; + cp40?: number; + cp39?: number; +} From 93f5216ebd784546850540c54ecefd7554601561 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:21:54 -0300 Subject: [PATCH 24/79] Feat: added schema validation middleware in update route --- server/src/routers/pokemons/pokemons.routes.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/src/routers/pokemons/pokemons.routes.ts b/server/src/routers/pokemons/pokemons.routes.ts index d6fe863a0..1380a308c 100644 --- a/server/src/routers/pokemons/pokemons.routes.ts +++ b/server/src/routers/pokemons/pokemons.routes.ts @@ -2,7 +2,11 @@ import { Router } from "express"; import { createPokemonController, listPokemonsController, + retrievePokemonController, + updatePokemonController, } from "../../controllers"; +import { schemaValidation } from "../../middlewares/schema/schemaValidation.middleware"; +import { updatePokemonSchema } from "../../schemas/updatePokemon.schema"; const pokemonsRoute = Router(); @@ -10,4 +14,8 @@ pokemonsRoute.get("/", listPokemonsController); pokemonsRoute.post("/", createPokemonController); +pokemonsRoute.get("/:pokemonID", retrievePokemonController); + +pokemonsRoute.patch("/:pokemonID", schemaValidation(updatePokemonSchema), updatePokemonController); + export default pokemonsRoute; From fcc8f3768fa9df05937caac6065627c145bc6eaf Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:24:02 -0300 Subject: [PATCH 25/79] Feat: update controller added to main exports --- server/src/services/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/services/index.ts b/server/src/services/index.ts index b655f39d5..fc78eb7be 100644 --- a/server/src/services/index.ts +++ b/server/src/services/index.ts @@ -1,4 +1,6 @@ import { createPokemonsService } from "./pokemons/createPokemons.service"; import { listPokemonsService } from "./pokemons/listPokemons.service"; +import { retrievePokemonService } from "./pokemons/retrievePokemons.service"; +import { updatePokemonService } from "./pokemons/updatePokemons.service"; -export { createPokemonsService, listPokemonsService }; +export { createPokemonsService, listPokemonsService, retrievePokemonService, updatePokemonService }; From 983aa0711eb5dbad0b3a4c972ad386b98ebcdd77 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:25:12 -0300 Subject: [PATCH 26/79] Feat: schema created to validate fields on update route --- .../schema/schemaValidation.middleware.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 server/src/middlewares/schema/schemaValidation.middleware.ts diff --git a/server/src/middlewares/schema/schemaValidation.middleware.ts b/server/src/middlewares/schema/schemaValidation.middleware.ts new file mode 100644 index 000000000..9702e753e --- /dev/null +++ b/server/src/middlewares/schema/schemaValidation.middleware.ts @@ -0,0 +1,17 @@ +import { Request, Response, NextFunction } from "express"; +import { AnySchema, ValidationError } from "yup"; + +export const schemaValidation = + (schema: AnySchema) => async (req: Request, res: Response, next: NextFunction) => { + try { + const validated = await schema.validate(req.body); + req.body = validated; + next(); + } catch (error) { + if (error instanceof ValidationError) { + return res + .status(400) + .json({ error: error.name, field: error.path, message: error.message }); + } + } + }; From c5d3c1ad11afc18e633344e77bbc5b79cf27efb6 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:25:49 -0300 Subject: [PATCH 27/79] Feat: schema created to validate fields on update route --- server/src/schemas/updatePokemon.schema.ts | 161 +++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 server/src/schemas/updatePokemon.schema.ts diff --git a/server/src/schemas/updatePokemon.schema.ts b/server/src/schemas/updatePokemon.schema.ts new file mode 100644 index 000000000..eabf01b99 --- /dev/null +++ b/server/src/schemas/updatePokemon.schema.ts @@ -0,0 +1,161 @@ +import * as yup from "yup"; + +const type1AllowedValues = [ + "grass", + "fire", + "water", + "bug", + "normal", + "poison", + "eletric", + "ground", + "fairy", + "fighting", + "psychic", + "rock", + "ghost", + "ice", + "dragon", + "dark", + "steel", + "flying", +]; + +const type2AllowedValues = [ + "grass", + "fire", + "water", + "bug", + "normal", + "poison", + "eletric", + "ground", + "fairy", + "fighting", + "psychic", + "rock", + "ghost", + "ice", + "dragon", + "dark", + "steel", + "flying", +]; + +const weather1AllowedValues = [ + "Sunny/clear", + "Rainy", + "Partly cloud", + "Cloudy", + "Windy", + "Fog", + "Snow", +]; + +export const updatePokemonSchema = yup.object().shape({ + imgName: yup.string(), + generation: yup.string(), + evolutionStage: yup + .string() + .matches( + /^(1|2|3|Evolved|Lower)/, + "Invalid value. Allowed values are: '1', '2', '3', 'Evolved' or 'Lower'." + ), + evolved: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + familyID: yup.number().integer().typeError("Value must be an integer"), + crossGen: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + type1: yup + .string() + .oneOf( + type1AllowedValues, + "Invalid value. Allowed values are: " + type1AllowedValues.join(", ") + ), + type2: yup + .string() + .oneOf( + type2AllowedValues, + "Invalid value. Allowed values are: " + type2AllowedValues.join(", ") + ), + weather1: yup + .string() + .oneOf( + weather1AllowedValues, + "Invalid value. Allowed values are: " + weather1AllowedValues.join(", ") + ), + weather2: yup + .string() + .oneOf( + weather1AllowedValues, + "Invalid value. Allowed values are: " + weather1AllowedValues.join(", ") + ), + statTotal: yup.number().integer().typeError("Value must be an integer"), + atk: yup.number().integer().typeError("Value must be an integer"), + def: yup.number().integer().typeError("Value must be an integer"), + sta: yup.number().integer().typeError("Value must be an integer"), + legendary: yup + .number() + .oneOf([0, 1, 2], "Invalid value. Allowed values are: 0, 1, 2.") + .integer() + .typeError("Value must be an integer"), + aquireable: yup + .number() + .oneOf([0, 1, 2, 3], "Invalid value. Allowed values are: 0, 1, 2, 3.") + .integer() + .typeError("Value must be an integer"), + spawns: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + regional: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + raidable: yup + .number() + .oneOf([0, 1, 2, 3, 4, 5], "Invalid value. Allowed values are: 0, 1, 2, 3, 4, 5.") + .integer() + .typeError("Value must be an integer"), + hatchable: yup + .number() + .integer("Value must be an integer") + .typeError("Value must be an integer") + .min(0, "Invalid value. Allowed values are in range: 0 to 15.") + .max(15, "Invalid value. Allowed values are in range: 0 to 15."), + shiny: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + nest: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + new: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + notGettable: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + futureEvolve: yup + .number() + .oneOf([0, 1], "Invalid value. Allowed values are: 0, 1.") + .integer() + .typeError("Value must be an integer"), + cp40: yup.number().integer().typeError("Value must be an integer"), + cp39: yup.number().integer().typeError("Value must be an integer"), +}); From 88aba1f1aa987f41fb6ce0efd9a2b30f09347844 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:28:25 -0300 Subject: [PATCH 28/79] Fix: removing response message test, returning retrived pokemon --- .../pokemons/retrievePokemons.controller.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 server/src/controllers/pokemons/retrievePokemons.controller.ts diff --git a/server/src/controllers/pokemons/retrievePokemons.controller.ts b/server/src/controllers/pokemons/retrievePokemons.controller.ts new file mode 100644 index 000000000..e46b13b26 --- /dev/null +++ b/server/src/controllers/pokemons/retrievePokemons.controller.ts @@ -0,0 +1,10 @@ +import { Request, Response } from "express"; +import { retrievePokemonService } from "../../services"; + +export const retrievePokemonController = async (req: Request, res: Response) => { + const { pokemonID } = req.params; + + const retrivedPokemon = await retrievePokemonService(pokemonID); + + return res.status(200).json(retrivedPokemon); +}; From 4fa8ca4eb8a4125f8ac77bff0909e68e28e9b947 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:29:35 -0300 Subject: [PATCH 29/79] Feat: created to retrieve an pokemon by id --- .../src/services/pokemons/retrievePokemons.service.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 server/src/services/pokemons/retrievePokemons.service.ts diff --git a/server/src/services/pokemons/retrievePokemons.service.ts b/server/src/services/pokemons/retrievePokemons.service.ts new file mode 100644 index 000000000..f170eb2bf --- /dev/null +++ b/server/src/services/pokemons/retrievePokemons.service.ts @@ -0,0 +1,11 @@ +import { PokemonsModel } from "../../models/Pokemons"; +import { AppError } from "../../errors/AppError"; + +export const retrievePokemonService = async (pokemonID: string) => { + const foundPokemon = await PokemonsModel.findOne({ _id: pokemonID }); + + if (!foundPokemon) { + throw new AppError(401, "Pokemon not found!"); + } + return foundPokemon; +}; From 244aa5b61a2a0b2eeb74a813dd947b2e76202141 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:30:27 -0300 Subject: [PATCH 30/79] Feat: created controller to update an pokemon --- .../controllers/pokemons/updatePokemons.controller.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 server/src/controllers/pokemons/updatePokemons.controller.ts diff --git a/server/src/controllers/pokemons/updatePokemons.controller.ts b/server/src/controllers/pokemons/updatePokemons.controller.ts new file mode 100644 index 000000000..15a1974d8 --- /dev/null +++ b/server/src/controllers/pokemons/updatePokemons.controller.ts @@ -0,0 +1,11 @@ +import { Request, Response } from "express"; +import { updatePokemonService } from "../../services"; + +export const updatePokemonController = async (req: Request, res: Response) => { + const { pokemonID } = req.params; + const data = req.body; + + const updatedPokemon = await updatePokemonService(pokemonID, data); + + return res.status(200).json({ message: "Pokemon updated with success." }); +}; From 0cf4c38e6a6240dce68d9124119a964084f2f4cf Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:32:24 -0300 Subject: [PATCH 31/79] Feat: route with schema validation, fields cannot be updated woth the same value --- .../pokemons/updatePokemons.service.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 server/src/services/pokemons/updatePokemons.service.ts diff --git a/server/src/services/pokemons/updatePokemons.service.ts b/server/src/services/pokemons/updatePokemons.service.ts new file mode 100644 index 000000000..ebd03444e --- /dev/null +++ b/server/src/services/pokemons/updatePokemons.service.ts @@ -0,0 +1,30 @@ +import { PokemonsModel } from "../../models/Pokemons"; +import { AppError } from "../../errors/AppError"; +import { IUpdatePokemon } from "../../interfaces/pokemons"; + +export const updatePokemonService = async (pokemonID: string, data: IUpdatePokemon) => { + const foundPokemon = await PokemonsModel.findOne({ _id: pokemonID }); + + if (!foundPokemon) { + throw new AppError(401, "Pokemon not found"); + } else if (foundPokemon.name === data.name) { + throw new AppError(400, "Pokemon name cannot be updated"); + } else if (foundPokemon.pokedexNumber === data.pokedexNumber) { + throw new AppError(400, "Pokedex number cannot be updated"); + } + + const pokemonsArr: Array = []; + pokemonsArr.push(foundPokemon); + + pokemonsArr.map((item: any) => { + for (const [key, value] of Object.entries(data)) { + if (item[`${key}`] == `${value}`) { + throw new AppError(400, `${key} cannot be updated with the same value`); + } + } + }); + + await PokemonsModel.updateOne({ _id: pokemonID }, { $set: { ...data } }); + + return true; +}; From 1ac329c953ef674efdd836b868d59f7c03bf80eb Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 02:32:53 -0300 Subject: [PATCH 32/79] Feat: yup added in project dependencies --- server/package.json | 7 ++++++- server/yarn.lock | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/server/package.json b/server/package.json index fd59f21eb..093b77fd2 100644 --- a/server/package.json +++ b/server/package.json @@ -14,15 +14,20 @@ "express-async-errors": "^3.1.1", "mongoose": "^7.0.3", "pg": "^8.10.0", - "reflect-metadata": "^0.1.13" + "reflect-metadata": "^0.1.13", + "yup": "^1.1.0" }, "devDependencies": { "@types/cors": "^2.8.13", "@types/express": "^4.17.17", "@types/mongoose": "^5.11.97", + "@types/yup": "^0.32.0", "nodemon": "^2.0.22", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", "typescript": "^5.0.4" + }, + "prettier": { + "printWidth": 100 } } diff --git a/server/yarn.lock b/server/yarn.lock index 24f0f71da..6c5a1b92c 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -146,6 +146,13 @@ "@types/node" "*" "@types/webidl-conversions" "*" +"@types/yup@^0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.32.0.tgz#2a19c3bbbb3aed1bd755204f83e800f9c95f249a" + integrity sha512-Gr2lllWTDxGVYHgWfL8szjdedERpNgm44L9BDL2cmcHG7Bfd6taEpiW3ayMFLaYvlJr/6bFXDJdh6L406AGlFg== + dependencies: + yup "*" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -873,6 +880,11 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" +property-expr@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -1088,6 +1100,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +tiny-case@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" + integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -1100,6 +1117,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + touch@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" @@ -1164,6 +1186,11 @@ tsconfig@^7.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -1229,3 +1256,13 @@ yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yup@*, yup@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.1.0.tgz#9e2439156970410f13c0aa842379c3a7240127ca" + integrity sha512-CtpEHWiIMwWJBJ+zX8xWImXXdvJ10X/sKkYYTXfVocHj087e9zhP0GNkU7HlXBBI4T9BtHQxs8n2jLzmo/X8Yg== + dependencies: + property-expr "^2.0.5" + tiny-case "^1.0.3" + toposort "^2.0.2" + type-fest "^2.19.0" From 97bd76c681345db4b865a75a6ecd806afc0e4551 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 09:25:22 -0300 Subject: [PATCH 33/79] Fix: func to handle fields to update with same value refactored, changed array name and error message --- server/src/services/pokemons/updatePokemons.service.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/services/pokemons/updatePokemons.service.ts b/server/src/services/pokemons/updatePokemons.service.ts index ebd03444e..f2c4d2bcf 100644 --- a/server/src/services/pokemons/updatePokemons.service.ts +++ b/server/src/services/pokemons/updatePokemons.service.ts @@ -13,12 +13,12 @@ export const updatePokemonService = async (pokemonID: string, data: IUpdatePokem throw new AppError(400, "Pokedex number cannot be updated"); } - const pokemonsArr: Array = []; - pokemonsArr.push(foundPokemon); + const toFoundErrors: Array = []; + toFoundErrors.push(foundPokemon); - pokemonsArr.map((item: any) => { + toFoundErrors.map((item: any) => { for (const [key, value] of Object.entries(data)) { - if (item[`${key}`] == `${value}`) { + if (item[key] == value) { throw new AppError(400, `${key} cannot be updated with the same value`); } } From 05e9d22a204f1ed52e976f0d8cd033370e8a71a9 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 09:51:16 -0300 Subject: [PATCH 34/79] Fix: foundPokemon and toFoundErrors types, name and pokedexNumber cannot be updated --- server/src/services/pokemons/updatePokemons.service.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/services/pokemons/updatePokemons.service.ts b/server/src/services/pokemons/updatePokemons.service.ts index f2c4d2bcf..653a898e4 100644 --- a/server/src/services/pokemons/updatePokemons.service.ts +++ b/server/src/services/pokemons/updatePokemons.service.ts @@ -3,17 +3,17 @@ import { AppError } from "../../errors/AppError"; import { IUpdatePokemon } from "../../interfaces/pokemons"; export const updatePokemonService = async (pokemonID: string, data: IUpdatePokemon) => { - const foundPokemon = await PokemonsModel.findOne({ _id: pokemonID }); + const foundPokemon: IUpdatePokemon | null = await PokemonsModel.findOne({ _id: pokemonID }); if (!foundPokemon) { throw new AppError(401, "Pokemon not found"); - } else if (foundPokemon.name === data.name) { + } else if (data.name) { throw new AppError(400, "Pokemon name cannot be updated"); - } else if (foundPokemon.pokedexNumber === data.pokedexNumber) { + } else if (data.pokedexNumber) { throw new AppError(400, "Pokedex number cannot be updated"); } - const toFoundErrors: Array = []; + const toFoundErrors: Array = []; toFoundErrors.push(foundPokemon); toFoundErrors.map((item: any) => { From 9e37a9f68c34d57e551886de6c5ec2bc5061db42 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 09:56:04 -0300 Subject: [PATCH 35/79] Fix: added id in IUpdate interface to handle error if user try to update --- server/src/interfaces/pokemons/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/interfaces/pokemons/index.ts b/server/src/interfaces/pokemons/index.ts index b70fd15fd..addba70a5 100644 --- a/server/src/interfaces/pokemons/index.ts +++ b/server/src/interfaces/pokemons/index.ts @@ -31,6 +31,7 @@ export interface ICreatePokemon { } export interface IUpdatePokemon { + _id?: string; name?: string; pokedexNumber?: number; imgName?: string; From 8a4dbea9ca0b42512469a7a2a3d52b1f766900b0 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 09:56:39 -0300 Subject: [PATCH 36/79] Fix: added error if any user try to update pokemon id --- server/src/services/pokemons/updatePokemons.service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/src/services/pokemons/updatePokemons.service.ts b/server/src/services/pokemons/updatePokemons.service.ts index 653a898e4..d0d17d0ac 100644 --- a/server/src/services/pokemons/updatePokemons.service.ts +++ b/server/src/services/pokemons/updatePokemons.service.ts @@ -7,10 +7,12 @@ export const updatePokemonService = async (pokemonID: string, data: IUpdatePokem if (!foundPokemon) { throw new AppError(401, "Pokemon not found"); + } else if (data._id) { + throw new AppError(403, "Pokemon id cannot be updated"); } else if (data.name) { - throw new AppError(400, "Pokemon name cannot be updated"); + throw new AppError(403, "Pokemon name cannot be updated"); } else if (data.pokedexNumber) { - throw new AppError(400, "Pokedex number cannot be updated"); + throw new AppError(403, "Pokedex number cannot be updated"); } const toFoundErrors: Array = []; From 2f9449015dec5e9f4458d27d8f947a82bf408434 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:33:52 -0300 Subject: [PATCH 37/79] Feat: delete pokemon controller added to main exports --- server/src/controllers/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/src/controllers/index.ts b/server/src/controllers/index.ts index b5cb604a2..ec8bfcaaf 100644 --- a/server/src/controllers/index.ts +++ b/server/src/controllers/index.ts @@ -2,10 +2,12 @@ import { createPokemonController } from "./pokemons/createPokemons.controller"; import { listPokemonsController } from "./pokemons/listPokemons.controller"; import { retrievePokemonController } from "./pokemons/retrievePokemons.controller"; import { updatePokemonController } from "./pokemons/updatePokemons.controller"; +import { deletePokemonController } from "./pokemons/deletePokemons.controller"; export { createPokemonController, listPokemonsController, retrievePokemonController, updatePokemonController, + deletePokemonController, }; From 3f77458e099fd3d63d18dc5d7e00e461eeafaebd Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:35:15 -0300 Subject: [PATCH 38/79] Feat: delete pokemon service added to main services exports --- server/src/services/index.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/src/services/index.ts b/server/src/services/index.ts index fc78eb7be..385a66e81 100644 --- a/server/src/services/index.ts +++ b/server/src/services/index.ts @@ -2,5 +2,12 @@ import { createPokemonsService } from "./pokemons/createPokemons.service"; import { listPokemonsService } from "./pokemons/listPokemons.service"; import { retrievePokemonService } from "./pokemons/retrievePokemons.service"; import { updatePokemonService } from "./pokemons/updatePokemons.service"; +import { deletePokemonService } from "./pokemons/deletePokemons.service"; -export { createPokemonsService, listPokemonsService, retrievePokemonService, updatePokemonService }; +export { + createPokemonsService, + listPokemonsService, + retrievePokemonService, + updatePokemonService, + deletePokemonService, +}; From 14c5cbb0455075f8ef7b4495ec3c522cb48e4d2e Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:35:47 -0300 Subject: [PATCH 39/79] Feat: route to delete an pokemon by id created --- server/src/routers/pokemons/pokemons.routes.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/routers/pokemons/pokemons.routes.ts b/server/src/routers/pokemons/pokemons.routes.ts index 1380a308c..43fcd6bb7 100644 --- a/server/src/routers/pokemons/pokemons.routes.ts +++ b/server/src/routers/pokemons/pokemons.routes.ts @@ -4,6 +4,7 @@ import { listPokemonsController, retrievePokemonController, updatePokemonController, + deletePokemonController, } from "../../controllers"; import { schemaValidation } from "../../middlewares/schema/schemaValidation.middleware"; import { updatePokemonSchema } from "../../schemas/updatePokemon.schema"; @@ -18,4 +19,6 @@ pokemonsRoute.get("/:pokemonID", retrievePokemonController); pokemonsRoute.patch("/:pokemonID", schemaValidation(updatePokemonSchema), updatePokemonController); +pokemonsRoute.delete("/:pokemonID", deletePokemonController); + export default pokemonsRoute; From 8a734b4c6fac923d19191bff54389d796832002f Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:36:25 -0300 Subject: [PATCH 40/79] Feat: route to delete an pokemon by id created --- .../pokemons/deletePokemons.controller.ts | 10 ++++++++++ .../src/services/pokemons/deletePokemons.service.ts | 12 ++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 server/src/controllers/pokemons/deletePokemons.controller.ts create mode 100644 server/src/services/pokemons/deletePokemons.service.ts diff --git a/server/src/controllers/pokemons/deletePokemons.controller.ts b/server/src/controllers/pokemons/deletePokemons.controller.ts new file mode 100644 index 000000000..dcafa4a5a --- /dev/null +++ b/server/src/controllers/pokemons/deletePokemons.controller.ts @@ -0,0 +1,10 @@ +import { Request, Response } from "express"; +import { deletePokemonService } from "../../services"; + +export const deletePokemonController = async (req: Request, res: Response) => { + const { pokemonID } = req.params; + + const deletedPokemon = await deletePokemonService(pokemonID); + + return res.status(200).json({ message: "Pokemon deleted with success." }); +}; diff --git a/server/src/services/pokemons/deletePokemons.service.ts b/server/src/services/pokemons/deletePokemons.service.ts new file mode 100644 index 000000000..e0408f41b --- /dev/null +++ b/server/src/services/pokemons/deletePokemons.service.ts @@ -0,0 +1,12 @@ +import { PokemonsModel } from "../../models/Pokemons"; +import { AppError } from "../../errors/AppError"; + +export const deletePokemonService = async (pokemonID: string) => { + const foundPokemon = await PokemonsModel.findOne({ _id: pokemonID }); + + if (!foundPokemon) { + throw new AppError(404, "Pokemon not found"); + } + + return await PokemonsModel.deleteOne({ _id: foundPokemon.id }); +}; From 3f75c9e7f77694230cb268c10245f75f41e4a883 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:43:35 -0300 Subject: [PATCH 41/79] Feat: server file created to be handle unique with mongoose connection --- server/src/server.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 server/src/server.ts diff --git a/server/src/server.ts b/server/src/server.ts new file mode 100644 index 000000000..f6ab21b60 --- /dev/null +++ b/server/src/server.ts @@ -0,0 +1,9 @@ +import "dotenv/config"; +import mongoose from "mongoose"; +import app from "./app"; + +mongoose.connect(process.env.MONGO_URL!).then(() => { + app.listen(process.env.PORT || 5500, () => + console.log(`Running on port ${process.env.PORT || 5500}`) + ); +}); From fdd794a7799a1f21d2dcbae2022e1cd2b12c16df Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:44:40 -0300 Subject: [PATCH 42/79] Fix: removed db connection and moved to server.ts --- server/src/app.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/server/src/app.ts b/server/src/app.ts index 0cfcd7017..2339c02d8 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -1,9 +1,8 @@ -import "dotenv/config"; import express from "express"; import "express-async-errors"; import "reflect-metadata"; import cors from "cors"; -import mongoose from "mongoose"; + import handleAppErrorMiddleware from "./middlewares/errors/handleAppError.middleware"; import pokemonsRoute from "./routers/pokemons/pokemons.routes"; @@ -16,8 +15,4 @@ app.use("/pokemons", pokemonsRoute); app.use(handleAppErrorMiddleware); -mongoose.connect(process.env.MONGO_URL!).then(() => { - app.listen(process.env.PORT || 5500, () => - console.log(`listening on port ${process.env.PORT}`) - ); -}); +export default app; From 64a957f054c13da07fa45266f07e746940cdabd8 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:45:17 -0300 Subject: [PATCH 43/79] Fix: changed scripts to run db from server.ts file --- server/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/package.json b/server/package.json index 093b77fd2..d71f21d00 100644 --- a/server/package.json +++ b/server/package.json @@ -5,7 +5,7 @@ "license": "MIT", "scripts": { "build": "tsc", - "dev": "ts-node-dev --ignore-watch node_modules src/app.ts" + "dev": "ts-node-dev --ignore-watch node_modules src/server.ts" }, "dependencies": { "cors": "^2.8.5", From 3fab9300a6226a05ee40ec78b7be0b09e91bce51 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:47:13 -0300 Subject: [PATCH 44/79] Fix: status code error changed to 404 --- server/src/services/pokemons/retrievePokemons.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/services/pokemons/retrievePokemons.service.ts b/server/src/services/pokemons/retrievePokemons.service.ts index f170eb2bf..0f1c4dde0 100644 --- a/server/src/services/pokemons/retrievePokemons.service.ts +++ b/server/src/services/pokemons/retrievePokemons.service.ts @@ -5,7 +5,7 @@ export const retrievePokemonService = async (pokemonID: string) => { const foundPokemon = await PokemonsModel.findOne({ _id: pokemonID }); if (!foundPokemon) { - throw new AppError(401, "Pokemon not found!"); + throw new AppError(404, "Pokemon not found!"); } return foundPokemon; }; From cf2940ca366ac41f13c7f83031abda2c55b20726 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 10:48:30 -0300 Subject: [PATCH 45/79] Fix: status code error to not found changed to 404 --- server/src/services/pokemons/updatePokemons.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/services/pokemons/updatePokemons.service.ts b/server/src/services/pokemons/updatePokemons.service.ts index d0d17d0ac..80c9c569d 100644 --- a/server/src/services/pokemons/updatePokemons.service.ts +++ b/server/src/services/pokemons/updatePokemons.service.ts @@ -6,7 +6,7 @@ export const updatePokemonService = async (pokemonID: string, data: IUpdatePokem const foundPokemon: IUpdatePokemon | null = await PokemonsModel.findOne({ _id: pokemonID }); if (!foundPokemon) { - throw new AppError(401, "Pokemon not found"); + throw new AppError(404, "Pokemon not found"); } else if (data._id) { throw new AppError(403, "Pokemon id cannot be updated"); } else if (data.name) { From be64d4f2c49d0253e34d8e0887c9c4291b5aa97a Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 12:08:33 -0300 Subject: [PATCH 46/79] Feat: created with two files, array of predefined pokemons to be used on a func thats populates the database when started --- server/src/utils/dataBaseSeeder.ts | 8 + server/src/utils/pokemonsData.ts | 716 +++++++++++++++++++++++++++++ 2 files changed, 724 insertions(+) create mode 100644 server/src/utils/dataBaseSeeder.ts create mode 100644 server/src/utils/pokemonsData.ts diff --git a/server/src/utils/dataBaseSeeder.ts b/server/src/utils/dataBaseSeeder.ts new file mode 100644 index 000000000..cb6b75d1b --- /dev/null +++ b/server/src/utils/dataBaseSeeder.ts @@ -0,0 +1,8 @@ +import { predefinedPokemonData } from "./pokemonsData"; +import { PokemonsModel } from "../models/Pokemons"; + +const dataBaseSeeder = async () => { + return await PokemonsModel.insertMany(predefinedPokemonData); +}; + +export default dataBaseSeeder; diff --git a/server/src/utils/pokemonsData.ts b/server/src/utils/pokemonsData.ts new file mode 100644 index 000000000..ebc4147e0 --- /dev/null +++ b/server/src/utils/pokemonsData.ts @@ -0,0 +1,716 @@ +import { ICreatePokemon } from "../interfaces/pokemons"; +export const predefinedPokemonData: Array = [ + { + name: "Bulbasaur", + pokedexNumber: 1, + imgName: "1", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 1, + crossGen: 0, + type1: "grass", + type2: "poison", + weather1: "Sunny/clear", + weather2: "Cloudy", + statTotal: 326, + atk: 118, + def: 118, + sta: 90, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 5, + shiny: 0, + nest: 1, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 981, + cp39: 967, + }, + { + name: "Ivysaur", + pokedexNumber: 2, + imgName: "2", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 1, + crossGen: 0, + type1: "grass", + type2: "poison", + weather1: "Sunny/clear", + weather2: "Cloudy", + statTotal: 326, + atk: 118, + def: 118, + sta: 90, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 5, + shiny: 0, + nest: 1, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 981, + cp39: 967, + }, + { + name: "Venusaur", + pokedexNumber: 3, + imgName: "3", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 1, + crossGen: 0, + type1: "grass", + type2: "poison", + weather1: "Sunny/clear", + weather2: "Cloudy", + statTotal: 326, + atk: 118, + def: 118, + sta: 90, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 5, + shiny: 0, + nest: 1, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 981, + cp39: 967, + }, + { + name: "Charmander", + pokedexNumber: 4, + imgName: "4", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 2, + crossGen: 0, + type1: "fire", + type2: "", + weather1: "Sunny/clear", + weather2: "", + statTotal: 290, + atk: 116, + def: 96, + sta: 78, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 5, + shiny: 0, + nest: 1, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 831, + cp39: 819, + }, + { + name: "Charmeleon", + pokedexNumber: 5, + imgName: "5", + generation: 1, + evolutionStage: "2", + evolved: 0, + familyID: 2, + crossGen: 0, + type1: "fire", + type2: "", + weather1: "Sunny/clear", + weather2: "", + statTotal: 290, + atk: 116, + def: 96, + sta: 78, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 5, + shiny: 0, + nest: 1, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 831, + cp39: 819, + }, + { + name: "Charizard", + pokedexNumber: 6, + imgName: "6", + generation: 1, + evolutionStage: "3", + evolved: 0, + familyID: 2, + crossGen: 0, + type1: "fire", + type2: "", + weather1: "Sunny/clear", + weather2: "", + statTotal: 290, + atk: 116, + def: 96, + sta: 78, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 5, + shiny: 0, + nest: 1, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 831, + cp39: 819, + }, + { + name: "Squirtle", + pokedexNumber: 7, + imgName: "7", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 2, + crossGen: 0, + type1: "fire", + type2: "", + weather1: "Sunny/clear", + weather2: "", + statTotal: 304, + atk: 94, + def: 122, + sta: 88, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 5, + shiny: 0, + nest: 1, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 808, + cp39: 8797, + }, + { + name: "Wartortle", + pokedexNumber: 8, + imgName: "8", + generation: 1, + evolutionStage: "2", + evolved: 0, + familyID: 3, + crossGen: 0, + type1: "water", + type2: "", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Blastoise", + pokedexNumber: 9, + imgName: "9", + generation: 1, + evolutionStage: "3", + evolved: 1, + familyID: 3, + crossGen: 0, + type1: "water", + type2: "", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Caterpie", + pokedexNumber: 10, + imgName: "10", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 3, + crossGen: 0, + type1: "water", + type2: "", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Metapod", + pokedexNumber: 11, + imgName: "11", + generation: 1, + evolutionStage: "2", + evolved: 0, + familyID: 3, + crossGen: 0, + type1: "water", + type2: "", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Butterfree", + pokedexNumber: 12, + imgName: "12", + generation: 1, + evolutionStage: "3", + evolved: 0, + familyID: 4, + crossGen: 0, + type1: "water", + type2: "", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Weedle", + pokedexNumber: 13, + imgName: "13", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Kakuna", + pokedexNumber: 14, + imgName: "14", + generation: 1, + evolutionStage: "2", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Beedrill", + pokedexNumber: 15, + imgName: "15", + generation: 1, + evolutionStage: "3", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Pidgey", + pokedexNumber: 16, + imgName: "16", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Pidgeotto", + pokedexNumber: 17, + imgName: "17", + generation: 1, + evolutionStage: "2", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Pidgeot", + pokedexNumber: 18, + imgName: "18", + generation: 1, + evolutionStage: "3", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Rattata", + pokedexNumber: 19, + imgName: "19", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Raticate", + pokedexNumber: 20, + imgName: "20", + generation: 1, + evolutionStage: "2", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Pikachu", + pokedexNumber: 25, + imgName: "25", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Raichu", + pokedexNumber: 26, + imgName: "26", + generation: 1, + evolutionStage: "2", + evolved: 1, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, + { + name: "Snorlax", + pokedexNumber: 143, + imgName: "143", + generation: 1, + evolutionStage: "1", + evolved: 0, + familyID: 5, + crossGen: 0, + type1: "bug", + type2: "poison", + weather1: "Rainy", + weather2: "", + statTotal: 399, + atk: 126, + def: 155, + sta: 128, + legendary: 0, + aquireable: 1, + spawns: 1, + regional: 0, + raidable: 0, + hatchable: 0, + shiny: 0, + nest: 0, + new: 0, + notGettable: 0, + futureEvolve: 0, + cp40: 1324, + cp39: 1305, + }, +]; From b316753325b37518f06854fa5fc998fe81dc67c3 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 12:11:34 -0300 Subject: [PATCH 47/79] Feat: added dataBaseSeeder func who will be called when project is started populating the data base with predefined array of pokemons --- server/src/server.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/server/src/server.ts b/server/src/server.ts index f6ab21b60..da19b7277 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -1,9 +1,18 @@ import "dotenv/config"; import mongoose from "mongoose"; import app from "./app"; +import { AppError } from "./errors/AppError"; +import dataBaseSeeder from "./utils/dataBaseSeeder"; -mongoose.connect(process.env.MONGO_URL!).then(() => { - app.listen(process.env.PORT || 5500, () => - console.log(`Running on port ${process.env.PORT || 5500}`) - ); -}); +mongoose + .connect(process.env.MONGO_URL!) + .then(() => { + app.listen(process.env.PORT || 5500, () => + console.log(`Running on port ${process.env.PORT || 5500}`) + ); + //Function that populates the database with a predefined array of pokemons data + // dataBaseSeeder(); + }) + .catch((err) => { + throw new AppError(400, `${err.message}`); + }); From 1d4729558232a6804d204cc70a30d556830b404e Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 12:14:56 -0300 Subject: [PATCH 48/79] Fix: import name --- server/src/utils/pokemonsData.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/utils/pokemonsData.ts b/server/src/utils/pokemonsData.ts index ebc4147e0..5a0efa80b 100644 --- a/server/src/utils/pokemonsData.ts +++ b/server/src/utils/pokemonsData.ts @@ -1,4 +1,5 @@ import { ICreatePokemon } from "../interfaces/pokemons"; + export const predefinedPokemonData: Array = [ { name: "Bulbasaur", From a9f8290b2210192461935de3f76dd2d619b51ee6 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 15:07:58 -0300 Subject: [PATCH 49/79] Feat: created to show how set variavles in .env --- server/src/.env.example | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 server/src/.env.example diff --git a/server/src/.env.example b/server/src/.env.example new file mode 100644 index 000000000..1c36691e6 --- /dev/null +++ b/server/src/.env.example @@ -0,0 +1,2 @@ +MONGO_URL='mongodb://:@mongo:27017/?authSource=admin' +PORT=5500 \ No newline at end of file From 2f4a29cc6068ef2eed7d3a7c0d01d510455cbe26 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 15:08:27 -0300 Subject: [PATCH 50/79] Feat: initial documentation --- README.md | 74 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index c71cbfa0c..21fe9b0d6 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,66 @@ -# Teste de Desenvolvimento Web +# Pokedex -Olá Dev! Tudo bem? +This is a technical test involving front-end and back-end development. The mission is to create a system to replace an Excel file, adding new functionalities while maintaining the core features. The goal is to create a practical and enjoyable way to search for data, including listing, filtering, pagination, and displaying details about each Pokémon. -A RedFox está sempre em busca de profissionais interessantes e interessados, com boa capacidade de aprendizado, adaptação e principalmente motivação! +## Technologies Used -Este teste tem como objetivo avaliar e desafiar você. Não é obrigatório realizá-lo completamente, queremos apenas conhecer você, seu esforço e potencial para aprender, se adaptar e tomar decisões. +- [React](https://react.dev/): Front-end library for building user interfaces. +- [Node.js](https://nodejs.org/en): JavaScript runtime environment for server-side development. +- [Express.js](https://expressjs.com/): Web application framework for Node.js. +- [MongoDB](https://www.mongodb.com/): NoSQL database for storing data. +- [Mongoose](https://mongoosejs.com/): MongoDB object modeling tool for Node.js. +- [Docker](https://www.docker.com/): Containerization platform for packaging applications into containers. -Agora vamos ao teste! +## Getting Started +This project is designed to run the front-end and back-end with Docker, with easy-to-follow configuration steps, anyone should be able to run it locally. Follow the steps below to get the project up and running on your local machine: -## Desafio Pokémon +Prerequisites -Nós temos um problema, atualmente nosso sistema é só um excel, cheio de informações sobre Pokémon. Nós usamos ele como banco de dados e ao mesmo tempo interface de gerenciamento, inserindo, editando, deletando e filtrando os dados. +- [Node.js](https://nodejs.org/en) and [Yarn](https://yarnpkg.com/) (Node Package Manager) installed on your machine. +- [Docker](https://www.docker.com/) installed on your machine. -A missão é criar um sistema para substituir este excel, pois queremos expandir e acrescentar funcionalidades. Queremos manter o básico, mas principalmente queremos uma forma prática e agradável de buscar os dados, com listagem, filtros, paginação e detalhes sobre cada Pokémon. +### Installation -Fique à vontade com o layout, precisamos de uma interface que consiga entregar as funcionalidades principais e substituir o excel, só isso. +1 - Clone the repository to your local machine: +```clipboard +git@github.com:kennedybm/teste-desenvolvimento-web.git +``` -## Consigo fazer tudo isso? +2 - At the root of the project, you will find a docker-compose.yml file. Open the docker-compose.yml file and modify the environment as shown in the following image: -Consegue sim! +![environment example](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/dba20801-1756-4bfb-9f7d-0fceb649cf47/pokedex-docker-config.png) -O teste é flexível, você pode escolher alguma parte específica dele para fazer, em que se sinta mais confortável e confiante, por exemplo: a interface, as funcionalidades, o banco de dados, etc...O importante é tentar atingir o objetivo de alguma forma. +Make the necessary changes according to the image to configure the docker-compose file. -Aqui na RedFox queremos aproveitar ao máximo suas habilidades e aptidões, mas também desafiar você a adquirir novas, então nossa equipe tem a liberdade de trasitar entre frontend, backend, infraestrutura, etc...Sem se restringir, tudo depende do esforço e vontade de cada um. +3 - Navigate to the **`server`** folder, and then open the **`src`** directory. Create a new **`.env`** file and copy and paste the variables from the +**`.env.example`**, which is in the same directory. Replace the **`user`** and **`password`** fields in the **`.env`** file with the same variables that you set in the previous step. Your **`.env`** file should look like this: +![.env example](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/378923f0-3297-4bc8-bc5a-b111263a0103/pokedex-env.png) -## Por onde começo? +4 - Open the project terminal and run this command: -Primeiramente, você pode fazer um fork desse repositório aqui, para sua conta do Github, depois disso crie uma branch nova com o seu nome, para podermos indentificá-lo. +```clipboard +docker compose up +``` -Após terminar o desafio, você pode solicitar um pull request para a branch master do nosso repositório. Vamos receber e fazer a avaliação de todos. +5 - After completing all the necessary setup, you can access the front-end at: +```clipboard +http://localhost:3000/ +``` -## E o Layout?? +and the back-end at: -Fique a vontade quanto a isso, não vamos avaliar o design da sua interface. Se quiser desenhar algo bacana, diferente, pensar até em UI/UX, etc...é claro que vamos valorizar o seu esforço e considerar como um diferencial, mas não se preocupe. +```clipboard +http://localhost:5500/pokemons +``` +## Usage -## Regras +This project is developed with a script that populates the back-end with a collection of Pokémon data to be displayed in the front-end for initial use. The script sets up the necessary data in the back-end database, allowing the application to showcase a list of Pokémon with their details on the front-end. This feature provides a ready-to-use dataset for users to explore and interact with the application without the need for manual data entry. -Para o desafio ficar mais interessante, decidimos criar algumas regras: -- No layout, deve utilizar algum framework CSS (ex: Bootstrap, MaterializeCSS, Bulma...) -- No frontend, deve utilizar algum framework JS (ex: VueJS, ReactJS, Angular...tente não usar jQuery) -- No backend, deve utilizar NodeJS -- Documentar um pouco o projeto, o que você fez e de que forma devemos executar-lo +## License - -## Só isso? - -Só!...mas se quiser ir além, tente preparar o projeto para ser executado de maneira simples e prática, se coloque no lugar de alguém com menos conhecimentos, que precisa ver o que você desenvolveu. - -ps: Se fizer deploy em algum servidor ou utilizar alguma ferramenta que facilite a execução (ex: docker), será um diferencial. - - -Boa sorte! (^_^) +[MIT]() From bc07e4a7e3288371474e6ce77f79e0f7e2da7208 Mon Sep 17 00:00:00 2001 From: Kennedy Barreto <1kennedy.bm@gmail.com> Date: Fri, 14 Apr 2023 15:22:59 -0300 Subject: [PATCH 51/79] Feat: config example img's added --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 21fe9b0d6..8a41097d6 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ This is a technical test involving front-end and back-end development. The missi ## Getting Started -This project is designed to run the front-end and back-end with Docker, with easy-to-follow configuration steps, anyone should be able to run it locally. Follow the steps below to get the project up and running on your local machine: +This project is developed to run the front-end and back-end with Docker, with easy-to-follow configuration steps, anyone should be able to run it locally. Follow the steps below to get the project up and running on your local machine: Prerequisites @@ -28,16 +28,17 @@ Prerequisites git@github.com:kennedybm/teste-desenvolvimento-web.git ``` -2 - At the root of the project, you will find a docker-compose.yml file. Open the docker-compose.yml file and modify the environment as shown in the following image: +2 - At the root of the project, you will find a **`docker-compose.yml`** file. Open the docker-compose.yml file and modify the environment (username, password, database) as shown in the following image: + +![environment example](https://user-images.githubusercontent.com/91641613/232124340-37917f83-2b2f-4436-88ac-c23b8aad869f.png) -![environment example](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/dba20801-1756-4bfb-9f7d-0fceb649cf47/pokedex-docker-config.png) Make the necessary changes according to the image to configure the docker-compose file. 3 - Navigate to the **`server`** folder, and then open the **`src`** directory. Create a new **`.env`** file and copy and paste the variables from the **`.env.example`**, which is in the same directory. Replace the **`user`** and **`password`** fields in the **`.env`** file with the same variables that you set in the previous step. Your **`.env`** file should look like this: -![.env example](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/378923f0-3297-4bc8-bc5a-b111263a0103/pokedex-env.png) +![pokedex-env](https://user-images.githubusercontent.com/91641613/232124922-3de71272-66b8-4b56-bfc3-5a7e3866ab98.png) 4 - Open the project terminal and run this command: From 7b7a06071d7f1e1c1905794c93d4ebf1e9ea8c4e Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 21:02:59 -0300 Subject: [PATCH 52/79] Fix: uncomented dataBaseSeeder func to be used in the front-end --- server/src/server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/server.ts b/server/src/server.ts index da19b7277..8da0cef78 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -11,7 +11,7 @@ mongoose console.log(`Running on port ${process.env.PORT || 5500}`) ); //Function that populates the database with a predefined array of pokemons data - // dataBaseSeeder(); + dataBaseSeeder(); }) .catch((err) => { throw new AppError(400, `${err.message}`); From 466163bdc4528e9f5755161a8df32723a52c20eb Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 21:04:24 -0300 Subject: [PATCH 53/79] Fix: changed type2 and weather2 fields values --- server/src/utils/pokemonsData.ts | 57 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/server/src/utils/pokemonsData.ts b/server/src/utils/pokemonsData.ts index 5a0efa80b..d493983b9 100644 --- a/server/src/utils/pokemonsData.ts +++ b/server/src/utils/pokemonsData.ts @@ -104,9 +104,9 @@ export const predefinedPokemonData: Array = [ familyID: 2, crossGen: 0, type1: "fire", - type2: "", + type2: "poison", weather1: "Sunny/clear", - weather2: "", + weather2: "Cloudy", statTotal: 290, atk: 116, def: 96, @@ -135,9 +135,9 @@ export const predefinedPokemonData: Array = [ familyID: 2, crossGen: 0, type1: "fire", - type2: "", + type2: "poison", weather1: "Sunny/clear", - weather2: "", + weather2: "Cloudy", statTotal: 290, atk: 116, def: 96, @@ -166,9 +166,9 @@ export const predefinedPokemonData: Array = [ familyID: 2, crossGen: 0, type1: "fire", - type2: "", + type2: "poison", weather1: "Sunny/clear", - weather2: "", + weather2: "Cloudy", statTotal: 290, atk: 116, def: 96, @@ -197,9 +197,9 @@ export const predefinedPokemonData: Array = [ familyID: 2, crossGen: 0, type1: "fire", - type2: "", + type2: "poison", weather1: "Sunny/clear", - weather2: "", + weather2: "Cloudy", statTotal: 304, atk: 94, def: 122, @@ -228,9 +228,9 @@ export const predefinedPokemonData: Array = [ familyID: 3, crossGen: 0, type1: "water", - type2: "", + type2: "fire", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -259,9 +259,9 @@ export const predefinedPokemonData: Array = [ familyID: 3, crossGen: 0, type1: "water", - type2: "", + type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -290,9 +290,9 @@ export const predefinedPokemonData: Array = [ familyID: 3, crossGen: 0, type1: "water", - type2: "", + type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -321,9 +321,9 @@ export const predefinedPokemonData: Array = [ familyID: 3, crossGen: 0, type1: "water", - type2: "", + type2: "fire", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -352,9 +352,9 @@ export const predefinedPokemonData: Array = [ familyID: 4, crossGen: 0, type1: "water", - type2: "", + type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -385,7 +385,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -416,7 +416,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -447,7 +447,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -478,7 +478,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -509,7 +509,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -540,7 +540,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -571,7 +571,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -602,7 +602,6 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", statTotal: 399, atk: 126, def: 155, @@ -633,7 +632,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -664,7 +663,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, @@ -695,7 +694,7 @@ export const predefinedPokemonData: Array = [ type1: "bug", type2: "poison", weather1: "Rainy", - weather2: "", + weather2: "Cloudy", statTotal: 399, atk: 126, def: 155, From e929711aef1039ede33c477f9c7c330fd75b4f6b Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:04:43 -0300 Subject: [PATCH 54/79] Feat: styled components global style created with and added color variables --- client/src/style/global.ts | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 client/src/style/global.ts diff --git a/client/src/style/global.ts b/client/src/style/global.ts new file mode 100644 index 000000000..03a51c757 --- /dev/null +++ b/client/src/style/global.ts @@ -0,0 +1,45 @@ +import { createGlobalStyle } from "styled-components"; + +export default createGlobalStyle` + *{ + margin: 0; + padding: 0; + outline:0; + border: 0; + box-sizing: border-box; + vertical-align: baseline; + font-size: 100%; + } +:root{ + --default: #f8f8f8; + --decor: #ffc900; + + --gray0: #f3f3f3; + --gray1: #6f5b61; + --gray2: #222222; + --gray3: #e9e9e9; + + --title: 'Montserrat', sans-serif; + --content: 'Merriweather', serif; +} +body{ + background-color: var(--default); + &::-webkit-scrollbar { + width: 0.3em; + } + &::-webkit-scrollbar-thumb { + background-color: var(--gray3); + border-radius: 3px; + } +} +a{ + text-decoration: none; +} +ul, ol, li{ + list-style: none; +} +button{ + cursor: pointer; + border: none; +} +`; From 8c0d7569cba5889978f46349da812ba58df6fe10 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:07:31 -0300 Subject: [PATCH 55/79] Feat: created client dockerignore file --- client/.dockerignore | 5 +++++ client/src/service/api.ts | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 client/.dockerignore create mode 100644 client/src/service/api.ts diff --git a/client/.dockerignore b/client/.dockerignore new file mode 100644 index 000000000..1d7d55faa --- /dev/null +++ b/client/.dockerignore @@ -0,0 +1,5 @@ +Dockerfile +.dockerignore +node_modules +npm-debug.log +dist \ No newline at end of file diff --git a/client/src/service/api.ts b/client/src/service/api.ts new file mode 100644 index 000000000..73df5d0d7 --- /dev/null +++ b/client/src/service/api.ts @@ -0,0 +1,5 @@ +import axios from "axios"; + +export const pokemonsURL = axios.create({ + baseURL: "http://localhost:5500/pokemons", +}); From c01ed51208bd50c2b78fe11858b3d2442d0eb964 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:09:14 -0300 Subject: [PATCH 56/79] Feat: created routes to manage pages with react-router-dom --- client/src/routes/index.tsx | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 client/src/routes/index.tsx diff --git a/client/src/routes/index.tsx b/client/src/routes/index.tsx new file mode 100644 index 000000000..33d4688b5 --- /dev/null +++ b/client/src/routes/index.tsx @@ -0,0 +1,13 @@ +import { BrowserRouter as Router, Route, Switch } from "react-router-dom"; +import Home from "../pages/home"; + +const Routes = () => { + return ( + + + + + + ); +}; +export default Routes; From c06fe2349aef06a9085d815c972de97762860abc Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:09:52 -0300 Subject: [PATCH 57/79] Feat: providers created --- client/src/providers/index.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 client/src/providers/index.tsx diff --git a/client/src/providers/index.tsx b/client/src/providers/index.tsx new file mode 100644 index 000000000..8400a88cd --- /dev/null +++ b/client/src/providers/index.tsx @@ -0,0 +1,11 @@ +import { ReactNode } from "react"; +import { ApiProvider } from "./api"; + +interface IProvidersProps { + children: ReactNode; +} + +const Providers = ({ children }: IProvidersProps) => { + return {children}; +}; +export default Providers; From 6293bf29176b784494f719843d8c4e81e069a2d8 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:11:19 -0300 Subject: [PATCH 58/79] Feat: api provider created to handle integration with back-end and manage files in pages --- client/src/providers/api/index.tsx | 38 ++++++++++++++++++ client/src/providers/api/interfaces.ts | 55 ++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 client/src/providers/api/index.tsx create mode 100644 client/src/providers/api/interfaces.ts diff --git a/client/src/providers/api/index.tsx b/client/src/providers/api/index.tsx new file mode 100644 index 000000000..1653f19c7 --- /dev/null +++ b/client/src/providers/api/index.tsx @@ -0,0 +1,38 @@ +import { createContext, useContext, useState } from "react"; +import { AxiosError } from "axios"; +import { pokemonsURL } from "../../service/api"; +import { + IDefaultErrorResponse, + IDefaultProviderProps, + IPokemonsData, + IContextProps, +} from "./interfaces"; + +const ApiContext = createContext({} as IContextProps); + +export const ApiProvider = ({ children }: IDefaultProviderProps) => { + const [pokemonsData, setPokemonsData] = useState( + [] as IPokemonsData[] + ); + + const fetchPokemons = async (): Promise => { + await pokemonsURL + .get("") + .then((res) => { + setPokemonsData(res.data); + }) + .catch((err) => { + const currentError = err as AxiosError; + console.log(currentError); + }); + }; + + return ( + + {children} + + ); +}; +export const useApi = () => useContext(ApiContext); diff --git a/client/src/providers/api/interfaces.ts b/client/src/providers/api/interfaces.ts new file mode 100644 index 000000000..606465af3 --- /dev/null +++ b/client/src/providers/api/interfaces.ts @@ -0,0 +1,55 @@ +import { ReactNode } from "react"; + +interface IDefaultErrorResponse { + error: string; +} + +interface IDefaultProviderProps { + children: ReactNode; +} + +interface IContextProps { + pokemonsData: IPokemonsData[]; + setPokemonsData: React.Dispatch>; + fetchPokemons: () => Promise; +} + +interface IPokemonsData { + _id: string; + name: string; + pokedexNumber: number; + imgName: string; + generation: number; + evolutionStage?: string; + evolved: number; + familyID?: number; + crossGen: number; + type1: string; + type2?: string; + weather1: string; + weather2?: string; + statTotal: number; + atk: number; + def: number; + sta: number; + legendary: number; + aquireable: number; + spawns: number; + regional: number; + raidable: number; + hatchable: number; + shiny: number; + nest: number; + new: number; + notGettable: number; + futureEvolve: number; + cp40: number; + cp39: number; +} + +export type { + IDefaultErrorResponse, + IDefaultProviderProps, + IPokemonsData, + IContextProps, +}; From f46c1e87ffcf2c74a0e8487e529fabc62adc347d Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:12:53 -0300 Subject: [PATCH 59/79] Feat:added header and cards components --- client/src/pages/home/index.tsx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 client/src/pages/home/index.tsx diff --git a/client/src/pages/home/index.tsx b/client/src/pages/home/index.tsx new file mode 100644 index 000000000..3297e4d29 --- /dev/null +++ b/client/src/pages/home/index.tsx @@ -0,0 +1,20 @@ +import { useEffect } from "react"; +import { useApi } from "../../providers/api"; +import Header from "../../components/header"; +import Cards from "../../components/cards"; + +const Home = () => { + const { fetchPokemons } = useApi(); + + useEffect(() => { + fetchPokemons(); + }, []); + + return ( + <> +
+ + + ); +}; +export default Home; From 6f506faf48caf3a87c4a8b942d88afbacfbc8f34 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:14:28 -0300 Subject: [PATCH 60/79] Feat: component card created with styles and interfaces --- client/src/components/cards/index.tsx | 53 +++++++++++++++++++++++ client/src/components/cards/interfaces.ts | 0 client/src/components/cards/styles.ts | 27 ++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 client/src/components/cards/index.tsx create mode 100644 client/src/components/cards/interfaces.ts create mode 100644 client/src/components/cards/styles.ts diff --git a/client/src/components/cards/index.tsx b/client/src/components/cards/index.tsx new file mode 100644 index 000000000..02910e361 --- /dev/null +++ b/client/src/components/cards/index.tsx @@ -0,0 +1,53 @@ +import { useApi } from "../../providers/api"; +import * as Styles from "./styles"; +import * as BsIcons from "react-icons/bs"; +import Card from "react-bootstrap/Card"; +import Col from "react-bootstrap/Col"; +import Row from "react-bootstrap/Row"; +import Container from "react-bootstrap/Container"; +import ListGroup from "react-bootstrap/ListGroup"; +import Button from "react-bootstrap/Button"; +import Stack from "react-bootstrap/Stack"; + +const Cards = () => { + const { pokemonsData } = useApi(); + + return ( + + + {pokemonsData + ? pokemonsData.map((item, index) => ( + + + + {item.name} + + + + + + + + + Pokedex Number: {item.pokedexNumber} + + Type1: {item.type1} + Type2: {item.type2} + Weather: {item.weather1} + ATK: {item.atk} + DEF: {item.def} + STA: {item.sta} + + Stat Total: {item.statTotal} + + + + + + )) + : null} + + + ); +}; +export default Cards; diff --git a/client/src/components/cards/interfaces.ts b/client/src/components/cards/interfaces.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/components/cards/styles.ts b/client/src/components/cards/styles.ts new file mode 100644 index 000000000..d74401a0d --- /dev/null +++ b/client/src/components/cards/styles.ts @@ -0,0 +1,27 @@ +import styled from "styled-components"; + +export const CardHeader = styled.div` + display: flex; + flex-direction: row; + width: 100%; + background-color: var(--gray3); +`; +export const TitleBox = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding-left: 0.5em; + width: 50%; + height: 2.5em; +`; + +export const ExcludeBox = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + padding-right: 0.5em; + height: 2.5em; + width: 50%; + color: red; +`; From c5867afec11f2b42f181989774dbc5f8976d4165 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:14:55 -0300 Subject: [PATCH 61/79] Feat: component header created with styles and interfaces --- client/src/components/header/index.tsx | 26 ++++++++++++++++++++++ client/src/components/header/interfaces.ts | 0 client/src/components/header/styles.ts | 0 3 files changed, 26 insertions(+) create mode 100644 client/src/components/header/index.tsx create mode 100644 client/src/components/header/interfaces.ts create mode 100644 client/src/components/header/styles.ts diff --git a/client/src/components/header/index.tsx b/client/src/components/header/index.tsx new file mode 100644 index 000000000..2e772cb9a --- /dev/null +++ b/client/src/components/header/index.tsx @@ -0,0 +1,26 @@ +import Container from "react-bootstrap/Container"; +import Navbar from "react-bootstrap/Navbar"; +import Form from "react-bootstrap/Form"; +import Button from "react-bootstrap/Button"; + +const Header = () => { + return ( + <> + + + Pokedex +
+ + + +
+
+ + ); +}; +export default Header; diff --git a/client/src/components/header/interfaces.ts b/client/src/components/header/interfaces.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/components/header/styles.ts b/client/src/components/header/styles.ts new file mode 100644 index 000000000..e69de29bb From fa74d8005cc83d75245af0a8ffe75a1097c03929 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:16:33 -0300 Subject: [PATCH 62/79] Feat: added Providers and BrowserRouter --- client/src/main.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/src/main.tsx b/client/src/main.tsx index 3fd3a69d3..6c81207f3 100644 --- a/client/src/main.tsx +++ b/client/src/main.tsx @@ -1,9 +1,15 @@ import React from "react"; import ReactDOM from "react-dom/client"; +import { BrowserRouter } from "react-router-dom"; +import Providers from "./providers"; import App from "./App"; ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( - + + + + + ); From 473f1c15944fe46fa5b1e2bf30160610648688f8 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:19:01 -0300 Subject: [PATCH 63/79] Feat: Routes, GlobalStyle, and bootstrap css --- client/src/App.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/src/App.tsx b/client/src/App.tsx index 5d09b5b01..fffc280a2 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,13 +1,14 @@ -import { useState } from "react"; - -function App() { - const [count, setCount] = useState(0); +import Routes from "./routes"; +import GlobalStyle from "./style/global"; +import "bootstrap/dist/css/bootstrap.min.css"; +const App = () => { return ( <> -

Hello World!

+ + ); -} +}; export default App; From 4e6a21246edc87e6e775e4ff01693898c5e78d25 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:25:35 -0300 Subject: [PATCH 64/79] Feat: react-bootstrap bootstrap and styled components added in project dependencies --- client/package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/package.json b/client/package.json index 760b27404..fdcee1539 100644 --- a/client/package.json +++ b/client/package.json @@ -10,11 +10,14 @@ }, "dependencies": { "axios": "^1.3.5", + "bootstrap": "^5.2.3", "react": "^18.2.0", + "react-bootstrap": "^2.7.3", "react-dom": "^18.2.0", "react-icons": "^4.8.0", "react-paginate": "^8.2.0", - "react-router-dom": "^6.10.0" + "react-router-dom": "5", + "styled-components": "^5.3.9" }, "devDependencies": { "@types/axios": "^0.14.0", @@ -22,6 +25,7 @@ "@types/react-dom": "^18.0.11", "@types/react-paginate": "^7.1.1", "@types/react-router-dom": "^5.3.3", + "@types/styled-components": "^5.1.26", "@vitejs/plugin-react": "^3.1.0", "typescript": "^4.9.3", "vite": "^4.2.0" From 807d4889527cb911edb605a704292864764cbe93 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:25:51 -0300 Subject: [PATCH 65/79] Feat: react-bootstrap bootstrap and styled components added in project dependencies --- client/yarn.lock | 387 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 364 insertions(+), 23 deletions(-) diff --git a/client/yarn.lock b/client/yarn.lock index 29eab8eba..f0f6d0f95 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -53,6 +53,13 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-compilation-targets@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656" @@ -84,7 +91,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.18.6": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== @@ -176,6 +183,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.17.2", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/template@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" @@ -185,7 +199,7 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4": +"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4", "@babel/traverse@^7.4.5": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36" integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q== @@ -210,6 +224,28 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@emotion/is-prop-valid@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + dependencies: + "@emotion/memoize" "^0.8.0" + +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + "@esbuild/android-arm64@0.17.16": version "0.17.16" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz#7b18cab5f4d93e878306196eed26b6d960c12576" @@ -357,10 +393,46 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@remix-run/router@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.5.0.tgz#57618e57942a5f0131374a9fdb0167e25a117fdc" - integrity sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg== +"@popperjs/core@^2.11.6": + version "2.11.7" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7" + integrity sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw== + +"@react-aria/ssr@^3.5.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.6.0.tgz#e5d52bd1686ff229f68f806cf94ee29dd9f54fb7" + integrity sha512-OFiYQdv+Yk7AO7IsQu/fAEPijbeTwrrEYvdNoJ3sblBBedD5j5fBTNWrUPNVlwC4XWWnWTCMaRIVsJujsFiWXg== + dependencies: + "@swc/helpers" "^0.4.14" + +"@restart/hooks@^0.4.6", "@restart/hooks@^0.4.9": + version "0.4.9" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.9.tgz#ad858fb39d99e252cccce19416adc18fc3f18fcb" + integrity sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ== + dependencies: + dequal "^2.0.2" + +"@restart/ui@^1.4.1": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.6.2.tgz#e4c28c893c934abf2f61ee44999b7625e7b79855" + integrity sha512-hcYs8PwpmHEtwjihLVn2Jr89yrYajfhxN5HtTq3HA9U3+feg1SC3swBM8/qibMTCFsXWToEEtzJMV+LWE+Qjpg== + dependencies: + "@babel/runtime" "^7.21.0" + "@popperjs/core" "^2.11.6" + "@react-aria/ssr" "^3.5.0" + "@restart/hooks" "^0.4.9" + "@types/warning" "^3.0.0" + dequal "^2.0.3" + dom-helpers "^5.2.0" + uncontrollable "^8.0.0" + warning "^4.0.3" + +"@swc/helpers@^0.4.14": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" + integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== + dependencies: + tslib "^2.4.0" "@types/axios@^0.14.0": version "0.14.0" @@ -374,6 +446,14 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== +"@types/hoist-non-react-statics@*": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -410,7 +490,14 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*", "@types/react@^18.0.28": +"@types/react-transition-group@^4.4.4": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@>=16.9.11", "@types/react@>=18.0.28", "@types/react@^18.0.28": version "18.0.35" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.35.tgz#192061cb1044fe01f2d3a94272cd35dd50502741" integrity sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag== @@ -424,6 +511,20 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== +"@types/styled-components@^5.1.26": + version "5.1.26" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.26.tgz#5627e6812ee96d755028a98dae61d28e57c233af" + integrity sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + +"@types/warning@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" + integrity sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA== + "@vitejs/plugin-react@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240" @@ -456,6 +557,27 @@ axios@*, axios@^1.3.5: form-data "^4.0.0" proxy-from-env "^1.1.0" +"babel-plugin-styled-components@>= 1.12.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.1.tgz#cd977cc0ff8410d5cbfdd142e42576e9c8794b87" + integrity sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.21" + picomatch "^2.3.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== + +bootstrap@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.2.3.tgz#54739f4414de121b9785c5da3c87b37ff008322b" + integrity sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ== + browserslist@^4.21.3: version "4.21.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" @@ -466,6 +588,11 @@ browserslist@^4.21.3: node-releases "^2.0.8" update-browserslist-db "^1.0.10" +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001449: version "1.0.30001478" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a" @@ -480,6 +607,11 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +classnames@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -504,6 +636,20 @@ convert-source-map@^1.7.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -521,6 +667,19 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +dequal@^2.0.2, dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +dom-helpers@^5.0.1, dom-helpers@^5.2.0, dom-helpers@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + electron-to-chromium@^1.4.284: version "1.4.360" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.360.tgz#7a24cf81588d6af82ab17d77715cdc09dacfafb2" @@ -610,6 +769,32 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + is-core-module@^2.11.0: version "2.12.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" @@ -617,6 +802,11 @@ is-core-module@^2.11.0: dependencies: has "^1.0.3" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -632,7 +822,12 @@ json5@^2.2.2: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -loose-envify@^1.1.0, loose-envify@^1.4.0: +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -690,11 +885,28 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picomatch@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-value-parser@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + postcss@^8.4.21: version "8.4.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" @@ -704,7 +916,15 @@ postcss@^8.4.21: picocolors "^1.0.0" source-map-js "^1.0.2" -prop-types@^15: +prop-types-extra@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b" + integrity sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew== + dependencies: + react-is "^16.3.2" + warning "^4.0.0" + +prop-types@^15, prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -718,6 +938,24 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +react-bootstrap@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.7.3.tgz#eb464dd5e53309035a542db3513323864dcd53da" + integrity sha512-MhQq+YENiMwnO8MblF96PYAVpb6V6slOjUs6+v/RthTI8zzNkAZmBe7EfXiRtQFvFpM/h16YK4ruaqh9zhlR8Q== + dependencies: + "@babel/runtime" "^7.17.2" + "@restart/hooks" "^0.4.6" + "@restart/ui" "^1.4.1" + "@types/react-transition-group" "^4.4.4" + classnames "^2.3.1" + dom-helpers "^5.2.1" + invariant "^2.2.4" + prop-types "^15.8.1" + prop-types-extra "^1.1.0" + react-transition-group "^4.4.2" + uncontrollable "^7.2.1" + warning "^4.0.3" + react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -731,11 +969,16 @@ react-icons@^4.8.0: resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.8.0.tgz#621e900caa23b912f737e41be57f27f6b2bff445" integrity sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg== -react-is@^16.13.1: +react-is@^16.13.1, react-is@^16.3.2, react-is@^16.6.0, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + react-paginate@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/react-paginate/-/react-paginate-8.2.0.tgz#947c3dcb444a6c16c1bcf8361871aa135baa3dcd" @@ -748,20 +991,43 @@ react-refresh@^0.14.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== -react-router-dom@^6.10.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.10.0.tgz#090ddc5c84dc41b583ce08468c4007c84245f61f" - integrity sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg== +react-router-dom@5: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.4.tgz#2ed62ffd88cae6db134445f4a0c0ae8b91d2e5e6" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== dependencies: - "@remix-run/router" "1.5.0" - react-router "6.10.0" - -react-router@6.10.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.10.0.tgz#230f824fde9dd0270781b5cb497912de32c0a971" - integrity sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ== + "@babel/runtime" "^7.12.13" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.3.4" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.4.tgz#8ca252d70fcc37841e31473c7a151cf777887bb5" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== + dependencies: + "@babel/runtime" "^7.12.13" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-transition-group@^4.4.2: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: - "@remix-run/router" "1.5.0" + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" react@^18.2.0: version "18.2.0" @@ -770,6 +1036,16 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + resolve@^1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" @@ -798,12 +1074,33 @@ semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -supports-color@^5.3.0: +styled-components@^5.3.9: + version "5.3.9" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.9.tgz#641af2a8bb89904de708c71b439caa9633e8f0ba" + integrity sha512-Aj3kb13B75DQBo2oRwRa/APdB5rSmwUfN5exyarpX+x/tlM/rwZA2vVk2vQgVSP6WKaZJHWwiFrzgHt+CLtB4A== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -815,16 +1112,48 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +tiny-invariant@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + +tiny-warning@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== +tslib@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + typescript@^4.9.3: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +uncontrollable@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-7.2.1.tgz#1fa70ba0c57a14d5f78905d533cf63916dc75738" + integrity sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ== + dependencies: + "@babel/runtime" "^7.6.3" + "@types/react" ">=16.9.11" + invariant "^2.2.4" + react-lifecycles-compat "^3.0.4" + +uncontrollable@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-8.0.0.tgz#01e1f09e1ed3cad1d4685233c71a6900b3b3c1a9" + integrity sha512-a954G/0JyXoZdpt0YIzTfoQyWtRS1VvygOBsHttCtZL8jDTKd6vQlUo811y46XnWoXIqQ36QKi3cSEdPuFADkA== + dependencies: + "@types/react" ">=18.0.28" + update-browserslist-db@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" @@ -833,6 +1162,11 @@ update-browserslist-db@^1.0.10: escalade "^3.1.1" picocolors "^1.0.0" +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + vite@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/vite/-/vite-4.2.1.tgz#6c2eb337b0dfd80a9ded5922163b94949d7fc254" @@ -845,6 +1179,13 @@ vite@^4.2.0: optionalDependencies: fsevents "~2.3.2" +warning@^4.0.0, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" From b7a24c38e9acb8fcef48d5411d3248b6428541d2 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Fri, 14 Apr 2023 22:26:18 -0300 Subject: [PATCH 66/79] Fix: deleted files --- client/src/pages/index.ts | 0 client/src/providers/index.ts | 0 client/src/routes/index.ts | 0 client/src/service/index.ts | 0 client/src/style/index.ts | 0 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 client/src/pages/index.ts delete mode 100644 client/src/providers/index.ts delete mode 100644 client/src/routes/index.ts delete mode 100644 client/src/service/index.ts delete mode 100644 client/src/style/index.ts diff --git a/client/src/pages/index.ts b/client/src/pages/index.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/client/src/providers/index.ts b/client/src/providers/index.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/client/src/routes/index.ts b/client/src/routes/index.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/client/src/service/index.ts b/client/src/service/index.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/client/src/style/index.ts b/client/src/style/index.ts deleted file mode 100644 index e69de29bb..000000000 From 67d9b45576360b425fb1f3a27b464c18aec6c48e Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:19:39 -0300 Subject: [PATCH 67/79] Feat: added more colors --- client/src/style/global.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/client/src/style/global.ts b/client/src/style/global.ts index 03a51c757..8a2222f69 100644 --- a/client/src/style/global.ts +++ b/client/src/style/global.ts @@ -18,9 +18,6 @@ export default createGlobalStyle` --gray1: #6f5b61; --gray2: #222222; --gray3: #e9e9e9; - - --title: 'Montserrat', sans-serif; - --content: 'Merriweather', serif; } body{ background-color: var(--default); From 0b38c3a4116e098f7115f7e86ee8207e1f9b5e7f Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:20:35 -0300 Subject: [PATCH 68/79] Fix: exports sintax changed --- client/src/components/header/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/src/components/header/index.tsx b/client/src/components/header/index.tsx index 2e772cb9a..ccdc73148 100644 --- a/client/src/components/header/index.tsx +++ b/client/src/components/header/index.tsx @@ -3,7 +3,7 @@ import Navbar from "react-bootstrap/Navbar"; import Form from "react-bootstrap/Form"; import Button from "react-bootstrap/Button"; -const Header = () => { +export const Header = () => { return ( <> @@ -23,4 +23,3 @@ const Header = () => { ); }; -export default Header; From c03f40152bcdede7de98391bb9eec810598f11ad Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:21:10 -0300 Subject: [PATCH 69/79] Feat: added pokemons component --- client/src/pages/home/index.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/pages/home/index.tsx b/client/src/pages/home/index.tsx index 3297e4d29..3ce4f3750 100644 --- a/client/src/pages/home/index.tsx +++ b/client/src/pages/home/index.tsx @@ -1,7 +1,6 @@ import { useEffect } from "react"; import { useApi } from "../../providers/api"; -import Header from "../../components/header"; -import Cards from "../../components/cards"; +import { Header, Pokemons } from "../../components"; const Home = () => { const { fetchPokemons } = useApi(); @@ -13,7 +12,7 @@ const Home = () => { return ( <>
- + ); }; From 3cbc93e10752431ad036e8eb3b6b129ea02748ff Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:22:04 -0300 Subject: [PATCH 70/79] Feat: set all fields to be optional --- client/src/components/cards/interfaces.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 client/src/components/cards/interfaces.ts diff --git a/client/src/components/cards/interfaces.ts b/client/src/components/cards/interfaces.ts deleted file mode 100644 index e69de29bb..000000000 From 0992a014b7e6a18af24b864185cc0cd8d6bf383b Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:23:00 -0300 Subject: [PATCH 71/79] Feat: added pokemons to the main components exports --- client/src/components/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/components/index.ts b/client/src/components/index.ts index e69de29bb..9fc1e86bc 100644 --- a/client/src/components/index.ts +++ b/client/src/components/index.ts @@ -0,0 +1,5 @@ +import { Header } from "./header"; +import { Pokemons } from "./pokemons"; +import { Pagination } from "./pagination"; + +export { Header, Pokemons, Pagination }; From 040a87ee2fe3e2f0482c82ec644d5da8ed4dda07 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:24:03 -0300 Subject: [PATCH 72/79] Fix: export sintax --- client/src/components/pagination/index.tsx | 19 +++++++++++++++++++ .../src/components/pagination/interfaces.ts | 4 ++++ 2 files changed, 23 insertions(+) create mode 100644 client/src/components/pagination/index.tsx create mode 100644 client/src/components/pagination/interfaces.ts diff --git a/client/src/components/pagination/index.tsx b/client/src/components/pagination/index.tsx new file mode 100644 index 000000000..7fc170d36 --- /dev/null +++ b/client/src/components/pagination/index.tsx @@ -0,0 +1,19 @@ +import ReactPaginate from "react-paginate"; +import { IPagination } from "./interfaces"; + +export const Pagination = ({ switchPage, pageCount }: IPagination) => { + return ( + "} + pageCount={pageCount} + onPageChange={switchPage} + containerClassName={"paginationUl"} + previousLinkClassName={"previousBttn"} + nextLinkClassName={"nextBttn"} + disabledClassName={"paginationDisabled"} + activeClassName={"paginationActive"} + pageClassName={"paginationPages"} + /> + ); +}; diff --git a/client/src/components/pagination/interfaces.ts b/client/src/components/pagination/interfaces.ts new file mode 100644 index 000000000..beee4a822 --- /dev/null +++ b/client/src/components/pagination/interfaces.ts @@ -0,0 +1,4 @@ +export interface IPagination { + switchPage: ({ selected }: { selected: number }) => void; + pageCount: number; +} From e4f1574f106316658d531b6d6acc3d979f560526 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:24:23 -0300 Subject: [PATCH 73/79] Fix: export sintax --- .../src/components/pokemons/cards/index.tsx | 49 ++++++++++++++ .../components/pokemons/cards/interfaces.ts | 32 +++++++++ .../src/components/pokemons/cards/styles.ts | 62 ++++++++++++++++++ client/src/components/pokemons/index.tsx | 54 +++++++++++++++ client/src/components/pokemons/styles.ts | 65 +++++++++++++++++++ 5 files changed, 262 insertions(+) create mode 100644 client/src/components/pokemons/cards/index.tsx create mode 100644 client/src/components/pokemons/cards/interfaces.ts create mode 100644 client/src/components/pokemons/cards/styles.ts create mode 100644 client/src/components/pokemons/index.tsx create mode 100644 client/src/components/pokemons/styles.ts diff --git a/client/src/components/pokemons/cards/index.tsx b/client/src/components/pokemons/cards/index.tsx new file mode 100644 index 000000000..b8a02a1d3 --- /dev/null +++ b/client/src/components/pokemons/cards/index.tsx @@ -0,0 +1,49 @@ +import { useApi } from "../../../providers/api"; +import { IPokemonsProps } from "./interfaces"; +import * as Styled from "./styles"; +import * as BsIcons from "react-icons/bs"; +import Card from "react-bootstrap/Card"; +import Col from "react-bootstrap/Col"; +import Row from "react-bootstrap/Row"; +import Container from "react-bootstrap/Container"; +import ListGroup from "react-bootstrap/ListGroup"; + +export const Cards = ({ + id, + name, + pokedexNumber, + type1, + type2, + weather1, + atk, + def, + sta, + statTotal, +}: IPokemonsProps) => { + const { pokemonsData } = useApi(); + + return ( + <> + + + {name} + + + + + +
    +
  • Number: {pokedexNumber}
  • +
  • Type1: {type1}
  • +
  • Type2: {type2}
  • +
  • Weather1: {weather1}
  • +
  • ATK: {atk}
  • +
  • DEF: {def}
  • +
  • STA: {sta}
  • +
  • Stat Total: {statTotal}
  • +
+
+
+ + ); +}; diff --git a/client/src/components/pokemons/cards/interfaces.ts b/client/src/components/pokemons/cards/interfaces.ts new file mode 100644 index 000000000..5c0d126f0 --- /dev/null +++ b/client/src/components/pokemons/cards/interfaces.ts @@ -0,0 +1,32 @@ +export interface IPokemonsProps { + id?: string; + name?: string; + pokedexNumber?: number; + imgName?: string; + generation?: number; + evolutionStage?: string; + evolved?: number; + familyID?: number; + crossGen?: number; + type1?: string; + type2?: string; + weather1?: string; + weather2?: string; + statTotal?: number; + atk?: number; + def?: number; + sta?: number; + legendary?: number; + aquireable?: number; + spawns?: number; + regional?: number; + raidable?: number; + hatchable?: number; + shiny?: number; + nest?: number; + new?: number; + notGettable?: number; + futureEvolve?: number; + cp40?: number; + cp39?: number; +} diff --git a/client/src/components/pokemons/cards/styles.ts b/client/src/components/pokemons/cards/styles.ts new file mode 100644 index 000000000..7f7caafd3 --- /dev/null +++ b/client/src/components/pokemons/cards/styles.ts @@ -0,0 +1,62 @@ +import styled from "styled-components"; + +export const CardSection = styled.section` + display: flex; + flex-direction: column; + border: 1px solid var(--gray2); + width: 90%; + border-radius: 4px; + max-width: 375px; + margin-top: 0.9em; + margin-bottom: 0.5em; + @media (min-width: 768px) { + width: 45%; + } + @media (min-width: 1024px) { + width: 30%; + } +`; + +export const TitleSection = styled.section` + display: flex; + flex-direction: row; + align-items: center; + padding-left: 0.5em; + width: 100%; + height: 2.5em; + border-radius: 4px 4px 0px 0px; + background-color: var(--gray3); +`; + +export const NameBox = styled.div` + display: flex; + flex-direction: row; + width: 100%; +`; + +export const ExcludeBox = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + padding-right: 0.5em; + height: 2.5em; + width: 50%; + color: red; +`; + +export const ContentSection = styled.section` + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + width: 100%; + height: 13em; + ul { + width: 97%; + padding-left: 0.5em; + } + li { + border-bottom: 1px solid var(--gray3); + } +`; diff --git a/client/src/components/pokemons/index.tsx b/client/src/components/pokemons/index.tsx new file mode 100644 index 000000000..a155cf69e --- /dev/null +++ b/client/src/components/pokemons/index.tsx @@ -0,0 +1,54 @@ +import * as Styled from "./styles"; +import { Cards } from "./cards"; +import { useState } from "react"; +import { useApi } from "../../providers/api"; +import { Pagination } from "../pagination"; + +export const Pokemons = () => { + const { pokemonsData } = useApi(); + + const [pageNumber, setPageNumber] = useState(0); + + const pokemonsPerPage = 6; + const viewedPokemons = pageNumber * pokemonsPerPage; + + const displayPokemons = pokemonsData.slice( + viewedPokemons, + viewedPokemons + pokemonsPerPage + ); + const pageCount = Math.ceil(pokemonsData.length / pokemonsPerPage); + + const switchPage = ({ selected }: { selected: number }) => { + setPageNumber(selected); + }; + + return ( + <> + + + {displayPokemons + ? displayPokemons.map((data, index) => ( + + )) + : null} + + + + + + + + ); +}; diff --git a/client/src/components/pokemons/styles.ts b/client/src/components/pokemons/styles.ts new file mode 100644 index 000000000..93053acd4 --- /dev/null +++ b/client/src/components/pokemons/styles.ts @@ -0,0 +1,65 @@ +import styled from "styled-components"; + +export const Main = styled.main` + display: flex; + align-items: center; + flex-direction: column; + border: 1px solid black; + margin-top: 0.9em; +`; + +export const PokemonSection = styled.section` + display: flex; + flex-direction: column; + align-items: center; + border: 1px solid blue; + background-color: var(--default); + width: 100%; + max-width: 1024px; + + @media (min-width: 600px) { + flex-direction: row; + flex-wrap: wrap; + align-items: center; + justify-content: space-evenly; + } + + /* @media (min-width: 1300px) { + flex-wrap: wrap; + justify-content: space-evenly; + height: 33em; + max-width: 1300px; + } */ +`; + +export const PaginationSection = styled.section` + display: flex; + justify-content: center; + align-items: flex-start; + width: 100%; + max-width: 400px; + height: 3em; + margin-top: 1.5em; + .paginationUl { + display: flex; + flex-direction: row; + width: 100%; + justify-content: space-between; + padding: 0 10%; + color: var(--gra2); + @media (min-width: 1200) { + } + } + .previousBttn, + .nextBttn { + color: var(--gray2); + cursor: pointer; + } + .paginationActive { + text-decoration: underline; + color: var(--gray2); + } + .paginationPages { + cursor: pointer; + } +`; From ccd95b7575bd9148040962d908d0f7f761d22f37 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:28:51 -0300 Subject: [PATCH 74/79] Fix: removing borders --- client/src/components/cards/index.tsx | 53 ------------------------ client/src/components/pokemons/styles.ts | 9 ---- 2 files changed, 62 deletions(-) delete mode 100644 client/src/components/cards/index.tsx diff --git a/client/src/components/cards/index.tsx b/client/src/components/cards/index.tsx deleted file mode 100644 index 02910e361..000000000 --- a/client/src/components/cards/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { useApi } from "../../providers/api"; -import * as Styles from "./styles"; -import * as BsIcons from "react-icons/bs"; -import Card from "react-bootstrap/Card"; -import Col from "react-bootstrap/Col"; -import Row from "react-bootstrap/Row"; -import Container from "react-bootstrap/Container"; -import ListGroup from "react-bootstrap/ListGroup"; -import Button from "react-bootstrap/Button"; -import Stack from "react-bootstrap/Stack"; - -const Cards = () => { - const { pokemonsData } = useApi(); - - return ( - - - {pokemonsData - ? pokemonsData.map((item, index) => ( - - - - {item.name} - - - - - - - - - Pokedex Number: {item.pokedexNumber} - - Type1: {item.type1} - Type2: {item.type2} - Weather: {item.weather1} - ATK: {item.atk} - DEF: {item.def} - STA: {item.sta} - - Stat Total: {item.statTotal} - - - - - - )) - : null} - - - ); -}; -export default Cards; diff --git a/client/src/components/pokemons/styles.ts b/client/src/components/pokemons/styles.ts index 93053acd4..032afa78c 100644 --- a/client/src/components/pokemons/styles.ts +++ b/client/src/components/pokemons/styles.ts @@ -4,7 +4,6 @@ export const Main = styled.main` display: flex; align-items: center; flex-direction: column; - border: 1px solid black; margin-top: 0.9em; `; @@ -12,7 +11,6 @@ export const PokemonSection = styled.section` display: flex; flex-direction: column; align-items: center; - border: 1px solid blue; background-color: var(--default); width: 100%; max-width: 1024px; @@ -23,13 +21,6 @@ export const PokemonSection = styled.section` align-items: center; justify-content: space-evenly; } - - /* @media (min-width: 1300px) { - flex-wrap: wrap; - justify-content: space-evenly; - height: 33em; - max-width: 1300px; - } */ `; export const PaginationSection = styled.section` From 06593076bcd8d9493154ab93ae830ec0d5861223 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:29:54 -0300 Subject: [PATCH 75/79] Fix: removing non used bootstrap components --- client/src/components/pokemons/cards/index.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/client/src/components/pokemons/cards/index.tsx b/client/src/components/pokemons/cards/index.tsx index b8a02a1d3..25b869579 100644 --- a/client/src/components/pokemons/cards/index.tsx +++ b/client/src/components/pokemons/cards/index.tsx @@ -2,11 +2,6 @@ import { useApi } from "../../../providers/api"; import { IPokemonsProps } from "./interfaces"; import * as Styled from "./styles"; import * as BsIcons from "react-icons/bs"; -import Card from "react-bootstrap/Card"; -import Col from "react-bootstrap/Col"; -import Row from "react-bootstrap/Row"; -import Container from "react-bootstrap/Container"; -import ListGroup from "react-bootstrap/ListGroup"; export const Cards = ({ id, From dd4b93b61ff68f45f78036aafa1d1bd99dfcf9a8 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:32:13 -0300 Subject: [PATCH 76/79] Fix: deleted files --- client/src/components/cards/styles.ts | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 client/src/components/cards/styles.ts diff --git a/client/src/components/cards/styles.ts b/client/src/components/cards/styles.ts deleted file mode 100644 index d74401a0d..000000000 --- a/client/src/components/cards/styles.ts +++ /dev/null @@ -1,27 +0,0 @@ -import styled from "styled-components"; - -export const CardHeader = styled.div` - display: flex; - flex-direction: row; - width: 100%; - background-color: var(--gray3); -`; -export const TitleBox = styled.div` - display: flex; - flex-direction: row; - align-items: center; - padding-left: 0.5em; - width: 50%; - height: 2.5em; -`; - -export const ExcludeBox = styled.div` - display: flex; - flex-direction: row; - align-items: center; - justify-content: flex-end; - padding-right: 0.5em; - height: 2.5em; - width: 50%; - color: red; -`; From 6ab1e095ffe2fb5fa42ef7964e93523de2959151 Mon Sep 17 00:00:00 2001 From: kennedybm Date: Sat, 15 Apr 2023 02:43:39 -0300 Subject: [PATCH 77/79] Feat: created and added insomnia routes collection --- server/src/assets/api-collection-insomnia.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 server/src/assets/api-collection-insomnia.json diff --git a/server/src/assets/api-collection-insomnia.json b/server/src/assets/api-collection-insomnia.json new file mode 100644 index 000000000..e7eb60971 --- /dev/null +++ b/server/src/assets/api-collection-insomnia.json @@ -0,0 +1 @@ +{"_type":"export","__export_format":4,"__export_date":"2023-04-15T05:41:54.585Z","__export_source":"insomnia.desktop.app:v2023.1.0","resources":[{"_id":"req_17a5c3fc010e43348dda9d356cf73f90","parentId":"fld_04df1d7bce0b459a94957dc58cc4ba01","modified":1681434742484,"created":1681408126811,"url":"{{ _.baseURL }}","name":"LIST ALL","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1681422583375.5,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"fld_04df1d7bce0b459a94957dc58cc4ba01","parentId":"wrk_913599bb3c9046caada3fce0fcac5eed","modified":1681408123901,"created":1681408123901,"name":"Pokemons","description":"","environment":{},"environmentPropertyOrder":null,"metaSortKey":-1681408123901,"_type":"request_group"},{"_id":"wrk_913599bb3c9046caada3fce0fcac5eed","parentId":null,"modified":1681408066279,"created":1681408066279,"name":"Pokemons API","description":"","scope":"collection","_type":"workspace"},{"_id":"req_95fd2a397a144af1aaaedcc9c737602f","parentId":"fld_04df1d7bce0b459a94957dc58cc4ba01","modified":1681480655706,"created":1681410439857,"url":"{{ _.baseURL }}","name":"CREATE","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"name\": \"Bulbasaur\",\n\t\"pokedexNumber\": 1,\n\t\"imgName\": \"2\",\n\t\"generation\": 1,\n\t\"evolutionStage\": \"1\",\n\t\"evolved\": 0,\n\t\"familyID\": 1,\n\t\"crossGen\": 0,\n\t\"type1\": \"grass\",\n\t\"type2\": \"poison\",\n \"weather1\": \"Sunny/clear\",\n\t\"weather2\": \"Cloudy\",\n\t\"statTotal\": 326,\n\t\"atk\": 118,\n\t\"def\": 118,\n\t\"sta\": 90,\n\t\"legendary\": 0,\n\t\"aquireable\": 1,\n\t\"spawns\": 1,\n\t\"regional\": 0,\n\t\"raidable\": 0,\n\t\"hatchable\": 5,\n\t\"shiny\": 0,\n\t\"nest\": 1,\n\t\"new\": 0,\n\t\"notGettable\": 0,\n\t\"futureEvolve\": 0,\n\t\"cp40\": 981,\n\t\"cp39\": 967\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1681410439857,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_31d03a09067c4aa38769fe1691873f4f","parentId":"fld_04df1d7bce0b459a94957dc58cc4ba01","modified":1681480064457,"created":1681429573087,"url":"{{ _.baseURL }}/643955883ca7bd11ee91196c","name":"RETRIEVE BY ID","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1681408126761,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_1584fc604ffb44b2ac55a0edcf22b3b6","parentId":"fld_04df1d7bce0b459a94957dc58cc4ba01","modified":1681476772817,"created":1681434726894,"url":"{{ _.baseURL }}/6438872700c205c28b421f99","name":"UPDATE BY ID","description":"","method":"PATCH","body":{"mimeType":"application/json","text":"{\n\t\"_id\": \"some\"\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json"}],"authentication":{},"metaSortKey":-1681408126711,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_cd69c958e7094da9bc77a5312a998346","parentId":"fld_04df1d7bce0b459a94957dc58cc4ba01","modified":1681537175200,"created":1681478880965,"url":"{{ _.baseURL }}/6439e94be76ccd6cc12cbdcf","name":"DELETE BY ID","description":"","method":"DELETE","body":{},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1681408126661,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"env_a801641436fd90f2ddfa50e63b8409ca196ffcdc","parentId":"wrk_913599bb3c9046caada3fce0fcac5eed","modified":1681408112009,"created":1681408066282,"name":"Base Environment","data":{"baseURL":"http://localhost:5500/pokemons"},"dataPropertyOrder":{"&":["baseURL"]},"color":null,"isPrivate":false,"metaSortKey":1681408066283,"_type":"environment"},{"_id":"jar_a801641436fd90f2ddfa50e63b8409ca196ffcdc","parentId":"wrk_913599bb3c9046caada3fce0fcac5eed","modified":1681408066284,"created":1681408066284,"name":"Default Jar","cookies":[],"_type":"cookie_jar"},{"_id":"spc_a95b049fa0364a48b17c4255a4c1a10f","parentId":"wrk_913599bb3c9046caada3fce0fcac5eed","modified":1681408066280,"created":1681408066280,"fileName":"Pokemons API","contents":"","contentType":"yaml","_type":"api_spec"}]} \ No newline at end of file From c3d35af14d8db9fe97ec76168f19a1bb8b3b8b0b Mon Sep 17 00:00:00 2001 From: Kennedy Barreto <1kennedy.bm@gmail.com> Date: Sat, 15 Apr 2023 02:47:49 -0300 Subject: [PATCH 78/79] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..428b359ef --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Kennedy Barreto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From e7e1873349ff8de976b3f1b004daa3b4426523c6 Mon Sep 17 00:00:00 2001 From: Kennedy Barreto <1kennedy.bm@gmail.com> Date: Sat, 15 Apr 2023 02:52:39 -0300 Subject: [PATCH 79/79] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a41097d6..4cde946cb 100644 --- a/README.md +++ b/README.md @@ -52,11 +52,13 @@ docker compose up http://localhost:3000/ ``` + and the back-end at: ```clipboard http://localhost:5500/pokemons ``` +When the 'Running on port 5500' message appears in the terminal, simply refresh the front-end page. ## Usage @@ -64,4 +66,4 @@ This project is developed with a script that populates the back-end with a colle ## License -[MIT]() +[MIT](https://github.com/kennedybm/teste-desenvolvimento-web/blob/kennedy-barreto/LICENSE)