Skip to content

Commit c5974da

Browse files
authored
chore: upgrade apollo to v4 and fix related issues (#429)
* chore: upgrade apollo to v4 and fix related issues * chore: upgrade node
1 parent 2f108b7 commit c5974da

60 files changed

Lines changed: 3293 additions & 4275 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/nodejs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ jobs:
119119
- name: Setup Node.js environment
120120
uses: actions/setup-node@v3
121121
with:
122-
node-version: '16.15'
122+
node-version-file: 'package.json'
123123
cache: 'yarn'
124124

125125
- name: Start MongoDB

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM registry.gitlab.com/openbeta/openbeta-nodejs-docker:16
1+
FROM registry.gitlab.com/openbeta/openbeta-nodejs-docker:18
22

33
ENV APP_DIR=/apps/openbeta-graphql
44

package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,18 @@
1414
"@types/underscore": "^1.11.4",
1515
"cross-env": "^7.0.3",
1616
"husky": "^8.0.1",
17-
"jest": "29.4.2",
18-
"jest-extended": "^3.2.3",
19-
"mongodb-memory-server": "^8.12.2",
17+
"jest": "^29.7.0",
18+
"jest-extended": "^4.0.2",
19+
"mongodb-memory-server": "^10.1.2",
2020
"nock": "^13.3.0",
2121
"supertest": "^6.3.3",
22-
"ts-jest": "^29.0.5",
22+
"ts-jest": "^29.2.5",
2323
"ts-standard": "^12.0.0",
2424
"typescript": "4.9.5",
2525
"wait-for-expect": "^3.0.2"
2626
},
2727
"dependencies": {
28+
"@apollo/server": "^4.11.2",
2829
"@babel/runtime": "^7.17.2",
2930
"@google-cloud/storage": "^6.9.5",
3031
"@graphql-tools/schema": "^8.3.1",
@@ -36,9 +37,7 @@
3637
"@turf/convex": "^6.5.0",
3738
"@turf/helpers": "^6.5.0",
3839
"@types/uuid": "^8.3.3",
39-
"apollo-datasource-mongodb": "^0.5.4",
40-
"apollo-server-core": "^3.13.0",
41-
"apollo-server-express": "^3.13.0",
40+
"apollo-datasource-mongodb": "^0.6.0",
4241
"auth0": "^3.4.0",
4342
"axios": "^1.3.6",
4443
"body-parser": "^1.20.2",
@@ -48,26 +47,27 @@
4847
"dotenv": "^16.4.4",
4948
"express": "^4.18.2",
5049
"glob": "^10.2.2",
51-
"graphql": "^16.8.1",
50+
"graphql": "^16.9.0",
5251
"graphql-middleware": "^6.1.31",
5352
"graphql-shield": "^7.5.0",
53+
"graphql-tag": "^2.12.6",
5454
"graphql-type-json": "^0.3.2",
5555
"i18n-iso-countries": "^7.5.0",
5656
"immer": "^9.0.15",
5757
"jsonwebtoken": "^8.5.1",
5858
"jwks-rsa": "^2.1.4",
59-
"mongoose": "6.4.7",
60-
"mongoose-lean-virtuals": "^0.9.1",
59+
"mongoose": "^7.8.3",
60+
"mongoose-lean-virtuals": "^1.0.0",
6161
"node-fetch": "2",
6262
"p-limit": "^4.0.0",
63-
"pino": "^8.2.0",
63+
"pino": "^9.5.0",
6464
"pino-logflare": "^0.4.2",
6565
"sanitize-html": "^2.7.2",
6666
"sharp": "^0.32.0",
67-
"typesense": "^1.2.1",
67+
"typesense": "^1.8.2",
6868
"underscore": "^1.13.2",
6969
"uuid": "^8.3.2",
70-
"uuid-mongodb": "^2.5.1",
70+
"uuid-mongodb": "^2.6.0",
7171
"yup": "^1.1.1"
7272
},
7373
"scripts": {
@@ -109,6 +109,6 @@
109109
},
110110
"type": "module",
111111
"engines": {
112-
"node": ">=16.14.0"
112+
"node": ">=18.20.0 <19"
113113
}
114114
}

src/__tests__/areas.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ApolloServer } from 'apollo-server-express'
1+
import { ApolloServer } from '@apollo/server'
22
import muuid from 'uuid-mongodb'
33
import { jest } from '@jest/globals'
44
import MutableAreaDataSource from '../model/MutableAreaDataSource.js'

src/__tests__/bulkImport.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {ApolloServer} from "apollo-server-express";
1+
import {ApolloServer} from "@apollo/server";
22
import muuid from "uuid-mongodb";
33
import express from "express";
44
import {InMemoryDB} from "../utils/inMemoryDB.js";
@@ -49,7 +49,6 @@ describe('bulkImportAreas', () => {
4949
// "59f1d95a-627d-4b8c-91b9-389c7424cb54" instead of base64 "WfHZWmJ9S4yRuTicdCTLVA==".
5050
user = muuid.mode('relaxed').v4()
5151
userUuid = muuidToString(user)
52-
5352
bulkImport = BulkImportDataSource.getInstance()
5453
climbs = MutableClimbDataSource.getInstance()
5554
})

src/__tests__/history.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ApolloServer } from 'apollo-server-express'
1+
import { ApolloServer } from '@apollo/server'
22
import muuid from 'uuid-mongodb'
33
import { jest } from '@jest/globals'
44
import MutableAreaDataSource from '../model/MutableAreaDataSource.js'

src/__tests__/organizations.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { ApolloServer } from 'apollo-server-express'
1+
import { ApolloServer } from '@apollo/server'
22
import muuid from 'uuid-mongodb'
33
import MutableAreaDataSource from '../model/MutableAreaDataSource.js'
44
import MutableOrganizationDataSource from '../model/MutableOrganizationDataSource.js'
55
import { AreaType } from '../db/AreaTypes.js'
66
import { OperationType, OrganizationEditableFieldsType, OrganizationType, OrgType } from '../db/OrganizationTypes.js'
7-
import { changelogDataSource } from '../model/ChangeLogDataSource.js'
7+
import ChangeLogDataSource from '../model/ChangeLogDataSource.js'
88
import { queryAPI, setUpServer } from '../utils/testUtils.js'
99
import { muuidToString } from '../utils/helpers.js'
1010
import { validate as validateMuuid } from 'uuid'
@@ -142,7 +142,7 @@ describe('organizations API', () => {
142142
// eslint-disable-next-line
143143
await new Promise(res => setTimeout(res, 1000))
144144

145-
const orgHistory = await changelogDataSource.getOrganizationChangeSets()
145+
const orgHistory = await ChangeLogDataSource.getInstance().getOrganizationChangeSets()
146146
expect(orgHistory).toHaveLength(2)
147147

148148
// verify changes in most recent order

src/__tests__/ticks.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ApolloServer } from 'apollo-server-express'
1+
import { ApolloServer } from '@apollo/server'
22
import muuid from 'uuid-mongodb'
33
import { jest } from '@jest/globals'
44
import { queryAPI, setUpServer } from '../utils/testUtils.js'
@@ -211,7 +211,7 @@ describe('ticks API', () => {
211211
}
212212
},
213213
userUuid,
214-
roles: ['user_admin'],
214+
roles: [], // ['user_admin'],
215215
app
216216
})
217217

src/auth/local-dev/middleware.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
1-
/*
2-
* This file is a mod of src/auth/middleware.ts and is used when starting the server via `yarn serve-dev`
3-
* It bypasses the authentication for local development
4-
*/
51
import muuid, { MUUID } from 'uuid-mongodb'
62
import { AuthUserType } from '../../types.js'
73
import { logger } from '../../logger.js'
84

9-
export const localDevBypassAuthContext = (() => {
10-
const testUUID: MUUID = muuid.v4()
5+
const testUUID: MUUID = muuid.v4()
116

12-
return async ({ req }): Promise<any> => {
13-
const user: AuthUserType = {
14-
roles: ['user_admin', 'org_admin', 'editor'],
15-
uuid: testUUID,
16-
isBuilder: false
17-
}
18-
logger.info(`The user.roles for this session is: ${user.roles.toString()}`)
19-
return { user }
7+
/*
8+
* This file is a mod of src/auth/middleware.ts and is used when starting the server via `yarn serve-dev`
9+
* It bypasses the authentication for local development
10+
*/
11+
export const localDevBypassAuthContext = async ({ req }): Promise<any> => {
12+
const user: AuthUserType = {
13+
roles: ['user_admin', 'org_admin', 'editor'],
14+
uuid: testUUID,
15+
isBuilder: false
2016
}
21-
})()
17+
logger.info(`The user.roles for this session is: ${user.roles.toString()}`)
18+
return { user }
19+
}

src/auth/middleware.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import muid from 'uuid-mongodb'
2+
import { Request } from 'express'
23
import { AuthUserType } from '../types.js'
34
import { verifyJWT } from './util.js'
45
import { logger } from '../logger.js'
56

7+
export interface CustomContext {
8+
user: AuthUserType
9+
token?: string
10+
}
11+
612
const EMTPY_USER: AuthUserType = {
713
isBuilder: false,
814
roles: [],
@@ -12,7 +18,7 @@ const EMTPY_USER: AuthUserType = {
1218
/**
1319
* Create a middleware context for Apollo server
1420
*/
15-
export const createContext = async ({ req }): Promise<any> => {
21+
export const createContext = async ({ req }: { req: Request }): Promise<CustomContext> => {
1622
try {
1723
return await validateTokenAndExtractUser(req)
1824
} catch (e) {
@@ -21,7 +27,7 @@ export const createContext = async ({ req }): Promise<any> => {
2127
}
2228
}
2329

24-
async function validateTokenAndExtractUser (req: Request): Promise<{ user: AuthUserType, token?: string }> {
30+
async function validateTokenAndExtractUser (req: Request): Promise<CustomContext> {
2531
const { headers } = req
2632
// eslint-disable-next-line @typescript-eslint/dot-notation
2733
const authHeader = String(headers?.['authorization'] ?? '')

0 commit comments

Comments
 (0)