@dismissible/react-client 2.0.0-canary.5.88c27fb → 2.1.0-canary.6.0a7a428
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/CHANGELOG.md +7 -0
- package/dist/dismissible-client.es.js +609 -471
- package/dist/dismissible-client.umd.js +1 -1
- package/dist/root.d.ts +1 -0
- package/dist/types/dismissible.types.d.ts +32 -0
- package/dist/utils/BatchScheduler.d.ts +72 -0
- package/package.json +1 -1
|
@@ -1,291 +1,287 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
for (var e in
|
|
7
|
-
|
|
8
|
-
if (
|
|
9
|
-
for (var e of
|
|
10
|
-
|
|
11
|
-
return
|
|
12
|
-
},
|
|
13
|
-
var
|
|
1
|
+
var me = Object.defineProperty, ye = Object.defineProperties;
|
|
2
|
+
var pe = Object.getOwnPropertyDescriptors;
|
|
3
|
+
var B = Object.getOwnPropertySymbols;
|
|
4
|
+
var re = Object.prototype.hasOwnProperty, se = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var V = (r, t, e) => t in r ? me(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e, b = (r, t) => {
|
|
6
|
+
for (var e in t || (t = {}))
|
|
7
|
+
re.call(t, e) && V(r, e, t[e]);
|
|
8
|
+
if (B)
|
|
9
|
+
for (var e of B(t))
|
|
10
|
+
se.call(t, e) && V(r, e, t[e]);
|
|
11
|
+
return r;
|
|
12
|
+
}, v = (r, t) => ye(r, pe(t));
|
|
13
|
+
var X = (r, t) => {
|
|
14
14
|
var e = {};
|
|
15
|
-
for (var
|
|
16
|
-
|
|
17
|
-
if (
|
|
18
|
-
for (var
|
|
19
|
-
|
|
15
|
+
for (var n in r)
|
|
16
|
+
re.call(r, n) && t.indexOf(n) < 0 && (e[n] = r[n]);
|
|
17
|
+
if (r != null && B)
|
|
18
|
+
for (var n of B(r))
|
|
19
|
+
t.indexOf(n) < 0 && se.call(r, n) && (e[n] = r[n]);
|
|
20
20
|
return e;
|
|
21
21
|
};
|
|
22
|
-
var
|
|
23
|
-
|
|
22
|
+
var O = (r, t, e) => V(r, typeof t != "symbol" ? t + "" : t, e);
|
|
23
|
+
var C = (r, t, e) => new Promise((n, i) => {
|
|
24
|
+
var s = (u) => {
|
|
24
25
|
try {
|
|
25
|
-
a(e.next(
|
|
26
|
-
} catch (
|
|
27
|
-
|
|
26
|
+
a(e.next(u));
|
|
27
|
+
} catch (d) {
|
|
28
|
+
i(d);
|
|
28
29
|
}
|
|
29
|
-
},
|
|
30
|
+
}, o = (u) => {
|
|
30
31
|
try {
|
|
31
|
-
a(e.throw(
|
|
32
|
-
} catch (
|
|
33
|
-
|
|
32
|
+
a(e.throw(u));
|
|
33
|
+
} catch (d) {
|
|
34
|
+
i(d);
|
|
34
35
|
}
|
|
35
|
-
}, a = (
|
|
36
|
-
a((e = e.apply(
|
|
36
|
+
}, a = (u) => u.done ? n(u.value) : Promise.resolve(u.value).then(s, o);
|
|
37
|
+
a((e = e.apply(r, t)).next());
|
|
37
38
|
});
|
|
38
|
-
import { jsx as
|
|
39
|
-
import { createContext as we, useContext as
|
|
40
|
-
const
|
|
39
|
+
import { jsx as T, jsxs as be } from "react/jsx-runtime";
|
|
40
|
+
import { createContext as we, useContext as ge, useRef as J, useState as k, useCallback as Y, useEffect as _, useMemo as W } from "react";
|
|
41
|
+
const ne = (r, t, e) => {
|
|
41
42
|
try {
|
|
42
|
-
const
|
|
43
|
-
if (!
|
|
44
|
-
const { data:
|
|
45
|
-
return e && Date.now() -
|
|
46
|
-
} catch (
|
|
43
|
+
const n = `${t}_${r}`, i = localStorage.getItem(n);
|
|
44
|
+
if (!i) return null;
|
|
45
|
+
const { data: s, timestamp: o } = JSON.parse(i);
|
|
46
|
+
return e && Date.now() - o > e ? (localStorage.removeItem(n), null) : s;
|
|
47
|
+
} catch (n) {
|
|
47
48
|
return null;
|
|
48
49
|
}
|
|
49
|
-
},
|
|
50
|
+
}, Z = (r, t, e) => {
|
|
50
51
|
try {
|
|
51
|
-
const
|
|
52
|
-
data:
|
|
52
|
+
const n = `${e}_${r}`, i = {
|
|
53
|
+
data: t,
|
|
53
54
|
timestamp: Date.now()
|
|
54
55
|
};
|
|
55
|
-
localStorage.setItem(
|
|
56
|
-
} catch (
|
|
57
|
-
console.warn("Failed to cache dismissible item:",
|
|
56
|
+
localStorage.setItem(n, JSON.stringify(i));
|
|
57
|
+
} catch (n) {
|
|
58
|
+
console.warn("Failed to cache dismissible item:", n);
|
|
58
59
|
}
|
|
59
|
-
},
|
|
60
|
+
}, ie = (r, t) => {
|
|
60
61
|
try {
|
|
61
|
-
const e = `${
|
|
62
|
+
const e = `${t}_${r}`;
|
|
62
63
|
localStorage.removeItem(e);
|
|
63
64
|
} catch (e) {
|
|
64
65
|
console.warn("Failed to remove cached dismissible item:", e);
|
|
65
66
|
}
|
|
66
|
-
},
|
|
67
|
+
}, le = we(
|
|
67
68
|
null
|
|
68
|
-
),
|
|
69
|
-
const
|
|
70
|
-
if (!
|
|
69
|
+
), Re = () => {
|
|
70
|
+
const r = ge(le);
|
|
71
|
+
if (!r)
|
|
71
72
|
throw new Error(
|
|
72
73
|
"useDismissibleContext must be used within a DismissibleProvider"
|
|
73
74
|
);
|
|
74
|
-
return
|
|
75
|
-
}, ve = "dismissible",
|
|
75
|
+
return r;
|
|
76
|
+
}, ve = "dismissible", Ce = (r, t = {}) => {
|
|
76
77
|
const {
|
|
77
78
|
initialData: e,
|
|
78
|
-
enableCache:
|
|
79
|
-
cachePrefix:
|
|
80
|
-
cacheExpiration:
|
|
81
|
-
} =
|
|
82
|
-
enableCache:
|
|
83
|
-
cachePrefix:
|
|
84
|
-
cacheExpiration:
|
|
85
|
-
}),
|
|
79
|
+
enableCache: n = !0,
|
|
80
|
+
cachePrefix: i = ve,
|
|
81
|
+
cacheExpiration: s
|
|
82
|
+
} = t, { userId: o, client: a, baseUrl: u, getAuthHeaders: d, batchScheduler: m } = Re(), h = `${o}-${r}`, c = J({
|
|
83
|
+
enableCache: n,
|
|
84
|
+
cachePrefix: i,
|
|
85
|
+
cacheExpiration: s
|
|
86
|
+
}), f = J(r), E = J(h), x = J(null), [F, A] = k(!1), [I, S] = k(), [q, H] = k(() => {
|
|
86
87
|
if (e) return e;
|
|
87
|
-
if (
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
if (n) {
|
|
89
|
+
const l = ne(
|
|
90
|
+
h,
|
|
91
|
+
i,
|
|
92
|
+
s
|
|
92
93
|
);
|
|
93
|
-
if (
|
|
94
|
+
if (l) return l;
|
|
94
95
|
}
|
|
95
|
-
}),
|
|
96
|
-
var
|
|
97
|
-
if (
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
96
|
+
}), $ = Y(() => C(null, null, function* () {
|
|
97
|
+
var w;
|
|
98
|
+
if (n) {
|
|
99
|
+
const y = ne(
|
|
100
|
+
h,
|
|
101
|
+
i,
|
|
102
|
+
s
|
|
102
103
|
);
|
|
103
|
-
if (
|
|
104
|
-
|
|
104
|
+
if (y != null && y.dismissedAt) {
|
|
105
|
+
m.primeCache(y), H(y), A(!1);
|
|
105
106
|
return;
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
|
-
(
|
|
109
|
-
const
|
|
110
|
-
|
|
109
|
+
(w = x.current) == null || w.abort();
|
|
110
|
+
const l = new AbortController();
|
|
111
|
+
x.current = l, A(!0), S(void 0);
|
|
111
112
|
try {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
});
|
|
119
|
-
S(O), s && V(d, O, o);
|
|
120
|
-
} catch (b) {
|
|
121
|
-
if (b instanceof Error && b.name === "AbortError")
|
|
113
|
+
const y = yield m.getItem(r);
|
|
114
|
+
if (l.signal.aborted)
|
|
115
|
+
return;
|
|
116
|
+
H(y), n && Z(h, y, i);
|
|
117
|
+
} catch (y) {
|
|
118
|
+
if (y instanceof Error && y.name === "AbortError" || l.signal.aborted)
|
|
122
119
|
return;
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
S(
|
|
121
|
+
y instanceof Error ? y : new Error("Unknown error occurred")
|
|
125
122
|
);
|
|
126
123
|
} finally {
|
|
127
|
-
|
|
124
|
+
l.signal.aborted || A(!1);
|
|
128
125
|
}
|
|
129
126
|
}), [
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
d,
|
|
133
|
-
s,
|
|
134
|
-
o,
|
|
127
|
+
r,
|
|
128
|
+
h,
|
|
135
129
|
n,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
130
|
+
i,
|
|
131
|
+
s,
|
|
132
|
+
m
|
|
139
133
|
]);
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
}, [
|
|
144
|
-
var
|
|
145
|
-
(
|
|
146
|
-
}, []),
|
|
147
|
-
const
|
|
148
|
-
(
|
|
149
|
-
enableCache:
|
|
150
|
-
cachePrefix:
|
|
151
|
-
cacheExpiration:
|
|
152
|
-
},
|
|
153
|
-
}, [
|
|
154
|
-
const
|
|
155
|
-
|
|
134
|
+
_(() => {
|
|
135
|
+
const l = f.current !== r, w = E.current !== h;
|
|
136
|
+
l || w ? (f.current = r, E.current = h, $()) : e || $();
|
|
137
|
+
}, [r, h, e, $]), _(() => () => {
|
|
138
|
+
var l;
|
|
139
|
+
(l = x.current) == null || l.abort();
|
|
140
|
+
}, []), _(() => {
|
|
141
|
+
const l = c.current;
|
|
142
|
+
(l.enableCache !== n || l.cachePrefix !== i || l.cacheExpiration !== s) && (l.cachePrefix !== i && ie(h, l.cachePrefix), !n && l.enableCache && ie(h, l.cachePrefix), c.current = {
|
|
143
|
+
enableCache: n,
|
|
144
|
+
cachePrefix: i,
|
|
145
|
+
cacheExpiration: s
|
|
146
|
+
}, $());
|
|
147
|
+
}, [n, i, s, h, $]);
|
|
148
|
+
const K = Y(() => C(null, null, function* () {
|
|
149
|
+
S(void 0);
|
|
156
150
|
try {
|
|
157
|
-
const
|
|
158
|
-
userId:
|
|
159
|
-
itemId:
|
|
160
|
-
baseUrl:
|
|
161
|
-
authHeaders:
|
|
151
|
+
const l = yield d(), w = yield a.dismiss({
|
|
152
|
+
userId: o,
|
|
153
|
+
itemId: r,
|
|
154
|
+
baseUrl: u,
|
|
155
|
+
authHeaders: l
|
|
162
156
|
});
|
|
163
|
-
|
|
164
|
-
} catch (
|
|
165
|
-
throw
|
|
166
|
-
|
|
167
|
-
),
|
|
157
|
+
H(w), m.updateCache(w), n && Z(h, w, i);
|
|
158
|
+
} catch (l) {
|
|
159
|
+
throw S(
|
|
160
|
+
l instanceof Error ? l : new Error("Failed to dismiss item")
|
|
161
|
+
), l;
|
|
168
162
|
}
|
|
169
163
|
}), [
|
|
170
|
-
|
|
164
|
+
r,
|
|
165
|
+
o,
|
|
166
|
+
h,
|
|
167
|
+
n,
|
|
168
|
+
i,
|
|
171
169
|
a,
|
|
170
|
+
u,
|
|
172
171
|
d,
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
m,
|
|
177
|
-
i
|
|
178
|
-
]), _ = K(() => C(null, null, function* () {
|
|
179
|
-
p(void 0);
|
|
172
|
+
m
|
|
173
|
+
]), U = Y(() => C(null, null, function* () {
|
|
174
|
+
S(void 0);
|
|
180
175
|
try {
|
|
181
|
-
const
|
|
182
|
-
userId:
|
|
183
|
-
itemId:
|
|
184
|
-
baseUrl:
|
|
185
|
-
authHeaders:
|
|
176
|
+
const l = yield d(), w = yield a.restore({
|
|
177
|
+
userId: o,
|
|
178
|
+
itemId: r,
|
|
179
|
+
baseUrl: u,
|
|
180
|
+
authHeaders: l
|
|
186
181
|
});
|
|
187
|
-
|
|
188
|
-
} catch (
|
|
189
|
-
throw
|
|
190
|
-
|
|
191
|
-
),
|
|
182
|
+
H(w), m.updateCache(w), n && Z(h, w, i);
|
|
183
|
+
} catch (l) {
|
|
184
|
+
throw S(
|
|
185
|
+
l instanceof Error ? l : new Error("Failed to restore item")
|
|
186
|
+
), l;
|
|
192
187
|
}
|
|
193
188
|
}), [
|
|
194
|
-
|
|
189
|
+
r,
|
|
190
|
+
o,
|
|
191
|
+
h,
|
|
192
|
+
n,
|
|
193
|
+
i,
|
|
195
194
|
a,
|
|
195
|
+
u,
|
|
196
196
|
d,
|
|
197
|
-
|
|
198
|
-
o,
|
|
199
|
-
f,
|
|
200
|
-
m,
|
|
201
|
-
i
|
|
197
|
+
m
|
|
202
198
|
]);
|
|
203
199
|
return {
|
|
204
|
-
dismissedAt:
|
|
205
|
-
dismiss:
|
|
206
|
-
restore:
|
|
207
|
-
isLoading:
|
|
208
|
-
error:
|
|
209
|
-
item:
|
|
200
|
+
dismissedAt: q == null ? void 0 : q.dismissedAt,
|
|
201
|
+
dismiss: K,
|
|
202
|
+
restore: U,
|
|
203
|
+
isLoading: F,
|
|
204
|
+
error: I,
|
|
205
|
+
item: q
|
|
210
206
|
};
|
|
211
|
-
},
|
|
207
|
+
}, Ee = () => /* @__PURE__ */ T("div", { className: "dismissible-loading", "aria-live": "polite", children: "Loading..." }), Se = () => /* @__PURE__ */ T("div", { className: "dismissible-error", role: "alert", children: "Unable to load content. Please try again later." }), xe = ({ onDismiss: r, ariaLabel: t }) => /* @__PURE__ */ T(
|
|
212
208
|
"button",
|
|
213
209
|
{
|
|
214
210
|
className: "dismissible-button",
|
|
215
|
-
onClick:
|
|
216
|
-
"aria-label":
|
|
211
|
+
onClick: r,
|
|
212
|
+
"aria-label": t,
|
|
217
213
|
type: "button",
|
|
218
214
|
children: "×"
|
|
219
215
|
}
|
|
220
|
-
),
|
|
221
|
-
itemId:
|
|
222
|
-
children:
|
|
216
|
+
), Me = ({
|
|
217
|
+
itemId: r,
|
|
218
|
+
children: t,
|
|
223
219
|
onDismiss: e,
|
|
224
|
-
LoadingComponent:
|
|
225
|
-
ErrorComponent:
|
|
226
|
-
DismissButtonComponent:
|
|
227
|
-
enableCache:
|
|
220
|
+
LoadingComponent: n = Ee,
|
|
221
|
+
ErrorComponent: i = Se,
|
|
222
|
+
DismissButtonComponent: s = xe,
|
|
223
|
+
enableCache: o,
|
|
228
224
|
cachePrefix: a,
|
|
229
|
-
cacheExpiration:
|
|
230
|
-
ignoreErrors:
|
|
225
|
+
cacheExpiration: u,
|
|
226
|
+
ignoreErrors: d = !1
|
|
231
227
|
}) => {
|
|
232
|
-
const { dismissedAt:
|
|
233
|
-
|
|
228
|
+
const { dismissedAt: m, isLoading: h, error: c, dismiss: f } = Ce(
|
|
229
|
+
r,
|
|
234
230
|
{
|
|
235
|
-
enableCache:
|
|
231
|
+
enableCache: o,
|
|
236
232
|
cachePrefix: a,
|
|
237
|
-
cacheExpiration:
|
|
233
|
+
cacheExpiration: u
|
|
238
234
|
}
|
|
239
|
-
), [E,
|
|
240
|
-
|
|
241
|
-
const
|
|
242
|
-
|
|
235
|
+
), [E, x] = k(!1), [F, A] = k(r);
|
|
236
|
+
r !== F && (A(r), x(!1));
|
|
237
|
+
const I = () => C(null, null, function* () {
|
|
238
|
+
x(!0);
|
|
243
239
|
try {
|
|
244
|
-
yield
|
|
245
|
-
} catch (
|
|
246
|
-
|
|
240
|
+
yield f(), e == null || e();
|
|
241
|
+
} catch (S) {
|
|
242
|
+
x(!1);
|
|
247
243
|
}
|
|
248
244
|
});
|
|
249
|
-
return
|
|
250
|
-
/* @__PURE__ */
|
|
251
|
-
|
|
252
|
-
|
|
245
|
+
return h && n ? /* @__PURE__ */ T(n, { itemId: r }) : h && !n ? null : c && i && !d ? /* @__PURE__ */ T(i, { itemId: r, error: c }) : m || E ? null : /* @__PURE__ */ be("div", { className: "dismissible-container", children: [
|
|
246
|
+
/* @__PURE__ */ T("div", { className: "dismissible-content", children: t }),
|
|
247
|
+
s ? /* @__PURE__ */ T(
|
|
248
|
+
s,
|
|
253
249
|
{
|
|
254
|
-
onDismiss:
|
|
255
|
-
ariaLabel: `Dismiss ${
|
|
250
|
+
onDismiss: I,
|
|
251
|
+
ariaLabel: `Dismiss ${r}`
|
|
256
252
|
}
|
|
257
253
|
) : null
|
|
258
254
|
] });
|
|
259
|
-
},
|
|
260
|
-
if (typeof
|
|
255
|
+
}, Ie = (r) => C(null, null, function* () {
|
|
256
|
+
if (typeof r == "function")
|
|
261
257
|
try {
|
|
262
|
-
const
|
|
263
|
-
return yield Promise.resolve(
|
|
264
|
-
} catch (
|
|
265
|
-
console.warn("Failed to resolve JWT from function:",
|
|
258
|
+
const t = r();
|
|
259
|
+
return yield Promise.resolve(t);
|
|
260
|
+
} catch (t) {
|
|
261
|
+
console.warn("Failed to resolve JWT from function:", t);
|
|
266
262
|
return;
|
|
267
263
|
}
|
|
268
|
-
return
|
|
269
|
-
}),
|
|
270
|
-
const
|
|
271
|
-
return
|
|
272
|
-
}),
|
|
273
|
-
var
|
|
274
|
-
return typeof process == "object" && Number.parseInt((
|
|
264
|
+
return r;
|
|
265
|
+
}), qe = (r) => C(null, null, function* () {
|
|
266
|
+
const t = yield Ie(r);
|
|
267
|
+
return t ? { Authorization: `Bearer ${t}` } : {};
|
|
268
|
+
}), Ae = /\{[^{}]+\}/g, $e = () => {
|
|
269
|
+
var r, t;
|
|
270
|
+
return typeof process == "object" && Number.parseInt((t = (r = process == null ? void 0 : process.versions) == null ? void 0 : r.node) == null ? void 0 : t.substring(0, 2)) >= 18 && process.versions.undici;
|
|
275
271
|
};
|
|
276
|
-
function
|
|
272
|
+
function je() {
|
|
277
273
|
return Math.random().toString(36).slice(2, 11);
|
|
278
274
|
}
|
|
279
|
-
function
|
|
280
|
-
let
|
|
281
|
-
baseUrl:
|
|
275
|
+
function De(r) {
|
|
276
|
+
let h = b({}, r), {
|
|
277
|
+
baseUrl: t = "",
|
|
282
278
|
Request: e = globalThis.Request,
|
|
283
|
-
fetch:
|
|
284
|
-
querySerializer:
|
|
285
|
-
bodySerializer:
|
|
286
|
-
headers:
|
|
279
|
+
fetch: n = globalThis.fetch,
|
|
280
|
+
querySerializer: i,
|
|
281
|
+
bodySerializer: s,
|
|
282
|
+
headers: o,
|
|
287
283
|
requestInitExt: a = void 0
|
|
288
|
-
} =
|
|
284
|
+
} = h, u = X(h, [
|
|
289
285
|
"baseUrl",
|
|
290
286
|
"Request",
|
|
291
287
|
"fetch",
|
|
@@ -294,23 +290,23 @@ function Ie(t) {
|
|
|
294
290
|
"headers",
|
|
295
291
|
"requestInitExt"
|
|
296
292
|
]);
|
|
297
|
-
a =
|
|
298
|
-
const
|
|
299
|
-
function
|
|
293
|
+
a = $e() ? a : void 0, t = ce(t);
|
|
294
|
+
const d = [];
|
|
295
|
+
function m(c, f) {
|
|
300
296
|
return C(this, null, function* () {
|
|
301
|
-
var
|
|
302
|
-
const
|
|
297
|
+
var te;
|
|
298
|
+
const ee = f || {}, {
|
|
303
299
|
baseUrl: E,
|
|
304
|
-
fetch:
|
|
305
|
-
Request:
|
|
306
|
-
headers:
|
|
307
|
-
params:
|
|
308
|
-
parseAs:
|
|
309
|
-
querySerializer:
|
|
310
|
-
bodySerializer:
|
|
311
|
-
body:
|
|
312
|
-
middleware:
|
|
313
|
-
} =
|
|
300
|
+
fetch: x = n,
|
|
301
|
+
Request: F = e,
|
|
302
|
+
headers: A,
|
|
303
|
+
params: I = {},
|
|
304
|
+
parseAs: S = "json",
|
|
305
|
+
querySerializer: q,
|
|
306
|
+
bodySerializer: H = s != null ? s : He,
|
|
307
|
+
body: $,
|
|
308
|
+
middleware: K = []
|
|
309
|
+
} = ee, U = X(ee, [
|
|
314
310
|
"baseUrl",
|
|
315
311
|
"fetch",
|
|
316
312
|
"Request",
|
|
@@ -322,439 +318,581 @@ function Ie(t) {
|
|
|
322
318
|
"body",
|
|
323
319
|
"middleware"
|
|
324
320
|
]);
|
|
325
|
-
let
|
|
326
|
-
E && (
|
|
327
|
-
let
|
|
328
|
-
|
|
329
|
-
const
|
|
330
|
-
|
|
321
|
+
let l = t;
|
|
322
|
+
E && (l = (te = ce(E)) != null ? te : t);
|
|
323
|
+
let w = typeof i == "function" ? i : oe(i);
|
|
324
|
+
q && (w = typeof q == "function" ? q : oe(b(b({}, typeof i == "object" ? i : {}), q)));
|
|
325
|
+
const y = $ === void 0 ? void 0 : H(
|
|
326
|
+
$,
|
|
331
327
|
// Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:
|
|
332
328
|
// bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,
|
|
333
329
|
// the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,
|
|
334
330
|
// setting the content-type at the very beginning to be overwritten.
|
|
335
331
|
// Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.
|
|
336
|
-
|
|
337
|
-
),
|
|
332
|
+
ae(o, A, I.header)
|
|
333
|
+
), de = ae(
|
|
338
334
|
// with no body, we should not to set Content-Type
|
|
339
|
-
|
|
340
|
-
|
|
335
|
+
y === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression
|
|
336
|
+
y instanceof FormData ? {} : {
|
|
341
337
|
"Content-Type": "application/json"
|
|
342
338
|
},
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
),
|
|
339
|
+
o,
|
|
340
|
+
A,
|
|
341
|
+
I.header
|
|
342
|
+
), j = [...d, ...K], he = v(b(b({
|
|
347
343
|
redirect: "follow"
|
|
348
|
-
},
|
|
349
|
-
body:
|
|
350
|
-
headers:
|
|
344
|
+
}, u), U), {
|
|
345
|
+
body: y,
|
|
346
|
+
headers: de
|
|
351
347
|
});
|
|
352
|
-
let
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
),
|
|
356
|
-
for (const
|
|
357
|
-
|
|
358
|
-
if (
|
|
359
|
-
|
|
360
|
-
baseUrl:
|
|
361
|
-
fetch:
|
|
362
|
-
parseAs:
|
|
363
|
-
querySerializer:
|
|
364
|
-
bodySerializer:
|
|
348
|
+
let L, M, D = new F(
|
|
349
|
+
Pe(c, { baseUrl: l, params: I, querySerializer: w }),
|
|
350
|
+
he
|
|
351
|
+
), p;
|
|
352
|
+
for (const R in U)
|
|
353
|
+
R in D || (D[R] = U[R]);
|
|
354
|
+
if (j.length) {
|
|
355
|
+
L = je(), M = Object.freeze({
|
|
356
|
+
baseUrl: l,
|
|
357
|
+
fetch: x,
|
|
358
|
+
parseAs: S,
|
|
359
|
+
querySerializer: w,
|
|
360
|
+
bodySerializer: H
|
|
365
361
|
});
|
|
366
|
-
for (const
|
|
367
|
-
if (
|
|
368
|
-
const
|
|
369
|
-
request:
|
|
370
|
-
schemaPath:
|
|
371
|
-
params:
|
|
372
|
-
options:
|
|
373
|
-
id:
|
|
362
|
+
for (const R of j)
|
|
363
|
+
if (R && typeof R == "object" && typeof R.onRequest == "function") {
|
|
364
|
+
const g = yield R.onRequest({
|
|
365
|
+
request: D,
|
|
366
|
+
schemaPath: c,
|
|
367
|
+
params: I,
|
|
368
|
+
options: M,
|
|
369
|
+
id: L
|
|
374
370
|
});
|
|
375
|
-
if (
|
|
376
|
-
if (
|
|
377
|
-
|
|
378
|
-
else if (
|
|
379
|
-
|
|
371
|
+
if (g)
|
|
372
|
+
if (g instanceof F)
|
|
373
|
+
D = g;
|
|
374
|
+
else if (g instanceof Response) {
|
|
375
|
+
p = g;
|
|
380
376
|
break;
|
|
381
377
|
} else
|
|
382
378
|
throw new Error("onRequest: must return new Request() or Response() when modifying the request");
|
|
383
379
|
}
|
|
384
380
|
}
|
|
385
|
-
if (!
|
|
381
|
+
if (!p) {
|
|
386
382
|
try {
|
|
387
|
-
|
|
388
|
-
} catch (
|
|
389
|
-
let
|
|
390
|
-
if (
|
|
391
|
-
for (let
|
|
392
|
-
const N =
|
|
383
|
+
p = yield x(D, a);
|
|
384
|
+
} catch (R) {
|
|
385
|
+
let g = R;
|
|
386
|
+
if (j.length)
|
|
387
|
+
for (let P = j.length - 1; P >= 0; P--) {
|
|
388
|
+
const N = j[P];
|
|
393
389
|
if (N && typeof N == "object" && typeof N.onError == "function") {
|
|
394
|
-
const
|
|
395
|
-
request:
|
|
396
|
-
error:
|
|
397
|
-
schemaPath:
|
|
398
|
-
params:
|
|
399
|
-
options:
|
|
400
|
-
id:
|
|
390
|
+
const z = yield N.onError({
|
|
391
|
+
request: D,
|
|
392
|
+
error: g,
|
|
393
|
+
schemaPath: c,
|
|
394
|
+
params: I,
|
|
395
|
+
options: M,
|
|
396
|
+
id: L
|
|
401
397
|
});
|
|
402
|
-
if (
|
|
403
|
-
if (
|
|
404
|
-
|
|
398
|
+
if (z) {
|
|
399
|
+
if (z instanceof Response) {
|
|
400
|
+
g = void 0, p = z;
|
|
405
401
|
break;
|
|
406
402
|
}
|
|
407
|
-
if (
|
|
408
|
-
|
|
403
|
+
if (z instanceof Error) {
|
|
404
|
+
g = z;
|
|
409
405
|
continue;
|
|
410
406
|
}
|
|
411
407
|
throw new Error("onError: must return new Response() or instance of Error");
|
|
412
408
|
}
|
|
413
409
|
}
|
|
414
410
|
}
|
|
415
|
-
if (
|
|
416
|
-
throw
|
|
411
|
+
if (g)
|
|
412
|
+
throw g;
|
|
417
413
|
}
|
|
418
|
-
if (
|
|
419
|
-
for (let
|
|
420
|
-
const
|
|
421
|
-
if (
|
|
422
|
-
const
|
|
423
|
-
request:
|
|
424
|
-
response:
|
|
425
|
-
schemaPath:
|
|
426
|
-
params:
|
|
427
|
-
options:
|
|
428
|
-
id:
|
|
414
|
+
if (j.length)
|
|
415
|
+
for (let R = j.length - 1; R >= 0; R--) {
|
|
416
|
+
const g = j[R];
|
|
417
|
+
if (g && typeof g == "object" && typeof g.onResponse == "function") {
|
|
418
|
+
const P = yield g.onResponse({
|
|
419
|
+
request: D,
|
|
420
|
+
response: p,
|
|
421
|
+
schemaPath: c,
|
|
422
|
+
params: I,
|
|
423
|
+
options: M,
|
|
424
|
+
id: L
|
|
429
425
|
});
|
|
430
|
-
if (
|
|
431
|
-
if (!(
|
|
426
|
+
if (P) {
|
|
427
|
+
if (!(P instanceof Response))
|
|
432
428
|
throw new Error("onResponse: must return new Response() when modifying the response");
|
|
433
|
-
|
|
429
|
+
p = P;
|
|
434
430
|
}
|
|
435
431
|
}
|
|
436
432
|
}
|
|
437
433
|
}
|
|
438
|
-
if (
|
|
439
|
-
return
|
|
440
|
-
if (
|
|
441
|
-
return
|
|
442
|
-
let
|
|
434
|
+
if (p.status === 204 || D.method === "HEAD" || p.headers.get("Content-Length") === "0")
|
|
435
|
+
return p.ok ? { data: void 0, response: p } : { error: void 0, response: p };
|
|
436
|
+
if (p.ok)
|
|
437
|
+
return S === "stream" ? { data: p.body, response: p } : { data: yield p[S](), response: p };
|
|
438
|
+
let Q = yield p.text();
|
|
443
439
|
try {
|
|
444
|
-
|
|
445
|
-
} catch (
|
|
440
|
+
Q = JSON.parse(Q);
|
|
441
|
+
} catch (R) {
|
|
446
442
|
}
|
|
447
|
-
return { error:
|
|
443
|
+
return { error: Q, response: p };
|
|
448
444
|
});
|
|
449
445
|
}
|
|
450
446
|
return {
|
|
451
|
-
request(
|
|
452
|
-
return
|
|
447
|
+
request(c, f, E) {
|
|
448
|
+
return m(f, v(b({}, E), { method: c.toUpperCase() }));
|
|
453
449
|
},
|
|
454
450
|
/** Call a GET endpoint */
|
|
455
|
-
GET(
|
|
456
|
-
return
|
|
451
|
+
GET(c, f) {
|
|
452
|
+
return m(c, v(b({}, f), { method: "GET" }));
|
|
457
453
|
},
|
|
458
454
|
/** Call a PUT endpoint */
|
|
459
|
-
PUT(
|
|
460
|
-
return
|
|
455
|
+
PUT(c, f) {
|
|
456
|
+
return m(c, v(b({}, f), { method: "PUT" }));
|
|
461
457
|
},
|
|
462
458
|
/** Call a POST endpoint */
|
|
463
|
-
POST(
|
|
464
|
-
return
|
|
459
|
+
POST(c, f) {
|
|
460
|
+
return m(c, v(b({}, f), { method: "POST" }));
|
|
465
461
|
},
|
|
466
462
|
/** Call a DELETE endpoint */
|
|
467
|
-
DELETE(
|
|
468
|
-
return
|
|
463
|
+
DELETE(c, f) {
|
|
464
|
+
return m(c, v(b({}, f), { method: "DELETE" }));
|
|
469
465
|
},
|
|
470
466
|
/** Call a OPTIONS endpoint */
|
|
471
|
-
OPTIONS(
|
|
472
|
-
return
|
|
467
|
+
OPTIONS(c, f) {
|
|
468
|
+
return m(c, v(b({}, f), { method: "OPTIONS" }));
|
|
473
469
|
},
|
|
474
470
|
/** Call a HEAD endpoint */
|
|
475
|
-
HEAD(
|
|
476
|
-
return
|
|
471
|
+
HEAD(c, f) {
|
|
472
|
+
return m(c, v(b({}, f), { method: "HEAD" }));
|
|
477
473
|
},
|
|
478
474
|
/** Call a PATCH endpoint */
|
|
479
|
-
PATCH(
|
|
480
|
-
return
|
|
475
|
+
PATCH(c, f) {
|
|
476
|
+
return m(c, v(b({}, f), { method: "PATCH" }));
|
|
481
477
|
},
|
|
482
478
|
/** Call a TRACE endpoint */
|
|
483
|
-
TRACE(
|
|
484
|
-
return
|
|
479
|
+
TRACE(c, f) {
|
|
480
|
+
return m(c, v(b({}, f), { method: "TRACE" }));
|
|
485
481
|
},
|
|
486
482
|
/** Register middleware */
|
|
487
|
-
use(...
|
|
488
|
-
for (const
|
|
489
|
-
if (
|
|
490
|
-
if (typeof
|
|
483
|
+
use(...c) {
|
|
484
|
+
for (const f of c)
|
|
485
|
+
if (f) {
|
|
486
|
+
if (typeof f != "object" || !("onRequest" in f || "onResponse" in f || "onError" in f))
|
|
491
487
|
throw new Error("Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`");
|
|
492
|
-
|
|
488
|
+
d.push(f);
|
|
493
489
|
}
|
|
494
490
|
},
|
|
495
491
|
/** Unregister middleware */
|
|
496
|
-
eject(...
|
|
497
|
-
for (const
|
|
498
|
-
const E =
|
|
499
|
-
E !== -1 &&
|
|
492
|
+
eject(...c) {
|
|
493
|
+
for (const f of c) {
|
|
494
|
+
const E = d.indexOf(f);
|
|
495
|
+
E !== -1 && d.splice(E, 1);
|
|
500
496
|
}
|
|
501
497
|
}
|
|
502
498
|
};
|
|
503
499
|
}
|
|
504
|
-
function
|
|
505
|
-
if (
|
|
500
|
+
function G(r, t, e) {
|
|
501
|
+
if (t == null)
|
|
506
502
|
return "";
|
|
507
|
-
if (typeof
|
|
503
|
+
if (typeof t == "object")
|
|
508
504
|
throw new Error(
|
|
509
505
|
"Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these."
|
|
510
506
|
);
|
|
511
|
-
return `${
|
|
507
|
+
return `${r}=${(e == null ? void 0 : e.allowReserved) === !0 ? t : encodeURIComponent(t)}`;
|
|
512
508
|
}
|
|
513
|
-
function
|
|
514
|
-
if (!
|
|
509
|
+
function ue(r, t, e) {
|
|
510
|
+
if (!t || typeof t != "object")
|
|
515
511
|
return "";
|
|
516
|
-
const
|
|
512
|
+
const n = [], i = {
|
|
517
513
|
simple: ",",
|
|
518
514
|
label: ".",
|
|
519
515
|
matrix: ";"
|
|
520
516
|
}[e.style] || "&";
|
|
521
517
|
if (e.style !== "deepObject" && e.explode === !1) {
|
|
522
|
-
for (const a in
|
|
523
|
-
|
|
524
|
-
const
|
|
518
|
+
for (const a in t)
|
|
519
|
+
n.push(a, e.allowReserved === !0 ? t[a] : encodeURIComponent(t[a]));
|
|
520
|
+
const o = n.join(",");
|
|
525
521
|
switch (e.style) {
|
|
526
522
|
case "form":
|
|
527
|
-
return `${
|
|
523
|
+
return `${r}=${o}`;
|
|
528
524
|
case "label":
|
|
529
|
-
return `.${
|
|
525
|
+
return `.${o}`;
|
|
530
526
|
case "matrix":
|
|
531
|
-
return `;${
|
|
527
|
+
return `;${r}=${o}`;
|
|
532
528
|
default:
|
|
533
|
-
return
|
|
529
|
+
return o;
|
|
534
530
|
}
|
|
535
531
|
}
|
|
536
|
-
for (const
|
|
537
|
-
const a = e.style === "deepObject" ? `${
|
|
538
|
-
|
|
532
|
+
for (const o in t) {
|
|
533
|
+
const a = e.style === "deepObject" ? `${r}[${o}]` : o;
|
|
534
|
+
n.push(G(a, t[o], e));
|
|
539
535
|
}
|
|
540
|
-
const
|
|
541
|
-
return e.style === "label" || e.style === "matrix" ? `${
|
|
536
|
+
const s = n.join(i);
|
|
537
|
+
return e.style === "label" || e.style === "matrix" ? `${i}${s}` : s;
|
|
542
538
|
}
|
|
543
|
-
function
|
|
544
|
-
if (!Array.isArray(
|
|
539
|
+
function fe(r, t, e) {
|
|
540
|
+
if (!Array.isArray(t))
|
|
545
541
|
return "";
|
|
546
542
|
if (e.explode === !1) {
|
|
547
|
-
const
|
|
543
|
+
const s = { form: ",", spaceDelimited: "%20", pipeDelimited: "|" }[e.style] || ",", o = (e.allowReserved === !0 ? t : t.map((a) => encodeURIComponent(a))).join(s);
|
|
548
544
|
switch (e.style) {
|
|
549
545
|
case "simple":
|
|
550
|
-
return
|
|
546
|
+
return o;
|
|
551
547
|
case "label":
|
|
552
|
-
return `.${
|
|
548
|
+
return `.${o}`;
|
|
553
549
|
case "matrix":
|
|
554
|
-
return `;${
|
|
550
|
+
return `;${r}=${o}`;
|
|
555
551
|
// case "spaceDelimited":
|
|
556
552
|
// case "pipeDelimited":
|
|
557
553
|
default:
|
|
558
|
-
return `${
|
|
554
|
+
return `${r}=${o}`;
|
|
559
555
|
}
|
|
560
556
|
}
|
|
561
|
-
const
|
|
562
|
-
for (const
|
|
563
|
-
e.style === "simple" || e.style === "label" ?
|
|
564
|
-
return e.style === "label" || e.style === "matrix" ? `${
|
|
557
|
+
const n = { simple: ",", label: ".", matrix: ";" }[e.style] || "&", i = [];
|
|
558
|
+
for (const s of t)
|
|
559
|
+
e.style === "simple" || e.style === "label" ? i.push(e.allowReserved === !0 ? s : encodeURIComponent(s)) : i.push(G(r, s, e));
|
|
560
|
+
return e.style === "label" || e.style === "matrix" ? `${n}${i.join(n)}` : i.join(n);
|
|
565
561
|
}
|
|
566
|
-
function oe(
|
|
562
|
+
function oe(r) {
|
|
567
563
|
return function(e) {
|
|
568
|
-
const
|
|
564
|
+
const n = [];
|
|
569
565
|
if (e && typeof e == "object")
|
|
570
|
-
for (const
|
|
571
|
-
const
|
|
572
|
-
if (
|
|
573
|
-
if (Array.isArray(
|
|
574
|
-
if (
|
|
566
|
+
for (const i in e) {
|
|
567
|
+
const s = e[i];
|
|
568
|
+
if (s != null) {
|
|
569
|
+
if (Array.isArray(s)) {
|
|
570
|
+
if (s.length === 0)
|
|
575
571
|
continue;
|
|
576
|
-
|
|
577
|
-
|
|
572
|
+
n.push(
|
|
573
|
+
fe(i, s, v(b({
|
|
578
574
|
style: "form",
|
|
579
575
|
explode: !0
|
|
580
|
-
},
|
|
581
|
-
allowReserved: (
|
|
576
|
+
}, r == null ? void 0 : r.array), {
|
|
577
|
+
allowReserved: (r == null ? void 0 : r.allowReserved) || !1
|
|
582
578
|
}))
|
|
583
579
|
);
|
|
584
580
|
continue;
|
|
585
581
|
}
|
|
586
|
-
if (typeof
|
|
587
|
-
|
|
588
|
-
|
|
582
|
+
if (typeof s == "object") {
|
|
583
|
+
n.push(
|
|
584
|
+
ue(i, s, v(b({
|
|
589
585
|
style: "deepObject",
|
|
590
586
|
explode: !0
|
|
591
|
-
},
|
|
592
|
-
allowReserved: (
|
|
587
|
+
}, r == null ? void 0 : r.object), {
|
|
588
|
+
allowReserved: (r == null ? void 0 : r.allowReserved) || !1
|
|
593
589
|
}))
|
|
594
590
|
);
|
|
595
591
|
continue;
|
|
596
592
|
}
|
|
597
|
-
|
|
593
|
+
n.push(G(i, s, r));
|
|
598
594
|
}
|
|
599
595
|
}
|
|
600
|
-
return
|
|
596
|
+
return n.join("&");
|
|
601
597
|
};
|
|
602
598
|
}
|
|
603
|
-
function Te(
|
|
604
|
-
var
|
|
605
|
-
let e =
|
|
606
|
-
for (const
|
|
607
|
-
let
|
|
608
|
-
if (
|
|
599
|
+
function Te(r, t) {
|
|
600
|
+
var n;
|
|
601
|
+
let e = r;
|
|
602
|
+
for (const i of (n = r.match(Ae)) != null ? n : []) {
|
|
603
|
+
let s = i.substring(1, i.length - 1), o = !1, a = "simple";
|
|
604
|
+
if (s.endsWith("*") && (o = !0, s = s.substring(0, s.length - 1)), s.startsWith(".") ? (a = "label", s = s.substring(1)) : s.startsWith(";") && (a = "matrix", s = s.substring(1)), !t || t[s] === void 0 || t[s] === null)
|
|
609
605
|
continue;
|
|
610
|
-
const
|
|
611
|
-
if (Array.isArray(
|
|
612
|
-
e = e.replace(
|
|
606
|
+
const u = t[s];
|
|
607
|
+
if (Array.isArray(u)) {
|
|
608
|
+
e = e.replace(i, fe(s, u, { style: a, explode: o }));
|
|
613
609
|
continue;
|
|
614
610
|
}
|
|
615
|
-
if (typeof
|
|
616
|
-
e = e.replace(
|
|
611
|
+
if (typeof u == "object") {
|
|
612
|
+
e = e.replace(i, ue(s, u, { style: a, explode: o }));
|
|
617
613
|
continue;
|
|
618
614
|
}
|
|
619
615
|
if (a === "matrix") {
|
|
620
|
-
e = e.replace(
|
|
616
|
+
e = e.replace(i, `;${G(s, u)}`);
|
|
621
617
|
continue;
|
|
622
618
|
}
|
|
623
|
-
e = e.replace(
|
|
619
|
+
e = e.replace(i, a === "label" ? `.${encodeURIComponent(u)}` : encodeURIComponent(u));
|
|
624
620
|
}
|
|
625
621
|
return e;
|
|
626
622
|
}
|
|
627
|
-
function He(
|
|
628
|
-
var e,
|
|
629
|
-
return
|
|
623
|
+
function He(r, t) {
|
|
624
|
+
var e, n;
|
|
625
|
+
return r instanceof FormData ? r : t && (t.get instanceof Function ? (e = t.get("Content-Type")) != null ? e : t.get("content-type") : (n = t["Content-Type"]) != null ? n : t["content-type"]) === "application/x-www-form-urlencoded" ? new URLSearchParams(r).toString() : JSON.stringify(r);
|
|
630
626
|
}
|
|
631
|
-
function
|
|
632
|
-
var
|
|
633
|
-
let e = `${
|
|
634
|
-
(
|
|
635
|
-
let
|
|
636
|
-
return
|
|
627
|
+
function Pe(r, t) {
|
|
628
|
+
var i, s;
|
|
629
|
+
let e = `${t.baseUrl}${r}`;
|
|
630
|
+
(i = t.params) != null && i.path && (e = Te(e, t.params.path));
|
|
631
|
+
let n = t.querySerializer((s = t.params.query) != null ? s : {});
|
|
632
|
+
return n.startsWith("?") && (n = n.substring(1)), n && (e += `?${n}`), e;
|
|
637
633
|
}
|
|
638
|
-
function
|
|
639
|
-
const
|
|
640
|
-
for (const e of
|
|
634
|
+
function ae(...r) {
|
|
635
|
+
const t = new Headers();
|
|
636
|
+
for (const e of r) {
|
|
641
637
|
if (!e || typeof e != "object")
|
|
642
638
|
continue;
|
|
643
|
-
const
|
|
644
|
-
for (const [
|
|
645
|
-
if (
|
|
646
|
-
|
|
647
|
-
else if (Array.isArray(
|
|
648
|
-
for (const
|
|
649
|
-
|
|
650
|
-
else
|
|
639
|
+
const n = e instanceof Headers ? e.entries() : Object.entries(e);
|
|
640
|
+
for (const [i, s] of n)
|
|
641
|
+
if (s === null)
|
|
642
|
+
t.delete(i);
|
|
643
|
+
else if (Array.isArray(s))
|
|
644
|
+
for (const o of s)
|
|
645
|
+
t.append(i, o);
|
|
646
|
+
else s !== void 0 && t.set(i, s);
|
|
651
647
|
}
|
|
652
|
-
return
|
|
648
|
+
return t;
|
|
653
649
|
}
|
|
654
|
-
function
|
|
655
|
-
return
|
|
650
|
+
function ce(r) {
|
|
651
|
+
return r.endsWith("/") ? r.substring(0, r.length - 1) : r;
|
|
656
652
|
}
|
|
657
|
-
const
|
|
658
|
-
const
|
|
659
|
-
baseUrl:
|
|
653
|
+
const Fe = (r) => {
|
|
654
|
+
const t = De({
|
|
655
|
+
baseUrl: r,
|
|
660
656
|
headers: {}
|
|
661
657
|
});
|
|
662
658
|
return {
|
|
663
659
|
getOrCreate: (e) => C(null, null, function* () {
|
|
664
|
-
const { userId:
|
|
660
|
+
const { userId: n, itemId: i, authHeaders: s, signal: o } = e, { data: a, error: u } = yield t.GET(
|
|
665
661
|
"/v1/users/{userId}/items/{itemId}",
|
|
666
662
|
{
|
|
667
663
|
params: {
|
|
668
664
|
path: {
|
|
669
|
-
userId:
|
|
670
|
-
itemId:
|
|
665
|
+
userId: n,
|
|
666
|
+
itemId: i
|
|
671
667
|
}
|
|
672
668
|
},
|
|
673
|
-
headers:
|
|
674
|
-
signal:
|
|
669
|
+
headers: s,
|
|
670
|
+
signal: o
|
|
675
671
|
}
|
|
676
672
|
);
|
|
677
|
-
if (
|
|
673
|
+
if (u || !a)
|
|
678
674
|
throw new Error("Failed to fetch dismissible item");
|
|
679
675
|
return a.data;
|
|
680
676
|
}),
|
|
677
|
+
batchGetOrCreate: (e) => C(null, null, function* () {
|
|
678
|
+
const { userId: n, itemIds: i, authHeaders: s, signal: o } = e, { data: a, error: u } = yield t.POST(
|
|
679
|
+
"/v1/users/{userId}/items",
|
|
680
|
+
{
|
|
681
|
+
params: {
|
|
682
|
+
path: {
|
|
683
|
+
userId: n
|
|
684
|
+
}
|
|
685
|
+
},
|
|
686
|
+
body: {
|
|
687
|
+
items: i
|
|
688
|
+
},
|
|
689
|
+
headers: s,
|
|
690
|
+
signal: o
|
|
691
|
+
}
|
|
692
|
+
);
|
|
693
|
+
if (u || !a)
|
|
694
|
+
throw new Error("Failed to batch fetch dismissible items");
|
|
695
|
+
return a.data;
|
|
696
|
+
}),
|
|
681
697
|
dismiss: (e) => C(null, null, function* () {
|
|
682
|
-
const { userId:
|
|
698
|
+
const { userId: n, itemId: i, authHeaders: s } = e, { data: o, error: a } = yield t.DELETE(
|
|
683
699
|
"/v1/users/{userId}/items/{itemId}",
|
|
684
700
|
{
|
|
685
701
|
params: {
|
|
686
702
|
path: {
|
|
687
|
-
userId:
|
|
688
|
-
itemId:
|
|
703
|
+
userId: n,
|
|
704
|
+
itemId: i
|
|
689
705
|
}
|
|
690
706
|
},
|
|
691
|
-
headers:
|
|
707
|
+
headers: s
|
|
692
708
|
}
|
|
693
709
|
);
|
|
694
|
-
if (a || !
|
|
710
|
+
if (a || !o)
|
|
695
711
|
throw new Error("Failed to dismiss item");
|
|
696
|
-
return
|
|
712
|
+
return o.data;
|
|
697
713
|
}),
|
|
698
714
|
restore: (e) => C(null, null, function* () {
|
|
699
|
-
const { userId:
|
|
715
|
+
const { userId: n, itemId: i, authHeaders: s } = e, { data: o, error: a } = yield t.POST(
|
|
700
716
|
"/v1/users/{userId}/items/{itemId}",
|
|
701
717
|
{
|
|
702
718
|
params: {
|
|
703
719
|
path: {
|
|
704
|
-
userId:
|
|
705
|
-
itemId:
|
|
720
|
+
userId: n,
|
|
721
|
+
itemId: i
|
|
706
722
|
}
|
|
707
723
|
},
|
|
708
|
-
headers:
|
|
724
|
+
headers: s
|
|
709
725
|
}
|
|
710
726
|
);
|
|
711
|
-
if (a || !
|
|
727
|
+
if (a || !o)
|
|
712
728
|
throw new Error("Failed to restore item");
|
|
713
|
-
return
|
|
729
|
+
return o.data;
|
|
714
730
|
})
|
|
715
731
|
};
|
|
716
|
-
}, Oe = (
|
|
732
|
+
}, Oe = (r) => {
|
|
717
733
|
try {
|
|
718
|
-
const
|
|
719
|
-
return { isSecure:
|
|
720
|
-
} catch (
|
|
734
|
+
const t = new URL(r), e = t.hostname === "localhost" || t.hostname === "127.0.0.1" || t.hostname === "[::1]", n = t.protocol === "https:";
|
|
735
|
+
return { isSecure: n || e, isLocalhost: e, isHttps: n };
|
|
736
|
+
} catch (t) {
|
|
721
737
|
return { isSecure: !1, isLocalhost: !1, isHttps: !1 };
|
|
722
738
|
}
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
|
|
739
|
+
};
|
|
740
|
+
class Ue {
|
|
741
|
+
constructor(t) {
|
|
742
|
+
O(this, "config");
|
|
743
|
+
O(this, "pendingRequests", []);
|
|
744
|
+
O(this, "isScheduled", !1);
|
|
745
|
+
O(this, "cache", /* @__PURE__ */ new Map());
|
|
746
|
+
O(this, "inFlightRequests", /* @__PURE__ */ new Map());
|
|
747
|
+
var e;
|
|
748
|
+
this.config = v(b({}, t), {
|
|
749
|
+
maxBatchSize: (e = t.maxBatchSize) != null ? e : 50
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
/**
|
|
753
|
+
* Request a dismissible item. If called multiple times in the same
|
|
754
|
+
* JavaScript tick, requests will be batched into a single API call.
|
|
755
|
+
*
|
|
756
|
+
* @param itemId - The item ID to fetch
|
|
757
|
+
* @returns Promise resolving to the DismissibleItem
|
|
758
|
+
*/
|
|
759
|
+
getItem(t) {
|
|
760
|
+
const e = this.cache.get(t);
|
|
761
|
+
if (e)
|
|
762
|
+
return Promise.resolve(e);
|
|
763
|
+
const n = this.inFlightRequests.get(t);
|
|
764
|
+
if (n)
|
|
765
|
+
return n;
|
|
766
|
+
let i, s;
|
|
767
|
+
const o = new Promise((a, u) => {
|
|
768
|
+
i = a, s = u;
|
|
769
|
+
});
|
|
770
|
+
return this.pendingRequests.push({
|
|
771
|
+
itemId: t,
|
|
772
|
+
resolve: i,
|
|
773
|
+
reject: s
|
|
774
|
+
}), this.inFlightRequests.set(t, o), o.catch(() => {
|
|
775
|
+
}).finally(() => {
|
|
776
|
+
this.inFlightRequests.delete(t);
|
|
777
|
+
}), this.isScheduled || (this.isScheduled = !0, queueMicrotask(() => this.executeBatch())), o;
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Pre-populate the cache with items (e.g., from localStorage)
|
|
781
|
+
*/
|
|
782
|
+
primeCache(t) {
|
|
783
|
+
this.cache.set(t.itemId, t);
|
|
784
|
+
}
|
|
785
|
+
/**
|
|
786
|
+
* Update an item in the cache (e.g., after dismiss/restore)
|
|
787
|
+
*/
|
|
788
|
+
updateCache(t) {
|
|
789
|
+
this.cache.set(t.itemId, t);
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* Clear the in-memory cache
|
|
793
|
+
*/
|
|
794
|
+
clearCache() {
|
|
795
|
+
this.cache.clear();
|
|
796
|
+
}
|
|
797
|
+
/**
|
|
798
|
+
* Execute the batched requests
|
|
799
|
+
*/
|
|
800
|
+
executeBatch() {
|
|
801
|
+
return C(this, null, function* () {
|
|
802
|
+
this.isScheduled = !1;
|
|
803
|
+
const t = this.pendingRequests;
|
|
804
|
+
if (this.pendingRequests = [], t.length === 0)
|
|
805
|
+
return;
|
|
806
|
+
const e = /* @__PURE__ */ new Map();
|
|
807
|
+
for (const s of t) {
|
|
808
|
+
const o = e.get(s.itemId);
|
|
809
|
+
o ? o.push(s) : e.set(s.itemId, [s]);
|
|
810
|
+
}
|
|
811
|
+
const n = Array.from(e.keys()), i = [];
|
|
812
|
+
for (let s = 0; s < n.length; s += this.config.maxBatchSize)
|
|
813
|
+
i.push(n.slice(s, s + this.config.maxBatchSize));
|
|
814
|
+
try {
|
|
815
|
+
const s = yield this.config.getAuthHeaders(), a = (yield Promise.all(
|
|
816
|
+
i.map(
|
|
817
|
+
(d) => this.config.client.batchGetOrCreate({
|
|
818
|
+
userId: this.config.userId,
|
|
819
|
+
itemIds: d,
|
|
820
|
+
baseUrl: this.config.baseUrl,
|
|
821
|
+
authHeaders: s
|
|
822
|
+
})
|
|
823
|
+
)
|
|
824
|
+
)).flat(), u = /* @__PURE__ */ new Map();
|
|
825
|
+
for (const d of a)
|
|
826
|
+
u.set(d.itemId, d), this.cache.set(d.itemId, d);
|
|
827
|
+
for (const [d, m] of e) {
|
|
828
|
+
const h = u.get(d);
|
|
829
|
+
if (h)
|
|
830
|
+
for (const c of m)
|
|
831
|
+
c.resolve(h);
|
|
832
|
+
else {
|
|
833
|
+
const c = new Error(`Item ${d} not found in batch response`);
|
|
834
|
+
for (const f of m)
|
|
835
|
+
f.reject(c);
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
} catch (s) {
|
|
839
|
+
const o = s instanceof Error ? s : new Error("Batch request failed");
|
|
840
|
+
for (const a of t)
|
|
841
|
+
a.reject(o);
|
|
842
|
+
}
|
|
843
|
+
});
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
const Ne = ({
|
|
847
|
+
userId: r,
|
|
848
|
+
jwt: t,
|
|
726
849
|
baseUrl: e,
|
|
727
|
-
client:
|
|
728
|
-
children:
|
|
850
|
+
client: n,
|
|
851
|
+
children: i
|
|
729
852
|
}) => {
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
853
|
+
_(() => {
|
|
854
|
+
const { isSecure: d } = Oe(e);
|
|
855
|
+
d || console.warn(
|
|
856
|
+
`[dismissible] Insecure baseUrl "${e}". Use https:// in production (or localhost for development). JWT tokens may be exposed over insecure connections.`
|
|
857
|
+
);
|
|
858
|
+
}, [e]);
|
|
859
|
+
const s = W(
|
|
860
|
+
() => n != null ? n : Fe(e),
|
|
861
|
+
[n, e]
|
|
862
|
+
), o = W(
|
|
863
|
+
() => () => C(null, null, function* () {
|
|
864
|
+
return yield qe(t);
|
|
865
|
+
}),
|
|
866
|
+
[t]
|
|
867
|
+
), a = W(
|
|
868
|
+
() => new Ue({
|
|
869
|
+
userId: r,
|
|
870
|
+
baseUrl: e,
|
|
871
|
+
client: s,
|
|
872
|
+
getAuthHeaders: o
|
|
873
|
+
}),
|
|
874
|
+
[r, e, s, o]
|
|
875
|
+
), u = W(
|
|
738
876
|
() => ({
|
|
739
|
-
userId:
|
|
740
|
-
jwt:
|
|
877
|
+
userId: r,
|
|
878
|
+
jwt: t,
|
|
741
879
|
baseUrl: e,
|
|
742
|
-
getAuthHeaders:
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
client: i
|
|
880
|
+
getAuthHeaders: o,
|
|
881
|
+
client: s,
|
|
882
|
+
batchScheduler: a
|
|
746
883
|
}),
|
|
747
|
-
[
|
|
884
|
+
[r, t, e, o, s, a]
|
|
748
885
|
);
|
|
749
|
-
return /* @__PURE__ */
|
|
886
|
+
return /* @__PURE__ */ T(le.Provider, { value: u, children: i });
|
|
750
887
|
};
|
|
751
888
|
export {
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
889
|
+
Ue as BatchScheduler,
|
|
890
|
+
Me as Dismissible,
|
|
891
|
+
le as DismissibleContext,
|
|
892
|
+
Ne as DismissibleProvider,
|
|
893
|
+
Fe as createDefaultClient,
|
|
894
|
+
qe as getAuthHeaders,
|
|
895
|
+
Ie as resolveJwt,
|
|
896
|
+
Re as useDismissibleContext,
|
|
897
|
+
Ce as useDismissibleItem
|
|
760
898
|
};
|