szdl-utils-kit 0.3.8 → 0.3.9
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 +269 -279
- package/dist/index.umd.cjs +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -30,10 +30,10 @@ var ct = { exports: {} };
|
|
|
30
30
|
return f;
|
|
31
31
|
}, a = function(t, n) {
|
|
32
32
|
return n !== r ? (t.year(n.year() || n.year), t.month(n.month() || n.month), t.day(n.day() || n.day), t.hours(n.hours() || n.hours), t.minutes(n.minutes() || n.minutes), t.seconds(n.seconds() || n.seconds), t.milliseconds(n.milliseconds() || n.milliseconds), t) : r;
|
|
33
|
-
},
|
|
33
|
+
}, l = function(t, n) {
|
|
34
34
|
var f, m = "";
|
|
35
35
|
return f = t.slice(n, n + 1), f !== "" && !isNaN(Number(f)) && (m += "%H"), f = t.charAt(n + 2), f !== "" && f === ":" && (m += f), f = t.slice(n + 3, n + 4), f !== "" && !isNaN(Number(f)) && (m += "%M"), f = t.charAt(n + 5), f !== "" && f === ":" && (m += f), f = t.slice(n + 6, n + 7), f !== "" && !isNaN(Number(f)) && (m += "%S"), m;
|
|
36
|
-
},
|
|
36
|
+
}, u = function(t, n) {
|
|
37
37
|
var f, m = [
|
|
38
38
|
t.slice(n, n + 1),
|
|
39
39
|
t.charAt(n + 2),
|
|
@@ -48,7 +48,7 @@ var ct = { exports: {} };
|
|
|
48
48
|
t.charAt(n + 7),
|
|
49
49
|
t.slice(n + 8, n + 9)
|
|
50
50
|
], !isNaN(Number(I[0])) && !isNaN(Number(I[2])) && !isNaN(Number(I[4])) ? (I[1] === "-" && I[3] === "-" && (f = "%Y-%m-%d"), f) : "");
|
|
51
|
-
},
|
|
51
|
+
}, h = i.tempus, s, d, O = i.navigator || {}, c = "en", A = {
|
|
52
52
|
en: {
|
|
53
53
|
JANUARY_SHORT: "Jan",
|
|
54
54
|
FEBRUARY_SHORT: "Feb",
|
|
@@ -211,53 +211,53 @@ var ct = { exports: {} };
|
|
|
211
211
|
}
|
|
212
212
|
}, g = function() {
|
|
213
213
|
return [
|
|
214
|
-
A[
|
|
215
|
-
A[
|
|
216
|
-
A[
|
|
217
|
-
A[
|
|
218
|
-
A[
|
|
219
|
-
A[
|
|
220
|
-
A[
|
|
221
|
-
A[
|
|
222
|
-
A[
|
|
223
|
-
A[
|
|
224
|
-
A[
|
|
225
|
-
A[
|
|
214
|
+
A[c].JANUARY_LONG,
|
|
215
|
+
A[c].FEBRUARY_LONG,
|
|
216
|
+
A[c].MARCH_LONG,
|
|
217
|
+
A[c].APRIL_LONG,
|
|
218
|
+
A[c].MAY_LONG,
|
|
219
|
+
A[c].JUNE_LONG,
|
|
220
|
+
A[c].JULY_LONG,
|
|
221
|
+
A[c].AUGUST_LONG,
|
|
222
|
+
A[c].SEPTEMBER_LONG,
|
|
223
|
+
A[c].OCTOBER_LONG,
|
|
224
|
+
A[c].NOVEMBER_LONG,
|
|
225
|
+
A[c].DECEMBER_LONG
|
|
226
226
|
];
|
|
227
227
|
}, N = function() {
|
|
228
228
|
return [
|
|
229
|
-
A[
|
|
230
|
-
A[
|
|
231
|
-
A[
|
|
232
|
-
A[
|
|
233
|
-
A[
|
|
234
|
-
A[
|
|
235
|
-
A[
|
|
236
|
-
A[
|
|
237
|
-
A[
|
|
238
|
-
A[
|
|
239
|
-
A[
|
|
240
|
-
A[
|
|
229
|
+
A[c].JANUARY_SHORT,
|
|
230
|
+
A[c].FEBRUARY_SHORT,
|
|
231
|
+
A[c].MARCH_SHORT,
|
|
232
|
+
A[c].APRIL_SHORT,
|
|
233
|
+
A[c].MAY_SHORT,
|
|
234
|
+
A[c].JUNE_SHORT,
|
|
235
|
+
A[c].JULY_SHORT,
|
|
236
|
+
A[c].AUGUST_SHORT,
|
|
237
|
+
A[c].SEPTEMBER_SHORT,
|
|
238
|
+
A[c].OCTOBER_SHORT,
|
|
239
|
+
A[c].NOVEMBER_SHORT,
|
|
240
|
+
A[c].DECEMBER_SHORT
|
|
241
241
|
];
|
|
242
|
-
},
|
|
242
|
+
}, p = function() {
|
|
243
243
|
return [
|
|
244
|
-
A[
|
|
245
|
-
A[
|
|
246
|
-
A[
|
|
247
|
-
A[
|
|
248
|
-
A[
|
|
249
|
-
A[
|
|
250
|
-
A[
|
|
244
|
+
A[c].SUNDAY_LONG,
|
|
245
|
+
A[c].MONDAY_LONG,
|
|
246
|
+
A[c].TUESDAY_LONG,
|
|
247
|
+
A[c].WEDNESDAY_LONG,
|
|
248
|
+
A[c].THURSDAY_LONG,
|
|
249
|
+
A[c].FRIDAY_LONG,
|
|
250
|
+
A[c].SATURDAY_LONG
|
|
251
251
|
];
|
|
252
252
|
}, L = function() {
|
|
253
253
|
return [
|
|
254
|
-
A[
|
|
255
|
-
A[
|
|
256
|
-
A[
|
|
257
|
-
A[
|
|
258
|
-
A[
|
|
259
|
-
A[
|
|
260
|
-
A[
|
|
254
|
+
A[c].SUNDAY_SHORT,
|
|
255
|
+
A[c].MONDAY_SHORT,
|
|
256
|
+
A[c].TUESDAY_SHORT,
|
|
257
|
+
A[c].WEDNESDAY_SHORT,
|
|
258
|
+
A[c].THURSDAY_SHORT,
|
|
259
|
+
A[c].FRIDAY_SHORT,
|
|
260
|
+
A[c].SATURDAY_SHORT
|
|
261
261
|
];
|
|
262
262
|
}, U, P, W, b, k = function(t, n, f) {
|
|
263
263
|
var m;
|
|
@@ -710,7 +710,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
710
710
|
}
|
|
711
711
|
return r;
|
|
712
712
|
}, s.noConflict = function() {
|
|
713
|
-
return i.tempus =
|
|
713
|
+
return i.tempus = h, s;
|
|
714
714
|
}, s.generate = function(t) {
|
|
715
715
|
var n, f, m, I, y, R, j, C;
|
|
716
716
|
if (typeof t.dateFrom != "number" && (t.dateFrom instanceof T ? n = t.dateFrom.utc() : n = s(t.dateFrom, t.formatFrom).utc()), typeof t.dateTo != "number" && (t.dateTo instanceof T ? f = t.dateTo.utc() : f = s(t.dateTo, t.formatTo !== r ? t.formatTo : t.formatFrom).utc()), typeof t.period == "number" ? y = {
|
|
@@ -776,9 +776,9 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
776
776
|
}
|
|
777
777
|
}, s.lang = function(t) {
|
|
778
778
|
if (t !== r)
|
|
779
|
-
|
|
779
|
+
c = t, A[c] === r && (c = "en"), U = g(), P = N(), W = p(), b = L();
|
|
780
780
|
else
|
|
781
|
-
return
|
|
781
|
+
return c;
|
|
782
782
|
return r;
|
|
783
783
|
}, s.availableLangs = function() {
|
|
784
784
|
return Object.keys(A);
|
|
@@ -794,7 +794,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
794
794
|
delete S[t];
|
|
795
795
|
}, s.detectFormat = function(t) {
|
|
796
796
|
var n, f, m;
|
|
797
|
-
return n =
|
|
797
|
+
return n = u(t, 0), n !== "" && (m = 10), f = t.charAt(m), (f === "T" || f === " ") && (n += f, m += 1), n += l(t, m), n;
|
|
798
798
|
}, d = {
|
|
799
799
|
TempusDate: T
|
|
800
800
|
}, s.classes = function(t, n) {
|
|
@@ -806,7 +806,7 @@ https://github.com/douglascrockford/JSON-js/blob/master/json2.js`) : n(JSON.pars
|
|
|
806
806
|
A = n;
|
|
807
807
|
}, function(n) {
|
|
808
808
|
});
|
|
809
|
-
},
|
|
809
|
+
}, c = (O.language || O.systemLanguage || O.userLanguage || "en").substr(0, 2).toLowerCase(), A[c] === r && (c = "en"), U = g(), P = N(), W = p(), b = L(), _.exports && (e = _.exports = s), e.tempus = s;
|
|
810
810
|
}).call(yt);
|
|
811
811
|
})(ct, ct.exports);
|
|
812
812
|
var Tt = ct.exports;
|
|
@@ -833,8 +833,8 @@ class v {
|
|
|
833
833
|
return { percent: Math.round(e), allCount: 0, allTotal: 0 };
|
|
834
834
|
let r = 0, i = 0;
|
|
835
835
|
return Object.values(this.progressData).forEach((o) => {
|
|
836
|
-
const { total: a, count:
|
|
837
|
-
r += a ?? 0, i +=
|
|
836
|
+
const { total: a, count: l } = o;
|
|
837
|
+
r += a ?? 0, i += l ?? 0;
|
|
838
838
|
}), r ? e = i / r * 100 * this.chunkRate + this.totalProgress : i === 0 && r === 0 ? e = 100 * this.chunkRate + this.totalProgress : e = 100, { percent: Math.round(e), allCount: i, allTotal: r };
|
|
839
839
|
}
|
|
840
840
|
/**
|
|
@@ -846,17 +846,17 @@ class v {
|
|
|
846
846
|
*/
|
|
847
847
|
setProgressData({ key: e, value: r, type: i }) {
|
|
848
848
|
const o = this.getData(r.data()), a = Array.isArray(o) ? o.length : 0;
|
|
849
|
-
let
|
|
850
|
-
i === "count" && (
|
|
851
|
-
let
|
|
852
|
-
o && (
|
|
853
|
-
const { percent:
|
|
849
|
+
let l = r.total() || a;
|
|
850
|
+
i === "count" && (l = a);
|
|
851
|
+
let u = 1;
|
|
852
|
+
o && (u = a), this.progressCall && (this.progressData || (this.progressData = {}), this.progressData[e] && this.progressData[e].count && (u += this.progressData[e].count), this.progressData[e] ? this.progressData[e].count = u : this.progressData[e] = { total: l, count: u }, this.progressTimer || (this.progressTimer = setInterval(() => {
|
|
853
|
+
const { percent: h, allCount: s, allTotal: d } = this.progressPercent;
|
|
854
854
|
(this.oldPercent === "no" || this.oldPercent < this.progressPercent.percent) && (this.progressCall({
|
|
855
855
|
data: this.progressData,
|
|
856
|
-
percent:
|
|
856
|
+
percent: h,
|
|
857
857
|
allCount: s,
|
|
858
858
|
allTotal: d
|
|
859
|
-
}), this.oldPercent = this.progressPercent.percent),
|
|
859
|
+
}), this.oldPercent = this.progressPercent.percent), h >= 100 && this.clearProgressData();
|
|
860
860
|
}, this.progressDelay)));
|
|
861
861
|
}
|
|
862
862
|
/**
|
|
@@ -877,25 +877,25 @@ class v {
|
|
|
877
877
|
callBatchWithTimeout(e, r) {
|
|
878
878
|
return new Promise((i, o) => {
|
|
879
879
|
let a = !1;
|
|
880
|
-
const
|
|
881
|
-
let
|
|
882
|
-
const
|
|
880
|
+
const l = 3e4;
|
|
881
|
+
let u = !1, h = !1, s = !1, d = null, O = null;
|
|
882
|
+
const c = async (N, p) => {
|
|
883
883
|
if (!a) {
|
|
884
|
-
a = !0, d && clearTimeout(d),
|
|
884
|
+
a = !0, d && clearTimeout(d), O && clearTimeout(O);
|
|
885
885
|
try {
|
|
886
886
|
await Promise.resolve(r(N)), i();
|
|
887
887
|
} catch (L) {
|
|
888
|
-
console.error(`Error in callBatch callback (attempt ${
|
|
888
|
+
console.error(`Error in callBatch callback (attempt ${p}):`, L), o(L);
|
|
889
889
|
}
|
|
890
890
|
}
|
|
891
891
|
}, A = async () => {
|
|
892
892
|
if (!a) {
|
|
893
|
-
a = !0, d && clearTimeout(d),
|
|
894
|
-
`Batch request timeout after ${
|
|
893
|
+
a = !0, d && clearTimeout(d), O && clearTimeout(O), console.warn(
|
|
894
|
+
`Batch request timeout after ${l}ms on both attempts. This may indicate a CORS or network error.`
|
|
895
895
|
);
|
|
896
896
|
const N = {};
|
|
897
|
-
Object.keys(e).forEach((
|
|
898
|
-
N[
|
|
897
|
+
Object.keys(e).forEach((p) => {
|
|
898
|
+
N[p] = {
|
|
899
899
|
error: () => ({
|
|
900
900
|
ex: {
|
|
901
901
|
error: "TIMEOUT",
|
|
@@ -908,26 +908,26 @@ class v {
|
|
|
908
908
|
});
|
|
909
909
|
try {
|
|
910
910
|
await Promise.resolve(r(N)), i();
|
|
911
|
-
} catch (
|
|
912
|
-
console.error("Error in timeout callback:",
|
|
911
|
+
} catch (p) {
|
|
912
|
+
console.error("Error in timeout callback:", p), i();
|
|
913
913
|
}
|
|
914
914
|
}
|
|
915
915
|
}, g = (N) => {
|
|
916
916
|
try {
|
|
917
|
-
this.callBatch(e, async (
|
|
918
|
-
N === 1 && !
|
|
917
|
+
this.callBatch(e, async (p) => {
|
|
918
|
+
N === 1 && !u && !a ? (u = !0, await c(p, 1)) : N === 2 && !s && !a && (s = !0, await c(p, 2));
|
|
919
919
|
});
|
|
920
|
-
} catch (
|
|
921
|
-
a || console.error(`Error calling callBatch (attempt ${N}):`,
|
|
920
|
+
} catch (p) {
|
|
921
|
+
a || console.error(`Error calling callBatch (attempt ${N}):`, p);
|
|
922
922
|
}
|
|
923
923
|
};
|
|
924
924
|
g(1), d = setTimeout(async () => {
|
|
925
|
-
!
|
|
926
|
-
`First batch request attempt timeout after ${
|
|
927
|
-
),
|
|
928
|
-
!
|
|
929
|
-
},
|
|
930
|
-
},
|
|
925
|
+
!u && !a && !h && (console.warn(
|
|
926
|
+
`First batch request attempt timeout after ${l}ms. Starting second attempt...`
|
|
927
|
+
), h = !0, g(2), O = setTimeout(async () => {
|
|
928
|
+
!u && !s && !a && await A();
|
|
929
|
+
}, l));
|
|
930
|
+
}, l);
|
|
931
931
|
});
|
|
932
932
|
}
|
|
933
933
|
/**
|
|
@@ -951,20 +951,20 @@ class v {
|
|
|
951
951
|
this.progressTimer && this.clearProgressData(), r && (this.progressCall = r), i && (this.limitCall = i), this.canContinue = !0, this.result = {}, this.errors = {};
|
|
952
952
|
const o = {};
|
|
953
953
|
this.chunkRate = (1 / Math.ceil(Object.keys(e).length / this.limit)).toFixed(5);
|
|
954
|
-
let a = {},
|
|
955
|
-
for (const [
|
|
954
|
+
let a = {}, l = 0;
|
|
955
|
+
for (const [u, h] of Object.entries(e)) {
|
|
956
956
|
if (!this.canContinue)
|
|
957
957
|
break;
|
|
958
|
-
const s = this.arrayChunk(
|
|
958
|
+
const s = this.arrayChunk(h);
|
|
959
959
|
if (!s) {
|
|
960
|
-
|
|
960
|
+
l++;
|
|
961
961
|
continue;
|
|
962
962
|
}
|
|
963
|
-
a[
|
|
964
|
-
o[d] =
|
|
963
|
+
a[u] = s, (Object.keys(a).length >= 50 || l + 1 === Object.keys(e).length) && (await this.batchChunk(a), Object.entries(this.result).forEach(([d, O]) => {
|
|
964
|
+
o[d] = O;
|
|
965
965
|
}), this.totalProgress = Math.round(
|
|
966
|
-
|
|
967
|
-
), a = {}),
|
|
966
|
+
l / Object.keys(e).length * 100
|
|
967
|
+
), a = {}), l++;
|
|
968
968
|
}
|
|
969
969
|
return Object.entries(this.errors).length && (o.errorsList = this.errors), r && r({ percent: 100 }), Promise.resolve(o);
|
|
970
970
|
}
|
|
@@ -982,20 +982,20 @@ class v {
|
|
|
982
982
|
this.progressTimer && this.clearProgressData(), r && (this.progressCall = r), i && (this.limitCall = i), this.canContinue = !0, this.result = {}, this.errors = {};
|
|
983
983
|
const o = {};
|
|
984
984
|
this.chunkRate = (1 / Math.ceil(Object.keys(e).length / this.limit)).toFixed(5);
|
|
985
|
-
let a = {},
|
|
986
|
-
for (const [
|
|
985
|
+
let a = {}, l = 0;
|
|
986
|
+
for (const [u, h] of Object.entries(e)) {
|
|
987
987
|
if (!this.canContinue)
|
|
988
988
|
break;
|
|
989
|
-
const s = this.arrayChunk(
|
|
989
|
+
const s = this.arrayChunk(h);
|
|
990
990
|
if (!s) {
|
|
991
|
-
|
|
991
|
+
l++;
|
|
992
992
|
continue;
|
|
993
993
|
}
|
|
994
|
-
a[
|
|
995
|
-
o[d] =
|
|
994
|
+
a[u] = s, (Object.keys(a).length >= 50 || l + 1 === Object.keys(e).length) && (await this.batchChunk(a, "count"), Object.entries(this.result).forEach(([d, O]) => {
|
|
995
|
+
o[d] = O;
|
|
996
996
|
}), this.totalProgress = Math.round(
|
|
997
|
-
|
|
998
|
-
), a = {}),
|
|
997
|
+
l / Object.keys(e).length * 100
|
|
998
|
+
), a = {}), l++;
|
|
999
999
|
}
|
|
1000
1000
|
return Object.entries(this.errors).length && (o.errorsList = this.errors), r && r({ percent: 100 }), Promise.resolve(o);
|
|
1001
1001
|
}
|
|
@@ -1016,8 +1016,8 @@ class v {
|
|
|
1016
1016
|
else {
|
|
1017
1017
|
r === "tasks.task.list" ? (i.order || (i.order = {}), i.order.ID = "asc") : r === "user.get" ? (i.sort || (i.sort = "ID"), i.order || (i.order = "ASC")) : i.order = { ID: "ASC", id: "ASC" }, Array.isArray(i.select) && !i.select.includes("ID") && i.select.push("ID");
|
|
1018
1018
|
const o = r === "user.get" ? i.FILTER : i.filter;
|
|
1019
|
-
typeof o == "object" && o !== null && !Array.isArray(o) && Object.entries(o).forEach(([a,
|
|
1020
|
-
(i.start === void 0 || i.start !== -1) && ["id", "ID"].includes(a) && (typeof
|
|
1019
|
+
typeof o == "object" && o !== null && !Array.isArray(o) && Object.entries(o).forEach(([a, l]) => {
|
|
1020
|
+
(i.start === void 0 || i.start !== -1) && ["id", "ID"].includes(a) && (typeof l == "string" || Array.isArray(l) && l.length <= 50) && (i.start = -1);
|
|
1021
1021
|
});
|
|
1022
1022
|
}
|
|
1023
1023
|
r === "crm.type.list" && i.order && delete i.order.ID;
|
|
@@ -1027,8 +1027,8 @@ class v {
|
|
|
1027
1027
|
i = [{ ID: "ASC" }, [""], [""], ["ID"]];
|
|
1028
1028
|
else {
|
|
1029
1029
|
Array.isArray(i[0]) && (i[0] = {});
|
|
1030
|
-
const [o, a,
|
|
1031
|
-
o.ID = "ASC",
|
|
1030
|
+
const [o, a, l, u] = i;
|
|
1031
|
+
o.ID = "ASC", u[0] !== "" && u.includes("ID") || u.push("ID");
|
|
1032
1032
|
}
|
|
1033
1033
|
return { method: r, params: i };
|
|
1034
1034
|
}
|
|
@@ -1042,13 +1042,13 @@ class v {
|
|
|
1042
1042
|
return new Promise((i) => {
|
|
1043
1043
|
const o = [];
|
|
1044
1044
|
let a;
|
|
1045
|
-
this.callBatchWithTimeout(e, async (
|
|
1046
|
-
var
|
|
1047
|
-
for (const [g, N] of Object.entries(
|
|
1045
|
+
this.callBatchWithTimeout(e, async (l) => {
|
|
1046
|
+
var u, h, s, d, O, c, A;
|
|
1047
|
+
for (const [g, N] of Object.entries(l)) {
|
|
1048
1048
|
if (!this.canContinue)
|
|
1049
1049
|
return;
|
|
1050
1050
|
if (N.error())
|
|
1051
|
-
switch (this.errors[g] = ((
|
|
1051
|
+
switch (this.errors[g] = ((h = (u = N.error()) == null ? void 0 : u.ex) == null ? void 0 : h.error) ?? ((d = (s = N.error()) == null ? void 0 : s.ex) == null ? void 0 : d.error_description) ?? ((O = N.error()) == null ? void 0 : O.toString()) ?? "Неизвестная ошибка", a = !0, ((A = (c = N.error()) == null ? void 0 : c.ex) == null ? void 0 : A.error) ?? "") {
|
|
1052
1052
|
case "OPERATION_TIME_LIMIT":
|
|
1053
1053
|
this.skipList.add(e[g].method), this.limitCall && this.limitCall(g);
|
|
1054
1054
|
break;
|
|
@@ -1060,8 +1060,8 @@ class v {
|
|
|
1060
1060
|
Array.isArray(k) ? [S] = k : k != null && k.method && (S = k.method), S && this.skipList.add(S), this.limitCall && this.limitCall(g);
|
|
1061
1061
|
break;
|
|
1062
1062
|
}
|
|
1063
|
-
const
|
|
1064
|
-
r === "count" ? this.result[g] ? this.result[g] += L : this.result[g] = P : this.result[g] =
|
|
1063
|
+
const p = this.getData(N.data()), L = Array.isArray(p) ? p.length : 0, U = typeof N.total == "function" && N.total() !== void 0, P = U ? N.total() : L;
|
|
1064
|
+
r === "count" ? this.result[g] ? this.result[g] += L : this.result[g] = P : this.result[g] = p, this.setProgressData({ key: g, value: N, type: r });
|
|
1065
1065
|
const W = r === "count" ? !U && L === this.limit : P > this.limit && P > L;
|
|
1066
1066
|
if (!this.canContinue || W) {
|
|
1067
1067
|
let b = e[g];
|
|
@@ -1086,43 +1086,43 @@ class v {
|
|
|
1086
1086
|
* @param {String} type - Тип обработки результатов ('count' или undefined)
|
|
1087
1087
|
*/
|
|
1088
1088
|
async batchPayload(e, r) {
|
|
1089
|
-
const i = /* @__PURE__ */ new Map(), o = (
|
|
1090
|
-
let
|
|
1091
|
-
this.result[
|
|
1092
|
-
let A = `${
|
|
1093
|
-
if (JSON.stringify(
|
|
1089
|
+
const i = /* @__PURE__ */ new Map(), o = (h, s, d, O) => {
|
|
1090
|
+
let c = "ID";
|
|
1091
|
+
this.result[h][this.result[h].length - 1].ID || (c = "id");
|
|
1092
|
+
let A = `${c}`;
|
|
1093
|
+
if (JSON.stringify(O[1]).toLocaleLowerCase().includes('"id":"desc"') ? A = "<" + A : A = ">" + A, s === 1 || d.length === 0)
|
|
1094
1094
|
return {
|
|
1095
1095
|
field: A,
|
|
1096
|
-
id: this.result[
|
|
1096
|
+
id: this.result[h][this.result[h].length - 1][c]
|
|
1097
1097
|
};
|
|
1098
1098
|
let N = "";
|
|
1099
|
-
const [
|
|
1100
|
-
return (
|
|
1099
|
+
const [p, L] = O;
|
|
1100
|
+
return (p === "tasks.task.list" || p === "task.item.list") && (N = "[tasks]"), ["crm.item.list", "crm.stagehistory.list"].includes(p) && (N = "[items]"), p === "crm.type.list" && (N = "[types]"), p === "socialnetwork.api.workgroup.list" && (N = "[workgroups]"), {
|
|
1101
1101
|
field: A,
|
|
1102
|
-
id: `$result[${[
|
|
1102
|
+
id: `$result[${[h, s - 1].join("__")}]${N}[49][${c}]`
|
|
1103
1103
|
};
|
|
1104
|
-
}, a = (
|
|
1105
|
-
const [d,
|
|
1106
|
-
let
|
|
1104
|
+
}, a = (h, s) => {
|
|
1105
|
+
const [d, O] = h;
|
|
1106
|
+
let c = JSON.parse(JSON.stringify(O)), A;
|
|
1107
1107
|
if (d === "task.item.list") {
|
|
1108
|
-
|
|
1109
|
-
const [g, N,
|
|
1110
|
-
return N[s.field] = s.id, [d,
|
|
1108
|
+
c = [...c];
|
|
1109
|
+
const [g, N, p, L] = c;
|
|
1110
|
+
return N[s.field] = s.id, [d, c];
|
|
1111
1111
|
}
|
|
1112
|
-
return ["user.get"].includes(d) ||
|
|
1112
|
+
return ["user.get"].includes(d) || c.FILTER ? (c.FILTER || (c.FILTER = {}), A = c.FILTER) : (c.filter || (c.filter = {}), A = c.filter), [
|
|
1113
1113
|
"socialnetwork.api.workgroup.list",
|
|
1114
1114
|
"tasks.task.list"
|
|
1115
|
-
].includes(d) ? A[">ID"] = s.id : A[s.field] = s.id, [d, { ...
|
|
1116
|
-
},
|
|
1117
|
-
Object.entries(
|
|
1118
|
-
var A, g, N,
|
|
1119
|
-
const [
|
|
1120
|
-
if (Array.isArray(
|
|
1121
|
-
this.errors[
|
|
1122
|
-
const W = ((P = (U = d.error()) == null ? void 0 : U.ex) == null ? void 0 : P.error) ?? "", b = i.get(
|
|
1115
|
+
].includes(d) ? A[">ID"] = s.id : A[s.field] = s.id, [d, { ...c, start: -1 }];
|
|
1116
|
+
}, l = (h) => {
|
|
1117
|
+
Object.entries(h).forEach(([s, d]) => {
|
|
1118
|
+
var A, g, N, p, L, U, P;
|
|
1119
|
+
const [O] = s.split("__"), c = this.getData(d.data());
|
|
1120
|
+
if (Array.isArray(c) && (r === "count" ? this.result[O] += c.length : this.result[O].push(...c)), d.error()) {
|
|
1121
|
+
this.errors[O] = ((g = (A = d.error()) == null ? void 0 : A.ex) == null ? void 0 : g.error) ?? ((p = (N = d.error()) == null ? void 0 : N.ex) == null ? void 0 : p.error_description) ?? ((L = d.error()) == null ? void 0 : L.toString()) ?? "Неизвестная ошибка";
|
|
1122
|
+
const W = ((P = (U = d.error()) == null ? void 0 : U.ex) == null ? void 0 : P.error) ?? "", b = i.get(O);
|
|
1123
1123
|
switch (W) {
|
|
1124
1124
|
case "OPERATION_TIME_LIMIT":
|
|
1125
|
-
b && (this.skipList.add(b), this.limitCall && this.limitCall(
|
|
1125
|
+
b && (this.skipList.add(b), this.limitCall && this.limitCall(O));
|
|
1126
1126
|
break;
|
|
1127
1127
|
case "QUERY_LIMIT_EXCEEDED":
|
|
1128
1128
|
this.canContinue = !1;
|
|
@@ -1131,35 +1131,35 @@ class v {
|
|
|
1131
1131
|
b && this.skipList.add(b);
|
|
1132
1132
|
break;
|
|
1133
1133
|
case "TIMEOUT":
|
|
1134
|
-
b && (this.skipList.add(b), this.limitCall && this.limitCall(
|
|
1134
|
+
b && (this.skipList.add(b), this.limitCall && this.limitCall(O));
|
|
1135
1135
|
break;
|
|
1136
1136
|
}
|
|
1137
1137
|
}
|
|
1138
|
-
this.setProgressData({ key:
|
|
1138
|
+
this.setProgressData({ key: O, value: d, type: r });
|
|
1139
1139
|
});
|
|
1140
1140
|
};
|
|
1141
|
-
let
|
|
1142
|
-
for await (const [
|
|
1141
|
+
let u = [];
|
|
1142
|
+
for await (const [h, s, d] of e) {
|
|
1143
1143
|
if (!this.canContinue)
|
|
1144
1144
|
return;
|
|
1145
|
-
const [
|
|
1146
|
-
if (i.set(
|
|
1145
|
+
const [O] = s;
|
|
1146
|
+
if (i.set(h, O), this.skipList.has(O))
|
|
1147
1147
|
continue;
|
|
1148
|
-
let
|
|
1149
|
-
for (; d >
|
|
1150
|
-
const A = [
|
|
1151
|
-
|
|
1152
|
-
Object.fromEntries(
|
|
1148
|
+
let c = 1;
|
|
1149
|
+
for (; d > c * 50 && !this.skipList.has(O); ) {
|
|
1150
|
+
const A = [h, c].join("__"), g = o(h, c, u, s);
|
|
1151
|
+
u.push([A, a(s, g)]), u.length % 50 === 0 && (await this.callBatchWithTimeout(
|
|
1152
|
+
Object.fromEntries(u),
|
|
1153
1153
|
(N) => {
|
|
1154
|
-
|
|
1154
|
+
l(N);
|
|
1155
1155
|
}
|
|
1156
|
-
),
|
|
1156
|
+
), u = [], await this.delay()), c++;
|
|
1157
1157
|
}
|
|
1158
1158
|
}
|
|
1159
|
-
|
|
1160
|
-
Object.fromEntries(
|
|
1161
|
-
(
|
|
1162
|
-
|
|
1159
|
+
u.length && (await this.callBatchWithTimeout(
|
|
1160
|
+
Object.fromEntries(u),
|
|
1161
|
+
(h) => {
|
|
1162
|
+
l(h);
|
|
1163
1163
|
}
|
|
1164
1164
|
), await this.delay());
|
|
1165
1165
|
}
|
|
@@ -1330,7 +1330,7 @@ class Rt {
|
|
|
1330
1330
|
* answer: { [key]: unknown } }}
|
|
1331
1331
|
*/
|
|
1332
1332
|
async stop({ key: e, errorList: r, status: i, answer: o }) {
|
|
1333
|
-
var
|
|
1333
|
+
var l;
|
|
1334
1334
|
if (!E(this, q))
|
|
1335
1335
|
return;
|
|
1336
1336
|
if (!E(this, Q)) {
|
|
@@ -1342,7 +1342,7 @@ class Rt {
|
|
|
1342
1342
|
console.error(`Не найдены данные логирования для ключа: ${e}`);
|
|
1343
1343
|
return;
|
|
1344
1344
|
}
|
|
1345
|
-
r && (a.errorList = r), i && (a.status = i), o && (a.answer = o), await J(this, st, mt).call(this), (
|
|
1345
|
+
r && (a.errorList = r), i && (a.status = i), o && (a.answer = o), await J(this, st, mt).call(this), (l = a == null ? void 0 : a.data) != null && l.updateList && F(this, V, !0), F(this, q, !1);
|
|
1346
1346
|
}
|
|
1347
1347
|
/**
|
|
1348
1348
|
* @param { ({percent}:{percent:number})=>{} } progressCall - коллбэк
|
|
@@ -1366,16 +1366,16 @@ class Rt {
|
|
|
1366
1366
|
);
|
|
1367
1367
|
return !o || !Array.isArray(o) ? (console.warn("Получен невалидный список записей"), []) : (o = o.map((a) => {
|
|
1368
1368
|
try {
|
|
1369
|
-
const { ID:
|
|
1369
|
+
const { ID: l, DATE_CREATE: u, DETAIL_TEXT: h } = a;
|
|
1370
1370
|
return {
|
|
1371
|
-
...JSON.parse(
|
|
1372
|
-
id:
|
|
1373
|
-
dateCreate:
|
|
1371
|
+
...JSON.parse(h),
|
|
1372
|
+
id: l,
|
|
1373
|
+
dateCreate: u
|
|
1374
1374
|
};
|
|
1375
|
-
} catch (
|
|
1375
|
+
} catch (l) {
|
|
1376
1376
|
return console.error(
|
|
1377
1377
|
`Ошибка парсинга записи ${a.ID}:`,
|
|
1378
|
-
|
|
1378
|
+
l
|
|
1379
1379
|
), null;
|
|
1380
1380
|
}
|
|
1381
1381
|
}).filter((a) => a !== null), F(this, V, !1), F(this, G, o), o);
|
|
@@ -1435,7 +1435,7 @@ X = new WeakMap(), Q = new WeakMap(), Z = new WeakMap(), z = new WeakMap(), G =
|
|
|
1435
1435
|
}
|
|
1436
1436
|
if (Object.keys(e).length) {
|
|
1437
1437
|
let i = await r.batch(e), { errors: o } = r;
|
|
1438
|
-
for (let [a,
|
|
1438
|
+
for (let [a, l] of Object.entries({ ...i, ...o }))
|
|
1439
1439
|
E(this, Z).delete(a);
|
|
1440
1440
|
return !0;
|
|
1441
1441
|
}
|
|
@@ -1476,12 +1476,12 @@ X = new WeakMap(), Q = new WeakMap(), Z = new WeakMap(), z = new WeakMap(), G =
|
|
|
1476
1476
|
if (!e || e.length === 0)
|
|
1477
1477
|
return !1;
|
|
1478
1478
|
let r = new v(BX24.callBatch), i = e.filter((a) => a && a.id).map((a) => {
|
|
1479
|
-
let { id:
|
|
1479
|
+
let { id: l } = a;
|
|
1480
1480
|
return {
|
|
1481
1481
|
method: "entity.item.delete",
|
|
1482
1482
|
params: {
|
|
1483
1483
|
ENTITY: E(this, X),
|
|
1484
|
-
ID:
|
|
1484
|
+
ID: l
|
|
1485
1485
|
}
|
|
1486
1486
|
};
|
|
1487
1487
|
});
|
|
@@ -1532,14 +1532,14 @@ class Lt {
|
|
|
1532
1532
|
getEntityList: () => {
|
|
1533
1533
|
}
|
|
1534
1534
|
};
|
|
1535
|
-
const [
|
|
1535
|
+
const [l, u] = await Promise.all([
|
|
1536
1536
|
J(this, ot, Nt).call(this),
|
|
1537
1537
|
J(this, at, pt).call(this)
|
|
1538
1538
|
]);
|
|
1539
|
-
this.appInfo =
|
|
1540
|
-
let
|
|
1539
|
+
this.appInfo = l, this.userInfo = u;
|
|
1540
|
+
let h = new ut();
|
|
1541
1541
|
try {
|
|
1542
|
-
|
|
1542
|
+
h.noSleep();
|
|
1543
1543
|
} catch (s) {
|
|
1544
1544
|
console.warn(
|
|
1545
1545
|
"Failed to initialize noSleep:",
|
|
@@ -1551,10 +1551,10 @@ class Lt {
|
|
|
1551
1551
|
}, 100);
|
|
1552
1552
|
const a = setTimeout(() => {
|
|
1553
1553
|
clearInterval(o);
|
|
1554
|
-
const
|
|
1554
|
+
const l = new Error(
|
|
1555
1555
|
"BX24 initialization timeout: BX24 object not found within 30 seconds"
|
|
1556
1556
|
);
|
|
1557
|
-
console.error(
|
|
1557
|
+
console.error(l), r(l);
|
|
1558
1558
|
}, 3e4);
|
|
1559
1559
|
});
|
|
1560
1560
|
}
|
|
@@ -1609,18 +1609,18 @@ class Lt {
|
|
|
1609
1609
|
const a = new Error("BX24 is not initialized");
|
|
1610
1610
|
throw console.error(a), a;
|
|
1611
1611
|
}
|
|
1612
|
-
return new Promise((a,
|
|
1613
|
-
BX24.callMethod(e, r, async (
|
|
1614
|
-
let
|
|
1615
|
-
if (
|
|
1616
|
-
for (let [s, d] of Object.entries(
|
|
1617
|
-
s !== "result" && d && (
|
|
1618
|
-
if (
|
|
1619
|
-
let s =
|
|
1612
|
+
return new Promise((a, l) => {
|
|
1613
|
+
BX24.callMethod(e, r, async (u) => {
|
|
1614
|
+
let h = {};
|
|
1615
|
+
if (u != null && u.answer)
|
|
1616
|
+
for (let [s, d] of Object.entries(u.answer))
|
|
1617
|
+
s !== "result" && d && (h[s] = d);
|
|
1618
|
+
if (u.error()) {
|
|
1619
|
+
let s = u.error();
|
|
1620
1620
|
if (console.error(s), o)
|
|
1621
1621
|
try {
|
|
1622
1622
|
await this.logger.stop({
|
|
1623
|
-
answer:
|
|
1623
|
+
answer: h,
|
|
1624
1624
|
key: o,
|
|
1625
1625
|
status: "fail",
|
|
1626
1626
|
errorList: { 0: s.toString() }
|
|
@@ -1630,11 +1630,11 @@ class Lt {
|
|
|
1630
1630
|
}
|
|
1631
1631
|
a(!1);
|
|
1632
1632
|
} else {
|
|
1633
|
-
let s =
|
|
1633
|
+
let s = u.data();
|
|
1634
1634
|
if (s != null && s.items && (s = s.items), o)
|
|
1635
1635
|
try {
|
|
1636
1636
|
await this.logger.stop({
|
|
1637
|
-
answer:
|
|
1637
|
+
answer: h,
|
|
1638
1638
|
key: o,
|
|
1639
1639
|
status: "success"
|
|
1640
1640
|
});
|
|
@@ -1665,39 +1665,39 @@ class Lt {
|
|
|
1665
1665
|
* }[]
|
|
1666
1666
|
* }}
|
|
1667
1667
|
*/
|
|
1668
|
-
async batch(e, r, { errorCall: i, limitCommandSerial: o, updateList: a, limitCall:
|
|
1668
|
+
async batch(e, r, { errorCall: i, limitCommandSerial: o, updateList: a, limitCall: l } = {}) {
|
|
1669
1669
|
if (typeof BX24 > "u" || !BX24.callBatch) {
|
|
1670
1670
|
const s = new Error("BX24 is not initialized");
|
|
1671
1671
|
return console.error(s), !1;
|
|
1672
1672
|
}
|
|
1673
|
-
let
|
|
1674
|
-
a && (
|
|
1673
|
+
let u = new v(BX24.callBatch), h;
|
|
1674
|
+
a && (h = this.logger.start({
|
|
1675
1675
|
type: "batch",
|
|
1676
1676
|
data: { commandList: e, updateList: a }
|
|
1677
1677
|
})), o && console.warn(
|
|
1678
1678
|
"limitCommandSerial is deprecated and not used in current Batch implementation"
|
|
1679
1679
|
);
|
|
1680
1680
|
try {
|
|
1681
|
-
let s = await
|
|
1681
|
+
let s = await u.batch(
|
|
1682
1682
|
e,
|
|
1683
1683
|
r,
|
|
1684
|
-
|
|
1684
|
+
l
|
|
1685
1685
|
);
|
|
1686
|
-
if (Object.keys(
|
|
1687
|
-
if (i && i(
|
|
1686
|
+
if (Object.keys(u.errors).length) {
|
|
1687
|
+
if (i && i(u.errors), h)
|
|
1688
1688
|
try {
|
|
1689
1689
|
await this.logger.stop({
|
|
1690
|
-
key:
|
|
1690
|
+
key: h,
|
|
1691
1691
|
status: "fail",
|
|
1692
|
-
errorList:
|
|
1692
|
+
errorList: u.errors
|
|
1693
1693
|
});
|
|
1694
1694
|
} catch (d) {
|
|
1695
1695
|
console.error("Logger error:", d);
|
|
1696
1696
|
}
|
|
1697
|
-
} else if (
|
|
1697
|
+
} else if (h)
|
|
1698
1698
|
try {
|
|
1699
1699
|
await this.logger.stop({
|
|
1700
|
-
key:
|
|
1700
|
+
key: h,
|
|
1701
1701
|
status: "success"
|
|
1702
1702
|
});
|
|
1703
1703
|
} catch (d) {
|
|
@@ -1705,10 +1705,10 @@ class Lt {
|
|
|
1705
1705
|
}
|
|
1706
1706
|
return s;
|
|
1707
1707
|
} catch (s) {
|
|
1708
|
-
if (
|
|
1708
|
+
if (h)
|
|
1709
1709
|
try {
|
|
1710
1710
|
await this.logger.stop({
|
|
1711
|
-
key:
|
|
1711
|
+
key: h,
|
|
1712
1712
|
status: "fail-runtime",
|
|
1713
1713
|
errorList: { 0: s == null ? void 0 : s.toString() }
|
|
1714
1714
|
});
|
|
@@ -1743,53 +1743,53 @@ class Lt {
|
|
|
1743
1743
|
*/
|
|
1744
1744
|
async batchTotalCount(e, r, { errorCall: i, updateList: o, limitCall: a } = {}) {
|
|
1745
1745
|
if (typeof BX24 > "u" || !BX24.callBatch) {
|
|
1746
|
-
const
|
|
1747
|
-
return console.error(
|
|
1746
|
+
const h = new Error("BX24 is not initialized");
|
|
1747
|
+
return console.error(h), !1;
|
|
1748
1748
|
}
|
|
1749
|
-
let
|
|
1750
|
-
o && (
|
|
1749
|
+
let l = new v(BX24.callBatch), u;
|
|
1750
|
+
o && (u = this.logger.start({
|
|
1751
1751
|
type: "batch-total-count",
|
|
1752
1752
|
data: { commandList: e }
|
|
1753
1753
|
}));
|
|
1754
1754
|
try {
|
|
1755
|
-
let
|
|
1755
|
+
let h = await l.batchTotalCount(
|
|
1756
1756
|
e,
|
|
1757
1757
|
r,
|
|
1758
1758
|
a
|
|
1759
1759
|
);
|
|
1760
|
-
if (Object.keys(
|
|
1761
|
-
if (i && i(
|
|
1760
|
+
if (Object.keys(l.errors).length) {
|
|
1761
|
+
if (i && i(l.errors), u)
|
|
1762
1762
|
try {
|
|
1763
1763
|
await this.logger.stop({
|
|
1764
|
-
key:
|
|
1764
|
+
key: u,
|
|
1765
1765
|
status: "fail",
|
|
1766
|
-
errorList:
|
|
1766
|
+
errorList: l.errors
|
|
1767
1767
|
});
|
|
1768
1768
|
} catch (s) {
|
|
1769
1769
|
console.error("Logger error:", s);
|
|
1770
1770
|
}
|
|
1771
|
-
} else if (
|
|
1771
|
+
} else if (u)
|
|
1772
1772
|
try {
|
|
1773
1773
|
await this.logger.stop({
|
|
1774
|
-
key:
|
|
1774
|
+
key: u,
|
|
1775
1775
|
status: "success"
|
|
1776
1776
|
});
|
|
1777
1777
|
} catch (s) {
|
|
1778
1778
|
console.error("Logger error:", s);
|
|
1779
1779
|
}
|
|
1780
|
-
return
|
|
1781
|
-
} catch (
|
|
1782
|
-
if (
|
|
1780
|
+
return h;
|
|
1781
|
+
} catch (h) {
|
|
1782
|
+
if (u)
|
|
1783
1783
|
try {
|
|
1784
1784
|
await this.logger.stop({
|
|
1785
|
-
key:
|
|
1785
|
+
key: u,
|
|
1786
1786
|
status: "fail-runtime",
|
|
1787
|
-
errorList: { 0:
|
|
1787
|
+
errorList: { 0: h == null ? void 0 : h.toString() }
|
|
1788
1788
|
});
|
|
1789
1789
|
} catch (s) {
|
|
1790
1790
|
console.error("Logger error:", s);
|
|
1791
1791
|
}
|
|
1792
|
-
return console.error(
|
|
1792
|
+
return console.error(h), !1;
|
|
1793
1793
|
}
|
|
1794
1794
|
}
|
|
1795
1795
|
/** Запрос данных о местах встройки приложения */
|
|
@@ -1798,7 +1798,7 @@ class Lt {
|
|
|
1798
1798
|
}
|
|
1799
1799
|
/** Встройка приложения в place */
|
|
1800
1800
|
async placementBind(e, r = !0) {
|
|
1801
|
-
var
|
|
1801
|
+
var O, c;
|
|
1802
1802
|
if (!this.isAdmin)
|
|
1803
1803
|
return;
|
|
1804
1804
|
r && await this.placementCheck();
|
|
@@ -1806,23 +1806,23 @@ class Lt {
|
|
|
1806
1806
|
if (Array.isArray(e) ? i = e.map((A) => typeof A == "string" ? { placement: A } : A) : typeof e == "string" ? i = [{ placement: e }] : i = [e], this.placeData = await this.getPlacement(), !this.placeData)
|
|
1807
1807
|
return;
|
|
1808
1808
|
const { appName: o, pathApp: a } = this.appConst;
|
|
1809
|
-
let
|
|
1810
|
-
this.domain === "szdl.bitrix24.ru" && ((
|
|
1811
|
-
const
|
|
1809
|
+
let l = o;
|
|
1810
|
+
this.domain === "szdl.bitrix24.ru" && ((O = this.appInfo) != null && O.ID) && (l = `${o}: #${this.appInfo.ID}`);
|
|
1811
|
+
const u = l.replace(" CRM", ""), h = {}, s = [];
|
|
1812
1812
|
let d = !1;
|
|
1813
1813
|
for (let A = 0; A < i.length; A++)
|
|
1814
1814
|
i[A].placement === "PAGE_BACKGROUND_WORKER_ALL" && (d = !0);
|
|
1815
|
-
if (d && ((
|
|
1815
|
+
if (d && ((c = this.userInfo) != null && c.ID)) {
|
|
1816
1816
|
const A = this.userInfo.ID, g = `${a}?USER_ID=${A}/`;
|
|
1817
1817
|
if (!this.placeData.find(
|
|
1818
|
-
(
|
|
1818
|
+
(p) => p.placement === "PAGE_BACKGROUND_WORKER" && p.handler === g
|
|
1819
1819
|
)) {
|
|
1820
|
-
const
|
|
1820
|
+
const p = {
|
|
1821
1821
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
1822
1822
|
HANDLER: g,
|
|
1823
1823
|
LANG_ALL: {
|
|
1824
1824
|
ru: {
|
|
1825
|
-
TITLE:
|
|
1825
|
+
TITLE: l
|
|
1826
1826
|
}
|
|
1827
1827
|
},
|
|
1828
1828
|
OPTIONS: {
|
|
@@ -1830,21 +1830,21 @@ class Lt {
|
|
|
1830
1830
|
},
|
|
1831
1831
|
USER_ID: A
|
|
1832
1832
|
};
|
|
1833
|
-
|
|
1833
|
+
h[`bind_user_${A}`] = {
|
|
1834
1834
|
method: "placement.bind",
|
|
1835
|
-
params:
|
|
1835
|
+
params: p
|
|
1836
1836
|
}, console.log(`placementBind: Добавлено индивидуальное размещение для пользователя ${A} перед общим`);
|
|
1837
1837
|
}
|
|
1838
1838
|
}
|
|
1839
1839
|
for (let A = 0; A < i.length; A++) {
|
|
1840
|
-
const g = i[A], N = g.placement,
|
|
1840
|
+
const g = i[A], N = g.placement, p = g.userId;
|
|
1841
1841
|
let L = a, U = N;
|
|
1842
1842
|
if (N === "PAGE_BACKGROUND_WORKER") {
|
|
1843
|
-
if (!
|
|
1843
|
+
if (!p) {
|
|
1844
1844
|
console.warn(`placementBind: userId is required for PAGE_BACKGROUND_WORKER, skipping ${N}`);
|
|
1845
1845
|
continue;
|
|
1846
1846
|
}
|
|
1847
|
-
L = `${a}?USER_ID=${
|
|
1847
|
+
L = `${a}?USER_ID=${p}/`;
|
|
1848
1848
|
}
|
|
1849
1849
|
if (N === "PAGE_BACKGROUND_WORKER_ALL" && (U = "PAGE_BACKGROUND_WORKER"), this.placeData.find(
|
|
1850
1850
|
(k) => k.placement === U && k.handler === L
|
|
@@ -1859,19 +1859,19 @@ class Lt {
|
|
|
1859
1859
|
HANDLER: L,
|
|
1860
1860
|
LANG_ALL: {
|
|
1861
1861
|
ru: {
|
|
1862
|
-
TITLE: U === "USER_PROFILE_TOOLBAR" ?
|
|
1862
|
+
TITLE: U === "USER_PROFILE_TOOLBAR" ? u : l
|
|
1863
1863
|
}
|
|
1864
1864
|
},
|
|
1865
1865
|
OPTIONS: {
|
|
1866
1866
|
errorHandlerUrl: L
|
|
1867
1867
|
}
|
|
1868
1868
|
};
|
|
1869
|
-
N === "PAGE_BACKGROUND_WORKER" &&
|
|
1869
|
+
N === "PAGE_BACKGROUND_WORKER" && p && (b.USER_ID = p), h[`bind_${A}`] = {
|
|
1870
1870
|
method: "placement.bind",
|
|
1871
1871
|
params: b
|
|
1872
1872
|
};
|
|
1873
1873
|
}
|
|
1874
|
-
s.length > 0 && await this.placementUnBind(s), Object.keys(
|
|
1874
|
+
s.length > 0 && await this.placementUnBind(s), Object.keys(h).length > 0 && await this.batch(h), Object.keys(h).length > 0 && (this.placeData = await this.getPlacement(), Object.values(h).forEach((A) => {
|
|
1875
1875
|
console.log("Приложение успешно встроено в", A.params.PLACEMENT);
|
|
1876
1876
|
}));
|
|
1877
1877
|
}
|
|
@@ -1881,12 +1881,12 @@ class Lt {
|
|
|
1881
1881
|
Array.isArray(e) ? r = e.map((o) => typeof o == "string" ? { placement: o } : o) : typeof e == "string" ? r = [{ placement: e }] : r = [e];
|
|
1882
1882
|
const i = {};
|
|
1883
1883
|
for (let o = 0; o < r.length; o++) {
|
|
1884
|
-
const a = r[o],
|
|
1885
|
-
PLACEMENT:
|
|
1884
|
+
const a = r[o], l = a.placement, u = a.handler, h = {
|
|
1885
|
+
PLACEMENT: l
|
|
1886
1886
|
};
|
|
1887
|
-
|
|
1887
|
+
u && (h.HANDLER = u), i[`unbind_${o}`] = {
|
|
1888
1888
|
method: "placement.unbind",
|
|
1889
|
-
params:
|
|
1889
|
+
params: h
|
|
1890
1890
|
};
|
|
1891
1891
|
}
|
|
1892
1892
|
Object.keys(i).length > 0 && (await this.batch(i), r.forEach((o) => {
|
|
@@ -1901,8 +1901,8 @@ class Lt {
|
|
|
1901
1901
|
for (const o of this.placeData) {
|
|
1902
1902
|
if (!o.handler || o.handler.includes(e))
|
|
1903
1903
|
continue;
|
|
1904
|
-
const { placement: a, handler:
|
|
1905
|
-
r.push({ placement: a, handler:
|
|
1904
|
+
const { placement: a, handler: l, userId: u } = o;
|
|
1905
|
+
r.push({ placement: a, handler: l }), i.push({ placement: a, userId: u });
|
|
1906
1906
|
}
|
|
1907
1907
|
r.length > 0 && await this.placementUnBind(r), i.length > 0 && await this.placementBind(i, !1);
|
|
1908
1908
|
}
|
|
@@ -1919,7 +1919,7 @@ class Lt {
|
|
|
1919
1919
|
}
|
|
1920
1920
|
/* регистрация бота */
|
|
1921
1921
|
regBot({ code: e, type: r, name: i }) {
|
|
1922
|
-
const { appName: o, pathApp: a, chatBotLogo:
|
|
1922
|
+
const { appName: o, pathApp: a, chatBotLogo: l } = this.appConst, u = this.appInfo.ID;
|
|
1923
1923
|
return this.call({
|
|
1924
1924
|
method: "imbot.register",
|
|
1925
1925
|
params: {
|
|
@@ -1935,7 +1935,7 @@ class Lt {
|
|
|
1935
1935
|
// строковый идентификатор чат-бота, используется только в режиме Вебхуков
|
|
1936
1936
|
PROPERTIES: {
|
|
1937
1937
|
// Личные данные чат-бота (обяз.)
|
|
1938
|
-
NAME: `${i ?? o} - бот #${
|
|
1938
|
+
NAME: `${i ?? o} - бот #${u}`,
|
|
1939
1939
|
// Имя чат-бота (обязательное одно из полей NAME или LAST_NAME)
|
|
1940
1940
|
LAST_NAME: "",
|
|
1941
1941
|
// Фамилия чат-бота (обязательное одно из полей NAME или LAST_NAME)
|
|
@@ -1951,11 +1951,11 @@ class Lt {
|
|
|
1951
1951
|
// Ссылка на сайт
|
|
1952
1952
|
PERSONAL_GENDER: "M",
|
|
1953
1953
|
// Пол чат-бота, допустимые значения M - мужской, F - женский, пусто, если не требуется указывать
|
|
1954
|
-
PERSONAL_PHOTO:
|
|
1954
|
+
PERSONAL_PHOTO: l ?? ""
|
|
1955
1955
|
// Аватар чат-бота - base64
|
|
1956
1956
|
}
|
|
1957
1957
|
}
|
|
1958
|
-
}).then((
|
|
1958
|
+
}).then((h) => (console.log("Чат-бот добавлен", h), h));
|
|
1959
1959
|
}
|
|
1960
1960
|
/* Убрать регистрацию бота */
|
|
1961
1961
|
unRegBot(e) {
|
|
@@ -2101,37 +2101,27 @@ class St {
|
|
|
2101
2101
|
return Math.round(Math.random()) ? e : -e;
|
|
2102
2102
|
}
|
|
2103
2103
|
async checkPlacementType() {
|
|
2104
|
-
var e
|
|
2104
|
+
var e;
|
|
2105
2105
|
try {
|
|
2106
|
-
const
|
|
2107
|
-
if (!
|
|
2106
|
+
const r = await this.bx.getPlacement();
|
|
2107
|
+
if (!r || !Array.isArray(r))
|
|
2108
2108
|
return console.log("BackgroundWorker: Не удалось получить список размещений, продолжаем выполнение"), !0;
|
|
2109
|
-
const
|
|
2110
|
-
if (!
|
|
2109
|
+
const i = +(((e = this.bx.userInfo) == null ? void 0 : e.ID) ?? 0);
|
|
2110
|
+
if (!i)
|
|
2111
2111
|
return console.log("BackgroundWorker: Не удалось определить ID текущего пользователя, продолжаем выполнение"), !0;
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
N && +N === c && (l = !0), h && A.handler && h === A.handler && (d = !0);
|
|
2126
|
-
} else
|
|
2127
|
-
s = !0, h && A.handler && h === A.handler && (p = !0);
|
|
2128
|
-
if (!d && !p && h && (d = h.includes("USER_ID="), p = !d, d)) {
|
|
2129
|
-
const A = this.extractUserIdFromHandler(h);
|
|
2130
|
-
A && +A === c && (l = !0);
|
|
2131
|
-
}
|
|
2132
|
-
return d ? (console.log("BackgroundWorker: Обнаружена индивидуальная встройка, продолжаем выполнение"), !0) : p && l ? (console.log(`BackgroundWorker: Обнаружена общая встройка при наличии индивидуальной для текущего пользователя (ID: ${c}), прекращаем выполнение`), !1) : (console.log("BackgroundWorker: Проверка типа встройки пройдена, продолжаем выполнение"), !0);
|
|
2133
|
-
} catch (a) {
|
|
2134
|
-
return console.error("BackgroundWorker: Ошибка при проверке типа встройки", a), !0;
|
|
2112
|
+
const a = !!(typeof window < "u" ? window.location.href : "").includes("USER_ID=");
|
|
2113
|
+
let l = !1;
|
|
2114
|
+
for (const u of r)
|
|
2115
|
+
if (u.placement === "PAGE_BACKGROUND_WORKER" && (u.userId || u.handler && u.handler.includes("USER_ID="))) {
|
|
2116
|
+
const s = u.userId || (u.handler ? this.extractUserIdFromHandler(u.handler) : null);
|
|
2117
|
+
if (s && +s === i) {
|
|
2118
|
+
l = !0;
|
|
2119
|
+
break;
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
return a ? (console.log("BackgroundWorker: Обнаружена индивидуальная встройка, продолжаем выполнение"), !0) : !currentPlacementIsGeneral && l ? (console.log(`BackgroundWorker: Обнаружена общая встройка при наличии индивидуальной для текущего пользователя (ID: ${i}), прекращаем выполнение`), !1) : (console.log("BackgroundWorker: Проверка типа встройки пройдена, продолжаем выполнение"), !0);
|
|
2123
|
+
} catch (r) {
|
|
2124
|
+
return console.error("BackgroundWorker: Ошибка при проверке типа встройки", r), !0;
|
|
2135
2125
|
}
|
|
2136
2126
|
}
|
|
2137
2127
|
extractUserIdFromHandler(e) {
|
|
@@ -2174,14 +2164,14 @@ class St {
|
|
|
2174
2164
|
checkOtherTabs() {
|
|
2175
2165
|
var o, a;
|
|
2176
2166
|
let e = !1, r = (/* @__PURE__ */ new Date()).getTime() - new Date(this.start).getTime();
|
|
2177
|
-
for (const
|
|
2178
|
-
if (+
|
|
2167
|
+
for (const l of this.tabList)
|
|
2168
|
+
if (+l.id !== this.id && ((o = l.data) != null && o.start && (e = !0), ((a = l.data) == null ? void 0 : a.duration) > r)) {
|
|
2179
2169
|
r = !1;
|
|
2180
2170
|
break;
|
|
2181
2171
|
}
|
|
2182
2172
|
const i = !e && !!r;
|
|
2183
|
-
return this.updateTab(i).catch((
|
|
2184
|
-
console.error("BackgroundWorker: updateTab failed",
|
|
2173
|
+
return this.updateTab(i).catch((l) => {
|
|
2174
|
+
console.error("BackgroundWorker: updateTab failed", l);
|
|
2185
2175
|
}), console.log(`BackgroundWorker: Проверка вкладок - можно запускать приложение? ${i}`), i;
|
|
2186
2176
|
}
|
|
2187
2177
|
async startBackground() {
|
|
@@ -2192,8 +2182,8 @@ class St {
|
|
|
2192
2182
|
}, this.activeMinPause), await this.appInit(), this.interval && (clearInterval(this.interval), this.interval = void 0), this.id && (await this.deleteTabs([{ id: this.id }]), this.id = 0);
|
|
2193
2183
|
}
|
|
2194
2184
|
async setBackgroundWorkerAll() {
|
|
2195
|
-
var
|
|
2196
|
-
if (!((
|
|
2185
|
+
var c, A;
|
|
2186
|
+
if (!((c = this.bx) != null && c.isAdmin)) {
|
|
2197
2187
|
console.log("BackgroundWorker: Отмена setBackgroundWorkerAll - пользователь не админ");
|
|
2198
2188
|
return;
|
|
2199
2189
|
}
|
|
@@ -2205,23 +2195,23 @@ class St {
|
|
|
2205
2195
|
}), console.log(`setBackgroundWorkerAll: Найдено ${r.size} индивидуальных и ${i ? 1 : 0} общих привязок PAGE_BACKGROUND_WORKER`);
|
|
2206
2196
|
const o = await this.updateAdminsList(), a = await this.getEligibleUsersForBackgroundWorker(o);
|
|
2207
2197
|
a.sort((g, N) => {
|
|
2208
|
-
const
|
|
2209
|
-
return (N.LAST_LOGIN ? new Date(N.LAST_LOGIN) : /* @__PURE__ */ new Date(0)) -
|
|
2198
|
+
const p = g.LAST_LOGIN ? new Date(g.LAST_LOGIN) : /* @__PURE__ */ new Date(0);
|
|
2199
|
+
return (N.LAST_LOGIN ? new Date(N.LAST_LOGIN) : /* @__PURE__ */ new Date(0)) - p;
|
|
2210
2200
|
}), console.log(`setBackgroundWorkerAll: Найдено ${a.length} подходящих пользователей (админы и руководители)`);
|
|
2211
|
-
const
|
|
2201
|
+
const l = [], u = 10, s = a.slice(0, u).filter(
|
|
2212
2202
|
(g) => !r.has(+g.ID)
|
|
2213
|
-
), d = i && s.length > 0,
|
|
2203
|
+
), d = i && s.length > 0, O = [];
|
|
2214
2204
|
for (const [g] of r)
|
|
2215
|
-
a.find((
|
|
2216
|
-
for (const g of
|
|
2217
|
-
this.appPath && (
|
|
2205
|
+
a.find((p) => +p.ID === g) || O.push(g);
|
|
2206
|
+
for (const g of O)
|
|
2207
|
+
this.appPath && (l.push({
|
|
2218
2208
|
method: "placement.unbind",
|
|
2219
2209
|
params: {
|
|
2220
2210
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
2221
2211
|
HANDLER: `${this.appPath}?USER_ID=${g}/`
|
|
2222
2212
|
}
|
|
2223
2213
|
}), console.log(`setBackgroundWorkerAll: Добавлена в очередь отвязка бэк-воркера от пользователя ${g}`));
|
|
2224
|
-
d && this.appPath && (
|
|
2214
|
+
d && this.appPath && (l.push({
|
|
2225
2215
|
method: "placement.unbind",
|
|
2226
2216
|
params: {
|
|
2227
2217
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
@@ -2229,7 +2219,7 @@ class St {
|
|
|
2229
2219
|
}
|
|
2230
2220
|
}), console.log("setBackgroundWorkerAll: Добавлена в очередь отвязка общего бэк-воркера (для создания индивидуальных)"));
|
|
2231
2221
|
for (const g of s)
|
|
2232
|
-
this.appPath &&
|
|
2222
|
+
this.appPath && l.push({
|
|
2233
2223
|
method: "placement.bind",
|
|
2234
2224
|
params: {
|
|
2235
2225
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
@@ -2245,7 +2235,7 @@ class St {
|
|
|
2245
2235
|
USER_ID: g.ID
|
|
2246
2236
|
}
|
|
2247
2237
|
});
|
|
2248
|
-
(!i || d) && this.appPath && (
|
|
2238
|
+
(!i || d) && this.appPath && (l.push({
|
|
2249
2239
|
method: "placement.bind",
|
|
2250
2240
|
params: {
|
|
2251
2241
|
PLACEMENT: "PAGE_BACKGROUND_WORKER",
|
|
@@ -2259,7 +2249,7 @@ class St {
|
|
|
2259
2249
|
errorHandlerUrl: `${this.appPath}/`
|
|
2260
2250
|
}
|
|
2261
2251
|
}
|
|
2262
|
-
}), console.log("setBackgroundWorkerAll: Добавлен в очередь создание общего бэк-воркера (после индивидуальных)")),
|
|
2252
|
+
}), console.log("setBackgroundWorkerAll: Добавлен в очередь создание общего бэк-воркера (после индивидуальных)")), l.length ? (console.log(`setBackgroundWorkerAll: Выполняем ${l.length} операций через batch`), await this.bx.batch(l), console.log("setBackgroundWorkerAll: Все операции batch выполнены успешно")) : console.log("setBackgroundWorkerAll: Нет операций для выполнения");
|
|
2263
2253
|
}
|
|
2264
2254
|
async getEligibleUsersForBackgroundWorker(e = []) {
|
|
2265
2255
|
return (this.users ?? []).filter((i) => i.ACTIVE === "Y" || i.ACTIVE === !0).filter((i) => {
|
|
@@ -2272,11 +2262,11 @@ class St {
|
|
|
2272
2262
|
try {
|
|
2273
2263
|
let o = await this.getAdminsList();
|
|
2274
2264
|
const a = +(((e = this.bx.userInfo) == null ? void 0 : e.ID) ?? 0);
|
|
2275
|
-
(r = this.bx) != null && r.isAdmin && a && !o.includes(a) && (o.push(a), console.log(`updateAdminsList: Добавлен новый админ ${a}`)), !((i = this.bx) != null && i.isAdmin) && a && o.includes(a) && (o = o.filter((
|
|
2276
|
-
const
|
|
2277
|
-
(this.users ?? []).filter((
|
|
2278
|
-
),
|
|
2279
|
-
return
|
|
2265
|
+
(r = this.bx) != null && r.isAdmin && a && !o.includes(a) && (o.push(a), console.log(`updateAdminsList: Добавлен новый админ ${a}`)), !((i = this.bx) != null && i.isAdmin) && a && o.includes(a) && (o = o.filter((h) => h !== a), console.log(`updateAdminsList: Удален из списка админов пользователь ${a} (больше не админ)`));
|
|
2266
|
+
const l = new Set(
|
|
2267
|
+
(this.users ?? []).filter((h) => h.ACTIVE === "Y" || h.ACTIVE === !0).map((h) => +h.ID)
|
|
2268
|
+
), u = o.filter((h) => l.has(h));
|
|
2269
|
+
return u.length !== o.length && (console.log(`updateAdminsList: Удалено ${o.length - u.length} неактивных админов`), o = u), BX24.appOption.set("adminsList", JSON.stringify(o)), console.log(`BackgroundWorker: Список админов обновлен: ${o.length} админов`), o;
|
|
2280
2270
|
} catch (o) {
|
|
2281
2271
|
return console.error("BackgroundWorker: Ошибка при обновлении списка админов:", o), [];
|
|
2282
2272
|
}
|