@koalarx/nest 3.0.3 → 3.0.5

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 (293) hide show
  1. package/core/backgroud-services/cron-service/cron-job.handler.base.d.ts +16 -0
  2. package/core/backgroud-services/cron-service/cron-job.handler.base.js +49 -0
  3. package/core/backgroud-services/event-service/event-class.d.ts +5 -0
  4. package/core/backgroud-services/event-service/event-class.js +11 -0
  5. package/core/backgroud-services/event-service/event-handler.base.d.ts +8 -0
  6. package/core/backgroud-services/event-service/event-handler.base.js +14 -0
  7. package/core/backgroud-services/event-service/event-is-trigger.d.ts +3 -0
  8. package/core/backgroud-services/event-service/event-is-trigger.js +7 -0
  9. package/core/backgroud-services/event-service/event-job.d.ts +13 -0
  10. package/core/backgroud-services/event-service/event-job.js +21 -0
  11. package/core/backgroud-services/event-service/event-queue.d.ts +17 -0
  12. package/core/backgroud-services/event-service/event-queue.js +62 -0
  13. package/core/constants/query-params.d.ts +6 -0
  14. package/core/constants/query-params.js +8 -0
  15. package/core/controllers/base.controller.d.ts +4 -0
  16. package/core/controllers/base.controller.js +6 -0
  17. package/core/controllers/controller.decorator.d.ts +2 -0
  18. package/core/controllers/controller.decorator.js +11 -0
  19. package/core/controllers/created-registre-response.base.d.ts +10 -0
  20. package/core/controllers/created-registre-response.base.js +35 -0
  21. package/core/controllers/list-response.base.d.ts +4 -0
  22. package/core/controllers/list-response.base.js +21 -0
  23. package/core/controllers/pagination.request.d.ts +10 -0
  24. package/core/controllers/pagination.request.js +56 -0
  25. package/core/controllers/router-config.base.d.ts +7 -0
  26. package/core/controllers/router-config.base.js +18 -0
  27. package/core/controllers/schemas/boolean.schema.d.ts +2 -0
  28. package/core/controllers/schemas/boolean.schema.js +12 -0
  29. package/core/controllers/schemas/document-number.schema.d.ts +1 -0
  30. package/core/controllers/schemas/document-number.schema.js +26 -0
  31. package/core/controllers/schemas/email.schema.d.ts +1 -0
  32. package/core/controllers/schemas/email.schema.js +13 -0
  33. package/core/controllers/schemas/list-query.schema.d.ts +17 -0
  34. package/core/controllers/schemas/list-query.schema.js +19 -0
  35. package/core/controllers/schemas/native-enum.schema.d.ts +7 -0
  36. package/core/controllers/schemas/native-enum.schema.js +28 -0
  37. package/core/controllers/schemas/set-mask-document-number.schema.d.ts +1 -0
  38. package/core/controllers/schemas/set-mask-document-number.schema.js +13 -0
  39. package/core/database/entity.base.d.ts +20 -0
  40. package/core/database/entity.base.js +71 -0
  41. package/core/database/entity.decorator.d.ts +13 -0
  42. package/core/database/entity.decorator.js +23 -0
  43. package/core/database/prisma-client-with-custom-transaction.interface.d.ts +8 -0
  44. package/core/database/prisma-client-with-custom-transaction.interface.js +2 -0
  45. package/core/database/prisma-resolver.d.ts +2 -0
  46. package/core/database/prisma-resolver.js +74 -0
  47. package/core/database/prisma-transactional-client.d.ts +11 -0
  48. package/core/database/prisma-transactional-client.js +25 -0
  49. package/core/database/prisma.service.d.ts +24 -0
  50. package/core/database/prisma.service.js +104 -0
  51. package/core/database/repository.base.d.ts +44 -0
  52. package/core/database/repository.base.js +360 -0
  53. package/core/dtos/pagination.dto.d.ts +9 -0
  54. package/core/dtos/pagination.dto.js +49 -0
  55. package/core/errors/bad-request.error.d.ts +5 -0
  56. package/core/errors/bad-request.error.js +10 -0
  57. package/core/errors/conflict.error.d.ts +4 -0
  58. package/core/errors/conflict.error.js +10 -0
  59. package/core/errors/error.base.d.ts +4 -0
  60. package/core/errors/error.base.js +11 -0
  61. package/core/errors/no-content.error.d.ts +5 -0
  62. package/core/errors/no-content.error.js +10 -0
  63. package/core/errors/not-allowed.error.d.ts +5 -0
  64. package/core/errors/not-allowed.error.js +10 -0
  65. package/core/errors/resource-not-found.error.d.ts +5 -0
  66. package/core/errors/resource-not-found.error.js +10 -0
  67. package/{src/core/errors/use-case-error.ts → core/errors/use-case-error.d.ts} +1 -1
  68. package/core/errors/use-case-error.js +2 -0
  69. package/core/errors/user-already-exist.error.d.ts +4 -0
  70. package/core/errors/user-already-exist.error.js +10 -0
  71. package/core/errors/wrong-credentials.error.d.ts +4 -0
  72. package/core/errors/wrong-credentials.error.js +10 -0
  73. package/core/health-check/health-check.controller.d.ts +5 -0
  74. package/core/health-check/health-check.controller.js +32 -0
  75. package/core/health-check/health-check.module.d.ts +2 -0
  76. package/core/health-check/health-check.module.js +19 -0
  77. package/core/index.d.ts +18 -0
  78. package/core/index.js +7 -0
  79. package/core/koala-app.d.ts +64 -0
  80. package/core/koala-app.js +252 -0
  81. package/core/koala-global-vars.d.ts +7 -0
  82. package/core/koala-global-vars.js +9 -0
  83. package/core/koala-nest-database.module.d.ts +16 -0
  84. package/core/koala-nest-database.module.js +52 -0
  85. package/core/koala-nest-http.module.d.ts +13 -0
  86. package/core/koala-nest-http.module.js +37 -0
  87. package/core/koala-nest.module.d.ts +17 -0
  88. package/core/koala-nest.module.js +66 -0
  89. package/core/mapping/auto-mapping-class-context.d.ts +16 -0
  90. package/core/mapping/auto-mapping-class-context.js +18 -0
  91. package/core/mapping/auto-mapping-context.d.ts +11 -0
  92. package/core/mapping/auto-mapping-context.js +24 -0
  93. package/core/mapping/auto-mapping-list.d.ts +27 -0
  94. package/core/mapping/auto-mapping-list.js +94 -0
  95. package/core/mapping/auto-mapping-profile.d.ts +3 -0
  96. package/core/mapping/auto-mapping-profile.js +6 -0
  97. package/core/mapping/auto-mapping.decorator.d.ts +9 -0
  98. package/core/mapping/auto-mapping.decorator.js +27 -0
  99. package/core/mapping/auto-mapping.module.d.ts +5 -0
  100. package/core/mapping/auto-mapping.module.js +29 -0
  101. package/core/mapping/auto-mapping.service.d.ts +14 -0
  102. package/core/mapping/auto-mapping.service.js +140 -0
  103. package/core/mapping/create-map.d.ts +3 -0
  104. package/core/mapping/create-map.js +7 -0
  105. package/core/mapping/for-member.d.ts +5 -0
  106. package/core/mapping/for-member.js +8 -0
  107. package/core/request-overflow/request-handler.base.d.ts +4 -0
  108. package/core/request-overflow/request-handler.base.js +6 -0
  109. package/core/request-overflow/request-result.d.ts +15 -0
  110. package/core/request-overflow/request-result.js +37 -0
  111. package/core/request-overflow/request-validator.base.d.ts +7 -0
  112. package/core/request-overflow/request-validator.base.js +26 -0
  113. package/core/security/strategies/api-key.strategy.d.ts +16 -0
  114. package/core/security/strategies/api-key.strategy.js +31 -0
  115. package/core/utils/assing-object.d.ts +5 -0
  116. package/core/utils/assing-object.js +6 -0
  117. package/core/utils/env.config.d.ts +6 -0
  118. package/core/utils/env.config.js +18 -0
  119. package/core/utils/filter-request-params.d.ts +13 -0
  120. package/core/utils/filter-request-params.js +22 -0
  121. package/core/utils/find-on-list.d.ts +2 -0
  122. package/core/utils/find-on-list.js +13 -0
  123. package/core/utils/get-type-by-prop.d.ts +2 -0
  124. package/core/utils/get-type-by-prop.js +11 -0
  125. package/core/utils/instanciate-class-with-dependencies-injection.d.ts +2 -0
  126. package/core/utils/instanciate-class-with-dependencies-injection.js +10 -0
  127. package/core/utils/interfaces/icomparable.d.ts +5 -0
  128. package/core/utils/interfaces/icomparable.js +6 -0
  129. package/core/utils/list.d.ts +39 -0
  130. package/core/utils/list.js +168 -0
  131. package/core/utils/promise-all.d.ts +7 -0
  132. package/core/utils/promise-all.js +19 -0
  133. package/core/utils/set-mask-document-number.d.ts +1 -0
  134. package/core/utils/set-mask-document-number.js +13 -0
  135. package/core/validators/file-validator.d.ts +27 -0
  136. package/core/validators/file-validator.js +94 -0
  137. package/decorators/api-exclude-endpoint-diff-develop.decorator.d.ts +1 -0
  138. package/decorators/api-exclude-endpoint-diff-develop.decorator.js +9 -0
  139. package/decorators/api-property-enum.decorator.d.ts +8 -0
  140. package/decorators/api-property-enum.decorator.js +21 -0
  141. package/decorators/api-property-only-develop.decorator.d.ts +2 -0
  142. package/decorators/api-property-only-develop.decorator.js +9 -0
  143. package/decorators/cookies.decorator.d.ts +1 -0
  144. package/decorators/cookies.decorator.js +8 -0
  145. package/decorators/is-public.decorator.d.ts +2 -0
  146. package/decorators/is-public.decorator.js +7 -0
  147. package/decorators/upload.decorator.d.ts +1 -0
  148. package/decorators/upload.decorator.js +18 -0
  149. package/env/env.d.ts +25 -0
  150. package/env/env.js +14 -0
  151. package/env/env.module.d.ts +2 -0
  152. package/env/env.module.js +20 -0
  153. package/env/env.service.d.ts +7 -0
  154. package/env/env.service.js +28 -0
  155. package/filters/domain-errors.filter.d.ts +18 -0
  156. package/filters/domain-errors.filter.js +92 -0
  157. package/filters/global-exception.filter.d.ts +8 -0
  158. package/filters/global-exception.filter.js +68 -0
  159. package/filters/prisma-validation-exception.filter.d.ts +10 -0
  160. package/filters/prisma-validation-exception.filter.js +82 -0
  161. package/filters/zod-errors.filter.d.ts +9 -0
  162. package/filters/zod-errors.filter.js +60 -0
  163. package/package.json +29 -2
  164. package/services/logging/ilogging.service.d.ts +16 -0
  165. package/services/logging/ilogging.service.js +6 -0
  166. package/services/logging/logging.service.d.ts +4 -0
  167. package/services/logging/logging.service.js +20 -0
  168. package/services/redis/iredis.service.d.ts +6 -0
  169. package/services/redis/iredis.service.js +6 -0
  170. package/services/redis/redis.service.d.ts +14 -0
  171. package/services/redis/redis.service.js +65 -0
  172. package/services/redlock/ired-lock.service.d.ts +4 -0
  173. package/services/redlock/ired-lock.service.js +6 -0
  174. package/services/redlock/red-lock.service.d.ts +9 -0
  175. package/services/redlock/red-lock.service.js +46 -0
  176. package/test/koala-app-test-dependencies.d.ts +10 -0
  177. package/test/koala-app-test-dependencies.js +13 -0
  178. package/test/koala-app-test.d.ts +22 -0
  179. package/test/koala-app-test.js +77 -0
  180. package/test/repositories/in-memory-base.repository.d.ts +17 -0
  181. package/test/repositories/in-memory-base.repository.js +65 -0
  182. package/test/services/fake-logging.service.d.ts +4 -0
  183. package/test/services/fake-logging.service.js +9 -0
  184. package/test/services/fake-red-lock.service.d.ts +5 -0
  185. package/test/services/fake-red-lock.service.js +11 -0
  186. package/test/utils/create-e2e-database.d.ts +2 -0
  187. package/test/utils/create-e2e-database.js +47 -0
  188. package/test/utils/drop-e2e-database.d.ts +2 -0
  189. package/test/utils/drop-e2e-database.js +33 -0
  190. package/test/utils/wait-for.d.ts +1 -0
  191. package/test/utils/wait-for.js +21 -0
  192. package/tsconfig.lib.tsbuildinfo +1 -0
  193. package/CHANGELOG.md +0 -27
  194. package/src/core/backgroud-services/cron-service/cron-job.handler.base.ts +0 -66
  195. package/src/core/backgroud-services/cron-service/cron-job.handler.spec.ts +0 -38
  196. package/src/core/backgroud-services/event-service/event-class.ts +0 -5
  197. package/src/core/backgroud-services/event-service/event-handler.base.ts +0 -17
  198. package/src/core/backgroud-services/event-service/event-is-trigger.ts +0 -3
  199. package/src/core/backgroud-services/event-service/event-job.ts +0 -28
  200. package/src/core/backgroud-services/event-service/event-queue.spec.ts +0 -47
  201. package/src/core/backgroud-services/event-service/event-queue.ts +0 -107
  202. package/src/core/constants/query-params.ts +0 -7
  203. package/src/core/controllers/base.controller.ts +0 -9
  204. package/src/core/controllers/controller.decorator.ts +0 -10
  205. package/src/core/controllers/created-registre-response.base.ts +0 -17
  206. package/src/core/controllers/list-response.base.ts +0 -8
  207. package/src/core/controllers/pagination.request.ts +0 -41
  208. package/src/core/controllers/router-config.base.ts +0 -14
  209. package/src/core/controllers/schemas/boolean.schema.ts +0 -10
  210. package/src/core/controllers/schemas/document-number.schema.ts +0 -23
  211. package/src/core/controllers/schemas/email.schema.ts +0 -13
  212. package/src/core/controllers/schemas/list-query.schema.ts +0 -17
  213. package/src/core/controllers/schemas/native-enum.schema.ts +0 -34
  214. package/src/core/controllers/schemas/set-mask-document-number.schema.ts +0 -13
  215. package/src/core/database/entity.base.ts +0 -95
  216. package/src/core/database/entity.decorator.spec.ts +0 -71
  217. package/src/core/database/entity.decorator.ts +0 -39
  218. package/src/core/database/prisma-client-with-custom-transaction.interface.ts +0 -13
  219. package/src/core/database/prisma-resolver.ts +0 -99
  220. package/src/core/database/prisma-transactional-client.ts +0 -43
  221. package/src/core/database/prisma.service.ts +0 -136
  222. package/src/core/database/repository.base.ts +0 -548
  223. package/src/core/dtos/pagination.dto.ts +0 -35
  224. package/src/core/errors/bad-request.error.ts +0 -8
  225. package/src/core/errors/conflict.error.ts +0 -7
  226. package/src/core/errors/error.base.ts +0 -5
  227. package/src/core/errors/no-content.error.ts +0 -8
  228. package/src/core/errors/not-allowed.error.ts +0 -8
  229. package/src/core/errors/resource-not-found.error.ts +0 -8
  230. package/src/core/errors/user-already-exist.error.ts +0 -7
  231. package/src/core/errors/wrong-credentials.error.ts +0 -7
  232. package/src/core/health-check/health-check.controller.ts +0 -13
  233. package/src/core/health-check/health-check.module.ts +0 -7
  234. package/src/core/index.ts +0 -56
  235. package/src/core/koala-app.ts +0 -379
  236. package/src/core/koala-global-vars.ts +0 -8
  237. package/src/core/koala-nest-database.module.ts +0 -65
  238. package/src/core/koala-nest-http.module.ts +0 -44
  239. package/src/core/koala-nest.module.ts +0 -67
  240. package/src/core/mapping/auto-mapping-class-context.ts +0 -28
  241. package/src/core/mapping/auto-mapping-context.ts +0 -26
  242. package/src/core/mapping/auto-mapping-list.ts +0 -154
  243. package/src/core/mapping/auto-mapping-profile.ts +0 -3
  244. package/src/core/mapping/auto-mapping.decorator.ts +0 -54
  245. package/src/core/mapping/auto-mapping.module.ts +0 -17
  246. package/src/core/mapping/auto-mapping.service.ts +0 -187
  247. package/src/core/mapping/create-map.ts +0 -11
  248. package/src/core/mapping/for-member.ts +0 -16
  249. package/src/core/request-overflow/request-handler.base.ts +0 -8
  250. package/src/core/request-overflow/request-result.spec.ts +0 -23
  251. package/src/core/request-overflow/request-result.ts +0 -41
  252. package/src/core/request-overflow/request-validator.base.ts +0 -33
  253. package/src/core/security/strategies/api-key.strategy.ts +0 -45
  254. package/src/core/utils/assing-object.ts +0 -9
  255. package/src/core/utils/env.config.ts +0 -17
  256. package/src/core/utils/filter-request-params.ts +0 -23
  257. package/src/core/utils/find-on-list.ts +0 -18
  258. package/src/core/utils/get-type-by-prop.ts +0 -9
  259. package/src/core/utils/instanciate-class-with-dependencies-injection.ts +0 -12
  260. package/src/core/utils/interfaces/icomparable.ts +0 -6
  261. package/src/core/utils/list.spec.ts +0 -81
  262. package/src/core/utils/list.ts +0 -223
  263. package/src/core/utils/promise-all.ts +0 -24
  264. package/src/core/utils/set-mask-document-number.ts +0 -13
  265. package/src/core/validators/file-validator.ts +0 -113
  266. package/src/decorators/api-exclude-endpoint-diff-develop.decorator.ts +0 -15
  267. package/src/decorators/api-property-enum.decorator.ts +0 -58
  268. package/src/decorators/api-property-only-develop.decorator.ts +0 -6
  269. package/src/decorators/cookies.decorator.ts +0 -8
  270. package/src/decorators/is-public.decorator.ts +0 -5
  271. package/src/decorators/upload.decorator.ts +0 -31
  272. package/src/env/env.module.ts +0 -8
  273. package/src/env/env.service.ts +0 -12
  274. package/src/env/env.ts +0 -14
  275. package/src/filters/domain-errors.filter.ts +0 -97
  276. package/src/filters/global-exception.filter.ts +0 -60
  277. package/src/filters/prisma-validation-exception.filter.ts +0 -73
  278. package/src/filters/zod-errors.filter.ts +0 -48
  279. package/src/services/logging/ilogging.service.ts +0 -17
  280. package/src/services/logging/logging.service.ts +0 -10
  281. package/src/services/redis/iredis.service.ts +0 -11
  282. package/src/services/redis/redis.service.ts +0 -70
  283. package/src/services/redlock/ired-lock.service.ts +0 -4
  284. package/src/services/redlock/red-lock.service.ts +0 -36
  285. package/src/test/koala-app-test-dependencies.ts +0 -15
  286. package/src/test/koala-app-test.ts +0 -103
  287. package/src/test/repositories/in-memory-base.repository.ts +0 -90
  288. package/src/test/services/fake-logging.service.ts +0 -7
  289. package/src/test/services/fake-red-lock.service.ts +0 -11
  290. package/src/test/utils/create-e2e-database.ts +0 -55
  291. package/src/test/utils/drop-e2e-database.ts +0 -36
  292. package/src/test/utils/wait-for.ts +0 -31
  293. package/tsconfig.lib.json +0 -11
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityBase = exports.EntityActionType = void 0;
4
+ const utils_1 = require("@koalarx/utils");
5
+ const auto_mapping_list_1 = require("../mapping/auto-mapping-list");
6
+ const list_1 = require("../utils/list");
7
+ var EntityActionType;
8
+ (function (EntityActionType) {
9
+ EntityActionType[EntityActionType["create"] = 1] = "create";
10
+ EntityActionType[EntityActionType["update"] = 2] = "update";
11
+ })(EntityActionType || (exports.EntityActionType = EntityActionType = {}));
12
+ class EntityBase {
13
+ _id;
14
+ _action = EntityActionType.create;
15
+ constructor(props) {
16
+ if (props) {
17
+ this.automap(props);
18
+ }
19
+ }
20
+ automap(props) {
21
+ if (props) {
22
+ for (const key of Object.keys(props)) {
23
+ if (props[key] === undefined) {
24
+ continue;
25
+ }
26
+ const propDefinitions = auto_mapping_list_1.AutoMappingList.getPropDefinitions(this.constructor.prototype.constructor, key);
27
+ const EntityOnPropKey = auto_mapping_list_1.AutoMappingList.getSourceByName(propDefinitions?.type ?? '');
28
+ if (Array.isArray(props[key]) && this[key] instanceof list_1.List) {
29
+ let value = props[key];
30
+ if (this[key].entityType) {
31
+ value = value.map((item) => {
32
+ const entity = new this[key].entityType();
33
+ entity._action = this._action;
34
+ entity.automap(item);
35
+ return entity;
36
+ });
37
+ }
38
+ this[key].setList(value);
39
+ }
40
+ else if (propDefinitions?.type === 'KlArray' &&
41
+ (props[key] instanceof Array || Array.isArray(props[key]))) {
42
+ this[key] = new utils_1.KlArray(props[key]);
43
+ }
44
+ else if (propDefinitions?.type === 'KlDate' && props[key] instanceof Date) {
45
+ this[key] = new utils_1.KlDate(props[key]);
46
+ }
47
+ else if (propDefinitions?.type === 'KlTime' && props[key] instanceof Date) {
48
+ this[key] = new utils_1.KlTime(props[key].getHours(), props[key].getMinutes(), props[key].getSeconds(), props[key].getMilliseconds());
49
+ }
50
+ else if (EntityOnPropKey) {
51
+ if (props[key]) {
52
+ const entity = new EntityOnPropKey();
53
+ entity._action = this._action;
54
+ entity.automap(props[key]);
55
+ this[key] = entity;
56
+ }
57
+ }
58
+ else if (propDefinitions) {
59
+ if (key === 'id') {
60
+ this._id = props[key];
61
+ }
62
+ this[key] = props[key];
63
+ }
64
+ }
65
+ }
66
+ }
67
+ equals(obj) {
68
+ return obj._id === this._id;
69
+ }
70
+ }
71
+ exports.EntityBase = EntityBase;
@@ -0,0 +1,13 @@
1
+ import { EntityBase } from './entity.base';
2
+ type EntityProps<T> = Omit<{
3
+ [K in keyof T as T[K] extends Function ? never : K]: T[K];
4
+ }, '_id' | '_action'>;
5
+ export declare function Entity<T extends new (...args: any[]) => EntityBase<any>>(id?: keyof EntityProps<InstanceType<T>>): (target: T) => {
6
+ new (...args: any[]): {
7
+ _id: import("../utils/interfaces/icomparable").IComparableId;
8
+ _action: import("./entity.base").EntityActionType;
9
+ automap(props?: import("./entity.base").EntityProps<any> | undefined): void;
10
+ equals(obj: EntityBase<any>): boolean;
11
+ };
12
+ } & T;
13
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Entity = Entity;
4
+ function Entity(id) {
5
+ return function (target) {
6
+ class NewConstructor extends target {
7
+ constructor(...args) {
8
+ super(...args);
9
+ if (typeof this.automap === 'function') {
10
+ this.automap(args[0]);
11
+ }
12
+ }
13
+ }
14
+ Object.setPrototypeOf(NewConstructor.prototype, target.prototype);
15
+ Object.setPrototypeOf(NewConstructor, target);
16
+ Object.defineProperty(NewConstructor, 'name', {
17
+ value: target.name,
18
+ writable: false,
19
+ });
20
+ Reflect.defineMetadata('entity:id', id, NewConstructor.prototype);
21
+ return NewConstructor;
22
+ };
23
+ }
@@ -0,0 +1,8 @@
1
+ import { Prisma } from 'prisma/generated/client';
2
+ export interface PrismaClientWithCustomTransaction extends Readonly<Prisma.TransactionClient> {
3
+ withTransaction<F>(fn: (prisma: Prisma.TransactionClient) => Promise<F>, options?: {
4
+ maxWait?: number | undefined;
5
+ timeout?: number | undefined;
6
+ isolationLevel?: Prisma.TransactionIsolationLevel | undefined;
7
+ }): Promise<F>;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export declare function setPrismaClient(prismaClientClass: any): void;
2
+ export declare function getPrismaClientClass(): any;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setPrismaClient = setPrismaClient;
4
+ exports.getPrismaClientClass = getPrismaClientClass;
5
+ const path = require("path");
6
+ const fs = require("fs");
7
+ let cachedPrismaClient = null;
8
+ function findPrismaClient() {
9
+ const possiblePaths = [
10
+ path.join(process.cwd(), 'prisma/generated/client.js'),
11
+ path.join(__dirname, '../../../../../prisma/generated/client.js'),
12
+ path.join(process.cwd(), 'prisma/generated/client.ts'),
13
+ path.join(__dirname, '../../../../../prisma/generated/client.ts'),
14
+ ...(require.main?.filename
15
+ ? [
16
+ path.join(path.dirname(require.main.filename), '../prisma/generated/client.js'),
17
+ path.join(path.dirname(require.main.filename), '../prisma/generated/client.ts'),
18
+ ]
19
+ : []),
20
+ ];
21
+ for (const prismaPath of possiblePaths) {
22
+ if (fs.existsSync(prismaPath)) {
23
+ return prismaPath;
24
+ }
25
+ }
26
+ return null;
27
+ }
28
+ async function resolvePrismaClient() {
29
+ if (cachedPrismaClient) {
30
+ return cachedPrismaClient;
31
+ }
32
+ const prismaPath = findPrismaClient();
33
+ if (!prismaPath) {
34
+ throw new Error(`
35
+ Não foi possível carregar o Prisma Client automaticamente.
36
+
37
+ Certifique-se de que você:
38
+ 1. Executou 'bunx prisma generate' no seu projeto
39
+ 2. Tem a pasta 'prisma/generated/client' no seu projeto
40
+ 3. A lib @koalarx/nest está instalada como dependência
41
+
42
+ Se o problema persistir, você pode registrar manualmente o Prisma Client:
43
+
44
+ import { setPrismaClient } from '@koalarx/nest'
45
+ import { PrismaClient } from './prisma/generated/client'
46
+
47
+ setPrismaClient(PrismaClient)
48
+ `.trim());
49
+ }
50
+ try {
51
+ const module = await Promise.resolve(`${prismaPath}`).then(s => require(s));
52
+ cachedPrismaClient = module.PrismaClient || module.default || module;
53
+ return cachedPrismaClient;
54
+ }
55
+ catch (error) {
56
+ throw new Error(`
57
+ Erro ao carregar o Prisma Client de ${prismaPath}:
58
+ ${error instanceof Error ? error.message : String(error)}
59
+
60
+ Certifique-se de que 'bunx prisma generate' foi executado com sucesso.
61
+ `.trim());
62
+ }
63
+ }
64
+ let manualPrismaClient = null;
65
+ function setPrismaClient(prismaClientClass) {
66
+ manualPrismaClient = prismaClientClass;
67
+ cachedPrismaClient = null;
68
+ }
69
+ function getPrismaClientClass() {
70
+ if (manualPrismaClient) {
71
+ return manualPrismaClient;
72
+ }
73
+ return resolvePrismaClient();
74
+ }
@@ -0,0 +1,11 @@
1
+ import { Prisma } from 'prisma/generated/client';
2
+ export declare abstract class PrismaTransactionalClient {
3
+ protected readonly transactionalClient: Prisma.TransactionClient;
4
+ [key: symbol]: any;
5
+ constructor(transactionalClient: Prisma.TransactionClient);
6
+ withTransaction<F>(fn: (prisma: Prisma.TransactionClient) => Promise<F>): Promise<F>;
7
+ $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;
8
+ $executeRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise<number>;
9
+ $queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;
10
+ $queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;
11
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrismaTransactionalClient = void 0;
4
+ class PrismaTransactionalClient {
5
+ transactionalClient;
6
+ constructor(transactionalClient) {
7
+ this.transactionalClient = transactionalClient;
8
+ }
9
+ async withTransaction(fn) {
10
+ return await fn(this.transactionalClient);
11
+ }
12
+ $executeRaw(query, ...values) {
13
+ return this.transactionalClient.$executeRaw(query, ...values);
14
+ }
15
+ $executeRawUnsafe(query, ...values) {
16
+ return this.transactionalClient.$executeRawUnsafe(query, ...values);
17
+ }
18
+ $queryRaw(query, ...values) {
19
+ return this.transactionalClient.$queryRaw(query, ...values);
20
+ }
21
+ $queryRawUnsafe(query, ...values) {
22
+ return this.transactionalClient.$queryRawUnsafe(query, ...values);
23
+ }
24
+ }
25
+ exports.PrismaTransactionalClient = PrismaTransactionalClient;
@@ -0,0 +1,24 @@
1
+ import { EnvService } from '@koalarx/nest/env/env.service';
2
+ import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
3
+ import { PrismaClientWithCustomTransaction } from './prisma-client-with-custom-transaction.interface';
4
+ import type { Prisma } from 'prisma/generated/client';
5
+ export declare function setPrismaClientOptions(options: Prisma.PrismaClientOptions): void;
6
+ export declare class PrismaService implements OnModuleInit, OnModuleDestroy, PrismaClientWithCustomTransaction {
7
+ private readonly env;
8
+ private prismaInstance;
9
+ constructor(env: EnvService);
10
+ initialize(): Promise<void>;
11
+ onModuleInit(): Promise<any>;
12
+ onModuleDestroy(): any;
13
+ withTransaction<F>(fn: (prisma: Prisma.TransactionClient) => Promise<F>, options?: {
14
+ maxWait?: number;
15
+ timeout?: number;
16
+ isolationLevel?: Prisma.TransactionIsolationLevel;
17
+ }): Promise<F>;
18
+ [Symbol.toPrimitive](): any;
19
+ toString(): string;
20
+ get $connect(): any;
21
+ get $disconnect(): any;
22
+ get $transaction(): any;
23
+ get $on(): any;
24
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PrismaService = void 0;
13
+ exports.setPrismaClientOptions = setPrismaClientOptions;
14
+ const env_service_1 = require("../../env/env.service");
15
+ const common_1 = require("@nestjs/common");
16
+ const prisma_resolver_1 = require("./prisma-resolver");
17
+ let globalPrismaOptions = {};
18
+ function setPrismaClientOptions(options) {
19
+ globalPrismaOptions = options;
20
+ }
21
+ let PrismaClientClass = null;
22
+ async function loadPrismaClient() {
23
+ if (!PrismaClientClass) {
24
+ PrismaClientClass = await (0, prisma_resolver_1.getPrismaClientClass)();
25
+ }
26
+ return PrismaClientClass;
27
+ }
28
+ let PrismaService = class PrismaService {
29
+ env;
30
+ prismaInstance;
31
+ constructor(env) {
32
+ this.env = env;
33
+ return new Proxy(this, {
34
+ get: (target, prop, receiver) => {
35
+ if (prop in target) {
36
+ const value = Reflect.get(target, prop, receiver);
37
+ if (typeof value === 'function') {
38
+ return value.bind(target);
39
+ }
40
+ return value;
41
+ }
42
+ if (target.prismaInstance && typeof prop === 'string') {
43
+ const value = target.prismaInstance[prop];
44
+ if (typeof value === 'function') {
45
+ return value.bind(target.prismaInstance);
46
+ }
47
+ return value;
48
+ }
49
+ return Reflect.get(target, prop, receiver);
50
+ },
51
+ });
52
+ }
53
+ async initialize() {
54
+ const PrismaClientType = await loadPrismaClient();
55
+ this.prismaInstance = new PrismaClientType({
56
+ log: [{ emit: 'event', level: 'query' }],
57
+ ...globalPrismaOptions,
58
+ });
59
+ }
60
+ async onModuleInit() {
61
+ await this.initialize();
62
+ if (this.env.get('PRISMA_QUERY_LOG')) {
63
+ this.prismaInstance?.$on?.('query', async (e) => {
64
+ console.log(`${e.query} ${e.params}`);
65
+ });
66
+ }
67
+ return this.prismaInstance?.$connect?.();
68
+ }
69
+ onModuleDestroy() {
70
+ return this.prismaInstance?.$disconnect?.();
71
+ }
72
+ async withTransaction(fn, options) {
73
+ return this.prismaInstance?.$transaction?.(fn, options ?? {
74
+ maxWait: 20000,
75
+ timeout: 20000,
76
+ });
77
+ }
78
+ [Symbol.toPrimitive]() {
79
+ return this.prismaInstance;
80
+ }
81
+ toString() {
82
+ return '[PrismaService]';
83
+ }
84
+ get $connect() {
85
+ return this.prismaInstance?.$connect?.bind(this.prismaInstance);
86
+ }
87
+ get $disconnect() {
88
+ return this.prismaInstance?.$disconnect?.bind(this.prismaInstance);
89
+ }
90
+ get $transaction() {
91
+ return this.prismaInstance?.$transaction?.bind(this.prismaInstance);
92
+ }
93
+ get $on() {
94
+ return this.prismaInstance?.$on?.bind(this.prismaInstance);
95
+ }
96
+ [Symbol.for('nodejs.util.inspect.custom')]() {
97
+ return this.prismaInstance;
98
+ }
99
+ };
100
+ exports.PrismaService = PrismaService;
101
+ exports.PrismaService = PrismaService = __decorate([
102
+ (0, common_1.Injectable)(),
103
+ __metadata("design:paramtypes", [env_service_1.EnvService])
104
+ ], PrismaService);
@@ -0,0 +1,44 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { ListResponse } from '..';
3
+ import { PaginationDto } from '../dtos/pagination.dto';
4
+ import { IComparableId } from '../utils/interfaces/icomparable';
5
+ import { List } from '../utils/list';
6
+ import { EntityBase } from './entity.base';
7
+ import { PrismaTransactionalClient } from './prisma-transactional-client';
8
+ type RepositoryInclude<TEntity> = Omit<{
9
+ [K in keyof TEntity as TEntity[K] extends Function ? never : K]?: boolean | (TEntity[K] extends List<infer U> ? RepositoryInclude<U> : RepositoryInclude<TEntity[K]>);
10
+ }, '_id' | '_action'>;
11
+ interface RepositoryInitProps<TEntity extends EntityBase<TEntity>, TContext extends PrismaTransactionalClient> {
12
+ context: TContext;
13
+ modelName: Type<TEntity>;
14
+ transactionContext?: Type<TContext>;
15
+ include?: RepositoryInclude<TEntity>;
16
+ }
17
+ export declare abstract class RepositoryBase<TEntity extends EntityBase<TEntity>, TContext extends PrismaTransactionalClient = PrismaTransactionalClient, TModelKey extends keyof TContext = keyof TContext> {
18
+ protected _context: TContext;
19
+ private readonly _modelName;
20
+ private readonly _include?;
21
+ constructor({ context, modelName, include, }: RepositoryInitProps<TEntity, TContext>);
22
+ private listRelationEntities;
23
+ private listToRelationActionList;
24
+ private entityToPrisma;
25
+ private findManySchema;
26
+ private createEntity;
27
+ private orphanRemoval;
28
+ private getIdPropName;
29
+ private getInclude;
30
+ private getPropNameFromEntitySource;
31
+ private persistRelations;
32
+ protected context(transactionalClient?: TContext): TContext[TModelKey];
33
+ protected findById(id: IComparableId): Promise<TEntity | null>;
34
+ protected findFirst<T>(where: T): Promise<TEntity | null>;
35
+ protected findUnique<T>(where: T): Promise<TEntity | null>;
36
+ protected findMany<T>(where: T, pagination?: PaginationDto): Promise<TEntity[]>;
37
+ protected findManyAndCount<T>(where: T, pagination?: PaginationDto): Promise<ListResponse<TEntity>>;
38
+ protected saveChanges<TWhere = any>(entity: TEntity, updateWhere?: TWhere): Promise<TEntity>;
39
+ protected saveMany<TWhere = any>(entities: TEntity[], updateWhere?: TWhere): Promise<void>;
40
+ protected remove<TWhere = any>(where: TWhere, notCascadeEntityProps?: Array<keyof TEntity>, externalServices?: Promise<any>): Promise<any>;
41
+ protected removeMany<TWhere = any>(where: TWhere, notCascadeEntityProps?: Array<keyof TEntity>, externalServices?: Promise<any>): Promise<void>;
42
+ withTransaction(fn: (prisma: TContext) => Promise<any>): Promise<any>;
43
+ }
44
+ export {};