dochub-sdk 0.1.99 → 0.1.101

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.
@@ -0,0 +1,90 @@
1
+ export type DocHubCollaborationInvite = string;
2
+
3
+ export type DocHubCollaborationChannel = string;
4
+ export type DocHubCollaborationEvent = string | RegExp;
5
+ export type DocHubCollaborationChannelHandler = (channel: DocHubCollaborationChannel) => void;
6
+
7
+ /**
8
+ * Транспортный драйвер коллаборации
9
+ */
10
+ export interface IDocHubCollaborationDriver {
11
+
12
+ }
13
+
14
+ /**
15
+ * Сессия коллаборации
16
+ */
17
+ export interface IDocHubCollaborationSession {
18
+
19
+ }
20
+
21
+ /**
22
+ * Интерфейс реализующий коллаборативную работу групп
23
+ */
24
+ export interface IDocHubCollaboration {
25
+ /**
26
+ * Признак доступности режима коллаборации
27
+ * @returns - true если режим коллаборации доступен, иначе false
28
+ */
29
+ isAvailable(): Promise<boolean>;
30
+
31
+ /**
32
+ * Регистрирует коллаборативный драйвер. Возможен только один.
33
+ * Если драйвер уже зарегистрирован, метод должен генерировать ошибку.
34
+ * @param driver - Драйвер
35
+ */
36
+ registerDriver(driver: IDocHubCollaborationDriver): Promise<void>;
37
+
38
+ /**
39
+ * Создает коллаборативную сессию
40
+ * @returns - Открытая сессия
41
+ */
42
+ createSession(): Promise<IDocHubCollaborationSession>;
43
+
44
+ /**
45
+ * Возвращает текущую сессию, если она открыта
46
+ * @returns - Текущая сессия или null
47
+ */
48
+ getSession(): Promise<IDocHubCollaborationSession | null>;
49
+
50
+ /**
51
+ * Покинуть коллаборативную сессию
52
+ */
53
+ liveSession(): Promise<void>;
54
+
55
+ /**
56
+ * Создает приглашение в виде URL для подключения к сессии
57
+ * @requires - Инвайт в виде URL
58
+ */
59
+ makeInvite(): Promise<DocHubCollaborationInvite>;
60
+
61
+ /**
62
+ * Осуществляет вход по приглашению
63
+ * @requires - Инвайт в виде URL
64
+ */
65
+ enter(invite: DocHubCollaborationInvite): Promise<IDocHubCollaborationSession>;
66
+
67
+ /**
68
+ * Осуществляет подписку на канал и события
69
+ * @param channel - Канал, который будет слушать подписчик
70
+ * @param events - События, которые подписчик собирается обрабатывать
71
+ * @param handler - Обработчик событий
72
+ */
73
+ subscribe(channel: DocHubCollaborationChannel, events: DocHubCollaborationEvent[], handler: DocHubCollaborationChannelHandler);
74
+
75
+ /**
76
+ * Отписывает слушателя
77
+ * @param channel - Канал, от которого описывается слушатель
78
+ * @param events - События, от которых описывается слушатель
79
+ * @param handler - Обработчик событий
80
+ */
81
+ unsubscribe(channel: DocHubCollaborationChannel, events: DocHubCollaborationEvent[], handler: DocHubCollaborationChannelHandler);
82
+
83
+ /**
84
+ * Отсылает сообщение в канал
85
+ * @param channel - Канал
86
+ * @param event - Событие
87
+ * @param data - Данные для обработки
88
+ */
89
+ sendEvent(channel: DocHubCollaborationChannel, event: DocHubCollaborationEvent, data: any): Promise<void>;
90
+ }
@@ -10,6 +10,7 @@ import { IDocHubEventBus } from './eventbus';
10
10
  import { IDocHubRouter } from './router';
11
11
  import { IDocHubSettings } from './settings';
12
12
  import { IDocHubProblems } from './problems';
13
+ import { IDocHubCollaboration } from './collabarations';
13
14
  import { DocHubEditMode, IDocHubEditors } from './editors';
14
15
 
15
16
  /**
@@ -68,6 +69,10 @@ export interface IDocHubCore {
68
69
  * Интерфейс взаимодействия с подсистемой редактирования
69
70
  */
70
71
  editors: IDocHubEditors;
72
+ /**
73
+ * Интерфейс коллаборативного взаимодействия
74
+ */
75
+ collaboration: IDocHubCollaboration;
71
76
  /**
72
77
  * Версия ядра
73
78
  * @returns - Версия ядра в формате *.*.*
@@ -147,6 +147,11 @@ export interface IDocHubFileEditorContext {
147
147
  [key: string]: any; // Произвольные ключи и значения
148
148
  }
149
149
 
150
+ /**
151
+ * Обработчик событий изменения файла
152
+ */
153
+ export type DocHubDataLakeFileFollower = () => void;
154
+
150
155
  // Интерфейс доступа к DataLake
151
156
  export interface IDocHubDataLake {
152
157
  /**
@@ -229,6 +234,20 @@ export interface IDocHubDataLake {
229
234
  */
230
235
  pushFile(uri: string, content: any, contentType: string): Promise<AxiosResponse>;
231
236
 
237
+ /**
238
+ * Устанавливает слежение за изменениями в файле
239
+ * @param uri - URI файла
240
+ * @param handler - Обработчик события
241
+ */
242
+ followFile(uri: string, handler: DocHubDataLakeFileFollower);
243
+
244
+ /**
245
+ * Отменяет слежение за файлом
246
+ * @param uri - URI файла
247
+ * @param handler - Обработчик события
248
+ */
249
+ unfollowFile(uri: string, handler: DocHubDataLakeFileFollower);
250
+
232
251
  /**
233
252
  * Загружает файл из DataLake
234
253
  * @param uri - URI файла во внутреннем формате DocHub
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dochub-sdk",
3
- "version": "0.1.99",
3
+ "version": "0.1.101",
4
4
  "description": "The DocHub System Development Kit.",
5
5
  "private": false,
6
6
  "main": "index.ts",