@sudoplatform/sudo-notification 1.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/LICENSE +14 -0
- package/README.md +20 -0
- package/cjs/gen/graphqlTypes.js +34 -0
- package/cjs/gen/graphqlTypes.js.map +1 -0
- package/cjs/index.js +10 -0
- package/cjs/index.js.map +1 -0
- package/cjs/private/apiClient.js +139 -0
- package/cjs/private/apiClient.js.map +1 -0
- package/cjs/private/codecs/sudoPlatformPayloadCodec.js +21 -0
- package/cjs/private/codecs/sudoPlatformPayloadCodec.js.map +1 -0
- package/cjs/private/constants.js +10 -0
- package/cjs/private/constants.js.map +1 -0
- package/cjs/private/transformers/buildTypeTransformer.js +30 -0
- package/cjs/private/transformers/buildTypeTransformer.js.map +1 -0
- package/cjs/private/transformers/errorTransformer.js +34 -0
- package/cjs/private/transformers/errorTransformer.js.map +1 -0
- package/cjs/private/transformers/notificationConfigurationTransformer.js +21 -0
- package/cjs/private/transformers/notificationConfigurationTransformer.js.map +1 -0
- package/cjs/private/transformers/notificationEnableStatusTransformer.js +32 -0
- package/cjs/private/transformers/notificationEnableStatusTransformer.js.map +1 -0
- package/cjs/private/transformers/notificationMetadataTransformer.js +17 -0
- package/cjs/private/transformers/notificationMetadataTransformer.js.map +1 -0
- package/cjs/private/types/canonicalPushSubscriptionJSON.js +8 -0
- package/cjs/private/types/canonicalPushSubscriptionJSON.js.map +1 -0
- package/cjs/private/types/notifiableServiceConfig.js +12 -0
- package/cjs/private/types/notifiableServiceConfig.js.map +1 -0
- package/cjs/private/types/notificationServiceConfig.js +17 -0
- package/cjs/private/types/notificationServiceConfig.js.map +1 -0
- package/cjs/private/types/sudoNotificationClientPrivateOptions.js +3 -0
- package/cjs/private/types/sudoNotificationClientPrivateOptions.js.map +1 -0
- package/cjs/public/errors.js +131 -0
- package/cjs/public/errors.js.map +1 -0
- package/cjs/public/index.js +13 -0
- package/cjs/public/index.js.map +1 -0
- package/cjs/public/sudoNotifiableClient.js +106 -0
- package/cjs/public/sudoNotifiableClient.js.map +1 -0
- package/cjs/public/sudoNotificationClient.js +164 -0
- package/cjs/public/sudoNotificationClient.js.map +1 -0
- package/cjs/public/types/buildType.js +18 -0
- package/cjs/public/types/buildType.js.map +1 -0
- package/cjs/public/types/index.js +20 -0
- package/cjs/public/types/index.js.map +1 -0
- package/cjs/public/types/notificationConfiguration.js +13 -0
- package/cjs/public/types/notificationConfiguration.js.map +1 -0
- package/cjs/public/types/notificationDeviceInfo.js +3 -0
- package/cjs/public/types/notificationDeviceInfo.js.map +1 -0
- package/cjs/public/types/notificationEnabledStatus.js +14 -0
- package/cjs/public/types/notificationEnabledStatus.js.map +1 -0
- package/cjs/public/types/notificationFilterItem.js +35 -0
- package/cjs/public/types/notificationFilterItem.js.map +1 -0
- package/cjs/public/types/notificationMetadata.js +22 -0
- package/cjs/public/types/notificationMetadata.js.map +1 -0
- package/cjs/public/types/notificationSchemaEntry.js +26 -0
- package/cjs/public/types/notificationSchemaEntry.js.map +1 -0
- package/cjs/public/types/sudoNotification.js +29 -0
- package/cjs/public/types/sudoNotification.js.map +1 -0
- package/cjs/public/types/sudoNotificationClientOptions.js +8 -0
- package/cjs/public/types/sudoNotificationClientOptions.js.map +1 -0
- package/cjs/public/types/sudoNotificationData.js +25 -0
- package/cjs/public/types/sudoNotificationData.js.map +1 -0
- package/cjs/public/types/sudoNotificationFilterClient.js +8 -0
- package/cjs/public/types/sudoNotificationFilterClient.js.map +1 -0
- package/lib/gen/graphqlTypes.js +31 -0
- package/lib/gen/graphqlTypes.js.map +1 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/private/apiClient.js +135 -0
- package/lib/private/apiClient.js.map +1 -0
- package/lib/private/codecs/sudoPlatformPayloadCodec.js +17 -0
- package/lib/private/codecs/sudoPlatformPayloadCodec.js.map +1 -0
- package/lib/private/constants.js +7 -0
- package/lib/private/constants.js.map +1 -0
- package/lib/private/transformers/buildTypeTransformer.js +26 -0
- package/lib/private/transformers/buildTypeTransformer.js.map +1 -0
- package/lib/private/transformers/errorTransformer.js +30 -0
- package/lib/private/transformers/errorTransformer.js.map +1 -0
- package/lib/private/transformers/notificationConfigurationTransformer.js +17 -0
- package/lib/private/transformers/notificationConfigurationTransformer.js.map +1 -0
- package/lib/private/transformers/notificationEnableStatusTransformer.js +28 -0
- package/lib/private/transformers/notificationEnableStatusTransformer.js.map +1 -0
- package/lib/private/transformers/notificationMetadataTransformer.js +13 -0
- package/lib/private/transformers/notificationMetadataTransformer.js.map +1 -0
- package/lib/private/types/canonicalPushSubscriptionJSON.js +7 -0
- package/lib/private/types/canonicalPushSubscriptionJSON.js.map +1 -0
- package/lib/private/types/notifiableServiceConfig.js +8 -0
- package/lib/private/types/notifiableServiceConfig.js.map +1 -0
- package/lib/private/types/notificationServiceConfig.js +13 -0
- package/lib/private/types/notificationServiceConfig.js.map +1 -0
- package/lib/private/types/sudoNotificationClientPrivateOptions.js +2 -0
- package/lib/private/types/sudoNotificationClientPrivateOptions.js.map +1 -0
- package/lib/public/errors.js +116 -0
- package/lib/public/errors.js.map +1 -0
- package/lib/public/index.js +10 -0
- package/lib/public/index.js.map +1 -0
- package/lib/public/sudoNotifiableClient.js +102 -0
- package/lib/public/sudoNotifiableClient.js.map +1 -0
- package/lib/public/sudoNotificationClient.js +160 -0
- package/lib/public/sudoNotificationClient.js.map +1 -0
- package/lib/public/types/buildType.js +15 -0
- package/lib/public/types/buildType.js.map +1 -0
- package/lib/public/types/index.js +17 -0
- package/lib/public/types/index.js.map +1 -0
- package/lib/public/types/notificationConfiguration.js +9 -0
- package/lib/public/types/notificationConfiguration.js.map +1 -0
- package/lib/public/types/notificationDeviceInfo.js +2 -0
- package/lib/public/types/notificationDeviceInfo.js.map +1 -0
- package/lib/public/types/notificationEnabledStatus.js +11 -0
- package/lib/public/types/notificationEnabledStatus.js.map +1 -0
- package/lib/public/types/notificationFilterItem.js +31 -0
- package/lib/public/types/notificationFilterItem.js.map +1 -0
- package/lib/public/types/notificationMetadata.js +18 -0
- package/lib/public/types/notificationMetadata.js.map +1 -0
- package/lib/public/types/notificationSchemaEntry.js +22 -0
- package/lib/public/types/notificationSchemaEntry.js.map +1 -0
- package/lib/public/types/sudoNotification.js +25 -0
- package/lib/public/types/sudoNotification.js.map +1 -0
- package/lib/public/types/sudoNotificationClientOptions.js +7 -0
- package/lib/public/types/sudoNotificationClientOptions.js.map +1 -0
- package/lib/public/types/sudoNotificationData.js +21 -0
- package/lib/public/types/sudoNotificationData.js.map +1 -0
- package/lib/public/types/sudoNotificationFilterClient.js +7 -0
- package/lib/public/types/sudoNotificationFilterClient.js.map +1 -0
- package/package.json +107 -0
- package/types/gen/graphqlTypes.d.ts +229 -0
- package/types/index.d.ts +1 -0
- package/types/private/apiClient.d.ts +20 -0
- package/types/private/codecs/sudoPlatformPayloadCodec.d.ts +12 -0
- package/types/private/constants.d.ts +1 -0
- package/types/private/transformers/buildTypeTransformer.d.ts +6 -0
- package/types/private/transformers/errorTransformer.d.ts +4 -0
- package/types/private/transformers/notificationConfigurationTransformer.d.ts +6 -0
- package/types/private/transformers/notificationEnableStatusTransformer.d.ts +6 -0
- package/types/private/transformers/notificationMetadataTransformer.d.ts +5 -0
- package/types/private/types/canonicalPushSubscriptionJSON.d.ts +17 -0
- package/types/private/types/notifiableServiceConfig.d.ts +5 -0
- package/types/private/types/notificationServiceConfig.d.ts +7 -0
- package/types/private/types/sudoNotificationClientPrivateOptions.d.ts +13 -0
- package/types/public/errors.d.ts +81 -0
- package/types/public/index.d.ts +4 -0
- package/types/public/sudoNotifiableClient.d.ts +69 -0
- package/types/public/sudoNotificationClient.d.ts +109 -0
- package/types/public/types/buildType.d.ts +8 -0
- package/types/public/types/index.d.ts +11 -0
- package/types/public/types/notificationConfiguration.d.ts +6 -0
- package/types/public/types/notificationDeviceInfo.d.ts +41 -0
- package/types/public/types/notificationEnabledStatus.d.ts +4 -0
- package/types/public/types/notificationFilterItem.d.ts +13 -0
- package/types/public/types/notificationMetadata.d.ts +22 -0
- package/types/public/types/notificationSchemaEntry.d.ts +18 -0
- package/types/public/types/sudoNotification.d.ts +25 -0
- package/types/public/types/sudoNotificationClientOptions.d.ts +11 -0
- package/types/public/types/sudoNotificationData.d.ts +14 -0
- package/types/public/types/sudoNotificationFilterClient.d.ts +17 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
class NotificationError extends Error {
|
|
7
|
+
constructor(msg) {
|
|
8
|
+
super(msg);
|
|
9
|
+
this.name = this.constructor.name;
|
|
10
|
+
if (Error.captureStackTrace) {
|
|
11
|
+
Error.captureStackTrace(this, this.constructor);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The configuration has not been initialized for the Notification Client.
|
|
17
|
+
*/
|
|
18
|
+
export class NotificationServiceConfigNotFoundError extends NotificationError {
|
|
19
|
+
constructor(msg) {
|
|
20
|
+
super(msg);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A specified notifiable service is not configured as notifiable.
|
|
25
|
+
*/
|
|
26
|
+
export class InvalidConfigurationError extends NotificationError {
|
|
27
|
+
constructor(serviceName) {
|
|
28
|
+
super(serviceName);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The PushSubscription passed to the SDK when calling registerPushSubscription
|
|
33
|
+
* or updatePushSubscription is not formed as expected. The PushSubscription
|
|
34
|
+
* must have an endpoint and auth and p256dh keys.
|
|
35
|
+
*/
|
|
36
|
+
export class InvalidPushSubscriptionError extends NotificationError {
|
|
37
|
+
constructor(property) {
|
|
38
|
+
super(property);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The device or push subscription is already registered.
|
|
43
|
+
*/
|
|
44
|
+
export class DeviceAlreadyRegisteredError extends NotificationError {
|
|
45
|
+
constructor(msg) {
|
|
46
|
+
super(msg);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The device or push subscription could not be found
|
|
51
|
+
*/
|
|
52
|
+
export class DeviceNotFoundError extends NotificationError {
|
|
53
|
+
constructor(msg) {
|
|
54
|
+
super(msg);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The device or push subscription could not be registered
|
|
59
|
+
*/
|
|
60
|
+
export class DeviceCreateError extends NotificationError {
|
|
61
|
+
constructor(msg) {
|
|
62
|
+
super(msg);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The device or push subscription could not be read
|
|
67
|
+
*/
|
|
68
|
+
export class DeviceReadError extends NotificationError {
|
|
69
|
+
constructor(msg) {
|
|
70
|
+
super(msg);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The device or push subscription could not be updated
|
|
75
|
+
*/
|
|
76
|
+
export class DeviceUpdateError extends NotificationError {
|
|
77
|
+
constructor(msg) {
|
|
78
|
+
super(msg);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The device or push subscription could not be deleted
|
|
83
|
+
*/
|
|
84
|
+
export class DeviceDeleteError extends NotificationError {
|
|
85
|
+
constructor(msg) {
|
|
86
|
+
super(msg);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* More than one SudoNotificationFilterClient for the given service name is
|
|
91
|
+
* being registered. At most one is permitted per service.
|
|
92
|
+
*/
|
|
93
|
+
export class DuplicateNotificationFilterClientError extends NotificationError {
|
|
94
|
+
constructor(serviceName) {
|
|
95
|
+
super(serviceName);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* More than one SudoNotifiableClient for the given service name is
|
|
100
|
+
* being registered. At most one is permitted per service.
|
|
101
|
+
*/
|
|
102
|
+
export class DuplicateNotifiableClientError extends NotificationError {
|
|
103
|
+
constructor(serviceName) {
|
|
104
|
+
super(serviceName);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The metadata schema information passed when setting notification configuration
|
|
109
|
+
* setting is not valid.
|
|
110
|
+
*/
|
|
111
|
+
export class SchemaValidationError extends NotificationError {
|
|
112
|
+
constructor(message) {
|
|
113
|
+
super(message);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/public/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,iBAAkB,SAAQ,KAAK;IACnC,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sCAAuC,SAAQ,iBAAiB;IAC3E,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAC9D,YAAY,WAAmB;QAC7B,KAAK,CAAC,WAAW,CAAC,CAAA;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,4BAA6B,SAAQ,iBAAiB;IACjE,YAAY,QAAgB;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAA;IACjB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,iBAAiB;IACjE,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IACxD,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IACtD,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IACpD,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IACtD,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,iBAAiB;IACtD,YAAY,GAAY;QACtB,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,sCAAuC,SAAQ,iBAAiB;IAC3E,YAAY,WAAmB;QAC7B,KAAK,CAAC,WAAW,CAAC,CAAA;IACpB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,8BAA+B,SAAQ,iBAAiB;IACnE,YAAY,WAAmB;QAC7B,KAAK,CAAC,WAAW,CAAC,CAAA;IACpB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IAC1D,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export * from './errors';
|
|
7
|
+
export * from './sudoNotifiableClient';
|
|
8
|
+
export * from './sudoNotificationClient';
|
|
9
|
+
export * from './types/index';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,UAAU,CAAA;AACxB,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DefaultLogger } from '@sudoplatform/sudo-common';
|
|
7
|
+
import { isLeft } from 'fp-ts/lib/Either';
|
|
8
|
+
import { PathReporter } from 'io-ts/PathReporter';
|
|
9
|
+
import { SudoPlatformPayloadCodec } from '../private/codecs/sudoPlatformPayloadCodec';
|
|
10
|
+
import { DuplicateNotifiableClientError } from './errors';
|
|
11
|
+
import { SudoNotificationData } from './types/sudoNotificationData';
|
|
12
|
+
/**
|
|
13
|
+
* Client used to decode notification payload data specific to Sudo Platform services used by an application
|
|
14
|
+
*
|
|
15
|
+
* This client is light weight and suitable for use within a Notification Extension
|
|
16
|
+
*/
|
|
17
|
+
export class DefaultSudoNotifiableClient {
|
|
18
|
+
/**
|
|
19
|
+
* Construct a new instance
|
|
20
|
+
*
|
|
21
|
+
* @param notifiableClients
|
|
22
|
+
* Array of SudoNotifiableClient implementations. Provide one for each Sudo Platform
|
|
23
|
+
* notification emitting service consumed by your application.
|
|
24
|
+
*
|
|
25
|
+
* @throws {@link DuplicateNotifiableClientError}
|
|
26
|
+
* if more than one {@link SudoNotifiableClient} is provided for a particular
|
|
27
|
+
* Sudo Platform service.
|
|
28
|
+
*/
|
|
29
|
+
constructor(notifiableClients, logger = new DefaultLogger('DefaultSudoNotifiableClient')) {
|
|
30
|
+
this.logger = logger;
|
|
31
|
+
this.notifiableClients = {};
|
|
32
|
+
notifiableClients.forEach((notifiableClient) => {
|
|
33
|
+
if (this.notifiableClients[notifiableClient.serviceName]) {
|
|
34
|
+
throw new DuplicateNotifiableClientError(notifiableClient.serviceName);
|
|
35
|
+
}
|
|
36
|
+
this.notifiableClients[notifiableClient.serviceName] = notifiableClient;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Extract encoded Sudo Platform notification specific data from a Web Push API PushEvent
|
|
41
|
+
* if it is present.
|
|
42
|
+
*
|
|
43
|
+
* @param event PushEvent to extract data from
|
|
44
|
+
*
|
|
45
|
+
* @returns If the notification payload contains Sudo Platform notification specific data, a
|
|
46
|
+
* {@link SudoNotificationData} is returned that should then be passed to {@link decodeData}.
|
|
47
|
+
* If no Sudo Platform notification specific data is present, then undefined is returned.
|
|
48
|
+
*/
|
|
49
|
+
extractData(event) {
|
|
50
|
+
let payload;
|
|
51
|
+
let payloadErr;
|
|
52
|
+
try {
|
|
53
|
+
payload = event.data?.json();
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
payloadErr = err;
|
|
57
|
+
}
|
|
58
|
+
if (!payload) {
|
|
59
|
+
this.logger.debug('Not handling notification that does not contain a JSON payload', { err: payloadErr, data: event.data });
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const sudoplatformPayloadDecodeResult = SudoPlatformPayloadCodec.decode(payload);
|
|
63
|
+
if (isLeft(sudoplatformPayloadDecodeResult)) {
|
|
64
|
+
this.logger.debug('Not handling notification that cannot be decoded as a SudoPlatform payload', { errors: PathReporter.report(sudoplatformPayloadDecodeResult) });
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
const sudoplatform = sudoplatformPayloadDecodeResult.right.sudoplatform;
|
|
68
|
+
const serviceName = sudoplatform.servicename;
|
|
69
|
+
if (!serviceName) {
|
|
70
|
+
this.logger.debug('Not handling notification without sudoplatform.servicename');
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
const data = sudoplatform.data;
|
|
74
|
+
return new SudoNotificationData(serviceName, data);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Decode Sudo Notification specific data to a service specific instance of a SudoNotification
|
|
78
|
+
* Calls the {@link SudoNotifiableClient.decode} method of the service specific
|
|
79
|
+
* {@link SudoNotifiableClient}
|
|
80
|
+
*
|
|
81
|
+
* @param data {@link SudoNotificationData} to decode
|
|
82
|
+
*
|
|
83
|
+
* @returns
|
|
84
|
+
* Service specific implementation of {@link SudoNotification} or undefined if
|
|
85
|
+
* data contains no data to decode
|
|
86
|
+
*/
|
|
87
|
+
decodeData(data) {
|
|
88
|
+
const notifiableClient = this.notifiableClients[data.serviceName];
|
|
89
|
+
if (!notifiableClient) {
|
|
90
|
+
this.logger.debug(`No registered notifiable client for service ${data.serviceName} notification`, { registered: Object.keys(this.notifiableClients) });
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
const dataToDecode = data.data;
|
|
94
|
+
if (!dataToDecode) {
|
|
95
|
+
this.logger.debug(`No data to decode for ${data.serviceName} notification`);
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
this.logger.debug(`Decoding notification for service ${data.serviceName}`);
|
|
99
|
+
return notifiableClient.decode(dataToDecode);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=sudoNotifiableClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sudoNotifiableClient.js","sourceRoot":"","sources":["../../src/public/sudoNotifiableClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DefaultConfigurationManager, DefaultLogger, NotSignedInError, OperationNotImplementedError, } from '@sudoplatform/sudo-common';
|
|
7
|
+
import { ClientEnvType } from '../gen/graphqlTypes';
|
|
8
|
+
import { ApiClient } from '../private/apiClient';
|
|
9
|
+
import { SERVICE_NAME } from '../private/constants';
|
|
10
|
+
import { BuildTypeTransformer } from '../private/transformers/buildTypeTransformer';
|
|
11
|
+
import { NotificationConfigurationTransformer } from '../private/transformers/notificationConfigurationTransformer';
|
|
12
|
+
import { NotificationMetadataTransformer } from '../private/transformers/notificationMetadataTransformer';
|
|
13
|
+
import { NotifiableServiceConfigCodec, } from '../private/types/notifiableServiceConfig';
|
|
14
|
+
import { NotificationServiceConfigCodec, } from '../private/types/notificationServiceConfig';
|
|
15
|
+
import { DuplicateNotificationFilterClientError, InvalidConfigurationError, InvalidPushSubscriptionError, NotificationServiceConfigNotFoundError, } from './errors';
|
|
16
|
+
/**
|
|
17
|
+
* Default {@link SudoNotificationClient} for use by Sudo Platform applications.
|
|
18
|
+
*/
|
|
19
|
+
export class DefaultSudoNotificationClient {
|
|
20
|
+
/**
|
|
21
|
+
* Constructor
|
|
22
|
+
*
|
|
23
|
+
* @param opts Constructor options
|
|
24
|
+
* {@link SudoNotificationClientOptions.sudoUserClient} user client to authenticate the user
|
|
25
|
+
* {@link SudoNotificationClientOptions.notifiableServices} array of {@link SudoNotificationFilterClient}s from
|
|
26
|
+
* other notification enabled Sudo Platform SDKs.
|
|
27
|
+
*
|
|
28
|
+
* @throws
|
|
29
|
+
* NotificationServiceConfigNotFoundError if the Sudo Platform Notification Service is
|
|
30
|
+
* deployed in the Sudo Platform environment in which the SDK is being used.
|
|
31
|
+
*
|
|
32
|
+
* @throws
|
|
33
|
+
* InvalidConfigurationError if any of the services identified in opts.notifiableServices does
|
|
34
|
+
* not have notifications enabled.
|
|
35
|
+
*/
|
|
36
|
+
constructor(opts) {
|
|
37
|
+
this.notifiableServices = [];
|
|
38
|
+
this.logger = new DefaultLogger('DefaultSudoNotificationClient');
|
|
39
|
+
const privateOptions = opts;
|
|
40
|
+
this.sudoUserClient = opts.sudoUserClient;
|
|
41
|
+
this.apiClient = privateOptions?.apiClient ?? new ApiClient();
|
|
42
|
+
const configurationManager = privateOptions.configurationManager ??
|
|
43
|
+
DefaultConfigurationManager.getInstance();
|
|
44
|
+
try {
|
|
45
|
+
this.notificationServiceConfig =
|
|
46
|
+
configurationManager.bindConfigSet(NotificationServiceConfigCodec, SERVICE_NAME);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
this.logger.error('unable to read notificationService configuration from sudoplatform.json', { err });
|
|
50
|
+
throw new NotificationServiceConfigNotFoundError();
|
|
51
|
+
}
|
|
52
|
+
for (const notifiableService of opts.notifiableServices) {
|
|
53
|
+
const notifiableServiceConfig = configurationManager.bindConfigSet(NotifiableServiceConfigCodec, notifiableService.serviceName);
|
|
54
|
+
if (!notifiableServiceConfig.notifiable) {
|
|
55
|
+
throw new InvalidConfigurationError(notifiableService.serviceName);
|
|
56
|
+
}
|
|
57
|
+
if (this.notifiableServices.some((n) => n.serviceName === notifiableService.serviceName)) {
|
|
58
|
+
throw new DuplicateNotificationFilterClientError(notifiableService.serviceName);
|
|
59
|
+
}
|
|
60
|
+
this.notifiableServices.push(notifiableService);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async registerPushSubscription(deviceInfo, pushSubscription) {
|
|
64
|
+
await this.checkIsSignedInOrThrow();
|
|
65
|
+
const token = this.canonicalPushSubscriptionJson(pushSubscription.toJSON());
|
|
66
|
+
const tokenString = JSON.stringify(token);
|
|
67
|
+
await this.apiClient.registerAppOnDevice({
|
|
68
|
+
standardToken: tokenString,
|
|
69
|
+
build: BuildTypeTransformer.toGraphQL(deviceInfo.buildType),
|
|
70
|
+
bundleId: deviceInfo.bundleId,
|
|
71
|
+
version: deviceInfo.appVersion,
|
|
72
|
+
locale: deviceInfo.locale,
|
|
73
|
+
clientEnv: ClientEnvType.Web,
|
|
74
|
+
deviceId: deviceInfo.deviceId,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
async updatePushSubscription(deviceInfo, pushSubscription) {
|
|
78
|
+
await this.checkIsSignedInOrThrow();
|
|
79
|
+
const token = this.canonicalPushSubscriptionJson(pushSubscription.toJSON());
|
|
80
|
+
const tokenString = JSON.stringify(token);
|
|
81
|
+
await this.apiClient.updateDeviceInfo({
|
|
82
|
+
standardToken: tokenString,
|
|
83
|
+
build: BuildTypeTransformer.toGraphQL(deviceInfo.buildType),
|
|
84
|
+
bundleId: deviceInfo.bundleId,
|
|
85
|
+
version: deviceInfo.appVersion,
|
|
86
|
+
locale: deviceInfo.locale,
|
|
87
|
+
deviceId: deviceInfo.deviceId,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async deregisterPushSubscription(deviceInfo) {
|
|
91
|
+
await this.checkIsSignedInOrThrow();
|
|
92
|
+
await this.apiClient.deleteAppFromDevice({
|
|
93
|
+
bundleId: deviceInfo.bundleId,
|
|
94
|
+
deviceId: deviceInfo.deviceId,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
async getNotificationConfiguration(deviceInfo) {
|
|
98
|
+
await this.checkIsSignedInOrThrow();
|
|
99
|
+
const settings = await this.apiClient.getNotificationSettings({
|
|
100
|
+
bundleId: deviceInfo.bundleId,
|
|
101
|
+
deviceId: deviceInfo.deviceId,
|
|
102
|
+
});
|
|
103
|
+
return NotificationConfigurationTransformer.toAPI(settings);
|
|
104
|
+
}
|
|
105
|
+
async setNotificationConfiguration(deviceInfo, config) {
|
|
106
|
+
await this.checkIsSignedInOrThrow();
|
|
107
|
+
const services = this.notifiableServices
|
|
108
|
+
.map((client) => client.getSchema())
|
|
109
|
+
.map((schema) => NotificationMetadataTransformer.toGraphQL(schema));
|
|
110
|
+
await this.apiClient.updateNotificationSettings({
|
|
111
|
+
bundleId: deviceInfo.bundleId,
|
|
112
|
+
deviceId: deviceInfo.deviceId,
|
|
113
|
+
filter: NotificationConfigurationTransformer.toGraphQLFilters(config),
|
|
114
|
+
services,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/** @ignore */
|
|
118
|
+
async sendTestNotification(input) {
|
|
119
|
+
if (!this.notificationServiceConfig.testNotificationsAvailable) {
|
|
120
|
+
throw new OperationNotImplementedError();
|
|
121
|
+
}
|
|
122
|
+
await this.checkIsSignedInOrThrow();
|
|
123
|
+
return await this.apiClient.sendTestNotification(input);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Visible for testing
|
|
127
|
+
*
|
|
128
|
+
* @ignore
|
|
129
|
+
*/
|
|
130
|
+
canonicalPushSubscriptionJson(json) {
|
|
131
|
+
if (!json.endpoint) {
|
|
132
|
+
throw new InvalidPushSubscriptionError('endpoint');
|
|
133
|
+
}
|
|
134
|
+
const authKey = json.keys?.['auth'];
|
|
135
|
+
if (!authKey) {
|
|
136
|
+
throw new InvalidPushSubscriptionError('keys.auth');
|
|
137
|
+
}
|
|
138
|
+
const p256DHKey = json.keys?.['p256dh'];
|
|
139
|
+
if (!p256DHKey) {
|
|
140
|
+
throw new InvalidPushSubscriptionError('keys.p256dh');
|
|
141
|
+
}
|
|
142
|
+
const canonical = {
|
|
143
|
+
endpoint: json.endpoint,
|
|
144
|
+
keys: {
|
|
145
|
+
auth: authKey,
|
|
146
|
+
p256dh: p256DHKey,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
if (json.expirationTime !== undefined && json.expirationTime !== null) {
|
|
150
|
+
canonical.expirationTime = json.expirationTime;
|
|
151
|
+
}
|
|
152
|
+
return canonical;
|
|
153
|
+
}
|
|
154
|
+
async checkIsSignedInOrThrow() {
|
|
155
|
+
if (!(await this.sudoUserClient.isSignedIn())) {
|
|
156
|
+
throw new NotSignedInError();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=sudoNotificationClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sudoNotificationClient.js","sourceRoot":"","sources":["../../src/public/sudoNotificationClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,2BAA2B,EAC3B,aAAa,EACb,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAA;AACnF,OAAO,EAAE,oCAAoC,EAAE,MAAM,8DAA8D,CAAA;AACnH,OAAO,EAAE,+BAA+B,EAAE,MAAM,yDAAyD,CAAA;AAEzG,OAAO,EAEL,4BAA4B,GAC7B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAEL,8BAA8B,GAC/B,MAAM,4CAA4C,CAAA;AAEnD,OAAO,EACL,sCAAsC,EACtC,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,UAAU,CAAA;AAsFjB;;GAEG;AACH,MAAM,OAAO,6BAA6B;IAOxC;;;;;;;;;;;;;;;OAeG;IACH,YAAmB,IAAmC;QApBrC,uBAAkB,GAAmC,EAAE,CAAA;QAEvD,WAAM,GAAG,IAAI,aAAa,CAAC,+BAA+B,CAAC,CAAA;QAmB1E,MAAM,cAAc,GAAG,IAA4C,CAAA;QAEnE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAEzC,IAAI,CAAC,SAAS,GAAG,cAAc,EAAE,SAAS,IAAI,IAAI,SAAS,EAAE,CAAA;QAE7D,MAAM,oBAAoB,GACxB,cAAc,CAAC,oBAAoB;YACnC,2BAA2B,CAAC,WAAW,EAAE,CAAA;QAE3C,IAAI,CAAC;YACH,IAAI,CAAC,yBAAyB;gBAC5B,oBAAoB,CAAC,aAAa,CAChC,8BAA8B,EAC9B,YAAY,CACb,CAAA;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,yEAAyE,EACzE,EAAE,GAAG,EAAE,CACR,CAAA;YACD,MAAM,IAAI,sCAAsC,EAAE,CAAA;QACpD,CAAC;QAED,KAAK,MAAM,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxD,MAAM,uBAAuB,GAC3B,oBAAoB,CAAC,aAAa,CAChC,4BAA4B,EAC5B,iBAAiB,CAAC,WAAW,CAC9B,CAAA;YACH,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,CAAC;gBACxC,MAAM,IAAI,yBAAyB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;YACpE,CAAC;YAED,IACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,iBAAiB,CAAC,WAAW,CACvD,EACD,CAAC;gBACD,MAAM,IAAI,sCAAsC,CAC9C,iBAAiB,CAAC,WAAW,CAC9B,CAAA;YACH,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,UAAkC,EAClC,gBAAkC;QAElC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEzC,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;YACvC,aAAa,EAAE,WAAW;YAC1B,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;YAC3D,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,OAAO,EAAE,UAAU,CAAC,UAAU;YAC9B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,SAAS,EAAE,aAAa,CAAC,GAAG;YAC5B,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,sBAAsB,CACjC,UAAkC,EAClC,gBAAkC;QAElC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEzC,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;YACpC,aAAa,EAAE,WAAW;YAC1B,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;YAC3D,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,OAAO,EAAE,UAAU,CAAC,UAAU;YAC9B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,0BAA0B,CACrC,UAAkC;QAElC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEnC,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;YACvC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,4BAA4B,CACvC,UAAkC;QAElC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;YAC5D,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAA;QAEF,OAAO,oCAAoC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7D,CAAC;IAEM,KAAK,CAAC,4BAA4B,CACvC,UAAkC,EAClC,MAAiC;QAEjC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB;aACrC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;aACnC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,+BAA+B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QAErE,MAAM,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC;YAC9C,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,MAAM,EAAE,oCAAoC,CAAC,gBAAgB,CAAC,MAAM,CAAC;YACrE,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAED,cAAc;IACP,KAAK,CAAC,oBAAoB,CAC/B,KAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,0BAA0B,EAAE,CAAC;YAC/D,MAAM,IAAI,4BAA4B,EAAE,CAAA;QAC1C,CAAC;QAED,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEnC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;IACzD,CAAC;IAED;;;;OAIG;IACI,6BAA6B,CAClC,IAA0B;QAE1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,4BAA4B,CAAC,UAAU,CAAC,CAAA;QACpD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,4BAA4B,CAAC,WAAW,CAAC,CAAA;QACrD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,4BAA4B,CAAC,aAAa,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,SAAS,GAAkC;YAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,SAAS;aAClB;SACF,CAAA;QACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACtE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAChD,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,gBAAgB,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Build type fo the host application. Allows use of separate VAPID
|
|
8
|
+
* keys between debug and release deployments of the same application.
|
|
9
|
+
*/
|
|
10
|
+
export var BuildType;
|
|
11
|
+
(function (BuildType) {
|
|
12
|
+
BuildType["RELEASE"] = "RELEASE";
|
|
13
|
+
BuildType["DEBUG"] = "DEBUG";
|
|
14
|
+
})(BuildType || (BuildType = {}));
|
|
15
|
+
//# sourceMappingURL=buildType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildType.js","sourceRoot":"","sources":["../../../src/public/types/buildType.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AACjB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export * from './buildType';
|
|
7
|
+
export * from './notificationConfiguration';
|
|
8
|
+
export * from './notificationDeviceInfo';
|
|
9
|
+
export * from './notificationEnabledStatus';
|
|
10
|
+
export * from './notificationFilterItem';
|
|
11
|
+
export * from './notificationMetadata';
|
|
12
|
+
export * from './notificationSchemaEntry';
|
|
13
|
+
export * from './sudoNotification';
|
|
14
|
+
export * from './sudoNotificationClientOptions';
|
|
15
|
+
export * from './sudoNotificationData';
|
|
16
|
+
export * from './sudoNotificationFilterClient';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/public/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,aAAa,CAAA;AAC3B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wBAAwB,CAAA;AACtC,cAAc,gCAAgC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationConfiguration.js","sourceRoot":"","sources":["../../../src/public/types/notificationConfiguration.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,yBAAyB;IAGpC,YAAmB,OAAiC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationDeviceInfo.js","sourceRoot":"","sources":["../../../src/public/types/notificationDeviceInfo.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export var NotificationEnableStatus;
|
|
7
|
+
(function (NotificationEnableStatus) {
|
|
8
|
+
NotificationEnableStatus["Enable"] = "ENABLE";
|
|
9
|
+
NotificationEnableStatus["Disable"] = "DISABLE";
|
|
10
|
+
})(NotificationEnableStatus || (NotificationEnableStatus = {}));
|
|
11
|
+
//# sourceMappingURL=notificationEnabledStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationEnabledStatus.js","sourceRoot":"","sources":["../../../src/public/types/notificationEnabledStatus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,wBAGX;AAHD,WAAY,wBAAwB;IAClC,6CAAiB,CAAA;IACjB,+CAAmB,CAAA;AACrB,CAAC,EAHW,wBAAwB,KAAxB,wBAAwB,QAGnC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { NotificationEnableStatus } from './notificationEnabledStatus';
|
|
7
|
+
export class NotificationFilterItem {
|
|
8
|
+
constructor(name, status, rules, meta) {
|
|
9
|
+
status ?? (status = true);
|
|
10
|
+
this._name = name;
|
|
11
|
+
this._status = status
|
|
12
|
+
? NotificationEnableStatus.Enable
|
|
13
|
+
: NotificationEnableStatus.Disable;
|
|
14
|
+
this._rules = rules || NotificationFilterItem.DEFAULT_RULE_STRING;
|
|
15
|
+
this._meta = meta ?? '';
|
|
16
|
+
}
|
|
17
|
+
get name() {
|
|
18
|
+
return this._name;
|
|
19
|
+
}
|
|
20
|
+
get status() {
|
|
21
|
+
return this._status;
|
|
22
|
+
}
|
|
23
|
+
get rules() {
|
|
24
|
+
return this._rules;
|
|
25
|
+
}
|
|
26
|
+
get meta() {
|
|
27
|
+
return this._meta;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
NotificationFilterItem.DEFAULT_RULE_STRING = '{"==": [1, 1]}';
|
|
31
|
+
//# sourceMappingURL=notificationFilterItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationFilterItem.js","sourceRoot":"","sources":["../../../src/public/types/notificationFilterItem.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAEtE,MAAM,OAAO,sBAAsB;IAQjC,YACE,IAAY,EACZ,MAA2B,EAC3B,KAAyB,EACzB,IAAwB;QAExB,MAAM,KAAN,MAAM,GAAK,IAAI,EAAA;QAEf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,OAAO,GAAG,MAAM;YACnB,CAAC,CAAC,wBAAwB,CAAC,MAAM;YACjC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAA;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,sBAAsB,CAAC,mBAAmB,CAAA;QACjE,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;IACzB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;;AArCsB,0CAAmB,GAAG,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Definition of all filterable notification properties of a specific
|
|
3
|
+
* service.
|
|
4
|
+
*/
|
|
5
|
+
export class NotificationMetadata {
|
|
6
|
+
constructor(
|
|
7
|
+
/**
|
|
8
|
+
* Name of service for the implementing Sudo Platform SDK. Matches the corresponding service's configuration
|
|
9
|
+
* section within sudoplatformconfig.json
|
|
10
|
+
*/
|
|
11
|
+
serviceName,
|
|
12
|
+
/** Array of schema entries, one for each filterable property */
|
|
13
|
+
schema) {
|
|
14
|
+
this.serviceName = serviceName;
|
|
15
|
+
this.schema = schema;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=notificationMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationMetadata.js","sourceRoot":"","sources":["../../../src/public/types/notificationMetadata.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC/B;IACE;;;OAGG;IACa,WAAmB;IACnC,gEAAgE;IAChD,MAA8C;QAF9C,gBAAW,GAAX,WAAW,CAAQ;QAEnB,WAAM,GAAN,MAAM,CAAwC;IAC7D,CAAC;CACL"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Schema of a single filterable property of a notification
|
|
8
|
+
*/
|
|
9
|
+
export class NotificationSchemaEntry {
|
|
10
|
+
constructor(
|
|
11
|
+
/** Description of the filterable property */
|
|
12
|
+
description,
|
|
13
|
+
/** Name of the filterable property */
|
|
14
|
+
fieldName,
|
|
15
|
+
/** Type of the filterable property */
|
|
16
|
+
type) {
|
|
17
|
+
this.description = description;
|
|
18
|
+
this.fieldName = fieldName;
|
|
19
|
+
this.type = type;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=notificationSchemaEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationSchemaEntry.js","sourceRoot":"","sources":["../../../src/public/types/notificationSchemaEntry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAClC;IACE,6CAA6C;IAC7B,WAAmB;IACnC,sCAAsC;IACtB,SAAiB;IACjC,sCAAsC;IACtB,IAAY;QAJZ,gBAAW,GAAX,WAAW,CAAQ;QAEnB,cAAS,GAAT,SAAS,CAAQ;QAEjB,SAAI,GAAJ,IAAI,CAAQ;IAC3B,CAAC;CACL"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Base SudoNotification class. Service specific SDKs provide concrete classes extending this
|
|
8
|
+
* base class that will be returned by SudoNotifiableClient.decodeData.
|
|
9
|
+
*/
|
|
10
|
+
export class SudoNotification {
|
|
11
|
+
constructor(
|
|
12
|
+
/**
|
|
13
|
+
* Name of service for the implementing Sudo Platform SDK. Matches the corresponding
|
|
14
|
+
* service's configuration section within sudoplatformconfig.json
|
|
15
|
+
*/
|
|
16
|
+
serviceName,
|
|
17
|
+
/**
|
|
18
|
+
* Service specific type of notification.
|
|
19
|
+
*/
|
|
20
|
+
type) {
|
|
21
|
+
this.serviceName = serviceName;
|
|
22
|
+
this.type = type;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=sudoNotification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sudoNotification.js","sourceRoot":"","sources":["../../../src/public/types/sudoNotification.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,OAAgB,gBAAgB;IACpC;IACE;;;OAGG;IACa,WAAmB;IAEnC;;OAEG;IACa,IAAY;QALZ,gBAAW,GAAX,WAAW,CAAQ;QAKnB,SAAI,GAAJ,IAAI,CAAQ;IAC3B,CAAC;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sudoNotificationClientOptions.js","sourceRoot":"","sources":["../../../src/public/types/sudoNotificationClientOptions.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025 Anonyome Labs, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export class SudoNotificationData {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param serviceName
|
|
10
|
+
* Name of service for the implementing Sudo Platform SDK. Matches the corresponding
|
|
11
|
+
* service's configuration section within sudoplatformconfig.json
|
|
12
|
+
*
|
|
13
|
+
* @param data
|
|
14
|
+
* Opaque, serialized service specific notification data
|
|
15
|
+
*/
|
|
16
|
+
constructor(serviceName, data) {
|
|
17
|
+
this.serviceName = serviceName;
|
|
18
|
+
this.data = data;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=sudoNotificationData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sudoNotificationData.js","sourceRoot":"","sources":["../../../src/public/types/sudoNotificationData.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAO,oBAAoB;IAC/B;;;;;;;;OAQG;IACH,YACkB,WAAmB,EACnB,IAAa;QADb,gBAAW,GAAX,WAAW,CAAQ;QACnB,SAAI,GAAJ,IAAI,CAAS;IAC5B,CAAC;CACL"}
|