Skip to content

Commit e2f2556

Browse files
committed
typescript conversion
1 parent c20e566 commit e2f2556

23 files changed

+5960
-1409
lines changed

.eslintrc.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
module.exports = {
2-
'env': {
3-
'browser': true,
4-
'commonjs': true,
5-
'es2021': true,
2+
env: {
3+
es2021: true,
4+
node: true,
65
},
7-
'extends': [
8-
'google',
9-
],
10-
'parserOptions': {
11-
'ecmaVersion': 12,
6+
extends: ['airbnb-typescript/base', 'plugin:@typescript-eslint/recommended'],
7+
parser: '@typescript-eslint/parser',
8+
parserOptions: {
9+
ecmaVersion: 2018,
10+
sourceType: 'module',
11+
project: './tsconfig.json',
1212
},
13-
'rules': {
13+
rules: {
14+
'@typescript-eslint/explicit-module-boundary-types': 'off',
15+
'no-param-reassign': 'off',
16+
'no-underscore-dangle': 'off',
17+
'consistent-return': 'off',
1418
},
1519
};

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
node_modules
2+
build

package-lock.json

Lines changed: 5524 additions & 1032 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,50 @@
22
"name": "api-server-nodejs",
33
"version": "0.0.4",
44
"description": "RESTful back-end for Node.js and Express.js",
5+
"license": "MIT",
6+
"author": "AppSeed.us",
57
"main": "src/index",
68
"scripts": {
7-
"start": "nodemon src/index",
8-
"test": "jest -i --colors --verbose --detectOpenHandles"
9+
"start": "node build/index.js",
10+
"dev": "ts-node-dev src/index.ts",
11+
"test": "jest -i --colors --verbose --detectOpenHandles",
12+
"lint": "eslint src",
13+
"build": "tsc -p tsconfig.build.json",
14+
"typecheck": "tsc --noEmit"
915
},
10-
"author": "AppSeed.us",
11-
"license": "MIT",
1216
"dependencies": {
1317
"bcrypt-nodejs": "0.0.3",
1418
"compression": "^1.7.4",
1519
"cors": "^2.8.5",
16-
"cross-env": "^7.0.0",
17-
"dotenv": "^8.2.0",
18-
"joi": "^17.4.0",
19-
"express": "^4.15.3",
20+
"cross-env": "^7.0.3",
21+
"dotenv": "^10.0.0",
22+
"express": "^4.17.1",
2023
"express-passport-logout": "^0.1.0",
21-
"fs": "0.0.1-security",
22-
"http": "0.0.1-security",
23-
"https": "^1.0.0",
24-
"jsonwebtoken": "^7.4.1",
25-
"mongoose": "^5.7.7",
26-
"passport": "^0.3.2",
27-
"passport-jwt": "^2.2.1",
28-
"path": "^0.12.7",
29-
"nodemon": "^2.0.9"
30-
24+
"joi": "^17.4.0",
25+
"jsonwebtoken": "^8.5.1",
26+
"mongoose": "^5.13.2",
27+
"passport": "^0.4.1",
28+
"passport-jwt": "^4.0.0"
3129
},
3230
"devDependencies": {
33-
"eslint": "^7.14.0",
34-
"eslint-config-airbnb-base": "^14.0.0",
35-
"eslint-config-google": "^0.14.0",
36-
"eslint-config-prettier": "^8.1.0",
37-
"eslint-plugin-import": "^2.18.2",
38-
"eslint-plugin-jest": "^24.0.1",
39-
"eslint-plugin-prettier": "^3.1.1",
40-
"eslint-plugin-security": "^1.4.0",
41-
"jest": "^26.6.3",
42-
"supertest": "^6.1.3"
31+
"@types/bcrypt-nodejs": "0.0.31",
32+
"@types/compression": "^1.7.1",
33+
"@types/cors": "^2.8.11",
34+
"@types/express": "^4.17.13",
35+
"@types/jest": "^26.0.24",
36+
"@types/joi": "^17.2.3",
37+
"@types/node": "^16.0.1",
38+
"@types/passport-jwt": "^3.0.6",
39+
"@types/supertest": "^2.0.11",
40+
"@typescript-eslint/eslint-plugin": "^4.28.2",
41+
"@typescript-eslint/parser": "^4.28.2",
42+
"eslint": "^7.30.0",
43+
"eslint-config-airbnb-typescript": "^12.3.1",
44+
"eslint-plugin-import": "^2.23.4",
45+
"jest": "^27.0.6",
46+
"supertest": "^6.1.3",
47+
"ts-node": "10.0.0",
48+
"ts-node-dev": "1.1.8",
49+
"typescript": "^4.3.5"
4350
}
44-
}
51+
}

src/config/config.js renamed to src/config/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
Copyright (c) 2019 - present AppSeed.us
44
55
*/
6-
module.exports = {
6+
export default {
77
webURL: 'https://localhost:5000/',
88
};

src/config/keys.js renamed to src/config/keys.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
Copyright (c) 2019 - present AppSeed.us
44
55
*/
6-
dbPasswordDev = 'mongodb://localhost:27017/api_server_nodejs';
6+
const dbPasswordDev = 'mongodb://localhost:27017/api_server_nodejs';
77

8-
module.exports = {
8+
export default {
99
mongoURI: dbPasswordDev,
1010
secret: 'SuperS3cret_4277m',
1111
};

src/config/passport.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/config/passport.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
3+
Copyright (c) 2019 - present AppSeed.us
4+
5+
*/
6+
7+
import passport from 'passport';
8+
import { ExtractJwt, Strategy as JwtStrategy } from 'passport-jwt';
9+
10+
import User from '../models/user';
11+
import config from './keys';
12+
13+
export default (pass: passport.PassportStatic) => {
14+
const opts = {
15+
jwtFromRequest: ExtractJwt.fromAuthHeaderWithScheme('jwt'),
16+
secretOrKey: config.secret,
17+
};
18+
19+
pass.use(
20+
new JwtStrategy(opts, async (jwtPayload, done) => {
21+
try {
22+
const user = await User.findById(jwtPayload._doc._id);
23+
24+
if (user) {
25+
return done(null, user);
26+
}
27+
return done(null, false);
28+
} catch (err) {
29+
return done(err, false);
30+
}
31+
}),
32+
);
33+
};

src/config/safeRoutes.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/config/safeRoutes.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
3+
Copyright (c) 2019 - present AppSeed.us
4+
5+
*/
6+
import { NextFunction, Request, Response } from 'express';
7+
8+
import ActiveSession from '../models/activeSession';
9+
10+
// eslint-disable-next-line import/prefer-default-export
11+
export const checkToken = (req: Request, res: Response, next: NextFunction) => {
12+
const token = String(req.headers.authorization);
13+
ActiveSession.find({ token }, (_err, session) => {
14+
if (session.length === 1) {
15+
return next();
16+
}
17+
return res.json({ success: false, msg: 'User is not logged on' });
18+
});
19+
};

0 commit comments

Comments
 (0)