@lenne.tech/nest-server 3.3.3 → 3.4.0
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 +8 -4
- package/dist/config.env.js.map +1 -1
- package/dist/core/common/interfaces/server-options.interface.d.ts +4 -1
- package/dist/core/modules/auth/services/core-auth.service.d.ts +1 -0
- package/dist/core/modules/auth/services/core-auth.service.js +3 -0
- package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
- package/dist/core.module.d.ts +1 -1
- package/dist/core.module.js +26 -10
- package/dist/core.module.js.map +1 -1
- package/dist/server/server.module.js +2 -1
- package/dist/server/server.module.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/config.env.ts +8 -4
- package/src/core/common/interfaces/server-options.interface.ts +4 -1
- package/src/core/modules/auth/services/core-auth.service.ts +4 -0
- package/src/core.module.ts +32 -12
- package/src/server/server.module.ts +2 -1
package/dist/config.env.js
CHANGED
|
@@ -26,8 +26,10 @@ const config = {
|
|
|
26
26
|
},
|
|
27
27
|
env: 'development',
|
|
28
28
|
graphQl: {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
driver: {
|
|
30
|
+
debug: true,
|
|
31
|
+
introspection: true,
|
|
32
|
+
},
|
|
31
33
|
},
|
|
32
34
|
jwt: {
|
|
33
35
|
secret: 'SECRET_OR_PRIVATE_KEY_DEV',
|
|
@@ -69,8 +71,10 @@ const config = {
|
|
|
69
71
|
},
|
|
70
72
|
env: 'productive',
|
|
71
73
|
graphQl: {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
driver: {
|
|
75
|
+
debug: false,
|
|
76
|
+
introspection: true,
|
|
77
|
+
},
|
|
74
78
|
},
|
|
75
79
|
jwt: {
|
|
76
80
|
secret: 'SECRET_OR_PRIVATE_KEY_PROD',
|
package/dist/config.env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.env.js","sourceRoot":"","sources":["../src/config.env.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAM5B,MAAM,MAAM,GAAsC;IAIhD,WAAW,EAAE;QACX,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;aACd;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,wBAAwB;gBACxC,eAAe,EAAE,yBAAyB;aAC3C;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,mBAAmB;aAC1B;YACD,gBAAgB,EAAE,yCAAyC;YAC3D,iBAAiB,EAAE,2CAA2C;SAC/D;QACD,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE;YACP,KAAK,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"config.env.js","sourceRoot":"","sources":["../src/config.env.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAM5B,MAAM,MAAM,GAAsC;IAIhD,WAAW,EAAE;QACX,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;aACd;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,wBAAwB;gBACxC,eAAe,EAAE,yBAAyB;aAC3C;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,mBAAmB;aAC1B;YACD,gBAAgB,EAAE,yCAAyC;YAC3D,iBAAiB,EAAE,2CAA2C;SAC/D;QACD,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,IAAI;aACpB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE,2BAA2B;SACpC;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,qCAAqC;SAC3C;QACD,IAAI,EAAE,IAAI;QACV,YAAY,EAAE;YACZ,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAChC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC;YAClC,MAAM,EAAE,KAAK;SACd;KACF;IAKD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;aACd;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,wBAAwB;gBACxC,eAAe,EAAE,yBAAyB;aAC3C;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,mBAAmB;aAC1B;YACD,gBAAgB,EAAE,yCAAyC;YAC3D,iBAAiB,EAAE,2CAA2C;SAC/D;QACD,GAAG,EAAE,YAAY;QACjB,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,IAAI;aACpB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE,4BAA4B;SACrC;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,sCAAsC;SAC5C;QACD,IAAI,EAAE,IAAI;QACV,YAAY,EAAE;YACZ,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAChC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC;YAClC,MAAM,EAAE,KAAK;SACd;KACF;CACF,CAAC;AAOF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC;AAC9F,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;AAKtF,kBAAe,SAAS,CAAC"}
|
|
@@ -6,7 +6,10 @@ import * as SMTPTransport from 'nodemailer/lib/smtp-transport';
|
|
|
6
6
|
import { MailjetOptions } from './mailjet-options.interface';
|
|
7
7
|
export interface IServerOptions {
|
|
8
8
|
env?: string;
|
|
9
|
-
graphQl?:
|
|
9
|
+
graphQl?: {
|
|
10
|
+
driver?: ApolloDriverConfig;
|
|
11
|
+
enableSubscriptionAuth?: boolean;
|
|
12
|
+
};
|
|
10
13
|
jwt?: {
|
|
11
14
|
privateKey?: string;
|
|
12
15
|
publicKey?: string;
|
|
@@ -33,6 +33,9 @@ let CoreAuthService = class CoreAuthService {
|
|
|
33
33
|
async validateUser(payload) {
|
|
34
34
|
return await this.userService.getViaEmail(payload.email);
|
|
35
35
|
}
|
|
36
|
+
decodeJwt(token) {
|
|
37
|
+
return this.jwtService.decode(token);
|
|
38
|
+
}
|
|
36
39
|
};
|
|
37
40
|
CoreAuthService = __decorate([
|
|
38
41
|
(0, common_1.Injectable)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-auth.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,qCAAyC;AACzC,iCAAiC;AAGjC,qEAA+D;AAM/D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAC1B,YAA+B,WAAgC,EAAqB,UAAsB;QAA3E,gBAAW,GAAX,WAAW,CAAqB;QAAqB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAK9G,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,QAAgB;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACpD,MAAM,IAAI,8BAAqB,EAAE,CAAC;SACnC;QACD,MAAM,OAAO,GAAe,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACpC,IAAI;SACL,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,OAAmB;QACpC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"core-auth.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,qCAAyC;AACzC,iCAAiC;AAGjC,qEAA+D;AAM/D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAC1B,YAA+B,WAAgC,EAAqB,UAAsB;QAA3E,gBAAW,GAAX,WAAW,CAAqB;QAAqB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAK9G,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,QAAgB;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YACpD,MAAM,IAAI,8BAAqB,EAAE,CAAC;SACnC;QACD,MAAM,OAAO,GAAe,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACpC,IAAI;SACL,CAAC;IACJ,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,OAAmB;QACpC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAe,CAAC;IACrD,CAAC;CACF,CAAA;AA5BY,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAEiC,4CAAmB,EAAiC,gBAAU;GAD/F,eAAe,CA4B3B;AA5BY,0CAAe"}
|
package/dist/core.module.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DynamicModule } from '@nestjs/common';
|
|
2
2
|
import { IServerOptions } from './core/common/interfaces/server-options.interface';
|
|
3
3
|
export declare class CoreModule {
|
|
4
|
-
static forRoot(options: Partial<IServerOptions>): DynamicModule;
|
|
4
|
+
static forRoot(AuthService: any, AuthModule: any, options: Partial<IServerOptions>): DynamicModule;
|
|
5
5
|
}
|
package/dist/core.module.js
CHANGED
|
@@ -21,20 +21,36 @@ const mongoose_1 = require("@nestjs/mongoose");
|
|
|
21
21
|
const mailjet_service_1 = require("./core/common/services/mailjet.service");
|
|
22
22
|
const apollo_1 = require("@nestjs/apollo");
|
|
23
23
|
let CoreModule = CoreModule_1 = class CoreModule {
|
|
24
|
-
static forRoot(options) {
|
|
24
|
+
static forRoot(AuthService, AuthModule, options) {
|
|
25
25
|
const config = config_helper_1.Config.merge({
|
|
26
26
|
env: 'develop',
|
|
27
27
|
graphQl: {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
driver: {
|
|
29
|
+
imports: [AuthModule],
|
|
30
|
+
inject: [AuthService],
|
|
31
|
+
useFactory: async (authService) => ({
|
|
32
|
+
autoSchemaFile: 'schema.gql',
|
|
33
|
+
context: ({ req }) => ({ req }),
|
|
34
|
+
installSubscriptionHandlers: true,
|
|
35
|
+
subscriptions: {
|
|
36
|
+
'subscriptions-transport-ws': {
|
|
37
|
+
onConnect: async (connectionParams) => {
|
|
38
|
+
var _a;
|
|
39
|
+
if (config.graphQl.enableSubscriptionAuth) {
|
|
40
|
+
const authToken = 'Authorization' in connectionParams && ((_a = connectionParams === null || connectionParams === void 0 ? void 0 : connectionParams.Authorization) === null || _a === void 0 ? void 0 : _a.split(' ')[1]);
|
|
41
|
+
if (authToken) {
|
|
42
|
+
const payload = authService.decodeJwt(authToken);
|
|
43
|
+
const user = await authService.validateUser(payload);
|
|
44
|
+
return { user: user, headers: connectionParams };
|
|
45
|
+
}
|
|
46
|
+
throw new common_1.UnauthorizedException();
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
},
|
|
35
50
|
},
|
|
36
|
-
},
|
|
51
|
+
}),
|
|
37
52
|
},
|
|
53
|
+
enableSubscriptionAuth: true,
|
|
38
54
|
},
|
|
39
55
|
port: 3000,
|
|
40
56
|
mongoose: {
|
|
@@ -68,7 +84,7 @@ let CoreModule = CoreModule_1 = class CoreModule {
|
|
|
68
84
|
module: CoreModule_1,
|
|
69
85
|
imports: [
|
|
70
86
|
mongoose_1.MongooseModule.forRoot(config.mongoose.uri, config.mongoose.options),
|
|
71
|
-
graphql_1.GraphQLModule.
|
|
87
|
+
graphql_1.GraphQLModule.forRootAsync(Object.assign({ driver: apollo_1.ApolloDriver }, config.graphQl.driver)),
|
|
72
88
|
],
|
|
73
89
|
providers,
|
|
74
90
|
exports: [config_service_1.ConfigService, email_service_1.EmailService, template_service_1.TemplateService, mailjet_service_1.MailjetService],
|
package/dist/core.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,13 @@ const core_module_1 = require("../core.module");
|
|
|
13
13
|
const auth_module_1 = require("./modules/auth/auth.module");
|
|
14
14
|
const file_controller_1 = require("./modules/file/file.controller");
|
|
15
15
|
const server_controller_1 = require("./server.controller");
|
|
16
|
+
const core_auth_service_1 = require("../core/modules/auth/services/core-auth.service");
|
|
16
17
|
let ServerModule = class ServerModule {
|
|
17
18
|
};
|
|
18
19
|
ServerModule = __decorate([
|
|
19
20
|
(0, common_1.Module)({
|
|
20
21
|
imports: [
|
|
21
|
-
core_module_1.CoreModule.forRoot(config_env_1.default),
|
|
22
|
+
core_module_1.CoreModule.forRoot(core_auth_service_1.CoreAuthService, auth_module_1.AuthModule.forRoot(config_env_1.default.jwt), config_env_1.default),
|
|
22
23
|
auth_module_1.AuthModule.forRoot(config_env_1.default.jwt),
|
|
23
24
|
],
|
|
24
25
|
controllers: [file_controller_1.FileController, server_controller_1.ServerController],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.module.js","sourceRoot":"","sources":["../../src/server/server.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAAsC;AACtC,gDAA4C;AAC5C,4DAAwD;AACxD,oEAAgE;AAChE,2DAAuD;
|
|
1
|
+
{"version":3,"file":"server.module.js","sourceRoot":"","sources":["../../src/server/server.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,8CAAsC;AACtC,gDAA4C;AAC5C,4DAAwD;AACxD,oEAAgE;AAChE,2DAAuD;AACvD,uFAAkF;AAyBlF,IAAa,YAAY,GAAzB,MAAa,YAAY;CAAG,CAAA;AAAf,YAAY;IAjBxB,IAAA,eAAM,EAAC;QAEN,OAAO,EAAE;YAEP,wBAAU,CAAC,OAAO,CAAC,mCAAe,EAAE,wBAAU,CAAC,OAAO,CAAC,oBAAS,CAAC,GAAG,CAAC,EAAE,oBAAS,CAAC;YAIjF,wBAAU,CAAC,OAAO,CAAC,oBAAS,CAAC,GAAG,CAAC;SAClC;QAGD,WAAW,EAAE,CAAC,gCAAc,EAAE,oCAAgB,CAAC;QAG/C,OAAO,EAAE,CAAC,wBAAU,EAAE,wBAAU,CAAC;KAClC,CAAC;GACW,YAAY,CAAG;AAAf,oCAAY"}
|