From ff690ce9dda83629a49c189c37391638abcdc0b0 Mon Sep 17 00:00:00 2001 From: builtbysuraj Date: Sun, 11 Feb 2024 21:03:41 +0530 Subject: [PATCH] refactor: convert JS server to TS, Add .env.sample --- server/.env.sample | 7 + server/package-lock.json | 184 +++++++++++++----- server/package.json | 12 +- server/src/{app.js => app.ts} | 6 +- server/src/conf/{conf.js => conf.ts} | 0 server/src/{constants.js => constants.ts} | 0 ...nt.controller.js => payment.controller.ts} | 9 +- server/src/db/db.js | 19 -- server/src/db/db.ts | 14 ++ server/src/{index.js => index.ts} | 8 +- .../{payment.model.js => payment.model.ts} | 0 .../{payment.routes.js => payment.routes.ts} | 2 +- server/src/utils/{ApiError.js => ApiError.ts} | 0 .../utils/{ApiResponse.js => ApiResponse.ts} | 0 server/src/utils/asyncHandler.js | 7 - server/tsconfig.json | 21 ++ 16 files changed, 201 insertions(+), 88 deletions(-) create mode 100644 server/.env.sample rename server/src/{app.js => app.ts} (87%) rename server/src/conf/{conf.js => conf.ts} (100%) rename server/src/{constants.js => constants.ts} (100%) rename server/src/controllers/{payment.controller.js => payment.controller.ts} (81%) delete mode 100644 server/src/db/db.js create mode 100644 server/src/db/db.ts rename server/src/{index.js => index.ts} (65%) rename server/src/models/{payment.model.js => payment.model.ts} (100%) rename server/src/routes/{payment.routes.js => payment.routes.ts} (83%) rename server/src/utils/{ApiError.js => ApiError.ts} (100%) rename server/src/utils/{ApiResponse.js => ApiResponse.ts} (100%) delete mode 100644 server/src/utils/asyncHandler.js create mode 100644 server/tsconfig.json diff --git a/server/.env.sample b/server/.env.sample new file mode 100644 index 0000000..39478e1 --- /dev/null +++ b/server/.env.sample @@ -0,0 +1,7 @@ +MONGODB_URL= +MONGODB_URL_LOCAL=mongodb://127.0.0.1:27017 + +RAZORPAY_API_KEY= +RAZORPAY_APT_SECRET= + +CORS_ORIGIN=* \ No newline at end of file diff --git a/server/package-lock.json b/server/package-lock.json index 66878a4..7b8067c 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -8,11 +8,13 @@ "name": "server", "version": "1.0.0", "dependencies": { + "bcryptjs": "^2.4.3", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.3.1", "express": "^4.18.2", - "mongoose": "^8.0.3", + "jsonwebtoken": "^9.0.2", + "mongoose": "^8.1.1", "pg": "^8.11.3", "razorpay": "^2.9.2" }, @@ -21,9 +23,10 @@ "@types/express": "^4.17.21", "@types/node": "^20.10.5", "@types/pg": "^8.10.9", - "nodemon": "^3.0.2", + "nodemon": "^3.0.3", "prettier": "^3.1.1", - "ts-node": "^10.9.2" + "ts-node": "^10.9.2", + "typescript": "^5.3.3" } }, "node_modules/@cspotcode/source-map-support": { @@ -64,9 +67,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", - "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", + "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", "dependencies": { "sparse-bitfield": "^3.0.3" } @@ -309,11 +312,10 @@ "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", "dependencies": { - "@types/node": "*", "@types/webidl-conversions": "*" } }, @@ -448,6 +450,11 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -508,13 +515,18 @@ } }, "node_modules/bson": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz", - "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.3.0.tgz", + "integrity": "sha512-balJfqwwTBddxfnidJZagCBPP/f48zj9Sdp3OJswREOgsJzHiQSaOIAtApSgDQFYgHqAvFkp53AFSqjMDZoTFw==", "engines": { "node": ">=16.20.1" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, "node_modules/buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", @@ -754,6 +766,14 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1182,6 +1202,32 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -1196,6 +1242,25 @@ "node": ">=0.6.0" } }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, "node_modules/kareem": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", @@ -1209,11 +1274,45 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -1296,13 +1395,13 @@ } }, "node_modules/mongodb": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz", - "integrity": "sha512-d7OSuGjGWDZ5usZPqfvb36laQ9CPhnWkAGHT61x5P95p/8nMVeH8asloMwW6GcYFeB0Vj4CB/1wOTDG2RA9BFA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.3.0.tgz", + "integrity": "sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==", "dependencies": { "@mongodb-js/saslprep": "^1.1.0", "bson": "^6.2.0", - "mongodb-connection-string-url": "^2.6.0" + "mongodb-connection-string-url": "^3.0.0" }, "engines": { "node": ">=16.20.1" @@ -1341,22 +1440,22 @@ } }, "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", + "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" } }, "node_modules/mongoose": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.3.tgz", - "integrity": "sha512-LJRT0yP4TW14HT4r2RkxqyvoTylMSzWpl5QOeVHTnRggCLQSpkoBdgbUtORFq/mSL2o9cLCPJz+6uzFj25qbHw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.1.1.tgz", + "integrity": "sha512-DbLb0NsiEXmaqLOpEz+AtAsgwhRw6f25gwa1dF5R7jj6lS1D8X6uTdhBSC8GDVtOwe5Tfw2EL7nTn6hiJT3Bgg==", "dependencies": { "bson": "^6.2.0", "kareem": "2.5.1", - "mongodb": "6.2.0", + "mongodb": "6.3.0", "mpath": "0.9.0", "mquery": "5.0.0", "ms": "2.1.3", @@ -1429,9 +1528,9 @@ } }, "node_modules/nodemon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", - "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.3.tgz", + "integrity": "sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ==", "dev": true, "dependencies": { "chokidar": "^3.5.2", @@ -1950,7 +2049,6 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -2165,14 +2263,14 @@ } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/ts-node": { @@ -2251,7 +2349,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2340,15 +2437,15 @@ } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=16" } }, "node_modules/xtend": { @@ -2362,8 +2459,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yn": { "version": "3.1.1", diff --git a/server/package.json b/server/package.json index b5a09e1..4db1370 100644 --- a/server/package.json +++ b/server/package.json @@ -2,19 +2,20 @@ "name": "server", "version": "1.0.0", "main": "index.js", - "type": "module", "scripts": { - "dev": "nodemon src/index.js", + "dev": "nodemon src/index.ts", "start": "node index.js", "format": "prettier --write ./src", "check-format": "prettier --check ./src" }, "dependencies": { + "bcryptjs": "^2.4.3", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "dotenv": "^16.3.1", "express": "^4.18.2", - "mongoose": "^8.0.3", + "jsonwebtoken": "^9.0.2", + "mongoose": "^8.1.1", "pg": "^8.11.3", "razorpay": "^2.9.2" }, @@ -23,8 +24,9 @@ "@types/express": "^4.17.21", "@types/node": "^20.10.5", "@types/pg": "^8.10.9", - "nodemon": "^3.0.2", + "nodemon": "^3.0.3", "prettier": "^3.1.1", - "ts-node": "^10.9.2" + "ts-node": "^10.9.2", + "typescript": "^5.3.3" } } diff --git a/server/src/app.js b/server/src/app.ts similarity index 87% rename from server/src/app.js rename to server/src/app.ts index 8557df2..f37314e 100644 --- a/server/src/app.js +++ b/server/src/app.ts @@ -1,7 +1,7 @@ import cookieParser from 'cookie-parser' import cors from 'cors' import express from 'express' -import { ENV } from './conf/conf.js' +import { ENV } from './conf/conf' const app = express() @@ -17,8 +17,8 @@ app.use(express.static('public')) app.use(cookieParser()) // Routes -import { Payment } from './models/payment.model.js' -import paymentRoute from './routes/payment.routes.js' +import { Payment } from './models/payment.model' +import paymentRoute from './routes/payment.routes' app.get('/api/status', (req, res) => { res.json({ status: true, message: 'Server is running' }) diff --git a/server/src/conf/conf.js b/server/src/conf/conf.ts similarity index 100% rename from server/src/conf/conf.js rename to server/src/conf/conf.ts diff --git a/server/src/constants.js b/server/src/constants.ts similarity index 100% rename from server/src/constants.js rename to server/src/constants.ts diff --git a/server/src/controllers/payment.controller.js b/server/src/controllers/payment.controller.ts similarity index 81% rename from server/src/controllers/payment.controller.js rename to server/src/controllers/payment.controller.ts index bd25de6..846c3d3 100644 --- a/server/src/controllers/payment.controller.js +++ b/server/src/controllers/payment.controller.ts @@ -1,8 +1,9 @@ import crypto from 'crypto' -import { Payment } from '../models/payment.model.js' -import { ENV } from '../conf/conf.js' -import { CLIENT_BASE_URL } from '../constants.js' -import { razorpayInstance } from '../index.js' +// import { Payment } from '../models/payment.model.js' +import { ENV } from '../conf/conf' +import { CLIENT_BASE_URL } from '../constants' +import { razorpayInstance } from '../index' +import { Payment } from '../models/payment.model' export const checkout = async (req, res) => { const options = { diff --git a/server/src/db/db.js b/server/src/db/db.js deleted file mode 100644 index af5c88d..0000000 --- a/server/src/db/db.js +++ /dev/null @@ -1,19 +0,0 @@ -import mongoose from 'mongoose' -import { ENV } from '../conf/conf.js' -import { DB_NAME } from '../constants.js' - -const connectDB = async () => { - try { - const connectionInstance = await mongoose.connect( - `${ENV.MONGODB_URL_LOCAL}/${DB_NAME}` - ) - console.log( - `\n MongoDB connected | DB Host :: ${connectionInstance.connection.host}` - ) - } catch (error) { - console.log('MongoDB connection FAILED ', error) - process.exit(1) - } -} - -export default connectDB diff --git a/server/src/db/db.ts b/server/src/db/db.ts new file mode 100644 index 0000000..7f14f91 --- /dev/null +++ b/server/src/db/db.ts @@ -0,0 +1,14 @@ +import mongoose from 'mongoose' +import { ENV } from '../conf/conf' +import { DB_NAME } from '../constants' + +const connectDB = async () => { + try { + await mongoose.connect(`${ENV.MONGODB_URL_LOCAL}/${DB_NAME}`) + console.log('MongoDB connected') + } catch (error) { + console.log('MongoDB connection FAILED ', error) + } +} + +export default connectDB diff --git a/server/src/index.js b/server/src/index.ts similarity index 65% rename from server/src/index.js rename to server/src/index.ts index 9f397f1..d63a15c 100644 --- a/server/src/index.js +++ b/server/src/index.ts @@ -1,6 +1,6 @@ -import app from './app.js' -import connectDB from './db/db.js' import Razorpay from 'razorpay' +import app from './app' +import connectDB from './db/db' const PORT = process.env.PORT || 5000 @@ -11,8 +11,6 @@ export const razorpayInstance = new Razorpay({ connectDB() .then(() => { - app.listen(PORT, () => - console.log(`\n ⚙️ Server is running at port : ${PORT}🎉`) - ) + app.listen(PORT, () => console.log(`Server is running at port : ${PORT}`)) }) .catch((err) => console.log('MONGO db connection failed ! ', err)) diff --git a/server/src/models/payment.model.js b/server/src/models/payment.model.ts similarity index 100% rename from server/src/models/payment.model.js rename to server/src/models/payment.model.ts diff --git a/server/src/routes/payment.routes.js b/server/src/routes/payment.routes.ts similarity index 83% rename from server/src/routes/payment.routes.js rename to server/src/routes/payment.routes.ts index 9f2b081..e32015f 100644 --- a/server/src/routes/payment.routes.js +++ b/server/src/routes/payment.routes.ts @@ -2,7 +2,7 @@ import { Router } from 'express' import { checkout, paymentVerification, -} from '../controllers/payment.controller.js' +} from '../controllers/payment.controller' const router = Router() diff --git a/server/src/utils/ApiError.js b/server/src/utils/ApiError.ts similarity index 100% rename from server/src/utils/ApiError.js rename to server/src/utils/ApiError.ts diff --git a/server/src/utils/ApiResponse.js b/server/src/utils/ApiResponse.ts similarity index 100% rename from server/src/utils/ApiResponse.js rename to server/src/utils/ApiResponse.ts diff --git a/server/src/utils/asyncHandler.js b/server/src/utils/asyncHandler.js deleted file mode 100644 index 6b827ac..0000000 --- a/server/src/utils/asyncHandler.js +++ /dev/null @@ -1,7 +0,0 @@ -const asyncHandler = (requestHandler) => { - return (req, res, next) => { - Promise.resolve(requestHandler(req, res, next)).catch((err) => next(err)) - } -} - -export default asyncHandler diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 0000000..0ef1a39 --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "CommonJS", + "moduleResolution": "Node", + "rootDir": "src", + "outDir": "build", + "lib": ["ESNext"], + "strict": false, + "esModuleInterop": true, + "allowJs": true, + "checkJs": false, + "resolveJsonModule": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "allowSyntheticDefaultImports": true, + "isolatedModules": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules"] +}