@aws-amplify/pubsub
Version:
Pubsub category of aws-amplify
78 lines (77 loc) • 3.1 kB
TypeScript
import Observable from 'zen-observable-ts';
import { ProviderOptions } from '../../types/Provider';
import { CustomUserAgentDetails } from '@aws-amplify/core';
import { GRAPHQL_AUTH_MODE } from '@aws-amplify/auth';
import { AbstractPubSubProvider } from '../PubSubProvider';
import { PubSubContent, PubSubContentObserver } from '../../types/PubSub';
import { SUBSCRIPTION_STATUS } from '../constants';
export declare type ObserverQuery = {
observer: PubSubContentObserver;
query: string;
variables: Record<string, unknown>;
subscriptionState: SUBSCRIPTION_STATUS;
subscriptionReadyCallback?: Function;
subscriptionFailedCallback?: Function;
startAckTimeoutId?: ReturnType<typeof setTimeout>;
};
declare type GraphqlAuthModes = keyof typeof GRAPHQL_AUTH_MODE;
export interface AWSAppSyncRealTimeProviderOptions extends ProviderOptions {
appSyncGraphqlEndpoint?: string;
authenticationType?: GraphqlAuthModes;
query?: string;
variables?: Record<string, unknown>;
apiKey?: string;
region?: string;
graphql_headers?: () => {} | (() => Promise<{}>);
additionalHeaders?: {
[key: string]: string;
};
}
export declare class AWSAppSyncRealTimeProvider extends AbstractPubSubProvider<AWSAppSyncRealTimeProviderOptions> {
private awsRealTimeSocket?;
private socketStatus;
private keepAliveTimeoutId?;
private keepAliveTimeout;
private keepAliveAlertTimeoutId?;
private subscriptionObserverMap;
private promiseArray;
private connectionState;
private readonly connectionStateMonitor;
private readonly reconnectionMonitor;
private connectionStateMonitorSubscription;
constructor(options?: ProviderOptions);
/**
* Mark the socket closed and release all active listeners
*/
close(): void;
getNewWebSocket(url: string, protocol: string): WebSocket;
getProviderName(): string;
newClient(): Promise<any>;
publish(_topics: string[] | string, _msg: PubSubContent, _options?: AWSAppSyncRealTimeProviderOptions): Promise<void>;
private isCustomDomain;
subscribe(_topics: string[] | string, options?: AWSAppSyncRealTimeProviderOptions, customUserAgentDetails?: CustomUserAgentDetails): Observable<Record<string, unknown>>;
protected get isSSLEnabled(): boolean;
private _startSubscriptionWithAWSAppSyncRealTime;
private _logStartSubscriptionError;
private _waitForSubscriptionToBeConnected;
private _sendUnsubscriptionMessage;
private _removeSubscriptionObserver;
private _closeSocketIfRequired;
private _handleIncomingSubscriptionMessage;
private _errorDisconnect;
private _timeoutStartSubscriptionAck;
private _initializeWebSocketConnection;
private _initializeRetryableHandshake;
private _initializeHandshake;
private _awsRealTimeHeaderBasedAuth;
private _awsRealTimeCUPHeader;
private _awsRealTimeOPENIDHeader;
private _awsRealTimeApiKeyHeader;
private _awsRealTimeIAMHeader;
private _customAuthHeader;
/**
* @private
*/
_ensureCredentials(): any;
}
export {};