Skip to content

Commit df4ac3b

Browse files
committed
2 parents 05e6a7f + eab79d2 commit df4ac3b

29 files changed

+7237
-7171
lines changed

.contrib-locs

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
{
2-
matchFiles: ['**/*.{yml,yaml,md,ts,tsx,js,sql,gql}', '!**/*.codegen.*', '**/generated/**/*']
3-
}
2+
matchFiles: [
3+
'**/*.{yml,yaml,md,ts,tsx,js,sql,gql}',
4+
'!**/*.codegen.*',
5+
'!**/generated/**/*',
6+
'!pnpm-lock.yaml'
7+
]
8+
}

.vscode/settings.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"typescript.tsdk": "web-extension/node_modules/typescript/lib",
2+
"typescript.tsdk": "node_modules/typescript/lib",
33
"eslint.workingDirectories": [
44
{
55
"mode": "auto"

backend/lib/awsCdkAuthierStack.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ export class AwsCdkAuthierStack extends Stack {
3232
MJ_APIKEY_PUBLIC: process.env.MJ_APIKEY_PUBLIC as string,
3333
MJ_APIKEY_PRIVATE: process.env.MJ_APIKEY_PRIVATE as string,
3434
STRIPE_ENDPOINT: process.env.STRIPE_ENDPOINT as string,
35-
STRIPE_SECRET_KEY: process.env.STRIPE_SECRET_KEY as string
35+
STRIPE_SECRET_KEY: process.env.STRIPE_SECRET_KEY as string,
36+
REDIS_URL: process.env.REDIS_URL as string
3637
}
3738
})
3839

backend/models/UserMutation.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { UserGQL } from './generated/UserGQL'
1111
import { DeviceGQL } from './generated/DeviceGQL'
1212
import { UserBase, UserQuery } from './UserQuery'
1313
import { GraphQLInt, GraphQLResolveInfo } from 'graphql'
14-
import { getPrismaRelationsFromInfo } from '../utils/getPrismaRelationsFromInfo'
14+
import { getPrismaRelationsFromGQLInfo } from '../utils/getPrismaRelationsFromInfo'
1515
import { ChangeMasterPasswordInput } from './AuthInputs'
1616
import { GraphQLEmailAddress, GraphQLNonNegativeInt } from 'graphql-scalars'
1717
import { sendEmail } from '../utils/email'
@@ -90,7 +90,7 @@ export class UserMutation extends UserBase {
9090
) {
9191
return ctx.prisma.encryptedSecret.findUnique({
9292
where: { id },
93-
include: getPrismaRelationsFromInfo({
93+
include: getPrismaRelationsFromGQLInfo({
9494
info,
9595
rootModel: dmmf.modelMap.EncryptedSecret
9696
})

backend/package.json

+20-20
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,39 @@
1010
"@fastify/aws-lambda": "3.2.0",
1111
"@fastify/cookie": "8.3.0",
1212
"@fastify/cors": "^8.2.1",
13-
"@prisma/client": "^4.13.0",
14-
"@react-native-firebase/app": "^17.4.2",
15-
"@sentry/node": "^7.49.0",
16-
"@types/jsonwebtoken": "^9.0.1",
13+
"@prisma/client": "^4.14.1",
14+
"@react-native-firebase/app": "^17.5.0",
15+
"@sentry/node": "^7.52.1",
16+
"@types/jsonwebtoken": "^9.0.2",
1717
"bytes": "^3.1.2",
1818
"chalk": "^5.2.0",
1919
"class-transformer": "^0.5.1",
2020
"class-validator": "0.13.2",
2121
"cpy": "^9.0.1",
2222
"debug": "^4.3.4",
2323
"dotenv": "^16.0.3",
24-
"fastify": "^4.15.0",
24+
"fastify": "^4.17.0",
2525
"fastify-cookie": "^5.7.0",
2626
"fastify-helmet": "^7.1.0",
2727
"fastify-jwt": "^4.2.0",
2828
"fastify-raw-body": "^4.2.0",
29-
"firebase-admin": "^11.7.0",
29+
"firebase-admin": "^11.8.0",
3030
"graphql-fields": "^2.0.3",
3131
"graphql-list-fields": "^2.0.2",
32-
"graphql-scalars": "^1.21.3",
32+
"graphql-scalars": "^1.22.0",
3333
"ip": "^1.1.8",
3434
"jsonwebtoken": "^9.0.0",
3535
"lodash.set": "^4.3.2",
3636
"mem": "8",
37-
"mercurius": "^12.2.0",
37+
"mercurius": "^13.0.0",
3838
"node-mailjet": "^6.0.2",
39-
"pino": "^8.11.0",
39+
"pino": "^8.14.1",
4040
"pino-pretty": "10.0.0",
41-
"prisma": "^4.13.0",
41+
"prisma": "^4.14.1",
4242
"raw-body": "^2.5.2",
4343
"reflect-metadata": "^0.1.13",
4444
"source-map-support": "^0.5.21",
45-
"stripe": "^11.18.0",
45+
"stripe": "^12.5.0",
4646
"type-graphql": "npm:@capaj/[email protected]",
4747
"typescript": "^5.0.4",
4848
"uuid": "^9.0.0"
@@ -51,28 +51,28 @@
5151
"@anatine/esbuild-decorators": "^0.2.19",
5252
"@capaj/prisma-typegraphql-types-generator": "^1.6.4",
5353
"@cjsa/cpy": "^9.0.1",
54-
"@faker-js/faker": "^7.6.0",
54+
"@faker-js/faker": "^8.0.1",
5555
"@mermaid-js/mermaid-cli": "^10.1.0",
56-
"@swc/core": "^1.3.53",
56+
"@swc/core": "^1.3.58",
5757
"@types/graphql-list-fields": "^2.0.3",
5858
"@types/lodash.set": "^4.3.7",
5959
"@types/node-mailjet": "^3.3.9",
6060
"@types/uuid": "^9.0.1",
61-
"aws-cdk": "2.76.0",
62-
"aws-cdk-lib": "^2.76.0",
63-
"constructs": "^10.2.2",
64-
"esbuild": "^0.17.17",
61+
"aws-cdk": "2.79.1",
62+
"aws-cdk-lib": "^2.79.1",
63+
"constructs": "^10.2.27",
64+
"esbuild": "^0.17.19",
6565
"graphql": "^16.6.0",
6666
"is-ci": "^3.0.1",
6767
"mz": "^2.7.0",
68-
"prisma-erd-generator": "^1.5.4",
68+
"prisma-erd-generator": "^1.7.0",
6969
"nodemon": "^2.0.22",
7070
"sql-formatter": "^12.2.0",
7171
"sql-highlight": "^4.3.3",
7272
"ts-node": "^10.9.1",
7373
"unplugin-swc": "^1.3.2",
74-
"vite": "^4.3.1",
75-
"vitest": "^0.30.1"
74+
"vite": "^4.3.7",
75+
"vitest": "^0.31.1"
7676
},
7777
"scripts": {
7878
"dev": "DEBUG=au:* pnpm nodemon --exec ts-node-transpile-only server.ts",

backend/prisma/prismaClient.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { getDbCount } from '../scripts/getDbCount'
66

77
import { DMMFClass } from '.prisma/client/runtime'
88
import { PrismaClient } from '.prisma/client'
9-
console.log(__dirname)
109

1110
const log = debug('prisma:sql')
1211
const logQueries = debug('au:prisma')
@@ -53,4 +52,5 @@ if (debugLogs) {
5352
}
5453

5554
export default prismaClient
56-
export const dmmf = (prismaClient as any)._baseDmmf as DMMFClass
55+
// @ts-expect-error
56+
export const dmmf = prismaClient._runtimeDataModel as any

backend/schemas/RootResolver.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { LoginResponse } from '../models/models'
1616
import { verify } from 'jsonwebtoken'
1717
import { UserQuery } from '../models/UserQuery'
1818
import { UserMutation } from '../models/UserMutation'
19+
import { constructURL } from '../../shared/urlUtils'
1920

2021
import { GraphqlError } from '../api/GraphqlError'
2122
import { WebInputElement } from '../models/WebInputElement'
@@ -28,7 +29,7 @@ import { Device, User, WebInput } from '.prisma/client'
2829
import { WebInputGQL } from '../models/generated/WebInputGQL'
2930

3031
import { GraphQLResolveInfo } from 'graphql'
31-
import { getPrismaRelationsFromInfo } from '../utils/getPrismaRelationsFromInfo'
32+
import { getPrismaRelationsFromGQLInfo } from '../utils/getPrismaRelationsFromInfo'
3233

3334
import { DeviceInput, DeviceMutation, DeviceQuery } from '../models/Device'
3435
import {
@@ -112,10 +113,10 @@ export class RootResolver {
112113
@Info() info: GraphQLResolveInfo
113114
) {
114115
const { jwtPayload } = ctx
115-
//? Ask @Capajj how it works.
116-
const include = getPrismaRelationsFromInfo({
116+
117+
const include = getPrismaRelationsFromGQLInfo({
117118
info,
118-
rootModel: dmmf.modelMap.User
119+
rootModel: dmmf.models.User
119120
})
120121

121122
const tmp = await ctx.prisma.user.findUnique({
@@ -137,7 +138,7 @@ export class RootResolver {
137138

138139
return ctx.prisma.device.findUnique({
139140
where: { id: jwtPayload.deviceId },
140-
include: getPrismaRelationsFromInfo({
141+
include: getPrismaRelationsFromGQLInfo({
141142
info,
142143
rootModel: dmmf.modelMap.Device
143144
})
@@ -444,7 +445,7 @@ export class RootResolver {
444445
for (const webInput of webInputs) {
445446
const forUpsert = {
446447
url: webInput.url,
447-
host: new URL(webInput.url).host,
448+
host: constructURL(webInput.url).host,
448449
domPath: webInput.domPath,
449450
kind: webInput.kind,
450451
addedByUserId: ctx.jwtPayload.userId

backend/utils/getPrismaRelationsFromInfo.spec.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { dmmf } from '../prisma/prismaClient'
2-
import { getPrismaRelationsFromInfo } from './getPrismaRelationsFromInfo'
2+
import { getPrismaRelationsFromGQLInfo } from './getPrismaRelationsFromInfo'
33
import gqlInfo from './fixtures/gqlInfo.json'
44
import { describe, expect, it } from 'vitest'
55
import { Kind } from 'graphql'
66

77
describe('getPrismaRelationsFromInfo', () => {
88
it('should ignore fields where first letter is NOT capital', async () => {
9-
const res = getPrismaRelationsFromInfo({
9+
const res = getPrismaRelationsFromGQLInfo({
1010
info: {
1111
fieldName: 'me',
1212
fieldNodes: [
@@ -60,7 +60,7 @@ describe('getPrismaRelationsFromInfo', () => {
6060
}
6161
]
6262
},
63-
rootModel: dmmf.modelMap.User
63+
rootModel: dmmf.models.User
6464
})
6565

6666
expect(res).toMatchInlineSnapshot(`
@@ -71,9 +71,9 @@ describe('getPrismaRelationsFromInfo', () => {
7171
})
7272

7373
it('should load even nested relation fields', async () => {
74-
const res = getPrismaRelationsFromInfo({
74+
const res = getPrismaRelationsFromGQLInfo({
7575
info: gqlInfo as any,
76-
rootModel: dmmf.modelMap.User
76+
rootModel: dmmf.models.User
7777
})
7878

7979
expect(res).toMatchInlineSnapshot(`

backend/utils/getPrismaRelationsFromInfo.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { dmmf } from '../prisma/prismaClient'
88
/**
99
* @returns prisma object relation mapping that can be passed into prisma query "include" field
1010
*/
11-
export const getPrismaRelationsFromInfo = ({
11+
export const getPrismaRelationsFromGQLInfo = ({
1212
info,
1313
rootModel
1414
}: {
@@ -42,7 +42,7 @@ export const getPrismaRelationsFromInfo = ({
4242
if (field?.kind !== 'object') {
4343
break
4444
}
45-
lastRelationModel = dmmf.modelMap[field.type as string]
45+
lastRelationModel = dmmf.models[field.type as string]
4646
path.push(singleRelation)
4747
if (lastRelationModel) {
4848
set(prismaInclude, path.join('.include.'), true)

backend/vitest.config.ts

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export default defineConfig({
1616
}
1717
},
1818
resolve: {
19+
extensions: ['.js', '.ts', '.jsx', '.tsx', '.json'], // by default vite also resolves mjs files, but we run in CJS mode so we don't want to load ESM modules
20+
1921
alias: {
2022
'.prisma/client': path.resolve(__dirname, './node_modules/.prisma/client')
2123
}

0 commit comments

Comments
 (0)