szdl-utils-kit 0.3.9 → 0.3.11
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/index.js +897 -669
- package/dist/index.umd.cjs +2 -2
- package/package.json +41 -41
package/dist/index.js
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var M = (
|
|
4
|
-
if (!e.has(
|
|
1
|
+
var Tt = Object.defineProperty;
|
|
2
|
+
var Rt = (p, e, r) => e in p ? Tt(p, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : p[e] = r;
|
|
3
|
+
var M = (p, e, r) => (Rt(p, typeof e != "symbol" ? e + "" : e, r), r), ct = (p, e, r) => {
|
|
4
|
+
if (!e.has(p))
|
|
5
5
|
throw TypeError("Cannot " + r);
|
|
6
6
|
};
|
|
7
|
-
var E = (
|
|
8
|
-
if (e.has(
|
|
7
|
+
var E = (p, e, r) => (ct(p, e, "read from private field"), r ? r.call(p) : e.get(p)), U = (p, e, r) => {
|
|
8
|
+
if (e.has(p))
|
|
9
9
|
throw TypeError("Cannot add the same private member more than once");
|
|
10
|
-
e instanceof WeakSet ? e.add(
|
|
11
|
-
},
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
function
|
|
15
|
-
return
|
|
10
|
+
e instanceof WeakSet ? e.add(p) : e.set(p, r);
|
|
11
|
+
}, X = (p, e, r, i) => (ct(p, e, "write to private field"), i ? i.call(p, r) : e.set(p, r), r);
|
|
12
|
+
var W = (p, e, r) => (ct(p, e, "access private method"), r);
|
|
13
|
+
var Lt = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
14
|
+
function bt(p) {
|
|
15
|
+
return p && p.__esModule && Object.prototype.hasOwnProperty.call(p, "default") ? p.default : p;
|
|
16
16
|
}
|
|
17
|
-
var
|
|
18
|
-
(function(
|
|
17
|
+
var ut = { exports: {} };
|
|
18
|
+
(function(p, e) {
|
|
19
19
|
(function(r) {
|
|
20
|
-
Array.prototype.indexOf || (Array.prototype.indexOf = function(t,
|
|
20
|
+
Array.prototype.indexOf || (Array.prototype.indexOf = function(t, o) {
|
|
21
21
|
var f, m;
|
|
22
|
-
for (f =
|
|
22
|
+
for (f = o || 0, m = this.length; f < m; f += 1)
|
|
23
23
|
if (this[f] === t)
|
|
24
24
|
return f;
|
|
25
25
|
return -1;
|
|
26
26
|
});
|
|
27
|
-
var i = this,
|
|
28
|
-
for (var f = t.toString(); f.length <
|
|
27
|
+
var i = this, n = function(t, o) {
|
|
28
|
+
for (var f = t.toString(); f.length < o; )
|
|
29
29
|
f = "0" + f;
|
|
30
30
|
return f;
|
|
31
|
-
}, a = function(t,
|
|
32
|
-
return
|
|
33
|
-
},
|
|
31
|
+
}, a = function(t, o) {
|
|
32
|
+
return o !== r ? (t.year(o.year() || o.year), t.month(o.month() || o.month), t.day(o.day() || o.day), t.hours(o.hours() || o.hours), t.minutes(o.minutes() || o.minutes), t.seconds(o.seconds() || o.seconds), t.milliseconds(o.milliseconds() || o.milliseconds), t) : r;
|
|
33
|
+
}, u = function(t, o) {
|
|
34
34
|
var f, m = "";
|
|
35
|
-
return f = t.slice(
|
|
36
|
-
},
|
|
35
|
+
return f = t.slice(o, o + 1), f !== "" && !isNaN(Number(f)) && (m += "%H"), f = t.charAt(o + 2), f !== "" && f === ":" && (m += f), f = t.slice(o + 3, o + 4), f !== "" && !isNaN(Number(f)) && (m += "%M"), f = t.charAt(o + 5), f !== "" && f === ":" && (m += f), f = t.slice(o + 6, o + 7), f !== "" && !isNaN(Number(f)) && (m += "%S"), m;
|
|
36
|
+
}, c = function(t, o) {
|
|
37
37
|
var f, m = [
|
|
38
|
-
t.slice(
|
|
39
|
-
t.charAt(
|
|
40
|
-
t.slice(
|
|
41
|
-
t.charAt(
|
|
42
|
-
t.slice(
|
|
43
|
-
],
|
|
44
|
-
return !isNaN(Number(m[0])) && !isNaN(Number(m[2])) && !isNaN(Number(m[4])) ? (m[1] === "." && m[3] === "." ? f = "%d.%m.%Y" : m[1] === "-" && m[3] === "-" ? f = "%m-%d-%Y" : m[1] === "/" && m[3] === "/" && (f = "%m/%d/%Y"), f) : (
|
|
45
|
-
t.slice(
|
|
46
|
-
t.charAt(
|
|
47
|
-
t.slice(
|
|
48
|
-
t.charAt(
|
|
49
|
-
t.slice(
|
|
50
|
-
], !isNaN(Number(
|
|
51
|
-
},
|
|
38
|
+
t.slice(o, o + 1),
|
|
39
|
+
t.charAt(o + 2),
|
|
40
|
+
t.slice(o + 3, o + 4),
|
|
41
|
+
t.charAt(o + 5),
|
|
42
|
+
t.slice(o + 6, o + 9)
|
|
43
|
+
], S;
|
|
44
|
+
return !isNaN(Number(m[0])) && !isNaN(Number(m[2])) && !isNaN(Number(m[4])) ? (m[1] === "." && m[3] === "." ? f = "%d.%m.%Y" : m[1] === "-" && m[3] === "-" ? f = "%m-%d-%Y" : m[1] === "/" && m[3] === "/" && (f = "%m/%d/%Y"), f) : (S = [
|
|
45
|
+
t.slice(o, o + 3),
|
|
46
|
+
t.charAt(o + 4),
|
|
47
|
+
t.slice(o + 5, o + 6),
|
|
48
|
+
t.charAt(o + 7),
|
|
49
|
+
t.slice(o + 8, o + 9)
|
|
50
|
+
], !isNaN(Number(S[0])) && !isNaN(Number(S[2])) && !isNaN(Number(S[4])) ? (S[1] === "-" && S[3] === "-" && (f = "%Y-%m-%d"), f) : "");
|
|
51
|
+
}, A = i.tempus, s, d, N = i.navigator || {}, l = "en", h = {
|
|
52
52
|
en: {
|
|
53
53
|
JANUARY_SHORT: "Jan",
|
|
54
54
|
FEBRUARY_SHORT: "Feb",
|
|
@@ -209,70 +209,70 @@ var ct = { exports: {} };
|
|
|
209
209
|
FRIDAY_LONG: "Freitag",
|
|
210
210
|
SATURDAY_LONG: "Samstag"
|
|
211
211
|
}
|
|
212
|
-
},
|
|
212
|
+
}, T = function() {
|
|
213
213
|
return [
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
214
|
+
h[l].JANUARY_LONG,
|
|
215
|
+
h[l].FEBRUARY_LONG,
|
|
216
|
+
h[l].MARCH_LONG,
|
|
217
|
+
h[l].APRIL_LONG,
|
|
218
|
+
h[l].MAY_LONG,
|
|
219
|
+
h[l].JUNE_LONG,
|
|
220
|
+
h[l].JULY_LONG,
|
|
221
|
+
h[l].AUGUST_LONG,
|
|
222
|
+
h[l].SEPTEMBER_LONG,
|
|
223
|
+
h[l].OCTOBER_LONG,
|
|
224
|
+
h[l].NOVEMBER_LONG,
|
|
225
|
+
h[l].DECEMBER_LONG
|
|
226
226
|
];
|
|
227
|
-
},
|
|
227
|
+
}, O = function() {
|
|
228
228
|
return [
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
229
|
+
h[l].JANUARY_SHORT,
|
|
230
|
+
h[l].FEBRUARY_SHORT,
|
|
231
|
+
h[l].MARCH_SHORT,
|
|
232
|
+
h[l].APRIL_SHORT,
|
|
233
|
+
h[l].MAY_SHORT,
|
|
234
|
+
h[l].JUNE_SHORT,
|
|
235
|
+
h[l].JULY_SHORT,
|
|
236
|
+
h[l].AUGUST_SHORT,
|
|
237
|
+
h[l].SEPTEMBER_SHORT,
|
|
238
|
+
h[l].OCTOBER_SHORT,
|
|
239
|
+
h[l].NOVEMBER_SHORT,
|
|
240
|
+
h[l].DECEMBER_SHORT
|
|
241
241
|
];
|
|
242
|
-
},
|
|
242
|
+
}, g = function() {
|
|
243
243
|
return [
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
244
|
+
h[l].SUNDAY_LONG,
|
|
245
|
+
h[l].MONDAY_LONG,
|
|
246
|
+
h[l].TUESDAY_LONG,
|
|
247
|
+
h[l].WEDNESDAY_LONG,
|
|
248
|
+
h[l].THURSDAY_LONG,
|
|
249
|
+
h[l].FRIDAY_LONG,
|
|
250
|
+
h[l].SATURDAY_LONG
|
|
251
251
|
];
|
|
252
252
|
}, L = function() {
|
|
253
253
|
return [
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
254
|
+
h[l].SUNDAY_SHORT,
|
|
255
|
+
h[l].MONDAY_SHORT,
|
|
256
|
+
h[l].TUESDAY_SHORT,
|
|
257
|
+
h[l].WEDNESDAY_SHORT,
|
|
258
|
+
h[l].THURSDAY_SHORT,
|
|
259
|
+
h[l].FRIDAY_SHORT,
|
|
260
|
+
h[l].SATURDAY_SHORT
|
|
261
261
|
];
|
|
262
|
-
},
|
|
262
|
+
}, I, C, w, k, J = function(t, o, f) {
|
|
263
263
|
var m;
|
|
264
264
|
i.XMLHttpRequest ? m = new XMLHttpRequest() : m = new ActiveXObject("Microsoft.XMLHTTP"), m.onreadystatechange = function() {
|
|
265
|
-
m.readyState === 4 && (m.status === 200 ?
|
|
266
|
-
https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) :
|
|
265
|
+
m.readyState === 4 && (m.status === 200 ? o && (i.JSON === r ? alert(`Please, include json2 into your project if you want use old browsers!
|
|
266
|
+
https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.parse(m.responseText))) : f && f(m));
|
|
267
267
|
}, m.open("GET", t, !1), m.send();
|
|
268
|
-
},
|
|
268
|
+
}, b = {
|
|
269
269
|
"%d": {
|
|
270
270
|
format: function(t) {
|
|
271
|
-
return
|
|
271
|
+
return n(t.day() || s.MIN_DAY, 2);
|
|
272
272
|
},
|
|
273
273
|
parse: function(t) {
|
|
274
|
-
var
|
|
275
|
-
return { day: isNaN(
|
|
274
|
+
var o = Number(t);
|
|
275
|
+
return { day: isNaN(o) ? r : o };
|
|
276
276
|
},
|
|
277
277
|
minLength: 2,
|
|
278
278
|
maxLength: 2,
|
|
@@ -280,11 +280,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
280
280
|
},
|
|
281
281
|
"%m": {
|
|
282
282
|
format: function(t) {
|
|
283
|
-
return
|
|
283
|
+
return n(t.month() || s.MIN_MONTH, 2);
|
|
284
284
|
},
|
|
285
285
|
parse: function(t) {
|
|
286
|
-
var
|
|
287
|
-
return { month: isNaN(
|
|
286
|
+
var o = Number(t);
|
|
287
|
+
return { month: isNaN(o) ? r : o };
|
|
288
288
|
},
|
|
289
289
|
minLength: 2,
|
|
290
290
|
maxLength: 2,
|
|
@@ -292,11 +292,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
292
292
|
},
|
|
293
293
|
"%Y": {
|
|
294
294
|
format: function(t) {
|
|
295
|
-
return
|
|
295
|
+
return n(t.year() || s.MIN_YEAR, 4);
|
|
296
296
|
},
|
|
297
297
|
parse: function(t) {
|
|
298
|
-
var
|
|
299
|
-
return { year: isNaN(
|
|
298
|
+
var o = Number(t);
|
|
299
|
+
return { year: isNaN(o) ? r : o };
|
|
300
300
|
},
|
|
301
301
|
minLength: 4,
|
|
302
302
|
maxLength: 4,
|
|
@@ -315,8 +315,8 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
315
315
|
},
|
|
316
316
|
"%a": {
|
|
317
317
|
format: function(t) {
|
|
318
|
-
var
|
|
319
|
-
return
|
|
318
|
+
var o = t.dayOfWeek();
|
|
319
|
+
return k[o !== r ? o : s.MIN_DAY_OF_WEEK];
|
|
320
320
|
},
|
|
321
321
|
parse: function() {
|
|
322
322
|
return {};
|
|
@@ -327,8 +327,8 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
327
327
|
},
|
|
328
328
|
"%A": {
|
|
329
329
|
format: function(t) {
|
|
330
|
-
var
|
|
331
|
-
return
|
|
330
|
+
var o = t.dayOfWeek();
|
|
331
|
+
return w[o !== r ? o : s.MIN_DAY_OF_WEEK];
|
|
332
332
|
},
|
|
333
333
|
parse: function() {
|
|
334
334
|
return {};
|
|
@@ -339,12 +339,12 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
339
339
|
},
|
|
340
340
|
"%b": {
|
|
341
341
|
format: function(t) {
|
|
342
|
-
var
|
|
343
|
-
return
|
|
342
|
+
var o = s.options("monthFromZero") ? t.month() : t.month() - 1;
|
|
343
|
+
return C[o !== r ? o : s.MIN_MONTH];
|
|
344
344
|
},
|
|
345
345
|
parse: function(t) {
|
|
346
|
-
var
|
|
347
|
-
return { month:
|
|
346
|
+
var o = s.monthNames().indexOf(t) + (s.options("monthFromZero") ? 0 : 1);
|
|
347
|
+
return { month: o !== -1 ? o : r };
|
|
348
348
|
},
|
|
349
349
|
minLength: 1,
|
|
350
350
|
maxLength: 999,
|
|
@@ -352,12 +352,12 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
352
352
|
},
|
|
353
353
|
"%B": {
|
|
354
354
|
format: function(t) {
|
|
355
|
-
var
|
|
356
|
-
return
|
|
355
|
+
var o = s.options("monthFromZero") ? t.month() : t.month() - 1;
|
|
356
|
+
return I[o !== r ? o : s.MIN_MONTH];
|
|
357
357
|
},
|
|
358
358
|
parse: function(t) {
|
|
359
|
-
var
|
|
360
|
-
return { month:
|
|
359
|
+
var o = s.monthNames(!0).indexOf(t) + (s.options("monthFromZero") ? 0 : 1);
|
|
360
|
+
return { month: o !== -1 ? o : r };
|
|
361
361
|
},
|
|
362
362
|
minLength: 1,
|
|
363
363
|
maxLength: 999,
|
|
@@ -365,11 +365,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
365
365
|
},
|
|
366
366
|
"%H": {
|
|
367
367
|
format: function(t) {
|
|
368
|
-
return
|
|
368
|
+
return n(t.hours() || s.MIN_HOURS, 2);
|
|
369
369
|
},
|
|
370
370
|
parse: function(t) {
|
|
371
|
-
var
|
|
372
|
-
return { hours: isNaN(
|
|
371
|
+
var o = Number(t);
|
|
372
|
+
return { hours: isNaN(o) ? r : o };
|
|
373
373
|
},
|
|
374
374
|
minLength: 2,
|
|
375
375
|
maxLength: 2,
|
|
@@ -377,11 +377,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
377
377
|
},
|
|
378
378
|
"%M": {
|
|
379
379
|
format: function(t) {
|
|
380
|
-
return
|
|
380
|
+
return n(t.minutes() || s.MIN_MINUTES, 2);
|
|
381
381
|
},
|
|
382
382
|
parse: function(t) {
|
|
383
|
-
var
|
|
384
|
-
return { minutes: isNaN(
|
|
383
|
+
var o = Number(t);
|
|
384
|
+
return { minutes: isNaN(o) ? r : o };
|
|
385
385
|
},
|
|
386
386
|
minLength: 2,
|
|
387
387
|
maxLength: 2,
|
|
@@ -389,11 +389,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
389
389
|
},
|
|
390
390
|
"%S": {
|
|
391
391
|
format: function(t) {
|
|
392
|
-
return
|
|
392
|
+
return n(t.seconds() || s.MIN_SECONDS, 2);
|
|
393
393
|
},
|
|
394
394
|
parse: function(t) {
|
|
395
|
-
var
|
|
396
|
-
return { seconds: isNaN(
|
|
395
|
+
var o = Number(t);
|
|
396
|
+
return { seconds: isNaN(o) ? r : o };
|
|
397
397
|
},
|
|
398
398
|
minLength: 2,
|
|
399
399
|
maxLength: 2,
|
|
@@ -412,12 +412,12 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
412
412
|
},
|
|
413
413
|
"%F": {
|
|
414
414
|
format: function(t) {
|
|
415
|
-
return
|
|
415
|
+
return n(t.year() || s.MIN_YEAR, 4) + "-" + n(t.month() || s.MIN_MONTH, 2) + "-" + n(t.day() || s.MIN_DAY, 2);
|
|
416
416
|
},
|
|
417
417
|
parse: function(t) {
|
|
418
|
-
var
|
|
418
|
+
var o = Number(t.slice(0, 4)), f = Number(t.slice(5, 7)), m = Number(t.slice(8, 10));
|
|
419
419
|
return {
|
|
420
|
-
year:
|
|
420
|
+
year: o,
|
|
421
421
|
month: f,
|
|
422
422
|
day: m
|
|
423
423
|
};
|
|
@@ -428,13 +428,13 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
428
428
|
},
|
|
429
429
|
"%D": {
|
|
430
430
|
format: function(t) {
|
|
431
|
-
return
|
|
431
|
+
return n(t.month() || s.MIN_MONTH, 2) + "/" + n(t.day() || s.MIN_DAY, 2) + "/" + n(t.year() || s.MIN_YEAR, 4);
|
|
432
432
|
},
|
|
433
433
|
parse: function(t) {
|
|
434
|
-
var
|
|
434
|
+
var o = Number(t.slice(0, 2)), f = Number(t.slice(3, 5)), m = Number(t.slice(6, 10));
|
|
435
435
|
return {
|
|
436
436
|
year: m,
|
|
437
|
-
month:
|
|
437
|
+
month: o,
|
|
438
438
|
day: f
|
|
439
439
|
};
|
|
440
440
|
},
|
|
@@ -442,11 +442,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
442
442
|
maxLength: 10,
|
|
443
443
|
type: "string"
|
|
444
444
|
}
|
|
445
|
-
},
|
|
445
|
+
}, x = {
|
|
446
446
|
useMilliseconds: !1,
|
|
447
447
|
monthFromZero: !1
|
|
448
|
-
},
|
|
449
|
-
|
|
448
|
+
}, _;
|
|
449
|
+
_ = function(t, o, f) {
|
|
450
450
|
return this._d = /* @__PURE__ */ new Date(), this._i = {
|
|
451
451
|
year: !1,
|
|
452
452
|
month: !1,
|
|
@@ -455,56 +455,56 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
455
455
|
minutes: !1,
|
|
456
456
|
seconds: !1,
|
|
457
457
|
milliseconds: !1
|
|
458
|
-
}, t !== r && this.set(t,
|
|
459
|
-
},
|
|
460
|
-
var t = this.month(),
|
|
461
|
-
return this.leapYear() && t === (s.options("monthFromZero") ? 1 : 2) && (
|
|
462
|
-
},
|
|
458
|
+
}, t !== r && this.set(t, o, f), this;
|
|
459
|
+
}, _.fn = _.prototype, _.fn.dayCount = function() {
|
|
460
|
+
var t = this.month(), o = s.MAX_DAY_IN_MONTHS[t - (s.options("monthFromZero") ? 0 : 1)];
|
|
461
|
+
return this.leapYear() && t === (s.options("monthFromZero") ? 1 : 2) && (o += 1), o;
|
|
462
|
+
}, _.fn.year = function(t) {
|
|
463
463
|
if (arguments.length !== 0)
|
|
464
464
|
(typeof t == "number" || typeof t == "string") && !isNaN(Number(t)) ? Number(t) >= s.MIN_YEAR && Number(t) <= s.MAX_YEAR ? (this._d.setFullYear(Number(t)), this._i.year = !1) : this._i.year = Number(t) : (this._d.setFullYear(s.MIN_YEAR), this._i.year = !1);
|
|
465
465
|
else
|
|
466
466
|
return this._i.year === !1 ? this._d.getFullYear() : this._i.year;
|
|
467
467
|
return this;
|
|
468
|
-
},
|
|
468
|
+
}, _.fn.month = function(t) {
|
|
469
469
|
if (arguments.length !== 0)
|
|
470
470
|
(typeof t == "number" || typeof t == "string") && !isNaN(Number(t)) ? Number(t) >= s.MIN_MONTH && Number(t) <= s.MAX_MONTH ? (this._d.setMonth(s.options("monthFromZero") ? Number(t) : Number(t) - 1), this._i.month = !1) : this._i.month = Number(t) : (this._d.setMonth(s.options("monthFromZero") ? s.MIN_MONTH : s.MIN_MONTH - 1), this._i.month = !1);
|
|
471
471
|
else
|
|
472
472
|
return this._i.month === !1 ? s.options("monthFromZero") ? this._d.getMonth() : this._d.getMonth() + 1 : this._i.month;
|
|
473
473
|
return this;
|
|
474
|
-
},
|
|
474
|
+
}, _.fn.day = function(t) {
|
|
475
475
|
if (arguments.length !== 0)
|
|
476
476
|
(typeof t == "number" || typeof t == "string") && !isNaN(Number(t)) ? Number(t) >= s.MIN_DAY && Number(t) <= this.dayCount() ? (this._d.setDate(Number(t)), this._i.day = !1) : this._i.day = Number(t) : (this._d.setDate(s.MIN_DAY), this._i.day = !1);
|
|
477
477
|
else
|
|
478
478
|
return this._i.day === !1 ? this._d.getDate() : this._i.day;
|
|
479
479
|
return this;
|
|
480
|
-
},
|
|
480
|
+
}, _.fn.hours = function(t) {
|
|
481
481
|
if (arguments.length !== 0)
|
|
482
482
|
(typeof t == "number" || typeof t == "string") && !isNaN(Number(t)) ? Number(t) >= s.MIN_HOURS && Number(t) <= s.MAX_HOURS ? (this._d.setHours(Number(t)), this._i.hours = !1) : this._i.hours = Number(t) : (this._d.setHours(s.MIN_HOURS), this._i.hours = !1);
|
|
483
483
|
else
|
|
484
484
|
return this._i.hours === !1 ? this._d.getHours() : this._i.hours;
|
|
485
485
|
return this;
|
|
486
|
-
},
|
|
486
|
+
}, _.fn.minutes = function(t) {
|
|
487
487
|
if (arguments.length !== 0)
|
|
488
488
|
(typeof t == "number" || typeof t == "string") && !isNaN(Number(t)) ? Number(t) >= s.MIN_MINUTES && Number(t) <= s.MAX_MINUTES ? (this._d.setMinutes(Number(t)), this._i.minutes = !1) : this._i.minutes = Number(t) : (this._d.setMinutes(s.MIN_MINUTES), this._i.minutes = !1);
|
|
489
489
|
else
|
|
490
490
|
return this._i.minutes === !1 ? this._d.getMinutes() : this._i.minutes;
|
|
491
491
|
return this;
|
|
492
|
-
},
|
|
492
|
+
}, _.fn.seconds = function(t) {
|
|
493
493
|
if (arguments.length !== 0)
|
|
494
494
|
(typeof t == "number" || typeof t == "string") && !isNaN(Number(t)) ? Number(t) >= s.MIN_SECONDS && Number(t) <= s.MAX_SECONDS ? (this._d.setSeconds(Number(t)), this._i.seconds = !1) : this._i.seconds = Number(t) : (this._d.setSeconds(s.MIN_SECONDS), this._i.seconds = !1);
|
|
495
495
|
else
|
|
496
496
|
return this._i.seconds === !1 ? this._d.getSeconds() : this._i.seconds;
|
|
497
497
|
return this;
|
|
498
|
-
},
|
|
498
|
+
}, _.fn.milliseconds = function(t) {
|
|
499
499
|
if (arguments.length !== 0)
|
|
500
500
|
(typeof t == "number" || typeof t == "string") && !isNaN(Number(t)) ? Number(t) >= s.MIN_MILLISECONDS && Number(t) <= s.MAX_MILLISECONDS ? (this._d.setMilliseconds(Number(t)), this._i.milliseconds = !1) : this._i.milliseconds = Number(t) : (this._d.setMilliseconds(s.MIN_MILLISECONDS), this._i.milliseconds = !1);
|
|
501
501
|
else
|
|
502
502
|
return this._i.milliseconds === !1 ? this._d.getMilliseconds() : this._i.milliseconds;
|
|
503
503
|
return this;
|
|
504
|
-
},
|
|
505
|
-
var t = new Date(this.year(), 0, 1),
|
|
506
|
-
return Math.ceil(((
|
|
507
|
-
},
|
|
504
|
+
}, _.fn.week = function() {
|
|
505
|
+
var t = new Date(this.year(), 0, 1), o = s(this.utc()).hours(0).minutes(0).seconds(0).milliseconds(0).utc() * 1e3;
|
|
506
|
+
return Math.ceil(((o - t.getTime()) / 864e5 + t.getDay() + 1) / 7);
|
|
507
|
+
}, _.fn.set = function(t, o, f) {
|
|
508
508
|
if (this._i = {
|
|
509
509
|
year: !1,
|
|
510
510
|
month: !1,
|
|
@@ -520,7 +520,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
520
520
|
if (typeof t == "number")
|
|
521
521
|
return this._d = new Date(t * (s.options("useMilliseconds") ? 1 : 1e3)), this;
|
|
522
522
|
if (typeof t == "object" && (t instanceof Array ? (this.day(s.MIN_DAY), this.year(t[0]), this.month(t[1]), this.day(t[2]), this.hours(t[3]), this.minutes(t[4]), this.seconds(t[5]), this.milliseconds(t[6])) : (this.day(s.MIN_DAY), this.year(t.year), this.month(t.month), this.day(t.day), this.hours(t.hours), this.minutes(t.minutes), this.seconds(t.seconds), this.milliseconds(t.milliseconds))), typeof t == "string") {
|
|
523
|
-
var m,
|
|
523
|
+
var m, S = [], y, R, v = [], G = 0, Y = 0, D, F, B = {}, H;
|
|
524
524
|
if (t === r)
|
|
525
525
|
return y = a(this, f), y === r && (this._i = {
|
|
526
526
|
year: -1,
|
|
@@ -531,24 +531,24 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
531
531
|
seconds: -1,
|
|
532
532
|
milliseconds: -1
|
|
533
533
|
}), y;
|
|
534
|
-
for (
|
|
535
|
-
if (
|
|
536
|
-
if (R =
|
|
537
|
-
switch (D = 0,
|
|
534
|
+
for (o === r && (o = s.detectFormat(t)); G < o.length; ) {
|
|
535
|
+
if (o.charAt(G) === "%") {
|
|
536
|
+
if (R = o.charAt(G) + o.charAt(G + 1), b[R] !== r) {
|
|
537
|
+
switch (D = 0, F = "", b[R].type) {
|
|
538
538
|
case "number":
|
|
539
|
-
for (; D <
|
|
540
|
-
|
|
539
|
+
for (; D < b[R].maxLength && Y + D < t.length && !isNaN(Number(t.charAt(Y + D))); )
|
|
540
|
+
F += t.charAt(Y + D), D += 1;
|
|
541
541
|
break;
|
|
542
542
|
case "word":
|
|
543
|
-
for (; D <
|
|
544
|
-
|
|
543
|
+
for (; D < b[R].maxLength && Y + D < t.length && /^[\u00BF-\u1FFF\u2C00-\uD7FF\w]+$/.test(t.charAt(Y + D)); )
|
|
544
|
+
F += t.charAt(Y + D), D += 1;
|
|
545
545
|
break;
|
|
546
546
|
case "string":
|
|
547
|
-
for (; D <
|
|
548
|
-
|
|
547
|
+
for (; D < b[R].maxLength && Y + D < t.length; )
|
|
548
|
+
F += t.charAt(Y + D), D += 1;
|
|
549
549
|
break;
|
|
550
550
|
}
|
|
551
|
-
if (D <
|
|
551
|
+
if (D < b[R].minLength)
|
|
552
552
|
return y = a(this, f), y === r && (this._i = {
|
|
553
553
|
year: -1,
|
|
554
554
|
month: -1,
|
|
@@ -558,9 +558,9 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
558
558
|
seconds: -1,
|
|
559
559
|
milliseconds: -1
|
|
560
560
|
}), y;
|
|
561
|
-
|
|
561
|
+
S.push(R), v.push(F), D -= 1, Y += D, G += 1;
|
|
562
562
|
}
|
|
563
|
-
} else if (t.charAt(Y) !==
|
|
563
|
+
} else if (t.charAt(Y) !== o.charAt(G))
|
|
564
564
|
return y = a(this, f), y === r && (this._i = {
|
|
565
565
|
year: -1,
|
|
566
566
|
month: -1,
|
|
@@ -570,32 +570,32 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
570
570
|
seconds: -1,
|
|
571
571
|
milliseconds: -1
|
|
572
572
|
}), y;
|
|
573
|
-
|
|
573
|
+
G += 1, Y += 1;
|
|
574
574
|
}
|
|
575
|
-
for (m in
|
|
576
|
-
|
|
577
|
-
year:
|
|
578
|
-
month:
|
|
579
|
-
day:
|
|
580
|
-
hours:
|
|
581
|
-
minutes:
|
|
582
|
-
seconds:
|
|
575
|
+
for (m in S)
|
|
576
|
+
S.hasOwnProperty(m) && b.hasOwnProperty(S[m]) && (H = b[S[m]].parse(v[m]), B = {
|
|
577
|
+
year: H.year !== r ? H.year : B.year,
|
|
578
|
+
month: H.month !== r ? H.month : B.month,
|
|
579
|
+
day: H.day !== r ? H.day : B.day,
|
|
580
|
+
hours: H.hours !== r ? H.hours : B.hours,
|
|
581
|
+
minutes: H.minutes !== r ? H.minutes : B.minutes,
|
|
582
|
+
seconds: H.seconds !== r ? H.seconds : B.seconds
|
|
583
583
|
});
|
|
584
584
|
this.day(s.MIN_DAY), this.year(B.year), this.month(B.month), this.day(B.day), this.hours(B.hours), this.minutes(B.minutes), this.seconds(B.seconds), this.milliseconds(B.milliseconds);
|
|
585
585
|
}
|
|
586
586
|
return this;
|
|
587
|
-
},
|
|
587
|
+
}, _.fn.leapYear = function() {
|
|
588
588
|
var t = this.year();
|
|
589
589
|
return t % 4 === 0 ? t % 100 === 0 ? t % 400 === 0 : !0 : !1;
|
|
590
|
-
},
|
|
590
|
+
}, _.fn.timestamp = function(t) {
|
|
591
591
|
return arguments.length !== 0 ? (this._d = new Date(Number(t) * (s.options("useMilliseconds") ? 1 : 1e3) + this._d.getTimezoneOffset() * 6e4), this) : s.options("useMilliseconds") ? this._d.getTime() - this._d.getTimezoneOffset() * 6e4 : Math.floor(this._d.getTime() / 1e3) - this._d.getTimezoneOffset() * 60;
|
|
592
|
-
},
|
|
592
|
+
}, _.fn.utc = function(t) {
|
|
593
593
|
return arguments.length !== 0 ? (this._d = new Date(Number(t) * (s.options("useMilliseconds") ? 1 : 1e3)), this) : s.options("useMilliseconds") ? this._d.getTime() : Math.floor(this._d.getTime() / 1e3);
|
|
594
|
-
},
|
|
594
|
+
}, _.fn.dayOfWeek = function(t) {
|
|
595
595
|
if (t === "long")
|
|
596
|
-
return
|
|
596
|
+
return w[this._d.getDay()];
|
|
597
597
|
if (t === "short")
|
|
598
|
-
return
|
|
598
|
+
return k[this._d.getDay()];
|
|
599
599
|
if (t === r)
|
|
600
600
|
return this._d.getDay();
|
|
601
601
|
if (t === 0 || t === "Sunday")
|
|
@@ -612,7 +612,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
612
612
|
return this.calc({ day: (this.dayOfWeek() === 0 ? -2 : 5) - this.dayOfWeek() });
|
|
613
613
|
if (t === 6 || t === "Saturday")
|
|
614
614
|
return this.calc({ day: (this.dayOfWeek() === 0 ? -1 : 6) - this.dayOfWeek() });
|
|
615
|
-
},
|
|
615
|
+
}, _.fn.timezone = function(t) {
|
|
616
616
|
switch (t) {
|
|
617
617
|
case "hours":
|
|
618
618
|
return Math.floor(this._d.getTimezoneOffset() / 60);
|
|
@@ -621,7 +621,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
621
621
|
default:
|
|
622
622
|
return this._d.getTimezoneOffset() * 60;
|
|
623
623
|
}
|
|
624
|
-
},
|
|
624
|
+
}, _.fn.get = function(t) {
|
|
625
625
|
switch (t) {
|
|
626
626
|
case "Date":
|
|
627
627
|
return new Date(
|
|
@@ -670,17 +670,17 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
670
670
|
timestamp: this.timestamp()
|
|
671
671
|
};
|
|
672
672
|
}
|
|
673
|
-
},
|
|
674
|
-
for (var
|
|
675
|
-
t.charAt(
|
|
673
|
+
}, _.fn.format = function(t) {
|
|
674
|
+
for (var o = 0, f = "", m; o < t.length; )
|
|
675
|
+
t.charAt(o) === "%" ? (m = t.charAt(o) + t.charAt(o + 1), b[m] !== r ? (f += b[m].format(this), o += 1) : f += "%") : f += t.charAt(o), o += 1;
|
|
676
676
|
return f;
|
|
677
|
-
},
|
|
677
|
+
}, _.fn.valid = function() {
|
|
678
678
|
return this._i.year === !1 && this._i.month === !1 && this._i.day === !1 && this._i.hours === !1 && this._i.minutes === !1 && this._i.seconds === !1 && this._i.milliseconds === !1;
|
|
679
|
-
},
|
|
679
|
+
}, _.fn.errors = function() {
|
|
680
680
|
return this._i;
|
|
681
|
-
},
|
|
681
|
+
}, _.fn.between = function(t, o) {
|
|
682
682
|
var f = this.timestamp(), m = t.timestamp();
|
|
683
|
-
switch (
|
|
683
|
+
switch (o) {
|
|
684
684
|
case "year":
|
|
685
685
|
return Math.floor((m - f) / 31556952);
|
|
686
686
|
case "month":
|
|
@@ -696,24 +696,24 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
696
696
|
default:
|
|
697
697
|
return r;
|
|
698
698
|
}
|
|
699
|
-
},
|
|
699
|
+
}, _.fn.calc = function(t) {
|
|
700
700
|
return t.year !== r && this._d.setFullYear(this._d.getFullYear() + t.year), t.month !== r && this._d.setMonth(this._d.getMonth() + t.month), t.day !== r && this._d.setDate(this._d.getDate() + t.day), t.hours !== r && this._d.setHours(this._d.getHours() + t.hours), t.minutes !== r && this._d.setMinutes(this._d.getMinutes() + t.minutes), t.seconds !== r && this._d.setSeconds(this._d.getSeconds() + t.seconds), t.milliseconds !== r && this._d.setMilliseconds(this._d.getMilliseconds() + t.milliseconds), this;
|
|
701
|
-
}, s = function(t,
|
|
702
|
-
return new
|
|
703
|
-
}, s.MIN_YEAR = 1e3, s.MAX_YEAR = 3e3, s.MIN_MONTH = 1, s.MAX_MONTH = 12, s.MIN_DAY = 1, s.MAX_DAY_IN_MONTHS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], s.MIN_DAY_OF_WEEK = 0, s.MAX_DAY_OF_WEEK = 6, s.MIN_HOURS = 0, s.MAX_HOURS = 23, s.MIN_MINUTES = 0, s.MAX_MINUTES = 59, s.MIN_SECONDS = 0, s.MAX_SECONDS = 59, s.MIN_MILLISECONDS = 0, s.MAX_MILLISECONDS = 999, s.VERSION = "0.2.18", s.options = function(t,
|
|
701
|
+
}, s = function(t, o, f) {
|
|
702
|
+
return new _(t, o, f);
|
|
703
|
+
}, s.MIN_YEAR = 1e3, s.MAX_YEAR = 3e3, s.MIN_MONTH = 1, s.MAX_MONTH = 12, s.MIN_DAY = 1, s.MAX_DAY_IN_MONTHS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], s.MIN_DAY_OF_WEEK = 0, s.MAX_DAY_OF_WEEK = 6, s.MIN_HOURS = 0, s.MAX_HOURS = 23, s.MIN_MINUTES = 0, s.MAX_MINUTES = 59, s.MIN_SECONDS = 0, s.MAX_SECONDS = 59, s.MIN_MILLISECONDS = 0, s.MAX_MILLISECONDS = 999, s.VERSION = "0.2.18", s.options = function(t, o) {
|
|
704
704
|
if (t === r)
|
|
705
|
-
return
|
|
706
|
-
if (
|
|
707
|
-
if (
|
|
708
|
-
return
|
|
709
|
-
|
|
705
|
+
return x;
|
|
706
|
+
if (x.hasOwnProperty(t)) {
|
|
707
|
+
if (o === r)
|
|
708
|
+
return x[t];
|
|
709
|
+
x[t] = o, t === "monthFromZero" && (s.MIN_MONTH = o ? 0 : 1, s.MAX_MONTH = o ? 11 : 12);
|
|
710
710
|
}
|
|
711
711
|
return r;
|
|
712
712
|
}, s.noConflict = function() {
|
|
713
|
-
return i.tempus =
|
|
713
|
+
return i.tempus = A, s;
|
|
714
714
|
}, s.generate = function(t) {
|
|
715
|
-
var
|
|
716
|
-
if (typeof t.dateFrom != "number" && (t.dateFrom instanceof
|
|
715
|
+
var o, f, m, S, y, R, v, G;
|
|
716
|
+
if (typeof t.dateFrom != "number" && (t.dateFrom instanceof _ ? o = t.dateFrom.utc() : o = s(t.dateFrom, t.formatFrom).utc()), typeof t.dateTo != "number" && (t.dateTo instanceof _ ? f = t.dateTo.utc() : f = s(t.dateTo, t.formatTo !== r ? t.formatTo : t.formatFrom).utc()), typeof t.period == "number" ? y = {
|
|
717
717
|
year: 0,
|
|
718
718
|
month: 0,
|
|
719
719
|
day: 0,
|
|
@@ -734,8 +734,8 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
734
734
|
hours: t.period.hours !== r ? t.period.hours : 0,
|
|
735
735
|
minutes: t.period.minutes !== r ? t.period.minutes : 0,
|
|
736
736
|
seconds: t.period.seconds !== r ? t.period.seconds : 0
|
|
737
|
-
}), t.groupBy === r ? R = t.asObject === !0 ? {} : [] : (R = [], R.push([]),
|
|
738
|
-
return t.asObject === !0 ? t.format !== r ?
|
|
737
|
+
}), t.groupBy === r ? R = t.asObject === !0 ? {} : [] : (R = [], R.push([]), v = s(o).get()[t.groupBy]), G = function(F, B, H) {
|
|
738
|
+
return t.asObject === !0 ? t.format !== r ? F[s(B).format(t.format)] = {} : F[s(B).format("%F %H:%M:%S")] = {} : t.format !== r ? F.push(H ? null : s(B).format(t.format)) : F.push(H ? null : s(B)), F;
|
|
739
739
|
}, t.groupBy !== r && t.fillNulls) {
|
|
740
740
|
var Y = {
|
|
741
741
|
year: y.year ? -y.year : r,
|
|
@@ -746,72 +746,72 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
746
746
|
seconds: y.seconds ? -y.seconds : r,
|
|
747
747
|
milliseconds: y.milliseconds ? -y.milliseconds : r
|
|
748
748
|
};
|
|
749
|
-
for (m = s(
|
|
750
|
-
|
|
749
|
+
for (m = s(o).calc(Y).utc(); s(m).get()[t.groupBy] === v; )
|
|
750
|
+
G(R[R.length - 1], m, !0), m = s(m).calc(Y).utc();
|
|
751
751
|
if (t.groupBy === "week") {
|
|
752
|
-
var D = s(
|
|
753
|
-
for (m = s(
|
|
754
|
-
|
|
752
|
+
var D = s(o).dayOfWeek();
|
|
753
|
+
for (m = s(o).dayOfWeek(0).utc(); R[0].length < D && m < o; )
|
|
754
|
+
G(R[R.length - 1], m, !0), m = s(m).calc(y).utc();
|
|
755
755
|
}
|
|
756
756
|
}
|
|
757
|
-
for (;
|
|
758
|
-
t.groupBy === r ?
|
|
757
|
+
for (; o <= f; )
|
|
758
|
+
t.groupBy === r ? G(R, o) : s(o).get()[t.groupBy] === v ? G(R[R.length - 1], o) : (R.push([]), G(R[R.length - 1], o), v = s(o).get()[t.groupBy]), o = s(o).calc(y).utc();
|
|
759
759
|
if (t.groupBy !== r && t.fillNulls)
|
|
760
|
-
for (
|
|
761
|
-
|
|
760
|
+
for (S = s(f).calc(y).utc(); s(S).get()[t.groupBy] === v; )
|
|
761
|
+
G(R[R.length - 1], S, !0), S = s(S).calc(y).utc();
|
|
762
762
|
return R;
|
|
763
763
|
}, s.monthNames = function(t) {
|
|
764
764
|
switch (t) {
|
|
765
765
|
case "long":
|
|
766
|
-
return
|
|
766
|
+
return I;
|
|
767
767
|
default:
|
|
768
|
-
return
|
|
768
|
+
return C;
|
|
769
769
|
}
|
|
770
770
|
}, s.dayNames = function(t) {
|
|
771
771
|
switch (t) {
|
|
772
772
|
case "long":
|
|
773
|
-
return
|
|
773
|
+
return w;
|
|
774
774
|
default:
|
|
775
|
-
return
|
|
775
|
+
return k;
|
|
776
776
|
}
|
|
777
777
|
}, s.lang = function(t) {
|
|
778
778
|
if (t !== r)
|
|
779
|
-
|
|
779
|
+
l = t, h[l] === r && (l = "en"), I = T(), C = O(), w = g(), k = L();
|
|
780
780
|
else
|
|
781
|
-
return
|
|
781
|
+
return l;
|
|
782
782
|
return r;
|
|
783
783
|
}, s.availableLangs = function() {
|
|
784
|
-
return Object.keys(
|
|
785
|
-
}, s.registerFormat = function(t,
|
|
786
|
-
|
|
787
|
-
format:
|
|
784
|
+
return Object.keys(h);
|
|
785
|
+
}, s.registerFormat = function(t, o, f, m, S, y) {
|
|
786
|
+
b[t] = {
|
|
787
|
+
format: o,
|
|
788
788
|
parse: f,
|
|
789
789
|
minLength: m,
|
|
790
|
-
maxLength:
|
|
790
|
+
maxLength: S,
|
|
791
791
|
type: y
|
|
792
792
|
};
|
|
793
793
|
}, s.unregisterFormat = function(t) {
|
|
794
|
-
delete
|
|
794
|
+
delete b[t];
|
|
795
795
|
}, s.detectFormat = function(t) {
|
|
796
|
-
var
|
|
797
|
-
return
|
|
796
|
+
var o, f, m;
|
|
797
|
+
return o = c(t, 0), o !== "" && (m = 10), f = t.charAt(m), (f === "T" || f === " ") && (o += f, m += 1), o += u(t, m), o;
|
|
798
798
|
}, d = {
|
|
799
|
-
TempusDate:
|
|
800
|
-
}, s.classes = function(t,
|
|
801
|
-
if (
|
|
799
|
+
TempusDate: _
|
|
800
|
+
}, s.classes = function(t, o) {
|
|
801
|
+
if (o === r)
|
|
802
802
|
return d[t];
|
|
803
|
-
d[t] =
|
|
803
|
+
d[t] = o;
|
|
804
804
|
}, s.loadTranslations = function(t) {
|
|
805
|
-
typeof t == "object" ?
|
|
806
|
-
|
|
807
|
-
}, function(
|
|
805
|
+
typeof t == "object" ? h = t : typeof t == "string" && J(t, function(o) {
|
|
806
|
+
h = o;
|
|
807
|
+
}, function(o) {
|
|
808
808
|
});
|
|
809
|
-
},
|
|
810
|
-
}).call(
|
|
811
|
-
})(
|
|
812
|
-
var
|
|
813
|
-
const
|
|
814
|
-
class
|
|
809
|
+
}, l = (N.language || N.systemLanguage || N.userLanguage || "en").substr(0, 2).toLowerCase(), h[l] === r && (l = "en"), I = T(), C = O(), w = g(), k = L(), p.exports && (e = p.exports = s), e.tempus = s;
|
|
810
|
+
}).call(Lt);
|
|
811
|
+
})(ut, ut.exports);
|
|
812
|
+
var It = ut.exports;
|
|
813
|
+
const rt = /* @__PURE__ */ bt(It);
|
|
814
|
+
class K {
|
|
815
815
|
constructor(e) {
|
|
816
816
|
this.callBatch = e, this.result = {}, this.errors = {}, this.limit = 50, this.canContinue = !0, this.progressCall = "", this.limitCall = "", this.progressData = "", this.progressTimer = "", this.progressDelay = 100, this.oldPercent = "no", this.chunkRate = 1, this.totalProgress = 0, this.skipList = /* @__PURE__ */ new Set();
|
|
817
817
|
}
|
|
@@ -832,9 +832,9 @@ class v {
|
|
|
832
832
|
if (!this.progressData)
|
|
833
833
|
return { percent: Math.round(e), allCount: 0, allTotal: 0 };
|
|
834
834
|
let r = 0, i = 0;
|
|
835
|
-
return Object.values(this.progressData).forEach((
|
|
836
|
-
const { total: a, count:
|
|
837
|
-
r += a ?? 0, i +=
|
|
835
|
+
return Object.values(this.progressData).forEach((n) => {
|
|
836
|
+
const { total: a, count: u } = n;
|
|
837
|
+
r += a ?? 0, i += u ?? 0;
|
|
838
838
|
}), r ? e = i / r * 100 * this.chunkRate + this.totalProgress : i === 0 && r === 0 ? e = 100 * this.chunkRate + this.totalProgress : e = 100, { percent: Math.round(e), allCount: i, allTotal: r };
|
|
839
839
|
}
|
|
840
840
|
/**
|
|
@@ -845,18 +845,18 @@ class v {
|
|
|
845
845
|
* @param {string} params.type - Тип обработки ('count' или undefined)
|
|
846
846
|
*/
|
|
847
847
|
setProgressData({ key: e, value: r, type: i }) {
|
|
848
|
-
const
|
|
849
|
-
let
|
|
850
|
-
i === "count" && (
|
|
851
|
-
let
|
|
852
|
-
|
|
853
|
-
const { percent:
|
|
848
|
+
const n = this.getData(r.data()), a = Array.isArray(n) ? n.length : 0;
|
|
849
|
+
let u = r.total() || a;
|
|
850
|
+
i === "count" && (u = a);
|
|
851
|
+
let c = 1;
|
|
852
|
+
n && (c = a), this.progressCall && (this.progressData || (this.progressData = {}), this.progressData[e] && this.progressData[e].count && (c += this.progressData[e].count), this.progressData[e] ? this.progressData[e].count = c : this.progressData[e] = { total: u, count: c }, this.progressTimer || (this.progressTimer = setInterval(() => {
|
|
853
|
+
const { percent: A, allCount: s, allTotal: d } = this.progressPercent;
|
|
854
854
|
(this.oldPercent === "no" || this.oldPercent < this.progressPercent.percent) && (this.progressCall({
|
|
855
855
|
data: this.progressData,
|
|
856
|
-
percent:
|
|
856
|
+
percent: A,
|
|
857
857
|
allCount: s,
|
|
858
858
|
allTotal: d
|
|
859
|
-
}), this.oldPercent = this.progressPercent.percent),
|
|
859
|
+
}), this.oldPercent = this.progressPercent.percent), A >= 100 && this.clearProgressData();
|
|
860
860
|
}, this.progressDelay)));
|
|
861
861
|
}
|
|
862
862
|
/**
|
|
@@ -875,27 +875,27 @@ class v {
|
|
|
875
875
|
* @returns {Promise<void>}
|
|
876
876
|
*/
|
|
877
877
|
callBatchWithTimeout(e, r) {
|
|
878
|
-
return new Promise((i,
|
|
878
|
+
return new Promise((i, n) => {
|
|
879
879
|
let a = !1;
|
|
880
|
-
const
|
|
881
|
-
let
|
|
882
|
-
const
|
|
880
|
+
const u = 6e4;
|
|
881
|
+
let c = !1, A = !1, s = !1, d = null, N = null;
|
|
882
|
+
const l = async (O, g) => {
|
|
883
883
|
if (!a) {
|
|
884
|
-
a = !0, d && clearTimeout(d),
|
|
884
|
+
a = !0, d && clearTimeout(d), N && clearTimeout(N);
|
|
885
885
|
try {
|
|
886
|
-
await Promise.resolve(r(
|
|
886
|
+
await Promise.resolve(r(O)), i();
|
|
887
887
|
} catch (L) {
|
|
888
|
-
console.error(`Error in callBatch callback (attempt ${
|
|
888
|
+
console.error(`Error in callBatch callback (attempt ${g}):`, L), n(L);
|
|
889
889
|
}
|
|
890
890
|
}
|
|
891
|
-
},
|
|
891
|
+
}, h = async () => {
|
|
892
892
|
if (!a) {
|
|
893
|
-
a = !0, d && clearTimeout(d),
|
|
894
|
-
`Batch request timeout after ${
|
|
893
|
+
a = !0, d && clearTimeout(d), N && clearTimeout(N), console.warn(
|
|
894
|
+
`Batch request timeout after ${u}ms on both attempts. This may indicate a CORS or network error.`
|
|
895
895
|
);
|
|
896
|
-
const
|
|
897
|
-
Object.keys(e).forEach((
|
|
898
|
-
|
|
896
|
+
const O = {};
|
|
897
|
+
Object.keys(e).forEach((g) => {
|
|
898
|
+
O[g] = {
|
|
899
899
|
error: () => ({
|
|
900
900
|
ex: {
|
|
901
901
|
error: "TIMEOUT",
|
|
@@ -907,27 +907,27 @@ class v {
|
|
|
907
907
|
};
|
|
908
908
|
});
|
|
909
909
|
try {
|
|
910
|
-
await Promise.resolve(r(
|
|
911
|
-
} catch (
|
|
912
|
-
console.error("Error in timeout callback:",
|
|
910
|
+
await Promise.resolve(r(O)), i();
|
|
911
|
+
} catch (g) {
|
|
912
|
+
console.error("Error in timeout callback:", g), i();
|
|
913
913
|
}
|
|
914
914
|
}
|
|
915
|
-
},
|
|
915
|
+
}, T = (O) => {
|
|
916
916
|
try {
|
|
917
|
-
this.callBatch(e, async (
|
|
918
|
-
|
|
917
|
+
this.callBatch(e, async (g) => {
|
|
918
|
+
O === 1 && !c && !a ? (c = !0, await l(g, 1)) : O === 2 && !s && !a && (s = !0, await l(g, 2));
|
|
919
919
|
});
|
|
920
|
-
} catch (
|
|
921
|
-
a || console.error(`Error calling callBatch (attempt ${
|
|
920
|
+
} catch (g) {
|
|
921
|
+
a || console.error(`Error calling callBatch (attempt ${O}):`, g);
|
|
922
922
|
}
|
|
923
923
|
};
|
|
924
|
-
|
|
925
|
-
!
|
|
926
|
-
`First batch request attempt timeout after ${
|
|
927
|
-
),
|
|
928
|
-
!
|
|
929
|
-
},
|
|
930
|
-
},
|
|
924
|
+
T(1), d = setTimeout(async () => {
|
|
925
|
+
!c && !a && !A && (console.warn(
|
|
926
|
+
`First batch request attempt timeout after ${u}ms. Starting second attempt...`
|
|
927
|
+
), A = !0, T(2), N = setTimeout(async () => {
|
|
928
|
+
!c && !s && !a && await h();
|
|
929
|
+
}, u));
|
|
930
|
+
}, u);
|
|
931
931
|
});
|
|
932
932
|
}
|
|
933
933
|
/**
|
|
@@ -949,24 +949,24 @@ class v {
|
|
|
949
949
|
*/
|
|
950
950
|
async batch(e, r, i) {
|
|
951
951
|
this.progressTimer && this.clearProgressData(), r && (this.progressCall = r), i && (this.limitCall = i), this.canContinue = !0, this.result = {}, this.errors = {};
|
|
952
|
-
const
|
|
952
|
+
const n = {};
|
|
953
953
|
this.chunkRate = (1 / Math.ceil(Object.keys(e).length / this.limit)).toFixed(5);
|
|
954
|
-
let a = {},
|
|
955
|
-
for (const [
|
|
954
|
+
let a = {}, u = 0;
|
|
955
|
+
for (const [c, A] of Object.entries(e)) {
|
|
956
956
|
if (!this.canContinue)
|
|
957
957
|
break;
|
|
958
|
-
const s = this.arrayChunk(
|
|
958
|
+
const s = this.arrayChunk(A);
|
|
959
959
|
if (!s) {
|
|
960
|
-
|
|
960
|
+
u++;
|
|
961
961
|
continue;
|
|
962
962
|
}
|
|
963
|
-
a[
|
|
964
|
-
|
|
963
|
+
a[c] = s, (Object.keys(a).length >= 50 || u + 1 === Object.keys(e).length) && (await this.batchChunk(a), Object.entries(this.result).forEach(([d, N]) => {
|
|
964
|
+
n[d] = N;
|
|
965
965
|
}), this.totalProgress = Math.round(
|
|
966
|
-
|
|
967
|
-
), a = {}),
|
|
966
|
+
u / Object.keys(e).length * 100
|
|
967
|
+
), a = {}), u++;
|
|
968
968
|
}
|
|
969
|
-
return Object.entries(this.errors).length && (
|
|
969
|
+
return Object.entries(this.errors).length && (n.errorsList = this.errors), r && r({ percent: 100 }), Promise.resolve(n);
|
|
970
970
|
}
|
|
971
971
|
/**
|
|
972
972
|
* Аналогично this.batch, но возвращает количество элементов
|
|
@@ -980,24 +980,24 @@ class v {
|
|
|
980
980
|
*/
|
|
981
981
|
async batchTotalCount(e, r, i) {
|
|
982
982
|
this.progressTimer && this.clearProgressData(), r && (this.progressCall = r), i && (this.limitCall = i), this.canContinue = !0, this.result = {}, this.errors = {};
|
|
983
|
-
const
|
|
983
|
+
const n = {};
|
|
984
984
|
this.chunkRate = (1 / Math.ceil(Object.keys(e).length / this.limit)).toFixed(5);
|
|
985
|
-
let a = {},
|
|
986
|
-
for (const [
|
|
985
|
+
let a = {}, u = 0;
|
|
986
|
+
for (const [c, A] of Object.entries(e)) {
|
|
987
987
|
if (!this.canContinue)
|
|
988
988
|
break;
|
|
989
|
-
const s = this.arrayChunk(
|
|
989
|
+
const s = this.arrayChunk(A);
|
|
990
990
|
if (!s) {
|
|
991
|
-
|
|
991
|
+
u++;
|
|
992
992
|
continue;
|
|
993
993
|
}
|
|
994
|
-
a[
|
|
995
|
-
|
|
994
|
+
a[c] = s, (Object.keys(a).length >= 50 || u + 1 === Object.keys(e).length) && (await this.batchChunk(a, "count"), Object.entries(this.result).forEach(([d, N]) => {
|
|
995
|
+
n[d] = N;
|
|
996
996
|
}), this.totalProgress = Math.round(
|
|
997
|
-
|
|
998
|
-
), a = {}),
|
|
997
|
+
u / Object.keys(e).length * 100
|
|
998
|
+
), a = {}), u++;
|
|
999
999
|
}
|
|
1000
|
-
return Object.entries(this.errors).length && (
|
|
1000
|
+
return Object.entries(this.errors).length && (n.errorsList = this.errors), r && r({ percent: 100 }), Promise.resolve(n);
|
|
1001
1001
|
}
|
|
1002
1002
|
/** Валидация запросов
|
|
1003
1003
|
* Чтобы не перегружать Битрикс сервера запросами с start - добавляем нужные поля в параметры
|
|
@@ -1015,9 +1015,9 @@ class v {
|
|
|
1015
1015
|
};
|
|
1016
1016
|
else {
|
|
1017
1017
|
r === "tasks.task.list" ? (i.order || (i.order = {}), i.order.ID = "asc") : r === "user.get" ? (i.sort || (i.sort = "ID"), i.order || (i.order = "ASC")) : i.order = { ID: "ASC", id: "ASC" }, Array.isArray(i.select) && !i.select.includes("ID") && i.select.push("ID");
|
|
1018
|
-
const
|
|
1019
|
-
typeof
|
|
1020
|
-
(i.start === void 0 || i.start !== -1) && ["id", "ID"].includes(a) && (typeof
|
|
1018
|
+
const n = r === "user.get" ? i.FILTER : i.filter;
|
|
1019
|
+
typeof n == "object" && n !== null && !Array.isArray(n) && Object.entries(n).forEach(([a, u]) => {
|
|
1020
|
+
(i.start === void 0 || i.start !== -1) && ["id", "ID"].includes(a) && (typeof u == "string" || Array.isArray(u) && u.length <= 50) && (i.start = -1);
|
|
1021
1021
|
});
|
|
1022
1022
|
}
|
|
1023
1023
|
r === "crm.type.list" && i.order && delete i.order.ID;
|
|
@@ -1027,8 +1027,8 @@ class v {
|
|
|
1027
1027
|
i = [{ ID: "ASC" }, [""], [""], ["ID"]];
|
|
1028
1028
|
else {
|
|
1029
1029
|
Array.isArray(i[0]) && (i[0] = {});
|
|
1030
|
-
const [
|
|
1031
|
-
|
|
1030
|
+
const [n, a, u, c] = i;
|
|
1031
|
+
n.ID = "ASC", c[0] !== "" && c.includes("ID") || c.push("ID");
|
|
1032
1032
|
}
|
|
1033
1033
|
return { method: r, params: i };
|
|
1034
1034
|
}
|
|
@@ -1040,42 +1040,44 @@ class v {
|
|
|
1040
1040
|
*/
|
|
1041
1041
|
async batchChunk(e, r) {
|
|
1042
1042
|
return new Promise((i) => {
|
|
1043
|
-
const
|
|
1043
|
+
const n = [];
|
|
1044
1044
|
let a;
|
|
1045
|
-
this.callBatchWithTimeout(e, async (
|
|
1046
|
-
var
|
|
1047
|
-
for (const [
|
|
1045
|
+
this.callBatchWithTimeout(e, async (u) => {
|
|
1046
|
+
var c, A, s, d, N, l, h;
|
|
1047
|
+
for (const [T, O] of Object.entries(u)) {
|
|
1048
1048
|
if (!this.canContinue)
|
|
1049
1049
|
return;
|
|
1050
|
-
if (
|
|
1051
|
-
|
|
1050
|
+
if (O.error()) {
|
|
1051
|
+
const k = (A = (c = O.error()) == null ? void 0 : c.ex) == null ? void 0 : A.error, J = (d = (s = O.error()) == null ? void 0 : s.ex) == null ? void 0 : d.error_description;
|
|
1052
|
+
switch (this.errors[T] = k && k.trim() || J && J.trim() || ((N = O.error()) == null ? void 0 : N.toString()) || "Неизвестная ошибка", a = !0, ((h = (l = O.error()) == null ? void 0 : l.ex) == null ? void 0 : h.error) ?? "") {
|
|
1052
1053
|
case "OPERATION_TIME_LIMIT":
|
|
1053
|
-
this.skipList.add(e[
|
|
1054
|
+
this.skipList.add(e[T].method), this.limitCall && this.limitCall(T);
|
|
1054
1055
|
break;
|
|
1055
1056
|
case "ACCESS_DENIED":
|
|
1056
|
-
this.skipList.add(e[
|
|
1057
|
+
this.skipList.add(e[T].method);
|
|
1057
1058
|
break;
|
|
1058
1059
|
case "TIMEOUT":
|
|
1059
|
-
let
|
|
1060
|
-
Array.isArray(
|
|
1060
|
+
let x = e[T], _ = "";
|
|
1061
|
+
Array.isArray(x) ? [_] = x : x != null && x.method && (_ = x.method), _ && this.skipList.add(_), this.limitCall && this.limitCall(T);
|
|
1061
1062
|
break;
|
|
1062
1063
|
}
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
b =
|
|
1064
|
+
}
|
|
1065
|
+
const g = this.getData(O.data()), L = Array.isArray(g) ? g.length : 0, I = typeof O.total == "function" && O.total() !== void 0, C = I ? O.total() : L;
|
|
1066
|
+
r === "count" ? this.result[T] ? this.result[T] += L : this.result[T] = C : this.result[T] = g, this.setProgressData({ key: T, value: O, type: r });
|
|
1067
|
+
const w = r === "count" ? !I && L === this.limit : C > this.limit && C > L;
|
|
1068
|
+
if (!this.canContinue || w) {
|
|
1069
|
+
let k = e[T];
|
|
1070
|
+
if (Array.isArray(k)) {
|
|
1071
|
+
const [J, b = {}] = k;
|
|
1072
|
+
k = [J, b];
|
|
1071
1073
|
} else {
|
|
1072
|
-
const { method:
|
|
1073
|
-
|
|
1074
|
+
const { method: J, params: b = {} } = k;
|
|
1075
|
+
k = [J, b];
|
|
1074
1076
|
}
|
|
1075
|
-
|
|
1077
|
+
n.push([T, k, C]);
|
|
1076
1078
|
}
|
|
1077
1079
|
}
|
|
1078
|
-
a > 0 && this.errorLogger(),
|
|
1080
|
+
a > 0 && this.errorLogger(), n.length ? await this.batchPayload(n, r).then(
|
|
1079
1081
|
() => i(this.result)
|
|
1080
1082
|
) : i(this.result);
|
|
1081
1083
|
});
|
|
@@ -1086,43 +1088,44 @@ class v {
|
|
|
1086
1088
|
* @param {String} type - Тип обработки результатов ('count' или undefined)
|
|
1087
1089
|
*/
|
|
1088
1090
|
async batchPayload(e, r) {
|
|
1089
|
-
const i = /* @__PURE__ */ new Map(),
|
|
1090
|
-
let
|
|
1091
|
-
this.result[
|
|
1092
|
-
let
|
|
1093
|
-
if (JSON.stringify(
|
|
1091
|
+
const i = /* @__PURE__ */ new Map(), n = (A, s, d, N) => {
|
|
1092
|
+
let l = "ID";
|
|
1093
|
+
this.result[A][this.result[A].length - 1].ID || (l = "id");
|
|
1094
|
+
let h = `${l}`;
|
|
1095
|
+
if (JSON.stringify(N[1]).toLocaleLowerCase().includes('"id":"desc"') ? h = "<" + h : h = ">" + h, s === 1 || d.length === 0)
|
|
1094
1096
|
return {
|
|
1095
|
-
field:
|
|
1096
|
-
id: this.result[
|
|
1097
|
+
field: h,
|
|
1098
|
+
id: this.result[A][this.result[A].length - 1][l]
|
|
1097
1099
|
};
|
|
1098
|
-
let
|
|
1099
|
-
const [
|
|
1100
|
-
return (
|
|
1101
|
-
field:
|
|
1102
|
-
id: `$result[${[
|
|
1100
|
+
let O = "";
|
|
1101
|
+
const [g, L] = N;
|
|
1102
|
+
return (g === "tasks.task.list" || g === "task.item.list") && (O = "[tasks]"), ["crm.item.list", "crm.stagehistory.list"].includes(g) && (O = "[items]"), g === "crm.type.list" && (O = "[types]"), g === "socialnetwork.api.workgroup.list" && (O = "[workgroups]"), {
|
|
1103
|
+
field: h,
|
|
1104
|
+
id: `$result[${[A, s - 1].join("__")}]${O}[49][${l}]`
|
|
1103
1105
|
};
|
|
1104
|
-
}, a = (
|
|
1105
|
-
const [d,
|
|
1106
|
-
let
|
|
1106
|
+
}, a = (A, s) => {
|
|
1107
|
+
const [d, N] = A;
|
|
1108
|
+
let l = JSON.parse(JSON.stringify(N)), h;
|
|
1107
1109
|
if (d === "task.item.list") {
|
|
1108
|
-
|
|
1109
|
-
const [
|
|
1110
|
-
return
|
|
1110
|
+
l = [...l];
|
|
1111
|
+
const [T, O, g, L] = l;
|
|
1112
|
+
return O[s.field] = s.id, [d, l];
|
|
1111
1113
|
}
|
|
1112
|
-
return ["user.get"].includes(d) ||
|
|
1114
|
+
return ["user.get"].includes(d) || l.FILTER ? (l.FILTER || (l.FILTER = {}), h = l.FILTER) : (l.filter || (l.filter = {}), h = l.filter), [
|
|
1113
1115
|
"socialnetwork.api.workgroup.list",
|
|
1114
1116
|
"tasks.task.list"
|
|
1115
|
-
].includes(d) ?
|
|
1116
|
-
},
|
|
1117
|
-
Object.entries(
|
|
1118
|
-
var
|
|
1119
|
-
const [
|
|
1120
|
-
if (Array.isArray(
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1117
|
+
].includes(d) ? h[">ID"] = s.id : h[s.field] = s.id, [d, { ...l, start: -1 }];
|
|
1118
|
+
}, u = (A) => {
|
|
1119
|
+
Object.entries(A).forEach(([s, d]) => {
|
|
1120
|
+
var h, T, O, g, L, I, C;
|
|
1121
|
+
const [N] = s.split("__"), l = this.getData(d.data());
|
|
1122
|
+
if (Array.isArray(l) && (r === "count" ? this.result[N] += l.length : this.result[N].push(...l)), d.error()) {
|
|
1123
|
+
const w = (T = (h = d.error()) == null ? void 0 : h.ex) == null ? void 0 : T.error, k = (g = (O = d.error()) == null ? void 0 : O.ex) == null ? void 0 : g.error_description;
|
|
1124
|
+
this.errors[N] = w && w.trim() || k && k.trim() || ((L = d.error()) == null ? void 0 : L.toString()) || "Неизвестная ошибка";
|
|
1125
|
+
const J = ((C = (I = d.error()) == null ? void 0 : I.ex) == null ? void 0 : C.error) ?? "", b = i.get(N);
|
|
1126
|
+
switch (J) {
|
|
1124
1127
|
case "OPERATION_TIME_LIMIT":
|
|
1125
|
-
b && (this.skipList.add(b), this.limitCall && this.limitCall(
|
|
1128
|
+
b && (this.skipList.add(b), this.limitCall && this.limitCall(N));
|
|
1126
1129
|
break;
|
|
1127
1130
|
case "QUERY_LIMIT_EXCEEDED":
|
|
1128
1131
|
this.canContinue = !1;
|
|
@@ -1131,35 +1134,35 @@ class v {
|
|
|
1131
1134
|
b && this.skipList.add(b);
|
|
1132
1135
|
break;
|
|
1133
1136
|
case "TIMEOUT":
|
|
1134
|
-
b && (this.skipList.add(b), this.limitCall && this.limitCall(
|
|
1137
|
+
b && (this.skipList.add(b), this.limitCall && this.limitCall(N));
|
|
1135
1138
|
break;
|
|
1136
1139
|
}
|
|
1137
1140
|
}
|
|
1138
|
-
this.setProgressData({ key:
|
|
1141
|
+
this.setProgressData({ key: N, value: d, type: r });
|
|
1139
1142
|
});
|
|
1140
1143
|
};
|
|
1141
|
-
let
|
|
1142
|
-
for await (const [
|
|
1144
|
+
let c = [];
|
|
1145
|
+
for await (const [A, s, d] of e) {
|
|
1143
1146
|
if (!this.canContinue)
|
|
1144
1147
|
return;
|
|
1145
|
-
const [
|
|
1146
|
-
if (i.set(
|
|
1148
|
+
const [N] = s;
|
|
1149
|
+
if (i.set(A, N), this.skipList.has(N))
|
|
1147
1150
|
continue;
|
|
1148
|
-
let
|
|
1149
|
-
for (; d >
|
|
1150
|
-
const
|
|
1151
|
-
|
|
1152
|
-
Object.fromEntries(
|
|
1153
|
-
(
|
|
1154
|
-
|
|
1151
|
+
let l = 1;
|
|
1152
|
+
for (; d > l * 50 && !this.skipList.has(N); ) {
|
|
1153
|
+
const h = [A, l].join("__"), T = n(A, l, c, s);
|
|
1154
|
+
c.push([h, a(s, T)]), c.length % 50 === 0 && (await this.callBatchWithTimeout(
|
|
1155
|
+
Object.fromEntries(c),
|
|
1156
|
+
(O) => {
|
|
1157
|
+
u(O);
|
|
1155
1158
|
}
|
|
1156
|
-
),
|
|
1159
|
+
), c = [], await this.delay()), l++;
|
|
1157
1160
|
}
|
|
1158
1161
|
}
|
|
1159
|
-
|
|
1160
|
-
Object.fromEntries(
|
|
1161
|
-
(
|
|
1162
|
-
|
|
1162
|
+
c.length && (await this.callBatchWithTimeout(
|
|
1163
|
+
Object.fromEntries(c),
|
|
1164
|
+
(A) => {
|
|
1165
|
+
u(A);
|
|
1163
1166
|
}
|
|
1164
1167
|
), await this.delay());
|
|
1165
1168
|
}
|
|
@@ -1172,10 +1175,10 @@ class v {
|
|
|
1172
1175
|
}), console.groupEnd();
|
|
1173
1176
|
}
|
|
1174
1177
|
}
|
|
1175
|
-
var
|
|
1176
|
-
class
|
|
1178
|
+
var Z;
|
|
1179
|
+
class mt {
|
|
1177
1180
|
constructor() {
|
|
1178
|
-
|
|
1181
|
+
U(this, Z, {});
|
|
1179
1182
|
}
|
|
1180
1183
|
/**
|
|
1181
1184
|
* Получить случайный хеш-код длиной 8 символов
|
|
@@ -1192,7 +1195,7 @@ class ut {
|
|
|
1192
1195
|
createHash(e) {
|
|
1193
1196
|
let r = "abcdefghijklmnopqrstuvwxyz0123456789", i = "";
|
|
1194
1197
|
e = e || 6;
|
|
1195
|
-
for (let
|
|
1198
|
+
for (let n = 0; n < e; n++)
|
|
1196
1199
|
i += r.charAt(Math.floor(Math.random() * r.length));
|
|
1197
1200
|
return i;
|
|
1198
1201
|
}
|
|
@@ -1204,7 +1207,7 @@ class ut {
|
|
|
1204
1207
|
* @param {Function} params.action - Функция для выполнения
|
|
1205
1208
|
*/
|
|
1206
1209
|
actionFilter({ keyTimer: e, duration: r = 10, action: i }) {
|
|
1207
|
-
E(this,
|
|
1210
|
+
E(this, Z)[e] && (clearTimeout(E(this, Z)[e]), E(this, Z)[e] = null), i && (E(this, Z)[e] = setTimeout(() => {
|
|
1208
1211
|
i();
|
|
1209
1212
|
}, r));
|
|
1210
1213
|
}
|
|
@@ -1236,61 +1239,61 @@ class ut {
|
|
|
1236
1239
|
* @param {string} filename - Имя файла без расширения
|
|
1237
1240
|
*/
|
|
1238
1241
|
downloadFileJson(e, r) {
|
|
1239
|
-
let i = new Blob([JSON.stringify(e)], { type: "application/json" }),
|
|
1240
|
-
a.style.display = "none", a.href =
|
|
1241
|
-
document.body.removeChild(a), URL.revokeObjectURL(
|
|
1242
|
+
let i = new Blob([JSON.stringify(e)], { type: "application/json" }), n = URL.createObjectURL(i), a = document.createElement("a");
|
|
1243
|
+
a.style.display = "none", a.href = n, a.download = `${r}.json`, document.body.appendChild(a), a.click(), setTimeout(() => {
|
|
1244
|
+
document.body.removeChild(a), URL.revokeObjectURL(n);
|
|
1242
1245
|
}, 200);
|
|
1243
1246
|
}
|
|
1244
1247
|
}
|
|
1245
|
-
|
|
1246
|
-
const
|
|
1247
|
-
var
|
|
1248
|
-
class
|
|
1248
|
+
Z = new WeakMap();
|
|
1249
|
+
const ht = new mt();
|
|
1250
|
+
var j, Q, z, q, P, V, $, st, gt, tt, ft, it, Nt, nt, Ot, ot, pt;
|
|
1251
|
+
class St {
|
|
1249
1252
|
constructor() {
|
|
1250
|
-
|
|
1253
|
+
U(this, st);
|
|
1251
1254
|
/** Вывод ошибок логера
|
|
1252
1255
|
* @param {'entity'} type - тип ошибки
|
|
1253
1256
|
*/
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1257
|
+
U(this, tt);
|
|
1258
|
+
U(this, it);
|
|
1259
|
+
U(this, nt);
|
|
1260
|
+
U(this, ot);
|
|
1261
|
+
U(this, j, "logger");
|
|
1262
|
+
U(this, Q, !1);
|
|
1263
|
+
U(this, z, /* @__PURE__ */ new Map());
|
|
1264
|
+
U(this, q, {});
|
|
1265
|
+
U(this, P, null);
|
|
1266
|
+
U(this, V, !1);
|
|
1267
|
+
U(this, $, !1);
|
|
1265
1268
|
/** Очистка хранилища элементов старше 'N' месяцев */
|
|
1266
1269
|
M(this, "periodClear", 3);
|
|
1267
|
-
|
|
1270
|
+
W(this, st, gt).call(this);
|
|
1268
1271
|
}
|
|
1269
1272
|
/** Инициализация логера */
|
|
1270
1273
|
async init() {
|
|
1271
1274
|
try {
|
|
1272
|
-
let e = new
|
|
1275
|
+
let e = new K(BX24.callBatch), { entityList: r } = await e.batch({
|
|
1273
1276
|
entityList: { method: "entity.get" }
|
|
1274
1277
|
});
|
|
1275
1278
|
if (r && Array.isArray(r))
|
|
1276
1279
|
if (r.find(
|
|
1277
|
-
(
|
|
1280
|
+
(n) => n.ENTITY == E(this, j)
|
|
1278
1281
|
))
|
|
1279
|
-
|
|
1282
|
+
X(this, Q, !0);
|
|
1280
1283
|
else {
|
|
1281
|
-
let { entityAdd:
|
|
1284
|
+
let { entityAdd: n } = await e.batch({
|
|
1282
1285
|
entityAdd: {
|
|
1283
1286
|
method: "entity.add",
|
|
1284
1287
|
params: {
|
|
1285
|
-
ENTITY: E(this,
|
|
1286
|
-
NAME: E(this,
|
|
1288
|
+
ENTITY: E(this, j),
|
|
1289
|
+
NAME: E(this, j),
|
|
1287
1290
|
ACCESS: { AU: "X" }
|
|
1288
1291
|
}
|
|
1289
1292
|
}
|
|
1290
1293
|
});
|
|
1291
|
-
|
|
1294
|
+
n && X(this, Q, !0);
|
|
1292
1295
|
}
|
|
1293
|
-
return
|
|
1296
|
+
return W(this, nt, Ot).call(this).catch((i) => {
|
|
1294
1297
|
console.error("Ошибка при проверке периода очистки:", i);
|
|
1295
1298
|
}), E(this, Q);
|
|
1296
1299
|
} catch (e) {
|
|
@@ -1308,19 +1311,19 @@ class Rt {
|
|
|
1308
1311
|
*/
|
|
1309
1312
|
start({ type: e, data: r }) {
|
|
1310
1313
|
if (!E(this, Q))
|
|
1311
|
-
return
|
|
1314
|
+
return W(this, tt, ft).call(this, "entity"), null;
|
|
1312
1315
|
if (!e || !r)
|
|
1313
1316
|
return console.error("Невалидные данные для логирования:", { type: e, data: r }), null;
|
|
1314
|
-
const i =
|
|
1317
|
+
const i = ht.hash, n = {
|
|
1315
1318
|
type: e,
|
|
1316
1319
|
data: r,
|
|
1317
|
-
userInfo: E(this,
|
|
1320
|
+
userInfo: E(this, q),
|
|
1318
1321
|
errorList: {},
|
|
1319
1322
|
status: "",
|
|
1320
1323
|
answer: null,
|
|
1321
1324
|
date: (/* @__PURE__ */ new Date()).getTime()
|
|
1322
1325
|
};
|
|
1323
|
-
return E(this,
|
|
1326
|
+
return E(this, z).set(i, n), X(this, $, !0), i;
|
|
1324
1327
|
}
|
|
1325
1328
|
/**
|
|
1326
1329
|
* @param {{
|
|
@@ -1329,20 +1332,20 @@ class Rt {
|
|
|
1329
1332
|
* status: 'success'|'fail'|'fail-runtime',
|
|
1330
1333
|
* answer: { [key]: unknown } }}
|
|
1331
1334
|
*/
|
|
1332
|
-
async stop({ key: e, errorList: r, status: i, answer:
|
|
1333
|
-
var
|
|
1334
|
-
if (!E(this,
|
|
1335
|
+
async stop({ key: e, errorList: r, status: i, answer: n }) {
|
|
1336
|
+
var u;
|
|
1337
|
+
if (!E(this, $))
|
|
1335
1338
|
return;
|
|
1336
1339
|
if (!E(this, Q)) {
|
|
1337
|
-
|
|
1340
|
+
W(this, tt, ft).call(this, "entity");
|
|
1338
1341
|
return;
|
|
1339
1342
|
}
|
|
1340
|
-
let a = E(this,
|
|
1343
|
+
let a = E(this, z).get(e);
|
|
1341
1344
|
if (!a) {
|
|
1342
1345
|
console.error(`Не найдены данные логирования для ключа: ${e}`);
|
|
1343
1346
|
return;
|
|
1344
1347
|
}
|
|
1345
|
-
r && (a.errorList = r), i && (a.status = i),
|
|
1348
|
+
r && (a.errorList = r), i && (a.status = i), n && (a.answer = n), await W(this, it, Nt).call(this), (u = a == null ? void 0 : a.data) != null && u.updateList && X(this, V, !0), X(this, $, !1);
|
|
1346
1349
|
}
|
|
1347
1350
|
/**
|
|
1348
1351
|
* @param { ({percent}:{percent:number})=>{} } progressCall - коллбэк
|
|
@@ -1350,35 +1353,35 @@ class Rt {
|
|
|
1350
1353
|
async getEntityList(e) {
|
|
1351
1354
|
var r;
|
|
1352
1355
|
try {
|
|
1353
|
-
if ((r = E(this,
|
|
1354
|
-
return E(this,
|
|
1355
|
-
let i = new
|
|
1356
|
+
if ((r = E(this, P)) != null && r.length && !E(this, V))
|
|
1357
|
+
return E(this, P);
|
|
1358
|
+
let i = new K(BX24.callBatch), { entityList: n } = await i.batch(
|
|
1356
1359
|
{
|
|
1357
1360
|
entityList: {
|
|
1358
1361
|
method: "entity.item.get",
|
|
1359
1362
|
params: {
|
|
1360
|
-
ENTITY: E(this,
|
|
1363
|
+
ENTITY: E(this, j),
|
|
1361
1364
|
SORT: { ID: "DESC" }
|
|
1362
1365
|
}
|
|
1363
1366
|
}
|
|
1364
1367
|
},
|
|
1365
1368
|
e
|
|
1366
1369
|
);
|
|
1367
|
-
return !
|
|
1370
|
+
return !n || !Array.isArray(n) ? (console.warn("Получен невалидный список записей"), []) : (n = n.map((a) => {
|
|
1368
1371
|
try {
|
|
1369
|
-
const { ID:
|
|
1372
|
+
const { ID: u, DATE_CREATE: c, DETAIL_TEXT: A } = a;
|
|
1370
1373
|
return {
|
|
1371
|
-
...JSON.parse(
|
|
1372
|
-
id:
|
|
1373
|
-
dateCreate:
|
|
1374
|
+
...JSON.parse(A),
|
|
1375
|
+
id: u,
|
|
1376
|
+
dateCreate: c
|
|
1374
1377
|
};
|
|
1375
|
-
} catch (
|
|
1378
|
+
} catch (u) {
|
|
1376
1379
|
return console.error(
|
|
1377
1380
|
`Ошибка парсинга записи ${a.ID}:`,
|
|
1378
|
-
|
|
1381
|
+
u
|
|
1379
1382
|
), null;
|
|
1380
1383
|
}
|
|
1381
|
-
}).filter((a) => a !== null),
|
|
1384
|
+
}).filter((a) => a !== null), X(this, V, !1), X(this, P, n), n);
|
|
1382
1385
|
} catch (i) {
|
|
1383
1386
|
return console.error("Ошибка при получении списка записей:", i), [];
|
|
1384
1387
|
}
|
|
@@ -1386,11 +1389,11 @@ class Rt {
|
|
|
1386
1389
|
/** Выгрузка всех данных из хранилища в JSON-файл */
|
|
1387
1390
|
async downAllEntityJson() {
|
|
1388
1391
|
try {
|
|
1389
|
-
if (E(this,
|
|
1392
|
+
if (E(this, P) || await this.getEntityList(), !E(this, P) || E(this, P).length === 0)
|
|
1390
1393
|
return console.warn("Нет данных для выгрузки"), !1;
|
|
1391
|
-
let e =
|
|
1392
|
-
return
|
|
1393
|
-
E(this,
|
|
1394
|
+
let e = rt().format("%Y-%m-%d");
|
|
1395
|
+
return ht.downloadFileJson(
|
|
1396
|
+
E(this, P),
|
|
1394
1397
|
`sdklogger-entity-data__${e}`
|
|
1395
1398
|
), !0;
|
|
1396
1399
|
} catch (e) {
|
|
@@ -1398,67 +1401,67 @@ class Rt {
|
|
|
1398
1401
|
}
|
|
1399
1402
|
}
|
|
1400
1403
|
}
|
|
1401
|
-
|
|
1404
|
+
j = new WeakMap(), Q = new WeakMap(), z = new WeakMap(), q = new WeakMap(), P = new WeakMap(), V = new WeakMap(), $ = new WeakMap(), st = new WeakSet(), gt = async function() {
|
|
1402
1405
|
try {
|
|
1403
|
-
const e = new
|
|
1406
|
+
const e = new K(BX24.callBatch), r = BX24.isAdmin(), { curUser: i } = await e.batch({
|
|
1404
1407
|
curUser: { method: "user.current" }
|
|
1405
1408
|
});
|
|
1406
|
-
|
|
1409
|
+
X(this, q, { isAdmin: r, curUser: i });
|
|
1407
1410
|
} catch (e) {
|
|
1408
1411
|
console.error(
|
|
1409
1412
|
"Ошибка при получении информации о пользователе:",
|
|
1410
1413
|
e
|
|
1411
|
-
),
|
|
1414
|
+
), X(this, q, { isAdmin: !1, curUser: null });
|
|
1412
1415
|
}
|
|
1413
|
-
},
|
|
1414
|
-
e == "entity" &&
|
|
1416
|
+
}, tt = new WeakSet(), ft = function(e) {
|
|
1417
|
+
e == "entity" && ht.actionFilter({
|
|
1415
1418
|
keyTimer: "error.logger.entity",
|
|
1416
1419
|
duration: 500,
|
|
1417
1420
|
action: () => {
|
|
1418
1421
|
console.error("Хранилище для логгера не инициализировано");
|
|
1419
1422
|
}
|
|
1420
1423
|
});
|
|
1421
|
-
},
|
|
1424
|
+
}, it = new WeakSet(), Nt = async function() {
|
|
1422
1425
|
try {
|
|
1423
|
-
let e = {}, r = new
|
|
1424
|
-
for (let [i,
|
|
1425
|
-
if (
|
|
1426
|
-
const a = JSON.stringify(
|
|
1426
|
+
let e = {}, r = new K(BX24.callBatch);
|
|
1427
|
+
for (let [i, n] of E(this, z).entries())
|
|
1428
|
+
if (n.status) {
|
|
1429
|
+
const a = JSON.stringify(n);
|
|
1427
1430
|
e[i] = {
|
|
1428
1431
|
method: "entity.item.add",
|
|
1429
1432
|
params: {
|
|
1430
|
-
ENTITY: E(this,
|
|
1431
|
-
NAME: E(this,
|
|
1433
|
+
ENTITY: E(this, j),
|
|
1434
|
+
NAME: E(this, j),
|
|
1432
1435
|
DETAIL_TEXT: a
|
|
1433
1436
|
}
|
|
1434
1437
|
};
|
|
1435
1438
|
}
|
|
1436
1439
|
if (Object.keys(e).length) {
|
|
1437
|
-
let i = await r.batch(e), { errors:
|
|
1438
|
-
for (let [a,
|
|
1439
|
-
E(this,
|
|
1440
|
+
let i = await r.batch(e), { errors: n } = r;
|
|
1441
|
+
for (let [a, u] of Object.entries({ ...i, ...n }))
|
|
1442
|
+
E(this, z).delete(a);
|
|
1440
1443
|
return !0;
|
|
1441
1444
|
}
|
|
1442
1445
|
return !1;
|
|
1443
1446
|
} catch (e) {
|
|
1444
1447
|
return console.error("Ошибка при добавлении записей в хранилище:", e), !1;
|
|
1445
1448
|
}
|
|
1446
|
-
},
|
|
1449
|
+
}, nt = new WeakSet(), Ot = async function() {
|
|
1447
1450
|
try {
|
|
1448
|
-
let e = new
|
|
1451
|
+
let e = new K(BX24.callBatch), { serverTime: r } = await e.batch({
|
|
1449
1452
|
serverTime: { method: "server.time" }
|
|
1450
1453
|
});
|
|
1451
1454
|
if (!r) {
|
|
1452
1455
|
console.error("Не удалось получить время сервера");
|
|
1453
1456
|
return;
|
|
1454
1457
|
}
|
|
1455
|
-
if (E(this,
|
|
1458
|
+
if (E(this, P) || await this.getEntityList(), !E(this, P) || E(this, P).length === 0)
|
|
1456
1459
|
return;
|
|
1457
|
-
let i = E(this,
|
|
1460
|
+
let i = E(this, P).filter((n) => {
|
|
1458
1461
|
try {
|
|
1459
|
-
let { dateCreate: a } =
|
|
1460
|
-
return a ?
|
|
1461
|
-
|
|
1462
|
+
let { dateCreate: a } = n;
|
|
1463
|
+
return a ? rt(new Date(a)).between(
|
|
1464
|
+
rt(new Date(r)),
|
|
1462
1465
|
"month"
|
|
1463
1466
|
) >= this.periodClear : !1;
|
|
1464
1467
|
} catch (a) {
|
|
@@ -1467,34 +1470,34 @@ X = new WeakMap(), Q = new WeakMap(), Z = new WeakMap(), z = new WeakMap(), G =
|
|
|
1467
1470
|
});
|
|
1468
1471
|
i.length > 0 && (console.log(
|
|
1469
1472
|
`Найдено ${i.length} записей для очистки (старше ${this.periodClear} месяцев)`
|
|
1470
|
-
), await
|
|
1473
|
+
), await W(this, ot, pt).call(this, i));
|
|
1471
1474
|
} catch (e) {
|
|
1472
1475
|
console.error("Ошибка при проверке периода очистки:", e);
|
|
1473
1476
|
}
|
|
1474
|
-
},
|
|
1477
|
+
}, ot = new WeakSet(), pt = async function(e) {
|
|
1475
1478
|
try {
|
|
1476
1479
|
if (!e || e.length === 0)
|
|
1477
1480
|
return !1;
|
|
1478
|
-
let r = new
|
|
1479
|
-
let { id:
|
|
1481
|
+
let r = new K(BX24.callBatch), i = e.filter((a) => a && a.id).map((a) => {
|
|
1482
|
+
let { id: u } = a;
|
|
1480
1483
|
return {
|
|
1481
1484
|
method: "entity.item.delete",
|
|
1482
1485
|
params: {
|
|
1483
|
-
ENTITY: E(this,
|
|
1484
|
-
ID:
|
|
1486
|
+
ENTITY: E(this, j),
|
|
1487
|
+
ID: u
|
|
1485
1488
|
}
|
|
1486
1489
|
};
|
|
1487
1490
|
});
|
|
1488
1491
|
if (i.length === 0)
|
|
1489
1492
|
return !1;
|
|
1490
|
-
const
|
|
1491
|
-
return console.log(`Успешно удалено ${i.length} записей`),
|
|
1493
|
+
const n = await r.batch(i);
|
|
1494
|
+
return console.log(`Успешно удалено ${i.length} записей`), X(this, V, !0), n;
|
|
1492
1495
|
} catch (r) {
|
|
1493
1496
|
return console.error("Ошибка при очистке устаревших записей:", r), !1;
|
|
1494
1497
|
}
|
|
1495
1498
|
};
|
|
1496
|
-
var
|
|
1497
|
-
class
|
|
1499
|
+
var at, _t, At, yt, et, dt, lt, Et;
|
|
1500
|
+
class Mt {
|
|
1498
1501
|
/**
|
|
1499
1502
|
* @param {Object} appConst - Константы приложения
|
|
1500
1503
|
* @param {string} appConst.appName - Название приложения
|
|
@@ -1502,9 +1505,25 @@ class Lt {
|
|
|
1502
1505
|
*/
|
|
1503
1506
|
constructor(e) {
|
|
1504
1507
|
/** Запрос данных о приложении */
|
|
1505
|
-
|
|
1508
|
+
U(this, at);
|
|
1506
1509
|
/** Запрос данных о текущем пользователе */
|
|
1507
|
-
|
|
1510
|
+
U(this, At);
|
|
1511
|
+
/**
|
|
1512
|
+
* Расширяет errorList для случаев TIMEOUT и LIMIT
|
|
1513
|
+
* Если есть ошибки TIMEOUT или LIMIT, добавляет все необработанные сущности из commandList
|
|
1514
|
+
* @param {Object} restCall - Экземпляр Batch с результатами и ошибками
|
|
1515
|
+
* @param {Object} result - Результат выполнения batch (объект с ключами успешно обработанных запросов)
|
|
1516
|
+
* @param {Object} commandList - Список команд, которые должны были быть обработаны
|
|
1517
|
+
* @param {Array} updateList - Список обновлений для логирования (опционально)
|
|
1518
|
+
* @returns {Object} Расширенный список ошибок
|
|
1519
|
+
*/
|
|
1520
|
+
U(this, et);
|
|
1521
|
+
/**
|
|
1522
|
+
* Привязка/отвязка бекворкера (PAGE_BACKGROUND_WORKER)
|
|
1523
|
+
* @param {Array|Object|string} places - Массив размещений или одно размещение
|
|
1524
|
+
* @returns {Promise<{batchRequests: Object, placesToUnbind: Array}>}
|
|
1525
|
+
*/
|
|
1526
|
+
U(this, lt);
|
|
1508
1527
|
M(this, "domain", "");
|
|
1509
1528
|
M(this, "isAdmin", !1);
|
|
1510
1529
|
M(this, "appInfo", null);
|
|
@@ -1522,9 +1541,9 @@ class Lt {
|
|
|
1522
1541
|
*/
|
|
1523
1542
|
init() {
|
|
1524
1543
|
return new Promise((e, r) => {
|
|
1525
|
-
let
|
|
1544
|
+
let n = setInterval(() => {
|
|
1526
1545
|
window.BX24 && BX24.init(async () => {
|
|
1527
|
-
console.info("init BX24"), clearInterval(
|
|
1546
|
+
console.info("init BX24"), clearInterval(n), clearTimeout(a), this.domain = BX24.getDomain(), this.isAdmin = BX24.isAdmin(), this.placeInfo = BX24.placement.info(), this.logger ? (this.logger = new St(), await this.logger.init()) : this.logger = {
|
|
1528
1547
|
start: () => {
|
|
1529
1548
|
},
|
|
1530
1549
|
stop: () => {
|
|
@@ -1532,14 +1551,14 @@ class Lt {
|
|
|
1532
1551
|
getEntityList: () => {
|
|
1533
1552
|
}
|
|
1534
1553
|
};
|
|
1535
|
-
const [
|
|
1536
|
-
|
|
1537
|
-
|
|
1554
|
+
const [u, c] = await Promise.all([
|
|
1555
|
+
W(this, at, _t).call(this),
|
|
1556
|
+
W(this, At, yt).call(this)
|
|
1538
1557
|
]);
|
|
1539
|
-
this.appInfo =
|
|
1540
|
-
let
|
|
1558
|
+
this.appInfo = u, this.userInfo = c;
|
|
1559
|
+
let A = new mt();
|
|
1541
1560
|
try {
|
|
1542
|
-
|
|
1561
|
+
A.noSleep();
|
|
1543
1562
|
} catch (s) {
|
|
1544
1563
|
console.warn(
|
|
1545
1564
|
"Failed to initialize noSleep:",
|
|
@@ -1550,11 +1569,11 @@ class Lt {
|
|
|
1550
1569
|
});
|
|
1551
1570
|
}, 100);
|
|
1552
1571
|
const a = setTimeout(() => {
|
|
1553
|
-
clearInterval(
|
|
1554
|
-
const
|
|
1572
|
+
clearInterval(n);
|
|
1573
|
+
const u = new Error(
|
|
1555
1574
|
"BX24 initialization timeout: BX24 object not found within 30 seconds"
|
|
1556
1575
|
);
|
|
1557
|
-
console.error(
|
|
1576
|
+
console.error(u), r(u);
|
|
1558
1577
|
}, 3e4);
|
|
1559
1578
|
});
|
|
1560
1579
|
}
|
|
@@ -1601,27 +1620,27 @@ class Lt {
|
|
|
1601
1620
|
* }[]
|
|
1602
1621
|
*/
|
|
1603
1622
|
async call({ method: e, params: r, updateList: i }) {
|
|
1604
|
-
let
|
|
1605
|
-
if (i && (
|
|
1623
|
+
let n;
|
|
1624
|
+
if (i && (n = this.logger.start({
|
|
1606
1625
|
type: "call",
|
|
1607
1626
|
data: { method: e, params: r, updateList: i }
|
|
1608
1627
|
})), r || (r = {}), typeof BX24 > "u" || !BX24.callMethod) {
|
|
1609
1628
|
const a = new Error("BX24 is not initialized");
|
|
1610
1629
|
throw console.error(a), a;
|
|
1611
1630
|
}
|
|
1612
|
-
return new Promise((a,
|
|
1613
|
-
BX24.callMethod(e, r, async (
|
|
1614
|
-
let
|
|
1615
|
-
if (
|
|
1616
|
-
for (let [s, d] of Object.entries(
|
|
1617
|
-
s !== "result" && d && (
|
|
1618
|
-
if (
|
|
1619
|
-
let s =
|
|
1620
|
-
if (console.error(s),
|
|
1631
|
+
return new Promise((a, u) => {
|
|
1632
|
+
BX24.callMethod(e, r, async (c) => {
|
|
1633
|
+
let A = {};
|
|
1634
|
+
if (c != null && c.answer)
|
|
1635
|
+
for (let [s, d] of Object.entries(c.answer))
|
|
1636
|
+
s !== "result" && d && (A[s] = d);
|
|
1637
|
+
if (c.error()) {
|
|
1638
|
+
let s = c.error();
|
|
1639
|
+
if (console.error(s), n)
|
|
1621
1640
|
try {
|
|
1622
1641
|
await this.logger.stop({
|
|
1623
|
-
answer:
|
|
1624
|
-
key:
|
|
1642
|
+
answer: A,
|
|
1643
|
+
key: n,
|
|
1625
1644
|
status: "fail",
|
|
1626
1645
|
errorList: { 0: s.toString() }
|
|
1627
1646
|
});
|
|
@@ -1630,12 +1649,12 @@ class Lt {
|
|
|
1630
1649
|
}
|
|
1631
1650
|
a(!1);
|
|
1632
1651
|
} else {
|
|
1633
|
-
let s =
|
|
1634
|
-
if (s != null && s.items && (s = s.items),
|
|
1652
|
+
let s = c.data();
|
|
1653
|
+
if (s != null && s.items && (s = s.items), n)
|
|
1635
1654
|
try {
|
|
1636
1655
|
await this.logger.stop({
|
|
1637
|
-
answer:
|
|
1638
|
-
key:
|
|
1656
|
+
answer: A,
|
|
1657
|
+
key: n,
|
|
1639
1658
|
status: "success"
|
|
1640
1659
|
});
|
|
1641
1660
|
} catch (d) {
|
|
@@ -1665,50 +1684,51 @@ class Lt {
|
|
|
1665
1684
|
* }[]
|
|
1666
1685
|
* }}
|
|
1667
1686
|
*/
|
|
1668
|
-
async batch(e, r, { errorCall: i, limitCommandSerial:
|
|
1687
|
+
async batch(e, r, { errorCall: i, limitCommandSerial: n, updateList: a, limitCall: u } = {}) {
|
|
1669
1688
|
if (typeof BX24 > "u" || !BX24.callBatch) {
|
|
1670
1689
|
const s = new Error("BX24 is not initialized");
|
|
1671
1690
|
return console.error(s), !1;
|
|
1672
1691
|
}
|
|
1673
|
-
let
|
|
1674
|
-
a && (
|
|
1692
|
+
let c = new K(BX24.callBatch), A;
|
|
1693
|
+
a && (A = this.logger.start({
|
|
1675
1694
|
type: "batch",
|
|
1676
1695
|
data: { commandList: e, updateList: a }
|
|
1677
|
-
})),
|
|
1696
|
+
})), n && console.warn(
|
|
1678
1697
|
"limitCommandSerial is deprecated and not used in current Batch implementation"
|
|
1679
1698
|
);
|
|
1680
1699
|
try {
|
|
1681
|
-
let s = await
|
|
1700
|
+
let s = await c.batch(
|
|
1682
1701
|
e,
|
|
1683
1702
|
r,
|
|
1684
|
-
|
|
1703
|
+
u
|
|
1685
1704
|
);
|
|
1686
|
-
|
|
1687
|
-
|
|
1705
|
+
const d = W(this, et, dt).call(this, c, s, e, a);
|
|
1706
|
+
if (Object.keys(d).length) {
|
|
1707
|
+
if (i && i(d), A)
|
|
1688
1708
|
try {
|
|
1689
1709
|
await this.logger.stop({
|
|
1690
|
-
key:
|
|
1710
|
+
key: A,
|
|
1691
1711
|
status: "fail",
|
|
1692
|
-
errorList:
|
|
1712
|
+
errorList: d
|
|
1693
1713
|
});
|
|
1694
|
-
} catch (
|
|
1695
|
-
console.error("Logger error:",
|
|
1714
|
+
} catch (N) {
|
|
1715
|
+
console.error("Logger error:", N);
|
|
1696
1716
|
}
|
|
1697
|
-
} else if (
|
|
1717
|
+
} else if (A)
|
|
1698
1718
|
try {
|
|
1699
1719
|
await this.logger.stop({
|
|
1700
|
-
key:
|
|
1720
|
+
key: A,
|
|
1701
1721
|
status: "success"
|
|
1702
1722
|
});
|
|
1703
|
-
} catch (
|
|
1704
|
-
console.error("Logger error:",
|
|
1723
|
+
} catch (N) {
|
|
1724
|
+
console.error("Logger error:", N);
|
|
1705
1725
|
}
|
|
1706
1726
|
return s;
|
|
1707
1727
|
} catch (s) {
|
|
1708
|
-
if (
|
|
1728
|
+
if (A)
|
|
1709
1729
|
try {
|
|
1710
1730
|
await this.logger.stop({
|
|
1711
|
-
key:
|
|
1731
|
+
key: A,
|
|
1712
1732
|
status: "fail-runtime",
|
|
1713
1733
|
errorList: { 0: s == null ? void 0 : s.toString() }
|
|
1714
1734
|
});
|
|
@@ -1741,55 +1761,56 @@ class Lt {
|
|
|
1741
1761
|
* }}
|
|
1742
1762
|
* @returns {Promise<Object|false>}
|
|
1743
1763
|
*/
|
|
1744
|
-
async batchTotalCount(e, r, { errorCall: i, updateList:
|
|
1764
|
+
async batchTotalCount(e, r, { errorCall: i, updateList: n, limitCall: a } = {}) {
|
|
1745
1765
|
if (typeof BX24 > "u" || !BX24.callBatch) {
|
|
1746
|
-
const
|
|
1747
|
-
return console.error(
|
|
1766
|
+
const A = new Error("BX24 is not initialized");
|
|
1767
|
+
return console.error(A), !1;
|
|
1748
1768
|
}
|
|
1749
|
-
let
|
|
1750
|
-
|
|
1769
|
+
let u = new K(BX24.callBatch), c;
|
|
1770
|
+
n && (c = this.logger.start({
|
|
1751
1771
|
type: "batch-total-count",
|
|
1752
1772
|
data: { commandList: e }
|
|
1753
1773
|
}));
|
|
1754
1774
|
try {
|
|
1755
|
-
let
|
|
1775
|
+
let A = await u.batchTotalCount(
|
|
1756
1776
|
e,
|
|
1757
1777
|
r,
|
|
1758
1778
|
a
|
|
1759
1779
|
);
|
|
1760
|
-
|
|
1761
|
-
|
|
1780
|
+
const s = W(this, et, dt).call(this, u, A, e, n);
|
|
1781
|
+
if (Object.keys(s).length) {
|
|
1782
|
+
if (i && i(s), c)
|
|
1762
1783
|
try {
|
|
1763
1784
|
await this.logger.stop({
|
|
1764
|
-
key:
|
|
1785
|
+
key: c,
|
|
1765
1786
|
status: "fail",
|
|
1766
|
-
errorList:
|
|
1787
|
+
errorList: s
|
|
1767
1788
|
});
|
|
1768
|
-
} catch (
|
|
1769
|
-
console.error("Logger error:",
|
|
1789
|
+
} catch (d) {
|
|
1790
|
+
console.error("Logger error:", d);
|
|
1770
1791
|
}
|
|
1771
|
-
} else if (
|
|
1792
|
+
} else if (c)
|
|
1772
1793
|
try {
|
|
1773
1794
|
await this.logger.stop({
|
|
1774
|
-
key:
|
|
1795
|
+
key: c,
|
|
1775
1796
|
status: "success"
|
|
1776
1797
|
});
|
|
1777
|
-
} catch (
|
|
1778
|
-
console.error("Logger error:",
|
|
1798
|
+
} catch (d) {
|
|
1799
|
+
console.error("Logger error:", d);
|
|
1779
1800
|
}
|
|
1780
|
-
return
|
|
1781
|
-
} catch (
|
|
1782
|
-
if (
|
|
1801
|
+
return A;
|
|
1802
|
+
} catch (A) {
|
|
1803
|
+
if (c)
|
|
1783
1804
|
try {
|
|
1784
1805
|
await this.logger.stop({
|
|
1785
|
-
key:
|
|
1806
|
+
key: c,
|
|
1786
1807
|
status: "fail-runtime",
|
|
1787
|
-
errorList: { 0:
|
|
1808
|
+
errorList: { 0: A == null ? void 0 : A.toString() }
|
|
1788
1809
|
});
|
|
1789
1810
|
} catch (s) {
|
|
1790
1811
|
console.error("Logger error:", s);
|
|
1791
1812
|
}
|
|
1792
|
-
return console.error(
|
|
1813
|
+
return console.error(A), !1;
|
|
1793
1814
|
}
|
|
1794
1815
|
}
|
|
1795
1816
|
/** Запрос данных о местах встройки приложения */
|
|
@@ -1798,99 +1819,78 @@ class Lt {
|
|
|
1798
1819
|
}
|
|
1799
1820
|
/** Встройка приложения в place */
|
|
1800
1821
|
async placementBind(e, r = !0) {
|
|
1801
|
-
var
|
|
1822
|
+
var l;
|
|
1802
1823
|
if (!this.isAdmin)
|
|
1803
1824
|
return;
|
|
1804
1825
|
r && await this.placementCheck();
|
|
1805
1826
|
let i = [];
|
|
1806
|
-
if (Array.isArray(e) ? i = e.map((
|
|
1827
|
+
if (Array.isArray(e) ? i = e.map((h) => typeof h == "string" ? { placement: h } : h) : typeof e == "string" ? i = [{ placement: e }] : i = [e], this.placeData = await this.getPlacement(), !this.placeData)
|
|
1807
1828
|
return;
|
|
1808
|
-
const { appName:
|
|
1809
|
-
let
|
|
1810
|
-
this.domain === "szdl.bitrix24.ru" && ((
|
|
1811
|
-
const
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
)) {
|
|
1820
|
-
const p = {
|
|
1821
|
-
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
1822
|
-
HANDLER: g,
|
|
1823
|
-
LANG_ALL: {
|
|
1824
|
-
ru: {
|
|
1825
|
-
TITLE: l
|
|
1826
|
-
}
|
|
1827
|
-
},
|
|
1828
|
-
OPTIONS: {
|
|
1829
|
-
errorHandlerUrl: g
|
|
1830
|
-
},
|
|
1831
|
-
USER_ID: A
|
|
1832
|
-
};
|
|
1833
|
-
h[`bind_user_${A}`] = {
|
|
1834
|
-
method: "placement.bind",
|
|
1835
|
-
params: p
|
|
1836
|
-
}, console.log(`placementBind: Добавлено индивидуальное размещение для пользователя ${A} перед общим`);
|
|
1837
|
-
}
|
|
1829
|
+
const { appName: n, pathApp: a } = this.appConst;
|
|
1830
|
+
let u = n;
|
|
1831
|
+
this.domain === "szdl.bitrix24.ru" && ((l = this.appInfo) != null && l.ID) && (u = `${n}: #${this.appInfo.ID}`);
|
|
1832
|
+
const c = u.replace(" CRM", ""), A = i.filter(
|
|
1833
|
+
(h) => h.placement === "PAGE_BACKGROUND_WORKER" || h.placement === "PAGE_BACKGROUND_WORKER_ALL"
|
|
1834
|
+
), s = i.filter(
|
|
1835
|
+
(h) => h.placement !== "PAGE_BACKGROUND_WORKER" && h.placement !== "PAGE_BACKGROUND_WORKER_ALL"
|
|
1836
|
+
), d = {}, N = [];
|
|
1837
|
+
if (A.length > 0) {
|
|
1838
|
+
const h = await W(this, lt, Et).call(this, A);
|
|
1839
|
+
Object.assign(d, h.batchRequests), N.push(...h.placesToUnbind);
|
|
1838
1840
|
}
|
|
1839
|
-
for (let
|
|
1840
|
-
const
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
if (!p) {
|
|
1844
|
-
console.warn(`placementBind: userId is required for PAGE_BACKGROUND_WORKER, skipping ${N}`);
|
|
1845
|
-
continue;
|
|
1846
|
-
}
|
|
1847
|
-
L = `${a}?USER_ID=${p}/`;
|
|
1848
|
-
}
|
|
1849
|
-
if (N === "PAGE_BACKGROUND_WORKER_ALL" && (U = "PAGE_BACKGROUND_WORKER"), this.placeData.find(
|
|
1850
|
-
(k) => k.placement === U && k.handler === L
|
|
1841
|
+
for (let h = 0; h < s.length; h++) {
|
|
1842
|
+
const O = s[h].placement, g = a;
|
|
1843
|
+
if (this.placeData.find(
|
|
1844
|
+
(w) => w.placement === O && w.handler === g
|
|
1851
1845
|
))
|
|
1852
1846
|
continue;
|
|
1853
|
-
|
|
1854
|
-
(
|
|
1847
|
+
const I = this.placeData.find(
|
|
1848
|
+
(w) => w.placement === O && w.handler !== g
|
|
1855
1849
|
);
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1850
|
+
I && N.push({
|
|
1851
|
+
placement: O,
|
|
1852
|
+
handler: I.handler
|
|
1853
|
+
});
|
|
1854
|
+
const C = {
|
|
1855
|
+
PLACEMENT: O,
|
|
1856
|
+
HANDLER: g,
|
|
1860
1857
|
LANG_ALL: {
|
|
1861
1858
|
ru: {
|
|
1862
|
-
TITLE:
|
|
1859
|
+
TITLE: O === "USER_PROFILE_TOOLBAR" ? c : u
|
|
1863
1860
|
}
|
|
1864
1861
|
},
|
|
1865
1862
|
OPTIONS: {
|
|
1866
|
-
errorHandlerUrl:
|
|
1863
|
+
errorHandlerUrl: g
|
|
1867
1864
|
}
|
|
1868
1865
|
};
|
|
1869
|
-
|
|
1866
|
+
d[`bind_${h}`] = {
|
|
1870
1867
|
method: "placement.bind",
|
|
1871
|
-
params:
|
|
1868
|
+
params: C
|
|
1872
1869
|
};
|
|
1873
1870
|
}
|
|
1874
|
-
|
|
1875
|
-
console.log(
|
|
1871
|
+
N.length > 0 && await this.placementUnBind(N), Object.keys(d).length > 0 && await this.batch(d), Object.keys(d).length > 0 && (this.placeData = await this.getPlacement(), Object.values(d).forEach((h) => {
|
|
1872
|
+
console.log(
|
|
1873
|
+
"Приложение успешно встроено в",
|
|
1874
|
+
h.params.PLACEMENT
|
|
1875
|
+
);
|
|
1876
1876
|
}));
|
|
1877
1877
|
}
|
|
1878
1878
|
/* Отвязка встройки из place */
|
|
1879
1879
|
async placementUnBind(e) {
|
|
1880
1880
|
let r = [];
|
|
1881
|
-
Array.isArray(e) ? r = e.map((
|
|
1881
|
+
Array.isArray(e) ? r = e.map((n) => typeof n == "string" ? { placement: n } : n) : typeof e == "string" ? r = [{ placement: e }] : r = [e];
|
|
1882
1882
|
const i = {};
|
|
1883
|
-
for (let
|
|
1884
|
-
const a = r[
|
|
1885
|
-
PLACEMENT:
|
|
1883
|
+
for (let n = 0; n < r.length; n++) {
|
|
1884
|
+
const a = r[n], u = a.placement, c = a.handler, A = {
|
|
1885
|
+
PLACEMENT: u
|
|
1886
1886
|
};
|
|
1887
|
-
|
|
1887
|
+
c && (A.HANDLER = c), i[`unbind_${n}`] = {
|
|
1888
1888
|
method: "placement.unbind",
|
|
1889
|
-
params:
|
|
1889
|
+
params: A
|
|
1890
1890
|
};
|
|
1891
1891
|
}
|
|
1892
|
-
Object.keys(i).length > 0 && (await this.batch(i), r.forEach((
|
|
1893
|
-
console.log("Встройка отвязана",
|
|
1892
|
+
Object.keys(i).length > 0 && (await this.batch(i), r.forEach((n) => {
|
|
1893
|
+
console.log("Встройка отвязана", n.placement);
|
|
1894
1894
|
}));
|
|
1895
1895
|
}
|
|
1896
1896
|
/** Удаляем фоновые обработчики прошлых версий и создаем новые */
|
|
@@ -1898,11 +1898,11 @@ class Lt {
|
|
|
1898
1898
|
if (this.placeData = await this.getPlacement(), !this.placeData)
|
|
1899
1899
|
return;
|
|
1900
1900
|
const { pathApp: e } = this.appConst, r = [], i = [];
|
|
1901
|
-
for (const
|
|
1902
|
-
if (!
|
|
1901
|
+
for (const n of this.placeData) {
|
|
1902
|
+
if (!n.handler || n.handler.includes(e))
|
|
1903
1903
|
continue;
|
|
1904
|
-
const { placement: a, handler:
|
|
1905
|
-
r.push({ placement: a, handler:
|
|
1904
|
+
const { placement: a, handler: u, userId: c } = n;
|
|
1905
|
+
r.push({ placement: a, handler: u }), i.push({ placement: a, userId: c });
|
|
1906
1906
|
}
|
|
1907
1907
|
r.length > 0 && await this.placementUnBind(r), i.length > 0 && await this.placementBind(i, !1);
|
|
1908
1908
|
}
|
|
@@ -1919,7 +1919,7 @@ class Lt {
|
|
|
1919
1919
|
}
|
|
1920
1920
|
/* регистрация бота */
|
|
1921
1921
|
regBot({ code: e, type: r, name: i }) {
|
|
1922
|
-
const { appName:
|
|
1922
|
+
const { appName: n, pathApp: a, chatBotLogo: u } = this.appConst, c = this.appInfo.ID;
|
|
1923
1923
|
return this.call({
|
|
1924
1924
|
method: "imbot.register",
|
|
1925
1925
|
params: {
|
|
@@ -1935,7 +1935,7 @@ class Lt {
|
|
|
1935
1935
|
// строковый идентификатор чат-бота, используется только в режиме Вебхуков
|
|
1936
1936
|
PROPERTIES: {
|
|
1937
1937
|
// Личные данные чат-бота (обяз.)
|
|
1938
|
-
NAME: `${i ??
|
|
1938
|
+
NAME: `${i ?? n} - бот #${c}`,
|
|
1939
1939
|
// Имя чат-бота (обязательное одно из полей NAME или LAST_NAME)
|
|
1940
1940
|
LAST_NAME: "",
|
|
1941
1941
|
// Фамилия чат-бота (обязательное одно из полей NAME или LAST_NAME)
|
|
@@ -1943,7 +1943,7 @@ class Lt {
|
|
|
1943
1943
|
// Цвет чат-бота для мобильного приложения RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND, MARENGO, GRAY, GRAPHITE
|
|
1944
1944
|
EMAIL: "",
|
|
1945
1945
|
// E-mail для связи. НЕЛЬЗЯ использовать e-mail, дублирующий e-mail реальных пользователей
|
|
1946
|
-
PERSONAL_BIRTHDAY:
|
|
1946
|
+
PERSONAL_BIRTHDAY: rt().format("%Y-%m-%d"),
|
|
1947
1947
|
// День рождения в формате YYYY-mm-dd
|
|
1948
1948
|
WORK_POSITION: "Почтальон",
|
|
1949
1949
|
// Занимаемая должность, используется как описание чат-бота
|
|
@@ -1951,11 +1951,11 @@ class Lt {
|
|
|
1951
1951
|
// Ссылка на сайт
|
|
1952
1952
|
PERSONAL_GENDER: "M",
|
|
1953
1953
|
// Пол чат-бота, допустимые значения M - мужской, F - женский, пусто, если не требуется указывать
|
|
1954
|
-
PERSONAL_PHOTO:
|
|
1954
|
+
PERSONAL_PHOTO: u ?? ""
|
|
1955
1955
|
// Аватар чат-бота - base64
|
|
1956
1956
|
}
|
|
1957
1957
|
}
|
|
1958
|
-
}).then((
|
|
1958
|
+
}).then((A) => (console.log("Чат-бот добавлен", A), A));
|
|
1959
1959
|
}
|
|
1960
1960
|
/* Убрать регистрацию бота */
|
|
1961
1961
|
unRegBot(e) {
|
|
@@ -1971,12 +1971,135 @@ class Lt {
|
|
|
1971
1971
|
return this.logger.getEntityList(e);
|
|
1972
1972
|
}
|
|
1973
1973
|
}
|
|
1974
|
-
|
|
1974
|
+
at = new WeakSet(), _t = function() {
|
|
1975
1975
|
return this.call({ method: "app.info" });
|
|
1976
|
-
},
|
|
1976
|
+
}, At = new WeakSet(), yt = function() {
|
|
1977
1977
|
return this.call({ method: "user.current" });
|
|
1978
|
+
}, et = new WeakSet(), dt = function(e, r, i, n) {
|
|
1979
|
+
let a = { ...e.errors };
|
|
1980
|
+
if (Object.values(e.errors).some(
|
|
1981
|
+
(c) => {
|
|
1982
|
+
if (typeof c != "string")
|
|
1983
|
+
return !1;
|
|
1984
|
+
const A = c.toUpperCase();
|
|
1985
|
+
return A === "TIMEOUT" || A === "OPERATION_TIME_LIMIT" || A.includes("TIMEOUT") || A.includes("OPERATION_TIME_LIMIT");
|
|
1986
|
+
}
|
|
1987
|
+
) && n) {
|
|
1988
|
+
const c = r ? Object.keys(r).filter((N) => N !== "errorsList") : [], A = new Set(Object.keys(e.errors || {})), s = /* @__PURE__ */ new Set();
|
|
1989
|
+
if (r) {
|
|
1990
|
+
for (const N of c)
|
|
1991
|
+
if (!A.has(N)) {
|
|
1992
|
+
const l = r[N];
|
|
1993
|
+
l != null && s.add(N);
|
|
1994
|
+
}
|
|
1995
|
+
}
|
|
1996
|
+
const d = Object.values(e.errors).find(
|
|
1997
|
+
(N) => {
|
|
1998
|
+
if (typeof N != "string")
|
|
1999
|
+
return !1;
|
|
2000
|
+
const l = N.toUpperCase();
|
|
2001
|
+
return l === "TIMEOUT" || l === "OPERATION_TIME_LIMIT" || l.includes("TIMEOUT") || l.includes("OPERATION_TIME_LIMIT");
|
|
2002
|
+
}
|
|
2003
|
+
);
|
|
2004
|
+
for (const N of Object.keys(i))
|
|
2005
|
+
!s.has(N) && !e.errors[N] && (a[N] = d || "TIMEOUT или OPERATION_TIME_LIMIT: запрос не был обработан");
|
|
2006
|
+
}
|
|
2007
|
+
return a;
|
|
2008
|
+
}, lt = new WeakSet(), Et = async function(e) {
|
|
2009
|
+
var s, d, N;
|
|
2010
|
+
const { appName: r, pathApp: i } = this.appConst, n = {}, a = [];
|
|
2011
|
+
let u = r;
|
|
2012
|
+
this.domain === "szdl.bitrix24.ru" && ((s = this.appInfo) != null && s.ID) && (u = `${r}: #${this.appInfo.ID}`);
|
|
2013
|
+
const c = { need: !1, exist: !1, handler: `${i}/` }, A = {
|
|
2014
|
+
need: !1,
|
|
2015
|
+
exist: !1,
|
|
2016
|
+
handler: (d = this.userInfo) != null && d.ID ? `${i}?USER_ID=${this.userInfo.ID}/` : null,
|
|
2017
|
+
userId: (N = this.userInfo) == null ? void 0 : N.ID
|
|
2018
|
+
};
|
|
2019
|
+
for (const l of e)
|
|
2020
|
+
l.placement === "PAGE_BACKGROUND_WORKER_ALL" && (c.need = !0), l.placement === "PAGE_BACKGROUND_WORKER" && (A.need = !0);
|
|
2021
|
+
if (c.need) {
|
|
2022
|
+
const l = this.placeData.find(
|
|
2023
|
+
(h) => h.placement === "PAGE_BACKGROUND_WORKER" && h.handler === c.handler
|
|
2024
|
+
);
|
|
2025
|
+
c.exist = !!l;
|
|
2026
|
+
}
|
|
2027
|
+
if (A.need && A.handler) {
|
|
2028
|
+
const l = this.placeData.find(
|
|
2029
|
+
(h) => h.placement === "PAGE_BACKGROUND_WORKER" && h.handler === A.handler
|
|
2030
|
+
);
|
|
2031
|
+
A.exist = !!l;
|
|
2032
|
+
}
|
|
2033
|
+
if (c.need && !A.need)
|
|
2034
|
+
c.exist || (n.bind_general = {
|
|
2035
|
+
method: "placement.bind",
|
|
2036
|
+
params: {
|
|
2037
|
+
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
2038
|
+
HANDLER: c.handler,
|
|
2039
|
+
LANG_ALL: {
|
|
2040
|
+
ru: {
|
|
2041
|
+
TITLE: u
|
|
2042
|
+
}
|
|
2043
|
+
},
|
|
2044
|
+
OPTIONS: {
|
|
2045
|
+
errorHandlerUrl: c.handler
|
|
2046
|
+
}
|
|
2047
|
+
}
|
|
2048
|
+
});
|
|
2049
|
+
else if (A.need && !c.need)
|
|
2050
|
+
A.exist || (n.bind_your = {
|
|
2051
|
+
method: "placement.bind",
|
|
2052
|
+
params: {
|
|
2053
|
+
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
2054
|
+
HANDLER: A.handler,
|
|
2055
|
+
LANG_ALL: {
|
|
2056
|
+
ru: {
|
|
2057
|
+
TITLE: u
|
|
2058
|
+
}
|
|
2059
|
+
},
|
|
2060
|
+
OPTIONS: {
|
|
2061
|
+
errorHandlerUrl: A.handler
|
|
2062
|
+
},
|
|
2063
|
+
USER_ID: A.userId
|
|
2064
|
+
}
|
|
2065
|
+
});
|
|
2066
|
+
else if (c.need && A.need)
|
|
2067
|
+
return A.exist && c.exist ? { batchRequests: n, placesToUnbind: a } : (!A.exist && c.exist && a.push({
|
|
2068
|
+
placement: "PAGE_BACKGROUND_WORKER",
|
|
2069
|
+
handler: c.handler
|
|
2070
|
+
}), A.exist || (n.bind_your = {
|
|
2071
|
+
method: "placement.bind",
|
|
2072
|
+
params: {
|
|
2073
|
+
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
2074
|
+
HANDLER: A.handler,
|
|
2075
|
+
LANG_ALL: {
|
|
2076
|
+
ru: {
|
|
2077
|
+
TITLE: u
|
|
2078
|
+
}
|
|
2079
|
+
},
|
|
2080
|
+
OPTIONS: {
|
|
2081
|
+
errorHandlerUrl: A.handler
|
|
2082
|
+
},
|
|
2083
|
+
USER_ID: A.userId
|
|
2084
|
+
}
|
|
2085
|
+
}), n.bind_general = {
|
|
2086
|
+
method: "placement.bind",
|
|
2087
|
+
params: {
|
|
2088
|
+
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
2089
|
+
HANDLER: c.handler,
|
|
2090
|
+
LANG_ALL: {
|
|
2091
|
+
ru: {
|
|
2092
|
+
TITLE: u
|
|
2093
|
+
}
|
|
2094
|
+
},
|
|
2095
|
+
OPTIONS: {
|
|
2096
|
+
errorHandlerUrl: c.handler
|
|
2097
|
+
}
|
|
2098
|
+
}
|
|
2099
|
+
}, { batchRequests: n, placesToUnbind: a });
|
|
2100
|
+
return { batchRequests: n, placesToUnbind: a };
|
|
1978
2101
|
};
|
|
1979
|
-
class
|
|
2102
|
+
class Bt {
|
|
1980
2103
|
constructor(e) {
|
|
1981
2104
|
M(this, "entityName", "tabs");
|
|
1982
2105
|
M(this, "maxTabs", 5);
|
|
@@ -1989,15 +2112,19 @@ class St {
|
|
|
1989
2112
|
M(this, "activeMaxPause", 60 * 1e3 * 5 + this.random);
|
|
1990
2113
|
M(this, "activeMinPause", 60 * 1e3 * 3 + this.random);
|
|
1991
2114
|
if (!e) {
|
|
1992
|
-
console.error("В бек-воркер не переданы настройки, отмена вызова"), console.log(
|
|
2115
|
+
console.error("В бек-воркер не переданы настройки, отмена вызова"), console.log(
|
|
2116
|
+
"BackgroundWorker: Отмена конструктора - отсутствуют опции"
|
|
2117
|
+
);
|
|
1993
2118
|
return;
|
|
1994
2119
|
}
|
|
1995
|
-
const { appFunc: r, bx: i, users:
|
|
1996
|
-
this.bx = i, this.appPath = i.appConst.pathApp ?? "", this.appName = i.appConst.appName ?? "", this.appInit = r, this.users =
|
|
2120
|
+
const { appFunc: r, bx: i, users: n, continueBackground: a } = e;
|
|
2121
|
+
this.bx = i, this.appPath = i.appConst.pathApp ?? "", this.appName = i.appConst.appName ?? "", this.appInit = r, this.users = n, this.start = /* @__PURE__ */ new Date(), this.continueCondition = typeof a == "function" ? a : this.defaultContinueBackground;
|
|
1997
2122
|
}
|
|
1998
2123
|
async init() {
|
|
1999
2124
|
if (!this.appInit) {
|
|
2000
|
-
console.error(
|
|
2125
|
+
console.error(
|
|
2126
|
+
"Функция-запуск не передана в appInit, отмена инициализации бекворкера"
|
|
2127
|
+
), console.log("BackgroundWorker: Отмена init - не передана appInit");
|
|
2001
2128
|
return;
|
|
2002
2129
|
}
|
|
2003
2130
|
if (!this.bx) {
|
|
@@ -2005,23 +2132,33 @@ class St {
|
|
|
2005
2132
|
return;
|
|
2006
2133
|
}
|
|
2007
2134
|
if (!await this.checkPlacementType()) {
|
|
2008
|
-
console.log(
|
|
2135
|
+
console.log(
|
|
2136
|
+
"BackgroundWorker: Отмена init - общая встройка обнаружена при наличии индивидуальной"
|
|
2137
|
+
);
|
|
2009
2138
|
return;
|
|
2010
2139
|
}
|
|
2011
2140
|
if (await this.bx.placementBind(["PAGE_BACKGROUND_WORKER"]), !await this.continueBackground()) {
|
|
2012
|
-
console.log(
|
|
2141
|
+
console.log(
|
|
2142
|
+
"BackgroundWorker: Отмена init - условие запуска не выполнено"
|
|
2143
|
+
);
|
|
2013
2144
|
return;
|
|
2014
2145
|
}
|
|
2015
2146
|
await this.checkEntity(), this.tabList = await this.getFilteredTabList(), this.id = await this.addTab(), console.log("tabId", this.id), this.interval = setInterval(() => {
|
|
2016
2147
|
this.backgroundPolling().catch((e) => {
|
|
2017
|
-
console.error(
|
|
2148
|
+
console.error(
|
|
2149
|
+
"BackgroundWorker: backgroundPolling failed",
|
|
2150
|
+
e
|
|
2151
|
+
);
|
|
2018
2152
|
});
|
|
2019
2153
|
}, this.activeMinPause);
|
|
2020
2154
|
}
|
|
2021
2155
|
async checkEntity() {
|
|
2022
2156
|
var i;
|
|
2023
2157
|
const e = await this.bx.call({ method: "entity.get" });
|
|
2024
|
-
((i = e == null ? void 0 : e.find) == null ? void 0 : i.call(
|
|
2158
|
+
((i = e == null ? void 0 : e.find) == null ? void 0 : i.call(
|
|
2159
|
+
e,
|
|
2160
|
+
(n) => n.ENTITY === this.entityName
|
|
2161
|
+
)) || await this.bx.call({
|
|
2025
2162
|
method: "entity.add",
|
|
2026
2163
|
params: {
|
|
2027
2164
|
ENTITY: this.entityName,
|
|
@@ -2049,8 +2186,8 @@ class St {
|
|
|
2049
2186
|
return { id: void 0, data: void 0 };
|
|
2050
2187
|
try {
|
|
2051
2188
|
return { id: i.ID, data: { ...JSON.parse(i.DETAIL_TEXT) } };
|
|
2052
|
-
} catch (
|
|
2053
|
-
return console.log(
|
|
2189
|
+
} catch (n) {
|
|
2190
|
+
return console.log(n), { id: i.ID, data: void 0 };
|
|
2054
2191
|
}
|
|
2055
2192
|
}) : [];
|
|
2056
2193
|
}
|
|
@@ -2105,23 +2242,36 @@ class St {
|
|
|
2105
2242
|
try {
|
|
2106
2243
|
const r = await this.bx.getPlacement();
|
|
2107
2244
|
if (!r || !Array.isArray(r))
|
|
2108
|
-
return console.log(
|
|
2245
|
+
return console.log(
|
|
2246
|
+
"BackgroundWorker: Не удалось получить список размещений, продолжаем выполнение"
|
|
2247
|
+
), !0;
|
|
2109
2248
|
const i = +(((e = this.bx.userInfo) == null ? void 0 : e.ID) ?? 0);
|
|
2110
2249
|
if (!i)
|
|
2111
|
-
return console.log(
|
|
2250
|
+
return console.log(
|
|
2251
|
+
"BackgroundWorker: Не удалось определить ID текущего пользователя, продолжаем выполнение"
|
|
2252
|
+
), !0;
|
|
2112
2253
|
const a = !!(typeof window < "u" ? window.location.href : "").includes("USER_ID=");
|
|
2113
|
-
let
|
|
2114
|
-
for (const
|
|
2115
|
-
if (
|
|
2116
|
-
const s =
|
|
2254
|
+
let u = !1;
|
|
2255
|
+
for (const c of r)
|
|
2256
|
+
if (c.placement === "PAGE_BACKGROUND_WORKER" && (c.userId || c.handler && c.handler.includes("USER_ID="))) {
|
|
2257
|
+
const s = c.userId || (c.handler ? this.extractUserIdFromHandler(c.handler) : null);
|
|
2117
2258
|
if (s && +s === i) {
|
|
2118
|
-
|
|
2259
|
+
u = !0;
|
|
2119
2260
|
break;
|
|
2120
2261
|
}
|
|
2121
2262
|
}
|
|
2122
|
-
return a ? (console.log(
|
|
2263
|
+
return a ? (console.log(
|
|
2264
|
+
"BackgroundWorker: Обнаружена индивидуальная встройка, продолжаем выполнение"
|
|
2265
|
+
), !0) : !currentPlacementIsGeneral && u ? (console.log(
|
|
2266
|
+
`BackgroundWorker: Обнаружена общая встройка при наличии индивидуальной для текущего пользователя (ID: ${i}), прекращаем выполнение`
|
|
2267
|
+
), !1) : (console.log(
|
|
2268
|
+
"BackgroundWorker: Проверка типа встройки пройдена, продолжаем выполнение"
|
|
2269
|
+
), !0);
|
|
2123
2270
|
} catch (r) {
|
|
2124
|
-
return console.error(
|
|
2271
|
+
return console.error(
|
|
2272
|
+
"BackgroundWorker: Ошибка при проверке типа встройки",
|
|
2273
|
+
r
|
|
2274
|
+
), !0;
|
|
2125
2275
|
}
|
|
2126
2276
|
}
|
|
2127
2277
|
extractUserIdFromHandler(e) {
|
|
@@ -2132,26 +2282,35 @@ class St {
|
|
|
2132
2282
|
}
|
|
2133
2283
|
async continueBackground() {
|
|
2134
2284
|
try {
|
|
2135
|
-
const r = !!await Promise.resolve(
|
|
2285
|
+
const r = !!await Promise.resolve(
|
|
2286
|
+
this.continueCondition(this)
|
|
2287
|
+
);
|
|
2136
2288
|
return console.log(r ? "BackgroundWorker: Условие продолжения выполнено" : "BackgroundWorker: Отмена continueBackground - внешнее условие вернуло false"), r;
|
|
2137
2289
|
} catch (e) {
|
|
2138
|
-
return console.error(
|
|
2290
|
+
return console.error(
|
|
2291
|
+
"BackgroundWorker: Ошибка при выполнении условия продолжения",
|
|
2292
|
+
e
|
|
2293
|
+
), console.log(
|
|
2294
|
+
"BackgroundWorker: Отмена continueBackground - исключение в условии запуска"
|
|
2295
|
+
), !1;
|
|
2139
2296
|
}
|
|
2140
2297
|
}
|
|
2141
2298
|
async getFilteredTabList() {
|
|
2142
2299
|
const e = [], r = [], i = await this.getTabs();
|
|
2143
|
-
for (const
|
|
2144
|
-
if (!(
|
|
2145
|
-
e.push(
|
|
2300
|
+
for (const n of i) {
|
|
2301
|
+
if (!(n != null && n.data)) {
|
|
2302
|
+
e.push(n);
|
|
2146
2303
|
continue;
|
|
2147
2304
|
}
|
|
2148
|
-
(/* @__PURE__ */ new Date()).getTime() - new Date(
|
|
2305
|
+
(/* @__PURE__ */ new Date()).getTime() - new Date(n.data.lastActive).getTime() > this.activeMaxPause ? e.push(n) : r.push(n);
|
|
2149
2306
|
}
|
|
2150
2307
|
return await this.deleteTabs(e), r;
|
|
2151
2308
|
}
|
|
2152
2309
|
async backgroundPolling() {
|
|
2153
2310
|
if (!await this.continueBackground()) {
|
|
2154
|
-
this.interval && (clearInterval(this.interval), this.interval = void 0), console.log(
|
|
2311
|
+
this.interval && (clearInterval(this.interval), this.interval = void 0), console.log(
|
|
2312
|
+
"BackgroundWorker: Остановка backgroundPolling - условие continueBackground не выполнено"
|
|
2313
|
+
);
|
|
2155
2314
|
return;
|
|
2156
2315
|
}
|
|
2157
2316
|
if (this.tabList = await this.getFilteredTabList(), !this.id) {
|
|
@@ -2159,67 +2318,92 @@ class St {
|
|
|
2159
2318
|
return;
|
|
2160
2319
|
}
|
|
2161
2320
|
let e = this.checkOtherTabs();
|
|
2162
|
-
e && (await this.pause(
|
|
2321
|
+
e && (await this.pause(
|
|
2322
|
+
Math.round(Number(Math.random().toFixed(2)) * 1e4)
|
|
2323
|
+
), this.tabList = await this.getFilteredTabList(), e = this.checkOtherTabs(), e && await this.startBackground());
|
|
2163
2324
|
}
|
|
2164
2325
|
checkOtherTabs() {
|
|
2165
|
-
var
|
|
2326
|
+
var n, a;
|
|
2166
2327
|
let e = !1, r = (/* @__PURE__ */ new Date()).getTime() - new Date(this.start).getTime();
|
|
2167
|
-
for (const
|
|
2168
|
-
if (+
|
|
2328
|
+
for (const u of this.tabList)
|
|
2329
|
+
if (+u.id !== this.id && ((n = u.data) != null && n.start && (e = !0), ((a = u.data) == null ? void 0 : a.duration) > r)) {
|
|
2169
2330
|
r = !1;
|
|
2170
2331
|
break;
|
|
2171
2332
|
}
|
|
2172
2333
|
const i = !e && !!r;
|
|
2173
|
-
return this.updateTab(i).catch((
|
|
2174
|
-
console.error("BackgroundWorker: updateTab failed",
|
|
2175
|
-
}), console.log(
|
|
2334
|
+
return this.updateTab(i).catch((u) => {
|
|
2335
|
+
console.error("BackgroundWorker: updateTab failed", u);
|
|
2336
|
+
}), console.log(
|
|
2337
|
+
`BackgroundWorker: Проверка вкладок - можно запускать приложение? ${i}`
|
|
2338
|
+
), i;
|
|
2176
2339
|
}
|
|
2177
2340
|
async startBackground() {
|
|
2178
2341
|
this.interval && (clearInterval(this.interval), this.interval = void 0), this.interval = setInterval(() => {
|
|
2179
2342
|
this.updateTab(!0).catch((e) => {
|
|
2180
|
-
console.error(
|
|
2343
|
+
console.error(
|
|
2344
|
+
"BackgroundWorker: periodic updateTab failed",
|
|
2345
|
+
e
|
|
2346
|
+
);
|
|
2181
2347
|
});
|
|
2182
2348
|
}, this.activeMinPause), await this.appInit(), this.interval && (clearInterval(this.interval), this.interval = void 0), this.id && (await this.deleteTabs([{ id: this.id }]), this.id = 0);
|
|
2183
2349
|
}
|
|
2184
2350
|
async setBackgroundWorkerAll() {
|
|
2185
|
-
var
|
|
2186
|
-
if (!((
|
|
2187
|
-
console.log(
|
|
2351
|
+
var T, O;
|
|
2352
|
+
if (!((T = this.bx) != null && T.isAdmin)) {
|
|
2353
|
+
console.log(
|
|
2354
|
+
"BackgroundWorker: Отмена setBackgroundWorkerAll - пользователь не админ"
|
|
2355
|
+
);
|
|
2188
2356
|
return;
|
|
2189
2357
|
}
|
|
2190
|
-
(
|
|
2358
|
+
(O = this.users) != null && O.length || await this.getEntityData();
|
|
2191
2359
|
const e = await this.bx.getPlacement(), r = /* @__PURE__ */ new Map();
|
|
2192
2360
|
let i = null;
|
|
2193
2361
|
e.forEach((g) => {
|
|
2194
|
-
g.placement === "PAGE_BACKGROUND_WORKER"
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
}), console.log(
|
|
2201
|
-
|
|
2362
|
+
if (g.placement === "PAGE_BACKGROUND_WORKER")
|
|
2363
|
+
if (g.userId || g.handler && g.handler.includes("USER_ID=")) {
|
|
2364
|
+
const I = g.userId || (g.handler ? this.extractUserIdFromHandler(g.handler) : null);
|
|
2365
|
+
I && r.set(+I, g);
|
|
2366
|
+
} else
|
|
2367
|
+
i = g;
|
|
2368
|
+
}), console.log(
|
|
2369
|
+
`setBackgroundWorkerAll: Найдено ${r.size} индивидуальных и ${i ? 1 : 0} общих привязок PAGE_BACKGROUND_WORKER`
|
|
2370
|
+
);
|
|
2371
|
+
const n = await this.updateAdminsList(), a = await this.getEligibleUsersForBackgroundWorker(n);
|
|
2372
|
+
a.sort((g, L) => {
|
|
2373
|
+
const I = g.LAST_LOGIN ? new Date(g.LAST_LOGIN) : /* @__PURE__ */ new Date(0);
|
|
2374
|
+
return (L.LAST_LOGIN ? new Date(L.LAST_LOGIN) : /* @__PURE__ */ new Date(0)) - I;
|
|
2375
|
+
}), console.log(
|
|
2376
|
+
`setBackgroundWorkerAll: Найдено ${a.length} подходящих пользователей (админы и руководители)`
|
|
2377
|
+
);
|
|
2378
|
+
const u = [], c = 10, s = a.slice(
|
|
2379
|
+
0,
|
|
2380
|
+
c
|
|
2381
|
+
).filter(
|
|
2202
2382
|
(g) => !r.has(+g.ID)
|
|
2203
|
-
), d = i && s.length > 0,
|
|
2383
|
+
), d = i && s.length > 0, N = [];
|
|
2204
2384
|
for (const [g] of r)
|
|
2205
|
-
a.find((
|
|
2206
|
-
for (const g of
|
|
2207
|
-
this.appPath && (
|
|
2385
|
+
a.find((I) => +I.ID === g) || N.push(g);
|
|
2386
|
+
for (const g of N)
|
|
2387
|
+
this.appPath && (u.push({
|
|
2208
2388
|
method: "placement.unbind",
|
|
2209
2389
|
params: {
|
|
2210
2390
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
2211
2391
|
HANDLER: `${this.appPath}?USER_ID=${g}/`
|
|
2212
2392
|
}
|
|
2213
|
-
}), console.log(
|
|
2214
|
-
|
|
2393
|
+
}), console.log(
|
|
2394
|
+
`setBackgroundWorkerAll: Добавлена в очередь отвязка бэк-воркера от пользователя ${g}`
|
|
2395
|
+
));
|
|
2396
|
+
d && this.appPath && (u.push({
|
|
2215
2397
|
method: "placement.unbind",
|
|
2216
2398
|
params: {
|
|
2217
2399
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
2218
2400
|
HANDLER: i.handler || `${this.appPath}/`
|
|
2219
2401
|
}
|
|
2220
|
-
}), console.log(
|
|
2402
|
+
}), console.log(
|
|
2403
|
+
"setBackgroundWorkerAll: Добавлена в очередь отвязка общего бэк-воркера (для создания индивидуальных)"
|
|
2404
|
+
));
|
|
2221
2405
|
for (const g of s)
|
|
2222
|
-
this.appPath &&
|
|
2406
|
+
this.appPath && u.push({
|
|
2223
2407
|
method: "placement.bind",
|
|
2224
2408
|
params: {
|
|
2225
2409
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
@@ -2235,7 +2419,7 @@ class St {
|
|
|
2235
2419
|
USER_ID: g.ID
|
|
2236
2420
|
}
|
|
2237
2421
|
});
|
|
2238
|
-
(!i || d) && this.appPath && (
|
|
2422
|
+
(!i || d) && this.appPath && (u.push({
|
|
2239
2423
|
method: "placement.bind",
|
|
2240
2424
|
params: {
|
|
2241
2425
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
@@ -2249,26 +2433,67 @@ class St {
|
|
|
2249
2433
|
errorHandlerUrl: `${this.appPath}/`
|
|
2250
2434
|
}
|
|
2251
2435
|
}
|
|
2252
|
-
}), console.log(
|
|
2436
|
+
}), console.log(
|
|
2437
|
+
"setBackgroundWorkerAll: Добавлен в очередь создание общего бэк-воркера (после индивидуальных)"
|
|
2438
|
+
));
|
|
2439
|
+
const l = u.filter(
|
|
2440
|
+
(g) => g.method === "placement.unbind"
|
|
2441
|
+
), h = u.filter(
|
|
2442
|
+
(g) => g.method === "placement.bind"
|
|
2443
|
+
);
|
|
2444
|
+
l.length > 0 && (console.log(
|
|
2445
|
+
`setBackgroundWorkerAll: Выполняем ${l.length} операций отвязки через batch`
|
|
2446
|
+
), await this.bx.batch(
|
|
2447
|
+
Object.fromEntries(
|
|
2448
|
+
l.map((g, L) => [`unbind_${L}`, g])
|
|
2449
|
+
)
|
|
2450
|
+
), console.log(
|
|
2451
|
+
"setBackgroundWorkerAll: Все операции отвязки выполнены успешно"
|
|
2452
|
+
)), h.length > 0 && (console.log(
|
|
2453
|
+
`setBackgroundWorkerAll: Выполняем ${h.length} операций привязки через batch`
|
|
2454
|
+
), await this.bx.batch(
|
|
2455
|
+
Object.fromEntries(
|
|
2456
|
+
h.map((g, L) => [`bind_${L}`, g])
|
|
2457
|
+
)
|
|
2458
|
+
), console.log(
|
|
2459
|
+
"setBackgroundWorkerAll: Все операции привязки выполнены успешно"
|
|
2460
|
+
)), u.length === 0 && console.log("setBackgroundWorkerAll: Нет операций для выполнения");
|
|
2253
2461
|
}
|
|
2254
2462
|
async getEligibleUsersForBackgroundWorker(e = []) {
|
|
2255
|
-
return (this.users ?? []).filter(
|
|
2256
|
-
|
|
2257
|
-
|
|
2463
|
+
return (this.users ?? []).filter(
|
|
2464
|
+
(i) => i.ACTIVE === "Y" || i.ACTIVE === !0
|
|
2465
|
+
).filter((i) => {
|
|
2466
|
+
const n = +i.ID;
|
|
2467
|
+
return e.includes(n);
|
|
2258
2468
|
});
|
|
2259
2469
|
}
|
|
2260
2470
|
async updateAdminsList() {
|
|
2261
2471
|
var e, r, i;
|
|
2262
2472
|
try {
|
|
2263
|
-
let
|
|
2473
|
+
let n = await this.getAdminsList();
|
|
2264
2474
|
const a = +(((e = this.bx.userInfo) == null ? void 0 : e.ID) ?? 0);
|
|
2265
|
-
(r = this.bx) != null && r.isAdmin && a && !
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2475
|
+
(r = this.bx) != null && r.isAdmin && a && !n.includes(a) && (n.push(a), console.log(
|
|
2476
|
+
`updateAdminsList: Добавлен новый админ ${a}`
|
|
2477
|
+
)), !((i = this.bx) != null && i.isAdmin) && a && n.includes(a) && (n = n.filter((A) => A !== a), console.log(
|
|
2478
|
+
`updateAdminsList: Удален из списка админов пользователь ${a} (больше не админ)`
|
|
2479
|
+
));
|
|
2480
|
+
const u = new Set(
|
|
2481
|
+
(this.users ?? []).filter(
|
|
2482
|
+
(A) => A.ACTIVE === "Y" || A.ACTIVE === !0
|
|
2483
|
+
).map((A) => +A.ID)
|
|
2484
|
+
), c = n.filter(
|
|
2485
|
+
(A) => u.has(A)
|
|
2486
|
+
);
|
|
2487
|
+
return c.length !== n.length && (console.log(
|
|
2488
|
+
`updateAdminsList: Удалено ${n.length - c.length} неактивных админов`
|
|
2489
|
+
), n = c), BX24.appOption.set("adminsList", JSON.stringify(n)), console.log(
|
|
2490
|
+
`BackgroundWorker: Список админов обновлен: ${n.length} админов`
|
|
2491
|
+
), n;
|
|
2492
|
+
} catch (n) {
|
|
2493
|
+
return console.error(
|
|
2494
|
+
"BackgroundWorker: Ошибка при обновлении списка админов:",
|
|
2495
|
+
n
|
|
2496
|
+
), [];
|
|
2272
2497
|
}
|
|
2273
2498
|
}
|
|
2274
2499
|
async getAdminsList() {
|
|
@@ -2276,7 +2501,10 @@ class St {
|
|
|
2276
2501
|
const e = BX24.appOption.get("adminsList");
|
|
2277
2502
|
return e ? JSON.parse(e) : [];
|
|
2278
2503
|
} catch (e) {
|
|
2279
|
-
return console.error(
|
|
2504
|
+
return console.error(
|
|
2505
|
+
"getAdminsList: Ошибка при получении списка админов:",
|
|
2506
|
+
e
|
|
2507
|
+
), [];
|
|
2280
2508
|
}
|
|
2281
2509
|
}
|
|
2282
2510
|
async getEntityData() {
|
|
@@ -2294,10 +2522,10 @@ class St {
|
|
|
2294
2522
|
}
|
|
2295
2523
|
}
|
|
2296
2524
|
export {
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2525
|
+
Bt as BackgroundWorker,
|
|
2526
|
+
K as Batch,
|
|
2527
|
+
Mt as BxBoot,
|
|
2528
|
+
mt as BxHelper,
|
|
2529
|
+
St as BxLogger,
|
|
2530
|
+
rt as tempus
|
|
2303
2531
|
};
|