@decaf-ts/for-nest 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/for-nest.cjs +468 -15
  2. package/dist/for-nest.esm.cjs +468 -14
  3. package/lib/RepoFactory.cjs +27 -0
  4. package/lib/RepoFactory.d.ts +6 -0
  5. package/lib/core-module.cjs +27 -7
  6. package/lib/core-module.d.ts +7 -2
  7. package/lib/decoration.cjs +123 -0
  8. package/lib/decoration.d.ts +1 -0
  9. package/lib/decorators/ApiProperty.cjs +63 -0
  10. package/lib/decorators/ApiProperty.d.ts +27 -0
  11. package/lib/decorators/helpers.cjs +140 -0
  12. package/lib/decorators/helpers.d.ts +8 -0
  13. package/lib/decorators/index.cjs +19 -0
  14. package/lib/decorators/index.d.ts +2 -0
  15. package/lib/esm/RepoFactory.d.ts +6 -0
  16. package/lib/esm/RepoFactory.js +24 -0
  17. package/lib/esm/core-module.d.ts +7 -2
  18. package/lib/esm/core-module.js +27 -7
  19. package/lib/esm/decoration.d.ts +1 -0
  20. package/lib/esm/decoration.js +121 -0
  21. package/lib/esm/decorators/ApiProperty.d.ts +27 -0
  22. package/lib/esm/decorators/ApiProperty.js +57 -0
  23. package/lib/esm/decorators/helpers.d.ts +8 -0
  24. package/lib/esm/decorators/helpers.js +132 -0
  25. package/lib/esm/decorators/index.d.ts +2 -0
  26. package/lib/esm/decorators/index.js +3 -0
  27. package/lib/esm/index.d.ts +7 -2
  28. package/lib/esm/index.js +8 -3
  29. package/lib/esm/model-module.d.ts +8 -0
  30. package/lib/esm/model-module.js +119 -0
  31. package/lib/esm/module.d.ts +1 -1
  32. package/lib/esm/module.js +11 -3
  33. package/lib/esm/types.d.ts +1 -0
  34. package/lib/esm/types.js +1 -1
  35. package/lib/esm/utils.d.ts +2 -0
  36. package/lib/esm/utils.js +11 -0
  37. package/lib/index.cjs +8 -3
  38. package/lib/index.d.ts +7 -2
  39. package/lib/model-module.cjs +122 -0
  40. package/lib/model-module.d.ts +8 -0
  41. package/lib/module.cjs +11 -3
  42. package/lib/module.d.ts +1 -1
  43. package/lib/types.cjs +1 -1
  44. package/lib/types.d.ts +1 -0
  45. package/lib/utils.cjs +14 -0
  46. package/lib/utils.d.ts +2 -0
  47. package/package.json +4 -2
@@ -0,0 +1,27 @@
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.RepoFactory = void 0;
10
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
11
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
12
+ const core_1 = require("@decaf-ts/core");
13
+ const common_1 = require("@nestjs/common");
14
+ let RepoFactory = class RepoFactory {
15
+ for(model) {
16
+ model = typeof model === "string" ? decorator_validation_1.Model.get(model) : model;
17
+ if (!model) {
18
+ throw new db_decorators_1.InternalError(`Failed to find repository for ${model}`);
19
+ }
20
+ return core_1.Repository.forModel(model);
21
+ }
22
+ };
23
+ exports.RepoFactory = RepoFactory;
24
+ exports.RepoFactory = RepoFactory = __decorate([
25
+ (0, common_1.Injectable)()
26
+ ], RepoFactory);
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb0ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVwb0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEseUVBQXVEO0FBQ3ZELDJEQUF3RDtBQUN4RCx5Q0FBa0Q7QUFFbEQsMkNBQTRDO0FBR3JDLElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVc7SUFDdEIsR0FBRyxDQUFrQixLQUE4QjtRQUNqRCxLQUFLLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSw2QkFBYSxDQUFDLGlDQUFpQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxPQUFPLGlCQUFVLENBQUMsUUFBUSxDQUFDLEtBQXVCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YsQ0FBQTtBQVJZLGtDQUFXO3NCQUFYLFdBQVc7SUFEdkIsSUFBQSxtQkFBVSxHQUFFO0dBQ0EsV0FBVyxDQVF2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUmVwbywgUmVwb3NpdG9yeSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlcG9GYWN0b3J5IHtcbiAgZm9yPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IHN0cmluZyB8IENvbnN0cnVjdG9yPE0+KTogUmVwbzxNPiB7XG4gICAgbW9kZWwgPSB0eXBlb2YgbW9kZWwgPT09IFwic3RyaW5nXCIgPyAoTW9kZWwuZ2V0KG1vZGVsKSBhcyBhbnkpIDogbW9kZWw7XG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBmaW5kIHJlcG9zaXRvcnkgZm9yICR7bW9kZWx9YCk7XG4gICAgfVxuICAgIHJldHVybiBSZXBvc2l0b3J5LmZvck1vZGVsKG1vZGVsIGFzIENvbnN0cnVjdG9yPE0+KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { Repo } from "@decaf-ts/core";
3
+ import { Constructor } from "@decaf-ts/decoration";
4
+ export declare class RepoFactory {
5
+ for<M extends Model>(model: string | Constructor<M>): Repo<M>;
6
+ }
@@ -17,13 +17,31 @@ exports.DecafCoreModule = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
18
  const core_1 = require("@nestjs/core");
19
19
  const constants_1 = require("./constants.cjs");
20
- const LoggedClass_1 = require("@decaf-ts/logging/lib/LoggedClass");
21
- let DecafCoreModule = DecafCoreModule_1 = class DecafCoreModule extends LoggedClass_1.LoggedClass {
20
+ const logging_1 = require("@decaf-ts/logging");
21
+ let DecafCoreModule = class DecafCoreModule {
22
+ static { DecafCoreModule_1 = this; }
23
+ static { this._adapterInstance = null; }
24
+ static get log() {
25
+ if (!this._logger)
26
+ this._logger = logging_1.Logging.for(DecafCoreModule_1);
27
+ return this._logger;
28
+ }
22
29
  constructor(options, moduleRef) {
23
- super();
24
30
  this.options = options;
25
31
  this.moduleRef = moduleRef;
26
32
  }
33
+ static async createAdapter(options) {
34
+ if (!this._adapterInstance) {
35
+ const log = this.log.for(this.createAdapter);
36
+ log.info("Creating adapter instance...");
37
+ this._adapterInstance = new options.adapter(options.conf, options.alias);
38
+ log.info("Adapter instance created successfully!");
39
+ }
40
+ return this._adapterInstance;
41
+ }
42
+ static getAdapterInstance() {
43
+ return this._adapterInstance;
44
+ }
27
45
  static forRoot(options) {
28
46
  const typeOrmModuleOptions = {
29
47
  provide: constants_1.DECAF_MODULE_OPTIONS,
@@ -31,7 +49,7 @@ let DecafCoreModule = DecafCoreModule_1 = class DecafCoreModule extends LoggedCl
31
49
  };
32
50
  const adapter = {
33
51
  useFactory: async (opts) => {
34
- return new opts.adapter(opts.conf, opts.alias);
52
+ return DecafCoreModule_1.createAdapter(opts);
35
53
  },
36
54
  provide: constants_1.DECAF_ADAPTER_ID,
37
55
  durable: true,
@@ -47,15 +65,17 @@ let DecafCoreModule = DecafCoreModule_1 = class DecafCoreModule extends LoggedCl
47
65
  };
48
66
  }
49
67
  async onApplicationShutdown() {
68
+ const log = DecafCoreModule_1.log.for(this.onApplicationShutdown);
50
69
  const adapter = this.moduleRef.get(constants_1.DECAF_ADAPTER_ID);
51
70
  try {
52
71
  if (adapter) {
53
- this.log.info("Shutting down");
72
+ log.info("Shutting down");
54
73
  await adapter.shutdown();
74
+ DecafCoreModule_1._adapterInstance = null;
55
75
  }
56
76
  }
57
77
  catch (e) {
58
- this.log.error(`Failed to shutdown application`, e);
78
+ log.error(`Failed to shutdown application`, e);
59
79
  }
60
80
  }
61
81
  };
@@ -66,4 +86,4 @@ exports.DecafCoreModule = DecafCoreModule = DecafCoreModule_1 = __decorate([
66
86
  __param(0, (0, common_1.Inject)(constants_1.DECAF_MODULE_OPTIONS)),
67
87
  __metadata("design:paramtypes", [Object, core_1.ModuleRef])
68
88
  ], DecafCoreModule);
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29yZS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQU93QjtBQUN4Qix1Q0FBeUM7QUFFekMsK0NBQXFFO0FBR3JFLG1FQUFnRTtBQUl6RCxJQUFNLGVBQWUsdUJBQXJCLE1BQU0sZUFJWCxTQUFRLHlCQUFXO0lBR25CLFlBRW1CLE9BQTBDLEVBQzFDLFNBQW9CO1FBRXJDLEtBQUssRUFBRSxDQUFDO1FBSFMsWUFBTyxHQUFQLE9BQU8sQ0FBbUM7UUFDMUMsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUd2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUEyQjtRQUN4QyxNQUFNLG9CQUFvQixHQUFHO1lBQzNCLE9BQU8sRUFBRSxnQ0FBb0I7WUFDN0IsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUF5QjtZQUNwQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQXdCLEVBQUUsRUFBRTtnQkFDN0MsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUNELE9BQU8sRUFBRSw0QkFBZ0I7WUFDekIsT0FBTyxFQUFFLElBQUk7WUFDYixLQUFLLEVBQUUsY0FBSyxDQUFDLE9BQU87WUFDcEIsTUFBTSxFQUFFLENBQUMsZ0NBQW9CLENBQUM7U0FDL0IsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQixPQUFPO1lBQ0wsTUFBTSxFQUFFLGlCQUFlO1lBQ3ZCLFNBQVM7WUFDVCxPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFVLDRCQUFnQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDO1lBQ0gsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLENBQVUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQXBEWSwwQ0FBZTswQkFBZixlQUFlO0lBRjNCLElBQUEsZUFBTSxHQUFFO0lBQ1IsSUFBQSxlQUFNLEVBQUMsRUFBRSxDQUFDO0lBU04sV0FBQSxJQUFBLGVBQU0sRUFBQyxnQ0FBb0IsQ0FBQyxDQUFBOzZDQUVELGdCQUFTO0dBVjVCLGVBQWUsQ0FvRDNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRHluYW1pY01vZHVsZSxcbiAgR2xvYmFsLFxuICBJbmplY3QsXG4gIE1vZHVsZSxcbiAgT25BcHBsaWNhdGlvblNodXRkb3duLFxuICBTY29wZSxcbn0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBNb2R1bGVSZWYgfSBmcm9tIFwiQG5lc3Rqcy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IERlY2FmTW9kdWxlT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBERUNBRl9BREFQVEVSX0lELCBERUNBRl9NT0RVTEVfT1BUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uL2ludGVyZmFjZXMvbW9kdWxlcy9wcm92aWRlci5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IExvZ2dlZENsYXNzIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nL2xpYi9Mb2dnZWRDbGFzc1wiO1xuXG5AR2xvYmFsKClcbkBNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgRGVjYWZDb3JlTW9kdWxlPFxuICAgIENPTkYsXG4gICAgQURBUFRFUiBleHRlbmRzIEFkYXB0ZXI8Q09ORiwgYW55LCBhbnksIGFueSwgYW55PixcbiAgPlxuICBleHRlbmRzIExvZ2dlZENsYXNzXG4gIGltcGxlbWVudHMgT25BcHBsaWNhdGlvblNodXRkb3duXG57XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoREVDQUZfTU9EVUxFX09QVElPTlMpXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBEZWNhZk1vZHVsZU9wdGlvbnM8Q09ORiwgQURBUFRFUj4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVSZWY6IE1vZHVsZVJlZlxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgc3RhdGljIGZvclJvb3Qob3B0aW9uczogRGVjYWZNb2R1bGVPcHRpb25zKTogRHluYW1pY01vZHVsZSB7XG4gICAgY29uc3QgdHlwZU9ybU1vZHVsZU9wdGlvbnMgPSB7XG4gICAgICBwcm92aWRlOiBERUNBRl9NT0RVTEVfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiBvcHRpb25zLFxuICAgIH07XG5cbiAgICBjb25zdCBhZGFwdGVyOiBGYWN0b3J5UHJvdmlkZXI8YW55PiA9IHtcbiAgICAgIHVzZUZhY3Rvcnk6IGFzeW5jIChvcHRzOiBEZWNhZk1vZHVsZU9wdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBvcHRzLmFkYXB0ZXIob3B0cy5jb25mLCBvcHRzLmFsaWFzKTtcbiAgICAgIH0sXG4gICAgICBwcm92aWRlOiBERUNBRl9BREFQVEVSX0lELFxuICAgICAgZHVyYWJsZTogdHJ1ZSxcbiAgICAgIHNjb3BlOiBTY29wZS5ERUZBVUxULFxuICAgICAgaW5qZWN0OiBbREVDQUZfTU9EVUxFX09QVElPTlNdLFxuICAgIH07XG5cbiAgICBjb25zdCBwcm92aWRlcnMgPSBbYWRhcHRlciwgdHlwZU9ybU1vZHVsZU9wdGlvbnNdO1xuICAgIGNvbnN0IGV4cG9ydHMgPSBbYWRhcHRlcl07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBEZWNhZkNvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnMsXG4gICAgICBleHBvcnRzLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBvbkFwcGxpY2F0aW9uU2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWRhcHRlciA9IHRoaXMubW9kdWxlUmVmLmdldDxBREFQVEVSPihERUNBRl9BREFQVEVSX0lEKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGFkYXB0ZXIpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhcIlNodXR0aW5nIGRvd25cIik7XG4gICAgICAgIGF3YWl0IGFkYXB0ZXIuc2h1dGRvd24oKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcihgRmFpbGVkIHRvIHNodXRkb3duIGFwcGxpY2F0aW9uYCwgZSBhcyBFcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29yZS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQU93QjtBQUN4Qix1Q0FBeUM7QUFFekMsK0NBQXFFO0FBR3JFLCtDQUFvRDtBQUk3QyxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFlOzthQU1YLHFCQUFnQixHQUM3QixJQUFJLEFBRHlCLENBQ3hCO0lBRUcsTUFBTSxLQUFLLEdBQUc7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBZSxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUVtQixPQUEwQyxFQUMxQyxTQUFvQjtRQURwQixZQUFPLEdBQVAsT0FBTyxDQUFtQztRQUMxQyxjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQ3BDLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FDeEIsT0FBMkI7UUFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM3QyxHQUFHLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RSxHQUFHLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQTJCO1FBQ3hDLE1BQU0sb0JBQW9CLEdBQUc7WUFDM0IsT0FBTyxFQUFFLGdDQUFvQjtZQUM3QixRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQXlCO1lBQ3BDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBd0IsRUFBRSxFQUFFO2dCQUM3QyxPQUFPLGlCQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxPQUFPLEVBQUUsNEJBQWdCO1lBQ3pCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsS0FBSyxFQUFFLGNBQUssQ0FBQyxPQUFPO1lBQ3BCLE1BQU0sRUFBRSxDQUFDLGdDQUFvQixDQUFDO1NBQy9CLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUIsT0FBTztZQUNMLE1BQU0sRUFBRSxpQkFBZTtZQUN2QixTQUFTO1lBQ1QsT0FBTztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixNQUFNLEdBQUcsR0FBRyxpQkFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQVUsNEJBQWdCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUM7WUFDSCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixpQkFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFVLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQzs7QUExRVUsMENBQWU7MEJBQWYsZUFBZTtJQUYzQixJQUFBLGVBQU0sR0FBRTtJQUNSLElBQUEsZUFBTSxFQUFDLEVBQUUsQ0FBQztJQWdCTixXQUFBLElBQUEsZUFBTSxFQUFDLGdDQUFvQixDQUFDLENBQUE7NkNBRUQsZ0JBQVM7R0FqQjVCLGVBQWUsQ0EyRTNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRHluYW1pY01vZHVsZSxcbiAgR2xvYmFsLFxuICBJbmplY3QsXG4gIE1vZHVsZSxcbiAgT25BcHBsaWNhdGlvblNodXRkb3duLFxuICBTY29wZSxcbn0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBNb2R1bGVSZWYgfSBmcm9tIFwiQG5lc3Rqcy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IERlY2FmTW9kdWxlT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBERUNBRl9BREFQVEVSX0lELCBERUNBRl9NT0RVTEVfT1BUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uL2ludGVyZmFjZXMvbW9kdWxlcy9wcm92aWRlci5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuXG5AR2xvYmFsKClcbkBNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgRGVjYWZDb3JlTW9kdWxlPFxuICBDT05GLFxuICBBREFQVEVSIGV4dGVuZHMgQWRhcHRlcjxDT05GLCBhbnksIGFueSwgYW55LCBhbnk+LFxuPiBpbXBsZW1lbnRzIE9uQXBwbGljYXRpb25TaHV0ZG93blxue1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBMb2dnZXI7XG4gIHByaXZhdGUgc3RhdGljIF9hZGFwdGVySW5zdGFuY2U6IEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55LCBhbnk+IHwgbnVsbCA9XG4gICAgbnVsbDtcblxuICBwcm90ZWN0ZWQgc3RhdGljIGdldCBsb2coKTogTG9nZ2VyIHtcbiAgICBpZiAoIXRoaXMuX2xvZ2dlcikgdGhpcy5fbG9nZ2VyID0gTG9nZ2luZy5mb3IoRGVjYWZDb3JlTW9kdWxlKTtcbiAgICByZXR1cm4gdGhpcy5fbG9nZ2VyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChERUNBRl9NT0RVTEVfT1BUSU9OUylcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IERlY2FmTW9kdWxlT3B0aW9uczxDT05GLCBBREFQVEVSPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZHVsZVJlZjogTW9kdWxlUmVmXG4gICkge31cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlQWRhcHRlcihcbiAgICBvcHRpb25zOiBEZWNhZk1vZHVsZU9wdGlvbnNcbiAgKTogUHJvbWlzZTxBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueSwgYW55Pj4ge1xuICAgIGlmICghdGhpcy5fYWRhcHRlckluc3RhbmNlKSB7XG4gICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5jcmVhdGVBZGFwdGVyKTtcbiAgICAgIGxvZy5pbmZvKFwiQ3JlYXRpbmcgYWRhcHRlciBpbnN0YW5jZS4uLlwiKTtcbiAgICAgIHRoaXMuX2FkYXB0ZXJJbnN0YW5jZSA9IG5ldyBvcHRpb25zLmFkYXB0ZXIob3B0aW9ucy5jb25mLCBvcHRpb25zLmFsaWFzKTtcbiAgICAgIGxvZy5pbmZvKFwiQWRhcHRlciBpbnN0YW5jZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseSFcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVySW5zdGFuY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0QWRhcHRlckluc3RhbmNlKCk6IEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55LCBhbnk+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJJbnN0YW5jZTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IERlY2FmTW9kdWxlT3B0aW9ucyk6IER5bmFtaWNNb2R1bGUge1xuICAgIGNvbnN0IHR5cGVPcm1Nb2R1bGVPcHRpb25zID0ge1xuICAgICAgcHJvdmlkZTogREVDQUZfTU9EVUxFX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZTogb3B0aW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgYWRhcHRlcjogRmFjdG9yeVByb3ZpZGVyPGFueT4gPSB7XG4gICAgICB1c2VGYWN0b3J5OiBhc3luYyAob3B0czogRGVjYWZNb2R1bGVPcHRpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBEZWNhZkNvcmVNb2R1bGUuY3JlYXRlQWRhcHRlcihvcHRzKTtcbiAgICAgIH0sXG4gICAgICBwcm92aWRlOiBERUNBRl9BREFQVEVSX0lELFxuICAgICAgZHVyYWJsZTogdHJ1ZSxcbiAgICAgIHNjb3BlOiBTY29wZS5ERUZBVUxULFxuICAgICAgaW5qZWN0OiBbREVDQUZfTU9EVUxFX09QVElPTlNdLFxuICAgIH07XG5cbiAgICBjb25zdCBwcm92aWRlcnMgPSBbYWRhcHRlciwgdHlwZU9ybU1vZHVsZU9wdGlvbnNdO1xuICAgIGNvbnN0IGV4cG9ydHMgPSBbYWRhcHRlcl07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBEZWNhZkNvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnMsXG4gICAgICBleHBvcnRzLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBvbkFwcGxpY2F0aW9uU2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9nID0gRGVjYWZDb3JlTW9kdWxlLmxvZy5mb3IodGhpcy5vbkFwcGxpY2F0aW9uU2h1dGRvd24pO1xuICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLm1vZHVsZVJlZi5nZXQ8QURBUFRFUj4oREVDQUZfQURBUFRFUl9JRCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhZGFwdGVyKSB7XG4gICAgICAgIGxvZy5pbmZvKFwiU2h1dHRpbmcgZG93blwiKTtcbiAgICAgICAgYXdhaXQgYWRhcHRlci5zaHV0ZG93bigpO1xuICAgICAgICBEZWNhZkNvcmVNb2R1bGUuX2FkYXB0ZXJJbnN0YW5jZSA9IG51bGw7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgbG9nLmVycm9yKGBGYWlsZWQgdG8gc2h1dGRvd24gYXBwbGljYXRpb25gLCBlIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -2,11 +2,16 @@ import { DynamicModule, OnApplicationShutdown } from "@nestjs/common";
2
2
  import { ModuleRef } from "@nestjs/core";
3
3
  import type { DecafModuleOptions } from "./types";
4
4
  import { Adapter } from "@decaf-ts/core";
5
- import { LoggedClass } from "@decaf-ts/logging/lib/LoggedClass";
6
- export declare class DecafCoreModule<CONF, ADAPTER extends Adapter<CONF, any, any, any, any>> extends LoggedClass implements OnApplicationShutdown {
5
+ import { Logger } from "@decaf-ts/logging";
6
+ export declare class DecafCoreModule<CONF, ADAPTER extends Adapter<CONF, any, any, any, any>> implements OnApplicationShutdown {
7
7
  private readonly options;
8
8
  private readonly moduleRef;
9
+ private static _logger;
10
+ private static _adapterInstance;
11
+ protected static get log(): Logger;
9
12
  constructor(options: DecafModuleOptions<CONF, ADAPTER>, moduleRef: ModuleRef);
13
+ static createAdapter(options: DecafModuleOptions): Promise<Adapter<any, any, any, any, any>>;
14
+ static getAdapterInstance(): Adapter<any, any, any, any, any> | null;
10
15
  static forRoot(options: DecafModuleOptions): DynamicModule;
11
16
  onApplicationShutdown(): Promise<void>;
12
17
  }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const injectable_decorators_1 = require("@decaf-ts/injectable-decorators");
4
+ const common_1 = require("@nestjs/common");
5
+ const decoration_1 = require("@decaf-ts/decoration");
6
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
7
+ const ApiProperty_1 = require("./decorators/ApiProperty.cjs");
8
+ const core_1 = require("@decaf-ts/core");
9
+ decoration_1.Decoration.for(injectable_decorators_1.InjectablesKeys.INJECTABLE)
10
+ .extend({
11
+ decorator: function nestInjectable(category, cfg) {
12
+ return (0, common_1.Injectable)({
13
+ scope: cfg.singleton ? common_1.Scope.DEFAULT : common_1.Scope.REQUEST,
14
+ durable: cfg.singleton ? undefined : true,
15
+ });
16
+ },
17
+ })
18
+ .apply();
19
+ decoration_1.Decoration.for(injectable_decorators_1.InjectablesKeys.INJECT)
20
+ .extend({
21
+ decorator: function nestInject(category,
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ cfg) {
24
+ return function innerNestInject(target, propertyKey, descriptor) {
25
+ return (0, common_1.Inject)(category || target)(target, propertyKey, descriptor);
26
+ };
27
+ },
28
+ })
29
+ .apply();
30
+ decoration_1.Decoration.for(decorator_validation_1.ValidationKeys.REQUIRED)
31
+ .extend((0, ApiProperty_1.ApiProperty)({
32
+ required: true,
33
+ }))
34
+ .apply();
35
+ decoration_1.Decoration.for(decorator_validation_1.ValidationKeys.MAX)
36
+ .extend({
37
+ decorator: function maxDec(max) {
38
+ return (0, ApiProperty_1.ApiProperty)({ maximum: max });
39
+ },
40
+ })
41
+ .apply();
42
+ decoration_1.Decoration.for(decorator_validation_1.ValidationKeys.MIN)
43
+ .extend({
44
+ decorator: function minDec(min) {
45
+ return (0, ApiProperty_1.ApiProperty)({ minimum: min });
46
+ },
47
+ })
48
+ .apply();
49
+ decoration_1.Decoration.for(decorator_validation_1.ValidationKeys.MAX_LENGTH)
50
+ .extend({
51
+ decorator: function maxLengthDec(max) {
52
+ return (0, ApiProperty_1.ApiProperty)({ maxLength: max });
53
+ },
54
+ })
55
+ .apply();
56
+ decoration_1.Decoration.for(decorator_validation_1.ValidationKeys.MIN_LENGTH)
57
+ .extend({
58
+ decorator: function minLengthDec(min) {
59
+ return (0, ApiProperty_1.ApiProperty)({ minLength: min });
60
+ },
61
+ })
62
+ .apply();
63
+ //
64
+ // Decoration.for(ValidationKeys.TYPE)
65
+ // .extend({
66
+ // decorator: function typeDec(type: (string | (() => string))[] | string | (() => string)) {
67
+ // return ApiProperty({ type: type as any });
68
+ // },
69
+ // })
70
+ // .apply();
71
+ //
72
+ // Decoration.for(ValidationKeys.DATE)
73
+ // .extend({
74
+ // decorator: function dateDec() {
75
+ // return ApiProperty({ type: Date });
76
+ // },
77
+ // })
78
+ // .apply();
79
+ decoration_1.Decoration.for(decorator_validation_1.ValidationKeys.LIST)
80
+ .extend({
81
+ decorator: function listDec(clazz) {
82
+ const c = Array.isArray(clazz) ? clazz[0] : clazz;
83
+ return (0, ApiProperty_1.ApiProperty)({ type: [c] });
84
+ },
85
+ })
86
+ .apply();
87
+ //
88
+ // Decoration.for(ValidationKeys.OPTION)
89
+ // .extend({
90
+ // decorator: function optionDec(options: string[] | Record<string, any>) {
91
+ // const opts = Array.isArray(options) ? options : Object.values(options);
92
+ // return ApiProperty({ enum: opts });
93
+ // },
94
+ // })
95
+ // .apply();
96
+ decoration_1.Decoration.for(decorator_validation_1.ValidationKeys.PATTERN)
97
+ .extend({
98
+ decorator: function patternDec(pat) {
99
+ return (0, ApiProperty_1.ApiProperty)({
100
+ pattern: typeof pat === "string" ? pat : pat.source,
101
+ });
102
+ },
103
+ })
104
+ .apply();
105
+ decoration_1.Decoration.for(core_1.PersistenceKeys.COLUMN)
106
+ .extend({
107
+ decorator: function columnDec(name) {
108
+ return (0, ApiProperty_1.ApiProperty)({
109
+ name: name,
110
+ });
111
+ },
112
+ })
113
+ .apply();
114
+ decoration_1.Decoration.for(decoration_1.DecorationKeys.DESCRIPTION)
115
+ .extend({
116
+ decorator: function descriptionDec(description) {
117
+ return (0, ApiProperty_1.ApiProperty)({
118
+ description: description,
119
+ });
120
+ },
121
+ })
122
+ .apply();
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWNvcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkVBSXlDO0FBQ3pDLDJDQUEyRDtBQUMzRCxxREFBK0U7QUFDL0UseUVBQWdFO0FBQ2hFLDhEQUF1RDtBQUN2RCx5Q0FBaUQ7QUFFakQsdUJBQVUsQ0FBQyxHQUFHLENBQUMsdUNBQWUsQ0FBQyxVQUFVLENBQUM7S0FDdkMsTUFBTSxDQUFDO0lBQ04sU0FBUyxFQUFFLFNBQVMsY0FBYyxDQUNoQyxRQUE4QixFQUM5QixHQUFxQjtRQUVyQixPQUFPLElBQUEsbUJBQVUsRUFBQztZQUNoQixLQUFLLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBSyxDQUFDLE9BQU87WUFDcEQsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQztLQUNELEtBQUssRUFBRSxDQUFDO0FBRVgsdUJBQVUsQ0FBQyxHQUFHLENBQUMsdUNBQWUsQ0FBQyxNQUFNLENBQUM7S0FDbkMsTUFBTSxDQUFDO0lBQ04sU0FBUyxFQUFFLFNBQVMsVUFBVSxDQUM1QixRQUF1QztJQUN2Qyw2REFBNkQ7SUFDN0QsR0FBa0I7UUFFbEIsT0FBTyxTQUFTLGVBQWUsQ0FDN0IsTUFBYyxFQUNkLFdBQWlCLEVBQ2pCLFVBQWdCO1lBRWhCLE9BQU8sSUFBQSxlQUFNLEVBQUMsUUFBUSxJQUFLLE1BQXNCLENBQUMsQ0FDaEQsTUFBTSxFQUNOLFdBQVcsRUFDWCxVQUFVLENBQ1gsQ0FBQztRQUNKLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDO0tBQ0QsS0FBSyxFQUFFLENBQUM7QUFFWCx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxxQ0FBYyxDQUFDLFFBQVEsQ0FBQztLQUNwQyxNQUFNLENBQ0wsSUFBQSx5QkFBVyxFQUFDO0lBQ1YsUUFBUSxFQUFFLElBQUk7Q0FDZixDQUFDLENBQ0g7S0FDQSxLQUFLLEVBQUUsQ0FBQztBQUVYLHVCQUFVLENBQUMsR0FBRyxDQUFDLHFDQUFjLENBQUMsR0FBRyxDQUFDO0tBQy9CLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxHQUFXO1FBQ3BDLE9BQU8sSUFBQSx5QkFBVyxFQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLHVCQUFVLENBQUMsR0FBRyxDQUFDLHFDQUFjLENBQUMsR0FBRyxDQUFDO0tBQy9CLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxTQUFTLE1BQU0sQ0FBQyxHQUFXO1FBQ3BDLE9BQU8sSUFBQSx5QkFBVyxFQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLHVCQUFVLENBQUMsR0FBRyxDQUFDLHFDQUFjLENBQUMsVUFBVSxDQUFDO0tBQ3RDLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxTQUFTLFlBQVksQ0FBQyxHQUFXO1FBQzFDLE9BQU8sSUFBQSx5QkFBVyxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLHVCQUFVLENBQUMsR0FBRyxDQUFDLHFDQUFjLENBQUMsVUFBVSxDQUFDO0tBQ3RDLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxTQUFTLFlBQVksQ0FBQyxHQUFXO1FBQzFDLE9BQU8sSUFBQSx5QkFBVyxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUNYLEVBQUU7QUFDRixzQ0FBc0M7QUFDdEMsY0FBYztBQUNkLGlHQUFpRztBQUNqRyxtREFBbUQ7QUFDbkQsU0FBUztBQUNULE9BQU87QUFDUCxjQUFjO0FBQ2QsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxjQUFjO0FBQ2Qsc0NBQXNDO0FBQ3RDLDRDQUE0QztBQUM1QyxTQUFTO0FBQ1QsT0FBTztBQUNQLGNBQWM7QUFFZCx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxxQ0FBYyxDQUFDLElBQUksQ0FBQztLQUNoQyxNQUFNLENBQUM7SUFDTixTQUFTLEVBQUUsU0FBUyxPQUFPLENBQ3pCLEtBR21EO1FBRW5ELE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xELE9BQU8sSUFBQSx5QkFBVyxFQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRixDQUFDO0tBQ0QsS0FBSyxFQUFFLENBQUM7QUFFWCxFQUFFO0FBQ0Ysd0NBQXdDO0FBQ3hDLGNBQWM7QUFDZCwrRUFBK0U7QUFDL0UsZ0ZBQWdGO0FBQ2hGLDRDQUE0QztBQUM1QyxTQUFTO0FBQ1QsT0FBTztBQUNQLGNBQWM7QUFFZCx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxxQ0FBYyxDQUFDLE9BQU8sQ0FBQztLQUNuQyxNQUFNLENBQUM7SUFDTixTQUFTLEVBQUUsU0FBUyxVQUFVLENBQUMsR0FBb0I7UUFDakQsT0FBTyxJQUFBLHlCQUFXLEVBQUM7WUFDakIsT0FBTyxFQUFFLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtTQUNwRCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQztLQUNELEtBQUssRUFBRSxDQUFDO0FBRVgsdUJBQVUsQ0FBQyxHQUFHLENBQUMsc0JBQWUsQ0FBQyxNQUFNLENBQUM7S0FDbkMsTUFBTSxDQUFDO0lBQ04sU0FBUyxFQUFFLFNBQVMsU0FBUyxDQUFDLElBQVk7UUFDeEMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7WUFDakIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQztLQUNELEtBQUssRUFBRSxDQUFDO0FBRVgsdUJBQVUsQ0FBQyxHQUFHLENBQUMsMkJBQWMsQ0FBQyxXQUFXLENBQUM7S0FDdkMsTUFBTSxDQUFDO0lBQ04sU0FBUyxFQUFFLFNBQVMsY0FBYyxDQUFDLFdBQW1CO1FBQ3BELE9BQU8sSUFBQSx5QkFBVyxFQUFDO1lBQ2pCLFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0tBQ0QsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlQ29uZmlnLFxuICBJbmplY3RhYmxlc0tleXMsXG4gIEluamVjdE9wdGlvbnMsXG59IGZyb20gXCJAZGVjYWYtdHMvaW5qZWN0YWJsZS1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFNjb3BlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciwgRGVjb3JhdGlvbiwgRGVjb3JhdGlvbktleXMgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQXBpUHJvcGVydHkgfSBmcm9tIFwiLi9kZWNvcmF0b3JzL0FwaVByb3BlcnR5XCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcblxuRGVjb3JhdGlvbi5mb3IoSW5qZWN0YWJsZXNLZXlzLklOSkVDVEFCTEUpXG4gIC5leHRlbmQoe1xuICAgIGRlY29yYXRvcjogZnVuY3Rpb24gbmVzdEluamVjdGFibGUoXG4gICAgICBjYXRlZ29yeTogc3RyaW5nIHwgQ29uc3RydWN0b3IsXG4gICAgICBjZmc6IEluamVjdGFibGVDb25maWdcbiAgICApIHtcbiAgICAgIHJldHVybiBJbmplY3RhYmxlKHtcbiAgICAgICAgc2NvcGU6IGNmZy5zaW5nbGV0b24gPyBTY29wZS5ERUZBVUxUIDogU2NvcGUuUkVRVUVTVCxcbiAgICAgICAgZHVyYWJsZTogY2ZnLnNpbmdsZXRvbiA/IHVuZGVmaW5lZCA6IHRydWUsXG4gICAgICB9KTtcbiAgICB9LFxuICB9KVxuICAuYXBwbHkoKTtcblxuRGVjb3JhdGlvbi5mb3IoSW5qZWN0YWJsZXNLZXlzLklOSkVDVClcbiAgLmV4dGVuZCh7XG4gICAgZGVjb3JhdG9yOiBmdW5jdGlvbiBuZXN0SW5qZWN0KFxuICAgICAgY2F0ZWdvcnk6IHN5bWJvbCB8IHN0cmluZyB8IENvbnN0cnVjdG9yLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgY2ZnOiBJbmplY3RPcHRpb25zXG4gICAgKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gaW5uZXJOZXN0SW5qZWN0KFxuICAgICAgICB0YXJnZXQ6IG9iamVjdCxcbiAgICAgICAgcHJvcGVydHlLZXk/OiBhbnksXG4gICAgICAgIGRlc2NyaXB0b3I/OiBhbnlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gSW5qZWN0KGNhdGVnb3J5IHx8ICh0YXJnZXQgYXMgQ29uc3RydWN0b3IpKShcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgcHJvcGVydHlLZXksXG4gICAgICAgICAgZGVzY3JpcHRvclxuICAgICAgICApO1xuICAgICAgfTtcbiAgICB9LFxuICB9KVxuICAuYXBwbHkoKTtcblxuRGVjb3JhdGlvbi5mb3IoVmFsaWRhdGlvbktleXMuUkVRVUlSRUQpXG4gIC5leHRlbmQoXG4gICAgQXBpUHJvcGVydHkoe1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfSlcbiAgKVxuICAuYXBwbHkoKTtcblxuRGVjb3JhdGlvbi5mb3IoVmFsaWRhdGlvbktleXMuTUFYKVxuICAuZXh0ZW5kKHtcbiAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIG1heERlYyhtYXg6IG51bWJlcikge1xuICAgICAgcmV0dXJuIEFwaVByb3BlcnR5KHsgbWF4aW11bTogbWF4IH0pO1xuICAgIH0sXG4gIH0pXG4gIC5hcHBseSgpO1xuXG5EZWNvcmF0aW9uLmZvcihWYWxpZGF0aW9uS2V5cy5NSU4pXG4gIC5leHRlbmQoe1xuICAgIGRlY29yYXRvcjogZnVuY3Rpb24gbWluRGVjKG1pbjogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gQXBpUHJvcGVydHkoeyBtaW5pbXVtOiBtaW4gfSk7XG4gICAgfSxcbiAgfSlcbiAgLmFwcGx5KCk7XG5cbkRlY29yYXRpb24uZm9yKFZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEgpXG4gIC5leHRlbmQoe1xuICAgIGRlY29yYXRvcjogZnVuY3Rpb24gbWF4TGVuZ3RoRGVjKG1heDogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gQXBpUHJvcGVydHkoeyBtYXhMZW5ndGg6IG1heCB9KTtcbiAgICB9LFxuICB9KVxuICAuYXBwbHkoKTtcblxuRGVjb3JhdGlvbi5mb3IoVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSClcbiAgLmV4dGVuZCh7XG4gICAgZGVjb3JhdG9yOiBmdW5jdGlvbiBtaW5MZW5ndGhEZWMobWluOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBBcGlQcm9wZXJ0eSh7IG1pbkxlbmd0aDogbWluIH0pO1xuICAgIH0sXG4gIH0pXG4gIC5hcHBseSgpO1xuLy9cbi8vIERlY29yYXRpb24uZm9yKFZhbGlkYXRpb25LZXlzLlRZUEUpXG4vLyAgIC5leHRlbmQoe1xuLy8gICAgIGRlY29yYXRvcjogZnVuY3Rpb24gdHlwZURlYyh0eXBlOiAoc3RyaW5nIHwgKCgpID0+IHN0cmluZykpW10gfCBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSkge1xuLy8gICAgICAgcmV0dXJuIEFwaVByb3BlcnR5KHsgdHlwZTogdHlwZSBhcyBhbnkgfSk7XG4vLyAgICAgfSxcbi8vICAgfSlcbi8vICAgLmFwcGx5KCk7XG4vL1xuLy8gRGVjb3JhdGlvbi5mb3IoVmFsaWRhdGlvbktleXMuREFURSlcbi8vICAgLmV4dGVuZCh7XG4vLyAgICAgZGVjb3JhdG9yOiBmdW5jdGlvbiBkYXRlRGVjKCkge1xuLy8gICAgICAgcmV0dXJuIEFwaVByb3BlcnR5KHsgdHlwZTogRGF0ZSB9KTtcbi8vICAgICB9LFxuLy8gICB9KVxuLy8gICAuYXBwbHkoKTtcblxuRGVjb3JhdGlvbi5mb3IoVmFsaWRhdGlvbktleXMuTElTVClcbiAgLmV4dGVuZCh7XG4gICAgZGVjb3JhdG9yOiBmdW5jdGlvbiBsaXN0RGVjKFxuICAgICAgY2xheno6XG4gICAgICAgIHwgQ29uc3RydWN0b3I8YW55PlxuICAgICAgICB8ICgoKSA9PiBDb25zdHJ1Y3Rvcjxhbnk+KVxuICAgICAgICB8IChDb25zdHJ1Y3Rvcjxhbnk+IHwgKCgpID0+IENvbnN0cnVjdG9yPGFueT4pKVtdXG4gICAgKSB7XG4gICAgICBjb25zdCBjID0gQXJyYXkuaXNBcnJheShjbGF6eikgPyBjbGF6elswXSA6IGNsYXp6O1xuICAgICAgcmV0dXJuIEFwaVByb3BlcnR5KHsgdHlwZTogW2NdIH0pO1xuICAgIH0sXG4gIH0pXG4gIC5hcHBseSgpO1xuXG4vL1xuLy8gRGVjb3JhdGlvbi5mb3IoVmFsaWRhdGlvbktleXMuT1BUSU9OKVxuLy8gICAuZXh0ZW5kKHtcbi8vICAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIG9wdGlvbkRlYyhvcHRpb25zOiBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbi8vICAgICAgIGNvbnN0IG9wdHMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucyA6IE9iamVjdC52YWx1ZXMob3B0aW9ucyk7XG4vLyAgICAgICByZXR1cm4gQXBpUHJvcGVydHkoeyBlbnVtOiBvcHRzIH0pO1xuLy8gICAgIH0sXG4vLyAgIH0pXG4vLyAgIC5hcHBseSgpO1xuXG5EZWNvcmF0aW9uLmZvcihWYWxpZGF0aW9uS2V5cy5QQVRURVJOKVxuICAuZXh0ZW5kKHtcbiAgICBkZWNvcmF0b3I6IGZ1bmN0aW9uIHBhdHRlcm5EZWMocGF0OiBSZWdFeHAgfCBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBBcGlQcm9wZXJ0eSh7XG4gICAgICAgIHBhdHRlcm46IHR5cGVvZiBwYXQgPT09IFwic3RyaW5nXCIgPyBwYXQgOiBwYXQuc291cmNlLFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSlcbiAgLmFwcGx5KCk7XG5cbkRlY29yYXRpb24uZm9yKFBlcnNpc3RlbmNlS2V5cy5DT0xVTU4pXG4gIC5leHRlbmQoe1xuICAgIGRlY29yYXRvcjogZnVuY3Rpb24gY29sdW1uRGVjKG5hbWU6IHN0cmluZykge1xuICAgICAgcmV0dXJuIEFwaVByb3BlcnR5KHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pXG4gIC5hcHBseSgpO1xuXG5EZWNvcmF0aW9uLmZvcihEZWNvcmF0aW9uS2V5cy5ERVNDUklQVElPTilcbiAgLmV4dGVuZCh7XG4gICAgZGVjb3JhdG9yOiBmdW5jdGlvbiBkZXNjcmlwdGlvbkRlYyhkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gQXBpUHJvcGVydHkoe1xuICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICB9KTtcbiAgICB9LFxuICB9KVxuICAuYXBwbHkoKTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiProperty = ApiProperty;
4
+ exports.createApiPropertyDecorator = createApiPropertyDecorator;
5
+ exports.ApiPropertyOptional = ApiPropertyOptional;
6
+ exports.ApiResponseProperty = ApiResponseProperty;
7
+ const helpers_1 = require("@nestjs/swagger/dist/decorators/helpers");
8
+ const enum_utils_1 = require("@nestjs/swagger/dist/utils/enum.utils");
9
+ const constants_1 = require("@nestjs/swagger/dist/constants");
10
+ const helpers_2 = require("./helpers.cjs");
11
+ const isEnumArray = (opts) => (opts.isArray && "enum" in opts && opts.enum !== undefined);
12
+ /**
13
+ * @publicApi
14
+ */
15
+ function ApiProperty(options = {}) {
16
+ return createApiPropertyDecorator(options);
17
+ }
18
+ function createApiPropertyDecorator(options = {}, overrideExisting = true) {
19
+ const [type, isArray] = (0, helpers_1.getTypeIsArrayTuple)(options.type, options.isArray);
20
+ options = {
21
+ ...options,
22
+ type,
23
+ isArray,
24
+ };
25
+ if (isEnumArray(options)) {
26
+ options.type = "array";
27
+ const enumValues = (0, enum_utils_1.getEnumValues)(options.enum);
28
+ options.items = {
29
+ type: (0, enum_utils_1.getEnumType)(enumValues),
30
+ enum: enumValues,
31
+ };
32
+ // @ts-expect-error nest swagger override
33
+ delete options.enum;
34
+ }
35
+ else if ("enum" in options && options.enum !== undefined) {
36
+ const enumValues = (0, enum_utils_1.getEnumValues)(options.enum);
37
+ options.enum = enumValues;
38
+ options.type = (0, enum_utils_1.getEnumType)(enumValues);
39
+ }
40
+ if (Array.isArray(options.type)) {
41
+ options.type = "array";
42
+ options.items = {
43
+ type: "array",
44
+ items: {
45
+ type: options.type[0],
46
+ },
47
+ };
48
+ }
49
+ return (0, helpers_2.createPropertyDecorator)(constants_1.DECORATORS.API_MODEL_PROPERTIES, options, overrideExisting);
50
+ }
51
+ function ApiPropertyOptional(options = {}) {
52
+ return ApiProperty({
53
+ ...options,
54
+ required: false,
55
+ });
56
+ }
57
+ function ApiResponseProperty(options = {}) {
58
+ return ApiProperty({
59
+ readOnly: true,
60
+ ...options,
61
+ });
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpUHJvcGVydHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9BcGlQcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdEQSxrQ0FJQztBQUVELGdFQThDQztBQUVELGtEQU9DO0FBRUQsa0RBVUM7QUFuSEQscUVBQThFO0FBQzlFLHNFQUcrQztBQUMvQyw4REFBNEQ7QUFDNUQsMkNBQW9EO0FBd0JwRCxNQUFNLFdBQVcsR0FBRyxDQUNsQixJQUF3QixFQU14QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQVksQ0FBQztBQUU1RTs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsVUFBOEIsRUFBRTtJQUVoQyxPQUFPLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FDeEMsVUFBOEIsRUFBRSxFQUNoQyxnQkFBZ0IsR0FBRyxJQUFJO0lBRXZCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBQSw2QkFBbUIsRUFDekMsT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsT0FBa0IsQ0FDM0IsQ0FBQztJQUNGLE9BQU8sR0FBRztRQUNSLEdBQUcsT0FBTztRQUNWLElBQUk7UUFDSixPQUFPO0tBQ2MsQ0FBQztJQUV4QixJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBRXZCLE1BQU0sVUFBVSxHQUFHLElBQUEsMEJBQWEsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsT0FBTyxDQUFDLEtBQUssR0FBRztZQUNkLElBQUksRUFBRSxJQUFBLHdCQUFXLEVBQUMsVUFBVSxDQUFDO1lBQzdCLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUM7UUFDRix5Q0FBeUM7UUFDekMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ3RCLENBQUM7U0FBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFhLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9DLE9BQU8sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBQSx3QkFBVyxFQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxDQUFDLEtBQUssR0FBRztZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN0QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFBLGlDQUF1QixFQUM1QixzQkFBVSxDQUFDLG9CQUFvQixFQUMvQixPQUFPLEVBQ1AsZ0JBQWdCLENBQ2pCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQ2pDLFVBQThCLEVBQUU7SUFFaEMsT0FBTyxXQUFXLENBQUM7UUFDakIsR0FBRyxPQUFPO1FBQ1YsUUFBUSxFQUFFLEtBQUs7S0FDTSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQWdCLG1CQUFtQixDQUNqQyxVQUdJLEVBQUU7SUFFTixPQUFPLFdBQVcsQ0FBQztRQUNqQixRQUFRLEVBQUUsSUFBSTtRQUNkLEdBQUcsT0FBTztLQUNXLENBQUMsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgRW51bUFsbG93ZWRUeXBlcyxcbiAgU2NoZW1hT2JqZWN0TWV0YWRhdGEsXG59IGZyb20gXCJAbmVzdGpzL3N3YWdnZXIvZGlzdC9pbnRlcmZhY2VzL3NjaGVtYS1vYmplY3QtbWV0YWRhdGEuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBFbnVtU2NoZW1hQXR0cmlidXRlcyB9IGZyb20gXCJAbmVzdGpzL3N3YWdnZXIvZGlzdC9pbnRlcmZhY2VzL2VudW0tc2NoZW1hLWF0dHJpYnV0ZXMuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBnZXRUeXBlSXNBcnJheVR1cGxlIH0gZnJvbSBcIkBuZXN0anMvc3dhZ2dlci9kaXN0L2RlY29yYXRvcnMvaGVscGVyc1wiO1xuaW1wb3J0IHtcbiAgZ2V0RW51bVR5cGUsXG4gIGdldEVudW1WYWx1ZXMsXG59IGZyb20gXCJAbmVzdGpzL3N3YWdnZXIvZGlzdC91dGlscy9lbnVtLnV0aWxzXCI7XG5pbXBvcnQgeyBERUNPUkFUT1JTIH0gZnJvbSBcIkBuZXN0anMvc3dhZ2dlci9kaXN0L2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IgfSBmcm9tIFwiLi9oZWxwZXJzXCI7XG5cbmV4cG9ydCB0eXBlIEFwaVByb3BlcnR5Q29tbW9uT3B0aW9ucyA9IFNjaGVtYU9iamVjdE1ldGFkYXRhICYge1xuICBcIngtZW51bU5hbWVzXCI/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIExhenkgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSB0eXBlIGZvciB3aGljaCB0aGUgZGVjb3JhdGVkIHByb3BlcnR5XG4gICAqIGNhbiBiZSB1c2VkIGFzIGFuIGlkXG4gICAqXG4gICAqIFVzZSB0b2dldGhlciB3aXRoIEBBcGlEZWZhdWx0R2V0dGVyIG9uIHRoZSBnZXR0ZXIgcm91dGUgb2YgdGhlIHR5cGVcbiAgICogdG8gZ2VuZXJhdGUgT3BlbkFQSSBsaW5rIG9iamVjdHNcbiAgICpcbiAgICogQHNlZSBbU3dhZ2dlciBsaW5rIG9iamVjdHNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vbGlua3MvKVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZVxuICBsaW5rPzogKCkgPT4gVHlwZTx1bmtub3duPiB8IEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgQXBpUHJvcGVydHlPcHRpb25zID1cbiAgfCBBcGlQcm9wZXJ0eUNvbW1vbk9wdGlvbnNcbiAgfCAoQXBpUHJvcGVydHlDb21tb25PcHRpb25zICYge1xuICAgICAgZW51bU5hbWU6IHN0cmluZztcbiAgICAgIGVudW1TY2hlbWE/OiBFbnVtU2NoZW1hQXR0cmlidXRlcztcbiAgICB9KTtcblxuY29uc3QgaXNFbnVtQXJyYXkgPSAoXG4gIG9wdHM6IEFwaVByb3BlcnR5T3B0aW9uc1xuKTogb3B0cyBpcyB7XG4gIGlzQXJyYXk6IHRydWU7XG4gIGVudW06IEVudW1BbGxvd2VkVHlwZXM7XG4gIHR5cGU6IGFueTtcbiAgaXRlbXM6IGFueTtcbn0gPT4gKG9wdHMuaXNBcnJheSAmJiBcImVudW1cIiBpbiBvcHRzICYmIG9wdHMuZW51bSAhPT0gdW5kZWZpbmVkKSBhcyBib29sZWFuO1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFwaVByb3BlcnR5KFxuICBvcHRpb25zOiBBcGlQcm9wZXJ0eU9wdGlvbnMgPSB7fVxuKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICByZXR1cm4gY3JlYXRlQXBpUHJvcGVydHlEZWNvcmF0b3Iob3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcGlQcm9wZXJ0eURlY29yYXRvcihcbiAgb3B0aW9uczogQXBpUHJvcGVydHlPcHRpb25zID0ge30sXG4gIG92ZXJyaWRlRXhpc3RpbmcgPSB0cnVlXG4pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIGNvbnN0IFt0eXBlLCBpc0FycmF5XSA9IGdldFR5cGVJc0FycmF5VHVwbGUoXG4gICAgb3B0aW9ucy50eXBlLFxuICAgIG9wdGlvbnMuaXNBcnJheSBhcyBib29sZWFuXG4gICk7XG4gIG9wdGlvbnMgPSB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICB0eXBlLFxuICAgIGlzQXJyYXksXG4gIH0gYXMgQXBpUHJvcGVydHlPcHRpb25zO1xuXG4gIGlmIChpc0VudW1BcnJheShvcHRpb25zKSkge1xuICAgIG9wdGlvbnMudHlwZSA9IFwiYXJyYXlcIjtcblxuICAgIGNvbnN0IGVudW1WYWx1ZXMgPSBnZXRFbnVtVmFsdWVzKG9wdGlvbnMuZW51bSk7XG4gICAgb3B0aW9ucy5pdGVtcyA9IHtcbiAgICAgIHR5cGU6IGdldEVudW1UeXBlKGVudW1WYWx1ZXMpLFxuICAgICAgZW51bTogZW51bVZhbHVlcyxcbiAgICB9O1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbmVzdCBzd2FnZ2VyIG92ZXJyaWRlXG4gICAgZGVsZXRlIG9wdGlvbnMuZW51bTtcbiAgfSBlbHNlIGlmIChcImVudW1cIiBpbiBvcHRpb25zICYmIG9wdGlvbnMuZW51bSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZW51bVZhbHVlcyA9IGdldEVudW1WYWx1ZXMob3B0aW9ucy5lbnVtKTtcblxuICAgIG9wdGlvbnMuZW51bSA9IGVudW1WYWx1ZXM7XG4gICAgb3B0aW9ucy50eXBlID0gZ2V0RW51bVR5cGUoZW51bVZhbHVlcyk7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnR5cGUpKSB7XG4gICAgb3B0aW9ucy50eXBlID0gXCJhcnJheVwiO1xuICAgIG9wdGlvbnMuaXRlbXMgPSB7XG4gICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICBpdGVtczoge1xuICAgICAgICB0eXBlOiBvcHRpb25zLnR5cGVbMF0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3IoXG4gICAgREVDT1JBVE9SUy5BUElfTU9ERUxfUFJPUEVSVElFUyxcbiAgICBvcHRpb25zLFxuICAgIG92ZXJyaWRlRXhpc3RpbmdcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFwaVByb3BlcnR5T3B0aW9uYWwoXG4gIG9wdGlvbnM6IEFwaVByb3BlcnR5T3B0aW9ucyA9IHt9XG4pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBBcGlQcm9wZXJ0eSh7XG4gICAgLi4ub3B0aW9ucyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gIH0gYXMgQXBpUHJvcGVydHlPcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFwaVJlc3BvbnNlUHJvcGVydHkoXG4gIG9wdGlvbnM6IFBpY2s8XG4gICAgQXBpUHJvcGVydHlPcHRpb25zLFxuICAgIFwidHlwZVwiIHwgXCJleGFtcGxlXCIgfCBcImZvcm1hdFwiIHwgXCJkZXByZWNhdGVkXCIgfCBcImVudW1cIlxuICA+ID0ge31cbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuIEFwaVByb3BlcnR5KHtcbiAgICByZWFkT25seTogdHJ1ZSxcbiAgICAuLi5vcHRpb25zLFxuICB9IGFzIEFwaVByb3BlcnR5T3B0aW9ucyk7XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Type } from "@nestjs/common";
2
+ import { SchemaObjectMetadata } from "@nestjs/swagger/dist/interfaces/schema-object-metadata.interface";
3
+ import { EnumSchemaAttributes } from "@nestjs/swagger/dist/interfaces/enum-schema-attributes.interface";
4
+ export type ApiPropertyCommonOptions = SchemaObjectMetadata & {
5
+ "x-enumNames"?: string[];
6
+ /**
7
+ * Lazy function returning the type for which the decorated property
8
+ * can be used as an id
9
+ *
10
+ * Use together with @ApiDefaultGetter on the getter route of the type
11
+ * to generate OpenAPI link objects
12
+ *
13
+ * @see [Swagger link objects](https://swagger.io/docs/specification/links/)
14
+ */
15
+ link?: () => Type<unknown> | Function;
16
+ };
17
+ export type ApiPropertyOptions = ApiPropertyCommonOptions | (ApiPropertyCommonOptions & {
18
+ enumName: string;
19
+ enumSchema?: EnumSchemaAttributes;
20
+ });
21
+ /**
22
+ * @publicApi
23
+ */
24
+ export declare function ApiProperty(options?: ApiPropertyOptions): PropertyDecorator;
25
+ export declare function createApiPropertyDecorator(options?: ApiPropertyOptions, overrideExisting?: boolean): PropertyDecorator;
26
+ export declare function ApiPropertyOptional(options?: ApiPropertyOptions): PropertyDecorator;
27
+ export declare function ApiResponseProperty(options?: Pick<ApiPropertyOptions, "type" | "example" | "format" | "deprecated" | "enum">): PropertyDecorator;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-unsafe-function-type */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createMethodDecorator = createMethodDecorator;
5
+ exports.createClassDecorator = createClassDecorator;
6
+ exports.createPropertyDecorator = createPropertyDecorator;
7
+ exports.createMixedDecorator = createMixedDecorator;
8
+ exports.createParamDecorator = createParamDecorator;
9
+ exports.getTypeIsArrayTuple = getTypeIsArrayTuple;
10
+ const constants_1 = require("@nestjs/common/constants");
11
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
12
+ const lodash_1 = require("lodash");
13
+ const plugin_constants_1 = require("@nestjs/swagger/dist/plugin/plugin-constants");
14
+ const constants_2 = require("@nestjs/swagger/dist/constants");
15
+ function createMethodDecorator(metakey, metadata, { overrideExisting } = { overrideExisting: true }) {
16
+ return (target, key, descriptor) => {
17
+ if (typeof metadata === "object") {
18
+ const prevValue = Reflect.getMetadata(metakey, descriptor.value);
19
+ if (prevValue && !overrideExisting) {
20
+ return descriptor;
21
+ }
22
+ Reflect.defineMetadata(metakey, { ...prevValue, ...metadata }, descriptor.value);
23
+ return descriptor;
24
+ }
25
+ Reflect.defineMetadata(metakey, metadata, descriptor.value);
26
+ return descriptor;
27
+ };
28
+ }
29
+ function createClassDecorator(metakey, metadata = []) {
30
+ return (target) => {
31
+ const prevValue = Reflect.getMetadata(metakey, target) || [];
32
+ Reflect.defineMetadata(metakey, [...prevValue, ...metadata], target);
33
+ return target;
34
+ };
35
+ }
36
+ function createPropertyDecorator(metakey, metadata, overrideExisting = true) {
37
+ return (target, propertyKey) => {
38
+ const properties = Reflect.getMetadata(constants_2.DECORATORS.API_MODEL_PROPERTIES_ARRAY, target) || [];
39
+ const key = `:${propertyKey}`;
40
+ if (!properties.includes(key)) {
41
+ Reflect.defineMetadata(constants_2.DECORATORS.API_MODEL_PROPERTIES_ARRAY, [...properties, `:${propertyKey}`], target);
42
+ }
43
+ const existingMetadata = Reflect.getMetadata(metakey, target, propertyKey);
44
+ if (existingMetadata) {
45
+ const newMetadata = (0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined));
46
+ const metadataToSave = overrideExisting
47
+ ? {
48
+ ...existingMetadata,
49
+ ...newMetadata,
50
+ }
51
+ : {
52
+ ...newMetadata,
53
+ ...existingMetadata,
54
+ };
55
+ Reflect.defineMetadata(metakey, metadataToSave, target, propertyKey);
56
+ }
57
+ else {
58
+ const type =
59
+ // @ts-expect-error nest js override
60
+ target?.constructor?.[plugin_constants_1.METADATA_FACTORY_NAME]?.()[propertyKey]?.type ??
61
+ Reflect.getMetadata("design:type", target, propertyKey);
62
+ Reflect.defineMetadata(metakey, {
63
+ type,
64
+ ...(0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined)),
65
+ }, target, propertyKey);
66
+ }
67
+ };
68
+ }
69
+ function createMixedDecorator(metakey, metadata) {
70
+ return (target, key, descriptor) => {
71
+ if (descriptor) {
72
+ let metadatas;
73
+ if (Array.isArray(metadata)) {
74
+ const previousMetadata = Reflect.getMetadata(metakey, descriptor.value) || [];
75
+ metadatas = [...previousMetadata, ...metadata];
76
+ }
77
+ else {
78
+ const previousMetadata = Reflect.getMetadata(metakey, descriptor.value) || {};
79
+ metadatas = { ...previousMetadata, ...metadata };
80
+ }
81
+ Reflect.defineMetadata(metakey, metadatas, descriptor.value);
82
+ return descriptor;
83
+ }
84
+ let metadatas;
85
+ if (Array.isArray(metadata)) {
86
+ const previousMetadata = Reflect.getMetadata(metakey, target) || [];
87
+ metadatas = [...previousMetadata, ...metadata];
88
+ }
89
+ else {
90
+ const previousMetadata = Reflect.getMetadata(metakey, target) || {};
91
+ metadatas = Object.assign(Object.assign({}, previousMetadata), metadata);
92
+ }
93
+ Reflect.defineMetadata(metakey, metadatas, target);
94
+ return target;
95
+ };
96
+ }
97
+ function createParamDecorator(metadata, initial) {
98
+ return (target, key, descriptor) => {
99
+ const paramOptions = {
100
+ ...initial,
101
+ ...(0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined)),
102
+ };
103
+ if (descriptor) {
104
+ const parameters = Reflect.getMetadata(constants_2.DECORATORS.API_PARAMETERS, descriptor.value) || [];
105
+ Reflect.defineMetadata(constants_2.DECORATORS.API_PARAMETERS, [...parameters, paramOptions], descriptor.value);
106
+ return descriptor;
107
+ }
108
+ if (typeof target === "object") {
109
+ return target;
110
+ }
111
+ const propertyKeys = Object.getOwnPropertyNames(target.prototype);
112
+ for (const propertyKey of propertyKeys) {
113
+ if ((0, shared_utils_1.isConstructor)(propertyKey)) {
114
+ continue;
115
+ }
116
+ const methodDescriptor = Object.getOwnPropertyDescriptor(target.prototype, propertyKey);
117
+ if (!methodDescriptor) {
118
+ continue;
119
+ }
120
+ const isApiMethod = Reflect.hasMetadata(constants_1.METHOD_METADATA, methodDescriptor.value);
121
+ if (!isApiMethod) {
122
+ continue;
123
+ }
124
+ const parameters = Reflect.getMetadata(constants_2.DECORATORS.API_PARAMETERS, methodDescriptor.value) || [];
125
+ Reflect.defineMetadata(constants_2.DECORATORS.API_PARAMETERS, [...parameters, paramOptions], methodDescriptor.value);
126
+ }
127
+ };
128
+ }
129
+ function getTypeIsArrayTuple(input, isArrayFlag) {
130
+ if (!input) {
131
+ return [input, isArrayFlag];
132
+ }
133
+ if (isArrayFlag) {
134
+ return [input, isArrayFlag];
135
+ }
136
+ const isInputArray = (0, lodash_1.isArray)(input);
137
+ const type = isInputArray ? input[0] : input;
138
+ return [type, isInputArray];
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtEQUErRDs7QUFRL0Qsc0RBeUJDO0FBRUQsb0RBU0M7QUFFRCwwREFnREM7QUFFRCxvREFtQ0M7QUFFRCxvREFrRUM7QUFFRCxrREFhQztBQXBORCx3REFBMkQ7QUFDM0Qsb0VBQWtFO0FBQ2xFLG1DQUE4RDtBQUM5RCxtRkFBcUY7QUFDckYsOERBQTREO0FBRTVELFNBQWdCLHFCQUFxQixDQUNuQyxPQUFlLEVBQ2YsUUFBVyxFQUNYLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRTtJQUVqRCxPQUFPLENBQ0wsTUFBYyxFQUNkLEdBQW9CLEVBQ3BCLFVBQThCLEVBQzlCLEVBQUU7UUFDRixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRSxJQUFJLFNBQVMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25DLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxPQUFPLENBQUMsY0FBYyxDQUNwQixPQUFPLEVBQ1AsRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBRSxFQUM3QixVQUFVLENBQUMsS0FBSyxDQUNqQixDQUFDO1lBQ0YsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUNsQyxPQUFlLEVBQ2YsV0FBYyxF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LFdBQVcsQ0FDakIsc0JBQVUsQ0FBQyxjQUFjLEVBQ3pCLGdCQUFnQixDQUFDLEtBQUssQ0FDdkIsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsY0FBYyxDQUNwQixzQkFBVSxDQUFDLGNBQWMsRUFDekIsQ0FBQyxHQUFHLFVBQVUsRUFBRSxZQUFZLENBQUMsRUFDN0IsZ0JBQWdCLENBQUMsS0FBSyxDQUN2QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FDakMsS0FBdUUsRUFDdkUsV0FBb0I7SUFFcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxDQUFDLEtBQWtCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQU8sRUFBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdDLE9BQU8sQ0FBQyxJQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGUgKi9cblxuaW1wb3J0IHsgTUVUSE9EX01FVEFEQVRBIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgaXNDb25zdHJ1Y3RvciB9IGZyb20gXCJAbmVzdGpzL2NvbW1vbi91dGlscy9zaGFyZWQudXRpbHNcIjtcbmltcG9ydCB7IGlzQXJyYXksIGlzVW5kZWZpbmVkLCBuZWdhdGUsIHBpY2tCeSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IE1FVEFEQVRBX0ZBQ1RPUllfTkFNRSB9IGZyb20gXCJAbmVzdGpzL3N3YWdnZXIvZGlzdC9wbHVnaW4vcGx1Z2luLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgREVDT1JBVE9SUyB9IGZyb20gXCJAbmVzdGpzL3N3YWdnZXIvZGlzdC9jb25zdGFudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1ldGhvZERlY29yYXRvcjxUID0gYW55PihcbiAgbWV0YWtleTogc3RyaW5nLFxuICBtZXRhZGF0YTogVCxcbiAgeyBvdmVycmlkZUV4aXN0aW5nIH0gPSB7IG92ZXJyaWRlRXhpc3Rpbmc6IHRydWUgfVxuKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgcmV0dXJuIChcbiAgICB0YXJnZXQ6IG9iamVjdCxcbiAgICBrZXk6IHN0cmluZyB8IHN5bWJvbCxcbiAgICBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3JcbiAgKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtZXRhZGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgY29uc3QgcHJldlZhbHVlID0gUmVmbGVjdC5nZXRNZXRhZGF0YShtZXRha2V5LCBkZXNjcmlwdG9yLnZhbHVlKTtcbiAgICAgIGlmIChwcmV2VmFsdWUgJiYgIW92ZXJyaWRlRXhpc3RpbmcpIHtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgICB9XG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgICBtZXRha2V5LFxuICAgICAgICB7IC4uLnByZXZWYWx1ZSwgLi4ubWV0YWRhdGEgfSxcbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZVxuICAgICAgKTtcbiAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKG1ldGFrZXksIG1ldGFkYXRhLCBkZXNjcmlwdG9yLnZhbHVlKTtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNsYXNzRGVjb3JhdG9yPFQgZXh0ZW5kcyBBcnJheTxhbnk+ID0gYW55PihcbiAgbWV0YWtleTogc3RyaW5nLFxuICBtZXRhZGF0YTogVCA9IFtdIGFzIHVua25vd24gYXMgVFxuKTogQ2xhc3NEZWNvcmF0b3Ige1xuICByZXR1cm4gKHRhcmdldCkgPT4ge1xuICAgIGNvbnN0IHByZXZWYWx1ZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEobWV0YWtleSwgdGFyZ2V0KSB8fCBbXTtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKG1ldGFrZXksIFsuLi5wcmV2VmFsdWUsIC4uLm1ldGFkYXRhXSwgdGFyZ2V0KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlEZWNvcmF0b3I8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBhbnk+KFxuICBtZXRha2V5OiBzdHJpbmcsXG4gIG1ldGFkYXRhOiBULFxuICBvdmVycmlkZUV4aXN0aW5nID0gdHJ1ZVxuKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICByZXR1cm4gKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eUtleT86IGFueSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPVxuICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YShERUNPUkFUT1JTLkFQSV9NT0RFTF9QUk9QRVJUSUVTX0FSUkFZLCB0YXJnZXQpIHx8IFtdO1xuXG4gICAgY29uc3Qga2V5ID0gYDoke3Byb3BlcnR5S2V5fWA7XG4gICAgaWYgKCFwcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoXG4gICAgICAgIERFQ09SQVRPUlMuQVBJX01PREVMX1BST1BFUlRJRVNfQVJSQVksXG4gICAgICAgIFsuLi5wcm9wZXJ0aWVzLCBgOiR7cHJvcGVydHlLZXl9YF0sXG4gICAgICAgIHRhcmdldFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgZXhpc3RpbmdNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEobWV0YWtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgaWYgKGV4aXN0aW5nTWV0YWRhdGEpIHtcbiAgICAgIGNvbnN0IG5ld01ldGFkYXRhID0gcGlja0J5KG1ldGFkYXRhLCBuZWdhdGUoaXNVbmRlZmluZWQpKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhVG9TYXZlID0gb3ZlcnJpZGVFeGlzdGluZ1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nTWV0YWRhdGEsXG4gICAgICAgICAgICAuLi5uZXdNZXRhZGF0YSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4ubmV3TWV0YWRhdGEsXG4gICAgICAgICAgICAuLi5leGlzdGluZ01ldGFkYXRhLFxuICAgICAgICAgIH07XG5cbiAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEobWV0YWtleSwgbWV0YWRhdGFUb1NhdmUsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlID1cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBuZXN0IGpzIG92ZXJyaWRlXG4gICAgICAgIHRhcmdldD8uY29uc3RydWN0b3I/LltNRVRBREFUQV9GQUNUT1JZX05BTUVdPy4oKVtwcm9wZXJ0eUtleV0/LnR5cGUgPz9cbiAgICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YShcImRlc2lnbjp0eXBlXCIsIHRhcmdldCwgcHJvcGVydHlLZXkpO1xuXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgICBtZXRha2V5LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICAuLi5waWNrQnkobWV0YWRhdGEsIG5lZ2F0ZShpc1VuZGVmaW5lZCkpLFxuICAgICAgICB9LFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHByb3BlcnR5S2V5XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1peGVkRGVjb3JhdG9yPFQgPSBhbnk+KFxuICBtZXRha2V5OiBzdHJpbmcsXG4gIG1ldGFkYXRhOiBUXG4pOiBNZXRob2REZWNvcmF0b3IgJiBDbGFzc0RlY29yYXRvciB7XG4gIHJldHVybiAoXG4gICAgdGFyZ2V0OiBvYmplY3QsXG4gICAga2V5Pzogc3RyaW5nIHwgc3ltYm9sLFxuICAgIGRlc2NyaXB0b3I/OiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+XG4gICk6IGFueSA9PiB7XG4gICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgIGxldCBtZXRhZGF0YXM6IGFueTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1ldGFkYXRhKSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c01ldGFkYXRhID1cbiAgICAgICAgICBSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFrZXksIGRlc2NyaXB0b3IudmFsdWUpIHx8IFtdO1xuICAgICAgICBtZXRhZGF0YXMgPSBbLi4ucHJldmlvdXNNZXRhZGF0YSwgLi4ubWV0YWRhdGFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNNZXRhZGF0YSA9XG4gICAgICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YShtZXRha2V5LCBkZXNjcmlwdG9yLnZhbHVlKSB8fCB7fTtcbiAgICAgICAgbWV0YWRhdGFzID0geyAuLi5wcmV2aW91c01ldGFkYXRhLCAuLi5tZXRhZGF0YSB9O1xuICAgICAgfVxuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShtZXRha2V5LCBtZXRhZGF0YXMsIGRlc2NyaXB0b3IudmFsdWUpO1xuICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgbGV0IG1ldGFkYXRhczogYW55O1xuICAgIGlmIChBcnJheS5pc0FycmF5KG1ldGFkYXRhKSkge1xuICAgICAgY29uc3QgcHJldmlvdXNNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEobWV0YWtleSwgdGFyZ2V0KSB8fCBbXTtcbiAgICAgIG1ldGFkYXRhcyA9IFsuLi5wcmV2aW91c01ldGFkYXRhLCAuLi5tZXRhZGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzTWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKG1ldGFrZXksIHRhcmdldCkgfHwge307XG4gICAgICBtZXRhZGF0YXMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXZpb3VzTWV0YWRhdGEpLCBtZXRhZGF0YSk7XG4gICAgfVxuICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEobWV0YWtleSwgbWV0YWRhdGFzLCB0YXJnZXQpO1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXJhbURlY29yYXRvcjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IGFueT4oXG4gIG1ldGFkYXRhOiBULFxuICBpbml0aWFsOiBQYXJ0aWFsPFQ+XG4pOiBNZXRob2REZWNvcmF0b3IgJiBDbGFzc0RlY29yYXRvciB7XG4gIHJldHVybiAoXG4gICAgdGFyZ2V0OiBvYmplY3QgfCBGdW5jdGlvbixcbiAgICBrZXk/OiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgZGVzY3JpcHRvcj86IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPGFueT5cbiAgKTogYW55ID0+IHtcbiAgICBjb25zdCBwYXJhbU9wdGlvbnMgPSB7XG4gICAgICAuLi5pbml0aWFsLFxuICAgICAgLi4ucGlja0J5KG1ldGFkYXRhLCBuZWdhdGUoaXNVbmRlZmluZWQpKSxcbiAgICB9O1xuXG4gICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPVxuICAgICAgICBSZWZsZWN0LmdldE1ldGFkYXRhKERFQ09SQVRPUlMuQVBJX1BBUkFNRVRFUlMsIGRlc2NyaXB0b3IudmFsdWUpIHx8IFtdO1xuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcbiAgICAgICAgREVDT1JBVE9SUy5BUElfUEFSQU1FVEVSUyxcbiAgICAgICAgWy4uLnBhcmFtZXRlcnMsIHBhcmFtT3B0aW9uc10sXG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wZXJ0eUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQucHJvdG90eXBlKTtcblxuICAgIGZvciAoY29uc3QgcHJvcGVydHlLZXkgb2YgcHJvcGVydHlLZXlzKSB7XG4gICAgICBpZiAoaXNDb25zdHJ1Y3Rvcihwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGhvZERlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuICAgICAgICB0YXJnZXQucHJvdG90eXBlLFxuICAgICAgICBwcm9wZXJ0eUtleVxuICAgICAgKTtcblxuICAgICAgaWYgKCFtZXRob2REZXNjcmlwdG9yKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0FwaU1ldGhvZCA9IFJlZmxlY3QuaGFzTWV0YWRhdGEoXG4gICAgICAgIE1FVEhPRF9NRVRBREFUQSxcbiAgICAgICAgbWV0aG9kRGVzY3JpcHRvci52YWx1ZVxuICAgICAgKTtcblxuICAgICAgaWYgKCFpc0FwaU1ldGhvZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyYW1ldGVycyA9XG4gICAgICAgIFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgICAgREVDT1JBVE9SUy5BUElfUEFSQU1FVEVSUyxcbiAgICAgICAgICBtZXRob2REZXNjcmlwdG9yLnZhbHVlXG4gICAgICAgICkgfHwgW107XG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgICBERUNPUkFUT1JTLkFQSV9QQVJBTUVURVJTLFxuICAgICAgICBbLi4ucGFyYW1ldGVycywgcGFyYW1PcHRpb25zXSxcbiAgICAgICAgbWV0aG9kRGVzY3JpcHRvci52YWx1ZVxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlSXNBcnJheVR1cGxlKFxuICBpbnB1dDogRnVuY3Rpb24gfCBbRnVuY3Rpb25dIHwgdW5kZWZpbmVkIHwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgYW55PixcbiAgaXNBcnJheUZsYWc6IGJvb2xlYW5cbik6IFtGdW5jdGlvbiB8IHVuZGVmaW5lZCwgYm9vbGVhbl0ge1xuICBpZiAoIWlucHV0KSB7XG4gICAgcmV0dXJuIFtpbnB1dCBhcyB1bmRlZmluZWQsIGlzQXJyYXlGbGFnXTtcbiAgfVxuICBpZiAoaXNBcnJheUZsYWcpIHtcbiAgICByZXR1cm4gW2lucHV0IGFzIEZ1bmN0aW9uLCBpc0FycmF5RmxhZ107XG4gIH1cbiAgY29uc3QgaXNJbnB1dEFycmF5ID0gaXNBcnJheShpbnB1dCk7XG4gIGNvbnN0IHR5cGUgPSBpc0lucHV0QXJyYXkgPyBpbnB1dFswXSA6IGlucHV0O1xuICByZXR1cm4gW3R5cGUgYXMgRnVuY3Rpb24sIGlzSW5wdXRBcnJheV07XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export declare function createMethodDecorator<T = any>(metakey: string, metadata: T, { overrideExisting }?: {
2
+ overrideExisting: boolean;
3
+ }): MethodDecorator;
4
+ export declare function createClassDecorator<T extends Array<any> = any>(metakey: string, metadata?: T): ClassDecorator;
5
+ export declare function createPropertyDecorator<T extends Record<string, any> = any>(metakey: string, metadata: T, overrideExisting?: boolean): PropertyDecorator;
6
+ export declare function createMixedDecorator<T = any>(metakey: string, metadata: T): MethodDecorator & ClassDecorator;
7
+ export declare function createParamDecorator<T extends Record<string, any> = any>(metadata: T, initial: Partial<T>): MethodDecorator & ClassDecorator;
8
+ export declare function getTypeIsArrayTuple(input: Function | [Function] | undefined | string | Record<string, any>, isArrayFlag: boolean): [Function | undefined, boolean];
@@ -0,0 +1,19 @@
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("./ApiProperty.cjs"), exports);
18
+ __exportStar(require("./helpers.cjs"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQThCO0FBQzlCLGdEQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0FwaVByb3BlcnR5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzXCI7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./ApiProperty";
2
+ export * from "./helpers";
@@ -0,0 +1,6 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { Repo } from "@decaf-ts/core";
3
+ import { Constructor } from "@decaf-ts/decoration";
4
+ export declare class RepoFactory {
5
+ for<M extends Model>(model: string | Constructor<M>): Repo<M>;
6
+ }
@@ -0,0 +1,24 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Model } from "@decaf-ts/decorator-validation";
8
+ import { InternalError } from "@decaf-ts/db-decorators";
9
+ import { Repository } from "@decaf-ts/core";
10
+ import { Injectable } from "@nestjs/common";
11
+ let RepoFactory = class RepoFactory {
12
+ for(model) {
13
+ model = typeof model === "string" ? Model.get(model) : model;
14
+ if (!model) {
15
+ throw new InternalError(`Failed to find repository for ${model}`);
16
+ }
17
+ return Repository.forModel(model);
18
+ }
19
+ };
20
+ RepoFactory = __decorate([
21
+ Injectable()
22
+ ], RepoFactory);
23
+ export { RepoFactory };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb0ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUmVwb0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQVEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVc7SUFDdEIsR0FBRyxDQUFrQixLQUE4QjtRQUNqRCxLQUFLLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGFBQWEsQ0FBQyxpQ0FBaUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQXVCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YsQ0FBQTtBQVJZLFdBQVc7SUFEdkIsVUFBVSxFQUFFO0dBQ0EsV0FBVyxDQVF2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUmVwbywgUmVwb3NpdG9yeSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlcG9GYWN0b3J5IHtcbiAgZm9yPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IHN0cmluZyB8IENvbnN0cnVjdG9yPE0+KTogUmVwbzxNPiB7XG4gICAgbW9kZWwgPSB0eXBlb2YgbW9kZWwgPT09IFwic3RyaW5nXCIgPyAoTW9kZWwuZ2V0KG1vZGVsKSBhcyBhbnkpIDogbW9kZWw7XG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBmaW5kIHJlcG9zaXRvcnkgZm9yICR7bW9kZWx9YCk7XG4gICAgfVxuICAgIHJldHVybiBSZXBvc2l0b3J5LmZvck1vZGVsKG1vZGVsIGFzIENvbnN0cnVjdG9yPE0+KTtcbiAgfVxufVxuIl19