├── .gitignore
├── LICENSE
├── README.md
├── index.html
├── package-lock.json
├── package.json
└── server.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | node_modules
3 | .idea
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Kinsta Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Kinsta - Hello World - Node.js
2 | An example of how to set your Node.js application up to enable deployment on Kinsta App Hosting services.
3 |
4 | ---
5 | Kinsta is a developer-centric cloud host / PaaS. We’re striving to make it easier for you to share your web projects with your users. Focus on coding and building, and we’ll take care of deployment and provide fast, scalable hosting. + 24/7 expert-only support.
6 |
7 | - [Start your free trial](https://kinsta.com/signup/?product_type=app-db)
8 | - [Application Hosting](https://kinsta.com/application-hosting)
9 | - [Database Hosting](https://kinsta.com/database-hosting)
10 |
11 | ## Dependency Management
12 | During the deployment process Kinsta will automatically install dependencies defined in your `package.json` file.
13 |
14 | ## Web Server Setup
15 |
16 | ### Port
17 | Kinsta automatically sets the `PORT` environment variable. You should **not** define it yourself and you should **not** hard-code it into the application. Use `process.env.PORT` in your code when referring to the server port.
18 |
19 | ```
20 | app.listen(process.env.PORT, () => {
21 | console.log(`Hello World Application is running on port ${process.env.PORT}`)
22 | })
23 | ```
24 |
25 | ### Start Command
26 | When deploying an application Kinsta will automatically create a web process with `npm start` as the entry point. Make sure to use this command to run your server. If you would like to use another command you will need modify the runtime process in MyKinsta.
27 |
28 | ```
29 | "scripts": {
30 | "start": "node server.js"
31 | },
32 | ```
33 |
34 | ## Deployment Lifecycle
35 | Whenever a deployment is initiated (through creating an application or re-deploying due to an incoming commit), the `npm build` command is run, followed by the `npm start` command.
36 |
37 | ## What is Node.JS
38 | Node.js is a runtime environment that allows developers to execute JavaScript code outside of a web browser, enabling server-side scripting and building scalable network applications. It utilizes an event-driven, non-blocking I/O model, making it efficient for handling concurrent requests and real-time applications. Learn more on [nodejs.org](https://nodejs.org).
39 |
40 | ## Watch How to Set Up a Node.JS Application on Kinsta
41 | [](https://www.youtube.com/watch?v=JBbyMn7dNys)
42 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
Node.js project | Kinsta Welcome to your Node.js project Here are some ideas how to get started
Join the Kinsta Community forum and connect with developers
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hello-world-node",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "hello-world-node",
9 | "version": "1.0.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "dotenv": "^16.3.1",
13 | "express": "^4.18.2"
14 | }
15 | },
16 | "node_modules/accepts": {
17 | "version": "1.3.8",
18 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
19 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
20 | "dependencies": {
21 | "mime-types": "~2.1.34",
22 | "negotiator": "0.6.3"
23 | },
24 | "engines": {
25 | "node": ">= 0.6"
26 | }
27 | },
28 | "node_modules/array-flatten": {
29 | "version": "1.1.1",
30 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
31 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
32 | },
33 | "node_modules/body-parser": {
34 | "version": "1.20.1",
35 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
36 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
37 | "dependencies": {
38 | "bytes": "3.1.2",
39 | "content-type": "~1.0.4",
40 | "debug": "2.6.9",
41 | "depd": "2.0.0",
42 | "destroy": "1.2.0",
43 | "http-errors": "2.0.0",
44 | "iconv-lite": "0.4.24",
45 | "on-finished": "2.4.1",
46 | "qs": "6.11.0",
47 | "raw-body": "2.5.1",
48 | "type-is": "~1.6.18",
49 | "unpipe": "1.0.0"
50 | },
51 | "engines": {
52 | "node": ">= 0.8",
53 | "npm": "1.2.8000 || >= 1.4.16"
54 | }
55 | },
56 | "node_modules/bytes": {
57 | "version": "3.1.2",
58 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
59 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
60 | "engines": {
61 | "node": ">= 0.8"
62 | }
63 | },
64 | "node_modules/call-bind": {
65 | "version": "1.0.5",
66 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
67 | "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
68 | "dependencies": {
69 | "function-bind": "^1.1.2",
70 | "get-intrinsic": "^1.2.1",
71 | "set-function-length": "^1.1.1"
72 | },
73 | "funding": {
74 | "url": "https://github.com/sponsors/ljharb"
75 | }
76 | },
77 | "node_modules/content-disposition": {
78 | "version": "0.5.4",
79 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
80 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
81 | "dependencies": {
82 | "safe-buffer": "5.2.1"
83 | },
84 | "engines": {
85 | "node": ">= 0.6"
86 | }
87 | },
88 | "node_modules/content-type": {
89 | "version": "1.0.5",
90 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
91 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
92 | "engines": {
93 | "node": ">= 0.6"
94 | }
95 | },
96 | "node_modules/cookie": {
97 | "version": "0.5.0",
98 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
99 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
100 | "engines": {
101 | "node": ">= 0.6"
102 | }
103 | },
104 | "node_modules/cookie-signature": {
105 | "version": "1.0.6",
106 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
107 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
108 | },
109 | "node_modules/debug": {
110 | "version": "2.6.9",
111 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
112 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
113 | "dependencies": {
114 | "ms": "2.0.0"
115 | }
116 | },
117 | "node_modules/define-data-property": {
118 | "version": "1.1.1",
119 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
120 | "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
121 | "dependencies": {
122 | "get-intrinsic": "^1.2.1",
123 | "gopd": "^1.0.1",
124 | "has-property-descriptors": "^1.0.0"
125 | },
126 | "engines": {
127 | "node": ">= 0.4"
128 | }
129 | },
130 | "node_modules/depd": {
131 | "version": "2.0.0",
132 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
133 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
134 | "engines": {
135 | "node": ">= 0.8"
136 | }
137 | },
138 | "node_modules/destroy": {
139 | "version": "1.2.0",
140 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
141 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
142 | "engines": {
143 | "node": ">= 0.8",
144 | "npm": "1.2.8000 || >= 1.4.16"
145 | }
146 | },
147 | "node_modules/dotenv": {
148 | "version": "16.3.1",
149 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
150 | "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
151 | "engines": {
152 | "node": ">=12"
153 | },
154 | "funding": {
155 | "url": "https://github.com/motdotla/dotenv?sponsor=1"
156 | }
157 | },
158 | "node_modules/ee-first": {
159 | "version": "1.1.1",
160 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
161 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
162 | },
163 | "node_modules/encodeurl": {
164 | "version": "1.0.2",
165 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
166 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
167 | "engines": {
168 | "node": ">= 0.8"
169 | }
170 | },
171 | "node_modules/escape-html": {
172 | "version": "1.0.3",
173 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
174 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
175 | },
176 | "node_modules/etag": {
177 | "version": "1.8.1",
178 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
179 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
180 | "engines": {
181 | "node": ">= 0.6"
182 | }
183 | },
184 | "node_modules/express": {
185 | "version": "4.18.2",
186 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
187 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
188 | "dependencies": {
189 | "accepts": "~1.3.8",
190 | "array-flatten": "1.1.1",
191 | "body-parser": "1.20.1",
192 | "content-disposition": "0.5.4",
193 | "content-type": "~1.0.4",
194 | "cookie": "0.5.0",
195 | "cookie-signature": "1.0.6",
196 | "debug": "2.6.9",
197 | "depd": "2.0.0",
198 | "encodeurl": "~1.0.2",
199 | "escape-html": "~1.0.3",
200 | "etag": "~1.8.1",
201 | "finalhandler": "1.2.0",
202 | "fresh": "0.5.2",
203 | "http-errors": "2.0.0",
204 | "merge-descriptors": "1.0.1",
205 | "methods": "~1.1.2",
206 | "on-finished": "2.4.1",
207 | "parseurl": "~1.3.3",
208 | "path-to-regexp": "0.1.7",
209 | "proxy-addr": "~2.0.7",
210 | "qs": "6.11.0",
211 | "range-parser": "~1.2.1",
212 | "safe-buffer": "5.2.1",
213 | "send": "0.18.0",
214 | "serve-static": "1.15.0",
215 | "setprototypeof": "1.2.0",
216 | "statuses": "2.0.1",
217 | "type-is": "~1.6.18",
218 | "utils-merge": "1.0.1",
219 | "vary": "~1.1.2"
220 | },
221 | "engines": {
222 | "node": ">= 0.10.0"
223 | }
224 | },
225 | "node_modules/finalhandler": {
226 | "version": "1.2.0",
227 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
228 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
229 | "dependencies": {
230 | "debug": "2.6.9",
231 | "encodeurl": "~1.0.2",
232 | "escape-html": "~1.0.3",
233 | "on-finished": "2.4.1",
234 | "parseurl": "~1.3.3",
235 | "statuses": "2.0.1",
236 | "unpipe": "~1.0.0"
237 | },
238 | "engines": {
239 | "node": ">= 0.8"
240 | }
241 | },
242 | "node_modules/forwarded": {
243 | "version": "0.2.0",
244 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
245 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
246 | "engines": {
247 | "node": ">= 0.6"
248 | }
249 | },
250 | "node_modules/fresh": {
251 | "version": "0.5.2",
252 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
253 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
254 | "engines": {
255 | "node": ">= 0.6"
256 | }
257 | },
258 | "node_modules/function-bind": {
259 | "version": "1.1.2",
260 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
261 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
262 | "funding": {
263 | "url": "https://github.com/sponsors/ljharb"
264 | }
265 | },
266 | "node_modules/get-intrinsic": {
267 | "version": "1.2.2",
268 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
269 | "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
270 | "dependencies": {
271 | "function-bind": "^1.1.2",
272 | "has-proto": "^1.0.1",
273 | "has-symbols": "^1.0.3",
274 | "hasown": "^2.0.0"
275 | },
276 | "funding": {
277 | "url": "https://github.com/sponsors/ljharb"
278 | }
279 | },
280 | "node_modules/gopd": {
281 | "version": "1.0.1",
282 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
283 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
284 | "dependencies": {
285 | "get-intrinsic": "^1.1.3"
286 | },
287 | "funding": {
288 | "url": "https://github.com/sponsors/ljharb"
289 | }
290 | },
291 | "node_modules/has-property-descriptors": {
292 | "version": "1.0.1",
293 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
294 | "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
295 | "dependencies": {
296 | "get-intrinsic": "^1.2.2"
297 | },
298 | "funding": {
299 | "url": "https://github.com/sponsors/ljharb"
300 | }
301 | },
302 | "node_modules/has-proto": {
303 | "version": "1.0.1",
304 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
305 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
306 | "engines": {
307 | "node": ">= 0.4"
308 | },
309 | "funding": {
310 | "url": "https://github.com/sponsors/ljharb"
311 | }
312 | },
313 | "node_modules/has-symbols": {
314 | "version": "1.0.3",
315 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
316 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
317 | "engines": {
318 | "node": ">= 0.4"
319 | },
320 | "funding": {
321 | "url": "https://github.com/sponsors/ljharb"
322 | }
323 | },
324 | "node_modules/hasown": {
325 | "version": "2.0.0",
326 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
327 | "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
328 | "dependencies": {
329 | "function-bind": "^1.1.2"
330 | },
331 | "engines": {
332 | "node": ">= 0.4"
333 | }
334 | },
335 | "node_modules/http-errors": {
336 | "version": "2.0.0",
337 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
338 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
339 | "dependencies": {
340 | "depd": "2.0.0",
341 | "inherits": "2.0.4",
342 | "setprototypeof": "1.2.0",
343 | "statuses": "2.0.1",
344 | "toidentifier": "1.0.1"
345 | },
346 | "engines": {
347 | "node": ">= 0.8"
348 | }
349 | },
350 | "node_modules/iconv-lite": {
351 | "version": "0.4.24",
352 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
353 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
354 | "dependencies": {
355 | "safer-buffer": ">= 2.1.2 < 3"
356 | },
357 | "engines": {
358 | "node": ">=0.10.0"
359 | }
360 | },
361 | "node_modules/inherits": {
362 | "version": "2.0.4",
363 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
364 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
365 | },
366 | "node_modules/ipaddr.js": {
367 | "version": "1.9.1",
368 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
369 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
370 | "engines": {
371 | "node": ">= 0.10"
372 | }
373 | },
374 | "node_modules/media-typer": {
375 | "version": "0.3.0",
376 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
377 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
378 | "engines": {
379 | "node": ">= 0.6"
380 | }
381 | },
382 | "node_modules/merge-descriptors": {
383 | "version": "1.0.1",
384 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
385 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
386 | },
387 | "node_modules/methods": {
388 | "version": "1.1.2",
389 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
390 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
391 | "engines": {
392 | "node": ">= 0.6"
393 | }
394 | },
395 | "node_modules/mime": {
396 | "version": "1.6.0",
397 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
398 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
399 | "bin": {
400 | "mime": "cli.js"
401 | },
402 | "engines": {
403 | "node": ">=4"
404 | }
405 | },
406 | "node_modules/mime-db": {
407 | "version": "1.52.0",
408 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
409 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
410 | "engines": {
411 | "node": ">= 0.6"
412 | }
413 | },
414 | "node_modules/mime-types": {
415 | "version": "2.1.35",
416 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
417 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
418 | "dependencies": {
419 | "mime-db": "1.52.0"
420 | },
421 | "engines": {
422 | "node": ">= 0.6"
423 | }
424 | },
425 | "node_modules/ms": {
426 | "version": "2.0.0",
427 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
428 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
429 | },
430 | "node_modules/negotiator": {
431 | "version": "0.6.3",
432 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
433 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
434 | "engines": {
435 | "node": ">= 0.6"
436 | }
437 | },
438 | "node_modules/object-inspect": {
439 | "version": "1.13.1",
440 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
441 | "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
442 | "funding": {
443 | "url": "https://github.com/sponsors/ljharb"
444 | }
445 | },
446 | "node_modules/on-finished": {
447 | "version": "2.4.1",
448 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
449 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
450 | "dependencies": {
451 | "ee-first": "1.1.1"
452 | },
453 | "engines": {
454 | "node": ">= 0.8"
455 | }
456 | },
457 | "node_modules/parseurl": {
458 | "version": "1.3.3",
459 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
460 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
461 | "engines": {
462 | "node": ">= 0.8"
463 | }
464 | },
465 | "node_modules/path-to-regexp": {
466 | "version": "0.1.7",
467 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
468 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
469 | },
470 | "node_modules/proxy-addr": {
471 | "version": "2.0.7",
472 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
473 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
474 | "dependencies": {
475 | "forwarded": "0.2.0",
476 | "ipaddr.js": "1.9.1"
477 | },
478 | "engines": {
479 | "node": ">= 0.10"
480 | }
481 | },
482 | "node_modules/qs": {
483 | "version": "6.11.0",
484 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
485 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
486 | "dependencies": {
487 | "side-channel": "^1.0.4"
488 | },
489 | "engines": {
490 | "node": ">=0.6"
491 | },
492 | "funding": {
493 | "url": "https://github.com/sponsors/ljharb"
494 | }
495 | },
496 | "node_modules/range-parser": {
497 | "version": "1.2.1",
498 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
499 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
500 | "engines": {
501 | "node": ">= 0.6"
502 | }
503 | },
504 | "node_modules/raw-body": {
505 | "version": "2.5.1",
506 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
507 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
508 | "dependencies": {
509 | "bytes": "3.1.2",
510 | "http-errors": "2.0.0",
511 | "iconv-lite": "0.4.24",
512 | "unpipe": "1.0.0"
513 | },
514 | "engines": {
515 | "node": ">= 0.8"
516 | }
517 | },
518 | "node_modules/safe-buffer": {
519 | "version": "5.2.1",
520 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
521 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
522 | "funding": [
523 | {
524 | "type": "github",
525 | "url": "https://github.com/sponsors/feross"
526 | },
527 | {
528 | "type": "patreon",
529 | "url": "https://www.patreon.com/feross"
530 | },
531 | {
532 | "type": "consulting",
533 | "url": "https://feross.org/support"
534 | }
535 | ]
536 | },
537 | "node_modules/safer-buffer": {
538 | "version": "2.1.2",
539 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
540 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
541 | },
542 | "node_modules/send": {
543 | "version": "0.18.0",
544 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
545 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
546 | "dependencies": {
547 | "debug": "2.6.9",
548 | "depd": "2.0.0",
549 | "destroy": "1.2.0",
550 | "encodeurl": "~1.0.2",
551 | "escape-html": "~1.0.3",
552 | "etag": "~1.8.1",
553 | "fresh": "0.5.2",
554 | "http-errors": "2.0.0",
555 | "mime": "1.6.0",
556 | "ms": "2.1.3",
557 | "on-finished": "2.4.1",
558 | "range-parser": "~1.2.1",
559 | "statuses": "2.0.1"
560 | },
561 | "engines": {
562 | "node": ">= 0.8.0"
563 | }
564 | },
565 | "node_modules/send/node_modules/ms": {
566 | "version": "2.1.3",
567 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
568 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
569 | },
570 | "node_modules/serve-static": {
571 | "version": "1.15.0",
572 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
573 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
574 | "dependencies": {
575 | "encodeurl": "~1.0.2",
576 | "escape-html": "~1.0.3",
577 | "parseurl": "~1.3.3",
578 | "send": "0.18.0"
579 | },
580 | "engines": {
581 | "node": ">= 0.8.0"
582 | }
583 | },
584 | "node_modules/set-function-length": {
585 | "version": "1.1.1",
586 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
587 | "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
588 | "dependencies": {
589 | "define-data-property": "^1.1.1",
590 | "get-intrinsic": "^1.2.1",
591 | "gopd": "^1.0.1",
592 | "has-property-descriptors": "^1.0.0"
593 | },
594 | "engines": {
595 | "node": ">= 0.4"
596 | }
597 | },
598 | "node_modules/setprototypeof": {
599 | "version": "1.2.0",
600 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
601 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
602 | },
603 | "node_modules/side-channel": {
604 | "version": "1.0.4",
605 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
606 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
607 | "dependencies": {
608 | "call-bind": "^1.0.0",
609 | "get-intrinsic": "^1.0.2",
610 | "object-inspect": "^1.9.0"
611 | },
612 | "funding": {
613 | "url": "https://github.com/sponsors/ljharb"
614 | }
615 | },
616 | "node_modules/statuses": {
617 | "version": "2.0.1",
618 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
619 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
620 | "engines": {
621 | "node": ">= 0.8"
622 | }
623 | },
624 | "node_modules/toidentifier": {
625 | "version": "1.0.1",
626 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
627 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
628 | "engines": {
629 | "node": ">=0.6"
630 | }
631 | },
632 | "node_modules/type-is": {
633 | "version": "1.6.18",
634 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
635 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
636 | "dependencies": {
637 | "media-typer": "0.3.0",
638 | "mime-types": "~2.1.24"
639 | },
640 | "engines": {
641 | "node": ">= 0.6"
642 | }
643 | },
644 | "node_modules/unpipe": {
645 | "version": "1.0.0",
646 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
647 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
648 | "engines": {
649 | "node": ">= 0.8"
650 | }
651 | },
652 | "node_modules/utils-merge": {
653 | "version": "1.0.1",
654 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
655 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
656 | "engines": {
657 | "node": ">= 0.4.0"
658 | }
659 | },
660 | "node_modules/vary": {
661 | "version": "1.1.2",
662 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
663 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
664 | "engines": {
665 | "node": ">= 0.8"
666 | }
667 | }
668 | },
669 | "dependencies": {
670 | "accepts": {
671 | "version": "1.3.8",
672 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
673 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
674 | "requires": {
675 | "mime-types": "~2.1.34",
676 | "negotiator": "0.6.3"
677 | }
678 | },
679 | "array-flatten": {
680 | "version": "1.1.1",
681 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
682 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
683 | },
684 | "body-parser": {
685 | "version": "1.20.1",
686 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
687 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
688 | "requires": {
689 | "bytes": "3.1.2",
690 | "content-type": "~1.0.4",
691 | "debug": "2.6.9",
692 | "depd": "2.0.0",
693 | "destroy": "1.2.0",
694 | "http-errors": "2.0.0",
695 | "iconv-lite": "0.4.24",
696 | "on-finished": "2.4.1",
697 | "qs": "6.11.0",
698 | "raw-body": "2.5.1",
699 | "type-is": "~1.6.18",
700 | "unpipe": "1.0.0"
701 | }
702 | },
703 | "bytes": {
704 | "version": "3.1.2",
705 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
706 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
707 | },
708 | "call-bind": {
709 | "version": "1.0.5",
710 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
711 | "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
712 | "requires": {
713 | "function-bind": "^1.1.2",
714 | "get-intrinsic": "^1.2.1",
715 | "set-function-length": "^1.1.1"
716 | }
717 | },
718 | "content-disposition": {
719 | "version": "0.5.4",
720 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
721 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
722 | "requires": {
723 | "safe-buffer": "5.2.1"
724 | }
725 | },
726 | "content-type": {
727 | "version": "1.0.5",
728 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
729 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
730 | },
731 | "cookie": {
732 | "version": "0.5.0",
733 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
734 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
735 | },
736 | "cookie-signature": {
737 | "version": "1.0.6",
738 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
739 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
740 | },
741 | "debug": {
742 | "version": "2.6.9",
743 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
744 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
745 | "requires": {
746 | "ms": "2.0.0"
747 | }
748 | },
749 | "define-data-property": {
750 | "version": "1.1.1",
751 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
752 | "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
753 | "requires": {
754 | "get-intrinsic": "^1.2.1",
755 | "gopd": "^1.0.1",
756 | "has-property-descriptors": "^1.0.0"
757 | }
758 | },
759 | "depd": {
760 | "version": "2.0.0",
761 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
762 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
763 | },
764 | "destroy": {
765 | "version": "1.2.0",
766 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
767 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
768 | },
769 | "dotenv": {
770 | "version": "16.3.1",
771 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
772 | "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ=="
773 | },
774 | "ee-first": {
775 | "version": "1.1.1",
776 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
777 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
778 | },
779 | "encodeurl": {
780 | "version": "1.0.2",
781 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
782 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
783 | },
784 | "escape-html": {
785 | "version": "1.0.3",
786 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
787 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
788 | },
789 | "etag": {
790 | "version": "1.8.1",
791 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
792 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
793 | },
794 | "express": {
795 | "version": "4.18.2",
796 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
797 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
798 | "requires": {
799 | "accepts": "~1.3.8",
800 | "array-flatten": "1.1.1",
801 | "body-parser": "1.20.1",
802 | "content-disposition": "0.5.4",
803 | "content-type": "~1.0.4",
804 | "cookie": "0.5.0",
805 | "cookie-signature": "1.0.6",
806 | "debug": "2.6.9",
807 | "depd": "2.0.0",
808 | "encodeurl": "~1.0.2",
809 | "escape-html": "~1.0.3",
810 | "etag": "~1.8.1",
811 | "finalhandler": "1.2.0",
812 | "fresh": "0.5.2",
813 | "http-errors": "2.0.0",
814 | "merge-descriptors": "1.0.1",
815 | "methods": "~1.1.2",
816 | "on-finished": "2.4.1",
817 | "parseurl": "~1.3.3",
818 | "path-to-regexp": "0.1.7",
819 | "proxy-addr": "~2.0.7",
820 | "qs": "6.11.0",
821 | "range-parser": "~1.2.1",
822 | "safe-buffer": "5.2.1",
823 | "send": "0.18.0",
824 | "serve-static": "1.15.0",
825 | "setprototypeof": "1.2.0",
826 | "statuses": "2.0.1",
827 | "type-is": "~1.6.18",
828 | "utils-merge": "1.0.1",
829 | "vary": "~1.1.2"
830 | }
831 | },
832 | "finalhandler": {
833 | "version": "1.2.0",
834 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
835 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
836 | "requires": {
837 | "debug": "2.6.9",
838 | "encodeurl": "~1.0.2",
839 | "escape-html": "~1.0.3",
840 | "on-finished": "2.4.1",
841 | "parseurl": "~1.3.3",
842 | "statuses": "2.0.1",
843 | "unpipe": "~1.0.0"
844 | }
845 | },
846 | "forwarded": {
847 | "version": "0.2.0",
848 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
849 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
850 | },
851 | "fresh": {
852 | "version": "0.5.2",
853 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
854 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
855 | },
856 | "function-bind": {
857 | "version": "1.1.2",
858 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
859 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
860 | },
861 | "get-intrinsic": {
862 | "version": "1.2.2",
863 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
864 | "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
865 | "requires": {
866 | "function-bind": "^1.1.2",
867 | "has-proto": "^1.0.1",
868 | "has-symbols": "^1.0.3",
869 | "hasown": "^2.0.0"
870 | }
871 | },
872 | "gopd": {
873 | "version": "1.0.1",
874 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
875 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
876 | "requires": {
877 | "get-intrinsic": "^1.1.3"
878 | }
879 | },
880 | "has-property-descriptors": {
881 | "version": "1.0.1",
882 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
883 | "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
884 | "requires": {
885 | "get-intrinsic": "^1.2.2"
886 | }
887 | },
888 | "has-proto": {
889 | "version": "1.0.1",
890 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
891 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
892 | },
893 | "has-symbols": {
894 | "version": "1.0.3",
895 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
896 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
897 | },
898 | "hasown": {
899 | "version": "2.0.0",
900 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
901 | "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
902 | "requires": {
903 | "function-bind": "^1.1.2"
904 | }
905 | },
906 | "http-errors": {
907 | "version": "2.0.0",
908 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
909 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
910 | "requires": {
911 | "depd": "2.0.0",
912 | "inherits": "2.0.4",
913 | "setprototypeof": "1.2.0",
914 | "statuses": "2.0.1",
915 | "toidentifier": "1.0.1"
916 | }
917 | },
918 | "iconv-lite": {
919 | "version": "0.4.24",
920 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
921 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
922 | "requires": {
923 | "safer-buffer": ">= 2.1.2 < 3"
924 | }
925 | },
926 | "inherits": {
927 | "version": "2.0.4",
928 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
929 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
930 | },
931 | "ipaddr.js": {
932 | "version": "1.9.1",
933 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
934 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
935 | },
936 | "media-typer": {
937 | "version": "0.3.0",
938 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
939 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
940 | },
941 | "merge-descriptors": {
942 | "version": "1.0.1",
943 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
944 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
945 | },
946 | "methods": {
947 | "version": "1.1.2",
948 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
949 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
950 | },
951 | "mime": {
952 | "version": "1.6.0",
953 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
954 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
955 | },
956 | "mime-db": {
957 | "version": "1.52.0",
958 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
959 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
960 | },
961 | "mime-types": {
962 | "version": "2.1.35",
963 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
964 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
965 | "requires": {
966 | "mime-db": "1.52.0"
967 | }
968 | },
969 | "ms": {
970 | "version": "2.0.0",
971 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
972 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
973 | },
974 | "negotiator": {
975 | "version": "0.6.3",
976 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
977 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
978 | },
979 | "object-inspect": {
980 | "version": "1.13.1",
981 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
982 | "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ=="
983 | },
984 | "on-finished": {
985 | "version": "2.4.1",
986 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
987 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
988 | "requires": {
989 | "ee-first": "1.1.1"
990 | }
991 | },
992 | "parseurl": {
993 | "version": "1.3.3",
994 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
995 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
996 | },
997 | "path-to-regexp": {
998 | "version": "0.1.7",
999 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1000 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1001 | },
1002 | "proxy-addr": {
1003 | "version": "2.0.7",
1004 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1005 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1006 | "requires": {
1007 | "forwarded": "0.2.0",
1008 | "ipaddr.js": "1.9.1"
1009 | }
1010 | },
1011 | "qs": {
1012 | "version": "6.11.0",
1013 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1014 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1015 | "requires": {
1016 | "side-channel": "^1.0.4"
1017 | }
1018 | },
1019 | "range-parser": {
1020 | "version": "1.2.1",
1021 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1022 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1023 | },
1024 | "raw-body": {
1025 | "version": "2.5.1",
1026 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1027 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1028 | "requires": {
1029 | "bytes": "3.1.2",
1030 | "http-errors": "2.0.0",
1031 | "iconv-lite": "0.4.24",
1032 | "unpipe": "1.0.0"
1033 | }
1034 | },
1035 | "safe-buffer": {
1036 | "version": "5.2.1",
1037 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1038 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1039 | },
1040 | "safer-buffer": {
1041 | "version": "2.1.2",
1042 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1043 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1044 | },
1045 | "send": {
1046 | "version": "0.18.0",
1047 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1048 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1049 | "requires": {
1050 | "debug": "2.6.9",
1051 | "depd": "2.0.0",
1052 | "destroy": "1.2.0",
1053 | "encodeurl": "~1.0.2",
1054 | "escape-html": "~1.0.3",
1055 | "etag": "~1.8.1",
1056 | "fresh": "0.5.2",
1057 | "http-errors": "2.0.0",
1058 | "mime": "1.6.0",
1059 | "ms": "2.1.3",
1060 | "on-finished": "2.4.1",
1061 | "range-parser": "~1.2.1",
1062 | "statuses": "2.0.1"
1063 | },
1064 | "dependencies": {
1065 | "ms": {
1066 | "version": "2.1.3",
1067 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1068 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1069 | }
1070 | }
1071 | },
1072 | "serve-static": {
1073 | "version": "1.15.0",
1074 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1075 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1076 | "requires": {
1077 | "encodeurl": "~1.0.2",
1078 | "escape-html": "~1.0.3",
1079 | "parseurl": "~1.3.3",
1080 | "send": "0.18.0"
1081 | }
1082 | },
1083 | "set-function-length": {
1084 | "version": "1.1.1",
1085 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
1086 | "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
1087 | "requires": {
1088 | "define-data-property": "^1.1.1",
1089 | "get-intrinsic": "^1.2.1",
1090 | "gopd": "^1.0.1",
1091 | "has-property-descriptors": "^1.0.0"
1092 | }
1093 | },
1094 | "setprototypeof": {
1095 | "version": "1.2.0",
1096 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1097 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1098 | },
1099 | "side-channel": {
1100 | "version": "1.0.4",
1101 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1102 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1103 | "requires": {
1104 | "call-bind": "^1.0.0",
1105 | "get-intrinsic": "^1.0.2",
1106 | "object-inspect": "^1.9.0"
1107 | }
1108 | },
1109 | "statuses": {
1110 | "version": "2.0.1",
1111 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1112 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1113 | },
1114 | "toidentifier": {
1115 | "version": "1.0.1",
1116 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1117 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1118 | },
1119 | "type-is": {
1120 | "version": "1.6.18",
1121 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1122 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1123 | "requires": {
1124 | "media-typer": "0.3.0",
1125 | "mime-types": "~2.1.24"
1126 | }
1127 | },
1128 | "unpipe": {
1129 | "version": "1.0.0",
1130 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1131 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
1132 | },
1133 | "utils-merge": {
1134 | "version": "1.0.1",
1135 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1136 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
1137 | },
1138 | "vary": {
1139 | "version": "1.1.2",
1140 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1141 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
1142 | }
1143 | }
1144 | }
1145 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hello-world-node",
3 | "version": "1.0.0",
4 | "description": "An example of how to set your Node.js application up to enable deployment on Kinsta App Hosting services.",
5 | "main": "server.js",
6 | "scripts": {
7 | "start": "node server.js"
8 | },
9 | "author": "",
10 | "license": "MIT",
11 | "dependencies": {
12 | "dotenv": "^16.3.1",
13 | "express": "^4.18.2"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | require('dotenv').config()
2 | const express = require('express')
3 | const path = require('path')
4 | const app = express()
5 |
6 | app.get('/', async (req, res) => {
7 | res.sendFile(path.join(__dirname, '/index.html'));
8 | })
9 |
10 | app.listen(process.env.PORT, () => {
11 | console.log(`Hello World Application is running on port ${process.env.PORT}`)
12 | })
13 |
--------------------------------------------------------------------------------