@ryuzaki13/react-foundation-api 1.0.1 → 1.1.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.
@@ -1,4 +1,581 @@
1
- import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y, v as b, w as x, x as S, y as C } from "../chunks/fetch-teHV5e4t.js";
2
- import { a as w, c as T, d as E, f as D, i as O, l as k, m as A, n as j, o as M, p as N, s as P, t as F, u as I } from "../chunks/odataFetchFn-CJIPv-CJ.js";
3
- import { C as L, D as R, E as z, O as B, S as V, T as H, _ as U, a as W, b as G, c as K, d as q, f as J, g as Y, h as X, i as Z, k as Q, l as $, m as ee, n as te, o as ne, p as re, r as ie, s as ae, t as oe, u as se, v as ce, w as le, x as ue, y as de } from "../chunks/odata-BvLTiawF.js";
4
- export { h as BaseAppConfigURL, f as BaseODataDp0URL, l as BaseODataUI2URL, c as BaseODataURL, n as BaseUrlMap, U as ODATA_COLLECTION_BUST_SW_CACHE, ce as ODATA_COLLECTION_DEFAULT_SW_CACHE, de as ODATA_COLLECTION_UPDATES_LOOKBACK_MS, G as ODATA_COLLECTION_UPDATES_SW_CACHE, d as SsoRequiredError, T as applyODataMetadataVersion, i as configureODataProjectAdapter, B as createODataCollectionBaseQueryKey, Q as createODataCollectionQueryKey, ue as createODataCollectionUpdatesQueryKey, v as fetchBase, p as fetchDeleteFn, g as fetchJson, u as fetchJsonMutationFn, r as fetchJsonQueryFn, k as fetchMetadata, V as fetchODataCollectionUpdates, m as fetchODataJson, _ as fetchQueryFn, R as flattenODataDependentServices, b as getInputUrl, I as getODataMetadataData, S as getODataProjectAdapter, a as isNoContentResponse, y as isSsoForm, t as normalizeODataServiceName, C as normalizeRelativePath, L as odataCollectionUpdatesQueryOptions, F as odataCreateFn, oe as odataCreateFnDev, j as odataDeleteFn, te as odataDeleteFnDev, A as odataFetch, O as odataFunctionImportFn, ie as odataFunctionImportFnDev, E as odataMetadataQueryOptions, w as odataQueryFn, Z as odataQueryFnDev, M as odataReadFn, W as odataReadFnDev, P as odataUpdateFn, ne as odataUpdateFnDev, o as recoverSsoSession, e as resolveODataBaseUrl, J as resolveODataCollectionSwCachePolicy, x as resolveODataSapClient, re as shouldRefreshODataCollectionCache, z as sortODataDependentSegmentItemsByChains, H as sortODataDependentServicesByChains, s as submitSsoForm, q as useODataCollection, se as useODataCollectionChains, $ as useODataCollectionModel, ee as useODataCollectionQuery, le as useODataCollectionUpdatesQuery, X as useODataEntity, Y as useODataMetadata, D as useODataMetadataQuery, N as useODataMetadataVersionQuery, K as useODataTableColumns, ae as useTextServiceQuery };
1
+ import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y, v as b, w as x, x as S, y as C } from "../chunks/fetch-CPEFkAcU.js";
2
+ import { S as ee, _ as te, a as ne, b as re, c as ie, d as ae, f as oe, g as se, h as ce, i as le, l as ue, m as de, n as fe, o as pe, p as me, r as w, s as he, t as ge, u as _e, v as T, x as E, y as ve } from "../chunks/odataFetchFn-D8PGKDZM.js";
3
+ import { logError as ye } from "@ryuzaki13/react-foundation-lib/utils";
4
+ import { parseDate as be } from "@ryuzaki13/react-foundation-lib/formatters";
5
+ import { compareStrings as xe } from "@ryuzaki13/react-foundation-lib/string-comparison";
6
+ import { useCallback as D, useEffect as Se, useMemo as O, useRef as Ce, useState as k } from "react";
7
+ import { queryOptions as we, useQuery as A, useQueryClient as j } from "@tanstack/react-query";
8
+ import { buildSeparatedArrays as Te, useODataCollectionStore as Ee } from "@ryuzaki13/react-foundation-lib/odata";
9
+ import { persistedQueryMeta as M } from "@ryuzaki13/react-foundation-lib/query-client";
10
+ import { buildEntityPath as De } from "@ryuzaki13/react-foundation-lib/odata-service";
11
+ import { createTableColumnVisibilityFromODataMetadata as N, createTableColumnsFromODataMetadata as Oe, enrichTableColumnsWithODataFormatting as ke, resolveStableColumnId as Ae } from "@ryuzaki13/react-foundation-lib/table";
12
+ import { notify as je } from "@ryuzaki13/react-foundation-lib/notifications";
13
+ //#region src/odata/createODataCollectionQueryKey.ts
14
+ var P = () => [...ee, "collection"], F = ({ service: e, target: t, limitedKeys: n, serverFilter: r }) => [...P(), {
15
+ service: e,
16
+ target: t,
17
+ limitedKeys: n,
18
+ serverFilter: r
19
+ }];
20
+ //#endregion
21
+ //#region src/odata/flattenODataDependentServices.ts
22
+ function Me(e) {
23
+ let t = [];
24
+ for (let [n, r] of e.entries()) {
25
+ let e = `${r.odata.service}.${r.odata.target}`;
26
+ for (let [i, [a, o]] of Object.entries(r.segments).entries()) t.push({
27
+ id: a,
28
+ serviceKey: e,
29
+ serviceIndex: n,
30
+ segmentIndex: i,
31
+ odata: r.odata,
32
+ segment: o,
33
+ model: {
34
+ ...r.model,
35
+ codeKey: a
36
+ },
37
+ panelVisibility: o.panelVisibility ?? "user"
38
+ });
39
+ }
40
+ return t;
41
+ }
42
+ //#endregion
43
+ //#region src/odata/sortODataDependentSegmentItemsByChains.ts
44
+ function Ne(e, t, n) {
45
+ let r = /* @__PURE__ */ new Map();
46
+ for (let [e, n] of Object.entries(t)) r.set(e, new Map(n.map((e, t) => [e.codeKey, t])));
47
+ let i = [...e].map((e, t) => ({
48
+ item: e,
49
+ index: t
50
+ })).sort((e, t) => {
51
+ if (e.item.serviceIndex !== t.item.serviceIndex) return e.item.serviceIndex - t.item.serviceIndex;
52
+ let n = r.get(e.item.serviceKey), i = n?.get(e.item.id), a = n?.get(t.item.id);
53
+ return i !== void 0 && a !== void 0 ? i - a : i === void 0 ? a === void 0 ? e.item.segmentIndex === t.item.segmentIndex ? e.index - t.index : e.item.segmentIndex - t.item.segmentIndex : 1 : -1;
54
+ });
55
+ if (!n?.length) return i.map(({ item: e }) => e);
56
+ let a = new Set(i.map(({ item: e }) => e.id)), o = [...new Set(n)].filter((e) => a.has(e));
57
+ if (o.length === 0) return i.map(({ item: e }) => e);
58
+ let s = new Map(o.map((e, t) => [e, t]));
59
+ return [...i].sort((e, t) => {
60
+ let n = s.get(e.item.id), r = s.get(t.item.id);
61
+ return n !== void 0 && r !== void 0 ? n - r : n === void 0 ? r === void 0 ? e.index - t.index : 1 : -1;
62
+ }).map(({ item: e }) => e);
63
+ }
64
+ //#endregion
65
+ //#region src/odata/sortODataDependentServicesByChains.ts
66
+ function Pe(e, t) {
67
+ if (!t?.length) return [...e];
68
+ let n = /* @__PURE__ */ new Set();
69
+ for (let t of e) for (let e of Object.keys(t.segments)) n.add(e);
70
+ let r = [...new Set(t)].filter((e) => n.has(e));
71
+ if (r.length === 0) return [...e];
72
+ let i = new Map(r.map((e, t) => [e, t])), a = r.length, o = /* @__PURE__ */ new Map(), s = a;
73
+ for (let t of e) for (let e of Object.keys(t.segments)) o.has(e) || o.set(e, i.get(e) ?? s++);
74
+ return [...e.map((e) => {
75
+ let t = Object.entries(e.segments).sort(([e], [t]) => (o.get(e) ?? 2 ** 53 - 1) - (o.get(t) ?? 2 ** 53 - 1));
76
+ return {
77
+ ...e,
78
+ segments: Object.fromEntries(t)
79
+ };
80
+ })].sort((e, t) => {
81
+ let n = Object.keys(e.segments)[0], r = Object.keys(t.segments)[0];
82
+ return (n ? o.get(n) ?? 2 ** 53 - 1 : 2 ** 53 - 1) - (r ? o.get(r) ?? 2 ** 53 - 1 : 2 ** 53 - 1);
83
+ });
84
+ }
85
+ function Fe(e, t, n) {
86
+ return Pe(e.map((e) => {
87
+ let n = t[`${e.odata.service}.${e.odata.target}`];
88
+ if (!n?.length) return e;
89
+ let r = new Map(n.map((e, t) => [e.codeKey, t])), i = Object.entries(e.segments).sort(([e], [t]) => {
90
+ let n = r.get(e), i = r.get(t);
91
+ return n !== void 0 && i !== void 0 ? n - i : n === void 0 ? i === void 0 ? xe(e, t) : 1 : -1;
92
+ });
93
+ return {
94
+ ...e,
95
+ segments: Object.fromEntries(i)
96
+ };
97
+ }), n);
98
+ }
99
+ //#endregion
100
+ //#region src/odata/fetchCollectionData.ts
101
+ async function Ie(e) {
102
+ let { url: t, query: n, signal: r } = e;
103
+ try {
104
+ let e = await E(t, n, { signal: r });
105
+ if (a(e)) throw Error("отсутствует тело ответа");
106
+ return { items: e.data.map(({ ID: e, CNT: t, __metadata: n, __Parameters: r, ...i }) => i) };
107
+ } catch (e) {
108
+ return ye("Ошибка загрузки справочника:", e), { items: [] };
109
+ }
110
+ }
111
+ //#endregion
112
+ //#region src/odata/useODataCollectionUpdatesQuery.ts
113
+ var Le = __APP_BUILD_ID__, Re = 1e3 * 60 * 60 * 4, I = 1e3 * 60 * 60 * 24 * 7, L = "ttl=forever;name=ref", R = "bust=forever;name=ref", z = "ttl=4h;name=ref-updates", B = () => [
114
+ ...ee,
115
+ "collection-updates",
116
+ { buildId: Le }
117
+ ];
118
+ function ze(e) {
119
+ return {
120
+ ...e,
121
+ lastChangedAt: be(e.lastChanged)
122
+ };
123
+ }
124
+ function V(e, t) {
125
+ let n = e.map(ze);
126
+ return {
127
+ items: n,
128
+ byEntityName: n.reduce((e, t) => (t.entityName && (e[t.entityName] = t), e), {}),
129
+ fetchedAt: t,
130
+ coverageStartedAt: t - I
131
+ };
132
+ }
133
+ function H() {
134
+ return async ({ signal: t }) => {
135
+ let n = Date.now(), r = S().collectionUpdates;
136
+ return r ? V((await E(`/${r.service}/${r.target}`, {
137
+ baseUrl: e(r.service, r.baseUrl),
138
+ swCache: z
139
+ }, { signal: t })).data, Math.max(n, Date.now())) : V([], n);
140
+ };
141
+ }
142
+ var U = (e = {}) => we({
143
+ queryKey: B(),
144
+ queryFn: H(),
145
+ meta: M,
146
+ enabled: !!S().collectionUpdates,
147
+ staleTime: e.staleTime ?? Re,
148
+ gcTime: Infinity
149
+ });
150
+ function W(e = {}) {
151
+ return A(U(e));
152
+ }
153
+ //#endregion
154
+ //#region src/odata/useODataMetadata.ts
155
+ function G(e) {
156
+ let { data: t, dataUpdatedAt: n = 0, isLoading: r, isError: i } = T({ service: e.service }), a = t?.entities[e.target];
157
+ if (!r && !a && t?.functionImports[e.target]) throw Error(`OData target '${e.target}' является FunctionImport и не может использоваться как сущность`);
158
+ if (i) throw Error(`Ошибка загрузки метаданных сервиса ${e.service}`);
159
+ return {
160
+ metadata: a,
161
+ metadataUpdatedAt: n,
162
+ isLoading: r
163
+ };
164
+ }
165
+ //#endregion
166
+ //#region src/odata/useODataEntity.ts
167
+ var K = "Использование actions недопустимо до окончания загрузки metadata";
168
+ function q(e) {
169
+ let { metadata: t, metadataUpdatedAt: n, isLoading: r } = G(e);
170
+ return {
171
+ config: e,
172
+ metadata: t,
173
+ metadataUpdatedAt: n,
174
+ isLoading: r,
175
+ actions: O(() => ({
176
+ getEntityPath: (n = {}) => {
177
+ if (!t) throw Error(K);
178
+ return De(t, e, n);
179
+ },
180
+ getKeys: () => {
181
+ if (!t) throw Error(K);
182
+ return t.columns?.map((e) => e.id);
183
+ },
184
+ getKeyPairs: () => {
185
+ if (!t) throw Error(K);
186
+ return t.columns?.filter((e) => e.semanticType === "code" && e.linkedColumnId).map((e) => ({
187
+ codeKey: e.id,
188
+ textKey: e.linkedColumnId
189
+ }));
190
+ },
191
+ getKeyPairsMap: () => {
192
+ if (!t) throw Error(K);
193
+ let e = {};
194
+ for (let n of t.columns ?? []) n.semanticType === "code" && n.linkedColumnId && (e[n.id] = n.linkedColumnId);
195
+ return e;
196
+ }
197
+ }), [e, t])
198
+ };
199
+ }
200
+ //#endregion
201
+ //#region src/odata/useODataCollectionQuery.ts
202
+ function J(e, t) {
203
+ if (!t) return e;
204
+ let n = e.trim().toLowerCase();
205
+ return n === "off" || n.startsWith("bust=") ? e : n.startsWith("ttl=") ? e.replace(/^\s*ttl=/i, "bust=") : R;
206
+ }
207
+ function Y(e) {
208
+ return typeof e == "number" && Number.isFinite(e) && e > 0;
209
+ }
210
+ function Be(e, t) {
211
+ let n = t?.cacheUpdatedAt ?? 0, r = e.update?.lastChangedAt?.getTime();
212
+ return !!(Y(r) && (!t || !n || r > n) || Y(e.metadataUpdatedAt) && (!t || !n || e.metadataUpdatedAt > n) || Y(e.updatesCoverageStartedAt) && (!t || !n || n < e.updatesCoverageStartedAt));
213
+ }
214
+ function X(e) {
215
+ let { service: t, target: n, limitedKeys: r, excludeEmpty: i, sortByCode: a, serverFilter: o, clientFilter: s, swCache: c = L } = e, l = j(), { actions: u, metadata: d, metadataUpdatedAt: f, isLoading: p } = q(e), m = W(), h = O(() => F({
216
+ service: t,
217
+ target: n,
218
+ limitedKeys: r,
219
+ serverFilter: o
220
+ }), [
221
+ t,
222
+ n,
223
+ r,
224
+ o
225
+ ]), g = l.getQueryData(h), _ = m.data?.byEntityName[n], v = Be({
226
+ update: _,
227
+ metadataUpdatedAt: f,
228
+ updatesCoverageStartedAt: m.data?.coverageStartedAt
229
+ }, g), y = J(c, v), b = m.isError || m.isSuccess && !m.isFetching;
230
+ return Se(() => {
231
+ !g || !v || l.invalidateQueries({ queryKey: h });
232
+ }, [
233
+ g,
234
+ l,
235
+ h,
236
+ v
237
+ ]), A({
238
+ queryKey: h,
239
+ queryFn: async ({ signal: e }) => {
240
+ let c = Date.now(), l = r ? [...r] : u.getKeys(), d = u.getKeyPairs(), p = u.getKeyPairsMap();
241
+ if (r) for (let e of r) {
242
+ let t = p[e];
243
+ t && !l.includes(t) && l.push(t);
244
+ }
245
+ let { items: m } = await Ie({
246
+ url: `/${t}/${n}`,
247
+ query: {
248
+ select: l,
249
+ expression: o,
250
+ swCache: y
251
+ },
252
+ signal: e
253
+ }), h = m;
254
+ s && (h = m.filter(s));
255
+ let g = Te(h, d, i, a), v = d.map((e) => ({
256
+ codeKey: e.codeKey,
257
+ count: g[e.codeKey].length
258
+ })).sort((e, t) => e.count - t.count);
259
+ return {
260
+ items: h,
261
+ keyPairs: d,
262
+ keyPairsMap: p,
263
+ separated: g,
264
+ chain: v,
265
+ count: h.length,
266
+ cacheUpdatedAt: Math.max(c, Date.now(), _?.lastChangedAt?.getTime() ?? 0, f)
267
+ };
268
+ },
269
+ enabled: !!(!p && d && t && n && b),
270
+ meta: M,
271
+ staleTime: 1e3 * 60 * 60 * 2,
272
+ gcTime: 1e3 * 60 * 60 * 1
273
+ });
274
+ }
275
+ //#endregion
276
+ //#region src/odata/useODataCollection.ts
277
+ function Ve({ odata: e, model: t, pageSize: n = 50 }) {
278
+ let { codeKey: r, maxVisibleItems: i } = t, { data: a, isLoading: o, isError: s, refetch: c } = X(e), l = a?.keyPairsMap[r] ?? "", u = j(), [d, f] = k(), p = Ce(/* @__PURE__ */ new Map()), { itemsMap: m, separatedItems: h, orderedKeys: g } = O(() => {
279
+ let e = /* @__PURE__ */ new Map(), t = [], n = [];
280
+ if (a && a.separated[r]) {
281
+ n = a.separated[r];
282
+ for (let i of n) {
283
+ let n = i[r];
284
+ n && (e.set(n, i), t.push(n));
285
+ }
286
+ }
287
+ return {
288
+ itemsMap: e,
289
+ separatedItems: n,
290
+ orderedKeys: t
291
+ };
292
+ }, [a, r]), _ = D((e) => {
293
+ let t = a?.separated[r];
294
+ if (!t) return /* @__PURE__ */ new Map();
295
+ let n = /* @__PURE__ */ new Map();
296
+ for (let i of t) {
297
+ let t = i[e]?.toLowerCase();
298
+ if (t) for (let e = 1; e <= Math.min(5, t.length); e++) {
299
+ let a = t.substring(0, e);
300
+ n.has(a) || n.set(a, /* @__PURE__ */ new Set()), n.get(a).add(i[r]);
301
+ }
302
+ }
303
+ return n;
304
+ }, [a, r]), v = D((e) => {
305
+ f(() => {
306
+ if (e?.length) return new Set(e.map((e) => e[r]));
307
+ });
308
+ }, [r]), y = D((e, t) => {
309
+ if (!g.length) return [];
310
+ let n = i, a = /* @__PURE__ */ new Set(), o = [];
311
+ if (t?.length) for (let e = 0; e < t.length; e++) a.add(t[e][r]);
312
+ let s = 0, c = d && d.size > 0;
313
+ for (let t of g) {
314
+ if (s >= n) break;
315
+ let i = m.get(t);
316
+ if (!i || a.size > 0 && a.has(t)) continue;
317
+ let u = i[r];
318
+ c && !d.has(u) || e && !e(u, i[l]) || (o.push(i), s++);
319
+ }
320
+ return o;
321
+ }, [
322
+ g,
323
+ i,
324
+ r,
325
+ m,
326
+ d,
327
+ l
328
+ ]), b = D((e) => {
329
+ let t = a?.separated[r] || [], i = e * n, o = i + n;
330
+ return t.slice(i, o);
331
+ }, [
332
+ a,
333
+ n,
334
+ r
335
+ ]), x = D((e, t) => {
336
+ if (!a) return [];
337
+ let n = new Set(t);
338
+ return a.items.filter((t) => n.has(t[e]));
339
+ }, [a]), S = D((e, t, n = 200) => {
340
+ p.current.has(e) && clearTimeout(p.current.get(e));
341
+ let r = setTimeout(t, n);
342
+ p.current.set(e, r);
343
+ }, []), C = D(() => {
344
+ for (let e of p.current.values()) clearTimeout(e);
345
+ p.current.clear();
346
+ }, []);
347
+ return O(() => () => {
348
+ C();
349
+ }, [C]), {
350
+ data: a,
351
+ isLoading: o,
352
+ isError: s,
353
+ codeKey: r,
354
+ textKey: l,
355
+ getItems: y,
356
+ findSourceItemsByKeys: x,
357
+ setFilteredItems: v,
358
+ getPage: b,
359
+ buildSearchIndex: _,
360
+ debounce: S,
361
+ itemsMap: m,
362
+ separatedItems: h,
363
+ orderedKeys: g,
364
+ refetch: c,
365
+ invalidate: () => u.invalidateQueries({ queryKey: F(e) }),
366
+ totalCount: a?.separated[r]?.length || 0,
367
+ pageSize: n
368
+ };
369
+ }
370
+ //#endregion
371
+ //#region src/odata/useODataCollectionChains.ts
372
+ function He(e) {
373
+ let t = j(), [n, r] = k({}), i = O(() => e.map((e) => F(e)), [e]);
374
+ return Se(() => {
375
+ function n() {
376
+ let n = {};
377
+ for (let r of e) {
378
+ let e = F(r), i = t.getQueryData(e);
379
+ i?.chain && (n[`${r.service}.${r.target}`] = i.chain);
380
+ }
381
+ r((e) => Object.keys(e).length === Object.keys(n).length && Object.entries(n).every(([t, n]) => e[t] === n) ? e : n);
382
+ }
383
+ return n(), t.getQueryCache().subscribe((e) => {
384
+ if (e?.query) {
385
+ let t = e.query;
386
+ i.some((e) => JSON.stringify(e) === JSON.stringify(t.queryKey)) && n();
387
+ }
388
+ });
389
+ }, [
390
+ e,
391
+ t,
392
+ i
393
+ ]), n;
394
+ }
395
+ //#endregion
396
+ //#region src/odata/useODataCollectionModel.ts
397
+ function Ue(e) {
398
+ let [t] = k(() => {
399
+ let t = Ee.getState(), { codeKey: n, maxVisibleItems: r = t.defaultMaxVisibleItems, minSearchCodeLength: i = t.defaultMinSearchCodeLength, minSearchTextLength: a = t.defaultMinSearchTextLength, searchDebounceDelay: o = t.defaultSearchDebounceDelay } = e;
400
+ return {
401
+ codeKey: n,
402
+ maxVisibleItems: r,
403
+ minSearchCodeLength: i,
404
+ minSearchTextLength: a,
405
+ searchDebounceDelay: o
406
+ };
407
+ });
408
+ return t;
409
+ }
410
+ //#endregion
411
+ //#region src/odata/useODataTableColumns.ts
412
+ function We(e, t) {
413
+ let n = {}, r = (e) => {
414
+ for (let i of e) {
415
+ if ("columns" in i && Array.isArray(i.columns) && i.columns.length > 0) {
416
+ r(i.columns);
417
+ continue;
418
+ }
419
+ let e = Ae(i);
420
+ !e || !(e in t) || (n[e] = t[e]);
421
+ }
422
+ };
423
+ return r(e), n;
424
+ }
425
+ function Ge(e) {
426
+ let { metadata: t, isLoading: n } = G(e);
427
+ return {
428
+ columns: O(() => t ? e.mode === "build" ? Oe(t.columns, {
429
+ resolveHeader: e.resolveHeader,
430
+ resolveFormatting: e.resolveFormatting
431
+ }) : ke(e.columns, t.columns) : e.mode === "build" ? [] : [...e.columns], [e, t]),
432
+ defaultColumnVisibility: O(() => {
433
+ if (!t) return;
434
+ if (e.mode === "build") return N(t.columns, { resolveVisible: e.resolveVisible });
435
+ let n = N(t.columns);
436
+ return We(e.columns, n);
437
+ }, [e, t]),
438
+ metadata: t,
439
+ isLoading: n
440
+ };
441
+ }
442
+ //#endregion
443
+ //#region src/odata/useTextServiceQuery.ts
444
+ function Ke(e) {
445
+ return X({
446
+ service: "TEXT_DICTIONARY_SRV",
447
+ target: e
448
+ });
449
+ }
450
+ //#endregion
451
+ //#region src/odata/odataFetchFnDev.ts
452
+ function qe() {
453
+ return globalThis.console;
454
+ }
455
+ function Je(e) {
456
+ let t = {};
457
+ return new Headers(e).forEach((e, n) => {
458
+ t[n] = e;
459
+ }), t;
460
+ }
461
+ function Ye(e) {
462
+ if (e != null) {
463
+ if (typeof e != "string") return e;
464
+ try {
465
+ return JSON.parse(e);
466
+ } catch {
467
+ return e;
468
+ }
469
+ }
470
+ }
471
+ function Xe(e) {
472
+ return e !== void 0 && !["GET", "HEAD"].includes(e.toUpperCase());
473
+ }
474
+ function Ze(e) {
475
+ return (e.baseUrl ?? "odata") === "" ? e.path.startsWith("/sap/") || e.path.startsWith("/sap-dp0/") : !0;
476
+ }
477
+ function Qe(e, t) {
478
+ let n = t.toLowerCase();
479
+ return Object.keys(e).some((e) => e.toLowerCase() === n);
480
+ }
481
+ function Z(e, t, n) {
482
+ Qe(e, t) || (e[t] = n);
483
+ }
484
+ function $e(e) {
485
+ let t = Je(e.init.headers), n = e.init.method, r = Ze(e);
486
+ return Z(t, "DataServiceVersion", "2.0"), Z(t, "MaxDataServiceVersion", "2.0"), Z(t, "Accept", "application/json"), t["sap-language"] = "ru", r && (t["sap-contextid-accept"] = "header"), Xe(n) && e.init.body && Z(t, "Content-Type", "application/json"), Xe(n) && r && Z(t, "x-csrf-token", "<получается отдельным GET перед реальным write-запросом>"), t;
487
+ }
488
+ function et(e) {
489
+ return ue(e) ? "FunctionImport" : e.result ? "Parameterized Entity" : "Entity";
490
+ }
491
+ function Q(e, t) {
492
+ let n = qe();
493
+ n.groupCollapsed(e), n.info(t), n.groupEnd();
494
+ }
495
+ function tt(e) {
496
+ let t = qe(), n = Ye(e.request.init.body), r = Je(e.request.init.headers), i = $e(e.request), a = {
497
+ method: e.request.init.method,
498
+ headers: r,
499
+ body: n,
500
+ hasSignal: !!e.request.init.signal
501
+ };
502
+ t.groupCollapsed(`[OData DEV] ${e.requestMethod} ${e.request.fullUrl}`), t.table([{
503
+ helper: e.helperName,
504
+ operation: e.operation,
505
+ target: e.odata.target,
506
+ targetKind: et(e.target),
507
+ service: e.odata.service,
508
+ realFetch: "не выполнялся"
509
+ }]), t.info("Итоговый URL:", e.request.fullUrl), t.info("Path без base URL:", e.request.path), t.info("Target path до query options:", e.targetPath), t.info("Query string:", e.request.queryString || "<пусто>"), t.info("Body:", n ?? "<пусто>"), t.info("Auto parse:", e.autoParse ?? !1), t.info("Transform:", e.hasTransform ? "передан, но не вызывается без ответа backend" : "не передан"), t.info("Dry-run result:", e.operation === "query" ? {
510
+ data: [],
511
+ totalCount: 0
512
+ } : { data: void 0 }), Q("OData config", e.odata), Q("Target metadata", e.target), Q("Target params", e.params), Q("Query options", e.queryOptions), Q("RequestInit, переданный в transport", a), Q("Заголовки после transport defaults (без реального fetch)", i), t.groupEnd();
513
+ }
514
+ function nt(e) {
515
+ je.warning(`${e}: DEV dry-run OData запроса. Реальный запрос не выполняется, payload выведен в console.`, { title: "OData DEV helper" });
516
+ }
517
+ function $(t, n, r) {
518
+ let { odata: i, options: a = {}, init: o = {}, autoParse: s, swCache: c } = n, l = n.params ?? {};
519
+ return async ({ client: u, signal: d }) => {
520
+ nt(r);
521
+ let f = e(i.service, a.baseUrl), p = await se({
522
+ service: i.service,
523
+ baseUrl: f
524
+ }, u);
525
+ if (!p) throw Error(`Не удалось загрузить metadata OData-сервиса '${i.service}'`);
526
+ let m = _e(p, i.target);
527
+ me(m, t, i);
528
+ let h = ae(n.body, t), g = oe(m, t), _ = ie(m, i, l, t), v = c ? {
529
+ ...a,
530
+ baseUrl: f,
531
+ swCache: c
532
+ } : {
533
+ ...a,
534
+ baseUrl: f
535
+ }, y = re(_, v, {
536
+ ...o,
537
+ method: g,
538
+ body: h,
539
+ signal: d
540
+ });
541
+ return tt({
542
+ helperName: r,
543
+ operation: t,
544
+ odata: i,
545
+ target: m,
546
+ targetPath: _,
547
+ request: y,
548
+ requestMethod: g,
549
+ params: l,
550
+ queryOptions: v,
551
+ body: h,
552
+ autoParse: s,
553
+ hasTransform: !!n.transform
554
+ }), t === "query" ? {
555
+ data: [],
556
+ totalCount: 0
557
+ } : { data: void 0 };
558
+ };
559
+ }
560
+ function rt(e) {
561
+ return __DEV__ ? $("create", e, "odataCreateFnDev") : w("create", e);
562
+ }
563
+ function it(e) {
564
+ return __DEV__ ? $("update", e, "odataUpdateFnDev") : w("update", e);
565
+ }
566
+ function at(e) {
567
+ return __DEV__ ? $("delete", e, "odataDeleteFnDev") : w("delete", e);
568
+ }
569
+ function ot(e) {
570
+ return __DEV__ ? $("read", e, "odataReadFnDev") : w("read", e);
571
+ }
572
+ function st(e) {
573
+ return __DEV__ ? $("query", e, "odataQueryFnDev") : w("query", e);
574
+ }
575
+ function ct(e) {
576
+ return __DEV__ ? $("fi", e, "odataFunctionImportFnDev") : w("fi", e);
577
+ }
578
+ //#endregion
579
+ export { h as BaseAppConfigURL, f as BaseODataDp0URL, l as BaseODataUI2URL, c as BaseODataURL, n as BaseUrlMap, R as ODATA_COLLECTION_BUST_SW_CACHE, L as ODATA_COLLECTION_DEFAULT_SW_CACHE, I as ODATA_COLLECTION_UPDATES_LOOKBACK_MS, z as ODATA_COLLECTION_UPDATES_SW_CACHE, d as SsoRequiredError, de as applyODataMetadataVersion, i as configureODataProjectAdapter, P as createODataCollectionBaseQueryKey, F as createODataCollectionQueryKey, B as createODataCollectionUpdatesQueryKey, v as fetchBase, p as fetchDeleteFn, g as fetchJson, u as fetchJsonMutationFn, r as fetchJsonQueryFn, ce as fetchMetadata, H as fetchODataCollectionUpdates, m as fetchODataJson, _ as fetchQueryFn, Me as flattenODataDependentServices, b as getInputUrl, se as getODataMetadataData, S as getODataProjectAdapter, a as isNoContentResponse, y as isSsoForm, t as normalizeODataServiceName, C as normalizeRelativePath, U as odataCollectionUpdatesQueryOptions, ge as odataCreateFn, rt as odataCreateFnDev, fe as odataDeleteFn, at as odataDeleteFnDev, E as odataFetch, le as odataFunctionImportFn, ct as odataFunctionImportFnDev, te as odataMetadataQueryOptions, ne as odataQueryFn, st as odataQueryFnDev, pe as odataReadFn, ot as odataReadFnDev, he as odataUpdateFn, it as odataUpdateFnDev, o as recoverSsoSession, e as resolveODataBaseUrl, J as resolveODataCollectionSwCachePolicy, x as resolveODataSapClient, Be as shouldRefreshODataCollectionCache, Ne as sortODataDependentSegmentItemsByChains, Fe as sortODataDependentServicesByChains, s as submitSsoForm, Ve as useODataCollection, He as useODataCollectionChains, Ue as useODataCollectionModel, X as useODataCollectionQuery, W as useODataCollectionUpdatesQuery, q as useODataEntity, G as useODataMetadata, T as useODataMetadataQuery, ve as useODataMetadataVersionQuery, Ge as useODataTableColumns, Ke as useTextServiceQuery };
580
+
581
+ //# sourceMappingURL=index.js.map