@marinoscar/platform-api 0.1.0-next.22 → 0.1.0-next.24
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.
- package/CHANGELOG.md +25 -0
- package/dist/core/data-access/access-reason.registry.d.ts +4 -1
- package/dist/core/data-access/access-reason.registry.d.ts.map +1 -1
- package/dist/core/data-access/access-reason.registry.js +5 -0
- package/dist/core/data-access/access-reason.registry.js.map +1 -1
- package/dist/core/testing/vocabulary-conformance.js +2 -2
- package/dist/core/testing/vocabulary-conformance.js.map +1 -1
- package/dist/notifications/channels/browser-notification.channel.d.ts +11 -0
- package/dist/notifications/channels/browser-notification.channel.d.ts.map +1 -1
- package/dist/notifications/channels/browser-notification.channel.js +71 -48
- package/dist/notifications/channels/browser-notification.channel.js.map +1 -1
- package/dist/notifications/data/notifications-db.d.ts +19 -0
- package/dist/notifications/data/notifications-db.d.ts.map +1 -1
- package/dist/notifications/dto/notification.dto.d.ts +4 -0
- package/dist/notifications/dto/notification.dto.d.ts.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/notification-inbox-writer.d.ts +112 -0
- package/dist/notifications/notification-inbox-writer.d.ts.map +1 -0
- package/dist/notifications/notification-inbox-writer.js +217 -0
- package/dist/notifications/notification-inbox-writer.js.map +1 -0
- package/dist/notifications/notification-store.service.d.ts +10 -0
- package/dist/notifications/notification-store.service.d.ts.map +1 -1
- package/dist/notifications/notification-store.service.js +55 -10
- package/dist/notifications/notification-store.service.js.map +1 -1
- package/dist/notifications/notification-stream.service.d.ts +8 -0
- package/dist/notifications/notification-stream.service.d.ts.map +1 -1
- package/dist/notifications/notification-stream.service.js.map +1 -1
- package/dist/notifications/notification.types.d.ts +74 -0
- package/dist/notifications/notification.types.d.ts.map +1 -1
- package/dist/notifications/notification.types.js.map +1 -1
- package/dist/notifications/notifications.controller.d.ts +1 -0
- package/dist/notifications/notifications.controller.d.ts.map +1 -1
- package/dist/notifications/notifications.controller.js +23 -0
- package/dist/notifications/notifications.controller.js.map +1 -1
- package/dist/notifications/notifications.service.d.ts +56 -1
- package/dist/notifications/notifications.service.d.ts.map +1 -1
- package/dist/notifications/notifications.service.js +122 -0
- package/dist/notifications/notifications.service.js.map +1 -1
- package/dist/notifications/registry/event.registry.d.ts +15 -0
- package/dist/notifications/registry/event.registry.d.ts.map +1 -1
- package/dist/notifications/registry/event.registry.js +3 -0
- package/dist/notifications/registry/event.registry.js.map +1 -1
- package/dist/notifications/retention/notification-inbox-purge.handler.d.ts.map +1 -1
- package/dist/notifications/retention/notification-inbox-purge.handler.js +16 -4
- package/dist/notifications/retention/notification-inbox-purge.handler.js.map +1 -1
- package/dist/notifications/testing/index.d.ts +2 -0
- package/dist/notifications/testing/index.d.ts.map +1 -1
- package/dist/notifications/testing/index.js +5 -1
- package/dist/notifications/testing/index.js.map +1 -1
- package/dist/sharing/events.d.ts +23 -0
- package/dist/sharing/events.d.ts.map +1 -1
- package/dist/sharing/events.js +1 -0
- package/dist/sharing/events.js.map +1 -1
- package/dist/sharing/groups/group-common.d.ts +1 -1
- package/dist/sharing/groups/group-common.d.ts.map +1 -1
- package/dist/sharing/groups/group-common.js.map +1 -1
- package/dist/sharing/groups/group-invites.service.d.ts +77 -2
- package/dist/sharing/groups/group-invites.service.d.ts.map +1 -1
- package/dist/sharing/groups/group-invites.service.js +181 -0
- package/dist/sharing/groups/group-invites.service.js.map +1 -1
- package/dist/sharing/groups/invite-auto-accept.listener.d.ts +37 -0
- package/dist/sharing/groups/invite-auto-accept.listener.d.ts.map +1 -0
- package/dist/sharing/groups/invite-auto-accept.listener.js +115 -0
- package/dist/sharing/groups/invite-auto-accept.listener.js.map +1 -0
- package/dist/sharing/index.d.ts +5 -3
- package/dist/sharing/index.d.ts.map +1 -1
- package/dist/sharing/index.js +6 -3
- package/dist/sharing/index.js.map +1 -1
- package/dist/sharing/metrics.d.ts +1 -1
- package/dist/sharing/metrics.d.ts.map +1 -1
- package/dist/sharing/metrics.js +1 -0
- package/dist/sharing/metrics.js.map +1 -1
- package/dist/sharing/ports.d.ts +3 -2
- package/dist/sharing/ports.d.ts.map +1 -1
- package/dist/sharing/ports.js.map +1 -1
- package/dist/sharing/sharing.module.d.ts.map +1 -1
- package/dist/sharing/sharing.module.js +3 -0
- package/dist/sharing/sharing.module.js.map +1 -1
- package/dist/sharing/sharing.options.d.ts +39 -5
- package/dist/sharing/sharing.options.d.ts.map +1 -1
- package/dist/sharing/sharing.options.js +17 -8
- package/dist/sharing/sharing.options.js.map +1 -1
- package/dist/storage/config/storage-config.service.d.ts +24 -0
- package/dist/storage/config/storage-config.service.d.ts.map +1 -1
- package/dist/storage/config/storage-config.service.js +31 -5
- package/dist/storage/config/storage-config.service.js.map +1 -1
- package/dist/storage/handlers/storage-cleanup.handler.d.ts +3 -1
- package/dist/storage/handlers/storage-cleanup.handler.d.ts.map +1 -1
- package/dist/storage/handlers/storage-cleanup.handler.js +10 -3
- package/dist/storage/handlers/storage-cleanup.handler.js.map +1 -1
- package/dist/storage/index.d.ts +5 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +12 -3
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/objects/dto/get-part-urls.dto.d.ts +26 -0
- package/dist/storage/objects/dto/get-part-urls.dto.d.ts.map +1 -0
- package/dist/storage/objects/dto/get-part-urls.dto.js +25 -0
- package/dist/storage/objects/dto/get-part-urls.dto.js.map +1 -0
- package/dist/storage/objects/dto/init-upload.dto.d.ts +2 -1
- package/dist/storage/objects/dto/init-upload.dto.d.ts.map +1 -1
- package/dist/storage/objects/objects.controller.d.ts +13 -1
- package/dist/storage/objects/objects.controller.d.ts.map +1 -1
- package/dist/storage/objects/objects.controller.js +88 -1
- package/dist/storage/objects/objects.controller.js.map +1 -1
- package/dist/storage/objects/objects.service.d.ts +46 -1
- package/dist/storage/objects/objects.service.d.ts.map +1 -1
- package/dist/storage/objects/objects.service.js +277 -23
- package/dist/storage/objects/objects.service.js.map +1 -1
- package/dist/storage/objects/part-body-parser.d.ts +30 -0
- package/dist/storage/objects/part-body-parser.d.ts.map +1 -0
- package/dist/storage/objects/part-body-parser.js +45 -0
- package/dist/storage/objects/part-body-parser.js.map +1 -0
- package/dist/storage/objects/part-body.d.ts +23 -0
- package/dist/storage/objects/part-body.d.ts.map +1 -0
- package/dist/storage/objects/part-body.js +48 -0
- package/dist/storage/objects/part-body.js.map +1 -0
- package/dist/storage/processing/object-processing.service.d.ts +4 -1
- package/dist/storage/processing/object-processing.service.d.ts.map +1 -1
- package/dist/storage/processing/object-processing.service.js +11 -3
- package/dist/storage/processing/object-processing.service.js.map +1 -1
- package/dist/storage/profile-image/avatar.service.d.ts +3 -1
- package/dist/storage/profile-image/avatar.service.d.ts.map +1 -1
- package/dist/storage/profile-image/avatar.service.js +8 -3
- package/dist/storage/profile-image/avatar.service.js.map +1 -1
- package/dist/storage/profile-image/profile-image.service.d.ts +4 -1
- package/dist/storage/profile-image/profile-image.service.d.ts.map +1 -1
- package/dist/storage/profile-image/profile-image.service.js +11 -5
- package/dist/storage/profile-image/profile-image.service.js.map +1 -1
- package/dist/storage/providers/index.d.ts +3 -1
- package/dist/storage/providers/index.d.ts.map +1 -1
- package/dist/storage/providers/index.js +8 -1
- package/dist/storage/providers/index.js.map +1 -1
- package/dist/storage/providers/resolving-storage.provider.d.ts +11 -0
- package/dist/storage/providers/resolving-storage.provider.d.ts.map +1 -1
- package/dist/storage/providers/resolving-storage.provider.js +13 -0
- package/dist/storage/providers/resolving-storage.provider.js.map +1 -1
- package/dist/storage/providers/s3/s3-storage.provider.d.ts +9 -1
- package/dist/storage/providers/s3/s3-storage.provider.d.ts.map +1 -1
- package/dist/storage/providers/s3/s3-storage.provider.js +37 -0
- package/dist/storage/providers/s3/s3-storage.provider.js.map +1 -1
- package/dist/storage/providers/storage-provider-router.d.ts +64 -0
- package/dist/storage/providers/storage-provider-router.d.ts.map +1 -0
- package/dist/storage/providers/storage-provider-router.js +161 -0
- package/dist/storage/providers/storage-provider-router.js.map +1 -0
- package/dist/storage/providers/storage-provider.interface.d.ts +34 -1
- package/dist/storage/providers/storage-provider.interface.d.ts.map +1 -1
- package/dist/storage/providers/storage-provider.interface.js.map +1 -1
- package/dist/storage/providers/storage-provider.types.d.ts +86 -0
- package/dist/storage/providers/storage-provider.types.d.ts.map +1 -1
- package/dist/storage/providers/storage-provider.types.js +78 -0
- package/dist/storage/providers/storage-provider.types.js.map +1 -1
- package/dist/storage/providers/storage-providers.module.d.ts.map +1 -1
- package/dist/storage/providers/storage-providers.module.js +3 -1
- package/dist/storage/providers/storage-providers.module.js.map +1 -1
- package/dist/storage/testing/conformance.d.ts +12 -0
- package/dist/storage/testing/conformance.d.ts.map +1 -1
- package/dist/storage/testing/conformance.js +112 -0
- package/dist/storage/testing/conformance.js.map +1 -1
- package/dist/storage/testing/driver-conformance.d.ts +13 -1
- package/dist/storage/testing/driver-conformance.d.ts.map +1 -1
- package/dist/storage/testing/driver-conformance.js +134 -0
- package/dist/storage/testing/driver-conformance.js.map +1 -1
- package/dist/storage/testing/index.d.ts +1 -1
- package/dist/storage/testing/index.d.ts.map +1 -1
- package/dist/storage/testing/index.js +2 -1
- package/dist/storage/testing/index.js.map +1 -1
- package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @marinoscar/platform-api
|
|
2
2
|
|
|
3
|
+
## 0.1.0-next.24
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e86f35f: Sharing: `groups.autoAcceptInvitesOnSignup` is real (#1078). The new `InviteAutoAcceptListener` (registered only when an option is on) claims a person's open, unexpired group invites from identity's `identity.user.created` event, and with the new `groups.autoAcceptInvitesOnSignIn` from every `identity.login.succeeded`. `GroupInvitesService.claimPendingForEmail(userId, email, { orgId? })` and `claimPendingForUser(userId)` do the work: the user must exist, be active and own the address; each invite is claimed in its own organization and transaction (a failing one never blocks the others or the sign-in); a new member gets the invite's role and an existing member is merged by the new `groups.inviteRoleMerge` (`upgrade-only` default, `replace`, `keep`). New event `sharing.group.invite_auto_accepted` (`GroupInviteAutoAcceptedPayload`), audit action `group:invite_auto_accepted`, metric op `invite_auto_accept`, span `sharing.invites.auto_accept`. New `SystemAccessReason` `invite-claim` (the cross-organization lookup of the open invites addressed to one user's own address; also a `SharingSystemReason`): an app whose `SharingDataPort.runAsSystem` passes reasons through needs no change. The startup "no effect" warning is gone.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- @marinoscar/platform-contract@0.1.0-next.24
|
|
12
|
+
- @marinoscar/platform-ai-providers@0.1.0-next.24
|
|
13
|
+
|
|
14
|
+
## 0.1.0-next.23
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- d8777d8: Add STATE and COUNTED inbox notifications (#1077). `NotificationsService.notifyState` keeps ONE live inbox row per user, event and scope, refreshed in place and dismissed when its count drains to zero; `notifyCounted` folds repeated occurrences into one row whose `data.count` grows, optionally inside a rolling window and partitioned by a match object. Both serialize on a transaction-scoped advisory lock, and the database backs them with the partial unique index `notifications_live_dedup_uniq_idx`. Platform migration `0041_notifications_state_counted` adds `data`, `scope_id`, `dismissed_at`, `updated_at` and `dedup_key` to `notifications` (all additive). The inbox gains a Dismiss action (`POST /api/notifications/:id/dismiss`), list and unread count exclude dismissed rows, the wire shape gains `count`, `scopeId`, `dismissedAt` and `updatedAt`, and the retention sweep removes read and dismissed rows by age while STATE and COUNTED rows that are unread are never purged by age. Plain `notify()` is unchanged.
|
|
19
|
+
- 513fa33: Storage: per-row provider routing and the resumable-upload seams. `StorageProviderRouter` resolves the provider recorded on a row (`storage_provider` + `bucket`) instead of the active one, built from `StorageConfigService.resolveDriver(id)` (a non-active driver's settings and secrets), so an administrator who switches drivers can still download, delete, process and finish every object written before the switch; the objects API, post-upload processing, avatars and the stale-upload sweep use it. `StorageProvider` gains optional `partUploadMode` (`presigned` | `proxied`), `uploadPart` and `listUploadedParts` (`S3StorageProvider` implements `ListParts`). New routes: `POST /api/storage/objects/:id/upload/part-urls` (more part URLs, at most 100 per call) and `PUT /api/storage/objects/:id/upload/parts/:partNumber` (an API-proxied part for a driver with no presigned URLs: streamed, never buffered, bounded to the exact part size, S3-style empty body and quoted `ETag`; call `registerStoragePartBodyParser` in `main.ts`). `upload/init` also returns `partUploadAuth` (`none` | `bearer`); upload status reports the parts the backend holds; `complete` answers `409 UPLOAD_PARTS_MISSING` (`details.partNumbers`) or `409 UPLOAD_SESSION_INVALID` instead of a `500` or a silently partial object. Refusals carry `details.reason` (`UPLOAD_NOT_ACTIVE`, `PART_OUT_OF_RANGE`, `PART_SIZE_MISMATCH`, `PRESIGNED_PARTS_REQUIRED`, `RAW_BODY_REQUIRED`). The driver kit gains `multipartList` and `proxiedPart` scenarios and `storageConformanceSuite` a `storage-routing` case. Contract: `partUploadAuth`, `getPartUrlsSchema` / `getPartUrlsResponseSchema`, `UPLOAD_ERROR_REASONS`. Web: `StorageObjectsClient.partUrls`. Copy-only migration between providers is a follow-up.
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies [d8777d8]
|
|
24
|
+
- Updated dependencies [513fa33]
|
|
25
|
+
- @marinoscar/platform-contract@0.1.0-next.23
|
|
26
|
+
- @marinoscar/platform-ai-providers@0.1.0-next.23
|
|
27
|
+
|
|
3
28
|
## 0.1.0-next.22
|
|
4
29
|
|
|
5
30
|
### Minor Changes
|
|
@@ -13,10 +13,13 @@ import { type Registry } from '../registry/registry';
|
|
|
13
13
|
* - `link-resolution`: resolving a link-share token: ONE row of `grants`, by
|
|
14
14
|
* its unique token hash, before any organization is known.
|
|
15
15
|
* - `export`: the data-export sources and the export file lookups.
|
|
16
|
+
* - `invite-claim`: finding the open group invites addressed to ONE user's own
|
|
17
|
+
* verified e-mail address across organizations, before any organization is
|
|
18
|
+
* known (each claim then runs in its invite's organization).
|
|
16
19
|
*
|
|
17
20
|
* @stability experimental
|
|
18
21
|
*/
|
|
19
|
-
export declare const BUILTIN_SYSTEM_ACCESS_REASONS: readonly ["backup", "restore", "purge", "doctor", "retention", "admin-aggregate", "migration-tooling", "link-resolution", "export"];
|
|
22
|
+
export declare const BUILTIN_SYSTEM_ACCESS_REASONS: readonly ["backup", "restore", "purge", "doctor", "retention", "admin-aggregate", "migration-tooling", "link-resolution", "export", "invite-claim"];
|
|
20
23
|
/**
|
|
21
24
|
* One of the platform's own access reasons. See {@link BUILTIN_SYSTEM_ACCESS_REASONS}.
|
|
22
25
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-reason.registry.d.ts","sourceRoot":"","sources":["../../../src/core/data-access/access-reason.registry.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErE
|
|
1
|
+
{"version":3,"file":"access-reason.registry.d.ts","sourceRoot":"","sources":["../../../src/core/data-access/access-reason.registry.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,6BAA6B,qJAW/B,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,QAA2B,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,+GAA+G;IAC/G,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,qBAAqB,CASrE,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAE9E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEpE"}
|
|
@@ -41,6 +41,9 @@ const registry_1 = require("../registry/registry");
|
|
|
41
41
|
* - `link-resolution`: resolving a link-share token: ONE row of `grants`, by
|
|
42
42
|
* its unique token hash, before any organization is known.
|
|
43
43
|
* - `export`: the data-export sources and the export file lookups.
|
|
44
|
+
* - `invite-claim`: finding the open group invites addressed to ONE user's own
|
|
45
|
+
* verified e-mail address across organizations, before any organization is
|
|
46
|
+
* known (each claim then runs in its invite's organization).
|
|
44
47
|
*
|
|
45
48
|
* @stability experimental
|
|
46
49
|
*/
|
|
@@ -54,6 +57,7 @@ exports.BUILTIN_SYSTEM_ACCESS_REASONS = Object.freeze([
|
|
|
54
57
|
'migration-tooling',
|
|
55
58
|
'link-resolution',
|
|
56
59
|
'export',
|
|
60
|
+
'invite-claim',
|
|
57
61
|
]);
|
|
58
62
|
/**
|
|
59
63
|
* The pattern every access reason id matches: lower-case, 3 to 48 characters,
|
|
@@ -129,6 +133,7 @@ const BUILTIN_DESCRIPTIONS = {
|
|
|
129
133
|
'migration-tooling': 'Seeds and migration helpers.',
|
|
130
134
|
'link-resolution': 'Resolving a link-share token: one grants row, by its unique token hash, before any organization is known.',
|
|
131
135
|
export: 'The data-export sources and the export file lookups.',
|
|
136
|
+
'invite-claim': 'Finding the open group invites addressed to one user\'s own verified e-mail address across organizations; each claim then runs in its invite\'s organization.',
|
|
132
137
|
};
|
|
133
138
|
for (const id of exports.BUILTIN_SYSTEM_ACCESS_REASONS) {
|
|
134
139
|
registerSystemAccessReason({ id, description: BUILTIN_DESCRIPTIONS[id] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-reason.registry.js","sourceRoot":"","sources":["../../../src/core/data-access/access-reason.registry.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAChF,EAAE;AACF,kEAAkE;AAClE,gFAAgF;AAChF,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,gBAAgB;AAChB,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AACjF,4EAA4E;AAC5E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,qCAAqC;AACrC,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;
|
|
1
|
+
{"version":3,"file":"access-reason.registry.js","sourceRoot":"","sources":["../../../src/core/data-access/access-reason.registry.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAChF,EAAE;AACF,kEAAkE;AAClE,gFAAgF;AAChF,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,gBAAgB;AAChB,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AACjF,4EAA4E;AAC5E,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,qCAAqC;AACrC,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAmHhF,gEAEC;AAUD,oDAEC;AA/HD,mDAAqE;AAErE;;;;;;;;;;;;;;;;;;;GAmBG;AACU,QAAA,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IACzD,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,QAAQ;IACR,cAAc;CACN,CAAC,CAAC;AASZ;;;;;GAKG;AACU,QAAA,+BAA+B,GAAG,wBAAwB,CAAC;AAqBxE;;;;;;;GAOG;AACU,QAAA,0BAA0B,GAAoC,IAAA,yBAAc,EAAwB;IAC/G,IAAI,EAAE,4BAA4B;IAClC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE;IAC3B,SAAS,EAAE,uCAA+B;IAC1C,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;QACnB,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,EAAE,2CAA2C,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,0BAA0B,CAAC,MAA6B;IACtE,kCAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,kCAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,oBAAoB,GAAwD;IAChF,MAAM,EAAE,oBAAoB;IAC5B,OAAO,EAAE,gCAAgC;IACzC,KAAK,EAAE,6EAA6E;IACpF,MAAM,EAAE,+DAA+D;IACvE,SAAS,EAAE,+BAA+B;IAC1C,iBAAiB,EAAE,4GAA4G;IAC/H,mBAAmB,EAAE,8BAA8B;IACnD,iBAAiB,EAAE,2GAA2G;IAC9H,MAAM,EAAE,sDAAsD;IAC9D,cAAc,EAAE,+JAA+J;CAChL,CAAC;AAEF,KAAK,MAAM,EAAE,IAAI,qCAA6B,EAAE,CAAC;IAC/C,0BAA0B,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// what the enforcement relies on:
|
|
10
10
|
//
|
|
11
11
|
// access reasons every id matches the pattern and has a description; the
|
|
12
|
-
//
|
|
12
|
+
// built-ins are registered and unchanged; an
|
|
13
13
|
// unregistered, empty, non-string or prototype-named reason
|
|
14
14
|
// is REFUSED by the bypass entry points (`systemScopeExtension`,
|
|
15
15
|
// `runAsSystem`); a registered one is accepted
|
|
@@ -65,7 +65,7 @@ const NO_DATABASE_CLIENT = {
|
|
|
65
65
|
function describeVocabularyConformance(harness, options = {}) {
|
|
66
66
|
const { describe, it, expect } = harness;
|
|
67
67
|
describe('system access reasons', () => {
|
|
68
|
-
it('registers the
|
|
68
|
+
it('registers the built-in reasons first, in order', () => {
|
|
69
69
|
expect(access_reason_registry_1.systemAccessReasonRegistry.ids().slice(0, access_reason_registry_1.BUILTIN_SYSTEM_ACCESS_REASONS.length)).toEqual([...access_reason_registry_1.BUILTIN_SYSTEM_ACCESS_REASONS]);
|
|
70
70
|
});
|
|
71
71
|
it('gives every reason a well-formed id and a description', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocabulary-conformance.js","sourceRoot":"","sources":["../../../src/core/testing/vocabulary-conformance.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,6CAA6C;AAC7C,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,kCAAkC;AAClC,EAAE;AACF,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"vocabulary-conformance.js","sourceRoot":"","sources":["../../../src/core/testing/vocabulary-conformance.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare class BrowserNotificationChannel implements NotificationChannelSe
|
|
|
13
13
|
private readonly stream;
|
|
14
14
|
readonly channel: NotificationChannel;
|
|
15
15
|
private readonly logger;
|
|
16
|
+
private readonly writer;
|
|
16
17
|
constructor(prisma: NotificationsPrisma, stream: NotificationStreamService);
|
|
17
18
|
/**
|
|
18
19
|
* The "address" for this channel is the ACCOUNT ITSELF.
|
|
@@ -44,6 +45,16 @@ export declare class BrowserNotificationChannel implements NotificationChannelSe
|
|
|
44
45
|
* writes can never disagree about who was notified.
|
|
45
46
|
*/
|
|
46
47
|
deliver(context: NotificationDispatchContext, to: string): Promise<ChannelDeliveryResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Write a STATE or COUNTED row and nudge open tabs when it is news.
|
|
50
|
+
*
|
|
51
|
+
* Never throws. A refresh that changes nothing the user can see (`quiet`)
|
|
52
|
+
* writes the row but sends no frame. A frame never raises an OS toast for an
|
|
53
|
+
* `incremented` row: the user already has that row unread, and a toast per
|
|
54
|
+
* folded occurrence would be the 4 000 notifications the fold exists to
|
|
55
|
+
* prevent.
|
|
56
|
+
*/
|
|
57
|
+
private deliverFolded;
|
|
47
58
|
/**
|
|
48
59
|
* Render an event's untyped payload into what the user sees.
|
|
49
60
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-notification.channel.d.ts","sourceRoot":"","sources":["../../../src/notifications/channels/browser-notification.channel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-notification.channel.d.ts","sourceRoot":"","sources":["../../../src/notifications/channels/browser-notification.channel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAyD/B,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAY7B;;;;GAIG;AACH,qBACa,0BAA2B,YAAW,yBAAyB;IAQ/C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IAEtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAGL,MAAM,EAAE,mBAAmB,EACpD,MAAM,EAAE,yBAAyB;IAKpD;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,SAAS,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI;IAI1D;;;;;;;;;;OAUG;IACG,OAAO,CACX,OAAO,EAAE,2BAA2B,EACpC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qBAAqB,CAAC;IAsDjC;;;;;;;;OAQG;YACW,aAAa;IA2D3B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,CAAC,MAAM;CAqCf;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAWpE"}
|
|
@@ -19,6 +19,7 @@ const common_1 = require("@nestjs/common");
|
|
|
19
19
|
const index_1 = require("../../core/index");
|
|
20
20
|
const describe_thrown_1 = require("../describe-thrown");
|
|
21
21
|
const notification_policy_1 = require("../notification-policy");
|
|
22
|
+
const notification_inbox_writer_1 = require("../notification-inbox-writer");
|
|
22
23
|
const notification_stream_service_1 = require("../notification-stream.service");
|
|
23
24
|
const registry_1 = require("../registry");
|
|
24
25
|
// `EVENT_BROWSER_TEMPLATES` (a frozen snapshot of the binding registry) is gone from the
|
|
@@ -38,9 +39,11 @@ let BrowserNotificationChannel = BrowserNotificationChannel_1 = class BrowserNot
|
|
|
38
39
|
stream;
|
|
39
40
|
channel = 'browser';
|
|
40
41
|
logger = new common_1.Logger(BrowserNotificationChannel_1.name);
|
|
42
|
+
writer;
|
|
41
43
|
constructor(prisma, stream) {
|
|
42
44
|
this.prisma = prisma;
|
|
43
45
|
this.stream = stream;
|
|
46
|
+
this.writer = new notification_inbox_writer_1.NotificationInboxWriter(prisma);
|
|
44
47
|
}
|
|
45
48
|
/**
|
|
46
49
|
* The "address" for this channel is the ACCOUNT ITSELF.
|
|
@@ -75,15 +78,15 @@ let BrowserNotificationChannel = BrowserNotificationChannel_1 = class BrowserNot
|
|
|
75
78
|
*/
|
|
76
79
|
async deliver(context, to) {
|
|
77
80
|
const eventKey = context.event.key;
|
|
81
|
+
// STATE and COUNTED rows (issue #1077) are upserted under an advisory
|
|
82
|
+
// lock; the template runs inside the write, on the final total.
|
|
83
|
+
if (context.inbox) {
|
|
84
|
+
return this.deliverFolded(context, to, context.inbox);
|
|
85
|
+
}
|
|
78
86
|
const rendered = this.render(context);
|
|
79
87
|
if (!rendered.ok) {
|
|
80
88
|
return { success: false, error: rendered.error };
|
|
81
89
|
}
|
|
82
|
-
// Normalised ONCE, here, and the same values are used for the row and for
|
|
83
|
-
// the stream. Applying the cap and the link check twice would be two
|
|
84
|
-
// chances for a tab to be shown something the database does not hold — and
|
|
85
|
-
// the stream copy is the one a native toast renders, so a divergence is a
|
|
86
|
-
// user seeing text that no audit of the table can explain.
|
|
87
90
|
const title = truncate(rendered.content.title, MAX_TITLE_LENGTH);
|
|
88
91
|
const body = truncate(rendered.content.body, MAX_BODY_LENGTH);
|
|
89
92
|
const link = sanitizeLink(rendered.content.link);
|
|
@@ -95,27 +98,11 @@ let BrowserNotificationChannel = BrowserNotificationChannel_1 = class BrowserNot
|
|
|
95
98
|
});
|
|
96
99
|
}
|
|
97
100
|
catch (err) {
|
|
98
|
-
// The database IS the delivery for this channel. A failed INSERT is a
|
|
99
|
-
// genuinely failed notification — unlike a publish that reaches no
|
|
100
|
-
// subscriber — so it is reported as one and lands in
|
|
101
|
-
// `notification_deliveries.error`.
|
|
102
101
|
return {
|
|
103
102
|
success: false,
|
|
104
103
|
error: `Could not write the notification record: ${(0, describe_thrown_1.describeThrown)(err)}`,
|
|
105
104
|
};
|
|
106
105
|
}
|
|
107
|
-
// Published AFTER the row is committed, never before. A tab that receives
|
|
108
|
-
// the event immediately renders or refetches from the same store;
|
|
109
|
-
// publishing first opens a window in which the client is told about a
|
|
110
|
-
// notification a refetch cannot find, which reads to the user as a bell
|
|
111
|
-
// that flickers and loses an item.
|
|
112
|
-
//
|
|
113
|
-
// `publish` never throws and returns how many connections it reached. ZERO
|
|
114
|
-
// IS SUCCESS: the user simply has no tab open, which is the normal state
|
|
115
|
-
// of most accounts most of the time. Treating it as a failure would fill
|
|
116
|
-
// `notification_deliveries` with failed rows for notifications that were
|
|
117
|
-
// delivered perfectly well, and would bury the real failures that table
|
|
118
|
-
// exists to surface.
|
|
119
106
|
const delivered = this.stream.publish(to, {
|
|
120
107
|
id: notification.id,
|
|
121
108
|
eventKey,
|
|
@@ -123,36 +110,9 @@ let BrowserNotificationChannel = BrowserNotificationChannel_1 = class BrowserNot
|
|
|
123
110
|
body,
|
|
124
111
|
link,
|
|
125
112
|
createdAt: notification.createdAt.toISOString(),
|
|
126
|
-
// THE ADMIN POLICY, APPLIED TO THE TOAST AND ONLY TO THE TOAST (#226).
|
|
127
|
-
//
|
|
128
|
-
// Note where this sits: AFTER the row was written, and on an event that
|
|
129
|
-
// is published regardless of its value. That is the invariant of #226 in
|
|
130
|
-
// one line of code — an operator who mutes browser notifications mutes
|
|
131
|
-
// the OS bubble, never the durable record. `security.role_changed` is
|
|
132
|
-
// `mandatory: true` precisely so a privilege change is never silent, and
|
|
133
|
-
// a policy that could suppress its inbox row would defeat the flag from
|
|
134
|
-
// the admin page.
|
|
135
|
-
//
|
|
136
|
-
// Read from the dispatch context rather than re-queried, so this flag and
|
|
137
|
-
// the channel decision that produced the row come from one snapshot of
|
|
138
|
-
// the policy. Absent policy resolves to the permissive default; see
|
|
139
|
-
// notification-policy.ts.
|
|
140
113
|
toast: (0, notification_policy_1.isBrowserToastAllowed)(eventKey, context.policy),
|
|
141
|
-
// IS WEB PUSH PART OF THIS SAME DISPATCH? (#625)
|
|
142
|
-
//
|
|
143
|
-
// Read from the dispatcher's final channel list — policy, preferences
|
|
144
|
-
// and any per-dispatch narrowing already applied — so it describes THIS
|
|
145
|
-
// dispatch, mandatory events included. It says the push channel will be
|
|
146
|
-
// attempted, not that it succeeded or that this browser holds a
|
|
147
|
-
// subscription; the client combines it with its own subscription state
|
|
148
|
-
// to avoid a duplicate OS toast. Independent of `toast`.
|
|
149
114
|
pushed: context.channels.includes('push'),
|
|
150
115
|
});
|
|
151
|
-
// Event key and connection count only — no title, no body, no link. The
|
|
152
|
-
// rendered text is what the user was told and can name a role, an
|
|
153
|
-
// administrator or a resource; application logs are shipped, indexed and
|
|
154
|
-
// retained far more widely than the `notifications` table is. The content
|
|
155
|
-
// has exactly one home and this is not it.
|
|
156
116
|
this.logger.log(`Recorded '${eventKey}' for user ${to} (live to ${delivered} connection(s)).`);
|
|
157
117
|
// The row id is the message id. It is the one durable handle tying a
|
|
158
118
|
// `notification_deliveries` row to the `notifications` row it produced,
|
|
@@ -160,6 +120,69 @@ let BrowserNotificationChannel = BrowserNotificationChannel_1 = class BrowserNot
|
|
|
160
120
|
// see?" gets answered.
|
|
161
121
|
return { success: true, messageId: notification.id };
|
|
162
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Write a STATE or COUNTED row and nudge open tabs when it is news.
|
|
125
|
+
*
|
|
126
|
+
* Never throws. A refresh that changes nothing the user can see (`quiet`)
|
|
127
|
+
* writes the row but sends no frame. A frame never raises an OS toast for an
|
|
128
|
+
* `incremented` row: the user already has that row unread, and a toast per
|
|
129
|
+
* folded occurrence would be the 4 000 notifications the fold exists to
|
|
130
|
+
* prevent.
|
|
131
|
+
*/
|
|
132
|
+
async deliverFolded(context, to, mode) {
|
|
133
|
+
const eventKey = context.event.key;
|
|
134
|
+
const render = (data) => {
|
|
135
|
+
const rendered = this.render({ ...context, data });
|
|
136
|
+
if (!rendered.ok)
|
|
137
|
+
throw new Error(rendered.error);
|
|
138
|
+
return {
|
|
139
|
+
title: truncate(rendered.content.title, MAX_TITLE_LENGTH),
|
|
140
|
+
body: truncate(rendered.content.body, MAX_BODY_LENGTH),
|
|
141
|
+
link: sanitizeLink(rendered.content.link),
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
const data = (context.data ?? {});
|
|
145
|
+
let written;
|
|
146
|
+
try {
|
|
147
|
+
written =
|
|
148
|
+
mode.kind === 'state'
|
|
149
|
+
? await this.writer.upsertState(to, eventKey, mode, data, render)
|
|
150
|
+
: await this.writer.upsertCounted(to, eventKey, mode, data, render);
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
return {
|
|
154
|
+
success: false,
|
|
155
|
+
error: `Could not write the notification record: ${(0, describe_thrown_1.describeThrown)(err)}`,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
if (!written.quiet) {
|
|
159
|
+
// Re-read nothing: the frame carries what the writer returned. Title and
|
|
160
|
+
// body come from a second pure render of the same total, so they match the row.
|
|
161
|
+
let content = null;
|
|
162
|
+
try {
|
|
163
|
+
content = render({ ...data, count: written.count });
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
content = null;
|
|
167
|
+
}
|
|
168
|
+
if (content) {
|
|
169
|
+
this.stream.publish(to, {
|
|
170
|
+
id: written.id,
|
|
171
|
+
eventKey,
|
|
172
|
+
...content,
|
|
173
|
+
createdAt: written.createdAt.toISOString(),
|
|
174
|
+
toast: written.reason !== 'incremented' && (0, notification_policy_1.isBrowserToastAllowed)(eventKey, context.policy),
|
|
175
|
+
pushed: context.channels.includes('push'),
|
|
176
|
+
count: written.count,
|
|
177
|
+
scopeId: written.scopeId,
|
|
178
|
+
updatedAt: written.updatedAt.toISOString(),
|
|
179
|
+
reason: written.reason,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
this.logger.log(`Recorded '${eventKey}' (${written.reason}, count ${written.count}) for user ${to}.`);
|
|
184
|
+
return { success: true, messageId: written.id };
|
|
185
|
+
}
|
|
163
186
|
/**
|
|
164
187
|
* Render an event's untyped payload into what the user sees.
|
|
165
188
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-notification.channel.js","sourceRoot":"","sources":["../../../src/notifications/channels/browser-notification.channel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"browser-notification.channel.js","sourceRoot":"","sources":["../../../src/notifications/channels/browser-notification.channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,6 +91,19 @@ export interface NotificationRow {
|
|
|
91
91
|
readAt: Date | null;
|
|
92
92
|
/** Creation time. */
|
|
93
93
|
createdAt: Date;
|
|
94
|
+
/**
|
|
95
|
+
* The payload of a STATE or COUNTED row (`count`, `countAtRead`, and what the
|
|
96
|
+
* producer passed); null for a plain `notify()` row.
|
|
97
|
+
*/
|
|
98
|
+
data: NotificationsJsonValue | null;
|
|
99
|
+
/** The scope (a group, an organization) a STATE or COUNTED row belongs to, or null. */
|
|
100
|
+
scopeId: string | null;
|
|
101
|
+
/** When the user dismissed it, or null. A dismissed row is not listed. */
|
|
102
|
+
dismissedAt: Date | null;
|
|
103
|
+
/** Last refresh: the rolling-window anchor of a COUNTED row. */
|
|
104
|
+
updatedAt: Date;
|
|
105
|
+
/** The fold key of a live STATE or COUNTED row; null for a plain row or a retired COUNTED row. */
|
|
106
|
+
dedupKey: string | null;
|
|
94
107
|
}
|
|
95
108
|
/**
|
|
96
109
|
* A `notification_deliveries` row: one channel attempt.
|
|
@@ -269,6 +282,12 @@ export interface NotificationsTx {
|
|
|
269
282
|
job: NotificationsForeignDelegate;
|
|
270
283
|
/** `organizations` (identity fragment): a broadcast's target must exist. */
|
|
271
284
|
organization: NotificationsForeignDelegate;
|
|
285
|
+
/**
|
|
286
|
+
* Prisma's tagged-template `$executeRaw`: the inbox's advisory lock
|
|
287
|
+
* (`pg_advisory_xact_lock`) and its read/dismiss updates, which must not run
|
|
288
|
+
* Prisma's `@updatedAt`. Resolves the number of rows touched.
|
|
289
|
+
*/
|
|
290
|
+
$executeRaw(query: TemplateStringsArray, ...values: unknown[]): Promise<number>;
|
|
272
291
|
}
|
|
273
292
|
/**
|
|
274
293
|
* The client the slice injects under `PLATFORM_PRISMA`: the app's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications-db.d.ts","sourceRoot":"","sources":["../../../src/notifications/data/notifications-db.ts"],"names":[],"mappings":"AAyBA;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,MAAM,GACN,OAAO,GACP;KAAG,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,sBAAsB;CAAE,GAC5C,sBAAsB,EAAE,GACxB,IAAI,CAAC;AAET;;;;;GAKG;AACH,MAAM,MAAM,2BAA2B,GAAG;IAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO;CAAE,GAAG,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElI;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,CAAC;CAI/E,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEtH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE;IACxC,QAAQ,EAAE,CAAC,IAAI,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,CAAC;CAQ5E,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAC;AAIzH;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sCAAsC;IACtC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,qBAAqB;IACrB,SAAS,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"notifications-db.d.ts","sourceRoot":"","sources":["../../../src/notifications/data/notifications-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,10 @@ declare const NotificationDto_base: import("nestjs-zod").ZodDto<import("zod").Zo
|
|
|
8
8
|
link: import("zod").ZodNullable<import("zod").ZodString>;
|
|
9
9
|
readAt: import("zod").ZodNullable<import("zod").ZodISODateTime>;
|
|
10
10
|
createdAt: import("zod").ZodISODateTime;
|
|
11
|
+
count: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
12
|
+
scopeId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
13
|
+
dismissedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodISODateTime>>;
|
|
14
|
+
updatedAt: import("zod").ZodOptional<import("zod").ZodISODateTime>;
|
|
11
15
|
}, import("zod/v4/core").$strip>, false>;
|
|
12
16
|
/**
|
|
13
17
|
* One inbox row.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.dto.d.ts","sourceRoot":"","sources":["../../../src/notifications/dto/notification.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,6CAA6C,CAAC;AACrD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC
|
|
1
|
+
{"version":3,"file":"notification.dto.d.ts","sourceRoot":"","sources":["../../../src/notifications/dto/notification.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,6CAA6C,CAAC;AACrD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6CAA6C,CAAC;;;;;;;;;;;;;;AAErD;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,oBAAgC;CAAG;;;;;;AAExE;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,6BAAyC;CAAG;;;;AAE1F;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAA+B;CAAG"}
|
|
@@ -5,7 +5,7 @@ export type { NotificationsImport, NotificationsModuleOptions, ResolvedNotificat
|
|
|
5
5
|
export { NOOP_NOTIFICATIONS_METRICS, NOTIFICATIONS_EVENT_BUS, NOTIFICATIONS_METRICS, NOTIFICATION_RECIPIENT_HANDLES, NOTIFICATION_STREAM_BUS_CHANNEL, NOTIFICATION_STREAM_INLINE_LIMIT_BYTES, } from './ports';
|
|
6
6
|
export type { NotificationDeliveryOutcome, NotificationsEventBus, NotificationsEventBusMeta, NotificationsMetrics, RecipientHandleSource, } from './ports';
|
|
7
7
|
export { NotificationsService } from './notifications.service';
|
|
8
|
-
export type { ChannelDeliveryResult, NotificationChannelSender, NotificationDispatchContext, NotificationRecipient, NotifyNowResult, NotifyOptions, NotifyPermissionHoldersOptions, RecipientHandle, ResolvedRecipient, ResolveRecipientContext, } from './notification.types';
|
|
8
|
+
export type { ChannelDeliveryResult, NotificationChannelSender, NotificationDispatchContext, NotificationRecipient, NotifyNowResult, NotifyCountedOptions, NotifyOptions, NotifyStateOptions, NotifyPermissionHoldersOptions, RecipientHandle, ResolvedRecipient, ResolveRecipientContext, } from './notification.types';
|
|
9
9
|
export { EMAIL_TEMPLATE_NAME_PATTERN, ANDROID_APP_NOTIFICATION_CHANNEL, NOTIFICATION_CHANNEL_ID_PATTERN, NOTIFICATION_EVENT_KEY_MAX_LENGTH, NOTIFICATION_EVENT_KEY_PATTERN, PLATFORM_NOTIFICATION_CHANNELS, channelTemplateRegistry, collapseOverlappingChannels, criticalCapableChannels, describeNotificationChannels, emailTemplateRegistry, eventBrowserTemplateRegistry, eventEmailTemplateRegistry, isRegisteredNotificationChannel, listNotificationChannels, notificationChannelRegistry, notificationEventRegistry, findChannelTemplate, registerBrowserNotificationTemplate, registerChannelTemplate, registerEmailNotificationTemplate, registerEmailTemplates, registerNotification, registerNotificationChannel, registerNotificationChannels, registerNotificationEvent, registerNotifications, registerAndroidAppNotificationChannel, registerPlatformNotificationChannels, renderChannelPayload, } from './registry/index';
|
|
10
10
|
export type { ChannelPayload, ChannelTemplateBinding, ChannelTemplateContext, ChannelTemplateRender, EmailTemplateEntry, EventBrowserTemplateBinding, EventEmailTemplateBinding, NotificationChannel, NotificationChannelDef, NotificationEventDef, NotificationRegistration, } from './registry/index';
|
|
11
11
|
export { NotificationChannelSenderRegistry } from './registry/channel-sender.registry';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,gEAAgE;AAChE,gFAAgF;AAChF,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,kEAAkE;AAClE,EAAE;AACF,+BAA+B;AAC/B,gFAAgF;;;;;AAEhF,2FAA2F;AAC3F,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA;AAC5B,oEAAkE;AAAzD,qHAAA,gBAAgB,OAAA;AACzB,iEAAmG;AAA1F,8HAAA,qBAAqB,OAAA;AAAE,0IAAA,iCAAiC,OAAA;AAOjE,2FAA2F;AAC3F,iCAOiB;AANf,mHAAA,0BAA0B,OAAA;AAC1B,gHAAA,uBAAuB,OAAA;AACvB,8GAAA,qBAAqB,OAAA;AACrB,uHAAA,8BAA8B,OAAA;AAC9B,wHAAA,+BAA+B,OAAA;AAC/B,+HAAA,sCAAsC,OAAA;AAUxC,6FAA6F;AAC7F,iEAA+D;AAAtD,6HAAA,oBAAoB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"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"}
|