├── README.md ├── WSL 2 com Docker ├── Ambiente de desenvolvimento com WSL 2 e Docker.pdf:Zone.Identifier └── slides.pdf ├── iniciando-typescript ├── .vscode │ └── settings.json ├── dist │ ├── index.html │ ├── index.js │ └── index.js.map ├── slides.pdf ├── src │ └── index.ts └── tsconfig.json └── remote-container ├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .eslintrc.js ├── .gitignore ├── .prettierrc ├── .vscode └── settings.json ├── README.md ├── nest-cli.json ├── package-lock.json ├── package.json ├── slides.pdf ├── src ├── app.controller.spec.ts ├── app.controller.ts ├── app.module.ts ├── app.service.ts └── main.ts ├── test ├── app.e2e-spec.ts └── jest-e2e.json ├── tsconfig.build.json └── tsconfig.json /README.md: -------------------------------------------------------------------------------- 1 |
4 | 5 | ## Descrição 6 | 7 | Fontes do Esquenta do Avança Dev 1.0 8 | 9 | ## Slides 10 | 11 | Se a live teve slides, terá um arquivo slides.pdf no projeto. 12 | -------------------------------------------------------------------------------- /WSL 2 com Docker/Ambiente de desenvolvimento com WSL 2 e Docker.pdf:Zone.Identifier: -------------------------------------------------------------------------------- 1 | [ZoneTransfer] 2 | ZoneId=3 3 | ReferrerUrl=https://docs.google.com/ 4 | HostUrl=https://doc-0g-78-slides.googleusercontent.com/export/vnu6g8aimvsj02nv97vjj2kas4/vfm4nc8feb4tjucbvj432erhs8/1604005525000/118302835890793790886/118302835890793790886/13JUyXGJZHcwwltJtjdO6TZPA26vEh7CrY1wlM07T2cM?id=13JUyXGJZHcwwltJtjdO6TZPA26vEh7CrY1wlM07T2cM&pageid=ga4e3e8b361_0_170&exportFormat=pdf&dat=ANCXxGjr0TS4zg4YATnUg8d2Igw6XoefXOVje6yI5-ZpqgpmjZ45Gjvq2opDo4wFBg8u1G6X7rvHZY2Or7RMRtHCAvK-tA2G8znWyYMxDZjXYRw2KerpYY-KMtXVDARbFZweHHD1OR3PoYSzKxsDksts0TgDYh6hXSLcXEBxbjDGCRAk5iiBTHTnpmDhGKonWfmYp0kaK2A_h9OEZeNe8HiG8GvMpJD1TuOG8iTYbpTLdPcfVAPJwnj1imPcJThb0ta720lUZW7dlQQYYASQpHjiLfry7lPJ_qOzJ6jiXcrFZnQFxr_srxZdNXPCsU5hRcwwfbnTG2cv3OOIzrVme3HgIJSYcF73CnBPkqiH5J8vqUAZh9MDAZPwYbT99MH7pRTl-bedCl6ZEoVmbTK6R1w8pFa2aSIUqb9902A_40Ki6ythX6acbkoIC3trHon_nD99UdsHHzZMn6tPqXJoEXYPGfiwmaOK2vQ8S-DFCet3YJjeJOvvimS7dAQatH64Y81vrKEMPx5H7XVSM4STgNPZAQYy1PVAAxmwucDWq6jhaC_m1zMLAp91erPClDB1t9cXwwm0CKUXW2vdycUcxIfsdAtES_dVXnMOado3yPFyjPyz4pC928M6uMVDPVJz_SlbM2ce8i-ApjGJ2ERMLMElbYd1rqv9j_uSDe7Whj68dtJEXzZOWLAZT70VcvGCSbeJq3HokCycCy4-wrBqE2GIVFSrh6t3TKPT 5 | -------------------------------------------------------------------------------- /WSL 2 com Docker/slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeedu/avancadev-edicao1/5533f3309ef632e1bc3daabe6b0947078c6e4de7/WSL 2 com Docker/slides.pdf -------------------------------------------------------------------------------- /iniciando-typescript/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "workbench.colorCustomizations": { 3 | "activityBar.activeBackground": "#0098ff", 4 | "activityBar.activeBorder": "#bf0072", 5 | "activityBar.background": "#0098ff", 6 | "activityBar.foreground": "#e7e7e7", 7 | "activityBar.inactiveForeground": "#e7e7e799", 8 | "activityBarBadge.background": "#bf0072", 9 | "activityBarBadge.foreground": "#e7e7e7", 10 | "statusBar.background": "#0098ff", 11 | "statusBar.foreground": "#e7e7e7", 12 | "statusBarItem.hoverBackground": "#33adff" 13 | }, 14 | "peacock.remoteColor": "#007acc" 15 | } -------------------------------------------------------------------------------- /iniciando-typescript/dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /iniciando-typescript/dist/index.js: -------------------------------------------------------------------------------- 1 | var _a; 2 | /* ### QUALQUER OUTRO TIPO É NÃO PRIMITIVO 3 | * - Object (nativo do JavaScript, não deve ser usado para tipagem) 4 | * - object (pode ser usado para tipagem) 5 | * - Class 6 | * - qualquer outra modelagem de object 7 | */ 8 | /* ### TIPOS IMPLÍCITOS E EXPLÍCITOS */ 9 | var impl_string = "typescript"; //string 10 | var impl_number = 5.5; //number 11 | var impl_boolean = true; //boolean 12 | var impl_obj = { name: "typescript" }; // {name: string} 13 | var expl_string = "typescript"; 14 | var expl_number = 5.5; 15 | var expl_boolean = true; 16 | var expl_obj = { name: "typescript" }; 17 | var obj = { 18 | firstName: "luiz", 19 | lastName: "diniz", 20 | fullName: function () { 21 | return "luiz carlos"; // 22 | } 23 | }; 24 | console.log("obj - user", obj); 25 | /* ### OPTIONAL CHAINING (PROPOSTA PARA ECMASCRIPT) */ 26 | var city = (_a = obj.address) === null || _a === void 0 ? void 0 : _a.city; 27 | console.log("city", city); 28 | /* ### NULLISH COALESCING (PROPOSTA PARA ECMASCRIPT) */ 29 | var cityLabel = city !== null && city !== void 0 ? city : "sem cidade"; 30 | console.log(cityLabel); 31 | /* ### NON-NULL ASSERTION (PROPOSTA PARA ECMASCRIPT) */ 32 | function addAddress(obj) { 33 | obj.address = { address: "rua x", city: "betim" }; 34 | } 35 | addAddress(obj); 36 | var cityNonNull = obj.address.city; 37 | //obj.address!.city = "valor" 38 | console.log("cityNonNull", cityNonNull); 39 | var num1 = undefined; 40 | var num2 = num1; 41 | console.log(num2); 42 | /* ### FUNÇÕES 43 | * Funções recebem parâmetros que podem ser tipados normalmente e 44 | * pode-se determinar o tipo de retorno com um tipo primitivo ou não-primitivo 45 | */ 46 | function soma(a, b) { 47 | return a + b; 48 | } 49 | //parâmetro lastName é opcional 50 | function fullName(firstName, lastName) { 51 | return lastName === undefined ? firstName : firstName + " " + lastName; 52 | } 53 | console.log("fullname", fullName("luiz", "diniz")); 54 | var UserCrud = /** @class */ (function () { 55 | function UserCrud(name, email, password) { 56 | this.name = name; 57 | this.email = email; 58 | this.password = password; 59 | this.variavel = 'valor'; 60 | } 61 | UserCrud.prototype.create = function (data) { 62 | throw new Error("Method not implemented."); 63 | }; 64 | UserCrud.prototype.fetch = function (filter) { 65 | throw new Error("Method not implemented."); 66 | }; 67 | UserCrud.prototype.find = function (id) { 68 | throw new Error("Method not implemented."); 69 | }; 70 | return UserCrud; 71 | }()); 72 | var user = new UserCrud('', '', ''); 73 | //user. 74 | /* ### ANY */ 75 | var variavel; 76 | variavel = "luiz carlos"; 77 | variavel = 5.5; 78 | variavel = true; 79 | var variavel2 = 56; 80 | // const variavel3: any = variavel2; 81 | // variavel3.existe('') 82 | variavel2.existe(' '); 83 | function soma1(a, b) { 84 | return a + b; 85 | } 86 | //soma1("luiz", "diniz"); 87 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /iniciando-typescript/dist/index.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "file": "index.js", 4 | "sourceRoot": "", 5 | "sources": [ 6 | "../src/index.ts" 7 | ], 8 | "names": [], 9 | "mappings": "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" 10 | } 11 | -------------------------------------------------------------------------------- /iniciando-typescript/slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeedu/avancadev-edicao1/5533f3309ef632e1bc3daabe6b0947078c6e4de7/iniciando-typescript/slides.pdf -------------------------------------------------------------------------------- /iniciando-typescript/src/index.ts: -------------------------------------------------------------------------------- 1 | /* ### TIPOS PRIMITIVOS */ 2 | //let, const e var 3 | type Primitive = string | boolean | number | bigint | symbol | null | undefined; 4 | 5 | /* ### QUALQUER OUTRO TIPO É NÃO PRIMITIVO 6 | * - Object (nativo do JavaScript, não deve ser usado para tipagem) 7 | * - object (pode ser usado para tipagem) 8 | * - Class 9 | * - qualquer outra modelagem de object 10 | */ 11 | 12 | /* ### TIPOS IMPLÍCITOS E EXPLÍCITOS */ 13 | 14 | const impl_string = "typescript"; //string 15 | const impl_number = 5.5; //number 16 | const impl_boolean = true; //boolean 17 | const impl_obj = { name: "typescript" }; // {name: string} 18 | 19 | const expl_string: string = "typescript"; 20 | const expl_number: number = 5.5; 21 | const expl_boolean: boolean = true; 22 | const expl_obj: { name: string } = { name: "typescript" }; 23 | 24 | /* ### INTERFACES */ 25 | 26 | interface AddressInterface { 27 | address: string; 28 | city: string; 29 | } 30 | 31 | //type 32 | interface UserInterface { 33 | firstName: string; 34 | lastName: string; 35 | fullName: () => string; 36 | address?: AddressInterface; 37 | } 38 | 39 | 40 | const obj: UserInterface = { 41 | firstName: "luiz", 42 | lastName: "diniz", 43 | fullName: () => { 44 | return "luiz carlos"; // 45 | }, 46 | //address não é obrigatório 47 | // address: { 48 | // address: "rua x", 49 | // city: "betim" 50 | // } 51 | }; 52 | 53 | console.log("obj - user", obj); 54 | 55 | /* ### OPTIONAL CHAINING (PROPOSTA PARA ECMASCRIPT) */ 56 | const city = obj.address?.city; 57 | 58 | console.log("city", city); 59 | 60 | /* ### NULLISH COALESCING (PROPOSTA PARA ECMASCRIPT) */ 61 | 62 | const cityLabel = city ?? "sem cidade"; 63 | 64 | console.log(cityLabel); 65 | 66 | /* ### NON-NULL ASSERTION (PROPOSTA PARA ECMASCRIPT) */ 67 | 68 | function addAddress(obj: UserInterface): void { 69 | obj.address = { address: "rua x", city: "betim" }; 70 | } 71 | addAddress(obj); 72 | 73 | const cityNonNull = obj.address!.city; 74 | //obj.address!.city = "valor" 75 | console.log("cityNonNull", cityNonNull); 76 | 77 | const num1: number | undefined = undefined; 78 | 79 | const num2: number = num1!; 80 | 81 | console.log(num2); 82 | 83 | /* ### FUNÇÕES 84 | * Funções recebem parâmetros que podem ser tipados normalmente e 85 | * pode-se determinar o tipo de retorno com um tipo primitivo ou não-primitivo 86 | */ 87 | function soma(a: number, b: number): number { 88 | return a + b; 89 | } 90 | 91 | //parâmetro lastName é opcional 92 | function fullName(firstName: string, lastName?: string): string { 93 | return lastName === undefined ? firstName : `${firstName} ${lastName}`; 94 | } 95 | 96 | console.log("fullname", fullName("luiz", "diniz")); 97 | 98 | /* ### CLASSES 99 | * O suporte a classes vem antes da ES6. 100 | * É suportado tudo que é possível fazer com classes na ES6 + 101 | * os recursos do próprio TypeScript. 102 | */ 103 | 104 | interface BaseCrudInterface { 105 | //@ts-ignore 106 | create(data: object); 107 | fetch(filter: object): UserInterface[]; 108 | find(id: string): UserInterface; 109 | } 110 | 111 | class UserCrud implements BaseCrudInterface { 112 | private variavel: string = 'valor'; 113 | private variavel1: number; 114 | 115 | constructor( 116 | private name: string, 117 | private email: string, 118 | private password: string 119 | ) { 120 | 121 | } 122 | create(data: object) { 123 | throw new Error("Method not implemented."); 124 | } 125 | fetch(filter: object): UserInterface[] { 126 | throw new Error("Method not implemented."); 127 | } 128 | find(id: string): UserInterface { 129 | throw new Error("Method not implemented."); 130 | } 131 | 132 | } 133 | const user = new UserCrud('', '', ''); 134 | //user. 135 | 136 | /* ### ANY */ 137 | 138 | let variavel; 139 | 140 | variavel = "luiz carlos"; 141 | 142 | variavel = 5.5 143 | 144 | variavel = true 145 | 146 | const variavel2 = 56; 147 | 148 | // const variavel3: any = variavel2; 149 | // variavel3.existe('') 150 | 151 | (variavel2 as any).existe(' ') 152 | 153 | function soma1(a: any, b: any){ 154 | return a+b; 155 | } 156 | 157 | //soma1("luiz", "diniz"); 158 | 159 | 160 | -------------------------------------------------------------------------------- /iniciando-typescript/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noEmitOnError": true, 4 | "strictNullChecks": true, 5 | "noImplicitAny": true, 6 | "outDir": "dist", 7 | "sourceMap": true 8 | }, 9 | "include": [ 10 | "src" 11 | ] 12 | } -------------------------------------------------------------------------------- /remote-container/.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | # See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.145.1/containers/javascript-node/.devcontainer/base.Dockerfile 2 | 3 | # [Choice] Node.js version: 14, 12, 10 4 | ARG VARIANT="14-buster" 5 | FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT} 6 | 7 | # [Optional] Uncomment this section to install additional OS packages. 8 | # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ 9 | # && apt-get -y install --no-install-recommendsA progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular.
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |