@lyrolab/nest-shared 1.7.1 → 1.9.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/README.md +4 -2
  3. package/dist/ai/ai.constants.d.ts +1 -0
  4. package/dist/ai/ai.constants.js +5 -0
  5. package/dist/ai/ai.constants.js.map +1 -0
  6. package/dist/ai/index.d.ts +2 -0
  7. package/dist/ai/index.js +2 -0
  8. package/dist/ai/index.js.map +1 -1
  9. package/dist/ai/interfaces/ai-module-options.interface.d.ts +15 -0
  10. package/dist/ai/interfaces/ai-module-options.interface.js +3 -0
  11. package/dist/ai/interfaces/ai-module-options.interface.js.map +1 -0
  12. package/dist/ai/services/ai.service.d.ts +3 -1
  13. package/dist/ai/services/ai.service.js +12 -4
  14. package/dist/ai/services/ai.service.js.map +1 -1
  15. package/dist/ai/shared-ai.module.d.ts +6 -0
  16. package/dist/ai/shared-ai.module.js +58 -6
  17. package/dist/ai/shared-ai.module.js.map +1 -1
  18. package/dist/auth/auth.constants.d.ts +1 -0
  19. package/dist/auth/auth.constants.js +5 -0
  20. package/dist/auth/auth.constants.js.map +1 -0
  21. package/dist/auth/decorators/current-user.decorator.d.ts +1 -0
  22. package/dist/auth/decorators/current-user.decorator.js +11 -0
  23. package/dist/auth/decorators/current-user.decorator.js.map +1 -0
  24. package/dist/auth/decorators/public.decorator.d.ts +2 -0
  25. package/dist/auth/decorators/public.decorator.js +8 -0
  26. package/dist/auth/decorators/public.decorator.js.map +1 -0
  27. package/dist/auth/guards/jwt-auth.guard.d.ts +9 -0
  28. package/dist/auth/guards/jwt-auth.guard.js +41 -0
  29. package/dist/auth/guards/jwt-auth.guard.js.map +1 -0
  30. package/dist/auth/helpers/keycloak.helper.d.ts +4 -0
  31. package/dist/auth/helpers/keycloak.helper.js +10 -0
  32. package/dist/auth/helpers/keycloak.helper.js.map +1 -0
  33. package/dist/auth/index.d.ts +8 -0
  34. package/dist/auth/index.js +25 -0
  35. package/dist/auth/index.js.map +1 -0
  36. package/dist/auth/interfaces/auth-module-options.interface.d.ts +14 -0
  37. package/dist/auth/interfaces/auth-module-options.interface.js +3 -0
  38. package/dist/auth/interfaces/auth-module-options.interface.js.map +1 -0
  39. package/dist/auth/models/jwt-payload.d.ts +15 -0
  40. package/dist/auth/models/jwt-payload.js +3 -0
  41. package/dist/auth/models/jwt-payload.js.map +1 -0
  42. package/dist/auth/shared-auth.module.d.ts +8 -0
  43. package/dist/auth/shared-auth.module.js +82 -0
  44. package/dist/auth/shared-auth.module.js.map +1 -0
  45. package/dist/auth/strategies/jwt.strategy.d.ts +11 -0
  46. package/dist/auth/strategies/jwt.strategy.js +49 -0
  47. package/dist/auth/strategies/jwt.strategy.js.map +1 -0
  48. package/dist/tsconfig.build.tsbuildinfo +1 -0
  49. package/package.json +19 -10
  50. package/tsconfig.build.json +4 -0
  51. package/dist/tsconfig.tsbuildinfo +0 -1
package/CHANGELOG.md CHANGED
@@ -1,9 +1,9 @@
1
- ## [1.7.1](https://github.com/lyrolab/nest-shared/compare/v1.7.0...v1.7.1) (2026-02-15)
1
+ # [1.9.0](https://github.com/lyrolab/nest-shared/compare/v1.8.0...v1.9.0) (2026-03-06)
2
2
 
3
3
 
4
- ### Bug Fixes
4
+ ### Features
5
5
 
6
- * add repository url for npm provenance validation ([804c2ef](https://github.com/lyrolab/nest-shared/commit/804c2ef362121dc98180c86e95db06d8af35cf8e))
6
+ * implement SharedAiModule with configuration options ([8d400a7](https://github.com/lyrolab/nest-shared/commit/8d400a7a145cc395fe807c7c89fa329ed91c392d))
7
7
 
8
8
  ## [1.0.1](https://github.com/lyrolab/nest-shared/compare/v1.0.0...v1.0.1) (2025-04-10)
9
9
 
package/README.md CHANGED
@@ -27,14 +27,16 @@ npm install @lyrolab/nest-shared
27
27
 
28
28
  ```typescript
29
29
  import { SharedDatabaseModule } from "@lyrolab/nest-shared/database"
30
- import { AiModule } from "@lyrolab/nest-shared/ai"
30
+ import { SharedAiModule } from "@lyrolab/nest-shared/ai"
31
31
  import { SharedQueueModule } from "@lyrolab/nest-shared/queue"
32
32
  import { SharedCacheModule } from "@lyrolab/nest-shared/cache"
33
33
 
34
34
  @Module({
35
35
  imports: [
36
36
  SharedDatabaseModule.forRoot(),
37
- AiModule,
37
+ SharedAiModule.forRoot({
38
+ apiKey: "your-openrouter-api-key",
39
+ }),
38
40
  SharedQueueModule,
39
41
  SharedCacheModule.forRoot(),
40
42
  ],
@@ -0,0 +1 @@
1
+ export declare const AI_MODULE_OPTIONS = "AI_MODULE_OPTIONS";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AI_MODULE_OPTIONS = void 0;
4
+ exports.AI_MODULE_OPTIONS = "AI_MODULE_OPTIONS";
5
+ //# sourceMappingURL=ai.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.constants.js","sourceRoot":"","sources":["../../src/ai/ai.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,mBAAmB,CAAA"}
@@ -1,2 +1,4 @@
1
1
  export * from "./shared-ai.module";
2
+ export * from "./ai.constants";
3
+ export * from "./interfaces/ai-module-options.interface";
2
4
  export * from "./services/ai.service";
package/dist/ai/index.js CHANGED
@@ -15,5 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./shared-ai.module"), exports);
18
+ __exportStar(require("./ai.constants"), exports);
19
+ __exportStar(require("./interfaces/ai-module-options.interface"), exports);
18
20
  __exportStar(require("./services/ai.service"), exports);
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,wDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,iDAA8B;AAC9B,2EAAwD;AACxD,wDAAqC"}
@@ -0,0 +1,15 @@
1
+ import { ModuleMetadata, Type } from "@nestjs/common";
2
+ export interface AiModuleOptions {
3
+ apiKey: string;
4
+ defaultModel?: string;
5
+ cacheTtlMs?: number;
6
+ }
7
+ export interface AiModuleAsyncOptions extends Pick<ModuleMetadata, "imports"> {
8
+ useFactory?: (...args: any[]) => Promise<AiModuleOptions> | AiModuleOptions;
9
+ inject?: any[];
10
+ useClass?: Type<AiOptionsFactory>;
11
+ useExisting?: Type<AiOptionsFactory>;
12
+ }
13
+ export interface AiOptionsFactory {
14
+ createAiOptions(): Promise<AiModuleOptions> | AiModuleOptions;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ai-module-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-module-options.interface.js","sourceRoot":"","sources":["../../../src/ai/interfaces/ai-module-options.interface.ts"],"names":[],"mappings":""}
@@ -1,13 +1,15 @@
1
1
  import { LanguageModelV3 } from "@ai-sdk/provider";
2
2
  import { Cache } from "cache-manager";
3
+ import { AiModuleOptions } from "../interfaces/ai-module-options.interface";
3
4
  export type BuildModelOptions = {
4
5
  model?: string;
5
6
  };
6
7
  export declare class AiService {
7
8
  private cache;
9
+ private options;
8
10
  private readonly openrouter;
9
11
  private readonly openrouterChat;
10
- constructor(cache: Cache);
12
+ constructor(cache: Cache, options: AiModuleOptions);
11
13
  get model(): LanguageModelV3;
12
14
  buildModel({ model }?: BuildModelOptions): LanguageModelV3;
13
15
  wrapModel(model: LanguageModelV3): LanguageModelV3;
@@ -17,15 +17,18 @@ const cache_manager_1 = require("@nestjs/cache-manager");
17
17
  const common_1 = require("@nestjs/common");
18
18
  const ai_sdk_provider_1 = require("@openrouter/ai-sdk-provider");
19
19
  const ai_1 = require("ai");
20
+ const ai_constants_1 = require("../ai.constants");
20
21
  const DEFAULT_MODEL = "google/gemini-2.0-flash-001";
21
22
  let AiService = class AiService {
22
23
  cache;
24
+ options;
23
25
  openrouter;
24
26
  openrouterChat;
25
- constructor(cache) {
27
+ constructor(cache, options) {
26
28
  this.cache = cache;
29
+ this.options = options;
27
30
  this.openrouter = (0, ai_sdk_provider_1.createOpenRouter)({
28
- apiKey: process.env.OPENROUTER_API_KEY,
31
+ apiKey: this.options.apiKey,
29
32
  });
30
33
  this.openrouterChat = this.buildModel();
31
34
  }
@@ -33,7 +36,7 @@ let AiService = class AiService {
33
36
  return this.openrouterChat;
34
37
  }
35
38
  buildModel({ model } = {}) {
36
- return this.wrapModel(this.openrouter.chat(model ?? DEFAULT_MODEL));
39
+ return this.wrapModel(this.openrouter.chat(model ?? this.options.defaultModel ?? DEFAULT_MODEL));
37
40
  }
38
41
  wrapModel(model) {
39
42
  return (0, ai_1.wrapLanguageModel)({
@@ -53,6 +56,10 @@ let AiService = class AiService {
53
56
  return cachedResult;
54
57
  }
55
58
  const result = await doGenerate();
59
+ if (this.options.cacheTtlMs !== undefined) {
60
+ await this.cache.set(cacheKey, result, this.options.cacheTtlMs);
61
+ return result;
62
+ }
56
63
  await this.cache.set(cacheKey, result);
57
64
  return result;
58
65
  }
@@ -61,6 +68,7 @@ exports.AiService = AiService;
61
68
  exports.AiService = AiService = __decorate([
62
69
  (0, common_1.Injectable)(),
63
70
  __param(0, (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER)),
64
- __metadata("design:paramtypes", [Object])
71
+ __param(1, (0, common_1.Inject)(ai_constants_1.AI_MODULE_OPTIONS)),
72
+ __metadata("design:paramtypes", [Object, Object])
65
73
  ], AiService);
66
74
  //# sourceMappingURL=ai.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../../src/ai/services/ai.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,yDAAqD;AACrD,2CAAmD;AACnD,iEAGoC;AACpC,2BAAsC;AAGtC,MAAM,aAAa,GAAG,6BAA6B,CAAA;AAO5C,IAAM,SAAS,GAAf,MAAM,SAAS;IAIuB;IAH1B,UAAU,CAAoB;IAC9B,cAAc,CAAiB;IAEhD,YAA2C,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QACrD,IAAI,CAAC,UAAU,GAAG,IAAA,kCAAgB,EAAC;YACjC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;SACvC,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,UAAU,CAAC,EAAE,KAAK,KAAwB,EAAE;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,SAAS,CAAC,KAAsB;QAC9B,OAAO,IAAA,sBAAiB,EAAC;YACvB,KAAK;YACL,UAAU,EAAE;gBACV;oBACE,oBAAoB,EAAE,IAAI;oBAC1B,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;iBACtD;aACF;SACF,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,EACzB,UAAU,EACV,MAAM,GAGJ;QACF,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAE/C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAkE,CAAA;QAC3E,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;QAEjC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACtC,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAjDY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAKE,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GAJvB,SAAS,CAiDrB"}
1
+ {"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../../../src/ai/services/ai.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,yDAAqD;AACrD,2CAAmD;AACnD,iEAGoC;AACpC,2BAAsC;AAEtC,kDAAmD;AAGnD,MAAM,aAAa,GAAG,6BAA6B,CAAA;AAO5C,IAAM,SAAS,GAAf,MAAM,SAAS;IAKa;IACI;IALpB,UAAU,CAAoB;IAC9B,cAAc,CAAiB;IAEhD,YACiC,KAAY,EACR,OAAwB;QAD5B,UAAK,GAAL,KAAK,CAAO;QACR,YAAO,GAAP,OAAO,CAAiB;QAE3D,IAAI,CAAC,UAAU,GAAG,IAAA,kCAAgB,EAAC;YACjC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;SAC5B,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,UAAU,CAAC,EAAE,KAAK,KAAwB,EAAE;QAC1C,OAAO,IAAI,CAAC,SAAS,CACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,CAC1E,CAAA;IACH,CAAC;IAED,SAAS,CAAC,KAAsB;QAC9B,OAAO,IAAA,sBAAiB,EAAC;YACvB,KAAK;YACL,UAAU,EAAE;gBACV;oBACE,oBAAoB,EAAE,IAAI;oBAC1B,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;iBACtD;aACF;SACF,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,EACzB,UAAU,EACV,MAAM,GAGJ;QACF,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAE/C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAkE,CAAA;QAC3E,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;QAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAC/D,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACtC,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AA3DY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;IACrB,WAAA,IAAA,eAAM,EAAC,gCAAiB,CAAC,CAAA;;GANjB,SAAS,CA2DrB"}
@@ -1,2 +1,8 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ import { AiModuleAsyncOptions, AiModuleOptions } from "./interfaces/ai-module-options.interface";
1
3
  export declare class SharedAiModule {
4
+ static forRoot(options: AiModuleOptions): DynamicModule;
5
+ static forRootAsync(options: AiModuleAsyncOptions): DynamicModule;
6
+ private static createAsyncProviders;
7
+ private static createAsyncOptionsProvider;
2
8
  }
@@ -5,17 +5,69 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var SharedAiModule_1;
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
10
  exports.SharedAiModule = void 0;
10
11
  const common_1 = require("@nestjs/common");
12
+ const cache_1 = require("../cache");
13
+ const ai_constants_1 = require("./ai.constants");
11
14
  const ai_service_1 = require("./services/ai.service");
12
- let SharedAiModule = class SharedAiModule {
15
+ let SharedAiModule = SharedAiModule_1 = class SharedAiModule {
16
+ static forRoot(options) {
17
+ return {
18
+ module: SharedAiModule_1,
19
+ global: false,
20
+ imports: [cache_1.SharedCacheModule.forRoot()],
21
+ providers: [
22
+ {
23
+ provide: ai_constants_1.AI_MODULE_OPTIONS,
24
+ useValue: options,
25
+ },
26
+ ai_service_1.AiService,
27
+ ],
28
+ exports: [ai_service_1.AiService],
29
+ };
30
+ }
31
+ static forRootAsync(options) {
32
+ return {
33
+ module: SharedAiModule_1,
34
+ global: false,
35
+ imports: [cache_1.SharedCacheModule.forRoot(), ...(options.imports || [])],
36
+ providers: [...this.createAsyncProviders(options), ai_service_1.AiService],
37
+ exports: [ai_service_1.AiService],
38
+ };
39
+ }
40
+ static createAsyncProviders(options) {
41
+ if (options.useExisting || options.useFactory) {
42
+ return [this.createAsyncOptionsProvider(options)];
43
+ }
44
+ return [
45
+ this.createAsyncOptionsProvider(options),
46
+ {
47
+ provide: options.useClass,
48
+ useClass: options.useClass,
49
+ },
50
+ ];
51
+ }
52
+ static createAsyncOptionsProvider(options) {
53
+ if (options.useFactory) {
54
+ return {
55
+ provide: ai_constants_1.AI_MODULE_OPTIONS,
56
+ useFactory: options.useFactory,
57
+ inject: options.inject || [],
58
+ };
59
+ }
60
+ return {
61
+ provide: ai_constants_1.AI_MODULE_OPTIONS,
62
+ useFactory: async (optionsFactory) => {
63
+ return optionsFactory.createAiOptions();
64
+ },
65
+ inject: [options.useExisting || options.useClass],
66
+ };
67
+ }
13
68
  };
14
69
  exports.SharedAiModule = SharedAiModule;
15
- exports.SharedAiModule = SharedAiModule = __decorate([
16
- (0, common_1.Module)({
17
- providers: [ai_service_1.AiService],
18
- exports: [ai_service_1.AiService],
19
- })
70
+ exports.SharedAiModule = SharedAiModule = SharedAiModule_1 = __decorate([
71
+ (0, common_1.Module)({})
20
72
  ], SharedAiModule);
21
73
  //# sourceMappingURL=shared-ai.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-ai.module.js","sourceRoot":"","sources":["../../src/ai/shared-ai.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuC;AACvC,sDAAiD;AAM1C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAJ1B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sBAAS,CAAC;QACtB,OAAO,EAAE,CAAC,sBAAS,CAAC;KACrB,CAAC;GACW,cAAc,CAAG"}
1
+ {"version":3,"file":"shared-ai.module.js","sourceRoot":"","sources":["../../src/ai/shared-ai.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAgE;AAChE,oCAA4C;AAC5C,iDAAkD;AAMlD,sDAAiD;AAG1C,IAAM,cAAc,sBAApB,MAAM,cAAc;IACzB,MAAM,CAAC,OAAO,CAAC,OAAwB;QACrC,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,CAAC,yBAAiB,CAAC,OAAO,EAAE,CAAC;YACtC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,gCAAiB;oBAC1B,QAAQ,EAAE,OAAO;iBAClB;gBACD,sBAAS;aACV;YACD,OAAO,EAAE,CAAC,sBAAS,CAAC;SACrB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAA6B;QAC/C,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,CAAC,yBAAiB,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAClE,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,sBAAS,CAAC;YAC7D,OAAO,EAAE,CAAC,sBAAS,CAAC;SACrB,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAA6B;QAE7B,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAA;QACnD,CAAC;QAED,OAAO;YACL,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;YACxC;gBACE,OAAO,EAAE,OAAO,CAAC,QAAS;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAS;aAC5B;SACF,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,OAA6B;QAE7B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,gCAAiB;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B,CAAA;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,gCAAiB;YAC1B,UAAU,EAAE,KAAK,EAAE,cAAgC,EAAE,EAAE;gBACrD,OAAO,cAAc,CAAC,eAAe,EAAE,CAAA;YACzC,CAAC;YACD,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAS,CAAC;SACnD,CAAA;IACH,CAAC;CACF,CAAA;AA9DY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,cAAc,CA8D1B"}
@@ -0,0 +1 @@
1
+ export declare const AUTH_MODULE_OPTIONS = "AUTH_MODULE_OPTIONS";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AUTH_MODULE_OPTIONS = void 0;
4
+ exports.AUTH_MODULE_OPTIONS = "AUTH_MODULE_OPTIONS";
5
+ //# sourceMappingURL=auth.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.constants.js","sourceRoot":"","sources":["../../src/auth/auth.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,qBAAqB,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const CurrentUser: (...dataOrPipes: unknown[]) => ParameterDecorator;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrentUser = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.CurrentUser = (0, common_1.createParamDecorator)((data, ctx) => {
6
+ const request = ctx
7
+ .switchToHttp()
8
+ .getRequest();
9
+ return request.user;
10
+ });
11
+ //# sourceMappingURL=current-user.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"current-user.decorator.js","sourceRoot":"","sources":["../../../src/auth/decorators/current-user.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAuE;AAI1D,QAAA,WAAW,GAAG,IAAA,6BAAoB,EAC7C,CAAC,IAAa,EAAE,GAAqB,EAAY,EAAE;IACjD,MAAM,OAAO,GAAG,GAAG;SAChB,YAAY,EAAE;SACd,UAAU,EAAgC,CAAA;IAC7C,OAAO,OAAO,CAAC,IAAI,CAAA;AACrB,CAAC,CACF,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const IS_PUBLIC_KEY = "isPublic";
2
+ export declare const Public: () => import("@nestjs/common").CustomDecorator<string>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Public = exports.IS_PUBLIC_KEY = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.IS_PUBLIC_KEY = "isPublic";
6
+ const Public = () => (0, common_1.SetMetadata)(exports.IS_PUBLIC_KEY, true);
7
+ exports.Public = Public;
8
+ //# sourceMappingURL=public.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.decorator.js","sourceRoot":"","sources":["../../../src/auth/decorators/public.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE/B,QAAA,aAAa,GAAG,UAAU,CAAA;AAChC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,qBAAa,EAAE,IAAI,CAAC,CAAA;AAA/C,QAAA,MAAM,UAAyC"}
@@ -0,0 +1,9 @@
1
+ import { ExecutionContext } from "@nestjs/common";
2
+ import { Reflector } from "@nestjs/core";
3
+ declare const JwtAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
4
+ export declare class JwtAuthGuard extends JwtAuthGuard_base {
5
+ private reflector;
6
+ constructor(reflector: Reflector);
7
+ canActivate(context: ExecutionContext): boolean | Promise<boolean> | import("rxjs").Observable<boolean>;
8
+ }
9
+ export {};
@@ -0,0 +1,41 @@
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.JwtAuthGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const passport_1 = require("@nestjs/passport");
16
+ const public_decorator_1 = require("../decorators/public.decorator");
17
+ let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)("jwt") {
18
+ reflector;
19
+ constructor(reflector) {
20
+ super();
21
+ this.reflector = reflector;
22
+ }
23
+ 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
+ if (request.path === "/health" || request.path.startsWith("/api"))
32
+ return true;
33
+ return super.canActivate(context);
34
+ }
35
+ };
36
+ exports.JwtAuthGuard = JwtAuthGuard;
37
+ exports.JwtAuthGuard = JwtAuthGuard = __decorate([
38
+ (0, common_1.Injectable)(),
39
+ __metadata("design:paramtypes", [core_1.Reflector])
40
+ ], JwtAuthGuard);
41
+ //# sourceMappingURL=jwt-auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/auth/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA6D;AAC7D,uCAAwC;AACxC,+CAA4C;AAE5C,qEAA8D;AAGvD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAC5B;IAApB,YAAoB,SAAoB;QACtC,KAAK,EAAE,CAAA;QADW,cAAS,GAAT,SAAS,CAAW;IAExC,CAAC;IAED,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAA;QACF,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAA;QAGzB,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAA;QAC5D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAC/D,OAAO,IAAI,CAAA;QAEb,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;CACF,CAAA;AAnBY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GAD7B,YAAY,CAmBxB"}
@@ -0,0 +1,4 @@
1
+ export declare function keycloakConfig(url: string, realm: string): {
2
+ jwksUri: string;
3
+ issuer: string;
4
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keycloakConfig = keycloakConfig;
4
+ function keycloakConfig(url, realm) {
5
+ return {
6
+ jwksUri: `${url}/realms/${realm}/protocol/openid-connect/certs`,
7
+ issuer: `${url}/realms/${realm}`,
8
+ };
9
+ }
10
+ //# sourceMappingURL=keycloak.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keycloak.helper.js","sourceRoot":"","sources":["../../../src/auth/helpers/keycloak.helper.ts"],"names":[],"mappings":";;AAAA,wCAQC;AARD,SAAgB,cAAc,CAC5B,GAAW,EACX,KAAa;IAEb,OAAO;QACL,OAAO,EAAE,GAAG,GAAG,WAAW,KAAK,gCAAgC;QAC/D,MAAM,EAAE,GAAG,GAAG,WAAW,KAAK,EAAE;KACjC,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from "./shared-auth.module";
2
+ export * from "./auth.constants";
3
+ export * from "./interfaces/auth-module-options.interface";
4
+ export * from "./models/jwt-payload";
5
+ export * from "./decorators/current-user.decorator";
6
+ export * from "./decorators/public.decorator";
7
+ export * from "./guards/jwt-auth.guard";
8
+ export * from "./helpers/keycloak.helper";
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./shared-auth.module"), exports);
18
+ __exportStar(require("./auth.constants"), exports);
19
+ __exportStar(require("./interfaces/auth-module-options.interface"), exports);
20
+ __exportStar(require("./models/jwt-payload"), exports);
21
+ __exportStar(require("./decorators/current-user.decorator"), exports);
22
+ __exportStar(require("./decorators/public.decorator"), exports);
23
+ __exportStar(require("./guards/jwt-auth.guard"), exports);
24
+ __exportStar(require("./helpers/keycloak.helper"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,mDAAgC;AAChC,6EAA0D;AAC1D,uDAAoC;AACpC,sEAAmD;AACnD,gEAA6C;AAC7C,0DAAuC;AACvC,4DAAyC"}
@@ -0,0 +1,14 @@
1
+ import { ModuleMetadata, Type } from "@nestjs/common";
2
+ export interface AuthModuleOptions {
3
+ jwksUri: string;
4
+ issuer: string;
5
+ }
6
+ export interface AuthModuleAsyncOptions extends Pick<ModuleMetadata, "imports"> {
7
+ useFactory?: (...args: any[]) => Promise<AuthModuleOptions> | AuthModuleOptions;
8
+ inject?: any[];
9
+ useClass?: Type<AuthOptionsFactory>;
10
+ useExisting?: Type<AuthOptionsFactory>;
11
+ }
12
+ export interface AuthOptionsFactory {
13
+ createAuthOptions(): Promise<AuthModuleOptions> | AuthModuleOptions;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth-module-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-module-options.interface.js","sourceRoot":"","sources":["../../../src/auth/interfaces/auth-module-options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export interface JwtPayload {
2
+ sub: string;
3
+ email?: string;
4
+ preferred_username?: string;
5
+ given_name?: string;
6
+ family_name?: string;
7
+ realm_access?: {
8
+ roles: string[];
9
+ };
10
+ }
11
+ export interface AuthUser {
12
+ id: string;
13
+ email?: string;
14
+ name?: string;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=jwt-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-payload.js","sourceRoot":"","sources":["../../../src/auth/models/jwt-payload.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ import { AuthModuleAsyncOptions, AuthModuleOptions } from "./interfaces/auth-module-options.interface";
3
+ export declare class SharedAuthModule {
4
+ static forRoot(options: AuthModuleOptions): DynamicModule;
5
+ static forRootAsync(options: AuthModuleAsyncOptions): DynamicModule;
6
+ private static createAsyncProviders;
7
+ private static createAsyncOptionsProvider;
8
+ }
@@ -0,0 +1,82 @@
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 SharedAuthModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SharedAuthModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const passport_1 = require("@nestjs/passport");
13
+ const auth_constants_1 = require("./auth.constants");
14
+ const jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
15
+ const jwt_strategy_1 = require("./strategies/jwt.strategy");
16
+ let SharedAuthModule = SharedAuthModule_1 = class SharedAuthModule {
17
+ static forRoot(options) {
18
+ return {
19
+ module: SharedAuthModule_1,
20
+ global: true,
21
+ imports: [passport_1.PassportModule.register({ defaultStrategy: "jwt" })],
22
+ providers: [
23
+ {
24
+ provide: auth_constants_1.AUTH_MODULE_OPTIONS,
25
+ useValue: options,
26
+ },
27
+ jwt_strategy_1.JwtStrategy,
28
+ jwt_auth_guard_1.JwtAuthGuard,
29
+ ],
30
+ exports: [auth_constants_1.AUTH_MODULE_OPTIONS, jwt_auth_guard_1.JwtAuthGuard],
31
+ };
32
+ }
33
+ static forRootAsync(options) {
34
+ return {
35
+ module: SharedAuthModule_1,
36
+ global: true,
37
+ imports: [
38
+ passport_1.PassportModule.register({ defaultStrategy: "jwt" }),
39
+ ...(options.imports || []),
40
+ ],
41
+ providers: [
42
+ ...this.createAsyncProviders(options),
43
+ jwt_strategy_1.JwtStrategy,
44
+ jwt_auth_guard_1.JwtAuthGuard,
45
+ ],
46
+ exports: [auth_constants_1.AUTH_MODULE_OPTIONS, jwt_auth_guard_1.JwtAuthGuard],
47
+ };
48
+ }
49
+ static createAsyncProviders(options) {
50
+ if (options.useExisting || options.useFactory) {
51
+ return [this.createAsyncOptionsProvider(options)];
52
+ }
53
+ return [
54
+ this.createAsyncOptionsProvider(options),
55
+ {
56
+ provide: options.useClass,
57
+ useClass: options.useClass,
58
+ },
59
+ ];
60
+ }
61
+ static createAsyncOptionsProvider(options) {
62
+ if (options.useFactory) {
63
+ return {
64
+ provide: auth_constants_1.AUTH_MODULE_OPTIONS,
65
+ useFactory: options.useFactory,
66
+ inject: options.inject || [],
67
+ };
68
+ }
69
+ return {
70
+ provide: auth_constants_1.AUTH_MODULE_OPTIONS,
71
+ useFactory: async (optionsFactory) => {
72
+ return optionsFactory.createAuthOptions();
73
+ },
74
+ inject: [options.useExisting || options.useClass],
75
+ };
76
+ }
77
+ };
78
+ exports.SharedAuthModule = SharedAuthModule;
79
+ exports.SharedAuthModule = SharedAuthModule = SharedAuthModule_1 = __decorate([
80
+ (0, common_1.Module)({})
81
+ ], SharedAuthModule);
82
+ //# sourceMappingURL=shared-auth.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-auth.module.js","sourceRoot":"","sources":["../../src/auth/shared-auth.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAgE;AAChE,+CAAiD;AACjD,qDAAsD;AACtD,4DAAsD;AAMtD,4DAAuD;AAGhD,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAA0B;QACvC,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,yBAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,oCAAmB;oBAC5B,QAAQ,EAAE,OAAO;iBAClB;gBACD,0BAAW;gBACX,6BAAY;aACb;YACD,OAAO,EAAE,CAAC,oCAAmB,EAAE,6BAAY,CAAC;SAC7C,CAAA;IACH,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAA+B;QACjD,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,yBAAc,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;gBACnD,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC3B;YACD,SAAS,EAAE;gBACT,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACrC,0BAAW;gBACX,6BAAY;aACb;YACD,OAAO,EAAE,CAAC,oCAAmB,EAAE,6BAAY,CAAC;SAC7C,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAA+B;QAE/B,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAA;QACnD,CAAC;QAED,OAAO;YACL,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;YACxC;gBACE,OAAO,EAAE,OAAO,CAAC,QAAS;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAS;aAC5B;SACF,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,OAA+B;QAE/B,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,oCAAmB;gBAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B,CAAA;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,oCAAmB;YAC5B,UAAU,EAAE,KAAK,EAAE,cAAkC,EAAE,EAAE;gBACvD,OAAO,cAAc,CAAC,iBAAiB,EAAE,CAAA;YAC3C,CAAC;YACD,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAS,CAAC;SACnD,CAAA;IACH,CAAC;CACF,CAAA;AAtEY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CAsE5B"}
@@ -0,0 +1,11 @@
1
+ import { Strategy } from "passport-jwt";
2
+ import { AuthModuleOptions } from "../interfaces/auth-module-options.interface";
3
+ import { AuthUser, JwtPayload } from "../models/jwt-payload";
4
+ declare const JwtStrategy_base: new (...args: [opt: import("passport-jwt").StrategyOptionsWithRequest] | [opt: import("passport-jwt").StrategyOptionsWithoutRequest]) => Strategy & {
5
+ validate(...args: any[]): unknown;
6
+ };
7
+ export declare class JwtStrategy extends JwtStrategy_base {
8
+ constructor(options: AuthModuleOptions);
9
+ validate(payload: JwtPayload): AuthUser;
10
+ }
11
+ export {};