├── .editorconfig
├── .eslintrc.js
├── .gitignore
├── .vscode
└── settings.json
├── frontend
├── assets
│ ├── flower.webm
│ ├── js
│ │ ├── bundle.js
│ │ └── bundle.js.map
│ ├── style.css
│ └── video.css
├── index.html
└── video.html
├── index.js
├── package-lock.json
├── package.json
├── src
├── Aula 01 - TypeAnnotation
│ └── Aula01.ts
├── Aula 02 - Type Any
│ └── Aula02.ts
├── Aula 03 - Type Void
│ └── Aula03.ts
├── Aula 04 - Type Object
│ └── Aula04.ts
├── Aula 05 - Type Array
│ └── Aula05.ts
├── Aula 06 - Type Tuple
│ └── Aula06.ts
├── Aula 07 - Type Null and Undefined
│ └── Aula07.ts
├── Aula 08 - Type Never
│ └── Aula 08.ts
├── Aula 09 - Type Enum
│ └── Aula09.ts
├── Aula 10 - Type Unknown
│ └── Aula10.ts
├── Aula 11 - Union Types
│ └── Aula11.ts
├── Aula 12 - Tipos Literais
│ └── Aula12.ts
├── Aula 13 - Type Alias
│ └── Aula13.ts
├── Aula 14 - Intersection Types
│ └── Aula14.ts
├── Aula 15 - Function types
│ └── Aula15.ts
├── Aula 16 - Structural
│ └── Aula16.ts
├── Aula 17 - Type Assertions
│ └── Aula17.ts
├── Aula 18 - WebPack
│ ├── index.ts
│ └── mod.ts
├── Aula 19 - Workout
│ ├── Aula19.ts
│ └── form-control.ts
├── Aula 20 - Classes
│ └── Aula20.ts
├── Aula 21 - Modificadores
│ └── Aula21.ts
├── Aula 22 - Herança
│ └── Aula22.ts
├── Aula 23 - Protected
│ └── Aula23.ts
├── Aula 24 - Get e Set
│ └── Aula24.ts
├── Aula 25 - Atributo e métodos estáticos
│ └── Aula25.ts
├── Aula 26 - Construtor privado e singleton
│ └── Aula26.ts
├── Aula 27 - Classes, métodos e atributos abstratos
│ └── Aula27.ts
├── Aula 28 - Associação entre classes
│ └── Aula28.ts
├── Aula 29 - Dependency Inversion
│ └── Aula29.ts
├── Aula 30 - Agregação entre classes
│ └── Aula30.ts
├── Aula 31 - Composição
│ └── Aula31.ts
├── Aula 32 - Type Alias em Classes
│ └── Aula32.ts
├── Aula 33 - Interfaces e Classes
│ └── index.ts
├── Aula 34 - Declaration merging
│ └── Aula34.ts
├── Aula 35 - Type Guard
│ └── Aula35.ts
├── Aula 36 - Keyof e typeof
│ └── Aula36.ts
├── Aula 37 - Usando chaves de tipos
│ └── Aula37.ts
├── Aula 38 - Usando this como tipo
│ └── Aula38.ts
├── Aula 39 - Overload
│ └── Aula39.ts
├── Aula 40- Encadeamento opcional e operador de coalescência nula
│ └── Aula40.ts
├── Aula 41 - Types generics
│ └── Aula41.ts
├── Aula 42 - Arrays e Promises generics
│ └── Aula42.ts
├── Aula 43 - Interfaces e Type Alias
│ └── Aula43.ts
├── Aula 44 - Restrições em Generics
│ └── Aula44.ts
├── Aula 45 - Generics com classes
│ └── Aula45.ts
├── Aula 46 - Generics com intersection
│ └── Aula46.ts
├── Aula 47 - Type Predicate
│ └── Aula47.ts
├── Aula 48 - Generics padrões
│ └── Aula48.ts
├── Aula 49 - Exercicio
│ └── Aula49.ts
├── Aula 50 - Decorator de classes no TypeScript
│ └── Aula50.ts
├── Aula 51 - Class Decorator
│ └── Aula51.ts
├── Aula 52 - Fabrica de decorator
│ └── Aula52.ts
├── Aula 53 - Composição de decoradores
│ └── Aula 53.ts
├── Aula 54 - Method Decorator
│ └── Aula54.ts
├── Aula 55 - Decoradores de parâmetro
│ └── Aula55.ts
├── Aula 56 - Decoradores de propriedades
│ └── Aula56.ts
├── Aula 57 - Criando um namespace
│ └── Aula57.ts
└── Aula 58 - Reference para import de arquivos
│ ├── Aula58.ts
│ └── modulo
│ └── module.ts
├── tsconfig.frontend.json
├── tsconfig.json
└── webpack.config.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | [*]
7 | indent_style = space
8 | indent_size = 4
9 | end_of_line = crlf
10 | charset = utf-8
11 | trim_trailing_whitespace = true
12 | insert_final_newline = true
13 | end_of_line = lf
14 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | env: {
3 | browser: true,
4 | es6: true,
5 | node: true,
6 | },
7 | extends: [
8 | 'eslint:recommended',
9 | 'plugin:@typescript-eslint/eslint-recommended',
10 | 'plugin:@typescript-eslint/recommended'
11 | ],
12 | globals: {
13 | Atomics: 'readonly',
14 | SharedArrayBuffer: 'readonly',
15 | },
16 | parser: '@typescript-eslint/parser',
17 | parserOptions: {
18 | ecmaVersion: 11,
19 | sourceType: 'module',
20 | },
21 | plugins: ['@typescript-eslint'],
22 | rules: {}
23 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.toptal.com/developers/gitignore/api/node
2 | # Edit at https://www.toptal.com/developers/gitignore?templates=node
3 |
4 | ### Node ###
5 | # Logs
6 | logs
7 | *.log
8 | npm-debug.log*
9 | yarn-debug.log*
10 | yarn-error.log*
11 | lerna-debug.log*
12 | .pnpm-debug.log*
13 |
14 | # Diagnostic reports (https://nodejs.org/api/report.html)
15 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
16 |
17 | # Runtime data
18 | pids
19 | *.pid
20 | *.seed
21 | *.pid.lock
22 |
23 | # Directory for instrumented libs generated by jscoverage/JSCover
24 | lib-cov
25 |
26 | # Coverage directory used by tools like istanbul
27 | coverage
28 | *.lcov
29 |
30 | # nyc test coverage
31 | .nyc_output
32 |
33 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
34 | .grunt
35 |
36 | # Bower dependency directory (https://bower.io/)
37 | bower_components
38 |
39 | # node-waf configuration
40 | .lock-wscript
41 |
42 | # Compiled binary addons (https://nodejs.org/api/addons.html)
43 | build/Release
44 |
45 | # Dependency directories
46 | node_modules/
47 | jspm_packages/
48 |
49 | # Snowpack dependency directory (https://snowpack.dev/)
50 | web_modules/
51 |
52 | # TypeScript cache
53 | *.tsbuildinfo
54 |
55 | # Optional npm cache directory
56 | .npm
57 |
58 | # Optional eslint cache
59 | .eslintcache
60 |
61 | # Optional stylelint cache
62 | .stylelintcache
63 |
64 | # Microbundle cache
65 | .rpt2_cache/
66 | .rts2_cache_cjs/
67 | .rts2_cache_es/
68 | .rts2_cache_umd/
69 |
70 | # Optional REPL history
71 | .node_repl_history
72 |
73 | # Output of 'npm pack'
74 | *.tgz
75 |
76 | # Yarn Integrity file
77 | .yarn-integrity
78 |
79 | # dotenv environment variable files
80 | .env
81 | .env.development.local
82 | .env.test.local
83 | .env.production.local
84 | .env.local
85 |
86 | # parcel-bundler cache (https://parceljs.org/)
87 | .cache
88 | .parcel-cache
89 |
90 | # Next.js build output
91 | .next
92 | out
93 |
94 | # Nuxt.js build / generate output
95 | .nuxt
96 | dist
97 |
98 | # Gatsby files
99 | .cache/
100 | # Comment in the public line in if your project uses Gatsby and not Next.js
101 | # https://nextjs.org/blog/next-9-1#public-directory-support
102 | # public
103 |
104 | # vuepress build output
105 | .vuepress/dist
106 |
107 | # vuepress v2.x temp and cache directory
108 | .temp
109 |
110 | # Docusaurus cache and generated files
111 | .docusaurus
112 |
113 | # Serverless directories
114 | .serverless/
115 |
116 | # FuseBox cache
117 | .fusebox/
118 |
119 | # DynamoDB Local files
120 | .dynamodb/
121 |
122 | # TernJS port file
123 | .tern-port
124 |
125 | # Stores VSCode versions used for testing VSCode extensions
126 | .vscode-test
127 |
128 | # yarn v2
129 | .yarn/cache
130 | .yarn/unplugged
131 | .yarn/build-state.yml
132 | .yarn/install-state.gz
133 | .pnp.*
134 |
135 | ### Node Patch ###
136 | # Serverless Webpack directories
137 | .webpack/
138 |
139 | # Optional stylelint cache
140 |
141 | # SvelteKit build / generate output
142 | .svelte-kit
143 |
144 | # End of https://www.toptal.com/developers/gitignore/api/node
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "window.zoomLevel": 0,
3 | "code-runner.executorMap": {
4 | "javascript": "node",
5 | "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
6 | "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
7 | "zig": "zig run",
8 | "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
9 | "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
10 | "php": "php",
11 | "python": "python -u",
12 | "perl": "perl",
13 | "perl6": "perl6",
14 | "ruby": "ruby",
15 | "go": "go run",
16 | "lua": "lua",
17 | "groovy": "groovy",
18 | "powershell": "powershell -ExecutionPolicy ByPass -File",
19 | "bat": "cmd /c",
20 | "shellscript": "bash",
21 | "fsharp": "fsi",
22 | "csharp": "scriptcs",
23 | "vbscript": "cscript //Nologo",
24 | "typescript": "npx ts-node --files",
25 | "coffeescript": "coffee",
26 | "scala": "scala",
27 | "swift": "swift",
28 | "julia": "julia",
29 | "crystal": "crystal",
30 | "ocaml": "ocaml",
31 | "r": "Rscript",
32 | "applescript": "osascript",
33 | "clojure": "lein exec",
34 | "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
35 | "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
36 | "racket": "racket",
37 | "scheme": "csi -script",
38 | "ahk": "autohotkey",
39 | "autoit": "autoit3",
40 | "dart": "dart",
41 | "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
42 | "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
43 | "haskell": "runghc",
44 | "nim": "nim compile --verbosity:0 --hints:off --run",
45 | "lisp": "sbcl --script",
46 | "kit": "kitc --run",
47 | "v": "v run",
48 | "sass": "sass --style expanded",
49 | "scss": "scss --style expanded",
50 | "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
51 | "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
52 | "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
53 | "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
54 | "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
55 | "sml": "cd $dir && sml $fileName"
56 | }
57 | }
--------------------------------------------------------------------------------
/frontend/assets/flower.webm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stherzada/TypeScript---Estudos/4cdae1313a1209aa7fc3e07e6ae41d756f8ca8d9/frontend/assets/flower.webm
--------------------------------------------------------------------------------
/frontend/assets/js/bundle.js:
--------------------------------------------------------------------------------
1 | /******/ (() => { // webpackBootstrap
2 | /******/ "use strict";
3 | /******/ var __webpack_modules__ = ({
4 |
5 | /***/ "./src/Aula 33 - Interfaces e Classes/index.ts":
6 | /*!*****************************************************!*\
7 | !*** ./src/Aula 33 - Interfaces e Classes/index.ts ***!
8 | \*****************************************************/
9 | /***/ ((__unused_webpack_module, exports) => {
10 |
11 |
12 | Object.defineProperty(exports, "__esModule", ({ value: true }));
13 | class VideoPlayer {
14 | constructor(videoPlayerElements) {
15 | this.videoPlayer = videoPlayerElements.videoPlayer;
16 | this.playButton = videoPlayerElements.playButton;
17 | this.stopButton = videoPlayerElements.stopButton;
18 | }
19 | playToogle() {
20 | if (this.videoPlayer.paused) {
21 | this.videoPlayer.play();
22 | this.playButton.innerText = "Pause";
23 | }
24 | else {
25 | this.videoPlayer.pause();
26 | this.playButton.innerText = "Play";
27 | }
28 | }
29 | stop() {
30 | //
31 | }
32 | initialEvent() {
33 | // se eu passar uma function dentro de uma class do add event, ele passa a ser o botão
34 | this.playButton.addEventListener("click", () => {
35 | this.playToogle();
36 | });
37 | this.stopButton.addEventListener("click", () => {
38 | this.videoPlayer.pause();
39 | this.videoPlayer.currentTime = 0;
40 | this.playButton.innerText = "Play";
41 | });
42 | }
43 | }
44 | exports["default"] = VideoPlayer;
45 | const videoPlayer = new VideoPlayer({
46 | videoPlayer: document.querySelector(".video"),
47 | playButton: document.querySelector(".play"),
48 | stopButton: document.querySelector(".stop"),
49 | });
50 | videoPlayer.initialEvent();
51 |
52 |
53 | /***/ })
54 |
55 | /******/ });
56 | /************************************************************************/
57 | /******/ // The module cache
58 | /******/ var __webpack_module_cache__ = {};
59 | /******/
60 | /******/ // The require function
61 | /******/ function __webpack_require__(moduleId) {
62 | /******/ // Check if module is in cache
63 | /******/ var cachedModule = __webpack_module_cache__[moduleId];
64 | /******/ if (cachedModule !== undefined) {
65 | /******/ return cachedModule.exports;
66 | /******/ }
67 | /******/ // Create a new module (and put it into the cache)
68 | /******/ var module = __webpack_module_cache__[moduleId] = {
69 | /******/ // no module.id needed
70 | /******/ // no module.loaded needed
71 | /******/ exports: {}
72 | /******/ };
73 | /******/
74 | /******/ // Execute the module function
75 | /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
76 | /******/
77 | /******/ // Return the exports of the module
78 | /******/ return module.exports;
79 | /******/ }
80 | /******/
81 | /************************************************************************/
82 | var __webpack_exports__ = {};
83 | // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
84 | (() => {
85 | var exports = __webpack_exports__;
86 | /*!*****************************************!*\
87 | !*** ./src/Aula 19 - Workout/Aula19.ts ***!
88 | \*****************************************/
89 |
90 | Object.defineProperty(exports, "__esModule", ({ value: true }));
91 | // import "./form-control";
92 | __webpack_require__(/*! ../Aula 33 - Interfaces e Classes/index */ "./src/Aula 33 - Interfaces e Classes/index.ts");
93 |
94 | })();
95 |
96 | /******/ })()
97 | ;
98 | //# sourceMappingURL=bundle.js.map
--------------------------------------------------------------------------------
/frontend/assets/js/bundle.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"bundle.js","mappings":";;;;;;;;;;AAAa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAe;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;UCvCA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;;;;;;ACtBa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA,mBAAO,CAAC,8FAAyC","sources":["webpack://typescript/./src/Aula 33 - Interfaces e Classes/index.ts","webpack://typescript/webpack/bootstrap","webpack://typescript/./src/Aula 19 - Workout/Aula19.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass VideoPlayer {\n constructor(videoPlayerElements) {\n this.videoPlayer = videoPlayerElements.videoPlayer;\n this.playButton = videoPlayerElements.playButton;\n this.stopButton = videoPlayerElements.stopButton;\n }\n playToogle() {\n if (this.videoPlayer.paused) {\n this.videoPlayer.play();\n this.playButton.innerText = \"Pause\";\n }\n else {\n this.videoPlayer.pause();\n this.playButton.innerText = \"Play\";\n }\n }\n stop() {\n //\n }\n initialEvent() {\n // se eu passar uma function dentro de uma class do add event, ele passa a ser o botão\n this.playButton.addEventListener(\"click\", () => {\n this.playToogle();\n });\n this.stopButton.addEventListener(\"click\", () => {\n this.videoPlayer.pause();\n this.videoPlayer.currentTime = 0;\n this.playButton.innerText = \"Play\";\n });\n }\n}\nexports.default = VideoPlayer;\nconst videoPlayer = new VideoPlayer({\n videoPlayer: document.querySelector(\".video\"),\n playButton: document.querySelector(\".play\"),\n stopButton: document.querySelector(\".stop\"),\n});\nvideoPlayer.initialEvent();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// import \"./form-control\";\nrequire(\"../Aula 33 - Interfaces e Classes/index\");\n"],"names":[],"sourceRoot":""}
--------------------------------------------------------------------------------
/frontend/assets/style.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --dark-color: #111;
3 | --light-color: #f3f3f3;
4 | --medium-color: #bbb;
5 | --border-color: #ddd;
6 | --main-color: #0074d9;
7 | --error-color: #ff4136;
8 | --border-radius: 4px;
9 | }
10 |
11 | * {
12 | margin: 0;
13 | padding: 0;
14 | outline: none;
15 | box-sizing: border-box;
16 | }
17 |
18 | body {
19 | background-color: var(--dark-color);
20 | font-family: sans-serif;
21 | color: var(--dark-color);
22 | }
23 |
24 | .container {
25 | display: flex;
26 | align-items: center;
27 | justify-content: center;
28 | margin: 50px auto;
29 | }
30 |
31 | .form {
32 | padding: 20px;
33 | background: #ffffff;
34 | width: 100%;
35 | max-width: 400px;
36 | box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
37 | border-radius: var(--border-radius);
38 | border: 1px solid var(--border-color);
39 | margin: auto 20px;
40 | }
41 |
42 | .form h2 {
43 | padding: 10px 0 30px;
44 | text-align: center;
45 | }
46 |
47 | .form .form-fields {
48 | margin: 0 0 20px;
49 | }
50 |
51 | .form label {
52 | display: block;
53 | font-size: 10pt;
54 | color: #999;
55 | }
56 |
57 | ::placeholder {
58 | color: #ddd;
59 | font-size: 10pt;
60 | }
61 |
62 | .form input[type] {
63 | width: 100%;
64 | border: 1px solid var(--border-color);
65 | font-size: 18px;
66 | padding: 5px 10px;
67 | border-radius: var(--border-radius);
68 | transition: border 300ms ease-in-out;
69 | }
70 |
71 | .form input[type]:focus {
72 | border-color: var(--medium-color);
73 | }
74 |
75 | .form button {
76 | border: none;
77 | background: var(--main-color);
78 | padding: 10px 20px;
79 | cursor: pointer;
80 | font-weight: 700;
81 | color: var(--light-color);
82 | border-radius: var(--border-radius);
83 | transition: filter 300ms ease-in-out;
84 | }
85 |
86 | .form button:hover {
87 | filter: brightness(80%);
88 | }
89 |
90 | .form .error-message {
91 | font-size: 9pt;
92 | padding: 5px 0;
93 | color: var(--error-color);
94 | font-style: italic;
95 | display: none;
96 | }
97 |
98 | .form .show-error-message .error-message {
99 | display: block;
100 | }
101 |
102 | .form .show-error-message input[type] {
103 | border-color: var(--error-color);
104 | }
105 |
--------------------------------------------------------------------------------
/frontend/assets/video.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --dark-color: #111;
3 | --light-color: #f3f3f3;
4 | --medium-color: #bbb;
5 | --border-color: #ddd;
6 | --main-color: #0074D9;
7 | --error-color: #FF4136;
8 | --border-radius: 4px;
9 | }
10 |
11 | * {
12 | margin: 0;
13 | padding: 0;
14 | outline: none;
15 | box-sizing: border-box;
16 | }
17 |
18 | body {
19 | background-color: var(--dark-color);
20 | font-family: sans-serif;
21 | color: var(--dark-color);
22 | }
23 |
24 | .container {
25 | display: flex;
26 | flex-direction: column;
27 | align-items: center;
28 | justify-content: center;
29 | margin: 50px auto;
30 | background-color: #fff;
31 | max-width: 640px;
32 | padding: 20px 50px;
33 | border-radius: var(--border-radius);
34 | }
35 |
36 | .container h2 {
37 | padding: 0 0 20px 0;
38 | }
39 |
40 | .video-container {
41 | position: relative;
42 | margin-bottom: 20px;
43 | }
44 |
45 | .video {
46 | max-width: 100%;
47 | display: flex;
48 | }
49 |
50 | .controls {
51 | position: absolute;
52 | bottom: 10px;
53 | left: 10px;
54 | }
55 |
56 | .controls button {
57 | margin: 0;
58 | padding: 0;
59 | background: var(--main-color);
60 | border: none;
61 | color: #fff;
62 | padding: 5px 10px;
63 | opacity: .5;
64 | cursor: pointer;
65 | transition: opacity 300ms ease-in-out;
66 | }
67 |
68 | .controls button:hover {
69 | opacity: 1;
70 | }
--------------------------------------------------------------------------------
/frontend/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Faça seu registro
8 |
9 |
10 |
11 |
12 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/frontend/video.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | YouDemy
8 |
9 |
10 |
11 |
12 |
13 |
My moment
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | // const mensagem: string = "Hello World :(";
2 | // console.log(mensagem);
3 | function greatName(name) {
4 | return "Ol\u00E1 ".concat(name);
5 | }
6 | console.log(greatName("Stherzada"));
7 |
8 | // const nome = "Stherzada";
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "typescript",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "typescript",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "@types/validator": "^13.11.1"
13 | },
14 | "devDependencies": {
15 | "@typescript-eslint/eslint-plugin": "^6.4.1",
16 | "@typescript-eslint/parser": "^6.4.1",
17 | "prettier": "^3.0.3",
18 | "ts-loader": "^9.4.4",
19 | "ts-node": "^10.9.1",
20 | "typescript": "^5.1.6",
21 | "webpack": "^5.88.2",
22 | "webpack-cli": "^5.1.4"
23 | }
24 | },
25 | "node_modules/@aashutoshrathi/word-wrap": {
26 | "version": "1.2.6",
27 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
28 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
29 | "dev": true,
30 | "peer": true,
31 | "engines": {
32 | "node": ">=0.10.0"
33 | }
34 | },
35 | "node_modules/@cspotcode/source-map-support": {
36 | "version": "0.8.1",
37 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
38 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
39 | "dev": true,
40 | "dependencies": {
41 | "@jridgewell/trace-mapping": "0.3.9"
42 | },
43 | "engines": {
44 | "node": ">=12"
45 | }
46 | },
47 | "node_modules/@discoveryjs/json-ext": {
48 | "version": "0.5.7",
49 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
50 | "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
51 | "dev": true,
52 | "engines": {
53 | "node": ">=10.0.0"
54 | }
55 | },
56 | "node_modules/@eslint-community/eslint-utils": {
57 | "version": "4.4.0",
58 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
59 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
60 | "dev": true,
61 | "dependencies": {
62 | "eslint-visitor-keys": "^3.3.0"
63 | },
64 | "engines": {
65 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
66 | },
67 | "peerDependencies": {
68 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
69 | }
70 | },
71 | "node_modules/@eslint-community/regexpp": {
72 | "version": "4.7.0",
73 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.7.0.tgz",
74 | "integrity": "sha512-+HencqxU7CFJnQb7IKtuNBqS6Yx3Tz4kOL8BJXo+JyeiBm5MEX6pO8onXDkjrkCRlfYXS1Axro15ZjVFe9YgsA==",
75 | "dev": true,
76 | "engines": {
77 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
78 | }
79 | },
80 | "node_modules/@eslint/eslintrc": {
81 | "version": "2.1.2",
82 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
83 | "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
84 | "dev": true,
85 | "peer": true,
86 | "dependencies": {
87 | "ajv": "^6.12.4",
88 | "debug": "^4.3.2",
89 | "espree": "^9.6.0",
90 | "globals": "^13.19.0",
91 | "ignore": "^5.2.0",
92 | "import-fresh": "^3.2.1",
93 | "js-yaml": "^4.1.0",
94 | "minimatch": "^3.1.2",
95 | "strip-json-comments": "^3.1.1"
96 | },
97 | "engines": {
98 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
99 | },
100 | "funding": {
101 | "url": "https://opencollective.com/eslint"
102 | }
103 | },
104 | "node_modules/@eslint/js": {
105 | "version": "8.47.0",
106 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz",
107 | "integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==",
108 | "dev": true,
109 | "peer": true,
110 | "engines": {
111 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
112 | }
113 | },
114 | "node_modules/@humanwhocodes/config-array": {
115 | "version": "0.11.10",
116 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
117 | "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
118 | "dev": true,
119 | "peer": true,
120 | "dependencies": {
121 | "@humanwhocodes/object-schema": "^1.2.1",
122 | "debug": "^4.1.1",
123 | "minimatch": "^3.0.5"
124 | },
125 | "engines": {
126 | "node": ">=10.10.0"
127 | }
128 | },
129 | "node_modules/@humanwhocodes/module-importer": {
130 | "version": "1.0.1",
131 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
132 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
133 | "dev": true,
134 | "peer": true,
135 | "engines": {
136 | "node": ">=12.22"
137 | },
138 | "funding": {
139 | "type": "github",
140 | "url": "https://github.com/sponsors/nzakas"
141 | }
142 | },
143 | "node_modules/@humanwhocodes/object-schema": {
144 | "version": "1.2.1",
145 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
146 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
147 | "dev": true,
148 | "peer": true
149 | },
150 | "node_modules/@jridgewell/gen-mapping": {
151 | "version": "0.3.3",
152 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
153 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
154 | "dev": true,
155 | "dependencies": {
156 | "@jridgewell/set-array": "^1.0.1",
157 | "@jridgewell/sourcemap-codec": "^1.4.10",
158 | "@jridgewell/trace-mapping": "^0.3.9"
159 | },
160 | "engines": {
161 | "node": ">=6.0.0"
162 | }
163 | },
164 | "node_modules/@jridgewell/resolve-uri": {
165 | "version": "3.1.1",
166 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
167 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
168 | "dev": true,
169 | "engines": {
170 | "node": ">=6.0.0"
171 | }
172 | },
173 | "node_modules/@jridgewell/set-array": {
174 | "version": "1.1.2",
175 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
176 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
177 | "dev": true,
178 | "engines": {
179 | "node": ">=6.0.0"
180 | }
181 | },
182 | "node_modules/@jridgewell/source-map": {
183 | "version": "0.3.5",
184 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
185 | "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
186 | "dev": true,
187 | "dependencies": {
188 | "@jridgewell/gen-mapping": "^0.3.0",
189 | "@jridgewell/trace-mapping": "^0.3.9"
190 | }
191 | },
192 | "node_modules/@jridgewell/sourcemap-codec": {
193 | "version": "1.4.15",
194 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
195 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
196 | "dev": true
197 | },
198 | "node_modules/@jridgewell/trace-mapping": {
199 | "version": "0.3.9",
200 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
201 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
202 | "dev": true,
203 | "dependencies": {
204 | "@jridgewell/resolve-uri": "^3.0.3",
205 | "@jridgewell/sourcemap-codec": "^1.4.10"
206 | }
207 | },
208 | "node_modules/@nodelib/fs.scandir": {
209 | "version": "2.1.5",
210 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
211 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
212 | "dev": true,
213 | "dependencies": {
214 | "@nodelib/fs.stat": "2.0.5",
215 | "run-parallel": "^1.1.9"
216 | },
217 | "engines": {
218 | "node": ">= 8"
219 | }
220 | },
221 | "node_modules/@nodelib/fs.stat": {
222 | "version": "2.0.5",
223 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
224 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
225 | "dev": true,
226 | "engines": {
227 | "node": ">= 8"
228 | }
229 | },
230 | "node_modules/@nodelib/fs.walk": {
231 | "version": "1.2.8",
232 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
233 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
234 | "dev": true,
235 | "dependencies": {
236 | "@nodelib/fs.scandir": "2.1.5",
237 | "fastq": "^1.6.0"
238 | },
239 | "engines": {
240 | "node": ">= 8"
241 | }
242 | },
243 | "node_modules/@tsconfig/node10": {
244 | "version": "1.0.9",
245 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
246 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
247 | "dev": true
248 | },
249 | "node_modules/@tsconfig/node12": {
250 | "version": "1.0.11",
251 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
252 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
253 | "dev": true
254 | },
255 | "node_modules/@tsconfig/node14": {
256 | "version": "1.0.3",
257 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
258 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
259 | "dev": true
260 | },
261 | "node_modules/@tsconfig/node16": {
262 | "version": "1.0.4",
263 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
264 | "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
265 | "dev": true
266 | },
267 | "node_modules/@types/eslint": {
268 | "version": "8.44.2",
269 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz",
270 | "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==",
271 | "dev": true,
272 | "dependencies": {
273 | "@types/estree": "*",
274 | "@types/json-schema": "*"
275 | }
276 | },
277 | "node_modules/@types/eslint-scope": {
278 | "version": "3.7.4",
279 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
280 | "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
281 | "dev": true,
282 | "dependencies": {
283 | "@types/eslint": "*",
284 | "@types/estree": "*"
285 | }
286 | },
287 | "node_modules/@types/estree": {
288 | "version": "1.0.1",
289 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
290 | "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
291 | "dev": true
292 | },
293 | "node_modules/@types/json-schema": {
294 | "version": "7.0.12",
295 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
296 | "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
297 | "dev": true
298 | },
299 | "node_modules/@types/node": {
300 | "version": "20.5.2",
301 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.2.tgz",
302 | "integrity": "sha512-5j/lXt7unfPOUlrKC34HIaedONleyLtwkKggiD/0uuMfT8gg2EOpg0dz4lCD15Ga7muC+1WzJZAjIB9simWd6Q==",
303 | "dev": true
304 | },
305 | "node_modules/@types/semver": {
306 | "version": "7.5.0",
307 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
308 | "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
309 | "dev": true
310 | },
311 | "node_modules/@types/validator": {
312 | "version": "13.11.1",
313 | "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.1.tgz",
314 | "integrity": "sha512-d/MUkJYdOeKycmm75Arql4M5+UuXmf4cHdHKsyw1GcvnNgL6s77UkgSgJ8TE/rI5PYsnwYq5jkcWBLuN/MpQ1A=="
315 | },
316 | "node_modules/@typescript-eslint/eslint-plugin": {
317 | "version": "6.4.1",
318 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz",
319 | "integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==",
320 | "dev": true,
321 | "dependencies": {
322 | "@eslint-community/regexpp": "^4.5.1",
323 | "@typescript-eslint/scope-manager": "6.4.1",
324 | "@typescript-eslint/type-utils": "6.4.1",
325 | "@typescript-eslint/utils": "6.4.1",
326 | "@typescript-eslint/visitor-keys": "6.4.1",
327 | "debug": "^4.3.4",
328 | "graphemer": "^1.4.0",
329 | "ignore": "^5.2.4",
330 | "natural-compare": "^1.4.0",
331 | "semver": "^7.5.4",
332 | "ts-api-utils": "^1.0.1"
333 | },
334 | "engines": {
335 | "node": "^16.0.0 || >=18.0.0"
336 | },
337 | "funding": {
338 | "type": "opencollective",
339 | "url": "https://opencollective.com/typescript-eslint"
340 | },
341 | "peerDependencies": {
342 | "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
343 | "eslint": "^7.0.0 || ^8.0.0"
344 | },
345 | "peerDependenciesMeta": {
346 | "typescript": {
347 | "optional": true
348 | }
349 | }
350 | },
351 | "node_modules/@typescript-eslint/parser": {
352 | "version": "6.4.1",
353 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz",
354 | "integrity": "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==",
355 | "dev": true,
356 | "dependencies": {
357 | "@typescript-eslint/scope-manager": "6.4.1",
358 | "@typescript-eslint/types": "6.4.1",
359 | "@typescript-eslint/typescript-estree": "6.4.1",
360 | "@typescript-eslint/visitor-keys": "6.4.1",
361 | "debug": "^4.3.4"
362 | },
363 | "engines": {
364 | "node": "^16.0.0 || >=18.0.0"
365 | },
366 | "funding": {
367 | "type": "opencollective",
368 | "url": "https://opencollective.com/typescript-eslint"
369 | },
370 | "peerDependencies": {
371 | "eslint": "^7.0.0 || ^8.0.0"
372 | },
373 | "peerDependenciesMeta": {
374 | "typescript": {
375 | "optional": true
376 | }
377 | }
378 | },
379 | "node_modules/@typescript-eslint/scope-manager": {
380 | "version": "6.4.1",
381 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz",
382 | "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==",
383 | "dev": true,
384 | "dependencies": {
385 | "@typescript-eslint/types": "6.4.1",
386 | "@typescript-eslint/visitor-keys": "6.4.1"
387 | },
388 | "engines": {
389 | "node": "^16.0.0 || >=18.0.0"
390 | },
391 | "funding": {
392 | "type": "opencollective",
393 | "url": "https://opencollective.com/typescript-eslint"
394 | }
395 | },
396 | "node_modules/@typescript-eslint/type-utils": {
397 | "version": "6.4.1",
398 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz",
399 | "integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==",
400 | "dev": true,
401 | "dependencies": {
402 | "@typescript-eslint/typescript-estree": "6.4.1",
403 | "@typescript-eslint/utils": "6.4.1",
404 | "debug": "^4.3.4",
405 | "ts-api-utils": "^1.0.1"
406 | },
407 | "engines": {
408 | "node": "^16.0.0 || >=18.0.0"
409 | },
410 | "funding": {
411 | "type": "opencollective",
412 | "url": "https://opencollective.com/typescript-eslint"
413 | },
414 | "peerDependencies": {
415 | "eslint": "^7.0.0 || ^8.0.0"
416 | },
417 | "peerDependenciesMeta": {
418 | "typescript": {
419 | "optional": true
420 | }
421 | }
422 | },
423 | "node_modules/@typescript-eslint/types": {
424 | "version": "6.4.1",
425 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
426 | "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
427 | "dev": true,
428 | "engines": {
429 | "node": "^16.0.0 || >=18.0.0"
430 | },
431 | "funding": {
432 | "type": "opencollective",
433 | "url": "https://opencollective.com/typescript-eslint"
434 | }
435 | },
436 | "node_modules/@typescript-eslint/typescript-estree": {
437 | "version": "6.4.1",
438 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz",
439 | "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==",
440 | "dev": true,
441 | "dependencies": {
442 | "@typescript-eslint/types": "6.4.1",
443 | "@typescript-eslint/visitor-keys": "6.4.1",
444 | "debug": "^4.3.4",
445 | "globby": "^11.1.0",
446 | "is-glob": "^4.0.3",
447 | "semver": "^7.5.4",
448 | "ts-api-utils": "^1.0.1"
449 | },
450 | "engines": {
451 | "node": "^16.0.0 || >=18.0.0"
452 | },
453 | "funding": {
454 | "type": "opencollective",
455 | "url": "https://opencollective.com/typescript-eslint"
456 | },
457 | "peerDependenciesMeta": {
458 | "typescript": {
459 | "optional": true
460 | }
461 | }
462 | },
463 | "node_modules/@typescript-eslint/utils": {
464 | "version": "6.4.1",
465 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz",
466 | "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==",
467 | "dev": true,
468 | "dependencies": {
469 | "@eslint-community/eslint-utils": "^4.4.0",
470 | "@types/json-schema": "^7.0.12",
471 | "@types/semver": "^7.5.0",
472 | "@typescript-eslint/scope-manager": "6.4.1",
473 | "@typescript-eslint/types": "6.4.1",
474 | "@typescript-eslint/typescript-estree": "6.4.1",
475 | "semver": "^7.5.4"
476 | },
477 | "engines": {
478 | "node": "^16.0.0 || >=18.0.0"
479 | },
480 | "funding": {
481 | "type": "opencollective",
482 | "url": "https://opencollective.com/typescript-eslint"
483 | },
484 | "peerDependencies": {
485 | "eslint": "^7.0.0 || ^8.0.0"
486 | }
487 | },
488 | "node_modules/@typescript-eslint/visitor-keys": {
489 | "version": "6.4.1",
490 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz",
491 | "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==",
492 | "dev": true,
493 | "dependencies": {
494 | "@typescript-eslint/types": "6.4.1",
495 | "eslint-visitor-keys": "^3.4.1"
496 | },
497 | "engines": {
498 | "node": "^16.0.0 || >=18.0.0"
499 | },
500 | "funding": {
501 | "type": "opencollective",
502 | "url": "https://opencollective.com/typescript-eslint"
503 | }
504 | },
505 | "node_modules/@webassemblyjs/ast": {
506 | "version": "1.11.6",
507 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
508 | "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
509 | "dev": true,
510 | "dependencies": {
511 | "@webassemblyjs/helper-numbers": "1.11.6",
512 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
513 | }
514 | },
515 | "node_modules/@webassemblyjs/floating-point-hex-parser": {
516 | "version": "1.11.6",
517 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
518 | "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
519 | "dev": true
520 | },
521 | "node_modules/@webassemblyjs/helper-api-error": {
522 | "version": "1.11.6",
523 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
524 | "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
525 | "dev": true
526 | },
527 | "node_modules/@webassemblyjs/helper-buffer": {
528 | "version": "1.11.6",
529 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
530 | "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
531 | "dev": true
532 | },
533 | "node_modules/@webassemblyjs/helper-numbers": {
534 | "version": "1.11.6",
535 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
536 | "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
537 | "dev": true,
538 | "dependencies": {
539 | "@webassemblyjs/floating-point-hex-parser": "1.11.6",
540 | "@webassemblyjs/helper-api-error": "1.11.6",
541 | "@xtuc/long": "4.2.2"
542 | }
543 | },
544 | "node_modules/@webassemblyjs/helper-wasm-bytecode": {
545 | "version": "1.11.6",
546 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
547 | "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
548 | "dev": true
549 | },
550 | "node_modules/@webassemblyjs/helper-wasm-section": {
551 | "version": "1.11.6",
552 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
553 | "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
554 | "dev": true,
555 | "dependencies": {
556 | "@webassemblyjs/ast": "1.11.6",
557 | "@webassemblyjs/helper-buffer": "1.11.6",
558 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
559 | "@webassemblyjs/wasm-gen": "1.11.6"
560 | }
561 | },
562 | "node_modules/@webassemblyjs/ieee754": {
563 | "version": "1.11.6",
564 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
565 | "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
566 | "dev": true,
567 | "dependencies": {
568 | "@xtuc/ieee754": "^1.2.0"
569 | }
570 | },
571 | "node_modules/@webassemblyjs/leb128": {
572 | "version": "1.11.6",
573 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
574 | "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
575 | "dev": true,
576 | "dependencies": {
577 | "@xtuc/long": "4.2.2"
578 | }
579 | },
580 | "node_modules/@webassemblyjs/utf8": {
581 | "version": "1.11.6",
582 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
583 | "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
584 | "dev": true
585 | },
586 | "node_modules/@webassemblyjs/wasm-edit": {
587 | "version": "1.11.6",
588 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
589 | "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
590 | "dev": true,
591 | "dependencies": {
592 | "@webassemblyjs/ast": "1.11.6",
593 | "@webassemblyjs/helper-buffer": "1.11.6",
594 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
595 | "@webassemblyjs/helper-wasm-section": "1.11.6",
596 | "@webassemblyjs/wasm-gen": "1.11.6",
597 | "@webassemblyjs/wasm-opt": "1.11.6",
598 | "@webassemblyjs/wasm-parser": "1.11.6",
599 | "@webassemblyjs/wast-printer": "1.11.6"
600 | }
601 | },
602 | "node_modules/@webassemblyjs/wasm-gen": {
603 | "version": "1.11.6",
604 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
605 | "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
606 | "dev": true,
607 | "dependencies": {
608 | "@webassemblyjs/ast": "1.11.6",
609 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
610 | "@webassemblyjs/ieee754": "1.11.6",
611 | "@webassemblyjs/leb128": "1.11.6",
612 | "@webassemblyjs/utf8": "1.11.6"
613 | }
614 | },
615 | "node_modules/@webassemblyjs/wasm-opt": {
616 | "version": "1.11.6",
617 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
618 | "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
619 | "dev": true,
620 | "dependencies": {
621 | "@webassemblyjs/ast": "1.11.6",
622 | "@webassemblyjs/helper-buffer": "1.11.6",
623 | "@webassemblyjs/wasm-gen": "1.11.6",
624 | "@webassemblyjs/wasm-parser": "1.11.6"
625 | }
626 | },
627 | "node_modules/@webassemblyjs/wasm-parser": {
628 | "version": "1.11.6",
629 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
630 | "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
631 | "dev": true,
632 | "dependencies": {
633 | "@webassemblyjs/ast": "1.11.6",
634 | "@webassemblyjs/helper-api-error": "1.11.6",
635 | "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
636 | "@webassemblyjs/ieee754": "1.11.6",
637 | "@webassemblyjs/leb128": "1.11.6",
638 | "@webassemblyjs/utf8": "1.11.6"
639 | }
640 | },
641 | "node_modules/@webassemblyjs/wast-printer": {
642 | "version": "1.11.6",
643 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
644 | "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
645 | "dev": true,
646 | "dependencies": {
647 | "@webassemblyjs/ast": "1.11.6",
648 | "@xtuc/long": "4.2.2"
649 | }
650 | },
651 | "node_modules/@webpack-cli/configtest": {
652 | "version": "2.1.1",
653 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
654 | "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
655 | "dev": true,
656 | "engines": {
657 | "node": ">=14.15.0"
658 | },
659 | "peerDependencies": {
660 | "webpack": "5.x.x",
661 | "webpack-cli": "5.x.x"
662 | }
663 | },
664 | "node_modules/@webpack-cli/info": {
665 | "version": "2.0.2",
666 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
667 | "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
668 | "dev": true,
669 | "engines": {
670 | "node": ">=14.15.0"
671 | },
672 | "peerDependencies": {
673 | "webpack": "5.x.x",
674 | "webpack-cli": "5.x.x"
675 | }
676 | },
677 | "node_modules/@webpack-cli/serve": {
678 | "version": "2.0.5",
679 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
680 | "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
681 | "dev": true,
682 | "engines": {
683 | "node": ">=14.15.0"
684 | },
685 | "peerDependencies": {
686 | "webpack": "5.x.x",
687 | "webpack-cli": "5.x.x"
688 | },
689 | "peerDependenciesMeta": {
690 | "webpack-dev-server": {
691 | "optional": true
692 | }
693 | }
694 | },
695 | "node_modules/@xtuc/ieee754": {
696 | "version": "1.2.0",
697 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
698 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
699 | "dev": true
700 | },
701 | "node_modules/@xtuc/long": {
702 | "version": "4.2.2",
703 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
704 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
705 | "dev": true
706 | },
707 | "node_modules/acorn": {
708 | "version": "8.10.0",
709 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
710 | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
711 | "dev": true,
712 | "bin": {
713 | "acorn": "bin/acorn"
714 | },
715 | "engines": {
716 | "node": ">=0.4.0"
717 | }
718 | },
719 | "node_modules/acorn-import-assertions": {
720 | "version": "1.9.0",
721 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
722 | "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
723 | "dev": true,
724 | "peerDependencies": {
725 | "acorn": "^8"
726 | }
727 | },
728 | "node_modules/acorn-jsx": {
729 | "version": "5.3.2",
730 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
731 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
732 | "dev": true,
733 | "peer": true,
734 | "peerDependencies": {
735 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
736 | }
737 | },
738 | "node_modules/acorn-walk": {
739 | "version": "8.2.0",
740 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
741 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
742 | "dev": true,
743 | "engines": {
744 | "node": ">=0.4.0"
745 | }
746 | },
747 | "node_modules/ajv": {
748 | "version": "6.12.6",
749 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
750 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
751 | "dev": true,
752 | "dependencies": {
753 | "fast-deep-equal": "^3.1.1",
754 | "fast-json-stable-stringify": "^2.0.0",
755 | "json-schema-traverse": "^0.4.1",
756 | "uri-js": "^4.2.2"
757 | },
758 | "funding": {
759 | "type": "github",
760 | "url": "https://github.com/sponsors/epoberezkin"
761 | }
762 | },
763 | "node_modules/ajv-keywords": {
764 | "version": "3.5.2",
765 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
766 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
767 | "dev": true,
768 | "peerDependencies": {
769 | "ajv": "^6.9.1"
770 | }
771 | },
772 | "node_modules/ansi-regex": {
773 | "version": "5.0.1",
774 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
775 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
776 | "dev": true,
777 | "peer": true,
778 | "engines": {
779 | "node": ">=8"
780 | }
781 | },
782 | "node_modules/ansi-styles": {
783 | "version": "4.3.0",
784 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
785 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
786 | "dev": true,
787 | "dependencies": {
788 | "color-convert": "^2.0.1"
789 | },
790 | "engines": {
791 | "node": ">=8"
792 | },
793 | "funding": {
794 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
795 | }
796 | },
797 | "node_modules/arg": {
798 | "version": "4.1.3",
799 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
800 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
801 | "dev": true
802 | },
803 | "node_modules/argparse": {
804 | "version": "2.0.1",
805 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
806 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
807 | "dev": true,
808 | "peer": true
809 | },
810 | "node_modules/array-union": {
811 | "version": "2.1.0",
812 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
813 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
814 | "dev": true,
815 | "engines": {
816 | "node": ">=8"
817 | }
818 | },
819 | "node_modules/balanced-match": {
820 | "version": "1.0.2",
821 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
822 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
823 | "dev": true,
824 | "peer": true
825 | },
826 | "node_modules/brace-expansion": {
827 | "version": "1.1.11",
828 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
829 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
830 | "dev": true,
831 | "peer": true,
832 | "dependencies": {
833 | "balanced-match": "^1.0.0",
834 | "concat-map": "0.0.1"
835 | }
836 | },
837 | "node_modules/braces": {
838 | "version": "3.0.2",
839 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
840 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
841 | "dev": true,
842 | "dependencies": {
843 | "fill-range": "^7.0.1"
844 | },
845 | "engines": {
846 | "node": ">=8"
847 | }
848 | },
849 | "node_modules/browserslist": {
850 | "version": "4.21.10",
851 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
852 | "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
853 | "dev": true,
854 | "funding": [
855 | {
856 | "type": "opencollective",
857 | "url": "https://opencollective.com/browserslist"
858 | },
859 | {
860 | "type": "tidelift",
861 | "url": "https://tidelift.com/funding/github/npm/browserslist"
862 | },
863 | {
864 | "type": "github",
865 | "url": "https://github.com/sponsors/ai"
866 | }
867 | ],
868 | "dependencies": {
869 | "caniuse-lite": "^1.0.30001517",
870 | "electron-to-chromium": "^1.4.477",
871 | "node-releases": "^2.0.13",
872 | "update-browserslist-db": "^1.0.11"
873 | },
874 | "bin": {
875 | "browserslist": "cli.js"
876 | },
877 | "engines": {
878 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
879 | }
880 | },
881 | "node_modules/buffer-from": {
882 | "version": "1.1.2",
883 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
884 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
885 | "dev": true
886 | },
887 | "node_modules/callsites": {
888 | "version": "3.1.0",
889 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
890 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
891 | "dev": true,
892 | "peer": true,
893 | "engines": {
894 | "node": ">=6"
895 | }
896 | },
897 | "node_modules/caniuse-lite": {
898 | "version": "1.0.30001524",
899 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz",
900 | "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==",
901 | "dev": true,
902 | "funding": [
903 | {
904 | "type": "opencollective",
905 | "url": "https://opencollective.com/browserslist"
906 | },
907 | {
908 | "type": "tidelift",
909 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
910 | },
911 | {
912 | "type": "github",
913 | "url": "https://github.com/sponsors/ai"
914 | }
915 | ]
916 | },
917 | "node_modules/chalk": {
918 | "version": "4.1.2",
919 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
920 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
921 | "dev": true,
922 | "dependencies": {
923 | "ansi-styles": "^4.1.0",
924 | "supports-color": "^7.1.0"
925 | },
926 | "engines": {
927 | "node": ">=10"
928 | },
929 | "funding": {
930 | "url": "https://github.com/chalk/chalk?sponsor=1"
931 | }
932 | },
933 | "node_modules/chrome-trace-event": {
934 | "version": "1.0.3",
935 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
936 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
937 | "dev": true,
938 | "engines": {
939 | "node": ">=6.0"
940 | }
941 | },
942 | "node_modules/clone-deep": {
943 | "version": "4.0.1",
944 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
945 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
946 | "dev": true,
947 | "dependencies": {
948 | "is-plain-object": "^2.0.4",
949 | "kind-of": "^6.0.2",
950 | "shallow-clone": "^3.0.0"
951 | },
952 | "engines": {
953 | "node": ">=6"
954 | }
955 | },
956 | "node_modules/color-convert": {
957 | "version": "2.0.1",
958 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
959 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
960 | "dev": true,
961 | "dependencies": {
962 | "color-name": "~1.1.4"
963 | },
964 | "engines": {
965 | "node": ">=7.0.0"
966 | }
967 | },
968 | "node_modules/color-name": {
969 | "version": "1.1.4",
970 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
971 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
972 | "dev": true
973 | },
974 | "node_modules/colorette": {
975 | "version": "2.0.20",
976 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
977 | "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
978 | "dev": true
979 | },
980 | "node_modules/commander": {
981 | "version": "2.20.3",
982 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
983 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
984 | "dev": true
985 | },
986 | "node_modules/concat-map": {
987 | "version": "0.0.1",
988 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
989 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
990 | "dev": true,
991 | "peer": true
992 | },
993 | "node_modules/create-require": {
994 | "version": "1.1.1",
995 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
996 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
997 | "dev": true
998 | },
999 | "node_modules/cross-spawn": {
1000 | "version": "7.0.3",
1001 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1002 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1003 | "dev": true,
1004 | "dependencies": {
1005 | "path-key": "^3.1.0",
1006 | "shebang-command": "^2.0.0",
1007 | "which": "^2.0.1"
1008 | },
1009 | "engines": {
1010 | "node": ">= 8"
1011 | }
1012 | },
1013 | "node_modules/debug": {
1014 | "version": "4.3.4",
1015 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1016 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1017 | "dev": true,
1018 | "dependencies": {
1019 | "ms": "2.1.2"
1020 | },
1021 | "engines": {
1022 | "node": ">=6.0"
1023 | },
1024 | "peerDependenciesMeta": {
1025 | "supports-color": {
1026 | "optional": true
1027 | }
1028 | }
1029 | },
1030 | "node_modules/deep-is": {
1031 | "version": "0.1.4",
1032 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1033 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1034 | "dev": true,
1035 | "peer": true
1036 | },
1037 | "node_modules/diff": {
1038 | "version": "4.0.2",
1039 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
1040 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
1041 | "dev": true,
1042 | "engines": {
1043 | "node": ">=0.3.1"
1044 | }
1045 | },
1046 | "node_modules/dir-glob": {
1047 | "version": "3.0.1",
1048 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
1049 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
1050 | "dev": true,
1051 | "dependencies": {
1052 | "path-type": "^4.0.0"
1053 | },
1054 | "engines": {
1055 | "node": ">=8"
1056 | }
1057 | },
1058 | "node_modules/doctrine": {
1059 | "version": "3.0.0",
1060 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1061 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1062 | "dev": true,
1063 | "peer": true,
1064 | "dependencies": {
1065 | "esutils": "^2.0.2"
1066 | },
1067 | "engines": {
1068 | "node": ">=6.0.0"
1069 | }
1070 | },
1071 | "node_modules/electron-to-chromium": {
1072 | "version": "1.4.505",
1073 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz",
1074 | "integrity": "sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==",
1075 | "dev": true
1076 | },
1077 | "node_modules/enhanced-resolve": {
1078 | "version": "5.15.0",
1079 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
1080 | "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
1081 | "dev": true,
1082 | "dependencies": {
1083 | "graceful-fs": "^4.2.4",
1084 | "tapable": "^2.2.0"
1085 | },
1086 | "engines": {
1087 | "node": ">=10.13.0"
1088 | }
1089 | },
1090 | "node_modules/envinfo": {
1091 | "version": "7.10.0",
1092 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
1093 | "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
1094 | "dev": true,
1095 | "bin": {
1096 | "envinfo": "dist/cli.js"
1097 | },
1098 | "engines": {
1099 | "node": ">=4"
1100 | }
1101 | },
1102 | "node_modules/es-module-lexer": {
1103 | "version": "1.3.0",
1104 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
1105 | "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
1106 | "dev": true
1107 | },
1108 | "node_modules/escalade": {
1109 | "version": "3.1.1",
1110 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1111 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1112 | "dev": true,
1113 | "engines": {
1114 | "node": ">=6"
1115 | }
1116 | },
1117 | "node_modules/escape-string-regexp": {
1118 | "version": "4.0.0",
1119 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1120 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1121 | "dev": true,
1122 | "peer": true,
1123 | "engines": {
1124 | "node": ">=10"
1125 | },
1126 | "funding": {
1127 | "url": "https://github.com/sponsors/sindresorhus"
1128 | }
1129 | },
1130 | "node_modules/eslint": {
1131 | "version": "8.47.0",
1132 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz",
1133 | "integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==",
1134 | "dev": true,
1135 | "peer": true,
1136 | "dependencies": {
1137 | "@eslint-community/eslint-utils": "^4.2.0",
1138 | "@eslint-community/regexpp": "^4.6.1",
1139 | "@eslint/eslintrc": "^2.1.2",
1140 | "@eslint/js": "^8.47.0",
1141 | "@humanwhocodes/config-array": "^0.11.10",
1142 | "@humanwhocodes/module-importer": "^1.0.1",
1143 | "@nodelib/fs.walk": "^1.2.8",
1144 | "ajv": "^6.12.4",
1145 | "chalk": "^4.0.0",
1146 | "cross-spawn": "^7.0.2",
1147 | "debug": "^4.3.2",
1148 | "doctrine": "^3.0.0",
1149 | "escape-string-regexp": "^4.0.0",
1150 | "eslint-scope": "^7.2.2",
1151 | "eslint-visitor-keys": "^3.4.3",
1152 | "espree": "^9.6.1",
1153 | "esquery": "^1.4.2",
1154 | "esutils": "^2.0.2",
1155 | "fast-deep-equal": "^3.1.3",
1156 | "file-entry-cache": "^6.0.1",
1157 | "find-up": "^5.0.0",
1158 | "glob-parent": "^6.0.2",
1159 | "globals": "^13.19.0",
1160 | "graphemer": "^1.4.0",
1161 | "ignore": "^5.2.0",
1162 | "imurmurhash": "^0.1.4",
1163 | "is-glob": "^4.0.0",
1164 | "is-path-inside": "^3.0.3",
1165 | "js-yaml": "^4.1.0",
1166 | "json-stable-stringify-without-jsonify": "^1.0.1",
1167 | "levn": "^0.4.1",
1168 | "lodash.merge": "^4.6.2",
1169 | "minimatch": "^3.1.2",
1170 | "natural-compare": "^1.4.0",
1171 | "optionator": "^0.9.3",
1172 | "strip-ansi": "^6.0.1",
1173 | "text-table": "^0.2.0"
1174 | },
1175 | "bin": {
1176 | "eslint": "bin/eslint.js"
1177 | },
1178 | "engines": {
1179 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1180 | },
1181 | "funding": {
1182 | "url": "https://opencollective.com/eslint"
1183 | }
1184 | },
1185 | "node_modules/eslint-scope": {
1186 | "version": "7.2.2",
1187 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
1188 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
1189 | "dev": true,
1190 | "peer": true,
1191 | "dependencies": {
1192 | "esrecurse": "^4.3.0",
1193 | "estraverse": "^5.2.0"
1194 | },
1195 | "engines": {
1196 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1197 | },
1198 | "funding": {
1199 | "url": "https://opencollective.com/eslint"
1200 | }
1201 | },
1202 | "node_modules/eslint-visitor-keys": {
1203 | "version": "3.4.3",
1204 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
1205 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
1206 | "dev": true,
1207 | "engines": {
1208 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1209 | },
1210 | "funding": {
1211 | "url": "https://opencollective.com/eslint"
1212 | }
1213 | },
1214 | "node_modules/espree": {
1215 | "version": "9.6.1",
1216 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
1217 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
1218 | "dev": true,
1219 | "peer": true,
1220 | "dependencies": {
1221 | "acorn": "^8.9.0",
1222 | "acorn-jsx": "^5.3.2",
1223 | "eslint-visitor-keys": "^3.4.1"
1224 | },
1225 | "engines": {
1226 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1227 | },
1228 | "funding": {
1229 | "url": "https://opencollective.com/eslint"
1230 | }
1231 | },
1232 | "node_modules/esquery": {
1233 | "version": "1.5.0",
1234 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
1235 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
1236 | "dev": true,
1237 | "peer": true,
1238 | "dependencies": {
1239 | "estraverse": "^5.1.0"
1240 | },
1241 | "engines": {
1242 | "node": ">=0.10"
1243 | }
1244 | },
1245 | "node_modules/esrecurse": {
1246 | "version": "4.3.0",
1247 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1248 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1249 | "dev": true,
1250 | "dependencies": {
1251 | "estraverse": "^5.2.0"
1252 | },
1253 | "engines": {
1254 | "node": ">=4.0"
1255 | }
1256 | },
1257 | "node_modules/estraverse": {
1258 | "version": "5.3.0",
1259 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1260 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1261 | "dev": true,
1262 | "engines": {
1263 | "node": ">=4.0"
1264 | }
1265 | },
1266 | "node_modules/esutils": {
1267 | "version": "2.0.3",
1268 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1269 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1270 | "dev": true,
1271 | "peer": true,
1272 | "engines": {
1273 | "node": ">=0.10.0"
1274 | }
1275 | },
1276 | "node_modules/events": {
1277 | "version": "3.3.0",
1278 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
1279 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
1280 | "dev": true,
1281 | "engines": {
1282 | "node": ">=0.8.x"
1283 | }
1284 | },
1285 | "node_modules/fast-deep-equal": {
1286 | "version": "3.1.3",
1287 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1288 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1289 | "dev": true
1290 | },
1291 | "node_modules/fast-glob": {
1292 | "version": "3.3.1",
1293 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
1294 | "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
1295 | "dev": true,
1296 | "dependencies": {
1297 | "@nodelib/fs.stat": "^2.0.2",
1298 | "@nodelib/fs.walk": "^1.2.3",
1299 | "glob-parent": "^5.1.2",
1300 | "merge2": "^1.3.0",
1301 | "micromatch": "^4.0.4"
1302 | },
1303 | "engines": {
1304 | "node": ">=8.6.0"
1305 | }
1306 | },
1307 | "node_modules/fast-glob/node_modules/glob-parent": {
1308 | "version": "5.1.2",
1309 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1310 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1311 | "dev": true,
1312 | "dependencies": {
1313 | "is-glob": "^4.0.1"
1314 | },
1315 | "engines": {
1316 | "node": ">= 6"
1317 | }
1318 | },
1319 | "node_modules/fast-json-stable-stringify": {
1320 | "version": "2.1.0",
1321 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1322 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1323 | "dev": true
1324 | },
1325 | "node_modules/fast-levenshtein": {
1326 | "version": "2.0.6",
1327 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1328 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
1329 | "dev": true,
1330 | "peer": true
1331 | },
1332 | "node_modules/fastest-levenshtein": {
1333 | "version": "1.0.16",
1334 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
1335 | "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
1336 | "dev": true,
1337 | "engines": {
1338 | "node": ">= 4.9.1"
1339 | }
1340 | },
1341 | "node_modules/fastq": {
1342 | "version": "1.15.0",
1343 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
1344 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
1345 | "dev": true,
1346 | "dependencies": {
1347 | "reusify": "^1.0.4"
1348 | }
1349 | },
1350 | "node_modules/file-entry-cache": {
1351 | "version": "6.0.1",
1352 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
1353 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1354 | "dev": true,
1355 | "peer": true,
1356 | "dependencies": {
1357 | "flat-cache": "^3.0.4"
1358 | },
1359 | "engines": {
1360 | "node": "^10.12.0 || >=12.0.0"
1361 | }
1362 | },
1363 | "node_modules/fill-range": {
1364 | "version": "7.0.1",
1365 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1366 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1367 | "dev": true,
1368 | "dependencies": {
1369 | "to-regex-range": "^5.0.1"
1370 | },
1371 | "engines": {
1372 | "node": ">=8"
1373 | }
1374 | },
1375 | "node_modules/find-up": {
1376 | "version": "5.0.0",
1377 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
1378 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1379 | "dev": true,
1380 | "peer": true,
1381 | "dependencies": {
1382 | "locate-path": "^6.0.0",
1383 | "path-exists": "^4.0.0"
1384 | },
1385 | "engines": {
1386 | "node": ">=10"
1387 | },
1388 | "funding": {
1389 | "url": "https://github.com/sponsors/sindresorhus"
1390 | }
1391 | },
1392 | "node_modules/flat-cache": {
1393 | "version": "3.0.4",
1394 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
1395 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
1396 | "dev": true,
1397 | "peer": true,
1398 | "dependencies": {
1399 | "flatted": "^3.1.0",
1400 | "rimraf": "^3.0.2"
1401 | },
1402 | "engines": {
1403 | "node": "^10.12.0 || >=12.0.0"
1404 | }
1405 | },
1406 | "node_modules/flatted": {
1407 | "version": "3.2.7",
1408 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
1409 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
1410 | "dev": true,
1411 | "peer": true
1412 | },
1413 | "node_modules/fs.realpath": {
1414 | "version": "1.0.0",
1415 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1416 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1417 | "dev": true,
1418 | "peer": true
1419 | },
1420 | "node_modules/function-bind": {
1421 | "version": "1.1.1",
1422 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1423 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1424 | "dev": true
1425 | },
1426 | "node_modules/glob": {
1427 | "version": "7.2.3",
1428 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1429 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1430 | "dev": true,
1431 | "peer": true,
1432 | "dependencies": {
1433 | "fs.realpath": "^1.0.0",
1434 | "inflight": "^1.0.4",
1435 | "inherits": "2",
1436 | "minimatch": "^3.1.1",
1437 | "once": "^1.3.0",
1438 | "path-is-absolute": "^1.0.0"
1439 | },
1440 | "engines": {
1441 | "node": "*"
1442 | },
1443 | "funding": {
1444 | "url": "https://github.com/sponsors/isaacs"
1445 | }
1446 | },
1447 | "node_modules/glob-parent": {
1448 | "version": "6.0.2",
1449 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1450 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1451 | "dev": true,
1452 | "peer": true,
1453 | "dependencies": {
1454 | "is-glob": "^4.0.3"
1455 | },
1456 | "engines": {
1457 | "node": ">=10.13.0"
1458 | }
1459 | },
1460 | "node_modules/glob-to-regexp": {
1461 | "version": "0.4.1",
1462 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
1463 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
1464 | "dev": true
1465 | },
1466 | "node_modules/globals": {
1467 | "version": "13.21.0",
1468 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
1469 | "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
1470 | "dev": true,
1471 | "peer": true,
1472 | "dependencies": {
1473 | "type-fest": "^0.20.2"
1474 | },
1475 | "engines": {
1476 | "node": ">=8"
1477 | },
1478 | "funding": {
1479 | "url": "https://github.com/sponsors/sindresorhus"
1480 | }
1481 | },
1482 | "node_modules/globby": {
1483 | "version": "11.1.0",
1484 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
1485 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
1486 | "dev": true,
1487 | "dependencies": {
1488 | "array-union": "^2.1.0",
1489 | "dir-glob": "^3.0.1",
1490 | "fast-glob": "^3.2.9",
1491 | "ignore": "^5.2.0",
1492 | "merge2": "^1.4.1",
1493 | "slash": "^3.0.0"
1494 | },
1495 | "engines": {
1496 | "node": ">=10"
1497 | },
1498 | "funding": {
1499 | "url": "https://github.com/sponsors/sindresorhus"
1500 | }
1501 | },
1502 | "node_modules/graceful-fs": {
1503 | "version": "4.2.11",
1504 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
1505 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1506 | "dev": true
1507 | },
1508 | "node_modules/graphemer": {
1509 | "version": "1.4.0",
1510 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
1511 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
1512 | "dev": true
1513 | },
1514 | "node_modules/has": {
1515 | "version": "1.0.3",
1516 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1517 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1518 | "dev": true,
1519 | "dependencies": {
1520 | "function-bind": "^1.1.1"
1521 | },
1522 | "engines": {
1523 | "node": ">= 0.4.0"
1524 | }
1525 | },
1526 | "node_modules/has-flag": {
1527 | "version": "4.0.0",
1528 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1529 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1530 | "dev": true,
1531 | "engines": {
1532 | "node": ">=8"
1533 | }
1534 | },
1535 | "node_modules/ignore": {
1536 | "version": "5.2.4",
1537 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
1538 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
1539 | "dev": true,
1540 | "engines": {
1541 | "node": ">= 4"
1542 | }
1543 | },
1544 | "node_modules/import-fresh": {
1545 | "version": "3.3.0",
1546 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1547 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1548 | "dev": true,
1549 | "peer": true,
1550 | "dependencies": {
1551 | "parent-module": "^1.0.0",
1552 | "resolve-from": "^4.0.0"
1553 | },
1554 | "engines": {
1555 | "node": ">=6"
1556 | },
1557 | "funding": {
1558 | "url": "https://github.com/sponsors/sindresorhus"
1559 | }
1560 | },
1561 | "node_modules/import-local": {
1562 | "version": "3.1.0",
1563 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
1564 | "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
1565 | "dev": true,
1566 | "dependencies": {
1567 | "pkg-dir": "^4.2.0",
1568 | "resolve-cwd": "^3.0.0"
1569 | },
1570 | "bin": {
1571 | "import-local-fixture": "fixtures/cli.js"
1572 | },
1573 | "engines": {
1574 | "node": ">=8"
1575 | },
1576 | "funding": {
1577 | "url": "https://github.com/sponsors/sindresorhus"
1578 | }
1579 | },
1580 | "node_modules/imurmurhash": {
1581 | "version": "0.1.4",
1582 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1583 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
1584 | "dev": true,
1585 | "peer": true,
1586 | "engines": {
1587 | "node": ">=0.8.19"
1588 | }
1589 | },
1590 | "node_modules/inflight": {
1591 | "version": "1.0.6",
1592 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1593 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1594 | "dev": true,
1595 | "peer": true,
1596 | "dependencies": {
1597 | "once": "^1.3.0",
1598 | "wrappy": "1"
1599 | }
1600 | },
1601 | "node_modules/inherits": {
1602 | "version": "2.0.4",
1603 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1604 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1605 | "dev": true,
1606 | "peer": true
1607 | },
1608 | "node_modules/interpret": {
1609 | "version": "3.1.1",
1610 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
1611 | "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
1612 | "dev": true,
1613 | "engines": {
1614 | "node": ">=10.13.0"
1615 | }
1616 | },
1617 | "node_modules/is-core-module": {
1618 | "version": "2.13.0",
1619 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
1620 | "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
1621 | "dev": true,
1622 | "dependencies": {
1623 | "has": "^1.0.3"
1624 | },
1625 | "funding": {
1626 | "url": "https://github.com/sponsors/ljharb"
1627 | }
1628 | },
1629 | "node_modules/is-extglob": {
1630 | "version": "2.1.1",
1631 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1632 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1633 | "dev": true,
1634 | "engines": {
1635 | "node": ">=0.10.0"
1636 | }
1637 | },
1638 | "node_modules/is-glob": {
1639 | "version": "4.0.3",
1640 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1641 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1642 | "dev": true,
1643 | "dependencies": {
1644 | "is-extglob": "^2.1.1"
1645 | },
1646 | "engines": {
1647 | "node": ">=0.10.0"
1648 | }
1649 | },
1650 | "node_modules/is-number": {
1651 | "version": "7.0.0",
1652 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1653 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1654 | "dev": true,
1655 | "engines": {
1656 | "node": ">=0.12.0"
1657 | }
1658 | },
1659 | "node_modules/is-path-inside": {
1660 | "version": "3.0.3",
1661 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
1662 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
1663 | "dev": true,
1664 | "peer": true,
1665 | "engines": {
1666 | "node": ">=8"
1667 | }
1668 | },
1669 | "node_modules/is-plain-object": {
1670 | "version": "2.0.4",
1671 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
1672 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
1673 | "dev": true,
1674 | "dependencies": {
1675 | "isobject": "^3.0.1"
1676 | },
1677 | "engines": {
1678 | "node": ">=0.10.0"
1679 | }
1680 | },
1681 | "node_modules/isexe": {
1682 | "version": "2.0.0",
1683 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1684 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1685 | "dev": true
1686 | },
1687 | "node_modules/isobject": {
1688 | "version": "3.0.1",
1689 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
1690 | "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
1691 | "dev": true,
1692 | "engines": {
1693 | "node": ">=0.10.0"
1694 | }
1695 | },
1696 | "node_modules/jest-worker": {
1697 | "version": "27.5.1",
1698 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
1699 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
1700 | "dev": true,
1701 | "dependencies": {
1702 | "@types/node": "*",
1703 | "merge-stream": "^2.0.0",
1704 | "supports-color": "^8.0.0"
1705 | },
1706 | "engines": {
1707 | "node": ">= 10.13.0"
1708 | }
1709 | },
1710 | "node_modules/jest-worker/node_modules/supports-color": {
1711 | "version": "8.1.1",
1712 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
1713 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
1714 | "dev": true,
1715 | "dependencies": {
1716 | "has-flag": "^4.0.0"
1717 | },
1718 | "engines": {
1719 | "node": ">=10"
1720 | },
1721 | "funding": {
1722 | "url": "https://github.com/chalk/supports-color?sponsor=1"
1723 | }
1724 | },
1725 | "node_modules/js-yaml": {
1726 | "version": "4.1.0",
1727 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
1728 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
1729 | "dev": true,
1730 | "peer": true,
1731 | "dependencies": {
1732 | "argparse": "^2.0.1"
1733 | },
1734 | "bin": {
1735 | "js-yaml": "bin/js-yaml.js"
1736 | }
1737 | },
1738 | "node_modules/json-parse-even-better-errors": {
1739 | "version": "2.3.1",
1740 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1741 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
1742 | "dev": true
1743 | },
1744 | "node_modules/json-schema-traverse": {
1745 | "version": "0.4.1",
1746 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1747 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1748 | "dev": true
1749 | },
1750 | "node_modules/json-stable-stringify-without-jsonify": {
1751 | "version": "1.0.1",
1752 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1753 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
1754 | "dev": true,
1755 | "peer": true
1756 | },
1757 | "node_modules/kind-of": {
1758 | "version": "6.0.3",
1759 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
1760 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
1761 | "dev": true,
1762 | "engines": {
1763 | "node": ">=0.10.0"
1764 | }
1765 | },
1766 | "node_modules/levn": {
1767 | "version": "0.4.1",
1768 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1769 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1770 | "dev": true,
1771 | "peer": true,
1772 | "dependencies": {
1773 | "prelude-ls": "^1.2.1",
1774 | "type-check": "~0.4.0"
1775 | },
1776 | "engines": {
1777 | "node": ">= 0.8.0"
1778 | }
1779 | },
1780 | "node_modules/loader-runner": {
1781 | "version": "4.3.0",
1782 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
1783 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
1784 | "dev": true,
1785 | "engines": {
1786 | "node": ">=6.11.5"
1787 | }
1788 | },
1789 | "node_modules/locate-path": {
1790 | "version": "6.0.0",
1791 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
1792 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
1793 | "dev": true,
1794 | "peer": true,
1795 | "dependencies": {
1796 | "p-locate": "^5.0.0"
1797 | },
1798 | "engines": {
1799 | "node": ">=10"
1800 | },
1801 | "funding": {
1802 | "url": "https://github.com/sponsors/sindresorhus"
1803 | }
1804 | },
1805 | "node_modules/lodash.merge": {
1806 | "version": "4.6.2",
1807 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1808 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1809 | "dev": true,
1810 | "peer": true
1811 | },
1812 | "node_modules/lru-cache": {
1813 | "version": "6.0.0",
1814 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1815 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1816 | "dev": true,
1817 | "dependencies": {
1818 | "yallist": "^4.0.0"
1819 | },
1820 | "engines": {
1821 | "node": ">=10"
1822 | }
1823 | },
1824 | "node_modules/make-error": {
1825 | "version": "1.3.6",
1826 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
1827 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
1828 | "dev": true
1829 | },
1830 | "node_modules/merge-stream": {
1831 | "version": "2.0.0",
1832 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1833 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1834 | "dev": true
1835 | },
1836 | "node_modules/merge2": {
1837 | "version": "1.4.1",
1838 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1839 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1840 | "dev": true,
1841 | "engines": {
1842 | "node": ">= 8"
1843 | }
1844 | },
1845 | "node_modules/micromatch": {
1846 | "version": "4.0.5",
1847 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
1848 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
1849 | "dev": true,
1850 | "dependencies": {
1851 | "braces": "^3.0.2",
1852 | "picomatch": "^2.3.1"
1853 | },
1854 | "engines": {
1855 | "node": ">=8.6"
1856 | }
1857 | },
1858 | "node_modules/mime-db": {
1859 | "version": "1.52.0",
1860 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1861 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1862 | "dev": true,
1863 | "engines": {
1864 | "node": ">= 0.6"
1865 | }
1866 | },
1867 | "node_modules/mime-types": {
1868 | "version": "2.1.35",
1869 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1870 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1871 | "dev": true,
1872 | "dependencies": {
1873 | "mime-db": "1.52.0"
1874 | },
1875 | "engines": {
1876 | "node": ">= 0.6"
1877 | }
1878 | },
1879 | "node_modules/minimatch": {
1880 | "version": "3.1.2",
1881 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1882 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1883 | "dev": true,
1884 | "peer": true,
1885 | "dependencies": {
1886 | "brace-expansion": "^1.1.7"
1887 | },
1888 | "engines": {
1889 | "node": "*"
1890 | }
1891 | },
1892 | "node_modules/ms": {
1893 | "version": "2.1.2",
1894 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1895 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1896 | "dev": true
1897 | },
1898 | "node_modules/natural-compare": {
1899 | "version": "1.4.0",
1900 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1901 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
1902 | "dev": true
1903 | },
1904 | "node_modules/neo-async": {
1905 | "version": "2.6.2",
1906 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
1907 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
1908 | "dev": true
1909 | },
1910 | "node_modules/node-releases": {
1911 | "version": "2.0.13",
1912 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
1913 | "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
1914 | "dev": true
1915 | },
1916 | "node_modules/once": {
1917 | "version": "1.4.0",
1918 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1919 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1920 | "dev": true,
1921 | "peer": true,
1922 | "dependencies": {
1923 | "wrappy": "1"
1924 | }
1925 | },
1926 | "node_modules/optionator": {
1927 | "version": "0.9.3",
1928 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
1929 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
1930 | "dev": true,
1931 | "peer": true,
1932 | "dependencies": {
1933 | "@aashutoshrathi/word-wrap": "^1.2.3",
1934 | "deep-is": "^0.1.3",
1935 | "fast-levenshtein": "^2.0.6",
1936 | "levn": "^0.4.1",
1937 | "prelude-ls": "^1.2.1",
1938 | "type-check": "^0.4.0"
1939 | },
1940 | "engines": {
1941 | "node": ">= 0.8.0"
1942 | }
1943 | },
1944 | "node_modules/p-limit": {
1945 | "version": "3.1.0",
1946 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
1947 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
1948 | "dev": true,
1949 | "peer": true,
1950 | "dependencies": {
1951 | "yocto-queue": "^0.1.0"
1952 | },
1953 | "engines": {
1954 | "node": ">=10"
1955 | },
1956 | "funding": {
1957 | "url": "https://github.com/sponsors/sindresorhus"
1958 | }
1959 | },
1960 | "node_modules/p-locate": {
1961 | "version": "5.0.0",
1962 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
1963 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
1964 | "dev": true,
1965 | "peer": true,
1966 | "dependencies": {
1967 | "p-limit": "^3.0.2"
1968 | },
1969 | "engines": {
1970 | "node": ">=10"
1971 | },
1972 | "funding": {
1973 | "url": "https://github.com/sponsors/sindresorhus"
1974 | }
1975 | },
1976 | "node_modules/p-try": {
1977 | "version": "2.2.0",
1978 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1979 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
1980 | "dev": true,
1981 | "engines": {
1982 | "node": ">=6"
1983 | }
1984 | },
1985 | "node_modules/parent-module": {
1986 | "version": "1.0.1",
1987 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1988 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1989 | "dev": true,
1990 | "peer": true,
1991 | "dependencies": {
1992 | "callsites": "^3.0.0"
1993 | },
1994 | "engines": {
1995 | "node": ">=6"
1996 | }
1997 | },
1998 | "node_modules/path-exists": {
1999 | "version": "4.0.0",
2000 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2001 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2002 | "dev": true,
2003 | "engines": {
2004 | "node": ">=8"
2005 | }
2006 | },
2007 | "node_modules/path-is-absolute": {
2008 | "version": "1.0.1",
2009 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2010 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
2011 | "dev": true,
2012 | "peer": true,
2013 | "engines": {
2014 | "node": ">=0.10.0"
2015 | }
2016 | },
2017 | "node_modules/path-key": {
2018 | "version": "3.1.1",
2019 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2020 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2021 | "dev": true,
2022 | "engines": {
2023 | "node": ">=8"
2024 | }
2025 | },
2026 | "node_modules/path-parse": {
2027 | "version": "1.0.7",
2028 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2029 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2030 | "dev": true
2031 | },
2032 | "node_modules/path-type": {
2033 | "version": "4.0.0",
2034 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
2035 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
2036 | "dev": true,
2037 | "engines": {
2038 | "node": ">=8"
2039 | }
2040 | },
2041 | "node_modules/picocolors": {
2042 | "version": "1.0.0",
2043 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
2044 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
2045 | "dev": true
2046 | },
2047 | "node_modules/picomatch": {
2048 | "version": "2.3.1",
2049 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2050 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2051 | "dev": true,
2052 | "engines": {
2053 | "node": ">=8.6"
2054 | },
2055 | "funding": {
2056 | "url": "https://github.com/sponsors/jonschlinkert"
2057 | }
2058 | },
2059 | "node_modules/pkg-dir": {
2060 | "version": "4.2.0",
2061 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
2062 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
2063 | "dev": true,
2064 | "dependencies": {
2065 | "find-up": "^4.0.0"
2066 | },
2067 | "engines": {
2068 | "node": ">=8"
2069 | }
2070 | },
2071 | "node_modules/pkg-dir/node_modules/find-up": {
2072 | "version": "4.1.0",
2073 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
2074 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
2075 | "dev": true,
2076 | "dependencies": {
2077 | "locate-path": "^5.0.0",
2078 | "path-exists": "^4.0.0"
2079 | },
2080 | "engines": {
2081 | "node": ">=8"
2082 | }
2083 | },
2084 | "node_modules/pkg-dir/node_modules/locate-path": {
2085 | "version": "5.0.0",
2086 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
2087 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
2088 | "dev": true,
2089 | "dependencies": {
2090 | "p-locate": "^4.1.0"
2091 | },
2092 | "engines": {
2093 | "node": ">=8"
2094 | }
2095 | },
2096 | "node_modules/pkg-dir/node_modules/p-limit": {
2097 | "version": "2.3.0",
2098 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
2099 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
2100 | "dev": true,
2101 | "dependencies": {
2102 | "p-try": "^2.0.0"
2103 | },
2104 | "engines": {
2105 | "node": ">=6"
2106 | },
2107 | "funding": {
2108 | "url": "https://github.com/sponsors/sindresorhus"
2109 | }
2110 | },
2111 | "node_modules/pkg-dir/node_modules/p-locate": {
2112 | "version": "4.1.0",
2113 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
2114 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
2115 | "dev": true,
2116 | "dependencies": {
2117 | "p-limit": "^2.2.0"
2118 | },
2119 | "engines": {
2120 | "node": ">=8"
2121 | }
2122 | },
2123 | "node_modules/prelude-ls": {
2124 | "version": "1.2.1",
2125 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
2126 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
2127 | "dev": true,
2128 | "peer": true,
2129 | "engines": {
2130 | "node": ">= 0.8.0"
2131 | }
2132 | },
2133 | "node_modules/prettier": {
2134 | "version": "3.0.3",
2135 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
2136 | "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
2137 | "dev": true,
2138 | "bin": {
2139 | "prettier": "bin/prettier.cjs"
2140 | },
2141 | "engines": {
2142 | "node": ">=14"
2143 | },
2144 | "funding": {
2145 | "url": "https://github.com/prettier/prettier?sponsor=1"
2146 | }
2147 | },
2148 | "node_modules/punycode": {
2149 | "version": "2.3.0",
2150 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
2151 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
2152 | "dev": true,
2153 | "engines": {
2154 | "node": ">=6"
2155 | }
2156 | },
2157 | "node_modules/queue-microtask": {
2158 | "version": "1.2.3",
2159 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2160 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2161 | "dev": true,
2162 | "funding": [
2163 | {
2164 | "type": "github",
2165 | "url": "https://github.com/sponsors/feross"
2166 | },
2167 | {
2168 | "type": "patreon",
2169 | "url": "https://www.patreon.com/feross"
2170 | },
2171 | {
2172 | "type": "consulting",
2173 | "url": "https://feross.org/support"
2174 | }
2175 | ]
2176 | },
2177 | "node_modules/randombytes": {
2178 | "version": "2.1.0",
2179 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
2180 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
2181 | "dev": true,
2182 | "dependencies": {
2183 | "safe-buffer": "^5.1.0"
2184 | }
2185 | },
2186 | "node_modules/rechoir": {
2187 | "version": "0.8.0",
2188 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
2189 | "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
2190 | "dev": true,
2191 | "dependencies": {
2192 | "resolve": "^1.20.0"
2193 | },
2194 | "engines": {
2195 | "node": ">= 10.13.0"
2196 | }
2197 | },
2198 | "node_modules/resolve": {
2199 | "version": "1.22.4",
2200 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
2201 | "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
2202 | "dev": true,
2203 | "dependencies": {
2204 | "is-core-module": "^2.13.0",
2205 | "path-parse": "^1.0.7",
2206 | "supports-preserve-symlinks-flag": "^1.0.0"
2207 | },
2208 | "bin": {
2209 | "resolve": "bin/resolve"
2210 | },
2211 | "funding": {
2212 | "url": "https://github.com/sponsors/ljharb"
2213 | }
2214 | },
2215 | "node_modules/resolve-cwd": {
2216 | "version": "3.0.0",
2217 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
2218 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
2219 | "dev": true,
2220 | "dependencies": {
2221 | "resolve-from": "^5.0.0"
2222 | },
2223 | "engines": {
2224 | "node": ">=8"
2225 | }
2226 | },
2227 | "node_modules/resolve-cwd/node_modules/resolve-from": {
2228 | "version": "5.0.0",
2229 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
2230 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
2231 | "dev": true,
2232 | "engines": {
2233 | "node": ">=8"
2234 | }
2235 | },
2236 | "node_modules/resolve-from": {
2237 | "version": "4.0.0",
2238 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2239 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2240 | "dev": true,
2241 | "peer": true,
2242 | "engines": {
2243 | "node": ">=4"
2244 | }
2245 | },
2246 | "node_modules/reusify": {
2247 | "version": "1.0.4",
2248 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2249 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2250 | "dev": true,
2251 | "engines": {
2252 | "iojs": ">=1.0.0",
2253 | "node": ">=0.10.0"
2254 | }
2255 | },
2256 | "node_modules/rimraf": {
2257 | "version": "3.0.2",
2258 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
2259 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
2260 | "dev": true,
2261 | "peer": true,
2262 | "dependencies": {
2263 | "glob": "^7.1.3"
2264 | },
2265 | "bin": {
2266 | "rimraf": "bin.js"
2267 | },
2268 | "funding": {
2269 | "url": "https://github.com/sponsors/isaacs"
2270 | }
2271 | },
2272 | "node_modules/run-parallel": {
2273 | "version": "1.2.0",
2274 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2275 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2276 | "dev": true,
2277 | "funding": [
2278 | {
2279 | "type": "github",
2280 | "url": "https://github.com/sponsors/feross"
2281 | },
2282 | {
2283 | "type": "patreon",
2284 | "url": "https://www.patreon.com/feross"
2285 | },
2286 | {
2287 | "type": "consulting",
2288 | "url": "https://feross.org/support"
2289 | }
2290 | ],
2291 | "dependencies": {
2292 | "queue-microtask": "^1.2.2"
2293 | }
2294 | },
2295 | "node_modules/safe-buffer": {
2296 | "version": "5.2.1",
2297 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
2298 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
2299 | "dev": true,
2300 | "funding": [
2301 | {
2302 | "type": "github",
2303 | "url": "https://github.com/sponsors/feross"
2304 | },
2305 | {
2306 | "type": "patreon",
2307 | "url": "https://www.patreon.com/feross"
2308 | },
2309 | {
2310 | "type": "consulting",
2311 | "url": "https://feross.org/support"
2312 | }
2313 | ]
2314 | },
2315 | "node_modules/schema-utils": {
2316 | "version": "3.3.0",
2317 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
2318 | "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
2319 | "dev": true,
2320 | "dependencies": {
2321 | "@types/json-schema": "^7.0.8",
2322 | "ajv": "^6.12.5",
2323 | "ajv-keywords": "^3.5.2"
2324 | },
2325 | "engines": {
2326 | "node": ">= 10.13.0"
2327 | },
2328 | "funding": {
2329 | "type": "opencollective",
2330 | "url": "https://opencollective.com/webpack"
2331 | }
2332 | },
2333 | "node_modules/semver": {
2334 | "version": "7.5.4",
2335 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
2336 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
2337 | "dev": true,
2338 | "dependencies": {
2339 | "lru-cache": "^6.0.0"
2340 | },
2341 | "bin": {
2342 | "semver": "bin/semver.js"
2343 | },
2344 | "engines": {
2345 | "node": ">=10"
2346 | }
2347 | },
2348 | "node_modules/serialize-javascript": {
2349 | "version": "6.0.1",
2350 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
2351 | "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
2352 | "dev": true,
2353 | "dependencies": {
2354 | "randombytes": "^2.1.0"
2355 | }
2356 | },
2357 | "node_modules/shallow-clone": {
2358 | "version": "3.0.1",
2359 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
2360 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
2361 | "dev": true,
2362 | "dependencies": {
2363 | "kind-of": "^6.0.2"
2364 | },
2365 | "engines": {
2366 | "node": ">=8"
2367 | }
2368 | },
2369 | "node_modules/shebang-command": {
2370 | "version": "2.0.0",
2371 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2372 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2373 | "dev": true,
2374 | "dependencies": {
2375 | "shebang-regex": "^3.0.0"
2376 | },
2377 | "engines": {
2378 | "node": ">=8"
2379 | }
2380 | },
2381 | "node_modules/shebang-regex": {
2382 | "version": "3.0.0",
2383 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2384 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2385 | "dev": true,
2386 | "engines": {
2387 | "node": ">=8"
2388 | }
2389 | },
2390 | "node_modules/slash": {
2391 | "version": "3.0.0",
2392 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
2393 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
2394 | "dev": true,
2395 | "engines": {
2396 | "node": ">=8"
2397 | }
2398 | },
2399 | "node_modules/source-map": {
2400 | "version": "0.6.1",
2401 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2402 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2403 | "dev": true,
2404 | "engines": {
2405 | "node": ">=0.10.0"
2406 | }
2407 | },
2408 | "node_modules/source-map-support": {
2409 | "version": "0.5.21",
2410 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
2411 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
2412 | "dev": true,
2413 | "dependencies": {
2414 | "buffer-from": "^1.0.0",
2415 | "source-map": "^0.6.0"
2416 | }
2417 | },
2418 | "node_modules/strip-ansi": {
2419 | "version": "6.0.1",
2420 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2421 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2422 | "dev": true,
2423 | "peer": true,
2424 | "dependencies": {
2425 | "ansi-regex": "^5.0.1"
2426 | },
2427 | "engines": {
2428 | "node": ">=8"
2429 | }
2430 | },
2431 | "node_modules/strip-json-comments": {
2432 | "version": "3.1.1",
2433 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
2434 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
2435 | "dev": true,
2436 | "peer": true,
2437 | "engines": {
2438 | "node": ">=8"
2439 | },
2440 | "funding": {
2441 | "url": "https://github.com/sponsors/sindresorhus"
2442 | }
2443 | },
2444 | "node_modules/supports-color": {
2445 | "version": "7.2.0",
2446 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2447 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2448 | "dev": true,
2449 | "dependencies": {
2450 | "has-flag": "^4.0.0"
2451 | },
2452 | "engines": {
2453 | "node": ">=8"
2454 | }
2455 | },
2456 | "node_modules/supports-preserve-symlinks-flag": {
2457 | "version": "1.0.0",
2458 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2459 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2460 | "dev": true,
2461 | "engines": {
2462 | "node": ">= 0.4"
2463 | },
2464 | "funding": {
2465 | "url": "https://github.com/sponsors/ljharb"
2466 | }
2467 | },
2468 | "node_modules/tapable": {
2469 | "version": "2.2.1",
2470 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
2471 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
2472 | "dev": true,
2473 | "engines": {
2474 | "node": ">=6"
2475 | }
2476 | },
2477 | "node_modules/terser": {
2478 | "version": "5.19.3",
2479 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.3.tgz",
2480 | "integrity": "sha512-pQzJ9UJzM0IgmT4FAtYI6+VqFf0lj/to58AV0Xfgg0Up37RyPG7Al+1cepC6/BVuAxR9oNb41/DL4DEoHJvTdg==",
2481 | "dev": true,
2482 | "dependencies": {
2483 | "@jridgewell/source-map": "^0.3.3",
2484 | "acorn": "^8.8.2",
2485 | "commander": "^2.20.0",
2486 | "source-map-support": "~0.5.20"
2487 | },
2488 | "bin": {
2489 | "terser": "bin/terser"
2490 | },
2491 | "engines": {
2492 | "node": ">=10"
2493 | }
2494 | },
2495 | "node_modules/terser-webpack-plugin": {
2496 | "version": "5.3.9",
2497 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
2498 | "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
2499 | "dev": true,
2500 | "dependencies": {
2501 | "@jridgewell/trace-mapping": "^0.3.17",
2502 | "jest-worker": "^27.4.5",
2503 | "schema-utils": "^3.1.1",
2504 | "serialize-javascript": "^6.0.1",
2505 | "terser": "^5.16.8"
2506 | },
2507 | "engines": {
2508 | "node": ">= 10.13.0"
2509 | },
2510 | "funding": {
2511 | "type": "opencollective",
2512 | "url": "https://opencollective.com/webpack"
2513 | },
2514 | "peerDependencies": {
2515 | "webpack": "^5.1.0"
2516 | },
2517 | "peerDependenciesMeta": {
2518 | "@swc/core": {
2519 | "optional": true
2520 | },
2521 | "esbuild": {
2522 | "optional": true
2523 | },
2524 | "uglify-js": {
2525 | "optional": true
2526 | }
2527 | }
2528 | },
2529 | "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": {
2530 | "version": "0.3.19",
2531 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
2532 | "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
2533 | "dev": true,
2534 | "dependencies": {
2535 | "@jridgewell/resolve-uri": "^3.1.0",
2536 | "@jridgewell/sourcemap-codec": "^1.4.14"
2537 | }
2538 | },
2539 | "node_modules/text-table": {
2540 | "version": "0.2.0",
2541 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
2542 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
2543 | "dev": true,
2544 | "peer": true
2545 | },
2546 | "node_modules/to-regex-range": {
2547 | "version": "5.0.1",
2548 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2549 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2550 | "dev": true,
2551 | "dependencies": {
2552 | "is-number": "^7.0.0"
2553 | },
2554 | "engines": {
2555 | "node": ">=8.0"
2556 | }
2557 | },
2558 | "node_modules/ts-api-utils": {
2559 | "version": "1.0.2",
2560 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz",
2561 | "integrity": "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==",
2562 | "dev": true,
2563 | "engines": {
2564 | "node": ">=16.13.0"
2565 | },
2566 | "peerDependencies": {
2567 | "typescript": ">=4.2.0"
2568 | }
2569 | },
2570 | "node_modules/ts-loader": {
2571 | "version": "9.4.4",
2572 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
2573 | "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==",
2574 | "dev": true,
2575 | "dependencies": {
2576 | "chalk": "^4.1.0",
2577 | "enhanced-resolve": "^5.0.0",
2578 | "micromatch": "^4.0.0",
2579 | "semver": "^7.3.4"
2580 | },
2581 | "engines": {
2582 | "node": ">=12.0.0"
2583 | },
2584 | "peerDependencies": {
2585 | "typescript": "*",
2586 | "webpack": "^5.0.0"
2587 | }
2588 | },
2589 | "node_modules/ts-node": {
2590 | "version": "10.9.1",
2591 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
2592 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
2593 | "dev": true,
2594 | "dependencies": {
2595 | "@cspotcode/source-map-support": "^0.8.0",
2596 | "@tsconfig/node10": "^1.0.7",
2597 | "@tsconfig/node12": "^1.0.7",
2598 | "@tsconfig/node14": "^1.0.0",
2599 | "@tsconfig/node16": "^1.0.2",
2600 | "acorn": "^8.4.1",
2601 | "acorn-walk": "^8.1.1",
2602 | "arg": "^4.1.0",
2603 | "create-require": "^1.1.0",
2604 | "diff": "^4.0.1",
2605 | "make-error": "^1.1.1",
2606 | "v8-compile-cache-lib": "^3.0.1",
2607 | "yn": "3.1.1"
2608 | },
2609 | "bin": {
2610 | "ts-node": "dist/bin.js",
2611 | "ts-node-cwd": "dist/bin-cwd.js",
2612 | "ts-node-esm": "dist/bin-esm.js",
2613 | "ts-node-script": "dist/bin-script.js",
2614 | "ts-node-transpile-only": "dist/bin-transpile.js",
2615 | "ts-script": "dist/bin-script-deprecated.js"
2616 | },
2617 | "peerDependencies": {
2618 | "@swc/core": ">=1.2.50",
2619 | "@swc/wasm": ">=1.2.50",
2620 | "@types/node": "*",
2621 | "typescript": ">=2.7"
2622 | },
2623 | "peerDependenciesMeta": {
2624 | "@swc/core": {
2625 | "optional": true
2626 | },
2627 | "@swc/wasm": {
2628 | "optional": true
2629 | }
2630 | }
2631 | },
2632 | "node_modules/type-check": {
2633 | "version": "0.4.0",
2634 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
2635 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
2636 | "dev": true,
2637 | "peer": true,
2638 | "dependencies": {
2639 | "prelude-ls": "^1.2.1"
2640 | },
2641 | "engines": {
2642 | "node": ">= 0.8.0"
2643 | }
2644 | },
2645 | "node_modules/type-fest": {
2646 | "version": "0.20.2",
2647 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
2648 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
2649 | "dev": true,
2650 | "peer": true,
2651 | "engines": {
2652 | "node": ">=10"
2653 | },
2654 | "funding": {
2655 | "url": "https://github.com/sponsors/sindresorhus"
2656 | }
2657 | },
2658 | "node_modules/typescript": {
2659 | "version": "5.1.6",
2660 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
2661 | "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
2662 | "dev": true,
2663 | "bin": {
2664 | "tsc": "bin/tsc",
2665 | "tsserver": "bin/tsserver"
2666 | },
2667 | "engines": {
2668 | "node": ">=14.17"
2669 | }
2670 | },
2671 | "node_modules/update-browserslist-db": {
2672 | "version": "1.0.11",
2673 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
2674 | "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
2675 | "dev": true,
2676 | "funding": [
2677 | {
2678 | "type": "opencollective",
2679 | "url": "https://opencollective.com/browserslist"
2680 | },
2681 | {
2682 | "type": "tidelift",
2683 | "url": "https://tidelift.com/funding/github/npm/browserslist"
2684 | },
2685 | {
2686 | "type": "github",
2687 | "url": "https://github.com/sponsors/ai"
2688 | }
2689 | ],
2690 | "dependencies": {
2691 | "escalade": "^3.1.1",
2692 | "picocolors": "^1.0.0"
2693 | },
2694 | "bin": {
2695 | "update-browserslist-db": "cli.js"
2696 | },
2697 | "peerDependencies": {
2698 | "browserslist": ">= 4.21.0"
2699 | }
2700 | },
2701 | "node_modules/uri-js": {
2702 | "version": "4.4.1",
2703 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2704 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2705 | "dev": true,
2706 | "dependencies": {
2707 | "punycode": "^2.1.0"
2708 | }
2709 | },
2710 | "node_modules/v8-compile-cache-lib": {
2711 | "version": "3.0.1",
2712 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
2713 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
2714 | "dev": true
2715 | },
2716 | "node_modules/watchpack": {
2717 | "version": "2.4.0",
2718 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
2719 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
2720 | "dev": true,
2721 | "dependencies": {
2722 | "glob-to-regexp": "^0.4.1",
2723 | "graceful-fs": "^4.1.2"
2724 | },
2725 | "engines": {
2726 | "node": ">=10.13.0"
2727 | }
2728 | },
2729 | "node_modules/webpack": {
2730 | "version": "5.88.2",
2731 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
2732 | "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
2733 | "dev": true,
2734 | "dependencies": {
2735 | "@types/eslint-scope": "^3.7.3",
2736 | "@types/estree": "^1.0.0",
2737 | "@webassemblyjs/ast": "^1.11.5",
2738 | "@webassemblyjs/wasm-edit": "^1.11.5",
2739 | "@webassemblyjs/wasm-parser": "^1.11.5",
2740 | "acorn": "^8.7.1",
2741 | "acorn-import-assertions": "^1.9.0",
2742 | "browserslist": "^4.14.5",
2743 | "chrome-trace-event": "^1.0.2",
2744 | "enhanced-resolve": "^5.15.0",
2745 | "es-module-lexer": "^1.2.1",
2746 | "eslint-scope": "5.1.1",
2747 | "events": "^3.2.0",
2748 | "glob-to-regexp": "^0.4.1",
2749 | "graceful-fs": "^4.2.9",
2750 | "json-parse-even-better-errors": "^2.3.1",
2751 | "loader-runner": "^4.2.0",
2752 | "mime-types": "^2.1.27",
2753 | "neo-async": "^2.6.2",
2754 | "schema-utils": "^3.2.0",
2755 | "tapable": "^2.1.1",
2756 | "terser-webpack-plugin": "^5.3.7",
2757 | "watchpack": "^2.4.0",
2758 | "webpack-sources": "^3.2.3"
2759 | },
2760 | "bin": {
2761 | "webpack": "bin/webpack.js"
2762 | },
2763 | "engines": {
2764 | "node": ">=10.13.0"
2765 | },
2766 | "funding": {
2767 | "type": "opencollective",
2768 | "url": "https://opencollective.com/webpack"
2769 | },
2770 | "peerDependenciesMeta": {
2771 | "webpack-cli": {
2772 | "optional": true
2773 | }
2774 | }
2775 | },
2776 | "node_modules/webpack-cli": {
2777 | "version": "5.1.4",
2778 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
2779 | "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
2780 | "dev": true,
2781 | "dependencies": {
2782 | "@discoveryjs/json-ext": "^0.5.0",
2783 | "@webpack-cli/configtest": "^2.1.1",
2784 | "@webpack-cli/info": "^2.0.2",
2785 | "@webpack-cli/serve": "^2.0.5",
2786 | "colorette": "^2.0.14",
2787 | "commander": "^10.0.1",
2788 | "cross-spawn": "^7.0.3",
2789 | "envinfo": "^7.7.3",
2790 | "fastest-levenshtein": "^1.0.12",
2791 | "import-local": "^3.0.2",
2792 | "interpret": "^3.1.1",
2793 | "rechoir": "^0.8.0",
2794 | "webpack-merge": "^5.7.3"
2795 | },
2796 | "bin": {
2797 | "webpack-cli": "bin/cli.js"
2798 | },
2799 | "engines": {
2800 | "node": ">=14.15.0"
2801 | },
2802 | "funding": {
2803 | "type": "opencollective",
2804 | "url": "https://opencollective.com/webpack"
2805 | },
2806 | "peerDependencies": {
2807 | "webpack": "5.x.x"
2808 | },
2809 | "peerDependenciesMeta": {
2810 | "@webpack-cli/generators": {
2811 | "optional": true
2812 | },
2813 | "webpack-bundle-analyzer": {
2814 | "optional": true
2815 | },
2816 | "webpack-dev-server": {
2817 | "optional": true
2818 | }
2819 | }
2820 | },
2821 | "node_modules/webpack-cli/node_modules/commander": {
2822 | "version": "10.0.1",
2823 | "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
2824 | "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
2825 | "dev": true,
2826 | "engines": {
2827 | "node": ">=14"
2828 | }
2829 | },
2830 | "node_modules/webpack-merge": {
2831 | "version": "5.9.0",
2832 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
2833 | "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
2834 | "dev": true,
2835 | "dependencies": {
2836 | "clone-deep": "^4.0.1",
2837 | "wildcard": "^2.0.0"
2838 | },
2839 | "engines": {
2840 | "node": ">=10.0.0"
2841 | }
2842 | },
2843 | "node_modules/webpack-sources": {
2844 | "version": "3.2.3",
2845 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
2846 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
2847 | "dev": true,
2848 | "engines": {
2849 | "node": ">=10.13.0"
2850 | }
2851 | },
2852 | "node_modules/webpack/node_modules/eslint-scope": {
2853 | "version": "5.1.1",
2854 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
2855 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
2856 | "dev": true,
2857 | "dependencies": {
2858 | "esrecurse": "^4.3.0",
2859 | "estraverse": "^4.1.1"
2860 | },
2861 | "engines": {
2862 | "node": ">=8.0.0"
2863 | }
2864 | },
2865 | "node_modules/webpack/node_modules/estraverse": {
2866 | "version": "4.3.0",
2867 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
2868 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
2869 | "dev": true,
2870 | "engines": {
2871 | "node": ">=4.0"
2872 | }
2873 | },
2874 | "node_modules/which": {
2875 | "version": "2.0.2",
2876 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2877 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2878 | "dev": true,
2879 | "dependencies": {
2880 | "isexe": "^2.0.0"
2881 | },
2882 | "bin": {
2883 | "node-which": "bin/node-which"
2884 | },
2885 | "engines": {
2886 | "node": ">= 8"
2887 | }
2888 | },
2889 | "node_modules/wildcard": {
2890 | "version": "2.0.1",
2891 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
2892 | "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
2893 | "dev": true
2894 | },
2895 | "node_modules/wrappy": {
2896 | "version": "1.0.2",
2897 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2898 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2899 | "dev": true,
2900 | "peer": true
2901 | },
2902 | "node_modules/yallist": {
2903 | "version": "4.0.0",
2904 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
2905 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
2906 | "dev": true
2907 | },
2908 | "node_modules/yn": {
2909 | "version": "3.1.1",
2910 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
2911 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
2912 | "dev": true,
2913 | "engines": {
2914 | "node": ">=6"
2915 | }
2916 | },
2917 | "node_modules/yocto-queue": {
2918 | "version": "0.1.0",
2919 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
2920 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
2921 | "dev": true,
2922 | "peer": true,
2923 | "engines": {
2924 | "node": ">=10"
2925 | },
2926 | "funding": {
2927 | "url": "https://github.com/sponsors/sindresorhus"
2928 | }
2929 | }
2930 | }
2931 | }
2932 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "typescript",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "build:frontend": "webpack -w",
9 | "build:backend": "tsc"
10 | },
11 | "keywords": [],
12 | "author": "",
13 | "license": "ISC",
14 | "devDependencies": {
15 | "@typescript-eslint/eslint-plugin": "^6.4.1",
16 | "@typescript-eslint/parser": "^6.4.1",
17 | "prettier": "^3.0.3",
18 | "ts-loader": "^9.4.4",
19 | "ts-node": "^10.9.1",
20 | "typescript": "^5.1.6",
21 | "webpack": "^5.88.2",
22 | "webpack-cli": "^5.1.4"
23 | },
24 | "dependencies": {
25 | "@types/validator": "^13.11.1"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Aula 01 - TypeAnnotation/Aula01.ts:
--------------------------------------------------------------------------------
1 | /*eslint-disable*/
2 |
3 | // Type basic
4 | let typeName: string = "Stherzada";
5 | let typeNumber: number = 2525562;
6 | let typeSymbol: symbol = Symbol("QUALQUERCOISA");
7 |
8 | // Arrays
9 |
10 | let arrayNumber: number[] = [5, 3, 2, 1, 5];
11 | let arrayString: Array = ["sther", "stherzada", "stherzinha"];
12 |
13 | //Objects
14 | //transforma em opcional
15 | let pessoa: { nome: string; idade: number; adulto?: boolean } = {
16 | nome: "Stherzada",
17 | idade: 22,
18 | adulto: true,
19 | };
20 |
21 | //functions
22 |
23 | function sum(x: number, y: number) {
24 | return x + y;
25 | }
26 | const result = sum(4, 2);
27 |
28 | // function sumTwo: (x: number, y:number) => number = (x, y) => x + y;
29 |
--------------------------------------------------------------------------------
/src/Aula 02 - Type Any/Aula02.ts:
--------------------------------------------------------------------------------
1 | // NOT USED ANY!!!!!!!!
2 |
3 | function showMessage(msg: any) {
4 | return msg;
5 | }
6 |
7 | console.log(showMessage([1, 2, 3]));
8 | console.log(showMessage("Hello"));
9 | console.log(showMessage(22));
10 |
--------------------------------------------------------------------------------
/src/Aula 03 - Type Void/Aula03.ts:
--------------------------------------------------------------------------------
1 | function semRetorno(...args: string[]): void {
2 | console.log(args.join(" "));
3 | }
4 |
5 | // void é está em uma função quando não é para retornar nada.
6 | //um exemplo pr ase usar void é que mudar o status de um botão
7 |
8 | const people = {
9 | name: "Sther",
10 | age: 18,
11 |
12 | displayName(): void {
13 | console.log(this.name + "" + this.age);
14 | },
15 | };
16 |
17 | export { people };
18 |
19 | people.displayName();
20 |
21 | semRetorno("Sther", "Zada");
22 |
--------------------------------------------------------------------------------
/src/Aula 04 - Type Object/Aula04.ts:
--------------------------------------------------------------------------------
1 | const objectA: {
2 | readonly keyA: string;
3 | readonly keyB: string;
4 | readonly keyC?: string;
5 | //index signature para poder adicionar mais coisas dentro deste objeto
6 | [key: string]: unknown;
7 | } = {
8 | keyA: "Value A",
9 | keyB: "Value B",
10 | };
11 |
12 | console.log(objectA);
13 |
--------------------------------------------------------------------------------
/src/Aula 05 - Type Array/Aula05.ts:
--------------------------------------------------------------------------------
1 | export function multipleArgs(...args: Array): number {
2 | return args.reduce((ac, valor) => ac * valor, 1);
3 | }
4 |
5 | export function concatString(...args: string[]): string {
6 | return args.reduce((ac, valor) => ac + valor);
7 | }
8 |
9 | export function toUpperCase(...args: string[]): string[] {
10 | return args.map((value) => value.toUpperCase());
11 | }
12 | const result = multipleArgs(1, 2, 3);
13 | const concat = concatString("a", "b", "c");
14 | const upper = toUpperCase("a", "b", "c");
15 | console.log(result);
16 | console.log(concat);
17 | console.log(upper);
18 |
--------------------------------------------------------------------------------
/src/Aula 06 - Type Tuple/Aula06.ts:
--------------------------------------------------------------------------------
1 | //Type tuple
2 | // ? <- sempre que tiver um deste é opcional
3 |
4 | const dataClient: [number, string] = [1, "Luiz"];
5 | const dataClient2: [number, string, string] = [1, "Luiz", "Alves"];
6 | const dataClient3: [number, string, string[]] = [
7 | 1,
8 | "Sther",
9 | ["Alves", "Stherrr"],
10 | ];
11 |
12 | console.log(dataClient3);
13 | // console.log(dataClient);
14 | // console.log(dataClient2);
15 |
16 | dataClient2[2] = "Jessica";
17 | dataClient[0] = 20;
18 | dataClient[1] = "Stherzada";
19 |
20 | // console.log(dataClient2);
21 | // console.log(dataClient);
22 |
23 | //readonly
24 | // indica que a atribuição ao campo só pode ocorrer como parte da declaração ou em um construtor na mesma classe.
25 | const arrayOne: readonly string[] = ["STHER", "ZADA"];
26 | const arrayTwo: ReadonlyArray = ["STHER", "ZADA"];
27 |
28 | console.log(arrayOne, arrayTwo);
29 |
--------------------------------------------------------------------------------
/src/Aula 07 - Type Null and Undefined/Aula07.ts:
--------------------------------------------------------------------------------
1 | let x;
2 | if (typeof x === "undefined") x = "stherzada";
3 | console.log(x + " world");
4 |
5 | export function createPerson(
6 | firstName: string,
7 | lastName?: string
8 | ): {
9 | firstName: string;
10 | lastName?: string;
11 | } {
12 | return {
13 | firstName,
14 | lastName,
15 | };
16 | }
17 |
18 | export function squareOf(x: unknown) {
19 | if (typeof x === "number") return x * x;
20 | return null;
21 | }
22 |
23 | const squareOfTwoNumber = squareOf(2);
24 |
25 | if (squareOfTwoNumber === null) {
26 | console.log("invalid data");
27 | } else {
28 | console.log(squareOfTwoNumber * 100);
29 | }
30 |
--------------------------------------------------------------------------------
/src/Aula 08 - Type Never/Aula 08.ts:
--------------------------------------------------------------------------------
1 | export function createError(): never {
2 | throw new Error("Error 404");
3 | }
4 |
5 | createError();
6 |
--------------------------------------------------------------------------------
/src/Aula 09 - Type Enum/Aula09.ts:
--------------------------------------------------------------------------------
1 | //estrutura de dados não ordenada e você poder ordenar colocando vários tipos de coisas
2 |
3 | enum Colors {
4 | Red = 16,
5 | Blue = 15,
6 | Yellow = 18,
7 | Purple = "Purple",
8 | Green = 304,
9 | Pink,
10 | }
11 |
12 | enum Colors {
13 | Black = "Black",
14 | }
15 |
16 | // console.log(Colors);
17 |
18 | //quando escrevo o nome do campo ele me retorna o valor da posição de onde ele está
19 | console.log(Colors.Blue);
20 |
21 | //quando escrevo a posição, ele irá me retornar o valor do campo de onde ele está
22 | console.log(Colors[15]);
23 |
24 | // console.log(Colors.Purple);
25 |
26 | export function choiceColors(color: Colors): void {
27 | console.log(Colors[color]);
28 | }
29 |
30 | choiceColors(Colors.Yellow);
31 |
--------------------------------------------------------------------------------
/src/Aula 10 - Type Unknown/Aula10.ts:
--------------------------------------------------------------------------------
1 | //unknown é um type mais seguro que o any e seria o pai para todos os outros tipos
2 | let x: unknown;
3 |
4 | x = 100;
5 | x = "Luiz";
6 | x = 900;
7 | x = true;
8 | x = 10;
9 | const y = 100;
10 |
11 | if (typeof x === "number") console.log(x * y);
12 |
13 | // a diferença entre o any e unknown é a checagem de type, que é necessária antes de atribuir um valor
14 |
--------------------------------------------------------------------------------
/src/Aula 11 - Union Types/Aula11.ts:
--------------------------------------------------------------------------------
1 | function addOrConcat(a: number | string, b: number | string): number | string {
2 | if (typeof a === "number" && b === "number") return a + b;
3 | return `${a}${b}`;
4 | }
5 |
6 | console.log(addOrConcat(10, 290));
7 | console.log(addOrConcat("10", "290"));
8 |
9 | console.log(addOrConcat(10, "290"));
10 | console.log(addOrConcat("10", 290));
11 |
--------------------------------------------------------------------------------
/src/Aula 12 - Tipos Literais/Aula12.ts:
--------------------------------------------------------------------------------
1 | let x = 10; //eslint-disable-line
2 | x = 239090320932;
3 | const y = 10;
4 |
5 | let a = 100 as const;
6 |
7 | const person = {
8 | name: "Sther" as const,
9 | lastName: "Zada",
10 | };
11 |
12 | function choiceColors(color: "Red" | "Yellow" | "Blue") {
13 | return color;
14 | }
15 | console.log(choiceColors("Yellow"));
16 |
17 | //Module mode
18 | export default 1;
19 |
--------------------------------------------------------------------------------
/src/Aula 13 - Type Alias/Aula13.ts:
--------------------------------------------------------------------------------
1 | type Age = number;
2 | type Person = {
3 | name: string;
4 | age: Age;
5 | salary: number;
6 | favoriteColor?: string;
7 | };
8 |
9 | type ColorRGB = "Red" | "Green" | "Blue";
10 | type ColorCMYK = "Cyan" | "Magenta" | "Yellow" | "Black";
11 | type favoriteColor = ColorRGB | ColorCMYK;
12 |
13 | const person: Person = {
14 | age: 22,
15 | name: "Sther",
16 | salary: 20000,
17 | };
18 |
19 | export function setFavoriteColor(person: Person, color: favoriteColor): Person {
20 | return { ...person, favoriteColor: color };
21 | }
22 |
23 | console.log(setFavoriteColor(person, "Magenta"));
24 | console.log(person);
25 |
--------------------------------------------------------------------------------
/src/Aula 14 - Intersection Types/Aula14.ts:
--------------------------------------------------------------------------------
1 | //intersection é menos utilizado
2 |
3 | type HaveName = { name: string };
4 | type HaveLastName = { lastname: string };
5 | type HaveAge = { age: number };
6 |
7 | // type Person = HaveName HaveLastName | HaveAge;
8 | // nesse caso ele só precisa de um elemento dentro desse objeto para funcionar e não necessariamente de todos e
9 |
10 | type Person = HaveName & HaveLastName & HaveAge;
11 | //quando se coloca & é necessário ter TODOS os elementos dentro do objeto
12 |
13 | // type AB = "A" | "B";
14 | // type AC = "A" | "C";
15 | // type Intercession = AB & AC;
16 |
17 | const person: Person = {
18 | name: "Sther",
19 | lastname: "Zada",
20 | age: 22,
21 | };
22 |
23 | console.log(person);
24 |
25 | //Module mode
26 | export { person };
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/Aula 15 - Function types/Aula15.ts:
--------------------------------------------------------------------------------
1 | type mapStringsCallBack = (item: string) => string;
2 | //pra saber o retorno do que irá vir na função
3 |
4 | export function mapStrings(
5 | array: string[],
6 | callbackfn: mapStringsCallBack
7 | ): string[] {
8 | const newArray: string[] = [];
9 |
10 | for (let i = 0; i < array.length; i++) {
11 | newArray.push(callbackfn(array[i]));
12 | }
13 |
14 | return newArray;
15 | }
16 |
17 | const abc = ["a", "b", "c"];
18 | const abcMapped = mapStrings(abc, (item) => item.toUpperCase());
19 | console.log(abc);
20 | console.log(abcMapped);
21 |
--------------------------------------------------------------------------------
/src/Aula 16 - Structural/Aula16.ts:
--------------------------------------------------------------------------------
1 | //tipagem estruturada
2 | //eu preciso de um objeto que cumpra regras q o "type" tem
3 |
4 | type VerifuUserFn = (user: User, sentValues: User) => boolean;
5 |
6 | type User = { username: string; password: string };
7 |
8 | const verifyUser: VerifuUserFn = (user, sentValues) => {
9 | return (
10 | user.username === sentValues.username &&
11 | user.password === sentValues.password
12 | );
13 | };
14 |
15 | const bdUser = { username: "sther", password: "32a1" };
16 | const sentUser = { username: "sther", password: "32a1", permissions: "" };
17 |
18 | const loggedIn = verifyUser(bdUser, sentUser);
19 |
20 | console.log(loggedIn);
21 |
--------------------------------------------------------------------------------
/src/Aula 17 - Type Assertions/Aula17.ts:
--------------------------------------------------------------------------------
1 | /* Recommend*/
2 |
3 | // Condicional
4 | const body = document.querySelector("body");
5 | if (body) body.style.background = "red";
6 |
7 | // type assertion
8 | const body3 = document.querySelector("body") as HTMLBodyElement;
9 | if (body3) body3.style.background = "red";
10 |
11 | //HTMLBodyElement
12 | const input = document.querySelector(".input") as HTMLInputElement;
13 | input.value = "ROI";
14 | input.focus();
15 |
16 | /*Non Recommend*/
17 |
18 | //non - nul assertions (!)
19 | const body2 = document.querySelector("body")!; //esse objeto não pode ser nulo quando se coloca a !
20 | body2.style.background = "red";
21 |
--------------------------------------------------------------------------------
/src/Aula 18 - WebPack/index.ts:
--------------------------------------------------------------------------------
1 | import funcao from "./mod";
2 | funcao();
3 |
--------------------------------------------------------------------------------
/src/Aula 18 - WebPack/mod.ts:
--------------------------------------------------------------------------------
1 | export default (): void => {
2 | console.log("Sou o modúlo");
3 | };
4 |
--------------------------------------------------------------------------------
/src/Aula 19 - Workout/Aula19.ts:
--------------------------------------------------------------------------------
1 | // import "./form-control";
2 | import "../Aula 33 - Interfaces e Classes/index";
3 |
--------------------------------------------------------------------------------
/src/Aula 19 - Workout/form-control.ts:
--------------------------------------------------------------------------------
1 | import isEmail from "validator/lib/isEmail";
2 |
3 | const SHOW_ERROR_MESSAGES = "show-error-message";
4 |
5 | const form = document.querySelector(".form") as HTMLFormElement;
6 | const username = document.querySelector(".username") as HTMLInputElement;
7 | const email = document.querySelector(".email") as HTMLInputElement;
8 | const password = document.querySelector(".password") as HTMLInputElement;
9 | const password2 = document.querySelector(".password2") as HTMLInputElement;
10 |
11 | form.addEventListener("submit", function (event) {
12 | event.preventDefault();
13 | hideErrorMessages(this);
14 | checkForEmptyFields(username, email, password, password2);
15 | checkEmail(email);
16 | checkEqualPasswords(password, password2);
17 | });
18 |
19 | function checkForEmptyFields(...inputs: HTMLInputElement[]): void {
20 | inputs.forEach((input) => {
21 | if (!input.value) showErrorMessage(input, "Campo não pode estar vazio");
22 | });
23 | }
24 |
25 | function hideErrorMessages(form: HTMLFormElement): void {
26 | // SÓ INTERA DENTRO DO PRÓPRIO ARRAY
27 | form.querySelectorAll("." + SHOW_ERROR_MESSAGES).forEach((item) =>
28 | item.classList.remove(SHOW_ERROR_MESSAGES)
29 | );
30 | }
31 | function showErrorMessage(input: HTMLInputElement, msg: string): void {
32 | const formFields = document.querySelector(".form-fields") as HTMLDivElement;
33 | const errorMessage = formFields.querySelector(
34 | ".error-message"
35 | ) as HTMLSpanElement;
36 | errorMessage.innerText = msg;
37 | formFields.classList.add(SHOW_ERROR_MESSAGES);
38 | }
39 |
40 | function checkEmail(input: HTMLInputElement): void {
41 | if (!isEmail(input.value)) showErrorMessage(input, "Email inválido");
42 | }
43 |
44 | function checkEqualPasswords(
45 | password: HTMLInputElement,
46 | password2: HTMLInputElement
47 | ) {
48 | if (password.value !== password2.value) {
49 | showErrorMessage(password, "Senhas não batem");
50 | showErrorMessage(password2, "Senhas não batem");
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/Aula 20 - Classes/Aula20.ts:
--------------------------------------------------------------------------------
1 | // forma longa
2 | export class Enterprise {
3 | public readonly name: string; // public é opcional
4 | protected readonly cnpj: string;
5 | //atributo da classe que é readonly e não o array
6 | private readonly collaborators: Collaborators[] = [];
7 |
8 | constructor(name: string, cnpj: string) {
9 | this.name = name;
10 | this.cnpj = cnpj;
11 | }
12 |
13 | public addColaborator(collaborators: Collaborators): void {
14 | this.collaborators.push(collaborators);
15 | }
16 |
17 | public displayColaborator(): void {
18 | for (const collaborators of this.collaborators) {
19 | console.log(collaborators);
20 | }
21 | }
22 | }
23 |
24 | // forma curta
25 | export class Collaborators {
26 | constructor(
27 | //funciona tanto valor qnt tipo
28 | public readonly name: string,
29 | public readonly lastname: string
30 | ) {}
31 | }
32 |
33 | const enterprise1 = new Enterprise("Twitch", "11.111.111/0001-11");
34 | const collaborators1 = new Collaborators("Sther", "Zada");
35 | const collaborators2 = new Collaborators("Luiz", "Bana");
36 | const collaborators3 = new Collaborators("Maria", "Souza");
37 |
38 | enterprise1.addColaborator(collaborators1);
39 | enterprise1.addColaborator(collaborators2);
40 | enterprise1.addColaborator(collaborators3);
41 |
42 | //Se um objeto tem as chaves de outro objeto não kliga
43 | enterprise1.addColaborator({
44 | name: "Random",
45 | lastname: "AAAA",
46 | });
47 |
48 | // enterprise1.name = "Facebook";
49 | // não vai deixar até atribuir pq já foi adicionado um valor e ele está com a propiedade de só ler
50 |
51 | console.log(enterprise1);
52 | console.log(enterprise1.name);
53 |
54 | enterprise1.displayColaborator();
55 |
--------------------------------------------------------------------------------
/src/Aula 21 - Modificadores/Aula21.ts:
--------------------------------------------------------------------------------
1 | export class Enterprise {
2 | //
3 | public readonly name: string;
4 |
5 | protected readonly cnpj: string;
6 | private readonly collaborators: Collaborators[] = [];
7 | constructor(name: string, cnpj: string) {
8 | this.name = name;
9 | this.cnpj = cnpj;
10 | }
11 |
12 | //disponibilizada métodos que poderan alterar essa classe
13 | public addColaborator(collaborators: Collaborators): void {
14 | this.collaborators.push(collaborators);
15 | }
16 | public displayColaborator(): void {
17 | for (const collaborators of this.collaborators) {
18 | console.log(collaborators);
19 | }
20 | }
21 |
22 | public getName(): string {
23 | return this.name;
24 | }
25 | }
26 |
27 | export class Collaborators {
28 | constructor(
29 | public readonly name: string,
30 | public readonly lastname: string
31 | ) {}
32 | }
33 |
34 | const enterprise1 = new Enterprise("Twitch", "11.111.111/0001-11");
35 | console.log(enterprise1.getName(), enterprise1.name);
36 |
--------------------------------------------------------------------------------
/src/Aula 22 - Herança/Aula22.ts:
--------------------------------------------------------------------------------
1 | export abstract class Person {
2 | public readonly name: string;
3 | public readonly lastname: string;
4 | private readonly age: number;
5 | protected readonly cpf: string;
6 |
7 | constructor(name: string, lastname: string, age: number, cpf: string) {
8 | this.name = name;
9 | this.lastname = lastname;
10 | this.age = age;
11 | this.cpf = cpf;
12 | }
13 |
14 | getAge(): number {
15 | return this.age;
16 | }
17 | getCpf(): string {
18 | return this.cpf;
19 | }
20 | getName(): string {
21 | return `${this.name} ${this.lastname}`;
22 | }
23 | }
24 |
25 | export class Student extends Person {
26 | getName(): string {
27 | console.log("testando algo");
28 | const result = super.getName();
29 | return result + " Heeeeeyyyyyy";
30 | }
31 | }
32 | export class Client extends Person {
33 | getName(): string {
34 | return `This come from the client ${this.name} ${this.lastname}`;
35 | }
36 | }
37 |
38 | //polimorfismo é sobreescrever os métodos tendo assim formas diferentes de objetos
39 | const student = new Student("Sther", "Zada", 60, "000.000.000-00");
40 | const client = new Client("Sther", "Zada", 60, "000.000.000-00");
41 | // const person = new Person("Sther", "Zada", 60, "000.000.000-00");
42 |
43 | console.log(student.getName());
44 | console.log(client.getName());
45 |
46 | // console.log(person);
47 | // não depender de classes concretas, why????? pesquisar
48 |
--------------------------------------------------------------------------------
/src/Aula 23 - Protected/Aula23.ts:
--------------------------------------------------------------------------------
1 | export class Enterprise {
2 | public readonly name: string;
3 | protected readonly cnpj: string;
4 | protected readonly collaborators: Collaborators[] = [];
5 |
6 | constructor(name: string, cnpj: string) {
7 | this.name = name;
8 | this.cnpj = cnpj;
9 | }
10 |
11 | public addColaborator(collaborators: Collaborators): void {
12 | this.collaborators.push(collaborators);
13 | }
14 | public displayColaborator(): void {
15 | for (const collaborators of this.collaborators) {
16 | console.log(collaborators);
17 | }
18 | }
19 | }
20 |
21 | export class Twitch extends Enterprise {
22 | constructor() {
23 | super("Twitch", "00.000.000/0000-00");
24 | }
25 |
26 | popCollaborators(): Collaborators | null {
27 | const collaborators = this.collaborators.pop();
28 | if (collaborators) return collaborators;
29 | return null;
30 | }
31 | }
32 | export class Collaborators {
33 | constructor(
34 | public readonly name: string,
35 | public readonly lastname: string
36 | ) {}
37 | }
38 |
39 | const enterprise1 = new Twitch();
40 | const collaborators1 = new Collaborators("Sther", "zada");
41 | const collaborators2 = new Collaborators("Luiz", "Otavio");
42 | const collaborators3 = new Collaborators("Sther", "zada");
43 | enterprise1.addColaborator(collaborators1);
44 | enterprise1.addColaborator(collaborators2);
45 | enterprise1.addColaborator(collaborators3);
46 | console.log(enterprise1.name);
47 | console.log(enterprise1);
48 |
49 | const removeCollaborator = enterprise1.popCollaborators();
50 | console.log(removeCollaborator);
51 | console.log(enterprise1);
52 |
--------------------------------------------------------------------------------
/src/Aula 24 - Get e Set/Aula24.ts:
--------------------------------------------------------------------------------
1 | export class Person {
2 | public name: string;
3 | public lastname: string;
4 | private _age: number;
5 | protected _cpf: string;
6 | constructor(name: string, lastname: string, age: number, cpf: string) {
7 | this.name = name;
8 | this.lastname = lastname;
9 | this._age = age;
10 | this._cpf = cpf;
11 | }
12 |
13 | public get age(): number {
14 | return this._age;
15 | }
16 |
17 | public set cpf(value: string) {
18 | this._cpf = value;
19 | }
20 | public get cpf(): string {
21 | return this._cpf.replace(/\D/g, "");
22 | }
23 |
24 | getName(): string {
25 | return `${this.name} ${this.lastname}`;
26 | }
27 | }
28 |
29 | const person = new Person("Sther", "Zada", 60, "560.000.000-00");
30 | console.log(person.age);
31 |
32 | person.cpf = "123.535.534-11";
33 | console.log(person.cpf);
34 |
--------------------------------------------------------------------------------
/src/Aula 25 - Atributo e métodos estáticos/Aula25.ts:
--------------------------------------------------------------------------------
1 | export class Person {
2 | static agePattern = 0;
3 | static cpfPattern = "000.000.000-00";
4 | public name: string;
5 | public lastname: string;
6 | public _age: number;
7 | private _cpf: string;
8 | constructor(name: string, lastname: string, age: number, cpf: string) {
9 | this.name = name;
10 | this.lastname = lastname;
11 | this._age = age;
12 | this._cpf = cpf;
13 | }
14 |
15 | //chamando o método pela instancia
16 | methodNormal(): void {
17 | console.log(Person.agePattern, Person.cpfPattern);
18 | }
19 |
20 | static createPerson(name: string, lastname: string): Person {
21 | return new Person(name, lastname, Person.agePattern, Person.cpfPattern);
22 | }
23 | }
24 |
25 | const person1 = new Person("Sther", "Zada", 60, "560.000.000-00");
26 | const person2 = Person.createPerson("Lucas", "Souza");
27 | console.log(person1);
28 | console.log(person2);
29 |
30 | person1.methodNormal();
31 | console.log(Person.agePattern, Person.cpfPattern);
32 |
--------------------------------------------------------------------------------
/src/Aula 26 - Construtor privado e singleton/Aula26.ts:
--------------------------------------------------------------------------------
1 | //singleton - GoF | Factory Method - GoF
2 |
3 | export class DataBase {
4 | private static database: DataBase;
5 | private host: string;
6 | private user: string;
7 | private password: string;
8 |
9 | private constructor(host: string, user: string, password: string) {
10 | this.host = host;
11 | this.user = user;
12 | this.password = password;
13 | }
14 |
15 | connect(): void {
16 | console.log(`Connect: ${this.host} ${this.user} ${this.password}`);
17 | }
18 |
19 | //criado nossa instância
20 | static getDatabase(host: string, user: string, password: string): DataBase {
21 | if (DataBase.database) {
22 | console.log("This is my instance");
23 | return DataBase.database;
24 | }
25 | DataBase.database = new DataBase(host, user, password);
26 | return DataBase.database;
27 | }
28 | }
29 |
30 | const database1 = DataBase.getDatabase("localhost", "rest", "123342");
31 | database1.connect();
32 |
33 | const database2 = DataBase.getDatabase("localhost", "rest", "123342");
34 | database2.connect();
35 |
36 | const database3 = DataBase.getDatabase("localhost", "rest", "123342");
37 | database3.connect();
38 |
39 | const database4 = DataBase.getDatabase("localhost", "rest", "123342");
40 | database3.connect();
41 |
42 | console.log(database1 === database2);
43 |
--------------------------------------------------------------------------------
/src/Aula 27 - Classes, métodos e atributos abstratos/Aula27.ts:
--------------------------------------------------------------------------------
1 | export abstract class Character {
2 | protected abstract emoji: string;
3 |
4 | protected name: string;
5 | protected attack: number;
6 | protected life: number;
7 | constructor(name: string, attack: number, life: number) {
8 | this.name = name;
9 | this.attack = attack;
10 | this.life = life;
11 | }
12 |
13 | attackSeveral(character: Character): void {
14 | this.speak();
15 | console.log(`${this.name} is attacking`);
16 | character.loseLife(this.attack);
17 | }
18 |
19 | //vai dar dano e tirar a vida de acordo.
20 | loseLife(forceAttack: number): void {
21 | this.life -= forceAttack;
22 | console.log(`${this.emoji} ${this.name} now it had ${this.life} life`);
23 | }
24 |
25 | abstract speak(): void;
26 | }
27 |
28 | class Warrior extends Character {
29 | protected emoji = "\u{1F9DD}";
30 | speak(): void {
31 | console.log(this.emoji + " SAIIIIIIIIIIIIIIIIAAAAAAA MONSTRO");
32 | }
33 | }
34 |
35 | class Monster extends Character {
36 | protected emoji = "\u{1f9df}";
37 | speak(): void {
38 | console.log(this.emoji + " AAAAAAAAARGGGGGGGGGHHHHHHHHHHHHHHH");
39 | }
40 | }
41 |
42 | const warrior = new Warrior("Stherzada", 20, 1000);
43 | const monster = new Monster("Junin", 10, 200);
44 |
45 | warrior.attackSeveral(monster);
46 | monster.attackSeveral(warrior);
47 | warrior.attackSeveral(monster);
48 |
--------------------------------------------------------------------------------
/src/Aula 28 - Associação entre classes/Aula28.ts:
--------------------------------------------------------------------------------
1 | //associação
2 | export class Author {
3 | private _name: string;
4 | // é uma associação fraca esse tipo de coisa
5 | private _tools: Tools | null = null;
6 |
7 | constructor(name: string) {
8 | this._name = name;
9 | }
10 | get name(): string {
11 | return this._name;
12 | }
13 | get tools(): Tools | null {
14 | return this._tools;
15 | }
16 | set tools(tools: Tools) {
17 | this._tools = tools;
18 | }
19 |
20 | write(): void {
21 | if (this.tools === null) {
22 | console.log("Não posso escrever sem a ferramenta");
23 | return;
24 | }
25 | this.tools.write();
26 | }
27 | }
28 |
29 | export abstract class Tools {
30 | private _name: string;
31 | constructor(name: string) {
32 | this._name = name;
33 | }
34 | abstract write(): void;
35 | get name(): string {
36 | return this._name;
37 | }
38 | }
39 |
40 | export class Pen extends Tools {
41 | write(): void {
42 | console.log(`${this.name} writing...`);
43 | }
44 | }
45 |
46 | export class TypeWriter extends Tools {
47 | write(): void {
48 | console.log(`${this.name} typing...`);
49 | }
50 | }
51 |
52 | const author = new Author("Sther");
53 | const pen = new Pen("Bic");
54 | const typeWriter = new TypeWriter("Phone");
55 |
56 | // console.log(author.name);
57 | // console.log(pen.name);
58 | // console.log(typeWriter.name);
59 |
60 | author.tools = typeWriter;
61 | author.write();
62 |
--------------------------------------------------------------------------------
/src/Aula 29 - Dependency Inversion/Aula29.ts:
--------------------------------------------------------------------------------
1 | //As classes abstratas e interfaces, me permitem fazer a inversão da dependência. Em vez dele depender da caneta ele depende de um contrato, que neste caso seria a ferramenta. Isso se chama INVERSÃO DE DEPENDÊNCIA!
2 |
--------------------------------------------------------------------------------
/src/Aula 30 - Agregação entre classes/Aula30.ts:
--------------------------------------------------------------------------------
1 | export class ShoppingCart {
2 | private readonly product: Product[] = [];
3 |
4 | insertProduct(...products: Product[]): void {
5 | for (const product of products) {
6 | this.product.push(product);
7 | }
8 | }
9 |
10 | amountProducts(): number {
11 | return this.product.length;
12 | }
13 |
14 | totalProducts(): number {
15 | // vai somar o preço dos produtos do carrinho
16 | return this.product.reduce((soma, product) => soma + product.price, 0);
17 | }
18 | }
19 |
20 | export class Product {
21 | name: string;
22 | public price: number;
23 | constructor(name: string, price: number) {
24 | this.name = name;
25 | this.price = price;
26 | }
27 | }
28 |
29 | const product1 = new Product("Shirt", 89.9);
30 | const product2 = new Product("Shorts", 55.7);
31 | const product3 = new Product("Pen", 0.7);
32 |
33 | console.log(product2);
34 |
35 | const shoppingCart = new ShoppingCart();
36 |
37 | shoppingCart.insertProduct(product1, product2, product3);
38 |
39 | console.log(shoppingCart);
40 |
41 | console.log(shoppingCart.amountProducts());
42 | console.log(shoppingCart.totalProducts());
43 |
--------------------------------------------------------------------------------
/src/Aula 31 - Composição/Aula31.ts:
--------------------------------------------------------------------------------
1 | export class Car {
2 | private readonly engine = new Engine();
3 |
4 | turnOn(): void {
5 | this.engine.turnOn();
6 | }
7 | speedUp(): void {
8 | this.engine.speedUp();
9 | }
10 | stop(): void {
11 | this.engine.stop();
12 | }
13 | turnOff(): void {
14 | this.engine.turnOff();
15 | }
16 | }
17 |
18 | export class Engine {
19 | turnOn(): void {
20 | console.log("vrum vrum vrum");
21 | }
22 | speedUp(): void {
23 | console.log("vruuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuum");
24 | }
25 | stop(): void {
26 | console.log("vrummm ᴠʀᴜᴍ ᵛʳᵘᵐ ");
27 | }
28 | turnOff(): void {
29 | console.log("turum....");
30 | }
31 | }
32 |
33 | const car = new Car();
34 |
35 | car.speedUp();
36 |
--------------------------------------------------------------------------------
/src/Aula 32 - Type Alias em Classes/Aula32.ts:
--------------------------------------------------------------------------------
1 | type TypePerson = {
2 | name: string;
3 | lastname: string;
4 | fullName: () => string;
5 | };
6 |
7 | interface TypeTest {
8 | name: string;
9 | lastname: string;
10 | fullName: () => string;
11 | }
12 |
13 | //não tem uma herança ocorrendo por aqui
14 | class Person implements TypePerson {
15 | public name: string;
16 | public lastname: string;
17 |
18 | constructor(name: string, lastname: string) {
19 | this.name = name;
20 | this.lastname = lastname;
21 | }
22 |
23 | fullName(): string {
24 | return this.name + " " + this.lastname;
25 | }
26 | }
27 |
28 | const person = new Person("Sther", "Alves");
29 | console.log(person.fullName());
30 |
--------------------------------------------------------------------------------
/src/Aula 33 - Interfaces e Classes/index.ts:
--------------------------------------------------------------------------------
1 | type VideoPlayerElements = {
2 | videoPlayer: HTMLVideoElement;
3 | playButton: HTMLButtonElement;
4 | stopButton: HTMLButtonElement;
5 | };
6 |
7 | interface VideoPlayerProtocol {
8 | playToogle(): void;
9 | stop(): void;
10 | initialEvent(): void;
11 | }
12 |
13 | export default class VideoPlayer implements VideoPlayerProtocol {
14 | private videoPlayer: HTMLVideoElement;
15 | private playButton: HTMLButtonElement;
16 | private stopButton: HTMLButtonElement;
17 |
18 | constructor(videoPlayerElements: VideoPlayerElements) {
19 | this.videoPlayer = videoPlayerElements.videoPlayer;
20 | this.playButton = videoPlayerElements.playButton;
21 | this.stopButton = videoPlayerElements.stopButton;
22 | }
23 |
24 | playToogle(): void {
25 | if (this.videoPlayer.paused) {
26 | this.videoPlayer.play();
27 | this.playButton.innerText = "Pause";
28 | } else {
29 | this.videoPlayer.pause();
30 | this.playButton.innerText = "Play";
31 | }
32 | }
33 | stop(): void {
34 | //
35 | }
36 | initialEvent(): void {
37 | // se eu passar uma function dentro de uma class do add event, ele passa a ser o botão
38 | this.playButton.addEventListener("click", () => {
39 | this.playToogle();
40 | });
41 |
42 | this.stopButton.addEventListener("click", () => {
43 | this.videoPlayer.pause();
44 | this.videoPlayer.currentTime = 0;
45 | this.playButton.innerText = "Play";
46 | });
47 | }
48 | }
49 |
50 | const videoPlayer = new VideoPlayer({
51 | videoPlayer: document.querySelector(".video") as HTMLVideoElement,
52 | playButton: document.querySelector(".play") as HTMLButtonElement,
53 | stopButton: document.querySelector(".stop") as HTMLButtonElement,
54 | });
55 |
56 | videoPlayer.initialEvent();
57 |
--------------------------------------------------------------------------------
/src/Aula 34 - Declaration merging/Aula34.ts:
--------------------------------------------------------------------------------
1 | export default interface Person {
2 | name: string;
3 | }
4 | export default interface Person {
5 | lastname: string;
6 | }
7 | export default interface Person {
8 | andress: readonly string[];
9 | }
10 | export default interface Person {
11 | age: number;
12 | }
13 | const person: Person = {
14 | name: "Sther",
15 | lastname: "Alves",
16 | andress: ["AAAAAA"],
17 | age: 23,
18 | };
19 |
20 | person.age = 32;
21 | console.log(person);
22 |
--------------------------------------------------------------------------------
/src/Aula 35 - Type Guard/Aula35.ts:
--------------------------------------------------------------------------------
1 | export function add(a: unknown, b: unknown) {
2 | return typeof a === "number" && typeof b === "number" ? a + b : `${a}${b}`;
3 | }
4 |
5 | console.log(add(2, 4));
6 | console.log(add("a", "b"));
7 |
8 | type Person = {
9 | tipo: "person";
10 | name: string;
11 | };
12 |
13 | type Animal = { tipo: "animal"; color: string };
14 |
15 | type PersonOrAnimal = Person | Animal;
16 |
17 | class Student implements Person {
18 | tipo: "person" = "person";
19 | name: string;
20 |
21 | constructor(name: string) {
22 | this.name = name;
23 | }
24 | }
25 |
26 | function displayName(obj: PersonOrAnimal): void {
27 | // if ("name" in obj) console.log(obj.name);
28 | // //refinação de tipos
29 | // if (obj instanceof Student) console.log(obj.name);
30 | switch (obj.tipo) {
31 | case "person":
32 | console.log(obj.name);
33 | return;
34 | case "animal":
35 | console.log("this is a animal", obj.color);
36 | return;
37 | }
38 | }
39 |
40 | displayName(new Student("Sther"));
41 | displayName({ tipo: "animal", color: "Pink" });
42 |
--------------------------------------------------------------------------------
/src/Aula 36 - Keyof e typeof/Aula36.ts:
--------------------------------------------------------------------------------
1 | type ColorObj = typeof colorObj;
2 | type ColorKey = keyof ColorObj;
3 |
4 | const colorObj = {
5 | vermelho: "red",
6 | verde: "green",
7 | azul: "blue",
8 | roxo: "purple",
9 | };
10 |
11 | function translateColor(color: ColorKey, colors: typeof colorObj) {
12 | return colors[color];
13 | }
14 |
15 | console.log(translateColor("vermelho", colorObj));
16 | console.log(translateColor("verde", colorObj));
17 |
--------------------------------------------------------------------------------
/src/Aula 37 - Usando chaves de tipos/Aula37.ts:
--------------------------------------------------------------------------------
1 | type Vehicle = {
2 | brand: string;
3 | year: number;
4 | };
5 |
6 | type Car = {
7 | brand_: Vehicle["brand"];
8 | year_: Vehicle["year"];
9 | name: string;
10 | };
11 |
12 | const car: Car = {
13 | brand_: "Ford",
14 | year_: 2077,
15 | name: "Cyberpunk",
16 | };
17 |
18 | console.log(car);
19 |
--------------------------------------------------------------------------------
/src/Aula 38 - Usando this como tipo/Aula38.ts:
--------------------------------------------------------------------------------
1 | export class Calculator {
2 | constructor(public numero: number) {}
3 |
4 | add(n: number): this {
5 | this.numero += n;
6 | return this;
7 | }
8 | sub(n: number): this {
9 | this.numero -= n;
10 | return this;
11 | }
12 |
13 | div(n: number): this {
14 | this.numero /= n;
15 | return this;
16 | }
17 |
18 | mul(n: number): this {
19 | this.numero *= n;
20 | return this;
21 | }
22 | }
23 |
24 | export class SubCalculator extends Calculator {
25 | pow(n: number): this {
26 | this.numero **= n;
27 | return this;
28 | }
29 | }
30 |
31 | const calculator = new SubCalculator(10);
32 |
33 | calculator.add(5).mul(2).div(2).pow(2);
34 | console.log(calculator);
35 |
36 | //Buider - Gof
37 |
38 | export class RequestBuilder {
39 | private method: "get" | "post" | null = null;
40 | private url: string | null = null;
41 |
42 | setMethod(method: "get" | "post"): this {
43 | this.method = method;
44 | return this;
45 | }
46 | setUrl(url: string): this {
47 | this.url = url;
48 | return this;
49 | }
50 |
51 | send(): void {
52 | console.log(`Enviando dados via ${this.method} para ${this.url}`);
53 | }
54 | }
55 |
56 | const request = new RequestBuilder();
57 |
58 | request.setUrl("http://www.google.com").setMethod("post").send();
59 |
--------------------------------------------------------------------------------
/src/Aula 39 - Overload/Aula39.ts:
--------------------------------------------------------------------------------
1 | type Adder = {
2 | (x: number): number;
3 | (x: number, y: number): number;
4 | (...arg: number[]): number;
5 | };
6 |
7 | const adder: Adder = (x: number, y?: number, ...args: number[]) => {
8 | if (args.length > 0) return args.reduce((s, v) => s + v, 0) + x + (y || 0);
9 | return x + (y || 0);
10 | };
11 |
12 | console.log(adder(1));
13 |
14 | console.log(adder(1, 2));
15 |
--------------------------------------------------------------------------------
/src/Aula 40- Encadeamento opcional e operador de coalescência nula/Aula40.ts:
--------------------------------------------------------------------------------
1 | type Archive = {
2 | title: string;
3 | text: string;
4 | data?: Date;
5 | };
6 |
7 | const archive: Archive = {
8 | title: "The title",
9 | text: " The text",
10 | // data: new Date(),
11 | };
12 |
13 | // o operador de coalescenência só verificar isso quando por nullable ou undefined
14 | console.log(archive.data?.toDateString() ?? "EITAH, don't have a date");
15 | console.log(undefined ?? "2-EITAH, don't have a date");
16 | console.log(null ?? "3-EITAH, don't have a date");
17 | console.log(false ?? "EITAH, don't have a date");
18 | console.log(0 ?? "EITAH, don't have a date");
19 | console.log("_" ?? "EITAH, don't have a date");
20 |
--------------------------------------------------------------------------------
/src/Aula 41 - Types generics/Aula41.ts:
--------------------------------------------------------------------------------
1 | //como fazer um filtro original
2 | type FilterCallback = (value: U, index?: number, array?: U[]) => boolean;
3 |
4 | function myFilter(array: T[], callbackfn: FilterCallback): T[] {
5 | const newArray = [];
6 |
7 | for (let i = 0; i < array.length; i++) {
8 | if (callbackfn(array[i])) {
9 | newArray.push(array[i]);
10 | }
11 | }
12 |
13 | return newArray;
14 | }
15 |
16 | const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "A"];
17 |
18 | const arrayFilterOriginal = myFilter(array, (value) => {
19 | if (typeof value === "number") return value < 5;
20 | return false;
21 | });
22 |
23 | console.log(arrayFilterOriginal);
24 |
--------------------------------------------------------------------------------
/src/Aula 42 - Arrays e Promises generics/Aula42.ts:
--------------------------------------------------------------------------------
1 | const arrayNumeros: Array = [1, 2, 3, 4, 5, 6];
2 |
3 | type MyType = number;
4 |
5 | async function promiseAsync() {
6 | return 1;
7 | }
8 |
9 | function myPromise(): Promise {
10 | return new Promise((resolve) => {
11 | setTimeout(() => {
12 | resolve(1);
13 | }, 1000);
14 | });
15 | }
16 |
17 | promiseAsync().then((result) => console.log(result + 1));
18 | myPromise().then((result) => console.log(result + 1));
19 |
--------------------------------------------------------------------------------
/src/Aula 43 - Interfaces e Type Alias/Aula43.ts:
--------------------------------------------------------------------------------
1 | interface PeopleProtocol {
2 | name: T;
3 | lastname: T;
4 | age: U;
5 | }
6 |
7 | const student: PeopleProtocol = {
8 | name: "Stherzada",
9 | lastname: "Linda",
10 | age: 22,
11 | };
12 |
13 | const student2: PeopleProtocol = {
14 | name: 4544,
15 | lastname: 442,
16 | age: 22,
17 | };
18 |
19 | const student3: PeopleProtocol = {
20 | name: "Sther",
21 | lastname: "Alves",
22 | age: 22,
23 | };
24 |
25 | // type ReturnSelfAsMockFetch = {
26 | // data: T;
27 | // status: number;
28 | // isFetching: boolean;
29 | // hasError: boolean;
30 | // };
31 |
32 | // function useReturnSelfAsMockFetch(data: T): ReturnSelfAsMockFetch {
33 | // //no meu exemplo eu to apenas retornando o que eu recebo, mas vc pode pensar nisso como sendo
34 | // //uma request numa api
35 | // return {
36 | // data,
37 | // status: 200,
38 | // isFetching: false,
39 | // hasError: false,
40 | // };
41 | // }
42 | // function useReturnSelfAsMockFetchAsAny(data: any) {
43 | // //no meu exemplo eu to apenas retornando o que eu recebo, mas vc pode pensar nisso como sendo
44 | // //uma request numa api
45 | // return {
46 | // data,
47 | // status: 200,
48 | // isFetching: false,
49 | // hasError: false,
50 | // };
51 | // }
52 |
53 | // type User_ = {
54 | // id: number;
55 | // name: string;
56 | // };
57 |
58 | // const mockUsers = [
59 | // {
60 | // id: 1,
61 | // name: "pepega",
62 | // },
63 | // {
64 | // id: 2,
65 | // name: "mamaco",
66 | // },
67 | // ];
68 |
69 | // const users = useReturnSelfAsMockFetch>(mockUsers);
70 |
71 | // //users.data -> vai ter o tipo Array pois informei ele como "parametro" para o generic
72 |
73 | // const users2 = useReturnSelfAsMockFetchAsAny(mockUsers as Array);
74 |
75 | // //users2.data -> vai ter o tipo any mesmo eu sabendo que é Array
76 |
77 | // const users3 = useReturnSelfAsMockFetch(mockUsers);
78 |
79 | // //users3.data vai ter o seu valor inferido pelo ts caso eu esqueça de passar o valor que T deve ter
80 |
81 | // type Company = {
82 | // id: number;
83 | // name: string;
84 | // employees: Array;
85 | // };
86 | // const mockCompanies = [
87 | // {
88 | // id: 1,
89 | // name: "Google",
90 | // employees: mockUsers,
91 | // },
92 | // {
93 | // id: 2,
94 | // name: "empresaFalida",
95 | // employees: [],
96 | // },
97 | // ];
98 |
99 | // //como minha funcao de "fetch" é generica eu consigo usar ela pra outras "requests" e vou ter o retorno
100 | // // tipado corretamente
101 | // const company = useReturnSelfAsMockFetch>(mockCompanies);
102 |
103 | // console.log(users, users2, users3);
104 |
105 | // const alfabetoComNumero = {
106 | // a: 1,
107 | // b: 2,
108 | // c: 3,
109 | // };
110 | // //alfabetoComNumero é const mas eu posso mudar o valor dos atributos dele
111 | // alfabetoComNumero.b = 4;
112 |
113 | // console.log(alfabetoComNumero.b); //4
114 |
115 | // type AlfabetoComNumero2 = {
116 | // readonly a: number;
117 | // readonly b: number;
118 | // readonly c: number;
119 | // };
120 | // const alfabetoComNumero2 = {
121 | // a: 1,
122 | // b: 2,
123 | // c: 3,
124 | // } as AlfabetoComNumero2;
125 |
126 | // // o ts reclama que n posso, porem é meio verboso pois tenho que declarar o tipo e definir a variavel com o tipo
127 | // // alfabetoComNumero2.b = 4;
128 |
129 | // const alfabetoComNumero3 = {
130 | // a: 1,
131 | // b: 2,
132 | // c: 3,
133 | // } as const;
134 |
135 | // //tudo vira readonly sem ter que definir tipo :) (passa o mouse em cima do alfabetoComNumero3 pra ver o tipo)
136 | // // alfabetoComNumero2.b = 4;
137 |
--------------------------------------------------------------------------------
/src/Aula 44 - Restrições em Generics/Aula44.ts:
--------------------------------------------------------------------------------
1 | type GetTheKey = (object: O, key: K) => O[K];
2 |
3 | const getTheKey: GetTheKey = (object, key) => object[key];
4 |
5 | const stherzada = {
6 | name: "Sther",
7 | comida: ["Lasanha", "Gnnochi"],
8 | };
9 |
10 | const comidas = getTheKey(stherzada, "comida");
11 | const names = getTheKey(stherzada, "name");
12 |
13 | console.log(comidas, names);
14 |
--------------------------------------------------------------------------------
/src/Aula 45 - Generics com classes/Aula45.ts:
--------------------------------------------------------------------------------
1 | export default class Person {
2 | constructor(
3 | public name: T,
4 | public age: U,
5 | ) {}
6 | }
7 |
8 | export class Stack {
9 | private count = 0;
10 | private elements: { [k: number]: T } = {};
11 |
12 | push(elements: T): void {
13 | this.elements[this.count] = elements;
14 | this.count++;
15 | }
16 |
17 | pop(): T | void {
18 | if (this.itsIsEmpty()) return undefined;
19 |
20 | this.count--;
21 | const element = this.elements[this.count];
22 | delete this.elements[this.count];
23 | return element;
24 | }
25 |
26 | itsIsEmpty(): boolean {
27 | return this.count === 0;
28 | }
29 |
30 | size(): number {
31 | return this.count;
32 | }
33 |
34 | showStack(): void {
35 | for (const key in this.elements) {
36 | console.log(this.elements[key]);
37 | }
38 | }
39 | }
40 |
41 | const stack = new Stack();
42 |
43 | stack.push(2);
44 | stack.push(3);
45 | stack.push(4);
46 | stack.push(5);
47 | // const element1 = stack.pop()
48 | stack.showStack();
49 |
50 | while (!stack.itsIsEmpty()) {
51 | console.log(stack.pop());
52 | }
53 |
--------------------------------------------------------------------------------
/src/Aula 46 - Generics com intersection/Aula46.ts:
--------------------------------------------------------------------------------
1 | export default function joinObjects(obj1: T, obj2: U): T & U {
2 | // return { ...obj1, ...obj2 };
3 | return Object.assign({}, obj1, obj2);
4 | }
5 |
6 | const obj1 = { key1: "value 1 " };
7 | const obj2 = { key2: "value 2 " };
8 |
9 | const unity = joinObjects(obj1, obj2);
10 |
11 | console.log(unity);
12 |
--------------------------------------------------------------------------------
/src/Aula 47 - Type Predicate/Aula47.ts:
--------------------------------------------------------------------------------
1 | export function isNumber(value: unknown): value is number {
2 | return typeof value === "number";
3 | }
4 |
5 | // console.log(isNumber("123"));
6 | // console.log(isNumber(123));
7 |
8 | export function sum(...args: T[]): number | null {
9 | const retorno = args.reduce((sum, value) => {
10 | if (isNumber(sum) && isNumber(value)) {
11 | return sum + value;
12 | }
13 | return sum;
14 | }, 0);
15 |
16 | return retorno;
17 | }
18 |
19 | console.log(sum(1, 2, 3));
20 | console.log(sum(...[1, 2, 3, "a", "b", "c"]));
21 | console.log(sum("a", "b", "c"));
22 |
--------------------------------------------------------------------------------
/src/Aula 48 - Generics padrões/Aula48.ts:
--------------------------------------------------------------------------------
1 | const object1: Record = {
2 | name: "Sthe",
3 | lastname: "Silva",
4 | age: 32,
5 | };
6 |
7 | console.log(object1);
8 |
9 | type PersonProtocol = {
10 | name?: string;
11 | lastname?: string;
12 | age?: number;
13 | };
14 |
15 | // Required = precisa ter
16 | type PersonRequired = Required;
17 | // Partial = tudo se transforma em opcional
18 | type PersonPartial = Partial;
19 | //Readonly
20 | type PersonReadonly = Readonly;
21 | //Pick = Escolha
22 | type PersonPick = Pick;
23 |
24 | const object2: PersonProtocol = {
25 | name: "Sthe",
26 | lastname: "Silva",
27 | age: 32,
28 | };
29 |
30 | console.log(object2);
31 |
32 | //EXTRACT AND EXCLUDE
33 | type ABC = "A" | "B" | "C";
34 | type CDE = "C" | "D" | "E";
35 |
36 | //computa todos os tipos e exclui o repetido
37 | type TypeExclude = Exclude;
38 |
39 | //computa e só mostra o que repete nos dois
40 | type TypeExtract = Extract;
41 |
42 | //
43 | type AccountMDB = {
44 | _id: string;
45 | name: string;
46 | age: number;
47 | lastname: string;
48 | };
49 |
50 | type AccountApi = {
51 | id: string;
52 | name: string;
53 | age: number;
54 | lastname: string;
55 | };
56 |
57 | // type AccountApi = Pick> & {
58 | // id: string;
59 | // };
60 |
61 | const accountMDB: AccountMDB = {
62 | _id: "ab34-shdhuw00223",
63 | name: "Sther",
64 | age: 34,
65 | lastname: "sther",
66 | };
67 |
68 | function mapAccount(accountMDB: AccountMDB): AccountApi {
69 | const { _id, ...accountData } = accountMDB;
70 | return { ...accountData, id: _id };
71 | }
72 |
73 | const AccountApi = mapAccount(accountMDB);
74 | console.log(AccountApi);
75 | //
76 | export default 1;
77 |
--------------------------------------------------------------------------------
/src/Aula 49 - Exercicio/Aula49.ts:
--------------------------------------------------------------------------------
1 | type VotationOption = {
2 | numberOfvotes: number;
3 | option: string;
4 | };
5 |
6 | export class Votation {
7 | private _votationOptions: VotationOption[] = [];
8 | constructor(public details: string) {}
9 |
10 | addVotationOptions(votationOptions: VotationOption): void {
11 | this._votationOptions.push(votationOptions);
12 | }
13 | vote(votationIndex: number): void {
14 | if (!this._votationOptions[votationIndex]) return;
15 | this._votationOptions[votationIndex].numberOfvotes += 1;
16 | }
17 | get votationOptions(): VotationOption[] {
18 | return this._votationOptions;
19 | }
20 | }
21 |
22 | export class VotationApp {
23 | private votations: Votation[] = [];
24 | addVotation(votation: Votation): void {
25 | this.votations.push(votation);
26 | }
27 | showVotations(): void {
28 | for (const votation of this.votations) {
29 | console.log(votation.details);
30 | for (const votationOption of votation.votationOptions) {
31 | console.log(
32 | votationOption.option,
33 | votationOption.numberOfvotes,
34 | );
35 | }
36 | }
37 | }
38 | }
39 |
40 | const votationUno = new Votation("What is your favorite programming language?");
41 | votationUno.addVotationOptions({ option: "TypeScript", numberOfvotes: 0 });
42 | votationUno.addVotationOptions({ option: "JavaScript", numberOfvotes: 0 });
43 | votationUno.addVotationOptions({ option: "Python", numberOfvotes: 0 });
44 |
45 | votationUno.vote(2);
46 | votationUno.vote(1);
47 | votationUno.vote(1);
48 | votationUno.vote(1);
49 | votationUno.vote(0);
50 | votationUno.vote(0);
51 | votationUno.vote(0);
52 | votationUno.vote(0);
53 | votationUno.vote(0);
54 |
55 | const votationApp = new VotationApp();
56 | votationApp.addVotation(votationUno);
57 |
58 | votationApp.showVotations();
59 |
--------------------------------------------------------------------------------
/src/Aula 50 - Decorator de classes no TypeScript/Aula50.ts:
--------------------------------------------------------------------------------
1 | // decorator são chamadas em determinadas partes do seu código
2 | @decorator
3 | export class Animal {
4 | constructor(
5 | public name: string,
6 | public color: string,
7 | ) {}
8 | }
9 |
10 | function decorator any>(target: T): T {
11 | return class extends target {
12 | color: string;
13 | name: string;
14 |
15 | constructor(...args: any[]) {
16 | super(...args);
17 | this.name = this.inverte(args[0]);
18 | this.color = this.inverte(args[1]);
19 | }
20 | inverte(value: string): string {
21 | return value.split("").reverse().join("");
22 | }
23 | };
24 | }
25 |
26 | const animal = new Animal("Yakki", "purple");
27 | console.log(animal);
28 |
--------------------------------------------------------------------------------
/src/Aula 51 - Class Decorator/Aula51.ts:
--------------------------------------------------------------------------------
1 | function decorator any>(target: T): T {
2 | console.log("i am your fatherrrr (lied)", target);
3 | return class extends target {
4 | cor: string;
5 | nome: string;
6 |
7 | constructor(...args: any[]) {
8 | super(...args);
9 | this.nome = this.inverte(args[0]);
10 | this.cor = this.inverte(args[1]);
11 | }
12 |
13 | inverte(valor: string): string {
14 | return valor.split("").reverse().join("");
15 | }
16 | };
17 | }
18 |
19 | @decorator
20 | export class Animal {
21 | constructor(
22 | public nome: string,
23 | public cor: string,
24 | ) {
25 | console.log("i am a big class muhahahahaha");
26 | }
27 | }
28 |
29 | const animal = new Animal("Luiz", "roxo");
30 | console.log(animal);
31 |
--------------------------------------------------------------------------------
/src/Aula 52 - Fabrica de decorator/Aula52.ts:
--------------------------------------------------------------------------------
1 | function nameAndClass(param1: string, param2: string) {
2 | //closure
3 | return function any>(target: T): T {
4 | console.log("i am your fatherrrr (lied)", target);
5 | return class extends target {
6 | cor: string;
7 | nome: string;
8 |
9 | constructor(...args: any[]) {
10 | super(...args);
11 | this.nome = this.inverte(args[0]);
12 | this.cor = this.inverte(args[1]);
13 | }
14 |
15 | inverte(valor: string): string {
16 | return (
17 | valor.split("").reverse().join("") +
18 | "" +
19 | param1 +
20 | "" +
21 | param2
22 | );
23 | }
24 | };
25 | };
26 | }
27 |
28 | @nameAndClass("value 1", "value2")
29 | export class Animal {
30 | constructor(
31 | public nome: string,
32 | public cor: string,
33 | ) {
34 | console.log("i am a big class muhahahahaha");
35 | }
36 | }
37 |
38 | const animal = new Animal("Luiz", "roxo");
39 | console.log(animal);
40 |
--------------------------------------------------------------------------------
/src/Aula 53 - Composição de decoradores/Aula 53.ts:
--------------------------------------------------------------------------------
1 | type Constructor = new (...args: any[]) => any;
2 |
3 | function nameAndClass(param1: string, param2: string) {
4 | //closure
5 | return function (target: T): T {
6 | console.log("i am your fatherrrr (lied)", target);
7 | return class extends target {
8 | cor: string;
9 | nome: string;
10 |
11 | constructor(...args: any[]) {
12 | super(...args);
13 | this.nome = this.inverte(args[0]);
14 | this.cor = this.inverte(args[1]);
15 | }
16 |
17 | inverte(valor: string): string {
18 | return (
19 | valor.split("").reverse().join("") +
20 | "" +
21 | param1 +
22 | "" +
23 | param2
24 | );
25 | }
26 | };
27 | };
28 | }
29 |
30 | function heyDecorator(target: Constructor) {
31 | console.log("HELLLLLP!");
32 | }
33 |
34 | @heyDecorator
35 | @nameAndClass("value 1", "value2")
36 | export class Animal {
37 | constructor(
38 | public nome: string,
39 | public cor: string,
40 | ) {
41 | console.log("i am a big class muhahahahaha");
42 | }
43 | }
44 |
45 | const animal = new Animal("Luiz", "roxo");
46 | console.log(animal);
47 |
--------------------------------------------------------------------------------
/src/Aula 54 - Method Decorator/Aula54.ts:
--------------------------------------------------------------------------------
1 | function decorator(
2 | classPrototype: any,
3 | propertyKey: string,
4 | descriptor: PropertyDescriptor,
5 | ): PropertyDescriptor | void {
6 | console.log(descriptor);
7 | console.log(propertyKey);
8 | console.log(classPrototype);
9 | return {
10 | value: function (...args: any[]) {
11 | return args[0].toUpperCase();
12 | },
13 | };
14 | }
15 | export class OnePeople {
16 | name: string;
17 | lastname: string;
18 | age: number;
19 | constructor(name: string, lastname: string, age: number) {
20 | this.name = name;
21 | this.lastname = lastname;
22 | this.age = age;
23 | }
24 | @decorator
25 | classMethod(msg: string): string {
26 | return `${this.name} ${this.lastname}: ${msg} `;
27 | }
28 |
29 | get nameAndLastName(): string {
30 | return this.name + " " + this.lastname;
31 | }
32 |
33 | set nameComplete(value: string) {
34 | const words = value.split(/\s+/g);
35 | const firstName = words.shift();
36 | if (!firstName) return;
37 | this.name = firstName;
38 | this.lastname = words.join("");
39 | }
40 | }
41 |
42 | const people = new OnePeople("Sther", "Sther", 43);
43 |
44 | const ClassMethod = people.classMethod("HRU?");
45 |
46 | console.log(ClassMethod);
47 |
--------------------------------------------------------------------------------
/src/Aula 55 - Decoradores de parâmetro/Aula55.ts:
--------------------------------------------------------------------------------
1 | function decorator(
2 | classPrototype: any,
3 | propertyKey: string | symbol | undefined,
4 | index: number,
5 | ): void {
6 | console.log(index);
7 | console.log(classPrototype);
8 | console.log(propertyKey);
9 | }
10 |
11 | export class OnePeople {
12 | name: string;
13 | lastname: string;
14 | age: number;
15 | constructor(
16 | @decorator name: string,
17 | @decorator lastname: string,
18 | age: number,
19 | ) {
20 | this.name = name;
21 | this.lastname = lastname;
22 | this.age = age;
23 | }
24 | /// decoradores nos parametros
25 | classMethod(@decorator msg: string): string {
26 | return `${this.name} ${this.lastname}: ${msg} `;
27 | }
28 |
29 | get nameAndLastName(): string {
30 | return this.name + " " + this.lastname;
31 | }
32 |
33 | set nameComplete(value: string) {
34 | const words = value.split(/\s+/g);
35 | const firstName = words.shift();
36 | if (!firstName) return;
37 | this.name = firstName;
38 | this.lastname = words.join("");
39 | }
40 | }
41 |
42 | const people = new OnePeople("Sther", "Sther", 43);
43 |
44 | const ClassMethod = people.classMethod("HRU?");
45 |
46 | console.log(ClassMethod);
47 |
--------------------------------------------------------------------------------
/src/Aula 56 - Decoradores de propriedades/Aula56.ts:
--------------------------------------------------------------------------------
1 | function decorator(
2 | classPrototype: any,
3 | propertyKey: string | symbol | undefined,
4 | ): any {
5 | let valueProperty: any;
6 | return {
7 | get: () => valueProperty,
8 | set: (value: any) => {
9 | if (typeof value === "string") {
10 | valueProperty = value.split("").reverse().join("");
11 | return;
12 | }
13 | valueProperty = value;
14 | },
15 | };
16 | }
17 |
18 | export class OnePeople {
19 | @decorator
20 | name: string;
21 | lastname: string;
22 | age: number;
23 | constructor(name: string, lastname: string, age: number) {
24 | this.name = name;
25 | this.lastname = lastname;
26 | this.age = age;
27 | }
28 | /// decoradores nos parametros
29 | classMethod(msg: string): string {
30 | return `${this.name} ${this.lastname}: ${msg} `;
31 | }
32 |
33 | get nameAndLastName(): string {
34 | return this.name + " " + this.lastname;
35 | }
36 |
37 | set nameComplete(value: string) {
38 | const words = value.split(/\s+/g);
39 | const firstName = words.shift();
40 | if (!firstName) return;
41 | this.name = firstName;
42 | this.lastname = words.join("");
43 | }
44 | }
45 |
46 | const people = new OnePeople("Sther", "Sther", 43);
47 |
48 | const ClassMethod = people.classMethod("HRU?");
49 |
50 | console.log(ClassMethod);
51 |
--------------------------------------------------------------------------------
/src/Aula 57 - Criando um namespace/Aula57.ts:
--------------------------------------------------------------------------------
1 | /*eslint-+disable @typescript-eslint/no-namespace*/
2 |
3 | namespace MyNameSpace {
4 | export const nameOfNameSpace = "Stherzada";
5 |
6 | export class PeopleNameSpace {
7 | constructor(public name: string) {}
8 | }
9 |
10 | const peopleNameSpace = new PeopleNameSpace("Sther");
11 | console.log(peopleNameSpace);
12 |
13 | export namespace OtherNameSpace {
14 | export const nameOfNameSpace = "Stherzada";
15 | }
16 | }
17 |
18 | const peopleNameSpace = new MyNameSpace.PeopleNameSpace("Sther");
19 | console.log(peopleNameSpace);
20 | console.log(MyNameSpace.nameOfNameSpace);
21 | console.log(MyNameSpace.OtherNameSpace.nameOfNameSpace);
22 | export default 1;
23 |
--------------------------------------------------------------------------------
/src/Aula 58 - Reference para import de arquivos/Aula58.ts:
--------------------------------------------------------------------------------
1 | /*eslint-+disable @typescript-eslint/triple-slash-namespace*/
2 |
3 | ///
4 |
5 | console.log(MyNameSpace.nameOfNameSpace);
6 |
--------------------------------------------------------------------------------
/src/Aula 58 - Reference para import de arquivos/modulo/module.ts:
--------------------------------------------------------------------------------
1 | /*eslint-+disable @typescript-eslint/no-namespace*/
2 |
3 | export namespace MyNameSpace {
4 | export const nameOfNameSpace = "Stherzada";
5 |
6 | export class PeopleNameSpace {
7 | constructor(public name: string) {}
8 | }
9 |
10 | const peopleNameSpace = new PeopleNameSpace("Sther");
11 | console.log(peopleNameSpace);
12 |
13 | export namespace OtherNameSpace {
14 | export const nameOfNameSpace = "Stherzada";
15 | }
16 | }
17 |
18 | const peopleNameSpace = new MyNameSpace.PeopleNameSpace("Sther");
19 | console.log(peopleNameSpace);
20 | console.log(MyNameSpace.nameOfNameSpace);
21 | console.log(MyNameSpace.OtherNameSpace.nameOfNameSpace);
22 |
--------------------------------------------------------------------------------
/tsconfig.frontend.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15 | "lib": ["ESNext", "DOM"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26 |
27 | /* Modules */
28 | "module": "commonjs", /* Specify what module code is generated. */
29 | // "rootDir": "./", /* Specify the root folder within your source files. */
30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
42 | // "resolveJsonModule": true, /* Enable importing .json files. */
43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
45 |
46 | /* JavaScript Support */
47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
50 |
51 | /* Emit */
52 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
56 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
57 | // "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. */
58 | "outDir": "./frontend/assets/js", /* Specify an output folder for all emitted files. */
59 | // "removeComments": true, /* Disable emitting comments. */
60 | // "noEmit": true, /* Disable emitting files from a compilation. */
61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
62 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
68 | // "newLine": "crlf", /* Set the newline character for emitting files. */
69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
75 |
76 | /* Interop Constraints */
77 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
78 | // "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. */
79 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
80 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
82 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
83 |
84 | /* Type Checking */
85 | "strict": true, /* Enable all strict type-checking options. */
86 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
87 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
91 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
92 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
93 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
94 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
95 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
96 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
97 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
98 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
99 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
100 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
101 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
102 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
103 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
104 |
105 | /* Completeness */
106 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
107 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
108 | },
109 | "include": [
110 | "./src"
111 | ]
112 | }
113 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15 | "lib": ["ESNext", "DOM"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
18 | "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26 |
27 | /* Modules */
28 | "module": "commonjs", /* Specify what module code is generated. */
29 | // "rootDir": "./", /* Specify the root folder within your source files. */
30 | // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
42 | // "resolveJsonModule": true, /* Enable importing .json files. */
43 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
44 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
45 |
46 | /* JavaScript Support */
47 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
48 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
50 |
51 | /* Emit */
52 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
56 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
57 | // "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. */
58 | "outDir": "./dist", /* Specify an output folder for all emitted files. */
59 | // "removeComments": true, /* Disable emitting comments. */
60 | // "noEmit": true, /* Disable emitting files from a compilation. */
61 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
62 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
68 | // "newLine": "crlf", /* Set the newline character for emitting files. */
69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
75 |
76 | /* Interop Constraints */
77 | "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
78 | // "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. */
79 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
80 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
82 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
83 |
84 | /* Type Checking */
85 | "strict": true, /* Enable all strict type-checking options. */
86 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
87 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
91 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
92 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
93 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
94 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
95 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
96 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
97 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
98 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
99 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
100 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
101 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
102 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
103 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
104 |
105 | /* Completeness */
106 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
107 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
108 | },
109 | "include": [
110 | "./src"
111 | ]
112 | }
113 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | module.exports = {
4 | mode: 'development',
5 | entry: './src/Aula 19 - Workout/Aula19.ts',
6 | module: {
7 | rules: [
8 | {
9 | test: /\.tsx?$/,
10 | loader: 'ts-loader',
11 | exclude: /node_modules/,
12 | options: { configFile: 'tsconfig.frontend.json' }
13 | },
14 | ],
15 | },
16 | resolve: {
17 | extensions: ['.tsx', '.ts', '.js'],
18 | },
19 | output: {
20 | filename: 'bundle.js',
21 | path: path.resolve(__dirname, 'frontend', 'assets', 'js'),
22 | },
23 | devtool: 'source-map'
24 | };
25 |
--------------------------------------------------------------------------------