From bed8e64ba153661cd29fc486f7cc3b3a32ea22e9 Mon Sep 17 00:00:00 2001 From: Gabriel Jorge Date: Mon, 7 Feb 2022 23:15:35 -0300 Subject: [PATCH] exercicio de sync-await-promises --- .../package-lock.json | 101 ++++++++++++++++++ .../package.json | 22 ++++ .../src/baseURL.ts | 1 + .../template-async-await-promises/src/ex1.ts | 20 ++++ .../template-async-await-promises/src/ex2.ts | 16 +++ .../template-async-await-promises/src/ex3.ts | 26 +++++ .../template-async-await-promises/src/ex4.ts | 19 ++++ .../template-async-await-promises/src/ex5.ts | 24 +++++ .../template-async-await-promises/src/ex6.ts | 25 +++++ .../tsconfig.json | 13 +++ 10 files changed, 267 insertions(+) create mode 100644 modulo4/sync-await-promises/template-async-await-promises/package-lock.json create mode 100644 modulo4/sync-await-promises/template-async-await-promises/package.json create mode 100644 modulo4/sync-await-promises/template-async-await-promises/src/baseURL.ts create mode 100644 modulo4/sync-await-promises/template-async-await-promises/src/ex1.ts create mode 100644 modulo4/sync-await-promises/template-async-await-promises/src/ex2.ts create mode 100644 modulo4/sync-await-promises/template-async-await-promises/src/ex3.ts create mode 100644 modulo4/sync-await-promises/template-async-await-promises/src/ex4.ts create mode 100644 modulo4/sync-await-promises/template-async-await-promises/src/ex5.ts create mode 100644 modulo4/sync-await-promises/template-async-await-promises/src/ex6.ts create mode 100644 modulo4/sync-await-promises/template-async-await-promises/tsconfig.json diff --git a/modulo4/sync-await-promises/template-async-await-promises/package-lock.json b/modulo4/sync-await-promises/template-async-await-promises/package-lock.json new file mode 100644 index 0000000..99d25f5 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/package-lock.json @@ -0,0 +1,101 @@ +{ + "name": "async-await-promises", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "async-await-promises", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^0.20.0" + }, + "devDependencies": { + "@types/axios": "^0.14.0", + "typescript": "^4.0.2" + } + }, + "node_modules/@types/axios": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz", + "integrity": "sha1-7CMA++fX3d1+udOr+HmZlkyvzkY=", + "deprecated": "This is a stub types definition for axios (https://github.com/mzabriskie/axios). axios provides its own type definitions, so you don't need @types/axios installed!", + "dev": true, + "dependencies": { + "axios": "*" + } + }, + "node_modules/axios": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz", + "integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==", + "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + } + }, + "dependencies": { + "@types/axios": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz", + "integrity": "sha1-7CMA++fX3d1+udOr+HmZlkyvzkY=", + "dev": true, + "requires": { + "axios": "*" + } + }, + "axios": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz", + "integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "follow-redirects": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + }, + "typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "dev": true + } + } +} diff --git a/modulo4/sync-await-promises/template-async-await-promises/package.json b/modulo4/sync-await-promises/template-async-await-promises/package.json new file mode 100644 index 0000000..05133b3 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/package.json @@ -0,0 +1,22 @@ +{ + "name": "async-await-promises", + "version": "1.0.0", + "main": "src/index.js", + "scripts": { + "ex1": "tsc && node build/ex1.js", + "ex2": "tsc && node build/ex2.js", + "ex3": "tsc && node build/ex3.js", + "ex4": "tsc && node build/ex4.js", + "ex5": "tsc && node build/ex4.js", + "ex6": "tsc && node build/ex4.js" + }, + "author": "Labenu", + "license": "ISC", + "dependencies": { + "axios": "^0.20.0" + }, + "devDependencies": { + "@types/axios": "^0.14.0", + "typescript": "^4.0.2" + } +} diff --git a/modulo4/sync-await-promises/template-async-await-promises/src/baseURL.ts b/modulo4/sync-await-promises/template-async-await-promises/src/baseURL.ts new file mode 100644 index 0000000..0a42108 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/src/baseURL.ts @@ -0,0 +1 @@ +export const baseURL: string = 'https://labenews.herokuapp.com'; \ No newline at end of file diff --git a/modulo4/sync-await-promises/template-async-await-promises/src/ex1.ts b/modulo4/sync-await-promises/template-async-await-promises/src/ex1.ts new file mode 100644 index 0000000..93ac0fe --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/src/ex1.ts @@ -0,0 +1,20 @@ +import axios from "axios" +import { baseURL } from "./baseURL" + +// axios.get(`${baseURL}/subscribers`).then(console.log) + +// Ex1-a)Qual endpoint você deve utilizar para isso? +// RES: Metodo Get + + +// Ex1-b)Como indicamos o tipo de uma função assíncrona que retorna um "array de qualquer coisa"? +// RES: ":Promise " + +// Ex1-c) +async function getSubscribers (): Promise { + const response = await axios.get(`${baseURL}/subscribers`); + return response.data; + console.log(response.data) +} +console.log(getSubscribers()) + diff --git a/modulo4/sync-await-promises/template-async-await-promises/src/ex2.ts b/modulo4/sync-await-promises/template-async-await-promises/src/ex2.ts new file mode 100644 index 0000000..fca1094 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/src/ex2.ts @@ -0,0 +1,16 @@ +import axios from "axios" +import { baseURL } from "./baseURL" + +//Ex-1-a) +// Amsior diferença entre as sintaxes é o inicio na função normal ela começa com async function nome_da_funcao ():Promise {} +// já na arrow function ele começa com const Nome_da-funçao = async + +//Ex-1-b) +const getSubscribers = async (): Promise => { + const response = await axios.get(`${baseURL}/subscribers`); + return response.data; + }; + + console.log(getSubscribers()) + + diff --git a/modulo4/sync-await-promises/template-async-await-promises/src/ex3.ts b/modulo4/sync-await-promises/template-async-await-promises/src/ex3.ts new file mode 100644 index 0000000..1e2a5b6 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/src/ex3.ts @@ -0,0 +1,26 @@ +import axios from "axios" +import { baseURL } from "./baseURL" + +//Ex-3-a) +//RES: funcionaPerfeitamente + +type user = { + id: string; + name: string; + email: string; +} + +//Ex-3-b) + +//Ex-3-c) + +const getSubscribers = async (): Promise => { + const response = await axios.get(`${baseURL}/subscribers`); + return response.data.map((res: any) => { + return { + id: res.id, + name: res.name, + email: res.email, + }; + }); +}; diff --git a/modulo4/sync-await-promises/template-async-await-promises/src/ex4.ts b/modulo4/sync-await-promises/template-async-await-promises/src/ex4.ts new file mode 100644 index 0000000..49ca430 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/src/ex4.ts @@ -0,0 +1,19 @@ +import axios from "axios" +import { baseURL } from "./baseURL" + + +//Ex-4-a) +//RES: metodo put, pq diz na documentação + +//Ex-4-b) +const createNews = async( + title: string, + content: string, + date: number +): Promise => { + await axios.put(`${baseURL}/news`, { + title: title, + content: content, + date: date + }); +} \ No newline at end of file diff --git a/modulo4/sync-await-promises/template-async-await-promises/src/ex5.ts b/modulo4/sync-await-promises/template-async-await-promises/src/ex5.ts new file mode 100644 index 0000000..37e7985 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/src/ex5.ts @@ -0,0 +1,24 @@ +import axios from "axios" +import { baseURL } from "./baseURL" + +//Ex5) + + +// const sendNotifications = async ( +// users: user[], +// message: string +// ): Promise => { + +// try { +// for (const user of users) { +// await axios.post(`${baseURL}/notifications`, { +// subscriberId: user.id, +// message +// }); +// } + +// console.log("All notifications sent"); +// } catch { +// console.log("Error"); +// } +// }; \ No newline at end of file diff --git a/modulo4/sync-await-promises/template-async-await-promises/src/ex6.ts b/modulo4/sync-await-promises/template-async-await-promises/src/ex6.ts new file mode 100644 index 0000000..b5b1948 --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/src/ex6.ts @@ -0,0 +1,25 @@ +import axios from "axios" +import { baseURL } from "./baseURL" + +//Ex-6) + + +// const sendNotifications = async ( +// users: user[], +// message: string +// ): Promise => { + +// try { +// const promises = users.map(user =>{ +// return axios.post(`${baseURL}/notifications`, { +// subscriberId: user.id, +// message: message, +// }) +// }) + +// await Promise.all(promises); + +// } catch { +// console.log("Error"); +// } +// }; \ No newline at end of file diff --git a/modulo4/sync-await-promises/template-async-await-promises/tsconfig.json b/modulo4/sync-await-promises/template-async-await-promises/tsconfig.json new file mode 100644 index 0000000..abcb92f --- /dev/null +++ b/modulo4/sync-await-promises/template-async-await-promises/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "outDir": "./build", + "rootDir": "./src", + "strict": true, + "noImplicitAny": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + } +} \ No newline at end of file