From 6eb809286427e081e810ab04e8d37a9fcadbe2bf Mon Sep 17 00:00:00 2001 From: talksik Date: Fri, 3 Jun 2022 13:30:06 -0700 Subject: [PATCH] adding env variables and morgan and sentry --- packages/api/.env.development | 5 +- packages/api/config.ts | 16 --- packages/api/config/index.ts | 27 +++++ packages/api/index.ts | 23 +++- packages/api/package.json | 13 ++- .../twilio_secret_key => api/src/socket.ts} | 0 yarn.lock | 104 ++++++++++++++++-- 7 files changed, 151 insertions(+), 37 deletions(-) delete mode 100644 packages/api/config.ts create mode 100644 packages/api/config/index.ts rename packages/{desktop/twilio_secret_key => api/src/socket.ts} (100%) diff --git a/packages/api/.env.development b/packages/api/.env.development index 3c69087..95d58c9 100644 --- a/packages/api/.env.development +++ b/packages/api/.env.development @@ -1,6 +1,3 @@ MONGO_CONNECTION_STRING=mongodb+srv://default:M9iZXokJlZpN4KLX@cluster0.mkuqa.mongodb.net/default?retryWrites=true&w=majority -JWT_TOKEN_SECRET=afajdslfwk1@lkkasdfl21ASDF!2 - -GOOGLE_AUTH_CLIENT_ID=423533244953-banligobgbof8hg89i6cr1l7u0p7c2pk.apps.googleusercontent.com -GOOGLE_AUTH_CLIENT_SECRET= \ No newline at end of file +JWT_TOKEN_SECRET=afajdslfwk1@lkkasdfl21ASDF!2 \ No newline at end of file diff --git a/packages/api/config.ts b/packages/api/config.ts deleted file mode 100644 index 54d4c97..0000000 --- a/packages/api/config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import dotenv from "dotenv"; - -if (process.env && process.env.NODE_ENV === "development") { - dotenv.config({ path: ".env.development" }); -} else { - dotenv.config({ path: ".env" }); -} - -export const loadConfig = () => { - return { - MONGO_CONNECTION_STRING: process.env.MONGO_CONNECTION_STRING!, - JWT_TOKEN_SECRET: process.env.JWT_TOKEN_SECRET!, - GOOGLE_AUTH_CLIENT_ID: process.env.GOOGLE_AUTH_CLIENT_ID!, - GOOGLE_AUTH_CLIENT_SECRET: process.env.GOOGLE_AUTH_CLIENT_SECRET!, - }; -}; diff --git a/packages/api/config/index.ts b/packages/api/config/index.ts new file mode 100644 index 0000000..1762644 --- /dev/null +++ b/packages/api/config/index.ts @@ -0,0 +1,27 @@ +interface EnvironmentConfig { + MONGO_CONNECTION_STRING: string; + JWT_TOKEN_SECRET: string; + GOOGLE_AUTH_CLIENT_ID: string; +} + +// keep private +const getEnvironmentVariables = (): EnvironmentConfig => { + // TODO + if (process.env.NODE_ENV === 'production') { + // + } + + if (process.env.NODE_ENV === 'development') { + // + } + + return { + GOOGLE_AUTH_CLIENT_ID: + '423533244953-banligobgbof8hg89i6cr1l7u0p7c2pk.apps.googleusercontent.com', + JWT_TOKEN_SECRET: 'afajdslfwk1@lkkasdfl21ASDF!2', + MONGO_CONNECTION_STRING: + 'mongodb+srv://default:M9iZXokJlZpN4KLX@cluster0.mkuqa.mongodb.net/default?retryWrites=true&w=majority', + }; +}; + +export const environmentVariables: EnvironmentConfig = getEnvironmentVariables(); diff --git a/packages/api/index.ts b/packages/api/index.ts index 4d1ac24..e42bb34 100644 --- a/packages/api/index.ts +++ b/packages/api/index.ts @@ -1,24 +1,39 @@ +import * as Sentry from '@sentry/node'; +import * as Tracing from '@sentry/tracing'; + +/* eslint-disable @typescript-eslint/no-var-requires */ import express, { Application, NextFunction, Request, Response } from 'express'; import cors from 'cors'; +import morgan from 'morgan'; const app = express(); +app.use(morgan('combined')); app.use(cors()); app.use(express.json()); - app.use((req: Request, res: Response, next: NextFunction) => { console.log('Time: ', new Date()); next(); }); - app.get('/', (req: Request, res: Response) => { res.send('hello world.'); }); - app.use('/api/status', (req: Request, res: Response) => { res.json({ message: 'wohoo, server is healthy' }); }); const PORT = process.env.PORT || 8080; -const server = app.listen(PORT, () => console.log('express running')); +const server = app.listen(PORT, () => + console.log(`express running on port | ${PORT} in host machine`), +); + +// won't catch any errors here and we don't want it to +console.log(); + +require('socket.io')(server, { + // todo: add authentication + cors: { + origin: '*', + }, +}); diff --git a/packages/api/package.json b/packages/api/package.json index 018dbeb..83b906b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -14,23 +14,26 @@ }, "devDependencies": { "@types/express": "^4.17.13", + "@types/morgan": "^1.9.3", "@types/node": "^17.0.21", - "nodemon": "^2.0.15", - "typescript": "^4.6.2", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.0" + "eslint-plugin-import": "^2.25.0", + "nodemon": "^2.0.15", + "typescript": "^4.6.2" }, "dependencies": { + "@sentry/node": "^7.0.0", + "@sentry/tracing": "^7.0.0", "axios": "^0.26.1", - "firebase": "^9.8.2", "cors": "^2.8.5", - "dotenv": "^16.0.0", "express": "^4.17.3", + "firebase": "^9.8.2", "google-auth-library": "^7.14.0", "jsonwebtoken": "^8.5.1", "mongodb": "^4.4.1", + "morgan": "^1.10.0", "socket.io": "^4.4.1", "ts-node": "^10.7.0" } diff --git a/packages/desktop/twilio_secret_key b/packages/api/src/socket.ts similarity index 100% rename from packages/desktop/twilio_secret_key rename to packages/api/src/socket.ts diff --git a/yarn.lock b/yarn.lock index 46cc6a6..160f5b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1146,6 +1146,62 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== +"@sentry/core@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.0.0.tgz#8514aad3ad81ce018e1d4a956407530a8c1286d0" + integrity sha512-Wl7MjmahLhuzzByYiWaYTeHKQfF6usnMp+rTTYTBbneuM4MD7TikRt6ybgnxqyqR7nI7ADH/U8OljtiqwnsOcw== + dependencies: + "@sentry/hub" "7.0.0" + "@sentry/types" "7.0.0" + "@sentry/utils" "7.0.0" + tslib "^1.9.3" + +"@sentry/hub@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.0.0.tgz#9ffcea4ae497d9e8440683bdc72eb4b30f20d24d" + integrity sha512-my4s+SPZiL6BKOK89YNk74QFRejlwVKKSetzz+Wr1cxDLbGXOIHS3uRJlagqOpfthhD1dq8m3WBQnabPf5JlHQ== + dependencies: + "@sentry/types" "7.0.0" + "@sentry/utils" "7.0.0" + tslib "^1.9.3" + +"@sentry/node@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.0.0.tgz#771169162b5ab021ea691f329a80aaf980d5b265" + integrity sha512-YfmPldRH2oO3OCsu5kqnzVbeMa2Tr9Qf4t8iy7AuYKPok5ossIeZCBzjTBRw/g0wJL+I5WsxHVrt2YUuLGYBSQ== + dependencies: + "@sentry/core" "7.0.0" + "@sentry/hub" "7.0.0" + "@sentry/types" "7.0.0" + "@sentry/utils" "7.0.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.0.0.tgz#17e3fac487edef63fbe8b1bbfb202118952b2956" + integrity sha512-eUHER2RWzm9OtFKQZIr5EwTGM3IU0xJ7l60rnAEbgW5b1bzWC0k/J6EeXeBBfGq7wric/BjH0WKQOnixtXUBpw== + dependencies: + "@sentry/hub" "7.0.0" + "@sentry/types" "7.0.0" + "@sentry/utils" "7.0.0" + tslib "^1.9.3" + +"@sentry/types@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.0.0.tgz#a564b9762a8f5573ad17259093988da09be1db23" + integrity sha512-im6iugKKyeOwHWiS3u+S+Ox4F6aJQ2fe76rzTDTlzdCPol4xEqYnB2kujGVVnDYrODR+qVb24ua3OsxXxwzppA== + +"@sentry/utils@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.0.0.tgz#c83d0535f58457067a4156e5558223afd256b747" + integrity sha512-wmZNwzl1F/xCvaGX0TLz0+M+mZP8kn5woF770o2eUgXGURIuNsnSd0Vfi0nHuBJfngVeI/3+ofOJ9MH4Co4lIw== + dependencies: + "@sentry/types" "7.0.0" + tslib "^1.9.3" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -1364,6 +1420,13 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== +"@types/morgan@^1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.3.tgz#ae04180dff02c437312bc0cfb1e2960086b2f540" + integrity sha512-BiLcfVqGBZCyNCnCH3F4o2GmDLrpy0HeBVnNlyZG4fo88ZiE9SoiBe3C+2ezuwbjlEyT+PDZ17//TAlRxAn75Q== + dependencies: + "@types/node" "*" + "@types/node@*": version "17.0.35" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.35.tgz#635b7586086d51fb40de0a2ec9d1014a5283ba4a" @@ -2072,6 +2135,13 @@ base64id@2.0.0, base64id@~2.0.0: resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -2696,7 +2766,7 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -cookie@~0.4.1: +cookie@^0.4.1, cookie@~0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== @@ -2978,7 +3048,7 @@ denque@^2.0.1: resolved "https://registry.yarnpkg.com/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a" integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ== -depd@2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -3123,11 +3193,6 @@ dot-prop@^6.0.1: dependencies: is-obj "^2.0.0" -dotenv@^16.0.0: - version "16.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -5622,6 +5687,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + lzma-native@^8.0.5: version "8.0.6" resolved "https://registry.yarnpkg.com/lzma-native/-/lzma-native-8.0.6.tgz#3ea456209d643bafd9b5d911781bdf0b396b2665" @@ -5897,6 +5967,17 @@ mongodb@^4.4.1: optionalDependencies: saslprep "^1.0.3" +morgan@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + dependencies: + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -6243,6 +6324,13 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" @@ -8083,7 +8171,7 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: +tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==