xl-app-sdk 0.0.7 → 0.0.8

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.
@@ -0,0 +1,261 @@
1
+ const C = "iframe", R = "window";
2
+ let A = null;
3
+ function W() {
4
+ if (A)
5
+ return A;
6
+ const r = /* @__PURE__ */ new Map();
7
+ let { windowInstance: l, mode: f } = window.opener ? {
8
+ windowInstance: window.opener,
9
+ mode: R
10
+ } : {
11
+ windowInstance: window.parent,
12
+ mode: C
13
+ };
14
+ const E = H(w, y, p, _);
15
+ function _() {
16
+ return l;
17
+ }
18
+ function v(n = !1) {
19
+ return n && (!l || l === window.self) ? null : l;
20
+ }
21
+ function b(n = !1) {
22
+ return n && (!l || l === window.self) ? null : f;
23
+ }
24
+ function L(n) {
25
+ if (n?.source !== l)
26
+ return;
27
+ const { event: e, data: i } = n.data;
28
+ e && r.has(e) && r.get(e).forEach((s) => {
29
+ s.once && p(s);
30
+ try {
31
+ s.callback(i);
32
+ } catch {
33
+ }
34
+ });
35
+ }
36
+ function w(n, e, i = !1) {
37
+ r.has(n) || r.set(n, []);
38
+ const s = { event: n, callback: e, once: i };
39
+ return r.get(n).push(s), s;
40
+ }
41
+ function p(n) {
42
+ if (typeof n == "string")
43
+ return r.has(n) ? (r.delete(n), !0) : !1;
44
+ if (r.has(n.event)) {
45
+ const e = r.get(n.event).indexOf(n);
46
+ if (e !== -1)
47
+ return r.get(n.event).splice(e, 1), !0;
48
+ }
49
+ return !1;
50
+ }
51
+ function h(n, e) {
52
+ return w(n, e, !0);
53
+ }
54
+ function y(n, e = null) {
55
+ return !l || l === window ? !1 : (e && O(e) && (e = F(e)), l.postMessage({ event: n, data: e }, "*"), !0);
56
+ }
57
+ function T(n, e) {
58
+ return w(n, ({ event: i, data: s }) => {
59
+ if (typeof e == "function")
60
+ if (e.constructor.name === "AsyncFunction")
61
+ e(s).then((t) => {
62
+ t && O(t) && (t = F(t)), y(i, { _data: t, error: null });
63
+ }).catch((t) => {
64
+ y(i, { data: null, error: t });
65
+ });
66
+ else
67
+ try {
68
+ let t = e(s);
69
+ t && O(t) && (t = F(t)), y(i, {
70
+ data: t,
71
+ error: null
72
+ });
73
+ } catch (t) {
74
+ y(i, { data: null, error: t });
75
+ }
76
+ });
77
+ }
78
+ async function x(n, e = null, i = 5e3, s = 100) {
79
+ if ((!i || i <= 0) && (i = 5e3), (!i || i <= 0) && (i = 5e3), (!s || s < 0) && (s = 100), !l || l === window)
80
+ return Promise.reject("No window instance");
81
+ e && O(e) && (e = F(e));
82
+ const t = Date.now(), D = Math.random().toString(), M = `callback_event_${n}${t}_${D}`;
83
+ l.postMessage({ event: n, data: { event: M, data: e } }, "*");
84
+ let N = "__null__", g = null;
85
+ w(M, ({ data: V, error: S }) => {
86
+ N = V, g = S;
87
+ }, !0);
88
+ const G = Date.now() + i;
89
+ return new Promise((V, S) => {
90
+ const k = setInterval(() => {
91
+ g ? (clearInterval(k), S(g)) : N !== "__null__" ? (clearInterval(k), V(N)) : Date.now() >= G && (clearInterval(k), S("Call timed out " + i + "ms"));
92
+ }, s);
93
+ });
94
+ }
95
+ function I(n) {
96
+ if (typeof n != "function")
97
+ return () => {
98
+ };
99
+ let e = null, i = null;
100
+ return f === R && (n.constructor.name === "AsyncFunction" ? e = async function(s) {
101
+ const t = await n();
102
+ if (t)
103
+ return s.preventDefault(), s.returnValue = t, t;
104
+ } : e = function(s) {
105
+ try {
106
+ const t = n();
107
+ if (t)
108
+ return s.preventDefault(), s.returnValue = t, t;
109
+ } catch {
110
+ }
111
+ }, i = function() {
112
+ f === R && window.history.length === 2 && (window.history.pushState({}, "", ""), d());
113
+ }, window.history.pushState({}, "", ""), window.addEventListener("popstate", i), window.addEventListener("beforeunload", e)), f === C && (e = T("close", n)), () => {
114
+ f === R && e && window.removeEventListener("beforeunload", e), f === C && e && p(e), i && window.removeEventListener("popstate", i);
115
+ };
116
+ }
117
+ function z(n) {
118
+ return I(n);
119
+ }
120
+ let m = null;
121
+ function d(n = 300) {
122
+ m && (clearTimeout(m), m = null), m = setTimeout(() => {
123
+ f === R && window.close(), f === C && y("onClose"), m = null;
124
+ }, n);
125
+ }
126
+ function u() {
127
+ E.destroy(), window.removeEventListener("message", L), A = null, r?.clear && r.clear();
128
+ }
129
+ const { sendFile: o, onReceiveFile: a, manageFiles: c } = E;
130
+ return window.addEventListener("message", L), A = { on: w, ononce: h, onclose: I, onClose: z, off: p, emit: y, register: T, call: x, close: d, destroy: u, getWindow: _, getMode: b, getParent: v, sendFile: o, onReceiveFile: a, manageFiles: c }, A;
131
+ }
132
+ function $() {
133
+ return W();
134
+ }
135
+ function H(r, l, f, E) {
136
+ const _ = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Set(), b = 1e4, L = 6e4;
137
+ let w = null, p = !1, h = [];
138
+ const y = () => {
139
+ if (p) return;
140
+ p = !0;
141
+ const d = () => {
142
+ w || (w = setInterval(() => {
143
+ const u = Date.now();
144
+ for (const [o, a] of _)
145
+ u - a.lastActive > L && _.delete(o);
146
+ _.size === 0 && (clearInterval(w), w = null);
147
+ }, b));
148
+ };
149
+ h.push(r("__FILE_TRANSFER_START__", (u) => {
150
+ _.set(u.id, {
151
+ chunks: new Array(u.totalChunks),
152
+ received: 0,
153
+ metadata: u,
154
+ lastActive: Date.now()
155
+ }), d();
156
+ })), h.push(r("__FILE_TRANSFER_CHUNK__", ({ id: u, index: o, data: a }) => {
157
+ const c = _.get(u);
158
+ c && (c.chunks[o] = a, c.received++, c.lastActive = Date.now());
159
+ })), h.push(r("__FILE_TRANSFER_END__", async ({ id: u }) => {
160
+ const o = _.get(u);
161
+ if (o && o.received === o.metadata.totalChunks)
162
+ try {
163
+ const a = new File(o.chunks, o.metadata.name, { type: o.metadata.type });
164
+ for (const c of v)
165
+ try {
166
+ c && typeof c == "function" && (c.constructor.name === "AsyncFunction" ? await c(a, o.metadata) : c(a, o.metadata));
167
+ } catch {
168
+ }
169
+ } finally {
170
+ _.delete(u);
171
+ }
172
+ })), h.push(r("__FILE_TRANSFER_ERROR__", ({ id: u }) => {
173
+ _.delete(u);
174
+ }));
175
+ }, T = () => {
176
+ p && (h.forEach((d) => f(d)), h = [], p = !1, w && (clearInterval(w), w = null), _.clear());
177
+ };
178
+ async function x(d, u = null, o = 1024 * 1024) {
179
+ const a = E();
180
+ if (!a || a === window)
181
+ return Promise.reject("No window instance");
182
+ const c = Math.random().toString(36).substring(2) + Date.now(), n = d.name || "blob", e = d.type, i = d.size, s = Math.ceil(i / o);
183
+ l("__FILE_TRANSFER_START__", { id: c, name: n, type: e, size: i, totalChunks: s });
184
+ try {
185
+ for (let t = 0; t < s; t++) {
186
+ const D = t * o, M = Math.min(D + o, i), g = await d.slice(D, M).arrayBuffer();
187
+ if (a.postMessage({
188
+ event: "__FILE_TRANSFER_CHUNK__",
189
+ data: { id: c, index: t, data: g }
190
+ }, "*", [g]), u && typeof u == "function")
191
+ try {
192
+ u.constructor.name === "AsyncFunction" ? await u((t + 1) / s, c) : u((t + 1) / s, c);
193
+ } catch {
194
+ }
195
+ }
196
+ return l("__FILE_TRANSFER_END__", { id: c }), c;
197
+ } catch (t) {
198
+ throw l("__FILE_TRANSFER_ERROR__", { id: c, error: t.message || t.toString() }), t;
199
+ }
200
+ }
201
+ function I(d) {
202
+ return typeof d != "function" ? () => {
203
+ } : (v.add(d), y(), () => {
204
+ v.delete(d), v.size === 0 && T();
205
+ });
206
+ }
207
+ function z(d = 3e4, u = 1e4) {
208
+ const o = /* @__PURE__ */ new Map();
209
+ let a = null;
210
+ const c = () => {
211
+ a || (a = setInterval(() => {
212
+ const e = Date.now();
213
+ for (const [i, s] of o)
214
+ e - s.timestamp > d && o.delete(i);
215
+ o.size === 0 && (clearInterval(a), a = null);
216
+ }, u));
217
+ }, n = I((e, i) => {
218
+ o.set(i.id, {
219
+ file: e,
220
+ timestamp: Date.now()
221
+ }), c();
222
+ });
223
+ return {
224
+ get: (e) => o.get(e)?.file || null,
225
+ take: (e) => {
226
+ const i = o.get(e);
227
+ return i ? (o.delete(e), o.size === 0 && a && (clearInterval(a), a = null), i.file) : null;
228
+ },
229
+ has: (e) => o.has(e),
230
+ destroy: () => {
231
+ a && (clearInterval(a), a = null), n(), o.clear();
232
+ }
233
+ };
234
+ }
235
+ function m() {
236
+ w && (clearInterval(w), w = null), _.clear(), v.clear();
237
+ }
238
+ return { sendFile: x, onReceiveFile: I, manageFiles: z, destroy: m };
239
+ }
240
+ function O(r) {
241
+ return typeof r != "object" ? !1 : r?.__v_raw !== void 0 || r?.__v_isRef !== void 0 || r?.__v_isShallow !== void 0 || r?.__v_isReadonly !== void 0 || r?.__ob__ !== void 0;
242
+ }
243
+ function F(r) {
244
+ if (r === null || typeof r != "object")
245
+ return r;
246
+ let l;
247
+ if (Array.isArray(r)) {
248
+ l = [];
249
+ for (let f = 0, E = r.length; f < E; f++)
250
+ l[f] = F(r[f]);
251
+ } else {
252
+ l = {};
253
+ for (let f in r)
254
+ r.hasOwnProperty(f) && (l[f] = F(r[f]));
255
+ }
256
+ return l;
257
+ }
258
+ const K = $();
259
+ export {
260
+ K as v
261
+ };