@ryuzaki13/react-foundation-lib 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +172 -114
  2. package/dist/chunks/{formatters-CBgrBeSA.js → formatters-D33Uh3si.js} +7 -8
  3. package/dist/chunks/{formatters-CBgrBeSA.js.map → formatters-D33Uh3si.js.map} +1 -1
  4. package/dist/chunks/odata-service-CWkHASdw.js +2211 -0
  5. package/dist/chunks/odata-service-CWkHASdw.js.map +1 -0
  6. package/dist/chunks/{validate-BW-7BZy_.js → validate-DyzojM0w.js} +2 -2
  7. package/dist/chunks/{validate-BW-7BZy_.js.map → validate-DyzojM0w.js.map} +1 -1
  8. package/dist/error-report/index.js +2 -2
  9. package/dist/excel/index.js +20 -21
  10. package/dist/excel/index.js.map +1 -1
  11. package/dist/formatters/index.js +4 -5
  12. package/dist/{odata → odata-service}/buildSeparatedArrays.d.ts +1 -1
  13. package/dist/odata-service/buildSeparatedArrays.d.ts.map +1 -0
  14. package/dist/{odata/types.d.ts → odata-service/collectionTypes.d.ts} +1 -1
  15. package/dist/odata-service/collectionTypes.d.ts.map +1 -0
  16. package/dist/{odata → odata-service}/dateUtils.d.ts +1 -1
  17. package/dist/odata-service/dateUtils.d.ts.map +1 -0
  18. package/dist/{odata → odata-service}/findCollectionPairs.d.ts +1 -1
  19. package/dist/odata-service/findCollectionPairs.d.ts.map +1 -0
  20. package/dist/odata-service/index.d.ts +5 -0
  21. package/dist/odata-service/index.d.ts.map +1 -1
  22. package/dist/odata-service/index.js +2 -2
  23. package/dist/{odata/store.d.ts → odata-service/odataCollectionStore.d.ts} +1 -1
  24. package/dist/odata-service/odataCollectionStore.d.ts.map +1 -0
  25. package/dist/query-client/index.js.map +1 -1
  26. package/dist/query-client/queryClient.d.ts +1 -3
  27. package/dist/query-client/queryClient.d.ts.map +1 -1
  28. package/package.json +1 -5
  29. package/src/array/README.mdx +1630 -0
  30. package/src/binary/README.mdx +1405 -0
  31. package/src/bounded-copy-stack/README.mdx +257 -0
  32. package/src/context-menu/README.mdx +326 -0
  33. package/src/copy/README.mdx +992 -0
  34. package/src/crypto/README.mdx +1052 -0
  35. package/src/currency/README.mdx +155 -0
  36. package/src/date-segments/README.mdx +319 -0
  37. package/src/dom/README.mdx +2179 -0
  38. package/src/error/README.mdx +95 -0
  39. package/src/error-report/README.mdx +612 -0
  40. package/src/excel/README.mdx +449 -0
  41. package/src/file/README.mdx +1957 -0
  42. package/src/fingerprint/README.mdx +100 -0
  43. package/src/form/README.mdx +101 -0
  44. package/src/formatters/README.mdx +469 -0
  45. package/src/formatters/boolean/README.mdx +494 -0
  46. package/src/formatters/date/README.mdx +732 -0
  47. package/src/formatters/number/README.mdx +542 -0
  48. package/src/formatters/pipeline/README.mdx +629 -0
  49. package/src/formatters/rowBased/README.mdx +486 -0
  50. package/src/formatters/strings/README.mdx +442 -0
  51. package/src/formatters/valueState/README.mdx +459 -0
  52. package/src/formulas/README.mdx +1283 -0
  53. package/src/foundationLib.mdx +70 -54
  54. package/src/hooks/README.mdx +988 -0
  55. package/src/http/README.mdx +126 -0
  56. package/src/media/README.mdx +1853 -0
  57. package/src/notifications/README.mdx +323 -0
  58. package/src/number-scale/README.mdx +318 -0
  59. package/src/odata-service/README.mdx +2916 -0
  60. package/src/presets/README.mdx +136 -0
  61. package/src/pwa/README.mdx +394 -0
  62. package/src/query-client/README.mdx +2500 -0
  63. package/src/range-output/README.mdx +161 -0
  64. package/src/seo/README.mdx +279 -0
  65. package/src/session-storage/README.mdx +125 -0
  66. package/src/string-comparison/README.mdx +96 -0
  67. package/src/table/README.mdx +3106 -0
  68. package/src/three-scene/README.mdx +248 -0
  69. package/src/types/README.mdx +172 -0
  70. package/src/utils/README.mdx +1724 -0
  71. package/src/validators/README.mdx +239 -0
  72. package/src/virtualizer/README.mdx +138 -0
  73. package/src/xml/README.mdx +149 -0
  74. package/dist/chunks/dateUtils-B5V5aXB-.js +0 -847
  75. package/dist/chunks/dateUtils-B5V5aXB-.js.map +0 -1
  76. package/dist/chunks/odata-service-B6TxBSLm.js +0 -1277
  77. package/dist/chunks/odata-service-B6TxBSLm.js.map +0 -1
  78. package/dist/odata/buildSeparatedArrays.d.ts.map +0 -1
  79. package/dist/odata/dateUtils.d.ts.map +0 -1
  80. package/dist/odata/findCollectionPairs.d.ts.map +0 -1
  81. package/dist/odata/index.d.ts +0 -6
  82. package/dist/odata/index.d.ts.map +0 -1
  83. package/dist/odata/index.js +0 -102
  84. package/dist/odata/index.js.map +0 -1
  85. package/dist/odata/store.d.ts.map +0 -1
  86. package/dist/odata/types.d.ts.map +0 -1
  87. package/src/binary/README.md +0 -110
  88. package/src/docs/browserAndReact.mdx +0 -150
  89. package/src/docs/filesAndExcel.mdx +0 -163
  90. package/src/docs/formatters-runtime.mdx +0 -455
  91. package/src/docs/formatters.mdx +0 -380
  92. package/src/docs/odataAndTables.mdx +0 -178
  93. package/src/docs/pureUtilities.mdx +0 -96
  94. package/src/docs/runtimeAndState.mdx +0 -155
  95. package/src/file/README.md +0 -289
  96. package/src/formatters/date/README.md +0 -520
  97. package/src/formatters/number/README.md +0 -123
  98. package/src/formatters/valueState/README.md +0 -275
  99. package/src/formulas/README.md +0 -42
  100. package/src/pwa/README.md +0 -638
  101. package/src/query-client/README.md +0 -565
@@ -1,1277 +0,0 @@
1
- import { n as e } from "./isRecord-DXDTW-jA.js";
2
- import { k as t, r as n, t as r } from "./dateUtils-B5V5aXB-.js";
3
- import { t as i } from "./string-comparison-BKT7PXmq.js";
4
- import { z as a } from "zod";
5
- //#region src/formatters/boolean/parseAbapBoolean.ts
6
- function o(e) {
7
- return !!(e && typeof e == "string" && e === "X");
8
- }
9
- function s(e) {
10
- return e ? typeof e == "string" ? [
11
- "true",
12
- "x",
13
- "1"
14
- ].includes(e.toLowerCase()) : !!e : !1;
15
- }
16
- //#endregion
17
- //#region src/formatters/number/parseNumber.ts
18
- function c(e) {
19
- if (typeof e == "number") return Number.isFinite(e) ? e : void 0;
20
- if (typeof e != "string") return;
21
- let t = e.trim();
22
- if (!t) return;
23
- let n = Number(t);
24
- if (Number.isFinite(n)) return n;
25
- let r = "";
26
- for (let e = 0; e < t.length; e++) {
27
- let n = t.charCodeAt(e);
28
- n !== 32 && n !== 160 && n !== 8239 && n !== 39 && (r += t[e]);
29
- }
30
- let i = r.indexOf(",") !== -1, a = r.indexOf(".") !== -1;
31
- i && a ? r = r.replace(/,/g, "") : i && (r = r.replace(/,/g, "."));
32
- let o = Number(r);
33
- return Number.isFinite(o) ? o : void 0;
34
- }
35
- function l(e) {
36
- return c(e) ?? 0;
37
- }
38
- function ee(e) {
39
- let t = c(e);
40
- return t ? t > 0 : !1;
41
- }
42
- function u(e) {
43
- let t = c(e);
44
- if (!(t === void 0 || !Number.isInteger(t) || t <= 0)) return t;
45
- }
46
- //#endregion
47
- //#region src/odata-service/baseTypes.ts
48
- var d = Object.freeze([
49
- "string",
50
- "number",
51
- "boolean",
52
- "date"
53
- ]), te = new Set(d), ne = Object.freeze({
54
- string: "строка",
55
- number: "число",
56
- boolean: "boolean",
57
- date: "дата"
58
- });
59
- function re(e) {
60
- return typeof e == "string" && te.has(e);
61
- }
62
- function ie(e) {
63
- return ne[e];
64
- }
65
- //#endregion
66
- //#region src/odata-service/schema.ts
67
- var f = {
68
- string: a.string(),
69
- guid: a.uuid().or(a.string().regex(/^[0-9a-fA-F-]+$/, "Invalid GUID")),
70
- boolean: a.boolean(),
71
- int: a.number().int(),
72
- long: a.number().int(),
73
- float: a.number(),
74
- decimal: a.number(),
75
- double: a.number(),
76
- datetime: a.date(),
77
- datetimeOffset: a.date(),
78
- time: a.date(),
79
- binary: a.string(),
80
- byte: a.number().int().min(0).max(255)
81
- };
82
- function p(e, t) {
83
- return t.safeParse(e).success;
84
- }
85
- function ae(e) {
86
- return p(e, f.string);
87
- }
88
- function oe(e) {
89
- return p(e, f.float);
90
- }
91
- function se(e) {
92
- return p(e, f.boolean);
93
- }
94
- function ce(e) {
95
- return p(e, f.datetime);
96
- }
97
- //#endregion
98
- //#region src/odata-service/formatters.ts
99
- function m(e, t) {
100
- switch (e) {
101
- case "string": return `'${String(t).replace(/'/g, "''")}'`;
102
- case "guid": return `guid'${String(t)}'`;
103
- case "boolean": return t ? "'X'" : "' '";
104
- case "long": return `${String(t)}L`;
105
- case "float": return `${String(t)}F`;
106
- case "decimal": return `${String(t)}M`;
107
- case "double": return `${String(t)}D`;
108
- case "datetime":
109
- case "datetimeOffset":
110
- case "time":
111
- if (!(t instanceof Date)) throw Error(`Неверная дата для типа '${e}': ${t}`);
112
- return r[e](t);
113
- case "binary": return `binary'${t}'`;
114
- case "byte":
115
- case "int": return `${String(t)}`;
116
- default: throw Error(`Неподдерживаемый тип: ${e}`);
117
- }
118
- }
119
- function h(e, t) {
120
- let n = f[e].safeParse(t);
121
- if (!n.success) throw Error(`Некорректное значение для типа '${e}': ${n.error.issues[0]?.message ?? t}`);
122
- return m(e, n.data);
123
- }
124
- function le(e) {
125
- if (typeof e == "boolean") return e;
126
- if (typeof e == "number") return e === 1 || e !== 0 && void 0;
127
- if (typeof e != "string") return;
128
- if (e === "X") return !0;
129
- if (e === " " || e === "") return !1;
130
- let t = e.trim().toLowerCase();
131
- if (t === "true" || t === "1") return !0;
132
- if (t === "false" || t === "0") return !1;
133
- }
134
- function ue(e) {
135
- if (e == null) return !1;
136
- if (typeof e == "string" && (e === "X" || e === " " || e === "")) return o(e);
137
- }
138
- function g(e, n) {
139
- switch (e) {
140
- case "boolean": return le(n) ?? n;
141
- case "int":
142
- case "long":
143
- case "float":
144
- case "decimal":
145
- case "double":
146
- case "byte": return l(n);
147
- case "datetime":
148
- case "datetimeOffset":
149
- case "time": return t(n);
150
- default: return String(n);
151
- }
152
- }
153
- function de(e, t) {
154
- if (e.abapBooleanLike) {
155
- let e = ue(t);
156
- if (e !== void 0) return e;
157
- }
158
- return g(e.type, t);
159
- }
160
- function fe(e) {
161
- switch (e) {
162
- case "boolean": return !1;
163
- case "int":
164
- case "long":
165
- case "float":
166
- case "decimal":
167
- case "double":
168
- case "byte": return 0;
169
- case "datetime":
170
- case "datetimeOffset":
171
- case "time": return /* @__PURE__ */ new Date();
172
- default: return "";
173
- }
174
- }
175
- function pe(e) {
176
- switch (e) {
177
- case "boolean": return !1;
178
- case "number": return 0;
179
- case "date": return /* @__PURE__ */ new Date();
180
- default: return "";
181
- }
182
- }
183
- function _(e, t) {
184
- return (...n) => {
185
- let r = e.safeParse(n);
186
- if (!r.success) throw Error(`Validation failed: ${r.error.message}`);
187
- return t(...r.data);
188
- };
189
- }
190
- function v(e) {
191
- return _(a.array(a.boolean()), e);
192
- }
193
- function me(e) {
194
- return _(a.array(a.string()), e);
195
- }
196
- function he(e) {
197
- return _(a.array(a.number()), e);
198
- }
199
- function y(e) {
200
- return _(a.array(a.date()), e);
201
- }
202
- var ge = y(r.datetime), _e = y(r.datetimeOffset), ve = y(r.time), ye = y((e) => m("string", n(e))), be = v((e) => m("boolean", e)), xe = v((e) => m("string", Number(e))), Se = v((e) => m("byte", Number(e))), Ce = me((e) => m("string", e)), b = {
203
- date: {
204
- base: {
205
- label: "Базовый datetime",
206
- description: "Используется для параметров OData с типом данных datetime",
207
- fn: ge
208
- },
209
- datetimeOffset: {
210
- label: "Базовый datetimeoffset",
211
- description: "Используется для параметров OData с типом данных datetimeoffset",
212
- fn: _e
213
- },
214
- time: {
215
- label: "Базовый time",
216
- description: "Используется для параметров OData с типом данных time",
217
- fn: ve
218
- },
219
- stringAbapDate: {
220
- label: "Дата ABAP YYYYMMDD",
221
- description: "Используется для параметров OData с типом данных string(8)",
222
- fn: ye
223
- }
224
- },
225
- boolean: {
226
- base: {
227
- label: "Базовое ABAP булево",
228
- description: "Стандартный формат abap_bool со значением 'X' для true и '' для false",
229
- fn: be
230
- },
231
- asChar: {
232
- label: "Как символ",
233
- description: "Преобразование булево в символы '0' или '1'",
234
- fn: xe
235
- },
236
- asByte: {
237
- label: "Как цифра",
238
- description: "Преобразование булево в цифру 0 или 1",
239
- fn: Se
240
- }
241
- },
242
- string: { base: {
243
- label: "Базовая строка",
244
- description: "",
245
- fn: Ce
246
- } }
247
- };
248
- function x(e) {
249
- switch (e) {
250
- case "boolean": return "boolean";
251
- case "int":
252
- case "long":
253
- case "float":
254
- case "decimal":
255
- case "double":
256
- case "byte": return "number";
257
- case "datetime":
258
- case "datetimeOffset":
259
- case "time": return "date";
260
- default: return "string";
261
- }
262
- }
263
- function we(e) {
264
- let t = b[x(e)];
265
- return t ? Object.entries(t).map(([e, t]) => ({
266
- id: e,
267
- ...t
268
- })) : [];
269
- }
270
- function Te(e) {
271
- let t = b[e];
272
- return t ? Object.entries(t).map(([e, t]) => ({
273
- id: e,
274
- ...t
275
- })) : [];
276
- }
277
- function Ee(e, t) {
278
- return b[x(e)]?.[t];
279
- }
280
- function De(e, t) {
281
- return b[e]?.[t];
282
- }
283
- //#endregion
284
- //#region src/odata-service/builder.ts
285
- function Oe(e, t) {
286
- if (!t || typeof t != "number") return;
287
- let n = e.match(/^'(.*)'$/s);
288
- if (!n) throw Error(`Значение должно быть заключено в одинарные кавычки: ${e}`);
289
- let r = n[1];
290
- if (r.length > t) throw Error(`Значение слишком длинное для maxLength=${t}: '${e}' (${r.length} символов внутри кавычек)`);
291
- }
292
- function S(e, t) {
293
- return e.parameters ? e.parameters.map((e) => {
294
- let { id: n, type: r, maxLength: i, mandatory: a } = e, o = t[n] ?? {}, s = o.value, c = o.formatter;
295
- if (a && s == null) throw Error(`Отсутствует обязательный параметр: ${n}`);
296
- if (s == null) return null;
297
- try {
298
- if (Array.isArray(s) && !c) throw Error("Массив значений OData-параметра требует custom formatter");
299
- let e = c ? c(s) : h(r, s);
300
- return Oe(e, i), [n, e];
301
- } catch (e) {
302
- throw Error(`Ошибка форматирования параметра ${n}: ${String(e)}`);
303
- }
304
- }).filter((e) => e !== null) : [];
305
- }
306
- function C(e, t) {
307
- let n = S(e, t);
308
- return n.length ? `(${n.map(([e, t]) => `${e}=${encodeURIComponent(t)}`).join(",")})` : "";
309
- }
310
- function w(e, t) {
311
- let n = new URLSearchParams();
312
- for (let [r, i] of S(e, t)) n.set(r, i);
313
- return n;
314
- }
315
- function ke(e, t, n, r) {
316
- let i = `/${t.service}/${t.target}`;
317
- return r === "create" ? i : r === "query" ? e.result ? T(e, t, n) : (__DEV__ && Object.keys(n).length > 0 && console.warn(`Параметры для query-запроса '/${t.service}/${t.target}' проигнорированы: target не поддерживает parameterized query.`), i) : `${i}${C(e, n)}`;
318
- }
319
- function Ae(e, t, n) {
320
- let r = w(e, n).toString(), i = `/${t.service}/${t.target}`;
321
- return r ? `${i}?${r}` : i;
322
- }
323
- function T(e, t, n) {
324
- let r = C(e, n), i = e.result ? `/${e.result}` : "";
325
- return `/${t.service}/${t.target}${r}${i}`;
326
- }
327
- //#endregion
328
- //#region src/odata-service/columns.ts
329
- function E(e) {
330
- return e.filter((e) => e.semanticType === "code" && e.filterable);
331
- }
332
- function je(e) {
333
- return new Set(E(e).map((e) => e.id));
334
- }
335
- //#endregion
336
- //#region src/odata-service/filters.ts
337
- var Me = Object.freeze({
338
- eq: "eq",
339
- ne: "ne",
340
- gt: "gt",
341
- ge: "ge",
342
- lt: "lt",
343
- le: "le",
344
- startswith: "startswith",
345
- endswith: "endswith",
346
- contains: "contains"
347
- }), Ne = Object.freeze(Object.values(Me)), Pe = Object.freeze({
348
- eq: "равно",
349
- ne: "не равно",
350
- gt: "больше",
351
- ge: "больше или равно",
352
- lt: "меньше",
353
- le: "меньше или равно",
354
- startswith: "начинается с",
355
- endswith: "заканчивается на",
356
- contains: "содержит"
357
- }), Fe = new Set(Ne);
358
- function Ie(e) {
359
- return typeof e == "string" && Fe.has(e);
360
- }
361
- function Le(e) {
362
- return Pe[e];
363
- }
364
- function Re(e) {
365
- switch (typeof e) {
366
- case "bigint":
367
- case "number": return "int";
368
- case "boolean": return "boolean";
369
- case "object": if (e instanceof Date) return "datetime";
370
- }
371
- return "string";
372
- }
373
- function D(e) {
374
- let { key: t, operation: n = "eq", value: r, type: i } = e, a = h(i ?? Re(r), r);
375
- return n === "contains" ? `substringof(${a},${String(t)})` : n === "startswith" || n === "endswith" ? `${n}(${String(t)}, ${a})` : `${String(t)} ${n} ${a}`;
376
- }
377
- function ze(e) {
378
- return "conditions" in e && e.conditions !== void 0;
379
- }
380
- function Be(e) {
381
- return "filters" in e && e.filters !== void 0;
382
- }
383
- function Ve(e, t) {
384
- let n = [];
385
- for (let r of e) {
386
- let e = t(r);
387
- e && n.push(e);
388
- }
389
- return n;
390
- }
391
- function O(e) {
392
- if (!e) return "";
393
- if (ze(e)) {
394
- let { conditions: t, and: n = !1 } = e;
395
- if (t.length === 0) return "";
396
- if (t.length === 1) return D(t[0]);
397
- let r = n ? "and" : "or";
398
- return `(${t.map(D).join(` ${r} `)})`;
399
- }
400
- if (Be(e)) {
401
- let { filters: t, and: n = !1 } = e;
402
- if (t.length === 0) return "";
403
- if (t.length === 1) return O(t[0]);
404
- let r = n ? "and" : "or", i = Ve(t, O);
405
- return i.length === 0 ? "" : i.length === 1 ? i[0] : `(${i.join(` ${r} `)})`;
406
- }
407
- throw Error("Некорректное выражение фильтра");
408
- }
409
- function He(e) {
410
- let t = (e) => {
411
- if (!e) return "";
412
- if (ze(e)) {
413
- let { conditions: t, and: n = !1 } = e;
414
- if (t.length === 0) return "";
415
- if (t.length === 1) return D(t[0]);
416
- let r = n ? "and" : "or";
417
- return `(${t.map(D).join(` ${r} `)})`;
418
- }
419
- if (Be(e)) {
420
- let { filters: n, and: r = !1 } = e;
421
- if (n.length === 0) return "";
422
- if (n.length === 1) return t(n[0]);
423
- let i = r ? "and" : "or", a = Ve(n, t).map((e) => e.includes(" ") ? `(${e})` : e);
424
- return a.length === 0 ? "" : a.length === 1 ? a[0] : `(${a.join(` ${i} `)})`;
425
- }
426
- return "";
427
- };
428
- return t(e);
429
- }
430
- function k(e, t, n) {
431
- if (t == null) return { conditions: [] };
432
- if (Array.isArray(t)) {
433
- let r = [];
434
- for (let i of t) i != null && r.push({
435
- key: e,
436
- value: i,
437
- operation: n
438
- });
439
- return { conditions: r };
440
- }
441
- return { conditions: [{
442
- key: e,
443
- value: t,
444
- operation: n
445
- }] };
446
- }
447
- function Ue(e, t) {
448
- if (!t) return { conditions: [] };
449
- let n = t[0], r = t[1];
450
- return n == null || r == null ? n ? { conditions: [{
451
- key: e,
452
- value: n,
453
- operation: "ge"
454
- }] } : r ? { conditions: [{
455
- key: e,
456
- value: r,
457
- operation: "le"
458
- }] } : { conditions: [] } : {
459
- and: !0,
460
- conditions: [{
461
- key: e,
462
- value: n,
463
- operation: "ge"
464
- }, {
465
- key: e,
466
- value: r,
467
- operation: "le"
468
- }]
469
- };
470
- }
471
- function A(e, t) {
472
- return k(e, t, "eq");
473
- }
474
- function We(e, t) {
475
- return k(e, Array.isArray(t) ? t.map((e) => e || null) : t || null, "eq");
476
- }
477
- function Ge(e, t) {
478
- return k(e, t, "contains");
479
- }
480
- function Ke(e, t) {
481
- return e ? t ? {
482
- and: !0,
483
- filters: [e, t]
484
- } : e : t;
485
- }
486
- //#endregion
487
- //#region src/odata-service/filterDefinitions.ts
488
- function qe(e) {
489
- return e === "select" || e === "multi-select" || e === "checkbox" || e === "text-input" || e === "number-input";
490
- }
491
- function j(e, t) {
492
- return e?.conditions.length ? e.conditions.map((e) => e.columnId?.trim() || t).filter((e) => !!e) : [];
493
- }
494
- function M(e, t) {
495
- let n = e.kind === "list" ? e.options.flatMap((e) => j(e.filter, t)) : e.kind === "boolean" ? j(e.trueFilter, t) : j(e.valueFilter, t);
496
- return [...new Set(n.length ? n : t ? [t] : [])];
497
- }
498
- function N(e, t) {
499
- let n = j(e, t);
500
- return n.length ? n : t ? [t] : [];
501
- }
502
- function Je(e) {
503
- return e.kind === "registered" ? e.valueMode === "multiple" : e.componentId === "multi-select";
504
- }
505
- function Ye(e) {
506
- return Array.isArray(e) ? [...new Set(e.filter((e) => typeof e == "string").map((e) => e.trim()))] : [];
507
- }
508
- function P(e, t) {
509
- if (Je(e)) return Ye(t);
510
- let n = I(t);
511
- return typeof n == "string" ? [n] : [];
512
- }
513
- function Xe(e) {
514
- let t = H([e])[0];
515
- return t ? t.kind === "registered" ? [...t.columnIds] : t.kind === "segment" || t.kind === "column" || t.kind === "advanced" ? [t.ownerColumnId] : [...t.columnIds] : [];
516
- }
517
- function Ze(e, t) {
518
- let n = H([e])[0], r = U(t);
519
- if (!n || r === void 0) return [];
520
- switch (n.kind) {
521
- case "segment":
522
- case "column":
523
- case "advanced": return [n.ownerColumnId];
524
- case "tree": {
525
- let e = z(r);
526
- return e ? Object.keys(e).filter((e) => n.columnIds.includes(e)) : [];
527
- }
528
- case "local":
529
- if (n.binding.kind === "list") {
530
- let e = P(n, r);
531
- return [...new Set(e.flatMap((e) => {
532
- let t = n.binding.kind === "list" ? n.binding.options.find((t) => t.key === e) : void 0;
533
- return t ? N(t.filter, n.ownerColumnId) : [];
534
- }))];
535
- }
536
- return n.binding.kind === "boolean" ? r === !0 ? N(n.binding.trueFilter, n.ownerColumnId) : [] : N(n.binding.valueFilter, n.ownerColumnId);
537
- case "registered": {
538
- let e = n.binding;
539
- if (!e) return [];
540
- if (e.kind === "list") {
541
- let t = P(n, r);
542
- return [...new Set(t.flatMap((t) => {
543
- let n = e.options.find((e) => e.key === t);
544
- return n ? N(n.filter, "") : [];
545
- }))];
546
- }
547
- return e.kind === "boolean" ? r === !0 ? N(e.trueFilter, "") : [] : N(e.valueFilter, "");
548
- }
549
- default: return [];
550
- }
551
- }
552
- function F(e, t) {
553
- let n = e?.trim();
554
- return n && n !== t ? n : void 0;
555
- }
556
- function I(e) {
557
- if (e instanceof Date) return Number.isFinite(e.getTime()) ? e : void 0;
558
- if (typeof e == "string") return e.trim();
559
- if (typeof e == "number") return Number.isFinite(e) ? e : void 0;
560
- if (typeof e == "boolean") return e;
561
- }
562
- function L(e) {
563
- return e instanceof Date ? `date:${e.toISOString()}` : `${typeof e}:${String(e)}`;
564
- }
565
- function R(e) {
566
- if (!Array.isArray(e)) return;
567
- let t = /* @__PURE__ */ new Set(), n = [];
568
- for (let r of e) {
569
- let e = I(r);
570
- if (e === void 0) continue;
571
- let i = L(e);
572
- t.has(i) || (t.add(i), n.push(e));
573
- }
574
- return n.sort((e, t) => i(L(e), L(t))), n.length ? n : void 0;
575
- }
576
- function Qe(e) {
577
- if (!Array.isArray(e)) return;
578
- let t = [...new Set(e.filter((e) => typeof e == "string").map((e) => e.trim()).filter(Boolean))];
579
- return t.length ? t : void 0;
580
- }
581
- function z(e) {
582
- if (!e || typeof e != "object" || Array.isArray(e) || e instanceof Date) return;
583
- let t = Object.fromEntries(Object.entries(e).map(([e, t]) => [e.trim(), Qe(t)]).filter((e) => !!e[0] && !!e[1]?.length));
584
- return Object.keys(t).length ? t : void 0;
585
- }
586
- function B(e) {
587
- if (!e?.conditions?.length) return;
588
- let t = [];
589
- for (let n of e.conditions) {
590
- let e = I(n.value);
591
- (n.valueSource !== "static" || e !== void 0) && t.push({
592
- columnId: n.columnId?.trim() || void 0,
593
- operation: n.operation,
594
- valueSource: n.valueSource,
595
- value: e
596
- });
597
- }
598
- if (t.length) return {
599
- and: e.and === !1 ? !1 : e.and ? !0 : void 0,
600
- conditions: t
601
- };
602
- }
603
- function V(e) {
604
- if (e) {
605
- if (e.kind === "list") {
606
- let t = [];
607
- for (let n of e.options ?? []) {
608
- let e = n.key.trim();
609
- t.push({
610
- key: e,
611
- label: n.label.trim() || e,
612
- filter: B(n.filter)
613
- });
614
- }
615
- if (!t.length) return;
616
- let n = e.and === !0 || e.and !== !1 && void 0;
617
- return {
618
- kind: "list",
619
- ...n === void 0 ? {} : { and: n },
620
- options: t
621
- };
622
- }
623
- return e.kind === "boolean" ? {
624
- kind: "boolean",
625
- trueFilter: B(e.trueFilter)
626
- } : {
627
- kind: "value",
628
- valueFilter: B(e.valueFilter)
629
- };
630
- }
631
- }
632
- function H(e) {
633
- if (!e?.length) return [];
634
- let t = [];
635
- for (let n of e) {
636
- let e = n.id.trim();
637
- if (!e) continue;
638
- let r = { ...n };
639
- if (r.kind === "odata-segment" && (r.kind = "segment"), r.kind === "odata-tree" && (r.kind = "tree"), r.kind === "registered") {
640
- let n = r.componentId.trim(), i = r.valueMode;
641
- if (!n || i !== "single" && i !== "multiple") continue;
642
- let a = V(r.binding);
643
- t.push({
644
- ...r,
645
- id: e,
646
- componentId: n,
647
- valueMode: i,
648
- columnIds: a ? M(a, "") : [],
649
- binding: a
650
- });
651
- continue;
652
- }
653
- let i = r.ownerColumnId.trim();
654
- if (i) switch (r.kind) {
655
- case "segment":
656
- t.push({
657
- ...r,
658
- id: e,
659
- ownerColumnId: i,
660
- columnIds: [i],
661
- componentId: r.componentId === "select" ? "select" : "multi-select",
662
- dictionaryCodeKey: F(r.dictionaryCodeKey, i)
663
- });
664
- break;
665
- case "tree": {
666
- let n = [...new Set(r.columnIds.map((e) => e.trim()).filter(Boolean))];
667
- if (!n.length) break;
668
- let a = r.componentId, o = a === "treeSelect" || a === "tree-select" ? "tree-select" : "tree-multi-select";
669
- t.push({
670
- ...r,
671
- id: e,
672
- ownerColumnId: n.includes(i) ? i : n[0],
673
- columnIds: n,
674
- componentId: o,
675
- levelOperator: r.levelOperator === "or" ? "or" : void 0
676
- });
677
- break;
678
- }
679
- case "local": {
680
- let n = V(r.binding);
681
- if (!n) break;
682
- t.push({
683
- ...r,
684
- id: e,
685
- ownerColumnId: i,
686
- columnIds: M(n, i),
687
- binding: n
688
- });
689
- break;
690
- }
691
- case "advanced":
692
- t.push({
693
- ...r,
694
- id: e,
695
- ownerColumnId: i
696
- });
697
- break;
698
- case "column": t.push({
699
- ...r,
700
- id: e,
701
- ownerColumnId: i
702
- });
703
- }
704
- }
705
- return t;
706
- }
707
- function U(e) {
708
- if (e == null) return;
709
- let t = I(e);
710
- return t === void 0 ? R(e) || z(e) : t;
711
- }
712
- function W(e) {
713
- if (!e) return {};
714
- let t = {};
715
- for (let [n, r] of Object.entries(e)) {
716
- let e = n.trim();
717
- if (!e) continue;
718
- let i = U(r);
719
- i !== void 0 && (t[e] = i);
720
- }
721
- return t;
722
- }
723
- function $e(e, t, n) {
724
- let r = { ...W(e) }, i = U(n);
725
- return i === void 0 ? (delete r[t], r) : (r[t] = i, r);
726
- }
727
- function et(e, t, n) {
728
- if (!e || Object.keys(e).length === 0) return {};
729
- let r = {}, i = {};
730
- for (let [e, t] of Object.entries(n)) for (let n of t) i[n.codeKey] = e;
731
- let a = {}, o = new Set(t);
732
- for (let [t, n] of Object.entries(e)) {
733
- let e = i[t], s = o.has(t);
734
- if (e && s && (Array.isArray(n) || typeof n == "string")) {
735
- a[e] = a[e] ?? [], a[e].push(t);
736
- continue;
737
- }
738
- r[t] = n;
739
- }
740
- for (let [t, i] of Object.entries(a)) {
741
- let a = n[t];
742
- if (!a) continue;
743
- let o = null;
744
- for (let { codeKey: e } of [...a].reverse()) if (i.includes(e)) {
745
- o = e;
746
- break;
747
- }
748
- o && e[o] !== void 0 && (r[o] = e[o]);
749
- }
750
- return r;
751
- }
752
- function tt(e, t) {
753
- return I(t);
754
- }
755
- function nt(e, t, n) {
756
- let r = tt(t.valueSource, t.valueSource === "input" ? n : t.value);
757
- if (r === void 0) return;
758
- let i = t.columnId?.trim() || e;
759
- if (i) return {
760
- key: i,
761
- operation: t.operation,
762
- value: r
763
- };
764
- }
765
- function G(e, t, n) {
766
- if (!t?.conditions.length) return;
767
- let r = t.conditions.map((t) => nt(e, t, n)).filter((e) => !!e);
768
- if (r.length) return {
769
- and: t.and !== !1 || void 0,
770
- conditions: r
771
- };
772
- }
773
- function rt(e) {
774
- return A(e, !0);
775
- }
776
- function K(e, t) {
777
- return A(e, t);
778
- }
779
- function it(e, t) {
780
- let n = z(t);
781
- if (!n) return;
782
- let r = e.columnIds.map((e) => {
783
- let t = n[e];
784
- if (t?.length) return A(e, t);
785
- }).filter((e) => !!e);
786
- if (r.length) return r.length === 1 ? r[0] : {
787
- and: e.levelOperator !== "or" || void 0,
788
- filters: r
789
- };
790
- }
791
- function at(e, t) {
792
- if (!e.binding || e.binding.kind !== "list") return;
793
- let n = e.binding, r = P(e, t);
794
- if (!r.length) return;
795
- let i = e.kind === "local" ? e.ownerColumnId : "", a = r.map((t) => {
796
- let r = n.options.find((e) => e.key === t);
797
- if (!r) return;
798
- let a = G(i, r.filter);
799
- return a || e.kind === "registered" ? a : K(e.ownerColumnId, r.key);
800
- }).filter((e) => !!e);
801
- if (a.length) return a.length === 1 ? a[0] : {
802
- and: n.and === !0 || void 0,
803
- filters: a
804
- };
805
- }
806
- function ot(e, t) {
807
- if (t !== void 0) switch (e.kind) {
808
- case "segment": {
809
- if (e.componentId === "select") {
810
- let n = I(t);
811
- return n === void 0 ? void 0 : K(e.ownerColumnId, n);
812
- }
813
- let n = R(t);
814
- return n?.length ? K(e.ownerColumnId, n) : void 0;
815
- }
816
- case "tree": return it(e, t);
817
- case "local": return e.binding.kind === "list" ? at(e, t) : e.binding.kind === "boolean" ? t === !0 ? G(e.ownerColumnId, e.binding.trueFilter) ?? rt(e.ownerColumnId) : void 0 : G(e.ownerColumnId, e.binding.valueFilter, t) ?? (() => {
818
- let n = I(t), r = R(t), i = n ?? r;
819
- return i === void 0 ? void 0 : K(e.ownerColumnId, i);
820
- })();
821
- case "registered": return e.binding ? e.binding.kind === "list" ? at(e, t) : e.binding.kind === "boolean" ? t === !0 ? G("", e.binding.trueFilter) : void 0 : G("", e.binding.valueFilter, t) : void 0;
822
- case "column": {
823
- let n = I(t), r = R(t), i = n ?? r;
824
- return i === void 0 ? void 0 : K(e.ownerColumnId, i);
825
- }
826
- case "advanced": {
827
- let n = R(t);
828
- return n?.length ? K(e.ownerColumnId, n) : void 0;
829
- }
830
- }
831
- }
832
- function st(e, t) {
833
- let n = H(e), r = W(t);
834
- if (!n.length || !Object.keys(r).length) return;
835
- let i = n.map((e) => ot(e, r[e.id])).filter((e) => !!e);
836
- if (i.length) return i.length === 1 ? i[0] : {
837
- and: !0,
838
- filters: i
839
- };
840
- }
841
- function ct(e, t) {
842
- let n = H(e), r = W(t), i = {};
843
- for (let e of n) {
844
- if (e.kind !== "segment" && e.kind !== "tree") continue;
845
- let t = r[e.id];
846
- if (t === void 0) continue;
847
- if (e.kind === "segment") {
848
- let n = typeof t == "string" ? t : void 0, r = Qe(t), a = n ? [n] : r;
849
- if (!a?.length) continue;
850
- i[e.dictionaryCodeKey ?? e.ownerColumnId] = a;
851
- continue;
852
- }
853
- let n = z(t);
854
- if (n) for (let t of e.columnIds) {
855
- let e = n[t];
856
- e && e.length && (i[t] = e);
857
- }
858
- }
859
- return i;
860
- }
861
- //#endregion
862
- //#region src/odata-service/parser.ts
863
- var lt = /^(.+)(_txt|_text|_t)$/i, q = /* @__PURE__ */ new Set(["ZDIV", "ZCFO1"]);
864
- function ut(e) {
865
- return e.label || e.id;
866
- }
867
- function dt(e) {
868
- return e ? q.has(e.toUpperCase()) : !1;
869
- }
870
- function ft(e) {
871
- if (!e) return !1;
872
- let t = e.toUpperCase();
873
- if (q.has(t)) return !0;
874
- let n = t.match(/^(.+)(_TXT|_TEXT|_T)$/);
875
- return n ? q.has(n[1]) : !1;
876
- }
877
- function pt(e) {
878
- return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
879
- }
880
- function J(e) {
881
- return e.startsWith("Edm.");
882
- }
883
- function Y(e, t) {
884
- if (t) return e[t.toUpperCase()];
885
- }
886
- function mt(e, t, n) {
887
- let r = Y(n, e);
888
- if (!r) return;
889
- let i = RegExp(`^${pt(r)}(_txt|_text|_t)$`, "i");
890
- for (let e of t) if (i.test(e.id)) return e.id;
891
- }
892
- function ht(e) {
893
- let t = {}, n = {};
894
- for (let r of e) t[r.id] = r, n[r.id.toUpperCase()] = r.id;
895
- for (let t of e) {
896
- if (t.role === "measure") {
897
- t.semanticType = "none", t.linkedColumnId = void 0;
898
- continue;
899
- }
900
- t.role = "dimension", t.sortable = !0, t.filterable = !0, t.semanticType = lt.test(t.id) ? "text" : "code";
901
- let e = Y(n, t.linkedColumnId);
902
- t.linkedColumnId = e && e !== t.id ? e : void 0;
903
- }
904
- for (let r of e) {
905
- if (r.role !== "dimension" || r.semanticType !== "code") continue;
906
- let i = r.linkedColumnId;
907
- if (i) {
908
- let e = t[i];
909
- !e || e.role !== "dimension" ? i = void 0 : e.semanticType = "text";
910
- }
911
- if (i ||= mt(r.id, e, n), !i && dt(r.id) && (i = mt(r.id, e, n)), r.linkedColumnId = i, i) {
912
- let e = t[i];
913
- e && e.role === "dimension" && (e.semanticType = "text", e.linkedColumnId = r.id);
914
- }
915
- }
916
- for (let r of e) {
917
- if (r.role !== "dimension" || r.semanticType !== "text") continue;
918
- let e = r.linkedColumnId;
919
- if (e) {
920
- let n = t[e];
921
- !n || n.role !== "dimension" ? e = void 0 : n.semanticType = "code";
922
- }
923
- if (!e) {
924
- let i = Y(n, r.id.match(lt)?.[1]);
925
- i && t[i]?.role === "dimension" && (e = i);
926
- }
927
- if (r.linkedColumnId = e, e) {
928
- let n = t[e];
929
- n && n.role === "dimension" && (n.semanticType = "code", n.linkedColumnId ||= r.id);
930
- }
931
- }
932
- return e;
933
- }
934
- function gt(e) {
935
- switch (e) {
936
- case "Edm.String": return "string";
937
- case "Edm.Guid": return "guid";
938
- case "Edm.Boolean": return "boolean";
939
- case "Edm.Int16":
940
- case "Edm.Int32": return "int";
941
- case "Edm.Int64": return "long";
942
- case "Edm.Single": return "float";
943
- case "Edm.Decimal": return "decimal";
944
- case "Edm.Double": return "double";
945
- case "Edm.DateTime": return "datetime";
946
- case "Edm.DateTimeOffset": return "datetimeOffset";
947
- case "Edm.Time": return "time";
948
- case "Edm.Binary": return "binary";
949
- case "Edm.Byte": return "byte";
950
- default: throw Error(`Неподдерживаемый тип данных ${e}`);
951
- }
952
- }
953
- function X(e) {
954
- let t = e.getAttribute("Name"), n = e.getAttribute("Type") || "", r = gt(n), i = e.hasAttribute("MaxLength") ? Number(e.getAttribute("MaxLength")) : void 0, a = e.hasAttribute("Precision") ? Number(e.getAttribute("Precision")) : void 0, o = e.hasAttribute("Scale") ? Number(e.getAttribute("Scale")) : void 0, s = e.getAttribute("sap:label") || void 0, c = e.getAttribute("sap:parameter") || void 0, l = e.getAttribute("Nullable") !== "false" || void 0;
955
- return {
956
- id: t,
957
- label: s ?? t,
958
- type: r,
959
- originalType: n,
960
- ...r === "string" && i === 1 ? { abapBooleanLike: !0 } : {},
961
- ...i !== void 0 && { maxLength: i },
962
- ...a !== void 0 && { precision: a },
963
- ...o !== void 0 && { scale: o },
964
- ...c !== void 0 && { parameter: c },
965
- ...l !== void 0 && { nullable: !0 },
966
- ...c === "mandatory" && { mandatory: !0 }
967
- };
968
- }
969
- function _t(e) {
970
- let t = X(e), n = e.getAttribute("sap:text") || void 0, r = e.getAttribute("sap:sortable") !== "false", i = e.getAttribute("sap:filterable") !== "false", a = e.getAttribute("sap:aggregation-role") === "measure" ? "measure" : "dimension", o = e.getAttribute("sap:label") || void 0, { nullable: s, mandatory: c, ...l } = t;
971
- return {
972
- ...l,
973
- ...n !== void 0 && { linkedColumnId: n },
974
- ...o !== void 0 && { label: o },
975
- semanticType: "none",
976
- sortable: r,
977
- filterable: i,
978
- role: a
979
- };
980
- }
981
- function vt(e) {
982
- let t = e.getAttribute("Name"), n = e.getAttribute("Type") || "";
983
- return !t || !J(n) ? !1 : !(["CNT", "cnt"].includes(t) || /_F$/i.test(t));
984
- }
985
- function yt(e) {
986
- let t = e.getAttribute("Name"), n = e.getAttribute("Type") || "";
987
- return !t || !J(n) ? !1 : !(["CNT", "cnt"].includes(t) || /_F$/i.test(t));
988
- }
989
- function Z(e) {
990
- return Array.from(e.getElementsByTagName("Property"));
991
- }
992
- function bt(e) {
993
- return Array.from(e.getElementsByTagName("PropertyRef"));
994
- }
995
- function xt(e) {
996
- return Array.from(e.getElementsByTagName("NavigationProperty"));
997
- }
998
- function St(e) {
999
- return Z(e).filter(vt).map(X);
1000
- }
1001
- function Ct(e) {
1002
- let t = Z(e).filter(vt), n = bt(e);
1003
- return t.map((e) => {
1004
- let t = X(e);
1005
- return n.find((e) => e.getAttribute("Name") === t.id) && (t.mandatory = !0), t;
1006
- });
1007
- }
1008
- function wt(e) {
1009
- return ht(Z(e).filter(yt).map(_t));
1010
- }
1011
- function Q(e) {
1012
- if (!e) return;
1013
- let t = e.split(".");
1014
- return t[t.length - 1] || void 0;
1015
- }
1016
- function Tt(e) {
1017
- let t = e.getAttribute("Mode");
1018
- if (t && t !== "In") {
1019
- let n = e.getAttribute("Name") || "(unknown)";
1020
- throw Error(`FunctionImport parameter '${n}' uses unsupported Mode='${t}'`);
1021
- }
1022
- let n = e.getAttribute("Type") || "";
1023
- if (!J(n)) {
1024
- let t = e.getAttribute("Name") || "(unknown)";
1025
- throw Error(`FunctionImport parameter '${t}' uses unsupported Type='${n}'`);
1026
- }
1027
- let r = X(e);
1028
- return e.getAttribute("Nullable") === "false" && (r.mandatory = !0), r;
1029
- }
1030
- function Et(e) {
1031
- return e.reduce((e, t) => {
1032
- let n = t.getAttribute("Name");
1033
- return n && (e[n] = t), e;
1034
- }, {});
1035
- }
1036
- function Dt(e) {
1037
- return Array.from(e.getElementsByTagName("EntitySet")).reduce((e, t) => {
1038
- let n = t.getAttribute("Name"), r = Q(t.getAttribute("EntityType"));
1039
- return !n || !r || (e[n] = r), e;
1040
- }, {});
1041
- }
1042
- function Ot(e) {
1043
- return Array.from(e.getElementsByTagName("AssociationSet")).reduce((e, t) => {
1044
- let n = t.getAttribute("Association");
1045
- if (!n) return e;
1046
- let r = { ends: Array.from(t.getElementsByTagName("End")).map((e) => {
1047
- let t = e.getAttribute("Role"), n = e.getAttribute("EntitySet");
1048
- if (!(!t || !n)) return {
1049
- role: t,
1050
- entitySet: n
1051
- };
1052
- }).filter((e) => !!e) };
1053
- e[n] = r;
1054
- let i = Q(n);
1055
- return i && (e[i] = r), e;
1056
- }, {});
1057
- }
1058
- function kt(e, t) {
1059
- for (let n of xt(e)) {
1060
- let e = n.getAttribute("Name");
1061
- if (e !== "Set" && e !== "Results") continue;
1062
- let r = n.getAttribute("Relationship"), i = r ? t[r] : void 0, a = n.getAttribute("ToRole"), o = n.getAttribute("FromRole"), s = i?.ends.find((e) => e.role === a)?.entitySet;
1063
- return !s && i && (s = i.ends.find((e) => e.role !== o)?.entitySet), {
1064
- name: e,
1065
- targetEntitySet: s
1066
- };
1067
- }
1068
- }
1069
- function At(e, t, n) {
1070
- let r = /* @__PURE__ */ new Set();
1071
- for (let [i, a] of Object.entries(e)) {
1072
- let e = t[a];
1073
- if (!e) continue;
1074
- let o = kt(e, n);
1075
- o?.targetEntitySet && o.targetEntitySet !== i && r.add(o.targetEntitySet);
1076
- }
1077
- return r;
1078
- }
1079
- function jt(e, t, n, r) {
1080
- let i = t?.targetEntitySet ? n[t.targetEntitySet] : void 0;
1081
- return i && r[i] || e;
1082
- }
1083
- function Mt(e, t, n) {
1084
- if (n) return St(e);
1085
- if (!t.endsWith("Type")) return Ct(e);
1086
- }
1087
- function Nt(e, t) {
1088
- if (!e) return /* @__PURE__ */ new Set();
1089
- let n = Q(e);
1090
- if (!n) return /* @__PURE__ */ new Set();
1091
- let r = t[n];
1092
- return r ? new Set(bt(r).map((e) => e.getAttribute("Name")).filter((e) => !!e)) : /* @__PURE__ */ new Set();
1093
- }
1094
- function Pt(e, t, n) {
1095
- let r = e.getAttribute("Name") || "", i = e.getAttribute("EntitySet") || void 0, a = e.getAttribute("sap:action-for") || void 0, o = Nt(a, n), s = Array.from(e.getElementsByTagName("Parameter")).map((e) => {
1096
- let t = Tt(e);
1097
- return o.has(t.id) && (t.mandatory = !0), t;
1098
- });
1099
- return {
1100
- name: r,
1101
- title: e.getAttribute("sap:label") || "",
1102
- httpMethod: e.getAttribute("m:HttpMethod") || void 0,
1103
- parameters: s.length ? s : void 0,
1104
- returnType: e.getAttribute("ReturnType") || "",
1105
- ...i !== void 0 && { entitySet: i },
1106
- ...a !== void 0 && { actionFor: a },
1107
- ...i && t[i] ? { resultEntity: i } : {}
1108
- };
1109
- }
1110
- function Ft(e) {
1111
- let t = new DOMParser().parseFromString(e, "application/xml"), n = Array.from(t.getElementsByTagName("EntityType")), r = Array.from(t.getElementsByTagName("FunctionImport")), i = Dt(t), a = Et(n), o = Ot(t), s = At(i, a, o), c = {}, l = {};
1112
- for (let [e, t] of Object.entries(i)) {
1113
- if (s.has(e)) continue;
1114
- let n = a[t];
1115
- if (!n) continue;
1116
- let r = kt(n, o), l = jt(n, r, i, a), ee = n.getAttribute("sap:label") || l.getAttribute("sap:label") || "", u = wt(l), d = Mt(n, t, r);
1117
- c[e] = {
1118
- title: ee,
1119
- columns: u,
1120
- ...d?.length ? { parameters: d } : {},
1121
- ...r ? { result: r.name } : {}
1122
- };
1123
- }
1124
- for (let e of r) {
1125
- let t = Pt(e, i, a);
1126
- l[t.name] = t;
1127
- }
1128
- return {
1129
- entities: c,
1130
- functionImports: l
1131
- };
1132
- }
1133
- //#endregion
1134
- //#region src/odata-service/sorts.ts
1135
- function It(e, t) {
1136
- return e.findIndex((e) => e.key === t);
1137
- }
1138
- function Lt(e) {
1139
- return e.map((e) => `${String(e.key)} ${e.desc ? "desc" : "asc"}`).join(",");
1140
- }
1141
- function Rt(e, t, n) {
1142
- let r = It(e, t), i = n ? [...e] : [...e.filter((e) => e.key === t)];
1143
- return r === -1 ? (i.push({ key: t }), i) : e[r].desc ? i.filter((e) => e.key !== t) : i.map((e) => e.key === t ? {
1144
- key: t,
1145
- desc: !0
1146
- } : e);
1147
- }
1148
- function zt(e, t) {
1149
- return t.length > 0 ? t.map((e) => ({
1150
- key: e.key,
1151
- desc: e.desc
1152
- })) : e.map((e) => ({ key: e }));
1153
- }
1154
- function Bt(e, t) {
1155
- let n = zt(e, t).map((e) => `${String(e.key)} ${e.desc ? "desc" : "asc"}`);
1156
- return n.length ? n.join(",") : void 0;
1157
- }
1158
- function Vt(e, t, n) {
1159
- let r = t.length > 0, i = e.indexOf(n);
1160
- if (!r && i !== -1) return {
1161
- active: !0,
1162
- order: i + 1,
1163
- lockedByGrouping: !0
1164
- };
1165
- let a = t.findIndex((e) => e.key === n);
1166
- return a === -1 ? { active: !1 } : {
1167
- active: !0,
1168
- desc: t[a]?.desc,
1169
- order: a + 1
1170
- };
1171
- }
1172
- //#endregion
1173
- //#region src/odata-service/sqlFilters.ts
1174
- var Ht = /^[A-Za-z_][A-Za-z0-9_]*$/;
1175
- function Ut(e) {
1176
- return typeof e == "string" || typeof e == "number" || typeof e == "boolean";
1177
- }
1178
- function $(e) {
1179
- if (!Ht.test(e)) throw Error(`Некорректное имя поля SQL-фильтра: ${e}`);
1180
- }
1181
- function Wt(e, t) {
1182
- return {
1183
- fieldId: e,
1184
- operation: "eq",
1185
- value: t
1186
- };
1187
- }
1188
- function Gt(e, t) {
1189
- return {
1190
- fieldId: e,
1191
- operation: "in",
1192
- values: t
1193
- };
1194
- }
1195
- function Kt(e, t) {
1196
- return {
1197
- operation: "group",
1198
- conjunction: t,
1199
- expressions: e
1200
- };
1201
- }
1202
- function qt(e) {
1203
- if (e instanceof Date) throw Error("Дата должна быть отформатирована вызывающей стороной до формирования SQL-фильтра");
1204
- if (!Ut(e) || typeof e == "number" && !Number.isFinite(e)) return;
1205
- let t = String(e);
1206
- if (!(!t || t.trim() === "")) return `'${t.replaceAll("'", "''")}'`;
1207
- }
1208
- function Jt(e) {
1209
- if (e.operation === "group") {
1210
- let t = e.expressions.map((e) => Jt(e)).filter((e) => !!e);
1211
- if (!t.length) return;
1212
- let n = e.conjunction === "or" ? " OR " : " AND ";
1213
- return `(${t.join(n)})`;
1214
- }
1215
- if (e.operation === "eq") {
1216
- let t = qt(e.value);
1217
- return t ? ($(e.fieldId), `${e.fieldId}=${t}`) : void 0;
1218
- }
1219
- let t = (e.values ?? []).map((e) => qt(e)).filter((e) => !!e);
1220
- if (t.length !== 0) return $(e.fieldId), `${e.fieldId} IN (${t.join(", ")})`;
1221
- }
1222
- function Yt(e) {
1223
- return e ? e.map((e) => Jt(e)).filter((e) => !!e).join(" AND ") : "";
1224
- }
1225
- //#endregion
1226
- //#region src/odata-service/typesValidation.ts
1227
- function Xt(e) {
1228
- return e === "boolean";
1229
- }
1230
- function Zt(e) {
1231
- return e === "byte" || e === "int" || e === "long" || e === "float" || e === "decimal" || e === "double";
1232
- }
1233
- function Qt(e) {
1234
- return e === "byte" || e === "int" || e === "long";
1235
- }
1236
- function $t(e) {
1237
- return e === "datetime" || e === "datetimeOffset" || e === "time";
1238
- }
1239
- //#endregion
1240
- //#region src/odata-service/unwrapODataQueryResult.ts
1241
- function en(e) {
1242
- let t = e.data?.data, n = e.data?.totalCount;
1243
- return {
1244
- ...e,
1245
- data: t,
1246
- totalCount: n
1247
- };
1248
- }
1249
- //#endregion
1250
- //#region src/odata-service/utils.ts
1251
- function tn(e) {
1252
- return Array.isArray(e) ? [e[0] ?? null, e[1] ?? null] : [rn(e) ? e ?? null : null, null];
1253
- }
1254
- function nn(t) {
1255
- return t instanceof Date ? t : Array.isArray(t) || e(t) ? null : t;
1256
- }
1257
- function rn(e) {
1258
- return e == null || typeof e == "string" || typeof e == "number" || typeof e == "boolean" || e instanceof Date;
1259
- }
1260
- //#endregion
1261
- //#region src/odata-service/wrapParams.ts
1262
- function an(e) {
1263
- if (!e) return {};
1264
- let t = {};
1265
- for (let n in e) t[n] = { value: e[n] };
1266
- return t;
1267
- }
1268
- function on(e) {
1269
- if (!e) return;
1270
- let t = {};
1271
- for (let n of Object.keys(e).sort()) t[n] = e[n]?.value ?? null;
1272
- return t;
1273
- }
1274
- //#endregion
1275
- export { E as $, ct as A, ie as At, W as B, q as C, ce as Ct, ut as D, d as Dt, Ft as E, f as Et, Xe as F, o as Ft, k as G, Me as H, V as I, s as It, A as J, Ue as K, B as L, $e as M, l as Mt, F as N, c as Nt, et as O, ne as Ot, Ze as P, u as Pt, Le as Q, H as R, Rt as S, se as St, dt as T, ae as Tt, O as U, Ne as V, He as W, Ie as X, We as Y, Ke as Z, Lt as _, we as _t, tn as a, Ae as at, Vt as b, g as bt, $t as c, y as ct, $ as d, me as dt, je as et, Yt as f, pe as ft, Ut as g, De as gt, Gt as h, Ee as ht, nn as i, w as it, qe as j, ee as jt, st as k, re as kt, Qt as l, _ as lt, Kt as m, x as mt, an as n, C as nt, en as o, S as ot, Wt as p, fe as pt, Ge as q, rn as r, T as rt, Xt as s, v as st, on as t, ke as tt, Zt as u, he as ut, Bt as v, Te as vt, ft as w, oe as wt, zt as x, de as xt, It as y, h as yt, U as z };
1276
-
1277
- //# sourceMappingURL=odata-service-B6TxBSLm.js.map