@openfin/cloud-notification-core-api 0.0.1-alpha.80d41e7 → 0.0.1-alpha.a3766bf

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 (4) hide show
  1. package/bundle.d.ts +364 -243
  2. package/index.cjs +234 -96
  3. package/index.mjs +233 -97
  4. package/package.json +1 -1
package/bundle.d.ts CHANGED
@@ -5,7 +5,7 @@ export declare class AuthorizationError extends CloudNotificationAPIError {
5
5
  }
6
6
 
7
7
  export declare type BaseNotificationReceivedEvent = {
8
- action: 'new' | 'update';
8
+ action: 'new' | 'update' | 'delete';
9
9
  notificationId: string;
10
10
  correlationId?: string;
11
11
  target: string;
@@ -20,269 +20,390 @@ export declare type BaseNotificationReceivedEvent = {
20
20
  */
21
21
  export declare class CloudNotificationAPI {
22
22
  #private;
23
+ deDuplicator: SetWithTTL<string>;
23
24
  constructor(cloudNotificationSettings: CloudNotificationSettings);
24
25
  /**
25
- * Connects and creates a session on the Cloud Notifications service
26
+ * Connects and creates a session on the Cloud Notifications service.
26
27
  *
27
- * @param {ConnectParameters} parameters - The parameters to use to connect
28
- * @returns {*} {Promise<void>}
29
- * @memberof CloudNotificationAPI
30
- * @throws {CloudNotificationAPIError} - If an error occurs during connection
31
- * @throws {AuthorizationError} - If the connection is unauthorized
32
- */
33
- connect(parameters: ConnectParameters): Promise<ConnectionResult>;
34
- /**
35
- * Disconnects from the Cloud Notification service
36
- *
37
- * @returns {*} {Promise<void>}
38
- * @memberof CloudNotificationAPI
39
- * @throws {CloudNotificationAPIError} - If an error occurs during disconnection
40
- */
41
- disconnect(): Promise<void>;
42
- postNotificationEvent(notificationId: string, event: {
43
- category: string;
44
- type: string;
45
- payload?: unknown;
46
- }): Promise<void>;
47
- /**
48
- * Raises a notification to the Cloud Notification service
49
- *
50
- * @param {NotificationOptions} options - The options for the notification
51
- * @param {unknown} payload - The payload of the notification
52
- * @returns {*} {Promise<NotificationRaiseResult>}
53
- * @memberof CloudNotificationAPI
54
- * @throws {SessionNotConnectedError} - If the session is not connected
55
- * @throws {PublishError} - If an error occurs during publishing
56
- */
57
- raiseNotification(options: NotificationOptions_2, payload: unknown): Promise<NotificationRaiseResult>;
58
- updateNotification(): Promise<void>;
59
- deleteNotification(): Promise<void>;
60
- addEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
61
- removeEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
62
- once<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
63
- }
28
+ * @param parameters - The parameters to use to connect.
29
+ * @returns A promise that resolves when the connection is established.
30
+ * @throws {@link CloudNotificationAPIError} If an error occurs during connection.
31
+ * @throws {@link AuthorizationError} If the connection is unauthorized.
32
+ */
33
+ connect(parameters: ConnectParameters): Promise<ConnectionResult>;
34
+ /**
35
+ * Disconnects from the Cloud Notification service.
36
+ *
37
+ * @returns A promise that resolves when disconnected.
38
+ * @throws {@link CloudNotificationAPIError} If an error occurs during disconnection.
39
+ */
40
+ disconnect(): Promise<void>;
41
+ /**
42
+ * Posts a notification event to the Cloud Notification service.
43
+ *
44
+ * @param notificationId - The ID of the notification.
45
+ * @param event - The event details, including category, type, and optional payload.
46
+ * @returns A promise that resolves when the event is posted.
47
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
48
+ * @throws {@link PublishError} If an error occurs during publishing.
49
+ */
50
+ postNotificationEvent(notificationId: string, event: {
51
+ category: string;
52
+ type: string;
53
+ payload?: unknown;
54
+ }): Promise<void>;
55
+ /**
56
+ * Raises a notification to the Cloud Notification service.
57
+ *
58
+ * @param options - The options for the notification.
59
+ * @param payload - The payload of the notification.
60
+ * @returns A promise that resolves with the notification raise result.
61
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
62
+ * @throws {@link PublishError} If an error occurs during publishing.
63
+ */
64
+ raiseNotification(options: NotificationOptions_2, payload: unknown): Promise<NotificationRaiseResult>;
65
+ /**
66
+ * Raises a notification update to the Cloud Notification service.
67
+ *
68
+ * @param notificationId - The ID of the notification to update.
69
+ * @param options - The options for the notification update.
70
+ * @param payload - The new payload of the notification.
71
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
72
+ * @throws {@link PublishError} If an error occurs during publishing of the update.
73
+ */
74
+ updateNotification(notificationId: string, options: NotificationUpdateOptions, payload: unknown): Promise<void>;
75
+ /**
76
+ * Marks a notification as deleted in the Cloud Notification service.
77
+ *
78
+ * @param notificationId - The ID of the notification to delete.
79
+ * @returns A promise that resolves when the notification is deleted.
80
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
81
+ */
82
+ deleteNotification(notificationId: string): Promise<void>;
83
+ /**
84
+ * Replays notifications from the Cloud Notification service.
85
+ *
86
+ * @param pageItemLimit - The maximum number of items per page.
87
+ * @param pageStartCursor - The cursor to start the page from.
88
+ * @returns A promise that resolves with the notifications replay details.
89
+ * @throws {@link SessionNotConnectedError} If the session is not connected.
90
+ * @throws {@link NotificationRetrievalError} If an error occurs during retrieval.
91
+ */
92
+ replayNotifications(pageItemLimit: number | undefined, pageStartCursor: string | undefined): Promise<NotificationsReplayDetails>;
93
+ /**
94
+ * Adds an event listener for a specific event type.
95
+ *
96
+ * @param type - The event type.
97
+ * @param callback - The callback function to invoke when the event occurs.
98
+ */
99
+ addEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
100
+ /**
101
+ * Removes an event listener for a specific event type.
102
+ *
103
+ * @param type - The event type.
104
+ * @param callback - The callback function to remove.
105
+ */
106
+ removeEventListener<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
107
+ /**
108
+ * Adds a one-time event listener for a specific event type.
109
+ *
110
+ * @param type - The event type.
111
+ * @param callback - The callback function to invoke once when the event occurs.
112
+ */
113
+ once<K extends keyof EventMap>(type: K, callback: EventMap[K]): void;
114
+ }
64
115
 
65
- export declare class CloudNotificationAPIError extends Error {
66
- code: string;
67
- constructor(message?: string, code?: string, cause?: unknown);
68
- }
116
+ export declare class CloudNotificationAPIError extends Error {
117
+ code: string;
118
+ constructor(message?: string, code?: string, cause?: unknown);
119
+ }
69
120
 
70
- /**
71
- * Represents a logging function to be used by the cloud notification client
72
- */
73
- export declare type CloudNotificationLogger = (level: LogLevel, message: string) => void;
121
+ /**
122
+ * Represents a logging function to be used by the cloud notification client
123
+ */
124
+ export declare type CloudNotificationLogger = (level: LogLevel, message: string) => void;
74
125
 
75
- export declare type CloudNotificationSettings = {
76
- /**
77
- * The URL of the notification server to connect to
78
- */
79
- url: string;
80
- };
126
+ export declare type CloudNotificationSettings = {
127
+ /**
128
+ * The URL of the notification server to connect to
129
+ */
130
+ url: string;
131
+ /**
132
+ * The maximum number of times to retry connecting to the cloud notification service when the connection is dropped
133
+ * defaults to 30
134
+ */
135
+ reconnectRetryLimit?: number;
136
+ /**
137
+ * Specifies how often keep alive messages should be sent to the cloud notification service in seconds
138
+ * defaults to 30
139
+ */
140
+ keepAliveIntervalSeconds?: number;
141
+ /**
142
+ * Optional function to call with any logging messages to allow integration with the host application's logging
143
+ *
144
+ * defaults to console.log
145
+ */
146
+ logger?: CloudNotificationLogger;
147
+ /**
148
+ * The time used to deduplicate notifications
149
+ */
150
+ deduplicationTTLms?: number;
151
+ /**
152
+ * Will cause the api to calculate the time offset between the local machine and the notification server
153
+ * defaults to true
154
+ */
155
+ syncTime?: boolean;
156
+ };
81
157
 
82
- /**
83
- * Repesents the result of a successful connection to the server
84
- */
85
- export declare type ConnectionResult = {
86
- /**
87
- * The unique identifier for the session
88
- */
89
- sessionId: string;
90
- /**
91
- * The platform identifier
92
- */
93
- platformId: string;
94
- /**
95
- * The source identifier
96
- */
97
- sourceId: string;
98
- /**
99
- * The user identifier
100
- */
101
- userId: string;
102
- /**
103
- * A collection of groups that the user is either a direct or indirect member of
104
- */
105
- groups: {
106
- uuid: string;
107
- name: string;
108
- }[];
109
- };
158
+ /**
159
+ * Repesents the result of a successful connection to the server
160
+ */
161
+ export declare type ConnectionResult = {
162
+ /**
163
+ * The unique identifier for the session
164
+ */
165
+ sessionId: string;
166
+ /**
167
+ * The platform identifier
168
+ */
169
+ platformId: string;
170
+ /**
171
+ * The source identifier
172
+ */
173
+ sourceId: string;
174
+ /**
175
+ * The user identifier
176
+ */
177
+ userId: string;
178
+ /**
179
+ * A collection of groups that the user is either a direct or indirect member of
180
+ */
181
+ groups: {
182
+ uuid: string;
183
+ name: string;
184
+ }[];
185
+ };
110
186
 
111
- /**
112
- * Represents the parameters to use to connect to an notification server
113
- */
114
- export declare type ConnectParameters = {
115
- /**
116
- * ID for a group of shared applications.
117
- * This acts as a namespace for the notification messages that allows separation of messages between different groups of applications for the same user
118
- */
119
- platformId: string;
120
- /**
121
- * A value that distinguishes the host the application is running in. For example this could be the hostname of the current machine
122
- */
123
- sourceId: string;
124
- /**
125
- * The maximum number of times to retry connecting to the cloud notification service when the connection is dropped
126
- * defaults to 30
127
- */
128
- reconnectRetryLimit?: number;
129
- /**
130
- * Specifies how often keep alive messages should be sent to the cloud notification service in seconds
131
- * defaults to 30
132
- */
133
- keepAliveIntervalSeconds?: number;
134
- /**
135
- * Calculates the time offset between the local machine and the notification server
136
- * defaults to true
137
- */
138
- syncTime?: boolean;
139
- /**
140
- * Optional function to call with any logging messages to allow integration with the host application's logging
141
- *
142
- * defaults to console.log
143
- */
144
- logger?: CloudNotificationLogger;
145
- /**
146
- * Determines the type of authentication to use with the service gateway
147
- * defaults to 'none'
148
- *
149
- * 'jwt' - Use JWT authentication, in this case jwtAuthenticationParameters must also be provided
150
- * 'basic' - Use basic authentication, in this case basicAuthenticationParameters must also be provided
151
- * 'default' - Authentication will be inherited from the current session
152
- */
153
- authenticationType?: 'jwt' | 'basic' | 'default';
154
- /**
155
- * Optional parameters for basic authentication
156
- */
157
- basicAuthenticationParameters?: {
158
- /**
159
- * The username to use for basic authentication
160
- */
161
- username: string;
162
- /**
163
- * The password to use for basic authentication
164
- */
165
- password: string;
166
- };
167
- /**
168
- * Optional parameters for JWT authentication
169
- */
170
- jwtAuthenticationParameters?: {
171
- /**
172
- * When JWT authentication is being used, this will be invoked just whenever a JWT token is required for a request
173
- */
174
- jwtRequestCallback: () => string | object;
175
- /**
176
- * The id of the service gateway JWT authentication definition to use
177
- *
178
- * Note: Contact Here support to to get your organization's authentication id
179
- */
180
- authenticationId: string;
181
- };
182
- };
187
+ /**
188
+ * Represents the parameters to use to connect to an notification server
189
+ */
190
+ export declare type ConnectParameters = {
191
+ /**
192
+ * ID for a group of shared applications.
193
+ * This acts as a namespace for the notification messages that allows separation of messages between different groups of applications for the same user
194
+ */
195
+ platformId: string;
196
+ /**
197
+ * A value that distinguishes the host the application is running in. For example this could be the hostname of the current machine
198
+ */
199
+ sourceId: string;
200
+ /**
201
+ * Determines the type of authentication to use with the service gateway
202
+ * defaults to 'none'
203
+ *
204
+ * 'jwt' - Use JWT authentication, in this case jwtAuthenticationParameters must also be provided
205
+ * 'basic' - Use basic authentication, in this case basicAuthenticationParameters must also be provided
206
+ * 'default' - Authentication will be inherited from the current session
207
+ */
208
+ authenticationType?: 'jwt' | 'basic' | 'default';
209
+ /**
210
+ * Optional parameters for basic authentication
211
+ */
212
+ basicAuthenticationParameters?: {
213
+ /**
214
+ * The username to use for basic authentication
215
+ */
216
+ username: string;
217
+ /**
218
+ * The password to use for basic authentication
219
+ */
220
+ password: string;
221
+ };
222
+ /**
223
+ * Optional parameters for JWT authentication
224
+ */
225
+ jwtAuthenticationParameters?: {
226
+ /**
227
+ * When JWT authentication is being used, this will be invoked just whenever a JWT token is required for a request
228
+ */
229
+ jwtRequestCallback: () => string | object;
230
+ /**
231
+ * The id of the service gateway JWT authentication definition to use
232
+ *
233
+ * Note: Contact Here support to to get your organization's authentication id
234
+ */
235
+ authenticationId: string;
236
+ };
237
+ };
183
238
 
184
- export declare type EventListenersMap = Map<keyof EventMap, Array<(...args: Parameters<EventMap[keyof EventMap]>) => void>>;
239
+ export declare type DeleteNotificationEvent = BaseNotificationReceivedEvent & {
240
+ action: 'delete';
241
+ };
185
242
 
186
- export declare type EventMap = {
187
- reconnected: () => void;
188
- disconnected: () => void;
189
- reconnecting: (attemptNo: number) => void;
190
- error: (error: Error) => void;
191
- 'session-expired': () => void;
192
- 'session-extended': () => void;
193
- 'new-notification': (event: NewNotificationEvent) => void;
194
- 'update-notification': (event: UpdateNotificationEvent) => void;
195
- 'notification-event': (event: NotificationEvent) => void;
196
- };
243
+ export declare type EventListenersMap = Map<keyof EventMap, Array<(...args: Parameters<EventMap[keyof EventMap]>) => void>>;
197
244
 
198
- export declare class EventRetrievalError extends CloudNotificationAPIError {
199
- constructor(message?: string, code?: string, cause?: unknown);
200
- }
245
+ export declare type EventMap = {
246
+ reconnected: () => void;
247
+ disconnected: () => void;
248
+ reconnecting: (attemptNo: number) => void;
249
+ error: (error: Error) => void;
250
+ 'session-expired': () => void;
251
+ 'session-extended': () => void;
252
+ 'new-notification': (event: NewNotificationEvent) => void;
253
+ 'update-notification': (event: UpdateNotificationEvent) => void;
254
+ 'delete-notification': (event: DeleteNotificationEvent) => void;
255
+ 'notification-event': (event: NotificationEvent) => void;
256
+ };
201
257
 
202
- export declare class InvalidMessageFormatError extends CloudNotificationAPIError {
203
- constructor(zodParseResult: z.SafeParseReturnType<unknown, unknown>);
204
- }
258
+ export declare class EventPublishError extends CloudNotificationAPIError {
259
+ constructor(message?: string, code?: string, cause?: unknown);
260
+ }
205
261
 
206
- export declare type LogLevel = 'log' | 'debug' | 'info' | 'warn' | 'error';
262
+ export declare class EventRetrievalError extends CloudNotificationAPIError {
263
+ constructor(message?: string, code?: string, cause?: unknown);
264
+ }
207
265
 
208
- export declare type NewNotificationEvent = BaseNotificationReceivedEvent & {
209
- action: 'new';
210
- };
266
+ export declare class InvalidMessageFormatError extends CloudNotificationAPIError {
267
+ constructor(zodParseResult: z.SafeParseReturnType<unknown, unknown>);
268
+ }
211
269
 
212
- export declare type NotificationEvent = {
213
- notificationId: string;
214
- correlationId?: string;
215
- category: string;
216
- type: string;
217
- payload?: unknown;
218
- };
270
+ export declare type LogLevel = 'log' | 'debug' | 'info' | 'warn' | 'error';
219
271
 
220
- /**
221
- * Represents the options for a notification publish
222
- */
223
- declare type NotificationOptions_2 = {
224
- /**
225
- * A caller specified identifier for the notification
226
- * This is used to identify the notification in the system when events and responses are received
227
- */
228
- correlationId?: string;
229
- /**
230
- * The targets to send the notification to
231
- * This is a set of groups and users that the notification will be sent to
232
- */
233
- targets: NotificationTargets;
234
- };
235
- export { NotificationOptions_2 as NotificationOptions }
272
+ export declare type NewNotificationEvent = BaseNotificationReceivedEvent & {
273
+ action: 'new';
274
+ };
236
275
 
237
- /**
238
- * Represents the response from raising a notification
239
- */
240
- export declare type NotificationRaiseResult = {
241
- /**
242
- * The unique identifier for the notification
243
- */
244
- notificationId: string;
245
- /**
246
- * The correlation ID that was provided when raising the notification
247
- */
248
- correlationId?: string;
249
- };
276
+ export declare type NotificationEvent = {
277
+ notificationId: string;
278
+ correlationId?: string;
279
+ category: string;
280
+ type: string;
281
+ payload?: unknown;
282
+ };
250
283
 
251
- /**
252
- * Represents a set of targets for a notification publish
253
- */
254
- export declare type NotificationTargets = {
255
- /**
256
- * The groups to send the notification to
257
- */
258
- groups: string[];
259
- /**
260
- * The users to send the notification to
261
- */
262
- users: string[];
263
- };
284
+ /**
285
+ * Represents the options for a notification publish
286
+ */
287
+ declare type NotificationOptions_2 = {
288
+ /**
289
+ * A caller specified identifier for the notification
290
+ * This is used to identify the notification in the system when events and responses are received
291
+ */
292
+ correlationId?: string;
293
+ /**
294
+ * The targets to send the notification to
295
+ * This is a set of groups and users that the notification will be sent to
296
+ */
297
+ targets: NotificationTargets;
298
+ /**
299
+ * Optional number of seconds to keep the notification alive
300
+ * After this time the notification will be expired and a delete update will be raised
301
+ */
302
+ ttlSeconds?: number;
303
+ };
304
+ export { NotificationOptions_2 as NotificationOptions }
264
305
 
265
- export declare class PublishError extends CloudNotificationAPIError {
266
- constructor(message?: string, code?: string, cause?: unknown);
267
- }
306
+ /**
307
+ * Represents the response from raising a notification
308
+ */
309
+ export declare type NotificationRaiseResult = {
310
+ /**
311
+ * The unique identifier for the notification
312
+ */
313
+ notificationId: string;
314
+ /**
315
+ * The correlation ID that was provided when raising the notification
316
+ */
317
+ correlationId?: string;
318
+ };
268
319
 
269
- export declare type PublishResult = {
270
- notificationId: string;
271
- correlationId: string | undefined;
272
- };
320
+ export declare class NotificationRetrievalError extends CloudNotificationAPIError {
321
+ constructor(message?: string, code?: string, cause?: unknown);
322
+ }
273
323
 
274
- export declare class SessionNotConnectedError extends CloudNotificationAPIError {
275
- constructor(message?: string, code?: string);
276
- }
324
+ export declare type NotificationsReplayDetail = {
325
+ cursor: string;
326
+ sessionId: string;
327
+ notificationId: string;
328
+ version: number;
329
+ action: 'new' | 'update' | 'delete';
330
+ payload?: unknown;
331
+ correlationId?: string | null;
332
+ timestamp: Date;
333
+ };
277
334
 
278
- export declare type UpdateNotificationEvent = BaseNotificationReceivedEvent & {
279
- action: 'update';
280
- };
335
+ export declare type NotificationsReplayDetails = {
336
+ data: NotificationsReplayDetail[];
337
+ pageInfo: {
338
+ pageStart?: string;
339
+ nextPage?: string;
340
+ hasNextPage: boolean;
341
+ };
342
+ };
281
343
 
282
- export declare type UserGroupWithTopic = {
283
- uuid: string;
284
- name: string;
285
- topic?: string;
286
- };
344
+ /**
345
+ * Represents a set of targets for a notification publish
346
+ */
347
+ export declare type NotificationTargets = {
348
+ /**
349
+ * The groups to send the notification to
350
+ */
351
+ groups: string[];
352
+ /**
353
+ * The users to send the notification to
354
+ */
355
+ users: string[];
356
+ };
357
+
358
+ /**
359
+ * Represents the options for a notification update
360
+ */
361
+ export declare type NotificationUpdateOptions = {
362
+ /**
363
+ * Optional number of seconds to keep the notification alive
364
+ * After this time the notification will be expired and a delete update will be raised
365
+ */
366
+ ttlSeconds?: number;
367
+ };
368
+
369
+ export declare class PublishError extends CloudNotificationAPIError {
370
+ constructor(message?: string, code?: string, cause?: unknown);
371
+ }
372
+
373
+ export declare type PublishResult = {
374
+ notificationId: string;
375
+ correlationId: string | undefined;
376
+ };
377
+
378
+ export declare class SessionNotConnectedError extends CloudNotificationAPIError {
379
+ constructor(message?: string, code?: string);
380
+ }
381
+
382
+ /**
383
+ * Simple set-like structure that allows you to add values with a TTL (time to live).
384
+ * Values are automatically removed from the set after the TTL expires.
385
+ */
386
+ declare class SetWithTTL<T> {
387
+ #private;
388
+ private ttl;
389
+ private store;
390
+ private nextCollection;
391
+ private collectionDelay;
392
+ constructor(ttl: number, collectionCheckInterval?: number);
393
+ get size(): number;
394
+ add(value: T, customTtl?: number): this;
395
+ has(value: T): boolean;
396
+ delete(value: T): this;
397
+ }
398
+
399
+ export declare type UpdateNotificationEvent = BaseNotificationReceivedEvent & {
400
+ action: 'update';
401
+ };
402
+
403
+ export declare type UserGroupWithTopic = {
404
+ uuid: string;
405
+ name: string;
406
+ topic?: string;
407
+ };
287
408
 
288
- export { }
409
+ export { }