diff --git a/.gcloudignore b/.gcloudignore new file mode 100644 index 0000000..73eb8a3 --- /dev/null +++ b/.gcloudignore @@ -0,0 +1,5 @@ +# Exclude compiled .js files +*.js + +# Exclude dependencies +node_modules/ diff --git a/.gitignore b/.gitignore index 93cab34..ac4f3b5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +*.js node_modules yarn-error.log diff --git a/index.js b/index.js deleted file mode 100644 index 7e8ce95..0000000 --- a/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const express = require('express'); -const app = express(); - -app.get('/', (req, res) => { - res.send('Hello World!'); -}); - -const server = app.listen(8080, () => { - const host = server.address().address; - const port = server.address().port; - - console.log(`Example app listening at http://${host}:${port}`); -}); diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..a21616b --- /dev/null +++ b/index.ts @@ -0,0 +1,12 @@ +import express from 'express'; + +const app = express(); +const port = process.env.PORT || 8080; // default port to listen + +app.get('/', (req, res) => { + res.send('Hi, there!'); +}); + +app.listen(port, () => { + console.log(`listening on port: ${port}`); +}); diff --git a/package.json b/package.json index ef3e991..8f09354 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,22 @@ { - "name": "excalidraw-io", - "version": "1.0.0", - "main": "index.js", - "scripts": { - "deploy": "gcloud app deploy --project=excalidraw-io", - "start": "node index.js" + "dependencies": { + "express": "4.17.1", + "typescript": "3.8.3", + "@types/express": "4.17.3", + "@types/node": "13.9.0" + }, + "engines": { + "node": "10.x.x" }, "license": "MIT", - "dependencies": { - "express": "4.17.1" - } + "main": "index.js", + "name": "excalidraw-io", + "scripts": { + "deploy": "gcloud app deploy --project=excalidraw-io", + "gcp-build": "tsc -p .", + "prepare": "yarn gcp-build", + "pretest": "yarn gcp-build", + "start": "node ./index.js" + }, + "version": "1.0.0" } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..252de8e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "es5", + "esModuleInterop": true, + "module": "CommonJS" + }, + "include": ["*.ts"] +} diff --git a/yarn.lock b/yarn.lock index fbd333a..17ce004 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,61 @@ # yarn lockfile v1 +"@types/body-parser@*": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.33" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@*": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf" + integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg== + dependencies: + "@types/node" "*" + "@types/range-parser" "*" + +"@types/express@4.17.3": + version "4.17.3" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.3.tgz#38e4458ce2067873b09a73908df488870c303bd9" + integrity sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/serve-static" "*" + +"@types/mime@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" + integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== + +"@types/node@*", "@types/node@13.9.0": + version "13.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.0.tgz#5b6ee7a77faacddd7de719017d0bc12f52f81589" + integrity sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ== + +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/serve-static@*": + version "1.13.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" + integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== + dependencies: + "@types/express-serve-static-core" "*" + "@types/mime" "*" + accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -352,6 +407,11 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typescript@3.8.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"