@marinoscar/platform-api 0.1.0-next.25 → 0.1.0-next.27

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 (118) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/identity/auth/decorators/current-user.decorator.d.ts +30 -5
  3. package/dist/identity/auth/decorators/current-user.decorator.d.ts.map +1 -1
  4. package/dist/identity/auth/decorators/current-user.decorator.js +31 -6
  5. package/dist/identity/auth/decorators/current-user.decorator.js.map +1 -1
  6. package/dist/manifest/platform-model-ownership.d.ts.map +1 -1
  7. package/dist/manifest/platform-model-ownership.js +19 -0
  8. package/dist/manifest/platform-model-ownership.js.map +1 -1
  9. package/dist/manifest/platform-user-owned-models.d.ts.map +1 -1
  10. package/dist/manifest/platform-user-owned-models.js +15 -0
  11. package/dist/manifest/platform-user-owned-models.js.map +1 -1
  12. package/dist/notifications/dto/notification.dto.d.ts +24 -2
  13. package/dist/notifications/dto/notification.dto.d.ts.map +1 -1
  14. package/dist/notifications/dto/notification.dto.js +19 -1
  15. package/dist/notifications/dto/notification.dto.js.map +1 -1
  16. package/dist/notifications/index.d.ts +3 -2
  17. package/dist/notifications/index.d.ts.map +1 -1
  18. package/dist/notifications/index.js +9 -2
  19. package/dist/notifications/index.js.map +1 -1
  20. package/dist/notifications/notification-dismissal.d.ts +49 -0
  21. package/dist/notifications/notification-dismissal.d.ts.map +1 -0
  22. package/dist/notifications/notification-dismissal.js +109 -0
  23. package/dist/notifications/notification-dismissal.js.map +1 -0
  24. package/dist/notifications/notification-store.service.d.ts +12 -0
  25. package/dist/notifications/notification-store.service.d.ts.map +1 -1
  26. package/dist/notifications/notification-store.service.js +32 -6
  27. package/dist/notifications/notification-store.service.js.map +1 -1
  28. package/dist/notifications/notification-stream.service.d.ts +42 -1
  29. package/dist/notifications/notification-stream.service.d.ts.map +1 -1
  30. package/dist/notifications/notification-stream.service.js +97 -4
  31. package/dist/notifications/notification-stream.service.js.map +1 -1
  32. package/dist/notifications/notifications.controller.d.ts +2 -1
  33. package/dist/notifications/notifications.controller.d.ts.map +1 -1
  34. package/dist/notifications/notifications.controller.js +44 -3
  35. package/dist/notifications/notifications.controller.js.map +1 -1
  36. package/dist/notifications/notifications.system-settings.d.ts +13 -0
  37. package/dist/notifications/notifications.system-settings.d.ts.map +1 -1
  38. package/dist/notifications/notifications.system-settings.js +10 -0
  39. package/dist/notifications/notifications.system-settings.js.map +1 -1
  40. package/dist/notifications/notifications.user-settings.d.ts +8 -0
  41. package/dist/notifications/notifications.user-settings.d.ts.map +1 -1
  42. package/dist/notifications/notifications.user-settings.js +11 -0
  43. package/dist/notifications/notifications.user-settings.js.map +1 -1
  44. package/dist/settings/data/settings-db.d.ts +28 -0
  45. package/dist/settings/data/settings-db.d.ts.map +1 -1
  46. package/dist/settings/index.d.ts +2 -1
  47. package/dist/settings/index.d.ts.map +1 -1
  48. package/dist/settings/index.js.map +1 -1
  49. package/dist/settings/registry/system-settings-namespace.d.ts +9 -0
  50. package/dist/settings/registry/system-settings-namespace.d.ts.map +1 -1
  51. package/dist/settings/registry/system-settings-namespace.js +2 -0
  52. package/dist/settings/registry/system-settings-namespace.js.map +1 -1
  53. package/dist/settings/registry/user-settings-namespace.d.ts +9 -0
  54. package/dist/settings/registry/user-settings-namespace.d.ts.map +1 -1
  55. package/dist/settings/registry/user-settings-namespace.js +3 -0
  56. package/dist/settings/registry/user-settings-namespace.js.map +1 -1
  57. package/dist/settings/system-settings/system-settings.service.d.ts +7 -0
  58. package/dist/settings/system-settings/system-settings.service.d.ts.map +1 -1
  59. package/dist/settings/system-settings/system-settings.service.js +22 -4
  60. package/dist/settings/system-settings/system-settings.service.js.map +1 -1
  61. package/dist/settings/user-settings/user-settings.service.d.ts +9 -0
  62. package/dist/settings/user-settings/user-settings.service.d.ts.map +1 -1
  63. package/dist/settings/user-settings/user-settings.service.js +24 -4
  64. package/dist/settings/user-settings/user-settings.service.js.map +1 -1
  65. package/dist/settings/write-hooks.d.ts +53 -0
  66. package/dist/settings/write-hooks.d.ts.map +1 -0
  67. package/dist/settings/write-hooks.js +55 -0
  68. package/dist/settings/write-hooks.js.map +1 -0
  69. package/dist/storage/config/storage-config.module.d.ts.map +1 -1
  70. package/dist/storage/config/storage-config.module.js +10 -1
  71. package/dist/storage/config/storage-config.module.js.map +1 -1
  72. package/dist/storage/data/storage-db.d.ts +118 -1
  73. package/dist/storage/data/storage-db.d.ts.map +1 -1
  74. package/dist/storage/data/storage-db.js +25 -1
  75. package/dist/storage/data/storage-db.js.map +1 -1
  76. package/dist/storage/index.d.ts +5 -2
  77. package/dist/storage/index.d.ts.map +1 -1
  78. package/dist/storage/index.js +25 -1
  79. package/dist/storage/index.js.map +1 -1
  80. package/dist/storage/migration/copy-and-verify.d.ts +39 -0
  81. package/dist/storage/migration/copy-and-verify.d.ts.map +1 -0
  82. package/dist/storage/migration/copy-and-verify.js +94 -0
  83. package/dist/storage/migration/copy-and-verify.js.map +1 -0
  84. package/dist/storage/migration/dto/storage-migration.dto.d.ts +73 -0
  85. package/dist/storage/migration/dto/storage-migration.dto.d.ts.map +1 -0
  86. package/dist/storage/migration/dto/storage-migration.dto.js +34 -0
  87. package/dist/storage/migration/dto/storage-migration.dto.js.map +1 -0
  88. package/dist/storage/migration/index.d.ts +11 -0
  89. package/dist/storage/migration/index.d.ts.map +1 -0
  90. package/dist/storage/migration/index.js +27 -0
  91. package/dist/storage/migration/index.js.map +1 -0
  92. package/dist/storage/migration/storage-migrate-object.handler.d.ts +40 -0
  93. package/dist/storage/migration/storage-migrate-object.handler.d.ts.map +1 -0
  94. package/dist/storage/migration/storage-migrate-object.handler.js +177 -0
  95. package/dist/storage/migration/storage-migrate-object.handler.js.map +1 -0
  96. package/dist/storage/migration/storage-migrate-plan.handler.d.ts +34 -0
  97. package/dist/storage/migration/storage-migrate-plan.handler.d.ts.map +1 -0
  98. package/dist/storage/migration/storage-migrate-plan.handler.js +168 -0
  99. package/dist/storage/migration/storage-migrate-plan.handler.js.map +1 -0
  100. package/dist/storage/migration/storage-migration-settled.listener.d.ts +15 -0
  101. package/dist/storage/migration/storage-migration-settled.listener.d.ts.map +1 -0
  102. package/dist/storage/migration/storage-migration-settled.listener.js +87 -0
  103. package/dist/storage/migration/storage-migration-settled.listener.js.map +1 -0
  104. package/dist/storage/migration/storage-migration.constants.d.ts +69 -0
  105. package/dist/storage/migration/storage-migration.constants.d.ts.map +1 -0
  106. package/dist/storage/migration/storage-migration.constants.js +83 -0
  107. package/dist/storage/migration/storage-migration.constants.js.map +1 -0
  108. package/dist/storage/migration/storage-migration.controller.d.ts +26 -0
  109. package/dist/storage/migration/storage-migration.controller.d.ts.map +1 -0
  110. package/dist/storage/migration/storage-migration.controller.js +135 -0
  111. package/dist/storage/migration/storage-migration.controller.js.map +1 -0
  112. package/dist/storage/migration/storage-migration.service.d.ts +182 -0
  113. package/dist/storage/migration/storage-migration.service.d.ts.map +1 -0
  114. package/dist/storage/migration/storage-migration.service.js +444 -0
  115. package/dist/storage/migration/storage-migration.service.js.map +1 -0
  116. package/dist/storage/ports.d.ts +1 -1
  117. package/dist/storage/ports.d.ts.map +1 -1
  118. package/package.json +3 -3
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inboxDisabledEventKeys = inboxDisabledEventKeys;
4
+ exports.dismissibleEventKeys = dismissibleEventKeys;
5
+ exports.dismissEventsForUser = dismissEventsForUser;
6
+ exports.dismissEventsGlobally = dismissEventsGlobally;
7
+ const notification_events_1 = require("./notification-events");
8
+ const notification_preferences_1 = require("./notification-preferences");
9
+ // =============================================================================
10
+ // Dismiss-on-disable (issue #1090)
11
+ // =============================================================================
12
+ //
13
+ // Turning a notification event OFF means "stop showing me this", not "stop
14
+ // showing me this except for the eleven already there". For a STATE row it is
15
+ // the only way out at all: the reconcile that would drain the row to zero is
16
+ // now gated on the same preference, so the row would nag forever.
17
+ //
18
+ // Both functions below take the TRANSACTION CLIENT of the settings write and
19
+ // run inside it, so the settings change and the dismissal commit or roll back
20
+ // together. They are wired as the `onWrite` hooks of the `notifications`
21
+ // system and user settings namespaces (see `notifications.system-settings.ts`
22
+ // and `notifications.user-settings.ts`).
23
+ //
24
+ // RE-ENABLING DOES NOT RESTORE ANYTHING. A dismissed row stays dismissed; the
25
+ // producer raises a fresh one on its next occurrence.
26
+ //
27
+ // MANDATORY EVENTS ARE NEVER DISMISSED: a stored `false` for one is inert (see
28
+ // `isChannelEnabled`), and an audit-relevant inbox entry must outlive any
29
+ // toggle.
30
+ //
31
+ // Raw SQL on purpose: `updated_at` is anchored by the COUNTED rolling window
32
+ // and Prisma's `@updatedAt` is bypassed by raw statements, so it is set
33
+ // explicitly; `updateMany` would also not let one statement dismiss with
34
+ // `COALESCE(read_at, now())`.
35
+ // =============================================================================
36
+ /**
37
+ * The event keys a user has switched off for the in-app inbox (the `browser` channel), from their settings
38
+ * value AFTER a write: every event with a stored `false` that the resolver
39
+ * agrees is disabled, which excludes a mandatory event and any key the registry
40
+ * does not know.
41
+ *
42
+ * @param afterNamespace - the user's `notifications` namespace after the write (or `undefined`).
43
+ * @returns the event keys to dismiss.
44
+ *
45
+ * @stability experimental
46
+ */
47
+ function inboxDisabledEventKeys(afterNamespace) {
48
+ const preferences = (0, notification_preferences_1.readNotificationPreferences)({ notifications: afterNamespace });
49
+ const stored = preferences.browser ?? {};
50
+ const keys = [];
51
+ for (const eventKey of Object.keys(stored)) {
52
+ const event = (0, notification_events_1.findEvent)(eventKey);
53
+ if (event && !(0, notification_preferences_1.isChannelEnabled)(event, 'browser', preferences))
54
+ keys.push(eventKey);
55
+ }
56
+ return keys;
57
+ }
58
+ /**
59
+ * The non-mandatory event keys among `eventKeys`: what an admin may suppress
60
+ * deployment-wide.
61
+ *
62
+ * @param eventKeys - `notifications.disabledEvents` after the write.
63
+ * @returns the keys whose live rows should be dismissed.
64
+ *
65
+ * @stability experimental
66
+ */
67
+ function dismissibleEventKeys(eventKeys) {
68
+ return eventKeys.filter((eventKey) => (0, notification_events_1.findEvent)(eventKey)?.mandatory !== true);
69
+ }
70
+ /**
71
+ * Dismisses every live row of the given events for ONE user, inside `tx`.
72
+ *
73
+ * Idempotent: a row already dismissed is untouched, so repeating it (every
74
+ * save does) is a no-op and a stale row is healed by the next save.
75
+ *
76
+ * @param tx - the settings write's transaction client.
77
+ * @param userId - whose rows.
78
+ * @param eventKeys - the events that are now off for this user.
79
+ * @returns how many rows were dismissed.
80
+ *
81
+ * @stability experimental
82
+ */
83
+ async function dismissEventsForUser(tx, userId, eventKeys) {
84
+ if (eventKeys.length === 0)
85
+ return 0;
86
+ return tx.$executeRaw `
87
+ UPDATE notifications
88
+ SET dismissed_at = now(), read_at = COALESCE(read_at, now()), updated_at = now()
89
+ WHERE user_id = ${userId}::uuid AND event_key = ANY(${[...eventKeys]}::text[]) AND dismissed_at IS NULL`;
90
+ }
91
+ /**
92
+ * Dismisses every live row of the given events for EVERY user, inside `tx`
93
+ * (an admin added them to `notifications.disabledEvents`).
94
+ *
95
+ * @param tx - the settings write's transaction client.
96
+ * @param eventKeys - the (non-mandatory) events now suppressed deployment-wide.
97
+ * @returns how many rows were dismissed.
98
+ *
99
+ * @stability experimental
100
+ */
101
+ async function dismissEventsGlobally(tx, eventKeys) {
102
+ if (eventKeys.length === 0)
103
+ return 0;
104
+ return tx.$executeRaw `
105
+ UPDATE notifications
106
+ SET dismissed_at = now(), read_at = COALESCE(read_at, now()), updated_at = now()
107
+ WHERE event_key = ANY(${[...eventKeys]}::text[]) AND dismissed_at IS NULL`;
108
+ }
109
+ //# sourceMappingURL=notification-dismissal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-dismissal.js","sourceRoot":"","sources":["../../src/notifications/notification-dismissal.ts"],"names":[],"mappings":";;AA2CA,wDASC;AAWD,oDAEC;AAeD,oDAMC;AAYD,sDAMC;AAvGD,+DAAkD;AAClD,yEAA2F;AAE3F,gFAAgF;AAChF,mCAAmC;AACnC,gFAAgF;AAChF,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,kEAAkE;AAClE,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,yCAAyC;AACzC,EAAE;AACF,8EAA8E;AAC9E,sDAAsD;AACtD,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,UAAU;AACV,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,yEAAyE;AACzE,8BAA8B;AAC9B,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,SAAgB,sBAAsB,CAAC,cAAuB;IAC5D,MAAM,WAAW,GAAG,IAAA,sDAA2B,EAAC,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;IACzC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAA,+BAAS,EAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,CAAC,IAAA,2CAAgB,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAC,SAA4B;IAC/D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAA,+BAAS,EAAC,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,oBAAoB,CAAC,EAAmB,EAAE,MAAc,EAAE,SAA4B;IAC1G,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,WAAW,CAAA;;;sBAGD,MAAM,8BAA8B,CAAC,GAAG,SAAS,CAAC,oCAAoC,CAAC;AAC7G,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,qBAAqB,CAAC,EAAmB,EAAE,SAA4B;IAC3F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,WAAW,CAAA;;;4BAGK,CAAC,GAAG,SAAS,CAAC,oCAAoC,CAAC;AAC/E,CAAC"}
@@ -78,5 +78,17 @@ export declare class NotificationStoreService {
78
78
  * @throws NotFoundException when the id belongs to nobody, or to somebody else.
79
79
  */
80
80
  dismiss(userId: string, id: string): Promise<number>;
81
+ /**
82
+ * Dismiss every live notification of this user, optionally only those of one
83
+ * scope (issue #1090), and report how many were dismissed and the badge.
84
+ *
85
+ * Dismissal implies read, as for {@link dismiss}. `updated_at` is set
86
+ * explicitly: the raw statement bypasses Prisma's `@updatedAt`, and a COUNTED
87
+ * row's rolling window is anchored on it.
88
+ */
89
+ dismissAll(userId: string, scopeId?: string): Promise<{
90
+ dismissed: number;
91
+ unreadCount: number;
92
+ }>;
81
93
  }
82
94
  //# 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;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"}
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;IAsCpC;;;;;;;;;;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;IAiB1D;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAaxG"}
@@ -98,13 +98,19 @@ let NotificationStoreService = class NotificationStoreService {
98
98
  */
99
99
  async list(userId, query) {
100
100
  const { page, pageSize, unreadOnly } = query;
101
+ // `status` is the richer spelling; the older `unreadOnly` flag maps onto it.
102
+ const status = query.status ?? (unreadOnly ? 'unread' : 'all');
101
103
  // `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).
103
- const where = {
104
- userId,
105
- dismissedAt: null,
106
- ...(unreadOnly ? { readAt: null } : {}),
107
- };
104
+ // A dismissed row is "stop showing me this": listed only when asked for by
105
+ // `status=dismissed`, never by the other three (issue #1077, #1090).
106
+ const where = status === 'dismissed'
107
+ ? { userId, dismissedAt: { not: null } }
108
+ : {
109
+ userId,
110
+ dismissedAt: null,
111
+ ...(status === 'unread' ? { readAt: null } : {}),
112
+ ...(status === 'read' ? { readAt: { not: null } } : {}),
113
+ };
108
114
  const [items, total] = await this.prisma.$transaction([
109
115
  this.prisma.notification.findMany({
110
116
  where,
@@ -233,6 +239,26 @@ let NotificationStoreService = class NotificationStoreService {
233
239
  }
234
240
  return this.unreadCount(userId);
235
241
  }
242
+ /**
243
+ * Dismiss every live notification of this user, optionally only those of one
244
+ * scope (issue #1090), and report how many were dismissed and the badge.
245
+ *
246
+ * Dismissal implies read, as for {@link dismiss}. `updated_at` is set
247
+ * explicitly: the raw statement bypasses Prisma's `@updatedAt`, and a COUNTED
248
+ * row's rolling window is anchored on it.
249
+ */
250
+ async dismissAll(userId, scopeId) {
251
+ const dismissed = scopeId
252
+ ? await this.prisma.$executeRaw `
253
+ UPDATE notifications
254
+ SET dismissed_at = now(), read_at = COALESCE(read_at, now()), updated_at = now()
255
+ WHERE user_id = ${userId}::uuid AND scope_id = ${scopeId}::uuid AND dismissed_at IS NULL`
256
+ : await this.prisma.$executeRaw `
257
+ UPDATE notifications
258
+ SET dismissed_at = now(), read_at = COALESCE(read_at, now()), updated_at = now()
259
+ WHERE user_id = ${userId}::uuid AND dismissed_at IS NULL`;
260
+ return { dismissed, unreadCount: await this.unreadCount(userId) };
261
+ }
236
262
  };
237
263
  exports.NotificationStoreService = NotificationStoreService;
238
264
  exports.NotificationStoreService = NotificationStoreService = __decorate([
@@ -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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"}
@@ -1,5 +1,6 @@
1
1
  import { type OnModuleDestroy, type OnModuleInit } from '@nestjs/common';
2
2
  import { Observable } from 'rxjs';
3
+ import { type NotificationSyncReason } from '@marinoscar/platform-contract/notifications';
3
4
  import { NOTIFICATION_STREAM_BUS_CHANNEL, type NotificationsEventBus } from './ports';
4
5
  import type { NotificationsPrisma } from './data/notifications-db';
5
6
  /**
@@ -97,6 +98,14 @@ export interface NotificationStreamEvent {
97
98
  * @stability experimental
98
99
  */
99
100
  export declare const NOTIFICATION_SSE_EVENT = "notification";
101
+ /**
102
+ * SSE `event:` name of a `sync` frame (issue #1090): the user read, dismissed or
103
+ * deleted rows in one tab, so their other tabs refetch the list and the unread
104
+ * count. The frame's `data` is `{ reason }`; it carries no row.
105
+ *
106
+ * @stability experimental
107
+ */
108
+ export declare const NOTIFICATION_SSE_SYNC_EVENT = "sync";
100
109
  /**
101
110
  * How often an idle connection is sent a comment line.
102
111
  *
@@ -148,7 +157,7 @@ export { NOTIFICATION_STREAM_BUS_CHANNEL };
148
157
  *
149
158
  * @stability experimental
150
159
  */
151
- export type NotificationStreamBusMessage = NotificationStreamInlineMessage | NotificationStreamRefMessage;
160
+ export type NotificationStreamBusMessage = NotificationStreamInlineMessage | NotificationStreamRefMessage | NotificationStreamSyncMessage;
152
161
  /**
153
162
  * A bus message carrying the whole frame.
154
163
  *
@@ -177,8 +186,24 @@ export interface NotificationStreamRefMessage {
177
186
  toast: boolean;
178
187
  /** Whether this dispatch also sent Web Push. */
179
188
  pushed: boolean;
189
+ /** Why the frame was sent (issue #1090: preserved on the by-reference path). */
190
+ reason?: NotificationStreamEvent['reason'];
180
191
  };
181
192
  }
193
+ /**
194
+ * A bus message telling the user's tabs on other replicas to refetch (issue
195
+ * #1090): the `sync` frame. Carries no row.
196
+ *
197
+ * @stability experimental
198
+ */
199
+ export interface NotificationStreamSyncMessage {
200
+ /** The user whose tabs refetch. */
201
+ userId: string;
202
+ /** Always `true`; the discriminator against the two row-carrying shapes. */
203
+ sync: true;
204
+ /** Why it was sent. */
205
+ reason: NotificationSyncReason;
206
+ }
182
207
  /**
183
208
  * Validates a message received from the bus, or returns `null`.
184
209
  *
@@ -256,6 +281,20 @@ export declare class NotificationStreamService implements OnModuleInit, OnModule
256
281
  * it, and other replicas' deliveries are not (cannot be) counted.
257
282
  */
258
283
  publish(userId: string, event: NotificationStreamEvent): number;
284
+ /**
285
+ * Tell every tab this user has open, on every replica, to refetch the list
286
+ * and the unread count (the `sync` frame, issue #1090).
287
+ *
288
+ * Sent after the user reads, dismisses or deletes rows: their OTHER tabs hold
289
+ * a stale list, and the table (not a frame) is the truth, so the frame
290
+ * carries no row and the response to it is the same refetch a reconnect does.
291
+ * Never throws, like {@link publish}.
292
+ *
293
+ * @param userId - the AUTHENTICATED principal's id.
294
+ * @param reason - why; informational.
295
+ * @returns how many connections on THIS replica it was written to.
296
+ */
297
+ publishSync(userId: string, reason: NotificationSyncReason): number;
259
298
  /**
260
299
  * The full event when it fits in a bus envelope, a reference when it does
261
300
  * not. See "OVERSIZE EVENTS TRAVEL BY REFERENCE" in the header.
@@ -284,6 +323,8 @@ export declare class NotificationStreamService implements OnModuleInit, OnModule
284
323
  * of `publish`, and still the only code that touches a connection.
285
324
  */
286
325
  private deliverLocal;
326
+ /** Writes one `sync` frame into ONE user's bucket on THIS replica. */
327
+ private deliverSyncLocal;
287
328
  /**
288
329
  * Number of open connections for a user. Diagnostics and tests only.
289
330
  */
@@ -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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"}
@@ -13,10 +13,11 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  var NotificationStreamService_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.NotificationStreamService = exports.NOTIFICATION_STREAM_BUS_CHANNEL = exports.HEARTBEAT_INTERVAL_MS = exports.NOTIFICATION_SSE_EVENT = void 0;
16
+ exports.NotificationStreamService = exports.NOTIFICATION_STREAM_BUS_CHANNEL = exports.HEARTBEAT_INTERVAL_MS = exports.NOTIFICATION_SSE_SYNC_EVENT = exports.NOTIFICATION_SSE_EVENT = void 0;
17
17
  exports.parseNotificationStreamBusMessage = parseNotificationStreamBusMessage;
18
18
  const common_1 = require("@nestjs/common");
19
19
  const rxjs_1 = require("rxjs");
20
+ const notifications_1 = require("@marinoscar/platform-contract/notifications");
20
21
  const ports_1 = require("./ports");
21
22
  Object.defineProperty(exports, "NOTIFICATION_STREAM_BUS_CHANNEL", { enumerable: true, get: function () { return ports_1.NOTIFICATION_STREAM_BUS_CHANNEL; } });
22
23
  const index_1 = require("../core/index");
@@ -32,6 +33,14 @@ const index_1 = require("../core/index");
32
33
  * @stability experimental
33
34
  */
34
35
  exports.NOTIFICATION_SSE_EVENT = 'notification';
36
+ /**
37
+ * SSE `event:` name of a `sync` frame (issue #1090): the user read, dismissed or
38
+ * deleted rows in one tab, so their other tabs refetch the list and the unread
39
+ * count. The frame's `data` is `{ reason }`; it carries no row.
40
+ *
41
+ * @stability experimental
42
+ */
43
+ exports.NOTIFICATION_SSE_SYNC_EVENT = 'sync';
35
44
  /**
36
45
  * How often an idle connection is sent a comment line.
37
46
  *
@@ -65,6 +74,12 @@ const HEARTBEAT_COMMENT = 'heartbeat';
65
74
  function isNonEmptyString(value) {
66
75
  return typeof value === 'string' && value !== '';
67
76
  }
77
+ function isSyncReason(value) {
78
+ return typeof value === 'string' && notifications_1.NOTIFICATION_SYNC_REASONS.includes(value);
79
+ }
80
+ function isStreamReason(value) {
81
+ return typeof value === 'string' && notifications_1.NOTIFICATION_STREAM_REASONS.includes(value);
82
+ }
68
83
  function isStreamEvent(value) {
69
84
  if (typeof value !== 'object' || value === null)
70
85
  return false;
@@ -93,6 +108,11 @@ function parseNotificationStreamBusMessage(raw) {
93
108
  const message = raw;
94
109
  if (!isNonEmptyString(message.userId))
95
110
  return null;
111
+ if ('sync' in message) {
112
+ return message.sync === true && isSyncReason(message.reason)
113
+ ? { userId: message.userId, sync: true, reason: message.reason }
114
+ : null;
115
+ }
96
116
  if ('event' in message) {
97
117
  return isStreamEvent(message.event) ? { userId: message.userId, event: message.event } : null;
98
118
  }
@@ -104,7 +124,12 @@ function parseNotificationStreamBusMessage(raw) {
104
124
  typeof ref.pushed === 'boolean') {
105
125
  return {
106
126
  userId: message.userId,
107
- ref: { notificationId: ref.notificationId, toast: ref.toast, pushed: ref.pushed },
127
+ ref: {
128
+ notificationId: ref.notificationId,
129
+ toast: ref.toast,
130
+ pushed: ref.pushed,
131
+ ...(isStreamReason(ref.reason) ? { reason: ref.reason } : {}),
132
+ },
108
133
  };
109
134
  }
110
135
  return null;
@@ -253,6 +278,27 @@ let NotificationStreamService = NotificationStreamService_1 = class Notification
253
278
  }
254
279
  return delivered;
255
280
  }
281
+ /**
282
+ * Tell every tab this user has open, on every replica, to refetch the list
283
+ * and the unread count (the `sync` frame, issue #1090).
284
+ *
285
+ * Sent after the user reads, dismisses or deletes rows: their OTHER tabs hold
286
+ * a stale list, and the table (not a frame) is the truth, so the frame
287
+ * carries no row and the response to it is the same refetch a reconnect does.
288
+ * Never throws, like {@link publish}.
289
+ *
290
+ * @param userId - the AUTHENTICATED principal's id.
291
+ * @param reason - why; informational.
292
+ * @returns how many connections on THIS replica it was written to.
293
+ */
294
+ publishSync(userId, reason) {
295
+ const delivered = this.deliverSyncLocal(userId, reason);
296
+ if (this.bus) {
297
+ const message = { userId, sync: true, reason };
298
+ void this.bus.publish(ports_1.NOTIFICATION_STREAM_BUS_CHANNEL, message);
299
+ }
300
+ return delivered;
301
+ }
256
302
  /**
257
303
  * The full event when it fits in a bus envelope, a reference when it does
258
304
  * not. See "OVERSIZE EVENTS TRAVEL BY REFERENCE" in the header.
@@ -261,7 +307,15 @@ let NotificationStreamService = NotificationStreamService_1 = class Notification
261
307
  const full = { userId, event };
262
308
  if (!this.exceedsInlineLimit(full))
263
309
  return full;
264
- return { userId, ref: { notificationId: event.id, toast: event.toast, pushed: event.pushed } };
310
+ return {
311
+ userId,
312
+ ref: {
313
+ notificationId: event.id,
314
+ toast: event.toast,
315
+ pushed: event.pushed,
316
+ ...(event.reason ? { reason: event.reason } : {}),
317
+ },
318
+ };
265
319
  }
266
320
  /**
267
321
  * Another replica's event. Our own (`meta.local`) was already delivered by
@@ -289,6 +343,10 @@ let NotificationStreamService = NotificationStreamService_1 = class Notification
289
343
  this.logger.warn(`Dropping a malformed "${ports_1.NOTIFICATION_STREAM_BUS_CHANNEL}" message from the event bus.`);
290
344
  return;
291
345
  }
346
+ if ('sync' in message) {
347
+ this.deliverSyncLocal(message.userId, message.reason);
348
+ return;
349
+ }
292
350
  if ('event' in message) {
293
351
  this.deliverLocal(message.userId, message.event);
294
352
  return;
@@ -313,10 +371,24 @@ let NotificationStreamService = NotificationStreamService_1 = class Notification
313
371
  try {
314
372
  const row = await this.prisma.notification.findFirst({
315
373
  where: { id: ref.notificationId, userId },
316
- select: { id: true, eventKey: true, title: true, body: true, link: true, createdAt: true },
374
+ select: {
375
+ id: true,
376
+ eventKey: true,
377
+ title: true,
378
+ body: true,
379
+ link: true,
380
+ createdAt: true,
381
+ updatedAt: true,
382
+ scopeId: true,
383
+ data: true,
384
+ },
317
385
  });
318
386
  if (!row)
319
387
  return null;
388
+ // The by-reference path rebuilds the SAME frame the inline path would
389
+ // have carried (issue #1090): `count`, `scopeId` and `updatedAt` come
390
+ // from the row, `reason` from the reference.
391
+ const count = row.data?.count;
320
392
  return {
321
393
  id: row.id,
322
394
  eventKey: row.eventKey,
@@ -326,6 +398,10 @@ let NotificationStreamService = NotificationStreamService_1 = class Notification
326
398
  createdAt: row.createdAt.toISOString(),
327
399
  toast: ref.toast,
328
400
  pushed: ref.pushed,
401
+ ...(typeof count === 'number' ? { count } : {}),
402
+ ...(row.scopeId ? { scopeId: row.scopeId } : {}),
403
+ ...(row.updatedAt ? { updatedAt: row.updatedAt.toISOString() } : {}),
404
+ ...(ref.reason ? { reason: ref.reason } : {}),
329
405
  };
330
406
  }
331
407
  catch (err) {
@@ -357,6 +433,23 @@ let NotificationStreamService = NotificationStreamService_1 = class Notification
357
433
  }
358
434
  return delivered;
359
435
  }
436
+ /** Writes one `sync` frame into ONE user's bucket on THIS replica. */
437
+ deliverSyncLocal(userId, reason) {
438
+ const bucket = this.subscribers.get(userId);
439
+ if (!bucket || bucket.size === 0)
440
+ return 0;
441
+ let delivered = 0;
442
+ for (const observer of bucket) {
443
+ try {
444
+ observer.next({ type: exports.NOTIFICATION_SSE_SYNC_EVENT, data: { reason } });
445
+ delivered += 1;
446
+ }
447
+ catch (err) {
448
+ this.logger.debug(`Dropping a sync write for user ${userId}: ${err instanceof Error ? err.message : 'unknown error'}`);
449
+ }
450
+ }
451
+ return delivered;
452
+ }
360
453
  /**
361
454
  * Number of open connections for a user. Diagnostics and tests only.
362
455
  */
@@ -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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"}
@@ -7,7 +7,7 @@ import { NotificationStoreService } from './notification-store.service';
7
7
  import { PushSubscriptionService } from './push-subscription.service';
8
8
  import { type NotificationConfigResponse } from './dto/notification-config.dto';
9
9
  import { type NotificationEventResponse } from './dto/notification-event.dto';
10
- import { NotificationListQueryDto, type NotificationListResponse, type UnreadCountResponse } from './dto/notification.dto';
10
+ import { NotificationListQueryDto, type DismissAllResult, type NotificationListResponse, type UnreadCountResponse } from './dto/notification.dto';
11
11
  import { PushSubscribeDto, PushUnsubscribeDto, type PushSubscriptionResponse } from './dto/push-subscription.dto';
12
12
  /**
13
13
  * 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.
@@ -127,6 +127,7 @@ export declare class NotificationsController {
127
127
  markRead(userId: string, id: string): Promise<UnreadCountResponse>;
128
128
  dismiss(userId: string, id: string): Promise<UnreadCountResponse>;
129
129
  markAllRead(userId: string): Promise<UnreadCountResponse>;
130
+ dismissAll(userId: string, body?: unknown): Promise<DismissAllResult>;
130
131
  subscribePush(userId: string, dto: PushSubscribeDto, userAgent: string | undefined): Promise<PushSubscriptionResponse>;
131
132
  /**
132
133
  * `DELETE` with a JSON body — unusual in this codebase's other `DELETE`
@@ -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;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"}
1
+ {"version":3,"file":"notifications.controller.d.ts","sourceRoot":"","sources":["../../src/notifications/notifications.controller.ts"],"names":[],"mappings":"AAyBA,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,EAKL,wBAAwB,EAExB,KAAK,gBAAgB,EACrB,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;IAkD3D,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;IAoBzB,OAAO,CACQ,MAAM,EAAE,MAAM,EACL,EAAE,EAAE,MAAM,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAqBzB,WAAW,CACI,MAAM,EAAE,MAAM,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAoBzB,UAAU,CACK,MAAM,EAAE,MAAM,EAGzB,IAAI,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,gBAAgB,CAAC;IAwCtB,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"}