@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.
- package/dist/core/common/args/filter.args.js.map +1 -1
- package/dist/core/common/args/pagination.args.js.map +1 -1
- package/dist/core/common/helpers/input.helper.js +2 -2
- package/dist/core/common/helpers/input.helper.js.map +1 -1
- package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
- package/dist/core/common/inputs/core-input.input.js.map +1 -1
- package/dist/core/common/inputs/filter.input.js.map +1 -1
- package/dist/core/common/models/core-persistence.model.js.map +1 -1
- package/dist/core/common/services/mailjet.service.js +11 -1
- package/dist/core/common/services/mailjet.service.js.map +1 -1
- package/dist/core/modules/auth/core-auth.model.js.map +1 -1
- package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
- package/dist/core/modules/user/core-user.model.js.map +1 -1
- package/dist/core/modules/user/core-user.service.js.map +1 -1
- package/dist/core/modules/user/inputs/core-user-create.input.js.map +1 -1
- package/dist/server/common/models/persistence.model.js.map +1 -1
- package/dist/server/common/services/cron-jobs.service.js.map +1 -1
- package/dist/server/modules/auth/auth.model.js.map +1 -1
- package/dist/server/modules/file/file.service.js.map +1 -1
- package/dist/server/modules/user/user.model.js.map +1 -1
- package/dist/server/modules/user/user.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/core/common/args/filter.args.ts +1 -1
- package/src/core/common/args/pagination.args.ts +1 -1
- package/src/core/common/helpers/input.helper.ts +2 -2
- package/src/core/common/inputs/combined-filter.input.ts +1 -1
- package/src/core/common/inputs/core-input.input.ts +1 -1
- package/src/core/common/inputs/filter.input.ts +1 -1
- package/src/core/common/models/core-persistence.model.ts +1 -1
- package/src/core/common/services/mailjet.service.ts +22 -1
- package/src/core/modules/auth/core-auth.model.ts +2 -2
- package/src/core/modules/auth/guards/roles.guard.ts +1 -1
- package/src/core/modules/user/core-user.model.ts +2 -2
- package/src/core/modules/user/core-user.service.ts +3 -3
- package/src/core/modules/user/inputs/core-user-create.input.ts +1 -1
- package/src/server/common/models/persistence.model.ts +2 -2
- package/src/server/common/services/cron-jobs.service.ts +1 -1
- package/src/server/modules/auth/auth.model.ts +2 -2
- package/src/server/modules/file/file.service.ts +1 -1
- package/src/server/modules/user/user.model.ts +2 -2
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
113
|
-
"@typescript-eslint/parser": "5.48.
|
|
112
|
+
"@typescript-eslint/eslint-plugin": "5.48.2",
|
|
113
|
+
"@typescript-eslint/parser": "5.48.2",
|
|
114
114
|
"coffeescript": "2.7.0",
|
|
115
|
-
"eslint": "8.
|
|
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",
|
|
@@ -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 {
|
|
@@ -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
|
-
|
|
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
|
|