@laboratory-one/api-components 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/cjs/auth/auth.service.d.ts +3 -1
  2. package/dist/cjs/auth/auth.service.d.ts.map +1 -1
  3. package/dist/cjs/auth/auth.service.js +5 -1
  4. package/dist/cjs/auth/auth.service.js.map +1 -1
  5. package/dist/cjs/types/index.d.ts +1 -0
  6. package/dist/cjs/types/index.d.ts.map +1 -1
  7. package/dist/cjs/types/index.js +1 -0
  8. package/dist/cjs/types/index.js.map +1 -1
  9. package/dist/cjs/types/req.type.d.ts +6 -0
  10. package/dist/cjs/types/req.type.d.ts.map +1 -0
  11. package/dist/cjs/types/req.type.js +3 -0
  12. package/dist/cjs/types/req.type.js.map +1 -0
  13. package/dist/cjs/user/dtos/delete-user.request.dto.d.ts +4 -0
  14. package/dist/cjs/user/dtos/delete-user.request.dto.d.ts.map +1 -0
  15. package/dist/cjs/user/dtos/delete-user.request.dto.js +15 -0
  16. package/dist/cjs/user/dtos/delete-user.request.dto.js.map +1 -0
  17. package/dist/cjs/user/dtos/index.d.ts +1 -0
  18. package/dist/cjs/user/dtos/index.d.ts.map +1 -1
  19. package/dist/cjs/user/dtos/index.js +1 -0
  20. package/dist/cjs/user/dtos/index.js.map +1 -1
  21. package/dist/cjs/user/index.d.ts +1 -0
  22. package/dist/cjs/user/index.d.ts.map +1 -1
  23. package/dist/cjs/user/index.js +1 -0
  24. package/dist/cjs/user/index.js.map +1 -1
  25. package/dist/cjs/user/schemas/delete-user.schema.d.ts +9 -0
  26. package/dist/cjs/user/schemas/delete-user.schema.d.ts.map +1 -0
  27. package/dist/cjs/user/schemas/delete-user.schema.js +9 -0
  28. package/dist/cjs/user/schemas/delete-user.schema.js.map +1 -0
  29. package/dist/cjs/user/schemas/index.d.ts +4 -0
  30. package/dist/cjs/user/schemas/index.d.ts.map +1 -0
  31. package/dist/cjs/user/schemas/index.js +7 -0
  32. package/dist/cjs/user/schemas/index.js.map +1 -0
  33. package/dist/cjs/user/schemas/signup.schema.d.ts +12 -0
  34. package/dist/cjs/user/schemas/signup.schema.d.ts.map +1 -0
  35. package/dist/cjs/user/schemas/signup.schema.js +10 -0
  36. package/dist/cjs/user/schemas/signup.schema.js.map +1 -0
  37. package/dist/cjs/user/schemas/update-user.schema.d.ts +18 -0
  38. package/dist/cjs/user/schemas/update-user.schema.d.ts.map +1 -0
  39. package/dist/cjs/user/schemas/update-user.schema.js +14 -0
  40. package/dist/cjs/user/schemas/update-user.schema.js.map +1 -0
  41. package/dist/cjs/user/user.controller.d.ts +4 -3
  42. package/dist/cjs/user/user.controller.d.ts.map +1 -1
  43. package/dist/cjs/user/user.controller.js +5 -13
  44. package/dist/cjs/user/user.controller.js.map +1 -1
  45. package/dist/cjs/utils/index.d.ts +2 -0
  46. package/dist/cjs/utils/index.d.ts.map +1 -1
  47. package/dist/cjs/utils/index.js +2 -0
  48. package/dist/cjs/utils/index.js.map +1 -1
  49. package/dist/cjs/utils/noop.util.d.ts +2 -1
  50. package/dist/cjs/utils/noop.util.d.ts.map +1 -1
  51. package/dist/cjs/utils/noop.util.js +5 -3
  52. package/dist/cjs/utils/noop.util.js.map +1 -1
  53. package/dist/cjs/utils/schema.util.d.ts +11 -0
  54. package/dist/cjs/utils/schema.util.d.ts.map +1 -0
  55. package/dist/cjs/utils/schema.util.js +14 -0
  56. package/dist/cjs/utils/schema.util.js.map +1 -0
  57. package/dist/esm/auth/auth.service.d.ts +3 -1
  58. package/dist/esm/auth/auth.service.d.ts.map +1 -1
  59. package/dist/esm/auth/auth.service.js +5 -1
  60. package/dist/esm/auth/auth.service.js.map +1 -1
  61. package/dist/esm/types/index.d.ts +1 -0
  62. package/dist/esm/types/index.d.ts.map +1 -1
  63. package/dist/esm/types/index.js +1 -0
  64. package/dist/esm/types/index.js.map +1 -1
  65. package/dist/esm/types/req.type.d.ts +6 -0
  66. package/dist/esm/types/req.type.d.ts.map +1 -0
  67. package/dist/esm/types/req.type.js +2 -0
  68. package/dist/esm/types/req.type.js.map +1 -0
  69. package/dist/esm/user/dtos/delete-user.request.dto.d.ts +4 -0
  70. package/dist/esm/user/dtos/delete-user.request.dto.d.ts.map +1 -0
  71. package/dist/esm/user/dtos/delete-user.request.dto.js +11 -0
  72. package/dist/esm/user/dtos/delete-user.request.dto.js.map +1 -0
  73. package/dist/esm/user/dtos/index.d.ts +1 -0
  74. package/dist/esm/user/dtos/index.d.ts.map +1 -1
  75. package/dist/esm/user/dtos/index.js +1 -0
  76. package/dist/esm/user/dtos/index.js.map +1 -1
  77. package/dist/esm/user/index.d.ts +1 -0
  78. package/dist/esm/user/index.d.ts.map +1 -1
  79. package/dist/esm/user/index.js +1 -0
  80. package/dist/esm/user/index.js.map +1 -1
  81. package/dist/esm/user/schemas/delete-user.schema.d.ts +9 -0
  82. package/dist/esm/user/schemas/delete-user.schema.d.ts.map +1 -0
  83. package/dist/esm/user/schemas/delete-user.schema.js +6 -0
  84. package/dist/esm/user/schemas/delete-user.schema.js.map +1 -0
  85. package/dist/esm/user/schemas/index.d.ts +4 -0
  86. package/dist/esm/user/schemas/index.d.ts.map +1 -0
  87. package/dist/esm/user/schemas/index.js +4 -0
  88. package/dist/esm/user/schemas/index.js.map +1 -0
  89. package/dist/esm/user/schemas/signup.schema.d.ts +12 -0
  90. package/dist/esm/user/schemas/signup.schema.d.ts.map +1 -0
  91. package/dist/esm/user/schemas/signup.schema.js +7 -0
  92. package/dist/esm/user/schemas/signup.schema.js.map +1 -0
  93. package/dist/esm/user/schemas/update-user.schema.d.ts +18 -0
  94. package/dist/esm/user/schemas/update-user.schema.d.ts.map +1 -0
  95. package/dist/esm/user/schemas/update-user.schema.js +11 -0
  96. package/dist/esm/user/schemas/update-user.schema.js.map +1 -0
  97. package/dist/esm/user/user.controller.d.ts +4 -3
  98. package/dist/esm/user/user.controller.d.ts.map +1 -1
  99. package/dist/esm/user/user.controller.js +5 -13
  100. package/dist/esm/user/user.controller.js.map +1 -1
  101. package/dist/esm/utils/index.d.ts +2 -0
  102. package/dist/esm/utils/index.d.ts.map +1 -1
  103. package/dist/esm/utils/index.js +2 -0
  104. package/dist/esm/utils/index.js.map +1 -1
  105. package/dist/esm/utils/noop.util.d.ts +2 -1
  106. package/dist/esm/utils/noop.util.d.ts.map +1 -1
  107. package/dist/esm/utils/noop.util.js +2 -1
  108. package/dist/esm/utils/noop.util.js.map +1 -1
  109. package/dist/esm/utils/schema.util.d.ts +11 -0
  110. package/dist/esm/utils/schema.util.d.ts.map +1 -0
  111. package/dist/esm/utils/schema.util.js +11 -0
  112. package/dist/esm/utils/schema.util.js.map +1 -0
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +4 -3
  115. package/src/auth/auth.service.ts +12 -3
  116. package/src/types/index.ts +1 -0
  117. package/src/types/req.type.ts +5 -0
  118. package/src/user/dtos/delete-user.request.dto.ts +8 -0
  119. package/src/user/dtos/index.ts +1 -0
  120. package/src/user/index.ts +1 -0
  121. package/src/user/schemas/delete-user.schema.ts +7 -0
  122. package/src/user/schemas/index.ts +3 -0
  123. package/src/user/schemas/signup.schema.ts +8 -0
  124. package/src/user/schemas/update-user.schema.ts +12 -0
  125. package/src/user/user.controller.ts +10 -14
  126. package/src/utils/index.ts +2 -0
  127. package/src/utils/noop.util.ts +2 -1
  128. package/src/utils/schema.util.ts +11 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laboratory-one/api-components",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "API components for Laboratory One",
5
5
  "author": "Laboratory One",
6
6
  "private": false,
@@ -37,7 +37,7 @@
37
37
  "@nestjs/core": "10.3.9",
38
38
  "@nestjs/jwt": "10.2.0",
39
39
  "@nestjs/platform-express": "10.3.9",
40
- "@nestjs/schedule": "^4.1.0",
40
+ "@nestjs/schedule": "4.1.0",
41
41
  "@nestjs/swagger": "7.3.1",
42
42
  "@nestjs/terminus": "10.2.3",
43
43
  "@prisma/client": "5.15.1",
@@ -57,7 +57,8 @@
57
57
  "prisma": "5.15.1",
58
58
  "reflect-metadata": "0.2.2",
59
59
  "rxjs": "7.8.1",
60
- "stytch": "10.18.0"
60
+ "stytch": "10.18.0",
61
+ "zod": "3.23.8"
61
62
  },
62
63
  "devDependencies": {
63
64
  "@babel/core": "7.24.7",
@@ -21,12 +21,15 @@ export class AuthService {
21
21
  });
22
22
  }
23
23
 
24
- async signup(data: RegisterRequestDto): Promise<boolean> {
24
+ async signup(
25
+ data: RegisterRequestDto,
26
+ ): Promise<stytch.PasswordsCreateResponse> {
25
27
  this.logger.debug('signup');
26
28
 
27
- const res = await this.authClient.passwords.create(data);
29
+ const res: stytch.PasswordsCreateResponse =
30
+ await this.authClient.passwords.create(data);
28
31
 
29
- return res['status_code'] === 200;
32
+ return res;
30
33
  }
31
34
 
32
35
  async login(data: RegisterRequestDto): Promise<boolean> {
@@ -45,4 +48,10 @@ export class AuthService {
45
48
  }
46
49
  }
47
50
  }
51
+
52
+ async delete(externalId: string): Promise<void> {
53
+ this.logger.debug('delete');
54
+
55
+ await this.authClient.users.delete({ user_id: externalId });
56
+ }
48
57
  }
@@ -1 +1,2 @@
1
1
  export * from './success.response.dto';
2
+ export * from './req.type';
@@ -0,0 +1,5 @@
1
+ export type reqType = {
2
+ user: {
3
+ userId: string;
4
+ };
5
+ };
@@ -0,0 +1,8 @@
1
+ import { IsString } from 'class-validator';
2
+ import { ApiProperty } from '@nestjs/swagger';
3
+
4
+ export class DeleteUserRequestDto {
5
+ @IsString()
6
+ @ApiProperty()
7
+ email: string;
8
+ }
@@ -2,3 +2,4 @@ export * from './get-user.response.dto';
2
2
  export * from './register.request.dto';
3
3
  export * from './register.response.dto';
4
4
  export * from './update-user.request.dto';
5
+ export * from './delete-user.request.dto';
package/src/user/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './dtos';
2
+ export * from './schemas';
2
3
  export * from './user.module';
3
4
  export * from './user.service';
4
5
  export * from './user.controller';
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+
3
+ import { schemaPatterns } from '../../utils';
4
+
5
+ export const deleteUserSchema = z.object({
6
+ email: schemaPatterns.email,
7
+ });
@@ -0,0 +1,3 @@
1
+ export * from './signup.schema';
2
+ export * from './delete-user.schema';
3
+ export * from './update-user.schema';
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+
3
+ import { schemaPatterns } from '../../utils';
4
+
5
+ export const signupSchema = z.object({
6
+ email: schemaPatterns.email,
7
+ password: schemaPatterns.password,
8
+ });
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+
3
+ import { schemaPatterns } from '../../utils';
4
+
5
+ export const updateUserSchema = z
6
+ .object({
7
+ phoneNumber: schemaPatterns.phoneNumber,
8
+ fullName: schemaPatterns.fullName,
9
+ pushToken: schemaPatterns.pushToken,
10
+ tz: schemaPatterns.tz,
11
+ })
12
+ .partial();
@@ -10,6 +10,7 @@ import { JwtService } from '@nestjs/jwt';
10
10
  import { ApiResponse, ApiTags } from '@nestjs/swagger';
11
11
  import { OnboardingStatus, User } from '@prisma/client';
12
12
  import { ExpoPushMessage } from 'expo-server-sdk';
13
+ import * as stytch from 'stytch';
13
14
 
14
15
  import { AuthService } from '../auth/auth.service';
15
16
  import { UserService } from './user.service';
@@ -26,6 +27,7 @@ import {
26
27
  utcOffsetToHours,
27
28
  } from '../utils';
28
29
  import { AuthGuard } from '../guard';
30
+ import * as types from '../types';
29
31
 
30
32
  @ApiTags('User')
31
33
  @Controller('user')
@@ -49,22 +51,16 @@ export class UserController {
49
51
  password: cleanString(dto.password),
50
52
  };
51
53
 
52
- try {
53
- const res: boolean = await this.authService.signup(cleanedDTO);
54
+ const res: stytch.PasswordsCreateResponse =
55
+ await this.authService.signup(cleanedDTO);
54
56
 
55
- if (!res) {
56
- handleError('Error creating user');
57
- }
58
- } catch (error: any) {
59
- if (error?.error_message) {
60
- handleError(error.error_message);
61
- } else {
62
- handleError('Error creating user');
63
- }
57
+ if (!res) {
58
+ handleError('Error creating user');
64
59
  }
65
60
 
66
61
  const user: User = await this.userService.create({
67
62
  email: cleanedDTO.email,
63
+ externalId: res.user_id,
68
64
  });
69
65
 
70
66
  if (!user) {
@@ -120,7 +116,7 @@ export class UserController {
120
116
  description: 'get self successful',
121
117
  type: GetUserResponseDto,
122
118
  })
123
- async getSelf(@Request() req): Promise<GetUserResponseDto> {
119
+ async getSelf(@Request() req: types.reqType): Promise<GetUserResponseDto> {
124
120
  try {
125
121
  const user: User = await this.userService.findOneByUserId(
126
122
  req.user.userId,
@@ -141,7 +137,7 @@ export class UserController {
141
137
  })
142
138
  async edit(
143
139
  @Body() dto: UpdateUserRequestDto,
144
- @Request() req,
140
+ @Request() req: types.reqType,
145
141
  ): Promise<GetUserResponseDto> {
146
142
  try {
147
143
  const cleanDto: UpdateUserRequestDto = {
@@ -178,7 +174,7 @@ export class UserController {
178
174
  status: 200,
179
175
  description: 'push test successful',
180
176
  })
181
- async pushTest(@Request() req): Promise<void> {
177
+ async pushTest(@Request() req: types.reqType): Promise<void> {
182
178
  try {
183
179
  const user: User = await this.userService.findOneByUserId(
184
180
  req.user.userId,
@@ -2,3 +2,5 @@ export * from './datetime.util';
2
2
  export * from './error.util';
3
3
  export * from './input.util';
4
4
  export * from './string.util';
5
+ export * from './noop.util';
6
+ export * from './schema.util';
@@ -1 +1,2 @@
1
- export const NoopUtil = () => {};
1
+ export const noop = () => {};
2
+ export const noopAsync = async () => {};
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+
3
+ export const schemaPatterns = {
4
+ email: z.string().email().max(100).min(1).toLowerCase().trim(),
5
+ password: z.string().min(10).max(100).trim(),
6
+ phoneNumber: z.string().min(7).max(20).trim(),
7
+ fullName: z.string().min(2).max(100).trim(),
8
+ pushToken: z.string().min(1).max(500).trim(),
9
+ tz: z.number().int().min(-10000).max(10000),
10
+ date: z.string().date(),
11
+ };