@lenne.tech/nest-server 9.0.23 → 9.0.25

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 (42) hide show
  1. package/dist/core/common/args/filter.args.js.map +1 -1
  2. package/dist/core/common/args/pagination.args.js.map +1 -1
  3. package/dist/core/common/helpers/input.helper.js +2 -2
  4. package/dist/core/common/helpers/input.helper.js.map +1 -1
  5. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  6. package/dist/core/common/inputs/core-input.input.js.map +1 -1
  7. package/dist/core/common/inputs/filter.input.js.map +1 -1
  8. package/dist/core/common/models/core-persistence.model.js.map +1 -1
  9. package/dist/core/common/services/mailjet.service.js +11 -1
  10. package/dist/core/common/services/mailjet.service.js.map +1 -1
  11. package/dist/core/modules/auth/core-auth.model.js.map +1 -1
  12. package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
  13. package/dist/core/modules/user/core-user.model.js.map +1 -1
  14. package/dist/core/modules/user/core-user.service.js.map +1 -1
  15. package/dist/core/modules/user/inputs/core-user-create.input.js.map +1 -1
  16. package/dist/server/common/models/persistence.model.js.map +1 -1
  17. package/dist/server/common/services/cron-jobs.service.js.map +1 -1
  18. package/dist/server/modules/auth/auth.model.js.map +1 -1
  19. package/dist/server/modules/file/file.service.js.map +1 -1
  20. package/dist/server/modules/user/user.model.js.map +1 -1
  21. package/dist/server/modules/user/user.service.js.map +1 -1
  22. package/dist/tsconfig.build.tsbuildinfo +1 -1
  23. package/package.json +7 -7
  24. package/src/core/common/args/filter.args.ts +1 -1
  25. package/src/core/common/args/pagination.args.ts +1 -1
  26. package/src/core/common/helpers/input.helper.ts +2 -2
  27. package/src/core/common/inputs/combined-filter.input.ts +1 -1
  28. package/src/core/common/inputs/core-input.input.ts +1 -1
  29. package/src/core/common/inputs/filter.input.ts +1 -1
  30. package/src/core/common/models/core-persistence.model.ts +1 -1
  31. package/src/core/common/services/mailjet.service.ts +22 -1
  32. package/src/core/modules/auth/core-auth.model.ts +2 -2
  33. package/src/core/modules/auth/guards/roles.guard.ts +1 -1
  34. package/src/core/modules/user/core-user.model.ts +2 -2
  35. package/src/core/modules/user/core-user.service.ts +3 -3
  36. package/src/core/modules/user/inputs/core-user-create.input.ts +1 -1
  37. package/src/server/common/models/persistence.model.ts +2 -2
  38. package/src/server/common/services/cron-jobs.service.ts +1 -1
  39. package/src/server/modules/auth/auth.model.ts +2 -2
  40. package/src/server/modules/file/file.service.ts +1 -1
  41. package/src/server/modules/user/user.model.ts +2 -2
  42. package/src/server/modules/user/user.service.ts +5 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/nest-server",
3
- "version": "9.0.23",
3
+ "version": "9.0.25",
4
4
  "description": "Modern, fast, powerful Node.js web framework in TypeScript based on Nest with a GraphQL API and a connection to MongoDB (or other databases).",
5
5
  "keywords": [
6
6
  "node",
@@ -84,7 +84,7 @@
84
84
  "light-my-request": "5.8.0",
85
85
  "lodash": "4.17.21",
86
86
  "mongodb": "4.13.0",
87
- "mongoose": "6.8.3",
87
+ "mongoose": "6.8.4",
88
88
  "mongoose-gridfs": "1.3.0",
89
89
  "multer-gridfs-storage": "5.0.2",
90
90
  "multer": "1.4.5-lts.1",
@@ -95,24 +95,24 @@
95
95
  "passport-jwt": "4.0.1",
96
96
  "reflect-metadata": "0.1.13",
97
97
  "rfdc": "1.3.0",
98
- "rimraf": "4.0.4",
98
+ "rimraf": "4.1.1",
99
99
  "rxjs": "7.8.0"
100
100
  },
101
101
  "devDependencies": {
102
102
  "@nestjs/testing": "9.2.1",
103
103
  "@types/cron": "2.0.0",
104
104
  "@types/ejs": "3.1.1",
105
- "@types/jest": "29.2.5",
105
+ "@types/jest": "29.2.6",
106
106
  "@types/lodash": "4.14.191",
107
107
  "@types/multer": "1.4.7",
108
108
  "@types/node": "18.11.18",
109
109
  "@types/nodemailer": "6.4.7",
110
110
  "@types/passport": "1.0.11",
111
111
  "@types/supertest": "2.0.12",
112
- "@typescript-eslint/eslint-plugin": "5.48.1",
113
- "@typescript-eslint/parser": "5.48.1",
112
+ "@typescript-eslint/eslint-plugin": "5.48.2",
113
+ "@typescript-eslint/parser": "5.48.2",
114
114
  "coffeescript": "2.7.0",
115
- "eslint": "8.31.0",
115
+ "eslint": "8.32.0",
116
116
  "eslint-config-prettier": "8.6.0",
117
117
  "find-file-up": "2.0.1",
118
118
  "grunt": "1.5.3",
@@ -32,7 +32,7 @@ export class FilterArgs extends PaginationArgs {
32
32
  /**
33
33
  * Mapping for Subtypes
34
34
  */
35
- map(
35
+ override map(
36
36
  data: Partial<this> | Record<string, any>,
37
37
  options: {
38
38
  cloneDeep?: boolean;
@@ -63,7 +63,7 @@ export class PaginationArgs extends CoreInput {
63
63
  /**
64
64
  * Mapping for Subtypes
65
65
  */
66
- map(
66
+ override map(
67
67
  data: Partial<this> | Record<string, any>,
68
68
  options: {
69
69
  cloneDeep?: boolean;
@@ -324,12 +324,12 @@ export function clone(object: any, options?: { proto?: boolean; circles?: boolea
324
324
  try {
325
325
  return rfdc(config)(object);
326
326
  } catch (e) {
327
- console.debug(e);
327
+ console.debug(e, config, object, 'automatic try to use rfdc with circles');
328
328
  if (!config.circles) {
329
329
  try {
330
330
  return rfdc({ ...config, ...{ circles: true } })(object);
331
331
  } catch (e) {
332
- console.debug(e);
332
+ console.debug(e, 'rfcd with circles did not work automatic use of _.clone!');
333
333
  return _.clone(object);
334
334
  }
335
335
  } else {
@@ -31,7 +31,7 @@ export class CombinedFilterInput extends CoreInput {
31
31
  /**
32
32
  * Mapping for Subtypes
33
33
  */
34
- map(
34
+ override map(
35
35
  data: Partial<this> | Record<string, any>,
36
36
  options: {
37
37
  cloneDeep?: boolean;
@@ -15,7 +15,7 @@ export abstract class CoreInput extends CoreModel {
15
15
  /**
16
16
  * Map method
17
17
  */
18
- public map(
18
+ public override map(
19
19
  data: Partial<this> | Record<string, any>,
20
20
  options: {
21
21
  cloneDeep?: boolean;
@@ -35,7 +35,7 @@ export class FilterInput extends CoreInput {
35
35
  /**
36
36
  * Mapping for Subtypes
37
37
  */
38
- map(
38
+ override map(
39
39
  data: Partial<this> | Record<string, any>,
40
40
  options: {
41
41
  cloneDeep?: boolean;
@@ -83,7 +83,7 @@ export abstract class CorePersistenceModel extends CoreModel {
83
83
  /**
84
84
  * Initialize instance with default values instead of undefined
85
85
  */
86
- init() {
86
+ override init() {
87
87
  super.init();
88
88
  this.createdAt = this.createdAt === undefined ? new Date() : this.createdAt;
89
89
  this.labels = this.labels === undefined ? [] : this.labels;
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@nestjs/common';
2
+ import { template } from 'lodash';
2
3
  import { ConfigService } from './config.service';
3
4
  // eslint-disable-next-line
4
5
  const Mailjet = require('node-mailjet');
@@ -81,7 +82,27 @@ export class MailjetService {
81
82
  apiSecret: this.configService.getFastButReadOnly('email.mailjet.api_key_private'),
82
83
  });
83
84
  } catch (e) {
84
- throw new Error('Cannot connect to mailjet.');
85
+ if (
86
+ this.configService.getFastButReadOnly('email.mailjet.api_key_public') &&
87
+ this.configService.getFastButReadOnly('email.mailjet.api_key_private')
88
+ ) {
89
+ throw new Error('Cannot connect to mailjet.');
90
+ }
91
+ console.debug(
92
+ JSON.stringify(
93
+ {
94
+ info: 'Mailjet credentials are missing',
95
+ 'email.mailjet.api_key_public':
96
+ this.configService.getFastButReadOnly('email.mailjet.api_key_public') || 'missing',
97
+ 'email.mailjet.api_key_private':
98
+ this.configService.getFastButReadOnly('email.mailjet.api_key_private') || 'missing',
99
+ templateData: templateData,
100
+ },
101
+ null,
102
+ 2
103
+ )
104
+ );
105
+ return;
85
106
  }
86
107
 
87
108
  // Send mail with mailjet
@@ -23,7 +23,7 @@ export class CoreAuthModel extends CoreModel {
23
23
  /**
24
24
  * Initialize instance with default values instead of undefined
25
25
  */
26
- init() {
26
+ override init() {
27
27
  super.init();
28
28
  // Nothing more to initialize yet
29
29
  return this;
@@ -32,7 +32,7 @@ export class CoreAuthModel extends CoreModel {
32
32
  /**
33
33
  * Map input
34
34
  */
35
- map(input) {
35
+ override map(input) {
36
36
  super.map(input);
37
37
  // There is nothing to map yet. Non-primitive variables should always be mapped.
38
38
  // If something comes up, you can use `mapClasses` / `mapClassesAsync` from ModelHelper.
@@ -23,7 +23,7 @@ export class RolesGuard extends AuthGuard('jwt') {
23
23
  /**
24
24
  * Handle request
25
25
  */
26
- handleRequest(err, user, info, context) {
26
+ override handleRequest(err, user, info, context) {
27
27
  // Get roles
28
28
  const reflectorRoles = this.reflector.getAll<string[][]>('roles', [context.getHandler(), context.getClass()]);
29
29
  const roles: string[] = reflectorRoles[0]
@@ -124,7 +124,7 @@ export abstract class CoreUserModel extends CorePersistenceModel {
124
124
  /**
125
125
  * Initialize instance with default values instead of undefined
126
126
  */
127
- public init() {
127
+ public override init() {
128
128
  super.init();
129
129
  this.roles = this.roles === undefined ? [] : this.roles;
130
130
  return this;
@@ -133,7 +133,7 @@ export abstract class CoreUserModel extends CorePersistenceModel {
133
133
  /**
134
134
  * Map input
135
135
  */
136
- map(input) {
136
+ override map(input) {
137
137
  super.map(input);
138
138
  // There is nothing to map yet. Non-primitive variables should always be mapped.
139
139
  // If something comes up, you can use `mapClasses` / `mapClassesAsync` from ModelHelper.
@@ -24,8 +24,8 @@ export abstract class CoreUserService<
24
24
  > extends CrudService<TUser> {
25
25
  protected constructor(
26
26
  protected readonly emailService: EmailService,
27
- protected readonly mainDbModel: Model<TUser & Document>,
28
- protected readonly mainModelConstructor: CoreModelConstructor<TUser>,
27
+ protected override readonly mainDbModel: Model<TUser & Document>,
28
+ protected override readonly mainModelConstructor: CoreModelConstructor<TUser>,
29
29
  protected readonly configService?: ConfigService
30
30
  ) {
31
31
  super();
@@ -38,7 +38,7 @@ export abstract class CoreUserService<
38
38
  /**
39
39
  * Create user
40
40
  */
41
- async create(input: any, serviceOptions?: ServiceOptions): Promise<TUser> {
41
+ override async create(input: any, serviceOptions?: ServiceOptions): Promise<TUser> {
42
42
  serviceOptions = merge({ prepareInput: { create: true } }, serviceOptions);
43
43
  return this.process(
44
44
  async (data) => {
@@ -13,5 +13,5 @@ import { CoreUserInput } from './core-user.input';
13
13
  export abstract class CoreUserCreateInput extends CoreUserInput {
14
14
  @Field({ description: 'Email of the user', nullable: false })
15
15
  @IsEmail()
16
- email: string = undefined;
16
+ override email: string = undefined;
17
17
  }
@@ -50,7 +50,7 @@ export abstract class PersistenceModel extends CorePersistenceModel {
50
50
  /**
51
51
  * Initialize instance with default values instead of undefined
52
52
  */
53
- init() {
53
+ override init() {
54
54
  super.init();
55
55
  // Nothing more to initialize yet
56
56
  return this;
@@ -59,7 +59,7 @@ export abstract class PersistenceModel extends CorePersistenceModel {
59
59
  /**
60
60
  * Map input
61
61
  */
62
- map(input) {
62
+ override map(input) {
63
63
  super.map(input);
64
64
  // There is nothing to map yet. Non-primitive variables should always be mapped.
65
65
  // If something comes up, you can use `mapClasses` / `mapClassesAsync` from ModelHelper.
@@ -12,7 +12,7 @@ export class CronJobs extends CoreCronJobs {
12
12
  /**
13
13
  * Init cron jobs
14
14
  */
15
- constructor(protected schedulerRegistry: SchedulerRegistry, protected configService: ConfigService) {
15
+ constructor(protected override schedulerRegistry: SchedulerRegistry, protected configService: ConfigService) {
16
16
  super(schedulerRegistry, configService.config.cronJobs, { log: true });
17
17
  }
18
18
 
@@ -25,7 +25,7 @@ export class Auth extends CoreAuthModel {
25
25
  /**
26
26
  * Initialize instance with default values instead of undefined
27
27
  */
28
- init() {
28
+ override init() {
29
29
  super.init();
30
30
  // Nothing more to initialize yet
31
31
  return this;
@@ -34,7 +34,7 @@ export class Auth extends CoreAuthModel {
34
34
  /**
35
35
  * Map input
36
36
  */
37
- map(input) {
37
+ override map(input) {
38
38
  super.map(input);
39
39
  return mapClasses(input, { user: User }, this);
40
40
  }
@@ -8,7 +8,7 @@ import { CoreFileService } from '../../../core/modules/file/core-file.service';
8
8
  */
9
9
  @Injectable()
10
10
  export class FileService extends CoreFileService {
11
- constructor(@InjectConnection() protected readonly connection: Connection) {
11
+ constructor(@InjectConnection() protected override readonly connection: Connection) {
12
12
  super(connection);
13
13
  }
14
14
 
@@ -54,7 +54,7 @@ export class User extends CoreUserModel implements PersistenceModel {
54
54
  /**
55
55
  * Initialize instance with default values instead of undefined
56
56
  */
57
- init() {
57
+ override init() {
58
58
  super.init();
59
59
  // Nothing more to initialize yet
60
60
  return this;
@@ -63,7 +63,7 @@ export class User extends CoreUserModel implements PersistenceModel {
63
63
  /**
64
64
  * Map input
65
65
  */
66
- map(input) {
66
+ override map(input) {
67
67
  super.map(input);
68
68
  // There is nothing to map yet. Non-primitive variables should always be mapped.
69
69
  // If something comes up, you can use `mapClasses` / `mapClassesAsync` from ModelHelper.
@@ -25,10 +25,10 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
25
25
  * Constructor for injecting services
26
26
  */
27
27
  constructor(
28
- protected readonly configService: ConfigService,
29
- protected readonly emailService: EmailService,
30
- @Inject('USER_CLASS') protected readonly mainModelConstructor: CoreModelConstructor<User>,
31
- @InjectModel('User') protected readonly mainDbModel: Model<UserDocument>,
28
+ protected override readonly configService: ConfigService,
29
+ protected override readonly emailService: EmailService,
30
+ @Inject('USER_CLASS') protected override readonly mainModelConstructor: CoreModelConstructor<User>,
31
+ @InjectModel('User') protected override readonly mainDbModel: Model<UserDocument>,
32
32
  @Inject('PUB_SUB') protected readonly pubSub: PubSub
33
33
  ) {
34
34
  super(emailService, mainDbModel, mainModelConstructor);
@@ -41,7 +41,7 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
41
41
  /**
42
42
  * Create new user and send welcome email
43
43
  */
44
- async create(input: UserCreateInput, serviceOptions?: ServiceOptions): Promise<User> {
44
+ override async create(input: UserCreateInput, serviceOptions?: ServiceOptions): Promise<User> {
45
45
  // Get prepared user
46
46
  let user = await super.create(input, serviceOptions);
47
47