@lenne.tech/nest-server 10.8.9 → 10.8.11

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 (212) hide show
  1. package/dist/core/common/args/filter.args.js +2 -2
  2. package/dist/core/common/args/filter.args.js.map +1 -1
  3. package/dist/core/common/args/pagination.args.js +5 -5
  4. package/dist/core/common/args/pagination.args.js.map +1 -1
  5. package/dist/core/common/helpers/config.helper.d.ts +1 -1
  6. package/dist/core/common/helpers/config.helper.js +8 -8
  7. package/dist/core/common/helpers/config.helper.js.map +1 -1
  8. package/dist/core/common/helpers/db.helper.d.ts +11 -11
  9. package/dist/core/common/helpers/db.helper.js +100 -100
  10. package/dist/core/common/helpers/db.helper.js.map +1 -1
  11. package/dist/core/common/helpers/file.helper.d.ts +1 -1
  12. package/dist/core/common/helpers/file.helper.js +10 -10
  13. package/dist/core/common/helpers/file.helper.js.map +1 -1
  14. package/dist/core/common/helpers/filter.helper.d.ts +12 -12
  15. package/dist/core/common/helpers/filter.helper.js +19 -19
  16. package/dist/core/common/helpers/filter.helper.js.map +1 -1
  17. package/dist/core/common/helpers/graphql.helper.d.ts +8 -8
  18. package/dist/core/common/helpers/graphql.helper.js +75 -75
  19. package/dist/core/common/helpers/graphql.helper.js.map +1 -1
  20. package/dist/core/common/helpers/input.helper.d.ts +7 -7
  21. package/dist/core/common/helpers/input.helper.js +60 -60
  22. package/dist/core/common/helpers/input.helper.js.map +1 -1
  23. package/dist/core/common/helpers/model.helper.d.ts +8 -8
  24. package/dist/core/common/helpers/model.helper.js +38 -38
  25. package/dist/core/common/helpers/model.helper.js.map +1 -1
  26. package/dist/core/common/helpers/service.helper.d.ts +2 -2
  27. package/dist/core/common/helpers/table.helper.d.ts +1 -1
  28. package/dist/core/common/inputs/combined-filter.input.js +6 -6
  29. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  30. package/dist/core/common/inputs/filter.input.js +6 -6
  31. package/dist/core/common/inputs/filter.input.js.map +1 -1
  32. package/dist/core/common/inputs/single-filter.input.js +10 -10
  33. package/dist/core/common/inputs/single-filter.input.js.map +1 -1
  34. package/dist/core/common/inputs/sort.input.js +4 -4
  35. package/dist/core/common/inputs/sort.input.js.map +1 -1
  36. package/dist/core/common/interfaces/server-options.interface.d.ts +8 -8
  37. package/dist/core/common/models/core-persistence.model.js +8 -8
  38. package/dist/core/common/models/core-persistence.model.js.map +1 -1
  39. package/dist/core/common/plugins/mongoose-id.plugin.d.ts +1 -1
  40. package/dist/core/common/plugins/mongoose-id.plugin.js +2 -2
  41. package/dist/core/common/plugins/mongoose-id.plugin.js.map +1 -1
  42. package/dist/core/common/scalars/any.scalar.js +8 -8
  43. package/dist/core/common/scalars/any.scalar.js.map +1 -1
  44. package/dist/core/common/scalars/date-timestamp.scalar.js +1 -1
  45. package/dist/core/common/scalars/date-timestamp.scalar.js.map +1 -1
  46. package/dist/core/common/scalars/date.scalar.js +1 -1
  47. package/dist/core/common/scalars/date.scalar.js.map +1 -1
  48. package/dist/core/common/scalars/json.scalar.js +8 -8
  49. package/dist/core/common/scalars/json.scalar.js.map +1 -1
  50. package/dist/core/common/services/config.service.d.ts +26 -26
  51. package/dist/core/common/services/crud.service.d.ts +32 -32
  52. package/dist/core/common/services/mailjet.service.js +1 -1
  53. package/dist/core/common/services/mailjet.service.js.map +1 -1
  54. package/dist/core/common/services/module.service.d.ts +1 -1
  55. package/dist/core/common/services/module.service.js.map +1 -1
  56. package/dist/core/common/types/falsy.type.d.ts +1 -1
  57. package/dist/core/common/types/id.type.d.ts +4 -4
  58. package/dist/core/common/types/require-only-one.type.d.ts +2 -2
  59. package/dist/core/common/types/required-at-least-one.type.d.ts +2 -2
  60. package/dist/core/common/types/string-or-object-id.type.d.ts +1 -1
  61. package/dist/core/modules/auth/core-auth.controller.js +6 -6
  62. package/dist/core/modules/auth/core-auth.controller.js.map +1 -1
  63. package/dist/core/modules/auth/core-auth.model.js +2 -2
  64. package/dist/core/modules/auth/core-auth.model.js.map +1 -1
  65. package/dist/core/modules/auth/core-auth.module.d.ts +4 -4
  66. package/dist/core/modules/auth/core-auth.module.js +2 -2
  67. package/dist/core/modules/auth/core-auth.module.js.map +1 -1
  68. package/dist/core/modules/auth/core-auth.resolver.js +6 -6
  69. package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
  70. package/dist/core/modules/auth/guards/auth.guard.d.ts +2 -2
  71. package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js +2 -2
  72. package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js.map +1 -1
  73. package/dist/core/modules/auth/inputs/core-auth-sign-up.input.js +2 -2
  74. package/dist/core/modules/auth/inputs/core-auth-sign-up.input.js.map +1 -1
  75. package/dist/core/modules/auth/services/core-auth.service.d.ts +2 -2
  76. package/dist/core/modules/file/core-file-info.model.js +8 -8
  77. package/dist/core/modules/file/core-file-info.model.js.map +1 -1
  78. package/dist/core/modules/file/core-file.controller.js +2 -2
  79. package/dist/core/modules/file/core-file.controller.js.map +1 -1
  80. package/dist/core/modules/file/core-file.resolver.js +6 -6
  81. package/dist/core/modules/file/core-file.resolver.js.map +1 -1
  82. package/dist/core/modules/file/core-file.service.d.ts +6 -6
  83. package/dist/core/modules/health-check/core-health-check-result.model.js +9 -9
  84. package/dist/core/modules/health-check/core-health-check-result.model.js.map +1 -1
  85. package/dist/core/modules/health-check/core-health-check.controller.js +2 -2
  86. package/dist/core/modules/health-check/core-health-check.controller.js.map +1 -1
  87. package/dist/core/modules/health-check/core-health-check.resolver.js +2 -2
  88. package/dist/core/modules/health-check/core-health-check.resolver.js.map +1 -1
  89. package/dist/core/modules/user/core-user.model.js +11 -11
  90. package/dist/core/modules/user/core-user.model.js.map +1 -1
  91. package/dist/core/modules/user/core-user.service.d.ts +2 -2
  92. package/dist/core/modules/user/inputs/core-user-create.input.js +3 -3
  93. package/dist/core/modules/user/inputs/core-user-create.input.js.map +1 -1
  94. package/dist/core/modules/user/inputs/core-user.input.js +10 -10
  95. package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
  96. package/dist/index.d.ts +8 -8
  97. package/dist/index.js +8 -8
  98. package/dist/index.js.map +1 -1
  99. package/dist/server/common/models/persistence.model.d.ts +2 -2
  100. package/dist/server/common/models/persistence.model.js +6 -6
  101. package/dist/server/common/models/persistence.model.js.map +1 -1
  102. package/dist/server/modules/auth/auth.controller.js +1 -1
  103. package/dist/server/modules/auth/auth.controller.js.map +1 -1
  104. package/dist/server/modules/auth/auth.model.js +3 -3
  105. package/dist/server/modules/auth/auth.model.js.map +1 -1
  106. package/dist/server/modules/auth/auth.resolver.js +3 -3
  107. package/dist/server/modules/auth/auth.resolver.js.map +1 -1
  108. package/dist/server/modules/auth/inputs/auth-sign-in.input.js +2 -2
  109. package/dist/server/modules/auth/inputs/auth-sign-in.input.js.map +1 -1
  110. package/dist/server/modules/auth/inputs/auth-sign-up.input.js +4 -4
  111. package/dist/server/modules/auth/inputs/auth-sign-up.input.js.map +1 -1
  112. package/dist/server/modules/file/file-info.model.js +2 -2
  113. package/dist/server/modules/file/file-info.model.js.map +1 -1
  114. package/dist/server/modules/file/file.controller.js +5 -5
  115. package/dist/server/modules/file/file.controller.js.map +1 -1
  116. package/dist/server/modules/file/file.resolver.js +5 -5
  117. package/dist/server/modules/file/file.resolver.js.map +1 -1
  118. package/dist/server/modules/user/avatar.controller.js +2 -2
  119. package/dist/server/modules/user/avatar.controller.js.map +1 -1
  120. package/dist/server/modules/user/inputs/user-create.input.js +2 -2
  121. package/dist/server/modules/user/inputs/user-create.input.js.map +1 -1
  122. package/dist/server/modules/user/inputs/user.input.js +2 -2
  123. package/dist/server/modules/user/inputs/user.input.js.map +1 -1
  124. package/dist/server/modules/user/outputs/find-and-count-users-result.output.js +4 -4
  125. package/dist/server/modules/user/outputs/find-and-count-users-result.output.js.map +1 -1
  126. package/dist/server/modules/user/user.model.js +8 -8
  127. package/dist/server/modules/user/user.model.js.map +1 -1
  128. package/dist/server/modules/user/user.resolver.d.ts +1 -1
  129. package/dist/server/modules/user/user.resolver.js +11 -11
  130. package/dist/server/modules/user/user.resolver.js.map +1 -1
  131. package/dist/server/modules/user/user.service.d.ts +1 -1
  132. package/dist/server/server.controller.js +2 -2
  133. package/dist/server/server.controller.js.map +1 -1
  134. package/dist/test/test.helper.d.ts +14 -14
  135. package/dist/test/test.helper.js +13 -3
  136. package/dist/test/test.helper.js.map +1 -1
  137. package/dist/tsconfig.build.tsbuildinfo +1 -1
  138. package/package.json +22 -19
  139. package/src/core/common/args/filter.args.ts +2 -2
  140. package/src/core/common/args/pagination.args.ts +5 -5
  141. package/src/core/common/decorators/graphql-service-options.decorator.ts +1 -1
  142. package/src/core/common/decorators/graphql-user.decorator.ts +1 -1
  143. package/src/core/common/decorators/rest-user.decorator.ts +1 -1
  144. package/src/core/common/helpers/config.helper.ts +22 -21
  145. package/src/core/common/helpers/db.helper.ts +164 -164
  146. package/src/core/common/helpers/file.helper.ts +18 -18
  147. package/src/core/common/helpers/filter.helper.ts +35 -35
  148. package/src/core/common/helpers/graphql.helper.ts +100 -100
  149. package/src/core/common/helpers/input.helper.ts +89 -89
  150. package/src/core/common/helpers/model.helper.ts +70 -70
  151. package/src/core/common/helpers/service.helper.ts +3 -3
  152. package/src/core/common/helpers/table.helper.ts +1 -1
  153. package/src/core/common/inputs/combined-filter.input.ts +5 -5
  154. package/src/core/common/inputs/filter.input.ts +5 -5
  155. package/src/core/common/inputs/single-filter.input.ts +9 -9
  156. package/src/core/common/inputs/sort.input.ts +3 -3
  157. package/src/core/common/interfaces/server-options.interface.ts +9 -9
  158. package/src/core/common/models/core-persistence.model.ts +8 -8
  159. package/src/core/common/plugins/mongoose-id.plugin.js +2 -2
  160. package/src/core/common/scalars/any.scalar.ts +8 -8
  161. package/src/core/common/scalars/date-timestamp.scalar.ts +1 -1
  162. package/src/core/common/scalars/date.scalar.ts +1 -1
  163. package/src/core/common/scalars/json.scalar.ts +8 -8
  164. package/src/core/common/services/config.service.ts +7 -7
  165. package/src/core/common/services/crud.service.ts +19 -19
  166. package/src/core/common/services/mailjet.service.ts +1 -1
  167. package/src/core/common/services/module.service.ts +4 -4
  168. package/src/core/common/types/falsy.type.ts +1 -1
  169. package/src/core/common/types/id.type.ts +1 -1
  170. package/src/core/common/types/require-only-one.type.ts +3 -3
  171. package/src/core/common/types/required-at-least-one.type.ts +3 -3
  172. package/src/core/common/types/string-or-object-id.type.ts +1 -1
  173. package/src/core/modules/auth/core-auth.controller.ts +6 -6
  174. package/src/core/modules/auth/core-auth.model.ts +1 -1
  175. package/src/core/modules/auth/core-auth.module.ts +4 -4
  176. package/src/core/modules/auth/core-auth.resolver.ts +6 -6
  177. package/src/core/modules/auth/guards/auth.guard.ts +3 -3
  178. package/src/core/modules/auth/inputs/core-auth-sign-in.input.ts +1 -1
  179. package/src/core/modules/auth/inputs/core-auth-sign-up.input.ts +1 -1
  180. package/src/core/modules/auth/services/core-auth.service.ts +1 -1
  181. package/src/core/modules/auth/tokens.decorator.ts +2 -2
  182. package/src/core/modules/file/core-file-info.model.ts +7 -7
  183. package/src/core/modules/file/core-file.controller.ts +2 -2
  184. package/src/core/modules/file/core-file.resolver.ts +6 -6
  185. package/src/core/modules/file/core-file.service.ts +6 -6
  186. package/src/core/modules/health-check/core-health-check-result.model.ts +8 -8
  187. package/src/core/modules/health-check/core-health-check.controller.ts +2 -2
  188. package/src/core/modules/health-check/core-health-check.resolver.ts +2 -2
  189. package/src/core/modules/user/core-user.model.ts +11 -11
  190. package/src/core/modules/user/core-user.service.ts +2 -2
  191. package/src/core/modules/user/inputs/core-user-create.input.ts +2 -2
  192. package/src/core/modules/user/inputs/core-user.input.ts +9 -9
  193. package/src/index.ts +9 -9
  194. package/src/server/common/models/persistence.model.ts +8 -8
  195. package/src/server/modules/auth/auth.controller.ts +1 -1
  196. package/src/server/modules/auth/auth.model.ts +2 -2
  197. package/src/server/modules/auth/auth.resolver.ts +3 -3
  198. package/src/server/modules/auth/inputs/auth-sign-in.input.ts +1 -1
  199. package/src/server/modules/auth/inputs/auth-sign-up.input.ts +3 -3
  200. package/src/server/modules/file/file-info.model.ts +2 -2
  201. package/src/server/modules/file/file.controller.ts +5 -5
  202. package/src/server/modules/file/file.module.ts +1 -1
  203. package/src/server/modules/file/file.resolver.ts +5 -5
  204. package/src/server/modules/user/avatar.controller.ts +2 -2
  205. package/src/server/modules/user/inputs/user-create.input.ts +1 -1
  206. package/src/server/modules/user/inputs/user.input.ts +1 -1
  207. package/src/server/modules/user/outputs/find-and-count-users-result.output.ts +3 -3
  208. package/src/server/modules/user/user.model.ts +8 -8
  209. package/src/server/modules/user/user.resolver.ts +11 -11
  210. package/src/server/modules/user/user.service.ts +1 -1
  211. package/src/server/server.controller.ts +2 -2
  212. package/src/test/test.helper.ts +31 -17
@@ -8,8 +8,8 @@ import { JSON } from '../../common/scalars/json.scalar';
8
8
  /**
9
9
  * User model
10
10
  */
11
- @Restricted(RoleEnum.S_EVERYONE)
12
11
  @ObjectType({ description: 'Health check result' })
12
+ @Restricted(RoleEnum.S_EVERYONE)
13
13
  export abstract class CoreHealthCheckResult extends CoreModel {
14
14
  // ===================================================================================================================
15
15
  // Properties
@@ -18,37 +18,37 @@ export abstract class CoreHealthCheckResult extends CoreModel {
18
18
  /**
19
19
  * The overall status of the Health Check
20
20
  */
21
- @Restricted(RoleEnum.S_EVERYONE)
22
21
  @Field({ description: 'The overall status of the Health Check', nullable: false })
22
+ @Restricted(RoleEnum.S_EVERYONE)
23
23
  status: 'error' | 'ok' | 'shutting_down' = undefined;
24
24
 
25
25
  /**
26
26
  * The info object contains information of each health indicator which is of status “up”
27
27
  */
28
- @Restricted(RoleEnum.S_EVERYONE)
29
- @Field(type => JSON, {
28
+ @Field(() => JSON, {
30
29
  description: 'The info object contains information of each health indicator which is of status “up”',
31
30
  nullable: true,
32
31
  })
32
+ @Restricted(RoleEnum.S_EVERYONE)
33
33
  info: JSON = undefined;
34
34
 
35
35
  /**
36
36
  * The error object contains information of each health indicator which is of status “down”
37
37
  */
38
- @Restricted(RoleEnum.S_EVERYONE)
39
- @Field(type => JSON, {
38
+ @Field(() => JSON, {
40
39
  description: 'The error object contains information of each health indicator which is of status “down”',
41
40
  nullable: true,
42
41
  })
42
+ @Restricted(RoleEnum.S_EVERYONE)
43
43
  error: JSON = undefined;
44
44
 
45
45
  /**
46
46
  * The details object contains information of every health indicator
47
47
  */
48
- @Restricted(RoleEnum.S_EVERYONE)
49
- @Field(type => JSON, {
48
+ @Field(() => JSON, {
50
49
  description: 'The details object contains information of every health indicator',
51
50
  nullable: false,
52
51
  })
52
+ @Restricted(RoleEnum.S_EVERYONE)
53
53
  details: JSON = undefined;
54
54
  }
@@ -8,8 +8,8 @@ import { CoreHealthCheckService } from './core-health-check.service';
8
8
  * The HealthController class checks the health of various components including the database, memory, and disk.
9
9
  * Inspired by https://mobileappcircular.com/marketplace-backend-creating-a-health-check-endpoint-in-nestjs-app-using-terminus-25727e96c7d2
10
10
  */
11
- @Roles(RoleEnum.ADMIN)
12
11
  @Controller()
12
+ @Roles(RoleEnum.ADMIN)
13
13
  export class CoreHealthCheckController {
14
14
  constructor(protected readonly healthCheckService: CoreHealthCheckService) {}
15
15
 
@@ -21,8 +21,8 @@ export class CoreHealthCheckController {
21
21
  * storage. The `healthCheck()` method will return a Promise that resolves with an array of objects
22
22
  * representing the results of each check
23
23
  */
24
- @Roles(RoleEnum.S_EVERYONE)
25
24
  @Get('health-check')
25
+ @Roles(RoleEnum.S_EVERYONE)
26
26
  async healthCheck() {
27
27
  return this.healthCheckService.healthCheck();
28
28
  }
@@ -2,8 +2,8 @@ import { Query, Resolver } from '@nestjs/graphql';
2
2
 
3
3
  import { Roles } from '../../common/decorators/roles.decorator';
4
4
  import { RoleEnum } from '../../common/enums/role.enum';
5
- import { CoreHealthCheckService } from './core-health-check.service';
6
5
  import { CoreHealthCheckResult } from './core-health-check-result.model';
6
+ import { CoreHealthCheckService } from './core-health-check.service';
7
7
 
8
8
  /**
9
9
  * Resolver to process with user data
@@ -23,8 +23,8 @@ export class CoreHealthCheckResolver {
23
23
  /**
24
24
  * Get heath check result
25
25
  */
26
- @Roles(RoleEnum.S_EVERYONE)
27
26
  @Query(() => CoreHealthCheckResult, { description: 'Get health check result' })
27
+ @Roles(RoleEnum.S_EVERYONE)
28
28
  async healthCheck() {
29
29
  return this.healthCheckService.healthCheck();
30
30
  }
@@ -14,10 +14,10 @@ export type CoreUserModelDocument = CoreUserModel & Document;
14
14
  /**
15
15
  * User model
16
16
  */
17
- @Restricted(RoleEnum.S_EVERYONE)
18
- @ObjectType({ description: 'User', isAbstract: true })
19
- @MongooseSchema({ timestamps: true })
20
17
  @ApiExtraModels(CorePersistenceModel)
18
+ @MongooseSchema({ timestamps: true })
19
+ @ObjectType({ description: 'User', isAbstract: true })
20
+ @Restricted(RoleEnum.S_EVERYONE)
21
21
  export abstract class CoreUserModel extends CorePersistenceModel {
22
22
  // ===================================================================================================================
23
23
  // Properties
@@ -64,7 +64,7 @@ export abstract class CoreUserModel extends CorePersistenceModel {
64
64
  * Roles of the user
65
65
  */
66
66
  @ApiProperty()
67
- @Field(type => [String], { description: 'Roles of the user', nullable: true })
67
+ @Field(() => [String], { description: 'Roles of the user', nullable: true })
68
68
  @IsOptional()
69
69
  @Prop([String])
70
70
  @Restricted(RoleEnum.S_EVERYONE)
@@ -95,9 +95,6 @@ export abstract class CoreUserModel extends CorePersistenceModel {
95
95
  * value: TokenData
96
96
  */
97
97
  @ApiProperty({ isArray: true })
98
- @IsOptional()
99
- @Prop(raw({}))
100
- @Restricted(RoleEnum.S_NO_ONE)
101
98
  @ApiProperty({
102
99
  additionalProperties: {
103
100
  properties: {
@@ -122,6 +119,9 @@ export abstract class CoreUserModel extends CorePersistenceModel {
122
119
  },
123
120
  type: 'object',
124
121
  })
122
+ @IsOptional()
123
+ @Prop(raw({}))
124
+ @Restricted(RoleEnum.S_NO_ONE)
125
125
  refreshTokens: Record<string, CoreTokenData> = undefined;
126
126
 
127
127
  /**
@@ -129,9 +129,6 @@ export abstract class CoreUserModel extends CorePersistenceModel {
129
129
  * See sameTokenIdPeriod in configuration
130
130
  */
131
131
  @ApiProperty()
132
- @IsOptional()
133
- @Prop(raw({}))
134
- @Restricted(RoleEnum.S_NO_ONE)
135
132
  @ApiProperty({
136
133
  additionalProperties: {
137
134
  properties: {
@@ -156,6 +153,9 @@ export abstract class CoreUserModel extends CorePersistenceModel {
156
153
  },
157
154
  type: 'object',
158
155
  })
156
+ @IsOptional()
157
+ @Prop(raw({}))
158
+ @Restricted(RoleEnum.S_NO_ONE)
159
159
  tempTokens: Record<string, { createdAt: number; deviceId: string; tokenId: string }> = undefined;
160
160
 
161
161
  /**
@@ -171,7 +171,7 @@ export abstract class CoreUserModel extends CorePersistenceModel {
171
171
  * Verification of the user
172
172
  */
173
173
  @ApiProperty()
174
- @Field(type => Boolean, { description: 'Verification state of the user', nullable: true })
174
+ @Field(() => Boolean, { description: 'Verification state of the user', nullable: true })
175
175
  @Prop({ type: Boolean })
176
176
  @Restricted(RoleEnum.S_EVERYONE)
177
177
  verified: boolean = undefined;
@@ -9,8 +9,8 @@ import { CrudService } from '../../common/services/crud.service';
9
9
  import { EmailService } from '../../common/services/email.service';
10
10
  import { CoreModelConstructor } from '../../common/types/core-model-constructor.type';
11
11
  import { CoreUserModel } from './core-user.model';
12
- import { CoreUserInput } from './inputs/core-user.input';
13
12
  import { CoreUserCreateInput } from './inputs/core-user-create.input';
13
+ import { CoreUserInput } from './inputs/core-user.input';
14
14
 
15
15
  import bcrypt = require('bcrypt');
16
16
  import crypto = require('crypto');
@@ -98,7 +98,7 @@ export abstract class CoreUserService<
98
98
  /**
99
99
  * Verify user with token
100
100
  */
101
- async verify(token: string, serviceOptions?: ServiceOptions): Promise<TUser | string> {
101
+ async verify(token: string, serviceOptions?: ServiceOptions): Promise<string | TUser> {
102
102
  // Get user
103
103
  const dbObject = await this.mainDbModel.findOne({ verificationToken: token }).exec();
104
104
  if (!dbObject) {
@@ -12,11 +12,11 @@ import { CoreUserInput } from './core-user.input';
12
12
  * otherwise the property will not be recognized via Object.keys (this is necessary for mapping) or will be initialized
13
13
  * with a default value that may overwrite an existing value in the DB.
14
14
  */
15
- @Restricted(RoleEnum.S_EVERYONE)
16
15
  @InputType({ description: 'User input to create a new user', isAbstract: true })
16
+ @Restricted(RoleEnum.S_EVERYONE)
17
17
  export abstract class CoreUserCreateInput extends CoreUserInput {
18
- @Restricted(RoleEnum.S_EVERYONE)
19
18
  @Field({ description: 'Email of the user', nullable: false })
20
19
  @IsEmail()
20
+ @Restricted(RoleEnum.S_EVERYONE)
21
21
  override email: string = undefined;
22
22
  }
@@ -13,55 +13,55 @@ import { CoreInput } from '../../../common/inputs/core-input.input';
13
13
  * otherwise the property will not be recognized via Object.keys (this is necessary for mapping) or will be initialized
14
14
  * with a default value that may overwrite an existing value in the DB.
15
15
  */
16
- @Restricted(RoleEnum.S_EVERYONE)
17
16
  @InputType({ description: 'User input', isAbstract: true })
17
+ @Restricted(RoleEnum.S_EVERYONE)
18
18
  export abstract class CoreUserInput extends CoreInput {
19
19
  /**
20
20
  * Email of the user
21
21
  */
22
- @Restricted(RoleEnum.S_EVERYONE)
23
22
  @Field({ description: 'Email of the user', nullable: true })
24
- @IsOptional()
25
23
  @IsEmail()
24
+ @IsOptional()
25
+ @Restricted(RoleEnum.S_EVERYONE)
26
26
  email?: string = undefined;
27
27
 
28
28
  /**
29
29
  * First name of the user
30
30
  */
31
- @Restricted(RoleEnum.S_EVERYONE)
32
31
  @Field({ description: 'First name of the user', nullable: true })
33
32
  @IsOptional()
33
+ @Restricted(RoleEnum.S_EVERYONE)
34
34
  firstName?: string = undefined;
35
35
 
36
36
  /**
37
37
  * Last name of the user
38
38
  */
39
- @Restricted(RoleEnum.S_EVERYONE)
40
39
  @Field({ description: 'Last name of the user', nullable: true })
41
40
  @IsOptional()
41
+ @Restricted(RoleEnum.S_EVERYONE)
42
42
  lastName?: string = undefined;
43
43
 
44
44
  /**
45
45
  * Roles of the user
46
46
  */
47
- @Restricted({ processType: ProcessType.INPUT, roles: RoleEnum.ADMIN })
48
- @Field(type => [String], { description: 'Roles of the user', nullable: true })
47
+ @Field(() => [String], { description: 'Roles of the user', nullable: true })
49
48
  @IsOptional()
49
+ @Restricted({ processType: ProcessType.INPUT, roles: RoleEnum.ADMIN })
50
50
  roles?: string[] = undefined;
51
51
 
52
52
  /**
53
53
  * Username / alias of the user
54
54
  */
55
- @Restricted(RoleEnum.S_EVERYONE)
56
55
  @Field({ description: 'Username / alias of the user', nullable: true })
57
56
  @IsOptional()
57
+ @Restricted(RoleEnum.S_EVERYONE)
58
58
  username?: string = undefined;
59
59
 
60
60
  /**
61
61
  * Password of the user
62
62
  */
63
- @Restricted(RoleEnum.S_EVERYONE)
64
63
  @Field({ description: 'Password of the user', nullable: true })
65
64
  @IsOptional()
65
+ @Restricted(RoleEnum.S_EVERYONE)
66
66
  password?: string = undefined;
67
67
  }
package/src/index.ts CHANGED
@@ -43,9 +43,9 @@ export * from './core/common/inputs/sort.input';
43
43
  export * from './core/common/interceptors/check-response.interceptor';
44
44
  export * from './core/common/interceptors/check-security.interceptor';
45
45
  export * from './core/common/interfaces/core-persistence-model.interface';
46
- export * from './core/common/interfaces/cron-job-config.interface';
47
46
  export * from './core/common/interfaces/cron-job-config-with-time-zone.interface';
48
47
  export * from './core/common/interfaces/cron-job-config-with-utc-offset.interface';
48
+ export * from './core/common/interfaces/cron-job-config.interface';
49
49
  export * from './core/common/interfaces/mailjet-options.interface';
50
50
  export * from './core/common/interfaces/prepare-input-options.interface';
51
51
  export * from './core/common/interfaces/prepare-output-options.interface';
@@ -60,8 +60,8 @@ export * from './core/common/pipes/map-and-validate.pipe';
60
60
  export * from './core/common/plugins/complexity.plugin';
61
61
  export * from './core/common/plugins/mongoose-id.plugin';
62
62
  export * from './core/common/scalars/any.scalar';
63
- export * from './core/common/scalars/date.scalar';
64
63
  export * from './core/common/scalars/date-timestamp.scalar';
64
+ export * from './core/common/scalars/date.scalar';
65
65
  export * from './core/common/scalars/json.scalar';
66
66
  export * from './core/common/services/brevo.service';
67
67
  export * from './core/common/services/config.service';
@@ -81,8 +81,8 @@ export * from './core/common/types/ids.type';
81
81
  export * from './core/common/types/is-one-of.type';
82
82
  export * from './core/common/types/maybe-promise.type';
83
83
  export * from './core/common/types/plain-input.type';
84
- export * from './core/common/types/plain-object.type';
85
84
  export * from './core/common/types/plain-object-deep.type';
85
+ export * from './core/common/types/plain-object.type';
86
86
  export * from './core/common/types/populate-config.type';
87
87
  export * from './core/common/types/remove-methods.type';
88
88
  export * from './core/common/types/require-only-one.type';
@@ -109,20 +109,20 @@ export * from './core/modules/auth/inputs/core-auth-sign-up.input';
109
109
  export * from './core/modules/auth/interfaces/core-auth-user.interface';
110
110
  export * from './core/modules/auth/interfaces/core-token-data.interface';
111
111
  export * from './core/modules/auth/interfaces/jwt-payload.interface';
112
- export * from './core/modules/auth/services/core-auth.service';
113
112
  export * from './core/modules/auth/services/core-auth-user.service';
114
- export * from './core/modules/auth/strategies/jwt.strategy';
113
+ export * from './core/modules/auth/services/core-auth.service';
115
114
  export * from './core/modules/auth/strategies/jwt-refresh.strategy';
115
+ export * from './core/modules/auth/strategies/jwt.strategy';
116
116
  export * from './core/modules/auth/tokens.decorator';
117
117
 
118
118
  // =====================================================================================================================
119
119
  // Core - Modules - File
120
120
  // =====================================================================================================================
121
121
 
122
+ export * from './core/modules/file/core-file-info.model';
122
123
  export * from './core/modules/file/core-file.controller';
123
124
  export * from './core/modules/file/core-file.resolver';
124
125
  export * from './core/modules/file/core-file.service';
125
- export * from './core/modules/file/core-file-info.model';
126
126
  export * from './core/modules/file/interfaces/file-service-options.interface';
127
127
  export * from './core/modules/file/interfaces/file-upload.interface';
128
128
 
@@ -130,20 +130,20 @@ export * from './core/modules/file/interfaces/file-upload.interface';
130
130
  // Core - Modules - User
131
131
  // =====================================================================================================================
132
132
 
133
+ export * from './core/modules/health-check/core-health-check-result.model';
133
134
  export * from './core/modules/health-check/core-health-check.controller';
134
135
  export * from './core/modules/health-check/core-health-check.module';
135
136
  export * from './core/modules/health-check/core-health-check.resolver';
136
- export * from './core/modules/health-check/core-health-check.service';
137
137
 
138
138
  // =====================================================================================================================
139
139
  // Core - Modules - HealthCheck
140
140
  // =====================================================================================================================
141
141
 
142
- export * from './core/modules/health-check/core-health-check-result.model';
142
+ export * from './core/modules/health-check/core-health-check.service';
143
143
  export * from './core/modules/user/core-user.model';
144
144
  export * from './core/modules/user/core-user.service';
145
- export * from './core/modules/user/inputs/core-user.input';
146
145
  export * from './core/modules/user/inputs/core-user-create.input';
146
+ export * from './core/modules/user/inputs/core-user.input';
147
147
 
148
148
  // =====================================================================================================================
149
149
  // Tests
@@ -15,12 +15,12 @@ import mongoose = require('mongoose');
15
15
  *
16
16
  * The models are a combination of MikroORM Entities and TypeGraphQL Types
17
17
  */
18
- @Restricted(RoleEnum.ADMIN)
18
+ @ApiExtraModels(CorePersistenceModel)
19
19
  @ObjectType({
20
20
  description: 'Persistence model which will be saved in DB',
21
21
  isAbstract: true,
22
22
  })
23
- @ApiExtraModels(CorePersistenceModel)
23
+ @Restricted(RoleEnum.ADMIN)
24
24
  export abstract class PersistenceModel extends CorePersistenceModel {
25
25
  // ===================================================================================================================
26
26
  // Properties
@@ -31,28 +31,28 @@ export abstract class PersistenceModel extends CorePersistenceModel {
31
31
  *
32
32
  * Not set when created by system
33
33
  */
34
- @Restricted(RoleEnum.ADMIN)
34
+ @ApiProperty({ type: String })
35
35
  @Field(() => User, {
36
36
  description: 'ID of the user who created the object',
37
37
  nullable: true,
38
38
  })
39
39
  @Prop({ ref: 'User', type: mongoose.Schema.Types.ObjectId })
40
- @ApiProperty({ type: String })
41
- createdBy?: Types.ObjectId | string = undefined;
40
+ @Restricted(RoleEnum.ADMIN)
41
+ createdBy?: string | Types.ObjectId = undefined;
42
42
 
43
43
  /**
44
44
  * ID of the user who updated the object
45
45
  *
46
46
  * Not set when updated by system
47
47
  */
48
- @Restricted(RoleEnum.ADMIN)
48
+ @ApiProperty({ type: User })
49
49
  @Field(() => User, {
50
50
  description: 'ID of the user who updated the object',
51
51
  nullable: true,
52
52
  })
53
53
  @Prop({ ref: 'User', type: mongoose.Schema.Types.ObjectId })
54
- @ApiProperty({ type: User })
55
- updatedBy?: Types.ObjectId | string = undefined;
54
+ @Restricted(RoleEnum.ADMIN)
55
+ updatedBy?: string | Types.ObjectId = undefined;
56
56
 
57
57
  // ===================================================================================================================
58
58
  // Methods
@@ -6,8 +6,8 @@ import { ConfigService } from '../../../core/common/services/config.service';
6
6
  import { CoreAuthController } from '../../../core/modules/auth/core-auth.controller';
7
7
  import { AuthService } from './auth.service';
8
8
 
9
- @Roles(RoleEnum.ADMIN)
10
9
  @Controller('auth')
10
+ @Roles(RoleEnum.ADMIN)
11
11
  export class AuthController extends CoreAuthController {
12
12
  /**
13
13
  * Import project services
@@ -9,8 +9,8 @@ import { User } from '../user/user.model';
9
9
  /**
10
10
  * Authentication data
11
11
  */
12
- @Restricted(RoleEnum.ADMIN)
13
12
  @ObjectType({ description: 'Authentication data' })
13
+ @Restricted(RoleEnum.ADMIN)
14
14
  export class Auth extends CoreAuthModel {
15
15
  // ===================================================================================================================
16
16
  // Properties
@@ -19,8 +19,8 @@ export class Auth extends CoreAuthModel {
19
19
  /**
20
20
  * Signed-in user
21
21
  */
22
- @Restricted(RoleEnum.S_EVERYONE)
23
22
  @Field(() => User, { description: 'User who signed in' })
23
+ @Restricted(RoleEnum.S_EVERYONE)
24
24
  override user: User = undefined;
25
25
 
26
26
  // ===================================================================================================================
@@ -15,8 +15,8 @@ import { AuthSignUpInput } from './inputs/auth-sign-up.input';
15
15
  /**
16
16
  * Authentication resolver for the sign in
17
17
  */
18
- @Roles(RoleEnum.ADMIN)
19
18
  @Resolver(() => Auth)
19
+ @Roles(RoleEnum.ADMIN)
20
20
  export class AuthResolver extends CoreAuthResolver {
21
21
  /**
22
22
  * Integrate services
@@ -31,8 +31,8 @@ export class AuthResolver extends CoreAuthResolver {
31
31
  /**
32
32
  * SignIn for User
33
33
  */
34
- @Roles(RoleEnum.S_EVERYONE)
35
34
  @Mutation(() => Auth, { description: 'Sign in and get JWT token' })
35
+ @Roles(RoleEnum.S_EVERYONE)
36
36
  override async signIn(
37
37
  @GraphQLServiceOptions({ gqlPath: 'signIn.user' }) serviceOptions: ServiceOptions,
38
38
  @Context() ctx: { res: ResponseType },
@@ -48,10 +48,10 @@ export class AuthResolver extends CoreAuthResolver {
48
48
  /**
49
49
  * Sign up for user
50
50
  */
51
- @Roles(RoleEnum.S_EVERYONE)
52
51
  @Mutation(() => Auth, {
53
52
  description: 'Sign up user and get JWT token',
54
53
  })
54
+ @Roles(RoleEnum.S_EVERYONE)
55
55
  override async signUp(
56
56
  @GraphQLServiceOptions({ gqlPath: 'signUp.user' }) serviceOptions: ServiceOptions,
57
57
  @Context() ctx: { res: ResponseType },
@@ -7,8 +7,8 @@ import { CoreAuthSignInInput } from '../../../../core/modules/auth/inputs/core-a
7
7
  /**
8
8
  * SignIn input
9
9
  */
10
- @Restricted(RoleEnum.ADMIN)
11
10
  @InputType({ description: 'Sign-in input' })
11
+ @Restricted(RoleEnum.ADMIN)
12
12
  export class AuthSignInInput extends CoreAuthSignInInput {
13
13
  // Extend UserInput here
14
14
  }
@@ -7,18 +7,18 @@ import { CoreAuthSignUpInput } from '../../../../core/modules/auth/inputs/core-a
7
7
  /**
8
8
  * SignUp input
9
9
  */
10
- @Restricted(RoleEnum.ADMIN)
11
10
  @InputType({ description: 'Sign-up input' })
11
+ @Restricted(RoleEnum.ADMIN)
12
12
  export class AuthSignUpInput extends CoreAuthSignUpInput {
13
13
  // ===================================================================================================================
14
14
  // Properties
15
15
  // ===================================================================================================================
16
16
 
17
- @Restricted(RoleEnum.S_EVERYONE)
18
17
  @Field({ description: 'firstName', nullable: true })
18
+ @Restricted(RoleEnum.S_EVERYONE)
19
19
  firstName: string = undefined;
20
20
 
21
- @Restricted(RoleEnum.S_EVERYONE)
22
21
  @Field({ description: 'lastName', nullable: true })
22
+ @Restricted(RoleEnum.S_EVERYONE)
23
23
  lastName: string = undefined;
24
24
  }
@@ -8,9 +8,9 @@ import { CoreFileInfo } from '../../../core/modules/file/core-file-info.model';
8
8
  /**
9
9
  * File info model
10
10
  */
11
- @Restricted(RoleEnum.ADMIN)
12
- @ObjectType({ description: 'Information about file' })
13
11
  @MongooseSchema({ collection: 'fs.files' })
12
+ @ObjectType({ description: 'Information about file' })
13
+ @Restricted(RoleEnum.ADMIN)
14
14
  export class FileInfo extends CoreFileInfo {}
15
15
 
16
16
  /**
@@ -19,8 +19,8 @@ import { FileService } from './file.service';
19
19
  /**
20
20
  * File controller for
21
21
  */
22
- @Roles(RoleEnum.ADMIN)
23
22
  @Controller('files')
23
+ @Roles(RoleEnum.ADMIN)
24
24
  export class FileController {
25
25
  /**
26
26
  * Import services
@@ -30,8 +30,8 @@ export class FileController {
30
30
  /**
31
31
  * Upload file
32
32
  */
33
- @Roles(RoleEnum.ADMIN)
34
33
  @Post('upload')
34
+ @Roles(RoleEnum.ADMIN)
35
35
  @UseInterceptors(FileInterceptor('file'))
36
36
  uploadFile(@UploadedFile() file: Express.Multer.File): any {
37
37
  return file;
@@ -40,8 +40,8 @@ export class FileController {
40
40
  /**
41
41
  * Download file
42
42
  */
43
- @Roles(RoleEnum.ADMIN)
44
43
  @Get(':id')
44
+ @Roles(RoleEnum.ADMIN)
45
45
  async getFile(@Param('id') id: string, @Res() res) {
46
46
  if (!id) {
47
47
  throw new BadRequestException('Missing ID');
@@ -67,8 +67,8 @@ export class FileController {
67
67
  /**
68
68
  * Get file information
69
69
  */
70
- @Roles(RoleEnum.ADMIN)
71
70
  @Get('info/:id')
71
+ @Roles(RoleEnum.ADMIN)
72
72
  async getFileInfo(@Param('id') id: string) {
73
73
  return await this.fileService.getFileInfo(id);
74
74
  }
@@ -76,8 +76,8 @@ export class FileController {
76
76
  /**
77
77
  * Delete file
78
78
  */
79
- @Roles(RoleEnum.ADMIN)
80
79
  @Delete(':id')
80
+ @Roles(RoleEnum.ADMIN)
81
81
  async deleteFile(@Param('id') id: string) {
82
82
  if (!id) {
83
83
  throw new BadRequestException('Missing ID');
@@ -1,4 +1,4 @@
1
- import { Module, forwardRef } from '@nestjs/common';
1
+ import { forwardRef, Module } from '@nestjs/common';
2
2
  import { MulterModule } from '@nestjs/platform-express';
3
3
 
4
4
  import { UserModule } from '../user/user.module';
@@ -4,8 +4,8 @@ import { createWriteStream } from 'fs';
4
4
  import { Roles } from '../../../core/common/decorators/roles.decorator';
5
5
  import { RoleEnum } from '../../../core/common/enums/role.enum';
6
6
  import { FileUpload } from '../../../core/modules/file/interfaces/file-upload.interface';
7
- import { FileService } from './file.service';
8
7
  import { FileInfo } from './file-info.model';
8
+ import { FileService } from './file.service';
9
9
 
10
10
  import fs = require('fs');
11
11
  import GraphQLUpload = require('graphql-upload/GraphQLUpload.js');
@@ -28,8 +28,8 @@ export class FileResolver {
28
28
  /**
29
29
  * Get file info
30
30
  */
31
- @Roles(RoleEnum.ADMIN)
32
31
  @Query(() => FileInfo, { nullable: true })
32
+ @Roles(RoleEnum.ADMIN)
33
33
  async getFileInfo(@Args({ name: 'filename', type: () => String }) filename: string) {
34
34
  return await this.fileService.getFileInfoByName(filename);
35
35
  }
@@ -41,8 +41,8 @@ export class FileResolver {
41
41
  /**
42
42
  * Delete file
43
43
  */
44
- @Roles(RoleEnum.ADMIN)
45
44
  @Mutation(() => FileInfo)
45
+ @Roles(RoleEnum.ADMIN)
46
46
  async deleteFile(@Args({ name: 'filename', type: () => String }) filename: string) {
47
47
  return await this.fileService.deleteFileByName(filename);
48
48
  }
@@ -50,8 +50,8 @@ export class FileResolver {
50
50
  /**
51
51
  * Upload file
52
52
  */
53
- @Roles(RoleEnum.ADMIN)
54
53
  @Mutation(() => FileInfo)
54
+ @Roles(RoleEnum.ADMIN)
55
55
  async uploadFile(@Args({ name: 'file', type: () => GraphQLUpload }) file: FileUpload) {
56
56
  return await this.fileService.createFile(file);
57
57
  }
@@ -59,8 +59,8 @@ export class FileResolver {
59
59
  /**
60
60
  * Upload files
61
61
  */
62
- @Roles(RoleEnum.ADMIN)
63
62
  @Mutation(() => Boolean)
63
+ @Roles(RoleEnum.ADMIN)
64
64
  async uploadFiles(@Args({ name: 'files', type: () => [GraphQLUpload] }) files: FileUpload[]) {
65
65
  // Save files in filesystem
66
66
  const promises: Promise<any>[] = [];
@@ -13,8 +13,8 @@ import { UserService } from './user.service';
13
13
  /**
14
14
  * Controller for avatar
15
15
  */
16
- @Roles(RoleEnum.ADMIN)
17
16
  @Controller('avatar')
17
+ @Roles(RoleEnum.ADMIN)
18
18
  export class AvatarController {
19
19
  /**
20
20
  * Import services
@@ -24,8 +24,8 @@ export class AvatarController {
24
24
  /**
25
25
  * Upload files
26
26
  */
27
- @Roles(RoleEnum.S_USER)
28
27
  @Post('upload')
28
+ @Roles(RoleEnum.S_USER)
29
29
  @UseInterceptors(
30
30
  FileInterceptor(
31
31
  'file',
@@ -7,8 +7,8 @@ import { CoreUserCreateInput } from '../../../../core/modules/user/inputs/core-u
7
7
  /**
8
8
  * User input to create a new user
9
9
  */
10
- @Restricted(RoleEnum.ADMIN)
11
10
  @InputType({ description: 'User input to create a new user' })
11
+ @Restricted(RoleEnum.ADMIN)
12
12
  export class UserCreateInput extends CoreUserCreateInput {
13
13
  // Extend UserCreateInput here
14
14
  }
@@ -7,8 +7,8 @@ import { CoreUserInput } from '../../../../core/modules/user/inputs/core-user.in
7
7
  /**
8
8
  * User input to update a user
9
9
  */
10
- @Restricted(RoleEnum.ADMIN)
11
10
  @InputType({ description: 'User input' })
11
+ @Restricted(RoleEnum.ADMIN)
12
12
  export class UserInput extends CoreUserInput {
13
13
  // Extend UserInput here
14
14
  }