Skip to content

Commit 32756b9

Browse files
committed
feat: support zod v4 schemas
1 parent e374196 commit 32756b9

File tree

86 files changed

+580
-559
lines changed

Some content is hidden

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

86 files changed

+580
-559
lines changed

apps/api/libnest.config.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable @typescript-eslint/no-namespace */
12
/* eslint-disable @typescript-eslint/no-empty-object-type */
23
/* eslint-disable @typescript-eslint/consistent-type-definitions */
34

@@ -8,9 +9,17 @@ import * as url from 'node:url';
89
import { defineUserConfig } from '@douglasneuroinformatics/libnest/user-config';
910
import type { InferUserConfig } from '@douglasneuroinformatics/libnest/user-config';
1011
import { getReleaseInfo } from '@opendatacapture/release-info';
12+
import type { TokenPayload } from '@opendatacapture/schemas/auth';
13+
import type { Permissions } from '@opendatacapture/schemas/core';
1114

1215
declare module '@douglasneuroinformatics/libnest/user-config' {
1316
export interface UserConfig extends InferUserConfig<typeof config> {}
17+
export namespace UserTypes {
18+
export interface JwtPayload extends TokenPayload {}
19+
export interface UserQueryMetadata {
20+
additionalPermissions?: Permissions;
21+
}
22+
}
1423
}
1524

1625
const config = defineUserConfig({

apps/api/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"dependencies": {
1818
"@douglasneuroinformatics/libcrypto": "catalog:",
1919
"@douglasneuroinformatics/libjs": "catalog:",
20-
"@douglasneuroinformatics/libnest": "^5.3.1",
20+
"@douglasneuroinformatics/libnest": "^7.0.1",
2121
"@douglasneuroinformatics/libpasswd": "catalog:",
2222
"@douglasneuroinformatics/libstats": "catalog:",
2323
"@faker-js/faker": "^9.4.0",
@@ -43,7 +43,7 @@
4343
"reflect-metadata": "^0.1.14",
4444
"rxjs": "^7.8.2",
4545
"ts-pattern": "workspace:ts-pattern__5.x@*",
46-
"zod": "workspace:zod__3.23.x@*"
46+
"zod": "workspace:zod__3.x@*"
4747
},
4848
"devDependencies": {
4949
"@nestjs/testing": "^11.0.11",

apps/api/src/assignments/dto/update-assignment.dto.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ValidationSchema } from '@douglasneuroinformatics/libnest';
22
import { ApiProperty } from '@nestjs/swagger';
33
import { $UpdateAssignmentData } from '@opendatacapture/schemas/assignment';
44
import type { AssignmentStatus, UpdateAssignmentData } from '@opendatacapture/schemas/assignment';
5-
import { z } from 'zod';
5+
import { z } from 'zod/v4';
66

77
@ValidationSchema(
88
$UpdateAssignmentData.extend({

apps/api/src/core/env.schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { $BooleanLike, $NumberLike, $UrlLike } from '@douglasneuroinformatics/libjs';
22
import { $BaseEnv } from '@douglasneuroinformatics/libnest';
3-
import { z } from 'zod';
3+
import { z } from 'zod/v4';
44

55
export const $Env = $BaseEnv
66
.omit({ API_PORT: true })

apps/api/src/instrument-records/dto/update-instrument-record.dto.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { DataTransferObject } from '@douglasneuroinformatics/libnest';
2-
import { z } from 'zod';
2+
import { z } from 'zod/v4';
33

44
export class UpdateInstrumentRecordDto extends DataTransferObject({
55
data: z.union([z.record(z.string(), z.any()), z.array(z.any())])

apps/api/src/instrument-records/instrument-records.controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type { AppAbility } from '@douglasneuroinformatics/libnest';
55
import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Param, Patch, Post, Query } from '@nestjs/common';
66
import { ApiOperation, ApiTags } from '@nestjs/swagger';
77
import type { InstrumentKind } from '@opendatacapture/runtime-core';
8-
import { z } from 'zod';
8+
import { z } from 'zod/v4';
99

1010
import { CreateInstrumentRecordDto } from './dto/create-instrument-record.dto';
1111
import { UpdateInstrumentRecordDto } from './dto/update-instrument-record.dto';

apps/api/src/main.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { AppFactory } from '@douglasneuroinformatics/libnest';
2+
import { PrismaClient } from '@prisma/client';
23

34
import { AssignmentsModule } from './assignments/assignments.module';
45
import { $Env } from './core/env.schema';
@@ -54,6 +55,9 @@ export default AppFactory.create({
5455
}
5556
],
5657
prisma: {
58+
client: {
59+
constructor: PrismaClient
60+
},
5761
dbPrefix: 'data-capture'
5862
},
5963
version: '1'

apps/api/src/users/dto/create-user.dto.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ApiProperty } from '@nestjs/swagger';
44
import type { Sex } from '@opendatacapture/schemas/subject';
55
import { $CreateUserData } from '@opendatacapture/schemas/user';
66
import type { BasePermissionLevel, CreateUserData } from '@opendatacapture/schemas/user';
7-
import { z } from 'zod';
7+
import { z } from 'zod/v4';
88

99
@ValidationSchema(
1010
$CreateUserData.extend({

apps/api/src/vendor/configured.auth.module.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ import { AuthModule, getModelToken } from '@douglasneuroinformatics/libnest';
22
import type { Model } from '@douglasneuroinformatics/libnest';
33
import { Module } from '@nestjs/common';
44
import { $LoginCredentials } from '@opendatacapture/schemas/auth';
5-
import type { JwtPayload } from '@opendatacapture/schemas/auth';
6-
import { $Permissions } from '@opendatacapture/schemas/core';
7-
import { $Group } from '@opendatacapture/schemas/group';
8-
import { $BasePermissionLevel } from '@opendatacapture/schemas/user';
9-
import { z } from 'zod';
105

116
@Module({
127
imports: [
@@ -47,17 +42,7 @@ import { z } from 'zod';
4742
});
4843
},
4944
schemas: {
50-
loginCredentials: $LoginCredentials,
51-
metadata: z.object({
52-
additionalPermissions: $Permissions.optional()
53-
}),
54-
tokenPayload: z.object({
55-
basePermissionLevel: $BasePermissionLevel.nullable(),
56-
firstName: z.string().nullable(),
57-
groups: z.array($Group),
58-
lastName: z.string().nullable(),
59-
username: z.string()
60-
}) satisfies z.ZodType<Omit<JwtPayload, 'permissions'>>
45+
loginCredentials: $LoginCredentials
6146
},
6247
userQuery: async ({ username }) => {
6348
const user = await userModel.findFirst({

apps/gateway/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
},
1818
"dependencies": {
1919
"@douglasneuroinformatics/libcrypto": "catalog:",
20-
"@douglasneuroinformatics/libui": "^4.2.1",
20+
"@douglasneuroinformatics/libui": "catalog:",
2121
"@opendatacapture/react-core": "workspace:*",
2222
"@opendatacapture/runtime-core": "workspace:*",
2323
"@opendatacapture/runtime-v1": "workspace:*",
@@ -33,7 +33,7 @@
3333
"react-dom": "workspace:react-dom__19.x@*",
3434
"sirv": "^2.0.4",
3535
"sqlite3": "^5.1.7",
36-
"zod": "workspace:zod__3.23.x@*"
36+
"zod": "workspace:zod__3.x@*"
3737
},
3838
"devDependencies": {
3939
"@douglasneuroinformatics/esbuild-plugin-prisma": "catalog:",

0 commit comments

Comments
 (0)