You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
ldo-compact-fork/packages/solid/src/resource/notifications/NotificationSubscription.ts

51 lines
1.6 KiB

import type { UnexpectedResourceError } from "../../requester/results/error/ErrorResult";
import type { SolidLdoDatasetContext } from "../../SolidLdoDatasetContext";
import type { Resource } from "../Resource";
import type { NotificationMessage } from "./NotificationMessage";
import type { UnsupportedNotificationError } from "./results/NotificationErrors";
import type { SubscribeToNotificationSuccess } from "./results/SubscribeToNotificationSuccess";
import type { UnsubscribeToNotificationSuccess } from "./results/UnsubscribeFromNotificationSuccess";
export type OpenSubscriptionResult =
| SubscribeToNotificationSuccess
| UnsupportedNotificationError
| UnexpectedResourceError;
export type CloseSubscriptionResult =
| UnsubscribeToNotificationSuccess
| UnexpectedResourceError;
/**
* @internal
* Abstract class for notification subscription methods.
*/
export abstract class NotificationSubscription {
protected resource: Resource;
protected onNotification: (message: NotificationMessage) => void;
protected onError?: (err: Error) => void;
protected context: SolidLdoDatasetContext;
constructor(
resource: Resource,
onNotification: (message: NotificationMessage) => void,
onError: ((err: Error) => void) | undefined,
context: SolidLdoDatasetContext,
) {
this.resource = resource;
this.onNotification = onNotification;
this.onError = onError;
this.context = context;
}
/**
* @internal
* Opens the subscription
*/
abstract open(): Promise<OpenSubscriptionResult>;
/**
* @internal
* Closes the subscription
*/
abstract close(): Promise<CloseSubscriptionResult>;
}