@sasscore/database 0.0.1

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 (254) hide show
  1. package/README.md +281 -0
  2. package/dist/connection/index.d.ts +7 -0
  3. package/dist/connection/index.d.ts.map +1 -0
  4. package/dist/connection/index.js +7 -0
  5. package/dist/connection/index.js.map +1 -0
  6. package/dist/connection/infrastructure/connection.module.d.ts +18 -0
  7. package/dist/connection/infrastructure/connection.module.d.ts.map +1 -0
  8. package/dist/connection/infrastructure/connection.module.js +75 -0
  9. package/dist/connection/infrastructure/connection.module.js.map +1 -0
  10. package/dist/connection/infrastructure/sequelize.service.d.ts +16 -0
  11. package/dist/connection/infrastructure/sequelize.service.d.ts.map +1 -0
  12. package/dist/connection/infrastructure/sequelize.service.js +56 -0
  13. package/dist/connection/infrastructure/sequelize.service.js.map +1 -0
  14. package/dist/database.module.d.ts +25 -0
  15. package/dist/database.module.d.ts.map +1 -0
  16. package/dist/database.module.js +71 -0
  17. package/dist/database.module.js.map +1 -0
  18. package/dist/health/database-health.service.d.ts +12 -0
  19. package/dist/health/database-health.service.d.ts.map +1 -0
  20. package/dist/health/database-health.service.js +48 -0
  21. package/dist/health/database-health.service.js.map +1 -0
  22. package/dist/health/database-health.types.d.ts +8 -0
  23. package/dist/health/database-health.types.d.ts.map +1 -0
  24. package/dist/health/database-health.types.js +2 -0
  25. package/dist/health/database-health.types.js.map +1 -0
  26. package/dist/health/health.module.d.ts +3 -0
  27. package/dist/health/health.module.d.ts.map +1 -0
  28. package/dist/health/health.module.js +20 -0
  29. package/dist/health/health.module.js.map +1 -0
  30. package/dist/health/index.d.ts +12 -0
  31. package/dist/health/index.d.ts.map +1 -0
  32. package/dist/health/index.js +9 -0
  33. package/dist/health/index.js.map +1 -0
  34. package/dist/health/migration-health.service.d.ts +14 -0
  35. package/dist/health/migration-health.service.d.ts.map +1 -0
  36. package/dist/health/migration-health.service.js +43 -0
  37. package/dist/health/migration-health.service.js.map +1 -0
  38. package/dist/health/migration-health.types.d.ts +9 -0
  39. package/dist/health/migration-health.types.d.ts.map +1 -0
  40. package/dist/health/migration-health.types.js +2 -0
  41. package/dist/health/migration-health.types.js.map +1 -0
  42. package/dist/health/outbox-health.service.d.ts +14 -0
  43. package/dist/health/outbox-health.service.d.ts.map +1 -0
  44. package/dist/health/outbox-health.service.js +79 -0
  45. package/dist/health/outbox-health.service.js.map +1 -0
  46. package/dist/health/outbox-health.types.d.ts +15 -0
  47. package/dist/health/outbox-health.types.d.ts.map +1 -0
  48. package/dist/health/outbox-health.types.js +2 -0
  49. package/dist/health/outbox-health.types.js.map +1 -0
  50. package/dist/index.d.ts +26 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +24 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/migrations/20260826173000-create-outbox-events.d.ts +5 -0
  55. package/dist/migrations/20260826173000-create-outbox-events.d.ts.map +1 -0
  56. package/dist/migrations/20260826173000-create-outbox-events.js +102 -0
  57. package/dist/migrations/20260826173000-create-outbox-events.js.map +1 -0
  58. package/dist/migrations/create-migration-registry.d.ts +9 -0
  59. package/dist/migrations/create-migration-registry.d.ts.map +1 -0
  60. package/dist/migrations/create-migration-registry.js +37 -0
  61. package/dist/migrations/create-migration-registry.js.map +1 -0
  62. package/dist/migrations/index.d.ts +7 -0
  63. package/dist/migrations/index.d.ts.map +1 -0
  64. package/dist/migrations/index.js +6 -0
  65. package/dist/migrations/index.js.map +1 -0
  66. package/dist/migrations/migration-registry.d.ts +4 -0
  67. package/dist/migrations/migration-registry.d.ts.map +1 -0
  68. package/dist/migrations/migration-registry.js +4 -0
  69. package/dist/migrations/migration-registry.js.map +1 -0
  70. package/dist/migrations/migration-runner.d.ts +27 -0
  71. package/dist/migrations/migration-runner.d.ts.map +1 -0
  72. package/dist/migrations/migration-runner.js +135 -0
  73. package/dist/migrations/migration-runner.js.map +1 -0
  74. package/dist/migrations/migration.helpers.d.ts +8 -0
  75. package/dist/migrations/migration.helpers.d.ts.map +1 -0
  76. package/dist/migrations/migration.helpers.js +9 -0
  77. package/dist/migrations/migration.helpers.js.map +1 -0
  78. package/dist/migrations/migration.types.d.ts +26 -0
  79. package/dist/migrations/migration.types.d.ts.map +1 -0
  80. package/dist/migrations/migration.types.js +2 -0
  81. package/dist/migrations/migration.types.js.map +1 -0
  82. package/dist/models/base.model.d.ts +17 -0
  83. package/dist/models/base.model.d.ts.map +1 -0
  84. package/dist/models/base.model.js +56 -0
  85. package/dist/models/base.model.js.map +1 -0
  86. package/dist/models/index.d.ts +2 -0
  87. package/dist/models/index.d.ts.map +1 -0
  88. package/dist/models/index.js +2 -0
  89. package/dist/models/index.js.map +1 -0
  90. package/dist/outbox/application/outbox.processor.d.ts +20 -0
  91. package/dist/outbox/application/outbox.processor.d.ts.map +1 -0
  92. package/dist/outbox/application/outbox.processor.js +66 -0
  93. package/dist/outbox/application/outbox.processor.js.map +1 -0
  94. package/dist/outbox/application/outbox.publisher.d.ts +17 -0
  95. package/dist/outbox/application/outbox.publisher.d.ts.map +1 -0
  96. package/dist/outbox/application/outbox.publisher.js +33 -0
  97. package/dist/outbox/application/outbox.publisher.js.map +1 -0
  98. package/dist/outbox/application/ports/event-dispatcher.port.d.ts +7 -0
  99. package/dist/outbox/application/ports/event-dispatcher.port.d.ts.map +1 -0
  100. package/dist/outbox/application/ports/event-dispatcher.port.js +2 -0
  101. package/dist/outbox/application/ports/event-dispatcher.port.js.map +1 -0
  102. package/dist/outbox/domain/entities/domain-event.entity.d.ts +11 -0
  103. package/dist/outbox/domain/entities/domain-event.entity.d.ts.map +1 -0
  104. package/dist/outbox/domain/entities/domain-event.entity.js +15 -0
  105. package/dist/outbox/domain/entities/domain-event.entity.js.map +1 -0
  106. package/dist/outbox/domain/entities/outbox-event.types.d.ts +21 -0
  107. package/dist/outbox/domain/entities/outbox-event.types.d.ts.map +1 -0
  108. package/dist/outbox/domain/entities/outbox-event.types.js +2 -0
  109. package/dist/outbox/domain/entities/outbox-event.types.js.map +1 -0
  110. package/dist/outbox/domain/index.d.ts +5 -0
  111. package/dist/outbox/domain/index.d.ts.map +1 -0
  112. package/dist/outbox/domain/index.js +3 -0
  113. package/dist/outbox/domain/index.js.map +1 -0
  114. package/dist/outbox/domain/repositories/outbox.repository.interface.d.ts +13 -0
  115. package/dist/outbox/domain/repositories/outbox.repository.interface.d.ts.map +1 -0
  116. package/dist/outbox/domain/repositories/outbox.repository.interface.js +2 -0
  117. package/dist/outbox/domain/repositories/outbox.repository.interface.js.map +1 -0
  118. package/dist/outbox/domain/value-objects/event-types.d.ts +19 -0
  119. package/dist/outbox/domain/value-objects/event-types.d.ts.map +1 -0
  120. package/dist/outbox/domain/value-objects/event-types.js +18 -0
  121. package/dist/outbox/domain/value-objects/event-types.js.map +1 -0
  122. package/dist/outbox/event-dispatcher.d.ts +3 -0
  123. package/dist/outbox/event-dispatcher.d.ts.map +1 -0
  124. package/dist/outbox/event-dispatcher.js +3 -0
  125. package/dist/outbox/event-dispatcher.js.map +1 -0
  126. package/dist/outbox/event.entity.d.ts +4 -0
  127. package/dist/outbox/event.entity.d.ts.map +1 -0
  128. package/dist/outbox/event.entity.js +3 -0
  129. package/dist/outbox/event.entity.js.map +1 -0
  130. package/dist/outbox/index.d.ts +19 -0
  131. package/dist/outbox/index.d.ts.map +1 -0
  132. package/dist/outbox/index.js +17 -0
  133. package/dist/outbox/index.js.map +1 -0
  134. package/dist/outbox/infrastructure/dispatch/event-dispatcher.d.ts +21 -0
  135. package/dist/outbox/infrastructure/dispatch/event-dispatcher.d.ts.map +1 -0
  136. package/dist/outbox/infrastructure/dispatch/event-dispatcher.js +55 -0
  137. package/dist/outbox/infrastructure/dispatch/event-dispatcher.js.map +1 -0
  138. package/dist/outbox/infrastructure/dispatch/flat-handler.registry.d.ts +13 -0
  139. package/dist/outbox/infrastructure/dispatch/flat-handler.registry.d.ts.map +1 -0
  140. package/dist/outbox/infrastructure/dispatch/flat-handler.registry.js +46 -0
  141. package/dist/outbox/infrastructure/dispatch/flat-handler.registry.js.map +1 -0
  142. package/dist/outbox/infrastructure/outbox.module.d.ts +13 -0
  143. package/dist/outbox/infrastructure/outbox.module.d.ts.map +1 -0
  144. package/dist/outbox/infrastructure/outbox.module.js +53 -0
  145. package/dist/outbox/infrastructure/outbox.module.js.map +1 -0
  146. package/dist/outbox/infrastructure/persistence/outbox-event.model.d.ts +106 -0
  147. package/dist/outbox/infrastructure/persistence/outbox-event.model.d.ts.map +1 -0
  148. package/dist/outbox/infrastructure/persistence/outbox-event.model.js +186 -0
  149. package/dist/outbox/infrastructure/persistence/outbox-event.model.js.map +1 -0
  150. package/dist/outbox/infrastructure/persistence/outbox-persistence.module.d.ts +9 -0
  151. package/dist/outbox/infrastructure/persistence/outbox-persistence.module.d.ts.map +1 -0
  152. package/dist/outbox/infrastructure/persistence/outbox-persistence.module.js +25 -0
  153. package/dist/outbox/infrastructure/persistence/outbox-persistence.module.js.map +1 -0
  154. package/dist/outbox/infrastructure/persistence/sequelize-outbox.repository.d.ts +24 -0
  155. package/dist/outbox/infrastructure/persistence/sequelize-outbox.repository.d.ts.map +1 -0
  156. package/dist/outbox/infrastructure/persistence/sequelize-outbox.repository.js +191 -0
  157. package/dist/outbox/infrastructure/persistence/sequelize-outbox.repository.js.map +1 -0
  158. package/dist/outbox/outbox-flat-handler.registry.d.ts +4 -0
  159. package/dist/outbox/outbox-flat-handler.registry.d.ts.map +1 -0
  160. package/dist/outbox/outbox-flat-handler.registry.js +4 -0
  161. package/dist/outbox/outbox-flat-handler.registry.js.map +1 -0
  162. package/dist/outbox/outbox.constants.d.ts +3 -0
  163. package/dist/outbox/outbox.constants.d.ts.map +1 -0
  164. package/dist/outbox/outbox.constants.js +3 -0
  165. package/dist/outbox/outbox.constants.js.map +1 -0
  166. package/dist/outbox/outbox.module.d.ts +3 -0
  167. package/dist/outbox/outbox.module.d.ts.map +1 -0
  168. package/dist/outbox/outbox.module.js +3 -0
  169. package/dist/outbox/outbox.module.js.map +1 -0
  170. package/dist/outbox/outbox.processor.d.ts +4 -0
  171. package/dist/outbox/outbox.processor.d.ts.map +1 -0
  172. package/dist/outbox/outbox.processor.js +4 -0
  173. package/dist/outbox/outbox.processor.js.map +1 -0
  174. package/dist/outbox/outbox.publisher.d.ts +3 -0
  175. package/dist/outbox/outbox.publisher.d.ts.map +1 -0
  176. package/dist/outbox/outbox.publisher.js +3 -0
  177. package/dist/outbox/outbox.publisher.js.map +1 -0
  178. package/dist/outbox/outbox.repository.d.ts +3 -0
  179. package/dist/outbox/outbox.repository.d.ts.map +1 -0
  180. package/dist/outbox/outbox.repository.js +3 -0
  181. package/dist/outbox/outbox.repository.js.map +1 -0
  182. package/dist/providers/database.providers.d.ts +4 -0
  183. package/dist/providers/database.providers.d.ts.map +1 -0
  184. package/dist/providers/database.providers.js +25 -0
  185. package/dist/providers/database.providers.js.map +1 -0
  186. package/dist/providers/database.tokens.d.ts +43 -0
  187. package/dist/providers/database.tokens.d.ts.map +1 -0
  188. package/dist/providers/database.tokens.js +43 -0
  189. package/dist/providers/database.tokens.js.map +1 -0
  190. package/dist/providers/index.d.ts +3 -0
  191. package/dist/providers/index.d.ts.map +1 -0
  192. package/dist/providers/index.js +3 -0
  193. package/dist/providers/index.js.map +1 -0
  194. package/dist/repositories/index.d.ts +5 -0
  195. package/dist/repositories/index.d.ts.map +1 -0
  196. package/dist/repositories/index.js +4 -0
  197. package/dist/repositories/index.js.map +1 -0
  198. package/dist/repositories/main.repository.d.ts +163 -0
  199. package/dist/repositories/main.repository.d.ts.map +1 -0
  200. package/dist/repositories/main.repository.js +1120 -0
  201. package/dist/repositories/main.repository.js.map +1 -0
  202. package/dist/repositories/repository-execution-mode.enum.d.ts +11 -0
  203. package/dist/repositories/repository-execution-mode.enum.d.ts.map +1 -0
  204. package/dist/repositories/repository-execution-mode.enum.js +12 -0
  205. package/dist/repositories/repository-execution-mode.enum.js.map +1 -0
  206. package/dist/repositories/repository.types.d.ts +65 -0
  207. package/dist/repositories/repository.types.d.ts.map +1 -0
  208. package/dist/repositories/repository.types.js +2 -0
  209. package/dist/repositories/repository.types.js.map +1 -0
  210. package/dist/repositories/tenant-scope-mode.enum.d.ts +13 -0
  211. package/dist/repositories/tenant-scope-mode.enum.d.ts.map +1 -0
  212. package/dist/repositories/tenant-scope-mode.enum.js +14 -0
  213. package/dist/repositories/tenant-scope-mode.enum.js.map +1 -0
  214. package/dist/tenancy/domain/ports/tenant-context.port.d.ts +22 -0
  215. package/dist/tenancy/domain/ports/tenant-context.port.d.ts.map +1 -0
  216. package/dist/tenancy/domain/ports/tenant-context.port.js +2 -0
  217. package/dist/tenancy/domain/ports/tenant-context.port.js.map +1 -0
  218. package/dist/tenancy/index.d.ts +8 -0
  219. package/dist/tenancy/index.d.ts.map +1 -0
  220. package/dist/tenancy/index.js +7 -0
  221. package/dist/tenancy/index.js.map +1 -0
  222. package/dist/tenancy/infrastructure/cls-tenant-context.adapter.d.ts +26 -0
  223. package/dist/tenancy/infrastructure/cls-tenant-context.adapter.d.ts.map +1 -0
  224. package/dist/tenancy/infrastructure/cls-tenant-context.adapter.js +73 -0
  225. package/dist/tenancy/infrastructure/cls-tenant-context.adapter.js.map +1 -0
  226. package/dist/tenancy/infrastructure/tenant-context.module.d.ts +7 -0
  227. package/dist/tenancy/infrastructure/tenant-context.module.d.ts.map +1 -0
  228. package/dist/tenancy/infrastructure/tenant-context.module.js +32 -0
  229. package/dist/tenancy/infrastructure/tenant-context.module.js.map +1 -0
  230. package/dist/tokens.d.ts +6 -0
  231. package/dist/tokens.d.ts.map +1 -0
  232. package/dist/tokens.js +6 -0
  233. package/dist/tokens.js.map +1 -0
  234. package/dist/transaction-manager/application/transaction-manager.service.d.ts +12 -0
  235. package/dist/transaction-manager/application/transaction-manager.service.d.ts.map +1 -0
  236. package/dist/transaction-manager/application/transaction-manager.service.js +29 -0
  237. package/dist/transaction-manager/application/transaction-manager.service.js.map +1 -0
  238. package/dist/transaction-manager/domain/ports/transaction-manager.port.d.ts +9 -0
  239. package/dist/transaction-manager/domain/ports/transaction-manager.port.d.ts.map +1 -0
  240. package/dist/transaction-manager/domain/ports/transaction-manager.port.js +2 -0
  241. package/dist/transaction-manager/domain/ports/transaction-manager.port.js.map +1 -0
  242. package/dist/transaction-manager/index.d.ts +7 -0
  243. package/dist/transaction-manager/index.d.ts.map +1 -0
  244. package/dist/transaction-manager/index.js +6 -0
  245. package/dist/transaction-manager/index.js.map +1 -0
  246. package/dist/types/database-module-options.d.ts +12 -0
  247. package/dist/types/database-module-options.d.ts.map +1 -0
  248. package/dist/types/database-module-options.js +2 -0
  249. package/dist/types/database-module-options.js.map +1 -0
  250. package/dist/types/index.d.ts +2 -0
  251. package/dist/types/index.d.ts.map +1 -0
  252. package/dist/types/index.js +2 -0
  253. package/dist/types/index.js.map +1 -0
  254. package/package.json +69 -0
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Database package DI tokens — the only token registry for this bounded context.
3
+ *
4
+ * Stack is fixed: Sequelize ORM + PostgreSQL + tenant CLS + transactions + outbox.
5
+ * No ORM-agnostic abstractions — adapters are Sequelize-specific by design.
6
+ *
7
+ * **Outside this package**, business modules inject facades only:
8
+ * `TransactionManager`, `TenantContext`, `OutboxPublisher` — not these tokens.
9
+ */
10
+ export declare const DATABASE_TOKENS: {
11
+ /** Primary Sequelize instance (tenant-scoped when applicable). */
12
+ readonly SEQUELIZE: symbol;
13
+ readonly GENERAL_CONNECTION: symbol;
14
+ readonly TENANT_CONNECTION: symbol;
15
+ readonly SHARED_CONNECTION: symbol;
16
+ readonly TENANT_CONNECTION_SERVICE: symbol;
17
+ /** CLS-backed tenant / request context. */
18
+ readonly TENANT_CONTEXT: symbol;
19
+ readonly REQUEST_CONTEXT: symbol;
20
+ /** Single entry point for `sequelize.transaction()` — never call raw Sequelize in contexts. */
21
+ readonly TRANSACTION_MANAGER: symbol;
22
+ readonly OUTBOX_REPOSITORY: symbol;
23
+ readonly OUTBOX_DISPATCHER: symbol;
24
+ readonly OUTBOX_PUBLISHER: symbol;
25
+ readonly OUTBOX_PROCESSOR: symbol;
26
+ };
27
+ /** @deprecated Use {@link DATABASE_TOKENS} — kept for in-package migration only. */
28
+ export declare const OUTBOX_TOKENS: {
29
+ readonly REPOSITORY: symbol;
30
+ readonly DISPATCHER: symbol;
31
+ readonly PUBLISHER: symbol;
32
+ readonly PROCESSOR: symbol;
33
+ };
34
+ /** @deprecated Use {@link DATABASE_TOKENS.TENANT_CONTEXT} */
35
+ export declare const TENANCY_TOKENS: {
36
+ readonly CONTEXT: symbol;
37
+ readonly REQUEST_CONTEXT: symbol;
38
+ };
39
+ /** @deprecated Use {@link DATABASE_TOKENS.TRANSACTION_MANAGER} */
40
+ export declare const TRANSACTION_TOKENS: {
41
+ readonly MANAGER: symbol;
42
+ };
43
+ //# sourceMappingURL=database.tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.tokens.d.ts","sourceRoot":"","sources":["../../providers/database.tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;IAC1B,kEAAkE;;;;;;IAOlE,2CAA2C;;;IAI3C,+FAA+F;;;;;;CAOvF,CAAC;AAEX,oFAAoF;AACpF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAEX,kEAAkE;AAClE,eAAO,MAAM,kBAAkB;;CAErB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Database package DI tokens — the only token registry for this bounded context.
3
+ *
4
+ * Stack is fixed: Sequelize ORM + PostgreSQL + tenant CLS + transactions + outbox.
5
+ * No ORM-agnostic abstractions — adapters are Sequelize-specific by design.
6
+ *
7
+ * **Outside this package**, business modules inject facades only:
8
+ * `TransactionManager`, `TenantContext`, `OutboxPublisher` — not these tokens.
9
+ */
10
+ export const DATABASE_TOKENS = {
11
+ /** Primary Sequelize instance (tenant-scoped when applicable). */
12
+ SEQUELIZE: Symbol('SEQUELIZE'),
13
+ GENERAL_CONNECTION: Symbol('GENERAL_CONNECTION'),
14
+ TENANT_CONNECTION: Symbol('TENANT_CONNECTION'),
15
+ SHARED_CONNECTION: Symbol('SHARED_CONNECTION'),
16
+ TENANT_CONNECTION_SERVICE: Symbol('TENANT_CONNECTION_SERVICE'),
17
+ /** CLS-backed tenant / request context. */
18
+ TENANT_CONTEXT: Symbol('TENANT_CONTEXT'),
19
+ REQUEST_CONTEXT: Symbol('REQUEST_CONTEXT_SERVICE'),
20
+ /** Single entry point for `sequelize.transaction()` — never call raw Sequelize in contexts. */
21
+ TRANSACTION_MANAGER: Symbol('TRANSACTION_MANAGER'),
22
+ OUTBOX_REPOSITORY: Symbol('OUTBOX_REPOSITORY'),
23
+ OUTBOX_DISPATCHER: Symbol('OUTBOX_EVENT_DISPATCHER'),
24
+ OUTBOX_PUBLISHER: Symbol('OUTBOX_PUBLISHER'),
25
+ OUTBOX_PROCESSOR: Symbol('OUTBOX_PROCESSOR'),
26
+ };
27
+ /** @deprecated Use {@link DATABASE_TOKENS} — kept for in-package migration only. */
28
+ export const OUTBOX_TOKENS = {
29
+ REPOSITORY: DATABASE_TOKENS.OUTBOX_REPOSITORY,
30
+ DISPATCHER: DATABASE_TOKENS.OUTBOX_DISPATCHER,
31
+ PUBLISHER: DATABASE_TOKENS.OUTBOX_PUBLISHER,
32
+ PROCESSOR: DATABASE_TOKENS.OUTBOX_PROCESSOR,
33
+ };
34
+ /** @deprecated Use {@link DATABASE_TOKENS.TENANT_CONTEXT} */
35
+ export const TENANCY_TOKENS = {
36
+ CONTEXT: DATABASE_TOKENS.TENANT_CONTEXT,
37
+ REQUEST_CONTEXT: DATABASE_TOKENS.REQUEST_CONTEXT,
38
+ };
39
+ /** @deprecated Use {@link DATABASE_TOKENS.TRANSACTION_MANAGER} */
40
+ export const TRANSACTION_TOKENS = {
41
+ MANAGER: DATABASE_TOKENS.TRANSACTION_MANAGER,
42
+ };
43
+ //# sourceMappingURL=database.tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.tokens.js","sourceRoot":"","sources":["../../providers/database.tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAE9D,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAElD,+FAA+F;IAC/F,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAElD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,iBAAiB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IACpD,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;CACpC,CAAC;AAEX,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,eAAe,CAAC,iBAAiB;IAC7C,UAAU,EAAE,eAAe,CAAC,iBAAiB;IAC7C,SAAS,EAAE,eAAe,CAAC,gBAAgB;IAC3C,SAAS,EAAE,eAAe,CAAC,gBAAgB;CACnC,CAAC;AAEX,6DAA6D;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,eAAe,CAAC,cAAc;IACvC,eAAe,EAAE,eAAe,CAAC,eAAe;CACxC,CAAC;AAEX,kEAAkE;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,eAAe,CAAC,mBAAmB;CACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { DATABASE_TOKENS, OUTBOX_TOKENS, TENANCY_TOKENS, TRANSACTION_TOKENS } from './database.tokens.js';
2
+ export { outboxTokenProviders } from './database.providers.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { DATABASE_TOKENS, OUTBOX_TOKENS, TENANCY_TOKENS, TRANSACTION_TOKENS } from './database.tokens.js';
2
+ export { outboxTokenProviders } from './database.providers.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { MainRepository } from './main.repository.js';
2
+ export { TenantScopeMode } from './tenant-scope-mode.enum.js';
3
+ export { RepositoryExecutionMode } from './repository-execution-mode.enum.js';
4
+ export type { IFindAllOptions, IOptions, IPagination, IPaginationResponse, IRepository, IRequestContext, ISearch, ITenantScope, IUpdate, } from './repository.types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,YAAY,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,OAAO,EACP,YAAY,EACZ,OAAO,GACR,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { MainRepository } from './main.repository.js';
2
+ export { TenantScopeMode } from './tenant-scope-mode.enum.js';
3
+ export { RepositoryExecutionMode } from './repository-execution-mode.enum.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,163 @@
1
+ import { LoggerService } from '@nestjs/common';
2
+ import { Model, ModelStatic, Transaction } from 'sequelize';
3
+ import type { IFindAllOptions, IOptions, IPagination, IPaginationResponse, IRepository, IRequestContext, ISearch, ITenantScope, IUpdate } from './repository.types.js';
4
+ import { TenantScopeMode } from './tenant-scope-mode.enum.js';
5
+ export declare class MainRepository<T extends Model> implements IRepository<T> {
6
+ protected modelProvider: () => Promise<ModelStatic<T>>;
7
+ private _cachedModel;
8
+ private _modelLoading;
9
+ /** Execution mode: TENANT (default) requires CLS; SYSTEM bypasses CLS and tenant scope. */
10
+ private executionMode;
11
+ private ctx;
12
+ protected _logger: LoggerService;
13
+ /**
14
+ * Repository-level tenant policy (default-safe).
15
+ * Override in subclasses: e.g. {@link TenantScopeMode.DISABLED} for junction / auth lookups.
16
+ */
17
+ protected scopeMode: TenantScopeMode;
18
+ constructor(modelProvider: () => Promise<ModelStatic<T>>);
19
+ /**
20
+ * Builds a new repository instance sharing the same model provider, with {@link IRequestContext}
21
+ * set for this request (see {@link IRepository.createInstance}).
22
+ */
23
+ createInstance(ctx: IRequestContext): Promise<this>;
24
+ /**
25
+ * Builds a new repository instance in SYSTEM mode.
26
+ * No CLS required, no tenant scope applied — safe for admin/system operations only.
27
+ * Use instead of `createInstance({ userId: 0, companyId: 0 })`.
28
+ */
29
+ createSystemInstance(): Promise<this>;
30
+ setCtx(ctx: IRequestContext | undefined): this;
31
+ /** Normalized request context; undefined if not set yet. */
32
+ protected getCtx(): IRequestContext | undefined;
33
+ setLogger(logger: LoggerService): void;
34
+ get logger(): LoggerService;
35
+ /**
36
+ * Tenant scope from {@link IRequestContext} (set via {@link setRequestContext} before DB calls).
37
+ */
38
+ protected getScope(): Partial<ITenantScope>;
39
+ /**
40
+ * Effective tenant keys for this repository: {@link scopeMode} → CLS → {@link getScope} →
41
+ * strip keys absent on the Sequelize model → {@link assertRowLevelCompanyScope}.
42
+ *
43
+ * Requires `_cachedModel` to be set (call `getModel()` first). If the model is not loaded yet,
44
+ * returns the context-derived scope without model intersection (conservative).
45
+ */
46
+ protected resolveScopedTenantFields(): Partial<ITenantScope>;
47
+ /**
48
+ * Rows partitioned by `company_id` must never run with an empty tenant scope (would match all
49
+ * companies like `SELECT count(*) FROM categories`). Junction / company-root models omit
50
+ * `companyId` in Sequelize attributes — they skip this check.
51
+ */
52
+ protected assertRowLevelCompanyScope(scope: Partial<ITenantScope>): void;
53
+ /**
54
+ * Sequelize rejects keys with `undefined` (e.g. account_id = undefined). Strip them.
55
+ * Also cleans plain-object branches inside Op.or / Op.and arrays.
56
+ */
57
+ protected stripUndefinedWhere(where: any): any;
58
+ /**
59
+ * Merge CLS tenant scope into a write payload (`create` / `defaults` / `bulkCreate`).
60
+ * `companyId` from scope still applies last (isolation). If the row sets explicit `accountId`
61
+ * (e.g. a channel row for a specific account), do not let CLS "current account" overwrite it.
62
+ */
63
+ protected mergeRowWithTenantScope(row: Record<string, unknown>, _scope: Partial<ITenantScope>): any;
64
+ /**
65
+ * Merge caller `where` with tenant scope. Policy: {@link scopeMode}; keys: CLS via
66
+ * {@link resolveScopedTenantFields} (never ad-hoc per method).
67
+ *
68
+ * TEMP: scope merge disabled — uncomment to restore CLS isolation on reads/writes.
69
+ */
70
+ protected applyScopeToWhere(where?: any): any;
71
+ protected get model(): ModelStatic<T>;
72
+ protected getModel(): Promise<ModelStatic<T>>;
73
+ checkModel(): Promise<ModelStatic<T>>;
74
+ protected clearModelCache(): void;
75
+ create(item: Partial<T>, options?: IOptions): Promise<T>;
76
+ update(id: string | number, item: Partial<T>, options?: IOptions): Promise<IUpdate<T>>;
77
+ /**
78
+ * Оновлений метод delete з автоматичним фільтруванням по tenantId
79
+ */
80
+ delete(id: string | number): Promise<boolean>;
81
+ hardDelete(id: string | number): Promise<boolean>;
82
+ deleteWithTransaction(id: number | string, transaction: Transaction): Promise<boolean>;
83
+ /**
84
+ * Оновлений метод findById з автоматичним фільтруванням по tenantId
85
+ */
86
+ findById(id: string | number, companyId?: number, options?: IOptions): Promise<T | null>;
87
+ findByIdWithTransaction(id: string, transaction: Transaction): Promise<T | null>;
88
+ findAllWithTransaction(transaction: Transaction): Promise<T[]>;
89
+ findOne(where: any, options?: IOptions): Promise<T | null>;
90
+ findOneWithTransaction(where: any, transaction: Transaction): Promise<T | null>;
91
+ /**
92
+ * @deprecated Use findAll instead
93
+ */
94
+ findMany(where?: any, include?: any[], order?: any[]): Promise<T[]>;
95
+ /**
96
+ * Find all items with automatic isolation by companyId and accountId
97
+ */
98
+ findAll(where?: any, options?: IFindAllOptions): Promise<any[]>;
99
+ /**
100
+ * Find all items with pagination and automatic isolation
101
+ */
102
+ findAllWithPagination(where: any | undefined, pagination: IPagination | ISearch, options?: IFindAllOptions): Promise<IPaginationResponse<T[]>>;
103
+ findManyWithTransaction(where: any, transaction: Transaction, include?: any[], order?: any[]): Promise<T[]>;
104
+ /**
105
+ * Count with automatic isolation by companyId and accountId
106
+ */
107
+ count(where?: any, tenantId?: string): Promise<number>;
108
+ countWithTransaction(where: any, transaction: Transaction): Promise<number>;
109
+ /**
110
+ * Оновлений метод exists з автоматичним фільтруванням по tenantId
111
+ */
112
+ exists(where: any): Promise<boolean>;
113
+ existsWithTransaction(where: any, transaction: Transaction): Promise<boolean>;
114
+ bulkCreate(items: Partial<T>[]): Promise<T[]>;
115
+ bulkCreateWithTransaction(items: Partial<T>[], transaction: Transaction): Promise<T[]>;
116
+ bulkUpdate(where: any, updates: Partial<T>): Promise<number>;
117
+ bulkUpdateWithTransaction(where: any, updates: Partial<T>, transaction: Transaction): Promise<number>;
118
+ bulkDelete(where: any): Promise<number>;
119
+ bulkDeleteWithTransaction(where: any, transaction: Transaction): Promise<number>;
120
+ findAndCountAll(options: any): Promise<{
121
+ rows: T[];
122
+ count: number;
123
+ }>;
124
+ findAndCountAllWithTransaction(options: any, transaction: Transaction): Promise<{
125
+ rows: T[];
126
+ count: number;
127
+ }>;
128
+ findOrCreate(where: any, defaults: Partial<T>): Promise<[T, boolean]>;
129
+ findOrCreateWithTransaction(where: any, defaults: Partial<T>, transaction: Transaction): Promise<[T, boolean]>;
130
+ upsert(values: Partial<T>, where: any): Promise<T | null>;
131
+ upsertWithTransaction(values: Partial<T>, where: any, transaction: Transaction): Promise<T | null>;
132
+ increment(where: any, fields: string[], by?: number): Promise<number>;
133
+ incrementWithTransaction(where: any, fields: string[], by: number, transaction: Transaction): Promise<number>;
134
+ decrement(where: any, fields: string[], by?: number): Promise<number>;
135
+ decrementWithTransaction(where: any, fields: string[], by: number, transaction: Transaction): Promise<number>;
136
+ max(field: string, where?: any): Promise<number>;
137
+ min(field: string, where?: any): Promise<number>;
138
+ sum(field: string, where?: any): Promise<number>;
139
+ average(field: string, where?: any): Promise<number>;
140
+ rawQuery(sql: string, replacements?: any): Promise<any[]>;
141
+ rawQueryWithTransaction(sql: string, transaction: Transaction, replacements?: any): Promise<any[]>;
142
+ findFirst(where?: any, options?: IOptions): Promise<any | null>;
143
+ findAndCount(where?: any, include?: any[], order?: any[]): Promise<{
144
+ count: number;
145
+ rows: T[];
146
+ }>;
147
+ updateMany(where: any, data: any, options?: IOptions): Promise<T[] | number>;
148
+ updateManyWithTransaction(where: any, data: any, transaction: any): Promise<number>;
149
+ softDelete(id: number | string, companyId?: number): Promise<boolean>;
150
+ deleteMany(where: any): Promise<number>;
151
+ deleteManyWithTransaction(where: any, transaction: any): Promise<number>;
152
+ /**
153
+ * 🔍 Debug: Log query info before each operation
154
+ */
155
+ logQueryInfo(method: string, params?: any): void;
156
+ /**
157
+ * Створити новий запис з транзакцією
158
+ */
159
+ createWithTransaction(item: Partial<T>, transaction: any): Promise<T>;
160
+ updateWithTransaction(id: string | number, item: Partial<T> | any, transaction: Transaction): Promise<boolean>;
161
+ checkModelInfo(model: ModelStatic<T>): void;
162
+ }
163
+ //# sourceMappingURL=main.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.repository.d.ts","sourceRoot":"","sources":["../../repositories/main.repository.ts"],"names":[],"mappings":"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"}