@xibosignage/xibo-communication-framework 0.0.1 → 0.0.2
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/dist/src/modules/xmr/xmr.d.ts +1 -0
- package/dist/xibo-communication-framework.cjs.js +135 -296
- package/dist/xibo-communication-framework.cjs.js.map +1 -1
- package/dist/xibo-communication-framework.d.ts +1 -0
- package/dist/xibo-communication-framework.esm.js +135 -296
- package/dist/xibo-communication-framework.esm.js.map +1 -1
- package/dist/xibo-communication-framework.js +135 -296
- package/dist/xibo-communication-framework.min.js +3 -1
- package/dist/xibo-communication-framework.min.js.map +1 -1
- package/package.json +2 -1
|
@@ -47,274 +47,113 @@ function _defineProperty(e, r, t) {
|
|
|
47
47
|
writable: true
|
|
48
48
|
}) : e[r] = t, e;
|
|
49
49
|
}
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
function h(r, e, n, o) {
|
|
78
|
-
var i = e && e.prototype instanceof Generator ? e : Generator,
|
|
79
|
-
a = Object.create(i.prototype);
|
|
80
|
-
return c(a, "_invoke", function (r, e, n) {
|
|
81
|
-
var o = 1;
|
|
82
|
-
return function (i, a) {
|
|
83
|
-
if (3 === o) throw Error("Generator is already running");
|
|
84
|
-
if (4 === o) {
|
|
85
|
-
if ("throw" === i) throw a;
|
|
86
|
-
return {
|
|
87
|
-
value: t,
|
|
88
|
-
done: true
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
for (n.method = i, n.arg = a;;) {
|
|
92
|
-
var u = n.delegate;
|
|
93
|
-
if (u) {
|
|
94
|
-
var c = d(u, n);
|
|
95
|
-
if (c) {
|
|
96
|
-
if (c === f) continue;
|
|
97
|
-
return c;
|
|
98
|
-
}
|
|
50
|
+
function _regenerator() {
|
|
51
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
52
|
+
var e,
|
|
53
|
+
t,
|
|
54
|
+
r = "function" == typeof Symbol ? Symbol : {},
|
|
55
|
+
n = r.iterator || "@@iterator",
|
|
56
|
+
o = r.toStringTag || "@@toStringTag";
|
|
57
|
+
function i(r, n, o, i) {
|
|
58
|
+
var c = n && n.prototype instanceof Generator ? n : Generator,
|
|
59
|
+
u = Object.create(c.prototype);
|
|
60
|
+
return _regeneratorDefine(u, "_invoke", function (r, n, o) {
|
|
61
|
+
var i,
|
|
62
|
+
c,
|
|
63
|
+
u,
|
|
64
|
+
f = 0,
|
|
65
|
+
p = o || [],
|
|
66
|
+
y = false,
|
|
67
|
+
G = {
|
|
68
|
+
p: 0,
|
|
69
|
+
n: 0,
|
|
70
|
+
v: e,
|
|
71
|
+
a: d,
|
|
72
|
+
f: d.bind(e, 4),
|
|
73
|
+
d: function (t, r) {
|
|
74
|
+
return i = t, c = 0, u = e, G.n = r, a;
|
|
99
75
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
76
|
+
};
|
|
77
|
+
function d(r, n) {
|
|
78
|
+
for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
|
|
79
|
+
var o,
|
|
80
|
+
i = p[t],
|
|
81
|
+
d = G.p,
|
|
82
|
+
l = i[2];
|
|
83
|
+
r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
|
|
84
|
+
}
|
|
85
|
+
if (o || r > 1) return a;
|
|
86
|
+
throw y = true, n;
|
|
87
|
+
}
|
|
88
|
+
return function (o, p, l) {
|
|
89
|
+
if (f > 1) throw TypeError("Generator is already running");
|
|
90
|
+
for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
|
|
91
|
+
i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
|
|
92
|
+
try {
|
|
93
|
+
if (f = 2, i) {
|
|
94
|
+
if (c || (o = "next"), t = i[o]) {
|
|
95
|
+
if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
|
|
96
|
+
if (!t.done) return t;
|
|
97
|
+
u = t.value, c < 2 && (c = 0);
|
|
98
|
+
} else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
|
|
99
|
+
i = e;
|
|
100
|
+
} else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
|
|
101
|
+
} catch (t) {
|
|
102
|
+
i = e, c = 1, u = t;
|
|
103
|
+
} finally {
|
|
104
|
+
f = 1;
|
|
112
105
|
}
|
|
113
|
-
"throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg);
|
|
114
106
|
}
|
|
107
|
+
return {
|
|
108
|
+
value: t,
|
|
109
|
+
done: y
|
|
110
|
+
};
|
|
115
111
|
};
|
|
116
|
-
}(r,
|
|
117
|
-
}
|
|
118
|
-
function s(t, r, e) {
|
|
119
|
-
try {
|
|
120
|
-
return {
|
|
121
|
-
type: "normal",
|
|
122
|
-
arg: t.call(r, e)
|
|
123
|
-
};
|
|
124
|
-
} catch (t) {
|
|
125
|
-
return {
|
|
126
|
-
type: "throw",
|
|
127
|
-
arg: t
|
|
128
|
-
};
|
|
129
|
-
}
|
|
112
|
+
}(r, o, i), true), u;
|
|
130
113
|
}
|
|
131
|
-
|
|
132
|
-
var f = {};
|
|
114
|
+
var a = {};
|
|
133
115
|
function Generator() {}
|
|
134
116
|
function GeneratorFunction() {}
|
|
135
117
|
function GeneratorFunctionPrototype() {}
|
|
136
|
-
|
|
137
|
-
c(
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
var v = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(l);
|
|
144
|
-
function g(t) {
|
|
145
|
-
["next", "throw", "return"].forEach(function (r) {
|
|
146
|
-
c(t, r, function (t) {
|
|
147
|
-
return this._invoke(r, t);
|
|
148
|
-
});
|
|
149
|
-
});
|
|
118
|
+
t = Object.getPrototypeOf;
|
|
119
|
+
var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
|
|
120
|
+
return this;
|
|
121
|
+
}), t),
|
|
122
|
+
u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
|
|
123
|
+
function f(e) {
|
|
124
|
+
return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
|
|
150
125
|
}
|
|
151
|
-
|
|
152
|
-
function e(o, i, a, u) {
|
|
153
|
-
var c = s(t[o], t, i);
|
|
154
|
-
if ("throw" !== c.type) {
|
|
155
|
-
var h = c.arg,
|
|
156
|
-
f = h.value;
|
|
157
|
-
return f && "object" == typeof f && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) {
|
|
158
|
-
e("next", t, a, u);
|
|
159
|
-
}, function (t) {
|
|
160
|
-
e("throw", t, a, u);
|
|
161
|
-
}) : r.resolve(f).then(function (t) {
|
|
162
|
-
h.value = t, a(h);
|
|
163
|
-
}, function (t) {
|
|
164
|
-
return e("throw", t, a, u);
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
u(c.arg);
|
|
168
|
-
}
|
|
169
|
-
var o;
|
|
170
|
-
c(this, "_invoke", function (t, n) {
|
|
171
|
-
function i() {
|
|
172
|
-
return new r(function (r, o) {
|
|
173
|
-
e(t, n, r, o);
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
return o = o ? o.then(i, i) : i();
|
|
177
|
-
}, true);
|
|
178
|
-
}
|
|
179
|
-
function d(r, e) {
|
|
180
|
-
var n = e.method,
|
|
181
|
-
o = r.i[n];
|
|
182
|
-
if (o === t) return e.delegate = null, "throw" === n && r.i.return && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f;
|
|
183
|
-
var i = s(o, r.i, e.arg);
|
|
184
|
-
if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f;
|
|
185
|
-
var a = i.arg;
|
|
186
|
-
return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f);
|
|
187
|
-
}
|
|
188
|
-
function w(t) {
|
|
189
|
-
this.tryEntries.push(t);
|
|
190
|
-
}
|
|
191
|
-
function m(r) {
|
|
192
|
-
var e = r[4] || {};
|
|
193
|
-
e.type = "normal", e.arg = t, r[4] = e;
|
|
194
|
-
}
|
|
195
|
-
function Context(t) {
|
|
196
|
-
this.tryEntries = [[-1]], t.forEach(w, this), this.reset(true);
|
|
197
|
-
}
|
|
198
|
-
function x(r) {
|
|
199
|
-
if (null != r) {
|
|
200
|
-
var e = r[i];
|
|
201
|
-
if (e) return e.call(r);
|
|
202
|
-
if ("function" == typeof r.next) return r;
|
|
203
|
-
if (!isNaN(r.length)) {
|
|
204
|
-
var o = -1,
|
|
205
|
-
a = function e() {
|
|
206
|
-
for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = false, e;
|
|
207
|
-
return e.value = t, e.done = true, e;
|
|
208
|
-
};
|
|
209
|
-
return a.next = a;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
throw new TypeError(typeof r + " is not iterable");
|
|
213
|
-
}
|
|
214
|
-
return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = c(GeneratorFunctionPrototype, u, "GeneratorFunction"), r.isGeneratorFunction = function (t) {
|
|
215
|
-
var r = "function" == typeof t && t.constructor;
|
|
216
|
-
return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name));
|
|
217
|
-
}, r.mark = function (t) {
|
|
218
|
-
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = Object.create(v), t;
|
|
219
|
-
}, r.awrap = function (t) {
|
|
220
|
-
return {
|
|
221
|
-
__await: t
|
|
222
|
-
};
|
|
223
|
-
}, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () {
|
|
126
|
+
return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
|
|
224
127
|
return this;
|
|
225
|
-
}),
|
|
226
|
-
void 0 === i && (i = Promise);
|
|
227
|
-
var a = new AsyncIterator(h(t, e, n, o), i);
|
|
228
|
-
return r.isGeneratorFunction(e) ? a : a.next().then(function (t) {
|
|
229
|
-
return t.done ? t.value : a.next();
|
|
230
|
-
});
|
|
231
|
-
}, g(v), c(v, u, "Generator"), c(v, i, function () {
|
|
232
|
-
return this;
|
|
233
|
-
}), c(v, "toString", function () {
|
|
128
|
+
}), _regeneratorDefine(u, "toString", function () {
|
|
234
129
|
return "[object Generator]";
|
|
235
|
-
}),
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
return function t() {
|
|
240
|
-
for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = false, t;
|
|
241
|
-
return t.done = true, t;
|
|
130
|
+
}), (_regenerator = function () {
|
|
131
|
+
return {
|
|
132
|
+
w: i,
|
|
133
|
+
m: f
|
|
242
134
|
};
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
function n(t) {
|
|
258
|
-
a.type = "throw", a.arg = r, e.next = t;
|
|
259
|
-
}
|
|
260
|
-
for (var o = e.tryEntries.length - 1; o >= 0; --o) {
|
|
261
|
-
var i = this.tryEntries[o],
|
|
262
|
-
a = i[4],
|
|
263
|
-
u = this.prev,
|
|
264
|
-
c = i[1],
|
|
265
|
-
h = i[2];
|
|
266
|
-
if (-1 === i[0]) return n("end"), false;
|
|
267
|
-
if (!c && !h) throw Error("try statement without catch or finally");
|
|
268
|
-
if (null != i[0] && i[0] <= u) {
|
|
269
|
-
if (u < c) return this.method = "next", this.arg = t, n(c), true;
|
|
270
|
-
if (u < h) return n(h), false;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
},
|
|
274
|
-
abrupt: function (t, r) {
|
|
275
|
-
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
|
|
276
|
-
var n = this.tryEntries[e];
|
|
277
|
-
if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) {
|
|
278
|
-
var o = n;
|
|
279
|
-
break;
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null);
|
|
283
|
-
var i = o ? o[4] : {};
|
|
284
|
-
return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i);
|
|
285
|
-
},
|
|
286
|
-
complete: function (t, r) {
|
|
287
|
-
if ("throw" === t.type) throw t.arg;
|
|
288
|
-
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && r && (this.next = r), f;
|
|
289
|
-
},
|
|
290
|
-
finish: function (t) {
|
|
291
|
-
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
|
|
292
|
-
var e = this.tryEntries[r];
|
|
293
|
-
if (e[2] === t) return this.complete(e[4], e[3]), m(e), f;
|
|
294
|
-
}
|
|
295
|
-
},
|
|
296
|
-
catch: function (t) {
|
|
297
|
-
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
|
|
298
|
-
var e = this.tryEntries[r];
|
|
299
|
-
if (e[0] === t) {
|
|
300
|
-
var n = e[4];
|
|
301
|
-
if ("throw" === n.type) {
|
|
302
|
-
var o = n.arg;
|
|
303
|
-
m(e);
|
|
304
|
-
}
|
|
305
|
-
return o;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
throw Error("illegal catch attempt");
|
|
309
|
-
},
|
|
310
|
-
delegateYield: function (r, e, n) {
|
|
311
|
-
return this.delegate = {
|
|
312
|
-
i: x(r),
|
|
313
|
-
r: e,
|
|
314
|
-
n: n
|
|
315
|
-
}, "next" === this.method && (this.arg = t), f;
|
|
135
|
+
})();
|
|
136
|
+
}
|
|
137
|
+
function _regeneratorDefine(e, r, n, t) {
|
|
138
|
+
var i = Object.defineProperty;
|
|
139
|
+
try {
|
|
140
|
+
i({}, "", {});
|
|
141
|
+
} catch (e) {
|
|
142
|
+
i = 0;
|
|
143
|
+
}
|
|
144
|
+
_regeneratorDefine = function (e, r, n, t) {
|
|
145
|
+
function o(r, n) {
|
|
146
|
+
_regeneratorDefine(e, r, function (e) {
|
|
147
|
+
return this._invoke(r, n, e);
|
|
148
|
+
});
|
|
316
149
|
}
|
|
317
|
-
|
|
150
|
+
r ? i ? i(e, r, {
|
|
151
|
+
value: n,
|
|
152
|
+
enumerable: !t,
|
|
153
|
+
configurable: !t,
|
|
154
|
+
writable: !t
|
|
155
|
+
}) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
|
|
156
|
+
}, _regeneratorDefine(e, r, n, t);
|
|
318
157
|
}
|
|
319
158
|
function _toPrimitive(t, r) {
|
|
320
159
|
if ("object" != typeof t || !t) return t;
|
|
@@ -388,10 +227,10 @@ var Xmr = /*#__PURE__*/function () {
|
|
|
388
227
|
}, {
|
|
389
228
|
key: "init",
|
|
390
229
|
value: function () {
|
|
391
|
-
var _init = _asyncToGenerator(/*#__PURE__*/
|
|
230
|
+
var _init = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
392
231
|
var _this = this;
|
|
393
|
-
return
|
|
394
|
-
while (1) switch (_context.
|
|
232
|
+
return _regenerator().w(function (_context) {
|
|
233
|
+
while (1) switch (_context.n) {
|
|
395
234
|
case 0:
|
|
396
235
|
this.interval = setInterval(function () {
|
|
397
236
|
if (_this.isConnectionWanted && !_this.isActive()) {
|
|
@@ -401,8 +240,7 @@ var Xmr = /*#__PURE__*/function () {
|
|
|
401
240
|
}
|
|
402
241
|
}, 60000);
|
|
403
242
|
case 1:
|
|
404
|
-
|
|
405
|
-
return _context.stop();
|
|
243
|
+
return _context.a(2);
|
|
406
244
|
}
|
|
407
245
|
}, _callee, this);
|
|
408
246
|
}));
|
|
@@ -414,20 +252,21 @@ var Xmr = /*#__PURE__*/function () {
|
|
|
414
252
|
}, {
|
|
415
253
|
key: "start",
|
|
416
254
|
value: function () {
|
|
417
|
-
var _start = _asyncToGenerator(/*#__PURE__*/
|
|
255
|
+
var _start = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(url, cmsKey) {
|
|
418
256
|
var _this2 = this;
|
|
419
|
-
|
|
420
|
-
|
|
257
|
+
var _t;
|
|
258
|
+
return _regenerator().w(function (_context2) {
|
|
259
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
421
260
|
case 0:
|
|
422
261
|
if (!(!this.channel || this.channel === 'unknown')) {
|
|
423
|
-
_context2.
|
|
262
|
+
_context2.n = 1;
|
|
424
263
|
break;
|
|
425
264
|
}
|
|
426
265
|
console.error('Xmr::start: channel unknown, XMR will be disabled');
|
|
427
|
-
return _context2.
|
|
428
|
-
case
|
|
266
|
+
return _context2.a(2);
|
|
267
|
+
case 1:
|
|
429
268
|
if (!(this.url === 'DISABLED')) {
|
|
430
|
-
_context2.
|
|
269
|
+
_context2.n = 2;
|
|
431
270
|
break;
|
|
432
271
|
}
|
|
433
272
|
console.info('Xmr::start: XMR disabled');
|
|
@@ -435,46 +274,46 @@ var Xmr = /*#__PURE__*/function () {
|
|
|
435
274
|
if (this.isActive()) {
|
|
436
275
|
stop();
|
|
437
276
|
}
|
|
438
|
-
return _context2.
|
|
439
|
-
case
|
|
277
|
+
return _context2.a(2);
|
|
278
|
+
case 2:
|
|
440
279
|
this.isConnectionWanted = true;
|
|
441
280
|
// Are we already connected?
|
|
442
281
|
if (!(this.isActive() && this.url === url)) {
|
|
443
|
-
_context2.
|
|
282
|
+
_context2.n = 3;
|
|
444
283
|
break;
|
|
445
284
|
}
|
|
446
285
|
console.debug('Xmr::start: already connected to this URL');
|
|
447
286
|
this.cmsKey = cmsKey;
|
|
448
|
-
return _context2.
|
|
449
|
-
case
|
|
287
|
+
return _context2.a(2);
|
|
288
|
+
case 3:
|
|
450
289
|
if (!this.isConnected) {
|
|
451
|
-
_context2.
|
|
290
|
+
_context2.n = 5;
|
|
452
291
|
break;
|
|
453
292
|
}
|
|
454
293
|
console.debug('Xmr::start: already connected but not active, or a different URL');
|
|
455
|
-
_context2.
|
|
294
|
+
_context2.n = 4;
|
|
456
295
|
return this.stop();
|
|
457
|
-
case
|
|
458
|
-
_context2.
|
|
296
|
+
case 4:
|
|
297
|
+
_context2.n = 6;
|
|
459
298
|
break;
|
|
460
|
-
case
|
|
299
|
+
case 5:
|
|
461
300
|
console.debug('Xmr::start: not connected yet');
|
|
462
|
-
case
|
|
301
|
+
case 6:
|
|
463
302
|
// Set the URL and cmsKey.
|
|
464
303
|
this.url = url;
|
|
465
304
|
this.cmsKey = cmsKey;
|
|
466
305
|
console.debug('Xmr::start: connecting to ' + this.url);
|
|
467
|
-
_context2.
|
|
306
|
+
_context2.p = 7;
|
|
468
307
|
this.socket = new WebSocket(this.url);
|
|
469
|
-
_context2.
|
|
308
|
+
_context2.n = 9;
|
|
470
309
|
break;
|
|
471
|
-
case
|
|
472
|
-
_context2.
|
|
473
|
-
|
|
474
|
-
console.debug('Xmr::start: failed connecting to ' + this.url + ', e = ' +
|
|
310
|
+
case 8:
|
|
311
|
+
_context2.p = 8;
|
|
312
|
+
_t = _context2.v;
|
|
313
|
+
console.debug('Xmr::start: failed connecting to ' + this.url + ', e = ' + _t);
|
|
475
314
|
this.emitter.emit('error', 'Failed to connect');
|
|
476
|
-
return _context2.
|
|
477
|
-
case
|
|
315
|
+
return _context2.a(2);
|
|
316
|
+
case 9:
|
|
478
317
|
/**
|
|
479
318
|
* Listener for socket open
|
|
480
319
|
*/
|
|
@@ -537,16 +376,17 @@ var Xmr = /*#__PURE__*/function () {
|
|
|
537
376
|
} else if (message.action == 'commandAction' && message.commandCode.startsWith('showStatusWindow')) {
|
|
538
377
|
var split = message.commandCode.split('|');
|
|
539
378
|
_this2.emitter.emit('showStatusWindow', parseInt(split[1]) || 60);
|
|
379
|
+
} else if (message.action == 'commandAction' && message.commandCode.startsWith('forceUpdateChromeOS')) {
|
|
380
|
+
_this2.emitter.emit('forceUpdateChromeOS');
|
|
540
381
|
} else {
|
|
541
382
|
console.error('Xmr::message: unknown action: ' + message.action);
|
|
542
383
|
}
|
|
543
384
|
}
|
|
544
385
|
});
|
|
545
|
-
case
|
|
546
|
-
|
|
547
|
-
return _context2.stop();
|
|
386
|
+
case 10:
|
|
387
|
+
return _context2.a(2);
|
|
548
388
|
}
|
|
549
|
-
}, _callee2, this, [[
|
|
389
|
+
}, _callee2, this, [[7, 8]]);
|
|
550
390
|
}));
|
|
551
391
|
function start(_x, _x2) {
|
|
552
392
|
return _start.apply(this, arguments);
|
|
@@ -556,9 +396,9 @@ var Xmr = /*#__PURE__*/function () {
|
|
|
556
396
|
}, {
|
|
557
397
|
key: "stop",
|
|
558
398
|
value: function () {
|
|
559
|
-
var _stop = _asyncToGenerator(/*#__PURE__*/
|
|
560
|
-
return
|
|
561
|
-
while (1) switch (_context3.
|
|
399
|
+
var _stop = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
400
|
+
return _regenerator().w(function (_context3) {
|
|
401
|
+
while (1) switch (_context3.n) {
|
|
562
402
|
case 0:
|
|
563
403
|
console.debug('Xmr::stop');
|
|
564
404
|
if (this.socket) {
|
|
@@ -566,9 +406,8 @@ var Xmr = /*#__PURE__*/function () {
|
|
|
566
406
|
this.socket.close();
|
|
567
407
|
this.isConnected = false;
|
|
568
408
|
}
|
|
569
|
-
case
|
|
570
|
-
|
|
571
|
-
return _context3.stop();
|
|
409
|
+
case 1:
|
|
410
|
+
return _context3.a(2);
|
|
572
411
|
}
|
|
573
412
|
}, _callee3, this);
|
|
574
413
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xibo-communication-framework.esm.js","sources":["../node_modules/nanoevents/index.js","../../src/modules/xmr/xmr.ts"],"sourcesContent":["export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n","/*\n * Copyright (C) 2025 Xibo Signage Ltd\n *\n * Xibo - Digital Signage - https://www.xibosignage.com\n *\n * This file is part of Xibo.\n *\n * Xibo is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * any later version.\n *\n * Xibo is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with Xibo. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {createNanoEvents, type Emitter} from 'nanoevents';\nimport {DateTime} from 'luxon';\n\nexport interface XmrEvents {\n connected: () => void;\n disconnected: () => void;\n error: (e: string) => void;\n statusChange: (status: string) => void;\n\n collectNow: () => void;\n screenShot: () => void;\n licenceCheck: () => void;\n showStatusWindow: (timeout: number) => void;\n}\n\nexport default class Xmr {\n emitter: Emitter<XmrEvents>;\n\n url: string | null;\n cmsKey: string | null;\n channel: string;\n socket!: WebSocket;\n\n // State\n isConnectionWanted: boolean;\n isConnected: boolean;\n lastMessageAt: DateTime;\n\n interval: NodeJS.Timeout | undefined;\n\n constructor (channel: string) {\n // Emitter\n this.emitter = createNanoEvents<XmrEvents>();\n this.url = null;\n this.cmsKey = null;\n this.channel = channel;\n this.isConnected = false;\n this.isConnectionWanted = false;\n this.lastMessageAt = DateTime.now().minus({year: 1});\n }\n\n on<E extends keyof XmrEvents>(event: E, callback: XmrEvents[E]) {\n return this.emitter.on(event, callback);\n }\n\n async init() {\n this.interval = setInterval(() => {\n if (this.isConnectionWanted && !this.isActive()) {\n console.debug('Xmr::setInterval: should be active');\n\n // Call start again\n this.start(this.url || 'DISABLED', this.cmsKey || 'n/a');\n }\n }, 60000);\n }\n\n async start(url: string, cmsKey: string){\n if (!this.channel || this.channel === 'unknown') {\n console.error('Xmr::start: channel unknown, XMR will be disabled');\n return;\n }\n\n // Disable XMR if we've been told to.\n if (this.url === 'DISABLED') {\n console.info('Xmr::start: XMR disabled');\n this.isConnectionWanted = false;\n if (this.isActive()) {\n stop();\n }\n return;\n }\n\n this.isConnectionWanted = true;\n\n // Are we already connected?\n if (this.isActive() && this.url === url) {\n console.debug('Xmr::start: already connected to this URL');\n this.cmsKey = cmsKey;\n return;\n } else if (this.isConnected) {\n console.debug('Xmr::start: already connected but not active, or a different URL');\n await this.stop();\n } else {\n console.debug('Xmr::start: not connected yet');\n }\n\n // Set the URL and cmsKey.\n this.url = url;\n this.cmsKey = cmsKey;\n\n console.debug('Xmr::start: connecting to ' + this.url);\n\n try {\n this.socket = new WebSocket(this.url);\n } catch (e) {\n console.debug('Xmr::start: failed connecting to ' + this.url + ', e = ' + e);\n this.emitter.emit('error', 'Failed to connect');\n return;\n }\n\n /**\n * Listener for socket open\n */\n this.socket.addEventListener('open', (event) => {\n console.debug('Xmr::' + event.type);\n\n if (this.socket.readyState !== WebSocket.OPEN) {\n console.info('Xmr::' + event.type + ': not open yet');\n return;\n }\n\n // Create and send an initialisation message.\n this.socket.send(JSON.stringify({\n 'type': 'init',\n 'key': this.cmsKey,\n 'channel': this.channel,\n }));\n\n this.isConnected = true;\n\n this.emitter.emit('connected');\n });\n\n /**\n * Listener for socket close\n */\n this.socket.addEventListener('close', (event) => {\n console.debug('Xmr::' + event.type);\n\n this.isConnected = false;\n\n this.emitter.emit('disconnected');\n });\n\n /**\n * Listener for socket error\n */\n this.socket.addEventListener('error', (event) => {\n console.debug('Xmr::' + event.type);\n\n this.emitter.emit('error', 'error');\n });\n\n /**\n * Listener for socket message\n */\n this.socket.addEventListener('message', (event) => {\n console.debug(event);\n\n this.lastMessageAt = DateTime.now();\n this.emitter.emit('statusChange', this.lastMessageAt.toISO() || '');\n\n // Expect a JSON message or a H\n if (event.data === 'H') {\n console.debug('Xmr::message: Heartbeat...');\n } else {\n // JSON message.\n const message = JSON.parse(event.data);\n\n console.debug('Xmr::message: action is ' + message.action);\n\n // Check the createdDt and TTL against the current date time.\n const expiresAt = DateTime.fromISO(message.createdDt).plus({seconds: parseInt(message.ttl)});\n if (expiresAt < DateTime.now()) {\n console.debug('Xmr::message: message expired at ' + expiresAt.toString());\n } else if (message.action === 'collectNow') {\n this.emitter.emit('collectNow');\n } else if (message.action === 'screenShot') {\n this.emitter.emit('screenShot');\n } else if (message.action === 'licenceCheck') {\n this.emitter.emit('licenceCheck');\n } else if (message.action == 'commandAction' && message.commandCode.startsWith('showStatusWindow')) {\n const split = message.commandCode.split('|');\n this.emitter.emit('showStatusWindow', parseInt(split[1]) || 60);\n } else {\n console.error('Xmr::message: unknown action: ' + message.action);\n }\n }\n });\n }\n\n async stop() {\n console.debug('Xmr::stop');\n if (this.socket) {\n console.debug('Xmr::stop: closing active socket');\n this.socket.close();\n this.isConnected = false;\n }\n }\n\n isActive(): boolean {\n console.debug('Xmr::isActive: lastMessageAt: ' + this.lastMessageAt.toString());\n return this.isConnected && this.lastMessageAt > DateTime.now().minus({minute: 15});\n }\n}\n"],"names":["createNanoEvents","emit","event","_len","arguments","length","args","Array","_key","callbacks","events","i","apply","on","cb","_this$events","_this","push","_this$events$event","filter","Xmr","channel","_classCallCheck","_defineProperty","emitter","url","cmsKey","isConnected","isConnectionWanted","lastMessageAt","DateTime","now","minus","year","_createClass","key","value","callback","_init","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","interval","setInterval","isActive","console","debug","start","stop","init","_start","_callee2","_this2","_callee2$","_context2","error","abrupt","info","socket","WebSocket","t0","addEventListener","type","readyState","OPEN","send","JSON","stringify","toISO","data","message","parse","action","expiresAt","fromISO","createdDt","plus","seconds","parseInt","ttl","toString","commandCode","startsWith","split","_x","_x2","_stop","_callee3","_callee3$","_context3","close","minute"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAIA,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAA;EAAA,OAAU;AACnCC,IAAAA,IAAI,EAAJA,SAAAA,IAAIA,CAACC,KAAK,EAAW;MAAA,KAAAC,IAAAA,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAANC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,QAAAA,IAAI,CAAAE,IAAA,GAAAJ,CAAAA,CAAAA,GAAAA,SAAA,CAAAI,IAAA,CAAA;AAAA;AACjB,MAAA,KACE,IAAIC,SAAS,GAAG,IAAI,CAACC,MAAM,CAACR,KAAK,CAAC,IAAI,EAAE,EACtCS,CAAC,GAAG,CAAC,EACLN,MAAM,GAAGI,SAAS,CAACJ,MAAM,EAC3BM,CAAC,GAAGN,MAAM,EACVM,CAAC,EAAE,EACH;QACAF,SAAS,CAACE,CAAC,CAAC,CAAAC,KAAA,CAAZH,SAAS,EAAOH,IAAI,CAAC;AACvB;KACD;IACDI,MAAM,EAAE,EAAE;AACVG,IAAAA,EAAE,WAAFA,EAAEA,CAACX,KAAK,EAAEY,EAAE,EAAE;AAAA,MAAA,IAAAC,YAAA;QAAAC,KAAA,GAAA,IAAA;AACX,MAAA,CAAC,CAAAD,YAAA,GAAA,IAAI,CAACL,MAAM,EAACR,KAAK,CAAC,KAAlBa,YAAA,CAAYb,KAAK,CAAC,GAAK,EAAE,GAAEe,IAAI,CAACH,EAAE,CAAC;AACrC,MAAA,OAAO,YAAM;AAAA,QAAA,IAAAI,kBAAA;QACXF,KAAI,CAACN,MAAM,CAACR,KAAK,CAAC,GAAAgB,CAAAA,kBAAA,GAAGF,KAAI,CAACN,MAAM,CAACR,KAAK,CAAC,cAAAgB,kBAAA,KAAA,MAAA,GAAA,MAAA,GAAlBA,kBAAA,CAAoBC,MAAM,CAAC,UAAAR,CAAC,EAAA;UAAA,OAAIG,EAAE,KAAKH,CAAC;SAAC,CAAA;OAC/D;AACH;GACD;AAAA,CAAC;;ACE6B,IAcVS,GAAG,gBAAA,YAAA;EAepB,SAAAA,GAAAA,CAAaC,OAAe,EAAA;AAAAC,IAAAA,eAAA,OAAAF,GAAA,CAAA;IAAAG,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,MAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,KAAA,EAAA,MAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,MAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,MAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAP5B;IAAAA,eAAA,CAAA,IAAA,EAAA,oBAAA,EAAA,MAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,aAAA,EAAA,MAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,eAAA,EAAA,MAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAQI;AACA,IAAA,IAAI,CAACC,OAAO,GAAGxB,gBAAgB,EAAa;IAC5C,IAAI,CAACyB,GAAG,GAAG,IAAI;IACf,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACL,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACM,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,kBAAkB,GAAG,KAAK;IAC/B,IAAI,CAACC,aAAa,GAAGC,QAAQ,CAACC,GAAG,EAAE,CAACC,KAAK,CAAC;AAACC,MAAAA,IAAI,EAAE;AAAC,KAAC,CAAC;AACxD;EAAC,OAAAC,YAAA,CAAAd,GAAA,EAAA,CAAA;IAAAe,GAAA,EAAA,IAAA;AAAAC,IAAAA,KAAA,EAED,SAAAvB,EAAEA,CAA4BX,KAAQ,EAAEmC,QAAsB,EAAA;MAC1D,OAAO,IAAI,CAACb,OAAO,CAACX,EAAE,CAACX,KAAK,EAAEmC,QAAQ,CAAC;AAC3C;AAAC,GAAA,EAAA;IAAAF,GAAA,EAAA,MAAA;IAAAC,KAAA,EAAA,YAAA;MAAA,IAAAE,KAAA,GAAAC,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAED,SAAAC,OAAA,GAAA;AAAA,QAAA,IAAA1B,KAAA,GAAA,IAAA;AAAA,QAAA,OAAAwB,mBAAA,EAAA,CAAAG,IAAA,CAAA,SAAAC,SAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,YAAA,KAAA,CAAA;AACI,cAAA,IAAI,CAACC,QAAQ,GAAGC,WAAW,CAAC,YAAK;gBAC7B,IAAIjC,KAAI,CAACY,kBAAkB,IAAI,CAACZ,KAAI,CAACkC,QAAQ,EAAE,EAAE;AAC7CC,kBAAAA,OAAO,CAACC,KAAK,CAAC,oCAAoC,CAAC;AAEnD;AACApC,kBAAAA,KAAI,CAACqC,KAAK,CAACrC,KAAI,CAACS,GAAG,IAAI,UAAU,EAAET,KAAI,CAACU,MAAM,IAAI,KAAK,CAAC;AAC5D;eACH,EAAE,KAAK,CAAC;AAAC,YAAA,KAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAmB,QAAA,CAAAS,IAAA,EAAA;AAAA;AAAA,SAAA,EAAAZ,OAAA,EAAA,IAAA,CAAA;OACb,CAAA,CAAA;AAAA,MAAA,SATKa,IAAIA,GAAA;AAAA,QAAA,OAAAjB,KAAA,CAAA1B,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA;AAAA;AAAA,MAAA,OAAJmD,IAAI;AAAA,KAAA;AAAA,GAAA,EAAA;IAAApB,GAAA,EAAA,OAAA;IAAAC,KAAA,EAAA,YAAA;AAAA,MAAA,IAAAoB,MAAA,GAAAjB,iBAAA,cAAAC,mBAAA,EAAA,CAAAC,IAAA,CAWV,SAAAgB,QAAAA,CAAYhC,GAAW,EAAEC,MAAc,EAAA;AAAA,QAAA,IAAAgC,MAAA,GAAA,IAAA;AAAA,QAAA,OAAAlB,mBAAA,EAAA,CAAAG,IAAA,CAAA,SAAAgB,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAd,IAAA,GAAAc,SAAA,CAAAb,IAAA;AAAA,YAAA,KAAA,CAAA;cAAA,IAC/B,EAAA,CAAC,IAAI,CAAC1B,OAAO,IAAI,IAAI,CAACA,OAAO,KAAK,SAAS,CAAA,EAAA;AAAAuC,gBAAAA,SAAA,CAAAb,IAAA,GAAA,CAAA;AAAA,gBAAA;AAAA;AAC3CI,cAAAA,OAAO,CAACU,KAAK,CAAC,mDAAmD,CAAC;cAAC,OAAAD,SAAA,CAAAE,MAAA,CAAA,QAAA,CAAA;AAAA,YAAA,KAAA,CAAA;AAAA,cAAA,IAAA,EAKnE,IAAI,CAACrC,GAAG,KAAK,UAAU,CAAA,EAAA;AAAAmC,gBAAAA,SAAA,CAAAb,IAAA,GAAA,CAAA;AAAA,gBAAA;AAAA;AACvBI,cAAAA,OAAO,CAACY,IAAI,CAAC,0BAA0B,CAAC;cACxC,IAAI,CAACnC,kBAAkB,GAAG,KAAK;AAC/B,cAAA,IAAI,IAAI,CAACsB,QAAQ,EAAE,EAAE;AACjBI,gBAAAA,IAAI,EAAE;AACV;cAAC,OAAAM,SAAA,CAAAE,MAAA,CAAA,QAAA,CAAA;AAAA,YAAA,KAAA,CAAA;cAIL,IAAI,CAAClC,kBAAkB,GAAG,IAAI;AAE9B;cAAA,IACI,EAAA,IAAI,CAACsB,QAAQ,EAAE,IAAI,IAAI,CAACzB,GAAG,KAAKA,GAAG,CAAA,EAAA;AAAAmC,gBAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA;AAAA,gBAAA;AAAA;AACnCI,cAAAA,OAAO,CAACC,KAAK,CAAC,2CAA2C,CAAC;cAC1D,IAAI,CAAC1B,MAAM,GAAGA,MAAM;cAAC,OAAAkC,SAAA,CAAAE,MAAA,CAAA,QAAA,CAAA;AAAA,YAAA,KAAA,EAAA;cAAA,IAEd,CAAA,IAAI,CAACnC,WAAW,EAAA;AAAAiC,gBAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA;AAAA,gBAAA;AAAA;AACvBI,cAAAA,OAAO,CAACC,KAAK,CAAC,kEAAkE,CAAC;AAACQ,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA;AAAA,cAAA,OAC5E,IAAI,CAACO,IAAI,EAAE;AAAA,YAAA,KAAA,EAAA;AAAAM,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA;AAAA,cAAA;AAAA,YAAA,KAAA,EAAA;AAEjBI,cAAAA,OAAO,CAACC,KAAK,CAAC,+BAA+B,CAAC;AAAC,YAAA,KAAA,EAAA;AAGnD;cACA,IAAI,CAAC3B,GAAG,GAAGA,GAAG;cACd,IAAI,CAACC,MAAM,GAAGA,MAAM;cAEpByB,OAAO,CAACC,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC3B,GAAG,CAAC;AAACmC,cAAAA,SAAA,CAAAd,IAAA,GAAA,EAAA;cAGnD,IAAI,CAACkB,MAAM,GAAG,IAAIC,SAAS,CAAC,IAAI,CAACxC,GAAG,CAAC;AAACmC,cAAAA,SAAA,CAAAb,IAAA,GAAA,EAAA;AAAA,cAAA;AAAA,YAAA,KAAA,EAAA;AAAAa,cAAAA,SAAA,CAAAd,IAAA,GAAA,EAAA;cAAAc,SAAA,CAAAM,EAAA,GAAAN,SAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA;AAEtCT,cAAAA,OAAO,CAACC,KAAK,CAAC,mCAAmC,GAAG,IAAI,CAAC3B,GAAG,GAAG,QAAQ,GAAAmC,SAAA,CAAAM,EAAI,CAAC;cAC5E,IAAI,CAAC1C,OAAO,CAACvB,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC;cAAC,OAAA2D,SAAA,CAAAE,MAAA,CAAA,QAAA,CAAA;AAAA,YAAA,KAAA,EAAA;AAIpD;;AAEG;cACH,IAAI,CAACE,MAAM,CAACG,gBAAgB,CAAC,MAAM,EAAE,UAACjE,KAAK,EAAI;gBAC3CiD,OAAO,CAACC,KAAK,CAAC,OAAO,GAAGlD,KAAK,CAACkE,IAAI,CAAC;gBAEnC,IAAIV,MAAI,CAACM,MAAM,CAACK,UAAU,KAAKJ,SAAS,CAACK,IAAI,EAAE;kBAC3CnB,OAAO,CAACY,IAAI,CAAC,OAAO,GAAG7D,KAAK,CAACkE,IAAI,GAAG,gBAAgB,CAAC;AACrD,kBAAA;AACJ;AAEA;gBACAV,MAAI,CAACM,MAAM,CAACO,IAAI,CAACC,IAAI,CAACC,SAAS,CAAC;AAC5B,kBAAA,MAAM,EAAE,MAAM;kBACd,KAAK,EAAEf,MAAI,CAAChC,MAAM;kBAClB,SAAS,EAAEgC,MAAI,CAACrC;AACnB,iBAAA,CAAC,CAAC;gBAEHqC,MAAI,CAAC/B,WAAW,GAAG,IAAI;AAEvB+B,gBAAAA,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,WAAW,CAAC;AAClC,eAAC,CAAC;AAEF;;AAEG;cACH,IAAI,CAAC+D,MAAM,CAACG,gBAAgB,CAAC,OAAO,EAAE,UAACjE,KAAK,EAAI;gBAC5CiD,OAAO,CAACC,KAAK,CAAC,OAAO,GAAGlD,KAAK,CAACkE,IAAI,CAAC;gBAEnCV,MAAI,CAAC/B,WAAW,GAAG,KAAK;AAExB+B,gBAAAA,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,cAAc,CAAC;AACrC,eAAC,CAAC;AAEF;;AAEG;cACH,IAAI,CAAC+D,MAAM,CAACG,gBAAgB,CAAC,OAAO,EAAE,UAACjE,KAAK,EAAI;gBAC5CiD,OAAO,CAACC,KAAK,CAAC,OAAO,GAAGlD,KAAK,CAACkE,IAAI,CAAC;gBAEnCV,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACvC,eAAC,CAAC;AAEF;;AAEG;cACH,IAAI,CAAC+D,MAAM,CAACG,gBAAgB,CAAC,SAAS,EAAE,UAACjE,KAAK,EAAI;AAC9CiD,gBAAAA,OAAO,CAACC,KAAK,CAAClD,KAAK,CAAC;AAEpBwD,gBAAAA,MAAI,CAAC7B,aAAa,GAAGC,QAAQ,CAACC,GAAG,EAAE;AACnC2B,gBAAAA,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,cAAc,EAAEyD,MAAI,CAAC7B,aAAa,CAAC6C,KAAK,EAAE,IAAI,EAAE,CAAC;AAEnE;AACA,gBAAA,IAAIxE,KAAK,CAACyE,IAAI,KAAK,GAAG,EAAE;AACpBxB,kBAAAA,OAAO,CAACC,KAAK,CAAC,4BAA4B,CAAC;AAC/C,iBAAC,MAAM;AACH;kBACA,IAAMwB,OAAO,GAAGJ,IAAI,CAACK,KAAK,CAAC3E,KAAK,CAACyE,IAAI,CAAC;kBAEtCxB,OAAO,CAACC,KAAK,CAAC,0BAA0B,GAAGwB,OAAO,CAACE,MAAM,CAAC;AAE1D;AACA,kBAAA,IAAMC,SAAS,GAAGjD,QAAQ,CAACkD,OAAO,CAACJ,OAAO,CAACK,SAAS,CAAC,CAACC,IAAI,CAAC;AAACC,oBAAAA,OAAO,EAAEC,QAAQ,CAACR,OAAO,CAACS,GAAG;AAAE,mBAAA,CAAC;AAC5F,kBAAA,IAAIN,SAAS,GAAGjD,QAAQ,CAACC,GAAG,EAAE,EAAE;oBAC5BoB,OAAO,CAACC,KAAK,CAAC,mCAAmC,GAAG2B,SAAS,CAACO,QAAQ,EAAE,CAAC;AAC7E,mBAAC,MAAM,IAAIV,OAAO,CAACE,MAAM,KAAK,YAAY,EAAE;AACxCpB,oBAAAA,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,YAAY,CAAC;AACnC,mBAAC,MAAM,IAAI2E,OAAO,CAACE,MAAM,KAAK,YAAY,EAAE;AACxCpB,oBAAAA,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,YAAY,CAAC;AACnC,mBAAC,MAAM,IAAI2E,OAAO,CAACE,MAAM,KAAK,cAAc,EAAE;AAC1CpB,oBAAAA,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,cAAc,CAAC;AACrC,mBAAC,MAAM,IAAI2E,OAAO,CAACE,MAAM,IAAI,eAAe,IAAIF,OAAO,CAACW,WAAW,CAACC,UAAU,CAAC,kBAAkB,CAAC,EAAE;oBAChG,IAAMC,KAAK,GAAGb,OAAO,CAACW,WAAW,CAACE,KAAK,CAAC,GAAG,CAAC;AAC5C/B,oBAAAA,MAAI,CAAClC,OAAO,CAACvB,IAAI,CAAC,kBAAkB,EAAEmF,QAAQ,CAACK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnE,mBAAC,MAAM;oBACHtC,OAAO,CAACU,KAAK,CAAC,gCAAgC,GAAGe,OAAO,CAACE,MAAM,CAAC;AACpE;AACJ;AACJ,eAAC,CAAC;AAAC,YAAA,KAAA,EAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAlB,SAAA,CAAAN,IAAA,EAAA;AAAA;AAAA,SAAA,EAAAG,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA;OACN,CAAA,CAAA;AAAA,MAAA,SA3HKJ,KAAKA,CAAAqC,EAAA,EAAAC,GAAA,EAAA;AAAA,QAAA,OAAAnC,MAAA,CAAA5C,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA;AAAA;AAAA,MAAA,OAALiD,KAAK;AAAA,KAAA;AAAA,GAAA,EAAA;IAAAlB,GAAA,EAAA,MAAA;IAAAC,KAAA,EAAA,YAAA;MAAA,IAAAwD,KAAA,GAAArD,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CA6HX,SAAAoD,QAAA,GAAA;AAAA,QAAA,OAAArD,mBAAA,EAAA,CAAAG,IAAA,CAAA,SAAAmD,UAAAC,SAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAjD,IAAA,GAAAiD,SAAA,CAAAhD,IAAA;AAAA,YAAA,KAAA,CAAA;AACII,cAAAA,OAAO,CAACC,KAAK,CAAC,WAAW,CAAC;cAC1B,IAAI,IAAI,CAACY,MAAM,EAAE;AACbb,gBAAAA,OAAO,CAACC,KAAK,CAAC,kCAAkC,CAAC;AACjD,gBAAA,IAAI,CAACY,MAAM,CAACgC,KAAK,EAAE;gBACnB,IAAI,CAACrE,WAAW,GAAG,KAAK;AAC5B;AAAC,YAAA,KAAA,CAAA;AAAA,YAAA,KAAA,KAAA;cAAA,OAAAoE,SAAA,CAAAzC,IAAA,EAAA;AAAA;AAAA,SAAA,EAAAuC,QAAA,EAAA,IAAA,CAAA;OACJ,CAAA,CAAA;AAAA,MAAA,SAPKvC,IAAIA,GAAA;AAAA,QAAA,OAAAsC,KAAA,CAAAhF,KAAA,CAAA,IAAA,EAAAR,SAAA,CAAA;AAAA;AAAA,MAAA,OAAJkD,IAAI;AAAA,KAAA;AAAA,GAAA,EAAA;IAAAnB,GAAA,EAAA,UAAA;AAAAC,IAAAA,KAAA,EASV,SAAAc,QAAQA,GAAA;AACJC,MAAAA,OAAO,CAACC,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAACvB,aAAa,CAACyD,QAAQ,EAAE,CAAC;AAC/E,MAAA,OAAO,IAAI,CAAC3D,WAAW,IAAI,IAAI,CAACE,aAAa,GAAGC,QAAQ,CAACC,GAAG,EAAE,CAACC,KAAK,CAAC;AAACiE,QAAAA,MAAM,EAAE;AAAG,OAAA,CAAC;AACtF;AAAC,GAAA,CAAA,CAAA;AAAA,CAAA;;;;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"xibo-communication-framework.esm.js","sources":["../node_modules/nanoevents/index.js","../../src/modules/xmr/xmr.ts"],"sourcesContent":["export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n","/*\n * Copyright (C) 2025 Xibo Signage Ltd\n *\n * Xibo - Digital Signage - https://xibosignage.com\n *\n * This file is part of Xibo.\n *\n * Xibo is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * any later version.\n *\n * Xibo is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Xibo. If not, see <http://www.gnu.org/licenses/>.\n */\nimport {createNanoEvents, type Emitter} from 'nanoevents';\nimport {DateTime} from 'luxon';\n\nexport interface XmrEvents {\n connected: () => void;\n disconnected: () => void;\n error: (e: string) => void;\n statusChange: (status: string) => void;\n\n collectNow: () => void;\n screenShot: () => void;\n licenceCheck: () => void;\n showStatusWindow: (timeout: number) => void;\n forceUpdateChromeOS: () => void;\n}\n\nexport default class Xmr {\n emitter: Emitter<XmrEvents>;\n\n url: string | null;\n cmsKey: string | null;\n channel: string;\n socket!: WebSocket;\n\n // State\n isConnectionWanted: boolean;\n isConnected: boolean;\n lastMessageAt: DateTime;\n\n interval: NodeJS.Timeout | undefined;\n\n constructor (channel: string) {\n // Emitter\n this.emitter = createNanoEvents<XmrEvents>();\n this.url = null;\n this.cmsKey = null;\n this.channel = channel;\n this.isConnected = false;\n this.isConnectionWanted = false;\n this.lastMessageAt = DateTime.now().minus({year: 1});\n }\n\n on<E extends keyof XmrEvents>(event: E, callback: XmrEvents[E]) {\n return this.emitter.on(event, callback);\n }\n\n async init() {\n this.interval = setInterval(() => {\n if (this.isConnectionWanted && !this.isActive()) {\n console.debug('Xmr::setInterval: should be active');\n\n // Call start again\n this.start(this.url || 'DISABLED', this.cmsKey || 'n/a');\n }\n }, 60000);\n }\n\n async start(url: string, cmsKey: string){\n if (!this.channel || this.channel === 'unknown') {\n console.error('Xmr::start: channel unknown, XMR will be disabled');\n return;\n }\n\n // Disable XMR if we've been told to.\n if (this.url === 'DISABLED') {\n console.info('Xmr::start: XMR disabled');\n this.isConnectionWanted = false;\n if (this.isActive()) {\n stop();\n }\n return;\n }\n\n this.isConnectionWanted = true;\n\n // Are we already connected?\n if (this.isActive() && this.url === url) {\n console.debug('Xmr::start: already connected to this URL');\n this.cmsKey = cmsKey;\n return;\n } else if (this.isConnected) {\n console.debug('Xmr::start: already connected but not active, or a different URL');\n await this.stop();\n } else {\n console.debug('Xmr::start: not connected yet');\n }\n\n // Set the URL and cmsKey.\n this.url = url;\n this.cmsKey = cmsKey;\n\n console.debug('Xmr::start: connecting to ' + this.url);\n\n try {\n this.socket = new WebSocket(this.url);\n } catch (e) {\n console.debug('Xmr::start: failed connecting to ' + this.url + ', e = ' + e);\n this.emitter.emit('error', 'Failed to connect');\n return;\n }\n\n /**\n * Listener for socket open\n */\n this.socket.addEventListener('open', (event) => {\n console.debug('Xmr::' + event.type);\n\n if (this.socket.readyState !== WebSocket.OPEN) {\n console.info('Xmr::' + event.type + ': not open yet');\n return;\n }\n\n // Create and send an initialisation message.\n this.socket.send(JSON.stringify({\n 'type': 'init',\n 'key': this.cmsKey,\n 'channel': this.channel,\n }));\n\n this.isConnected = true;\n\n this.emitter.emit('connected');\n });\n\n /**\n * Listener for socket close\n */\n this.socket.addEventListener('close', (event) => {\n console.debug('Xmr::' + event.type);\n\n this.isConnected = false;\n\n this.emitter.emit('disconnected');\n });\n\n /**\n * Listener for socket error\n */\n this.socket.addEventListener('error', (event) => {\n console.debug('Xmr::' + event.type);\n\n this.emitter.emit('error', 'error');\n });\n\n /**\n * Listener for socket message\n */\n this.socket.addEventListener('message', (event) => {\n console.debug(event);\n\n this.lastMessageAt = DateTime.now();\n this.emitter.emit('statusChange', this.lastMessageAt.toISO() || '');\n\n // Expect a JSON message or a H\n if (event.data === 'H') {\n console.debug('Xmr::message: Heartbeat...');\n } else {\n // JSON message.\n const message = JSON.parse(event.data);\n\n console.debug('Xmr::message: action is ' + message.action);\n\n // Check the createdDt and TTL against the current date time.\n const expiresAt = DateTime.fromISO(message.createdDt).plus({seconds: parseInt(message.ttl)});\n if (expiresAt < DateTime.now()) {\n console.debug('Xmr::message: message expired at ' + expiresAt.toString());\n } else if (message.action === 'collectNow') {\n this.emitter.emit('collectNow');\n } else if (message.action === 'screenShot') {\n this.emitter.emit('screenShot');\n } else if (message.action === 'licenceCheck') {\n this.emitter.emit('licenceCheck');\n } else if (message.action == 'commandAction' && message.commandCode.startsWith('showStatusWindow')) {\n const split = message.commandCode.split('|');\n this.emitter.emit('showStatusWindow', parseInt(split[1]) || 60);\n } else if (message.action == 'commandAction' && message.commandCode.startsWith('forceUpdateChromeOS')) {\n this.emitter.emit('forceUpdateChromeOS');\n } else {\n console.error('Xmr::message: unknown action: ' + message.action);\n }\n }\n });\n }\n\n async stop() {\n console.debug('Xmr::stop');\n if (this.socket) {\n console.debug('Xmr::stop: closing active socket');\n this.socket.close();\n this.isConnected = false;\n }\n }\n\n isActive(): boolean {\n console.debug('Xmr::isActive: lastMessageAt: ' + this.lastMessageAt.toString());\n return this.isConnected && this.lastMessageAt > DateTime.now().minus({minute: 15});\n }\n}\n"],"names":["createNanoEvents","emit","event","_len","arguments","length","args","Array","_key","callbacks","events","i","apply","on","cb","_this$events","_this","push","_this$events$event","filter","Xmr","channel","_classCallCheck","_defineProperty","emitter","url","cmsKey","isConnected","isConnectionWanted","lastMessageAt","DateTime","now","minus","year","_createClass","key","value","callback","_init","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","interval","setInterval","isActive","console","debug","start","a","init","_start","_callee2","_this2","_t","_context2","p","error","info","stop","socket","WebSocket","v","addEventListener","type","readyState","OPEN","send","JSON","stringify","toISO","data","message","parse","action","expiresAt","fromISO","createdDt","plus","seconds","parseInt","ttl","toString","commandCode","startsWith","split","_x","_x2","_stop","_callee3","_context3","close","minute"],"mappings":"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","x_google_ignoreList":[0]}
|