@digipair/skill-client-sse 0.91.0-0 → 0.92.0

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/index.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/index";
package/index.cjs.js ADDED
@@ -0,0 +1,575 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var engine = require('@digipair/engine');
6
+
7
+ function _extends() {
8
+ _extends = Object.assign || function assign(target) {
9
+ for(var i = 1; i < arguments.length; i++){
10
+ var source = arguments[i];
11
+ for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];
12
+ }
13
+ return target;
14
+ };
15
+ return _extends.apply(this, arguments);
16
+ }
17
+
18
+ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
19
+ try {
20
+ var info = gen[key](arg);
21
+ var value = info.value;
22
+ } catch (error) {
23
+ reject(error);
24
+ return;
25
+ }
26
+ if (info.done) {
27
+ resolve(value);
28
+ } else {
29
+ Promise.resolve(value).then(_next, _throw);
30
+ }
31
+ }
32
+ function _async_to_generator$1(fn) {
33
+ return function() {
34
+ var self = this, args = arguments;
35
+ return new Promise(function(resolve, reject) {
36
+ var gen = fn.apply(self, args);
37
+ function _next(value) {
38
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
39
+ }
40
+ function _throw(err) {
41
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
42
+ }
43
+ _next(undefined);
44
+ });
45
+ };
46
+ }
47
+ function _ts_generator$1(thisArg, body) {
48
+ var f, y, t, g, _ = {
49
+ label: 0,
50
+ sent: function() {
51
+ if (t[0] & 1) throw t[1];
52
+ return t[1];
53
+ },
54
+ trys: [],
55
+ ops: []
56
+ };
57
+ return g = {
58
+ next: verb(0),
59
+ "throw": verb(1),
60
+ "return": verb(2)
61
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
62
+ return this;
63
+ }), g;
64
+ function verb(n) {
65
+ return function(v) {
66
+ return step([
67
+ n,
68
+ v
69
+ ]);
70
+ };
71
+ }
72
+ function step(op) {
73
+ if (f) throw new TypeError("Generator is already executing.");
74
+ while(_)try {
75
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
76
+ if (y = 0, t) op = [
77
+ op[0] & 2,
78
+ t.value
79
+ ];
80
+ switch(op[0]){
81
+ case 0:
82
+ case 1:
83
+ t = op;
84
+ break;
85
+ case 4:
86
+ _.label++;
87
+ return {
88
+ value: op[1],
89
+ done: false
90
+ };
91
+ case 5:
92
+ _.label++;
93
+ y = op[1];
94
+ op = [
95
+ 0
96
+ ];
97
+ continue;
98
+ case 7:
99
+ op = _.ops.pop();
100
+ _.trys.pop();
101
+ continue;
102
+ default:
103
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
104
+ _ = 0;
105
+ continue;
106
+ }
107
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
108
+ _.label = op[1];
109
+ break;
110
+ }
111
+ if (op[0] === 6 && _.label < t[1]) {
112
+ _.label = t[1];
113
+ t = op;
114
+ break;
115
+ }
116
+ if (t && _.label < t[2]) {
117
+ _.label = t[2];
118
+ _.ops.push(op);
119
+ break;
120
+ }
121
+ if (t[2]) _.ops.pop();
122
+ _.trys.pop();
123
+ continue;
124
+ }
125
+ op = body.call(thisArg, _);
126
+ } catch (e) {
127
+ op = [
128
+ 6,
129
+ e
130
+ ];
131
+ y = 0;
132
+ } finally{
133
+ f = t = 0;
134
+ }
135
+ if (op[0] & 5) throw op[1];
136
+ return {
137
+ value: op[0] ? op[1] : void 0,
138
+ done: true
139
+ };
140
+ }
141
+ }
142
+ function getBytes(stream, onChunk) {
143
+ return _getBytes.apply(this, arguments);
144
+ }
145
+ function _getBytes() {
146
+ _getBytes = _async_to_generator$1(function(stream, onChunk) {
147
+ var reader, result;
148
+ return _ts_generator$1(this, function(_state) {
149
+ switch(_state.label){
150
+ case 0:
151
+ reader = stream.getReader();
152
+ _state.label = 1;
153
+ case 1:
154
+ return [
155
+ 4,
156
+ reader.read()
157
+ ];
158
+ case 2:
159
+ if (!!(result = _state.sent()).done) return [
160
+ 3,
161
+ 3
162
+ ];
163
+ onChunk(result.value);
164
+ return [
165
+ 3,
166
+ 1
167
+ ];
168
+ case 3:
169
+ return [
170
+ 2
171
+ ];
172
+ }
173
+ });
174
+ });
175
+ return _getBytes.apply(this, arguments);
176
+ }
177
+ function getLines(onLine) {
178
+ var buffer;
179
+ var position;
180
+ var fieldLength;
181
+ var discardTrailingNewline = false;
182
+ return function onChunk(arr) {
183
+ if (buffer === undefined) {
184
+ buffer = arr;
185
+ position = 0;
186
+ fieldLength = -1;
187
+ } else {
188
+ buffer = concat(buffer, arr);
189
+ }
190
+ var bufLength = buffer.length;
191
+ var lineStart = 0;
192
+ while(position < bufLength){
193
+ if (discardTrailingNewline) {
194
+ if (buffer[position] === 10) {
195
+ lineStart = ++position;
196
+ }
197
+ discardTrailingNewline = false;
198
+ }
199
+ var lineEnd = -1;
200
+ for(; position < bufLength && lineEnd === -1; ++position){
201
+ switch(buffer[position]){
202
+ case 58:
203
+ if (fieldLength === -1) {
204
+ fieldLength = position - lineStart;
205
+ }
206
+ break;
207
+ case 13:
208
+ discardTrailingNewline = true;
209
+ case 10:
210
+ lineEnd = position;
211
+ break;
212
+ }
213
+ }
214
+ if (lineEnd === -1) {
215
+ break;
216
+ }
217
+ onLine(buffer.subarray(lineStart, lineEnd), fieldLength);
218
+ lineStart = position;
219
+ fieldLength = -1;
220
+ }
221
+ if (lineStart === bufLength) {
222
+ buffer = undefined;
223
+ } else if (lineStart !== 0) {
224
+ buffer = buffer.subarray(lineStart);
225
+ position -= lineStart;
226
+ }
227
+ };
228
+ }
229
+ function getMessages(onId, onRetry, onMessage) {
230
+ var message = newMessage();
231
+ var decoder = new TextDecoder();
232
+ return function onLine(line, fieldLength) {
233
+ if (line.length === 0) {
234
+ onMessage === null || onMessage === void 0 ? void 0 : onMessage(message);
235
+ message = newMessage();
236
+ } else if (fieldLength > 0) {
237
+ var field = decoder.decode(line.subarray(0, fieldLength));
238
+ var valueOffset = fieldLength + (line[fieldLength + 1] === 32 ? 2 : 1);
239
+ var value = decoder.decode(line.subarray(valueOffset));
240
+ switch(field){
241
+ case "data":
242
+ message.data = message.data ? message.data + "\n" + value : value;
243
+ break;
244
+ case "event":
245
+ message.event = value;
246
+ break;
247
+ case "id":
248
+ onId(message.id = value);
249
+ break;
250
+ case "retry":
251
+ var retry = parseInt(value, 10);
252
+ if (!isNaN(retry)) {
253
+ onRetry(message.retry = retry);
254
+ }
255
+ break;
256
+ }
257
+ }
258
+ };
259
+ }
260
+ function concat(a, b) {
261
+ var res = new Uint8Array(a.length + b.length);
262
+ res.set(a);
263
+ res.set(b, a.length);
264
+ return res;
265
+ }
266
+ function newMessage() {
267
+ return {
268
+ data: "",
269
+ event: "",
270
+ id: "",
271
+ retry: undefined
272
+ };
273
+ }
274
+
275
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
276
+ try {
277
+ var info = gen[key](arg);
278
+ var value = info.value;
279
+ } catch (error) {
280
+ reject(error);
281
+ return;
282
+ }
283
+ if (info.done) {
284
+ resolve(value);
285
+ } else {
286
+ Promise.resolve(value).then(_next, _throw);
287
+ }
288
+ }
289
+ function _async_to_generator(fn) {
290
+ return function() {
291
+ var self = this, args = arguments;
292
+ return new Promise(function(resolve, reject) {
293
+ var gen = fn.apply(self, args);
294
+ function _next(value) {
295
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
296
+ }
297
+ function _throw(err) {
298
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
299
+ }
300
+ _next(undefined);
301
+ });
302
+ };
303
+ }
304
+ function _ts_generator(thisArg, body) {
305
+ var f, y, t, g, _ = {
306
+ label: 0,
307
+ sent: function() {
308
+ if (t[0] & 1) throw t[1];
309
+ return t[1];
310
+ },
311
+ trys: [],
312
+ ops: []
313
+ };
314
+ return g = {
315
+ next: verb(0),
316
+ "throw": verb(1),
317
+ "return": verb(2)
318
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
319
+ return this;
320
+ }), g;
321
+ function verb(n) {
322
+ return function(v) {
323
+ return step([
324
+ n,
325
+ v
326
+ ]);
327
+ };
328
+ }
329
+ function step(op) {
330
+ if (f) throw new TypeError("Generator is already executing.");
331
+ while(_)try {
332
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
333
+ if (y = 0, t) op = [
334
+ op[0] & 2,
335
+ t.value
336
+ ];
337
+ switch(op[0]){
338
+ case 0:
339
+ case 1:
340
+ t = op;
341
+ break;
342
+ case 4:
343
+ _.label++;
344
+ return {
345
+ value: op[1],
346
+ done: false
347
+ };
348
+ case 5:
349
+ _.label++;
350
+ y = op[1];
351
+ op = [
352
+ 0
353
+ ];
354
+ continue;
355
+ case 7:
356
+ op = _.ops.pop();
357
+ _.trys.pop();
358
+ continue;
359
+ default:
360
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
361
+ _ = 0;
362
+ continue;
363
+ }
364
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
365
+ _.label = op[1];
366
+ break;
367
+ }
368
+ if (op[0] === 6 && _.label < t[1]) {
369
+ _.label = t[1];
370
+ t = op;
371
+ break;
372
+ }
373
+ if (t && _.label < t[2]) {
374
+ _.label = t[2];
375
+ _.ops.push(op);
376
+ break;
377
+ }
378
+ if (t[2]) _.ops.pop();
379
+ _.trys.pop();
380
+ continue;
381
+ }
382
+ op = body.call(thisArg, _);
383
+ } catch (e) {
384
+ op = [
385
+ 6,
386
+ e
387
+ ];
388
+ y = 0;
389
+ } finally{
390
+ f = t = 0;
391
+ }
392
+ if (op[0] & 5) throw op[1];
393
+ return {
394
+ value: op[0] ? op[1] : void 0,
395
+ done: true
396
+ };
397
+ }
398
+ }
399
+ var __rest = undefined && undefined.__rest || function(s, e) {
400
+ var t = {};
401
+ for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
402
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for(var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++){
403
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
404
+ }
405
+ return t;
406
+ };
407
+ var EventStreamContentType = "text/event-stream";
408
+ var DefaultRetryInterval = 1000;
409
+ var LastEventId = "last-event-id";
410
+ function fetchEventSource(input, _a) {
411
+ var inputSignal = _a.signal, inputHeaders = _a.headers, inputOnOpen = _a.onopen, onmessage = _a.onmessage, onclose = _a.onclose, onerror = _a.onerror, openWhenHidden = _a.openWhenHidden, inputFetch = _a.fetch, rest = __rest(_a, [
412
+ "signal",
413
+ "headers",
414
+ "onopen",
415
+ "onmessage",
416
+ "onclose",
417
+ "onerror",
418
+ "openWhenHidden",
419
+ "fetch"
420
+ ]);
421
+ return new Promise(function(resolve, reject) {
422
+ var onVisibilityChange = function onVisibilityChange() {
423
+ curRequestController.abort();
424
+ if (!document.hidden) {
425
+ create();
426
+ }
427
+ };
428
+ var dispose = function dispose() {
429
+ document.removeEventListener("visibilitychange", onVisibilityChange);
430
+ window.clearTimeout(retryTimer);
431
+ curRequestController.abort();
432
+ };
433
+ var create = function create() {
434
+ return _create.apply(this, arguments);
435
+ };
436
+ var headers = Object.assign({}, inputHeaders);
437
+ if (!headers.accept) {
438
+ headers.accept = EventStreamContentType;
439
+ }
440
+ var curRequestController;
441
+ if (!openWhenHidden) {
442
+ document.addEventListener("visibilitychange", onVisibilityChange);
443
+ }
444
+ var retryInterval = DefaultRetryInterval;
445
+ var retryTimer = 0;
446
+ inputSignal === null || inputSignal === void 0 ? void 0 : inputSignal.addEventListener("abort", function() {
447
+ dispose();
448
+ resolve();
449
+ });
450
+ var fetch = inputFetch !== null && inputFetch !== void 0 ? inputFetch : window.fetch;
451
+ var onopen = inputOnOpen !== null && inputOnOpen !== void 0 ? inputOnOpen : defaultOnOpen;
452
+ function _create() {
453
+ _create = _async_to_generator(function() {
454
+ var _$_a, response, err, interval;
455
+ return _ts_generator(this, function(_state) {
456
+ switch(_state.label){
457
+ case 0:
458
+ curRequestController = new AbortController();
459
+ _state.label = 1;
460
+ case 1:
461
+ _state.trys.push([
462
+ 1,
463
+ 5,
464
+ ,
465
+ 6
466
+ ]);
467
+ return [
468
+ 4,
469
+ fetch(input, Object.assign(Object.assign({}, rest), {
470
+ headers: headers,
471
+ signal: curRequestController.signal
472
+ }))
473
+ ];
474
+ case 2:
475
+ response = _state.sent();
476
+ return [
477
+ 4,
478
+ onopen(response)
479
+ ];
480
+ case 3:
481
+ _state.sent();
482
+ return [
483
+ 4,
484
+ getBytes(response.body, getLines(getMessages(function(id) {
485
+ if (id) {
486
+ headers[LastEventId] = id;
487
+ } else {
488
+ delete headers[LastEventId];
489
+ }
490
+ }, function(retry) {
491
+ retryInterval = retry;
492
+ }, onmessage)))
493
+ ];
494
+ case 4:
495
+ _state.sent();
496
+ onclose === null || onclose === void 0 ? void 0 : onclose();
497
+ dispose();
498
+ resolve();
499
+ return [
500
+ 3,
501
+ 6
502
+ ];
503
+ case 5:
504
+ err = _state.sent();
505
+ if (!curRequestController.signal.aborted) {
506
+ try {
507
+ interval = (_$_a = onerror === null || onerror === void 0 ? void 0 : onerror(err)) !== null && _$_a !== void 0 ? _$_a : retryInterval;
508
+ window.clearTimeout(retryTimer);
509
+ retryTimer = window.setTimeout(create, interval);
510
+ } catch (innerErr) {
511
+ dispose();
512
+ reject(innerErr);
513
+ }
514
+ }
515
+ return [
516
+ 3,
517
+ 6
518
+ ];
519
+ case 6:
520
+ return [
521
+ 2
522
+ ];
523
+ }
524
+ });
525
+ });
526
+ return _create.apply(this, arguments);
527
+ }
528
+ create();
529
+ });
530
+ }
531
+ function defaultOnOpen(response) {
532
+ var contentType = response.headers.get("content-type");
533
+ if (!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(EventStreamContentType))) {
534
+ throw new Error("Expected content-type to be ".concat(EventStreamContentType, ", Actual: ").concat(contentType));
535
+ }
536
+ }
537
+
538
+ let ClientSSEService = class ClientSSEService {
539
+ async connect(params, _pinsSettingsList, context) {
540
+ var _context_protected;
541
+ const { url = '', event = 'message', message = [], open = [], close = [], error = [], options = {} } = params;
542
+ await fetchEventSource(url, _extends({
543
+ signal: (_context_protected = context.protected) == null ? void 0 : _context_protected.signal,
544
+ method: 'POST',
545
+ headers: {
546
+ 'Content-Type': 'application/json'
547
+ },
548
+ onmessage: (notification)=>{
549
+ if (notification.event !== event) {
550
+ return;
551
+ }
552
+ engine.executePinsList(message, _extends({}, context, {
553
+ message: JSON.parse(notification.data)
554
+ }), `${context.__PATH__}.message`);
555
+ },
556
+ onopen: async ()=>{
557
+ await engine.executePinsList(open, _extends({}, context), `${context.__PATH__}.open`);
558
+ },
559
+ onclose: ()=>{
560
+ engine.executePinsList(close, _extends({}, context), `${context.__PATH__}.close`);
561
+ },
562
+ onerror (err) {
563
+ if (error.length === 0) {
564
+ console.error(err);
565
+ }
566
+ engine.executePinsList(error, _extends({}, context, {
567
+ error: err
568
+ }), `${context.__PATH__}.error`);
569
+ }
570
+ }, options));
571
+ }
572
+ };
573
+ const connect = (params, pinsSettingsList, context)=>new ClientSSEService().connect(params, pinsSettingsList, context);
574
+
575
+ exports.connect = connect;