@heavybit/shared-lib 2.1.0 → 2.7.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 (296) hide show
  1. package/README.md +163 -2
  2. package/dist/cjs/access/index.js +9 -1
  3. package/dist/cjs/access/index.js.map +1 -1
  4. package/dist/cjs/approvals/index.js +137 -0
  5. package/dist/cjs/approvals/index.js.map +1 -0
  6. package/dist/cjs/audit/index.js +74 -0
  7. package/dist/cjs/audit/index.js.map +1 -0
  8. package/dist/cjs/cache/index.js +90 -16
  9. package/dist/cjs/cache/index.js.map +1 -1
  10. package/dist/cjs/cache/keyspace.js +101 -0
  11. package/dist/cjs/cache/keyspace.js.map +1 -0
  12. package/dist/cjs/common/circuit-breaker.js +74 -0
  13. package/dist/cjs/common/circuit-breaker.js.map +1 -0
  14. package/dist/cjs/common/index.js +4 -0
  15. package/dist/cjs/common/index.js.map +1 -1
  16. package/dist/cjs/common/internal-client.js +177 -0
  17. package/dist/cjs/common/internal-client.js.map +1 -0
  18. package/dist/cjs/common/internal-constants.js +12 -0
  19. package/dist/cjs/common/internal-constants.js.map +1 -0
  20. package/dist/cjs/common/internal-service-auth.js +160 -0
  21. package/dist/cjs/common/internal-service-auth.js.map +1 -0
  22. package/dist/cjs/common/money.js +215 -0
  23. package/dist/cjs/common/money.js.map +1 -0
  24. package/dist/cjs/common/phone.js +41 -22
  25. package/dist/cjs/common/phone.js.map +1 -1
  26. package/dist/cjs/common/time.js +28 -2
  27. package/dist/cjs/common/time.js.map +1 -1
  28. package/dist/cjs/config/index.js +139 -19
  29. package/dist/cjs/config/index.js.map +1 -1
  30. package/dist/cjs/contracts/notification-dispatch.js +1 -1
  31. package/dist/cjs/database/db.js +37 -0
  32. package/dist/cjs/database/db.js.map +1 -0
  33. package/dist/cjs/database/index.js +22 -51
  34. package/dist/cjs/database/index.js.map +1 -1
  35. package/dist/cjs/database/pagination.js +88 -0
  36. package/dist/cjs/database/pagination.js.map +1 -0
  37. package/dist/cjs/database/pool.js +60 -0
  38. package/dist/cjs/database/pool.js.map +1 -0
  39. package/dist/cjs/database/scoped-repository.js +132 -0
  40. package/dist/cjs/database/scoped-repository.js.map +1 -0
  41. package/dist/cjs/database/scopes.js +166 -0
  42. package/dist/cjs/database/scopes.js.map +1 -0
  43. package/dist/cjs/database/table-names.js +14 -0
  44. package/dist/cjs/database/table-names.js.map +1 -0
  45. package/dist/cjs/database/tables.js +71 -0
  46. package/dist/cjs/database/tables.js.map +1 -0
  47. package/dist/cjs/express/auth.js +64 -50
  48. package/dist/cjs/express/auth.js.map +1 -1
  49. package/dist/cjs/express/index.js +2 -0
  50. package/dist/cjs/express/index.js.map +1 -1
  51. package/dist/cjs/express/internal-caller.js +52 -0
  52. package/dist/cjs/express/internal-caller.js.map +1 -0
  53. package/dist/cjs/express/step-up.js +41 -0
  54. package/dist/cjs/express/step-up.js.map +1 -0
  55. package/dist/cjs/http/index.js +3 -71
  56. package/dist/cjs/http/index.js.map +1 -1
  57. package/dist/cjs/identity/index.js +269 -67
  58. package/dist/cjs/identity/index.js.map +1 -1
  59. package/dist/cjs/identity/step-up.js +52 -0
  60. package/dist/cjs/identity/step-up.js.map +1 -0
  61. package/dist/cjs/index.js +6 -0
  62. package/dist/cjs/index.js.map +1 -1
  63. package/dist/cjs/knex/columns.js +36 -0
  64. package/dist/cjs/knex/columns.js.map +1 -0
  65. package/dist/cjs/knex/index.js +26 -43
  66. package/dist/cjs/knex/index.js.map +1 -1
  67. package/dist/cjs/knex/migration-helpers.js +57 -0
  68. package/dist/cjs/knex/migration-helpers.js.map +1 -0
  69. package/dist/cjs/logging/redact.js +6 -11
  70. package/dist/cjs/logging/redact.js.map +1 -1
  71. package/dist/cjs/messaging/base-consumer.js +36 -0
  72. package/dist/cjs/messaging/base-consumer.js.map +1 -0
  73. package/dist/cjs/messaging/consumer.js +142 -73
  74. package/dist/cjs/messaging/consumer.js.map +1 -1
  75. package/dist/cjs/messaging/envelope.js +53 -10
  76. package/dist/cjs/messaging/envelope.js.map +1 -1
  77. package/dist/cjs/messaging/idempotency.js +95 -8
  78. package/dist/cjs/messaging/idempotency.js.map +1 -1
  79. package/dist/cjs/messaging/index.js +2 -1
  80. package/dist/cjs/messaging/index.js.map +1 -1
  81. package/dist/cjs/messaging/outbox.js +97 -55
  82. package/dist/cjs/messaging/outbox.js.map +1 -1
  83. package/dist/cjs/messaging/publisher.js +86 -38
  84. package/dist/cjs/messaging/publisher.js.map +1 -1
  85. package/dist/cjs/messaging/staff-notifier.js +4 -4
  86. package/dist/cjs/messaging/staff-notifier.js.map +1 -1
  87. package/dist/cjs/messaging/topology.js +41 -5
  88. package/dist/cjs/messaging/topology.js.map +1 -1
  89. package/dist/cjs/rate-limit/index.js +57 -6
  90. package/dist/cjs/rate-limit/index.js.map +1 -1
  91. package/dist/cjs/rate-limit/keys.js +47 -0
  92. package/dist/cjs/rate-limit/keys.js.map +1 -0
  93. package/dist/cjs/socket/index.js +127 -16
  94. package/dist/cjs/socket/index.js.map +1 -1
  95. package/dist/cjs/socket/ticket.js +124 -0
  96. package/dist/cjs/socket/ticket.js.map +1 -0
  97. package/dist/cjs/testing/index.js +23 -14
  98. package/dist/cjs/testing/index.js.map +1 -1
  99. package/dist/esm/access/index.js +9 -1
  100. package/dist/esm/access/index.js.map +1 -1
  101. package/dist/esm/approvals/index.js +127 -0
  102. package/dist/esm/approvals/index.js.map +1 -0
  103. package/dist/esm/audit/index.js +70 -0
  104. package/dist/esm/audit/index.js.map +1 -0
  105. package/dist/esm/cache/index.js +70 -13
  106. package/dist/esm/cache/index.js.map +1 -1
  107. package/dist/esm/cache/keyspace.js +95 -0
  108. package/dist/esm/cache/keyspace.js.map +1 -0
  109. package/dist/esm/common/circuit-breaker.js +70 -0
  110. package/dist/esm/common/circuit-breaker.js.map +1 -0
  111. package/dist/esm/common/index.js +4 -0
  112. package/dist/esm/common/index.js.map +1 -1
  113. package/dist/esm/common/internal-client.js +173 -0
  114. package/dist/esm/common/internal-client.js.map +1 -0
  115. package/dist/esm/common/internal-constants.js +9 -0
  116. package/dist/esm/common/internal-constants.js.map +1 -0
  117. package/dist/esm/common/internal-service-auth.js +150 -0
  118. package/dist/esm/common/internal-service-auth.js.map +1 -0
  119. package/dist/esm/common/money.js +207 -0
  120. package/dist/esm/common/money.js.map +1 -0
  121. package/dist/esm/common/phone.js +41 -22
  122. package/dist/esm/common/phone.js.map +1 -1
  123. package/dist/esm/common/time.js +27 -2
  124. package/dist/esm/common/time.js.map +1 -1
  125. package/dist/esm/config/index.js +135 -18
  126. package/dist/esm/config/index.js.map +1 -1
  127. package/dist/esm/contracts/notification-dispatch.js +1 -1
  128. package/dist/esm/database/db.js +32 -0
  129. package/dist/esm/database/db.js.map +1 -0
  130. package/dist/esm/database/index.js +9 -45
  131. package/dist/esm/database/index.js.map +1 -1
  132. package/dist/esm/database/pagination.js +81 -0
  133. package/dist/esm/database/pagination.js.map +1 -0
  134. package/dist/esm/database/pool.js +51 -0
  135. package/dist/esm/database/pool.js.map +1 -0
  136. package/dist/esm/database/scoped-repository.js +128 -0
  137. package/dist/esm/database/scoped-repository.js.map +1 -0
  138. package/dist/esm/database/scopes.js +157 -0
  139. package/dist/esm/database/scopes.js.map +1 -0
  140. package/dist/esm/database/table-names.js +11 -0
  141. package/dist/esm/database/table-names.js.map +1 -0
  142. package/dist/esm/database/tables.js +61 -0
  143. package/dist/esm/database/tables.js.map +1 -0
  144. package/dist/esm/express/auth.js +62 -48
  145. package/dist/esm/express/auth.js.map +1 -1
  146. package/dist/esm/express/index.js +2 -0
  147. package/dist/esm/express/index.js.map +1 -1
  148. package/dist/esm/express/internal-caller.js +49 -0
  149. package/dist/esm/express/internal-caller.js.map +1 -0
  150. package/dist/esm/express/step-up.js +38 -0
  151. package/dist/esm/express/step-up.js.map +1 -0
  152. package/dist/esm/http/index.js +3 -70
  153. package/dist/esm/http/index.js.map +1 -1
  154. package/dist/esm/identity/index.js +246 -64
  155. package/dist/esm/identity/index.js.map +1 -1
  156. package/dist/esm/identity/step-up.js +47 -0
  157. package/dist/esm/identity/step-up.js.map +1 -0
  158. package/dist/esm/index.js +6 -0
  159. package/dist/esm/index.js.map +1 -1
  160. package/dist/esm/knex/columns.js +28 -0
  161. package/dist/esm/knex/columns.js.map +1 -0
  162. package/dist/esm/knex/index.js +8 -34
  163. package/dist/esm/knex/index.js.map +1 -1
  164. package/dist/esm/knex/migration-helpers.js +51 -0
  165. package/dist/esm/knex/migration-helpers.js.map +1 -0
  166. package/dist/esm/logging/redact.js +3 -7
  167. package/dist/esm/logging/redact.js.map +1 -1
  168. package/dist/esm/messaging/base-consumer.js +32 -0
  169. package/dist/esm/messaging/base-consumer.js.map +1 -0
  170. package/dist/esm/messaging/consumer.js +139 -71
  171. package/dist/esm/messaging/consumer.js.map +1 -1
  172. package/dist/esm/messaging/envelope.js +50 -10
  173. package/dist/esm/messaging/envelope.js.map +1 -1
  174. package/dist/esm/messaging/idempotency.js +91 -7
  175. package/dist/esm/messaging/idempotency.js.map +1 -1
  176. package/dist/esm/messaging/index.js +2 -1
  177. package/dist/esm/messaging/index.js.map +1 -1
  178. package/dist/esm/messaging/outbox.js +97 -54
  179. package/dist/esm/messaging/outbox.js.map +1 -1
  180. package/dist/esm/messaging/publisher.js +86 -38
  181. package/dist/esm/messaging/publisher.js.map +1 -1
  182. package/dist/esm/messaging/staff-notifier.js +4 -4
  183. package/dist/esm/messaging/staff-notifier.js.map +1 -1
  184. package/dist/esm/messaging/topology.js +39 -4
  185. package/dist/esm/messaging/topology.js.map +1 -1
  186. package/dist/esm/rate-limit/index.js +41 -6
  187. package/dist/esm/rate-limit/index.js.map +1 -1
  188. package/dist/esm/rate-limit/keys.js +43 -0
  189. package/dist/esm/rate-limit/keys.js.map +1 -0
  190. package/dist/esm/socket/index.js +112 -17
  191. package/dist/esm/socket/index.js.map +1 -1
  192. package/dist/esm/socket/ticket.js +117 -0
  193. package/dist/esm/socket/ticket.js.map +1 -0
  194. package/dist/esm/testing/index.js +24 -15
  195. package/dist/esm/testing/index.js.map +1 -1
  196. package/dist/types/access/index.d.ts +9 -3
  197. package/dist/types/access/index.d.ts.map +1 -1
  198. package/dist/types/approvals/index.d.ts +99 -0
  199. package/dist/types/approvals/index.d.ts.map +1 -0
  200. package/dist/types/audit/index.d.ts +82 -0
  201. package/dist/types/audit/index.d.ts.map +1 -0
  202. package/dist/types/cache/index.d.ts +64 -14
  203. package/dist/types/cache/index.d.ts.map +1 -1
  204. package/dist/types/cache/keyspace.d.ts +84 -0
  205. package/dist/types/cache/keyspace.d.ts.map +1 -0
  206. package/dist/types/common/circuit-breaker.d.ts +51 -0
  207. package/dist/types/common/circuit-breaker.d.ts.map +1 -0
  208. package/dist/types/common/index.d.ts +4 -0
  209. package/dist/types/common/index.d.ts.map +1 -1
  210. package/dist/types/common/internal-client.d.ts +116 -0
  211. package/dist/types/common/internal-client.d.ts.map +1 -0
  212. package/dist/types/common/internal-constants.d.ts +9 -0
  213. package/dist/types/common/internal-constants.d.ts.map +1 -0
  214. package/dist/types/common/internal-service-auth.d.ts +102 -0
  215. package/dist/types/common/internal-service-auth.d.ts.map +1 -0
  216. package/dist/types/common/money.d.ts +104 -0
  217. package/dist/types/common/money.d.ts.map +1 -0
  218. package/dist/types/common/phone.d.ts +25 -15
  219. package/dist/types/common/phone.d.ts.map +1 -1
  220. package/dist/types/common/time.d.ts +20 -2
  221. package/dist/types/common/time.d.ts.map +1 -1
  222. package/dist/types/config/index.d.ts +251 -27
  223. package/dist/types/config/index.d.ts.map +1 -1
  224. package/dist/types/contracts/notification-dispatch.d.ts +13 -13
  225. package/dist/types/database/db.d.ts +46 -0
  226. package/dist/types/database/db.d.ts.map +1 -0
  227. package/dist/types/database/index.d.ts +9 -22
  228. package/dist/types/database/index.d.ts.map +1 -1
  229. package/dist/types/database/pagination.d.ts +68 -0
  230. package/dist/types/database/pagination.d.ts.map +1 -0
  231. package/dist/types/database/pool.d.ts +39 -0
  232. package/dist/types/database/pool.d.ts.map +1 -0
  233. package/dist/types/database/scoped-repository.d.ts +92 -0
  234. package/dist/types/database/scoped-repository.d.ts.map +1 -0
  235. package/dist/types/database/scopes.d.ts +159 -0
  236. package/dist/types/database/scopes.d.ts.map +1 -0
  237. package/dist/types/database/table-names.d.ts +13 -0
  238. package/dist/types/database/table-names.d.ts.map +1 -0
  239. package/dist/types/database/tables.d.ts +748 -0
  240. package/dist/types/database/tables.d.ts.map +1 -0
  241. package/dist/types/express/auth.d.ts +40 -24
  242. package/dist/types/express/auth.d.ts.map +1 -1
  243. package/dist/types/express/index.d.ts +2 -0
  244. package/dist/types/express/index.d.ts.map +1 -1
  245. package/dist/types/express/internal-caller.d.ts +53 -0
  246. package/dist/types/express/internal-caller.d.ts.map +1 -0
  247. package/dist/types/express/step-up.d.ts +38 -0
  248. package/dist/types/express/step-up.d.ts.map +1 -0
  249. package/dist/types/http/index.d.ts +3 -31
  250. package/dist/types/http/index.d.ts.map +1 -1
  251. package/dist/types/identity/index.d.ts +159 -21
  252. package/dist/types/identity/index.d.ts.map +1 -1
  253. package/dist/types/identity/step-up.d.ts +41 -0
  254. package/dist/types/identity/step-up.d.ts.map +1 -0
  255. package/dist/types/index.d.ts +6 -0
  256. package/dist/types/index.d.ts.map +1 -1
  257. package/dist/types/knex/columns.d.ts +15 -0
  258. package/dist/types/knex/columns.d.ts.map +1 -0
  259. package/dist/types/knex/index.d.ts +3 -11
  260. package/dist/types/knex/index.d.ts.map +1 -1
  261. package/dist/types/knex/migration-helpers.d.ts +28 -0
  262. package/dist/types/knex/migration-helpers.d.ts.map +1 -0
  263. package/dist/types/logging/redact.d.ts +2 -2
  264. package/dist/types/logging/redact.d.ts.map +1 -1
  265. package/dist/types/messaging/base-consumer.d.ts +33 -0
  266. package/dist/types/messaging/base-consumer.d.ts.map +1 -0
  267. package/dist/types/messaging/consumer.d.ts +59 -21
  268. package/dist/types/messaging/consumer.d.ts.map +1 -1
  269. package/dist/types/messaging/envelope.d.ts +50 -11
  270. package/dist/types/messaging/envelope.d.ts.map +1 -1
  271. package/dist/types/messaging/idempotency.d.ts +60 -3
  272. package/dist/types/messaging/idempotency.d.ts.map +1 -1
  273. package/dist/types/messaging/index.d.ts +7 -0
  274. package/dist/types/messaging/index.d.ts.map +1 -1
  275. package/dist/types/messaging/outbox.d.ts +62 -22
  276. package/dist/types/messaging/outbox.d.ts.map +1 -1
  277. package/dist/types/messaging/publisher.d.ts +54 -21
  278. package/dist/types/messaging/publisher.d.ts.map +1 -1
  279. package/dist/types/messaging/staff-notifier.d.ts +9 -9
  280. package/dist/types/messaging/staff-notifier.d.ts.map +1 -1
  281. package/dist/types/messaging/staff-recipients.d.ts +1 -1
  282. package/dist/types/messaging/topology.d.ts +40 -8
  283. package/dist/types/messaging/topology.d.ts.map +1 -1
  284. package/dist/types/rate-limit/index.d.ts +40 -4
  285. package/dist/types/rate-limit/index.d.ts.map +1 -1
  286. package/dist/types/rate-limit/keys.d.ts +52 -0
  287. package/dist/types/rate-limit/keys.d.ts.map +1 -0
  288. package/dist/types/socket/index.d.ts +86 -2
  289. package/dist/types/socket/index.d.ts.map +1 -1
  290. package/dist/types/socket/ticket.d.ts +90 -0
  291. package/dist/types/socket/ticket.d.ts.map +1 -0
  292. package/dist/types/testing/index.d.ts +31 -10
  293. package/dist/types/testing/index.d.ts.map +1 -1
  294. package/dist/types/types/index.d.ts +26 -14
  295. package/dist/types/types/index.d.ts.map +1 -1
  296. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/knex/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/knex/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAiBA,4CAYC;AAGD,8CAGC;AAGD,0BAIC;AAzCD,+DAAkE;AAClE,6CAA2F;AAC3F,iEAAuD;AAEvD,+CAA6B;AAC7B,yDAAuC;AAEvC;;;GAGG;AAEH;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,WAAmB,EAAE,OAAiD;IACvH,MAAM,IAAI,GAAG,GAAG,WAAW,SAAS,CAAC;IACrC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5C,IAAA,wBAAW,EAAC,KAAK,CAAC,CAAC;QACnB,IAAA,uBAAU,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;QACrD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,IAAA,yBAAY,EAAC,KAAK,CAAC,CAAC;QACpB,IAAA,uBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6FAA6F;AACtF,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,IAAI,GAAG,qCAAoB;IAC7E,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,oCAAa,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,0EAA0E;AAC1E,SAAgB,OAAO,CAAC,KAA8B;IACpD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.outboxColumns = outboxColumns;
4
+ exports.processedEventsColumns = processedEventsColumns;
5
+ exports.schedulerRunsColumns = schedulerRunsColumns;
6
+ exports.scopedIndex = scopedIndex;
7
+ const table_names_js_1 = require("../database/table-names.js");
8
+ const columns_js_1 = require("./columns.js");
9
+ /**
10
+ * Outbox columns: id, routing_key, exchange, payload, correlation_id, attempts, last_error, created_at,
11
+ * published_at (+ relay index).
12
+ */
13
+ function outboxColumns(t, knex) {
14
+ (0, columns_js_1.ulidPrimary)(t);
15
+ t.string('routing_key', 191).notNullable();
16
+ t.enu('exchange', [...table_names_js_1.OUTBOX_EXCHANGES]).notNullable().defaultTo('events');
17
+ t.json('payload').notNullable();
18
+ t.string('correlation_id', 64).nullable();
19
+ t.integer('attempts').unsigned().notNullable().defaultTo(0);
20
+ t.string('last_error', 500).nullable();
21
+ (0, columns_js_1.createdAtColumn)(t, knex, 'created_at');
22
+ (0, columns_js_1.datetime)(t, 'published_at').nullable();
23
+ t.index(['published_at', 'id']);
24
+ }
25
+ /** Consumer idempotency columns: id, consumer, event_id (unique together), processed_at. */
26
+ function processedEventsColumns(t, knex) {
27
+ (0, columns_js_1.ulidPrimary)(t);
28
+ t.string('consumer', 191).notNullable();
29
+ t.string('event_id', 64).notNullable();
30
+ (0, columns_js_1.createdAtColumn)(t, knex, 'processed_at');
31
+ t.unique(['consumer', 'event_id']);
32
+ t.index(['processed_at']);
33
+ }
34
+ /** Scheduler run columns: id, job, run_key (unique together), status, error, started_at, finished_at. */
35
+ function schedulerRunsColumns(t, knex) {
36
+ (0, columns_js_1.ulidPrimary)(t);
37
+ t.string('job', 191).notNullable();
38
+ t.string('run_key', 191).notNullable();
39
+ t.enu('status', [...table_names_js_1.SCHEDULER_RUN_STATUSES]).notNullable().defaultTo('running');
40
+ t.string('error', 500).nullable();
41
+ (0, columns_js_1.createdAtColumn)(t, knex, 'started_at');
42
+ (0, columns_js_1.datetime)(t, 'finished_at').nullable();
43
+ t.unique(['job', 'run_key']);
44
+ t.index(['job', 'started_at']);
45
+ }
46
+ /**
47
+ * Index that always leads with the scope column (TEN-4); `columns` follow in order, duplicates of
48
+ * the scope column are dropped.
49
+ *
50
+ * @example scopedIndex(t, 'workspace_id', ['status', 'created_at'])
51
+ */
52
+ function scopedIndex(t, scopeColumn, columns = [], indexName) {
53
+ if (!scopeColumn)
54
+ throw new Error('scopedIndex needs a scope column');
55
+ t.index([scopeColumn, ...columns.filter((c) => c !== scopeColumn)], indexName);
56
+ }
57
+ //# sourceMappingURL=migration-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-helpers.js","sourceRoot":"","sources":["../../../src/knex/migration-helpers.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,11 @@
6
6
  * or its plural. So `accessToken` and `Set-Cookie` are redacted while `pinned` or `spinner` are not.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.REDACTED = exports.DEFAULT_ALLOW_KEYS = exports.DEFAULT_REDACT_KEYS = void 0;
10
- exports.maskPhoneForLog = maskPhoneForLog;
9
+ exports.maskPhoneForLog = exports.REDACTED = exports.DEFAULT_ALLOW_KEYS = exports.DEFAULT_REDACT_KEYS = void 0;
11
10
  exports.maskPhonesInText = maskPhonesInText;
12
11
  exports.createKeyClassifier = createKeyClassifier;
13
12
  exports.redactValue = redactValue;
13
+ const phone_js_1 = require("../common/phone.js");
14
14
  /** Words whose values are always replaced with `[REDACTED]`. Apps add their own via `redactKeys`. */
15
15
  exports.DEFAULT_REDACT_KEYS = [
16
16
  'password', 'pass', 'passphrase', 'token', 'secret', 'code', 'otp', 'authorization', 'cookie', 'credential',
@@ -26,18 +26,13 @@ const PHONE_IN_TEXT = /(?<![\w+]|\d\.)\+?\d{9,15}(?!\w|\.\d)/g;
26
26
  exports.REDACTED = '[REDACTED]';
27
27
  const MAX_DEPTH = 8;
28
28
  /**
29
- * Masks every digit except the last four (log rule; the UI uses `maskPhone` from common).
29
+ * Masks every digit except the last four; the same rule as `maskPhone` in common (one rule for logs and UI).
30
30
  *
31
31
  * @param value A phone number in any format.
32
32
  * @returns e.g. `********5678`; values with fewer than 5 digits are fully masked.
33
33
  * @example maskPhoneForLog('15551234567') // '*******4567'
34
34
  */
35
- function maskPhoneForLog(value) {
36
- const digits = value.replace(/\D/g, '');
37
- if (digits.length < 5)
38
- return '*'.repeat(digits.length || 4);
39
- return `${'*'.repeat(digits.length - 4)}${digits.slice(-4)}`;
40
- }
35
+ exports.maskPhoneForLog = phone_js_1.maskPhone;
41
36
  /**
42
37
  * Masks phone-number-looking runs inside free text.
43
38
  *
@@ -46,7 +41,7 @@ function maskPhoneForLog(value) {
46
41
  * @example maskPhonesInText('OTP sent to 15551234567') // 'OTP sent to *******4567'
47
42
  */
48
43
  function maskPhonesInText(text) {
49
- return text.replace(PHONE_IN_TEXT, maskPhoneForLog);
44
+ return text.replace(PHONE_IN_TEXT, exports.maskPhoneForLog);
50
45
  }
51
46
  function keyWords(key) {
52
47
  return key
@@ -108,7 +103,7 @@ function redactValue(value, classifier, depth = 0) {
108
103
  if (classifier.isSecret(key))
109
104
  out[key] = exports.REDACTED;
110
105
  else if (classifier.isPhone(key) && (typeof v === 'string' || typeof v === 'number'))
111
- out[key] = maskPhoneForLog(String(v));
106
+ out[key] = (0, exports.maskPhoneForLog)(String(v));
112
107
  else
113
108
  out[key] = redactValue(v, classifier, depth + 1);
114
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/logging/redact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/logging/redact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseConsumer = void 0;
4
+ /**
5
+ * Base for a service's queue consumers (one class per queue in `src/consumers/`). The subclass declares
6
+ * its queue, bindings, payload schema, retry policy, dedupe and scope in the constructor and implements
7
+ * {@link BaseConsumer.handle}; `worker.ts` registers it. Validation, dedupe, retries, dead-lettering and
8
+ * context restore are done by {@link MessageConsumer}.
9
+ *
10
+ * @typeParam T Validated payload type.
11
+ * @typeParam TTx Dedupe transaction type (`DbExecutor` with `ProcessedEventsDeduper`).
12
+ * @example
13
+ * class ThingCreatedConsumer extends BaseConsumer<ThingCreated, DbExecutor> {
14
+ * constructor(private readonly things: ThingService, dedupe: ProcessedEventsDeduper) {
15
+ * super({ queue: 'thing-created', bindings: [{ exchange: 'events', routingKey: 'thing.created' }],
16
+ * schema: thingCreatedSchema, dedupe, scopeFrom: (d) => ({ tenantId: d.tenantId }) });
17
+ * }
18
+ * protected handle({ data, tx, scope }: InboundMessage<ThingCreated, DbExecutor>) { return this.things.onCreated(scope!, data, tx!); }
19
+ * }
20
+ */
21
+ class BaseConsumer {
22
+ definition;
23
+ constructor(definition) {
24
+ this.definition = definition;
25
+ }
26
+ /**
27
+ * Subscribes this consumer.
28
+ *
29
+ * @param consumer The service's {@link MessageConsumer}.
30
+ */
31
+ register(consumer) {
32
+ return consumer.subscribe({ ...this.definition, handler: (message) => this.handle(message) });
33
+ }
34
+ }
35
+ exports.BaseConsumer = BaseConsumer;
36
+ //# sourceMappingURL=base-consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-consumer.js","sourceRoot":"","sources":["../../../src/messaging/base-consumer.ts"],"names":[],"mappings":";;;AAKA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAsB,YAAY;IACS;IAAzC,YAAyC,UAAsC;QAAtC,eAAU,GAAV,UAAU,CAA4B;IAAG,CAAC;IAKnF;;;;OAIG;IACH,QAAQ,CAAC,QAAyB;QAChC,OAAO,QAAQ,CAAC,SAAS,CAAS,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;CACF;AAdD,oCAcC"}
@@ -1,128 +1,197 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageConsumer = void 0;
3
+ exports.MessageConsumer = exports.DEFAULT_RETRY_BASE_DELAY_MS = exports.DEFAULT_MAX_ATTEMPTS = void 0;
4
+ exports.retryDelays = retryDelays;
4
5
  const errors_js_1 = require("../common/errors.js");
5
- const index_js_1 = require("../logging/index.js");
6
+ const id_js_1 = require("../common/id.js");
7
+ const index_js_1 = require("../context/index.js");
8
+ const index_js_2 = require("../logging/index.js");
6
9
  const envelope_js_1 = require("./envelope.js");
7
10
  const topology_js_1 = require("./topology.js");
8
11
  const RETRY_HEADER = 'x-retry-count';
9
- const DEFAULT_RETRY_DELAYS = [1000, 5000, 25_000];
12
+ /** Total deliveries before a failing message is dead-lettered. */
13
+ exports.DEFAULT_MAX_ATTEMPTS = 5;
14
+ /** Base of the exponential retry delay (retry n waits base × 2^n). */
15
+ exports.DEFAULT_RETRY_BASE_DELAY_MS = 1000;
10
16
  /**
11
- * Durable subscriptions with bounded retries and dead-lettering:
17
+ * Retry delays for `maxAttempts` deliveries: `base × 2^n` for n = 1 … maxAttempts − 1.
18
+ *
19
+ * @example retryDelays(5, 1000) // [2000, 4000, 8000, 16000]
20
+ */
21
+ function retryDelays(maxAttempts = exports.DEFAULT_MAX_ATTEMPTS, baseMs = exports.DEFAULT_RETRY_BASE_DELAY_MS) {
22
+ if (!Number.isInteger(maxAttempts) || maxAttempts < 1)
23
+ throw new RangeError('maxAttempts must be a positive integer');
24
+ return Array.from({ length: maxAttempts - 1 }, (_, i) => baseMs * 2 ** (i + 1));
25
+ }
26
+ class Rejected extends Error {
27
+ }
28
+ /**
29
+ * Durable subscriptions with manual ack, bounded exponential retries and dead-lettering:
12
30
  *
13
31
  * <queue> ──fail──▶ <queue>.retry.<delay> (TTL, dead-letters back into <queue>)
14
- * ──fail after last retry / non-retryable──▶ <queue>.dlq
32
+ * ──last attempt / non-retryable / invalid──▶ service DLX ──▶ <queue>.dlq
15
33
  *
16
- * One fixed TTL per retry queue avoids head-of-line blocking of per-message TTLs.
34
+ * One fixed TTL per retry queue avoids head-of-line blocking of per-message TTLs. The main queue also
35
+ * names the service DLX, so broker-side rejects land in the same DLQ. Each message runs inside a request
36
+ * context carrying its correlation id, actor and restored scope.
17
37
  */
18
38
  class MessageConsumer {
19
39
  connection;
20
40
  topology;
41
+ service;
21
42
  handles = [];
22
43
  logger;
23
- constructor(connection, topology, logger) {
44
+ /** Physical DLQ names for every subscription (for monitoring). */
45
+ deadLetterQueues = [];
46
+ constructor(connection, topology, service, logger) {
24
47
  this.connection = connection;
25
48
  this.topology = topology;
26
- this.logger = logger ?? index_js_1.silentLogger;
49
+ this.service = service;
50
+ this.logger = logger ?? index_js_2.silentLogger;
27
51
  }
28
- /** Physical DLQ names for every subscription (for monitoring). */
29
- deadLetterQueues = [];
30
52
  async subscribe(options) {
31
- const queue = this.topology.queue(options.queue);
32
- const delays = options.retryDelaysMs ?? DEFAULT_RETRY_DELAYS;
33
- const dlq = (0, topology_js_1.deadLetterQueueName)(queue);
34
- this.deadLetterQueues.push(dlq);
53
+ const queue = this.topology.queueName(this.service, options.queue);
54
+ const route = {
55
+ queue,
56
+ consumerName: `${this.service}.${options.queue}`,
57
+ dlx: this.topology.deadLetterExchange(this.service),
58
+ dlq: (0, topology_js_1.deadLetterQueueName)(queue),
59
+ delays: retryDelays(options.maxAttempts, options.retryBaseDelayMs),
60
+ };
61
+ this.deadLetterQueues.push(route.dlq);
35
62
  const handle = await this.connection.registerChannel(`consumer:${queue}`, async (channel) => {
36
- await channel.assertExchange(this.topology.eventsExchange, 'topic', { durable: true });
37
- await channel.assertExchange(this.topology.commandsExchange, 'direct', { durable: true });
38
- await channel.assertQueue(queue, { durable: true });
39
- await channel.assertQueue(dlq, { durable: true });
40
- for (const delay of delays) {
41
- await channel.assertQueue((0, topology_js_1.retryQueueName)(queue, delay), {
42
- durable: true,
43
- arguments: { 'x-message-ttl': delay, 'x-dead-letter-exchange': '', 'x-dead-letter-routing-key': queue },
44
- });
45
- }
46
- for (const binding of options.bindings) {
47
- if (binding.exchange === 'events') {
48
- await channel.bindQueue(queue, this.topology.eventsExchange, binding.routingKey);
49
- }
50
- else {
51
- await channel.bindQueue(queue, this.topology.commandsExchange, this.topology.queue(binding.routingKey));
52
- }
53
- }
63
+ await this.declare(channel, route, options.bindings);
54
64
  await channel.prefetch(options.prefetch ?? 10);
55
65
  await channel.consume(queue, (msg) => {
56
66
  if (msg)
57
- void this.dispatch(channel, queue, delays, dlq, msg, options);
58
- });
67
+ void this.dispatch(channel, route, msg, options);
68
+ }, { noAck: false });
59
69
  });
60
70
  this.handles.push(handle);
61
71
  this.logger.info('Subscribed', { queue, bindings: options.bindings.map((b) => `${b.exchange}:${b.routingKey}`) });
62
72
  }
63
- async dispatch(channel, queue, delays, dlq, msg, options) {
64
- const attempt = Number(msg.properties.headers?.[RETRY_HEADER] ?? 0);
73
+ async declare(channel, route, bindings) {
74
+ const { topology } = this;
75
+ await channel.assertExchange(topology.eventsExchange, 'topic', { durable: true });
76
+ await channel.assertExchange(topology.commandsExchange, 'direct', { durable: true });
77
+ await channel.assertExchange(route.dlx, 'direct', { durable: true });
78
+ await channel.assertQueue(route.dlq, { durable: true });
79
+ await channel.bindQueue(route.dlq, route.dlx, route.dlq);
80
+ await channel.assertQueue(route.queue, { durable: true, arguments: { 'x-dead-letter-exchange': route.dlx, 'x-dead-letter-routing-key': route.dlq } });
81
+ for (const delay of route.delays) {
82
+ await channel.assertQueue((0, topology_js_1.retryQueueName)(route.queue, delay), {
83
+ durable: true,
84
+ arguments: { 'x-message-ttl': delay, 'x-dead-letter-exchange': '', 'x-dead-letter-routing-key': route.queue },
85
+ });
86
+ }
87
+ for (const binding of bindings) {
88
+ if (binding.exchange === 'events')
89
+ await channel.bindQueue(route.queue, topology.eventsExchange, binding.routingKey);
90
+ else
91
+ await channel.bindQueue(route.queue, topology.commandsExchange, topology.queue(binding.routingKey));
92
+ }
93
+ }
94
+ async dispatch(channel, route, msg, options) {
95
+ const attempt = Number(msg.properties.headers?.[RETRY_HEADER] ?? 0) + 1;
96
+ let prepared;
97
+ try {
98
+ prepared = this.prepare(msg, options);
99
+ }
100
+ catch (error) {
101
+ this.deadLetter(channel, route, msg, error.message);
102
+ return;
103
+ }
104
+ const correlationId = this.correlationIdOf(msg);
105
+ const context = { correlationId, service: this.service, userId: prepared.actorUserId, scopes: prepared.scope ? { ...prepared.scope } : undefined };
106
+ try {
107
+ const outcome = await (0, index_js_1.runWithContext)(context, () => this.handle(route, msg, prepared, attempt, options));
108
+ if (outcome === 'duplicate')
109
+ this.logger.debug('Duplicate message skipped', { queue: route.queue, eventId: prepared.eventId, correlationId });
110
+ channel.ack(msg);
111
+ }
112
+ catch (error) {
113
+ const retryable = !(0, errors_js_1.isAppError)(error) || error.retryable;
114
+ const reason = error?.message ?? String(error);
115
+ this.logger.warn('Message handler failed', { queue: route.queue, attempt, retryable, eventId: prepared.eventId, correlationId, error: reason });
116
+ this.retryOrDeadLetter(channel, route, msg, attempt, reason, retryable);
117
+ }
118
+ }
119
+ /** Parses, validates and extracts scope; throws `Rejected` for messages that can never succeed. */
120
+ prepare(msg, options) {
65
121
  let parsed;
66
122
  try {
67
123
  parsed = JSON.parse(msg.content.toString('utf8'));
68
124
  }
69
125
  catch {
70
- this.deadLetter(channel, dlq, msg, 'Malformed JSON');
71
- return;
126
+ throw new Rejected('Malformed JSON');
72
127
  }
73
128
  const envelope = (0, envelope_js_1.isEnvelope)(parsed) ? parsed : null;
74
- let data = envelope ? envelope.data : parsed;
129
+ const split = envelope ? (0, envelope_js_1.splitEnvelopeData)(envelope) : null;
130
+ let data = split ? split.payload : parsed;
75
131
  if (options.schema) {
76
132
  const result = options.schema.safeParse(data);
77
133
  if (!result.success) {
78
- this.deadLetter(channel, dlq, msg, `Schema validation failed: ${result.error.issues.map((i) => i.path.join('.') + ' ' + i.message).join('; ')}`);
79
- return;
134
+ throw new Rejected(`Schema validation failed: ${result.error.issues.map((i) => `${i.path.join('.')} ${i.message}`).join('; ')}`);
80
135
  }
81
136
  data = result.data;
82
137
  }
83
- const idemKey = options.idempotency && envelope ? `${queue}:${envelope.eventId}` : null;
84
- if (idemKey && options.idempotency) {
85
- const claim = await options.idempotency.begin(idemKey, 300).catch(() => 'claimed');
86
- if (claim === 'done') {
87
- this.logger.debug('Duplicate message skipped', { queue, eventId: envelope?.eventId });
88
- channel.ack(msg);
89
- return;
90
- }
91
- if (claim === 'in-flight') {
92
- this.retryOrDeadLetter(channel, queue, delays, dlq, msg, attempt, 'Duplicate in flight', true);
93
- return;
94
- }
95
- }
138
+ const messageId = typeof msg.properties.messageId === 'string' ? msg.properties.messageId : undefined;
139
+ const eventId = split?.meta.eventId ?? messageId;
140
+ if (options.dedupe && !eventId)
141
+ throw new Rejected('Missing event id');
142
+ const actor = split?.meta.actorUserId;
143
+ return { data: data, envelope, eventId, actorUserId: actor ?? undefined, scope: this.scopeOf(data, options.scopeFrom) };
144
+ }
145
+ scopeOf(data, scopeFrom) {
146
+ if (!scopeFrom)
147
+ return undefined;
148
+ let values;
96
149
  try {
97
- await options.handler({ data: data, envelope, routingKey: msg.fields.routingKey, attempt, raw: msg });
98
- if (idemKey)
99
- await options.idempotency.complete(idemKey, options.idempotencyTtlSec ?? 7 * 86_400).catch(() => undefined);
100
- channel.ack(msg);
150
+ values = scopeFrom(data);
101
151
  }
102
- catch (error) {
103
- if (idemKey)
104
- await options.idempotency.abandon(idemKey).catch(() => undefined);
105
- const retryable = !(0, errors_js_1.isAppError)(error) || error.retryable;
106
- const reason = error?.message ?? String(error);
107
- this.logger.warn('Message handler failed', { queue, attempt, retryable, eventId: envelope?.eventId, error: reason });
108
- this.retryOrDeadLetter(channel, queue, delays, dlq, msg, attempt, reason, retryable);
152
+ catch {
153
+ throw new Rejected('Scope could not be read from the message');
154
+ }
155
+ const entries = Object.entries(values);
156
+ const missing = entries.filter(([, v]) => typeof v !== 'string' || v.length === 0).map(([k]) => k);
157
+ if (entries.length === 0 || missing.length > 0)
158
+ throw new Rejected(`Missing scope: ${missing.join(', ') || '(none returned)'}`);
159
+ return Object.freeze(Object.fromEntries(entries));
160
+ }
161
+ correlationIdOf(msg) {
162
+ const header = msg.properties.headers?.[envelope_js_1.CORRELATION_HEADER];
163
+ if (typeof header === 'string' && header)
164
+ return header;
165
+ const prop = msg.properties.correlationId;
166
+ return typeof prop === 'string' && prop ? prop : (0, id_js_1.newId)();
167
+ }
168
+ async handle(route, msg, prepared, attempt, options) {
169
+ const call = (tx) => options.handler({
170
+ data: prepared.data, envelope: prepared.envelope, eventId: prepared.eventId, routingKey: msg.fields.routingKey,
171
+ attempt, tx, scope: prepared.scope, raw: msg,
172
+ });
173
+ if (!options.dedupe) {
174
+ await call(undefined);
175
+ return 'processed';
109
176
  }
177
+ return options.dedupe.run(route.consumerName, prepared.eventId, call);
110
178
  }
111
- retryOrDeadLetter(channel, queue, delays, dlq, msg, attempt, reason, retryable) {
112
- if (retryable && attempt < delays.length) {
113
- channel.sendToQueue((0, topology_js_1.retryQueueName)(queue, delays[attempt]), msg.content, {
179
+ retryOrDeadLetter(channel, route, msg, attempt, reason, retryable) {
180
+ const delay = route.delays[attempt - 1];
181
+ if (retryable && delay !== undefined) {
182
+ channel.sendToQueue((0, topology_js_1.retryQueueName)(route.queue, delay), msg.content, {
114
183
  ...msg.properties,
115
184
  persistent: true,
116
- headers: { ...(msg.properties.headers ?? {}), [RETRY_HEADER]: attempt + 1, 'x-last-error': reason.slice(0, 500), 'x-original-routing-key': msg.fields.routingKey },
185
+ headers: { ...(msg.properties.headers ?? {}), [RETRY_HEADER]: attempt, 'x-last-error': reason.slice(0, 500), 'x-original-routing-key': msg.fields.routingKey },
117
186
  });
118
187
  channel.ack(msg);
119
188
  return;
120
189
  }
121
- this.deadLetter(channel, dlq, msg, reason);
190
+ this.deadLetter(channel, route, msg, reason);
122
191
  }
123
- deadLetter(channel, dlq, msg, reason) {
124
- this.logger.error('Message dead-lettered', { dlq, routingKey: msg.fields.routingKey, reason });
125
- channel.sendToQueue(dlq, msg.content, {
192
+ deadLetter(channel, route, msg, reason) {
193
+ this.logger.error('Message dead-lettered', { dlq: route.dlq, routingKey: msg.fields.routingKey, reason });
194
+ channel.publish(route.dlx, route.dlq, msg.content, {
126
195
  ...msg.properties,
127
196
  persistent: true,
128
197
  headers: { ...(msg.properties.headers ?? {}), 'x-dead-letter-reason': reason.slice(0, 1000), 'x-failed-at': new Date().toISOString(), 'x-original-routing-key': msg.fields.routingKey },
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../src/messaging/consumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../src/messaging/consumer.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,66 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CORRELATION_HEADER = exports.RESERVED_ENVELOPE_FIELDS = void 0;
3
4
  exports.buildEnvelope = buildEnvelope;
4
5
  exports.isEnvelope = isEnvelope;
6
+ exports.splitEnvelopeData = splitEnvelopeData;
7
+ exports.outgoingCorrelationId = outgoingCorrelationId;
5
8
  const id_js_1 = require("../common/id.js");
6
- function buildEnvelope(type, data, source, meta = {}) {
7
- return {
9
+ const index_js_1 = require("../context/index.js");
10
+ const index_js_2 = require("../identity/index.js");
11
+ /** Names reserved in an envelope's `data`; a payload field with one of these names is overwritten. */
12
+ exports.RESERVED_ENVELOPE_FIELDS = ['eventId', 'version', 'actorUserId'];
13
+ /** AMQP header that carries the correlation id between services. */
14
+ exports.CORRELATION_HEADER = index_js_2.CONTEXT_HEADERS.CORRELATION_ID;
15
+ /**
16
+ * Builds `{ routingKey, data: { ...payload, eventId, version, actorUserId? }, timestamp }`.
17
+ *
18
+ * @param routingKey Event or command name.
19
+ * @param data Payload fields (an object); {@link RESERVED_ENVELOPE_FIELDS} are set by the envelope.
20
+ * @param meta Optional id, version and actor.
21
+ * @returns The envelope.
22
+ * @example const envelope = buildEnvelope('thing.created', { thingId }, { actorUserId: user.id });
23
+ */
24
+ function buildEnvelope(routingKey, data, meta = {}) {
25
+ const actorUserId = meta.actorUserId !== undefined ? meta.actorUserId : (0, index_js_1.getRequestContext)()?.userId;
26
+ const reserved = {
8
27
  eventId: meta.eventId ?? (0, id_js_1.newId)(),
9
- type,
10
28
  version: meta.version ?? 1,
11
- occurredAt: new Date().toISOString(),
12
- source,
13
- ...(meta.correlationId ? { correlationId: meta.correlationId } : {}),
14
- actor: { userId: meta.actorId ?? null },
15
- ...(meta.aggregate ? { aggregate: meta.aggregate } : {}),
16
- data,
29
+ ...(actorUserId !== undefined ? { actorUserId } : {}),
17
30
  };
31
+ return { routingKey, data: { ...data, ...reserved }, timestamp: new Date().toISOString() };
18
32
  }
33
+ /**
34
+ * True when `value` has the envelope shape (routing key, timestamp and `data.eventId`).
35
+ *
36
+ * @param value Parsed message body.
37
+ * @returns Whether it is an {@link EventEnvelope}.
38
+ */
19
39
  function isEnvelope(value) {
20
40
  const v = value;
21
- return !!v && typeof v === 'object' && typeof v.eventId === 'string' && typeof v.type === 'string' && 'data' in v;
41
+ return !!v && typeof v === 'object'
42
+ && typeof v.routingKey === 'string'
43
+ && typeof v.timestamp === 'string'
44
+ && !!v.data && typeof v.data === 'object'
45
+ && typeof v.data.eventId === 'string';
46
+ }
47
+ /**
48
+ * Splits an envelope's `data` into the payload and the reserved fields.
49
+ *
50
+ * @param envelope A received envelope.
51
+ * @returns `payload` (without reserved fields) and `meta` ({@link EnvelopeData}).
52
+ */
53
+ function splitEnvelopeData(envelope) {
54
+ const { eventId, version, actorUserId, ...payload } = envelope.data;
55
+ return { payload, meta: { eventId, version, ...(actorUserId !== undefined ? { actorUserId } : {}) } };
56
+ }
57
+ /**
58
+ * The correlation id to send: the explicit one, else the active request context's.
59
+ *
60
+ * @param meta Optional explicit value.
61
+ * @returns The id, or undefined outside a request/consumer context.
62
+ */
63
+ function outgoingCorrelationId(meta) {
64
+ return meta?.correlationId ?? (0, index_js_1.getRequestContext)()?.correlationId;
22
65
  }
23
66
  //# sourceMappingURL=envelope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../src/messaging/envelope.ts"],"names":[],"mappings":";;AAYA,sCAYC;AAED,gCAGC;AA7BD,2CAAwC;AAYxC,SAAgB,aAAa,CAAI,IAAY,EAAE,IAAO,EAAE,MAAc,EAAE,OAAqB,EAAE;IAC7F,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAA,aAAK,GAAE;QAChC,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;QAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,MAAM;QACN,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;QACvC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,KAAc;IACvC,MAAM,CAAC,GAAG,KAAsC,CAAC;IACjD,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,CAAC;AACpH,CAAC"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../src/messaging/envelope.ts"],"names":[],"mappings":";;;AAoCA,sCAQC;AAQD,gCAOC;AAQD,8CAGC;AAQD,sDAEC;AAhFD,2CAAwC;AACxC,kDAAwD;AACxD,mDAAuD;AAGvD,sGAAsG;AACzF,QAAA,wBAAwB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC;AAEvF,oEAAoE;AACvD,QAAA,kBAAkB,GAAG,0BAAe,CAAC,cAAc,CAAC;AAkBjE;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAmB,UAAkB,EAAE,IAAO,EAAE,OAAqB,EAAE;IAClG,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,4BAAiB,GAAE,EAAE,MAAM,CAAC;IACpG,MAAM,QAAQ,GAAiB;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAA,aAAK,GAAE;QAChC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;QAC1B,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,MAAM,CAAC,GAAG,KAAsC,CAAC;IACjD,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;WAC9B,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;WAChC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;WAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;WACtC,OAAQ,CAAC,CAAC,IAA8B,CAAC,OAAO,KAAK,QAAQ,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,QAAuB;IACvD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;IACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACxG,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,IAA0C;IAC9E,OAAO,IAAI,EAAE,aAAa,IAAI,IAAA,4BAAiB,GAAE,EAAE,aAAa,CAAC;AACnE,CAAC"}