@lenne.tech/nest-server 10.0.0 → 10.0.3
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/config.env.js +29 -17
- package/dist/config.env.js.map +1 -1
- package/dist/core/common/args/filter.args.js +3 -3
- package/dist/core/common/args/filter.args.js.map +1 -1
- package/dist/core/common/args/pagination.args.js +6 -6
- package/dist/core/common/args/pagination.args.js.map +1 -1
- package/dist/core/common/decorators/restricted.decorator.js +15 -17
- package/dist/core/common/decorators/restricted.decorator.js.map +1 -1
- package/dist/core/common/filters/http-exception-log.filter.js +1 -3
- package/dist/core/common/filters/http-exception-log.filter.js.map +1 -1
- package/dist/core/common/helpers/db.helper.js +14 -14
- package/dist/core/common/helpers/db.helper.js.map +1 -1
- package/dist/core/common/helpers/file.helper.js +2 -2
- package/dist/core/common/helpers/file.helper.js.map +1 -1
- package/dist/core/common/helpers/filter.helper.d.ts +2 -2
- package/dist/core/common/helpers/filter.helper.js +1 -1
- package/dist/core/common/helpers/filter.helper.js.map +1 -1
- package/dist/core/common/helpers/graphql.helper.js +1 -1
- package/dist/core/common/helpers/graphql.helper.js.map +1 -1
- package/dist/core/common/helpers/input.helper.js +31 -38
- package/dist/core/common/helpers/input.helper.js.map +1 -1
- package/dist/core/common/helpers/model.helper.js +7 -7
- package/dist/core/common/helpers/model.helper.js.map +1 -1
- package/dist/core/common/helpers/service.helper.js +2 -2
- package/dist/core/common/helpers/service.helper.js.map +1 -1
- package/dist/core/common/inputs/combined-filter.input.js +3 -3
- package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
- package/dist/core/common/inputs/core-input.input.js +1 -1
- package/dist/core/common/inputs/core-input.input.js.map +1 -1
- package/dist/core/common/inputs/filter.input.js +3 -3
- package/dist/core/common/inputs/filter.input.js.map +1 -1
- package/dist/core/common/inputs/single-filter.input.js +4 -4
- package/dist/core/common/inputs/single-filter.input.js.map +1 -1
- package/dist/core/common/inputs/sort.input.js +1 -1
- package/dist/core/common/inputs/sort.input.js.map +1 -1
- package/dist/core/common/interceptors/check-security.interceptor.d.ts +1 -1
- package/dist/core/common/interceptors/check-security.interceptor.js +2 -2
- package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
- package/dist/core/common/interfaces/server-options.interface.d.ts +27 -0
- package/dist/core/common/models/core-model.model.js.map +1 -1
- package/dist/core/common/models/core-persistence.model.js +3 -3
- package/dist/core/common/models/core-persistence.model.js.map +1 -1
- package/dist/core/common/pipes/map-and-validate.pipe.d.ts +1 -1
- package/dist/core/common/pipes/map-and-validate.pipe.js +1 -1
- package/dist/core/common/pipes/map-and-validate.pipe.js.map +1 -1
- package/dist/core/common/scalars/any.scalar.js +2 -2
- package/dist/core/common/scalars/any.scalar.js.map +1 -1
- package/dist/core/common/scalars/date-timestamp.scalar.js +1 -1
- package/dist/core/common/scalars/date-timestamp.scalar.js.map +1 -1
- package/dist/core/common/scalars/date.scalar.js +1 -1
- package/dist/core/common/scalars/date.scalar.js.map +1 -1
- package/dist/core/common/scalars/json.scalar.js +2 -2
- package/dist/core/common/scalars/json.scalar.js.map +1 -1
- package/dist/core/common/services/config.service.js +7 -7
- package/dist/core/common/services/config.service.js.map +1 -1
- package/dist/core/common/services/core-cron-jobs.service.js +5 -5
- package/dist/core/common/services/core-cron-jobs.service.js.map +1 -1
- package/dist/core/common/services/crud.service.js +1 -1
- package/dist/core/common/services/crud.service.js.map +1 -1
- package/dist/core/common/services/mailjet.service.js +5 -5
- package/dist/core/common/services/mailjet.service.js.map +1 -1
- package/dist/core/common/services/module.service.js.map +1 -1
- package/dist/core/common/services/template.service.js +3 -3
- package/dist/core/common/services/template.service.js.map +1 -1
- package/dist/core/common/types/core-model-constructor.type.d.ts +2 -2
- package/dist/core/modules/auth/core-auth.module.js +3 -3
- package/dist/core/modules/auth/core-auth.module.js.map +1 -1
- package/dist/core/modules/auth/core-auth.resolver.js +5 -5
- package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
- package/dist/core/modules/auth/guards/auth.guard.js +4 -4
- package/dist/core/modules/auth/guards/auth.guard.js.map +1 -1
- package/dist/core/modules/auth/guards/roles.guard.js +1 -1
- package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
- package/dist/core/modules/auth/services/core-auth.service.js +5 -5
- package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
- package/dist/core/modules/auth/strategies/jwt.strategy.js.map +1 -1
- package/dist/core/modules/auth/tokens.decorator.js +2 -2
- package/dist/core/modules/auth/tokens.decorator.js.map +1 -1
- package/dist/core/modules/file/core-file-info.model.js +2 -2
- package/dist/core/modules/file/core-file-info.model.js.map +1 -1
- package/dist/core/modules/file/core-file.controller.d.ts +1 -2
- package/dist/core/modules/file/core-file.controller.js +3 -6
- package/dist/core/modules/file/core-file.controller.js.map +1 -1
- package/dist/core/modules/file/core-file.service.js +1 -1
- package/dist/core/modules/file/core-file.service.js.map +1 -1
- package/dist/core/modules/file/interfaces/file-upload.interface.d.ts +1 -1
- package/dist/core/modules/health-check/core-health-check-result.model.d.ts +8 -0
- package/dist/core/modules/health-check/core-health-check-result.model.js +53 -0
- package/dist/core/modules/health-check/core-health-check-result.model.js.map +1 -0
- package/dist/core/modules/health-check/core-health-check.controller.d.ts +6 -0
- package/dist/core/modules/health-check/core-health-check.controller.js +33 -0
- package/dist/core/modules/health-check/core-health-check.controller.js.map +1 -0
- package/dist/core/modules/health-check/core-health-check.module.d.ts +2 -0
- package/dist/core/modules/health-check/core-health-check.module.js +24 -0
- package/dist/core/modules/health-check/core-health-check.module.js.map +1 -0
- package/dist/core/modules/health-check/core-health-check.resolver.d.ts +6 -0
- package/dist/core/modules/health-check/core-health-check.resolver.js +38 -0
- package/dist/core/modules/health-check/core-health-check.resolver.js.map +1 -0
- package/dist/core/modules/health-check/core-health-check.service.d.ts +11 -0
- package/dist/core/modules/health-check/core-health-check.service.js +52 -0
- package/dist/core/modules/health-check/core-health-check.service.js.map +1 -0
- package/dist/core/modules/user/core-user.model.js +4 -4
- package/dist/core/modules/user/core-user.model.js.map +1 -1
- package/dist/core/modules/user/core-user.service.js +2 -2
- package/dist/core/modules/user/core-user.service.js.map +1 -1
- package/dist/core/modules/user/inputs/core-user.input.js +1 -1
- package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
- package/dist/core.module.js +10 -5
- package/dist/core.module.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/server/modules/auth/auth.service.js +1 -1
- package/dist/server/modules/auth/auth.service.js.map +1 -1
- package/dist/server/modules/file/file.controller.js +1 -1
- package/dist/server/modules/file/file.controller.js.map +1 -1
- package/dist/server/modules/file/file.resolver.js +2 -2
- package/dist/server/modules/file/file.resolver.js.map +1 -1
- package/dist/server/modules/file/file.service.js +1 -1
- package/dist/server/modules/file/file.service.js.map +1 -1
- package/dist/server/modules/file/multer-config.service.js +1 -1
- package/dist/server/modules/file/multer-config.service.js.map +1 -1
- package/dist/server/modules/user/avatar.controller.js +1 -1
- package/dist/server/modules/user/avatar.controller.js.map +1 -1
- package/dist/server/modules/user/user.resolver.js +1 -1
- package/dist/server/modules/user/user.resolver.js.map +1 -1
- package/dist/server/modules/user/user.service.js +3 -3
- package/dist/server/modules/user/user.service.js.map +1 -1
- package/dist/templates/index.ejs +2 -0
- package/dist/templates/password-reset.ejs +3 -0
- package/dist/templates/welcome.ejs +3 -0
- package/dist/test/test.helper.d.ts +1 -1
- package/dist/test/test.helper.js +7 -7
- package/dist/test/test.helper.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +28 -25
- package/src/config.env.ts +32 -20
- package/src/core/common/args/filter.args.ts +4 -4
- package/src/core/common/args/pagination.args.ts +7 -7
- package/src/core/common/decorators/graphql-service-options.decorator.ts +2 -2
- package/src/core/common/decorators/graphql-user.decorator.ts +1 -1
- package/src/core/common/decorators/rest-user.decorator.ts +1 -1
- package/src/core/common/decorators/restricted.decorator.ts +18 -18
- package/src/core/common/filters/http-exception-log.filter.ts +4 -4
- package/src/core/common/helpers/db.helper.ts +35 -40
- package/src/core/common/helpers/decorator.helper.ts +1 -1
- package/src/core/common/helpers/file.helper.ts +2 -2
- package/src/core/common/helpers/filter.helper.ts +7 -8
- package/src/core/common/helpers/graphql.helper.ts +6 -6
- package/src/core/common/helpers/input.helper.ts +54 -61
- package/src/core/common/helpers/model.helper.ts +33 -41
- package/src/core/common/helpers/service.helper.ts +8 -8
- package/src/core/common/inputs/combined-filter.input.ts +4 -4
- package/src/core/common/inputs/core-input.input.ts +2 -2
- package/src/core/common/inputs/filter.input.ts +4 -4
- package/src/core/common/inputs/single-filter.input.ts +4 -4
- package/src/core/common/inputs/sort.input.ts +1 -1
- package/src/core/common/interceptors/check-response.interceptor.ts +1 -1
- package/src/core/common/interceptors/check-security.interceptor.ts +5 -5
- package/src/core/common/interfaces/server-options.interface.ts +31 -0
- package/src/core/common/models/core-model.model.ts +6 -4
- package/src/core/common/models/core-persistence.model.ts +3 -3
- package/src/core/common/pipes/map-and-validate.pipe.ts +2 -2
- package/src/core/common/scalars/any.scalar.ts +2 -2
- package/src/core/common/scalars/date-timestamp.scalar.ts +1 -2
- package/src/core/common/scalars/date.scalar.ts +1 -2
- package/src/core/common/scalars/json.scalar.ts +4 -4
- package/src/core/common/services/config.service.ts +16 -16
- package/src/core/common/services/core-cron-jobs.service.ts +7 -7
- package/src/core/common/services/crud.service.ts +22 -22
- package/src/core/common/services/email.service.ts +1 -1
- package/src/core/common/services/mailjet.service.ts +8 -8
- package/src/core/common/services/module.service.ts +5 -6
- package/src/core/common/services/template.service.ts +4 -4
- package/src/core/common/types/core-model-constructor.type.ts +2 -2
- package/src/core/modules/auth/core-auth.controller.ts +2 -2
- package/src/core/modules/auth/core-auth.module.ts +4 -4
- package/src/core/modules/auth/core-auth.resolver.ts +9 -9
- package/src/core/modules/auth/guards/auth.guard.ts +8 -7
- package/src/core/modules/auth/guards/roles.guard.ts +1 -1
- package/src/core/modules/auth/services/core-auth.service.ts +9 -9
- package/src/core/modules/auth/strategies/jwt-refresh.strategy.ts +1 -1
- package/src/core/modules/auth/strategies/jwt.strategy.ts +1 -1
- package/src/core/modules/auth/tokens.decorator.ts +6 -7
- package/src/core/modules/file/core-file-info.model.ts +2 -2
- package/src/core/modules/file/core-file.controller.ts +2 -4
- package/src/core/modules/file/core-file.service.ts +6 -5
- package/src/core/modules/file/interfaces/file-upload.interface.ts +1 -1
- package/src/core/modules/health-check/core-health-check-result.model.ts +46 -0
- package/src/core/modules/health-check/core-health-check.controller.ts +24 -0
- package/src/core/modules/health-check/core-health-check.module.ts +17 -0
- package/src/core/modules/health-check/core-health-check.resolver.ts +32 -0
- package/src/core/modules/health-check/core-health-check.service.ts +60 -0
- package/src/core/modules/user/core-user.model.ts +5 -5
- package/src/core/modules/user/core-user.service.ts +10 -9
- package/src/core/modules/user/inputs/core-user.input.ts +1 -2
- package/src/core.module.ts +16 -10
- package/src/index.ts +10 -0
- package/src/main.ts +2 -2
- package/src/server/modules/auth/auth.controller.ts +1 -1
- package/src/server/modules/auth/auth.resolver.ts +3 -3
- package/src/server/modules/auth/auth.service.ts +2 -2
- package/src/server/modules/file/file.controller.ts +1 -2
- package/src/server/modules/file/file.module.ts +1 -1
- package/src/server/modules/file/file.resolver.ts +4 -3
- package/src/server/modules/file/file.service.ts +1 -1
- package/src/server/modules/file/multer-config.service.ts +1 -1
- package/src/server/modules/user/avatar.controller.ts +3 -3
- package/src/server/modules/user/user.model.ts +1 -1
- package/src/server/modules/user/user.resolver.ts +4 -4
- package/src/server/modules/user/user.service.ts +4 -4
- package/src/test/test.helper.ts +11 -11
|
@@ -46,7 +46,7 @@ export class UserResolver {
|
|
|
46
46
|
@Query(() => FindAndCountUsersResult, { description: 'Find users (via filter)' })
|
|
47
47
|
async findAndCountUsers(
|
|
48
48
|
@GraphQLServiceOptions({ gqlPath: 'findAndCountUsers.items' }) serviceOptions: ServiceOptions,
|
|
49
|
-
@Args() args?: FilterArgs
|
|
49
|
+
@Args() args?: FilterArgs,
|
|
50
50
|
) {
|
|
51
51
|
return await this.userService.findAndCount(args, {
|
|
52
52
|
...serviceOptions,
|
|
@@ -95,7 +95,7 @@ export class UserResolver {
|
|
|
95
95
|
@Mutation(() => User, { description: 'Create a new user' })
|
|
96
96
|
async createUser(
|
|
97
97
|
@GraphQLServiceOptions() serviceOptions: ServiceOptions,
|
|
98
|
-
@Args('input') input: UserCreateInput
|
|
98
|
+
@Args('input') input: UserCreateInput,
|
|
99
99
|
): Promise<User> {
|
|
100
100
|
return await this.userService.create(input, {
|
|
101
101
|
...serviceOptions,
|
|
@@ -132,7 +132,7 @@ export class UserResolver {
|
|
|
132
132
|
async updateUser(
|
|
133
133
|
@GraphQLServiceOptions() serviceOptions: ServiceOptions,
|
|
134
134
|
@Args('input') input: UserInput,
|
|
135
|
-
@Args('id') id: string
|
|
135
|
+
@Args('id') id: string,
|
|
136
136
|
): Promise<User> {
|
|
137
137
|
// Update user
|
|
138
138
|
return await this.userService.update(id, input, {
|
|
@@ -162,7 +162,7 @@ export class UserResolver {
|
|
|
162
162
|
filter(this: UserResolver, payload, variables, context) {
|
|
163
163
|
return context?.user?.hasRole?.(RoleEnum.ADMIN);
|
|
164
164
|
},
|
|
165
|
-
resolve:
|
|
165
|
+
resolve: user => user,
|
|
166
166
|
})
|
|
167
167
|
async userCreated() {
|
|
168
168
|
return this.pubSub.asyncIterator('userCreated');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import fs = require('fs');
|
|
1
2
|
import { Inject, Injectable, UnauthorizedException, UnprocessableEntityException } from '@nestjs/common';
|
|
2
3
|
import { InjectModel } from '@nestjs/mongoose';
|
|
3
|
-
import fs = require('fs');
|
|
4
4
|
import { PubSub } from 'graphql-subscriptions';
|
|
5
5
|
import { Model } from 'mongoose';
|
|
6
6
|
import { ServiceOptions } from '../../../core/common/interfaces/service-options.interface';
|
|
@@ -29,7 +29,7 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
|
|
|
29
29
|
protected override readonly emailService: EmailService,
|
|
30
30
|
@Inject('USER_CLASS') protected override readonly mainModelConstructor: CoreModelConstructor<User>,
|
|
31
31
|
@InjectModel('User') protected override readonly mainDbModel: Model<UserDocument>,
|
|
32
|
-
@Inject('PUB_SUB') protected readonly pubSub: PubSub
|
|
32
|
+
@Inject('PUB_SUB') protected readonly pubSub: PubSub,
|
|
33
33
|
) {
|
|
34
34
|
super(configService, emailService, mainDbModel, mainModelConstructor);
|
|
35
35
|
}
|
|
@@ -73,7 +73,7 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
|
|
|
73
73
|
htmlTemplate: 'password-reset',
|
|
74
74
|
templateData: {
|
|
75
75
|
name: user.username,
|
|
76
|
-
link: this.configService.configFastButReadOnly.email.passwordResetLink
|
|
76
|
+
link: `${this.configService.configFastButReadOnly.email.passwordResetLink}/${user.passwordResetToken}`,
|
|
77
77
|
},
|
|
78
78
|
});
|
|
79
79
|
|
|
@@ -98,7 +98,7 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
|
|
|
98
98
|
|
|
99
99
|
// Remove old avatar image
|
|
100
100
|
if (user.avatar) {
|
|
101
|
-
fs.unlink(this.configService.configFastButReadOnly.staticAssets.path
|
|
101
|
+
fs.unlink(`${this.configService.configFastButReadOnly.staticAssets.path}/avatars/${user.avatar}`, (err) => {
|
|
102
102
|
if (err) {
|
|
103
103
|
console.error(err);
|
|
104
104
|
}
|
package/src/test/test.helper.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { INestApplication } from '@nestjs/common';
|
|
2
1
|
import { Blob } from 'buffer';
|
|
2
|
+
import util = require('util');
|
|
3
|
+
import { INestApplication } from '@nestjs/common';
|
|
3
4
|
import { createClient } from 'graphql-ws';
|
|
4
5
|
import { jsonToGraphQLQuery } from 'json-to-graphql-query';
|
|
5
6
|
import { Types } from 'mongoose';
|
|
6
7
|
import supertest = require('supertest');
|
|
7
|
-
import util = require('util');
|
|
8
8
|
import ws = require('ws');
|
|
9
9
|
import { getStringIds } from '../core/common/helpers/db.helper';
|
|
10
10
|
|
|
@@ -158,7 +158,7 @@ export class TestHelper {
|
|
|
158
158
|
return new Promise((resolve, reject) => {
|
|
159
159
|
const request = supertest((this.app as INestApplication).getHttpServer()).get(url);
|
|
160
160
|
if (token) {
|
|
161
|
-
request.set('Authorization',
|
|
161
|
+
request.set('Authorization', `bearer ${token}`);
|
|
162
162
|
}
|
|
163
163
|
let data = '';
|
|
164
164
|
request
|
|
@@ -220,7 +220,7 @@ export class TestHelper {
|
|
|
220
220
|
name: null,
|
|
221
221
|
type: TestGraphQLType.QUERY,
|
|
222
222
|
},
|
|
223
|
-
graphql
|
|
223
|
+
graphql,
|
|
224
224
|
) as TestGraphQLConfig;
|
|
225
225
|
|
|
226
226
|
// Init request
|
|
@@ -256,7 +256,7 @@ export class TestHelper {
|
|
|
256
256
|
if (config.convertEnums) {
|
|
257
257
|
if (Array.isArray(config.convertEnums)) {
|
|
258
258
|
for (const key of Object.values(config.convertEnums)) {
|
|
259
|
-
const regExpStr =
|
|
259
|
+
const regExpStr = `(${key}: )\\"([_A-Z][_0-9A-Z]*)\\"`;
|
|
260
260
|
const regExp = new RegExp(regExpStr, 'g');
|
|
261
261
|
query = query.replace(regExp, '$1$2');
|
|
262
262
|
}
|
|
@@ -362,7 +362,7 @@ export class TestHelper {
|
|
|
362
362
|
}
|
|
363
363
|
if (Array.isArray(args)) {
|
|
364
364
|
objects.set(args, args);
|
|
365
|
-
return args.map(
|
|
365
|
+
return args.map(item => this.prepareArguments(item, objects));
|
|
366
366
|
}
|
|
367
367
|
if (typeof args === 'object') {
|
|
368
368
|
objects.set(args, args);
|
|
@@ -429,7 +429,7 @@ export class TestHelper {
|
|
|
429
429
|
log: boolean,
|
|
430
430
|
logError: boolean,
|
|
431
431
|
variables?: Record<string, TestGraphQLVariable>,
|
|
432
|
-
attachments?: Record<string, string
|
|
432
|
+
attachments?: Record<string, string>,
|
|
433
433
|
): Promise<any> {
|
|
434
434
|
// Token
|
|
435
435
|
if (token) {
|
|
@@ -460,7 +460,7 @@ export class TestHelper {
|
|
|
460
460
|
const method: string = requestConfig.method.toLowerCase();
|
|
461
461
|
let request = supertest((this.app as INestApplication).getHttpServer())[method](requestConfig.url as string);
|
|
462
462
|
if (token) {
|
|
463
|
-
request.set('Authorization',
|
|
463
|
+
request.set('Authorization', `bearer ${token}`);
|
|
464
464
|
}
|
|
465
465
|
|
|
466
466
|
// Process variables (incl. attachments for GraphQL)
|
|
@@ -508,7 +508,7 @@ export class TestHelper {
|
|
|
508
508
|
}
|
|
509
509
|
const map = {};
|
|
510
510
|
mapArray.forEach((item, index) => {
|
|
511
|
-
map[index] = [
|
|
511
|
+
map[index] = [`variables.${item.key}${'index' in item ? `.${item.index}` : ''}`];
|
|
512
512
|
});
|
|
513
513
|
|
|
514
514
|
// Add operations
|
|
@@ -565,7 +565,7 @@ export class TestHelper {
|
|
|
565
565
|
async getSubscription(graphql: TestGraphQLConfig, query: string, options?: TestGraphQLOptions) {
|
|
566
566
|
// Check url
|
|
567
567
|
if (!this.subscriptionUrl) {
|
|
568
|
-
throw new Error(
|
|
568
|
+
throw new Error('Missing subscriptionUrl in TestHelper: new TestHelper(app, \'ws://localhost:3030/graphql\')');
|
|
569
569
|
}
|
|
570
570
|
|
|
571
571
|
// Prepare subscription
|
|
@@ -599,7 +599,7 @@ export class TestHelper {
|
|
|
599
599
|
next: onNext,
|
|
600
600
|
error: reject,
|
|
601
601
|
complete: resolve as any,
|
|
602
|
-
}
|
|
602
|
+
},
|
|
603
603
|
);
|
|
604
604
|
});
|
|
605
605
|
|