@serve.zone/interfaces 17.5.0 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-07-23 - 18.0.0
|
|
4
|
+
|
|
5
|
+
### Breaking Changes
|
|
6
|
+
|
|
7
|
+
- require durable controller mutation fences for Web Push binding synchronization and exact-owner deletion
|
|
8
|
+
- replace ID-only Web Push deletion requests with owner-scoped, fenced deletion requests
|
|
9
|
+
|
|
3
10
|
## 2026-07-23 - 17.5.0
|
|
4
11
|
|
|
5
12
|
### Features
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/interfaces',
|
|
6
|
-
version: '
|
|
6
|
+
version: '18.0.0',
|
|
7
7
|
description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
|
|
@@ -17,6 +17,21 @@ export interface IWebPushResourceOwner {
|
|
|
17
17
|
gatewayClientId: string;
|
|
18
18
|
appInstanceId: string;
|
|
19
19
|
}
|
|
20
|
+
export type TWebPushControllerIntent = 'enabled' | 'disabled' | 'deleted';
|
|
21
|
+
/**
|
|
22
|
+
* Durable controller fence for owner-scoped Web Push mutations.
|
|
23
|
+
*
|
|
24
|
+
* `id` and `epoch` are immutable for one owner. `generation` is a positive,
|
|
25
|
+
* strictly monotonic controller sequence. Reusing a generation is permitted
|
|
26
|
+
* only for the exact same operation, intent, and canonical request payload.
|
|
27
|
+
*/
|
|
28
|
+
export interface IWebPushControllerMutation {
|
|
29
|
+
id: string;
|
|
30
|
+
epoch: string;
|
|
31
|
+
generation: number;
|
|
32
|
+
operationId: string;
|
|
33
|
+
intent: TWebPushControllerIntent;
|
|
34
|
+
}
|
|
20
35
|
/** JSON form returned by the browser Push API. */
|
|
21
36
|
export interface IWebPushSubscription {
|
|
22
37
|
endpoint: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
2
|
import type { IIdentity } from '../data/user.js';
|
|
3
|
-
import type { IWebPushBinding, IWebPushCredentialOneTimeSecret, IWebPushDeliveryStatus, IWebPushNotificationPayload, IWebPushResourceOwner, IWebPushServiceStatus, IWebPushSubscription, TWebPushCancellationTarget, TWebPushUrgency } from '../data/webpush.js';
|
|
3
|
+
import type { IWebPushBinding, IWebPushControllerMutation, IWebPushCredentialOneTimeSecret, IWebPushDeliveryStatus, IWebPushNotificationPayload, IWebPushResourceOwner, IWebPushServiceStatus, IWebPushSubscription, TWebPushCancellationTarget, TWebPushUrgency } from '../data/webpush.js';
|
|
4
4
|
/** Control-plane authentication. Never accepted by application delivery RPCs. */
|
|
5
5
|
export interface IWebPushControlRequestAuth {
|
|
6
6
|
identity?: IIdentity;
|
|
@@ -30,6 +30,7 @@ export interface IReq_SyncWebPushBinding extends plugins.typedrequestInterfaces.
|
|
|
30
30
|
method: 'syncWebPushBinding';
|
|
31
31
|
request: {
|
|
32
32
|
auth: IWebPushControlRequestAuth;
|
|
33
|
+
controller: IWebPushControllerMutation;
|
|
33
34
|
binding: TWebPushBindingSync;
|
|
34
35
|
};
|
|
35
36
|
response: {
|
|
@@ -43,7 +44,9 @@ export interface IReq_DeleteWebPushBinding extends plugins.typedrequestInterface
|
|
|
43
44
|
method: 'deleteWebPushBinding';
|
|
44
45
|
request: {
|
|
45
46
|
auth: IWebPushControlRequestAuth;
|
|
46
|
-
|
|
47
|
+
owner: IWebPushResourceOwner;
|
|
48
|
+
id?: string;
|
|
49
|
+
controller: IWebPushControllerMutation;
|
|
47
50
|
};
|
|
48
51
|
response: {
|
|
49
52
|
success: boolean;
|
package/package.json
CHANGED
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/data/webpush.ts
CHANGED
|
@@ -33,6 +33,23 @@ export interface IWebPushResourceOwner {
|
|
|
33
33
|
appInstanceId: string;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
export type TWebPushControllerIntent = 'enabled' | 'disabled' | 'deleted';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Durable controller fence for owner-scoped Web Push mutations.
|
|
40
|
+
*
|
|
41
|
+
* `id` and `epoch` are immutable for one owner. `generation` is a positive,
|
|
42
|
+
* strictly monotonic controller sequence. Reusing a generation is permitted
|
|
43
|
+
* only for the exact same operation, intent, and canonical request payload.
|
|
44
|
+
*/
|
|
45
|
+
export interface IWebPushControllerMutation {
|
|
46
|
+
id: string;
|
|
47
|
+
epoch: string;
|
|
48
|
+
generation: number;
|
|
49
|
+
operationId: string;
|
|
50
|
+
intent: TWebPushControllerIntent;
|
|
51
|
+
}
|
|
52
|
+
|
|
36
53
|
/** JSON form returned by the browser Push API. */
|
|
37
54
|
export interface IWebPushSubscription {
|
|
38
55
|
endpoint: string;
|
package/ts/requests/webpush.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as plugins from '../plugins.js';
|
|
|
2
2
|
import type { IIdentity } from '../data/user.js';
|
|
3
3
|
import type {
|
|
4
4
|
IWebPushBinding,
|
|
5
|
+
IWebPushControllerMutation,
|
|
5
6
|
IWebPushCredentialOneTimeSecret,
|
|
6
7
|
IWebPushDeliveryStatus,
|
|
7
8
|
IWebPushNotificationPayload,
|
|
@@ -54,6 +55,7 @@ export interface IReq_SyncWebPushBinding extends plugins.typedrequestInterfaces.
|
|
|
54
55
|
method: 'syncWebPushBinding';
|
|
55
56
|
request: {
|
|
56
57
|
auth: IWebPushControlRequestAuth;
|
|
58
|
+
controller: IWebPushControllerMutation;
|
|
57
59
|
binding: TWebPushBindingSync;
|
|
58
60
|
};
|
|
59
61
|
response: {
|
|
@@ -71,7 +73,9 @@ export interface IReq_DeleteWebPushBinding extends plugins.typedrequestInterface
|
|
|
71
73
|
method: 'deleteWebPushBinding';
|
|
72
74
|
request: {
|
|
73
75
|
auth: IWebPushControlRequestAuth;
|
|
74
|
-
|
|
76
|
+
owner: IWebPushResourceOwner;
|
|
77
|
+
id?: string;
|
|
78
|
+
controller: IWebPushControllerMutation;
|
|
75
79
|
};
|
|
76
80
|
response: {
|
|
77
81
|
success: boolean;
|