@lenne.tech/nest-server 8.0.1 → 8.2.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 (164) hide show
  1. package/dist/config.env.js +3 -2
  2. package/dist/config.env.js.map +1 -1
  3. package/dist/core/common/args/pagination.args.js +1 -1
  4. package/dist/core/common/args/pagination.args.js.map +1 -1
  5. package/dist/core/common/decorators/restricted.decorator.d.ts +2 -0
  6. package/dist/core/common/decorators/restricted.decorator.js +10 -7
  7. package/dist/core/common/decorators/restricted.decorator.js.map +1 -1
  8. package/dist/core/common/helpers/config.helper.d.ts +2 -1
  9. package/dist/core/common/helpers/config.helper.js +11 -7
  10. package/dist/core/common/helpers/config.helper.js.map +1 -1
  11. package/dist/core/common/helpers/context.helper.d.ts +7 -1
  12. package/dist/core/common/helpers/context.helper.js +33 -29
  13. package/dist/core/common/helpers/context.helper.js.map +1 -1
  14. package/dist/core/common/helpers/db.helper.d.ts +35 -0
  15. package/dist/core/common/helpers/db.helper.js +345 -0
  16. package/dist/core/common/helpers/db.helper.js.map +1 -0
  17. package/dist/core/common/helpers/file.helper.d.ts +8 -1
  18. package/dist/core/common/helpers/file.helper.js +43 -31
  19. package/dist/core/common/helpers/file.helper.js.map +1 -1
  20. package/dist/core/common/helpers/filter.helper.d.ts +3 -0
  21. package/dist/core/common/helpers/filter.helper.js +93 -81
  22. package/dist/core/common/helpers/filter.helper.js.map +1 -1
  23. package/dist/core/common/helpers/graphql.helper.d.ts +24 -1
  24. package/dist/core/common/helpers/graphql.helper.js +144 -96
  25. package/dist/core/common/helpers/graphql.helper.js.map +1 -1
  26. package/dist/core/common/helpers/input.helper.d.ts +40 -4
  27. package/dist/core/common/helpers/input.helper.js +253 -97
  28. package/dist/core/common/helpers/input.helper.js.map +1 -1
  29. package/dist/core/common/helpers/model.helper.d.ts +11 -0
  30. package/dist/core/common/helpers/model.helper.js +41 -29
  31. package/dist/core/common/helpers/model.helper.js.map +1 -1
  32. package/dist/core/common/helpers/service.helper.d.ts +21 -1
  33. package/dist/core/common/helpers/service.helper.js +80 -72
  34. package/dist/core/common/helpers/service.helper.js.map +1 -1
  35. package/dist/core/common/inputs/combined-filter.input.js +1 -1
  36. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  37. package/dist/core/common/inputs/core-input.input.js +1 -1
  38. package/dist/core/common/inputs/core-input.input.js.map +1 -1
  39. package/dist/core/common/interceptors/check-response.interceptor.js +1 -1
  40. package/dist/core/common/interceptors/check-response.interceptor.js.map +1 -1
  41. package/dist/core/common/interfaces/resolve-selector.interface.d.ts +5 -0
  42. package/dist/core/common/interfaces/resolve-selector.interface.js +3 -0
  43. package/dist/core/common/interfaces/resolve-selector.interface.js.map +1 -0
  44. package/dist/core/common/interfaces/service-options.interface.d.ts +36 -0
  45. package/dist/core/common/interfaces/service-options.interface.js +3 -0
  46. package/dist/core/common/interfaces/service-options.interface.js.map +1 -0
  47. package/dist/core/common/models/core-model.model.d.ts +5 -1
  48. package/dist/core/common/models/core-model.model.js +1 -1
  49. package/dist/core/common/models/core-model.model.js.map +1 -1
  50. package/dist/core/common/pipes/check-input.pipe.js +2 -2
  51. package/dist/core/common/pipes/check-input.pipe.js.map +1 -1
  52. package/dist/core/common/pipes/map-and-validate.pipe.js +1 -1
  53. package/dist/core/common/pipes/map-and-validate.pipe.js.map +1 -1
  54. package/dist/core/common/plugins/mongoose-id.plugin.js +1 -1
  55. package/dist/core/common/plugins/mongoose-id.plugin.js.map +1 -1
  56. package/dist/core/common/services/crud.service.d.ts +13 -0
  57. package/dist/core/common/services/crud.service.js +57 -0
  58. package/dist/core/common/services/crud.service.js.map +1 -0
  59. package/dist/core/common/services/email.service.js +8 -8
  60. package/dist/core/common/services/email.service.js.map +1 -1
  61. package/dist/core/common/services/module.service.d.ts +39 -0
  62. package/dist/core/common/services/module.service.js +76 -0
  63. package/dist/core/common/services/module.service.js.map +1 -0
  64. package/dist/core/common/types/core-model-constructor.type.d.ts +21 -0
  65. package/dist/core/common/types/core-model-constructor.type.js +3 -0
  66. package/dist/core/common/types/core-model-constructor.type.js.map +1 -0
  67. package/dist/core/common/types/field-selection.type.d.ts +4 -0
  68. package/dist/core/common/types/field-selection.type.js +3 -0
  69. package/dist/core/common/types/field-selection.type.js.map +1 -0
  70. package/dist/core/common/types/ids.type.d.ts +8 -0
  71. package/dist/core/common/types/ids.type.js +3 -0
  72. package/dist/core/common/types/ids.type.js.map +1 -0
  73. package/dist/core/common/types/string-or-object-id.type.d.ts +2 -0
  74. package/dist/core/common/types/string-or-object-id.type.js +3 -0
  75. package/dist/core/common/types/string-or-object-id.type.js.map +1 -0
  76. package/dist/core/modules/auth/core-auth.resolver.d.ts +2 -1
  77. package/dist/core/modules/auth/core-auth.resolver.js +4 -3
  78. package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
  79. package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
  80. package/dist/core/modules/auth/services/core-auth-user.service.d.ts +3 -1
  81. package/dist/core/modules/auth/services/core-auth-user.service.js.map +1 -1
  82. package/dist/core/modules/auth/services/core-auth.service.d.ts +2 -1
  83. package/dist/core/modules/auth/services/core-auth.service.js +6 -4
  84. package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
  85. package/dist/core/modules/user/core-user.model.js +1 -1
  86. package/dist/core/modules/user/core-user.model.js.map +1 -1
  87. package/dist/core/modules/user/core-user.service.d.ts +16 -25
  88. package/dist/core/modules/user/core-user.service.js +74 -90
  89. package/dist/core/modules/user/core-user.service.js.map +1 -1
  90. package/dist/core.module.js +1 -1
  91. package/dist/core.module.js.map +1 -1
  92. package/dist/index.d.ts +9 -1
  93. package/dist/index.js +9 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/server/modules/auth/auth.resolver.d.ts +2 -1
  96. package/dist/server/modules/auth/auth.resolver.js +4 -3
  97. package/dist/server/modules/auth/auth.resolver.js.map +1 -1
  98. package/dist/server/modules/file/file.controller.js +1 -1
  99. package/dist/server/modules/file/file.controller.js.map +1 -1
  100. package/dist/server/modules/user/avatar.controller.js +1 -1
  101. package/dist/server/modules/user/avatar.controller.js.map +1 -1
  102. package/dist/server/modules/user/user.model.d.ts +4 -2
  103. package/dist/server/modules/user/user.module.js +7 -3
  104. package/dist/server/modules/user/user.module.js.map +1 -1
  105. package/dist/server/modules/user/user.resolver.d.ts +8 -7
  106. package/dist/server/modules/user/user.resolver.js +85 -49
  107. package/dist/server/modules/user/user.resolver.js.map +1 -1
  108. package/dist/server/modules/user/user.service.d.ts +9 -18
  109. package/dist/server/modules/user/user.service.js +19 -30
  110. package/dist/server/modules/user/user.service.js.map +1 -1
  111. package/dist/test/test.helper.d.ts +1 -2
  112. package/dist/test/test.helper.js +1 -16
  113. package/dist/test/test.helper.js.map +1 -1
  114. package/dist/tsconfig.build.tsbuildinfo +1 -1
  115. package/package.json +58 -60
  116. package/src/config.env.ts +3 -2
  117. package/src/core/common/args/pagination.args.ts +2 -2
  118. package/src/core/common/decorators/restricted.decorator.ts +16 -10
  119. package/src/core/common/helpers/config.helper.ts +26 -6
  120. package/src/core/common/helpers/context.helper.ts +42 -33
  121. package/src/core/common/helpers/db.helper.ts +580 -0
  122. package/src/core/common/helpers/file.helper.ts +76 -49
  123. package/src/core/common/helpers/filter.helper.ts +119 -96
  124. package/src/core/common/helpers/graphql.helper.ts +219 -117
  125. package/src/core/common/helpers/input.helper.ts +347 -108
  126. package/src/core/common/helpers/model.helper.ts +102 -57
  127. package/src/core/common/helpers/service.helper.ts +149 -117
  128. package/src/core/common/inputs/combined-filter.input.ts +2 -2
  129. package/src/core/common/inputs/core-input.input.ts +2 -2
  130. package/src/core/common/interceptors/check-response.interceptor.ts +2 -2
  131. package/src/core/common/interfaces/resolve-selector.interface.ts +9 -0
  132. package/src/core/common/interfaces/service-options.interface.ts +71 -0
  133. package/src/core/common/models/core-model.model.ts +7 -3
  134. package/src/core/common/pipes/check-input.pipe.ts +4 -4
  135. package/src/core/common/pipes/map-and-validate.pipe.ts +2 -2
  136. package/src/core/common/plugins/mongoose-id.plugin.js +1 -1
  137. package/src/core/common/services/crud.service.ts +100 -0
  138. package/src/core/common/services/email.service.ts +9 -9
  139. package/src/core/common/services/module.service.ts +180 -0
  140. package/src/core/common/types/core-model-constructor.type.ts +30 -0
  141. package/src/core/common/types/field-selection.type.ts +8 -0
  142. package/src/core/common/types/ids.type.ts +7 -0
  143. package/src/core/common/types/string-or-object-id.type.ts +3 -0
  144. package/src/core/modules/auth/core-auth.module.ts +1 -1
  145. package/src/core/modules/auth/core-auth.resolver.ts +8 -3
  146. package/src/core/modules/auth/guards/roles.guard.ts +1 -1
  147. package/src/core/modules/auth/services/core-auth-user.service.ts +7 -1
  148. package/src/core/modules/auth/services/core-auth.service.ts +14 -4
  149. package/src/core/modules/user/core-user.model.ts +2 -1
  150. package/src/core/modules/user/core-user.service.ts +120 -185
  151. package/src/core.module.ts +2 -2
  152. package/src/index.ts +9 -1
  153. package/src/main.ts +1 -1
  154. package/src/server/modules/auth/auth.resolver.ts +8 -3
  155. package/src/server/modules/file/file.controller.ts +2 -2
  156. package/src/server/modules/user/avatar.controller.ts +2 -2
  157. package/src/server/modules/user/user.module.ts +7 -3
  158. package/src/server/modules/user/user.resolver.ts +74 -43
  159. package/src/server/modules/user/user.service.ts +23 -53
  160. package/src/test/test.helper.ts +31 -30
  161. package/dist/core/modules/user/core-basic-user.service.d.ts +0 -17
  162. package/dist/core/modules/user/core-basic-user.service.js +0 -73
  163. package/dist/core/modules/user/core-basic-user.service.js.map +0 -1
  164. package/src/core/modules/user/core-basic-user.service.ts +0 -138
@@ -93,7 +93,8 @@ const config = {
93
93
  },
94
94
  },
95
95
  };
96
- const envConfig = config[process.env['NODE' + '_ENV'] || 'development'] || config.development;
97
- console.log('Server starts in mode: ', process.env['NODE' + '_ENV'] || 'development');
96
+ const env = process.env['NODE' + '_ENV'] || 'development';
97
+ const envConfig = config[env] || config.development;
98
+ console.log('Configured for: ' + envConfig.env + (env !== envConfig.env ? ' (requested: ' + env + ')' : ''));
98
99
  exports.default = envConfig;
99
100
  //# sourceMappingURL=config.env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.env.js","sourceRoot":"","sources":["../src/config.env.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAM5B,MAAM,MAAM,GAAsC;IAIhD,WAAW,EAAE;QACX,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;aACd;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,wBAAwB;gBACxC,eAAe,EAAE,yBAAyB;aAC3C;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,mBAAmB;aAC1B;YACD,gBAAgB,EAAE,yCAAyC;YAC3D,iBAAiB,EAAE,2CAA2C;SAC/D;QACD,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,IAAI;aACpB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE,2BAA2B;SACpC;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,qCAAqC;SAC3C;QACD,IAAI,EAAE,IAAI;QACV,YAAY,EAAE;YACZ,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAChC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC;YAClC,MAAM,EAAE,KAAK;SACd;KACF;IAKD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;aACd;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,wBAAwB;gBACxC,eAAe,EAAE,yBAAyB;aAC3C;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,mBAAmB;aAC1B;YACD,gBAAgB,EAAE,yCAAyC;YAC3D,iBAAiB,EAAE,2CAA2C;SAC/D;QACD,GAAG,EAAE,YAAY;QACjB,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,IAAI;aACpB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE,4BAA4B;SACrC;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,sCAAsC;SAC5C;QACD,IAAI,EAAE,IAAI;QACV,YAAY,EAAE;YACZ,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAChC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC;YAClC,MAAM,EAAE,KAAK;SACd;KACF;CACF,CAAC;AAOF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC;AAC9F,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;AAKtF,kBAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"config.env.js","sourceRoot":"","sources":["../src/config.env.ts"],"names":[],"mappings":";;AAAA,+BAA4B;AAM5B,MAAM,MAAM,GAAsC;IAIhD,WAAW,EAAE;QACX,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;aACd;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,wBAAwB;gBACxC,eAAe,EAAE,yBAAyB;aAC3C;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,mBAAmB;aAC1B;YACD,gBAAgB,EAAE,yCAAyC;YAC3D,iBAAiB,EAAE,2CAA2C;SAC/D;QACD,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,IAAI;aACpB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE,2BAA2B;SACpC;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,qCAAqC;SAC3C;QACD,IAAI,EAAE,IAAI;QACV,YAAY,EAAE;YACZ,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAChC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC;YAClC,MAAM,EAAE,KAAK;SACd;KACF;IAKD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,yBAAyB;oBAC/B,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;aACd;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,wBAAwB;gBACxC,eAAe,EAAE,yBAAyB;aAC3C;YACD,aAAa,EAAE;gBACb,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,mBAAmB;aAC1B;YACD,gBAAgB,EAAE,yCAAyC;YAC3D,iBAAiB,EAAE,2CAA2C;SAC/D;QACD,GAAG,EAAE,YAAY;QACjB,OAAO,EAAE;YACP,MAAM,EAAE;gBACN,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,IAAI;aACpB;SACF;QACD,GAAG,EAAE;YACH,MAAM,EAAE,4BAA4B;SACrC;QACD,QAAQ,EAAE;YACR,GAAG,EAAE,sCAAsC;SAC5C;QACD,IAAI,EAAE,IAAI;QACV,YAAY,EAAE;YACZ,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;SAChC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC;YAClC,MAAM,EAAE,KAAK;SACd;KACF;CACF,CAAC;AAOF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC;AAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC;AACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAK7G,kBAAe,SAAS,CAAC"}
@@ -34,7 +34,7 @@ let PaginationArgs = class PaginationArgs extends core_input_input_1.CoreInput {
34
34
  }
35
35
  map(data, options = {}) {
36
36
  super.map(data, options);
37
- this.sort = model_helper_1.ModelHelper.maps(data.sort, sort_input_1.SortInput, options.cloneDeep);
37
+ this.sort = (0, model_helper_1.maps)(data.sort, sort_input_1.SortInput, options.cloneDeep);
38
38
  Object.keys(this).forEach((key) => this[key] === undefined && delete this[key]);
39
39
  return this;
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.args.js","sourceRoot":"","sources":["../../../../src/core/common/args/pagination.args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pagination.args.js","sourceRoot":"","sources":["../../../../src/core/common/args/pagination.args.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import 'reflect-metadata';
2
+ import { IdsType } from '../types/ids.type';
2
3
  export declare const Restricted: (...roles: string[]) => PropertyDecorator;
3
4
  export declare const getRestricted: (object: unknown, propertyKey: string) => any;
4
5
  export declare const checkRestricted: (data: any, user: {
@@ -6,5 +7,6 @@ export declare const checkRestricted: (data: any, user: {
6
7
  hasRole: (roles: string[]) => boolean;
7
8
  }, options?: {
8
9
  ignoreUndefined?: boolean;
10
+ ownerIds?: IdsType;
9
11
  throwError?: boolean;
10
12
  }, processedObjects?: any[]) => any;
@@ -4,6 +4,7 @@ exports.checkRestricted = exports.getRestricted = exports.Restricted = void 0;
4
4
  require("reflect-metadata");
5
5
  const common_1 = require("@nestjs/common");
6
6
  const role_enum_1 = require("../enums/role.enum");
7
+ const db_helper_1 = require("../helpers/db.helper");
7
8
  const restrictedMetaKey = Symbol('restricted');
8
9
  const Restricted = (...roles) => {
9
10
  return Reflect.metadata(restrictedMetaKey, roles);
@@ -23,7 +24,7 @@ const checkRestricted = (data, user, options = {}, processedObjects = []) => {
23
24
  }
24
25
  processedObjects.push(data);
25
26
  if (Array.isArray(data)) {
26
- return data.map((item) => (0, exports.checkRestricted)(item, user, options, processedObjects));
27
+ return data.map((item) => (0, exports.checkRestricted)(item, user, config, processedObjects));
27
28
  }
28
29
  for (const propertyKey of Object.keys(data)) {
29
30
  if (data[propertyKey] === undefined && config.ignoreUndefined) {
@@ -33,12 +34,14 @@ const checkRestricted = (data, user, options = {}, processedObjects = []) => {
33
34
  if (roles && roles.some((value) => !!value)) {
34
35
  if (!user || !user.hasRole(roles)) {
35
36
  if (user && roles.includes(role_enum_1.RoleEnum.OWNER)) {
36
- const userId = user.id.toString();
37
- if (!data.ownerIds ||
38
- !(data.ownerIds === userId ||
39
- (Array.isArray(data.ownerIds) &&
40
- data.ownerIds.some((item) => (item.id ? item.id.toString() === userId : item.toString() === userId))))) {
37
+ const userId = (0, db_helper_1.getStringIds)(user);
38
+ const ownerIds = config.ownerIds ? (0, db_helper_1.getStringIds)(config.ownerIds) : null;
39
+ if (!ownerIds ||
40
+ !(ownerIds === userId || (Array.isArray(ownerIds) && ownerIds.includes(userId)))) {
41
41
  if (config.throwError) {
42
+ if (!config.ownerIds) {
43
+ throw new common_1.UnauthorizedException('Lack of ownerIds to verify ownership of ' + propertyKey);
44
+ }
42
45
  throw new common_1.UnauthorizedException('Current user is not allowed to set ' + propertyKey);
43
46
  }
44
47
  continue;
@@ -52,7 +55,7 @@ const checkRestricted = (data, user, options = {}, processedObjects = []) => {
52
55
  }
53
56
  }
54
57
  }
55
- data[propertyKey] = (0, exports.checkRestricted)(data[propertyKey], user, options, processedObjects);
58
+ data[propertyKey] = (0, exports.checkRestricted)(data[propertyKey], user, config, processedObjects);
56
59
  }
57
60
  return data;
58
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"restricted.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/restricted.decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restricted.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/restricted.decorator.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
- export declare class Config {
1
+ export default class Config {
2
2
  static merge(obj: Record<string, any>, ...sources: any[]): any;
3
3
  }
4
+ export declare function merge(obj: Record<string, any>, ...sources: any[]): any;
@@ -1,15 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Config = void 0;
3
+ exports.merge = void 0;
4
4
  const _ = require("lodash");
5
5
  class Config {
6
6
  static merge(obj, ...sources) {
7
- return _.mergeWith(obj, ...sources, (objValue, srcValue) => {
8
- if (Array.isArray(srcValue)) {
9
- return srcValue;
10
- }
11
- });
7
+ return merge(obj, sources);
12
8
  }
13
9
  }
14
- exports.Config = Config;
10
+ exports.default = Config;
11
+ function merge(obj, ...sources) {
12
+ return _.mergeWith(obj, ...sources, (objValue, srcValue) => {
13
+ if (Array.isArray(srcValue)) {
14
+ return srcValue;
15
+ }
16
+ });
17
+ }
18
+ exports.merge = merge;
15
19
  //# sourceMappingURL=config.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/config.helper.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAK5B,MAAa,MAAM;IAeV,MAAM,CAAC,KAAK,CAAC,GAAwB,EAAE,GAAG,OAAc;QAC7D,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,QAAa,EAAE,QAAa,EAAE,EAAE;YACnE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC3B,OAAO,QAAQ,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAtBD,wBAsBC"}
1
+ {"version":3,"file":"config.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/config.helper.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAM5B,MAAqB,MAAM;IAelB,MAAM,CAAC,KAAK,CAAC,GAAwB,EAAE,GAAG,OAAc;QAC7D,OAAO,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;CACF;AAlBD,yBAkBC;AAiBD,SAAgB,KAAK,CAAC,GAAwB,EAAE,GAAG,OAAc;IAC/D,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,QAAa,EAAE,QAAa,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,OAAO,QAAQ,CAAC;SACjB;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAND,sBAMC"}
@@ -1,5 +1,5 @@
1
1
  import { ExecutionContext } from '@nestjs/common';
2
- export declare class Context {
2
+ export default class Context {
3
3
  static getData(context: ExecutionContext): {
4
4
  currentUser: {
5
5
  [key: string]: any;
@@ -7,3 +7,9 @@ export declare class Context {
7
7
  args: any;
8
8
  };
9
9
  }
10
+ export declare function getContextData(context: ExecutionContext): {
11
+ currentUser: {
12
+ [key: string]: any;
13
+ };
14
+ args: any;
15
+ };
@@ -1,38 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Context = void 0;
3
+ exports.getContextData = void 0;
4
4
  const graphql_1 = require("@nestjs/graphql");
5
5
  class Context {
6
6
  static getData(context) {
7
- var _a, _b, _c, _d;
8
- if (!context) {
9
- return { currentUser: null, args: null };
10
- }
11
- let user;
12
- let ctx = null;
13
- try {
14
- ctx = (_a = graphql_1.GqlExecutionContext.create(context)) === null || _a === void 0 ? void 0 : _a.getContext();
15
- }
16
- catch (e) {
17
- }
18
- let args;
19
- try {
20
- args = (_b = graphql_1.GqlExecutionContext.create(context)) === null || _b === void 0 ? void 0 : _b.getArgs();
21
- }
22
- catch (e) {
23
- }
24
- if (ctx) {
25
- user = (ctx === null || ctx === void 0 ? void 0 : ctx.user) || ((_c = ctx === null || ctx === void 0 ? void 0 : ctx.req) === null || _c === void 0 ? void 0 : _c.user);
26
- }
27
- else {
28
- const request = (context === null || context === void 0 ? void 0 : context.switchToHttp) ? (_d = context.switchToHttp()) === null || _d === void 0 ? void 0 : _d.getRequest() : null;
29
- if (request) {
30
- args = request.body;
31
- user = request.user;
32
- }
7
+ return getContextData(context);
8
+ }
9
+ }
10
+ exports.default = Context;
11
+ function getContextData(context) {
12
+ var _a, _b, _c, _d;
13
+ if (!context) {
14
+ return { currentUser: null, args: null };
15
+ }
16
+ let user;
17
+ let ctx = null;
18
+ try {
19
+ ctx = (_a = graphql_1.GqlExecutionContext.create(context)) === null || _a === void 0 ? void 0 : _a.getContext();
20
+ }
21
+ catch (e) {
22
+ }
23
+ let args;
24
+ try {
25
+ args = (_b = graphql_1.GqlExecutionContext.create(context)) === null || _b === void 0 ? void 0 : _b.getArgs();
26
+ }
27
+ catch (e) {
28
+ }
29
+ if (ctx) {
30
+ user = (ctx === null || ctx === void 0 ? void 0 : ctx.user) || ((_c = ctx === null || ctx === void 0 ? void 0 : ctx.req) === null || _c === void 0 ? void 0 : _c.user);
31
+ }
32
+ else {
33
+ const request = (context === null || context === void 0 ? void 0 : context.switchToHttp) ? (_d = context.switchToHttp()) === null || _d === void 0 ? void 0 : _d.getRequest() : null;
34
+ if (request) {
35
+ args = request.body;
36
+ user = request.user;
33
37
  }
34
- return { currentUser: user, args };
35
38
  }
39
+ return { currentUser: user, args };
36
40
  }
37
- exports.Context = Context;
41
+ exports.getContextData = getContextData;
38
42
  //# sourceMappingURL=context.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/context.helper.ts"],"names":[],"mappings":";;;AACA,6CAAsD;AAKtD,MAAa,OAAO;IAIX,MAAM,CAAC,OAAO,CAAC,OAAyB;;QAE7C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SAC1C;QAGD,IAAI,IAA4B,CAAC;QACjC,IAAI,GAAG,GAAQ,IAAI,CAAC;QACpB,IAAI;YACF,GAAG,GAAG,MAAA,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,0CAAE,UAAU,EAAE,CAAC;SACzD;QAAC,OAAO,CAAC,EAAE;SAEX;QAED,IAAI,IAAS,CAAC;QACd,IAAI;YACF,IAAI,GAAG,MAAA,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,0CAAE,OAAO,EAAE,CAAC;SACvD;QAAC,OAAO,CAAC,EAAE;SAEX;QAGD,IAAI,GAAG,EAAE;YAEP,IAAI,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAI,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,0CAAE,IAAI,CAAA,CAAC;SACpC;aAAM;YACL,MAAM,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAC,CAAC,CAAC,MAAA,OAAO,CAAC,YAAY,EAAE,0CAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACpF,IAAI,OAAO,EAAE;gBACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAGpB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;aACrB;SACF;QAGD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;CACF;AA3CD,0BA2CC"}
1
+ {"version":3,"file":"context.helper.js","sourceRoot":"","sources":["../../../../src/core/common/helpers/context.helper.ts"],"names":[],"mappings":";;;AACA,6CAAsD;AAMtD,MAAqB,OAAO;IAKnB,MAAM,CAAC,OAAO,CAAC,OAAyB;QAC7C,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF;AARD,0BAQC;AAKD,SAAgB,cAAc,CAAC,OAAyB;;IAEtD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KAC1C;IAGD,IAAI,IAA4B,CAAC;IACjC,IAAI,GAAG,GAAQ,IAAI,CAAC;IACpB,IAAI;QACF,GAAG,GAAG,MAAA,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,0CAAE,UAAU,EAAE,CAAC;KACzD;IAAC,OAAO,CAAC,EAAE;KAEX;IAED,IAAI,IAAS,CAAC;IACd,IAAI;QACF,IAAI,GAAG,MAAA,6BAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,0CAAE,OAAO,EAAE,CAAC;KACvD;IAAC,OAAO,CAAC,EAAE;KAEX;IAGD,IAAI,GAAG,EAAE;QAEP,IAAI,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAI,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,0CAAE,IAAI,CAAA,CAAC;KACpC;SAAM;QACL,MAAM,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAC,CAAC,CAAC,MAAA,OAAO,CAAC,YAAY,EAAE,0CAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,IAAI,OAAO,EAAE;YACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAGpB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SACrB;KACF;IAGD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAtCD,wCAsCC"}
@@ -0,0 +1,35 @@
1
+ import { GraphQLResolveInfo, SelectionNode } from 'graphql';
2
+ import { Document, Model, PopulateOptions, Query, SchemaType, Types } from 'mongoose';
3
+ import { CoreModel } from '../models/core-model.model';
4
+ import { FieldSelection } from '../types/field-selection.type';
5
+ import { StringOrObjectId } from '../types/string-or-object-id.type';
6
+ export declare function addIds(target: any, ids: StringOrObjectId | StringOrObjectId[], convert?: 'string' | 'object' | 'auto' | false, options?: {
7
+ unique?: boolean;
8
+ }): any[];
9
+ export declare function getIndexesViaIds(ids: any | any[], array: any[]): number[];
10
+ export declare function getStringIds(elements: any[], options?: {
11
+ deep?: boolean;
12
+ unique?: boolean;
13
+ }): string[];
14
+ export declare function getStringIds(elements: any, options?: {
15
+ deep?: boolean;
16
+ unique?: boolean;
17
+ }): string;
18
+ export declare function getObjectIds(ids: any[]): Types.ObjectId[];
19
+ export declare function getObjectIds(ids: any): Types.ObjectId;
20
+ export declare function getElementsViaIds<T = any>(ids: any | any[], array: T[], options?: {
21
+ splice?: boolean;
22
+ unique?: boolean;
23
+ }): T[];
24
+ export declare function getPopulateOptions(info: GraphQLResolveInfo, select?: string): PopulateOptions[];
25
+ export declare function getPopulatOptionsFromSelections(selectionNodes: readonly SelectionNode[]): PopulateOptions[];
26
+ export declare function getJSONClone<T = any>(obj: T): Partial<T>;
27
+ export declare function includesIds(includes: StringOrObjectId | StringOrObjectId[], ids: StringOrObjectId | StringOrObjectId[], convert?: 'string'): string[];
28
+ export declare function includesIds(includes: StringOrObjectId | StringOrObjectId[], ids: StringOrObjectId | StringOrObjectId[], convert?: 'object'): Types.ObjectId[];
29
+ export declare function objectIdsToStrings(element: any, prepared?: WeakMap<any, any>): any;
30
+ export declare function removeUnresolvedReferences<T = any>(populated: T, populatedOptions: string | PopulateOptions | PopulateOptions[] | (string | PopulateOptions)[], ignoreFirst?: boolean): T;
31
+ export declare function popAndMap<T extends CoreModel>(queryOrDocument: Query<any, any> | Document | Document[], populate: FieldSelection, modelClass: new (...args: any[]) => T, mongooseModel?: Model<any>): Promise<T | T[]>;
32
+ export declare function removeIds(source: any[], ids: StringOrObjectId | StringOrObjectId[]): any[];
33
+ export declare function setPopulates<T = Query<any, any> | Document>(queryOrDocument: T, populateOptions: PopulateOptions[], modelSchemaPaths?: {
34
+ [key: string]: SchemaType;
35
+ }): Promise<T>;
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setPopulates = exports.removeIds = exports.popAndMap = exports.removeUnresolvedReferences = exports.objectIdsToStrings = exports.includesIds = exports.getJSONClone = exports.getPopulatOptionsFromSelections = exports.getPopulateOptions = exports.getElementsViaIds = exports.getObjectIds = exports.getStringIds = exports.getIndexesViaIds = exports.addIds = void 0;
4
+ const _ = require("lodash");
5
+ const mongoose_1 = require("mongoose");
6
+ function addIds(target, ids, convert = 'auto', options) {
7
+ const config = Object.assign({ unique: true }, options);
8
+ let result = target;
9
+ if (!Array.isArray(result)) {
10
+ result = [];
11
+ }
12
+ if (!Array.isArray(ids)) {
13
+ ids = [ids];
14
+ }
15
+ if (config.unique) {
16
+ removeIds(ids, target);
17
+ }
18
+ if (ids.length) {
19
+ if (result.length &&
20
+ convert === 'auto' &&
21
+ ((result[0] instanceof mongoose_1.Types.ObjectId && !(ids instanceof mongoose_1.Types.ObjectId)) ||
22
+ (typeof result[0] === 'string' && typeof ids !== 'string'))) {
23
+ const converted = result[0] instanceof mongoose_1.Types.ObjectId ? getObjectIds(ids) : getStringIds(ids);
24
+ result.push(...converted);
25
+ }
26
+ else {
27
+ result.push(...ids);
28
+ }
29
+ }
30
+ if (['string', 'object'].includes(convert)) {
31
+ for (let i = 0; i < result.length; i++) {
32
+ result[i] = convert === 'string' ? getStringId(result[i]) : getObjectIds(result[i]);
33
+ }
34
+ }
35
+ return result;
36
+ }
37
+ exports.addIds = addIds;
38
+ function getIndexesViaIds(ids, array) {
39
+ if (!ids) {
40
+ return [];
41
+ }
42
+ if (!Array.isArray(ids)) {
43
+ ids = [ids];
44
+ }
45
+ if (!Array.isArray(array)) {
46
+ return [];
47
+ }
48
+ const indexes = [];
49
+ ids.forEach((id) => {
50
+ array.forEach((element, index) => {
51
+ if (getStringIds(id) === getStringIds(element)) {
52
+ indexes.push(index);
53
+ }
54
+ });
55
+ });
56
+ return indexes;
57
+ }
58
+ exports.getIndexesViaIds = getIndexesViaIds;
59
+ function getStringIds(elements, options) {
60
+ const { deep, unique } = Object.assign({ deep: false, unique: false }, options);
61
+ if (!elements) {
62
+ return elements;
63
+ }
64
+ let ids = [];
65
+ if (!Array.isArray(elements)) {
66
+ return getStringId(elements);
67
+ }
68
+ for (const element of elements) {
69
+ if (Array.isArray(element)) {
70
+ if (deep) {
71
+ ids = ids.concat(getStringIds(element, { deep }));
72
+ }
73
+ }
74
+ else {
75
+ const id = getStringId(element);
76
+ if (id) {
77
+ ids.push(id);
78
+ }
79
+ }
80
+ }
81
+ return unique ? _.uniq(ids) : ids;
82
+ }
83
+ exports.getStringIds = getStringIds;
84
+ function getObjectIds(ids) {
85
+ if (Array.isArray(ids)) {
86
+ return ids.map((id) => new mongoose_1.Types.ObjectId(getStringId(id)));
87
+ }
88
+ return new mongoose_1.Types.ObjectId(getStringId(ids));
89
+ }
90
+ exports.getObjectIds = getObjectIds;
91
+ function getElementsViaIds(ids, array, options = {}) {
92
+ const config = Object.assign({ splice: false, unique: false }, options);
93
+ const indexes = getIndexesViaIds(ids, array);
94
+ if (!(indexes === null || indexes === void 0 ? void 0 : indexes.length)) {
95
+ return [];
96
+ }
97
+ const elements = [];
98
+ indexes.forEach((index) => {
99
+ if (config.splice) {
100
+ elements.push(array.splice(index, 1)[0]);
101
+ }
102
+ else {
103
+ elements.push(array[index]);
104
+ }
105
+ });
106
+ if (config.unique) {
107
+ return elements.filter((value, index, self) => {
108
+ return self.findIndex((e) => getStringIds(e)) === index;
109
+ });
110
+ }
111
+ return elements;
112
+ }
113
+ exports.getElementsViaIds = getElementsViaIds;
114
+ function getPopulateOptions(info, select) {
115
+ var _a, _b, _c, _d;
116
+ const result = [];
117
+ if (!((_a = info === null || info === void 0 ? void 0 : info.fieldNodes) === null || _a === void 0 ? void 0 : _a.length)) {
118
+ return result;
119
+ }
120
+ for (const fieldNode of info.fieldNodes) {
121
+ if ((select || ((_b = fieldNode === null || fieldNode === void 0 ? void 0 : fieldNode.name) === null || _b === void 0 ? void 0 : _b.value) === select) && ((_d = (_c = fieldNode === null || fieldNode === void 0 ? void 0 : fieldNode.selectionSet) === null || _c === void 0 ? void 0 : _c.selections) === null || _d === void 0 ? void 0 : _d.length)) {
122
+ return getPopulatOptionsFromSelections(fieldNode.selectionSet.selections);
123
+ }
124
+ }
125
+ return result;
126
+ }
127
+ exports.getPopulateOptions = getPopulateOptions;
128
+ function getPopulatOptionsFromSelections(selectionNodes) {
129
+ var _a, _b, _c, _d;
130
+ const populateOptions = [];
131
+ if (!selectionNodes || !selectionNodes.length) {
132
+ return populateOptions;
133
+ }
134
+ for (const node of selectionNodes) {
135
+ const option = {
136
+ path: node.name.value,
137
+ };
138
+ if ((_b = (_a = node.selectionSet) === null || _a === void 0 ? void 0 : _a.selections) === null || _b === void 0 ? void 0 : _b.length) {
139
+ for (const innerNode of node.selectionSet.selections) {
140
+ if (!((_d = (_c = innerNode.selectionSet) === null || _c === void 0 ? void 0 : _c.selections) === null || _d === void 0 ? void 0 : _d.length)) {
141
+ option.select ? option.select.push(innerNode.name.value) : (option.select = [innerNode.name.value]);
142
+ }
143
+ else {
144
+ const innerPopulate = getPopulatOptionsFromSelections([innerNode]);
145
+ option.populate = option.populate
146
+ ? option.populate.concat(innerPopulate)
147
+ : innerPopulate;
148
+ }
149
+ }
150
+ }
151
+ if (option.select || option.populate) {
152
+ populateOptions.push(option);
153
+ }
154
+ }
155
+ return populateOptions;
156
+ }
157
+ exports.getPopulatOptionsFromSelections = getPopulatOptionsFromSelections;
158
+ function getJSONClone(obj) {
159
+ return JSON.parse(JSON.stringify(obj));
160
+ }
161
+ exports.getJSONClone = getJSONClone;
162
+ function includesIds(includes, ids, convert) {
163
+ if (!includes || !ids) {
164
+ return null;
165
+ }
166
+ if (!Array.isArray(includes)) {
167
+ includes = [includes];
168
+ }
169
+ if (!Array.isArray(ids)) {
170
+ ids = [ids];
171
+ }
172
+ let result = [];
173
+ const includesStrings = getStringIds(includes);
174
+ for (const id of ids) {
175
+ if (includesStrings.includes(getStringIds(id))) {
176
+ result.push(id);
177
+ }
178
+ }
179
+ if (convert) {
180
+ result = convert === 'string' ? getStringIds(result) : getObjectIds(result);
181
+ }
182
+ return result.length ? result : null;
183
+ }
184
+ exports.includesIds = includesIds;
185
+ function objectIdsToStrings(element, prepared = new WeakMap()) {
186
+ if (!element) {
187
+ return element;
188
+ }
189
+ if (element instanceof mongoose_1.Types.ObjectId) {
190
+ return element.toHexString();
191
+ }
192
+ if (Array.isArray(element)) {
193
+ return element.map((e) => objectIdsToStrings(e, prepared));
194
+ }
195
+ if (typeof element === 'object') {
196
+ if (prepared.has(element)) {
197
+ return prepared.get(element);
198
+ }
199
+ const preparedObject = element;
200
+ prepared.set(element, preparedObject);
201
+ for (const [key, val] of Object.entries(element)) {
202
+ preparedObject[key] = objectIdsToStrings(val, prepared);
203
+ }
204
+ }
205
+ return element;
206
+ }
207
+ exports.objectIdsToStrings = objectIdsToStrings;
208
+ function removeUnresolvedReferences(populated, populatedOptions, ignoreFirst = true) {
209
+ if (!populated || !populatedOptions) {
210
+ return populated;
211
+ }
212
+ if (Array.isArray(populated)) {
213
+ populated.forEach((p) => removeUnresolvedReferences(p, populatedOptions, false));
214
+ return populated;
215
+ }
216
+ if (typeof populated === 'object') {
217
+ if (Array.isArray(populatedOptions)) {
218
+ populatedOptions.forEach((po) => removeUnresolvedReferences(populated, ignoreFirst ? po.populate : po, false));
219
+ return populated;
220
+ }
221
+ if (typeof populatedOptions === 'string') {
222
+ if (!['id', '_id'].includes(populatedOptions) && populated[populatedOptions] instanceof mongoose_1.Types.ObjectId) {
223
+ populated[populatedOptions] = null;
224
+ }
225
+ return populated;
226
+ }
227
+ if (populatedOptions.path) {
228
+ const key = populatedOptions.path;
229
+ if (!['id', '_id'].includes(key) && populated[key] instanceof mongoose_1.Types.ObjectId) {
230
+ populated[key] = null;
231
+ }
232
+ else if (populatedOptions.populate) {
233
+ removeUnresolvedReferences(populated[key], populatedOptions.populate, false);
234
+ }
235
+ }
236
+ }
237
+ return populated;
238
+ }
239
+ exports.removeUnresolvedReferences = removeUnresolvedReferences;
240
+ async function popAndMap(queryOrDocument, populate, modelClass, mongooseModel) {
241
+ var _a, _b, _c, _d, _e;
242
+ let result;
243
+ let populateOptions = [];
244
+ if (populate) {
245
+ if (Array.isArray(populate) && typeof ((_a = populate[0]) === null || _a === void 0 ? void 0 : _a.path) === 'string') {
246
+ populateOptions = populate;
247
+ }
248
+ else if (Array.isArray(populate) && typeof ((_b = populate[0]) === null || _b === void 0 ? void 0 : _b.kind) === 'string') {
249
+ populateOptions = getPopulatOptionsFromSelections(populate);
250
+ }
251
+ else if (populate.info) {
252
+ populateOptions = getPopulateOptions(populate.info, populate.select);
253
+ }
254
+ }
255
+ if (queryOrDocument instanceof mongoose_1.Query) {
256
+ result = await setPopulates(queryOrDocument, populateOptions, (_c = mongooseModel === null || mongooseModel === void 0 ? void 0 : mongooseModel.schema) === null || _c === void 0 ? void 0 : _c.paths);
257
+ if (result instanceof mongoose_1.Query) {
258
+ result = await result.exec();
259
+ }
260
+ if (Array.isArray(result)) {
261
+ result = result.map((item) => modelClass.map(item));
262
+ }
263
+ else {
264
+ result = modelClass.map(result);
265
+ }
266
+ }
267
+ else {
268
+ if (Array.isArray(queryOrDocument)) {
269
+ await setPopulates(queryOrDocument, populateOptions, (_d = mongooseModel === null || mongooseModel === void 0 ? void 0 : mongooseModel.schema) === null || _d === void 0 ? void 0 : _d.paths);
270
+ result = queryOrDocument.map((item) => modelClass.map(item));
271
+ }
272
+ else {
273
+ await setPopulates(queryOrDocument, populateOptions, (_e = mongooseModel === null || mongooseModel === void 0 ? void 0 : mongooseModel.schema) === null || _e === void 0 ? void 0 : _e.paths);
274
+ result = modelClass.map(queryOrDocument);
275
+ }
276
+ }
277
+ return removeUnresolvedReferences(result, populateOptions);
278
+ }
279
+ exports.popAndMap = popAndMap;
280
+ function removeIds(source, ids) {
281
+ if (!ids) {
282
+ return source;
283
+ }
284
+ if (!Array.isArray(ids)) {
285
+ ids = [ids];
286
+ }
287
+ if (!Array.isArray(source)) {
288
+ return [];
289
+ }
290
+ const stringIds = getStringIds(source);
291
+ ids.forEach((id) => {
292
+ const position = stringIds.indexOf(getStringIds(id));
293
+ if (position !== -1) {
294
+ source.splice(position, 1);
295
+ }
296
+ });
297
+ return source;
298
+ }
299
+ exports.removeIds = removeIds;
300
+ async function setPopulates(queryOrDocument, populateOptions, modelSchemaPaths) {
301
+ if (!(populateOptions === null || populateOptions === void 0 ? void 0 : populateOptions.length) || !queryOrDocument) {
302
+ return queryOrDocument;
303
+ }
304
+ if (modelSchemaPaths) {
305
+ populateOptions = populateOptions.filter((options) => {
306
+ return Object.keys(modelSchemaPaths).includes(options.path);
307
+ });
308
+ }
309
+ if (queryOrDocument instanceof mongoose_1.Query) {
310
+ for (const options of populateOptions) {
311
+ queryOrDocument = queryOrDocument.populate(options);
312
+ }
313
+ }
314
+ else if (Array.isArray(queryOrDocument)) {
315
+ const promises = [];
316
+ queryOrDocument.forEach((item) => promises.push(item.populate(populateOptions)));
317
+ await Promise.all(promises);
318
+ }
319
+ else {
320
+ await queryOrDocument.populate(populateOptions);
321
+ }
322
+ return queryOrDocument;
323
+ }
324
+ exports.setPopulates = setPopulates;
325
+ function getStringId(element) {
326
+ if (!element) {
327
+ return element;
328
+ }
329
+ if (typeof element === 'string') {
330
+ return element;
331
+ }
332
+ if (typeof element === 'object') {
333
+ if (element instanceof mongoose_1.Types.ObjectId) {
334
+ return element.toHexString();
335
+ }
336
+ if (element.id) {
337
+ return getStringId(element.id);
338
+ }
339
+ else if (element._id) {
340
+ return getStringId(element._id);
341
+ }
342
+ }
343
+ return element.toString();
344
+ }
345
+ //# sourceMappingURL=db.helper.js.map