@marinoscar/platform-api 0.1.0-next.22 → 0.1.0-next.23

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 (131) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/notifications/channels/browser-notification.channel.d.ts +11 -0
  3. package/dist/notifications/channels/browser-notification.channel.d.ts.map +1 -1
  4. package/dist/notifications/channels/browser-notification.channel.js +71 -48
  5. package/dist/notifications/channels/browser-notification.channel.js.map +1 -1
  6. package/dist/notifications/data/notifications-db.d.ts +19 -0
  7. package/dist/notifications/data/notifications-db.d.ts.map +1 -1
  8. package/dist/notifications/dto/notification.dto.d.ts +4 -0
  9. package/dist/notifications/dto/notification.dto.d.ts.map +1 -1
  10. package/dist/notifications/index.d.ts +1 -1
  11. package/dist/notifications/index.d.ts.map +1 -1
  12. package/dist/notifications/index.js.map +1 -1
  13. package/dist/notifications/notification-inbox-writer.d.ts +112 -0
  14. package/dist/notifications/notification-inbox-writer.d.ts.map +1 -0
  15. package/dist/notifications/notification-inbox-writer.js +217 -0
  16. package/dist/notifications/notification-inbox-writer.js.map +1 -0
  17. package/dist/notifications/notification-store.service.d.ts +10 -0
  18. package/dist/notifications/notification-store.service.d.ts.map +1 -1
  19. package/dist/notifications/notification-store.service.js +55 -10
  20. package/dist/notifications/notification-store.service.js.map +1 -1
  21. package/dist/notifications/notification-stream.service.d.ts +8 -0
  22. package/dist/notifications/notification-stream.service.d.ts.map +1 -1
  23. package/dist/notifications/notification-stream.service.js.map +1 -1
  24. package/dist/notifications/notification.types.d.ts +74 -0
  25. package/dist/notifications/notification.types.d.ts.map +1 -1
  26. package/dist/notifications/notification.types.js.map +1 -1
  27. package/dist/notifications/notifications.controller.d.ts +1 -0
  28. package/dist/notifications/notifications.controller.d.ts.map +1 -1
  29. package/dist/notifications/notifications.controller.js +23 -0
  30. package/dist/notifications/notifications.controller.js.map +1 -1
  31. package/dist/notifications/notifications.service.d.ts +56 -1
  32. package/dist/notifications/notifications.service.d.ts.map +1 -1
  33. package/dist/notifications/notifications.service.js +122 -0
  34. package/dist/notifications/notifications.service.js.map +1 -1
  35. package/dist/notifications/registry/event.registry.d.ts +15 -0
  36. package/dist/notifications/registry/event.registry.d.ts.map +1 -1
  37. package/dist/notifications/registry/event.registry.js +3 -0
  38. package/dist/notifications/registry/event.registry.js.map +1 -1
  39. package/dist/notifications/retention/notification-inbox-purge.handler.d.ts.map +1 -1
  40. package/dist/notifications/retention/notification-inbox-purge.handler.js +16 -4
  41. package/dist/notifications/retention/notification-inbox-purge.handler.js.map +1 -1
  42. package/dist/notifications/testing/index.d.ts +2 -0
  43. package/dist/notifications/testing/index.d.ts.map +1 -1
  44. package/dist/notifications/testing/index.js +5 -1
  45. package/dist/notifications/testing/index.js.map +1 -1
  46. package/dist/storage/config/storage-config.service.d.ts +24 -0
  47. package/dist/storage/config/storage-config.service.d.ts.map +1 -1
  48. package/dist/storage/config/storage-config.service.js +31 -5
  49. package/dist/storage/config/storage-config.service.js.map +1 -1
  50. package/dist/storage/handlers/storage-cleanup.handler.d.ts +3 -1
  51. package/dist/storage/handlers/storage-cleanup.handler.d.ts.map +1 -1
  52. package/dist/storage/handlers/storage-cleanup.handler.js +10 -3
  53. package/dist/storage/handlers/storage-cleanup.handler.js.map +1 -1
  54. package/dist/storage/index.d.ts +5 -1
  55. package/dist/storage/index.d.ts.map +1 -1
  56. package/dist/storage/index.js +12 -3
  57. package/dist/storage/index.js.map +1 -1
  58. package/dist/storage/objects/dto/get-part-urls.dto.d.ts +26 -0
  59. package/dist/storage/objects/dto/get-part-urls.dto.d.ts.map +1 -0
  60. package/dist/storage/objects/dto/get-part-urls.dto.js +25 -0
  61. package/dist/storage/objects/dto/get-part-urls.dto.js.map +1 -0
  62. package/dist/storage/objects/dto/init-upload.dto.d.ts +2 -1
  63. package/dist/storage/objects/dto/init-upload.dto.d.ts.map +1 -1
  64. package/dist/storage/objects/objects.controller.d.ts +13 -1
  65. package/dist/storage/objects/objects.controller.d.ts.map +1 -1
  66. package/dist/storage/objects/objects.controller.js +88 -1
  67. package/dist/storage/objects/objects.controller.js.map +1 -1
  68. package/dist/storage/objects/objects.service.d.ts +46 -1
  69. package/dist/storage/objects/objects.service.d.ts.map +1 -1
  70. package/dist/storage/objects/objects.service.js +277 -23
  71. package/dist/storage/objects/objects.service.js.map +1 -1
  72. package/dist/storage/objects/part-body-parser.d.ts +30 -0
  73. package/dist/storage/objects/part-body-parser.d.ts.map +1 -0
  74. package/dist/storage/objects/part-body-parser.js +45 -0
  75. package/dist/storage/objects/part-body-parser.js.map +1 -0
  76. package/dist/storage/objects/part-body.d.ts +23 -0
  77. package/dist/storage/objects/part-body.d.ts.map +1 -0
  78. package/dist/storage/objects/part-body.js +48 -0
  79. package/dist/storage/objects/part-body.js.map +1 -0
  80. package/dist/storage/processing/object-processing.service.d.ts +4 -1
  81. package/dist/storage/processing/object-processing.service.d.ts.map +1 -1
  82. package/dist/storage/processing/object-processing.service.js +11 -3
  83. package/dist/storage/processing/object-processing.service.js.map +1 -1
  84. package/dist/storage/profile-image/avatar.service.d.ts +3 -1
  85. package/dist/storage/profile-image/avatar.service.d.ts.map +1 -1
  86. package/dist/storage/profile-image/avatar.service.js +8 -3
  87. package/dist/storage/profile-image/avatar.service.js.map +1 -1
  88. package/dist/storage/profile-image/profile-image.service.d.ts +4 -1
  89. package/dist/storage/profile-image/profile-image.service.d.ts.map +1 -1
  90. package/dist/storage/profile-image/profile-image.service.js +11 -5
  91. package/dist/storage/profile-image/profile-image.service.js.map +1 -1
  92. package/dist/storage/providers/index.d.ts +3 -1
  93. package/dist/storage/providers/index.d.ts.map +1 -1
  94. package/dist/storage/providers/index.js +8 -1
  95. package/dist/storage/providers/index.js.map +1 -1
  96. package/dist/storage/providers/resolving-storage.provider.d.ts +11 -0
  97. package/dist/storage/providers/resolving-storage.provider.d.ts.map +1 -1
  98. package/dist/storage/providers/resolving-storage.provider.js +13 -0
  99. package/dist/storage/providers/resolving-storage.provider.js.map +1 -1
  100. package/dist/storage/providers/s3/s3-storage.provider.d.ts +9 -1
  101. package/dist/storage/providers/s3/s3-storage.provider.d.ts.map +1 -1
  102. package/dist/storage/providers/s3/s3-storage.provider.js +37 -0
  103. package/dist/storage/providers/s3/s3-storage.provider.js.map +1 -1
  104. package/dist/storage/providers/storage-provider-router.d.ts +64 -0
  105. package/dist/storage/providers/storage-provider-router.d.ts.map +1 -0
  106. package/dist/storage/providers/storage-provider-router.js +161 -0
  107. package/dist/storage/providers/storage-provider-router.js.map +1 -0
  108. package/dist/storage/providers/storage-provider.interface.d.ts +34 -1
  109. package/dist/storage/providers/storage-provider.interface.d.ts.map +1 -1
  110. package/dist/storage/providers/storage-provider.interface.js.map +1 -1
  111. package/dist/storage/providers/storage-provider.types.d.ts +86 -0
  112. package/dist/storage/providers/storage-provider.types.d.ts.map +1 -1
  113. package/dist/storage/providers/storage-provider.types.js +78 -0
  114. package/dist/storage/providers/storage-provider.types.js.map +1 -1
  115. package/dist/storage/providers/storage-providers.module.d.ts.map +1 -1
  116. package/dist/storage/providers/storage-providers.module.js +3 -1
  117. package/dist/storage/providers/storage-providers.module.js.map +1 -1
  118. package/dist/storage/testing/conformance.d.ts +12 -0
  119. package/dist/storage/testing/conformance.d.ts.map +1 -1
  120. package/dist/storage/testing/conformance.js +112 -0
  121. package/dist/storage/testing/conformance.js.map +1 -1
  122. package/dist/storage/testing/driver-conformance.d.ts +13 -1
  123. package/dist/storage/testing/driver-conformance.d.ts.map +1 -1
  124. package/dist/storage/testing/driver-conformance.js +134 -0
  125. package/dist/storage/testing/driver-conformance.js.map +1 -1
  126. package/dist/storage/testing/index.d.ts +1 -1
  127. package/dist/storage/testing/index.d.ts.map +1 -1
  128. package/dist/storage/testing/index.js +2 -1
  129. package/dist/storage/testing/index.js.map +1 -1
  130. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
  131. package/package.json +3 -3
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationInboxWriter = void 0;
4
+ exports.stateDedupKey = stateDedupKey;
5
+ exports.countedDedupKey = countedDedupKey;
6
+ const node_crypto_1 = require("node:crypto");
7
+ /** Longest dedup key stored; longer keys are hashed. */
8
+ const MAX_DEDUP_KEY_LENGTH = 200;
9
+ /** Prisma's unique-violation code. */
10
+ const UNIQUE_VIOLATION = 'P2002';
11
+ /**
12
+ * Builds the dedup key of a STATE row: one per `(eventKey, scopeId)`.
13
+ *
14
+ * @stability experimental
15
+ */
16
+ function stateDedupKey(eventKey, scopeId) {
17
+ return capKey(`state:${eventKey}:${scopeId ?? '-'}`);
18
+ }
19
+ /**
20
+ * Builds the dedup key of a COUNTED row: one per `(eventKey, scopeId, match)`.
21
+ * The match object is serialised with sorted keys, so `{a, b}` and `{b, a}`
22
+ * fold together.
23
+ *
24
+ * @stability experimental
25
+ */
26
+ function countedDedupKey(eventKey, scopeId, match) {
27
+ const entries = Object.entries(match ?? {}).sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
28
+ const suffix = entries.length === 0 ? '' : `:${JSON.stringify(entries)}`;
29
+ return capKey(`counted:${eventKey}:${scopeId ?? '-'}${suffix}`);
30
+ }
31
+ function capKey(key) {
32
+ if (key.length <= MAX_DEDUP_KEY_LENGTH)
33
+ return key;
34
+ return `${key.slice(0, 120)}#${(0, node_crypto_1.createHash)('sha256').update(key).digest('hex').slice(0, 40)}`;
35
+ }
36
+ function asRecord(value) {
37
+ return value !== null && typeof value === 'object' && !Array.isArray(value) ? { ...value } : {};
38
+ }
39
+ function asCount(value) {
40
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
41
+ }
42
+ function isUniqueViolation(err) {
43
+ return typeof err === 'object' && err !== null && err.code === UNIQUE_VIOLATION;
44
+ }
45
+ /**
46
+ * Writes STATE and COUNTED inbox rows.
47
+ *
48
+ * Exported for an app's own unit tests (`@marinoscar/platform-api/notifications/testing`); not an extension point: reach it through `NotificationsService.notifyState` and `notifyCounted`.
49
+ *
50
+ * @internal
51
+ */
52
+ class NotificationInboxWriter {
53
+ prisma;
54
+ constructor(prisma) {
55
+ this.prisma = prisma;
56
+ }
57
+ /**
58
+ * Upserts the single live STATE row, or returns null when `mode.count` is
59
+ * not positive (use {@link dismissLive} for that).
60
+ *
61
+ * The refresh replaces title, body, link and `data` wholesale, carrying
62
+ * `countAtRead` forward (replacing `data` would otherwise silently disable the
63
+ * re-unread rule until the row is next read). A READ row is re-marked unread
64
+ * only when `reunreadWhen` is `count-increased`, the new count exceeds a
65
+ * recorded `countAtRead`, and nothing else: never on a decrease, never on an
66
+ * equal count, never on a row with no `countAtRead` (absent means "already
67
+ * seen"; re-unreading on it would re-nag every legacy row on every refresh).
68
+ */
69
+ async upsertState(userId, eventKey, mode, data, render) {
70
+ return this.withRetry(() => this.locked(userId, mode.dedupKey, async (tx) => {
71
+ const live = await this.findLive(tx, userId, mode.dedupKey);
72
+ const payload = { ...data, count: mode.count };
73
+ if (!live) {
74
+ const content = render(payload);
75
+ const created = await tx.notification.create({
76
+ data: {
77
+ userId,
78
+ eventKey,
79
+ ...content,
80
+ scopeId: mode.scopeId,
81
+ data: payload,
82
+ dedupKey: mode.dedupKey,
83
+ },
84
+ });
85
+ return result(created, mode.count, 'created', false);
86
+ }
87
+ const previous = asRecord(live.data);
88
+ const previousCount = asCount(previous['count']);
89
+ const countAtRead = asCount(previous['countAtRead']);
90
+ const grew = previousCount === null ? true : mode.count > previousCount;
91
+ const reunread = live.readAt !== null &&
92
+ mode.reunreadWhen === 'count-increased' &&
93
+ countAtRead !== null &&
94
+ mode.count > countAtRead;
95
+ const merged = { ...payload };
96
+ if (countAtRead !== null)
97
+ merged['countAtRead'] = countAtRead;
98
+ const content = render(merged);
99
+ const updated = await tx.notification.update({
100
+ where: { id: live.id },
101
+ data: {
102
+ ...content,
103
+ scopeId: mode.scopeId,
104
+ data: merged,
105
+ ...(reunread ? { readAt: null } : {}),
106
+ },
107
+ });
108
+ // Quiet: nothing for the user to notice (same count, still as read or
109
+ // unread as before). The row is refreshed but no stream frame is sent.
110
+ const quiet = !reunread && !(grew && live.readAt === null);
111
+ return result(updated, mode.count, reunread ? 'reunread' : 'incremented', quiet);
112
+ }));
113
+ }
114
+ /**
115
+ * Folds one occurrence into the live COUNTED row, or starts a new row.
116
+ *
117
+ * Inside the window (or with none) the live row's `data.count` grows by
118
+ * `increment`, its text is re-rendered with the new total, and `readAt` is
119
+ * cleared so continued activity re-badges the bell. Outside the window the
120
+ * old row is RETIRED (its `dedup_key` becomes `retired:<id>` so the key is free; it stays in
121
+ * the inbox as the record of that batch) and a fresh row starts at
122
+ * `increment`.
123
+ */
124
+ async upsertCounted(userId, eventKey, mode, data, render, now = new Date()) {
125
+ return this.withRetry(() => this.locked(userId, mode.dedupKey, async (tx) => {
126
+ let live = await this.findLive(tx, userId, mode.dedupKey);
127
+ if (live && mode.windowMs !== null && now.getTime() - live.updatedAt.getTime() > mode.windowMs) {
128
+ // Retire, do not delete or dismiss: the user still sees that batch.
129
+ // The key becomes 'retired:<id>', unique to the row, so the live key
130
+ // is free and the row still reads as a folded one (non-null key) to
131
+ // the retention sweep. Raw: Prisma's `update` would also bump
132
+ // `updated_at`, rewriting the timestamp this row is evidence of.
133
+ await tx.$executeRaw `UPDATE notifications SET dedup_key = ${`retired:${live.id}`} WHERE id = ${live.id}::uuid`;
134
+ live = null;
135
+ }
136
+ if (!live) {
137
+ const payload = { ...data, count: mode.increment };
138
+ const content = render(payload);
139
+ const created = await tx.notification.create({
140
+ data: {
141
+ userId,
142
+ eventKey,
143
+ ...content,
144
+ scopeId: mode.scopeId,
145
+ data: payload,
146
+ dedupKey: mode.dedupKey,
147
+ },
148
+ });
149
+ return result(created, mode.increment, 'created', false);
150
+ }
151
+ const previous = asRecord(live.data);
152
+ const total = (asCount(previous['count']) ?? 0) + mode.increment;
153
+ // The latest occurrence's fields win; the count accumulates and any
154
+ // `countAtRead` is untouched.
155
+ const merged = { ...previous, ...data, count: total };
156
+ const content = render(merged);
157
+ const wasRead = live.readAt !== null;
158
+ const updated = await tx.notification.update({
159
+ where: { id: live.id },
160
+ data: {
161
+ ...content,
162
+ data: merged,
163
+ readAt: null,
164
+ },
165
+ });
166
+ return result(updated, total, wasRead ? 'reunread' : 'incremented', false);
167
+ }));
168
+ }
169
+ /**
170
+ * Dismisses the live row of `dedupKey` (a STATE row whose count drained to
171
+ * zero). Dismissal implies read. Returns whether a row was dismissed.
172
+ */
173
+ async dismissLive(userId, dedupKey) {
174
+ return this.locked(userId, dedupKey, async (tx) => {
175
+ const touched = await tx.$executeRaw `
176
+ UPDATE notifications
177
+ SET dismissed_at = now(), read_at = COALESCE(read_at, now()), updated_at = now()
178
+ WHERE user_id = ${userId}::uuid AND dedup_key = ${dedupKey} AND dismissed_at IS NULL`;
179
+ return touched > 0;
180
+ });
181
+ }
182
+ /** Runs `work` in a transaction holding the advisory lock of `(userId, dedupKey)`. */
183
+ locked(userId, dedupKey, work) {
184
+ const lockKey = `${userId}|${dedupKey}`;
185
+ return this.prisma.$transaction(async (tx) => {
186
+ await tx.$executeRaw `SELECT pg_advisory_xact_lock(hashtext(${lockKey}))`;
187
+ return work(tx);
188
+ });
189
+ }
190
+ /** One retry on a unique violation: the winner's row exists now, so the retry folds into it. */
191
+ async withRetry(attempt) {
192
+ try {
193
+ return await attempt();
194
+ }
195
+ catch (err) {
196
+ if (!isUniqueViolation(err))
197
+ throw err;
198
+ return attempt();
199
+ }
200
+ }
201
+ findLive(tx, userId, dedupKey) {
202
+ return tx.notification.findFirst({ where: { userId, dedupKey, dismissedAt: null } });
203
+ }
204
+ }
205
+ exports.NotificationInboxWriter = NotificationInboxWriter;
206
+ function result(row, count, reason, quiet) {
207
+ return {
208
+ id: row.id,
209
+ createdAt: row.createdAt,
210
+ updatedAt: row.updatedAt,
211
+ count,
212
+ scopeId: row.scopeId ?? null,
213
+ reason,
214
+ quiet,
215
+ };
216
+ }
217
+ //# sourceMappingURL=notification-inbox-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-inbox-writer.js","sourceRoot":"","sources":["../../src/notifications/notification-inbox-writer.ts"],"names":[],"mappings":";;;AA6HA,sCAEC;AASD,0CAQC;AAhJD,6CAAyC;AAkHzC,wDAAwD;AACxD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,sCAAsC;AACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC;;;;GAIG;AACH,SAAgB,aAAa,CAAC,QAAgB,EAAE,OAAsB;IACpE,OAAO,MAAM,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,QAAgB,EAChB,OAAsB,EACtB,KAAsE;IAEtE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACzE,OAAO,MAAM,CAAC,WAAW,QAAQ,IAAI,OAAO,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IACzB,IAAI,GAAG,CAAC,MAAM,IAAI,oBAAoB;QAAE,OAAO,GAAG,CAAC;IACnD,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgD;IAChE,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAI,KAAiC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/H,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAA0B,CAAC,IAAI,KAAK,gBAAgB,CAAC;AAC1G,CAAC;AAED;;;;;;GAMG;AACH,MAAa,uBAAuB;IACL;IAA7B,YAA6B,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;IAAG,CAAC;IAE5D;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,WAAW,CACf,MAAc,EACd,QAAgB,EAChB,IAA4C,EAC5C,IAA6B,EAC7B,MAAmB;QAEnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC3C,IAAI,EAAE;wBACJ,MAAM;wBACN,QAAQ;wBACR,GAAG,OAAO;wBACV,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,IAAI,EAAE,OAAsC;wBAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB;iBACF,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;YAErD,MAAM,IAAI,GAAG,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;YACxE,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,KAAK,IAAI;gBACpB,IAAI,CAAC,YAAY,KAAK,iBAAiB;gBACvC,WAAW,KAAK,IAAI;gBACpB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YAE3B,MAAM,MAAM,GAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;YACvD,IAAI,WAAW,KAAK,IAAI;gBAAE,MAAM,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;YAE9D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;gBACtB,IAAI,EAAE;oBACJ,GAAG,OAAO;oBACV,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI,EAAE,MAAqC;oBAC3C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtC;aACF,CAAC,CAAC;YAEH,sEAAsE;YACtE,uEAAuE;YACvE,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,aAAa,CACjB,MAAc,EACd,QAAgB,EAChB,IAA8C,EAC9C,IAA6B,EAC7B,MAAmB,EACnB,MAAY,IAAI,IAAI,EAAE;QAEtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAC9C,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE1D,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/F,oEAAoE;gBACpE,qEAAqE;gBACrE,oEAAoE;gBACpE,8DAA8D;gBAC9D,iEAAiE;gBACjE,MAAM,EAAE,CAAC,WAAW,CAAA,wCAAwC,WAAW,IAAI,CAAC,EAAE,EAAE,eAAe,IAAI,CAAC,EAAE,QAAQ,CAAC;gBAC/G,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC3C,IAAI,EAAE;wBACJ,MAAM;wBACN,QAAQ;wBACR,GAAG,OAAO;wBACV,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,IAAI,EAAE,OAAsC;wBAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB;iBACF,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACjE,oEAAoE;YACpE,8BAA8B;YAC9B,MAAM,MAAM,GAA4B,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAE/E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;gBACtB,IAAI,EAAE;oBACJ,GAAG,OAAO;oBACV,IAAI,EAAE,MAAqC;oBAC3C,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,QAAgB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAA;;;0BAGhB,MAAM,0BAA0B,QAAQ,2BAA2B,CAAC;YACxF,OAAO,OAAO,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sFAAsF;IAC9E,MAAM,CAAI,MAAc,EAAE,QAAgB,EAAE,IAAyC;QAC3F,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC3C,MAAM,EAAE,CAAC,WAAW,CAAA,yCAAyC,OAAO,IAAI,CAAC;YACzE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gGAAgG;IACxF,KAAK,CAAC,SAAS,CAAI,OAAyB;QAClD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACvC,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,EAAmB,EAAE,MAAc,EAAE,QAAgB;QACpE,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC;CACF;AArLD,0DAqLC;AAED,SAAS,MAAM,CAAC,GAAoB,EAAE,KAAa,EAAE,MAAwB,EAAE,KAAc;IAC3F,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK;QACL,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,MAAM;QACN,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -68,5 +68,15 @@ export declare class NotificationStoreService {
68
68
  * be showing 1.
69
69
  */
70
70
  markAllRead(userId: string): Promise<number>;
71
+ /**
72
+ * Dismiss one notification ("stop showing me this") and report the badge.
73
+ *
74
+ * Dismissal implies read, so the row never lingers in the unread count. The
75
+ * row leaves the list; the retention sweep deletes it by age. Idempotent, and
76
+ * ownership-scoped exactly like {@link markRead}: another user's id is a 404.
77
+ *
78
+ * @throws NotFoundException when the id belongs to nobody, or to somebody else.
79
+ */
80
+ dismiss(userId: string, id: string): Promise<number>;
71
81
  }
72
82
  //# sourceMappingURL=notification-store.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-store.service.d.ts","sourceRoot":"","sources":["../../src/notifications/notification-store.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiC,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,wBAAwB,CAAC;AAwDhC;;;;GAIG;AACH,qBACa,wBAAwB;IACE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,mBAAmB;IAEjF;;;;;;;;;;;;;;OAcG;IACG,IAAI,CACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,wBAAwB,CAAC;IA6BpC;;;;;;;;;;OAUG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlD;;;;;;;;;;;;;;;;;;OAkBG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B3D;;;;;;;;;;OAUG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAQnD"}
1
+ {"version":3,"file":"notification-store.service.d.ts","sourceRoot":"","sources":["../../src/notifications/notification-store.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiC,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,wBAAwB,CAAC;AA4DhC;;;;GAIG;AACH,qBACa,wBAAwB;IACE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,mBAAmB;IAEjF;;;;;;;;;;;;;;OAcG;IACG,IAAI,CACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,wBAAwB,CAAC;IA+BpC;;;;;;;;;;OAUG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlD;;;;;;;;;;;;;;;;;;OAkBG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmC3D;;;;;;;;;;OAUG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYlD;;;;;;;;OAQG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAgB3D"}
@@ -66,6 +66,10 @@ const NOTIFICATION_FIELDS = {
66
66
  link: true,
67
67
  readAt: true,
68
68
  createdAt: true,
69
+ data: true,
70
+ scopeId: true,
71
+ dismissedAt: true,
72
+ updatedAt: true,
69
73
  };
70
74
  /**
71
75
  * Exported for an app's own unit tests (`@marinoscar/platform-api/notifications/testing`); not an extension point: reach it through `NotificationsModule` and its documented seams.
@@ -95,8 +99,10 @@ let NotificationStoreService = class NotificationStoreService {
95
99
  async list(userId, query) {
96
100
  const { page, pageSize, unreadOnly } = query;
97
101
  // `userId` is in the where clause, not applied afterwards. See the header.
102
+ // A dismissed row is "stop showing me this": never listed (issue #1077).
98
103
  const where = {
99
104
  userId,
105
+ dismissedAt: null,
100
106
  ...(unreadOnly ? { readAt: null } : {}),
101
107
  };
102
108
  const [items, total] = await this.prisma.$transaction([
@@ -130,7 +136,7 @@ let NotificationStoreService = class NotificationStoreService {
130
136
  */
131
137
  async unreadCount(userId) {
132
138
  return this.prisma.notification.count({
133
- where: { userId, readAt: null },
139
+ where: { userId, readAt: null, dismissedAt: null },
134
140
  });
135
141
  }
136
142
  /**
@@ -153,11 +159,19 @@ let NotificationStoreService = class NotificationStoreService {
153
159
  * else. The two are deliberately indistinguishable.
154
160
  */
155
161
  async markRead(userId, id) {
156
- const { count } = await this.prisma.notification.updateMany({
157
- where: { id, userId, readAt: null },
158
- data: { readAt: new Date() },
159
- });
160
- if (count === 0) {
162
+ // Raw, for two reasons. `data.countAtRead` snapshots the count the user
163
+ // saw (the re-unread rule of a STATE row compares against it), which
164
+ // `updateMany` cannot do per row; and Prisma's `@updatedAt` would move
165
+ // `updated_at`, the rolling-window anchor of a COUNTED row, so merely
166
+ // reading a row would keep its window open.
167
+ const touched = await this.prisma.$executeRaw `
168
+ UPDATE notifications
169
+ SET read_at = now(),
170
+ data = CASE WHEN jsonb_typeof(data -> 'count') = 'number'
171
+ THEN jsonb_set(data, '{countAtRead}', data -> 'count')
172
+ ELSE data END
173
+ WHERE id = ${id}::uuid AND user_id = ${userId}::uuid AND read_at IS NULL`;
174
+ if (touched === 0) {
161
175
  // Nothing was updated: either the notification is already read (fine,
162
176
  // idempotent) or it is not this user's to touch. Distinguished by a
163
177
  // second query that is ITSELF scoped to the user, so the answer never
@@ -187,10 +201,36 @@ let NotificationStoreService = class NotificationStoreService {
187
201
  * be showing 1.
188
202
  */
189
203
  async markAllRead(userId) {
190
- await this.prisma.notification.updateMany({
191
- where: { userId, readAt: null },
192
- data: { readAt: new Date() },
193
- });
204
+ await this.prisma.$executeRaw `
205
+ UPDATE notifications
206
+ SET read_at = now(),
207
+ data = CASE WHEN jsonb_typeof(data -> 'count') = 'number'
208
+ THEN jsonb_set(data, '{countAtRead}', data -> 'count')
209
+ ELSE data END
210
+ WHERE user_id = ${userId}::uuid AND read_at IS NULL AND dismissed_at IS NULL`;
211
+ return this.unreadCount(userId);
212
+ }
213
+ /**
214
+ * Dismiss one notification ("stop showing me this") and report the badge.
215
+ *
216
+ * Dismissal implies read, so the row never lingers in the unread count. The
217
+ * row leaves the list; the retention sweep deletes it by age. Idempotent, and
218
+ * ownership-scoped exactly like {@link markRead}: another user's id is a 404.
219
+ *
220
+ * @throws NotFoundException when the id belongs to nobody, or to somebody else.
221
+ */
222
+ async dismiss(userId, id) {
223
+ const touched = await this.prisma.$executeRaw `
224
+ UPDATE notifications
225
+ SET dismissed_at = now(),
226
+ read_at = COALESCE(read_at, now())
227
+ WHERE id = ${id}::uuid AND user_id = ${userId}::uuid AND dismissed_at IS NULL`;
228
+ if (touched === 0) {
229
+ const exists = await this.prisma.notification.count({ where: { id, userId } });
230
+ if (exists === 0) {
231
+ throw new common_1.NotFoundException('Notification not found');
232
+ }
233
+ }
194
234
  return this.unreadCount(userId);
195
235
  }
196
236
  };
@@ -209,6 +249,7 @@ exports.NotificationStoreService = NotificationStoreService = __decorate([
209
249
  * into the list it fetched without a second mapping.
210
250
  */
211
251
  function toResponse(row) {
252
+ const count = row.data?.count;
212
253
  return {
213
254
  id: row.id,
214
255
  eventKey: row.eventKey,
@@ -217,6 +258,10 @@ function toResponse(row) {
217
258
  link: row.link,
218
259
  readAt: row.readAt ? row.readAt.toISOString() : null,
219
260
  createdAt: row.createdAt.toISOString(),
261
+ count: typeof count === 'number' ? count : null,
262
+ scopeId: row.scopeId,
263
+ dismissedAt: row.dismissedAt ? row.dismissedAt.toISOString() : null,
264
+ updatedAt: row.updatedAt.toISOString(),
220
265
  };
221
266
  }
222
267
  //# sourceMappingURL=notification-store.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-store.service.js","sourceRoot":"","sources":["../../src/notifications/notification-store.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification-store.service.js","sourceRoot":"","sources":["../../src/notifications/notification-store.service.ts"],"names":[],"mappings":"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"}
@@ -76,6 +76,14 @@ export interface NotificationStreamEvent {
76
76
  * change what `toast` means.
77
77
  */
78
78
  pushed: boolean;
79
+ /** The occurrence count of a STATE or COUNTED row (issue #1077); absent for a plain row. */
80
+ count?: number | null;
81
+ /** The scope of a STATE or COUNTED row, or null. */
82
+ scopeId?: string | null;
83
+ /** Last refresh (ISO 8601). */
84
+ updatedAt?: string;
85
+ /** Why the frame was sent; absent means `created`. */
86
+ reason?: 'created' | 'incremented' | 'reunread';
79
87
  }
80
88
  /**
81
89
  * SSE `event:` name carrying a new notification.
@@ -1 +1 @@
1
- {"version":3,"file":"notification-stream.service.d.ts","sourceRoot":"","sources":["../../src/notifications/notification-stream.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification-stream.service.d.ts","sourceRoot":"","sources":["../../src/notifications/notification-stream.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification-stream.service.js","sourceRoot":"","sources":["../../src/notifications/notification-stream.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification-stream.service.js","sourceRoot":"","sources":["../../src/notifications/notification-stream.service.ts"],"names":[],"mappings":"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"}
@@ -137,6 +137,73 @@ export interface NotifyOptions {
137
137
  */
138
138
  timeZone?: string | null;
139
139
  }
140
+ /**
141
+ * Options of {@link NotificationsService.notifyState}.
142
+ *
143
+ * Everything in {@link NotifyOptions} applies unchanged (channels narrow,
144
+ * `orgId`, `timeZone`).
145
+ *
146
+ * @stability experimental
147
+ */
148
+ export interface NotifyStateOptions extends NotifyOptions {
149
+ /**
150
+ * The scope this row belongs to (a group, an organization, a workspace).
151
+ * One user holds one live row per `(eventKey, scopeId)`. Not authorization:
152
+ * the producer decides who is notified.
153
+ */
154
+ scopeId?: string | null;
155
+ /**
156
+ * When a refresh re-marks a READ row unread. `count-increased` (default):
157
+ * only when `data.count` is greater than the count the user saw when they
158
+ * read it (`data.countAtRead`); a row with no recorded `countAtRead` is
159
+ * treated as already seen. `never`: a refresh never touches `readAt`.
160
+ */
161
+ reunreadWhen?: 'count-increased' | 'never';
162
+ }
163
+ /**
164
+ * Options of {@link NotificationsService.notifyCounted}.
165
+ *
166
+ * @stability experimental
167
+ */
168
+ export interface NotifyCountedOptions extends NotifyOptions {
169
+ /** The scope this row belongs to; see {@link NotifyStateOptions.scopeId}. */
170
+ scopeId?: string | null;
171
+ /**
172
+ * The rolling window in milliseconds, anchored on the row's last update:
173
+ * an occurrence inside it folds into the live row, one after it starts a new
174
+ * row (the old row stays in the inbox, retired). Absent or `null`: no window,
175
+ * the live row keeps accumulating until the user dismisses it.
176
+ */
177
+ windowMs?: number | null;
178
+ /**
179
+ * Partitions the rows beyond `(user, eventKey, scope)`: two occurrences fold
180
+ * together only when their `match` objects are equal (key order does not
181
+ * matter), for example `{ jobType: 'export' }`.
182
+ */
183
+ match?: Readonly<Record<string, string | number | boolean>>;
184
+ /** How much this occurrence adds to `data.count`. Default 1; a positive integer. */
185
+ increment?: number;
186
+ }
187
+ /**
188
+ * How the in-app inbox row of one dispatch is written, when it is not a plain
189
+ * append. Set by `notifyState` and `notifyCounted`; read by the browser
190
+ * channel. Not part of the public surface.
191
+ *
192
+ * @internal
193
+ */
194
+ export type InboxWrite = {
195
+ readonly kind: 'state';
196
+ readonly dedupKey: string;
197
+ readonly scopeId: string | null;
198
+ readonly count: number;
199
+ readonly reunreadWhen: 'count-increased' | 'never';
200
+ } | {
201
+ readonly kind: 'counted';
202
+ readonly dedupKey: string;
203
+ readonly scopeId: string | null;
204
+ readonly windowMs: number | null;
205
+ readonly increment: number;
206
+ };
140
207
  /**
141
208
  * Per-dispatch options for the permission-addressed entry points
142
209
  * ({@link NotificationsService.notifyPermissionHolders} and its awaited
@@ -223,6 +290,13 @@ export interface NotificationDispatchContext {
223
290
  * independent and are attempted in isolation.
224
291
  */
225
292
  readonly channels: readonly NotificationChannel[];
293
+ /**
294
+ * Set by `notifyState` / `notifyCounted`: the browser channel upserts the
295
+ * inbox row instead of appending one. Absent for `notify()`.
296
+ *
297
+ * @internal
298
+ */
299
+ readonly inbox?: InboxWrite;
226
300
  }
227
301
  /**
228
302
  * The outcome of one channel's attempt at one delivery.
@@ -1 +1 @@
1
- {"version":3,"file":"notification.types.d.ts","sourceRoot":"","sources":["../../src/notifications/notification.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification.types.d.ts","sourceRoot":"","sources":["../../src/notifications/notification.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAY1E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB;;;;;;;;;OASG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;;;;;;OAOG;IACH,WAAW,EAAE,uBAAuB,CAAC;IAErC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAE1C;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC;CAC5C;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAE5D,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAClB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAAC;CACpD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEN;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,8BAA+B,SAAQ,aAAa;IACnE;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,sFAAsF;IACtF,KAAK,EAAE,oBAAoB,CAAC;IAE5B,uEAAuE;IACvE,SAAS,EAAE,qBAAqB,CAAC;IAEjC;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAElD;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IAEjB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,WAAW,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6IAA6I;IAC7I,EAAE,EAAE,MAAM,CAAC;IACX,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC;;;;OAIG;IACH,MAAM,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAEtC;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,CAAC,SAAS,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAAC;IAE5D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,gBAAgB,CAAC,CAAC,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAEzH;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CACL,OAAO,EAAE,2BAA2B,EACpC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification.types.js","sourceRoot":"","sources":["../../src/notifications/notification.types.ts"],"names":[],"mappings":";;;AA6dA;;;;;;;;;;;;GAYG;AACU,QAAA,4BAA4B,GAAG,8BAA8B,CAAC"}
1
+ {"version":3,"file":"notification.types.js","sourceRoot":"","sources":["../../src/notifications/notification.types.ts"],"names":[],"mappings":";;;AAijBA;;;;;;;;;;;;GAYG;AACU,QAAA,4BAA4B,GAAG,8BAA8B,CAAC"}
@@ -125,6 +125,7 @@ export declare class NotificationsController {
125
125
  * not accept it.
126
126
  */
127
127
  markRead(userId: string, id: string): Promise<UnreadCountResponse>;
128
+ dismiss(userId: string, id: string): Promise<UnreadCountResponse>;
128
129
  markAllRead(userId: string): Promise<UnreadCountResponse>;
129
130
  subscribePush(userId: string, dto: PushSubscribeDto, userAgent: string | undefined): Promise<PushSubscriptionResponse>;
130
131
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.controller.d.ts","sourceRoot":"","sources":["../../src/notifications/notifications.controller.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,EAAoC,KAAK,qCAAqC,EAAE,MAAM,gCAAgC,CAAC;AAE9H,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EACL,yBAAyB,EACzB,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,wBAAwB,EAExB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAEhB,kBAAkB,EAClB,KAAK,wBAAwB,EAC9B,MAAM,6BAA6B,CAAC;AA2BrC;;;;GAIG;AACH,qBAEa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAGtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAGxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBATjB,KAAK,EAAE,wBAAwB,EAG/B,OAAO,EAAE,yBAAyB,EAGlC,MAAM,EAAE,yBAAyB,EAGjC,iBAAiB,EAAE,uBAAuB;IAiCvD,UAAU,CAAgB,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IA0DzF,YAAY,IAAI,qCAAqC,EAAE;IAIvD;;;;;;;;;;;;;;;OAeG;IAiCG,MAAM,CAAgB,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA0BpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuEG;IA+CH,MAAM,CAAoB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;IA0C3D,IAAI,CACW,MAAM,EAAE,MAAM,EACxB,KAAK,EAAE,wBAAwB,GACvC,OAAO,CAAC,wBAAwB,CAAC;IAgB9B,WAAW,CACI,MAAM,EAAE,MAAM,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;;;;;;;;OASG;IAiBG,QAAQ,CACO,MAAM,EAAE,MAAM,EACL,EAAE,EAAE,MAAM,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAmBzB,WAAW,CACI,MAAM,EAAE,MAAM,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAoCzB,aAAa,CACE,MAAM,EAAE,MAAM,EACzB,GAAG,EAAE,gBAAgB,EACN,SAAS,EAAE,MAAM,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC;IAepC;;;;;;;;OAQG;IAeG,eAAe,CACA,MAAM,EAAE,MAAM,EACzB,GAAG,EAAE,kBAAkB,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGjB"}
1
+ {"version":3,"file":"notifications.controller.d.ts","sourceRoot":"","sources":["../../src/notifications/notifications.controller.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,EAAoC,KAAK,qCAAqC,EAAE,MAAM,gCAAgC,CAAC;AAE9H,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EACL,yBAAyB,EACzB,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,wBAAwB,EAExB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAEhB,kBAAkB,EAClB,KAAK,wBAAwB,EAC9B,MAAM,6BAA6B,CAAC;AA2BrC;;;;GAIG;AACH,qBAEa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAGtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAGxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBATjB,KAAK,EAAE,wBAAwB,EAG/B,OAAO,EAAE,yBAAyB,EAGlC,MAAM,EAAE,yBAAyB,EAGjC,iBAAiB,EAAE,uBAAuB;IAiCvD,UAAU,CAAgB,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IA0DzF,YAAY,IAAI,qCAAqC,EAAE;IAIvD;;;;;;;;;;;;;;;OAeG;IAiCG,MAAM,CAAgB,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA0BpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuEG;IA+CH,MAAM,CAAoB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;IA0C3D,IAAI,CACW,MAAM,EAAE,MAAM,EACxB,KAAK,EAAE,wBAAwB,GACvC,OAAO,CAAC,wBAAwB,CAAC;IAgB9B,WAAW,CACI,MAAM,EAAE,MAAM,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;;;;;;;;OASG;IAiBG,QAAQ,CACO,MAAM,EAAE,MAAM,EACL,EAAE,EAAE,MAAM,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAkBzB,OAAO,CACQ,MAAM,EAAE,MAAM,EACL,EAAE,EAAE,MAAM,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAmBzB,WAAW,CACI,MAAM,EAAE,MAAM,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAoCzB,aAAa,CACE,MAAM,EAAE,MAAM,EACzB,GAAG,EAAE,gBAAgB,EACN,SAAS,EAAE,MAAM,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC;IAepC;;;;;;;;OAQG;IAeG,eAAe,CACA,MAAM,EAAE,MAAM,EACzB,GAAG,EAAE,kBAAkB,GAC9B,OAAO,CAAC,IAAI,CAAC;CAGjB"}
@@ -263,6 +263,9 @@ let NotificationsController = class NotificationsController {
263
263
  async markRead(userId, id) {
264
264
  return { unreadCount: await this.store.markRead(userId, id) };
265
265
  }
266
+ async dismiss(userId, id) {
267
+ return { unreadCount: await this.store.dismiss(userId, id) };
268
+ }
266
269
  async markAllRead(userId) {
267
270
  return { unreadCount: await this.store.markAllRead(userId) };
268
271
  }
@@ -507,6 +510,26 @@ __decorate([
507
510
  __metadata("design:paramtypes", [String, String]),
508
511
  __metadata("design:returntype", Promise)
509
512
  ], NotificationsController.prototype, "markRead", null);
513
+ __decorate([
514
+ (0, common_1.Post)(':id/dismiss'),
515
+ (0, index_2.Auth)(),
516
+ (0, swagger_1.ApiOperation)({
517
+ summary: 'Dismiss one notification',
518
+ description: 'Removes a notification from the caller’s list and unread count ("stop showing me this"); ' +
519
+ 'dismissal implies read, and the retention sweep deletes the row by age. Returns the ' +
520
+ 'caller’s resulting unread count.\n\n' +
521
+ '**Idempotent.** **Ownership.** An id belonging to another user returns `404`, identical to ' +
522
+ 'an id that does not exist.',
523
+ }),
524
+ (0, swagger_1.ApiParam)({ name: 'id', type: String, format: 'uuid' }),
525
+ (0, index_1.ApiDataResponse)(notification_dto_1.UnreadCountDto, { description: 'The new unread count' }),
526
+ (0, swagger_1.ApiResponse)({ status: 404, description: 'No such notification for this user' }),
527
+ __param(0, (0, index_2.CurrentUser)('id')),
528
+ __param(1, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
529
+ __metadata("design:type", Function),
530
+ __metadata("design:paramtypes", [String, String]),
531
+ __metadata("design:returntype", Promise)
532
+ ], NotificationsController.prototype, "dismiss", null);
510
533
  __decorate([
511
534
  (0, common_1.Post)('read-all'),
512
535
  (0, index_2.Auth)()