@ckeditor/ckeditor-cloud-services-collaboration 52.1.4 → 52.1.6
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/package.json +1 -1
- package/src/ckeditorcloudserviceserror.d.ts +8 -0
- package/src/ckeditorcloudserviceserror.js +1 -1
- package/src/ckeditorcloudservicesservererror.d.ts +15 -0
- package/src/ckeditorcloudservicesservererror.js +1 -1
- package/src/collaborativeeditingservice/collaborativeeditingservice.d.ts +127 -0
- package/src/collaborativeeditingservice/collaborativeeditingservice.js +1 -1
- package/src/collaborativeeditingservice/descriptors/operationmetadatadescriptor.d.ts +18 -0
- package/src/collaborativeeditingservice/descriptors/operationmetadatadescriptor.js +1 -1
- package/src/collaborativeeditingservice/helpers/operationmetadatahelpers.d.ts +11 -0
- package/src/collaborativeeditingservice/helpers/operationmetadatahelpers.js +1 -1
- package/src/collaborativeeditingservice/messages/collaborativeeditingconnectmessage.d.ts +24 -0
- package/src/collaborativeeditingservice/messages/collaborativeeditingconnectmessage.js +1 -1
- package/src/collaborativeeditingservice/messages/collaborativeeditingreconnectmessage.d.ts +19 -0
- package/src/collaborativeeditingservice/messages/collaborativeeditingreconnectmessage.js +1 -1
- package/src/collaborativeeditingservice/messages/collaborativeeditingupdatemessage.d.ts +38 -0
- package/src/collaborativeeditingservice/messages/collaborativeeditingupdatemessage.js +1 -1
- package/src/collaborativeeditingservice/messages/getdocumentdetailsmessage.d.ts +16 -0
- package/src/collaborativeeditingservice/messages/getdocumentdetailsmessage.js +1 -1
- package/src/collaborativeeditingservice/responses/collaborativeeditingconnectresponse.d.ts +68 -0
- package/src/collaborativeeditingservice/responses/collaborativeeditingconnectresponse.js +1 -1
- package/src/collaborativeeditingservice/responses/collaborativeeditingresponse.d.ts +51 -0
- package/src/collaborativeeditingservice/responses/collaborativeeditingresponse.js +1 -1
- package/src/collaborativeeditingservice/responses/getdocumentdetailsresponse.d.ts +28 -0
- package/src/collaborativeeditingservice/responses/getdocumentdetailsresponse.js +1 -1
- package/src/comments-v2/commentsservice.d.ts +72 -0
- package/src/comments-v2/commentsservice.js +1 -1
- package/src/comments-v2/descriptors/commentdescriptor.d.ts +23 -0
- package/src/comments-v2/descriptors/commentdescriptor.js +1 -1
- package/src/comments-v2/descriptors/commentsthreaddescriptor.d.ts +31 -0
- package/src/comments-v2/descriptors/commentsthreaddescriptor.js +1 -1
- package/src/comments-v2/descriptors/commentthreadaddedcomment.d.ts +15 -0
- package/src/comments-v2/descriptors/commentthreadaddedcomment.js +1 -1
- package/src/comments-v2/messages/addcommentmessage.d.ts +30 -0
- package/src/comments-v2/messages/addcommentmessage.js +1 -1
- package/src/comments-v2/messages/comment-threads/addcommentthreadmessage.d.ts +32 -0
- package/src/comments-v2/messages/comment-threads/addcommentthreadmessage.js +1 -1
- package/src/comments-v2/messages/comment-threads/reopencommentthreadmessage.d.ts +17 -0
- package/src/comments-v2/messages/comment-threads/reopencommentthreadmessage.js +1 -1
- package/src/comments-v2/messages/comment-threads/resolvecommentthreadmessage.d.ts +21 -0
- package/src/comments-v2/messages/comment-threads/resolvecommentthreadmessage.js +1 -1
- package/src/comments-v2/messages/comment-threads/updatecommentthreadmessage.d.ts +23 -0
- package/src/comments-v2/messages/comment-threads/updatecommentthreadmessage.js +1 -1
- package/src/comments-v2/messages/connectmessage.d.ts +15 -0
- package/src/comments-v2/messages/connectmessage.js +1 -1
- package/src/comments-v2/messages/getcommentthreadmessage.d.ts +17 -0
- package/src/comments-v2/messages/getcommentthreadmessage.js +1 -1
- package/src/comments-v2/messages/getdocumentthreadsmessage.d.ts +15 -0
- package/src/comments-v2/messages/getdocumentthreadsmessage.js +1 -1
- package/src/comments-v2/messages/removecommentmessage.d.ts +19 -0
- package/src/comments-v2/messages/removecommentmessage.js +1 -1
- package/src/comments-v2/messages/removecommentthreadmessage.d.ts +17 -0
- package/src/comments-v2/messages/removecommentthreadmessage.js +1 -1
- package/src/comments-v2/messages/updatecommentmessage.d.ts +28 -0
- package/src/comments-v2/messages/updatecommentmessage.js +1 -1
- package/src/comments-v2/responses/addcommentresponse.d.ts +17 -0
- package/src/comments-v2/responses/addcommentresponse.js +1 -1
- package/src/comments-v2/responses/comment-threads/addcommentthreadresponse.d.ts +22 -0
- package/src/comments-v2/responses/comment-threads/addcommentthreadresponse.js +1 -1
- package/src/comments-v2/responses/comment-threads/resolvecommentthreadresponse.d.ts +19 -0
- package/src/comments-v2/responses/comment-threads/resolvecommentthreadresponse.js +1 -1
- package/src/comments-v2/responses/connectresponse.d.ts +19 -0
- package/src/comments-v2/responses/connectresponse.js +1 -1
- package/src/comments-v2/responses/getcommentthreadresponse.d.ts +33 -0
- package/src/comments-v2/responses/getcommentthreadresponse.js +1 -1
- package/src/comments-v2/responses/getdocumentthreadsresponse.d.ts +17 -0
- package/src/comments-v2/responses/getdocumentthreadsresponse.js +1 -1
- package/src/compiledmessages.js +1 -1
- package/src/descriptor.d.ts +13 -0
- package/src/descriptor.js +1 -1
- package/src/descriptors/keyvaluedescriptor.d.ts +5 -0
- package/src/descriptors/keyvaluedescriptor.js +1 -1
- package/src/editor/editorservice.d.ts +11 -0
- package/src/editor/editorservice.js +1 -1
- package/src/editor/messages/iseditorbundleuploadedmessage.d.ts +15 -0
- package/src/editor/messages/iseditorbundleuploadedmessage.js +1 -1
- package/src/editor/responses/iseditorbundleuploadedresponse.d.ts +13 -0
- package/src/editor/responses/iseditorbundleuploadedresponse.js +1 -1
- package/src/errors/ServiceNotConnectedError.d.ts +4 -0
- package/src/errors/ServiceNotConnectedError.js +1 -1
- package/src/index.d.ts +66 -0
- package/src/index.js +1 -1
- package/src/message.d.ts +17 -0
- package/src/message.js +1 -1
- package/src/messagescompressor.d.ts +15 -0
- package/src/messagescompressor.js +1 -1
- package/src/messagesmapper.d.ts +9 -0
- package/src/messagesmapper.js +1 -1
- package/src/revision-history/descriptors/revisiondescriptor.d.ts +42 -0
- package/src/revision-history/descriptors/revisiondescriptor.js +1 -1
- package/src/revision-history/messages/revisionhistoryconnectmessage.d.ts +15 -0
- package/src/revision-history/messages/revisionhistoryconnectmessage.js +1 -1
- package/src/revision-history/messages/revisionhistorygetrevisionmessage.d.ts +17 -0
- package/src/revision-history/messages/revisionhistorygetrevisionmessage.js +1 -1
- package/src/revision-history/messages/revisionhistoryreconnectmessage.d.ts +17 -0
- package/src/revision-history/messages/revisionhistoryreconnectmessage.js +1 -1
- package/src/revision-history/messages/revisionhistoryupdaterevisionsmessage.d.ts +41 -0
- package/src/revision-history/messages/revisionhistoryupdaterevisionsmessage.js +1 -1
- package/src/revision-history/responses/revisionhistoryconnectresponse.d.ts +30 -0
- package/src/revision-history/responses/revisionhistoryconnectresponse.js +1 -1
- package/src/revision-history/responses/revisionhistorygetrevisionresponse.d.ts +30 -0
- package/src/revision-history/responses/revisionhistorygetrevisionresponse.js +1 -1
- package/src/revision-history/responses/revisionhistoryupdaterevisionsresponse.d.ts +13 -0
- package/src/revision-history/responses/revisionhistoryupdaterevisionsresponse.js +1 -1
- package/src/revision-history/revision.d.ts +15 -0
- package/src/revision-history/revisionhistoryservice.d.ts +75 -0
- package/src/revision-history/revisionhistoryservice.js +1 -1
- package/src/services.d.ts +8 -0
- package/src/services.js +1 -1
- package/src/sessions/descriptors/sessiondescriptor.d.ts +5 -0
- package/src/sessions/descriptors/sessiondescriptor.js +1 -1
- package/src/sessions/messages/sessionsconnectmessage.d.ts +17 -0
- package/src/sessions/messages/sessionsconnectmessage.js +1 -1
- package/src/sessions/messages/socketconnectmessage.d.ts +21 -0
- package/src/sessions/messages/socketconnectmessage.js +1 -1
- package/src/sessions/messages/socketdisconnectmessage.d.ts +15 -0
- package/src/sessions/messages/socketdisconnectmessage.js +1 -1
- package/src/sessions/responses/sessionsconnectresponse.d.ts +21 -0
- package/src/sessions/responses/sessionsconnectresponse.js +1 -1
- package/src/sessions/sessioncollection.d.ts +40 -0
- package/src/sessions/sessioncollection.js +1 -1
- package/src/sessions/sessions.d.ts +13 -0
- package/src/sessions/sessions.js +1 -1
- package/src/track-changes/descriptors/suggestiondescriptor.d.ts +25 -0
- package/src/track-changes/descriptors/suggestiondescriptor.js +1 -1
- package/src/track-changes/messages/addsuggestionmessage.d.ts +25 -0
- package/src/track-changes/messages/addsuggestionmessage.js +1 -1
- package/src/track-changes/messages/batchUpdateSuggestionsStateMessage.d.ts +19 -0
- package/src/track-changes/messages/batchUpdateSuggestionsStateMessage.js +1 -1
- package/src/track-changes/messages/connectmessage.d.ts +15 -0
- package/src/track-changes/messages/connectmessage.js +1 -1
- package/src/track-changes/messages/getallsuggestionsmessage.d.ts +15 -0
- package/src/track-changes/messages/getallsuggestionsmessage.js +1 -1
- package/src/track-changes/messages/getsuggestionmessage.d.ts +17 -0
- package/src/track-changes/messages/getsuggestionmessage.js +1 -1
- package/src/track-changes/messages/updatesuggestionmessage.d.ts +25 -0
- package/src/track-changes/messages/updatesuggestionmessage.js +1 -1
- package/src/track-changes/responses/addsuggestionresponse.d.ts +27 -0
- package/src/track-changes/responses/addsuggestionresponse.js +1 -1
- package/src/track-changes/responses/connectresponse.d.ts +19 -0
- package/src/track-changes/responses/connectresponse.js +1 -1
- package/src/track-changes/responses/getallsuggestionsresponse.d.ts +17 -0
- package/src/track-changes/responses/getallsuggestionsresponse.js +1 -1
- package/src/track-changes/responses/getsuggestionresponse.d.ts +27 -0
- package/src/track-changes/responses/getsuggestionresponse.js +1 -1
- package/src/track-changes/trackchangesservice.d.ts +62 -0
- package/src/track-changes/trackchangesservice.js +1 -1
- package/src/types.d.ts +7 -0
- package/src/users/descriptors/userdescriptor.d.ts +5 -0
- package/src/users/descriptors/userdescriptor.js +1 -1
- package/src/users/messages/getmanyusersmessage.d.ts +15 -0
- package/src/users/messages/getmanyusersmessage.js +1 -1
- package/src/users/messages/getusermessage.d.ts +15 -0
- package/src/users/messages/getusermessage.js +1 -1
- package/src/users/responses/getmanyusersresponse.d.ts +13 -0
- package/src/users/responses/getmanyusersresponse.js +1 -1
- package/src/users/responses/getuserresponse.d.ts +13 -0
- package/src/users/responses/getuserresponse.js +1 -1
- package/src/users/user.d.ts +41 -0
- package/src/users/user.js +1 -1
- package/src/version.d.ts +2 -0
- package/src/version.js +1 -1
- package/src/websocketgateway/channel.d.ts +31 -0
- package/src/websocketgateway/channel.js +1 -1
- package/src/websocketgateway/messages/channelmessage.d.ts +21 -0
- package/src/websocketgateway/messages/channelmessage.js +1 -1
- package/src/websocketgateway/parser/packetparser.d.ts +15 -0
- package/src/websocketgateway/parser/packetparser.js +1 -1
- package/src/websocketgateway/parser/packets/bytesbytespacketdatamessage.d.ts +18 -0
- package/src/websocketgateway/parser/packets/bytesbytespacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/numberbytespacketdatamessage.d.ts +18 -0
- package/src/websocketgateway/parser/packets/numberbytespacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/numbernumberpacketdatamessag.d.ts +17 -0
- package/src/websocketgateway/parser/packets/numbernumberpacketdatamessag.js +1 -1
- package/src/websocketgateway/parser/packets/numberobjectpacketdatamessage.d.ts +17 -0
- package/src/websocketgateway/parser/packets/numberobjectpacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/numberstringpacketdatamessag.d.ts +17 -0
- package/src/websocketgateway/parser/packets/numberstringpacketdatamessag.js +1 -1
- package/src/websocketgateway/parser/packets/objectbufferpacketdatamessage.d.ts +18 -0
- package/src/websocketgateway/parser/packets/objectbufferpacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/objectobjectpacketdatamessage.d.ts +17 -0
- package/src/websocketgateway/parser/packets/objectobjectpacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/packagedatamessage.d.ts +16 -0
- package/src/websocketgateway/parser/packets/packagedatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/packetmessage.d.ts +31 -0
- package/src/websocketgateway/parser/packets/packetmessage.js +1 -1
- package/src/websocketgateway/parser/packets/packetoptionsmessage.d.ts +18 -0
- package/src/websocketgateway/parser/packets/packetoptionsmessage.js +1 -1
- package/src/websocketgateway/parser/packets/stringbytespacketdatamessage.d.ts +18 -0
- package/src/websocketgateway/parser/packets/stringbytespacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/stringnumberpacketdatamessage.d.ts +17 -0
- package/src/websocketgateway/parser/packets/stringnumberpacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/stringobjectpacketdatamessage.d.ts +17 -0
- package/src/websocketgateway/parser/packets/stringobjectpacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/packets/stringstringpacketdatamessage.d.ts +17 -0
- package/src/websocketgateway/parser/packets/stringstringpacketdatamessage.js +1 -1
- package/src/websocketgateway/parser/parser.d.ts +14 -0
- package/src/websocketgateway/parser/parser.js +1 -1
- package/src/websocketgateway/parser/parserutils.d.ts +27 -0
- package/src/websocketgateway/parser/parserutils.js +1 -1
- package/src/websocketgateway/requestsmanager.d.ts +20 -0
- package/src/websocketgateway/requestsmanager.js +1 -1
- package/src/websocketgateway/websocketgateway.d.ts +164 -0
- package/src/websocketgateway/websocketgateway.js +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import CKEditorCloudServicesError from '../ckeditorcloudserviceserror.js';
|
|
2
|
+
import CKEditorCloudServicesServerError from '../ckeditorcloudservicesservererror.js';
|
|
3
|
+
import { IMessage } from '../message.js';
|
|
4
|
+
import WebSocketGateway from './websocketgateway.js';
|
|
5
|
+
interface IWebSocketRequest<TResponse extends IMessage> {
|
|
6
|
+
response(response: TResponse): void;
|
|
7
|
+
error(error: CKEditorCloudServicesError | CKEditorCloudServicesServerError): void;
|
|
8
|
+
}
|
|
9
|
+
export default class WebSocketGatewayRequestsManager {
|
|
10
|
+
private readonly _context;
|
|
11
|
+
private readonly _requests;
|
|
12
|
+
constructor(_context: WebSocketGateway);
|
|
13
|
+
send<TResponse extends IMessage>(sendFunction: (req: IWebSocketRequest<TResponse>) => void, timeoutMs?: number): Promise<TResponse>;
|
|
14
|
+
errorAll(error: CKEditorCloudServicesError): void;
|
|
15
|
+
waitForAllRequests(time?: number): Promise<void>;
|
|
16
|
+
private _createRequest;
|
|
17
|
+
private _finishRequest;
|
|
18
|
+
private _waitForRequests;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
import
|
|
23
|
+
import _0x19397c from'../ckeditorcloudserviceserror.js';class WebSocketRequest{constructor(_0x1f6c03,_0x1a33ee){this['_context']=_0x1f6c03,this['_deferredPromise']=(function(){let _0x1aaa13,_0x46b2c4;const _0x51962f=new Promise((_0x2a9f98,_0x507d89)=>{_0x1aaa13=_0x2a9f98,_0x46b2c4=_0x507d89;});return{'resolve':_0x1aaa13,'reject':_0x46b2c4,'promise':_0x51962f};}()),this['timeout']=setTimeout(()=>this['error'](new _0x19397c('Request\x20timeout.',this['_context'])),_0x1a33ee);}get['promise'](){return this['_deferredPromise']['promise'];}['response'](_0x1d5795){this['_deferredPromise']['resolve'](_0x1d5795);}['error'](_0x3528fb){this['_deferredPromise']['reject'](_0x3528fb);}}export default class WebSocketGatewayRequestsManager{constructor(_0x3fc20f){this['_context']=_0x3fc20f,this['_requests']=new Set();}async['send'](_0x28d271,_0x5738db=0xafc8){const _0x2527d8=this['_createRequest'](_0x5738db);try{return _0x28d271(_0x2527d8),await _0x2527d8['promise'];}finally{this['_finishRequest'](_0x2527d8);}}['errorAll'](_0x573861){for(const _0x5a2698 of this['_requests'])_0x5a2698['error'](_0x573861);}['waitForAllRequests'](_0x1bd856=0xafc8){return this['_waitForRequests'](_0x1bd856);}['_createRequest'](_0x789464){const _0x5d89b0=new WebSocketRequest(this['_context'],_0x789464);return this['_requests']['add'](_0x5d89b0),_0x5d89b0;}['_finishRequest'](_0x30d953){this['_requests']['delete'](_0x30d953),clearTimeout(_0x30d953['timeout']);}async['_waitForRequests'](_0x5897dd=0x1388,_0x32d311=0x0){return!this['_requests']['size']||_0x32d311>=_0x5897dd/0x1f4?Promise['resolve']():(await new Promise(_0x4affc9=>{setTimeout(_0x4affc9,0x1f4);}),this['_waitForRequests'](_0x5897dd,_0x32d311++));}}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { ManagerOptions, Socket } from 'socket.io-client';
|
|
2
|
+
import { Decoder as IODecoder, Encoder as IOEncoder } from 'socket.io-parser';
|
|
3
|
+
import { Emitter } from 'ckeditor5/src/utils.js';
|
|
4
|
+
import Channel from './channel.js';
|
|
5
|
+
import { IToken } from '../types.js';
|
|
6
|
+
import User from './../users/user.js';
|
|
7
|
+
import { IMessage } from '../message.js';
|
|
8
|
+
export declare enum WEB_SOCKET_GATEWAY_STATES {
|
|
9
|
+
DISCONNECTED = "disconnected",
|
|
10
|
+
CONNECTING = "connecting",
|
|
11
|
+
CONNECTED = "connected"
|
|
12
|
+
}
|
|
13
|
+
export declare type ConnectionProvider = (url: string, options: IWebSocketGatewayConnectionOptions) => ISocket;
|
|
14
|
+
export interface IWebSocketGatewayOptions {
|
|
15
|
+
rejectUnauthorized?: boolean;
|
|
16
|
+
autoReconnect?: boolean;
|
|
17
|
+
agent?: unknown;
|
|
18
|
+
onError?: (error: unknown) => void;
|
|
19
|
+
timeout?: number;
|
|
20
|
+
requestTimeout?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ISocket extends Socket {
|
|
23
|
+
}
|
|
24
|
+
export interface IWebSocketGatewayConnectionOptions extends ManagerOptions {
|
|
25
|
+
parser: {
|
|
26
|
+
Decoder: (new (...args: unknown[]) => IODecoder);
|
|
27
|
+
Encoder: (new (...args: unknown[]) => IOEncoder);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface IWebSocketGateway extends Emitter {
|
|
31
|
+
_sendRequest<T extends IMessage>(serviceName: number, method: string, buffer: Uint8Array): Promise<T>;
|
|
32
|
+
_getChannel(serviceName: string | number, channelId: string): Channel;
|
|
33
|
+
disconnect(): void;
|
|
34
|
+
reconnect(): Promise<void>;
|
|
35
|
+
me?: User;
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated - Use `socketId` property instead
|
|
38
|
+
*/
|
|
39
|
+
sessionId?: string;
|
|
40
|
+
socketId?: string;
|
|
41
|
+
state?: WEB_SOCKET_GATEWAY_STATES;
|
|
42
|
+
}
|
|
43
|
+
declare const WebSocketGateway_base: {
|
|
44
|
+
new (): import("ckeditor5/src/utils.js").Observable;
|
|
45
|
+
prototype: import("ckeditor5/src/utils.js").Observable;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Represents class for connecting to CKEditor Cloud Services WebSocket API.
|
|
49
|
+
*/
|
|
50
|
+
declare class WebSocketGateway extends WebSocketGateway_base {
|
|
51
|
+
private readonly _token;
|
|
52
|
+
private readonly _options;
|
|
53
|
+
private readonly _connectionProvider;
|
|
54
|
+
private readonly _userFactory;
|
|
55
|
+
private readonly _requestsManager;
|
|
56
|
+
private readonly _url;
|
|
57
|
+
private _socket?;
|
|
58
|
+
private _socketAuth?;
|
|
59
|
+
private readonly _channels;
|
|
60
|
+
private _connectionAttempt;
|
|
61
|
+
/**
|
|
62
|
+
* Represents currently logged user as taken from CMS (Token). Undefined value represents anonymous user.
|
|
63
|
+
*/
|
|
64
|
+
me?: User;
|
|
65
|
+
/**
|
|
66
|
+
* Id of an EndUser's socket.
|
|
67
|
+
*/
|
|
68
|
+
socketId?: string;
|
|
69
|
+
/**
|
|
70
|
+
* WebSocketGateway connection state.
|
|
71
|
+
*/
|
|
72
|
+
state?: WEB_SOCKET_GATEWAY_STATES;
|
|
73
|
+
/**
|
|
74
|
+
* Defines "disconnected" state. Returned by {@link WebSocketGateway#state}.
|
|
75
|
+
*/
|
|
76
|
+
static readonly STATE_DISCONNECTED: string;
|
|
77
|
+
/**
|
|
78
|
+
* Defines "connecting" state. Returned by {@link WebSocketGateway#state}.
|
|
79
|
+
*/
|
|
80
|
+
static readonly STATE_CONNECTING: string;
|
|
81
|
+
/**
|
|
82
|
+
* Defines "connected" state. Returned by {@link WebSocketGateway#state}.
|
|
83
|
+
*/
|
|
84
|
+
static readonly STATE_CONNECTED: string;
|
|
85
|
+
/**
|
|
86
|
+
* Returns highest priority for `change:state` handlers.
|
|
87
|
+
*/
|
|
88
|
+
static readonly _CHANGE_STATE_EVENT_PRIORITY: number;
|
|
89
|
+
constructor(apiAddress: string, _token: IToken, _options?: IWebSocketGatewayOptions, _connectionProvider?: ConnectionProvider, _userFactory?: (wsGateway: IWebSocketGateway, id: string) => Promise<User>);
|
|
90
|
+
/**
|
|
91
|
+
* Id of an EndUser's Session.
|
|
92
|
+
*
|
|
93
|
+
* @deprecated - Use `socketId` property instead
|
|
94
|
+
*/
|
|
95
|
+
get sessionId(): string | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Wait for fulfilled all sent requests.
|
|
98
|
+
* This method might be called before the call disconnect method to ensure all requests are fulfilled.
|
|
99
|
+
*/
|
|
100
|
+
waitForAllRequests(time?: number): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Disconnects from WebSocket Gateway.
|
|
103
|
+
*/
|
|
104
|
+
disconnect(): void;
|
|
105
|
+
/**
|
|
106
|
+
* Reconnects disconnected WebSocket Gateway.
|
|
107
|
+
* Only works if it is in disconnected {@link WebSocketGateway#state} otherwise returns resolved promise.
|
|
108
|
+
*/
|
|
109
|
+
reconnect(): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Connects to CKEditor Cloud Services.
|
|
112
|
+
*
|
|
113
|
+
* const token = await Token.create( 'https://token-endpoint' );
|
|
114
|
+
* const webSocketGateway = await WebSocketGateway.connect( token );
|
|
115
|
+
*/
|
|
116
|
+
static connect(token: IToken, apiAddress?: string, options?: IWebSocketGatewayOptions, provider?: ConnectionProvider, userFactory?: (wsGateway: IWebSocketGateway, id: string) => Promise<User>): Promise<WebSocketGateway>;
|
|
117
|
+
/**
|
|
118
|
+
* Sends request to CKEditor Cloud Services.
|
|
119
|
+
*/
|
|
120
|
+
_sendRequest<TResponse extends IMessage>(serviceName: number, method: string, buffer: Uint8Array): Promise<TResponse>;
|
|
121
|
+
/**
|
|
122
|
+
* Returns {@link Channel} associated with given service.
|
|
123
|
+
*/
|
|
124
|
+
_getChannel(serviceName: string | number, channelId: string): Channel;
|
|
125
|
+
private _connect;
|
|
126
|
+
private _getPortByProtocol;
|
|
127
|
+
/**
|
|
128
|
+
* Creates unconnected Socket instance or returns already existing one.
|
|
129
|
+
*/
|
|
130
|
+
private _setupSocket;
|
|
131
|
+
/**
|
|
132
|
+
* Emits event via socket.
|
|
133
|
+
*/
|
|
134
|
+
private _emit;
|
|
135
|
+
private _addAuthData;
|
|
136
|
+
private _removeAuthData;
|
|
137
|
+
/**
|
|
138
|
+
* Socket.io `connect` events handler.
|
|
139
|
+
*/
|
|
140
|
+
private _onConnect;
|
|
141
|
+
/**
|
|
142
|
+
* Socket.io `reconnect` events handler.
|
|
143
|
+
*/
|
|
144
|
+
private _onReconnect;
|
|
145
|
+
/**
|
|
146
|
+
* Socket.io `disconnect` events handler.
|
|
147
|
+
*/
|
|
148
|
+
private _onDisconnect;
|
|
149
|
+
private _debugEvent;
|
|
150
|
+
/**
|
|
151
|
+
* Socket.io `reconnect_error` events handler.
|
|
152
|
+
*/
|
|
153
|
+
private _reconnectionAttemptError;
|
|
154
|
+
/**
|
|
155
|
+
* `onUnauthorized` events handler.
|
|
156
|
+
*/
|
|
157
|
+
private _onUnauthorized;
|
|
158
|
+
/**
|
|
159
|
+
* Authenticates socket.
|
|
160
|
+
*/
|
|
161
|
+
private _authenticate;
|
|
162
|
+
private _isDebugModeEnabled;
|
|
163
|
+
}
|
|
164
|
+
export default WebSocketGateway;
|
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
22
|
*/
|
|
23
|
-
import{io}from'socket.io-client';import
|
|
23
|
+
import{io}from'socket.io-client';import _0x3a1ac1 from'url-parse';import{ObservableMixin,priorities,global}from'ckeditor5/src/utils.js';import _0x406135 from'./channel.js';import _0x2233c6 from'./../users/user.js';import _0x10200b from'./../version.js';import _0x93c010 from'./../ckeditorcloudserviceserror.js';import _0x3e8fca from'./../ckeditorcloudservicesservererror.js';import{Encoder,Decoder}from'./parser/parser.js';import _0xb7e684 from'./requestsmanager.js';export var WEB_SOCKET_GATEWAY_STATES;!function(_0x221034){_0x221034['DISCONNECTED']='disconnected',_0x221034['CONNECTING']='connecting',_0x221034['CONNECTED']='connected';}(WEB_SOCKET_GATEWAY_STATES||(WEB_SOCKET_GATEWAY_STATES={}));class WebSocketGateway extends ObservableMixin(){constructor(_0x2f1cef,_0x54c5ae,_0x4de939={},_0x24d58a=io,_0xf4ff4e=_0x2233c6['get']){if(super(),this['_token']=_0x54c5ae,this['_options']=_0x4de939,this['_connectionProvider']=_0x24d58a,this['_userFactory']=_0xf4ff4e,this['_requestsManager']=new _0xb7e684(this),this['_channels']=new Map(),this['_connectionAttempt']=0x0,!_0x2f1cef)throw new TypeError('Api\x20address\x20must\x20be\x20provided.');if(!this['_token'])throw new TypeError('Token\x20must\x20be\x20provided.');this['_options']['requestTimeout']||(this['_options']['requestTimeout']=0x4e20),this['_url']=_0x3a1ac1(_0x2f1cef['replace'](/^(?!(?:\w+:)?\/\/)/,'https://')),this['set']('state',WEB_SOCKET_GATEWAY_STATES['DISCONNECTED']),this['set']('socketId',void 0x0),this['set']('me',void 0x0),this['on']('change:state',async(_0x4f8f52,_0x4157af,_0x1aca63)=>{var _0x148d0d;if(this['_debugEvent']('ws-gw:change:state',_0x1aca63),_0x1aca63!==WebSocketGateway['STATE_CONNECTED']){if(_0x1aca63===WebSocketGateway['STATE_DISCONNECTED'])return this['_requestsManager']['errorAll'](new _0x93c010('Not\x20connected.',this));}else try{this['me']=await this['_userFactory']['call'](_0x2233c6,this,null===(_0x148d0d=this['_socketAuth'])||void 0x0===_0x148d0d?void 0x0:_0x148d0d['userId']);}catch(_0x3a177c){}},{'priority':WebSocketGateway['_CHANGE_STATE_EVENT_PRIORITY']}),this['on']('error',(_0x1d9e5c,_0x3a93f9)=>{this['_options']['onError']?this['_options']['onError'](_0x3a93f9):console['error'](_0x3a93f9);});}get['sessionId'](){return this['socketId'];}['waitForAllRequests'](_0x27838b){return this['_requestsManager']['waitForAllRequests'](_0x27838b);}['disconnect'](){var _0x142321;this['state']!==WEB_SOCKET_GATEWAY_STATES['DISCONNECTED']&&(null===(_0x142321=this['_socket'])||void 0x0===_0x142321||_0x142321['disconnect'](),this['_socket']=void 0x0,this['state']=WEB_SOCKET_GATEWAY_STATES['DISCONNECTED']);}async['reconnect'](){this['_socket']||this['state']!==WEB_SOCKET_GATEWAY_STATES['DISCONNECTED']||(await this['_token']['refreshToken'](),await this['_connect']());}static async['connect'](_0x352175,_0x1acc57='local.cs.dev:443/ws-v2',_0x2724cb={},_0x2a0097=io,_0x1b0303=_0x2233c6['get']){const _0x1fe7e2=new WebSocketGateway(_0x1acc57,_0x352175,_0x2724cb,_0x2a0097,_0x1b0303);return await _0x1fe7e2['_connect'](),_0x1fe7e2;}['_sendRequest'](_0x4939de,_0x34d30e,_0xc8cd50){if(!_0x4939de)throw new _0x93c010('`serviceName`\x20must\x20be\x20provided.',this);if(this['state']!==WebSocketGateway['STATE_CONNECTED'])throw new _0x93c010('Not\x20connected.',this);if(!this['_socketAuth']||!this['_socketAuth']['isAuthenticated'])throw new _0x93c010('Not\x20authenticated.',this);const _0x4ebf66=new ArrayBuffer(_0xc8cd50['length']+0x2),_0x385c42=new Uint8Array(_0x4ebf66);return _0x385c42[0x0]=_0x4939de,_0x385c42[0x1]=parseInt(_0x34d30e),_0x385c42['set'](_0xc8cd50,0x2),this['_emit'](0x1,_0x385c42);}['_getChannel'](_0x27e8fd,_0x3acbd7){const _0x50d608=''+_0x27e8fd+_0x3acbd7;return!this['_channels']['has'](_0x50d608)&&this['_socket']&&this['_channels']['set'](_0x50d608,new _0x406135(_0x50d608,this,this['_socket'])),this['_channels']['get'](_0x50d608);}['_connect'](){return new Promise((_0x4cc942,_0x37366e)=>{const _0x3fcfb6=this['_setupSocket']();!this['socketId']&&_0x3fcfb6['io']['on']('reconnect_error',()=>{this['_debugEvent']('reconnect_error'),this['_reconnectionAttemptError'](_0x37366e);}),_0x3fcfb6['once']('connect',async()=>{this['_debugEvent']('once-connect');try{await this['_onConnect'](),_0x4cc942();}catch(_0x113613){_0x37366e(_0x113613);}}),_0x3fcfb6['connect']();});}['_getPortByProtocol'](_0x723f48){return['http:','ws:']['includes'](_0x723f48)?0x50:0x1bb;}['_setupSocket'](){var _0x39536f;if(this['_socket'])return this['_socket'];const _0x1ef416=this['_url']['port']||this['_getPortByProtocol'](this['_url']['protocol']),_0x5c5581=(this['_url']['protocol']||'https:')+'//'+this['_url']['hostname']+':'+_0x1ef416,_0x31c283=this['_url']['pathname']['match'](/^\/.*\/ws/)?this['_url']['pathname']['split']('/ws')[0x0]:'',_0xd612c3=this['_connectionProvider'](_0x5c5581,{'parser':{'Encoder':Encoder,'Decoder':Decoder},'path':_0x31c283+'/ws-v2/ws','transports':['websocket'],'timeout':void 0x0!==this['_options']['timeout']?this['_options']['timeout']:0x1388,'reconnection':void 0x0===this['_options']['autoReconnect']||this['_options']['autoReconnect'],'reconnectionDelay':0x3e8,'reconnectionDelayMax':0x1388,'rejectUnauthorized':void 0x0===this['_options']['rejectUnauthorized']||this['_options']['rejectUnauthorized'],'query':{'version':_0x10200b},'agent':null!==(_0x39536f=this['_options']['agent'])&&void 0x0!==_0x39536f&&_0x39536f,'closeOnBeforeunload':!0x1});return this['state']=WEB_SOCKET_GATEWAY_STATES['CONNECTING'],_0xd612c3['on']('connect',()=>{this['_debugEvent']('connect'),this['socketId']=_0xd612c3['id'];}),_0xd612c3['on']('connect_error',_0xd0cd13=>{this['_debugEvent']('connect_error',_0xd0cd13);}),_0xd612c3['on']('disconnect',()=>{this['_debugEvent']('disconnect'),this['_onDisconnect']();}),_0xd612c3['io']['on']('reconnect',async()=>{this['_debugEvent']('reconnect'),await this['_onReconnect']();}),_0xd612c3['io']['on']('reconnect_attempt',_0x317a3a=>{this['_debugEvent']('reconnect_attempt',_0x317a3a),this['state']=WEB_SOCKET_GATEWAY_STATES['CONNECTING'],this['_connectionAttempt']=_0x317a3a;}),_0xd612c3['on']('unauthorized',_0x5a09f2=>{this['_debugEvent']('unauthorized'),this['_onUnauthorized'](_0x5a09f2);}),_0xd612c3['on']('authenticationRequest',async _0x376218=>{this['_debugEvent']('authenticationRequest',_0x376218['attempt']),await this['_onReconnect']();}),this['_socket']=_0xd612c3,_0xd612c3;}['_emit'](_0x3808e7,_0x428b0c){const _0xf24d3c=this['_socket'];return this['_requestsManager']['send'](_0x5ae269=>{_0xf24d3c['emit'](_0x3808e7,_0x428b0c,(_0x420f70,_0x3d4fd1)=>{if(_0x420f70)return _0x5ae269['error'](_0x3e8fca['fromPublicError'](_0x420f70));_0x5ae269['response'](_0x3d4fd1);});},this['_options']['requestTimeout']);}['_addAuthData'](_0x3ccc2d,_0x38d517){this['_socketAuth']={'environmentId':_0x3ccc2d,'userId':_0x38d517,'isAuthenticated':!0x0};}['_removeAuthData'](){this['_socketAuth']=void 0x0;}async['_onConnect'](){await this['_authenticate'](this['_token']['value']),this['state']=WEB_SOCKET_GATEWAY_STATES['CONNECTED'];const _0x556de8=async(_0x1862ee,_0x53e89d,_0x5c6dfe)=>{this['_debugEvent']('token:value:change');try{await this['_authenticate'](_0x5c6dfe);}catch(_0x401151){}};this['_token']['on']('change:value',_0x556de8),this['_socket']['io']['off']('reconnect_error'),this['on']('disconnect',()=>{this['_token']['off']('change:value',_0x556de8);});}async['_onReconnect'](){await this['_token']['refreshToken'](),await this['_onConnect']();}['_onDisconnect'](){this['state']=WEB_SOCKET_GATEWAY_STATES['DISCONNECTED'],this['_connectionAttempt']=0x0,this['fire']('disconnect');for(const _0x47e9cf of this['_channels']['values']())_0x47e9cf['remove']();this['_channels']['clear'](),void 0x0===this['_options']['autoReconnect']||this['_options']['autoReconnect']||(this['_socket']=void 0x0);}['_debugEvent'](_0x5b861d,_0x487ca4){if(!this['_isDebugModeEnabled']())return;const _0x229e4a=void 0x0!==_0x487ca4?',\x20data:\x20'+_0x487ca4:'';console['info'](new Date()['toLocaleString']()+'\x20'+_0x5b861d+_0x229e4a);}['_reconnectionAttemptError'](_0x34eee8){this['_connectionAttempt']>=0x2&&(this['disconnect'](),_0x34eee8(_0x93c010['fromPublicError']({'message':'The\x20number\x20of\x20initial\x20connection\x20attempts\x20exceeded.','explanation':'Three\x20initial\x20connection\x20attempts\x20failed.\x20It\x20can\x20be\x20caused\x20by\x20a\x20slow,\x20unstable,\x20missing\x20or\x20blocked\x20Internet\x20connection.','action':'Please\x20verify\x20the\x20stability\x20of\x20your\x20Internet\x20connection\x20and\x20ensure\x20that\x20no\x20antivirus\x20or\x20firewall\x20software\x20blocks\x20the\x20Web\x20Socket\x20protocol\x20connections.'})));}['_onUnauthorized']({error:_0x153533}){this['_removeAuthData'](),this['fire']('error',_0x3e8fca['fromPublicError'](_0x153533));}async['_authenticate'](_0x152985){try{this['_debugEvent']('authenticate:start');const _0x596aca=await this['_emit'](0x2,{'token':_0x152985});this['_debugEvent']('authenticate:success','envId:\x20'+_0x596aca['environmentId']+',\x20userId:\x20'+_0x596aca['userId']),this['_addAuthData'](_0x596aca['environmentId'],_0x596aca['userId']);}catch(_0x458d13){throw this['_debugEvent']('authenticate:error',_0x458d13['message']),this['_removeAuthData'](),_0x458d13;}}['_isDebugModeEnabled'](){var _0x46858a;if(!global['window']['localStorage'])return!0x1;return'true'===(null!==(_0x46858a=global['window']['localStorage']['getItem']('csClientDebugMode'))&&void 0x0!==_0x46858a?_0x46858a:'false')['toLowerCase']();}}WebSocketGateway['STATE_DISCONNECTED']=WEB_SOCKET_GATEWAY_STATES['DISCONNECTED'],WebSocketGateway['STATE_CONNECTING']=WEB_SOCKET_GATEWAY_STATES['CONNECTING'],WebSocketGateway['STATE_CONNECTED']=WEB_SOCKET_GATEWAY_STATES['CONNECTED'],WebSocketGateway['_CHANGE_STATE_EVENT_PRIORITY']=priorities['get']('highest')+0xf423f;export default WebSocketGateway;
|