mongodb-dynamic-api 4.17.0 → 4.21.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 (247) hide show
  1. package/CHANGELOG.md +182 -0
  2. package/README.md +5 -2
  3. package/package.json +6 -3
  4. package/schematics/collection.json +11 -0
  5. package/schematics/resource/files/__name@dasherize__.entity.ts.template +9 -0
  6. package/schematics/resource/files/__name@dasherize__.module.ts.template +13 -0
  7. package/schematics/resource/index.js +37 -0
  8. package/schematics/resource/index.js.map +1 -0
  9. package/schematics/resource/schema.json +34 -0
  10. package/schematics.tsbuildinfo +1 -0
  11. package/src/decorators/entity-exists.decorator.js +11 -2
  12. package/src/decorators/entity-exists.decorator.js.map +1 -1
  13. package/src/decorators/index.d.ts +1 -0
  14. package/src/decorators/index.js +1 -0
  15. package/src/decorators/index.js.map +1 -1
  16. package/src/decorators/is-unique.decorator.js +11 -2
  17. package/src/decorators/is-unique.decorator.js.map +1 -1
  18. package/src/decorators/rate-limit.decorator.d.ts +3 -0
  19. package/src/decorators/rate-limit.decorator.js +21 -0
  20. package/src/decorators/rate-limit.decorator.js.map +1 -0
  21. package/src/dynamic-api.module.js +4 -0
  22. package/src/dynamic-api.module.js.map +1 -1
  23. package/src/gateways/base.gateway.js +9 -9
  24. package/src/gateways/base.gateway.js.map +1 -1
  25. package/src/guards/dynamic-api-jwt-auth.guard.d.ts +3 -0
  26. package/src/guards/dynamic-api-jwt-auth.guard.js +23 -2
  27. package/src/guards/dynamic-api-jwt-auth.guard.js.map +1 -1
  28. package/src/helpers/index-sync.helper.d.ts +6 -0
  29. package/src/helpers/index-sync.helper.js +48 -0
  30. package/src/helpers/index-sync.helper.js.map +1 -0
  31. package/src/helpers/index.d.ts +6 -0
  32. package/src/helpers/index.js +6 -0
  33. package/src/helpers/index.js.map +1 -1
  34. package/src/helpers/mint-token-pair.helper.d.ts +13 -0
  35. package/src/helpers/mint-token-pair.helper.js +41 -0
  36. package/src/helpers/mint-token-pair.helper.js.map +1 -0
  37. package/src/helpers/mongo-transaction.helper.d.ts +2 -0
  38. package/src/helpers/mongo-transaction.helper.js +11 -0
  39. package/src/helpers/mongo-transaction.helper.js.map +1 -0
  40. package/src/helpers/mongoose-cast-error.helper.d.ts +2 -0
  41. package/src/helpers/mongoose-cast-error.helper.js +8 -0
  42. package/src/helpers/mongoose-cast-error.helper.js.map +1 -0
  43. package/src/helpers/predicate-identifier.helper.d.ts +3 -0
  44. package/src/helpers/predicate-identifier.helper.js +34 -0
  45. package/src/helpers/predicate-identifier.helper.js.map +1 -0
  46. package/src/helpers/strip-business-validators.helper.d.ts +3 -0
  47. package/src/helpers/strip-business-validators.helper.js +17 -0
  48. package/src/helpers/strip-business-validators.helper.js.map +1 -0
  49. package/src/index.d.ts +1 -0
  50. package/src/index.js +1 -0
  51. package/src/index.js.map +1 -1
  52. package/src/interceptors/index.d.ts +1 -0
  53. package/src/interceptors/index.js +1 -0
  54. package/src/interceptors/index.js.map +1 -1
  55. package/src/interceptors/merge-id-param.interceptor.d.ts +6 -0
  56. package/src/interceptors/merge-id-param.interceptor.js +24 -0
  57. package/src/interceptors/merge-id-param.interceptor.js.map +1 -0
  58. package/src/interfaces/dynamic-api-audit-log.interface.d.ts +10 -0
  59. package/src/interfaces/dynamic-api-audit-log.interface.js +3 -0
  60. package/src/interfaces/dynamic-api-audit-log.interface.js.map +1 -0
  61. package/src/interfaces/dynamic-api-global-state.interface.d.ts +2 -0
  62. package/src/interfaces/dynamic-api-health-check.interface.d.ts +8 -0
  63. package/src/interfaces/dynamic-api-health-check.interface.js +3 -0
  64. package/src/interfaces/dynamic-api-health-check.interface.js.map +1 -0
  65. package/src/interfaces/dynamic-api-rate-limit.interface.d.ts +6 -0
  66. package/src/interfaces/dynamic-api-rate-limit.interface.js +3 -0
  67. package/src/interfaces/dynamic-api-rate-limit.interface.js.map +1 -0
  68. package/src/interfaces/dynamic-api-route-config.interface.d.ts +6 -1
  69. package/src/interfaces/dynamic-api-route-config.interface.js.map +1 -1
  70. package/src/interfaces/dynamic-api-service-callback.interface.d.ts +1 -0
  71. package/src/interfaces/index.d.ts +3 -0
  72. package/src/interfaces/index.js +3 -0
  73. package/src/interfaces/index.js.map +1 -1
  74. package/src/modules/auth/interfaces/auth-options.interface.d.ts +8 -1
  75. package/src/modules/auth/mixins/auth-controller.mixin.d.ts +1 -1
  76. package/src/modules/auth/mixins/auth-controller.mixin.js +11 -2
  77. package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
  78. package/src/modules/auth/mixins/auth-gateway.mixin.js +3 -1
  79. package/src/modules/auth/mixins/auth-gateway.mixin.js.map +1 -1
  80. package/src/modules/health/health.controller.d.ts +3 -0
  81. package/src/modules/health/health.controller.js +53 -0
  82. package/src/modules/health/health.controller.js.map +1 -0
  83. package/src/modules/health/health.module.d.ts +6 -0
  84. package/src/modules/health/health.module.js +28 -0
  85. package/src/modules/health/health.module.js.map +1 -0
  86. package/src/modules/health/index.d.ts +2 -0
  87. package/src/modules/health/index.js +19 -0
  88. package/src/modules/health/index.js.map +1 -0
  89. package/src/predicates/group-member.predicate.d.ts +2 -1
  90. package/src/predicates/group-member.predicate.js +6 -4
  91. package/src/predicates/group-member.predicate.js.map +1 -1
  92. package/src/predicates/ownership.predicate.d.ts +2 -1
  93. package/src/predicates/ownership.predicate.js +4 -2
  94. package/src/predicates/ownership.predicate.js.map +1 -1
  95. package/src/routes/create-many/base-create-many.service.d.ts +1 -0
  96. package/src/routes/create-many/base-create-many.service.js +3 -0
  97. package/src/routes/create-many/base-create-many.service.js.map +1 -1
  98. package/src/routes/create-many/create-many.helper.js +1 -0
  99. package/src/routes/create-many/create-many.helper.js.map +1 -1
  100. package/src/routes/create-many/create-many.module.js +1 -1
  101. package/src/routes/create-many/create-many.module.js.map +1 -1
  102. package/src/routes/create-one/base-create-one.service.d.ts +1 -0
  103. package/src/routes/create-one/base-create-one.service.js +3 -0
  104. package/src/routes/create-one/base-create-one.service.js.map +1 -1
  105. package/src/routes/create-one/create-one.helper.js +1 -0
  106. package/src/routes/create-one/create-one.helper.js.map +1 -1
  107. package/src/routes/create-one/create-one.module.js +1 -1
  108. package/src/routes/create-one/create-one.module.js.map +1 -1
  109. package/src/routes/delete-many/base-delete-many.service.d.ts +2 -0
  110. package/src/routes/delete-many/base-delete-many.service.js +24 -11
  111. package/src/routes/delete-many/base-delete-many.service.js.map +1 -1
  112. package/src/routes/delete-many/delete-many-controller.mixin.js +1 -1
  113. package/src/routes/delete-many/delete-many-controller.mixin.js.map +1 -1
  114. package/src/routes/delete-many/delete-many.helper.js +1 -0
  115. package/src/routes/delete-many/delete-many.helper.js.map +1 -1
  116. package/src/routes/delete-many/delete-many.module.js +1 -1
  117. package/src/routes/delete-many/delete-many.module.js.map +1 -1
  118. package/src/routes/delete-one/base-delete-one.service.d.ts +2 -0
  119. package/src/routes/delete-one/base-delete-one.service.js +24 -11
  120. package/src/routes/delete-one/base-delete-one.service.js.map +1 -1
  121. package/src/routes/delete-one/delete-one.helper.js +1 -0
  122. package/src/routes/delete-one/delete-one.helper.js.map +1 -1
  123. package/src/routes/delete-one/delete-one.module.js +1 -1
  124. package/src/routes/delete-one/delete-one.module.js.map +1 -1
  125. package/src/routes/duplicate-many/base-duplicate-many.service.d.ts +1 -0
  126. package/src/routes/duplicate-many/base-duplicate-many.service.js +3 -0
  127. package/src/routes/duplicate-many/base-duplicate-many.service.js.map +1 -1
  128. package/src/routes/duplicate-many/duplicate-many-controller.mixin.js +1 -1
  129. package/src/routes/duplicate-many/duplicate-many-controller.mixin.js.map +1 -1
  130. package/src/routes/duplicate-many/duplicate-many.helper.js +1 -0
  131. package/src/routes/duplicate-many/duplicate-many.helper.js.map +1 -1
  132. package/src/routes/duplicate-many/duplicate-many.module.js +1 -1
  133. package/src/routes/duplicate-many/duplicate-many.module.js.map +1 -1
  134. package/src/routes/duplicate-one/base-duplicate-one.service.d.ts +1 -0
  135. package/src/routes/duplicate-one/base-duplicate-one.service.js +3 -0
  136. package/src/routes/duplicate-one/base-duplicate-one.service.js.map +1 -1
  137. package/src/routes/duplicate-one/duplicate-one.helper.js +1 -0
  138. package/src/routes/duplicate-one/duplicate-one.helper.js.map +1 -1
  139. package/src/routes/duplicate-one/duplicate-one.module.js +1 -1
  140. package/src/routes/duplicate-one/duplicate-one.module.js.map +1 -1
  141. package/src/routes/get-many/base-get-many.service.d.ts +2 -1
  142. package/src/routes/get-many/base-get-many.service.js +6 -3
  143. package/src/routes/get-many/base-get-many.service.js.map +1 -1
  144. package/src/routes/get-many/get-many.helper.d.ts +2 -2
  145. package/src/routes/get-many/get-many.helper.js +2 -1
  146. package/src/routes/get-many/get-many.helper.js.map +1 -1
  147. package/src/routes/get-many/get-many.module.d.ts +2 -2
  148. package/src/routes/get-many/get-many.module.js +1 -1
  149. package/src/routes/get-many/get-many.module.js.map +1 -1
  150. package/src/routes/get-one/base-get-one.service.d.ts +2 -1
  151. package/src/routes/get-one/base-get-one.service.js +6 -3
  152. package/src/routes/get-one/base-get-one.service.js.map +1 -1
  153. package/src/routes/get-one/get-one.helper.d.ts +2 -2
  154. package/src/routes/get-one/get-one.helper.js +2 -1
  155. package/src/routes/get-one/get-one.helper.js.map +1 -1
  156. package/src/routes/get-one/get-one.module.d.ts +2 -2
  157. package/src/routes/get-one/get-one.module.js +1 -1
  158. package/src/routes/get-one/get-one.module.js.map +1 -1
  159. package/src/routes/replace-one/base-replace-one.service.d.ts +1 -0
  160. package/src/routes/replace-one/base-replace-one.service.js +3 -0
  161. package/src/routes/replace-one/base-replace-one.service.js.map +1 -1
  162. package/src/routes/replace-one/replace-one.helper.js +1 -0
  163. package/src/routes/replace-one/replace-one.helper.js.map +1 -1
  164. package/src/routes/replace-one/replace-one.module.js +1 -1
  165. package/src/routes/replace-one/replace-one.module.js.map +1 -1
  166. package/src/routes/update-many/base-update-many.service.d.ts +1 -0
  167. package/src/routes/update-many/base-update-many.service.js +9 -0
  168. package/src/routes/update-many/base-update-many.service.js.map +1 -1
  169. package/src/routes/update-many/update-many-controller.mixin.js +2 -2
  170. package/src/routes/update-many/update-many-controller.mixin.js.map +1 -1
  171. package/src/routes/update-many/update-many.helper.js +1 -0
  172. package/src/routes/update-many/update-many.helper.js.map +1 -1
  173. package/src/routes/update-many/update-many.module.js +1 -1
  174. package/src/routes/update-many/update-many.module.js.map +1 -1
  175. package/src/routes/update-one/base-update-one.service.d.ts +1 -0
  176. package/src/routes/update-one/base-update-one.service.js +3 -0
  177. package/src/routes/update-one/base-update-one.service.js.map +1 -1
  178. package/src/routes/update-one/update-one-controller.mixin.js +14 -4
  179. package/src/routes/update-one/update-one-controller.mixin.js.map +1 -1
  180. package/src/routes/update-one/update-one.helper.js +1 -0
  181. package/src/routes/update-one/update-one.helper.js.map +1 -1
  182. package/src/routes/update-one/update-one.module.js +1 -1
  183. package/src/routes/update-one/update-one.module.js.map +1 -1
  184. package/src/services/base/base.service.d.ts +14 -4
  185. package/src/services/base/base.service.js +73 -10
  186. package/src/services/base/base.service.js.map +1 -1
  187. package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js +6 -6
  188. package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js.map +1 -1
  189. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js +2 -0
  190. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js.map +1 -1
  191. package/src/testing/create-dynamic-api-testing-app.d.ts +16 -0
  192. package/src/testing/create-dynamic-api-testing-app.js +42 -0
  193. package/src/testing/create-dynamic-api-testing-app.js.map +1 -0
  194. package/src/testing/index.d.ts +1 -0
  195. package/src/testing/index.js +18 -0
  196. package/src/testing/index.js.map +1 -0
  197. package/src/version.json +1 -1
  198. package/test/for-feature/ability-predicates.e2e-spec.js +28 -0
  199. package/test/for-feature/ability-predicates.e2e-spec.js.map +1 -1
  200. package/test/for-feature/audit-log.e2e-spec.d.ts +1 -0
  201. package/test/for-feature/audit-log.e2e-spec.js +134 -0
  202. package/test/for-feature/audit-log.e2e-spec.js.map +1 -0
  203. package/test/for-feature/cascade-transaction-atomicity.e2e-spec.d.ts +1 -0
  204. package/test/for-feature/cascade-transaction-atomicity.e2e-spec.js +86 -0
  205. package/test/for-feature/cascade-transaction-atomicity.e2e-spec.js.map +1 -0
  206. package/test/for-feature/db-aware-validators.e2e-spec.js +54 -3
  207. package/test/for-feature/db-aware-validators.e2e-spec.js.map +1 -1
  208. package/test/for-feature/http-broadcast.e2e-spec.js +56 -2
  209. package/test/for-feature/http-broadcast.e2e-spec.js.map +1 -1
  210. package/test/for-feature/index-sync.e2e-spec.d.ts +1 -0
  211. package/test/for-feature/index-sync.e2e-spec.js +88 -0
  212. package/test/for-feature/index-sync.e2e-spec.js.map +1 -0
  213. package/test/for-feature/populate.e2e-spec.d.ts +1 -0
  214. package/test/for-feature/populate.e2e-spec.js +93 -0
  215. package/test/for-feature/populate.e2e-spec.js.map +1 -0
  216. package/test/for-root/auth-api-basic.e2e-spec.js +13 -0
  217. package/test/for-root/auth-api-basic.e2e-spec.js.map +1 -1
  218. package/test/for-root/auth-api-login.e2e-spec.js +29 -0
  219. package/test/for-root/auth-api-login.e2e-spec.js.map +1 -1
  220. package/test/for-root/auth-api-mint-token-pair.e2e-spec.d.ts +1 -0
  221. package/test/for-root/auth-api-mint-token-pair.e2e-spec.js +58 -0
  222. package/test/for-root/auth-api-mint-token-pair.e2e-spec.js.map +1 -0
  223. package/test/for-root/auth-api-rate-limit.e2e-spec.d.ts +1 -0
  224. package/test/for-root/auth-api-rate-limit.e2e-spec.js +60 -0
  225. package/test/for-root/auth-api-rate-limit.e2e-spec.js.map +1 -0
  226. package/test/for-root/health-check.e2e-spec.d.ts +1 -0
  227. package/test/for-root/health-check.e2e-spec.js +66 -0
  228. package/test/for-root/health-check.e2e-spec.js.map +1 -0
  229. package/test/for-root/initialization.e2e-spec.js +4 -0
  230. package/test/for-root/initialization.e2e-spec.js.map +1 -1
  231. package/test/for-root/websockets-auth-basic.e2e-spec.js +2 -0
  232. package/test/for-root/websockets-auth-basic.e2e-spec.js.map +1 -1
  233. package/test/for-root/websockets-auth-login.e2e-spec.js +32 -0
  234. package/test/for-root/websockets-auth-login.e2e-spec.js.map +1 -1
  235. package/test/shared/entities/index.d.ts +1 -0
  236. package/test/shared/entities/index.js +1 -0
  237. package/test/shared/entities/index.js.map +1 -1
  238. package/test/shared/entities/unique-login-user.factory.d.ts +14 -0
  239. package/test/shared/entities/unique-login-user.factory.js +40 -0
  240. package/test/shared/entities/unique-login-user.factory.js.map +1 -0
  241. package/test/testing/create-dynamic-api-testing-app.e2e-spec.d.ts +1 -0
  242. package/test/testing/create-dynamic-api-testing-app.e2e-spec.js +66 -0
  243. package/test/testing/create-dynamic-api-testing-app.e2e-spec.js.map +1 -0
  244. package/testing.d.ts +1 -0
  245. package/testing.js +18 -0
  246. package/testing.js.map +1 -0
  247. package/tsconfig.tsbuildinfo +1 -1
@@ -8,17 +8,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var DynamicApiJwtAuthGuard_1;
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.DynamicApiJwtAuthGuard = void 0;
13
14
  const common_1 = require("@nestjs/common");
14
15
  const core_1 = require("@nestjs/core");
15
16
  const passport_1 = require("@nestjs/passport");
16
17
  const decorators_1 = require("../decorators");
17
- let DynamicApiJwtAuthGuard = class DynamicApiJwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
18
+ const logger_1 = require("../logger");
19
+ let DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard_1 = class DynamicApiJwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
18
20
  constructor(reflector, state) {
19
21
  super();
20
22
  this.reflector = reflector;
21
23
  this.state = state;
24
+ this.logger = new logger_1.MongoDBDynamicApiLogger(DynamicApiJwtAuthGuard_1.name);
22
25
  }
23
26
  canActivate(context) {
24
27
  const isPublic = this.reflector.getAllAndOverride(decorators_1.IS_PUBLIC_KEY, [
@@ -30,9 +33,27 @@ let DynamicApiJwtAuthGuard = class DynamicApiJwtAuthGuard extends (0, passport_1
30
33
  }
31
34
  return super.canActivate(context);
32
35
  }
36
+ handleRequest(err, user, info, context, status) {
37
+ if (!user) {
38
+ this.logger.warn(`Request rejected: ${this.resolveRejectionReason(err, info)}`);
39
+ }
40
+ return super.handleRequest(err, user, info, context, status);
41
+ }
42
+ resolveRejectionReason(err, info) {
43
+ if (err instanceof Error) {
44
+ return err.message;
45
+ }
46
+ if (info instanceof Error) {
47
+ return info.message || info.name;
48
+ }
49
+ if (typeof info === 'string' && info) {
50
+ return info;
51
+ }
52
+ return 'missing or invalid token';
53
+ }
33
54
  };
34
55
  exports.DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard;
35
- exports.DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard = __decorate([
56
+ exports.DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard_1 = __decorate([
36
57
  (0, common_1.Injectable)(),
37
58
  __metadata("design:paramtypes", [core_1.Reflector, Object])
38
59
  ], DynamicApiJwtAuthGuard);
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-api-jwt-auth.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/dynamic-api-jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8D;AAC9D,uCAAyC;AACzC,+CAA6C;AAC7C,8CAA8C;AAIvC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAC1D,YACmB,SAAoB,EACpB,KAA4B;QAE7C,KAAK,EAAE,CAAC;QAHS,cAAS,GAAT,SAAS,CAAW;QACpB,UAAK,GAAL,KAAK,CAAuB;IAG/C,CAAC;IAED,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,0BAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AApBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAGmB,gBAAS;GAF5B,sBAAsB,CAoBlC"}
1
+ {"version":3,"file":"dynamic-api-jwt-auth.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/dynamic-api-jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA8D;AAC9D,uCAAyC;AACzC,+CAA6C;AAC7C,8CAA8C;AAE9C,sCAAoD;AAG7C,IAAM,sBAAsB,8BAA5B,MAAM,sBAAuB,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAG1D,YACmB,SAAoB,EACpB,KAA4B;QAE7C,KAAK,EAAE,CAAC;QAHS,cAAS,GAAT,SAAS,CAAW;QACpB,UAAK,GAAL,KAAK,CAAuB;QAJ9B,WAAM,GAAG,IAAI,gCAAuB,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IAOnF,CAAC;IAED,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,0BAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAWD,aAAa,CACX,GAAY,EACZ,IAAW,EACX,IAAa,EACb,OAAyB,EACzB,MAAgB;QAEhB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAEO,sBAAsB,CAAC,GAAY,EAAE,IAAa;QACxD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF,CAAA;AA7DY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAKmB,gBAAS;GAJ5B,sBAAsB,CA6DlC"}
@@ -0,0 +1,6 @@
1
+ import { INestApplication } from '@nestjs/common';
2
+ interface DynamicAPIIndexSyncOptions {
3
+ throwOnError?: boolean;
4
+ }
5
+ declare function enableDynamicAPIIndexSync(app: INestApplication, options?: DynamicAPIIndexSyncOptions): Promise<void>;
6
+ export { enableDynamicAPIIndexSync, DynamicAPIIndexSyncOptions };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enableDynamicAPIIndexSync = enableDynamicAPIIndexSync;
4
+ const mongoose_1 = require("@nestjs/mongoose");
5
+ const logger_1 = require("../logger");
6
+ function isDuplicateKeyError(error) {
7
+ return !!error && typeof error === 'object' && error.code === 11000;
8
+ }
9
+ function buildActionableMessage(collectionName, error) {
10
+ const field = error.keyPattern ? Object.keys(error.keyPattern)[0] : undefined;
11
+ const clashValue = field ? error.keyValue?.[field] : undefined;
12
+ const isMissingFieldClash = field !== undefined && (clashValue === null || clashValue === undefined);
13
+ const fieldSuffix = field ? ` (field "${field}")` : '';
14
+ const base = `[DynamicAPI] enableDynamicAPIIndexSync: failed to build a unique index on `
15
+ + `"${collectionName}"${fieldSuffix} — existing documents already violate `
16
+ + `the uniqueness constraint.`;
17
+ if (!isMissingFieldClash) {
18
+ return `${base} Original error: ${error.message}`;
19
+ }
20
+ return `${base} This is the classic case: legacy documents that predate the field don't have it `
21
+ + `(so it's absent/null on all of them), and MongoDB treats every one of those nulls as a `
22
+ + `duplicate of the others. Fix: scope the unique index to documents where the field actually `
23
+ + `exists — e.g. \`@Prop({ unique: true, partialFilterExpression: { ${field}: { $exists: true } } })\` `
24
+ + `— then re-run the sync. Original error: ${error.message}`;
25
+ }
26
+ async function enableDynamicAPIIndexSync(app, options = {}) {
27
+ const { throwOnError = true } = options;
28
+ const logger = new logger_1.MongoDBDynamicApiLogger('enableDynamicAPIIndexSync');
29
+ const { DynamicApiModule } = require('../dynamic-api.module');
30
+ const connectionName = DynamicApiModule.state.get('connectionName');
31
+ const connection = app.get((0, mongoose_1.getConnectionToken)(connectionName));
32
+ for (const [name, model] of Object.entries(connection.models)) {
33
+ try {
34
+ await model.syncIndexes();
35
+ }
36
+ catch (error) {
37
+ if (!isDuplicateKeyError(error)) {
38
+ throw error;
39
+ }
40
+ const message = buildActionableMessage(model.collection?.collectionName ?? name, error);
41
+ logger.error(message);
42
+ if (throwOnError) {
43
+ throw new Error(message);
44
+ }
45
+ }
46
+ }
47
+ }
48
+ //# sourceMappingURL=index-sync.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-sync.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index-sync.helper.ts"],"names":[],"mappings":";;AAqGS,8DAAyB;AApGlC,+CAAsD;AAEtD,sCAAoD;AAqBpD,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAgC,CAAC,IAAI,KAAK,KAAK,CAAC;AAClG,CAAC;AAED,SAAS,sBAAsB,CAAC,cAAsB,EAAE,KAA6B;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,mBAAmB,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC;IAErG,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,4EAA4E;UACrF,IAAI,cAAc,IAAI,WAAW,wCAAwC;UACzE,4BAA4B,CAAC;IAEjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,GAAG,IAAI,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,IAAI,mFAAmF;UAC7F,yFAAyF;UACzF,6FAA6F;UAC7F,oEAAoE,KAAK,6BAA6B;UACtG,2CAA2C,KAAK,CAAC,OAAO,EAAE,CAAC;AACjE,CAAC;AAsBD,KAAK,UAAU,yBAAyB,CACtC,GAAqB,EACrB,UAAsC,EAAE;IAExC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,gCAAuB,CAAC,2BAA2B,CAAC,CAAC;IAIxE,MAAM,EAAE,gBAAgB,EAAE,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAS,gBAAgB,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAa,IAAA,6BAAkB,EAAC,cAAc,CAAC,CAAC,CAAC;IAE3E,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;YACxF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtB,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,8 +1,13 @@
1
1
  export * from './controller-ability-predicates.helper';
2
2
  export * from './format.helper';
3
3
  export * from './from-user.helper';
4
+ export * from './index-sync.helper';
4
5
  export * from './lodash.helper';
6
+ export * from './mint-token-pair.helper';
5
7
  export * from './mixin-data.helper';
8
+ export * from './mongo-transaction.helper';
9
+ export * from './mongoose-cast-error.helper';
10
+ export * from './predicate-identifier.helper';
6
11
  export * from './repository.helper';
7
12
  export * from './resolve-broadcast.helper';
8
13
  export * from './resolve-rooms.helper';
@@ -10,6 +15,7 @@ export * from './route-decorators.helper';
10
15
  export * from './route-description.helper';
11
16
  export * from './schema.helper';
12
17
  export * from './socket-config.helper';
18
+ export * from './strip-business-validators.helper';
13
19
  export * from './swagger-config.helper';
14
20
  export * from './validation-config.helper';
15
21
  export * from './versioning-config.helper';
@@ -17,8 +17,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./controller-ability-predicates.helper"), exports);
18
18
  __exportStar(require("./format.helper"), exports);
19
19
  __exportStar(require("./from-user.helper"), exports);
20
+ __exportStar(require("./index-sync.helper"), exports);
20
21
  __exportStar(require("./lodash.helper"), exports);
22
+ __exportStar(require("./mint-token-pair.helper"), exports);
21
23
  __exportStar(require("./mixin-data.helper"), exports);
24
+ __exportStar(require("./mongo-transaction.helper"), exports);
25
+ __exportStar(require("./mongoose-cast-error.helper"), exports);
26
+ __exportStar(require("./predicate-identifier.helper"), exports);
22
27
  __exportStar(require("./repository.helper"), exports);
23
28
  __exportStar(require("./resolve-broadcast.helper"), exports);
24
29
  __exportStar(require("./resolve-rooms.helper"), exports);
@@ -26,6 +31,7 @@ __exportStar(require("./route-decorators.helper"), exports);
26
31
  __exportStar(require("./route-description.helper"), exports);
27
32
  __exportStar(require("./schema.helper"), exports);
28
33
  __exportStar(require("./socket-config.helper"), exports);
34
+ __exportStar(require("./strip-business-validators.helper"), exports);
29
35
  __exportStar(require("./swagger-config.helper"), exports);
30
36
  __exportStar(require("./validation-config.helper"), exports);
31
37
  __exportStar(require("./versioning-config.helper"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,kDAAgC;AAChC,qDAAmC;AACnC,kDAAgC;AAChC,sDAAoC;AACpC,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,yDAAuC;AACvC,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C;AAC3C,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,kDAAgC;AAChC,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAChC,2DAAyC;AACzC,sDAAoC;AACpC,6DAA2C;AAC3C,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C;AAC3C,oDAAkC"}
@@ -0,0 +1,13 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { BaseEntity } from '../models';
3
+ interface MintTokenPairOptions<Entity extends BaseEntity> {
4
+ loginField?: keyof Entity;
5
+ additionalFields?: (keyof Entity)[];
6
+ refreshTokenField?: keyof Entity;
7
+ }
8
+ interface MintTokenPairResult {
9
+ accessToken: string;
10
+ refreshToken: string;
11
+ }
12
+ declare function mintTokenPair<Entity extends BaseEntity>(entity: Type<Entity>, user: Entity, options?: MintTokenPairOptions<Entity>): Promise<MintTokenPairResult>;
13
+ export { mintTokenPair, MintTokenPairOptions, MintTokenPairResult };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mintTokenPair = mintTokenPair;
4
+ const jwt_1 = require("@nestjs/jwt");
5
+ const node_crypto_1 = require("node:crypto");
6
+ const services_1 = require("../services");
7
+ async function mintTokenPair(entity, user, options = {}) {
8
+ const { DynamicApiModule } = require('../dynamic-api.module');
9
+ const state = DynamicApiModule.state;
10
+ const jwtSecret = state.get('jwtSecret');
11
+ if (!jwtSecret) {
12
+ throw new Error('[DynamicAPI] mintTokenPair: useAuth is not configured in DynamicApiModule.forRoot(). '
13
+ + 'mintTokenPair reuses the JWT secrets/expirations configured there.');
14
+ }
15
+ const credentials = state.get('credentials');
16
+ const loginField = (options.loginField ?? credentials?.loginField);
17
+ const additionalFields = (options.additionalFields ?? state.get('additionalRequestFields') ?? []);
18
+ const refreshTokenField = (options.refreshTokenField ?? state.get('refreshTokenField'));
19
+ const jwtService = new jwt_1.JwtService({
20
+ secret: jwtSecret,
21
+ signOptions: { expiresIn: state.get('jwtExpirationTime') },
22
+ });
23
+ const fieldsToBuild = ['_id', 'id', loginField, ...additionalFields];
24
+ const payload = fieldsToBuild.reduce((acc, field) => (user[field] === undefined ? acc : { ...acc, [field]: user[field] }), {});
25
+ const accessToken = jwtService.sign(payload);
26
+ const refreshSecret = state.get('jwtRefreshSecret');
27
+ const refreshTokenExpiresIn = state.get('jwtRefreshTokenExpiresIn');
28
+ const refreshToken = jwtService.sign({ ...payload, jti: (0, node_crypto_1.randomUUID)() }, {
29
+ ...(refreshSecret ? { secret: refreshSecret } : {}),
30
+ ...(refreshTokenExpiresIn ? { expiresIn: refreshTokenExpiresIn } : {}),
31
+ });
32
+ if (refreshTokenField && (user._id || user.id)) {
33
+ const decoded = jwtService.decode(refreshToken);
34
+ const jti = decoded && typeof decoded !== 'string' ? decoded['jti'] : '';
35
+ const hashedJti = await new services_1.BcryptService().hashPassword(jti);
36
+ const model = await services_1.DynamicApiGlobalStateService.getEntityModel(entity);
37
+ await model.updateOne({ _id: user._id || user.id }, { $set: { [refreshTokenField]: JSON.stringify({ currentHash: hashedJti }) } }).exec();
38
+ }
39
+ return { accessToken, refreshToken };
40
+ }
41
+ //# sourceMappingURL=mint-token-pair.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint-token-pair.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mint-token-pair.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare function isTransactionsUnsupportedError(error: unknown): boolean;
2
+ export { isTransactionsUnsupportedError };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTransactionsUnsupportedError = isTransactionsUnsupportedError;
4
+ function isTransactionsUnsupportedError(error) {
5
+ if (!(error instanceof Error)) {
6
+ return false;
7
+ }
8
+ const { code } = error;
9
+ return code === 20 || /replica set member or mongos/i.test(error.message);
10
+ }
11
+ //# sourceMappingURL=mongo-transaction.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-transaction.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mongo-transaction.helper.ts"],"names":[],"mappings":";;AAqBS,wEAA8B;AAVvC,SAAS,8BAA8B,CAAC,KAAc;IACpD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,KAA0C,CAAC;IAE5D,OAAO,IAAI,KAAK,EAAE,IAAI,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare function isMongooseCastError(error: unknown): boolean;
2
+ export { isMongooseCastError };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isMongooseCastError = isMongooseCastError;
4
+ const mongoose_1 = require("mongoose");
5
+ function isMongooseCastError(error) {
6
+ return error instanceof mongoose_1.Error.CastError;
7
+ }
8
+ //# sourceMappingURL=mongoose-cast-error.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoose-cast-error.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mongoose-cast-error.helper.ts"],"names":[],"mappings":";;AAmBS,kDAAmB;AAnB5B,uCAAkD;AAelD,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,gBAAa,CAAC,SAAS,CAAC;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare function resolveIdentifierField<T>(source: T, fields: keyof T | (keyof T)[]): unknown;
2
+ declare function identifiersMatch(entityValue: unknown, userValue: unknown): boolean;
3
+ export { resolveIdentifierField, identifiersMatch };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveIdentifierField = resolveIdentifierField;
4
+ exports.identifiersMatch = identifiersMatch;
5
+ function resolveIdentifierField(source, fields) {
6
+ const fieldList = Array.isArray(fields) ? fields : [fields];
7
+ for (const field of fieldList) {
8
+ const value = source[field];
9
+ if (value !== undefined && value !== null) {
10
+ return value;
11
+ }
12
+ }
13
+ return undefined;
14
+ }
15
+ function isStringifiable(value) {
16
+ const type = typeof value;
17
+ if (type === 'string' || type === 'number' || type === 'boolean' || type === 'bigint') {
18
+ return true;
19
+ }
20
+ return type === 'object' && value !== null && value.toString !== Object.prototype.toString;
21
+ }
22
+ function identifiersMatch(entityValue, userValue) {
23
+ if (entityValue === userValue) {
24
+ return true;
25
+ }
26
+ if (entityValue == null || userValue == null) {
27
+ return false;
28
+ }
29
+ if (!isStringifiable(entityValue) || !isStringifiable(userValue)) {
30
+ return false;
31
+ }
32
+ return String(entityValue) === String(userValue);
33
+ }
34
+ //# sourceMappingURL=predicate-identifier.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate-identifier.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/predicate-identifier.helper.ts"],"names":[],"mappings":";;AAmES,wDAAsB;AAAE,4CAAgB;AA1DjD,SAAS,sBAAsB,CAAI,MAAS,EAAE,MAA6B;IACzE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAE1B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAgB,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AACzG,CAAC;AAWD,SAAS,gBAAgB,CAAC,WAAoB,EAAE,SAAkB;IAChE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,WAAW,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Type } from '@nestjs/common';
2
+ declare function stripBusinessValidators(target: Type<object>, validatorNames?: string[]): void;
3
+ export { stripBusinessValidators };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stripBusinessValidators = stripBusinessValidators;
4
+ const class_validator_1 = require("class-validator");
5
+ const BUSINESS_VALIDATOR_NAMES = ['isUnique', 'entityExists'];
6
+ function stripBusinessValidators(target, validatorNames = BUSINESS_VALIDATOR_NAMES) {
7
+ const { validationMetadatas } = (0, class_validator_1.getMetadataStorage)();
8
+ if (!(validationMetadatas instanceof Map)) {
9
+ return;
10
+ }
11
+ const metadatas = validationMetadatas.get(target);
12
+ if (!metadatas?.length) {
13
+ return;
14
+ }
15
+ validationMetadatas.set(target, metadatas.filter((metadata) => !validatorNames.includes(metadata.name)));
16
+ }
17
+ //# sourceMappingURL=strip-business-validators.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip-business-validators.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/strip-business-validators.helper.ts"],"names":[],"mappings":";;AA8CS,0DAAuB;AA7ChC,qDAAqD;AAMrD,MAAM,wBAAwB,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAe9D,SAAS,uBAAuB,CAC9B,MAAoB,EACpB,iBAA2B,wBAAwB;IAEnD,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAA,oCAAkB,GAEjD,CAAC;IAEF,IAAI,CAAC,CAAC,mBAAmB,YAAY,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,GAAG,CACrB,MAAM,EACN,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC"}
package/src/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export * from './mixins';
12
12
  export * from './models';
13
13
  export * from './modules';
14
14
  export * from './modules/presence';
15
+ export * from './modules/health';
15
16
  export * from './predicates';
16
17
  export * from './routes';
17
18
  export * from './services';
package/src/index.js CHANGED
@@ -29,6 +29,7 @@ __exportStar(require("./mixins"), exports);
29
29
  __exportStar(require("./models"), exports);
30
30
  __exportStar(require("./modules"), exports);
31
31
  __exportStar(require("./modules/presence"), exports);
32
+ __exportStar(require("./modules/health"), exports);
32
33
  __exportStar(require("./predicates"), exports);
33
34
  __exportStar(require("./routes"), exports);
34
35
  __exportStar(require("./services"), exports);
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,qDAAmC;AACnC,+CAA6B;AAC7B,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB;AACxB,uDAAqC;AACrC,gFAAsG;AAAvE,iIAAA,uBAAuB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,qDAAmC;AACnC,mDAAiC;AACjC,+CAA6B;AAC7B,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB;AACxB,uDAAqC;AACrC,gFAAsG;AAAvE,iIAAA,uBAAuB,OAAA"}
@@ -1 +1,2 @@
1
1
  export * from './dynamic-api-cache.interceptor';
2
+ export * from './merge-id-param.interceptor';
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./dynamic-api-cache.interceptor"), exports);
18
+ __exportStar(require("./merge-id-param.interceptor"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,+DAA6C"}
@@ -0,0 +1,6 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ declare class MergeIdParamInterceptor implements NestInterceptor {
4
+ intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
5
+ }
6
+ export { MergeIdParamInterceptor };
@@ -0,0 +1,24 @@
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.MergeIdParamInterceptor = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let MergeIdParamInterceptor = class MergeIdParamInterceptor {
12
+ intercept(context, next) {
13
+ const request = context.switchToHttp().getRequest();
14
+ if (request?.body && typeof request.body === 'object' && request.params?.id !== undefined) {
15
+ request.body.id = request.params.id;
16
+ }
17
+ return next.handle();
18
+ }
19
+ };
20
+ exports.MergeIdParamInterceptor = MergeIdParamInterceptor;
21
+ exports.MergeIdParamInterceptor = MergeIdParamInterceptor = __decorate([
22
+ (0, common_1.Injectable)()
23
+ ], MergeIdParamInterceptor);
24
+ //# sourceMappingURL=merge-id-param.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-id-param.interceptor.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/merge-id-param.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4F;AAmB5F,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAC3B,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAEpD,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1F,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAEQ,0DAAuB;kCAZ1B,uBAAuB;IAD5B,IAAA,mBAAU,GAAE;GACP,uBAAuB,CAU5B"}
@@ -0,0 +1,10 @@
1
+ type AuditLogAction = 'create' | 'update' | 'replace' | 'duplicate' | 'delete';
2
+ interface AuditLogEntry {
3
+ action: AuditLogAction;
4
+ entityId: string;
5
+ before: Record<string, unknown> | null;
6
+ after: Record<string, unknown> | null;
7
+ user: unknown;
8
+ timestamp: Date;
9
+ }
10
+ export type { AuditLogAction, AuditLogEntry };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=dynamic-api-audit-log.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-api-audit-log.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-audit-log.interface.ts"],"names":[],"mappings":""}
@@ -28,6 +28,8 @@ interface DynamicApiGlobalState {
28
28
  jwtRefreshUseCookie: boolean | undefined;
29
29
  onAfterSaveError: OnAfterSaveErrorHook | undefined;
30
30
  refreshTokenOnUpdate: boolean;
31
+ refreshTokenField: string | undefined;
32
+ additionalRequestFields: string[];
31
33
  routesConfig: RoutesConfig;
32
34
  gatewayOptions: GatewayMetadata | undefined;
33
35
  broadcastGatewayOptions: GatewayMetadata | undefined;
@@ -0,0 +1,8 @@
1
+ interface DynamicApiHealthCheckOptions {
2
+ path?: string;
3
+ }
4
+ interface DynamicApiHealthCheckResponse {
5
+ status: 'ok' | 'error';
6
+ mongo: 'up' | 'down';
7
+ }
8
+ export type { DynamicApiHealthCheckOptions, DynamicApiHealthCheckResponse };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=dynamic-api-health-check.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-api-health-check.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-health-check.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ interface RateLimitConfig {
2
+ limit: number;
3
+ ttl: number;
4
+ blockDuration?: number;
5
+ }
6
+ export type { RateLimitConfig };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=dynamic-api-rate-limit.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-api-rate-limit.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-rate-limit.interface.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import { NestInterceptor, Type, ValidationPipeOptions } from '@nestjs/common';
2
+ import { PopulateOptions } from 'mongoose';
2
3
  import { BaseEntity } from '../models';
3
4
  import { AbilityPredicate, PredicateBehavior } from './dynamic-api-ability.interface';
4
5
  import { BroadcastConfig } from './dynamic-api-broadcast-config.interface';
@@ -26,6 +27,7 @@ interface BaseRouteConfig<Entity extends BaseEntity> {
26
27
  isArrayResponse?: boolean;
27
28
  useInterceptors?: Type<NestInterceptor>[];
28
29
  fromUser?: FromUserMap<Entity>;
30
+ auditLog?: boolean;
29
31
  }
30
32
  interface CreateOneRouteConfig<Entity extends BaseEntity, BodyDTO = Entity> extends BaseRouteConfig<Entity> {
31
33
  type: 'CreateOne';
@@ -67,11 +69,14 @@ interface DeleteManyRouteConfig<Entity extends BaseEntity> extends BaseRouteConf
67
69
  beforeDeleteCallback?: BeforeDeleteManyCallback<Entity, BeforeSaveDeleteManyContext>;
68
70
  cascade?: CascadeConfig[];
69
71
  }
72
+ type PopulateConfig = string | PopulateOptions | (string | PopulateOptions)[];
70
73
  interface GetOneRouteConfig<Entity extends BaseEntity> extends BaseRouteConfig<Entity> {
71
74
  type: 'GetOne';
75
+ populate?: PopulateConfig;
72
76
  }
73
77
  interface GetManyRouteConfig<Entity extends BaseEntity> extends BaseRouteConfig<Entity> {
74
78
  type: 'GetMany';
79
+ populate?: PopulateConfig;
75
80
  }
76
81
  interface AggregateRouteConfig<Entity extends BaseEntity> extends BaseRouteConfig<Entity> {
77
82
  type: 'Aggregate';
@@ -88,4 +93,4 @@ declare function defineUpdateManyCallback<Entity extends BaseEntity, BodyDTO = E
88
93
  declare function defineReplaceCallback<Entity extends BaseEntity, BodyDTO = Entity>(cb: BeforeSaveCallback<Entity, BeforeSaveReplaceContext<Entity, BodyDTO>>): BeforeSaveCallback<Entity, BeforeSaveReplaceContext<Entity, BodyDTO>>;
89
94
  declare function defineDuplicateCallback<Entity extends BaseEntity, BodyDTO = Entity>(cb: BeforeSaveCallback<Entity, BeforeSaveDuplicateContext<Entity, BodyDTO>>): BeforeSaveCallback<Entity, BeforeSaveDuplicateContext<Entity, BodyDTO>>;
90
95
  declare function defineDuplicateManyCallback<Entity extends BaseEntity, BodyDTO = Entity>(cb: BeforeSaveListCallback<Entity, BeforeSaveDuplicateManyContext<Entity, BodyDTO>>): BeforeSaveListCallback<Entity, BeforeSaveDuplicateManyContext<Entity, BodyDTO>>;
91
- export { BaseRouteConfig, CreateOneRouteConfig, CreateManyRouteConfig, UpdateOneRouteConfig, UpdateManyRouteConfig, ReplaceOneRouteConfig, DuplicateOneRouteConfig, DuplicateManyRouteConfig, DeleteOneRouteConfig, DeleteManyRouteConfig, GetOneRouteConfig, GetManyRouteConfig, AggregateRouteConfig, CustomOperationRouteConfig, DynamicApiRouteConfig, DynamicAPIRouteConfig, FromUserMap, defineCreateCallback, defineCreateManyCallback, defineUpdateCallback, defineUpdateManyCallback, defineReplaceCallback, defineDuplicateCallback, defineDuplicateManyCallback, };
96
+ export { BaseRouteConfig, CreateOneRouteConfig, CreateManyRouteConfig, UpdateOneRouteConfig, UpdateManyRouteConfig, ReplaceOneRouteConfig, DuplicateOneRouteConfig, DuplicateManyRouteConfig, DeleteOneRouteConfig, DeleteManyRouteConfig, GetOneRouteConfig, GetManyRouteConfig, PopulateConfig, AggregateRouteConfig, CustomOperationRouteConfig, DynamicApiRouteConfig, DynamicAPIRouteConfig, FromUserMap, defineCreateCallback, defineCreateManyCallback, defineUpdateCallback, defineUpdateManyCallback, defineReplaceCallback, defineDuplicateCallback, defineDuplicateManyCallback, };
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-api-route-config.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-route-config.interface.ts"],"names":[],"mappings":";;AAgXE,oDAAoB;AACpB,4DAAwB;AACxB,oDAAoB;AACpB,4DAAwB;AACxB,sDAAqB;AACrB,0DAAuB;AACvB,kEAA2B;AAtG7B,SAAS,oBAAoB,CAC3B,EAAwE;IAExE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,wBAAwB,CAC/B,EAAgF;IAEhF,OAAO,EAAE,CAAC;AACZ,CAAC;AAkBD,SAAS,oBAAoB,CAC3B,EAAwE;IAExE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,wBAAwB,CAC/B,EAAgF;IAEhF,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,qBAAqB,CAC5B,EAAyE;IAEzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,uBAAuB,CAC9B,EAA2E;IAE3E,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,2BAA2B,CAClC,EAAmF;IAEnF,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"dynamic-api-route-config.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-route-config.interface.ts"],"names":[],"mappings":";;AAmZE,oDAAoB;AACpB,4DAAwB;AACxB,oDAAoB;AACpB,4DAAwB;AACxB,sDAAqB;AACrB,0DAAuB;AACvB,kEAA2B;AAvG7B,SAAS,oBAAoB,CAC3B,EAAwE;IAExE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,wBAAwB,CAC/B,EAAgF;IAEhF,OAAO,EAAE,CAAC;AACZ,CAAC;AAkBD,SAAS,oBAAoB,CAC3B,EAAwE;IAExE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,wBAAwB,CAC/B,EAAgF;IAEhF,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,qBAAqB,CAC5B,EAAyE;IAEzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,uBAAuB,CAC9B,EAA2E;IAE3E,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,2BAA2B,CAClC,EAAmF;IAEnF,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -49,6 +49,7 @@ type CallbackRetryOptions = {
49
49
  type AfterSaveCallbackConfig<Entity extends BaseEntity, User = unknown> = {
50
50
  callback: AfterSaveCallback<Entity, User> | undefined;
51
51
  retry?: CallbackRetryOptions;
52
+ auditLog?: boolean;
52
53
  };
53
54
  type OnAfterSaveErrorHook = (error: unknown, context: {
54
55
  entityName: string | undefined;
@@ -22,3 +22,6 @@ export * from './dynamic-api-service-provider.interface';
22
22
  export * from './dynamic-api-swagger-options.type';
23
23
  export * from './dynamic-api-web-socket.interface';
24
24
  export * from './dynamic-api-presence.interface';
25
+ export * from './dynamic-api-health-check.interface';
26
+ export * from './dynamic-api-rate-limit.interface';
27
+ export * from './dynamic-api-audit-log.interface';
@@ -38,4 +38,7 @@ __exportStar(require("./dynamic-api-service-provider.interface"), exports);
38
38
  __exportStar(require("./dynamic-api-swagger-options.type"), exports);
39
39
  __exportStar(require("./dynamic-api-web-socket.interface"), exports);
40
40
  __exportStar(require("./dynamic-api-presence.interface"), exports);
41
+ __exportStar(require("./dynamic-api-health-check.interface"), exports);
42
+ __exportStar(require("./dynamic-api-rate-limit.interface"), exports);
43
+ __exportStar(require("./dynamic-api-audit-log.interface"), exports);
41
44
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6EAA2D;AAC3D,uEAAqD;AACrD,kEAAgD;AAChD,4EAA0D;AAC1D,wEAAsD;AACtD,kEAAgD;AAChD,2EAAyD;AACzD,yEAAuD;AACvD,yEAAuD;AACvD,uEAAqD;AACrD,kEAAgD;AAChD,yEAAuD;AACvD,uEAAqD;AACrD,uEAAqD;AACrD,kEAAgD;AAChD,oEAAkD;AAClD,gEAA8C;AAC9C,yEAAuD;AACvD,uFAAqE;AACrE,2EAAyD;AACzD,2EAAyD;AACzD,qEAAmD;AACnD,qEAAmD;AACnD,mEAAiD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6EAA2D;AAC3D,uEAAqD;AACrD,kEAAgD;AAChD,4EAA0D;AAC1D,wEAAsD;AACtD,kEAAgD;AAChD,2EAAyD;AACzD,yEAAuD;AACvD,yEAAuD;AACvD,uEAAqD;AACrD,kEAAgD;AAChD,yEAAuD;AACvD,uEAAqD;AACrD,uEAAqD;AACrD,kEAAgD;AAChD,oEAAkD;AAClD,gEAA8C;AAC9C,yEAAuD;AACvD,uFAAqE;AACrE,2EAAyD;AACzD,2EAAyD;AACzD,qEAAmD;AACnD,qEAAmD;AACnD,mEAAiD;AACjD,uEAAqD;AACrD,qEAAmD;AACnD,oEAAkD"}