1 | "use strict";
|
2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3 | return new (P || (P = Promise))(function (resolve, reject) {
|
4 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6 | function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
7 | step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8 | });
|
9 | };
|
10 | Object.defineProperty(exports, "__esModule", { value: true });
|
11 | const debug = require("debug");
|
12 | const rxjs_1 = require("rxjs");
|
13 | const Ops = require("rxjs/operators");
|
14 | const rxmq_1 = require("rxmq");
|
15 | const service_pb_1 = require("./proto/service_pb");
|
16 | const log = debug('treelab-ts-sdk:client');
|
17 | class Client {
|
18 | constructor(client, metadata) {
|
19 | this._serviceClient = client;
|
20 | this._metadata = metadata;
|
21 | }
|
22 | unaryCall(call, request) {
|
23 | return new Promise((resolve, reject) => {
|
24 | call(request, (error, response) => {
|
25 | if (error) {
|
26 | return reject(error);
|
27 | }
|
28 | resolve(response);
|
29 | });
|
30 | });
|
31 | }
|
32 | createWorkspaceInput(obj) {
|
33 | const createWorkspaceInput = new service_pb_1.CreateWorkspaceInput();
|
34 | createWorkspaceInput.setName(obj.name);
|
35 | return createWorkspaceInput;
|
36 | }
|
37 | addCoreInput(obj) {
|
38 | const addCoreInput = new service_pb_1.AddCoreInput();
|
39 | addCoreInput.setWorkspaceid(obj.workspaceid);
|
40 | addCoreInput.setCorename(obj.corename);
|
41 | addCoreInput.setColor(obj.color);
|
42 | addCoreInput.setIcon(obj.icon);
|
43 | return addCoreInput;
|
44 | }
|
45 | updateCoreInput(obj) {
|
46 | const updateCoreInput = new service_pb_1.UpdateCoreInput();
|
47 | updateCoreInput.setWorkspaceid(obj.workspaceid);
|
48 | updateCoreInput.setCoreid(obj.coreid);
|
49 | updateCoreInput.setCorename(obj.corename);
|
50 | updateCoreInput.setColor(obj.color);
|
51 | updateCoreInput.setIcon(obj.icon);
|
52 | return updateCoreInput;
|
53 | }
|
54 | addTableInput(obj) {
|
55 | const addTableInput = new service_pb_1.AddTableInput();
|
56 | addTableInput.setWorkspaceid(obj.workspaceid);
|
57 | addTableInput.setCoreid(obj.coreid);
|
58 | addTableInput.setTablename(obj.tablename);
|
59 | return addTableInput;
|
60 | }
|
61 | viewDefinitionInput(obj) {
|
62 | const viewDefinitionInput = new service_pb_1.ViewDefinitionInput();
|
63 | viewDefinitionInput.setName(obj.name);
|
64 | viewDefinitionInput.setType(obj.type);
|
65 | return viewDefinitionInput;
|
66 | }
|
67 | addViewInput(obj) {
|
68 | const addViewInput = new service_pb_1.AddViewInput();
|
69 | addViewInput.setWorkspaceid(obj.workspaceid);
|
70 | addViewInput.setCoreid(obj.coreid);
|
71 | addViewInput.setTableid(obj.tableid);
|
72 | addViewInput.setView(this.viewDefinitionInput(obj.view));
|
73 | return addViewInput;
|
74 | }
|
75 | choiceInput(obj) {
|
76 | const choice = new service_pb_1.Choice();
|
77 | if (!obj)
|
78 | return choice;
|
79 | choice.setId(obj.id);
|
80 | choice.setColor(obj.color);
|
81 | choice.setName(obj.name);
|
82 | return choice;
|
83 | }
|
84 | columnConfigInput(obj) {
|
85 | const columnConfig = new service_pb_1.ColumnConfigInput();
|
86 | columnConfig.setType(obj.type);
|
87 | columnConfig.setName(obj.name);
|
88 | columnConfig.setOrder(obj.order);
|
89 | columnConfig.setForeigntableid(obj.foreigntableid);
|
90 | columnConfig.setDefaultnumber(obj.defaultnumber);
|
91 | columnConfig.setPrecision(obj.precision);
|
92 | columnConfig.setChoicesList(obj.choicesList ? obj.choicesList.map(i => this.choiceInput(i)) : []);
|
93 | return columnConfig;
|
94 | }
|
95 | addColumnInput(obj) {
|
96 | const addColumnInput = new service_pb_1.AddColumnInput();
|
97 | addColumnInput.setWorkspaceid(obj.workspaceid);
|
98 | addColumnInput.setCoreid(obj.coreid);
|
99 | addColumnInput.setTableid(obj.tableid);
|
100 | addColumnInput.setColumnconfig(this.columnConfigInput(obj.columnconfig));
|
101 | return addColumnInput;
|
102 | }
|
103 | addRowInput(obj) {
|
104 | const addRowInput = new service_pb_1.AddRowInput();
|
105 | addRowInput.setWorkspaceid(obj.workspaceid);
|
106 | addRowInput.setCoreid(obj.coreid);
|
107 | addRowInput.setTableid(obj.tableid);
|
108 | return addRowInput;
|
109 | }
|
110 | foreignRowVisibleNameValue(obj) {
|
111 | const foreignRowVisibleNameValue = new service_pb_1.ForeignRowVisibleNameValue();
|
112 | foreignRowVisibleNameValue.setValue(obj.value);
|
113 | return foreignRowVisibleNameValue;
|
114 | }
|
115 | foreignRowValue(obj) {
|
116 | const foreignRowValue = new service_pb_1.ForeignRowValue();
|
117 | foreignRowValue.setId(obj.id);
|
118 | foreignRowValue.setVisiblenameList(obj.visiblenameList.map(i => this.foreignRowVisibleNameValue(i)));
|
119 | return foreignRowValue;
|
120 | }
|
121 | attachment(obj) {
|
122 | const attachment = new service_pb_1.Attachment();
|
123 | attachment.setName(obj.name);
|
124 | attachment.setUrl(obj.url);
|
125 | return attachment;
|
126 | }
|
127 | cellData(obj) {
|
128 | const cellData = new service_pb_1.CellData();
|
129 | cellData.setColumnid(obj.columnid);
|
130 | cellData.setType(obj.type);
|
131 | if (obj.text)
|
132 | cellData.setText(obj.text);
|
133 | if (obj.foreignrowList)
|
134 | cellData.setForeignrowList(obj.foreignrowList.map(i => this.foreignRowValue(i)));
|
135 | if (obj.number)
|
136 | cellData.setNumber(obj.number);
|
137 | if (obj.selecteditemsList)
|
138 | cellData.setSelecteditemsList(obj.selecteditemsList.map(i => this.choiceInput(i)));
|
139 | if (obj.selecteditem)
|
140 | cellData.setSelecteditem(this.choiceInput(obj.selecteditem));
|
141 | if (obj.attachmentsList)
|
142 | cellData.setAttachmentsList(obj.attachmentsList.map(i => this.attachment(i)));
|
143 | if (obj.datetime)
|
144 | cellData.setDatetime(obj.datetime);
|
145 | return cellData;
|
146 | }
|
147 | cellValueInput(obj) {
|
148 | const cellValueInput = new service_pb_1.CellValueInput();
|
149 | cellValueInput.setType(obj.type);
|
150 | if (obj.text)
|
151 | cellValueInput.setText(obj.text);
|
152 | if (obj.foreignrowid)
|
153 | cellValueInput.setForeignrowid(obj.foreignrowid);
|
154 | if (obj.number)
|
155 | cellValueInput.setNumber(obj.number);
|
156 | if (obj.selecteditem)
|
157 | cellValueInput.setSelecteditem(this.choiceInput(obj.selecteditem));
|
158 | if (obj.selecteditemsList)
|
159 | cellValueInput.setSelecteditemsList(obj.selecteditemsList.map(i => this.choiceInput(i)));
|
160 | if (obj.attachmentsList)
|
161 | cellValueInput.setAttachmentsList(obj.attachmentsList.map(i => this.attachment(i)));
|
162 | if (obj.datetime)
|
163 | cellValueInput.setDatetime(obj.datetime);
|
164 | return cellValueInput;
|
165 | }
|
166 | updateCellInput(obj) {
|
167 | const updateCellInput = new service_pb_1.UpdateCellInput();
|
168 | updateCellInput.setWorkspaceid(obj.workspaceid);
|
169 | updateCellInput.setCoreid(obj.coreid);
|
170 | updateCellInput.setTableid(obj.tableid);
|
171 | updateCellInput.setColumnid(obj.columnid);
|
172 | updateCellInput.setRowid(obj.rowid);
|
173 | updateCellInput.setAction(this.updateCellActionInput(obj.action));
|
174 | return updateCellInput;
|
175 | }
|
176 | updateCellActionInput(obj) {
|
177 | const updateCellActionInput = new service_pb_1.UpdateCellActionInput();
|
178 | updateCellActionInput.setType(obj.type);
|
179 | updateCellActionInput.setValue(this.cellValueInput(obj.value));
|
180 | return updateCellActionInput;
|
181 | }
|
182 | workspaceSubscriptionInput(obj) {
|
183 | const workspaceSubscriptionInput = new service_pb_1.WorkspaceSubscriptionInput();
|
184 | workspaceSubscriptionInput.setWorkspaceid(obj.workspaceid);
|
185 | workspaceSubscriptionInput.setTopic(obj.topic);
|
186 | return workspaceSubscriptionInput;
|
187 | }
|
188 | getTableInput(obj) {
|
189 | const getTableInput = new service_pb_1.GetTableInput();
|
190 | getTableInput.setWorkspaceid(obj.workspaceid);
|
191 | getTableInput.setCoreid(obj.coreid);
|
192 | getTableInput.setTableid(obj.tableid);
|
193 | return getTableInput;
|
194 | }
|
195 | getWorkspaceInput(obj) {
|
196 | const getWorkspaceInput = new service_pb_1.GetWorkspaceInput();
|
197 | getWorkspaceInput.setId(obj.id);
|
198 | return getWorkspaceInput;
|
199 | }
|
200 | getCoreInput(obj) {
|
201 | const getCoreInput = new service_pb_1.GetCoreInput();
|
202 | getCoreInput.setWorkspaceid(obj.workspaceid);
|
203 | getCoreInput.setCoreid(obj.coreid);
|
204 | return getCoreInput;
|
205 | }
|
206 | getCoresInput(obj) {
|
207 | const getCoresInput = new service_pb_1.GetCoresInput();
|
208 | getCoresInput.setWorkspaceid(obj.workspaceid);
|
209 | return getCoresInput;
|
210 | }
|
211 | getTablesInput(obj) {
|
212 | const getTablesInput = new service_pb_1.GetTablesInput();
|
213 | getTablesInput.setWorkspaceid(obj.workspaceid);
|
214 | getTablesInput.setCoreid(obj.coreid);
|
215 | return getTablesInput;
|
216 | }
|
217 | createWorkspace(input) {
|
218 | return __awaiter(this, void 0, void 0, function* () {
|
219 | return new Promise((resolve, reject) => {
|
220 | this._serviceClient.createWorkspace(input, this._metadata, (err, result) => {
|
221 | if (err) {
|
222 | return reject(err);
|
223 | }
|
224 | resolve(result);
|
225 | });
|
226 | });
|
227 | });
|
228 | }
|
229 | addCore(input) {
|
230 | return __awaiter(this, void 0, void 0, function* () {
|
231 | return new Promise((resolve, reject) => {
|
232 | this._serviceClient.addCore(input, this._metadata, (err, result) => {
|
233 | if (err) {
|
234 | return reject(err);
|
235 | }
|
236 | resolve(result);
|
237 | });
|
238 | });
|
239 | });
|
240 | }
|
241 | updateCore(input) {
|
242 | return __awaiter(this, void 0, void 0, function* () {
|
243 | return new Promise((resolve, reject) => {
|
244 | this._serviceClient.updateCore(input, this._metadata, (err, result) => {
|
245 | if (err) {
|
246 | return reject(err);
|
247 | }
|
248 | resolve(result);
|
249 | });
|
250 | });
|
251 | });
|
252 | }
|
253 | addTable(input) {
|
254 | return __awaiter(this, void 0, void 0, function* () {
|
255 | return new Promise((resolve, reject) => {
|
256 | this._serviceClient.addTable(input, this._metadata, (err, result) => {
|
257 | if (err) {
|
258 | return reject(err);
|
259 | }
|
260 | resolve(result);
|
261 | });
|
262 | });
|
263 | });
|
264 | }
|
265 | addView(input) {
|
266 | return __awaiter(this, void 0, void 0, function* () {
|
267 | return new Promise((resolve, reject) => {
|
268 | this._serviceClient.addView(input, (err, result) => {
|
269 | if (err) {
|
270 | return reject(err);
|
271 | }
|
272 | resolve(result);
|
273 | });
|
274 | });
|
275 | });
|
276 | }
|
277 | addColumn(input) {
|
278 | return __awaiter(this, void 0, void 0, function* () {
|
279 | return new Promise((resolve, reject) => {
|
280 | this._serviceClient.addColumn(input, this._metadata, (err, result) => {
|
281 | if (err) {
|
282 | return reject(err);
|
283 | }
|
284 | resolve(result);
|
285 | });
|
286 | });
|
287 | });
|
288 | }
|
289 | addRow(input) {
|
290 | return __awaiter(this, void 0, void 0, function* () {
|
291 | return new Promise((resolve, reject) => {
|
292 | this._serviceClient.addRow(input, this._metadata, (err, result) => {
|
293 | if (err) {
|
294 | return reject(err);
|
295 | }
|
296 | resolve(result);
|
297 | });
|
298 | });
|
299 | });
|
300 | }
|
301 | updateCell(input) {
|
302 | return __awaiter(this, void 0, void 0, function* () {
|
303 | return new Promise((resolve, reject) => {
|
304 | this._serviceClient.updateCell(input, this._metadata, (err, result) => {
|
305 | if (err) {
|
306 | return reject(err);
|
307 | }
|
308 | resolve(result);
|
309 | });
|
310 | });
|
311 | });
|
312 | }
|
313 | getWorkspaces() {
|
314 | return __awaiter(this, void 0, void 0, function* () {
|
315 | const input = new service_pb_1.EmptyInput();
|
316 | return new Promise((resolve, reject) => {
|
317 | this._serviceClient.getAllWorkspaces(input, this._metadata, (err, result) => {
|
318 | if (err) {
|
319 | return reject(err);
|
320 | }
|
321 | resolve(result);
|
322 | });
|
323 | });
|
324 | });
|
325 | }
|
326 | getWorkspace(input) {
|
327 | return __awaiter(this, void 0, void 0, function* () {
|
328 | return new Promise((resolve, reject) => {
|
329 | this._serviceClient.getWorkspace(input, this._metadata, (err, result) => {
|
330 | if (err) {
|
331 | return reject(err);
|
332 | }
|
333 | resolve(result);
|
334 | });
|
335 | });
|
336 | });
|
337 | }
|
338 | getCore(input) {
|
339 | return __awaiter(this, void 0, void 0, function* () {
|
340 | return new Promise((resolve, reject) => {
|
341 | this._serviceClient.getCore(input, this._metadata, (err, result) => {
|
342 | if (err) {
|
343 | return reject(err);
|
344 | }
|
345 | resolve(result);
|
346 | });
|
347 | });
|
348 | });
|
349 | }
|
350 | getCores(input) {
|
351 | return __awaiter(this, void 0, void 0, function* () {
|
352 | return new Promise((resolve, reject) => {
|
353 | this._serviceClient.getAllCores(input, this._metadata, (err, result) => {
|
354 | if (err) {
|
355 | return reject(err);
|
356 | }
|
357 | resolve(result);
|
358 | });
|
359 | });
|
360 | });
|
361 | }
|
362 | getTable(input) {
|
363 | return __awaiter(this, void 0, void 0, function* () {
|
364 | return new Promise((resolve, reject) => {
|
365 | this._serviceClient.getTable(input, this._metadata, (err, result) => {
|
366 | if (err) {
|
367 | return reject(err);
|
368 | }
|
369 | resolve(result);
|
370 | });
|
371 | });
|
372 | });
|
373 | }
|
374 | getTables(input) {
|
375 | return __awaiter(this, void 0, void 0, function* () {
|
376 | return new Promise((resolve, reject) => {
|
377 | this._serviceClient.getAllTables(input, this._metadata, (err, result) => {
|
378 | if (err) {
|
379 | return reject(err);
|
380 | }
|
381 | resolve(result);
|
382 | });
|
383 | });
|
384 | });
|
385 | }
|
386 | subscribeToWorkspace(input) {
|
387 | return new rxjs_1.Observable((observer) => {
|
388 | log(`opening stream for subscription ${input.toString()}`);
|
389 | const stream = this._serviceClient.subscribeToWorkspace(input, this._metadata);
|
390 | stream.on('data', (eventPayload) => {
|
391 | if (observer.closed) {
|
392 | return;
|
393 | }
|
394 | observer.next(eventPayload);
|
395 | });
|
396 | stream.on('error', err => observer.error(err));
|
397 | stream.on('end', () => observer.complete());
|
398 | return () => {
|
399 | log(`closing stream for subscription ${input.toString()}`);
|
400 | stream.cancel();
|
401 | };
|
402 | });
|
403 | }
|
404 | observeEvent(workspaceId, topic) {
|
405 | return rxmq_1.default.channel(workspaceId).observe(topic);
|
406 | }
|
407 | observeSpecifiedEvent({ workspaceId, coreId, tableId, rowId, columnId }, specifiedTopic) {
|
408 | return this.observeEvent(workspaceId, '').pipe(Ops.filter((e) => {
|
409 | if (!coreId)
|
410 | return e.eventname.endsWith(specifiedTopic);
|
411 | if (!tableId)
|
412 | return e.eventname.startsWith(coreId) && e.eventname.endsWith(specifiedTopic);
|
413 | return (e.eventname.startsWith(`${coreId}.${tableId}`) &&
|
414 | (rowId ? e.rowid === rowId : true) &&
|
415 | (columnId ? e.columnid === columnId : true) &&
|
416 | e.eventname.endsWith(specifiedTopic));
|
417 | }));
|
418 | }
|
419 | }
|
420 | exports.Client = Client;
|
421 |
|
\ | No newline at end of file |