├── .gitignore
├── .node-version
├── .vscode
└── settings.json
├── README.md
├── package-lock.json
├── package.json
├── src
├── abstract-classes.ts
├── access-modifiers.ts
├── anonymous-function.ts
├── any.ts
├── array.ts
├── arrow-functions.ts
├── as-const.ts
├── boolean.ts
├── constructor-parameters.ts
├── default-parameters.ts
├── enum.ts
├── exclude-extract-nonnullable-definition.ts
├── exclude-extract-nonnullable.ts
├── function.ts
├── generics.ts
├── getter-and-setter.ts
├── index-signatures.ts
├── infer-keyword.ts
├── inheritance.ts
├── install-typescript.ts
├── interfaces.ts
├── intersection.ts
├── literal.ts
├── mapped-types.ts
├── more-constructor.ts
├── my-first-class.ts
├── namespaces.ts
├── never.ts
├── null-and-undefined.ts
├── nullable-types.ts
├── number-string.ts
├── object.ts
├── optional-arguments.ts
├── overloads.ts
├── parameters.ts
├── partial-and-required.ts
├── pick-and-omit.ts
├── record.ts
├── rest-parameters.ts
├── return-of-interfaces.ts
├── return-type.ts
├── static-members.ts
├── tuple.ts
├── type-aliases.ts
├── type-assertions.ts
├── type-compatibility.ts
├── type-safety.ts
├── union.ts
├── unknown.ts
├── utility-types-readonly.ts
└── void.ts
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 |
--------------------------------------------------------------------------------
/.node-version:
--------------------------------------------------------------------------------
1 | 18.12.1
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "node_modules/typescript/lib"
3 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # typescript-for-javascript-developers
2 |
3 | ## コンパイルを実行するコマンド例
4 |
5 | $ npm run dev src/default-parameters.ts
6 |
7 |
8 |
9 | [はむさんのオンラインスクール](https://diveintohacking.com/)
10 |
11 |
12 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "typescript-for-javascript-developers",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "typescript-for-javascript-developers",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "axios": "^1.2.0"
13 | },
14 | "devDependencies": {
15 | "ts-node": "^10.9.1",
16 | "ts-node-dev": "^2.0.0",
17 | "typescript": "^4.9.3"
18 | }
19 | },
20 | "node_modules/@cspotcode/source-map-support": {
21 | "version": "0.8.1",
22 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
23 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
24 | "dev": true,
25 | "dependencies": {
26 | "@jridgewell/trace-mapping": "0.3.9"
27 | },
28 | "engines": {
29 | "node": ">=12"
30 | }
31 | },
32 | "node_modules/@jridgewell/resolve-uri": {
33 | "version": "3.1.0",
34 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
35 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
36 | "dev": true,
37 | "engines": {
38 | "node": ">=6.0.0"
39 | }
40 | },
41 | "node_modules/@jridgewell/sourcemap-codec": {
42 | "version": "1.4.14",
43 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
44 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
45 | "dev": true
46 | },
47 | "node_modules/@jridgewell/trace-mapping": {
48 | "version": "0.3.9",
49 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
50 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
51 | "dev": true,
52 | "dependencies": {
53 | "@jridgewell/resolve-uri": "^3.0.3",
54 | "@jridgewell/sourcemap-codec": "^1.4.10"
55 | }
56 | },
57 | "node_modules/@tsconfig/node10": {
58 | "version": "1.0.9",
59 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
60 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
61 | "dev": true
62 | },
63 | "node_modules/@tsconfig/node12": {
64 | "version": "1.0.11",
65 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
66 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
67 | "dev": true
68 | },
69 | "node_modules/@tsconfig/node14": {
70 | "version": "1.0.3",
71 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
72 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
73 | "dev": true
74 | },
75 | "node_modules/@tsconfig/node16": {
76 | "version": "1.0.3",
77 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
78 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
79 | "dev": true
80 | },
81 | "node_modules/@types/node": {
82 | "version": "18.11.10",
83 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz",
84 | "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==",
85 | "dev": true,
86 | "peer": true
87 | },
88 | "node_modules/@types/strip-bom": {
89 | "version": "3.0.0",
90 | "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz",
91 | "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==",
92 | "dev": true
93 | },
94 | "node_modules/@types/strip-json-comments": {
95 | "version": "0.0.30",
96 | "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz",
97 | "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
98 | "dev": true
99 | },
100 | "node_modules/acorn": {
101 | "version": "8.8.1",
102 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
103 | "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
104 | "dev": true,
105 | "bin": {
106 | "acorn": "bin/acorn"
107 | },
108 | "engines": {
109 | "node": ">=0.4.0"
110 | }
111 | },
112 | "node_modules/acorn-walk": {
113 | "version": "8.2.0",
114 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
115 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
116 | "dev": true,
117 | "engines": {
118 | "node": ">=0.4.0"
119 | }
120 | },
121 | "node_modules/anymatch": {
122 | "version": "3.1.3",
123 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
124 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
125 | "dev": true,
126 | "dependencies": {
127 | "normalize-path": "^3.0.0",
128 | "picomatch": "^2.0.4"
129 | },
130 | "engines": {
131 | "node": ">= 8"
132 | }
133 | },
134 | "node_modules/arg": {
135 | "version": "4.1.2",
136 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.2.tgz",
137 | "integrity": "sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==",
138 | "dev": true
139 | },
140 | "node_modules/asynckit": {
141 | "version": "0.4.0",
142 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
143 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
144 | },
145 | "node_modules/axios": {
146 | "version": "1.2.0",
147 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.0.tgz",
148 | "integrity": "sha512-zT7wZyNYu3N5Bu0wuZ6QccIf93Qk1eV8LOewxgjOZFd2DenOs98cJ7+Y6703d0wkaXGY6/nZd4EweJaHz9uzQw==",
149 | "dependencies": {
150 | "follow-redirects": "^1.15.0",
151 | "form-data": "^4.0.0",
152 | "proxy-from-env": "^1.1.0"
153 | }
154 | },
155 | "node_modules/balanced-match": {
156 | "version": "1.0.2",
157 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
158 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
159 | "dev": true
160 | },
161 | "node_modules/binary-extensions": {
162 | "version": "2.2.0",
163 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
164 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
165 | "dev": true,
166 | "engines": {
167 | "node": ">=8"
168 | }
169 | },
170 | "node_modules/brace-expansion": {
171 | "version": "1.1.11",
172 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
173 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
174 | "dev": true,
175 | "dependencies": {
176 | "balanced-match": "^1.0.0",
177 | "concat-map": "0.0.1"
178 | }
179 | },
180 | "node_modules/braces": {
181 | "version": "3.0.2",
182 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
183 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
184 | "dev": true,
185 | "dependencies": {
186 | "fill-range": "^7.0.1"
187 | },
188 | "engines": {
189 | "node": ">=8"
190 | }
191 | },
192 | "node_modules/buffer-from": {
193 | "version": "1.1.1",
194 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
195 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
196 | "dev": true
197 | },
198 | "node_modules/chokidar": {
199 | "version": "3.5.3",
200 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
201 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
202 | "dev": true,
203 | "funding": [
204 | {
205 | "type": "individual",
206 | "url": "https://paulmillr.com/funding/"
207 | }
208 | ],
209 | "dependencies": {
210 | "anymatch": "~3.1.2",
211 | "braces": "~3.0.2",
212 | "glob-parent": "~5.1.2",
213 | "is-binary-path": "~2.1.0",
214 | "is-glob": "~4.0.1",
215 | "normalize-path": "~3.0.0",
216 | "readdirp": "~3.6.0"
217 | },
218 | "engines": {
219 | "node": ">= 8.10.0"
220 | },
221 | "optionalDependencies": {
222 | "fsevents": "~2.3.2"
223 | }
224 | },
225 | "node_modules/combined-stream": {
226 | "version": "1.0.8",
227 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
228 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
229 | "dependencies": {
230 | "delayed-stream": "~1.0.0"
231 | },
232 | "engines": {
233 | "node": ">= 0.8"
234 | }
235 | },
236 | "node_modules/concat-map": {
237 | "version": "0.0.1",
238 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
239 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
240 | "dev": true
241 | },
242 | "node_modules/create-require": {
243 | "version": "1.1.1",
244 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
245 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
246 | "dev": true
247 | },
248 | "node_modules/delayed-stream": {
249 | "version": "1.0.0",
250 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
251 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
252 | "engines": {
253 | "node": ">=0.4.0"
254 | }
255 | },
256 | "node_modules/diff": {
257 | "version": "4.0.2",
258 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
259 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
260 | "dev": true,
261 | "engines": {
262 | "node": ">=0.3.1"
263 | }
264 | },
265 | "node_modules/dynamic-dedupe": {
266 | "version": "0.3.0",
267 | "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz",
268 | "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==",
269 | "dev": true,
270 | "dependencies": {
271 | "xtend": "^4.0.0"
272 | }
273 | },
274 | "node_modules/fill-range": {
275 | "version": "7.0.1",
276 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
277 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
278 | "dev": true,
279 | "dependencies": {
280 | "to-regex-range": "^5.0.1"
281 | },
282 | "engines": {
283 | "node": ">=8"
284 | }
285 | },
286 | "node_modules/follow-redirects": {
287 | "version": "1.15.2",
288 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
289 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
290 | "funding": [
291 | {
292 | "type": "individual",
293 | "url": "https://github.com/sponsors/RubenVerborgh"
294 | }
295 | ],
296 | "engines": {
297 | "node": ">=4.0"
298 | },
299 | "peerDependenciesMeta": {
300 | "debug": {
301 | "optional": true
302 | }
303 | }
304 | },
305 | "node_modules/form-data": {
306 | "version": "4.0.0",
307 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
308 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
309 | "dependencies": {
310 | "asynckit": "^0.4.0",
311 | "combined-stream": "^1.0.8",
312 | "mime-types": "^2.1.12"
313 | },
314 | "engines": {
315 | "node": ">= 6"
316 | }
317 | },
318 | "node_modules/fs.realpath": {
319 | "version": "1.0.0",
320 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
321 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
322 | "dev": true
323 | },
324 | "node_modules/fsevents": {
325 | "version": "2.3.2",
326 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
327 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
328 | "dev": true,
329 | "hasInstallScript": true,
330 | "optional": true,
331 | "os": [
332 | "darwin"
333 | ],
334 | "engines": {
335 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
336 | }
337 | },
338 | "node_modules/function-bind": {
339 | "version": "1.1.1",
340 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
341 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
342 | "dev": true
343 | },
344 | "node_modules/glob": {
345 | "version": "7.2.3",
346 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
347 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
348 | "dev": true,
349 | "dependencies": {
350 | "fs.realpath": "^1.0.0",
351 | "inflight": "^1.0.4",
352 | "inherits": "2",
353 | "minimatch": "^3.1.1",
354 | "once": "^1.3.0",
355 | "path-is-absolute": "^1.0.0"
356 | },
357 | "engines": {
358 | "node": "*"
359 | },
360 | "funding": {
361 | "url": "https://github.com/sponsors/isaacs"
362 | }
363 | },
364 | "node_modules/glob-parent": {
365 | "version": "5.1.2",
366 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
367 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
368 | "dev": true,
369 | "dependencies": {
370 | "is-glob": "^4.0.1"
371 | },
372 | "engines": {
373 | "node": ">= 6"
374 | }
375 | },
376 | "node_modules/has": {
377 | "version": "1.0.3",
378 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
379 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
380 | "dev": true,
381 | "dependencies": {
382 | "function-bind": "^1.1.1"
383 | },
384 | "engines": {
385 | "node": ">= 0.4.0"
386 | }
387 | },
388 | "node_modules/inflight": {
389 | "version": "1.0.6",
390 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
391 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
392 | "dev": true,
393 | "dependencies": {
394 | "once": "^1.3.0",
395 | "wrappy": "1"
396 | }
397 | },
398 | "node_modules/inherits": {
399 | "version": "2.0.4",
400 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
401 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
402 | "dev": true
403 | },
404 | "node_modules/is-binary-path": {
405 | "version": "2.1.0",
406 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
407 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
408 | "dev": true,
409 | "dependencies": {
410 | "binary-extensions": "^2.0.0"
411 | },
412 | "engines": {
413 | "node": ">=8"
414 | }
415 | },
416 | "node_modules/is-core-module": {
417 | "version": "2.11.0",
418 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
419 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
420 | "dev": true,
421 | "dependencies": {
422 | "has": "^1.0.3"
423 | },
424 | "funding": {
425 | "url": "https://github.com/sponsors/ljharb"
426 | }
427 | },
428 | "node_modules/is-extglob": {
429 | "version": "2.1.1",
430 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
431 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
432 | "dev": true,
433 | "engines": {
434 | "node": ">=0.10.0"
435 | }
436 | },
437 | "node_modules/is-glob": {
438 | "version": "4.0.3",
439 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
440 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
441 | "dev": true,
442 | "dependencies": {
443 | "is-extglob": "^2.1.1"
444 | },
445 | "engines": {
446 | "node": ">=0.10.0"
447 | }
448 | },
449 | "node_modules/is-number": {
450 | "version": "7.0.0",
451 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
452 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
453 | "dev": true,
454 | "engines": {
455 | "node": ">=0.12.0"
456 | }
457 | },
458 | "node_modules/make-error": {
459 | "version": "1.3.5",
460 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
461 | "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
462 | "dev": true
463 | },
464 | "node_modules/mime-db": {
465 | "version": "1.52.0",
466 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
467 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
468 | "engines": {
469 | "node": ">= 0.6"
470 | }
471 | },
472 | "node_modules/mime-types": {
473 | "version": "2.1.35",
474 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
475 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
476 | "dependencies": {
477 | "mime-db": "1.52.0"
478 | },
479 | "engines": {
480 | "node": ">= 0.6"
481 | }
482 | },
483 | "node_modules/minimatch": {
484 | "version": "3.1.2",
485 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
486 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
487 | "dev": true,
488 | "dependencies": {
489 | "brace-expansion": "^1.1.7"
490 | },
491 | "engines": {
492 | "node": "*"
493 | }
494 | },
495 | "node_modules/minimist": {
496 | "version": "1.2.7",
497 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
498 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
499 | "dev": true,
500 | "funding": {
501 | "url": "https://github.com/sponsors/ljharb"
502 | }
503 | },
504 | "node_modules/mkdirp": {
505 | "version": "1.0.4",
506 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
507 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
508 | "dev": true,
509 | "bin": {
510 | "mkdirp": "bin/cmd.js"
511 | },
512 | "engines": {
513 | "node": ">=10"
514 | }
515 | },
516 | "node_modules/normalize-path": {
517 | "version": "3.0.0",
518 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
519 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
520 | "dev": true,
521 | "engines": {
522 | "node": ">=0.10.0"
523 | }
524 | },
525 | "node_modules/once": {
526 | "version": "1.4.0",
527 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
528 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
529 | "dev": true,
530 | "dependencies": {
531 | "wrappy": "1"
532 | }
533 | },
534 | "node_modules/path-is-absolute": {
535 | "version": "1.0.1",
536 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
537 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
538 | "dev": true,
539 | "engines": {
540 | "node": ">=0.10.0"
541 | }
542 | },
543 | "node_modules/path-parse": {
544 | "version": "1.0.7",
545 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
546 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
547 | "dev": true
548 | },
549 | "node_modules/picomatch": {
550 | "version": "2.3.1",
551 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
552 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
553 | "dev": true,
554 | "engines": {
555 | "node": ">=8.6"
556 | },
557 | "funding": {
558 | "url": "https://github.com/sponsors/jonschlinkert"
559 | }
560 | },
561 | "node_modules/proxy-from-env": {
562 | "version": "1.1.0",
563 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
564 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
565 | },
566 | "node_modules/readdirp": {
567 | "version": "3.6.0",
568 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
569 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
570 | "dev": true,
571 | "dependencies": {
572 | "picomatch": "^2.2.1"
573 | },
574 | "engines": {
575 | "node": ">=8.10.0"
576 | }
577 | },
578 | "node_modules/resolve": {
579 | "version": "1.22.1",
580 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
581 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
582 | "dev": true,
583 | "dependencies": {
584 | "is-core-module": "^2.9.0",
585 | "path-parse": "^1.0.7",
586 | "supports-preserve-symlinks-flag": "^1.0.0"
587 | },
588 | "bin": {
589 | "resolve": "bin/resolve"
590 | },
591 | "funding": {
592 | "url": "https://github.com/sponsors/ljharb"
593 | }
594 | },
595 | "node_modules/rimraf": {
596 | "version": "2.7.1",
597 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
598 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
599 | "dev": true,
600 | "dependencies": {
601 | "glob": "^7.1.3"
602 | },
603 | "bin": {
604 | "rimraf": "bin.js"
605 | }
606 | },
607 | "node_modules/source-map": {
608 | "version": "0.6.1",
609 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
610 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
611 | "dev": true,
612 | "engines": {
613 | "node": ">=0.10.0"
614 | }
615 | },
616 | "node_modules/source-map-support": {
617 | "version": "0.5.16",
618 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
619 | "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
620 | "dev": true,
621 | "dependencies": {
622 | "buffer-from": "^1.0.0",
623 | "source-map": "^0.6.0"
624 | }
625 | },
626 | "node_modules/strip-bom": {
627 | "version": "3.0.0",
628 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
629 | "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
630 | "dev": true,
631 | "engines": {
632 | "node": ">=4"
633 | }
634 | },
635 | "node_modules/strip-json-comments": {
636 | "version": "2.0.1",
637 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
638 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
639 | "dev": true,
640 | "engines": {
641 | "node": ">=0.10.0"
642 | }
643 | },
644 | "node_modules/supports-preserve-symlinks-flag": {
645 | "version": "1.0.0",
646 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
647 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
648 | "dev": true,
649 | "engines": {
650 | "node": ">= 0.4"
651 | },
652 | "funding": {
653 | "url": "https://github.com/sponsors/ljharb"
654 | }
655 | },
656 | "node_modules/to-regex-range": {
657 | "version": "5.0.1",
658 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
659 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
660 | "dev": true,
661 | "dependencies": {
662 | "is-number": "^7.0.0"
663 | },
664 | "engines": {
665 | "node": ">=8.0"
666 | }
667 | },
668 | "node_modules/tree-kill": {
669 | "version": "1.2.2",
670 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
671 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
672 | "dev": true,
673 | "bin": {
674 | "tree-kill": "cli.js"
675 | }
676 | },
677 | "node_modules/ts-node": {
678 | "version": "10.9.1",
679 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
680 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
681 | "dev": true,
682 | "dependencies": {
683 | "@cspotcode/source-map-support": "^0.8.0",
684 | "@tsconfig/node10": "^1.0.7",
685 | "@tsconfig/node12": "^1.0.7",
686 | "@tsconfig/node14": "^1.0.0",
687 | "@tsconfig/node16": "^1.0.2",
688 | "acorn": "^8.4.1",
689 | "acorn-walk": "^8.1.1",
690 | "arg": "^4.1.0",
691 | "create-require": "^1.1.0",
692 | "diff": "^4.0.1",
693 | "make-error": "^1.1.1",
694 | "v8-compile-cache-lib": "^3.0.1",
695 | "yn": "3.1.1"
696 | },
697 | "bin": {
698 | "ts-node": "dist/bin.js",
699 | "ts-node-cwd": "dist/bin-cwd.js",
700 | "ts-node-esm": "dist/bin-esm.js",
701 | "ts-node-script": "dist/bin-script.js",
702 | "ts-node-transpile-only": "dist/bin-transpile.js",
703 | "ts-script": "dist/bin-script-deprecated.js"
704 | },
705 | "peerDependencies": {
706 | "@swc/core": ">=1.2.50",
707 | "@swc/wasm": ">=1.2.50",
708 | "@types/node": "*",
709 | "typescript": ">=2.7"
710 | },
711 | "peerDependenciesMeta": {
712 | "@swc/core": {
713 | "optional": true
714 | },
715 | "@swc/wasm": {
716 | "optional": true
717 | }
718 | }
719 | },
720 | "node_modules/ts-node-dev": {
721 | "version": "2.0.0",
722 | "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz",
723 | "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==",
724 | "dev": true,
725 | "dependencies": {
726 | "chokidar": "^3.5.1",
727 | "dynamic-dedupe": "^0.3.0",
728 | "minimist": "^1.2.6",
729 | "mkdirp": "^1.0.4",
730 | "resolve": "^1.0.0",
731 | "rimraf": "^2.6.1",
732 | "source-map-support": "^0.5.12",
733 | "tree-kill": "^1.2.2",
734 | "ts-node": "^10.4.0",
735 | "tsconfig": "^7.0.0"
736 | },
737 | "bin": {
738 | "ts-node-dev": "lib/bin.js",
739 | "tsnd": "lib/bin.js"
740 | },
741 | "engines": {
742 | "node": ">=0.8.0"
743 | },
744 | "peerDependencies": {
745 | "node-notifier": "*",
746 | "typescript": "*"
747 | },
748 | "peerDependenciesMeta": {
749 | "node-notifier": {
750 | "optional": true
751 | }
752 | }
753 | },
754 | "node_modules/tsconfig": {
755 | "version": "7.0.0",
756 | "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz",
757 | "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==",
758 | "dev": true,
759 | "dependencies": {
760 | "@types/strip-bom": "^3.0.0",
761 | "@types/strip-json-comments": "0.0.30",
762 | "strip-bom": "^3.0.0",
763 | "strip-json-comments": "^2.0.0"
764 | }
765 | },
766 | "node_modules/typescript": {
767 | "version": "4.9.3",
768 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz",
769 | "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==",
770 | "dev": true,
771 | "bin": {
772 | "tsc": "bin/tsc",
773 | "tsserver": "bin/tsserver"
774 | },
775 | "engines": {
776 | "node": ">=4.2.0"
777 | }
778 | },
779 | "node_modules/v8-compile-cache-lib": {
780 | "version": "3.0.1",
781 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
782 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
783 | "dev": true
784 | },
785 | "node_modules/wrappy": {
786 | "version": "1.0.2",
787 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
788 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
789 | "dev": true
790 | },
791 | "node_modules/xtend": {
792 | "version": "4.0.2",
793 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
794 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
795 | "dev": true,
796 | "engines": {
797 | "node": ">=0.4"
798 | }
799 | },
800 | "node_modules/yn": {
801 | "version": "3.1.1",
802 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
803 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
804 | "dev": true,
805 | "engines": {
806 | "node": ">=6"
807 | }
808 | }
809 | },
810 | "dependencies": {
811 | "@cspotcode/source-map-support": {
812 | "version": "0.8.1",
813 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
814 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
815 | "dev": true,
816 | "requires": {
817 | "@jridgewell/trace-mapping": "0.3.9"
818 | }
819 | },
820 | "@jridgewell/resolve-uri": {
821 | "version": "3.1.0",
822 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
823 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
824 | "dev": true
825 | },
826 | "@jridgewell/sourcemap-codec": {
827 | "version": "1.4.14",
828 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
829 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
830 | "dev": true
831 | },
832 | "@jridgewell/trace-mapping": {
833 | "version": "0.3.9",
834 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
835 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
836 | "dev": true,
837 | "requires": {
838 | "@jridgewell/resolve-uri": "^3.0.3",
839 | "@jridgewell/sourcemap-codec": "^1.4.10"
840 | }
841 | },
842 | "@tsconfig/node10": {
843 | "version": "1.0.9",
844 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
845 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
846 | "dev": true
847 | },
848 | "@tsconfig/node12": {
849 | "version": "1.0.11",
850 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
851 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
852 | "dev": true
853 | },
854 | "@tsconfig/node14": {
855 | "version": "1.0.3",
856 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
857 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
858 | "dev": true
859 | },
860 | "@tsconfig/node16": {
861 | "version": "1.0.3",
862 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
863 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
864 | "dev": true
865 | },
866 | "@types/node": {
867 | "version": "18.11.10",
868 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz",
869 | "integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ==",
870 | "dev": true,
871 | "peer": true
872 | },
873 | "@types/strip-bom": {
874 | "version": "3.0.0",
875 | "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz",
876 | "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==",
877 | "dev": true
878 | },
879 | "@types/strip-json-comments": {
880 | "version": "0.0.30",
881 | "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz",
882 | "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
883 | "dev": true
884 | },
885 | "acorn": {
886 | "version": "8.8.1",
887 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
888 | "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
889 | "dev": true
890 | },
891 | "acorn-walk": {
892 | "version": "8.2.0",
893 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
894 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
895 | "dev": true
896 | },
897 | "anymatch": {
898 | "version": "3.1.3",
899 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
900 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
901 | "dev": true,
902 | "requires": {
903 | "normalize-path": "^3.0.0",
904 | "picomatch": "^2.0.4"
905 | }
906 | },
907 | "arg": {
908 | "version": "4.1.2",
909 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.2.tgz",
910 | "integrity": "sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==",
911 | "dev": true
912 | },
913 | "asynckit": {
914 | "version": "0.4.0",
915 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
916 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
917 | },
918 | "axios": {
919 | "version": "1.2.0",
920 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.0.tgz",
921 | "integrity": "sha512-zT7wZyNYu3N5Bu0wuZ6QccIf93Qk1eV8LOewxgjOZFd2DenOs98cJ7+Y6703d0wkaXGY6/nZd4EweJaHz9uzQw==",
922 | "requires": {
923 | "follow-redirects": "^1.15.0",
924 | "form-data": "^4.0.0",
925 | "proxy-from-env": "^1.1.0"
926 | }
927 | },
928 | "balanced-match": {
929 | "version": "1.0.2",
930 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
931 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
932 | "dev": true
933 | },
934 | "binary-extensions": {
935 | "version": "2.2.0",
936 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
937 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
938 | "dev": true
939 | },
940 | "brace-expansion": {
941 | "version": "1.1.11",
942 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
943 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
944 | "dev": true,
945 | "requires": {
946 | "balanced-match": "^1.0.0",
947 | "concat-map": "0.0.1"
948 | }
949 | },
950 | "braces": {
951 | "version": "3.0.2",
952 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
953 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
954 | "dev": true,
955 | "requires": {
956 | "fill-range": "^7.0.1"
957 | }
958 | },
959 | "buffer-from": {
960 | "version": "1.1.1",
961 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
962 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
963 | "dev": true
964 | },
965 | "chokidar": {
966 | "version": "3.5.3",
967 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
968 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
969 | "dev": true,
970 | "requires": {
971 | "anymatch": "~3.1.2",
972 | "braces": "~3.0.2",
973 | "fsevents": "~2.3.2",
974 | "glob-parent": "~5.1.2",
975 | "is-binary-path": "~2.1.0",
976 | "is-glob": "~4.0.1",
977 | "normalize-path": "~3.0.0",
978 | "readdirp": "~3.6.0"
979 | }
980 | },
981 | "combined-stream": {
982 | "version": "1.0.8",
983 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
984 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
985 | "requires": {
986 | "delayed-stream": "~1.0.0"
987 | }
988 | },
989 | "concat-map": {
990 | "version": "0.0.1",
991 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
992 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
993 | "dev": true
994 | },
995 | "create-require": {
996 | "version": "1.1.1",
997 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
998 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
999 | "dev": true
1000 | },
1001 | "delayed-stream": {
1002 | "version": "1.0.0",
1003 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1004 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
1005 | },
1006 | "diff": {
1007 | "version": "4.0.2",
1008 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
1009 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
1010 | "dev": true
1011 | },
1012 | "dynamic-dedupe": {
1013 | "version": "0.3.0",
1014 | "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz",
1015 | "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==",
1016 | "dev": true,
1017 | "requires": {
1018 | "xtend": "^4.0.0"
1019 | }
1020 | },
1021 | "fill-range": {
1022 | "version": "7.0.1",
1023 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1024 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1025 | "dev": true,
1026 | "requires": {
1027 | "to-regex-range": "^5.0.1"
1028 | }
1029 | },
1030 | "follow-redirects": {
1031 | "version": "1.15.2",
1032 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
1033 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
1034 | },
1035 | "form-data": {
1036 | "version": "4.0.0",
1037 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
1038 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
1039 | "requires": {
1040 | "asynckit": "^0.4.0",
1041 | "combined-stream": "^1.0.8",
1042 | "mime-types": "^2.1.12"
1043 | }
1044 | },
1045 | "fs.realpath": {
1046 | "version": "1.0.0",
1047 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1048 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1049 | "dev": true
1050 | },
1051 | "fsevents": {
1052 | "version": "2.3.2",
1053 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1054 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1055 | "dev": true,
1056 | "optional": true
1057 | },
1058 | "function-bind": {
1059 | "version": "1.1.1",
1060 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1061 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1062 | "dev": true
1063 | },
1064 | "glob": {
1065 | "version": "7.2.3",
1066 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1067 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1068 | "dev": true,
1069 | "requires": {
1070 | "fs.realpath": "^1.0.0",
1071 | "inflight": "^1.0.4",
1072 | "inherits": "2",
1073 | "minimatch": "^3.1.1",
1074 | "once": "^1.3.0",
1075 | "path-is-absolute": "^1.0.0"
1076 | }
1077 | },
1078 | "glob-parent": {
1079 | "version": "5.1.2",
1080 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1081 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1082 | "dev": true,
1083 | "requires": {
1084 | "is-glob": "^4.0.1"
1085 | }
1086 | },
1087 | "has": {
1088 | "version": "1.0.3",
1089 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1090 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1091 | "dev": true,
1092 | "requires": {
1093 | "function-bind": "^1.1.1"
1094 | }
1095 | },
1096 | "inflight": {
1097 | "version": "1.0.6",
1098 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1099 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1100 | "dev": true,
1101 | "requires": {
1102 | "once": "^1.3.0",
1103 | "wrappy": "1"
1104 | }
1105 | },
1106 | "inherits": {
1107 | "version": "2.0.4",
1108 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1109 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1110 | "dev": true
1111 | },
1112 | "is-binary-path": {
1113 | "version": "2.1.0",
1114 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1115 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1116 | "dev": true,
1117 | "requires": {
1118 | "binary-extensions": "^2.0.0"
1119 | }
1120 | },
1121 | "is-core-module": {
1122 | "version": "2.11.0",
1123 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1124 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1125 | "dev": true,
1126 | "requires": {
1127 | "has": "^1.0.3"
1128 | }
1129 | },
1130 | "is-extglob": {
1131 | "version": "2.1.1",
1132 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1133 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1134 | "dev": true
1135 | },
1136 | "is-glob": {
1137 | "version": "4.0.3",
1138 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1139 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1140 | "dev": true,
1141 | "requires": {
1142 | "is-extglob": "^2.1.1"
1143 | }
1144 | },
1145 | "is-number": {
1146 | "version": "7.0.0",
1147 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1148 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1149 | "dev": true
1150 | },
1151 | "make-error": {
1152 | "version": "1.3.5",
1153 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
1154 | "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
1155 | "dev": true
1156 | },
1157 | "mime-db": {
1158 | "version": "1.52.0",
1159 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1160 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
1161 | },
1162 | "mime-types": {
1163 | "version": "2.1.35",
1164 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1165 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1166 | "requires": {
1167 | "mime-db": "1.52.0"
1168 | }
1169 | },
1170 | "minimatch": {
1171 | "version": "3.1.2",
1172 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1173 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1174 | "dev": true,
1175 | "requires": {
1176 | "brace-expansion": "^1.1.7"
1177 | }
1178 | },
1179 | "minimist": {
1180 | "version": "1.2.7",
1181 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
1182 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
1183 | "dev": true
1184 | },
1185 | "mkdirp": {
1186 | "version": "1.0.4",
1187 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
1188 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
1189 | "dev": true
1190 | },
1191 | "normalize-path": {
1192 | "version": "3.0.0",
1193 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1194 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1195 | "dev": true
1196 | },
1197 | "once": {
1198 | "version": "1.4.0",
1199 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1200 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1201 | "dev": true,
1202 | "requires": {
1203 | "wrappy": "1"
1204 | }
1205 | },
1206 | "path-is-absolute": {
1207 | "version": "1.0.1",
1208 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1209 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1210 | "dev": true
1211 | },
1212 | "path-parse": {
1213 | "version": "1.0.7",
1214 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1215 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1216 | "dev": true
1217 | },
1218 | "picomatch": {
1219 | "version": "2.3.1",
1220 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1221 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1222 | "dev": true
1223 | },
1224 | "proxy-from-env": {
1225 | "version": "1.1.0",
1226 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1227 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
1228 | },
1229 | "readdirp": {
1230 | "version": "3.6.0",
1231 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1232 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1233 | "dev": true,
1234 | "requires": {
1235 | "picomatch": "^2.2.1"
1236 | }
1237 | },
1238 | "resolve": {
1239 | "version": "1.22.1",
1240 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1241 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1242 | "dev": true,
1243 | "requires": {
1244 | "is-core-module": "^2.9.0",
1245 | "path-parse": "^1.0.7",
1246 | "supports-preserve-symlinks-flag": "^1.0.0"
1247 | }
1248 | },
1249 | "rimraf": {
1250 | "version": "2.7.1",
1251 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
1252 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
1253 | "dev": true,
1254 | "requires": {
1255 | "glob": "^7.1.3"
1256 | }
1257 | },
1258 | "source-map": {
1259 | "version": "0.6.1",
1260 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1261 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1262 | "dev": true
1263 | },
1264 | "source-map-support": {
1265 | "version": "0.5.16",
1266 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
1267 | "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
1268 | "dev": true,
1269 | "requires": {
1270 | "buffer-from": "^1.0.0",
1271 | "source-map": "^0.6.0"
1272 | }
1273 | },
1274 | "strip-bom": {
1275 | "version": "3.0.0",
1276 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
1277 | "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
1278 | "dev": true
1279 | },
1280 | "strip-json-comments": {
1281 | "version": "2.0.1",
1282 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1283 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
1284 | "dev": true
1285 | },
1286 | "supports-preserve-symlinks-flag": {
1287 | "version": "1.0.0",
1288 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1289 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1290 | "dev": true
1291 | },
1292 | "to-regex-range": {
1293 | "version": "5.0.1",
1294 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1295 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1296 | "dev": true,
1297 | "requires": {
1298 | "is-number": "^7.0.0"
1299 | }
1300 | },
1301 | "tree-kill": {
1302 | "version": "1.2.2",
1303 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
1304 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
1305 | "dev": true
1306 | },
1307 | "ts-node": {
1308 | "version": "10.9.1",
1309 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
1310 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
1311 | "dev": true,
1312 | "requires": {
1313 | "@cspotcode/source-map-support": "^0.8.0",
1314 | "@tsconfig/node10": "^1.0.7",
1315 | "@tsconfig/node12": "^1.0.7",
1316 | "@tsconfig/node14": "^1.0.0",
1317 | "@tsconfig/node16": "^1.0.2",
1318 | "acorn": "^8.4.1",
1319 | "acorn-walk": "^8.1.1",
1320 | "arg": "^4.1.0",
1321 | "create-require": "^1.1.0",
1322 | "diff": "^4.0.1",
1323 | "make-error": "^1.1.1",
1324 | "v8-compile-cache-lib": "^3.0.1",
1325 | "yn": "3.1.1"
1326 | }
1327 | },
1328 | "ts-node-dev": {
1329 | "version": "2.0.0",
1330 | "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz",
1331 | "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==",
1332 | "dev": true,
1333 | "requires": {
1334 | "chokidar": "^3.5.1",
1335 | "dynamic-dedupe": "^0.3.0",
1336 | "minimist": "^1.2.6",
1337 | "mkdirp": "^1.0.4",
1338 | "resolve": "^1.0.0",
1339 | "rimraf": "^2.6.1",
1340 | "source-map-support": "^0.5.12",
1341 | "tree-kill": "^1.2.2",
1342 | "ts-node": "^10.4.0",
1343 | "tsconfig": "^7.0.0"
1344 | }
1345 | },
1346 | "tsconfig": {
1347 | "version": "7.0.0",
1348 | "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz",
1349 | "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==",
1350 | "dev": true,
1351 | "requires": {
1352 | "@types/strip-bom": "^3.0.0",
1353 | "@types/strip-json-comments": "0.0.30",
1354 | "strip-bom": "^3.0.0",
1355 | "strip-json-comments": "^2.0.0"
1356 | }
1357 | },
1358 | "typescript": {
1359 | "version": "4.9.3",
1360 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz",
1361 | "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==",
1362 | "dev": true
1363 | },
1364 | "v8-compile-cache-lib": {
1365 | "version": "3.0.1",
1366 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
1367 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
1368 | "dev": true
1369 | },
1370 | "wrappy": {
1371 | "version": "1.0.2",
1372 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1373 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1374 | "dev": true
1375 | },
1376 | "xtend": {
1377 | "version": "4.0.2",
1378 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1379 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1380 | "dev": true
1381 | },
1382 | "yn": {
1383 | "version": "3.1.1",
1384 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
1385 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
1386 | "dev": true
1387 | }
1388 | }
1389 | }
1390 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "typescript-for-javascript-developers",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "dev": "ts-node-dev --respawn",
8 | "test": "echo \"Error: no test specified\" && exit 1"
9 | },
10 | "repository": {
11 | "type": "git",
12 | "url": "git+https://github.com/DiveIntoHacking/typescript-for-javascript-developers.git"
13 | },
14 | "keywords": [],
15 | "author": "",
16 | "license": "ISC",
17 | "bugs": {
18 | "url": "https://github.com/DiveIntoHacking/typescript-for-javascript-developers/issues"
19 | },
20 | "homepage": "https://github.com/DiveIntoHacking/typescript-for-javascript-developers#readme",
21 | "devDependencies": {
22 | "ts-node": "^10.9.1",
23 | "ts-node-dev": "^2.0.0",
24 | "typescript": "^4.9.3"
25 | },
26 | "dependencies": {
27 | "axios": "^1.2.0"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/abstract-classes.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | abstract class Animal {
4 | abstract cry(): string;
5 | }
6 |
7 | class Lion extends Animal {
8 | cry() {
9 | return 'roar';
10 | }
11 | }
12 |
13 | class Tiger extends Animal {
14 | cry() {
15 | return 'grrrr';
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/access-modifiers.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | class Person {
4 | public name: string;
5 | // private age: number;
6 | protected age: number;
7 | protected nationality: string;
8 |
9 | constructor(name: string, age: number, nationality: string) {
10 | this.name = name;
11 | this.age = age;
12 | this.nationality = nationality;
13 | }
14 |
15 | profile(): string {
16 | return `name: ${this.name}, age: ${this.age}`;
17 | }
18 | }
19 |
20 | class Android extends Person {
21 | constructor(name: string, age: number, nationality: string) {
22 | super(name, age, nationality);
23 | }
24 |
25 | profile(): string {
26 | return `name: ${this.name}, age: ${this.age}, nationality: ${this.nationality}`;
27 | }
28 | }
29 |
30 | let taro = new Person('Taro', 30, 'Japan');
31 | console.log(taro.profile());
32 | console.log(taro.name);
33 | // console.log(taro.age);
34 | // let hanako = new Person();
35 |
--------------------------------------------------------------------------------
/src/anonymous-function.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let bmi: (height: number, weight: number) => number = function(
4 | height: number,
5 | weight: number
6 | ): number {
7 | return weight / (height * height);
8 | };
9 |
10 | console.log(bmi(1.78, 86));
11 |
--------------------------------------------------------------------------------
/src/any.ts:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | export {};
4 |
5 | let url: string =
6 | 'https://udemy-utils.herokuapp.com/api/v1/articles?token=token123';
7 |
8 | axios.get(url).then(function(response) {
9 | interface Article {
10 | id: number;
11 | title: string;
12 | description: string;
13 | }
14 | let data: Article[];
15 | data = response.data;
16 | console.log(data);
17 | });
18 |
--------------------------------------------------------------------------------
/src/array.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let numbers: number[] = [1, 2, 3];
4 |
5 | let numbers2: Array = [1, 2, 3];
6 | let strings2: Array = ['Tokyo', 'Osaka', 'Kyoto'];
7 |
8 | let strings: string[] = ['TypeScript', 'JavaScript', 'CoffeeScript'];
9 |
10 | let nijigenHairetsu: number[][] = [
11 | [50, 100],
12 | [150, 300]
13 | ];
14 |
15 | let hairetsu: (string | number | boolean)[] = [1, false, 'Japan'];
16 |
--------------------------------------------------------------------------------
/src/arrow-functions.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let bmi: (height: number, weight: number) => number = (
4 | height: number,
5 | weight: number
6 | ): number => weight / (height * height);
7 |
8 | console.log(bmi(1.78, 86));
9 |
--------------------------------------------------------------------------------
/src/as-const.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let name = 'Atsushi';
4 |
5 | name = 'Ham';
6 |
7 | let nickname = 'Ham' as const;
8 | nickname = 'Ham';
9 |
10 | let profile = {
11 | name: 'Atsushi',
12 | height: 178
13 | } as const;
14 |
15 | // profile.name = 'Ham';
16 | // profile.height = 180;
17 |
--------------------------------------------------------------------------------
/src/boolean.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let name = 'TypeScript';
4 |
5 | let isFinished: boolean = true;
6 | isFinished = false;
7 | // isFinished = 1;
8 | console.log({ isFinished });
9 |
--------------------------------------------------------------------------------
/src/constructor-parameters.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | class Person {
4 | name: string;
5 | age: number;
6 |
7 | constructor(name: string, age: number) {
8 | this.name = name;
9 | this.age = age;
10 | }
11 | }
12 |
13 | let taro = new Person('Taro', 30);
14 | console.log(taro);
15 |
16 | type PersonType = typeof Person;
17 |
18 | type Profile = ConstructorParameters;
19 |
20 | const profile: Profile = ['Ham', 43];
21 | const ham = new Person(...profile);
22 | console.log(ham);
23 |
24 | type MyConstructorParameters<
25 | T extends new (...args: any) => any
26 | > = T extends new (...args: infer P) => any ? P : never;
27 |
--------------------------------------------------------------------------------
/src/default-parameters.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | const nextYearSalary = (currentSalary: number, rate: number = 1.1) => {
4 | return currentSalary * rate;
5 | };
6 |
7 | console.log(nextYearSalary(1000));
8 |
--------------------------------------------------------------------------------
/src/enum.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | enum Months {
4 | January = 1,
5 | February,
6 | March,
7 | April,
8 | May,
9 | Jun,
10 | July,
11 | August,
12 | September,
13 | October,
14 | November,
15 | December
16 | }
17 |
18 | console.log(Months.January);
19 | console.log(Months.February);
20 | console.log(Months.December);
21 |
22 | // const MonthsJs = {
23 | // January: 0,
24 | // February: 1
25 | // };
26 | //
27 | // console.log(MonthsJs.January);
28 | // console.log(MonthsJs.February);
29 |
30 | enum COLORS {
31 | RED = '#FF0000',
32 | WHITE = '#FFFFFF',
33 | GREEN = '#008000',
34 | BLUE = '#0000FF',
35 | // YELLOW = '#FFFF00',
36 | BLACK = '#000000'
37 | }
38 |
39 | let green = COLORS.GREEN;
40 | console.log({ green });
41 |
42 | enum COLORS {
43 | YELLOW = '#FFFF00',
44 | GRAY = '#808080'
45 | }
46 |
47 | COLORS.YELLOW;
48 |
--------------------------------------------------------------------------------
/src/exclude-extract-nonnullable-definition.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type MyExclude = DebugType;
4 | type DebugType = () => void;
5 | type SomeTypes = string | number | DebugType;
6 | type FunctionType = Exclude;
7 | type MyFunctionType = MyExclude;
8 |
9 | type FunctionTypeByExtract = Extract;
10 |
11 | type NullableTypes = string | number | null | undefined;
12 | type NonNullableTypes = NonNullable;
13 |
--------------------------------------------------------------------------------
/src/exclude-extract-nonnullable.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type DebugType = () => void;
4 | type SomeTypes = string | number | DebugType;
5 | type FunctionType = Exclude;
6 | type NonFunctionType = Exclude;
7 | type TypeExcludingFunction = Exclude;
8 |
9 | type FunctionTypeByExtract = Extract;
10 | type NonFunctionTypeByExtract = Extract;
11 | type FunctionTypeExtractingFunction = Extract;
12 |
13 | type NullableTypes = string | number | null | undefined;
14 | type NonNullableTypes = NonNullable;
15 |
--------------------------------------------------------------------------------
/src/function.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | function bmi(height: number, weight: number): number {
4 | return weight / (height * height);
5 | }
6 |
7 | console.log(bmi(1.78, 86));
8 |
--------------------------------------------------------------------------------
/src/generics.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | // const echo = (arg: number): number => {
4 | // return arg;
5 | // };
6 | //
7 | // const echo = (arg: string): string => {
8 | // return arg;
9 | // };
10 |
11 | const echo = (arg: T): T => {
12 | return arg;
13 | };
14 |
15 | console.log(echo(100));
16 | console.log(echo('Hello!'));
17 | console.log(echo(true));
18 |
19 | class Mirror {
20 | constructor(public value: T) {}
21 |
22 | echo(): T {
23 | return this.value;
24 | }
25 | }
26 |
27 | console.log(new Mirror(123).echo());
28 | console.log(new Mirror('Hello, generics!').echo());
29 | console.log(new Mirror(true).echo());
30 |
--------------------------------------------------------------------------------
/src/getter-and-setter.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | // * owner
4 | // * 所有者
5 | // * 初期化時に設定できる。
6 | // * 途中で変更できない。
7 | // * 参照できる。
8 | // * secretNumber
9 | // * 個人番号
10 | // * 初期化時に設定できる。
11 | // * 途中で変更できる。
12 | // * 参照できない。
13 |
14 | class MyNumberCard {
15 | private _owner: string;
16 | private _secretNumber: number;
17 |
18 | constructor(owner: string, secretNumber: number) {
19 | this._owner = owner;
20 | this._secretNumber = secretNumber;
21 | }
22 |
23 | get owner() {
24 | return this._owner;
25 | }
26 |
27 | set secretNumber(secretNumber: number) {
28 | this._secretNumber = secretNumber;
29 | }
30 |
31 | debugPrint() {
32 | return `secretNumber: ${this._secretNumber}`;
33 | }
34 | }
35 |
36 | let card = new MyNumberCard('はむさん', 1234567890);
37 | console.log(card.debugPrint());
38 | card.secretNumber = 1111111111;
39 | console.log(card.debugPrint());
40 | // card.owner = 'Ham';
41 | console.log(card.owner);
42 | // card.secretNumber;
43 | // card._secretNumber;
44 | console.log(card.secretNumber);
45 |
--------------------------------------------------------------------------------
/src/index-signatures.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | interface Profile {
4 | name: string;
5 | underTwenty: boolean;
6 | [index: string]: string | number | boolean;
7 | }
8 |
9 | let profile: Profile = { name: 'Ham', underTwenty: false };
10 |
11 | // How to write index signatures
12 | // { [ index: typeForIndex ]: typeForValue }
13 |
14 | profile.name = 'Ham';
15 | profile.age = 43;
16 | profile.nationality = 'Japan';
17 |
--------------------------------------------------------------------------------
/src/infer-keyword.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | function add(a: number, b: number) {
4 | return a + b;
5 | }
6 |
7 | console.log(add(1, 2));
8 |
9 | type ReturnTypeFromAdd = ReturnType;
10 |
11 | type MyReturnType any> = T extends (
12 | ...args: any
13 | ) => infer R
14 | ? R
15 | : any;
16 |
--------------------------------------------------------------------------------
/src/inheritance.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | class Animal {
4 | constructor(public name: string) {}
5 |
6 | run(): string {
7 | return 'I can run';
8 | }
9 | }
10 |
11 | class Lion extends Animal {
12 | public speed: number;
13 |
14 | constructor(name: string, speed: number) {
15 | super(name);
16 |
17 | this.speed = speed;
18 | }
19 |
20 | run(): string {
21 | return `${super.run()} ${this.speed}km/h.`;
22 | }
23 | }
24 |
25 | // let animal = new Animal();
26 | // console.log(animal.run());
27 | // let lion = new Lion();
28 | // console.log(lion.run());
29 | console.log(new Animal('Mickey').run());
30 | console.log(new Lion('Simba', 80).run());
31 |
--------------------------------------------------------------------------------
/src/install-typescript.ts:
--------------------------------------------------------------------------------
1 | let message: string = 'Hello, ts-node-dev!';
2 | console.log({ message });
3 |
--------------------------------------------------------------------------------
/src/interfaces.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type ObjectType = {
4 | name: string;
5 | age: number;
6 | };
7 |
8 | interface ObjectInterface {
9 | name: string;
10 | age: number;
11 | }
12 |
13 | let object: ObjectInterface = {
14 | name: 'Ham-san',
15 | age: 43
16 | };
17 |
--------------------------------------------------------------------------------
/src/intersection.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type Pitcher1 = {
4 | throwingSpeed: number;
5 | };
6 |
7 | type Batter1 = {
8 | battingAverage: number;
9 | };
10 |
11 | const DaimajinSasaki: Pitcher1 = {
12 | throwingSpeed: 154
13 | };
14 |
15 | const OchiaiHiromitsu: Batter1 = {
16 | battingAverage: 0.367
17 | };
18 |
19 | // type TwoWayPlayer = {
20 | // throwingSpeed: number;
21 | // battingAverage: number;
22 | // };
23 |
24 | type TwoWayPlayer = Pitcher1 & Batter1;
25 |
26 | const OtaniShouhei: TwoWayPlayer = {
27 | throwingSpeed: 165,
28 | battingAverage: 0.286
29 | };
30 |
--------------------------------------------------------------------------------
/src/literal.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let dayOfTheWeek: '日' | '月' | '火' | '水' | '木' | '金' | '土' = '日';
4 | dayOfTheWeek = '月';
5 | // dayOfTheWeek = '31';
6 |
7 | let month: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 = 1;
8 | month = 12;
9 | // month = 13;
10 |
11 | let TRUE: true = true;
12 | // TRUE = false;
13 |
--------------------------------------------------------------------------------
/src/mapped-types.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type Profile = {
4 | name: string;
5 | age: number;
6 | };
7 |
8 | type PartialProfile = Partial;
9 | type PropertyTypes = keyof Profile;
10 |
11 | type Optional = { [P in keyof T]?: T[P] | null };
12 | type OptoinalProfile = Optional;
13 |
--------------------------------------------------------------------------------
/src/more-constructor.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | class Person {
4 | constructor(public name: string, protected age: number) {}
5 | }
6 |
7 | const me = new Person('はむさん', 43);
8 | console.log(me);
9 |
--------------------------------------------------------------------------------
/src/my-first-class.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | class Person {
4 | name: string;
5 | age: number;
6 |
7 | constructor(name: string, age: number) {
8 | this.name = name;
9 | this.age = age;
10 | }
11 |
12 | profile(): string {
13 | return `name: ${this.name}, age: ${this.age}`;
14 | }
15 | }
16 | let taro = new Person('Taro', 30);
17 | console.log(taro.profile());
18 | // let hanako = new Person();
19 |
--------------------------------------------------------------------------------
/src/namespaces.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | namespace Japanese {
4 | export namespace Tokyo {
5 | export class Person {
6 | constructor(public name: string) {}
7 | }
8 | }
9 | export namespace Osaka {
10 | export class Person {
11 | constructor(public name: string) {}
12 | }
13 | }
14 | }
15 |
16 | namespace English {
17 | export class Person {
18 | constructor(
19 | public firstName: string,
20 | public middleName: string,
21 | public lastName: string
22 | ) {}
23 | }
24 | }
25 |
26 | const me = new Japanese.Tokyo.Person('はむさん');
27 | console.log(me.name);
28 |
29 | const meOsaka = new Japanese.Osaka.Person('はむやん');
30 | console.log(meOsaka.name);
31 |
32 | const michael = new English.Person('Michael', 'Joseph', 'Jackson');
33 | console.log(michael);
34 |
--------------------------------------------------------------------------------
/src/never.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | function error(message: string): never {
4 | throw new Error(message);
5 | }
6 |
7 | try {
8 | let result = error('test');
9 | console.log({ result });
10 | } catch (error) {
11 | console.log({ error });
12 | }
13 |
14 | let foo: void = undefined;
15 | let bar: never = error('only me!');
16 |
--------------------------------------------------------------------------------
/src/null-and-undefined.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let absence: null = null;
4 | // absence = 'hello';
5 |
6 | let data: undefined = undefined;
7 | // data = 123;
8 |
--------------------------------------------------------------------------------
/src/nullable-types.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let profile: { name: string; age: number | null } = {
4 | name: 'Ham',
5 | age: null
6 | };
7 |
--------------------------------------------------------------------------------
/src/number-string.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let year: number = 1976;
4 | // year = false;
5 | console.log(year);
6 |
7 | let age: number = 0x2b;
8 |
9 | console.log(age);
10 |
11 | let name: string = 'Ham';
12 | // name = 10;
13 | console.log(name);
14 |
--------------------------------------------------------------------------------
/src/object.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let profile1: object = { name: 'Ham' };
4 | profile1 = { birthYear: 1976 };
5 |
6 | let profile2: {
7 | name: string;
8 | } = { name: 'Ham' };
9 | profile2 = { name: 'Nimo' };
10 |
--------------------------------------------------------------------------------
/src/optional-arguments.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let bmi: (height: number, weight: number, printable?: boolean) => number = (
4 | height: number,
5 | weight: number,
6 | printable?: boolean
7 | ): number => {
8 | const bmi: number = weight / (height * height);
9 | if (printable) {
10 | console.log({ bmi });
11 | }
12 | return bmi;
13 | };
14 |
15 | bmi(1.78, 86);
16 |
17 | // bmi(身長, 体重, console.logで出力するかどうか?)
18 | // bmi(1.78, 86, true);
19 | // bmi(1.78, 86, false);
20 | // bmi(1.78, 86);
21 |
--------------------------------------------------------------------------------
/src/overloads.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | function double(value: number): number;
4 | function double(value: string): string;
5 |
6 | function double(value: any): any {
7 | console.log(typeof value);
8 | if (typeof value === 'number') {
9 | return value * 2;
10 | } else {
11 | return value + value;
12 | }
13 | }
14 |
15 | console.log(double(100));
16 | console.log(double('Go '));
17 | // console.log(double(true));
18 |
--------------------------------------------------------------------------------
/src/parameters.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | const debugProfile = (name: string, age: number) => {
4 | console.log({ name, age });
5 | };
6 |
7 | debugProfile('Ham', 43);
8 |
9 | type Profile = Parameters;
10 |
11 | const profile: Profile = ['Gloria', 76];
12 |
13 | debugProfile(...profile);
14 |
15 | type MyParameters any> = T extends (
16 | ...args: infer P
17 | ) => any
18 | ? P
19 | : never;
20 |
--------------------------------------------------------------------------------
/src/partial-and-required.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type Profile = {
4 | name: string;
5 | age?: number;
6 | zipCode: number;
7 | };
8 |
9 | type PartialType = Partial;
10 | type RequiredType = Required;
11 |
--------------------------------------------------------------------------------
/src/pick-and-omit.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type DetailedProfile = {
4 | name: string;
5 | height: number;
6 | weight: number;
7 | };
8 |
9 | type SimpleProfile = Pick;
10 | type SmallProfile = Omit;
11 |
12 | type MyOmit = Pick;
13 | type MySmallProfile = MyOmit;
14 |
--------------------------------------------------------------------------------
/src/record.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | // Record
4 |
5 | type Prefectures = 'Tokyo' | 'Chiba' | 'Tottori' | 'Shiga';
6 |
7 | type Covid19InfectionInfo = {
8 | kanji_name: string;
9 | confirmed_cases: number;
10 | };
11 |
12 | const covid19Japan: Record = {
13 | Tokyo: { kanji_name: '東京', confirmed_cases: 1960 },
14 | Chiba: { kanji_name: '千葉', confirmed_cases: 249 },
15 | Tottori: { kanji_name: '鳥取', confirmed_cases: 2 },
16 | Shiga: { kanji_name: '滋賀', confirmed_cases: 13 },
17 | };
18 |
--------------------------------------------------------------------------------
/src/rest-parameters.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | const reducer = (accumulator: number, currentValue: number) => {
4 | console.log({ accumulator, currentValue });
5 | return accumulator + currentValue;
6 | };
7 |
8 | const sum: (...values: number[]) => number = (...values: number[]): number => {
9 | return values.reduce(reducer);
10 | };
11 |
12 | console.log(sum(1, 2, 3, 4, 5));
13 |
--------------------------------------------------------------------------------
/src/return-of-interfaces.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | class Mahotsukai {}
4 | class Souryo {}
5 |
6 | class Taro extends Mahotsukai {}
7 |
8 | interface Kenja {
9 | ionazun(): void;
10 | }
11 |
12 | interface Senshi {
13 | kougeki(): void;
14 | }
15 |
16 | class Jiro implements Kenja, Senshi {
17 | ionazun(): void {
18 | console.log('iozazun');
19 | }
20 |
21 | kougeki(): void {
22 | console.log('kougeki');
23 | }
24 | }
25 |
26 | const jiro = new Jiro();
27 | jiro.ionazun();
28 | jiro.kougeki();
29 |
--------------------------------------------------------------------------------
/src/return-type.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | function add(a: number, b: number) {
4 | return a + b;
5 | }
6 |
7 | console.log(add(1, 2));
8 |
9 | type ReturnTypeFromAdd = ReturnType;
10 |
--------------------------------------------------------------------------------
/src/static-members.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | class Me {
4 | static isProgrammer: boolean = true;
5 | static firstName: string = 'Atsushi';
6 | static lastName: string = 'Ishida';
7 |
8 | static work() {
9 | // "Hey, guys! This is Atsushi! Are you interested in TypeScript? Let's dive into TypeScript!";
10 | return `Hey, guys! This is ${this.firstName}! Are you interested in TypeScript? Let's dive into TypeScript!`;
11 | }
12 | }
13 |
14 | // let me = new Me();
15 | // console.log(me.isProgrammer);
16 | console.log(Me.isProgrammer);
17 | console.log(Me.work());
18 |
--------------------------------------------------------------------------------
/src/tuple.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let profile: [string, number] = ['Ham', 43];
4 | // profile = [43, 'Ham'];
5 |
--------------------------------------------------------------------------------
/src/type-aliases.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type Mojiretsu = string;
4 |
5 | const fooString: string = 'Hello';
6 | const fooMojiretsu: Mojiretsu = 'Hello';
7 |
8 | const example1 = {
9 | name: 'Ham',
10 | age: 43
11 | };
12 |
13 | type Profile = {
14 | name: string;
15 | age: number;
16 | };
17 |
18 | const example2: Profile = {
19 | name: 'Ham',
20 | age: 43
21 | };
22 |
23 | type Profile2 = typeof example1;
24 |
--------------------------------------------------------------------------------
/src/type-assertions.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let name: any = 'Ham';
4 |
5 | let length = (name).length;
6 |
7 | // length = 'foo';
8 |
--------------------------------------------------------------------------------
/src/type-compatibility.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let fooCompatible: any;
4 | let barCompatible: string = 'TypeScript';
5 |
6 | console.log(typeof fooCompatible);
7 |
8 | fooCompatible = barCompatible;
9 |
10 | console.log(typeof fooCompatible);
11 |
12 | let fooIncompatible: string;
13 | let barIncompatible: number = 1;
14 |
15 | // fooIncompatible = barIncompatible;
16 |
17 | let fooString: string;
18 | let barString: string = 'string';
19 |
20 | fooString = barString;
21 |
22 | let fooStringLiteral: 'fooStringLiteral' = 'fooStringLiteral';
23 | fooString = fooStringLiteral;
24 |
25 | let fooNumber: number;
26 | let fooNumberLiteral: 1976 = 1976;
27 | fooNumber = fooNumberLiteral;
28 |
29 | interface Animal {
30 | age: number;
31 | name: string;
32 | }
33 |
34 | class Person {
35 | constructor(public age: number, public name: string) {}
36 | }
37 |
38 | let me: Animal;
39 | me = new Person(43, 'HamSan');
40 | console.log({ me });
41 |
--------------------------------------------------------------------------------
/src/type-safety.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let isFinished: boolean = true;
4 | // isFinished = 1;
5 |
--------------------------------------------------------------------------------
/src/union.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | let value: number | string = 1;
4 | value = 'foo';
5 | value = 100;
6 |
--------------------------------------------------------------------------------
/src/unknown.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | const kansu = (): number => 43;
4 |
5 | let numberAny: any = kansu();
6 | let numberUnknown: unknown = kansu();
7 |
8 | let sumAny = numberAny + 10;
9 | if (typeof numberUnknown === 'number') {
10 | let sumUnknown = numberUnknown + 10;
11 | }
12 |
--------------------------------------------------------------------------------
/src/utility-types-readonly.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | type Profile = {
4 | name: string;
5 | age: number;
6 | };
7 |
8 | const me: Profile = {
9 | name: 'Ham',
10 | age: 43,
11 | };
12 |
13 | me.age++;
14 |
15 | console.log(me);
16 |
17 | type PersonalDataType = Readonly;
18 |
19 | const friend: PersonalDataType = {
20 | name: 'Shigeru',
21 | age: 40,
22 | };
23 |
24 | // friend.age++;
25 |
26 | type YomitoriSenyo = { readonly [P in keyof T]: T[P] };
27 | type YomitoriSenyoProfile = YomitoriSenyo;
28 |
--------------------------------------------------------------------------------
/src/void.ts:
--------------------------------------------------------------------------------
1 | export {};
2 |
3 | function returnNothing(): void {
4 | console.log("I dont't return anything!");
5 | }
6 |
7 | console.log(returnNothing());
8 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Basic Options */
4 | // "incremental": true, /* Enable incremental compilation */
5 | "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
6 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
7 | // "lib": [], /* Specify library files to be included in the compilation. */
8 | // "allowJs": true, /* Allow javascript files to be compiled. */
9 | // "checkJs": true, /* Report errors in .js files. */
10 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
11 | // "declaration": true, /* Generates corresponding '.d.ts' file. */
12 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
13 | // "sourceMap": true, /* Generates corresponding '.map' file. */
14 | // "outFile": "./", /* Concatenate and emit output to single file. */
15 | // "outDir": "./", /* Redirect output structure to the directory. */
16 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
17 | // "composite": true, /* Enable project compilation */
18 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
19 | // "removeComments": true, /* Do not emit comments to output. */
20 | // "noEmit": true, /* Do not emit outputs. */
21 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */
22 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
23 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
24 |
25 | /* Strict Type-Checking Options */
26 | "strict": true, /* Enable all strict type-checking options. */
27 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
28 | // "strictNullChecks": true, /* Enable strict null checks. */
29 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */
30 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
31 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
32 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
33 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
34 |
35 | /* Additional Checks */
36 | // "noUnusedLocals": true, /* Report errors on unused locals. */
37 | // "noUnusedParameters": true, /* Report errors on unused parameters. */
38 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
39 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
40 |
41 | /* Module Resolution Options */
42 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
43 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
44 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
45 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
46 | // "typeRoots": [], /* List of folders to include type definitions from. */
47 | // "types": [], /* Type declaration files to be included in compilation. */
48 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
49 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
50 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
51 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
52 |
53 | /* Source Map Options */
54 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
55 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
56 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
57 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
58 |
59 | /* Experimental Options */
60 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
61 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
62 |
63 | /* Advanced Options */
64 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
65 | }
66 | }
67 |
--------------------------------------------------------------------------------