Skip to content

Commit 0983256

Browse files
committedJan 21, 2023
book update in 10-end and 10-end-functional #193
1 parent 5a323f9 commit 0983256

40 files changed

+15147
-17967
lines changed
 

‎book/10-begin/app/pages/invitation.tsx

+15-15
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { observer } from 'mobx-react';
33
import Error from 'next/error';
44
import Head from 'next/head';
55
import Router from 'next/router';
6+
import { NextPageContext } from 'next';
67
import React from 'react';
78

89
import LoginButton from '../components/common/LoginButton';
@@ -12,25 +13,24 @@ import { Team } from '../lib/store/team';
1213
import { Store } from '../lib/store';
1314
import withAuth from '../lib/withAuth';
1415

15-
type Props = { store: Store; team: Team; token: string };
16+
export async function getServerSideProps(context: NextPageContext) {
17+
const { token } = context.query;
1618

17-
class InvitationPageComp extends React.Component<Props> {
18-
public static async getInitialProps(ctx) {
19-
const { token } = ctx.query;
20-
if (!token) {
21-
return {};
22-
}
23-
24-
try {
25-
const { team } = await getTeamByTokenApiMethod(token, ctx.req);
19+
try {
20+
const { team } = await getTeamByTokenApiMethod(token as string, context.req);
2621

27-
return { team, token };
28-
} catch (error) {
29-
console.log(error);
30-
return {};
22+
if (team && token) {
23+
return { props: { team, token } };
24+
} else {
25+
return { props: {} };
3126
}
27+
} catch (error) {
28+
console.log(error);
29+
return { props: {} };
3230
}
31+
}
3332

33+
class InvitationPageComp extends React.Component<{ store: Store; team: Team; token: string }> {
3434
public render() {
3535
const { team, token, store } = this.props;
3636

@@ -73,7 +73,7 @@ class InvitationPageComp extends React.Component<Props> {
7373
);
7474
}
7575

76-
public async componentDidMount() {
76+
public componentDidMount() {
7777
const { store, team, token } = this.props;
7878

7979
const user = store.currentUser;
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"watch": ["server"],
3-
"exec": "ts-node --project tsconfig.server.json",
3+
"exec": "ts-node --project tsconfig.json",
44
"ext": "ts"
55
}

‎book/10-end-functional/api/package.json

+37-37
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
"version": "1.0.0",
44
"license": "MIT",
55
"engines": {
6-
"node": "14.18.1",
7-
"yarn": "1.22.5"
6+
"node": "16.15.1",
7+
"yarn": "1.22.19"
88
},
99
"scripts": {
1010
"dev": "nodemon server/server.ts",
1111
"lint": "eslint . --ext .ts,.tsx",
1212
"test": "jest",
1313
"postinstall": "rm -rf production-server/",
14-
"build": "tsc --project tsconfig.server.json",
14+
"build": "tsc --project tsconfig.json",
1515
"start": "node production-server/server.js"
1616
},
1717
"jest": {
@@ -22,52 +22,52 @@
2222
"testEnvironment": "node"
2323
},
2424
"dependencies": {
25-
"aws-sdk": "^2.796.0",
26-
"bcrypt": "^5.0.0",
25+
"aws-sdk": "^2.1286.0",
26+
"bcrypt": "^5.1.0",
2727
"compression": "^1.7.4",
28-
"connect-mongo": "^3.2.0",
28+
"connect-mongo": "^4.6.0",
2929
"cors": "^2.8.5",
30-
"dotenv": "^8.2.0",
31-
"express": "^4.17.1",
32-
"express-session": "^1.17.1",
30+
"dotenv": "^16.0.3",
31+
"express": "^4.18.2",
32+
"express-session": "^1.17.3",
3333
"he": "^1.2.0",
34-
"helmet": "4.1.0-rc.2",
35-
"highlight.js": "^10.5.0",
36-
"lodash": "^4.17.20",
37-
"marked": "^4.0.16",
38-
"mongoose": "^6.3.5",
34+
"helmet": "6.0.1",
35+
"highlight.js": "^11.7.0",
36+
"lodash": "^4.17.21",
37+
"marked": "^4.2.5",
38+
"mongoose": "^6.8.2",
3939
"node-fetch": "^2.6.1",
4040
"passport": "^0.6.0",
4141
"passport-google-oauth": "^2.0.0",
4242
"passwordless": "^1.1.3",
4343
"passwordless-tokenstore": "^0.0.10",
44-
"socket.io": "^4.2.0",
45-
"stripe": "^8.129.0",
46-
"typescript": "^4.7.3",
47-
"winston": "^3.3.3"
44+
"socket.io": "^4.5.4",
45+
"stripe": "^11.5.0",
46+
"typescript": "^4.9.4",
47+
"winston": "^3.8.2"
4848
},
4949
"devDependencies": {
5050
"@types/connect-mongo": "^3.1.3",
5151
"@types/dotenv": "^8.2.0",
52-
"@types/express": "^4.11.1",
53-
"@types/express-session": "^1.15.8",
54-
"@types/jest": "^22.2.3",
55-
"@types/lodash": "^4.14.108",
56-
"@types/marked": "^4.0.3",
57-
"@types/mongoose": "^5.5.43",
58-
"@types/node": "^12.12.2",
59-
"@types/node-fetch": "^1.6.9",
60-
"@types/passport": "^1.0.8",
52+
"@types/express": "^4.17.15",
53+
"@types/express-session": "^1.17.5",
54+
"@types/jest": "^29.2.5",
55+
"@types/lodash": "^4.14.191",
56+
"@types/marked": "^4.0.8",
57+
"@types/mongoose": "^5.11.97",
58+
"@types/node": "^18.11.18",
59+
"@types/node-fetch": "^2.6.2",
60+
"@types/passport": "^1.0.11",
6161
"@types/socket.io": "^3.0.2",
62-
"@typescript-eslint/eslint-plugin": "^4.2.0",
63-
"@typescript-eslint/parser": "^4.2.0",
64-
"eslint": "^7.25.0",
65-
"eslint-config-prettier": "^7.1.0",
66-
"eslint-plugin-prettier": "^3.3.1",
67-
"jest": "^26.4.2",
68-
"nodemon": "^2.0.7",
69-
"prettier": "^2.2.1",
70-
"ts-jest": "^26.4.4",
71-
"ts-node": "^10.8.1"
62+
"@typescript-eslint/eslint-plugin": "^5.47.1",
63+
"@typescript-eslint/parser": "^5.47.1",
64+
"eslint": "^8.31.0",
65+
"eslint-config-prettier": "^8.5.0",
66+
"eslint-plugin-prettier": "^4.2.1",
67+
"jest": "^29.3.1",
68+
"nodemon": "^2.0.20",
69+
"prettier": "^2.8.1",
70+
"ts-jest": "^29.0.3",
71+
"ts-node": "^10.9.1"
7272
}
7373
}

‎book/10-end-functional/api/server/models/Post.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as mongoose from 'mongoose';
22

33
import * as he from 'he';
4-
import * as hljs from 'highlight.js';
4+
import hljs from 'highlight.js';
55
import { marked } from 'marked';
66

77
import Discussion from './Discussion';

‎book/10-end-functional/api/server/server.ts

+8-11
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import * as mongoSessionStore from 'connect-mongo';
21
import * as cors from 'cors';
32
import * as express from 'express';
43
import * as session from 'express-session';
54
import * as httpModule from 'http';
65
import * as mongoose from 'mongoose';
76

7+
import mongoSessionStore = require('connect-mongo');
8+
89
import api from './api';
910
import { setupGoogle } from './google-auth';
1011
import { setupPasswordless } from './passwordless-auth';
@@ -14,20 +15,20 @@ import { stripeWebhookAndCheckoutCallback } from './stripe';
1415
import logger from './logger';
1516

1617
import * as compression from 'compression';
17-
import * as helmet from 'helmet';
18+
import helmet from 'helmet';
1819

1920
// eslint-disable-next-line
2021
require('dotenv').config();
2122

2223
const dev = process.env.NODE_ENV !== 'production';
2324
const port = process.env.PORT || 8000;
24-
25-
mongoose.connect(dev ? process.env.MONGO_URL_TEST : process.env.MONGO_URL);
25+
const MONGO_URL = dev ? process.env.MONGO_URL_TEST : process.env.MONGO_URL;
2626

2727
// check connection
2828
(async () => {
2929
try {
30-
await mongoose.connect(dev ? process.env.MONGO_URL_TEST : process.env.MONGO_URL);
30+
mongoose.set('strictQuery', false);
31+
await mongoose.connect(MONGO_URL);
3132
logger.info('connected to db');
3233

3334
// async tasks, for ex, inserting email templates to db
@@ -54,16 +55,12 @@ stripeWebhookAndCheckoutCallback({ server });
5455

5556
server.use(express.json());
5657

57-
const MongoStore = mongoSessionStore(session);
58-
5958
const sessionOptions = {
6059
name: process.env.SESSION_NAME,
6160
secret: process.env.SESSION_SECRET,
62-
store: new MongoStore({
63-
mongooseConnection: mongoose.connection,
61+
store: mongoSessionStore.create({
62+
mongoUrl: MONGO_URL,
6463
ttl: 14 * 24 * 60 * 60, // save session 14 days
65-
autoRemove: 'interval',
66-
autoRemoveInterval: 1440, // clears every day
6764
}),
6865
resave: false,
6966
saveUninitialized: false,

‎book/10-end-functional/api/server/stripe.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const dev = process.env.NODE_ENV !== 'production';
1313

1414
const stripeInstance = new Stripe(
1515
dev ? process.env.STRIPE_TEST_SECRETKEY : process.env.STRIPE_LIVE_SECRETKEY,
16-
{ apiVersion: '2020-08-27' },
16+
{ apiVersion: '2022-11-15' },
1717
);
1818

1919
function createSession({

‎book/10-end-functional/api/tsconfig.json

+6-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@
1515
"baseUrl": ".",
1616
"experimentalDecorators": true,
1717
"typeRoots": ["./node_modules/@types"],
18-
"lib": ["es2015", "es2016"]
18+
"target": "es2020",
19+
"lib": ["es2020"],
20+
"module": "commonjs",
21+
"outDir": "production-server/",
22+
"downlevelIteration": true,
1923
},
20-
"exclude": ["production-server", "node_modules"]
24+
"include": ["./server/**/*.ts"]
2125
}

‎book/10-end-functional/api/tsconfig.server.json

-9
This file was deleted.

0 commit comments

Comments
 (0)
Failed to load comments.