prime-sdk 3.0.8-beta.0 → 3.0.9

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 (124) hide show
  1. package/.eslintrc.js +0 -4
  2. package/README.md +10 -307
  3. package/dist/external/aws/kms/kms.service.d.ts +2 -2
  4. package/dist/external/aws/s3/s3.service.d.ts +2 -0
  5. package/dist/external/aws/s3/s3.service.js +50 -0
  6. package/dist/external/aws/s3/s3.service.js.map +1 -1
  7. package/dist/external/aws/ses/ses.service.d.ts +2 -2
  8. package/dist/external/aws/sns/sns.service.d.ts +2 -2
  9. package/dist/external/aws/sqs/sqs.service.d.ts +1 -1
  10. package/dist/external/redis/interfaces/redis.interface.d.ts +0 -1
  11. package/dist/external/redis/redis.service.d.ts +0 -1
  12. package/dist/index.d.ts +1 -15
  13. package/dist/index.js +1 -25
  14. package/dist/index.js.map +1 -1
  15. package/dist/lib/cache/cache.d.ts +2 -3
  16. package/dist/lib/cache/interfaces/cache.interface.d.ts +1 -2
  17. package/dist/lib/crypto/crypto.module.d.ts +1 -1
  18. package/dist/lib/crypto/types/crypto.type.d.ts +0 -1
  19. package/dist/lib/documents/types/bedrock.type.d.ts +0 -1
  20. package/dist/lib/email/email.module.d.ts +1 -1
  21. package/dist/lib/storage/interfaces/storage.interface.d.ts +1 -0
  22. package/dist/lib/storage/interfaces/storage.interface.js.map +1 -1
  23. package/dist/lib/storage/storage.d.ts +1 -1
  24. package/dist/lib/storage/storage.js +3 -0
  25. package/dist/lib/storage/storage.js.map +1 -1
  26. package/dist/lib/storage/types/storage.type.d.ts +1 -2
  27. package/dist/tsconfig.build.tsbuildinfo +1 -1
  28. package/package.json +1 -4
  29. package/src/external/aws/s3/s3.service.ts +70 -0
  30. package/src/index.ts +0 -42
  31. package/src/lib/storage/interfaces/storage.interface.ts +1 -0
  32. package/src/lib/storage/storage.ts +4 -0
  33. package/src/lib/storage/types/storage.type.ts +1 -0
  34. package/tsconfig.json +0 -1
  35. package/.yarn/install-state.gz +0 -0
  36. package/.yarnrc.yml +0 -1
  37. package/dist/lib/entraID/customError/entraID.exception.d.ts +0 -5
  38. package/dist/lib/entraID/customError/entraID.exception.js +0 -43
  39. package/dist/lib/entraID/customError/entraID.exception.js.map +0 -1
  40. package/dist/lib/entraID/decorators/current-user.decorator.d.ts +0 -1
  41. package/dist/lib/entraID/decorators/current-user.decorator.js +0 -9
  42. package/dist/lib/entraID/decorators/current-user.decorator.js.map +0 -1
  43. package/dist/lib/entraID/decorators/public.decorator.d.ts +0 -2
  44. package/dist/lib/entraID/decorators/public.decorator.js +0 -8
  45. package/dist/lib/entraID/decorators/public.decorator.js.map +0 -1
  46. package/dist/lib/entraID/decorators/roles.decorator.d.ts +0 -2
  47. package/dist/lib/entraID/decorators/roles.decorator.js +0 -8
  48. package/dist/lib/entraID/decorators/roles.decorator.js.map +0 -1
  49. package/dist/lib/entraID/entraID.constants.d.ts +0 -2
  50. package/dist/lib/entraID/entraID.constants.js +0 -6
  51. package/dist/lib/entraID/entraID.constants.js.map +0 -1
  52. package/dist/lib/entraID/entraID.module.d.ts +0 -14
  53. package/dist/lib/entraID/entraID.module.js +0 -56
  54. package/dist/lib/entraID/entraID.module.js.map +0 -1
  55. package/dist/lib/entraID/entraID.service.d.ts +0 -25
  56. package/dist/lib/entraID/entraID.service.js +0 -166
  57. package/dist/lib/entraID/entraID.service.js.map +0 -1
  58. package/dist/lib/entraID/guards/entra-auth.guard.d.ts +0 -21
  59. package/dist/lib/entraID/guards/entra-auth.guard.js +0 -70
  60. package/dist/lib/entraID/guards/entra-auth.guard.js.map +0 -1
  61. package/dist/lib/entraID/guards/roles.guard.d.ts +0 -7
  62. package/dist/lib/entraID/guards/roles.guard.js +0 -41
  63. package/dist/lib/entraID/guards/roles.guard.js.map +0 -1
  64. package/dist/lib/entraID/interfaces/entraID-service.interface.d.ts +0 -7
  65. package/dist/lib/entraID/interfaces/entraID-service.interface.js +0 -3
  66. package/dist/lib/entraID/interfaces/entraID-service.interface.js.map +0 -1
  67. package/dist/lib/entraID/internal-token/internal-token.module.d.ts +0 -2
  68. package/dist/lib/entraID/internal-token/internal-token.module.js +0 -21
  69. package/dist/lib/entraID/internal-token/internal-token.module.js.map +0 -1
  70. package/dist/lib/entraID/internal-token/internal-token.service.d.ts +0 -10
  71. package/dist/lib/entraID/internal-token/internal-token.service.js +0 -76
  72. package/dist/lib/entraID/internal-token/internal-token.service.js.map +0 -1
  73. package/dist/lib/entraID/microsoft/microsoft.module.d.ts +0 -2
  74. package/dist/lib/entraID/microsoft/microsoft.module.js +0 -21
  75. package/dist/lib/entraID/microsoft/microsoft.module.js.map +0 -1
  76. package/dist/lib/entraID/microsoft/microsoft.service.d.ts +0 -14
  77. package/dist/lib/entraID/microsoft/microsoft.service.js +0 -132
  78. package/dist/lib/entraID/microsoft/microsoft.service.js.map +0 -1
  79. package/dist/lib/entraID/security/security.module.d.ts +0 -2
  80. package/dist/lib/entraID/security/security.module.js +0 -21
  81. package/dist/lib/entraID/security/security.module.js.map +0 -1
  82. package/dist/lib/entraID/security/security.service.d.ts +0 -9
  83. package/dist/lib/entraID/security/security.service.js +0 -65
  84. package/dist/lib/entraID/security/security.service.js.map +0 -1
  85. package/dist/lib/entraID/types/entraID-module-init.types.d.ts +0 -18
  86. package/dist/lib/entraID/types/entraID-module-init.types.js +0 -3
  87. package/dist/lib/entraID/types/entraID-module-init.types.js.map +0 -1
  88. package/dist/lib/entraID/types/entraID.type.d.ts +0 -52
  89. package/dist/lib/entraID/types/entraID.type.js +0 -3
  90. package/dist/lib/entraID/types/entraID.type.js.map +0 -1
  91. package/dist/lib/entraID/utils/cookie.utils.d.ts +0 -7
  92. package/dist/lib/entraID/utils/cookie.utils.js +0 -42
  93. package/dist/lib/entraID/utils/cookie.utils.js.map +0 -1
  94. package/dist/lib/entraID/utils/crypto.utils.d.ts +0 -9
  95. package/dist/lib/entraID/utils/crypto.utils.js +0 -47
  96. package/dist/lib/entraID/utils/crypto.utils.js.map +0 -1
  97. package/dist/lib/entraID/utils/index.d.ts +0 -2
  98. package/dist/lib/entraID/utils/index.js +0 -8
  99. package/dist/lib/entraID/utils/index.js.map +0 -1
  100. package/dist/lib/entraID/utils/token.utils.d.ts +0 -6
  101. package/dist/lib/entraID/utils/token.utils.js +0 -24
  102. package/dist/lib/entraID/utils/token.utils.js.map +0 -1
  103. package/src/lib/entraID/customError/entraID.exception.ts +0 -43
  104. package/src/lib/entraID/decorators/current-user.decorator.ts +0 -8
  105. package/src/lib/entraID/decorators/public.decorator.ts +0 -5
  106. package/src/lib/entraID/decorators/roles.decorator.ts +0 -5
  107. package/src/lib/entraID/entraID.constants.ts +0 -2
  108. package/src/lib/entraID/entraID.module.ts +0 -78
  109. package/src/lib/entraID/entraID.service.ts +0 -206
  110. package/src/lib/entraID/guards/entra-auth.guard.ts +0 -77
  111. package/src/lib/entraID/guards/roles.guard.ts +0 -34
  112. package/src/lib/entraID/interfaces/entraID-service.interface.ts +0 -12
  113. package/src/lib/entraID/internal-token/internal-token.module.ts +0 -8
  114. package/src/lib/entraID/internal-token/internal-token.service.ts +0 -66
  115. package/src/lib/entraID/microsoft/microsoft.module.ts +0 -8
  116. package/src/lib/entraID/microsoft/microsoft.service.ts +0 -158
  117. package/src/lib/entraID/security/security.module.ts +0 -8
  118. package/src/lib/entraID/security/security.service.ts +0 -68
  119. package/src/lib/entraID/types/entraID-module-init.types.ts +0 -25
  120. package/src/lib/entraID/types/entraID.type.ts +0 -57
  121. package/src/lib/entraID/utils/cookie.utils.ts +0 -50
  122. package/src/lib/entraID/utils/crypto.utils.ts +0 -53
  123. package/src/lib/entraID/utils/index.ts +0 -2
  124. package/src/lib/entraID/utils/token.utils.ts +0 -20
@@ -1,70 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.EntraAuthGuard = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const internal_token_service_1 = require("../internal-token/internal-token.service");
15
- const entraID_exception_1 = require("../customError/entraID.exception");
16
- const core_1 = require("@nestjs/core");
17
- const public_decorator_1 = require("../decorators/public.decorator");
18
- let EntraAuthGuard = class EntraAuthGuard {
19
- constructor(internalTokenService, reflector) {
20
- this.internalTokenService = internalTokenService;
21
- this.reflector = reflector;
22
- }
23
- async canActivate(context) {
24
- const isPublic = this.reflector.getAllAndOverride(public_decorator_1.IS_PUBLIC_KEY, [
25
- context.getHandler(),
26
- context.getClass(),
27
- ]);
28
- if (isPublic)
29
- return true;
30
- const request = context.switchToHttp().getRequest();
31
- const token = this.extractToken(request);
32
- if (!token)
33
- throw new common_1.UnauthorizedException();
34
- let payload;
35
- try {
36
- payload = this.internalTokenService.verify(token);
37
- }
38
- catch (error) {
39
- if (error instanceof entraID_exception_1.EntraIDException) {
40
- throw new common_1.UnauthorizedException(error.message);
41
- }
42
- throw error;
43
- }
44
- const revoke = await this.isTokenRevoked(payload, request);
45
- if (revoke) {
46
- throw new common_1.UnauthorizedException('TOKEN_REVOKED');
47
- }
48
- request.user = await this.transformPayload(payload);
49
- return true;
50
- }
51
- async isTokenRevoked(_payload, _request) {
52
- return false;
53
- }
54
- async transformPayload(payload) {
55
- return payload;
56
- }
57
- extractToken(request) {
58
- const auth = request.headers.authorization;
59
- if (auth?.startsWith('Bearer '))
60
- return auth.slice(7);
61
- return request.cookies?.auth_token;
62
- }
63
- };
64
- exports.EntraAuthGuard = EntraAuthGuard;
65
- exports.EntraAuthGuard = EntraAuthGuard = __decorate([
66
- (0, common_1.Injectable)(),
67
- __metadata("design:paramtypes", [internal_token_service_1.InternalTokenService,
68
- core_1.Reflector])
69
- ], EntraAuthGuard);
70
- //# sourceMappingURL=entra-auth.guard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entra-auth.guard.js","sourceRoot":"","sources":["../../../../src/lib/entraID/guards/entra-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AAExB,qFAAgF;AAChF,wEAAoE;AAEpE,uCAAyC;AACzC,qEAA+D;AAGxD,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YACmB,oBAA0C,EAC1C,SAAoB;QADpB,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,8BAAqB,EAAE,CAAC;QAE9C,IAAI,OAAkB,CAAC;QACvB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oCAAgB,EAAE,CAAC;gBACtC,MAAM,IAAI,8BAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAE5B,QAAmB,EAGnB,QAAiB;QAEjB,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,OAAkB;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,YAAY,CAAC,OAGtB;QACC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;IACrC,CAAC;CACF,CAAA;AA9DY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAG8B,6CAAoB;QAC/B,gBAAS;GAH5B,cAAc,CA8D1B"}
@@ -1,7 +0,0 @@
1
- import { CanActivate, ExecutionContext } from '@nestjs/common';
2
- import { Reflector } from '@nestjs/core';
3
- export declare class RolesGuard implements CanActivate {
4
- private readonly reflector;
5
- constructor(reflector: Reflector);
6
- canActivate(context: ExecutionContext): boolean;
7
- }
@@ -1,41 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RolesGuard = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const core_1 = require("@nestjs/core");
15
- const roles_decorator_1 = require("../decorators/roles.decorator");
16
- let RolesGuard = class RolesGuard {
17
- constructor(reflector) {
18
- this.reflector = reflector;
19
- }
20
- canActivate(context) {
21
- const required = this.reflector.getAllAndOverride(roles_decorator_1.ROLES_KEY, [
22
- context.getHandler(),
23
- context.getClass(),
24
- ]);
25
- if (!required?.length)
26
- return true;
27
- const { user } = context.switchToHttp().getRequest();
28
- const userGroups = (user?.groups ?? []).map((g) => g.displayName);
29
- const allowed = required.some((role) => userGroups.includes(role));
30
- if (!allowed) {
31
- throw new common_1.ForbiddenException('INVALID_GROUP');
32
- }
33
- return true;
34
- }
35
- };
36
- exports.RolesGuard = RolesGuard;
37
- exports.RolesGuard = RolesGuard = __decorate([
38
- (0, common_1.Injectable)(),
39
- __metadata("design:paramtypes", [core_1.Reflector])
40
- ], RolesGuard);
41
- //# sourceMappingURL=roles.guard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../../../src/lib/entraID/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,uCAAyC;AACzC,mEAA0D;AAGnD,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,YAA6B,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAErD,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAW,2BAAS,EAAE;YACrE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACrD,MAAM,UAAU,GAAa,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CACnD,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAC9C,CAAC;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAvBY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;qCAE6B,gBAAS;GADtC,UAAU,CAuBtB"}
@@ -1,7 +0,0 @@
1
- import { AuthResult, CallbackParams, UrlRedirectSso } from '../types/entraID.type';
2
- export interface IEntraIDService {
3
- handleCallback(params: CallbackParams): Promise<AuthResult>;
4
- initiateLogin(): Promise<UrlRedirectSso>;
5
- refresh(refreshToken: string): Promise<AuthResult>;
6
- logout(userId: string): Promise<void>;
7
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=entraID-service.interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entraID-service.interface.js","sourceRoot":"","sources":["../../../../src/lib/entraID/interfaces/entraID-service.interface.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare class InternalTokenModule {
2
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.InternalTokenModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const internal_token_service_1 = require("./internal-token.service");
12
- let InternalTokenModule = class InternalTokenModule {
13
- };
14
- exports.InternalTokenModule = InternalTokenModule;
15
- exports.InternalTokenModule = InternalTokenModule = __decorate([
16
- (0, common_1.Module)({
17
- providers: [internal_token_service_1.InternalTokenService],
18
- exports: [internal_token_service_1.InternalTokenService],
19
- })
20
- ], InternalTokenModule);
21
- //# sourceMappingURL=internal-token.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"internal-token.module.js","sourceRoot":"","sources":["../../../../src/lib/entraID/internal-token/internal-token.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qEAAgE;AAMzD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAJ/B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,6CAAoB,CAAC;QACjC,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,mBAAmB,CAAG"}
@@ -1,10 +0,0 @@
1
- import { EntraIDSetup } from '../types/entraID-module-init.types';
2
- import { EntraUser, TokenEnrichmentContext } from '../types/entraID.type';
3
- export declare class InternalTokenService {
4
- private readonly config;
5
- constructor(config: EntraIDSetup);
6
- sign(context: TokenEnrichmentContext): Promise<string>;
7
- protected enrichTokenPayload(_context: TokenEnrichmentContext): Promise<Record<string, unknown>>;
8
- verify(token: string): EntraUser;
9
- private assertNoReservedClaimCollision;
10
- }
@@ -1,76 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.InternalTokenService = void 0;
19
- const common_1 = require("@nestjs/common");
20
- const crypto_1 = require("crypto");
21
- const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
22
- const entraID_constants_1 = require("../entraID.constants");
23
- const entraID_exception_1 = require("../customError/entraID.exception");
24
- let InternalTokenService = class InternalTokenService {
25
- constructor(config) {
26
- this.config = config;
27
- }
28
- async sign(context) {
29
- const customClaims = await this.enrichTokenPayload(context);
30
- this.assertNoReservedClaimCollision(customClaims);
31
- return jsonwebtoken_1.default.sign({ jti: (0, crypto_1.randomUUID)(), ...context.user, ...customClaims }, this.config.jwtSecret, {
32
- algorithm: 'HS256',
33
- expiresIn: (this.config.jwtExpiresIn ??
34
- '8h'),
35
- });
36
- }
37
- async enrichTokenPayload(_context) {
38
- return {};
39
- }
40
- verify(token) {
41
- try {
42
- return jsonwebtoken_1.default.verify(token, this.config.jwtSecret, {
43
- algorithms: ['HS256'],
44
- });
45
- }
46
- catch (err) {
47
- if (err instanceof jsonwebtoken_1.default.TokenExpiredError) {
48
- throw new entraID_exception_1.EntraIDException('TOKEN_EXPIRED');
49
- }
50
- throw new entraID_exception_1.EntraIDException('TOKEN_INVALID');
51
- }
52
- }
53
- assertNoReservedClaimCollision(customClaims) {
54
- const reserved = [
55
- 'sub',
56
- 'iss',
57
- 'aud',
58
- 'exp',
59
- 'iat',
60
- 'nbf',
61
- 'jti',
62
- 'groups',
63
- ];
64
- const collision = reserved.find((claim) => claim in customClaims);
65
- if (collision) {
66
- throw new entraID_exception_1.EntraIDException('RESERVED_CLAIM_OVERRIDE');
67
- }
68
- }
69
- };
70
- exports.InternalTokenService = InternalTokenService;
71
- exports.InternalTokenService = InternalTokenService = __decorate([
72
- (0, common_1.Injectable)(),
73
- __param(0, (0, common_1.Inject)(entraID_constants_1.ENTRA_ID_CONFIG)),
74
- __metadata("design:paramtypes", [Object])
75
- ], InternalTokenService);
76
- //# sourceMappingURL=internal-token.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"internal-token.service.js","sourceRoot":"","sources":["../../../../src/lib/entraID/internal-token/internal-token.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,mCAAoC;AACpC,gEAA+B;AAC/B,4DAAuD;AACvD,wEAAoE;AAK7D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAAsD,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAE9E,KAAK,CAAC,IAAI,CAAC,OAA+B;QACxC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;QAElD,OAAO,sBAAG,CAAC,IAAI,CACb,EAAE,GAAG,EAAE,IAAA,mBAAU,GAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,YAAY,EAAE,EACvD,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB;YACE,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;gBAClC,IAAI,CAAiC;SACxC,CACF,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,kBAAkB,CAChC,QAAgC;QAEhC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC;YACH,OAAO,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC9C,UAAU,EAAE,CAAC,OAAO,CAAC;aACtB,CAAyB,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,sBAAG,CAAC,iBAAiB,EAAE,CAAC;gBACzC,MAAM,IAAI,oCAAgB,CAAC,eAAe,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,IAAI,oCAAgB,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,8BAA8B,CACpC,YAAqC;QAErC,MAAM,QAAQ,GAAG;YACf,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;SACT,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;QAClE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,oCAAgB,CAAC,yBAAyB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF,CAAA;AAxDY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,mCAAe,CAAC,CAAA;;GADzB,oBAAoB,CAwDhC"}
@@ -1,2 +0,0 @@
1
- export declare class MicrosoftModule {
2
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.MicrosoftModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const microsoft_service_1 = require("./microsoft.service");
12
- let MicrosoftModule = class MicrosoftModule {
13
- };
14
- exports.MicrosoftModule = MicrosoftModule;
15
- exports.MicrosoftModule = MicrosoftModule = __decorate([
16
- (0, common_1.Module)({
17
- providers: [microsoft_service_1.MicrosoftService],
18
- exports: [microsoft_service_1.MicrosoftService],
19
- })
20
- ], MicrosoftModule);
21
- //# sourceMappingURL=microsoft.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"microsoft.module.js","sourceRoot":"","sources":["../../../../src/lib/entraID/microsoft/microsoft.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AAMhD,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAJ3B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,oCAAgB,CAAC;QAC7B,OAAO,EAAE,CAAC,oCAAgB,CAAC;KAC5B,CAAC;GACW,eAAe,CAAG"}
@@ -1,14 +0,0 @@
1
- import { AzureTokenResponse, GraphUser } from '../types/entraID.type';
2
- import { EntraIDSetup } from '../types/entraID-module-init.types';
3
- export declare class MicrosoftService {
4
- private readonly config;
5
- constructor(config: EntraIDSetup);
6
- exchangeCode(code: string): Promise<AzureTokenResponse>;
7
- refreshToken(refreshToken: string): Promise<AzureTokenResponse>;
8
- revokeUserSessions(userId: string): Promise<void>;
9
- private getClientCredentialsToken;
10
- getMe(accessToken: string): Promise<GraphUser>;
11
- getMemberOf(accessToken: string): Promise<{
12
- displayName: string;
13
- }[]>;
14
- }
@@ -1,132 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.MicrosoftService = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const entraID_exception_1 = require("../customError/entraID.exception");
18
- const entraID_constants_1 = require("../entraID.constants");
19
- const GRAPH_BASE = 'https://graph.microsoft.com/v1.0';
20
- const FETCH_TIMEOUT_MS = 15_000;
21
- let MicrosoftService = class MicrosoftService {
22
- constructor(config) {
23
- this.config = config;
24
- }
25
- async exchangeCode(code) {
26
- const body = new URLSearchParams({
27
- client_id: this.config.clientID,
28
- client_secret: this.config.clientSecret,
29
- code,
30
- redirect_uri: this.config.redirectUri,
31
- grant_type: 'authorization_code',
32
- scope: this.config.scope ??
33
- 'openid profile email User.Read GroupMember.Read.All',
34
- });
35
- const authorityUrl = this.config.authorityUrl ?? entraID_constants_1.MICROSOFT_AUTHORITY_URL;
36
- const response = await fetch(`${authorityUrl}/${this.config.tenantID}/oauth2/v2.0/token`, {
37
- method: 'POST',
38
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
39
- body: body.toString(),
40
- signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
41
- });
42
- if (!response.ok)
43
- throw new entraID_exception_1.EntraIDException('CODE_EXCHANGE_FAILED');
44
- const tokens = (await response.json());
45
- if (!tokens.access_token || !tokens.id_token) {
46
- throw new entraID_exception_1.EntraIDException('CODE_EXCHANGE_FAILED');
47
- }
48
- return tokens;
49
- }
50
- async refreshToken(refreshToken) {
51
- const body = new URLSearchParams({
52
- client_id: this.config.clientID,
53
- client_secret: this.config.clientSecret,
54
- refresh_token: refreshToken,
55
- grant_type: 'refresh_token',
56
- });
57
- const authorityUrl = this.config.authorityUrl ?? entraID_constants_1.MICROSOFT_AUTHORITY_URL;
58
- const response = await fetch(`${authorityUrl}/${this.config.tenantID}/oauth2/v2.0/token`, {
59
- method: 'POST',
60
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
61
- body: body.toString(),
62
- signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
63
- });
64
- if (!response.ok)
65
- throw new entraID_exception_1.EntraIDException('REFRESH_TOKEN_FAILED');
66
- const tokens = (await response.json());
67
- if (!tokens.access_token)
68
- throw new entraID_exception_1.EntraIDException('REFRESH_TOKEN_FAILED');
69
- return tokens;
70
- }
71
- async revokeUserSessions(userId) {
72
- const adminToken = await this.getClientCredentialsToken();
73
- const response = await fetch(`${GRAPH_BASE}/users/${userId}/revokeSignInSessions`, {
74
- method: 'POST',
75
- headers: { Authorization: `Bearer ${adminToken}` },
76
- signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
77
- });
78
- if (!response.ok)
79
- throw new entraID_exception_1.EntraIDException('REVOKE_SESSIONS_FAILED');
80
- }
81
- async getClientCredentialsToken() {
82
- const authorityUrl = this.config.authorityUrl ?? entraID_constants_1.MICROSOFT_AUTHORITY_URL;
83
- const body = new URLSearchParams({
84
- client_id: this.config.clientID,
85
- client_secret: this.config.clientSecret,
86
- scope: 'https://graph.microsoft.com/.default',
87
- grant_type: 'client_credentials',
88
- });
89
- const response = await fetch(`${authorityUrl}/${this.config.tenantID}/oauth2/v2.0/token`, {
90
- method: 'POST',
91
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
92
- body: body.toString(),
93
- signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
94
- });
95
- if (!response.ok)
96
- throw new entraID_exception_1.EntraIDException('REVOKE_SESSIONS_FAILED');
97
- const data = (await response.json());
98
- return data.access_token;
99
- }
100
- async getMe(accessToken) {
101
- const response = await fetch(`${GRAPH_BASE}/me?$select=id,displayName,mail,userPrincipalName,employeeId`, {
102
- headers: { Authorization: `Bearer ${accessToken}` },
103
- signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
104
- });
105
- if (!response.ok)
106
- throw new entraID_exception_1.EntraIDException('GRAPH_FETCH_FAILED');
107
- return (await response.json());
108
- }
109
- async getMemberOf(accessToken) {
110
- const allGroups = [];
111
- let url = `${GRAPH_BASE}/me/memberOf?$select=displayName&$top=100`;
112
- while (url) {
113
- const response = await fetch(url, {
114
- headers: { Authorization: `Bearer ${accessToken}` },
115
- signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
116
- });
117
- if (!response.ok)
118
- throw new entraID_exception_1.EntraIDException('GRAPH_FETCH_FAILED');
119
- const data = (await response.json());
120
- allGroups.push(...data.value);
121
- url = data['@odata.nextLink'] ?? null;
122
- }
123
- return allGroups;
124
- }
125
- };
126
- exports.MicrosoftService = MicrosoftService;
127
- exports.MicrosoftService = MicrosoftService = __decorate([
128
- (0, common_1.Injectable)(),
129
- __param(0, (0, common_1.Inject)(entraID_constants_1.ENTRA_ID_CONFIG)),
130
- __metadata("design:paramtypes", [Object])
131
- ], MicrosoftService);
132
- //# sourceMappingURL=microsoft.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"microsoft.service.js","sourceRoot":"","sources":["../../../../src/lib/entraID/microsoft/microsoft.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare class SecurityModule {
2
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SecurityModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const security_service_1 = require("./security.service");
12
- let SecurityModule = class SecurityModule {
13
- };
14
- exports.SecurityModule = SecurityModule;
15
- exports.SecurityModule = SecurityModule = __decorate([
16
- (0, common_1.Module)({
17
- providers: [security_service_1.SecurityService],
18
- exports: [security_service_1.SecurityService],
19
- })
20
- ], SecurityModule);
21
- //# sourceMappingURL=security.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.module.js","sourceRoot":"","sources":["../../../../src/lib/entraID/security/security.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yDAAqD;AAM9C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAJ1B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,kCAAe,CAAC;QAC5B,OAAO,EAAE,CAAC,kCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"}
@@ -1,9 +0,0 @@
1
- export declare class SecurityService {
2
- validateInput(value: string, field?: string): string;
3
- validateRedirectUri(uri: string, allowedUri: string): void;
4
- validateCallbackParams(params: {
5
- code?: string;
6
- state?: string;
7
- error?: string;
8
- }): void;
9
- }
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SecurityService = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const entraID_exception_1 = require("../customError/entraID.exception");
12
- const PATH_TRAVERSAL_PATTERNS = [
13
- /\.\.[/\\]/,
14
- /\.\.[/\\].*\.\.[/\\]/,
15
- /%2e%2e[/\\]/i,
16
- /%2e%2e%2f/i,
17
- /%2e%2e%5c/i,
18
- ];
19
- const NULL_BYTE_PATTERN = /\0|%00/;
20
- const DANGEROUS_CHARS = /<|>|"|'|`|\$\{|javascript:/i;
21
- let SecurityService = class SecurityService {
22
- validateInput(value, field = 'input') {
23
- if (NULL_BYTE_PATTERN.test(value)) {
24
- throw new entraID_exception_1.EntraIDException('SECURITY_NULL_BYTE');
25
- }
26
- if (PATH_TRAVERSAL_PATTERNS.some((p) => p.test(value))) {
27
- throw new entraID_exception_1.EntraIDException('SECURITY_PATH_TRAVERSAL');
28
- }
29
- if (DANGEROUS_CHARS.test(value)) {
30
- throw new entraID_exception_1.EntraIDException('SECURITY_INVALID_CHARS');
31
- }
32
- void field;
33
- return value.trim();
34
- }
35
- validateRedirectUri(uri, allowedUri) {
36
- try {
37
- const parsed = new URL(uri);
38
- const allowed = new URL(allowedUri);
39
- if (parsed.hostname !== allowed.hostname ||
40
- parsed.protocol !== allowed.protocol) {
41
- throw new entraID_exception_1.EntraIDException('SECURITY_OPEN_REDIRECT');
42
- }
43
- }
44
- catch (err) {
45
- if (err instanceof entraID_exception_1.EntraIDException)
46
- throw err;
47
- throw new entraID_exception_1.EntraIDException('SECURITY_INVALID_URL');
48
- }
49
- }
50
- validateCallbackParams(params) {
51
- if (params.error) {
52
- throw new entraID_exception_1.EntraIDException('OAUTH_PROVIDER_ERROR');
53
- }
54
- if (!params.code || !params.state) {
55
- throw new entraID_exception_1.EntraIDException('OAUTH_MISSING_PARAMS');
56
- }
57
- this.validateInput(params.code, 'code');
58
- this.validateInput(params.state, 'state');
59
- }
60
- };
61
- exports.SecurityService = SecurityService;
62
- exports.SecurityService = SecurityService = __decorate([
63
- (0, common_1.Injectable)()
64
- ], SecurityService);
65
- //# sourceMappingURL=security.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.service.js","sourceRoot":"","sources":["../../../../src/lib/entraID/security/security.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,wEAAoE;AAEpE,MAAM,uBAAuB,GAAG;IAC9B,WAAW;IACX,sBAAsB;IACtB,cAAc;IACd,YAAY;IACZ,YAAY;CACb,CAAC;AAEF,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAG/C,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,aAAa,CAAC,KAAa,EAAE,KAAK,GAAG,OAAO;QAC1C,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,oCAAgB,CAAC,oBAAoB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,oCAAgB,CAAC,yBAAyB,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,oCAAgB,CAAC,wBAAwB,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,KAAK,CAAC;QACX,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,mBAAmB,CAAC,GAAW,EAAE,UAAkB;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YAEpC,IACE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;gBACpC,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACpC,CAAC;gBACD,MAAM,IAAI,oCAAgB,CAAC,wBAAwB,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,oCAAgB;gBAAE,MAAM,GAAG,CAAC;YAC/C,MAAM,IAAI,oCAAgB,CAAC,sBAAsB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,sBAAsB,CAAC,MAItB;QACC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,oCAAgB,CAAC,sBAAsB,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,oCAAgB,CAAC,sBAAsB,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AAnDY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;GACA,eAAe,CAmD3B"}
@@ -1,18 +0,0 @@
1
- import { InjectionToken, ModuleMetadata, OptionalFactoryDependency } from '@nestjs/common';
2
- export type EntraIDSetup = {
3
- tenantID: string;
4
- clientID: string;
5
- clientSecret: string;
6
- stateSecret: string;
7
- scope?: string;
8
- prompt?: string;
9
- authorityUrl?: string;
10
- redirectUri: string;
11
- jwtSecret: string;
12
- jwtExpiresIn?: string | number;
13
- };
14
- export type EntraIDAsyncOptions = {
15
- imports?: ModuleMetadata['imports'];
16
- inject?: Array<InjectionToken | OptionalFactoryDependency>;
17
- useFactory: (...args: any[]) => EntraIDSetup | Promise<EntraIDSetup>;
18
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=entraID-module-init.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entraID-module-init.types.js","sourceRoot":"","sources":["../../../../src/lib/entraID/types/entraID-module-init.types.ts"],"names":[],"mappings":""}