@anarchitects/auth-nest 0.0.1

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 (101) hide show
  1. package/README.md +88 -0
  2. package/package.json +60 -0
  3. package/src/application/application.module-definition.d.ts +25 -0
  4. package/src/application/application.module-definition.js +13 -0
  5. package/src/application/application.module-definition.js.map +1 -0
  6. package/src/application/application.module.d.ts +27 -0
  7. package/src/application/application.module.js +73 -0
  8. package/src/application/application.module.js.map +1 -0
  9. package/src/application/factories/ability.factory.d.ts +6 -0
  10. package/src/application/factories/ability.factory.js +34 -0
  11. package/src/application/factories/ability.factory.js.map +1 -0
  12. package/src/application/index.d.ts +8 -0
  13. package/src/application/index.js +12 -0
  14. package/src/application/index.js.map +1 -0
  15. package/src/application/services/auth.service.d.ts +32 -0
  16. package/src/application/services/auth.service.js +12 -0
  17. package/src/application/services/auth.service.js.map +1 -0
  18. package/src/application/services/bcrypt-hash.service.d.ts +5 -0
  19. package/src/application/services/bcrypt-hash.service.js +20 -0
  20. package/src/application/services/bcrypt-hash.service.js.map +1 -0
  21. package/src/application/services/hash.service.d.ts +4 -0
  22. package/src/application/services/hash.service.js +12 -0
  23. package/src/application/services/hash.service.js.map +1 -0
  24. package/src/application/services/jwt-auth.service.d.ts +41 -0
  25. package/src/application/services/jwt-auth.service.js +220 -0
  26. package/src/application/services/jwt-auth.service.js.map +1 -0
  27. package/src/application/services/policies.service.d.ts +10 -0
  28. package/src/application/services/policies.service.js +42 -0
  29. package/src/application/services/policies.service.js.map +1 -0
  30. package/src/application/strategies/jwt/strategy.d.ts +16 -0
  31. package/src/application/strategies/jwt/strategy.js +25 -0
  32. package/src/application/strategies/jwt/strategy.js.map +1 -0
  33. package/src/config/auth.config.d.ts +18 -0
  34. package/src/config/auth.config.js +17 -0
  35. package/src/config/auth.config.js.map +1 -0
  36. package/src/config/index.d.ts +1 -0
  37. package/src/config/index.js +5 -0
  38. package/src/config/index.js.map +1 -0
  39. package/src/index.d.ts +5 -0
  40. package/src/index.js +9 -0
  41. package/src/index.js.map +1 -0
  42. package/src/infrastructure-mailer/adapters/mailer.adapter.d.ts +4 -0
  43. package/src/infrastructure-mailer/adapters/mailer.adapter.js +7 -0
  44. package/src/infrastructure-mailer/adapters/mailer.adapter.js.map +1 -0
  45. package/src/infrastructure-mailer/adapters/node-mailer.adapter.d.ts +8 -0
  46. package/src/infrastructure-mailer/adapters/node-mailer.adapter.js +23 -0
  47. package/src/infrastructure-mailer/adapters/node-mailer.adapter.js.map +1 -0
  48. package/src/infrastructure-mailer/index.d.ts +3 -0
  49. package/src/infrastructure-mailer/index.js +7 -0
  50. package/src/infrastructure-mailer/index.js.map +1 -0
  51. package/src/infrastructure-mailer/mailer.module.d.ts +2 -0
  52. package/src/infrastructure-mailer/mailer.module.js +23 -0
  53. package/src/infrastructure-mailer/mailer.module.js.map +1 -0
  54. package/src/infrastructure-persistence/entities/invalidated-token.entity.d.ts +7 -0
  55. package/src/infrastructure-persistence/entities/invalidated-token.entity.js +42 -0
  56. package/src/infrastructure-persistence/entities/invalidated-token.entity.js.map +1 -0
  57. package/src/infrastructure-persistence/entities/permission.entity.d.ts +17 -0
  58. package/src/infrastructure-persistence/entities/permission.entity.js +76 -0
  59. package/src/infrastructure-persistence/entities/permission.entity.js.map +1 -0
  60. package/src/infrastructure-persistence/entities/role.entity.d.ts +12 -0
  61. package/src/infrastructure-persistence/entities/role.entity.js +69 -0
  62. package/src/infrastructure-persistence/entities/role.entity.js.map +1 -0
  63. package/src/infrastructure-persistence/entities/user.entity.d.ts +14 -0
  64. package/src/infrastructure-persistence/entities/user.entity.js +77 -0
  65. package/src/infrastructure-persistence/entities/user.entity.js.map +1 -0
  66. package/src/infrastructure-persistence/index.d.ts +2 -0
  67. package/src/infrastructure-persistence/index.js +6 -0
  68. package/src/infrastructure-persistence/index.js.map +1 -0
  69. package/src/infrastructure-persistence/migrations/1720200000000-create-invalidated-tokens-cache.table.d.ts +6 -0
  70. package/src/infrastructure-persistence/migrations/1720200000000-create-invalidated-tokens-cache.table.js +29 -0
  71. package/src/infrastructure-persistence/migrations/1720200000000-create-invalidated-tokens-cache.table.js.map +1 -0
  72. package/src/infrastructure-persistence/persistence.module-definition.d.ts +13 -0
  73. package/src/infrastructure-persistence/persistence.module-definition.js +13 -0
  74. package/src/infrastructure-persistence/persistence.module-definition.js.map +1 -0
  75. package/src/infrastructure-persistence/persistence.module.d.ts +7 -0
  76. package/src/infrastructure-persistence/persistence.module.js +52 -0
  77. package/src/infrastructure-persistence/persistence.module.js.map +1 -0
  78. package/src/infrastructure-persistence/repositories/auth-user.repository.d.ts +10 -0
  79. package/src/infrastructure-persistence/repositories/auth-user.repository.js +12 -0
  80. package/src/infrastructure-persistence/repositories/auth-user.repository.js.map +1 -0
  81. package/src/infrastructure-persistence/repositories/typeorm-auth-user.repository.d.ts +17 -0
  82. package/src/infrastructure-persistence/repositories/typeorm-auth-user.repository.js +62 -0
  83. package/src/infrastructure-persistence/repositories/typeorm-auth-user.repository.js.map +1 -0
  84. package/src/infrastructure-persistence/schema.d.ts +1 -0
  85. package/src/infrastructure-persistence/schema.js +5 -0
  86. package/src/infrastructure-persistence/schema.js.map +1 -0
  87. package/src/presentation/controllers/auth.controller.d.ts +39 -0
  88. package/src/presentation/controllers/auth.controller.js +198 -0
  89. package/src/presentation/controllers/auth.controller.js.map +1 -0
  90. package/src/presentation/decorators/policies.decorator.d.ts +3 -0
  91. package/src/presentation/decorators/policies.decorator.js +8 -0
  92. package/src/presentation/decorators/policies.decorator.js.map +1 -0
  93. package/src/presentation/guards/policies.guard.d.ts +9 -0
  94. package/src/presentation/guards/policies.guard.js +38 -0
  95. package/src/presentation/guards/policies.guard.js.map +1 -0
  96. package/src/presentation/index.d.ts +4 -0
  97. package/src/presentation/index.js +8 -0
  98. package/src/presentation/index.js.map +1 -0
  99. package/src/presentation/presentation.module.d.ts +2 -0
  100. package/src/presentation/presentation.module.js +15 -0
  101. package/src/presentation/presentation.module.js.map +1 -0
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const dtos_1 = require("@anarchitects/auth-ts/dtos");
6
+ const common_1 = require("@nestjs/common");
7
+ const platform_fastify_1 = require("@nestjs/platform-fastify");
8
+ const auth_service_1 = require("../../application/services/auth.service");
9
+ let AuthController = class AuthController {
10
+ constructor(authService) {
11
+ this.authService = authService;
12
+ }
13
+ async registerUser(dto) {
14
+ return this.authService.registerUser(dto);
15
+ }
16
+ async activateUser(dto) {
17
+ return this.authService.activateUser(dto);
18
+ }
19
+ async login(dto) {
20
+ return this.authService.login(dto);
21
+ }
22
+ async logout(dto) {
23
+ return this.authService.logout(dto);
24
+ }
25
+ async changePassword(userId, dto) {
26
+ return this.authService.changePassword(userId, dto);
27
+ }
28
+ async forgotPassword(dto) {
29
+ return this.authService.forgotPassword(dto);
30
+ }
31
+ async resetPassword(dto) {
32
+ return this.authService.resetPassword(dto);
33
+ }
34
+ async verifyEmail(dto) {
35
+ return this.authService.verifyEmail(dto);
36
+ }
37
+ async updateEmail(userId, dto) {
38
+ return this.authService.updateEmail(userId, dto);
39
+ }
40
+ async refreshTokens(userId, dto) {
41
+ return this.authService.refreshTokens(userId, dto);
42
+ }
43
+ async getLoggedInUserInfo(req) {
44
+ const userId = req.user.sub; // Assuming JWT payload contains 'sub' as userId
45
+ return this.authService.getLoggedInUserInfo(userId);
46
+ }
47
+ };
48
+ exports.AuthController = AuthController;
49
+ tslib_1.__decorate([
50
+ (0, common_1.Post)('/register'),
51
+ (0, platform_fastify_1.RouteSchema)({
52
+ body: dtos_1.RegisterRequestSchema,
53
+ response: { 200: dtos_1.RegisterResponseSchema },
54
+ }),
55
+ tslib_1.__param(0, (0, common_1.Body)()),
56
+ tslib_1.__metadata("design:type", Function),
57
+ tslib_1.__metadata("design:paramtypes", [Object]),
58
+ tslib_1.__metadata("design:returntype", Promise)
59
+ ], AuthController.prototype, "registerUser", null);
60
+ tslib_1.__decorate([
61
+ (0, common_1.Patch)('/activate'),
62
+ (0, platform_fastify_1.RouteSchema)({
63
+ body: dtos_1.ActivateUserRequestSchema,
64
+ response: {
65
+ 200: { success: { type: 'boolean' } },
66
+ },
67
+ }),
68
+ tslib_1.__param(0, (0, common_1.Body)()),
69
+ tslib_1.__metadata("design:type", Function),
70
+ tslib_1.__metadata("design:paramtypes", [Object]),
71
+ tslib_1.__metadata("design:returntype", Promise)
72
+ ], AuthController.prototype, "activateUser", null);
73
+ tslib_1.__decorate([
74
+ (0, common_1.Post)('/login'),
75
+ (0, platform_fastify_1.RouteSchema)({
76
+ body: dtos_1.LoginRequestSchema,
77
+ response: { 200: dtos_1.LoginResponseSchema },
78
+ }),
79
+ tslib_1.__param(0, (0, common_1.Body)()),
80
+ tslib_1.__metadata("design:type", Function),
81
+ tslib_1.__metadata("design:paramtypes", [Object]),
82
+ tslib_1.__metadata("design:returntype", Promise)
83
+ ], AuthController.prototype, "login", null);
84
+ tslib_1.__decorate([
85
+ (0, common_1.Post)('/logout'),
86
+ (0, platform_fastify_1.RouteSchema)({
87
+ body: dtos_1.LogoutRequestSchema,
88
+ response: { 200: { success: { type: 'boolean' } } },
89
+ }),
90
+ tslib_1.__param(0, (0, common_1.Body)()),
91
+ tslib_1.__metadata("design:type", Function),
92
+ tslib_1.__metadata("design:paramtypes", [Object]),
93
+ tslib_1.__metadata("design:returntype", Promise)
94
+ ], AuthController.prototype, "logout", null);
95
+ tslib_1.__decorate([
96
+ (0, common_1.Patch)('/change-password/:userId'),
97
+ (0, platform_fastify_1.RouteSchema)({
98
+ body: dtos_1.ChangePasswordRequestSchema,
99
+ params: {
100
+ userId: { type: 'string' },
101
+ },
102
+ response: { 200: { success: { type: 'boolean' } } },
103
+ }),
104
+ tslib_1.__param(0, (0, common_1.Param)('userId')),
105
+ tslib_1.__param(1, (0, common_1.Body)()),
106
+ tslib_1.__metadata("design:type", Function),
107
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
108
+ tslib_1.__metadata("design:returntype", Promise)
109
+ ], AuthController.prototype, "changePassword", null);
110
+ tslib_1.__decorate([
111
+ (0, common_1.Post)('/forgot-password'),
112
+ (0, platform_fastify_1.RouteSchema)({
113
+ body: dtos_1.ForgotPasswordRequestSchema,
114
+ response: { 200: { success: { type: 'boolean' } } },
115
+ }),
116
+ tslib_1.__param(0, (0, common_1.Body)()),
117
+ tslib_1.__metadata("design:type", Function),
118
+ tslib_1.__metadata("design:paramtypes", [Object]),
119
+ tslib_1.__metadata("design:returntype", Promise)
120
+ ], AuthController.prototype, "forgotPassword", null);
121
+ tslib_1.__decorate([
122
+ (0, common_1.Post)('/reset-password'),
123
+ (0, platform_fastify_1.RouteSchema)({
124
+ body: dtos_1.ResetPasswordRequestSchema,
125
+ response: { 200: { success: { type: 'boolean' } } },
126
+ }),
127
+ tslib_1.__param(0, (0, common_1.Body)()),
128
+ tslib_1.__metadata("design:type", Function),
129
+ tslib_1.__metadata("design:paramtypes", [Object]),
130
+ tslib_1.__metadata("design:returntype", Promise)
131
+ ], AuthController.prototype, "resetPassword", null);
132
+ tslib_1.__decorate([
133
+ (0, common_1.Post)('/verify-email'),
134
+ (0, platform_fastify_1.RouteSchema)({
135
+ body: dtos_1.VerifyEmailRequestSchema,
136
+ response: { 200: { success: { type: 'boolean' } } },
137
+ }),
138
+ tslib_1.__param(0, (0, common_1.Body)()),
139
+ tslib_1.__metadata("design:type", Function),
140
+ tslib_1.__metadata("design:paramtypes", [Object]),
141
+ tslib_1.__metadata("design:returntype", Promise)
142
+ ], AuthController.prototype, "verifyEmail", null);
143
+ tslib_1.__decorate([
144
+ (0, common_1.Patch)('/update-email/:userId'),
145
+ (0, platform_fastify_1.RouteSchema)({
146
+ body: dtos_1.UpdateEmailRequestSchema,
147
+ params: {
148
+ userId: { type: 'string' },
149
+ },
150
+ response: { 200: { success: { type: 'boolean' } } },
151
+ }),
152
+ tslib_1.__param(0, (0, common_1.Param)('userId')),
153
+ tslib_1.__param(1, (0, common_1.Body)()),
154
+ tslib_1.__metadata("design:type", Function),
155
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
156
+ tslib_1.__metadata("design:returntype", Promise)
157
+ ], AuthController.prototype, "updateEmail", null);
158
+ tslib_1.__decorate([
159
+ (0, common_1.Post)('/refresh-tokens/:userId'),
160
+ (0, platform_fastify_1.RouteSchema)({
161
+ body: dtos_1.RefreshTokenRequestSchema,
162
+ params: {
163
+ userId: { type: 'string' },
164
+ },
165
+ response: { 200: dtos_1.LoginResponseSchema },
166
+ }),
167
+ tslib_1.__param(0, (0, common_1.Param)('userId')),
168
+ tslib_1.__param(1, (0, common_1.Body)()),
169
+ tslib_1.__metadata("design:type", Function),
170
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
171
+ tslib_1.__metadata("design:returntype", Promise)
172
+ ], AuthController.prototype, "refreshTokens", null);
173
+ tslib_1.__decorate([
174
+ (0, common_1.Get)('/me'),
175
+ (0, platform_fastify_1.RouteSchema)({
176
+ response: {
177
+ 200: {
178
+ type: 'object',
179
+ properties: {
180
+ user: { type: 'object' }, // Define user schema as needed
181
+ rbac: {
182
+ type: 'array',
183
+ items: { type: 'object' }, // Define PolicyRule schema as needed
184
+ },
185
+ },
186
+ },
187
+ },
188
+ }),
189
+ tslib_1.__param(0, (0, common_1.Req)()),
190
+ tslib_1.__metadata("design:type", Function),
191
+ tslib_1.__metadata("design:paramtypes", [Object]),
192
+ tslib_1.__metadata("design:returntype", Promise)
193
+ ], AuthController.prototype, "getLoggedInUserInfo", null);
194
+ exports.AuthController = AuthController = tslib_1.__decorate([
195
+ (0, common_1.Controller)('auth'),
196
+ tslib_1.__metadata("design:paramtypes", [auth_service_1.AuthService])
197
+ ], AuthController);
198
+ //# sourceMappingURL=auth.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../../../../../libs/auth/nest/src/presentation/controllers/auth.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PolicyRule } from '@anarchitects/auth-ts/models';
2
+ export declare const POLICIES_KEY = "policies";
3
+ export declare const Policies: (...rules: PolicyRule[]) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Policies = exports.POLICIES_KEY = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.POLICIES_KEY = 'policies';
6
+ const Policies = (...rules) => (0, common_1.applyDecorators)((0, common_1.SetMetadata)(exports.POLICIES_KEY, rules));
7
+ exports.Policies = Policies;
8
+ //# sourceMappingURL=policies.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.decorator.js","sourceRoot":"","sources":["../../../../../../../libs/auth/nest/src/presentation/decorators/policies.decorator.ts"],"names":[],"mappings":";;;AACA,2CAA8D;AAEjD,QAAA,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAmB,EAAE,EAAE,CACjD,IAAA,wBAAe,EAAC,IAAA,oBAAW,EAAC,oBAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AADvC,QAAA,QAAQ,YAC+B"}
@@ -0,0 +1,9 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { PoliciesService } from '../../application/services/policies.service';
4
+ export declare class PoliciesGuard implements CanActivate {
5
+ private readonly reflector;
6
+ private readonly policiesService;
7
+ constructor(reflector: Reflector, policiesService: PoliciesService);
8
+ canActivate(context: ExecutionContext): Promise<boolean>;
9
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PoliciesGuard = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const core_1 = require("@nestjs/core");
7
+ const policies_service_1 = require("../../application/services/policies.service");
8
+ const policies_decorator_1 = require("../decorators/policies.decorator");
9
+ let PoliciesGuard = class PoliciesGuard {
10
+ constructor(reflector, policiesService) {
11
+ this.reflector = reflector;
12
+ this.policiesService = policiesService;
13
+ }
14
+ async canActivate(context) {
15
+ const req = context.switchToHttp().getRequest();
16
+ const policies = this.reflector.getAllAndOverride(policies_decorator_1.POLICIES_KEY, [context.getHandler(), context.getClass()]);
17
+ if (policies) {
18
+ const user = req.user;
19
+ if (!user) {
20
+ throw new common_1.UnauthorizedException('User not authenticated');
21
+ }
22
+ const ability = await this.policiesService.buildAbilityForUser(user);
23
+ policies.forEach((policy) => {
24
+ if (!ability.can(policy.action, policy.subject)) {
25
+ throw new common_1.ForbiddenException();
26
+ }
27
+ });
28
+ }
29
+ return true;
30
+ }
31
+ };
32
+ exports.PoliciesGuard = PoliciesGuard;
33
+ exports.PoliciesGuard = PoliciesGuard = tslib_1.__decorate([
34
+ (0, common_1.Injectable)(),
35
+ tslib_1.__metadata("design:paramtypes", [core_1.Reflector,
36
+ policies_service_1.PoliciesService])
37
+ ], PoliciesGuard);
38
+ //# sourceMappingURL=policies.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.guard.js","sourceRoot":"","sources":["../../../../../../../libs/auth/nest/src/presentation/guards/policies.guard.ts"],"names":[],"mappings":";;;;AAAA,2CAMwB;AACxB,uCAAyC;AAEzC,kFAA8E;AAC9E,yEAAgE;AAGzD,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YACmB,SAAoB,EACpB,eAAgC;QADhC,cAAS,GAAT,SAAS,CAAW;QACpB,oBAAe,GAAf,eAAe,CAAiB;IAChD,CAAC;IACJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC/C,iCAAY,EACZ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,8BAAqB,CAAC,wBAAwB,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACrE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChD,MAAM,IAAI,2BAAkB,EAAE,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA1BY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;6CAGmB,gBAAS;QACH,kCAAe;GAHxC,aAAa,CA0BzB"}
@@ -0,0 +1,4 @@
1
+ export * from './presentation.module';
2
+ export * from './controllers/auth.controller';
3
+ export * from './guards/policies.guard';
4
+ export * from './decorators/policies.decorator';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./presentation.module"), exports);
5
+ tslib_1.__exportStar(require("./controllers/auth.controller"), exports);
6
+ tslib_1.__exportStar(require("./guards/policies.guard"), exports);
7
+ tslib_1.__exportStar(require("./decorators/policies.decorator"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/auth/nest/src/presentation/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,wEAA8C;AAC9C,kEAAwC;AACxC,0EAAgD"}
@@ -0,0 +1,2 @@
1
+ export declare class PresentationModule {
2
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PresentationModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const auth_controller_1 = require("./controllers/auth.controller");
7
+ let PresentationModule = class PresentationModule {
8
+ };
9
+ exports.PresentationModule = PresentationModule;
10
+ exports.PresentationModule = PresentationModule = tslib_1.__decorate([
11
+ (0, common_1.Module)({
12
+ controllers: [auth_controller_1.AuthController],
13
+ })
14
+ ], PresentationModule);
15
+ //# sourceMappingURL=presentation.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation.module.js","sourceRoot":"","sources":["../../../../../../libs/auth/nest/src/presentation/presentation.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,mEAA+D;AAKxD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAH9B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,gCAAc,CAAC;KAC9B,CAAC;GACW,kBAAkB,CAAG"}