szdl-utils-kit 0.3.22 → 0.3.23

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 CHANGED
@@ -1,54 +1,54 @@
1
- var ge = Object.defineProperty;
2
- var ye = (y, t, e) => t in y ? ge(y, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : y[t] = e;
3
- var H = (y, t, e) => (ye(y, typeof t != "symbol" ? t + "" : t, e), e), Wt = (y, t, e) => {
4
- if (!t.has(y))
5
- throw TypeError("Cannot " + e);
1
+ var Ne = Object.defineProperty;
2
+ var Oe = (y, e, t) => e in y ? Ne(y, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : y[e] = t;
3
+ var B = (y, e, t) => (Oe(y, typeof e != "symbol" ? e + "" : e, t), t), Ft = (y, e, t) => {
4
+ if (!e.has(y))
5
+ throw TypeError("Cannot " + t);
6
6
  };
7
- var M = (y, t, e) => (Wt(y, t, "read from private field"), e ? e.call(y) : t.get(y)), L = (y, t, e) => {
8
- if (t.has(y))
7
+ var S = (y, e, t) => (Ft(y, e, "read from private field"), t ? t.call(y) : e.get(y)), R = (y, e, t) => {
8
+ if (e.has(y))
9
9
  throw TypeError("Cannot add the same private member more than once");
10
- t instanceof WeakSet ? t.add(y) : t.set(y, e);
11
- }, x = (y, t, e, r) => (Wt(y, t, "write to private field"), r ? r.call(y, e) : t.set(y, e), e);
12
- var _ = (y, t, e) => (Wt(y, t, "access private method"), e);
13
- var pe = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
14
- function Ne(y) {
10
+ e instanceof WeakSet ? e.add(y) : e.set(y, t);
11
+ }, x = (y, e, t, r) => (Ft(y, e, "write to private field"), r ? r.call(y, t) : e.set(y, t), t);
12
+ var _ = (y, e, t) => (Ft(y, e, "access private method"), t);
13
+ var _e = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
14
+ function Te(y) {
15
15
  return y && y.__esModule && Object.prototype.hasOwnProperty.call(y, "default") ? y.default : y;
16
16
  }
17
- var Xt = { exports: {} };
18
- (function(y, t) {
19
- (function(e) {
17
+ var Jt = { exports: {} };
18
+ (function(y, e) {
19
+ (function(t) {
20
20
  Array.prototype.indexOf || (Array.prototype.indexOf = function(s, o) {
21
- var m, g;
22
- for (m = o || 0, g = this.length; m < g; m += 1)
23
- if (this[m] === s)
24
- return m;
21
+ var d, g;
22
+ for (d = o || 0, g = this.length; d < g; d += 1)
23
+ if (this[d] === s)
24
+ return d;
25
25
  return -1;
26
26
  });
27
27
  var r = this, i = function(s, o) {
28
- for (var m = s.toString(); m.length < o; )
29
- m = "0" + m;
30
- return m;
28
+ for (var d = s.toString(); d.length < o; )
29
+ d = "0" + d;
30
+ return d;
31
31
  }, a = function(s, o) {
32
- return o !== e ? (s.year(o.year() || o.year), s.month(o.month() || o.month), s.day(o.day() || o.day), s.hours(o.hours() || o.hours), s.minutes(o.minutes() || o.minutes), s.seconds(o.seconds() || o.seconds), s.milliseconds(o.milliseconds() || o.milliseconds), s) : e;
32
+ return o !== t ? (s.year(o.year() || o.year), s.month(o.month() || o.month), s.day(o.day() || o.day), s.hours(o.hours() || o.hours), s.minutes(o.minutes() || o.minutes), s.seconds(o.seconds() || o.seconds), s.milliseconds(o.milliseconds() || o.milliseconds), s) : t;
33
33
  }, c = function(s, o) {
34
- var m, g = "";
35
- return m = s.slice(o, o + 1), m !== "" && !isNaN(Number(m)) && (g += "%H"), m = s.charAt(o + 2), m !== "" && m === ":" && (g += m), m = s.slice(o + 3, o + 4), m !== "" && !isNaN(Number(m)) && (g += "%M"), m = s.charAt(o + 5), m !== "" && m === ":" && (g += m), m = s.slice(o + 6, o + 7), m !== "" && !isNaN(Number(m)) && (g += "%S"), g;
34
+ var d, g = "";
35
+ return d = s.slice(o, o + 1), d !== "" && !isNaN(Number(d)) && (g += "%H"), d = s.charAt(o + 2), d !== "" && d === ":" && (g += d), d = s.slice(o + 3, o + 4), d !== "" && !isNaN(Number(d)) && (g += "%M"), d = s.charAt(o + 5), d !== "" && d === ":" && (g += d), d = s.slice(o + 6, o + 7), d !== "" && !isNaN(Number(d)) && (g += "%S"), g;
36
36
  }, l = function(s, o) {
37
- var m, g = [
37
+ var d, g = [
38
38
  s.slice(o, o + 1),
39
39
  s.charAt(o + 2),
40
40
  s.slice(o + 3, o + 4),
41
41
  s.charAt(o + 5),
42
42
  s.slice(o + 6, o + 9)
43
- ], B;
44
- return !isNaN(Number(g[0])) && !isNaN(Number(g[2])) && !isNaN(Number(g[4])) ? (g[1] === "." && g[3] === "." ? m = "%d.%m.%Y" : g[1] === "-" && g[3] === "-" ? m = "%m-%d-%Y" : g[1] === "/" && g[3] === "/" && (m = "%m/%d/%Y"), m) : (B = [
43
+ ], C;
44
+ return !isNaN(Number(g[0])) && !isNaN(Number(g[2])) && !isNaN(Number(g[4])) ? (g[1] === "." && g[3] === "." ? d = "%d.%m.%Y" : g[1] === "-" && g[3] === "-" ? d = "%m-%d-%Y" : g[1] === "/" && g[3] === "/" && (d = "%m/%d/%Y"), d) : (C = [
45
45
  s.slice(o, o + 3),
46
46
  s.charAt(o + 4),
47
47
  s.slice(o + 5, o + 6),
48
48
  s.charAt(o + 7),
49
49
  s.slice(o + 8, o + 9)
50
- ], !isNaN(Number(B[0])) && !isNaN(Number(B[2])) && !isNaN(Number(B[4])) ? (B[1] === "-" && B[3] === "-" && (m = "%Y-%m-%d"), m) : "");
51
- }, u = r.tempus, n, f, d = r.navigator || {}, A = "en", h = {
50
+ ], !isNaN(Number(C[0])) && !isNaN(Number(C[2])) && !isNaN(Number(C[4])) ? (C[1] === "-" && C[3] === "-" && (d = "%Y-%m-%d"), d) : "");
51
+ }, h = r.tempus, n, f, m = r.navigator || {}, A = "en", u = {
52
52
  en: {
53
53
  JANUARY_SHORT: "Jan",
54
54
  FEBRUARY_SHORT: "Feb",
@@ -211,68 +211,68 @@ var Xt = { exports: {} };
211
211
  }
212
212
  }, O = function() {
213
213
  return [
214
- h[A].JANUARY_LONG,
215
- h[A].FEBRUARY_LONG,
216
- h[A].MARCH_LONG,
217
- h[A].APRIL_LONG,
218
- h[A].MAY_LONG,
219
- h[A].JUNE_LONG,
220
- h[A].JULY_LONG,
221
- h[A].AUGUST_LONG,
222
- h[A].SEPTEMBER_LONG,
223
- h[A].OCTOBER_LONG,
224
- h[A].NOVEMBER_LONG,
225
- h[A].DECEMBER_LONG
214
+ u[A].JANUARY_LONG,
215
+ u[A].FEBRUARY_LONG,
216
+ u[A].MARCH_LONG,
217
+ u[A].APRIL_LONG,
218
+ u[A].MAY_LONG,
219
+ u[A].JUNE_LONG,
220
+ u[A].JULY_LONG,
221
+ u[A].AUGUST_LONG,
222
+ u[A].SEPTEMBER_LONG,
223
+ u[A].OCTOBER_LONG,
224
+ u[A].NOVEMBER_LONG,
225
+ u[A].DECEMBER_LONG
226
226
  ];
227
227
  }, T = function() {
228
228
  return [
229
- h[A].JANUARY_SHORT,
230
- h[A].FEBRUARY_SHORT,
231
- h[A].MARCH_SHORT,
232
- h[A].APRIL_SHORT,
233
- h[A].MAY_SHORT,
234
- h[A].JUNE_SHORT,
235
- h[A].JULY_SHORT,
236
- h[A].AUGUST_SHORT,
237
- h[A].SEPTEMBER_SHORT,
238
- h[A].OCTOBER_SHORT,
239
- h[A].NOVEMBER_SHORT,
240
- h[A].DECEMBER_SHORT
229
+ u[A].JANUARY_SHORT,
230
+ u[A].FEBRUARY_SHORT,
231
+ u[A].MARCH_SHORT,
232
+ u[A].APRIL_SHORT,
233
+ u[A].MAY_SHORT,
234
+ u[A].JUNE_SHORT,
235
+ u[A].JULY_SHORT,
236
+ u[A].AUGUST_SHORT,
237
+ u[A].SEPTEMBER_SHORT,
238
+ u[A].OCTOBER_SHORT,
239
+ u[A].NOVEMBER_SHORT,
240
+ u[A].DECEMBER_SHORT
241
241
  ];
242
242
  }, E = function() {
243
243
  return [
244
- h[A].SUNDAY_LONG,
245
- h[A].MONDAY_LONG,
246
- h[A].TUESDAY_LONG,
247
- h[A].WEDNESDAY_LONG,
248
- h[A].THURSDAY_LONG,
249
- h[A].FRIDAY_LONG,
250
- h[A].SATURDAY_LONG
244
+ u[A].SUNDAY_LONG,
245
+ u[A].MONDAY_LONG,
246
+ u[A].TUESDAY_LONG,
247
+ u[A].WEDNESDAY_LONG,
248
+ u[A].THURSDAY_LONG,
249
+ u[A].FRIDAY_LONG,
250
+ u[A].SATURDAY_LONG
251
251
  ];
252
- }, S = function() {
252
+ }, M = function() {
253
253
  return [
254
- h[A].SUNDAY_SHORT,
255
- h[A].MONDAY_SHORT,
256
- h[A].TUESDAY_SHORT,
257
- h[A].WEDNESDAY_SHORT,
258
- h[A].THURSDAY_SHORT,
259
- h[A].FRIDAY_SHORT,
260
- h[A].SATURDAY_SHORT
254
+ u[A].SUNDAY_SHORT,
255
+ u[A].MONDAY_SHORT,
256
+ u[A].TUESDAY_SHORT,
257
+ u[A].WEDNESDAY_SHORT,
258
+ u[A].THURSDAY_SHORT,
259
+ u[A].FRIDAY_SHORT,
260
+ u[A].SATURDAY_SHORT
261
261
  ];
262
- }, p, R, C, N, I = function(s, o, m) {
262
+ }, p, b, H, N, I = function(s, o, d) {
263
263
  var g;
264
264
  r.XMLHttpRequest ? g = new XMLHttpRequest() : g = new ActiveXObject("Microsoft.XMLHTTP"), g.onreadystatechange = function() {
265
- g.readyState === 4 && (g.status === 200 ? o && (r.JSON === e ? 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(g.responseText))) : m && m(g));
265
+ g.readyState === 4 && (g.status === 200 ? o && (r.JSON === t ? 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(g.responseText))) : d && d(g));
267
267
  }, g.open("GET", s, !1), g.send();
268
- }, b = {
268
+ }, L = {
269
269
  "%d": {
270
270
  format: function(s) {
271
271
  return i(s.day() || n.MIN_DAY, 2);
272
272
  },
273
273
  parse: function(s) {
274
274
  var o = Number(s);
275
- return { day: isNaN(o) ? e : o };
275
+ return { day: isNaN(o) ? t : o };
276
276
  },
277
277
  minLength: 2,
278
278
  maxLength: 2,
@@ -284,7 +284,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
284
284
  },
285
285
  parse: function(s) {
286
286
  var o = Number(s);
287
- return { month: isNaN(o) ? e : o };
287
+ return { month: isNaN(o) ? t : o };
288
288
  },
289
289
  minLength: 2,
290
290
  maxLength: 2,
@@ -296,7 +296,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
296
296
  },
297
297
  parse: function(s) {
298
298
  var o = Number(s);
299
- return { year: isNaN(o) ? e : o };
299
+ return { year: isNaN(o) ? t : o };
300
300
  },
301
301
  minLength: 4,
302
302
  maxLength: 4,
@@ -316,7 +316,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
316
316
  "%a": {
317
317
  format: function(s) {
318
318
  var o = s.dayOfWeek();
319
- return N[o !== e ? o : n.MIN_DAY_OF_WEEK];
319
+ return N[o !== t ? o : n.MIN_DAY_OF_WEEK];
320
320
  },
321
321
  parse: function() {
322
322
  return {};
@@ -328,7 +328,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
328
328
  "%A": {
329
329
  format: function(s) {
330
330
  var o = s.dayOfWeek();
331
- return C[o !== e ? o : n.MIN_DAY_OF_WEEK];
331
+ return H[o !== t ? o : n.MIN_DAY_OF_WEEK];
332
332
  },
333
333
  parse: function() {
334
334
  return {};
@@ -340,11 +340,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
340
340
  "%b": {
341
341
  format: function(s) {
342
342
  var o = n.options("monthFromZero") ? s.month() : s.month() - 1;
343
- return R[o !== e ? o : n.MIN_MONTH];
343
+ return b[o !== t ? o : n.MIN_MONTH];
344
344
  },
345
345
  parse: function(s) {
346
346
  var o = n.monthNames().indexOf(s) + (n.options("monthFromZero") ? 0 : 1);
347
- return { month: o !== -1 ? o : e };
347
+ return { month: o !== -1 ? o : t };
348
348
  },
349
349
  minLength: 1,
350
350
  maxLength: 999,
@@ -353,11 +353,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
353
353
  "%B": {
354
354
  format: function(s) {
355
355
  var o = n.options("monthFromZero") ? s.month() : s.month() - 1;
356
- return p[o !== e ? o : n.MIN_MONTH];
356
+ return p[o !== t ? o : n.MIN_MONTH];
357
357
  },
358
358
  parse: function(s) {
359
359
  var o = n.monthNames(!0).indexOf(s) + (n.options("monthFromZero") ? 0 : 1);
360
- return { month: o !== -1 ? o : e };
360
+ return { month: o !== -1 ? o : t };
361
361
  },
362
362
  minLength: 1,
363
363
  maxLength: 999,
@@ -369,7 +369,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
369
369
  },
370
370
  parse: function(s) {
371
371
  var o = Number(s);
372
- return { hours: isNaN(o) ? e : o };
372
+ return { hours: isNaN(o) ? t : o };
373
373
  },
374
374
  minLength: 2,
375
375
  maxLength: 2,
@@ -381,7 +381,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
381
381
  },
382
382
  parse: function(s) {
383
383
  var o = Number(s);
384
- return { minutes: isNaN(o) ? e : o };
384
+ return { minutes: isNaN(o) ? t : o };
385
385
  },
386
386
  minLength: 2,
387
387
  maxLength: 2,
@@ -393,7 +393,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
393
393
  },
394
394
  parse: function(s) {
395
395
  var o = Number(s);
396
- return { seconds: isNaN(o) ? e : o };
396
+ return { seconds: isNaN(o) ? t : o };
397
397
  },
398
398
  minLength: 2,
399
399
  maxLength: 2,
@@ -415,10 +415,10 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
415
415
  return i(s.year() || n.MIN_YEAR, 4) + "-" + i(s.month() || n.MIN_MONTH, 2) + "-" + i(s.day() || n.MIN_DAY, 2);
416
416
  },
417
417
  parse: function(s) {
418
- var o = Number(s.slice(0, 4)), m = Number(s.slice(5, 7)), g = Number(s.slice(8, 10));
418
+ var o = Number(s.slice(0, 4)), d = Number(s.slice(5, 7)), g = Number(s.slice(8, 10));
419
419
  return {
420
420
  year: o,
421
- month: m,
421
+ month: d,
422
422
  day: g
423
423
  };
424
424
  },
@@ -431,11 +431,11 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
431
431
  return i(s.month() || n.MIN_MONTH, 2) + "/" + i(s.day() || n.MIN_DAY, 2) + "/" + i(s.year() || n.MIN_YEAR, 4);
432
432
  },
433
433
  parse: function(s) {
434
- var o = Number(s.slice(0, 2)), m = Number(s.slice(3, 5)), g = Number(s.slice(6, 10));
434
+ var o = Number(s.slice(0, 2)), d = Number(s.slice(3, 5)), g = Number(s.slice(6, 10));
435
435
  return {
436
436
  year: g,
437
437
  month: o,
438
- day: m
438
+ day: d
439
439
  };
440
440
  },
441
441
  minLength: 10,
@@ -446,7 +446,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
446
446
  useMilliseconds: !1,
447
447
  monthFromZero: !1
448
448
  }, k;
449
- k = function(s, o, m) {
449
+ k = function(s, o, d) {
450
450
  return this._d = /* @__PURE__ */ new Date(), this._i = {
451
451
  year: !1,
452
452
  month: !1,
@@ -455,7 +455,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
455
455
  minutes: !1,
456
456
  seconds: !1,
457
457
  milliseconds: !1
458
- }, s !== e && this.set(s, o, m), this;
458
+ }, s !== t && this.set(s, o, d), this;
459
459
  }, k.fn = k.prototype, k.fn.dayCount = function() {
460
460
  var s = this.month(), o = n.MAX_DAY_IN_MONTHS[s - (n.options("monthFromZero") ? 0 : 1)];
461
461
  return this.leapYear() && s === (n.options("monthFromZero") ? 1 : 2) && (o += 1), o;
@@ -504,7 +504,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
504
504
  }, k.fn.week = function() {
505
505
  var s = new Date(this.year(), 0, 1), o = n(this.utc()).hours(0).minutes(0).seconds(0).milliseconds(0).utc() * 1e3;
506
506
  return Math.ceil(((o - s.getTime()) / 864e5 + s.getDay() + 1) / 7);
507
- }, k.fn.set = function(s, o, m) {
507
+ }, k.fn.set = function(s, o, d) {
508
508
  if (this._i = {
509
509
  year: !1,
510
510
  month: !1,
@@ -513,16 +513,16 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
513
513
  minutes: !1,
514
514
  seconds: !1,
515
515
  milliseconds: !1
516
- }, s === e)
516
+ }, s === t)
517
517
  return this._d = /* @__PURE__ */ new Date(), this;
518
518
  if (s instanceof Date)
519
519
  return this._d = s, this;
520
520
  if (typeof s == "number")
521
521
  return this._d = new Date(s * (n.options("useMilliseconds") ? 1 : 1e3)), this;
522
522
  if (typeof s == "object" && (s instanceof Array ? (this.day(n.MIN_DAY), this.year(s[0]), this.month(s[1]), this.day(s[2]), this.hours(s[3]), this.minutes(s[4]), this.seconds(s[5]), this.milliseconds(s[6])) : (this.day(n.MIN_DAY), this.year(s.year), this.month(s.month), this.day(s.day), this.hours(s.hours), this.minutes(s.minutes), this.seconds(s.seconds), this.milliseconds(s.milliseconds))), typeof s == "string") {
523
- var g, B = [], D, U, z = [], W = 0, F = 0, G, J, P = {}, Y;
524
- if (s === e)
525
- return D = a(this, m), D === e && (this._i = {
523
+ var g, C = [], D, U, Q = [], W = 0, F = 0, P, X, G = {}, Y;
524
+ if (s === t)
525
+ return D = a(this, d), D === t && (this._i = {
526
526
  year: -1,
527
527
  month: -1,
528
528
  day: -1,
@@ -531,25 +531,25 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
531
531
  seconds: -1,
532
532
  milliseconds: -1
533
533
  }), D;
534
- for (o === e && (o = n.detectFormat(s)); W < o.length; ) {
534
+ for (o === t && (o = n.detectFormat(s)); W < o.length; ) {
535
535
  if (o.charAt(W) === "%") {
536
- if (U = o.charAt(W) + o.charAt(W + 1), b[U] !== e) {
537
- switch (G = 0, J = "", b[U].type) {
536
+ if (U = o.charAt(W) + o.charAt(W + 1), L[U] !== t) {
537
+ switch (P = 0, X = "", L[U].type) {
538
538
  case "number":
539
- for (; G < b[U].maxLength && F + G < s.length && !isNaN(Number(s.charAt(F + G))); )
540
- J += s.charAt(F + G), G += 1;
539
+ for (; P < L[U].maxLength && F + P < s.length && !isNaN(Number(s.charAt(F + P))); )
540
+ X += s.charAt(F + P), P += 1;
541
541
  break;
542
542
  case "word":
543
- for (; G < b[U].maxLength && F + G < s.length && /^[\u00BF-\u1FFF\u2C00-\uD7FF\w]+$/.test(s.charAt(F + G)); )
544
- J += s.charAt(F + G), G += 1;
543
+ for (; P < L[U].maxLength && F + P < s.length && /^[\u00BF-\u1FFF\u2C00-\uD7FF\w]+$/.test(s.charAt(F + P)); )
544
+ X += s.charAt(F + P), P += 1;
545
545
  break;
546
546
  case "string":
547
- for (; G < b[U].maxLength && F + G < s.length; )
548
- J += s.charAt(F + G), G += 1;
547
+ for (; P < L[U].maxLength && F + P < s.length; )
548
+ X += s.charAt(F + P), P += 1;
549
549
  break;
550
550
  }
551
- if (G < b[U].minLength)
552
- return D = a(this, m), D === e && (this._i = {
551
+ if (P < L[U].minLength)
552
+ return D = a(this, d), D === t && (this._i = {
553
553
  year: -1,
554
554
  month: -1,
555
555
  day: -1,
@@ -558,10 +558,10 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
558
558
  seconds: -1,
559
559
  milliseconds: -1
560
560
  }), D;
561
- B.push(U), z.push(J), G -= 1, F += G, W += 1;
561
+ C.push(U), Q.push(X), P -= 1, F += P, W += 1;
562
562
  }
563
563
  } else if (s.charAt(F) !== o.charAt(W))
564
- return D = a(this, m), D === e && (this._i = {
564
+ return D = a(this, d), D === t && (this._i = {
565
565
  year: -1,
566
566
  month: -1,
567
567
  day: -1,
@@ -572,16 +572,16 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
572
572
  }), D;
573
573
  W += 1, F += 1;
574
574
  }
575
- for (g in B)
576
- B.hasOwnProperty(g) && b.hasOwnProperty(B[g]) && (Y = b[B[g]].parse(z[g]), P = {
577
- year: Y.year !== e ? Y.year : P.year,
578
- month: Y.month !== e ? Y.month : P.month,
579
- day: Y.day !== e ? Y.day : P.day,
580
- hours: Y.hours !== e ? Y.hours : P.hours,
581
- minutes: Y.minutes !== e ? Y.minutes : P.minutes,
582
- seconds: Y.seconds !== e ? Y.seconds : P.seconds
575
+ for (g in C)
576
+ C.hasOwnProperty(g) && L.hasOwnProperty(C[g]) && (Y = L[C[g]].parse(Q[g]), G = {
577
+ year: Y.year !== t ? Y.year : G.year,
578
+ month: Y.month !== t ? Y.month : G.month,
579
+ day: Y.day !== t ? Y.day : G.day,
580
+ hours: Y.hours !== t ? Y.hours : G.hours,
581
+ minutes: Y.minutes !== t ? Y.minutes : G.minutes,
582
+ seconds: Y.seconds !== t ? Y.seconds : G.seconds
583
583
  });
584
- this.day(n.MIN_DAY), this.year(P.year), this.month(P.month), this.day(P.day), this.hours(P.hours), this.minutes(P.minutes), this.seconds(P.seconds), this.milliseconds(P.milliseconds);
584
+ this.day(n.MIN_DAY), this.year(G.year), this.month(G.month), this.day(G.day), this.hours(G.hours), this.minutes(G.minutes), this.seconds(G.seconds), this.milliseconds(G.milliseconds);
585
585
  }
586
586
  return this;
587
587
  }, k.fn.leapYear = function() {
@@ -593,10 +593,10 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
593
593
  return arguments.length !== 0 ? (this._d = new Date(Number(s) * (n.options("useMilliseconds") ? 1 : 1e3)), this) : n.options("useMilliseconds") ? this._d.getTime() : Math.floor(this._d.getTime() / 1e3);
594
594
  }, k.fn.dayOfWeek = function(s) {
595
595
  if (s === "long")
596
- return C[this._d.getDay()];
596
+ return H[this._d.getDay()];
597
597
  if (s === "short")
598
598
  return N[this._d.getDay()];
599
- if (s === e)
599
+ if (s === t)
600
600
  return this._d.getDay();
601
601
  if (s === 0 || s === "Sunday")
602
602
  return this.calc({ day: -this.dayOfWeek() });
@@ -671,49 +671,49 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
671
671
  };
672
672
  }
673
673
  }, k.fn.format = function(s) {
674
- for (var o = 0, m = "", g; o < s.length; )
675
- s.charAt(o) === "%" ? (g = s.charAt(o) + s.charAt(o + 1), b[g] !== e ? (m += b[g].format(this), o += 1) : m += "%") : m += s.charAt(o), o += 1;
676
- return m;
674
+ for (var o = 0, d = "", g; o < s.length; )
675
+ s.charAt(o) === "%" ? (g = s.charAt(o) + s.charAt(o + 1), L[g] !== t ? (d += L[g].format(this), o += 1) : d += "%") : d += s.charAt(o), o += 1;
676
+ return d;
677
677
  }, k.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
  }, k.fn.errors = function() {
680
680
  return this._i;
681
681
  }, k.fn.between = function(s, o) {
682
- var m = this.timestamp(), g = s.timestamp();
682
+ var d = this.timestamp(), g = s.timestamp();
683
683
  switch (o) {
684
684
  case "year":
685
- return Math.floor((g - m) / 31556952);
685
+ return Math.floor((g - d) / 31556952);
686
686
  case "month":
687
- return Math.floor((g - m) / 2629746);
687
+ return Math.floor((g - d) / 2629746);
688
688
  case "day":
689
- return Math.floor((g - m) / 86400);
689
+ return Math.floor((g - d) / 86400);
690
690
  case "hours":
691
- return Math.floor((g - m) / 3600);
691
+ return Math.floor((g - d) / 3600);
692
692
  case "minutes":
693
- return Math.floor((g - m) / 60);
693
+ return Math.floor((g - d) / 60);
694
694
  case "seconds":
695
- return g - m;
695
+ return g - d;
696
696
  default:
697
- return e;
697
+ return t;
698
698
  }
699
699
  }, k.fn.calc = function(s) {
700
- return s.year !== e && this._d.setFullYear(this._d.getFullYear() + s.year), s.month !== e && this._d.setMonth(this._d.getMonth() + s.month), s.day !== e && this._d.setDate(this._d.getDate() + s.day), s.hours !== e && this._d.setHours(this._d.getHours() + s.hours), s.minutes !== e && this._d.setMinutes(this._d.getMinutes() + s.minutes), s.seconds !== e && this._d.setSeconds(this._d.getSeconds() + s.seconds), s.milliseconds !== e && this._d.setMilliseconds(this._d.getMilliseconds() + s.milliseconds), this;
701
- }, n = function(s, o, m) {
702
- return new k(s, o, m);
700
+ return s.year !== t && this._d.setFullYear(this._d.getFullYear() + s.year), s.month !== t && this._d.setMonth(this._d.getMonth() + s.month), s.day !== t && this._d.setDate(this._d.getDate() + s.day), s.hours !== t && this._d.setHours(this._d.getHours() + s.hours), s.minutes !== t && this._d.setMinutes(this._d.getMinutes() + s.minutes), s.seconds !== t && this._d.setSeconds(this._d.getSeconds() + s.seconds), s.milliseconds !== t && this._d.setMilliseconds(this._d.getMilliseconds() + s.milliseconds), this;
701
+ }, n = function(s, o, d) {
702
+ return new k(s, o, d);
703
703
  }, n.MIN_YEAR = 1e3, n.MAX_YEAR = 3e3, n.MIN_MONTH = 1, n.MAX_MONTH = 12, n.MIN_DAY = 1, n.MAX_DAY_IN_MONTHS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], n.MIN_DAY_OF_WEEK = 0, n.MAX_DAY_OF_WEEK = 6, n.MIN_HOURS = 0, n.MAX_HOURS = 23, n.MIN_MINUTES = 0, n.MAX_MINUTES = 59, n.MIN_SECONDS = 0, n.MAX_SECONDS = 59, n.MIN_MILLISECONDS = 0, n.MAX_MILLISECONDS = 999, n.VERSION = "0.2.18", n.options = function(s, o) {
704
- if (s === e)
704
+ if (s === t)
705
705
  return w;
706
706
  if (w.hasOwnProperty(s)) {
707
- if (o === e)
707
+ if (o === t)
708
708
  return w[s];
709
709
  w[s] = o, s === "monthFromZero" && (n.MIN_MONTH = o ? 0 : 1, n.MAX_MONTH = o ? 11 : 12);
710
710
  }
711
- return e;
711
+ return t;
712
712
  }, n.noConflict = function() {
713
- return r.tempus = u, n;
713
+ return r.tempus = h, n;
714
714
  }, n.generate = function(s) {
715
- var o, m, g, B, D, U, z, W;
716
- if (typeof s.dateFrom != "number" && (s.dateFrom instanceof k ? o = s.dateFrom.utc() : o = n(s.dateFrom, s.formatFrom).utc()), typeof s.dateTo != "number" && (s.dateTo instanceof k ? m = s.dateTo.utc() : m = n(s.dateTo, s.formatTo !== e ? s.formatTo : s.formatFrom).utc()), typeof s.period == "number" ? D = {
715
+ var o, d, g, C, D, U, Q, W;
716
+ if (typeof s.dateFrom != "number" && (s.dateFrom instanceof k ? o = s.dateFrom.utc() : o = n(s.dateFrom, s.formatFrom).utc()), typeof s.dateTo != "number" && (s.dateTo instanceof k ? d = s.dateTo.utc() : d = n(s.dateTo, s.formatTo !== t ? s.formatTo : s.formatFrom).utc()), typeof s.period == "number" ? D = {
717
717
  year: 0,
718
718
  month: 0,
719
719
  day: 0,
@@ -728,117 +728,117 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : o(JSON.pars
728
728
  minutes: s.period === "minutes" ? 1 : 0,
729
729
  seconds: s.period === "seconds" ? 1 : 0
730
730
  } : typeof s.period == "object" && (D = {
731
- year: s.period.year !== e ? s.period.year : 0,
732
- month: s.period.month !== e ? s.period.month : 0,
733
- day: s.period.day !== e ? s.period.day : 0,
734
- hours: s.period.hours !== e ? s.period.hours : 0,
735
- minutes: s.period.minutes !== e ? s.period.minutes : 0,
736
- seconds: s.period.seconds !== e ? s.period.seconds : 0
737
- }), s.groupBy === e ? U = s.asObject === !0 ? {} : [] : (U = [], U.push([]), z = n(o).get()[s.groupBy]), W = function(J, P, Y) {
738
- return s.asObject === !0 ? s.format !== e ? J[n(P).format(s.format)] = {} : J[n(P).format("%F %H:%M:%S")] = {} : s.format !== e ? J.push(Y ? null : n(P).format(s.format)) : J.push(Y ? null : n(P)), J;
739
- }, s.groupBy !== e && s.fillNulls) {
731
+ year: s.period.year !== t ? s.period.year : 0,
732
+ month: s.period.month !== t ? s.period.month : 0,
733
+ day: s.period.day !== t ? s.period.day : 0,
734
+ hours: s.period.hours !== t ? s.period.hours : 0,
735
+ minutes: s.period.minutes !== t ? s.period.minutes : 0,
736
+ seconds: s.period.seconds !== t ? s.period.seconds : 0
737
+ }), s.groupBy === t ? U = s.asObject === !0 ? {} : [] : (U = [], U.push([]), Q = n(o).get()[s.groupBy]), W = function(X, G, Y) {
738
+ return s.asObject === !0 ? s.format !== t ? X[n(G).format(s.format)] = {} : X[n(G).format("%F %H:%M:%S")] = {} : s.format !== t ? X.push(Y ? null : n(G).format(s.format)) : X.push(Y ? null : n(G)), X;
739
+ }, s.groupBy !== t && s.fillNulls) {
740
740
  var F = {
741
- year: D.year ? -D.year : e,
742
- month: D.month ? -D.month : e,
743
- day: D.day ? -D.day : e,
744
- hours: D.hours ? -D.hours : e,
745
- minutes: D.minutes ? -D.minutes : e,
746
- seconds: D.seconds ? -D.seconds : e,
747
- milliseconds: D.milliseconds ? -D.milliseconds : e
741
+ year: D.year ? -D.year : t,
742
+ month: D.month ? -D.month : t,
743
+ day: D.day ? -D.day : t,
744
+ hours: D.hours ? -D.hours : t,
745
+ minutes: D.minutes ? -D.minutes : t,
746
+ seconds: D.seconds ? -D.seconds : t,
747
+ milliseconds: D.milliseconds ? -D.milliseconds : t
748
748
  };
749
- for (g = n(o).calc(F).utc(); n(g).get()[s.groupBy] === z; )
749
+ for (g = n(o).calc(F).utc(); n(g).get()[s.groupBy] === Q; )
750
750
  W(U[U.length - 1], g, !0), g = n(g).calc(F).utc();
751
751
  if (s.groupBy === "week") {
752
- var G = n(o).dayOfWeek();
753
- for (g = n(o).dayOfWeek(0).utc(); U[0].length < G && g < o; )
752
+ var P = n(o).dayOfWeek();
753
+ for (g = n(o).dayOfWeek(0).utc(); U[0].length < P && g < o; )
754
754
  W(U[U.length - 1], g, !0), g = n(g).calc(D).utc();
755
755
  }
756
756
  }
757
- for (; o <= m; )
758
- s.groupBy === e ? W(U, o) : n(o).get()[s.groupBy] === z ? W(U[U.length - 1], o) : (U.push([]), W(U[U.length - 1], o), z = n(o).get()[s.groupBy]), o = n(o).calc(D).utc();
759
- if (s.groupBy !== e && s.fillNulls)
760
- for (B = n(m).calc(D).utc(); n(B).get()[s.groupBy] === z; )
761
- W(U[U.length - 1], B, !0), B = n(B).calc(D).utc();
757
+ for (; o <= d; )
758
+ s.groupBy === t ? W(U, o) : n(o).get()[s.groupBy] === Q ? W(U[U.length - 1], o) : (U.push([]), W(U[U.length - 1], o), Q = n(o).get()[s.groupBy]), o = n(o).calc(D).utc();
759
+ if (s.groupBy !== t && s.fillNulls)
760
+ for (C = n(d).calc(D).utc(); n(C).get()[s.groupBy] === Q; )
761
+ W(U[U.length - 1], C, !0), C = n(C).calc(D).utc();
762
762
  return U;
763
763
  }, n.monthNames = function(s) {
764
764
  switch (s) {
765
765
  case "long":
766
766
  return p;
767
767
  default:
768
- return R;
768
+ return b;
769
769
  }
770
770
  }, n.dayNames = function(s) {
771
771
  switch (s) {
772
772
  case "long":
773
- return C;
773
+ return H;
774
774
  default:
775
775
  return N;
776
776
  }
777
777
  }, n.lang = function(s) {
778
- if (s !== e)
779
- A = s, h[A] === e && (A = "en"), p = O(), R = T(), C = E(), N = S();
778
+ if (s !== t)
779
+ A = s, u[A] === t && (A = "en"), p = O(), b = T(), H = E(), N = M();
780
780
  else
781
781
  return A;
782
- return e;
782
+ return t;
783
783
  }, n.availableLangs = function() {
784
- return Object.keys(h);
785
- }, n.registerFormat = function(s, o, m, g, B, D) {
786
- b[s] = {
784
+ return Object.keys(u);
785
+ }, n.registerFormat = function(s, o, d, g, C, D) {
786
+ L[s] = {
787
787
  format: o,
788
- parse: m,
788
+ parse: d,
789
789
  minLength: g,
790
- maxLength: B,
790
+ maxLength: C,
791
791
  type: D
792
792
  };
793
793
  }, n.unregisterFormat = function(s) {
794
- delete b[s];
794
+ delete L[s];
795
795
  }, n.detectFormat = function(s) {
796
- var o, m, g;
797
- return o = l(s, 0), o !== "" && (g = 10), m = s.charAt(g), (m === "T" || m === " ") && (o += m, g += 1), o += c(s, g), o;
796
+ var o, d, g;
797
+ return o = l(s, 0), o !== "" && (g = 10), d = s.charAt(g), (d === "T" || d === " ") && (o += d, g += 1), o += c(s, g), o;
798
798
  }, f = {
799
799
  TempusDate: k
800
800
  }, n.classes = function(s, o) {
801
- if (o === e)
801
+ if (o === t)
802
802
  return f[s];
803
803
  f[s] = o;
804
804
  }, n.loadTranslations = function(s) {
805
- typeof s == "object" ? h = s : typeof s == "string" && I(s, function(o) {
806
- h = o;
805
+ typeof s == "object" ? u = s : typeof s == "string" && I(s, function(o) {
806
+ u = o;
807
807
  }, function(o) {
808
808
  });
809
- }, A = (d.language || d.systemLanguage || d.userLanguage || "en").substr(0, 2).toLowerCase(), h[A] === e && (A = "en"), p = O(), R = T(), C = E(), N = S(), y.exports && (t = y.exports = n), t.tempus = n;
810
- }).call(pe);
811
- })(Xt, Xt.exports);
812
- var Oe = Xt.exports;
813
- const Nt = /* @__PURE__ */ Ne(Oe);
814
- var Tt, $t, Et, Rt, bt, Lt, at, Ot, St, te, It, ee, Q, it, $, lt, tt, ht, Mt, se, ut, Jt;
815
- const j = class j {
816
- constructor(t) {
809
+ }, A = (m.language || m.systemLanguage || m.userLanguage || "en").substr(0, 2).toLowerCase(), u[A] === t && (A = "en"), p = O(), b = T(), H = E(), N = M(), y.exports && (e = y.exports = n), e.tempus = n;
810
+ }).call(_e);
811
+ })(Jt, Jt.exports);
812
+ var Ee = Jt.exports;
813
+ const Ot = /* @__PURE__ */ Te(Ee);
814
+ var Et, ee, bt, Lt, Rt, Mt, ot, _t, It, se, St, re, Z, nt, tt, ht, et, ut, Dt, ie, ft, jt;
815
+ const J = class J {
816
+ constructor(e) {
817
817
  /**
818
818
  * Режим «прогресс по доле завершённых подкоманд» — только когда пачка похожа на
819
819
  * много параллельных list (crm.deal.list × N и т.п.). Иначе сохраняется старая
820
820
  * формула sum(count)/sum(total)×chunkRate (один длинный list, batchTotalCount, смешанные batch).
821
821
  * @returns {boolean}
822
822
  */
823
- L(this, Tt);
823
+ R(this, Et);
824
824
  /**
825
825
  * Одно обновление колбэка прогресса, если снимок изменился.
826
826
  * @returns {void}
827
827
  */
828
- L(this, at);
828
+ R(this, ot);
829
829
  /**
830
830
  * Проверяет, изменились ли метрики прогресса относительно предыдущей отправки.
831
831
  *
832
832
  * @param {{percent: number, allCount: number, allTotal: number}} snapshot - Текущий снимок прогресса.
833
833
  * @returns {boolean} `true`, если нужно отправить callback прогресса.
834
834
  */
835
- L(this, St);
835
+ R(this, It);
836
836
  /**
837
837
  * Уведомляет подписчиков о текущем состоянии лимита.
838
838
  *
839
839
  * @returns {void}
840
840
  */
841
- L(this, It);
841
+ R(this, St);
842
842
  /**
843
843
  * Включает состояние лимита, выдерживает паузу и затем выключает лимит.
844
844
  * Используется как единый "cooldown" перед повторной отправкой chunk.
@@ -846,7 +846,7 @@ const j = class j {
846
846
  * @param {number} [pauseMs=this.defaultPauseMs] - Длительность паузы; для batch по умолчанию 120 с, для `call()` — `callLimitPauseMs` (30 с).
847
847
  * @returns {Promise<void>}
848
848
  */
849
- L(this, Q);
849
+ R(this, Z);
850
850
  /**
851
851
  * Проверяет operating-time в результате batch и ставит паузу,
852
852
  * если сервер приблизился к лимиту выполнения.
@@ -854,7 +854,7 @@ const j = class j {
854
854
  * @param {Object} result - Результат текущего batch-запроса.
855
855
  * @returns {Promise<number>} Максимальный operating-time среди команд.
856
856
  */
857
- L(this, $);
857
+ R(this, tt);
858
858
  /**
859
859
  * Выполняет один chunk с автоматическим повтором после лимит-паузы.
860
860
  * Повтор запускается при ошибках QUERY_LIMIT_EXCEEDED, OPERATION_TIME_LIMIT или TIMEOUT.
@@ -863,7 +863,7 @@ const j = class j {
863
863
  * @param {(result: Object) => Promise<void>} processResult - Обработчик успешного результата chunk.
864
864
  * @returns {Promise<void>}
865
865
  */
866
- L(this, tt);
866
+ R(this, et);
867
867
  /**
868
868
  * Выполняет BX24.callMethod с таймаутом ожидания ответа.
869
869
  *
@@ -871,14 +871,14 @@ const j = class j {
871
871
  * @param {Object} params - Параметры REST-метода.
872
872
  * @returns {Promise<Object|null>} Raw-result BX24 или null при таймауте/ошибке вызова.
873
873
  */
874
- L(this, Mt);
874
+ R(this, Dt);
875
875
  /**
876
876
  * Resets mutable runtime state before each public batch run.
877
877
  * @param {Function} progressCall - Progress callback for current run.
878
878
  * @returns {void}
879
879
  */
880
- L(this, ut);
881
- typeof t == "function" ? (this.callBatch = t, this.callMethod = null) : (this.callBatch = (t == null ? void 0 : t.callBatch) || null, this.callMethod = (t == null ? void 0 : t.callMethod) || null), this.result = {}, this.errors = {}, this.timeLimit = {
880
+ R(this, ft);
881
+ typeof e == "function" ? (this.callBatch = e, this.callMethod = null) : (this.callBatch = (e == null ? void 0 : e.callBatch) || null, this.callMethod = (e == null ? void 0 : e.callMethod) || null), this.result = {}, this.errors = {}, this.timeLimit = {
882
882
  limit: !1,
883
883
  date: void 0,
884
884
  pauseMs: void 0
@@ -891,32 +891,32 @@ const j = class j {
891
891
  get progressPercent() {
892
892
  if (!this.progressData)
893
893
  return { percent: 0, allCount: 0, allTotal: 0 };
894
- const t = this.totalBatchCommands || 0;
895
- if (t > 0 && Array.isArray(this.batchCommandKeyOrder) && this.batchCommandKeyOrder.length && _(this, Tt, $t).call(this)) {
896
- let u = 0;
897
- for (const h of this.batchCommandKeyOrder) {
898
- const O = this.progressData[h];
894
+ const e = this.totalBatchCommands || 0;
895
+ if (e > 0 && Array.isArray(this.batchCommandKeyOrder) && this.batchCommandKeyOrder.length && _(this, Et, ee).call(this)) {
896
+ let h = 0;
897
+ for (const u of this.batchCommandKeyOrder) {
898
+ const O = this.progressData[u];
899
899
  if (!O)
900
900
  continue;
901
901
  const T = Number(O.total) || 0, E = Number(O.count) || 0;
902
- T === 0 && E === 0 ? u += 1 : T > 0 && (u += Math.min(1, E / T));
902
+ T === 0 && E === 0 ? h += 1 : T > 0 && (h += Math.min(1, E / T));
903
903
  }
904
- const n = u / t * 100;
904
+ const n = h / e * 100;
905
905
  let f = Math.max(0, Math.min(100, Math.floor(n)));
906
- const d = t, A = Math.min(t, Math.floor(u));
907
- return { percent: f, allCount: A, allTotal: d };
906
+ const m = e, A = Math.min(e, Math.floor(h));
907
+ return { percent: f, allCount: A, allTotal: m };
908
908
  }
909
- let e = 0, r = 0;
910
- for (const u of Object.values(this.progressData)) {
911
- const { total: n, count: f } = u;
912
- e += n ?? 0, r += f ?? 0;
909
+ let t = 0, r = 0;
910
+ for (const h of Object.values(this.progressData)) {
911
+ const { total: n, count: f } = h;
912
+ t += n ?? 0, r += f ?? 0;
913
913
  }
914
914
  const i = Number(this.chunkRate) || 0;
915
915
  let a = 0;
916
- e ? a = r / e * 100 * i + this.totalProgress : r === 0 && e === 0 ? a = i < 1 ? this.totalProgress : 100 * i + this.totalProgress : a = 100, a = Math.max(0, Math.min(a, 100));
916
+ t ? a = r / t * 100 * i + this.totalProgress : r === 0 && t === 0 ? a = i < 1 ? this.totalProgress : 100 * i + this.totalProgress : a = 100, a = Math.max(0, Math.min(a, 100));
917
917
  let c = Math.floor(a);
918
918
  const l = Number(this.chunkRate) || 0;
919
- return e > 0 && r >= e && l >= 1 && (c = 100), { percent: c, allCount: r, allTotal: e };
919
+ return t > 0 && r >= t && l >= 1 && (c = 100), { percent: c, allCount: r, allTotal: t };
920
920
  }
921
921
  /**
922
922
  * Обновление данных прогресса выполнения
@@ -925,14 +925,14 @@ const j = class j {
925
925
  * @param {Object} params.value - Значение ответа от API
926
926
  * @param {string} params.type - Тип обработки ('count' или undefined)
927
927
  */
928
- setProgressData({ key: t, value: e, type: r }) {
929
- var h, O;
928
+ setProgressData({ key: e, value: t, type: r }) {
929
+ var u, O;
930
930
  if (!this.progressCall)
931
931
  return;
932
- const i = this.getData(e.data()), a = Array.isArray(i) ? i.length : 0;
932
+ const i = this.getData(t.data()), a = Array.isArray(i) ? i.length : 0;
933
933
  let c = a;
934
- if (typeof e.total == "function") {
935
- const T = e.total();
934
+ if (typeof t.total == "function") {
935
+ const T = t.total();
936
936
  if (T != null && T !== "") {
937
937
  const E = Number(T);
938
938
  Number.isFinite(E) && (c = E);
@@ -940,20 +940,20 @@ const j = class j {
940
940
  }
941
941
  let l = 1;
942
942
  r === "count" ? (c || (c = a), l = c > 0 ? c : a > 0 ? a : 1) : i && (l = a), this.progressData || (this.progressData = {});
943
- const u = ((h = this.progressData[t]) == null ? void 0 : h.total) ?? 0, n = ((O = this.progressData[t]) == null ? void 0 : O.count) ?? 0, f = l + n, d = Math.max(u, c ?? 0, f);
944
- if (this.progressData[t] = {
945
- total: d,
946
- count: Math.min(f, d)
943
+ const h = ((u = this.progressData[e]) == null ? void 0 : u.total) ?? 0, n = ((O = this.progressData[e]) == null ? void 0 : O.count) ?? 0, f = l + n, m = Math.max(h, c ?? 0, f);
944
+ if (this.progressData[e] = {
945
+ total: m,
946
+ count: Math.min(f, m)
947
947
  }, typeof document < "u" && (document == null ? void 0 : document.hidden) === !0) {
948
- _(this, at, Ot).call(this);
948
+ _(this, ot, _t).call(this);
949
949
  return;
950
950
  }
951
- _(this, at, Ot).call(this), this.progressTimer || (this.progressTimer = setInterval(() => {
951
+ _(this, ot, _t).call(this), this.progressTimer || (this.progressTimer = setInterval(() => {
952
952
  if (!this.progressCall) {
953
953
  this.clearProgressData();
954
954
  return;
955
955
  }
956
- _(this, at, Ot).call(this);
956
+ _(this, ot, _t).call(this);
957
957
  const { percent: T } = this.progressPercent;
958
958
  T >= 100 && (clearInterval(this.progressTimer), this.progressTimer = "");
959
959
  }, this.progressDelay));
@@ -963,11 +963,11 @@ const j = class j {
963
963
  * @param {Object} data - Ответ от API
964
964
  * @returns {any} Данные из ответа
965
965
  */
966
- getData(t) {
967
- if (t == null)
968
- return t;
969
- let e = (t == null ? void 0 : t.items) ?? (t == null ? void 0 : t.tasks) ?? (t == null ? void 0 : t.types) ?? (t == null ? void 0 : t.type) ?? (t == null ? void 0 : t.fields) ?? (t == null ? void 0 : t.workgroups) ?? t;
970
- return e && typeof e == "object" && !Array.isArray(e) && Array.isArray(e.result) && (e = e.result), e;
966
+ getData(e) {
967
+ if (e == null)
968
+ return e;
969
+ let t = (e == null ? void 0 : e.items) ?? (e == null ? void 0 : e.tasks) ?? (e == null ? void 0 : e.types) ?? (e == null ? void 0 : e.type) ?? (e == null ? void 0 : e.fields) ?? (e == null ? void 0 : e.workgroups) ?? e;
970
+ return t && typeof t == "object" && !Array.isArray(t) && Array.isArray(t.result) && (t = t.result), t;
971
971
  }
972
972
  /**
973
973
  * Устанавливает состояние лимита и уведомляет подписчиков об изменении.
@@ -977,8 +977,8 @@ const j = class j {
977
977
  * @param {number|undefined} pauseMs - Длительность текущей лимит-паузы (мс); при снятии лимита не передаётся.
978
978
  * @returns {void}
979
979
  */
980
- setTimeLimitState(t, e, r) {
981
- this.timeLimit.limit = !!t, this.timeLimit.date = t ? e : void 0, t && typeof r == "number" && r > 0 ? this.timeLimit.pauseMs = r : this.timeLimit.pauseMs = void 0, _(this, It, ee).call(this);
980
+ setTimeLimitState(e, t, r) {
981
+ this.timeLimit.limit = !!e, this.timeLimit.date = e ? t : void 0, e && typeof r == "number" && r > 0 ? this.timeLimit.pauseMs = r : this.timeLimit.pauseMs = void 0, _(this, St, re).call(this);
982
982
  }
983
983
  /**
984
984
  * Подписывает внешний код на изменения состояния лимита.
@@ -987,14 +987,14 @@ const j = class j {
987
987
  * @param {(state: {limit: boolean, date?: string, pauseMs?: number}) => void} callback - Обработчик состояния лимита.
988
988
  * @returns {() => void} Функция отписки.
989
989
  */
990
- subscribeTimeLimit(t) {
991
- return typeof t != "function" ? () => {
992
- } : (this.timeLimitListeners.add(t), t({
990
+ subscribeTimeLimit(e) {
991
+ return typeof e != "function" ? () => {
992
+ } : (this.timeLimitListeners.add(e), e({
993
993
  limit: this.timeLimit.limit,
994
994
  date: this.timeLimit.date,
995
995
  pauseMs: this.timeLimit.pauseMs
996
996
  }), () => {
997
- this.timeLimitListeners.delete(t);
997
+ this.timeLimitListeners.delete(e);
998
998
  });
999
999
  }
1000
1000
  /**
@@ -1004,29 +1004,29 @@ const j = class j {
1004
1004
  * @param {Object} request - Объект запроса {method, params}
1005
1005
  * @returns {Array} Массив запросов (может быть один или несколько)
1006
1006
  */
1007
- splitLargeFilters(t, e) {
1008
- const { method: r, params: i } = e;
1007
+ splitLargeFilters(e, t) {
1008
+ const { method: r, params: i } = t;
1009
1009
  if (!i)
1010
- return [{ key: t, request: e }];
1010
+ return [{ key: e, request: t }];
1011
1011
  const a = i.filter || i.FILTER;
1012
1012
  if (!a || typeof a != "object" || Array.isArray(a))
1013
- return [{ key: t, request: e }];
1013
+ return [{ key: e, request: t }];
1014
1014
  for (const [c, l] of Object.entries(a))
1015
1015
  if (!String(c).trim().startsWith("!") && Array.isArray(l) && l.length > this.filterChunkSize) {
1016
- const u = [];
1016
+ const h = [];
1017
1017
  for (let n = 0; n < l.length; n += this.filterChunkSize) {
1018
- const f = l.slice(n, n + this.filterChunkSize), d = n === 0 ? t : `${t}__chunk_${Math.floor(n / this.filterChunkSize)}`, A = { ...i };
1019
- i.filter ? (A.filter = { ...a }, A.filter[c] = f) : i.FILTER && (A.FILTER = { ...a }, A.FILTER[c] = f), u.push({
1020
- key: d,
1018
+ const f = l.slice(n, n + this.filterChunkSize), m = n === 0 ? e : `${e}__chunk_${Math.floor(n / this.filterChunkSize)}`, A = { ...i };
1019
+ i.filter ? (A.filter = { ...a }, A.filter[c] = f) : i.FILTER && (A.FILTER = { ...a }, A.FILTER[c] = f), h.push({
1020
+ key: m,
1021
1021
  request: { method: r, params: A },
1022
- originalKey: t,
1022
+ originalKey: e,
1023
1023
  filterKey: c,
1024
1024
  chunkIndex: Math.floor(n / this.filterChunkSize)
1025
1025
  });
1026
1026
  }
1027
- return u;
1027
+ return h;
1028
1028
  }
1029
- return [{ key: t, request: e }];
1029
+ return [{ key: e, request: t }];
1030
1030
  }
1031
1031
  /**
1032
1032
  * Объединяет результаты разбитых запросов обратно в один результат
@@ -1034,14 +1034,14 @@ const j = class j {
1034
1034
  * @param {string} originalKey - Оригинальный ключ запроса
1035
1035
  * @returns {Array} Объединенный массив результатов
1036
1036
  */
1037
- mergeSplitResults(t, e) {
1038
- const r = [], i = String(e).replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), a = new RegExp(`^${i}(?:__chunk_\\d+)?$`), c = Object.keys(t).filter((l) => a.test(l)).sort((l, u) => {
1039
- const n = l.match(/__chunk_(\d+)$/), f = u.match(/__chunk_(\d+)$/);
1037
+ mergeSplitResults(e, t) {
1038
+ const r = [], i = String(t).replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), a = new RegExp(`^${i}(?:__chunk_\\d+)?$`), c = Object.keys(e).filter((l) => a.test(l)).sort((l, h) => {
1039
+ const n = l.match(/__chunk_(\d+)$/), f = h.match(/__chunk_(\d+)$/);
1040
1040
  return n ? f ? parseInt(n[1]) - parseInt(f[1]) : 1 : -1;
1041
1041
  });
1042
1042
  for (const l of c) {
1043
- const u = t[l];
1044
- Array.isArray(u) ? r.push(...u) : u && r.push(u);
1043
+ const h = e[l];
1044
+ Array.isArray(h) ? r.push(...h) : h && r.push(h);
1045
1045
  }
1046
1046
  return r;
1047
1047
  }
@@ -1050,7 +1050,7 @@ const j = class j {
1050
1050
  * @returns {Promise<void>}
1051
1051
  */
1052
1052
  delay() {
1053
- return typeof document < "u" && (document == null ? void 0 : document.hidden) === !0 ? Promise.resolve() : new Promise((e) => setTimeout(e, 500));
1053
+ return typeof document < "u" && (document == null ? void 0 : document.hidden) === !0 ? Promise.resolve() : new Promise((t) => setTimeout(t, 500));
1054
1054
  }
1055
1055
  /**
1056
1056
  * Обертка над callBatch с таймаутом для предотвращения зависаний
@@ -1060,25 +1060,25 @@ const j = class j {
1060
1060
  * @param {Function} callback - Callback функция для обработки результата
1061
1061
  * @returns {Promise<void>}
1062
1062
  */
1063
- callBatchWithTimeout(t, e) {
1063
+ callBatchWithTimeout(e, t) {
1064
1064
  return new Promise((r, i) => {
1065
1065
  let a = !1, c = null;
1066
1066
  const l = async (n) => {
1067
1067
  if (!a) {
1068
1068
  a = !0, c && clearTimeout(c);
1069
1069
  try {
1070
- await Promise.resolve(e(n)), r();
1070
+ await Promise.resolve(t(n)), r();
1071
1071
  } catch (f) {
1072
1072
  console.error("Error in callBatch callback:", f), i(f);
1073
1073
  }
1074
1074
  }
1075
- }, u = async () => {
1075
+ }, h = async () => {
1076
1076
  if (!a) {
1077
1077
  a = !0, c && clearTimeout(c), console.warn(
1078
1078
  `Batch request timeout after ${this.requestTimeoutMs}ms. This may indicate a CORS or network error.`
1079
1079
  );
1080
1080
  const n = {};
1081
- Object.keys(t).forEach((f) => {
1081
+ Object.keys(e).forEach((f) => {
1082
1082
  n[f] = {
1083
1083
  error: () => ({
1084
1084
  ex: {
@@ -1091,14 +1091,14 @@ const j = class j {
1091
1091
  };
1092
1092
  });
1093
1093
  try {
1094
- await Promise.resolve(e(n)), r();
1094
+ await Promise.resolve(t(n)), r();
1095
1095
  } catch (f) {
1096
1096
  console.error("Error in timeout callback:", f), r();
1097
1097
  }
1098
1098
  }
1099
1099
  };
1100
1100
  try {
1101
- this.callBatch(t, async (n) => {
1101
+ this.callBatch(e, async (n) => {
1102
1102
  await l(n);
1103
1103
  });
1104
1104
  } catch (n) {
@@ -1107,7 +1107,7 @@ const j = class j {
1107
1107
  c = setTimeout(async () => {
1108
1108
  a || (console.warn(
1109
1109
  `Batch request attempt timeout after ${this.requestTimeoutMs}ms. Switching to timeout fallback result.`
1110
- ), await u());
1110
+ ), await h());
1111
1111
  }, this.requestTimeoutMs);
1112
1112
  });
1113
1113
  }
@@ -1129,35 +1129,35 @@ const j = class j {
1129
1129
  * @param {{oneBatch?: boolean}} [options] - Опции выполнения.
1130
1130
  * @returns {Promise<Object>}
1131
1131
  */
1132
- async batch(t, e, r = {}) {
1133
- _(this, ut, Jt).call(this, e);
1132
+ async batch(e, t, r = {}) {
1133
+ _(this, ft, jt).call(this, t);
1134
1134
  const i = {}, a = {}, c = {};
1135
- for (const [f, d] of Object.entries(t)) {
1136
- const A = this.arrayChunk(d);
1135
+ for (const [f, m] of Object.entries(e)) {
1136
+ const A = this.arrayChunk(m);
1137
1137
  if (!A)
1138
1138
  continue;
1139
- const h = this.splitLargeFilters(f, A);
1140
- if (h.length === 1)
1139
+ const u = this.splitLargeFilters(f, A);
1140
+ if (u.length === 1)
1141
1141
  a[f] = A;
1142
1142
  else {
1143
1143
  c[f] = [];
1144
- for (const O of h)
1144
+ for (const O of u)
1145
1145
  a[O.key] = O.request, c[f].push(O.key);
1146
1146
  }
1147
1147
  }
1148
1148
  this.batchCommandKeyOrder = Object.keys(a), this.totalBatchCommands = this.batchCommandKeyOrder.length, this.batchCommandMethods = this.batchCommandKeyOrder.map(
1149
1149
  (f) => {
1150
- var d;
1151
- return String(((d = a[f]) == null ? void 0 : d.method) || "");
1150
+ var m;
1151
+ return String(((m = a[f]) == null ? void 0 : m.method) || "");
1152
1152
  }
1153
1153
  ), this.chunkRate = (1 / Math.ceil(Object.keys(a).length / this.limit)).toFixed(5);
1154
- let l = {}, u = 0;
1154
+ let l = {}, h = 0;
1155
1155
  const n = Object.keys(a).length;
1156
- for (const [f, d] of Object.entries(a)) {
1156
+ for (const [f, m] of Object.entries(a)) {
1157
1157
  if (!this.canContinue)
1158
1158
  break;
1159
- if (l[f] = d, Object.keys(l).length >= this.limit || u + 1 === n) {
1160
- const A = u + 1 === n;
1159
+ if (l[f] = m, Object.keys(l).length >= this.limit || h + 1 === n) {
1160
+ const A = h + 1 === n;
1161
1161
  await this.batchChunk(
1162
1162
  l,
1163
1163
  void 0,
@@ -1166,22 +1166,22 @@ const j = class j {
1166
1166
  disablePagination: !1,
1167
1167
  oneBatch: !!(r != null && r.oneBatch)
1168
1168
  }
1169
- ), Object.entries(this.result).forEach(([h, O]) => {
1170
- i[h] = O;
1169
+ ), Object.entries(this.result).forEach(([u, O]) => {
1170
+ i[u] = O;
1171
1171
  }), this.totalProgress = Math.round(
1172
- u / n * 100
1172
+ h / n * 100
1173
1173
  ), l = {};
1174
1174
  }
1175
- u++;
1175
+ h++;
1176
1176
  }
1177
- for (const [f, d] of Object.entries(c))
1178
- if (d && d.length > 0) {
1177
+ for (const [f, m] of Object.entries(c))
1178
+ if (m && m.length > 0) {
1179
1179
  const A = this.mergeSplitResults(i, f);
1180
- for (const h of d)
1181
- delete i[h];
1180
+ for (const u of m)
1181
+ delete i[u];
1182
1182
  i[f] = A;
1183
1183
  }
1184
- return Object.entries(this.errors).length && (i.errorsList = this.errors), e && e({ percent: 100 }), Promise.resolve(i);
1184
+ return Object.entries(this.errors).length && (i.errorsList = this.errors), t && t({ percent: 100 }), Promise.resolve(i);
1185
1185
  }
1186
1186
  /**
1187
1187
  * Выполняет батч-запрос и возвращает только количество элементов для каждой команды.
@@ -1192,62 +1192,62 @@ const j = class j {
1192
1192
  * @param {Function} progressCall - Callback для отслеживания прогресса
1193
1193
  * @returns {Promise<Object>} Объект с количеством элементов для каждого ключа
1194
1194
  */
1195
- async batchTotalCount(t, e) {
1196
- _(this, ut, Jt).call(this, e);
1195
+ async batchTotalCount(e, t) {
1196
+ _(this, ft, jt).call(this, t);
1197
1197
  const r = {}, i = {}, a = {};
1198
- for (const [u, n] of Object.entries(t)) {
1198
+ for (const [h, n] of Object.entries(e)) {
1199
1199
  const f = this.arrayChunk(n);
1200
1200
  if (!f)
1201
1201
  continue;
1202
- const d = this.splitLargeFilters(u, f);
1203
- if (d.length === 1)
1204
- i[u] = f;
1202
+ const m = this.splitLargeFilters(h, f);
1203
+ if (m.length === 1)
1204
+ i[h] = f;
1205
1205
  else {
1206
- a[u] = [];
1207
- for (const A of d)
1208
- i[A.key] = A.request, a[u].push(A.key);
1206
+ a[h] = [];
1207
+ for (const A of m)
1208
+ i[A.key] = A.request, a[h].push(A.key);
1209
1209
  }
1210
1210
  }
1211
1211
  const c = [], l = Object.entries(i);
1212
- for (let u = 0; u < l.length; u += this.limit) {
1213
- const n = l.slice(u, u + this.limit), f = {};
1214
- for (const [d, A] of n) {
1212
+ for (let h = 0; h < l.length; h += this.limit) {
1213
+ const n = l.slice(h, h + this.limit), f = {};
1214
+ for (const [m, A] of n) {
1215
1215
  if (!this.canContinue)
1216
1216
  break;
1217
- f[d] = A;
1217
+ f[m] = A;
1218
1218
  }
1219
1219
  Object.keys(f).length > 0 && c.push(f);
1220
1220
  }
1221
1221
  this.chunkRate = (1 / c.length).toFixed(5);
1222
- for (const [u, n] of Object.entries(c)) {
1222
+ for (const [h, n] of Object.entries(c)) {
1223
1223
  if (!this.canContinue)
1224
1224
  break;
1225
- this.totalProgress = Math.round(Number(u) / c.length * 100), this.progressData = {}, this.lastProgressSnapshot = null;
1226
- const f = Number(u) === c.length - 1;
1227
- await _(this, tt, ht).call(this, n, async (d) => {
1228
- var A, h, O, T, E;
1229
- for (const [S, p] of Object.entries(d)) {
1225
+ this.totalProgress = Math.round(Number(h) / c.length * 100), this.progressData = {}, this.lastProgressSnapshot = null;
1226
+ const f = Number(h) === c.length - 1;
1227
+ await _(this, et, ut).call(this, n, async (m) => {
1228
+ var A, u, O, T, E;
1229
+ for (const [M, p] of Object.entries(m)) {
1230
1230
  if (!this.canContinue)
1231
1231
  return;
1232
1232
  if (p.error()) {
1233
- const b = (h = (A = p.error()) == null ? void 0 : A.ex) == null ? void 0 : h.error, w = (T = (O = p.error()) == null ? void 0 : O.ex) == null ? void 0 : T.error_description;
1234
- this.errors[S] = b && b.trim() || w && w.trim() || ((E = p.error()) == null ? void 0 : E.toString()) || "Неизвестная ошибка", r[S] = 0;
1233
+ const L = (u = (A = p.error()) == null ? void 0 : A.ex) == null ? void 0 : u.error, w = (T = (O = p.error()) == null ? void 0 : O.ex) == null ? void 0 : T.error_description;
1234
+ this.errors[M] = L && L.trim() || w && w.trim() || ((E = p.error()) == null ? void 0 : E.toString()) || "Неизвестная ошибка", r[M] = 0;
1235
1235
  continue;
1236
1236
  }
1237
- const R = this.getData(p.data()), C = Array.isArray(R) ? R.length : 0, I = typeof p.total == "function" && p.total() !== void 0 ? p.total() : C;
1238
- r[S] = I, this.setProgressData({ key: S, value: p, type: "count" });
1237
+ const b = this.getData(p.data()), H = Array.isArray(b) ? b.length : 0, I = typeof p.total == "function" && p.total() !== void 0 ? p.total() : H;
1238
+ r[M] = I, this.setProgressData({ key: M, value: p, type: "count" });
1239
1239
  }
1240
- await _(this, $, lt).call(this, d, !f);
1240
+ await _(this, tt, ht).call(this, m, !f);
1241
1241
  });
1242
1242
  }
1243
- for (const [u, n] of Object.entries(a))
1243
+ for (const [h, n] of Object.entries(a))
1244
1244
  if (n && n.length > 0) {
1245
1245
  let f = 0;
1246
- for (const d of n)
1247
- r[d] !== void 0 && (f += r[d] || 0), delete r[d];
1248
- r[u] = f;
1246
+ for (const m of n)
1247
+ r[m] !== void 0 && (f += r[m] || 0), delete r[m];
1248
+ r[h] = f;
1249
1249
  }
1250
- return Object.entries(this.errors).length && (r.errorsList = this.errors, this.errorLogger()), e && e({ percent: 100 }), Promise.resolve(r);
1250
+ return Object.entries(this.errors).length && (r.errorsList = this.errors, this.errorLogger()), t && t({ percent: 100 }), Promise.resolve(r);
1251
1251
  }
1252
1252
  /**
1253
1253
  * Выполняет одиночный REST-вызов с таймаутом и авто-повтором после лимит-паузы.
@@ -1256,29 +1256,29 @@ const j = class j {
1256
1256
  * @param {{method: string, params?: Object}} request - Описание REST-вызова.
1257
1257
  * @returns {Promise<{success: boolean, data: any, answer: Object, error: string|null}>}
1258
1258
  */
1259
- async call({ method: t, params: e = {} }) {
1260
- var r, i, a, c, l, u, n;
1259
+ async call({ method: e, params: t = {} }) {
1260
+ var r, i, a, c, l, h, n;
1261
1261
  for (; ; ) {
1262
- const f = await _(this, Mt, se).call(this, t, e);
1262
+ const f = await _(this, Dt, ie).call(this, e, t);
1263
1263
  if (!f) {
1264
- await _(this, Q, it).call(this, this.callLimitPauseMs);
1264
+ await _(this, Z, nt).call(this, this.callLimitPauseMs);
1265
1265
  continue;
1266
1266
  }
1267
- const d = {};
1267
+ const m = {};
1268
1268
  if (f != null && f.answer)
1269
- for (const [h, O] of Object.entries(f.answer))
1270
- h !== "result" && O && (d[h] = O);
1269
+ for (const [u, O] of Object.entries(f.answer))
1270
+ u !== "result" && O && (m[u] = O);
1271
1271
  if (f.error()) {
1272
- const h = ((i = (r = f.error()) == null ? void 0 : r.ex) == null ? void 0 : i.error) ?? "";
1273
- if (["QUERY_LIMIT_EXCEEDED", "OPERATION_TIME_LIMIT", "TIMEOUT"].includes(h)) {
1274
- await _(this, Q, it).call(this, this.callLimitPauseMs);
1272
+ const u = ((i = (r = f.error()) == null ? void 0 : r.ex) == null ? void 0 : i.error) ?? "";
1273
+ if (["QUERY_LIMIT_EXCEEDED", "OPERATION_TIME_LIMIT", "TIMEOUT"].includes(u)) {
1274
+ await _(this, Z, nt).call(this, this.callLimitPauseMs);
1275
1275
  continue;
1276
1276
  }
1277
- const O = ((a = f.error()) == null ? void 0 : a.toString()) || ((l = (c = f.error()) == null ? void 0 : c.ex) == null ? void 0 : l.error_description) || ((n = (u = f.error()) == null ? void 0 : u.ex) == null ? void 0 : n.error) || "Неизвестная ошибка";
1277
+ const O = ((a = f.error()) == null ? void 0 : a.toString()) || ((l = (c = f.error()) == null ? void 0 : c.ex) == null ? void 0 : l.error_description) || ((n = (h = f.error()) == null ? void 0 : h.ex) == null ? void 0 : n.error) || "Неизвестная ошибка";
1278
1278
  return {
1279
1279
  success: !1,
1280
1280
  data: !1,
1281
- answer: d,
1281
+ answer: m,
1282
1282
  error: O
1283
1283
  };
1284
1284
  }
@@ -1286,7 +1286,7 @@ const j = class j {
1286
1286
  return A != null && A.items && (A = A.items), {
1287
1287
  success: !0,
1288
1288
  data: A,
1289
- answer: d,
1289
+ answer: m,
1290
1290
  error: null
1291
1291
  };
1292
1292
  }
@@ -1296,23 +1296,23 @@ const j = class j {
1296
1296
  * Так же переделываем некоторые запросы в нужный вид (Для task-методов)
1297
1297
  * @param {Array/Object} request - Массив/объект методов
1298
1298
  */
1299
- arrayChunk(t) {
1300
- let e = "", r = {};
1301
- if (Array.isArray(t) ? [e] = t : (e = t.method, r = t.params), (e.includes("list") || e === "user.get" || e === "entity.item.get") && e !== "task.item.list") {
1299
+ arrayChunk(e) {
1300
+ let t = "", r = {};
1301
+ if (Array.isArray(e) ? [t] = e : (t = e.method, r = e.params), (t.includes("list") || t === "user.get" || t === "entity.item.get") && t !== "task.item.list") {
1302
1302
  if (!r)
1303
- r = e === "entity.item.get" ? { SORT: { ID: "ASC" } } : {
1303
+ r = t === "entity.item.get" ? { SORT: { ID: "ASC" } } : {
1304
1304
  order: { ID: "ASC", id: "ASC" }
1305
1305
  };
1306
1306
  else {
1307
- e === "entity.item.get" ? (r.SORT || (r.SORT = { ID: "ASC" }), Array.isArray(r.select) ? r.select.includes("ID") || r.select.push("ID") : r.select = ["ID"]) : e === "tasks.task.list" ? (r.order || (r.order = {}), r.order.ID = "asc") : e === "user.get" ? (r.sort || (r.sort = "ID"), r.order || (r.order = "ASC")) : r.order = { ID: "ASC", id: "ASC" }, Array.isArray(r.select) && !r.select.includes("ID") && r.select.push("ID");
1308
- const i = e === "user.get" || e === "entity.item.get" ? r.FILTER : r.filter;
1307
+ t === "entity.item.get" ? (r.SORT || (r.SORT = { ID: "ASC" }), Array.isArray(r.select) ? r.select.includes("ID") || r.select.push("ID") : r.select = ["ID"]) : t === "tasks.task.list" ? (r.order || (r.order = {}), r.order.ID = "asc") : t === "user.get" ? (r.sort || (r.sort = "ID"), r.order || (r.order = "ASC")) : r.order = { ID: "ASC", id: "ASC" }, Array.isArray(r.select) && !r.select.includes("ID") && r.select.push("ID");
1308
+ const i = t === "user.get" || t === "entity.item.get" ? r.FILTER : r.filter;
1309
1309
  typeof i == "object" && i !== null && !Array.isArray(i) && Object.entries(i).forEach(([a, c]) => {
1310
1310
  (r.start === void 0 || r.start !== -1) && ["id", "ID"].includes(a) && (typeof c == "string" || Array.isArray(c) && c.length <= 50) && (r.start = -1);
1311
1311
  });
1312
1312
  }
1313
- e === "crm.type.list" && r.order && delete r.order.ID;
1313
+ t === "crm.type.list" && r.order && delete r.order.ID;
1314
1314
  }
1315
- if (e === "task.item.list")
1315
+ if (t === "task.item.list")
1316
1316
  if (!r)
1317
1317
  r = [{ ID: "ASC" }, [""], [""], ["ID"]];
1318
1318
  else {
@@ -1320,7 +1320,7 @@ const j = class j {
1320
1320
  const [i, a, c, l] = r;
1321
1321
  i.ID = "ASC", l[0] !== "" && l.includes("ID") || l.push("ID");
1322
1322
  }
1323
- return { method: e, params: r };
1323
+ return { method: t, params: r };
1324
1324
  }
1325
1325
  /** Выполняет первичный запрос с массивом методов
1326
1326
  * При наличии более 50 элементов в нем, подготоваливаем данные и передаем в this.batchPayload
@@ -1328,35 +1328,35 @@ const j = class j {
1328
1328
  * @param {Array} query - Тот же массив с методами
1329
1329
  * @returns {Object} Объект с результатами запросов
1330
1330
  */
1331
- async batchChunk(t, e, r = !0, i = {}) {
1331
+ async batchChunk(e, t, r = !0, i = {}) {
1332
1332
  return new Promise((a) => {
1333
1333
  const c = [];
1334
1334
  let l;
1335
- const u = !!(i != null && i.disablePagination);
1335
+ const h = !!(i != null && i.disablePagination);
1336
1336
  (async () => {
1337
- await _(this, tt, ht).call(this, t, async (f) => {
1338
- var A, h, O, T, E;
1339
- for (const [S, p] of Object.entries(f)) {
1337
+ await _(this, et, ut).call(this, e, async (f) => {
1338
+ var A, u, O, T, E;
1339
+ for (const [M, p] of Object.entries(f)) {
1340
1340
  if (!this.canContinue)
1341
1341
  return;
1342
1342
  if (p.error()) {
1343
- const g = (h = (A = p.error()) == null ? void 0 : A.ex) == null ? void 0 : h.error, B = (T = (O = p.error()) == null ? void 0 : O.ex) == null ? void 0 : T.error_description;
1344
- this.errors[S] = g && g.trim() || B && B.trim() || ((E = p.error()) == null ? void 0 : E.toString()) || "Неизвестная ошибка", l = !0;
1343
+ const g = (u = (A = p.error()) == null ? void 0 : A.ex) == null ? void 0 : u.error, C = (T = (O = p.error()) == null ? void 0 : O.ex) == null ? void 0 : T.error_description;
1344
+ this.errors[M] = g && g.trim() || C && C.trim() || ((E = p.error()) == null ? void 0 : E.toString()) || "Неизвестная ошибка", l = !0;
1345
1345
  }
1346
- const R = this.getData(p.data()), C = Array.isArray(R) ? R.length : 0, N = typeof p.total == "function" && p.total() !== void 0, I = N ? p.total() : C;
1347
- e === "count" ? this.result[S] ? this.result[S] += C : this.result[S] = I : this.result[S] = R, this.setProgressData({ key: S, value: p, type: e });
1348
- const b = t[S], w = Array.isArray(b) ? b[0] : b == null ? void 0 : b.method, k = typeof w == "string" && (w.includes(".list") || w === "user.get" || w === "entity.item.get"), s = e === "count" ? !N && C === this.limit : k ? C === this.limit : I > this.limit && I > C, o = e !== "count" && w === "entity.item.get" && C === this.limit && !s, m = s || o;
1349
- if (!u && (!this.canContinue || m)) {
1350
- let g = t[S];
1346
+ const b = this.getData(p.data()), H = Array.isArray(b) ? b.length : 0, N = typeof p.total == "function" && p.total() !== void 0, I = N ? p.total() : H;
1347
+ t === "count" ? this.result[M] ? this.result[M] += H : this.result[M] = I : this.result[M] = b, this.setProgressData({ key: M, value: p, type: t });
1348
+ const L = e[M], w = Array.isArray(L) ? L[0] : L == null ? void 0 : L.method, k = typeof w == "string" && (w.includes(".list") || w === "user.get" || w === "entity.item.get"), s = t === "count" ? !N && H === this.limit : k ? H === this.limit : I > this.limit && I > H, o = t !== "count" && w === "entity.item.get" && H === this.limit && !s, d = s || o;
1349
+ if (!h && (!this.canContinue || d)) {
1350
+ let g = e[M];
1351
1351
  if (Array.isArray(g)) {
1352
- const [B, D = {}] = g;
1353
- g = [B, D];
1352
+ const [C, D = {}] = g;
1353
+ g = [C, D];
1354
1354
  } else {
1355
- const { method: B, params: D = {} } = g;
1356
- g = [B, D];
1355
+ const { method: C, params: D = {} } = g;
1356
+ g = [C, D];
1357
1357
  }
1358
1358
  c.push([
1359
- S,
1359
+ M,
1360
1360
  g,
1361
1361
  I,
1362
1362
  { entityItemGetScan: o }
@@ -1364,8 +1364,8 @@ const j = class j {
1364
1364
  }
1365
1365
  }
1366
1366
  l > 0 && this.errorLogger();
1367
- const d = c.length > 0 || r;
1368
- await _(this, $, lt).call(this, f, d), c.length ? await this.batchPayload(c, e, i).then(
1367
+ const m = c.length > 0 || r;
1368
+ await _(this, tt, ht).call(this, f, m), c.length ? await this.batchPayload(c, t, i).then(
1369
1369
  () => a(this.result)
1370
1370
  ) : a(this.result);
1371
1371
  });
@@ -1377,68 +1377,68 @@ const j = class j {
1377
1377
  * @param {String} type - Тип обработки результатов ('count' или undefined)
1378
1378
  * @param {{oneBatch?: boolean}} [options] - Опции выполнения payload.
1379
1379
  */
1380
- async batchPayload(t, e, r = {}) {
1381
- const i = !!(r != null && r.oneBatch), a = (O, T, E, S) => {
1380
+ async batchPayload(e, t, r = {}) {
1381
+ const i = !!(r != null && r.oneBatch), a = (O, T, E, M) => {
1382
1382
  let p = "ID";
1383
1383
  this.result[O][this.result[O].length - 1].ID || (p = "id");
1384
- let R = `${p}`;
1385
- if (JSON.stringify(S[1]).toLocaleLowerCase().includes('"id":"desc"') ? R = "<" + R : R = ">" + R, T === 1 || E.length === 0)
1384
+ let b = `${p}`;
1385
+ if (JSON.stringify(M[1]).toLocaleLowerCase().includes('"id":"desc"') ? b = "<" + b : b = ">" + b, T === 1 || E.length === 0)
1386
1386
  return {
1387
- field: R,
1387
+ field: b,
1388
1388
  id: this.result[O][this.result[O].length - 1][p]
1389
1389
  };
1390
1390
  let N = "";
1391
- const [I, b] = S;
1391
+ const [I, L] = M;
1392
1392
  return (I === "tasks.task.list" || I === "task.item.list") && (N = "[tasks]"), ["crm.item.list", "crm.stagehistory.list"].includes(I) && (N = "[items]"), I === "crm.type.list" && (N = "[types]"), I === "socialnetwork.api.workgroup.list" && (N = "[workgroups]"), {
1393
- field: R,
1393
+ field: b,
1394
1394
  id: `$result[${[O, T - 1].join("__")}]${N}[49][${p}]`
1395
1395
  };
1396
1396
  }, c = (O, T) => {
1397
- const [E, S] = O;
1398
- let p = JSON.parse(JSON.stringify(S)), R;
1397
+ const [E, M] = O;
1398
+ let p = JSON.parse(JSON.stringify(M)), b;
1399
1399
  if (E === "task.item.list") {
1400
1400
  p = [...p];
1401
- const [C, N, I, b] = p;
1401
+ const [H, N, I, L] = p;
1402
1402
  return N[T.field] = T.id, [E, p];
1403
1403
  }
1404
- return ["user.get"].includes(E) || p.FILTER ? (p.FILTER || (p.FILTER = {}), R = p.FILTER) : (p.filter || (p.filter = {}), R = p.filter), [
1404
+ return ["user.get"].includes(E) || p.FILTER ? (p.FILTER || (p.FILTER = {}), b = p.FILTER) : (p.filter || (p.filter = {}), b = p.filter), [
1405
1405
  "socialnetwork.api.workgroup.list",
1406
1406
  "tasks.task.list"
1407
- ].includes(E) ? R[">ID"] = T.id : R[T.field] = T.id, [E, { ...p, start: -1 }];
1407
+ ].includes(E) ? b[">ID"] = T.id : b[T.field] = T.id, [E, { ...p, start: -1 }];
1408
1408
  }, l = (O) => {
1409
1409
  Object.entries(O).forEach(([T, E]) => {
1410
- var R, C, N, I, b;
1411
- const [S] = T.split("__"), p = this.getData(E.data());
1412
- if (Array.isArray(p) && (e === "count" ? this.result[S] += p.length : this.result[S].push(...p)), E.error()) {
1413
- const w = (C = (R = E.error()) == null ? void 0 : R.ex) == null ? void 0 : C.error, k = (I = (N = E.error()) == null ? void 0 : N.ex) == null ? void 0 : I.error_description;
1414
- this.errors[S] = w && w.trim() || k && k.trim() || ((b = E.error()) == null ? void 0 : b.toString()) || "Неизвестная ошибка";
1410
+ var b, H, N, I, L;
1411
+ const [M] = T.split("__"), p = this.getData(E.data());
1412
+ if (Array.isArray(p) && (t === "count" ? this.result[M] += p.length : this.result[M].push(...p)), E.error()) {
1413
+ const w = (H = (b = E.error()) == null ? void 0 : b.ex) == null ? void 0 : H.error, k = (I = (N = E.error()) == null ? void 0 : N.ex) == null ? void 0 : I.error_description;
1414
+ this.errors[M] = w && w.trim() || k && k.trim() || ((L = E.error()) == null ? void 0 : L.toString()) || "Неизвестная ошибка";
1415
1415
  }
1416
- this.setProgressData({ key: S, value: E, type: e });
1416
+ this.setProgressData({ key: M, value: E, type: t });
1417
1417
  });
1418
- }, u = (O, T) => {
1418
+ }, h = (O, T) => {
1419
1419
  if (!Array.isArray(O) || O.length === 0)
1420
1420
  return null;
1421
1421
  const E = O[O.length - 1];
1422
- let S = "ID";
1423
- E.ID || (S = "id");
1424
- let p = S;
1425
- return JSON.stringify(T[1]).toLocaleLowerCase().includes('"id":"desc"') ? p = "<" + p : p = ">" + p, { field: p, id: E[S] };
1422
+ let M = "ID";
1423
+ E.ID || (M = "id");
1424
+ let p = M;
1425
+ return JSON.stringify(T[1]).toLocaleLowerCase().includes('"id":"desc"') ? p = "<" + p : p = ">" + p, { field: p, id: E[M] };
1426
1426
  }, n = 1e4, f = async (O, T) => {
1427
- var S, p;
1427
+ var M, p;
1428
1428
  let E = this.limit;
1429
- for (let R = 1; this.canContinue && E === this.limit && R <= n; R++) {
1430
- const C = this.result[O], N = u(C, T);
1429
+ for (let b = 1; this.canContinue && E === this.limit && b <= n; b++) {
1430
+ const H = this.result[O], N = h(H, T);
1431
1431
  if (!N)
1432
1432
  break;
1433
- const I = `${O}__eiscan_${R}`, b = c(T, N);
1433
+ const I = `${O}__eiscan_${b}`, L = c(T, N);
1434
1434
  let w = null;
1435
- await _(this, tt, ht).call(this, { [I]: b }, async (m) => {
1436
- w = m, l(m);
1435
+ await _(this, et, ut).call(this, { [I]: L }, async (d) => {
1436
+ w = d, l(d);
1437
1437
  });
1438
- const k = R < n;
1439
- await _(this, $, lt).call(this, w, k), await this.delay();
1438
+ const k = b < n;
1439
+ await _(this, tt, ht).call(this, w, k), await this.delay();
1440
1440
  const s = w == null ? void 0 : w[I];
1441
- if ((S = s == null ? void 0 : s.error) != null && S.call(s)) {
1441
+ if ((M = s == null ? void 0 : s.error) != null && M.call(s)) {
1442
1442
  E = 0;
1443
1443
  break;
1444
1444
  }
@@ -1446,84 +1446,84 @@ const j = class j {
1446
1446
  E = Array.isArray(o) ? o.length : 0;
1447
1447
  }
1448
1448
  };
1449
- let d = [], A = 0;
1450
- const h = async (O = !0) => d.length ? (await _(this, tt, ht).call(this, Object.fromEntries(d), async (T) => {
1451
- l(T), await _(this, $, lt).call(this, T, O);
1452
- }), A++, d = [], i && A >= 1 ? !0 : (await this.delay(), !1)) : !1;
1453
- for await (const O of t) {
1449
+ let m = [], A = 0;
1450
+ const u = async (O = !0) => m.length ? (await _(this, et, ut).call(this, Object.fromEntries(m), async (T) => {
1451
+ l(T), await _(this, tt, ht).call(this, T, O);
1452
+ }), A++, m = [], i && A >= 1 ? !0 : (await this.delay(), !1)) : !1;
1453
+ for await (const O of e) {
1454
1454
  if (!this.canContinue)
1455
1455
  return;
1456
- const [T, E, S, p = {}] = O;
1456
+ const [T, E, M, p = {}] = O;
1457
1457
  if (p.entityItemGetScan) {
1458
- if (await h(!0))
1458
+ if (await u(!0))
1459
1459
  return;
1460
1460
  if (i)
1461
1461
  continue;
1462
1462
  await f(T, E);
1463
1463
  continue;
1464
1464
  }
1465
- let R = 1;
1466
- for (; S > R * this.limit; ) {
1467
- const C = [T, R].join("__"), N = a(T, R, d, E);
1468
- if (d.push([C, c(E, N)]), i && d.length === 49 && await h(!0) || d.length % 50 === 0 && await h(!0))
1465
+ let b = 1;
1466
+ for (; M > b * this.limit; ) {
1467
+ const H = [T, b].join("__"), N = a(T, b, m, E);
1468
+ if (m.push([H, c(E, N)]), i && m.length === 49 && await u(!0) || m.length % 50 === 0 && await u(!0))
1469
1469
  return;
1470
- R++;
1470
+ b++;
1471
1471
  }
1472
1472
  }
1473
- await h(!1);
1473
+ await u(!1);
1474
1474
  }
1475
1475
  /**
1476
1476
  * Вывод ошибок в консоль в группированном виде
1477
1477
  */
1478
1478
  errorLogger() {
1479
- console.group(`${this.constructor.name}: Ошибки в методах!`), Object.entries(this.errors).forEach(([t, e]) => {
1480
- e && console.log(`[${t}]`, e.toString());
1479
+ console.group(`${this.constructor.name}: Ошибки в методах!`), Object.entries(this.errors).forEach(([e, t]) => {
1480
+ t && console.log(`[${e}]`, t.toString());
1481
1481
  }), console.groupEnd();
1482
1482
  }
1483
1483
  };
1484
- Tt = new WeakSet(), $t = function() {
1485
- const t = this.totalBatchCommands || 0, e = this.batchCommandMethods;
1486
- if (t < M(j, Et) || !Array.isArray(e) || e.length !== t)
1484
+ Et = new WeakSet(), ee = function() {
1485
+ const e = this.totalBatchCommands || 0, t = this.batchCommandMethods;
1486
+ if (e < S(J, bt) || !Array.isArray(t) || t.length !== e)
1487
1487
  return !1;
1488
- if (e.filter((a) => a === "crm.deal.list").length >= M(j, Rt))
1488
+ if (t.filter((a) => a === "crm.deal.list").length >= S(J, Lt))
1489
1489
  return !0;
1490
- const i = e.filter(
1490
+ const i = t.filter(
1491
1491
  (a) => typeof a == "string" && a.includes(".list")
1492
1492
  ).length;
1493
- return i >= M(j, bt) && i / t >= M(j, Lt);
1494
- }, Et = new WeakMap(), Rt = new WeakMap(), bt = new WeakMap(), Lt = new WeakMap(), at = new WeakSet(), Ot = function() {
1493
+ return i >= S(J, Rt) && i / e >= S(J, Mt);
1494
+ }, bt = new WeakMap(), Lt = new WeakMap(), Rt = new WeakMap(), Mt = new WeakMap(), ot = new WeakSet(), _t = function() {
1495
1495
  if (!this.progressCall || !this.progressData)
1496
1496
  return;
1497
- const { percent: t, allCount: e, allTotal: r } = this.progressPercent, i = { percent: t, allCount: e, allTotal: r };
1498
- _(this, St, te).call(this, i) && (this.progressCall({
1497
+ const { percent: e, allCount: t, allTotal: r } = this.progressPercent, i = { percent: e, allCount: t, allTotal: r };
1498
+ _(this, It, se).call(this, i) && (this.progressCall({
1499
1499
  data: this.progressData,
1500
- percent: t,
1501
- allCount: e,
1500
+ percent: e,
1501
+ allCount: t,
1502
1502
  allTotal: r
1503
1503
  }), this.lastProgressSnapshot = i);
1504
- }, St = new WeakSet(), te = function(t) {
1505
- return this.lastProgressSnapshot ? this.lastProgressSnapshot.percent !== t.percent || this.lastProgressSnapshot.allCount !== t.allCount || this.lastProgressSnapshot.allTotal !== t.allTotal : !0;
1506
- }, It = new WeakSet(), ee = function() {
1507
- const t = {
1504
+ }, It = new WeakSet(), se = function(e) {
1505
+ return this.lastProgressSnapshot ? this.lastProgressSnapshot.percent !== e.percent || this.lastProgressSnapshot.allCount !== e.allCount || this.lastProgressSnapshot.allTotal !== e.allTotal : !0;
1506
+ }, St = new WeakSet(), re = function() {
1507
+ const e = {
1508
1508
  limit: this.timeLimit.limit,
1509
1509
  date: this.timeLimit.date,
1510
1510
  pauseMs: this.timeLimit.pauseMs
1511
1511
  };
1512
- for (const e of this.timeLimitListeners)
1512
+ for (const t of this.timeLimitListeners)
1513
1513
  try {
1514
- e(t);
1514
+ t(e);
1515
1515
  } catch (r) {
1516
1516
  console.warn("Batch timeLimit listener error:", r);
1517
1517
  }
1518
- }, Q = new WeakSet(), it = async function(t = this.defaultPauseMs) {
1519
- this.setTimeLimitState(!0, (/* @__PURE__ */ new Date()).toISOString(), t), await new Promise((e) => setTimeout(e, t)), this.setTimeLimitState(!1, void 0);
1520
- }, $ = new WeakSet(), lt = async function(t, e = !0) {
1521
- if (!e)
1518
+ }, Z = new WeakSet(), nt = async function(e = this.defaultPauseMs) {
1519
+ this.setTimeLimitState(!0, (/* @__PURE__ */ new Date()).toISOString(), e), await new Promise((t) => setTimeout(t, e)), this.setTimeLimitState(!1, void 0);
1520
+ }, tt = new WeakSet(), ht = async function(e, t = !0) {
1521
+ if (!t)
1522
1522
  return 0;
1523
1523
  let r = 0;
1524
- if (!t || typeof t != "object")
1524
+ if (!e || typeof e != "object")
1525
1525
  return 0;
1526
- for (const i of Object.values(t))
1526
+ for (const i of Object.values(e))
1527
1527
  if (!(!i || typeof i != "object"))
1528
1528
  try {
1529
1529
  if (typeof i.time == "function") {
@@ -1532,18 +1532,18 @@ Tt = new WeakSet(), $t = function() {
1532
1532
  }
1533
1533
  } catch {
1534
1534
  }
1535
- r >= this.operatingThreshold && await _(this, Q, it).call(this);
1536
- }, tt = new WeakSet(), ht = async function(t, e) {
1537
- let r = !1, i = t;
1535
+ r >= this.operatingThreshold && await _(this, Z, nt).call(this);
1536
+ }, et = new WeakSet(), ut = async function(e, t) {
1537
+ let r = !1, i = e;
1538
1538
  do
1539
1539
  r = !1, await this.callBatchWithTimeout(i, async (a) => {
1540
- var u, n;
1540
+ var h, n;
1541
1541
  let c = !1;
1542
1542
  const l = /* @__PURE__ */ new Set();
1543
- for (const [f, d] of Object.entries(a || {})) {
1544
- if (!(d != null && d.error) || !d.error())
1543
+ for (const [f, m] of Object.entries(a || {})) {
1544
+ if (!(m != null && m.error) || !m.error())
1545
1545
  continue;
1546
- const A = ((n = (u = d.error()) == null ? void 0 : u.ex) == null ? void 0 : n.error) ?? "";
1546
+ const A = ((n = (h = m.error()) == null ? void 0 : h.ex) == null ? void 0 : n.error) ?? "";
1547
1547
  if (A === "TIMEOUT") {
1548
1548
  c = !0;
1549
1549
  break;
@@ -1551,24 +1551,24 @@ Tt = new WeakSet(), $t = function() {
1551
1551
  ["QUERY_LIMIT_EXCEEDED", "OPERATION_TIME_LIMIT"].includes(A) && l.add(f);
1552
1552
  }
1553
1553
  if (c) {
1554
- r = !0, await _(this, Q, it).call(this);
1554
+ r = !0, await _(this, Z, nt).call(this);
1555
1555
  return;
1556
1556
  }
1557
1557
  if (l.size > 0) {
1558
1558
  const f = {};
1559
- for (const [A, h] of Object.entries(a || {}))
1560
- l.has(A) || (f[A] = h);
1561
- Object.keys(f).length && await e(f);
1562
- const d = {};
1559
+ for (const [A, u] of Object.entries(a || {}))
1560
+ l.has(A) || (f[A] = u);
1561
+ Object.keys(f).length && await t(f);
1562
+ const m = {};
1563
1563
  for (const A of l)
1564
- i[A] && (d[A] = i[A]);
1565
- i = d, Object.keys(i).length && (r = !0, await _(this, Q, it).call(this));
1564
+ i[A] && (m[A] = i[A]);
1565
+ i = m, Object.keys(i).length && (r = !0, await _(this, Z, nt).call(this));
1566
1566
  return;
1567
1567
  }
1568
- await e(a);
1568
+ await t(a);
1569
1569
  });
1570
1570
  while (r);
1571
- }, Mt = new WeakSet(), se = function(t, e) {
1571
+ }, Dt = new WeakSet(), ie = function(e, t) {
1572
1572
  return new Promise((r) => {
1573
1573
  if (typeof this.callMethod != "function") {
1574
1574
  r(null);
@@ -1579,24 +1579,24 @@ Tt = new WeakSet(), $t = function() {
1579
1579
  i || (i = !0, r(null));
1580
1580
  }, this.requestTimeoutMs);
1581
1581
  try {
1582
- this.callMethod(t, e, (c) => {
1582
+ this.callMethod(e, t, (c) => {
1583
1583
  i || (i = !0, clearTimeout(a), r(c));
1584
1584
  });
1585
1585
  } catch {
1586
1586
  i || (i = !0, clearTimeout(a), r(null));
1587
1587
  }
1588
1588
  });
1589
- }, ut = new WeakSet(), Jt = function(t) {
1590
- this.clearProgressData(), this.progressCall = typeof t == "function" ? t : "", this.canContinue = !0, this.result = {}, this.errors = {}, this.chunkRate = 1, this.totalProgress = 0, this.batchCommandKeyOrder = [], this.totalBatchCommands = 0, this.batchCommandMethods = [], this.setTimeLimitState(!1, void 0);
1589
+ }, ft = new WeakSet(), jt = function(e) {
1590
+ this.clearProgressData(), this.progressCall = typeof e == "function" ? e : "", this.canContinue = !0, this.result = {}, this.errors = {}, this.chunkRate = 1, this.totalProgress = 0, this.batchCommandKeyOrder = [], this.totalBatchCommands = 0, this.batchCommandMethods = [], this.setTimeLimitState(!1, void 0);
1591
1591
  }, /** Не включать вес по командам для совсем маленьких batch. */
1592
- L(j, Et, 5), /** Явный сигнал: много отдельных выборок сделок по фильтрам. */
1593
- L(j, Rt, 5), /** Достаточно «list»-методов в пачке и доля list от всех команд. */
1594
- L(j, bt, 8), L(j, Lt, 0.65);
1595
- let v = j;
1596
- var et;
1597
- class re {
1592
+ R(J, bt, 5), /** Явный сигнал: много отдельных выборок сделок по фильтрам. */
1593
+ R(J, Lt, 5), /** Достаточно «list»-методов в пачке и доля list от всех команд. */
1594
+ R(J, Rt, 8), R(J, Mt, 0.65);
1595
+ let K = J;
1596
+ var st;
1597
+ class ne {
1598
1598
  constructor() {
1599
- L(this, et, {});
1599
+ R(this, st, {});
1600
1600
  }
1601
1601
  /**
1602
1602
  * Получить случайный хеш-код длиной 8 символов
@@ -1610,11 +1610,11 @@ class re {
1610
1610
  * @param {number} length - Длина генерируемого хеша
1611
1611
  * @returns {string}
1612
1612
  */
1613
- createHash(t) {
1614
- let e = "abcdefghijklmnopqrstuvwxyz0123456789", r = "";
1615
- t = t || 6;
1616
- for (let i = 0; i < t; i++)
1617
- r += e.charAt(Math.floor(Math.random() * e.length));
1613
+ createHash(e) {
1614
+ let t = "abcdefghijklmnopqrstuvwxyz0123456789", r = "";
1615
+ e = e || 6;
1616
+ for (let i = 0; i < e; i++)
1617
+ r += t.charAt(Math.floor(Math.random() * t.length));
1618
1618
  return r;
1619
1619
  }
1620
1620
  /**
@@ -1624,98 +1624,98 @@ class re {
1624
1624
  * @param {number} params.duration - Задержка в миллисекундах (по умолчанию 10)
1625
1625
  * @param {Function} params.action - Функция для выполнения
1626
1626
  */
1627
- actionFilter({ keyTimer: t, duration: e = 10, action: r }) {
1628
- M(this, et)[t] && (clearTimeout(M(this, et)[t]), M(this, et)[t] = null), r && (M(this, et)[t] = setTimeout(() => {
1627
+ actionFilter({ keyTimer: e, duration: t = 10, action: r }) {
1628
+ S(this, st)[e] && (clearTimeout(S(this, st)[e]), S(this, st)[e] = null), r && (S(this, st)[e] = setTimeout(() => {
1629
1629
  r();
1630
- }, e));
1630
+ }, t));
1631
1631
  }
1632
1632
  /**
1633
1633
  * Включение режима NO-SLEEP для предотвращения засыпания устройства
1634
1634
  * Создает невидимое видео, которое циклически воспроизводится
1635
1635
  */
1636
1636
  async noSleep() {
1637
- let t = document.createElement("video");
1638
- t.classList.add("no-sleep"), t.muted = !0, t.autoplay = !0, t.setAttribute("playsinline", ""), t.addEventListener("loadeddata", () => {
1639
- t.style.position = "fixed", t.style.left = "-9999px", document.querySelector("body").append(t), t.play().catch((e) => {
1640
- console.warn("noSleep: autoplay prevented", e);
1637
+ let e = document.createElement("video");
1638
+ e.classList.add("no-sleep"), e.muted = !0, e.autoplay = !0, e.setAttribute("playsinline", ""), e.addEventListener("loadeddata", () => {
1639
+ e.style.position = "fixed", e.style.left = "-9999px", document.querySelector("body").append(e), e.play().catch((t) => {
1640
+ console.warn("noSleep: autoplay prevented", t);
1641
1641
  });
1642
- }), t.addEventListener("ended", () => {
1642
+ }), e.addEventListener("ended", () => {
1643
1643
  this.actionFilter({
1644
1644
  keyTimer: "no-sleep",
1645
1645
  duration: 5e3,
1646
1646
  action: () => {
1647
- t.play().catch((e) => {
1648
- console.warn("noSleep: replay prevented", e);
1647
+ e.play().catch((t) => {
1648
+ console.warn("noSleep: replay prevented", t);
1649
1649
  });
1650
1650
  }
1651
1651
  });
1652
- }), t.src = "data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAP5tZGF0AAAAAQYAAADlZYiEE28FmH9jNWDBjI+Z/1tIBZsjfhbmcNNUpBFej0U3p+zhaJ3eemJRL2LUMa5tkidy6bp+eatLE3jBIY864TvaAmqEFCgLMTCwVbem1n3myAw9yDXQdR5HfU/8iYf+eneVnRf7Qx9M70XDUuPx1MJX671XJwAE0VAMpnhbcUDx0pTldvUX9KQPhkZNH3eyZHmObkAeyEJ2tl+BEBJIGc90BiqKL60+5EA6fXB6iG5UU/M5KsW8BNAAUw5CbRJIqohNk10fwKbUXwya03rqGkE8+wuYGtEbrVYXb+iOl1mHHVPLYQbIAAcGyAAHAAAFNG1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAAAAvAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAIldHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAFAAAAA8AAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAAAAAAAAAAAQAAAAABnW1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAQAAAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAUhtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEIc3RibAAAAKRzdHNkAAAAAAAAAAEAAACUYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAFAAPAASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAC5hdmNDAU1AC//hABZnTUAL2wUH7ARAAAADAEAAAAQDxQq4AQAFaOrAZXIAAAAQcGFzcAAAAAEAAAABAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAO4AAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAAIadHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAgAAAAAAAAAvAAAAAAAAAAAAAAABAQAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAALwAAAAAAAQAAAAABkm1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAArEQAAAgAVcQAAAAAAC1oZGxyAAAAAAAAAABzb3VuAAAAAAAAAAAAAAAAU291bmRIYW5kbGVyAAAAAT1taW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAQFzdGJsAAAAZ3N0c2QAAAAAAAAAAQAAAFdtcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAArEQAAAAAADNlc2RzAAAAAAOAgIAiAAIABICAgBRAFQAAAAAC7gAAAAViBYCAgAISCAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAAACAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAgAAAAEAAAAUc3RzegAAAAAAAAAEAAAAAgAAABRzdGNvAAAAAAAAAAEAAAEeAAAAGnNncGQBAAAAcm9sbAAAAAIAAAAB//8AAAAcc2JncAAAAAByb2xsAAAAAQAAAAIAAAABAAAAgXVkdGEAAAB5bWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWR0YQAAAAAAAAAAAAAAAAAAAAAfa2V5cwAAAAAAAAABAAAAD21kdGFlbmNvZGVyAAAALWlsc3QAAAAlAAAAAQAAAB1kYXRhAAAAAQAAAABMYXZmNTguMTIuMTAw";
1652
+ }), e.src = "data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAP5tZGF0AAAAAQYAAADlZYiEE28FmH9jNWDBjI+Z/1tIBZsjfhbmcNNUpBFej0U3p+zhaJ3eemJRL2LUMa5tkidy6bp+eatLE3jBIY864TvaAmqEFCgLMTCwVbem1n3myAw9yDXQdR5HfU/8iYf+eneVnRf7Qx9M70XDUuPx1MJX671XJwAE0VAMpnhbcUDx0pTldvUX9KQPhkZNH3eyZHmObkAeyEJ2tl+BEBJIGc90BiqKL60+5EA6fXB6iG5UU/M5KsW8BNAAUw5CbRJIqohNk10fwKbUXwya03rqGkE8+wuYGtEbrVYXb+iOl1mHHVPLYQbIAAcGyAAHAAAFNG1vb3YAAABsbXZoZAAAAAAAAAAAAAAAAAAAA+gAAAAvAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAIldHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAFAAAAA8AAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAAAAAAAAAAAQAAAAABnW1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAQAAAAAAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAUhtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAEIc3RibAAAAKRzdHNkAAAAAAAAAAEAAACUYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAFAAPAASAAAAEgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAAC5hdmNDAU1AC//hABZnTUAL2wUH7ARAAAADAEAAAAQDxQq4AQAFaOrAZXIAAAAQcGFzcAAAAAEAAAABAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAO4AAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAAIadHJhawAAAFx0a2hkAAAAAwAAAAAAAAAAAAAAAgAAAAAAAAAvAAAAAAAAAAAAAAABAQAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAALwAAAAAAAQAAAAABkm1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAArEQAAAgAVcQAAAAAAC1oZGxyAAAAAAAAAABzb3VuAAAAAAAAAAAAAAAAU291bmRIYW5kbGVyAAAAAT1taW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAQFzdGJsAAAAZ3N0c2QAAAAAAAAAAQAAAFdtcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAArEQAAAAAADNlc2RzAAAAAAOAgIAiAAIABICAgBRAFQAAAAAC7gAAAAViBYCAgAISCAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAAACAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAgAAAAEAAAAUc3RzegAAAAAAAAAEAAAAAgAAABRzdGNvAAAAAAAAAAEAAAEeAAAAGnNncGQBAAAAcm9sbAAAAAIAAAAB//8AAAAcc2JncAAAAAByb2xsAAAAAQAAAAIAAAABAAAAgXVkdGEAAAB5bWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWR0YQAAAAAAAAAAAAAAAAAAAAAfa2V5cwAAAAAAAAABAAAAD21kdGFlbmNvZGVyAAAALWlsc3QAAAAlAAAAAQAAAB1kYXRhAAAAAQAAAABMYXZmNTguMTIuMTAw";
1653
1653
  }
1654
1654
  /**
1655
1655
  * Скачать данные в JSON-файл
1656
1656
  * @param {any} data - Данные для сохранения
1657
1657
  * @param {string} filename - Имя файла без расширения
1658
1658
  */
1659
- downloadFileJson(t, e) {
1660
- let r = new Blob([JSON.stringify(t)], { type: "application/json" }), i = URL.createObjectURL(r), a = document.createElement("a");
1661
- a.style.display = "none", a.href = i, a.download = `${e}.json`, document.body.appendChild(a), a.click(), setTimeout(() => {
1659
+ downloadFileJson(e, t) {
1660
+ let r = new Blob([JSON.stringify(e)], { type: "application/json" }), i = URL.createObjectURL(r), a = document.createElement("a");
1661
+ a.style.display = "none", a.href = i, a.download = `${t}.json`, document.body.appendChild(a), a.click(), setTimeout(() => {
1662
1662
  document.body.removeChild(a), URL.revokeObjectURL(i);
1663
1663
  }, 200);
1664
1664
  }
1665
1665
  }
1666
- et = new WeakMap();
1667
- const xt = new re();
1668
- var K, q, st, ot, ft, Z, X, rt, At, Dt, ie, mt, jt, kt, ne, wt, ae, Bt, oe;
1669
- class _e {
1666
+ st = new WeakMap();
1667
+ const vt = new ne();
1668
+ var j, z, rt, At, dt, V, v, it, ct, kt, ae, mt, Kt, wt, oe, Bt, Ae, Ct, ce;
1669
+ class be {
1670
1670
  constructor() {
1671
1671
  /** user.current — только при первом реальном использовании (сохранение лога, выгрузка). */
1672
- L(this, Dt);
1672
+ R(this, kt);
1673
1673
  /** Вывод ошибок логера
1674
1674
  * @param {'entity'} type - тип ошибки
1675
1675
  */
1676
- L(this, mt);
1677
- L(this, kt);
1678
- L(this, wt);
1679
- L(this, Bt);
1680
- L(this, K, "logger");
1681
- L(this, q, !1);
1682
- L(this, st, /* @__PURE__ */ new Map());
1683
- L(this, ot, {});
1684
- L(this, ft, !1);
1685
- L(this, Z, null);
1686
- L(this, X, null);
1687
- L(this, rt, !1);
1688
- L(this, At, !1);
1676
+ R(this, mt);
1677
+ R(this, wt);
1678
+ R(this, Bt);
1679
+ R(this, Ct);
1680
+ R(this, j, "logger");
1681
+ R(this, z, !1);
1682
+ R(this, rt, /* @__PURE__ */ new Map());
1683
+ R(this, At, {});
1684
+ R(this, dt, !1);
1685
+ R(this, V, null);
1686
+ R(this, v, null);
1687
+ R(this, it, !1);
1688
+ R(this, ct, !1);
1689
1689
  /** Очистка хранилища элементов старше 'N' месяцев */
1690
- H(this, "periodClear", 3);
1690
+ B(this, "periodClear", 3);
1691
1691
  }
1692
1692
  /** Инициализация логера */
1693
1693
  async init() {
1694
1694
  try {
1695
- let t = new v(BX24.callBatch), { entityList: e } = await t.batch({
1695
+ let e = new K(BX24.callBatch), { entityList: t } = await e.batch({
1696
1696
  entityList: { method: "entity.get" }
1697
1697
  });
1698
- if (e && Array.isArray(e))
1699
- if (e.find(
1700
- (i) => i.ENTITY == M(this, K)
1698
+ if (t && Array.isArray(t))
1699
+ if (t.find(
1700
+ (i) => i.ENTITY == S(this, j)
1701
1701
  ))
1702
- x(this, q, !0);
1702
+ x(this, z, !0);
1703
1703
  else {
1704
- let { entityAdd: i } = await t.batch({
1704
+ let { entityAdd: i } = await e.batch({
1705
1705
  entityAdd: {
1706
1706
  method: "entity.add",
1707
1707
  params: {
1708
- ENTITY: M(this, K),
1709
- NAME: M(this, K),
1708
+ ENTITY: S(this, j),
1709
+ NAME: S(this, j),
1710
1710
  ACCESS: { AU: "X" }
1711
1711
  }
1712
1712
  }
1713
1713
  });
1714
- i && x(this, q, !0);
1714
+ i && x(this, z, !0);
1715
1715
  }
1716
- return M(this, q);
1717
- } catch (t) {
1718
- return console.error("Ошибка при инициализации логера:", t), !1;
1716
+ return S(this, z);
1717
+ } catch (e) {
1718
+ return console.error("Ошибка при инициализации логера:", e), !1;
1719
1719
  }
1720
1720
  }
1721
1721
  /**
@@ -1723,7 +1723,7 @@ class _e {
1723
1723
  * Используется в PAGE_BACKGROUND_WORKER, где не нужно делать entity.get/entity.add.
1724
1724
  */
1725
1725
  enableBackworkerMode() {
1726
- return x(this, q, !0), !0;
1726
+ return x(this, z, !0), !0;
1727
1727
  }
1728
1728
  /**
1729
1729
  * @param {{ type: 'call'|'batch'|'batch-total-count';
@@ -1734,21 +1734,21 @@ class _e {
1734
1734
  * }; }}
1735
1735
  * @returns {string|null}
1736
1736
  */
1737
- start({ type: t, data: e }) {
1738
- if (!M(this, q))
1739
- return _(this, mt, jt).call(this, "entity"), null;
1740
- if (!t || !e)
1741
- return console.error("Невалидные данные для логирования:", { type: t, data: e }), null;
1742
- const r = xt.hash, i = {
1743
- type: t,
1744
- data: e,
1737
+ start({ type: e, data: t }) {
1738
+ if (!S(this, z))
1739
+ return _(this, mt, Kt).call(this, "entity"), null;
1740
+ if (!e || !t)
1741
+ return console.error("Невалидные данные для логирования:", { type: e, data: t }), null;
1742
+ const r = vt.hash, i = {
1743
+ type: e,
1744
+ data: t,
1745
1745
  userInfo: null,
1746
1746
  errorList: {},
1747
1747
  status: "",
1748
1748
  answer: null,
1749
1749
  date: (/* @__PURE__ */ new Date()).getTime()
1750
1750
  };
1751
- return M(this, st).set(r, i), x(this, At, !0), r;
1751
+ return S(this, rt).set(r, i), x(this, ct, !0), r;
1752
1752
  }
1753
1753
  /**
1754
1754
  * @param {{
@@ -1757,46 +1757,46 @@ class _e {
1757
1757
  * status: 'success'|'fail'|'fail-runtime',
1758
1758
  * answer: { [key]: unknown } }}
1759
1759
  */
1760
- async stop({ key: t, errorList: e, status: r, answer: i }) {
1760
+ async stop({ key: e, errorList: t, status: r, answer: i }) {
1761
1761
  var c;
1762
- if (!M(this, At))
1762
+ if (!S(this, ct))
1763
1763
  return;
1764
- if (!M(this, q)) {
1765
- _(this, mt, jt).call(this, "entity");
1764
+ if (!S(this, z)) {
1765
+ _(this, mt, Kt).call(this, "entity");
1766
1766
  return;
1767
1767
  }
1768
- let a = M(this, st).get(t);
1768
+ let a = S(this, rt).get(e);
1769
1769
  if (!a) {
1770
- console.error(`Не найдены данные логирования для ключа: ${t}`);
1770
+ console.error(`Не найдены данные логирования для ключа: ${e}`);
1771
1771
  return;
1772
1772
  }
1773
- e && (a.errorList = e), r && (a.status = r), i && (a.answer = i), await _(this, Dt, ie).call(this), a.userInfo = M(this, ot), await _(this, kt, ne).call(this), (c = a == null ? void 0 : a.data) != null && c.updateList && x(this, rt, !0), x(this, At, !1);
1773
+ t && (a.errorList = t), r && (a.status = r), i && (a.answer = i), await _(this, kt, ae).call(this), a.userInfo = S(this, At), await _(this, wt, oe).call(this), (c = a == null ? void 0 : a.data) != null && c.updateList && x(this, it, !0), x(this, ct, !1);
1774
1774
  }
1775
1775
  /**
1776
1776
  * @param { ({percent}:{percent:number})=>{} } progressCall - коллбэк
1777
1777
  */
1778
- async getEntityList(t) {
1779
- var e;
1778
+ async getEntityList(e) {
1779
+ var t;
1780
1780
  try {
1781
- if ((e = M(this, X)) != null && e.length && !M(this, rt))
1782
- return M(this, X);
1783
- let r = new v(BX24.callBatch), { entityList: i } = await r.batch(
1781
+ if ((t = S(this, v)) != null && t.length && !S(this, it))
1782
+ return S(this, v);
1783
+ let r = new K(BX24.callBatch), { entityList: i } = await r.batch(
1784
1784
  {
1785
1785
  entityList: {
1786
1786
  method: "entity.item.get",
1787
1787
  params: {
1788
- ENTITY: M(this, K),
1788
+ ENTITY: S(this, j),
1789
1789
  SORT: { ID: "DESC" }
1790
1790
  }
1791
1791
  }
1792
1792
  },
1793
- t
1793
+ e
1794
1794
  );
1795
1795
  return !i || !Array.isArray(i) ? (console.warn("Получен невалидный список записей"), []) : (i = i.map((a) => {
1796
1796
  try {
1797
- const { ID: c, DATE_CREATE: l, DETAIL_TEXT: u } = a;
1797
+ const { ID: c, DATE_CREATE: l, DETAIL_TEXT: h } = a;
1798
1798
  return {
1799
- ...JSON.parse(u),
1799
+ ...JSON.parse(h),
1800
1800
  id: c,
1801
1801
  dateCreate: l
1802
1802
  };
@@ -1806,7 +1806,7 @@ class _e {
1806
1806
  c
1807
1807
  ), null;
1808
1808
  }
1809
- }).filter((a) => a !== null), x(this, rt, !1), x(this, X, i), i);
1809
+ }).filter((a) => a !== null), x(this, it, !1), x(this, v, i), i);
1810
1810
  } catch (r) {
1811
1811
  return console.error("Ошибка при получении списка записей:", r), [];
1812
1812
  }
@@ -1816,89 +1816,89 @@ class _e {
1816
1816
  * Не вызывается из `init` — вызывайте явно (например, из настроек или планировщика).
1817
1817
  */
1818
1818
  runStorageMaintenance() {
1819
- return _(this, wt, ae).call(this);
1819
+ return _(this, Bt, Ae).call(this);
1820
1820
  }
1821
1821
  /** Выгрузка всех данных из хранилища в JSON-файл */
1822
1822
  async downAllEntityJson() {
1823
1823
  try {
1824
- if (M(this, X) || await this.getEntityList(), !M(this, X) || M(this, X).length === 0)
1824
+ if (S(this, v) || await this.getEntityList(), !S(this, v) || S(this, v).length === 0)
1825
1825
  return console.warn("Нет данных для выгрузки"), !1;
1826
- let t = Nt().format("%Y-%m-%d");
1827
- return xt.downloadFileJson(
1828
- M(this, X),
1829
- `sdklogger-entity-data__${t}`
1826
+ let e = Ot().format("%Y-%m-%d");
1827
+ return vt.downloadFileJson(
1828
+ S(this, v),
1829
+ `sdklogger-entity-data__${e}`
1830
1830
  ), !0;
1831
- } catch (t) {
1832
- return console.error("Ошибка при выгрузке данных в JSON:", t), !1;
1831
+ } catch (e) {
1832
+ return console.error("Ошибка при выгрузке данных в JSON:", e), !1;
1833
1833
  }
1834
1834
  }
1835
1835
  }
1836
- K = new WeakMap(), q = new WeakMap(), st = new WeakMap(), ot = new WeakMap(), ft = new WeakMap(), Z = new WeakMap(), X = new WeakMap(), rt = new WeakMap(), At = new WeakMap(), Dt = new WeakSet(), ie = async function() {
1837
- if (!M(this, ft))
1838
- return M(this, Z) ? M(this, Z) : (x(this, Z, (async () => {
1836
+ j = new WeakMap(), z = new WeakMap(), rt = new WeakMap(), At = new WeakMap(), dt = new WeakMap(), V = new WeakMap(), v = new WeakMap(), it = new WeakMap(), ct = new WeakMap(), kt = new WeakSet(), ae = async function() {
1837
+ if (!S(this, dt))
1838
+ return S(this, V) ? S(this, V) : (x(this, V, (async () => {
1839
1839
  try {
1840
- const t = new v(BX24.callBatch), e = BX24.isAdmin(), { curUser: r } = await t.batch({
1840
+ const e = new K(BX24.callBatch), t = BX24.isAdmin(), { curUser: r } = await e.batch({
1841
1841
  curUser: { method: "user.current" }
1842
1842
  });
1843
- x(this, ot, { isAdmin: e, curUser: r });
1844
- } catch (t) {
1843
+ x(this, At, { isAdmin: t, curUser: r });
1844
+ } catch (e) {
1845
1845
  console.error(
1846
1846
  "Ошибка при получении информации о пользователе:",
1847
- t
1848
- ), x(this, ot, { isAdmin: !1, curUser: null });
1847
+ e
1848
+ ), x(this, At, { isAdmin: !1, curUser: null });
1849
1849
  } finally {
1850
- x(this, ft, !0), x(this, Z, null);
1850
+ x(this, dt, !0), x(this, V, null);
1851
1851
  }
1852
- })()), M(this, Z));
1853
- }, mt = new WeakSet(), jt = function(t) {
1854
- t == "entity" && xt.actionFilter({
1852
+ })()), S(this, V));
1853
+ }, mt = new WeakSet(), Kt = function(e) {
1854
+ e == "entity" && vt.actionFilter({
1855
1855
  keyTimer: "error.logger.entity",
1856
1856
  duration: 500,
1857
1857
  action: () => {
1858
1858
  console.error("Хранилище для логгера не инициализировано");
1859
1859
  }
1860
1860
  });
1861
- }, kt = new WeakSet(), ne = async function() {
1861
+ }, wt = new WeakSet(), oe = async function() {
1862
1862
  try {
1863
- let t = {}, e = new v(BX24.callBatch);
1864
- for (let [r, i] of M(this, st).entries())
1863
+ let e = {}, t = new K(BX24.callBatch);
1864
+ for (let [r, i] of S(this, rt).entries())
1865
1865
  if (i.status) {
1866
1866
  const a = JSON.stringify(i);
1867
- t[r] = {
1867
+ e[r] = {
1868
1868
  method: "entity.item.add",
1869
1869
  params: {
1870
- ENTITY: M(this, K),
1871
- NAME: M(this, K),
1870
+ ENTITY: S(this, j),
1871
+ NAME: S(this, j),
1872
1872
  DETAIL_TEXT: a
1873
1873
  }
1874
1874
  };
1875
1875
  }
1876
- if (Object.keys(t).length) {
1877
- let r = await e.batch(t), { errors: i } = e;
1876
+ if (Object.keys(e).length) {
1877
+ let r = await t.batch(e), { errors: i } = t;
1878
1878
  for (let [a, c] of Object.entries({ ...r, ...i }))
1879
- M(this, st).delete(a);
1879
+ S(this, rt).delete(a);
1880
1880
  return !0;
1881
1881
  }
1882
1882
  return !1;
1883
- } catch (t) {
1884
- return console.error("Ошибка при добавлении записей в хранилище:", t), !1;
1883
+ } catch (e) {
1884
+ return console.error("Ошибка при добавлении записей в хранилище:", e), !1;
1885
1885
  }
1886
- }, wt = new WeakSet(), ae = async function() {
1886
+ }, Bt = new WeakSet(), Ae = async function() {
1887
1887
  try {
1888
- let t = new v(BX24.callBatch), { serverTime: e } = await t.batch({
1888
+ let e = new K(BX24.callBatch), { serverTime: t } = await e.batch({
1889
1889
  serverTime: { method: "server.time" }
1890
1890
  });
1891
- if (!e) {
1891
+ if (!t) {
1892
1892
  console.error("Не удалось получить время сервера");
1893
1893
  return;
1894
1894
  }
1895
- if (M(this, X) || await this.getEntityList(), !M(this, X) || M(this, X).length === 0)
1895
+ if (S(this, v) || await this.getEntityList(), !S(this, v) || S(this, v).length === 0)
1896
1896
  return;
1897
- let r = M(this, X).filter((i) => {
1897
+ let r = S(this, v).filter((i) => {
1898
1898
  try {
1899
1899
  let { dateCreate: a } = i;
1900
- return a ? Nt(new Date(a)).between(
1901
- Nt(new Date(e)),
1900
+ return a ? Ot(new Date(a)).between(
1901
+ Ot(new Date(t)),
1902
1902
  "month"
1903
1903
  ) >= this.periodClear : !1;
1904
1904
  } catch (a) {
@@ -1907,92 +1907,92 @@ K = new WeakMap(), q = new WeakMap(), st = new WeakMap(), ot = new WeakMap(), ft
1907
1907
  });
1908
1908
  r.length > 0 && (console.log(
1909
1909
  `Найдено ${r.length} записей для очистки (старше ${this.periodClear} месяцев)`
1910
- ), await _(this, Bt, oe).call(this, r));
1911
- } catch (t) {
1912
- console.error("Ошибка при проверке периода очистки:", t);
1910
+ ), await _(this, Ct, ce).call(this, r));
1911
+ } catch (e) {
1912
+ console.error("Ошибка при проверке периода очистки:", e);
1913
1913
  }
1914
- }, Bt = new WeakSet(), oe = async function(t) {
1914
+ }, Ct = new WeakSet(), ce = async function(e) {
1915
1915
  try {
1916
- if (!t || t.length === 0)
1916
+ if (!e || e.length === 0)
1917
1917
  return !1;
1918
- let e = new v(BX24.callBatch), r = t.filter((a) => a && a.id).map((a) => {
1918
+ let t = new K(BX24.callBatch), r = e.filter((a) => a && a.id).map((a) => {
1919
1919
  let { id: c } = a;
1920
1920
  return {
1921
1921
  method: "entity.item.delete",
1922
1922
  params: {
1923
- ENTITY: M(this, K),
1923
+ ENTITY: S(this, j),
1924
1924
  ID: c
1925
1925
  }
1926
1926
  };
1927
1927
  });
1928
1928
  if (r.length === 0)
1929
1929
  return !1;
1930
- const i = await e.batch(r);
1931
- return console.log(`Успешно удалено ${r.length} записей`), x(this, rt, !0), i;
1932
- } catch (e) {
1933
- return console.error("Ошибка при очистке устаревших записей:", e), !1;
1930
+ const i = await t.batch(r);
1931
+ return console.log(`Успешно удалено ${r.length} записей`), x(this, it, !0), i;
1932
+ } catch (t) {
1933
+ return console.error("Ошибка при очистке устаревших записей:", t), !1;
1934
1934
  }
1935
1935
  };
1936
- function Zt(y) {
1936
+ function $t(y) {
1937
1937
  if (!y || typeof y != "string")
1938
1938
  return "";
1939
1939
  try {
1940
- const t = new URL(y);
1941
- t.search = "", t.hash = "";
1942
- let e = t.toString();
1943
- return e.endsWith("/") && t.pathname !== "/" && (e = e.slice(0, -1)), e;
1940
+ const e = new URL(y);
1941
+ e.search = "", e.hash = "";
1942
+ let t = e.toString();
1943
+ return t.endsWith("/") && e.pathname !== "/" && (t = t.slice(0, -1)), t;
1944
1944
  } catch {
1945
1945
  return y.split("?")[0].split("#")[0].replace(/\/$/, "");
1946
1946
  }
1947
1947
  }
1948
- function Ae(y) {
1948
+ function le(y) {
1949
1949
  return !y || typeof y != "string" ? !1 : y.toLowerCase().includes("/marketplace/app");
1950
1950
  }
1951
- function Te() {
1952
- var t;
1953
- if (typeof window > "u" || !((t = window.location) != null && t.href))
1951
+ function Le() {
1952
+ var e;
1953
+ if (typeof window > "u" || !((e = window.location) != null && e.href))
1954
1954
  return "";
1955
- const y = Zt(window.location.href);
1956
- return Ae(y) ? "" : y;
1955
+ const y = $t(window.location.href);
1956
+ return le(y) ? "" : y;
1957
1957
  }
1958
- function Kt(y) {
1958
+ function qt(y) {
1959
1959
  if (!(y != null && y.appConst) || typeof y.appConst != "object")
1960
1960
  return "";
1961
- const t = Te();
1962
- return t ? (y.appConst.pathApp = t, t) : Zt(y.appConst.pathApp ?? "");
1961
+ const e = Le();
1962
+ return e ? (y.appConst.pathApp = e, e) : $t(y.appConst.pathApp ?? "");
1963
1963
  }
1964
- var ct, _t, Ct, ce, dt, vt, Ut, le, Ht, he, Gt, ue, V, nt, gt, qt, Pt, fe, yt, zt, Yt, me;
1965
- class Ie {
1964
+ var lt, Tt, Ht, he, gt, zt, Ut, ue, Pt, fe, Gt, de, $, at, yt, Qt, Yt, me, pt, Zt, Wt, ge;
1965
+ class we {
1966
1966
  /**
1967
1967
  * @param {Object} appConst - Константы приложения
1968
1968
  * @param {string} appConst.appName - Название приложения
1969
1969
  * @param {string} appConst.pathApp - Путь к приложению
1970
1970
  */
1971
- constructor(t) {
1971
+ constructor(e) {
1972
1972
  /**
1973
1973
  * Returns shared Batch instance for all batch operations.
1974
1974
  * Keeps a single stateful Batch (including timeLimit) within current BxBoot lifecycle.
1975
1975
  *
1976
1976
  * @returns {Batch} Shared Batch instance.
1977
1977
  */
1978
- L(this, ct);
1979
- L(this, Ct);
1978
+ R(this, lt);
1979
+ R(this, Ht);
1980
1980
  /**
1981
1981
  * `this.logger === true` → `BxLogger` + лёгкий `init` (сущность хранилища, без полной выгрузки);
1982
1982
  * иначе — заглушка.
1983
1983
  * @param {boolean} runLoggerMaintenance
1984
1984
  */
1985
- L(this, dt);
1985
+ R(this, gt);
1986
1986
  /**
1987
1987
  * @returns {boolean}
1988
1988
  */
1989
- L(this, Ut);
1989
+ R(this, Ut);
1990
1990
  /** Запрос данных о приложении */
1991
- L(this, Ht);
1991
+ R(this, Pt);
1992
1992
  /** Запрос данных о текущем пользователе */
1993
- L(this, Gt);
1994
- L(this, V);
1995
- L(this, gt);
1993
+ R(this, Gt);
1994
+ R(this, $);
1995
+ R(this, yt);
1996
1996
  /**
1997
1997
  * Расширяет errorList для случаев TIMEOUT и LIMIT
1998
1998
  * Если есть ошибки TIMEOUT или LIMIT, добавляет все необработанные сущности из commandList
@@ -2002,32 +2002,32 @@ class Ie {
2002
2002
  * @param {Array} updateList - Список обновлений для логирования (опционально)
2003
2003
  * @returns {Object} Расширенный список ошибок
2004
2004
  */
2005
- L(this, Pt);
2005
+ R(this, Yt);
2006
2006
  /**
2007
2007
  * Нормализует входные данные в массив объектов {placement, handler?}
2008
2008
  * @private
2009
2009
  */
2010
- L(this, yt);
2010
+ R(this, pt);
2011
2011
  /**
2012
2012
  * Находит встройки с устаревшим handler (не содержащим текущий pathApp)
2013
2013
  * @private
2014
2014
  */
2015
- L(this, Yt);
2016
- H(this, "domain", "");
2017
- H(this, "isAdmin", !1);
2018
- H(this, "appInfo", null);
2019
- H(this, "appConst", null);
2020
- H(this, "userInfo", null);
2021
- H(this, "placeData", null);
2022
- H(this, "placeInfo", null);
2023
- H(this, "logger", !1);
2024
- H(this, "timeLimit", {
2015
+ R(this, Wt);
2016
+ B(this, "domain", "");
2017
+ B(this, "isAdmin", !1);
2018
+ B(this, "appInfo", null);
2019
+ B(this, "appConst", null);
2020
+ B(this, "userInfo", null);
2021
+ B(this, "placeData", null);
2022
+ B(this, "placeInfo", null);
2023
+ B(this, "logger", !1);
2024
+ B(this, "timeLimit", {
2025
2025
  limit: !1,
2026
2026
  date: void 0,
2027
2027
  pauseMs: void 0
2028
2028
  });
2029
- H(this, "batchClient", null);
2030
- this.appConst = t;
2029
+ B(this, "batchClient", null);
2030
+ this.appConst = e;
2031
2031
  }
2032
2032
  /**
2033
2033
  * Подписывает внешний код на изменения состояния timeLimit в Batch.
@@ -2035,8 +2035,8 @@ class Ie {
2035
2035
  * @param {(state: {limit: boolean, date?: string, pauseMs?: number}) => void} callback - Обработчик состояния лимита.
2036
2036
  * @returns {() => void} Функция отписки.
2037
2037
  */
2038
- subscribeTimeLimit(t) {
2039
- return _(this, ct, _t).call(this).subscribeTimeLimit(t);
2038
+ subscribeTimeLimit(e) {
2039
+ return _(this, lt, Tt).call(this).subscribeTimeLimit(e);
2040
2040
  }
2041
2041
  /**
2042
2042
  * Единая инициализация: внутри автоматически выбирается ветка обычного приложения или
@@ -2049,37 +2049,37 @@ class Ie {
2049
2049
  * @throws {Error} Если BX24 не загружен в течение 30 секунд
2050
2050
  */
2051
2051
  init() {
2052
- return new Promise((t, e) => {
2052
+ return new Promise((e, t) => {
2053
2053
  const i = setTimeout(() => {
2054
2054
  clearInterval(a);
2055
2055
  const c = new Error(
2056
2056
  "BX24 initialization timeout: BX24 object not found within 30 seconds"
2057
2057
  );
2058
- console.error(c), e(c);
2058
+ console.error(c), t(c);
2059
2059
  }, 3e4);
2060
2060
  let a = setInterval(() => {
2061
2061
  window.BX24 && BX24.init(async () => {
2062
2062
  clearInterval(a), clearTimeout(i), this.domain = BX24.getDomain(), this.isAdmin = BX24.isAdmin(), this.placeInfo = BX24.placement.info();
2063
- const c = _(this, Ut, le).call(this);
2063
+ const c = _(this, Ut, ue).call(this);
2064
2064
  if (console.info(
2065
2065
  c ? "init BX24 (background worker)" : "init BX24"
2066
- ), this.appInfo = await _(this, Ht, he).call(this), this.userInfo = await _(this, Gt, ue).call(this), Kt(this), c)
2067
- await _(this, dt, vt).call(this, !1, {
2066
+ ), this.appInfo = await _(this, Pt, fe).call(this), this.userInfo = await _(this, Gt, de).call(this), qt(this), c)
2067
+ await _(this, gt, zt).call(this, !1, {
2068
2068
  skipInit: !0
2069
2069
  });
2070
2070
  else {
2071
- await _(this, dt, vt).call(this, !0);
2072
- const l = new re();
2071
+ await _(this, gt, zt).call(this, !0);
2072
+ const l = new ne();
2073
2073
  try {
2074
2074
  l.noSleep();
2075
- } catch (u) {
2075
+ } catch (h) {
2076
2076
  console.warn(
2077
2077
  "Failed to initialize noSleep:",
2078
- u
2078
+ h
2079
2079
  );
2080
2080
  }
2081
2081
  }
2082
- t({ isBackworker: c });
2082
+ e({ isBackworker: c });
2083
2083
  });
2084
2084
  }, 100);
2085
2085
  });
@@ -2090,23 +2090,23 @@ class Ie {
2090
2090
  * @param {any} value - Значение для установки (если не указано, метод вернет текущее значение)
2091
2091
  * @returns {any}
2092
2092
  */
2093
- userOption(t, e) {
2093
+ userOption(e, t) {
2094
2094
  if (typeof BX24 > "u" || !BX24.userOption) {
2095
2095
  console.warn(
2096
2096
  "BX24.userOption is not available. Make sure BX24 is initialized."
2097
2097
  );
2098
2098
  return;
2099
2099
  }
2100
- return e !== void 0 ? BX24.userOption.set(t, e) : BX24.userOption.get(t);
2100
+ return t !== void 0 ? BX24.userOption.set(e, t) : BX24.userOption.get(e);
2101
2101
  }
2102
- appOption(t, e) {
2102
+ appOption(e, t) {
2103
2103
  if (typeof BX24 > "u" || !BX24.appOption) {
2104
2104
  console.warn(
2105
2105
  "BX24.appOption is not available. Make sure BX24 is initialized."
2106
2106
  );
2107
2107
  return;
2108
2108
  }
2109
- return e !== void 0 ? BX24.appOption.set(t, e) : BX24.appOption.get(t);
2109
+ return t !== void 0 ? BX24.appOption.set(e, t) : BX24.appOption.get(e);
2110
2110
  }
2111
2111
  /**
2112
2112
  * @param {{
@@ -2126,20 +2126,20 @@ class Ie {
2126
2126
  * }[]
2127
2127
  * }[]
2128
2128
  */
2129
- async call({ method: t, params: e, updateList: r }) {
2129
+ async call({ method: e, params: t, updateList: r }) {
2130
2130
  let i;
2131
2131
  if (r && (i = this.logger.start({
2132
2132
  type: "call",
2133
- data: { method: t, params: e, updateList: r }
2134
- })), e || (e = {}), typeof BX24 > "u" || !BX24.callMethod) {
2133
+ data: { method: e, params: t, updateList: r }
2134
+ })), t || (t = {}), typeof BX24 > "u" || !BX24.callMethod) {
2135
2135
  const l = new Error("BX24 is not initialized");
2136
2136
  throw console.error(l), l;
2137
2137
  }
2138
- const c = await _(this, ct, _t).call(this).call({ method: t, params: e });
2139
- return c.success ? (await _(this, V, nt).call(this, i, {
2138
+ const c = await _(this, lt, Tt).call(this).call({ method: e, params: t });
2139
+ return c.success ? (await _(this, $, at).call(this, i, {
2140
2140
  answer: c.answer,
2141
2141
  status: "success"
2142
- }), c.data) : (console.error(c.error), await _(this, V, nt).call(this, i, {
2142
+ }), c.data) : (console.error(c.error), await _(this, $, at).call(this, i, {
2143
2143
  answer: c.answer,
2144
2144
  status: "fail",
2145
2145
  errorList: { 0: c.error || "Unknown call error" }
@@ -2164,15 +2164,15 @@ class Ie {
2164
2164
  * }[]
2165
2165
  * }}
2166
2166
  */
2167
- async batch(t, e, { errorCall: r, updateList: i, batchOptions: a } = {}) {
2167
+ async batch(e, t, { errorCall: r, updateList: i, batchOptions: a } = {}) {
2168
2168
  if (typeof BX24 > "u" || !BX24.callBatch) {
2169
2169
  const c = new Error("BX24 is not initialized");
2170
2170
  return console.error(c), !1;
2171
2171
  }
2172
- return _(this, gt, qt).call(this, {
2172
+ return _(this, yt, Qt).call(this, {
2173
2173
  mode: "batch",
2174
- commandList: t,
2175
- progressCall: e,
2174
+ commandList: e,
2175
+ progressCall: t,
2176
2176
  errorCall: r,
2177
2177
  updateList: i,
2178
2178
  batchOptions: a
@@ -2200,69 +2200,69 @@ class Ie {
2200
2200
  * }}
2201
2201
  * @returns {Promise<Object|false>}
2202
2202
  */
2203
- async batchTotalCount(t, e, { errorCall: r, updateList: i } = {}) {
2203
+ async batchTotalCount(e, t, { errorCall: r, updateList: i } = {}) {
2204
2204
  if (typeof BX24 > "u" || !BX24.callBatch) {
2205
2205
  const a = new Error("BX24 is not initialized");
2206
2206
  return console.error(a), !1;
2207
2207
  }
2208
- return _(this, gt, qt).call(this, {
2208
+ return _(this, yt, Qt).call(this, {
2209
2209
  mode: "batch-total-count",
2210
- commandList: t,
2211
- progressCall: e,
2210
+ commandList: e,
2211
+ progressCall: t,
2212
2212
  errorCall: r,
2213
2213
  updateList: i
2214
2214
  });
2215
2215
  }
2216
2216
  /** Запрос данных о местах встройки приложения */
2217
2217
  async getPlacement() {
2218
- const t = await this.call({ method: "placement.get" });
2219
- return this.placeData || (this.placeData = t), t;
2218
+ const e = await this.call({ method: "placement.get" });
2219
+ return this.placeData || (this.placeData = e), e;
2220
2220
  }
2221
2221
  /**
2222
2222
  * Встройка приложения в указанные места
2223
2223
  * @param {string|string[]|Object|Object[]} place - Место или массив мест для встройки
2224
2224
  */
2225
- async placementBind(t) {
2225
+ async placementBind(e) {
2226
2226
  var A;
2227
2227
  if (!this.isAdmin || (this.placeData = await this.getPlacement(), !this.placeData))
2228
2228
  return;
2229
- const { appName: e, pathApp: r } = this.appConst;
2230
- let i = _(this, yt, zt).call(this, t);
2229
+ const { appName: t, pathApp: r } = this.appConst;
2230
+ let i = _(this, pt, Zt).call(this, e);
2231
2231
  i = i.filter(
2232
- (h) => h.placement !== "PAGE_BACKGROUND_WORKER" && h.placement !== "PAGE_BACKGROUND_WORKER_ALL"
2232
+ (u) => u.placement !== "PAGE_BACKGROUND_WORKER" && u.placement !== "PAGE_BACKGROUND_WORKER_ALL"
2233
2233
  );
2234
- const a = _(this, Yt, me).call(this, r), c = new Set(i.map((h) => h.placement));
2235
- for (const h of a)
2236
- c.has(h.placement) || i.push({ placement: h.placement });
2234
+ const a = _(this, Wt, ge).call(this, r), c = new Set(i.map((u) => u.placement));
2235
+ for (const u of a)
2236
+ c.has(u.placement) || i.push({ placement: u.placement });
2237
2237
  if (i.length === 0)
2238
2238
  return;
2239
- let l = e;
2240
- this.domain === "szdl.bitrix24.ru" && ((A = this.appInfo) != null && A.ID) && (l = `${e}: #${this.appInfo.ID}`);
2241
- const u = l.replace(" CRM", ""), n = {}, f = [], d = /* @__PURE__ */ new Map();
2242
- for (const h of this.placeData)
2243
- d.has(h.placement) || d.set(h.placement, []), d.get(h.placement).push(h);
2244
- for (let h = 0; h < i.length; h++) {
2245
- const { placement: O, options: T } = i[h], E = d.get(O) || [];
2239
+ let l = t;
2240
+ this.domain === "szdl.bitrix24.ru" && ((A = this.appInfo) != null && A.ID) && (l = `${t}: #${this.appInfo.ID}`);
2241
+ const h = l.replace(" CRM", ""), n = {}, f = [], m = /* @__PURE__ */ new Map();
2242
+ for (const u of this.placeData)
2243
+ m.has(u.placement) || m.set(u.placement, []), m.get(u.placement).push(u);
2244
+ for (let u = 0; u < i.length; u++) {
2245
+ const { placement: O, options: T } = i[u], E = m.get(O) || [];
2246
2246
  if (E.some(
2247
- (R) => R.handler === r
2247
+ (b) => b.handler === r
2248
2248
  ))
2249
2249
  continue;
2250
2250
  const p = E.filter(
2251
- (R) => R.handler !== r
2251
+ (b) => b.handler !== r
2252
2252
  );
2253
- for (const R of p)
2253
+ for (const b of p)
2254
2254
  f.push({
2255
2255
  placement: O,
2256
- handler: R.handler
2256
+ handler: b.handler
2257
2257
  });
2258
- n[`bind_${h}`] = {
2258
+ n[`bind_${u}`] = {
2259
2259
  method: "placement.bind",
2260
2260
  params: {
2261
2261
  PLACEMENT: O,
2262
2262
  HANDLER: r,
2263
2263
  LANG_ALL: {
2264
2264
  ru: {
2265
- TITLE: O === "USER_PROFILE_TOOLBAR" ? u : l
2265
+ TITLE: O === "USER_PROFILE_TOOLBAR" ? h : l
2266
2266
  }
2267
2267
  },
2268
2268
  OPTIONS: {
@@ -2272,51 +2272,51 @@ class Ie {
2272
2272
  }
2273
2273
  };
2274
2274
  }
2275
- f.length > 0 && await this.placementUnBind(f), Object.keys(n).length > 0 && (await this.batch(n), this.placeData = await this.getPlacement(), Object.values(n).forEach((h) => {
2276
- console.log("Приложение успешно встроено в", h.params.PLACEMENT);
2275
+ f.length > 0 && await this.placementUnBind(f), Object.keys(n).length > 0 && (await this.batch(n), this.placeData = await this.getPlacement(), Object.values(n).forEach((u) => {
2276
+ console.log("Приложение успешно встроено в", u.params.PLACEMENT);
2277
2277
  }));
2278
2278
  }
2279
2279
  /**
2280
2280
  * Отвязка встройки из указанных мест
2281
2281
  * @param {string|string[]|Object|Object[]} place - Место или массив мест для отвязки
2282
2282
  */
2283
- async placementUnBind(t) {
2284
- let e = _(this, yt, zt).call(this, t);
2285
- if (e = e.filter(
2283
+ async placementUnBind(e) {
2284
+ let t = _(this, pt, Zt).call(this, e);
2285
+ if (t = t.filter(
2286
2286
  (i) => i.placement !== "PAGE_BACKGROUND_WORKER" && i.placement !== "PAGE_BACKGROUND_WORKER_ALL"
2287
- ), e.length === 0)
2287
+ ), t.length === 0)
2288
2288
  return;
2289
2289
  const r = {};
2290
- for (let i = 0; i < e.length; i++) {
2290
+ for (let i = 0; i < t.length; i++) {
2291
2291
  const a = {
2292
- PLACEMENT: e[i].placement
2292
+ PLACEMENT: t[i].placement
2293
2293
  };
2294
- e[i].handler && (a.HANDLER = e[i].handler), r[`unbind_${i}`] = {
2294
+ t[i].handler && (a.HANDLER = t[i].handler), r[`unbind_${i}`] = {
2295
2295
  method: "placement.unbind",
2296
2296
  params: a
2297
2297
  };
2298
2298
  }
2299
- await this.batch(r), e.forEach((i) => {
2299
+ await this.batch(r), t.forEach((i) => {
2300
2300
  console.log("Встройка отвязана", i.placement);
2301
2301
  });
2302
2302
  }
2303
2303
  /** Чат-бот */
2304
2304
  /* получение списка ботов */
2305
2305
  async getBotList() {
2306
- const t = await this.call({
2306
+ const e = await this.call({
2307
2307
  method: "imbot.bot.list",
2308
2308
  params: {}
2309
- }), e = Object.values(t);
2310
- return console.log("chat-bot list:", e), e;
2309
+ }), t = Object.values(e);
2310
+ return console.log("chat-bot list:", t), t;
2311
2311
  }
2312
2312
  /* регистрация бота */
2313
- async regBot({ code: t, type: e, name: r }) {
2314
- const { appName: i, pathApp: a, chatBotLogo: c } = this.appConst, l = this.appInfo.ID, u = await this.call({
2313
+ async regBot({ code: e, type: t, name: r }) {
2314
+ const { appName: i, pathApp: a, chatBotLogo: c } = this.appConst, l = this.appInfo.ID, h = await this.call({
2315
2315
  method: "imbot.register",
2316
2316
  params: {
2317
- CODE: t ?? this.appInfo.CODE,
2317
+ CODE: e ?? this.appInfo.CODE,
2318
2318
  // Строковой идентификатор бота, уникальный в рамках вашего приложения (обяз.)
2319
- TYPE: e ?? "O",
2319
+ TYPE: t ?? "O",
2320
2320
  // Тип бота, B - чат-бот, ответы поступают сразу, H - человек, ответы поступают с задержкой от 2-х до 10 секунд, O - чат-бот для Открытых линий, S - чат-бот с повышенными привилегиями (supervisor)
2321
2321
  EVENT_HANDLER: a,
2322
2322
  // Ссылка на обработчик событий, поступивших от сервера - см. Обработчики событий ниже (обяз).
@@ -2334,7 +2334,7 @@ class Ie {
2334
2334
  // Цвет чат-бота для мобильного приложения RED, GREEN, MINT, LIGHT_BLUE, DARK_BLUE, PURPLE, AQUA, PINK, LIME, BROWN, AZURE, KHAKI, SAND, MARENGO, GRAY, GRAPHITE
2335
2335
  EMAIL: "",
2336
2336
  // E-mail для связи. НЕЛЬЗЯ использовать e-mail, дублирующий e-mail реальных пользователей
2337
- PERSONAL_BIRTHDAY: Nt().format("%Y-%m-%d"),
2337
+ PERSONAL_BIRTHDAY: Ot().format("%Y-%m-%d"),
2338
2338
  // День рождения в формате YYYY-mm-dd
2339
2339
  WORK_POSITION: "Почтальон",
2340
2340
  // Занимаемая должность, используется как описание чат-бота
@@ -2347,29 +2347,29 @@ class Ie {
2347
2347
  }
2348
2348
  }
2349
2349
  });
2350
- return console.log("Чат-бот добавлен", u), u;
2350
+ return console.log("Чат-бот добавлен", h), h;
2351
2351
  }
2352
2352
  /* Убрать регистрацию бота */
2353
- async unRegBot(t) {
2354
- const e = await this.call({
2353
+ async unRegBot(e) {
2354
+ const t = await this.call({
2355
2355
  method: "imbot.unregister",
2356
2356
  params: {
2357
- BOT_ID: t
2357
+ BOT_ID: e
2358
2358
  }
2359
2359
  });
2360
- return console.log("чат-бот удален", e), e;
2360
+ return console.log("чат-бот удален", t), t;
2361
2361
  }
2362
2362
  /* Получение данных логера */
2363
- getLoggerList(t) {
2364
- return this.logger.getEntityList(t);
2363
+ getLoggerList(e) {
2364
+ return this.logger.getEntityList(e);
2365
2365
  }
2366
2366
  }
2367
- ct = new WeakSet(), _t = function() {
2368
- return this.batchClient || (this.batchClient = new v({
2367
+ lt = new WeakSet(), Tt = function() {
2368
+ return this.batchClient || (this.batchClient = new K({
2369
2369
  callBatch: BX24.callBatch,
2370
2370
  callMethod: BX24.callMethod
2371
2371
  }), this.timeLimit = this.batchClient.timeLimit), this.batchClient;
2372
- }, Ct = new WeakSet(), ce = function() {
2372
+ }, Ht = new WeakSet(), he = function() {
2373
2373
  return {
2374
2374
  start: () => {
2375
2375
  },
@@ -2378,169 +2378,205 @@ ct = new WeakSet(), _t = function() {
2378
2378
  getEntityList: () => {
2379
2379
  }
2380
2380
  };
2381
- }, dt = new WeakSet(), vt = async function(t, { skipInit: e = !1 } = {}) {
2382
- this.logger ? (this.logger = new _e(), e ? this.logger.enableBackworkerMode() : await this.logger.init(), t && typeof this.logger.runStorageMaintenance == "function" && this.logger.runStorageMaintenance()) : this.logger = _(this, Ct, ce).call(this);
2383
- }, Ut = new WeakSet(), le = function() {
2381
+ }, gt = new WeakSet(), zt = async function(e, { skipInit: t = !1 } = {}) {
2382
+ this.logger ? (this.logger = new be(), t ? this.logger.enableBackworkerMode() : await this.logger.init(), e && typeof this.logger.runStorageMaintenance == "function" && this.logger.runStorageMaintenance()) : this.logger = _(this, Ht, he).call(this);
2383
+ }, Ut = new WeakSet(), ue = function() {
2384
2384
  var r, i, a;
2385
- const t = (r = this.placeInfo) == null ? void 0 : r.placement, e = (a = (i = this.placeInfo) == null ? void 0 : i.options) == null ? void 0 : a.ID;
2386
- return t === "PAGE_BACKGROUND_WORKER" || e === "PAGE_BACKGROUND_WORKER";
2387
- }, Ht = new WeakSet(), he = function() {
2385
+ const e = (r = this.placeInfo) == null ? void 0 : r.placement, t = (a = (i = this.placeInfo) == null ? void 0 : i.options) == null ? void 0 : a.ID;
2386
+ return e === "PAGE_BACKGROUND_WORKER" || t === "PAGE_BACKGROUND_WORKER";
2387
+ }, Pt = new WeakSet(), fe = function() {
2388
2388
  return this.call({ method: "app.info" });
2389
- }, Gt = new WeakSet(), ue = function() {
2389
+ }, Gt = new WeakSet(), de = function() {
2390
2390
  return this.call({ method: "user.current" });
2391
- }, V = new WeakSet(), nt = async function(t, e) {
2392
- if (t)
2391
+ }, $ = new WeakSet(), at = async function(e, t) {
2392
+ if (e)
2393
2393
  try {
2394
2394
  await this.logger.stop({
2395
- key: t,
2396
- ...e
2395
+ key: e,
2396
+ ...t
2397
2397
  });
2398
2398
  } catch (r) {
2399
2399
  console.error("Logger error:", r);
2400
2400
  }
2401
- }, gt = new WeakSet(), qt = async function({
2402
- mode: t,
2403
- commandList: e,
2401
+ }, yt = new WeakSet(), Qt = async function({
2402
+ mode: e,
2403
+ commandList: t,
2404
2404
  progressCall: r,
2405
2405
  errorCall: i,
2406
2406
  updateList: a,
2407
2407
  batchOptions: c
2408
2408
  }) {
2409
- const l = _(this, ct, _t).call(this), u = a ? this.logger.start({
2410
- type: t,
2411
- data: t === "batch" ? { commandList: e, updateList: a } : { commandList: e }
2409
+ const l = _(this, lt, Tt).call(this), h = a ? this.logger.start({
2410
+ type: e,
2411
+ data: e === "batch" ? { commandList: t, updateList: a } : { commandList: t }
2412
2412
  }) : void 0;
2413
2413
  try {
2414
- const n = t === "batch" ? await l.batch(e, r, c) : await l.batchTotalCount(e, r), f = _(this, Pt, fe).call(this, l, n, e, a);
2415
- return Object.keys(f).length ? (i && i(f), await _(this, V, nt).call(this, u, {
2414
+ const n = e === "batch" ? await l.batch(t, r, c) : await l.batchTotalCount(t, r), f = _(this, Yt, me).call(this, l, n, t, a);
2415
+ return Object.keys(f).length ? (i && i(f), await _(this, $, at).call(this, h, {
2416
2416
  status: "fail",
2417
2417
  errorList: f
2418
- })) : await _(this, V, nt).call(this, u, { status: "success" }), n;
2418
+ })) : await _(this, $, at).call(this, h, { status: "success" }), n;
2419
2419
  } catch (n) {
2420
- return await _(this, V, nt).call(this, u, {
2420
+ return await _(this, $, at).call(this, h, {
2421
2421
  status: "fail-runtime",
2422
2422
  errorList: { 0: n == null ? void 0 : n.toString() }
2423
2423
  }), console.error(n), !1;
2424
2424
  }
2425
- }, Pt = new WeakSet(), fe = function(t, e, r, i) {
2426
- let a = { ...t.errors };
2427
- if (Object.values(t.errors).some(
2425
+ }, Yt = new WeakSet(), me = function(e, t, r, i) {
2426
+ let a = { ...e.errors };
2427
+ if (Object.values(e.errors).some(
2428
2428
  (l) => {
2429
2429
  if (typeof l != "string")
2430
2430
  return !1;
2431
- const u = l.toUpperCase();
2432
- return u === "TIMEOUT" || u === "OPERATION_TIME_LIMIT" || u.includes("TIMEOUT") || u.includes("OPERATION_TIME_LIMIT");
2431
+ const h = l.toUpperCase();
2432
+ return h === "TIMEOUT" || h === "OPERATION_TIME_LIMIT" || h.includes("TIMEOUT") || h.includes("OPERATION_TIME_LIMIT");
2433
2433
  }
2434
2434
  ) && i) {
2435
- const l = e ? Object.keys(e).filter((d) => d !== "errorsList") : [], u = new Set(Object.keys(t.errors || {})), n = /* @__PURE__ */ new Set();
2436
- if (e) {
2437
- for (const d of l)
2438
- if (!u.has(d)) {
2439
- const A = e[d];
2440
- A != null && n.add(d);
2435
+ const l = t ? Object.keys(t).filter((m) => m !== "errorsList") : [], h = new Set(Object.keys(e.errors || {})), n = /* @__PURE__ */ new Set();
2436
+ if (t) {
2437
+ for (const m of l)
2438
+ if (!h.has(m)) {
2439
+ const A = t[m];
2440
+ A != null && n.add(m);
2441
2441
  }
2442
2442
  }
2443
- const f = Object.values(t.errors).find(
2444
- (d) => {
2445
- if (typeof d != "string")
2443
+ const f = Object.values(e.errors).find(
2444
+ (m) => {
2445
+ if (typeof m != "string")
2446
2446
  return !1;
2447
- const A = d.toUpperCase();
2447
+ const A = m.toUpperCase();
2448
2448
  return A === "TIMEOUT" || A === "OPERATION_TIME_LIMIT" || A.includes("TIMEOUT") || A.includes("OPERATION_TIME_LIMIT");
2449
2449
  }
2450
2450
  );
2451
- for (const d of Object.keys(r))
2452
- !n.has(d) && !t.errors[d] && (a[d] = f || "TIMEOUT или OPERATION_TIME_LIMIT: запрос не был обработан");
2451
+ for (const m of Object.keys(r))
2452
+ !n.has(m) && !e.errors[m] && (a[m] = f || "TIMEOUT или OPERATION_TIME_LIMIT: запрос не был обработан");
2453
2453
  }
2454
2454
  return a;
2455
- }, yt = new WeakSet(), zt = function(t) {
2456
- if (!t)
2455
+ }, pt = new WeakSet(), Zt = function(e) {
2456
+ if (!e)
2457
2457
  return [];
2458
- let e = [];
2459
- return Array.isArray(t) ? e = t.map(
2458
+ let t = [];
2459
+ return Array.isArray(e) ? t = e.map(
2460
2460
  (r) => typeof r == "string" ? { placement: r } : r
2461
- ) : typeof t == "string" ? e = [{ placement: t }] : e = [t], e;
2462
- }, Yt = new WeakSet(), me = function(t) {
2463
- return this.placeData ? this.placeData.filter((e) => !(e.placement === "PAGE_BACKGROUND_WORKER" || !e.handler || e.handler.includes(t))) : [];
2461
+ ) : typeof e == "string" ? t = [{ placement: e }] : t = [e], t;
2462
+ }, Wt = new WeakSet(), ge = function(e) {
2463
+ return this.placeData ? this.placeData.filter((t) => !(t.placement === "PAGE_BACKGROUND_WORKER" || !t.handler || t.handler.includes(e))) : [];
2464
2464
  };
2465
- const de = "szdl-utils-kit|";
2466
- function Ee() {
2465
+ const ye = "szdl-utils-kit|";
2466
+ function Re() {
2467
2467
  if (typeof sessionStorage > "u")
2468
2468
  return `ephemeral-${Date.now()}-${Math.random().toString(16).slice(2)}`;
2469
2469
  let y = sessionStorage.getItem("szdl-cross-tab-instance-id");
2470
2470
  return y || (y = `${Date.now()}-${Math.random().toString(16).slice(2)}`, sessionStorage.setItem("szdl-cross-tab-instance-id", y)), y;
2471
2471
  }
2472
- function Re() {
2472
+ function Me() {
2473
2473
  return typeof navigator < "u" && typeof navigator.locks < "u" && typeof navigator.locks.request == "function";
2474
2474
  }
2475
- const Ft = /* @__PURE__ */ new Map();
2476
- function be(y = "default") {
2475
+ const Xt = /* @__PURE__ */ new Map();
2476
+ function Ie(y = "default") {
2477
2477
  if (typeof BroadcastChannel > "u")
2478
2478
  return null;
2479
- const t = `${de}bc:${y}`;
2480
- return Ft.has(t) || Ft.set(t, new BroadcastChannel(t)), Ft.get(t);
2479
+ const e = `${ye}bc:${y}`;
2480
+ return Xt.has(e) || Xt.set(e, new BroadcastChannel(e)), Xt.get(e);
2481
2481
  }
2482
- function Vt(y, t) {
2483
- const e = be(y);
2484
- if (e)
2482
+ function te(y, e) {
2483
+ const t = Ie(y);
2484
+ if (t)
2485
2485
  try {
2486
- const r = t && typeof t == "object" && !Array.isArray(t) ? t : { data: t };
2487
- e.postMessage({
2486
+ const r = e && typeof e == "object" && !Array.isArray(e) ? e : { data: e };
2487
+ t.postMessage({
2488
2488
  ...r,
2489
- tabId: Ee(),
2489
+ tabId: Re(),
2490
2490
  ts: Date.now()
2491
2491
  });
2492
2492
  } catch {
2493
2493
  }
2494
2494
  }
2495
- async function Le(y, t, e = {}) {
2496
- const { ifAvailable: r = !1 } = e, i = typeof y == "string" && y.length > 0 ? y : "default", a = `${de}${i}`;
2497
- return Re() ? navigator.locks.request(
2495
+ async function Se(y, e, t = {}) {
2496
+ const { ifAvailable: r = !1 } = t, i = typeof y == "string" && y.length > 0 ? y : "default", a = `${ye}${i}`;
2497
+ return Me() ? navigator.locks.request(
2498
2498
  a,
2499
2499
  { mode: "exclusive", ifAvailable: !!r },
2500
2500
  async (c) => {
2501
2501
  if (r && c == null)
2502
2502
  return { skipped: !0, coordination: "locks" };
2503
- Vt(i, { type: "lock-acquired", resource: i });
2503
+ te(i, { type: "lock-acquired", resource: i });
2504
2504
  try {
2505
- return { skipped: !1, result: await t(), coordination: "locks" };
2505
+ return { skipped: !1, result: await e(), coordination: "locks" };
2506
2506
  } finally {
2507
- Vt(i, { type: "lock-released", resource: i });
2507
+ te(i, { type: "lock-released", resource: i });
2508
2508
  }
2509
2509
  }
2510
- ) : { skipped: !1, result: await t(), coordination: "none" };
2510
+ ) : { skipped: !1, result: await e(), coordination: "none" };
2511
2511
  }
2512
- var pt, Qt;
2513
- class Me {
2514
- constructor(t) {
2512
+ const q = {
2513
+ /** Пауза перед первым тиком — разносит старт разных приложений (0 = сразу). */
2514
+ startDelayMs: 0,
2515
+ /** Базовый интервал poll-тиков. */
2516
+ pollIntervalMs: 60 * 1e3,
2517
+ /** Случайная добавка к pollIntervalMs (итого pollIntervalMs … +jitter). */
2518
+ pollIntervalJitterMs: 30 * 1e3,
2519
+ /** Пауза после захвата Web Lock перед повторной проверкой лидерства. */
2520
+ leaderConfirmDelayMs: 60 * 1e3,
2521
+ /** Вкладка «мёртва», если lastActive не обновлялся дольше (см. refreshTabs). */
2522
+ activeMaxPauseMs: 3 * 60 * 1e3,
2523
+ /** Агрессивная очистка tabList при переполнении. */
2524
+ quickCleanupThresholdMs: 5 * 60 * 1e3,
2525
+ /** Heartbeat лидера во время appInit; null — вычислить из poll/activeMaxPause. */
2526
+ leaderHeartbeatMs: null
2527
+ };
2528
+ function De(y = {}) {
2529
+ const e = { ...q, ...y };
2530
+ for (const t of Object.keys(q)) {
2531
+ if (t === "leaderHeartbeatMs") {
2532
+ const i = y == null ? void 0 : y.leaderHeartbeatMs;
2533
+ if (i == null) {
2534
+ e.leaderHeartbeatMs = null;
2535
+ continue;
2536
+ }
2537
+ const a = Number(i);
2538
+ e.leaderHeartbeatMs = Number.isFinite(a) && a >= 0 ? a : null;
2539
+ continue;
2540
+ }
2541
+ const r = Number(e[t]);
2542
+ e[t] = Number.isFinite(r) && r >= 0 ? r : q[t];
2543
+ }
2544
+ return e;
2545
+ }
2546
+ var xt, pe, Nt, Vt;
2547
+ class Be {
2548
+ constructor(e) {
2549
+ R(this, xt);
2515
2550
  /**
2516
2551
  * Канонический base URL для placement (без завершающего `/`).
2517
2552
  * Пустая строка — не биндить (некорректный или marketplace URL).
2518
2553
  */
2519
- L(this, pt);
2520
- H(this, "entityName", "tabs");
2521
- H(this, "maxTabs", 20);
2522
- H(this, "tabList", []);
2523
- H(this, "id", 0);
2524
- H(this, "hasStarted", !1);
2525
- H(this, "heartbeat");
2526
- H(this, "runHeartbeat");
2527
- /** Вкладка считается «мёртвой», если нет обновления lastActive дольше этого (см. refreshTabs). */
2528
- H(this, "activeMaxPause", 10 * 1e3);
2529
- H(this, "quickCleanupThreshold", 2 * 60 * 1e3);
2530
- // агрессивная очистка при переполнении
2531
- /** Должен быть заметно меньше activeMaxPause: иначе «живые» вкладки успеют удалиться до следующего тика. */
2532
- H(this, "pollInterval", 6 * 1e3 + Math.floor(Math.random() * 2e3));
2533
- // ~6–8 с + размазать одновременные запросы
2534
- H(this, "sessionId", `${Date.now()}-${Math.random().toString(16).slice(2)}`);
2535
- H(this, "continueCondition");
2536
- H(this, "defaultContinueBackground", () => !0);
2537
- var c, l, u;
2538
- if (!t) {
2554
+ R(this, Nt);
2555
+ B(this, "entityName", "tabs");
2556
+ B(this, "maxTabs", 20);
2557
+ B(this, "tabList", []);
2558
+ B(this, "id", 0);
2559
+ B(this, "hasStarted", !1);
2560
+ B(this, "heartbeat");
2561
+ B(this, "runHeartbeat");
2562
+ B(this, "startDelay", 0);
2563
+ B(this, "activeMaxPause", q.activeMaxPauseMs);
2564
+ B(this, "quickCleanupThreshold", q.quickCleanupThresholdMs);
2565
+ B(this, "pollInterval", q.pollIntervalMs);
2566
+ B(this, "pollIntervalBase", q.pollIntervalMs);
2567
+ B(this, "pollIntervalJitter", q.pollIntervalJitterMs);
2568
+ B(this, "leaderConfirmDelay", q.leaderConfirmDelayMs);
2569
+ B(this, "leaderHeartbeatMs", null);
2570
+ B(this, "sessionId", `${Date.now()}-${Math.random().toString(16).slice(2)}`);
2571
+ B(this, "continueCondition");
2572
+ B(this, "defaultContinueBackground", () => !0);
2573
+ var l, h, n;
2574
+ if (!e) {
2539
2575
  console.error("BackgroundWorker: Нет опций конструктора");
2540
2576
  return;
2541
2577
  }
2542
- const { appFunc: e, bx: r, users: i, continueBackground: a } = t;
2543
- this.bx = r, this.appInit = e, this.users = i, Kt(r), this.appPath = _(this, pt, Qt).call(this, ((c = r == null ? void 0 : r.appConst) == null ? void 0 : c.pathApp) ?? ""), this.appName = ((l = r == null ? void 0 : r.appConst) == null ? void 0 : l.appName) ?? "", this.appCodeName = ((u = r == null ? void 0 : r.appConst) == null ? void 0 : u.appCodeName) ?? "", this.start = /* @__PURE__ */ new Date(), this.continueCondition = typeof a == "function" ? a : this.defaultContinueBackground;
2578
+ const { appFunc: t, bx: r, users: i, continueBackground: a, timing: c } = e;
2579
+ this.bx = r, this.appInit = t, this.users = i, _(this, xt, pe).call(this, c), qt(r), this.appPath = _(this, Nt, Vt).call(this, ((l = r == null ? void 0 : r.appConst) == null ? void 0 : l.pathApp) ?? ""), this.appName = ((h = r == null ? void 0 : r.appConst) == null ? void 0 : h.appName) ?? "", this.appCodeName = ((n = r == null ? void 0 : r.appConst) == null ? void 0 : n.appCodeName) ?? "", this.start = /* @__PURE__ */ new Date(), this.continueCondition = typeof a == "function" ? a : this.defaultContinueBackground;
2544
2580
  }
2545
2581
  async init() {
2546
2582
  if (!this.appInit) {
@@ -2557,9 +2593,11 @@ class Me {
2557
2593
  );
2558
2594
  return;
2559
2595
  }
2560
- await this.checkPlacementType() && await this.continueBackground() && (await this.checkEntity(), await this.refreshTabs(!0), await this.ensureTabRegistered(), this.heartbeat = setInterval(() => {
2561
- this.backgroundTick().catch((e) => {
2562
- console.error("BackgroundWorker: backgroundTick failed", e);
2596
+ await this.checkPlacementType() && await this.continueBackground() && (await this.checkEntity(), await this.refreshTabs(!0), await this.ensureTabRegistered(), this.startDelay > 0 && (console.log(
2597
+ `BackgroundWorker: старт отложен на ${this.startDelay} мс`
2598
+ ), await this.pause(this.startDelay)), this.heartbeat = setInterval(() => {
2599
+ this.backgroundTick().catch((t) => {
2600
+ console.error("BackgroundWorker: backgroundTick failed", t);
2563
2601
  });
2564
2602
  }, this.pollInterval), await this.backgroundTick());
2565
2603
  }
@@ -2571,18 +2609,18 @@ class Me {
2571
2609
  return;
2572
2610
  }
2573
2611
  await this.refreshTabs(!0), await this.ensureTabRegistered();
2574
- const e = this.selectLeaderId(), r = e && +this.id == +e;
2612
+ const t = this.selectLeaderId(), r = t && +this.id == +t;
2575
2613
  await this.updateTabState(r), r && !this.hasStarted && await this.runAsLeader();
2576
2614
  }
2577
2615
  stopTimers() {
2578
2616
  this.heartbeat && (clearInterval(this.heartbeat), this.heartbeat = void 0), this.runHeartbeat && (clearInterval(this.runHeartbeat), this.runHeartbeat = void 0);
2579
2617
  }
2580
2618
  isAppPage() {
2581
- var t;
2582
- if (typeof BX24 > "u" || !((t = BX24.placement) != null && t.info))
2619
+ var e;
2620
+ if (typeof BX24 > "u" || !((e = BX24.placement) != null && e.info))
2583
2621
  return !1;
2584
2622
  try {
2585
- const e = BX24.placement.info(), r = e == null ? void 0 : e.placement, i = (e == null ? void 0 : e.options) || {}, a = (i == null ? void 0 : i.URI) || "", c = r === "PAGE_BACKGROUND_WORKER" || (i == null ? void 0 : i.ID) === "PAGE_BACKGROUND_WORKER", l = typeof a == "string" && (a.includes("marketplace/app") || a.includes("marketplace/apps") || a.includes("placement") || a.includes("sozdavatel" + this.appCodeName));
2623
+ const t = BX24.placement.info(), r = t == null ? void 0 : t.placement, i = (t == null ? void 0 : t.options) || {}, a = (i == null ? void 0 : i.URI) || "", c = r === "PAGE_BACKGROUND_WORKER" || (i == null ? void 0 : i.ID) === "PAGE_BACKGROUND_WORKER", l = typeof a == "string" && (a.includes("marketplace/app") || a.includes("marketplace/apps") || a.includes("placement") || a.includes("sozdavatel" + this.appCodeName));
2586
2624
  return !c || l;
2587
2625
  } catch {
2588
2626
  return !1;
@@ -2590,11 +2628,11 @@ class Me {
2590
2628
  }
2591
2629
  async checkEntity() {
2592
2630
  var r;
2593
- const t = await this.safeCall(
2631
+ const e = await this.safeCall(
2594
2632
  () => this.bx.call({ method: "entity.get" })
2595
2633
  );
2596
- ((r = t == null ? void 0 : t.find) == null ? void 0 : r.call(
2597
- t,
2634
+ ((r = e == null ? void 0 : e.find) == null ? void 0 : r.call(
2635
+ e,
2598
2636
  (i) => i.ENTITY === this.entityName
2599
2637
  )) || await this.safeCall(
2600
2638
  () => this.bx.call({
@@ -2608,27 +2646,27 @@ class Me {
2608
2646
  );
2609
2647
  }
2610
2648
  async getTabs() {
2611
- const t = await this.safeCall(
2649
+ const e = await this.safeCall(
2612
2650
  () => {
2613
- var e;
2651
+ var t;
2614
2652
  return this.bx.call({
2615
2653
  method: "entity.item.get",
2616
2654
  params: {
2617
2655
  ENTITY: this.entityName,
2618
- FILTER: { NAME: (e = this.bx.userInfo) == null ? void 0 : e.ID },
2656
+ FILTER: { NAME: (t = this.bx.userInfo) == null ? void 0 : t.ID },
2619
2657
  SORT: { DATE_CREATE: "DESC" }
2620
2658
  }
2621
2659
  });
2622
2660
  }
2623
2661
  );
2624
- return !Array.isArray(t) || !t.length ? [] : t.map((e) => {
2625
- if (!e)
2662
+ return !Array.isArray(e) || !e.length ? [] : e.map((t) => {
2663
+ if (!t)
2626
2664
  return { id: void 0, data: void 0 };
2627
2665
  try {
2628
- const r = JSON.parse(e.DETAIL_TEXT);
2629
- return { id: +e.ID || 0, data: r };
2666
+ const r = JSON.parse(t.DETAIL_TEXT);
2667
+ return { id: +t.ID || 0, data: r };
2630
2668
  } catch (r) {
2631
- return console.log("BackgroundWorker: parse tab error", r), { id: +e.ID || 0, data: void 0 };
2669
+ return console.log("BackgroundWorker: parse tab error", r), { id: +t.ID || 0, data: void 0 };
2632
2670
  }
2633
2671
  });
2634
2672
  }
@@ -2639,12 +2677,12 @@ class Me {
2639
2677
  return console.log(
2640
2678
  "BackgroundWorker: Достигнут лимит вкладок даже после быстрой очистки, не регистрируемся"
2641
2679
  ), 0;
2642
- const t = {
2680
+ const e = {
2643
2681
  lastActive: (/* @__PURE__ */ new Date()).toISOString(),
2644
2682
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
2645
2683
  start: !1,
2646
2684
  sessionId: this.sessionId
2647
- }, e = await this.safeCall(
2685
+ }, t = await this.safeCall(
2648
2686
  () => {
2649
2687
  var r;
2650
2688
  return this.bx.call({
@@ -2652,20 +2690,20 @@ class Me {
2652
2690
  params: {
2653
2691
  ENTITY: this.entityName,
2654
2692
  NAME: (r = this.bx.userInfo) == null ? void 0 : r.ID,
2655
- DETAIL_TEXT: JSON.stringify(t)
2693
+ DETAIL_TEXT: JSON.stringify(e)
2656
2694
  }
2657
2695
  });
2658
2696
  }
2659
2697
  ) || 0;
2660
- return this.id = +e || 0, this.id;
2698
+ return this.id = +t || 0, this.id;
2661
2699
  }
2662
- async updateTabState(t) {
2700
+ async updateTabState(e) {
2663
2701
  if (!this.id)
2664
2702
  return;
2665
- const e = {
2703
+ const t = {
2666
2704
  lastActive: (/* @__PURE__ */ new Date()).toISOString(),
2667
2705
  createdAt: this.start.toISOString(),
2668
- start: t,
2706
+ start: e,
2669
2707
  sessionId: this.sessionId
2670
2708
  };
2671
2709
  await this.safeCall(
@@ -2677,25 +2715,25 @@ class Me {
2677
2715
  ENTITY: this.entityName,
2678
2716
  ID: this.id,
2679
2717
  NAME: (r = this.bx.userInfo) == null ? void 0 : r.ID,
2680
- DETAIL_TEXT: JSON.stringify(e)
2718
+ DETAIL_TEXT: JSON.stringify(t)
2681
2719
  }
2682
2720
  });
2683
2721
  }
2684
2722
  );
2685
2723
  }
2686
- async deleteTabs(t = []) {
2687
- if (!t.length)
2724
+ async deleteTabs(e = []) {
2725
+ if (!e.length)
2688
2726
  return;
2689
- const e = t.map((r) => ({
2727
+ const t = e.map((r) => ({
2690
2728
  method: "entity.item.delete",
2691
2729
  params: { ENTITY: this.entityName, ID: r.id }
2692
2730
  }));
2693
- await this.safeCall(() => this.bx.batch(e));
2731
+ await this.safeCall(() => this.bx.batch(t));
2694
2732
  }
2695
2733
  async checkPlacementType() {
2696
- var t, e;
2734
+ var e, t;
2697
2735
  try {
2698
- if (!((t = this.bx) != null && t.isAdmin))
2736
+ if (!((e = this.bx) != null && e.isAdmin))
2699
2737
  return !0;
2700
2738
  const r = await this.safeCall(
2701
2739
  () => this.bx.getPlacement()
@@ -2704,16 +2742,16 @@ class Me {
2704
2742
  return console.log(
2705
2743
  "BackgroundWorker: Не получили список размещений, продолжаем"
2706
2744
  ), !0;
2707
- const i = +(((e = this.bx.userInfo) == null ? void 0 : e.ID) ?? 0), a = this.isIndividualPlacement(
2745
+ const i = +(((t = this.bx.userInfo) == null ? void 0 : t.ID) ?? 0), a = this.isIndividualPlacement(
2708
2746
  typeof window < "u" ? window.location.href : ""
2709
2747
  ), c = !a;
2710
2748
  if (!i)
2711
2749
  return !0;
2712
2750
  let l = !1;
2713
- for (const u of r) {
2714
- if (u.placement !== "PAGE_BACKGROUND_WORKER" || !(u.userId || u.handler && u.handler.includes("USER_ID=")))
2751
+ for (const h of r) {
2752
+ if (h.placement !== "PAGE_BACKGROUND_WORKER" || !(h.userId || h.handler && h.handler.includes("USER_ID=")))
2715
2753
  continue;
2716
- const f = u.userId || (u.handler ? this.extractUserIdFromHandler(u.handler) : null);
2754
+ const f = h.userId || (h.handler ? this.extractUserIdFromHandler(h.handler) : null);
2717
2755
  if (f && +f === i) {
2718
2756
  l = !0;
2719
2757
  break;
@@ -2733,116 +2771,129 @@ class Me {
2733
2771
  ), !0;
2734
2772
  }
2735
2773
  }
2736
- isIndividualPlacement(t) {
2737
- return !t || typeof t != "string" ? !1 : t.includes("USER_ID=");
2774
+ isIndividualPlacement(e) {
2775
+ return !e || typeof e != "string" ? !1 : e.includes("USER_ID=");
2738
2776
  }
2739
- extractUserIdFromHandler(t) {
2740
- if (!t || typeof t != "string")
2777
+ extractUserIdFromHandler(e) {
2778
+ if (!e || typeof e != "string")
2741
2779
  return null;
2742
- const e = t.match(/USER_ID=(\d+)/);
2743
- return e ? +e[1] : null;
2780
+ const t = e.match(/USER_ID=(\d+)/);
2781
+ return t ? +t[1] : null;
2744
2782
  }
2745
2783
  async continueBackground() {
2746
2784
  try {
2747
- const e = !!await Promise.resolve(
2785
+ const t = !!await Promise.resolve(
2748
2786
  this.continueCondition(this)
2749
2787
  );
2750
- return console.log(e ? "BackgroundWorker: Условие продолжения выполнено" : "BackgroundWorker: continueBackground вернул false"), e;
2751
- } catch (t) {
2788
+ return console.log(t ? "BackgroundWorker: Условие продолжения выполнено" : "BackgroundWorker: continueBackground вернул false"), t;
2789
+ } catch (e) {
2752
2790
  return console.error(
2753
2791
  "BackgroundWorker: Ошибка в continueCondition",
2754
- t
2792
+ e
2755
2793
  ), !1;
2756
2794
  }
2757
2795
  }
2758
- async refreshTabs(t = !1, e = this.activeMaxPause) {
2796
+ async refreshTabs(e = !1, t = this.activeMaxPause) {
2759
2797
  const r = [], i = [], a = Date.now(), c = await this.getTabs();
2760
2798
  for (const l of c) {
2761
2799
  if (!(l != null && l.data)) {
2762
2800
  r.push(l);
2763
2801
  continue;
2764
2802
  }
2765
- if (a - new Date(l.data.lastActive || 0).getTime() > e) {
2803
+ if (a - new Date(l.data.lastActive || 0).getTime() > t) {
2766
2804
  r.push(l);
2767
2805
  continue;
2768
2806
  }
2769
2807
  i.push(l);
2770
2808
  }
2771
- return t && r.length && await this.deleteTabs(r), this.tabList = i, i;
2809
+ return e && r.length && await this.deleteTabs(r), this.tabList = i, i;
2772
2810
  }
2773
2811
  selectLeaderId() {
2774
- var e;
2775
- return this.tabList.length && +((e = [...this.tabList].sort((r, i) => {
2776
- var l, u, n, f;
2812
+ var t;
2813
+ return this.tabList.length && +((t = [...this.tabList].sort((r, i) => {
2814
+ var l, h, n, f;
2777
2815
  const a = new Date(
2778
- ((l = r.data) == null ? void 0 : l.createdAt) || ((u = r.data) == null ? void 0 : u.lastActive) || 0
2816
+ ((l = r.data) == null ? void 0 : l.createdAt) || ((h = r.data) == null ? void 0 : h.lastActive) || 0
2779
2817
  ).getTime(), c = new Date(
2780
2818
  ((n = i.data) == null ? void 0 : n.createdAt) || ((f = i.data) == null ? void 0 : f.lastActive) || 0
2781
2819
  ).getTime();
2782
2820
  return a === c ? (+r.id || 0) - (+i.id || 0) : a - c;
2783
- })[0]) == null ? void 0 : e.id) || 0;
2821
+ })[0]) == null ? void 0 : t.id) || 0;
2822
+ }
2823
+ async confirmLeaderAfterLock() {
2824
+ await this.refreshTabs(!0);
2825
+ const e = this.selectLeaderId();
2826
+ return !!(e && +this.id == +e);
2784
2827
  }
2785
2828
  async runAsLeader() {
2786
2829
  var i, a;
2787
- const t = String(((a = (i = this.bx) == null ? void 0 : i.userInfo) == null ? void 0 : a.ID) ?? "0"), e = `background-worker:${this.entityName}:${t}`;
2788
- (await Le(
2789
- e,
2830
+ const e = String(((a = (i = this.bx) == null ? void 0 : i.userInfo) == null ? void 0 : a.ID) ?? "0"), t = `background-worker:${this.entityName}:${e}`;
2831
+ (await Se(
2832
+ t,
2790
2833
  async () => {
2834
+ if (await this.updateTabState(!0), console.log(
2835
+ `BackgroundWorker: захват лидерства, пауза ${this.leaderConfirmDelay} мс перед запуском`
2836
+ ), await this.pause(this.leaderConfirmDelay), !await this.confirmLeaderAfterLock()) {
2837
+ console.log(
2838
+ "BackgroundWorker: запуск отменён — после паузы лидером оказалась другая вкладка"
2839
+ ), await this.updateTabState(!1);
2840
+ return;
2841
+ }
2791
2842
  this.hasStarted = !0;
2792
- const c = Math.min(
2843
+ const l = this.leaderHeartbeatMs ?? Math.min(
2793
2844
  this.activeMaxPause - 1500,
2794
2845
  Math.max(2500, Math.floor(this.pollInterval / 2))
2795
2846
  );
2796
2847
  this.runHeartbeat = setInterval(
2797
2848
  () => {
2798
2849
  this.updateTabState(!0).catch(
2799
- (l) => console.error(
2850
+ (h) => console.error(
2800
2851
  "BackgroundWorker: heartbeat update failed",
2801
- l
2852
+ h
2802
2853
  )
2803
2854
  );
2804
2855
  },
2805
- c
2856
+ l
2806
2857
  );
2807
2858
  try {
2808
2859
  await this.appInit();
2809
- } catch (l) {
2810
- console.error("BackgroundWorker: appInit failed", l);
2860
+ } catch (h) {
2861
+ console.error("BackgroundWorker: appInit failed", h);
2811
2862
  }
2812
2863
  this.stopTimers(), this.id && (await this.deleteTabs([{ id: this.id }]), this.id = 0);
2813
2864
  },
2814
2865
  { ifAvailable: !0 }
2815
2866
  )).skipped && console.log(
2816
- "BackgroundWorker: runAsLeader пропущен — Web Lock у другой вкладки (тот же фоновый воркер)"
2867
+ "BackgroundWorker: runAsLeader пропущен — Web Lock у другой вкладки (подтверждение лидерства)"
2817
2868
  );
2818
2869
  }
2819
2870
  async setBackgroundWorkerAll() {
2820
- var S, p, R, C;
2821
- if (!((S = this.bx) != null && S.isAdmin)) {
2871
+ var M, p, b, H;
2872
+ if (!((M = this.bx) != null && M.isAdmin)) {
2822
2873
  console.log(
2823
2874
  "BackgroundWorker: setBackgroundWorkerAll доступен только админам"
2824
2875
  );
2825
2876
  return;
2826
2877
  }
2827
- (p = this.users) != null && p.length || await this.getEntityData(), Kt(this.bx);
2828
- const t = _(this, pt, Qt).call(this, ((C = (R = this.bx) == null ? void 0 : R.appConst) == null ? void 0 : C.pathApp) ?? "");
2829
- if (!t) {
2878
+ (p = this.users) != null && p.length || await this.getEntityData(), qt(this.bx);
2879
+ const e = _(this, Nt, Vt).call(this, ((H = (b = this.bx) == null ? void 0 : b.appConst) == null ? void 0 : H.pathApp) ?? "");
2880
+ if (!e) {
2830
2881
  console.error(
2831
2882
  "BackgroundWorker: setBackgroundWorkerAll — нет валидного pathApp, привязка PAGE_BACKGROUND_WORKER пропущена"
2832
2883
  );
2833
2884
  return;
2834
2885
  }
2835
- const e = await this.safeCall(
2886
+ const t = await this.safeCall(
2836
2887
  () => this.bx.getPlacement()
2837
2888
  ), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
2838
2889
  let a = null;
2839
- (e || []).forEach((N) => {
2890
+ (t || []).forEach((N) => {
2840
2891
  if (N.placement !== "PAGE_BACKGROUND_WORKER")
2841
2892
  return;
2842
2893
  if (N.userId || N.handler && N.handler.includes("USER_ID=")) {
2843
- const b = N.userId || (N.handler ? this.extractUserIdFromHandler(N.handler) : null);
2844
- if (b) {
2845
- const w = +b;
2894
+ const L = N.userId || (N.handler ? this.extractUserIdFromHandler(N.handler) : null);
2895
+ if (L) {
2896
+ const w = +L;
2846
2897
  r.set(w, N), i.has(w) || i.set(w, []), i.get(w).push(N);
2847
2898
  }
2848
2899
  } else
@@ -2850,45 +2901,45 @@ class Me {
2850
2901
  });
2851
2902
  const c = await this.resolveAdmins(), l = await this.getEligibleUsersForBackgroundWorker(c);
2852
2903
  l.sort((N, I) => {
2853
- const b = N.LAST_LOGIN ? new Date(N.LAST_LOGIN) : /* @__PURE__ */ new Date(0);
2854
- return (I.LAST_LOGIN ? new Date(I.LAST_LOGIN) : /* @__PURE__ */ new Date(0)) - b;
2904
+ const L = N.LAST_LOGIN ? new Date(N.LAST_LOGIN) : /* @__PURE__ */ new Date(0);
2905
+ return (I.LAST_LOGIN ? new Date(I.LAST_LOGIN) : /* @__PURE__ */ new Date(0)) - L;
2855
2906
  });
2856
- const u = 10, n = l.slice(0, u), f = n.filter((N) => {
2907
+ const h = 10, n = l.slice(0, h), f = n.filter((N) => {
2857
2908
  const I = r.get(+N.ID);
2858
2909
  if (!I)
2859
2910
  return !0;
2860
- const b = `${t}?USER_ID=${N.ID}/`;
2861
- return I.handler !== b;
2862
- }), d = [];
2911
+ const L = `${e}?USER_ID=${N.ID}/`;
2912
+ return I.handler !== L;
2913
+ }), m = [];
2863
2914
  for (const [N] of r) {
2864
2915
  const I = +N || 0;
2865
- l.find((w) => +w.ID === I) || d.push(I);
2916
+ l.find((w) => +w.ID === I) || m.push(I);
2866
2917
  }
2867
2918
  for (const N of n) {
2868
2919
  const I = r.get(+N.ID);
2869
2920
  if (!I)
2870
2921
  continue;
2871
- const b = `${t}?USER_ID=${N.ID}/`;
2872
- I.handler !== b && d.push(+N.ID);
2922
+ const L = `${e}?USER_ID=${N.ID}/`;
2923
+ I.handler !== L && m.push(+N.ID);
2873
2924
  }
2874
- const A = [], h = [...new Set(d)];
2875
- for (const N of h) {
2925
+ const A = [], u = [...new Set(m)];
2926
+ for (const N of u) {
2876
2927
  const I = i.get(+N) || [];
2877
- for (const b of I)
2878
- b != null && b.handler && A.push({
2928
+ for (const L of I)
2929
+ L != null && L.handler && A.push({
2879
2930
  method: "placement.unbind",
2880
2931
  params: {
2881
2932
  PLACEMENT: "PAGE_BACKGROUND_WORKER",
2882
- HANDLER: b.handler
2933
+ HANDLER: L.handler
2883
2934
  }
2884
2935
  });
2885
2936
  }
2886
- const O = a && (f.length > 0 || a.handler !== `${t}`);
2937
+ const O = a && (f.length > 0 || a.handler !== `${e}`);
2887
2938
  O && A.push({
2888
2939
  method: "placement.unbind",
2889
2940
  params: {
2890
2941
  PLACEMENT: "PAGE_BACKGROUND_WORKER",
2891
- HANDLER: a.handler || `${t}`
2942
+ HANDLER: a.handler || `${e}`
2892
2943
  }
2893
2944
  });
2894
2945
  for (const N of f)
@@ -2896,10 +2947,10 @@ class Me {
2896
2947
  method: "placement.bind",
2897
2948
  params: {
2898
2949
  PLACEMENT: "PAGE_BACKGROUND_WORKER",
2899
- HANDLER: `${t}?USER_ID=${N.ID}/`,
2950
+ HANDLER: `${e}?USER_ID=${N.ID}/`,
2900
2951
  LANG_ALL: { ru: { TITLE: this.appName } },
2901
2952
  OPTIONS: {
2902
- errorHandlerUrl: `${t}?USER_ID=${N.ID}/`
2953
+ errorHandlerUrl: `${e}?USER_ID=${N.ID}/`
2903
2954
  },
2904
2955
  USER_ID: N.ID
2905
2956
  }
@@ -2908,9 +2959,9 @@ class Me {
2908
2959
  method: "placement.bind",
2909
2960
  params: {
2910
2961
  PLACEMENT: "PAGE_BACKGROUND_WORKER",
2911
- HANDLER: `${t}`,
2962
+ HANDLER: `${e}`,
2912
2963
  LANG_ALL: { ru: { TITLE: this.appName } },
2913
- OPTIONS: { errorHandlerUrl: `${t}` }
2964
+ OPTIONS: { errorHandlerUrl: `${e}` }
2914
2965
  }
2915
2966
  });
2916
2967
  const T = A.filter(
@@ -2933,15 +2984,15 @@ class Me {
2933
2984
  ), A.length || console.log("setBackgroundWorkerAll: Нет операций");
2934
2985
  }
2935
2986
  async resolveAdmins() {
2936
- var t, e;
2987
+ var e, t;
2937
2988
  try {
2938
- const r = +(((t = this.bx.userInfo) == null ? void 0 : t.ID) ?? 0), i = !!((e = this.bx) != null && e.isAdmin), a = await this.getAdminsList() || [];
2989
+ const r = +(((e = this.bx.userInfo) == null ? void 0 : e.ID) ?? 0), i = !!((t = this.bx) != null && t.isAdmin), a = await this.getAdminsList() || [];
2939
2990
  if (!i) {
2940
2991
  if (r && a.includes(+r)) {
2941
- const u = a.filter(
2992
+ const h = a.filter(
2942
2993
  (n) => +n != +r
2943
2994
  );
2944
- return await this.saveAdminsList(u), u;
2995
+ return await this.saveAdminsList(h), h;
2945
2996
  }
2946
2997
  return a;
2947
2998
  }
@@ -2953,72 +3004,81 @@ class Me {
2953
3004
  return console.error("BackgroundWorker: resolveAdmins error", r), [];
2954
3005
  }
2955
3006
  }
2956
- async getEligibleUsersForBackgroundWorker(t = []) {
2957
- const e = (this.users ?? []).filter(
3007
+ async getEligibleUsersForBackgroundWorker(e = []) {
3008
+ const t = (this.users ?? []).filter(
2958
3009
  (i) => i.ACTIVE === "Y" || i.ACTIVE === !0
2959
- ), r = t.map((i) => +i || 0).filter(Boolean);
2960
- return e.filter((i) => r.includes(+i.ID || 0));
3010
+ ), r = e.map((i) => +i || 0).filter(Boolean);
3011
+ return t.filter((i) => r.includes(+i.ID || 0));
2961
3012
  }
2962
- async saveAdminsList(t = []) {
3013
+ async saveAdminsList(e = []) {
2963
3014
  try {
2964
- BX24.appOption.set("adminsList", JSON.stringify(t));
2965
- } catch (e) {
2966
- console.error("BackgroundWorker: saveAdminsList error", e);
3015
+ BX24.appOption.set("adminsList", JSON.stringify(e));
3016
+ } catch (t) {
3017
+ console.error("BackgroundWorker: saveAdminsList error", t);
2967
3018
  }
2968
3019
  }
2969
3020
  async getAdminsList() {
2970
3021
  try {
2971
- const t = BX24.appOption.get("adminsList"), e = t ? JSON.parse(t) : [];
2972
- return Array.isArray(e) ? e.map((r) => +r || 0).filter(Boolean) : [];
2973
- } catch (t) {
2974
- return console.error("BackgroundWorker: getAdminsList error", t), [];
3022
+ const e = BX24.appOption.get("adminsList"), t = e ? JSON.parse(e) : [];
3023
+ return Array.isArray(t) ? t.map((r) => +r || 0).filter(Boolean) : [];
3024
+ } catch (e) {
3025
+ return console.error("BackgroundWorker: getAdminsList error", e), [];
2975
3026
  }
2976
3027
  }
2977
3028
  async getEntityData() {
2978
- const t = {
3029
+ const e = {
2979
3030
  users: { method: "user.get", params: { filter: { ACTIVE: "Y" } } }
2980
- }, { users: e } = await this.safeCall(
2981
- () => this.bx.batch(t).then((r) => r ? (Array.isArray(r.users) || (r.users = []), r) : { users: [] })
3031
+ }, { users: t } = await this.safeCall(
3032
+ () => this.bx.batch(e).then((r) => r ? (Array.isArray(r.users) || (r.users = []), r) : { users: [] })
2982
3033
  );
2983
- this.users = e;
3034
+ this.users = t;
2984
3035
  }
2985
3036
  /**
2986
3037
  * Без запуска фонового цикла: только убедиться, что у админа привязаны встройки
2987
3038
  * (общая и индивидуальные) и что список пользователей подгружен.
2988
3039
  */
2989
3040
  async ensureAdminPlacements() {
2990
- var t, e;
2991
- (t = this.bx) != null && t.isAdmin && ((e = this.users) != null && e.length || await this.getEntityData(), await this.setBackgroundWorkerAll());
3041
+ var e, t;
3042
+ (e = this.bx) != null && e.isAdmin && ((t = this.users) != null && t.length || await this.getEntityData(), await this.setBackgroundWorkerAll());
2992
3043
  }
2993
- pause(t = 500, e) {
3044
+ pause(e = 500, t) {
2994
3045
  return new Promise((r) => {
2995
3046
  setTimeout(() => {
2996
- e && e(), r(!0);
2997
- }, t);
3047
+ t && t(), r(!0);
3048
+ }, e);
2998
3049
  });
2999
3050
  }
3000
- async safeCall(t) {
3051
+ async safeCall(e) {
3001
3052
  try {
3002
- return await t();
3003
- } catch (e) {
3004
- console.error("BackgroundWorker: safeCall error", e);
3053
+ return await e();
3054
+ } catch (t) {
3055
+ console.error("BackgroundWorker: safeCall error", t);
3005
3056
  return;
3006
3057
  }
3007
3058
  }
3008
3059
  }
3009
- pt = new WeakSet(), Qt = function(t) {
3010
- if (!t || typeof t != "string")
3060
+ xt = new WeakSet(), pe = function(e) {
3061
+ const t = De(e);
3062
+ this.startDelay = t.startDelayMs, this.leaderConfirmDelay = t.leaderConfirmDelayMs, this.activeMaxPause = t.activeMaxPauseMs, this.quickCleanupThreshold = t.quickCleanupThresholdMs, this.pollIntervalBase = t.pollIntervalMs, this.pollIntervalJitter = t.pollIntervalJitterMs, this.pollInterval = t.pollIntervalMs + (t.pollIntervalJitterMs > 0 ? Math.floor(Math.random() * t.pollIntervalJitterMs) : 0), this.leaderHeartbeatMs = t.leaderHeartbeatMs;
3063
+ const r = t.pollIntervalMs + t.pollIntervalJitterMs + t.leaderConfirmDelayMs;
3064
+ t.activeMaxPauseMs < r && console.warn(
3065
+ `BackgroundWorker: activeMaxPauseMs (${t.activeMaxPauseMs}) меньше poll+jitter+leaderConfirm (${r}) — «живые» вкладки могут удаляться раньше следующего тика`
3066
+ );
3067
+ }, Nt = new WeakSet(), Vt = function(e) {
3068
+ if (!e || typeof e != "string")
3011
3069
  return "";
3012
- const e = Zt(t).replace(/\/+$/, "");
3013
- return e ? Ae(e) ? (console.error(
3070
+ const t = $t(e).replace(/\/+$/, "");
3071
+ return t ? le(t) ? (console.error(
3014
3072
  "BackgroundWorker: pathApp не должен указывать на /marketplace/app/… Откройте приложение во встроенном iframe (entry CDN), не в оболочке маркетплейса."
3015
- ), "") : e : "";
3073
+ ), "") : t : "";
3016
3074
  };
3017
3075
  export {
3018
- Me as BackgroundWorker,
3019
- v as Batch,
3020
- Ie as BxBoot,
3021
- re as BxHelper,
3022
- _e as BxLogger,
3023
- Nt as tempus
3076
+ Be as BackgroundWorker,
3077
+ K as Batch,
3078
+ we as BxBoot,
3079
+ ne as BxHelper,
3080
+ be as BxLogger,
3081
+ q as DEFAULT_BACKGROUND_WORKER_TIMING,
3082
+ De as resolveBackgroundWorkerTiming,
3083
+ Ot as tempus
3024
3084
  };