@fkn/lib 0.9.19 → 0.9.20
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/{api-DnO1DsJC.d.ts → api-CyWF0RUj.d.ts} +28 -37
- package/cloud/fetch.d.ts +1 -1
- package/cloud/net.d.ts +1 -1
- package/cloud-C8jfO0iJ.cjs +1 -0
- package/{cloud-uE4g-WqI.d.ts → cloud-CQVtRvcI.d.ts} +3 -3
- package/cloud-C_1Dt_tR.js +209 -0
- package/cloud.cjs +1 -1
- package/cloud.d.ts +3 -3
- package/cloud.js +1 -1
- package/dgram.d.ts +1 -1
- package/extension-B3nD2u7c.cjs +1 -0
- package/{extension-CN9oFZ0Q.d.ts → extension-CMPZjuaV.d.ts} +1 -1
- package/{extension-DVO10P3i.js → extension-jRuNpBs3.js} +42 -42
- package/extension.cjs +1 -1
- package/extension.d.ts +2 -2
- package/extension.js +3 -3
- package/http.d.ts +1 -1
- package/{index-DLaonjpx.d.ts → index-DY8WjklJ.d.ts} +82 -0
- package/index.cjs +1 -1
- package/index.d.ts +5 -5
- package/index.js +13 -13
- package/lib-DbiVHPXE.cjs +53 -0
- package/{lib-CegQxwDI.js → lib-k3lstfa4.js} +178 -131
- package/{net-l7JVHsIR.d.ts → net-ByL9yG7X.d.ts} +1 -1
- package/net.d.ts +1 -1
- package/package.json +1 -1
- package/{packages-vX-1yfRK.d.ts → packages-Cn8S-Hkn.d.ts} +20 -20
- package/packages.d.ts +1 -1
- package/{proxy-7ib45Uo-.d.ts → proxy-RU8sbq68.d.ts} +1 -1
- package/cloud-BQoppUw4.cjs +0 -1
- package/cloud-C8CeqUht.js +0 -130
- package/extension-4BM5hKrn.cjs +0 -1
- package/lib-ulyxIbTr.cjs +0 -53
|
@@ -285,32 +285,36 @@ var D = () => typeof document > "u" ? !1 : document.documentElement.dataset[ae]
|
|
|
285
285
|
}, fe = (e) => {
|
|
286
286
|
let t = [...new Set((e ?? []).map(([e]) => e.trim().toLowerCase()).filter((e) => !j.includes(e)))];
|
|
287
287
|
if (t.length) throw Error(`fetch: refusing to forge request header(s): ${t.join(", ")}`);
|
|
288
|
-
}, pe =
|
|
288
|
+
}, pe = [
|
|
289
|
+
"fkn.app",
|
|
290
|
+
"fkn.dev",
|
|
291
|
+
"sdbx.app"
|
|
292
|
+
], me = (e) => pe.some((t) => e === t || e.endsWith(`.${t}`)), he = {
|
|
289
293
|
scope: "network.fetch",
|
|
290
294
|
category: "network",
|
|
291
295
|
severity: 0,
|
|
292
296
|
title: "Fetch data from other sites",
|
|
293
297
|
description: "Lets the app download public data from other websites directly, past the usual cross-origin limits."
|
|
294
|
-
},
|
|
298
|
+
}, ge = {
|
|
295
299
|
scope: "network.fetchCredentialed",
|
|
296
300
|
category: "network",
|
|
297
301
|
severity: 3,
|
|
298
302
|
unsafe: !0,
|
|
299
303
|
title: "Fetch from other sites, signed in as you",
|
|
300
304
|
description: "Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see."
|
|
301
|
-
},
|
|
305
|
+
}, _e = {
|
|
302
306
|
scope: "network.fetchLocal",
|
|
303
307
|
category: "network",
|
|
304
308
|
severity: 3,
|
|
305
309
|
unsafe: !0,
|
|
306
310
|
title: "Access devices on your local network",
|
|
307
311
|
description: "Lets the app reach devices and services on your home or work network, which websites normally cannot touch."
|
|
308
|
-
},
|
|
312
|
+
}, ve = (e) => {
|
|
309
313
|
let t = e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);
|
|
310
314
|
if (!t) return !1;
|
|
311
315
|
let [n, r] = [Number(t[1]), Number(t[2])];
|
|
312
316
|
return n === 10 || n === 127 || n === 0 || n === 169 && r === 254 || n === 172 && r >= 16 && r <= 31 || n === 192 && r === 168;
|
|
313
|
-
},
|
|
317
|
+
}, ye = (e) => {
|
|
314
318
|
let t;
|
|
315
319
|
try {
|
|
316
320
|
t = new URL(e);
|
|
@@ -318,27 +322,25 @@ var D = () => typeof document > "u" ? !1 : document.documentElement.dataset[ae]
|
|
|
318
322
|
return !1;
|
|
319
323
|
}
|
|
320
324
|
let n = t.hostname.replace(/^\[|\]$/g, "").toLowerCase().replace(/\.$/, "");
|
|
321
|
-
return n === "localhost" || n.endsWith(".localhost") || n.endsWith(".local") || n.endsWith(".internal") || n.endsWith(".home.arpa") ? !0 : n.includes(":") ? n === "::" || n === "::1" || n.startsWith("fc") || n.startsWith("fd") || /^fe[89ab]/.test(n) || n.startsWith("::ffff:") :
|
|
322
|
-
},
|
|
325
|
+
return n === "localhost" || n.endsWith(".localhost") || n.endsWith(".local") || n.endsWith(".internal") || n.endsWith(".home.arpa") ? !0 : n.includes(":") ? n === "::" || n === "::1" || n.startsWith("fc") || n.startsWith("fd") || /^fe[89ab]/.test(n) || n.startsWith("::ffff:") : ve(n);
|
|
326
|
+
}, M = (e) => {
|
|
323
327
|
let t;
|
|
324
328
|
try {
|
|
325
329
|
t = new URL(e);
|
|
326
330
|
} catch {
|
|
327
331
|
return !1;
|
|
328
332
|
}
|
|
329
|
-
|
|
330
|
-
let n = t.hostname;
|
|
331
|
-
return ve.some((e) => n === e || n.endsWith(`.${e}`));
|
|
333
|
+
return t.protocol === "chrome-extension:" || t.protocol === "moz-extension:" ? !0 : me(t.hostname);
|
|
332
334
|
}, N = (e) => {
|
|
333
335
|
if (M(e)) throw Error("fetch: refusing to target the extension's own pages or FKN platform domains");
|
|
334
|
-
},
|
|
336
|
+
}, be = (e) => {
|
|
335
337
|
if (!e?.headers) return;
|
|
336
338
|
let t = new Headers(e.headers), n = j.map((e) => {
|
|
337
339
|
let n = t.get(e);
|
|
338
340
|
return n === null || n === "" ? void 0 : [e, n];
|
|
339
341
|
}).filter((e) => e !== void 0);
|
|
340
342
|
return n.length ? n : void 0;
|
|
341
|
-
},
|
|
343
|
+
}, xe = async (e, t) => {
|
|
342
344
|
let n = new Request(e, t);
|
|
343
345
|
N(n.url);
|
|
344
346
|
let r = n.body ? await n.arrayBuffer() : null;
|
|
@@ -349,25 +351,25 @@ var D = () => typeof document > "u" ? !1 : document.documentElement.dataset[ae]
|
|
|
349
351
|
body: r,
|
|
350
352
|
credentials: t?.credentials === "include" ? "include" : "omit",
|
|
351
353
|
redirect: n.redirect,
|
|
352
|
-
unsafeHeaders:
|
|
354
|
+
unsafeHeaders: be(t),
|
|
353
355
|
reason: t?.reason,
|
|
354
356
|
signal: t?.signal ?? void 0
|
|
355
357
|
});
|
|
356
|
-
},
|
|
358
|
+
}, Se = {
|
|
357
359
|
scope: "network.readCookie",
|
|
358
360
|
category: "network",
|
|
359
361
|
severity: 3,
|
|
360
362
|
unsafe: !0,
|
|
361
363
|
title: "Read a site’s cookie",
|
|
362
364
|
description: "Lets the app read a named cookie from another site, which can include the login token only that site should see."
|
|
363
|
-
},
|
|
365
|
+
}, Ce = { get: (e) => A.getCookie(e) }, we = {
|
|
364
366
|
scope: "network.modifyRequestHeaders",
|
|
365
367
|
category: "network",
|
|
366
368
|
severity: 2,
|
|
367
369
|
unsafe: !0,
|
|
368
370
|
title: "Rewrite request headers to other sites",
|
|
369
371
|
description: "Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites."
|
|
370
|
-
},
|
|
372
|
+
}, Te = (e) => A.setRequestHeaderRule(e), Ee = (e) => A.removeRequestHeaderRule({ ruleId: e }), De = class extends Error {
|
|
371
373
|
reason;
|
|
372
374
|
filename;
|
|
373
375
|
line;
|
|
@@ -376,7 +378,7 @@ var D = () => typeof document > "u" ? !1 : document.documentElement.dataset[ae]
|
|
|
376
378
|
constructor(e, t, n, r, i) {
|
|
377
379
|
super(`${e}:${n}:${r}: ${t}`), this.reason = t, this.filename = e, this.line = n, this.column = r, this.source = i;
|
|
378
380
|
}
|
|
379
|
-
},
|
|
381
|
+
}, Oe = class {
|
|
380
382
|
start;
|
|
381
383
|
end;
|
|
382
384
|
source;
|
|
@@ -456,7 +458,7 @@ function z(e, t) {
|
|
|
456
458
|
value: t || null
|
|
457
459
|
}), e;
|
|
458
460
|
}
|
|
459
|
-
var
|
|
461
|
+
var ke = class {
|
|
460
462
|
level = 0;
|
|
461
463
|
indentation = " ";
|
|
462
464
|
compress = !1;
|
|
@@ -606,7 +608,7 @@ var Oe = class {
|
|
|
606
608
|
declaration(e) {
|
|
607
609
|
return this.compress ? this.emit(`${e.property}:${e.value}`, e.position) + this.emit(";") : e.property === "grid-template-areas" ? this.emit(this.indent()) + this.emit(e.property + ": " + e.value.split("\n").join("\n".padEnd(22) + this.indent()), e.position) + this.emit(";") : this.emit(this.indent()) + this.emit(`${e.property}: ${e.value}`, e.position) + this.emit(";");
|
|
608
610
|
}
|
|
609
|
-
},
|
|
611
|
+
}, Ae = (e, t) => {
|
|
610
612
|
t ||= {};
|
|
611
613
|
let n = 1, r = 1;
|
|
612
614
|
function i() {
|
|
@@ -614,14 +616,14 @@ var Oe = class {
|
|
|
614
616
|
line: n,
|
|
615
617
|
column: r
|
|
616
618
|
};
|
|
617
|
-
return (i) => (i.position = new
|
|
619
|
+
return (i) => (i.position = new Oe(e, {
|
|
618
620
|
line: n,
|
|
619
621
|
column: r
|
|
620
622
|
}, t?.source || ""), u(), i);
|
|
621
623
|
}
|
|
622
624
|
let a = [];
|
|
623
625
|
function o(i) {
|
|
624
|
-
let o = new
|
|
626
|
+
let o = new De(t?.source || "", i, n, r, e);
|
|
625
627
|
if (!t?.silent) throw o;
|
|
626
628
|
a.push(o);
|
|
627
629
|
}
|
|
@@ -1095,48 +1097,54 @@ var Oe = class {
|
|
|
1095
1097
|
}
|
|
1096
1098
|
};
|
|
1097
1099
|
}());
|
|
1098
|
-
},
|
|
1100
|
+
}, je = (e, t) => new ke(t || {}).compile(e), B = "LocatorError", V = "LocatorUnsupportedError", H = "LocatorDeniedError", Me = "LocatorInvalidError", U = (e) => typeof e == "object" && e ? e.name : void 0, W = (e) => Object.assign(Error(e), { name: B }), Ne = (e, t = "", n) => Object.assign(Error(e), {
|
|
1099
1101
|
name: V,
|
|
1100
1102
|
operation: t,
|
|
1101
1103
|
backend: n
|
|
1102
|
-
}),
|
|
1104
|
+
}), Pe = (e, t) => Ne(`Locator operation not supported${t ? ` on the ${t} backend` : ""}: ${e}`, e, t), Fe = (e, t) => Object.assign(Error(e), {
|
|
1105
|
+
name: H,
|
|
1106
|
+
operation: t
|
|
1107
|
+
}), Ie = (e, t) => Object.assign(Error(e), {
|
|
1108
|
+
name: Me,
|
|
1109
|
+
operation: t
|
|
1110
|
+
}), Le = (e) => U(e) === V, Re = (e) => U(e) === H, ze = (e) => U(e) === Me, Be = (e) => Re(e) || Le(e) || ze(e), G = (e) => {
|
|
1103
1111
|
let t = (e.ownerDocument ?? e).defaultView;
|
|
1104
1112
|
if (!t) throw W("the resolved element belongs to a document with no window");
|
|
1105
1113
|
return t;
|
|
1106
|
-
},
|
|
1114
|
+
}, Ve = (e, t) => {
|
|
1107
1115
|
let n = e?.[t];
|
|
1108
1116
|
return typeof n == "function" ? n : null;
|
|
1109
1117
|
}, K = (e, t) => {
|
|
1110
1118
|
if (typeof e != "object" || !e) return null;
|
|
1111
1119
|
let n = (() => {
|
|
1112
1120
|
try {
|
|
1113
|
-
return
|
|
1121
|
+
return Ve(G(e), t);
|
|
1114
1122
|
} catch {
|
|
1115
1123
|
return null;
|
|
1116
1124
|
}
|
|
1117
1125
|
})();
|
|
1118
1126
|
if (n && e instanceof n) return n;
|
|
1119
|
-
let r =
|
|
1127
|
+
let r = Ve(globalThis, t);
|
|
1120
1128
|
return r && e instanceof r ? r : null;
|
|
1121
1129
|
}, q = (e, t) => K(e, t) !== null, J = (e) => {
|
|
1122
1130
|
if (e.length === 0) throw W("No elements found");
|
|
1123
1131
|
if (e.length > 1) throw W(`Strict mode violation: locator resolved to ${e.length} elements`);
|
|
1124
1132
|
return e[0];
|
|
1125
|
-
},
|
|
1133
|
+
}, He = (e, t) => {
|
|
1126
1134
|
if (!q(e, t)) throw W(`Strict mode violation: expected ${t}, got <${e.tagName.toLowerCase()}>`);
|
|
1127
1135
|
return e;
|
|
1128
|
-
},
|
|
1129
|
-
|
|
1130
|
-
},
|
|
1136
|
+
}, Ue = (e) => e.tagName.toLowerCase(), We = /* @__PURE__ */ new Set(), Ge = (e) => {
|
|
1137
|
+
We.add(e);
|
|
1138
|
+
}, Ke = /(?:^|[^\w-])(?:url|image|image-set|cross-fade|paint|element|expression)\s*\(/i, qe = (e) => e.replace(/\\([0-9a-fA-F]{1,6})\s?/g, (e, t) => String.fromCodePoint(Number.parseInt(t, 16))).replace(/\\(.)/g, "$1"), Je = (e) => !Ke.test(qe(e.value)), Ye = /* @__PURE__ */ new Set([
|
|
1131
1139
|
P.import,
|
|
1132
1140
|
P.fontFace,
|
|
1133
1141
|
P.namespace,
|
|
1134
1142
|
P.charset,
|
|
1135
1143
|
P.document,
|
|
1136
1144
|
P.comment
|
|
1137
|
-
]),
|
|
1138
|
-
if (
|
|
1139
|
-
if (e.type === P.declaration) return
|
|
1145
|
+
]), Xe = (e) => {
|
|
1146
|
+
if (Ye.has(e.type)) return null;
|
|
1147
|
+
if (e.type === P.declaration) return Je(e) ? e : null;
|
|
1140
1148
|
let t = e, n = { ...t };
|
|
1141
1149
|
for (let e of [
|
|
1142
1150
|
"declarations",
|
|
@@ -1144,18 +1152,18 @@ var Oe = class {
|
|
|
1144
1152
|
"keyframes"
|
|
1145
1153
|
]) {
|
|
1146
1154
|
let r = t[e];
|
|
1147
|
-
Array.isArray(r) && (n[e] =
|
|
1155
|
+
Array.isArray(r) && (n[e] = Ze(r));
|
|
1148
1156
|
}
|
|
1149
1157
|
return n;
|
|
1150
|
-
},
|
|
1158
|
+
}, Ze = (e) => e.map((e) => Xe(e)).filter((e) => e !== null), Qe = (e) => {
|
|
1151
1159
|
let t;
|
|
1152
1160
|
try {
|
|
1153
|
-
t =
|
|
1161
|
+
t = Ae(e, { silent: !0 });
|
|
1154
1162
|
} catch {
|
|
1155
1163
|
return "";
|
|
1156
1164
|
}
|
|
1157
|
-
return t.stylesheet.rules =
|
|
1158
|
-
},
|
|
1165
|
+
return t.stylesheet.rules = Ze(t.stylesheet.rules), je(t);
|
|
1166
|
+
}, $e = (e, t) => {
|
|
1159
1167
|
let n = () => {
|
|
1160
1168
|
t.parentNode || (e.head ?? e.documentElement).appendChild(t);
|
|
1161
1169
|
};
|
|
@@ -1172,27 +1180,60 @@ var Oe = class {
|
|
|
1172
1180
|
});
|
|
1173
1181
|
let i = () => r.disconnect(), a = e.defaultView;
|
|
1174
1182
|
a ? a.addEventListener("load", i, { once: !0 }) : setTimeout(i, 3e4);
|
|
1175
|
-
},
|
|
1183
|
+
}, et = { resolve: (e, t) => {
|
|
1176
1184
|
let n = e.document.createElement("style");
|
|
1177
|
-
n.textContent = t.noSanitize ? t.content :
|
|
1185
|
+
n.textContent = t.noSanitize ? t.content : Qe(t.content);
|
|
1178
1186
|
try {
|
|
1179
|
-
|
|
1187
|
+
$e(e.document, n);
|
|
1180
1188
|
} catch (e) {
|
|
1181
1189
|
console.error(e);
|
|
1182
1190
|
}
|
|
1183
|
-
|
|
1184
|
-
} },
|
|
1191
|
+
Ge(n);
|
|
1192
|
+
} }, tt = /* @__PURE__ */ new Set(["set-cookie", "set-cookie2"]), nt = (e) => {
|
|
1193
|
+
let t = [];
|
|
1194
|
+
return e.forEach((e, n) => {
|
|
1195
|
+
tt.has(n.toLowerCase()) || t.push([n, e]);
|
|
1196
|
+
}), t;
|
|
1197
|
+
}, Y = {
|
|
1198
|
+
kind: "frame",
|
|
1199
|
+
resolve: async (e, t, n = {}) => {
|
|
1200
|
+
if (typeof t != "string") throw Ie("fetch: url must be a string", "fetch");
|
|
1201
|
+
let r = G(e.document), i;
|
|
1202
|
+
try {
|
|
1203
|
+
i = new r.URL(t, e.document.baseURI).href;
|
|
1204
|
+
} catch {
|
|
1205
|
+
throw Ie(`fetch: not a valid url: ${t}`, "fetch");
|
|
1206
|
+
}
|
|
1207
|
+
let a = await r.fetch(i, {
|
|
1208
|
+
method: n.method ?? "GET",
|
|
1209
|
+
headers: n.headers,
|
|
1210
|
+
body: n.body ?? null,
|
|
1211
|
+
redirect: n.redirect ?? "follow",
|
|
1212
|
+
credentials: n.credentials ?? "include"
|
|
1213
|
+
});
|
|
1214
|
+
return {
|
|
1215
|
+
status: a.status,
|
|
1216
|
+
statusText: a.statusText,
|
|
1217
|
+
ok: a.ok,
|
|
1218
|
+
url: a.url,
|
|
1219
|
+
redirected: a.redirected,
|
|
1220
|
+
type: a.type,
|
|
1221
|
+
headers: nt(a.headers),
|
|
1222
|
+
body: await a.arrayBuffer()
|
|
1223
|
+
};
|
|
1224
|
+
}
|
|
1225
|
+
}, rt = (e, t) => {
|
|
1185
1226
|
let n = e.getBoundingClientRect();
|
|
1186
1227
|
return {
|
|
1187
1228
|
clientX: n.left + n.width * (t?.x ?? .5),
|
|
1188
1229
|
clientY: n.top + n.height * (t?.y ?? .5)
|
|
1189
1230
|
};
|
|
1190
|
-
},
|
|
1231
|
+
}, it = { resolve: (e, t = {}) => {
|
|
1191
1232
|
let n = J(e.elements), r = G(n), i = {
|
|
1192
1233
|
bubbles: !0,
|
|
1193
1234
|
cancelable: !0,
|
|
1194
1235
|
composed: !0,
|
|
1195
|
-
...
|
|
1236
|
+
...rt(n, t.position),
|
|
1196
1237
|
button: 0
|
|
1197
1238
|
}, a = {
|
|
1198
1239
|
...i,
|
|
@@ -1216,12 +1257,12 @@ var Oe = class {
|
|
|
1216
1257
|
...i,
|
|
1217
1258
|
buttons: 0
|
|
1218
1259
|
}));
|
|
1219
|
-
} },
|
|
1260
|
+
} }, at = { resolve: (e, t = {}) => {
|
|
1220
1261
|
let n = J(e.elements), r = G(n), i = {
|
|
1221
1262
|
bubbles: !0,
|
|
1222
1263
|
cancelable: !0,
|
|
1223
1264
|
composed: !0,
|
|
1224
|
-
...
|
|
1265
|
+
...rt(n, t.position)
|
|
1225
1266
|
}, a = {
|
|
1226
1267
|
...i,
|
|
1227
1268
|
pointerType: "mouse",
|
|
@@ -1235,11 +1276,11 @@ var Oe = class {
|
|
|
1235
1276
|
...i,
|
|
1236
1277
|
bubbles: !1
|
|
1237
1278
|
})), n.dispatchEvent(new r.MouseEvent("mouseover", i)), n.dispatchEvent(new r.PointerEvent("pointermove", a)), n.dispatchEvent(new r.MouseEvent("mousemove", i));
|
|
1238
|
-
} },
|
|
1279
|
+
} }, ot = (e, t) => {
|
|
1239
1280
|
e._valueTracker?.setValue("");
|
|
1240
1281
|
let n = (K(e, "HTMLTextAreaElement") ?? K(e, "HTMLInputElement"))?.prototype, r = n && Object.getOwnPropertyDescriptor(n, "value")?.set;
|
|
1241
1282
|
r ? r.call(e, t) : e.value = t;
|
|
1242
|
-
},
|
|
1283
|
+
}, st = (e, t) => {
|
|
1243
1284
|
if (e.type !== "range") return null;
|
|
1244
1285
|
let n = Number(e.min || 0), r = Number(e.max || 100);
|
|
1245
1286
|
if (!Number.isFinite(n) || !Number.isFinite(r) || r <= n) return null;
|
|
@@ -1276,71 +1317,71 @@ var Oe = class {
|
|
|
1276
1317
|
buttons: 0
|
|
1277
1318
|
}
|
|
1278
1319
|
};
|
|
1279
|
-
},
|
|
1320
|
+
}, ct = { resolve: (e, t, n = {}) => {
|
|
1280
1321
|
let r = J(e.elements), i = G(r), a = q(r, "HTMLInputElement");
|
|
1281
1322
|
if (a || q(r, "HTMLTextAreaElement")) {
|
|
1282
|
-
let e = r, n = a ?
|
|
1283
|
-
n && (r.dispatchEvent(new i.PointerEvent("pointerdown", n.pointerDown)), r.dispatchEvent(new i.MouseEvent("mousedown", n.mouseDown))),
|
|
1323
|
+
let e = r, n = a ? st(e, t) : null;
|
|
1324
|
+
n && (r.dispatchEvent(new i.PointerEvent("pointerdown", n.pointerDown)), r.dispatchEvent(new i.MouseEvent("mousedown", n.mouseDown))), ot(e, t), r.dispatchEvent(new i.Event("input", { bubbles: !0 })), n && (r.dispatchEvent(new i.PointerEvent("pointerup", n.pointerUp)), r.dispatchEvent(new i.MouseEvent("mouseup", n.mouseUp))), r.dispatchEvent(new i.Event("change", { bubbles: !0 }));
|
|
1284
1325
|
return;
|
|
1285
1326
|
}
|
|
1286
1327
|
if (q(r, "HTMLElement") && r.isContentEditable) {
|
|
1287
1328
|
r.textContent = t, r.dispatchEvent(new i.Event("input", { bubbles: !0 }));
|
|
1288
1329
|
return;
|
|
1289
1330
|
}
|
|
1290
|
-
throw Error(`fill: element <${
|
|
1291
|
-
} },
|
|
1331
|
+
throw Error(`fill: element <${Ue(r)}> is not fillable`);
|
|
1332
|
+
} }, lt = { resolve: (e, t = {}) => J(e.elements).textContent }, ut = { resolve: (e, t, n = {}) => J(e.elements).getAttribute(t) }, dt = { resolve: (e, t = {}) => {
|
|
1292
1333
|
let n = J(e.elements);
|
|
1293
1334
|
if (!q(n, "HTMLElement")) return !0;
|
|
1294
1335
|
let r = G(n).getComputedStyle(n);
|
|
1295
1336
|
if (r?.display === "none" || r?.visibility === "hidden") return !1;
|
|
1296
1337
|
let i = n.getBoundingClientRect();
|
|
1297
1338
|
return i.width > 0 && i.height > 0;
|
|
1298
|
-
} },
|
|
1339
|
+
} }, ft = { resolve: (e, t = {}) => e.elements.length }, pt = { resolve: (e, t = {}) => e.elements.length > 0 }, X = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
1299
1340
|
__proto__: null,
|
|
1300
|
-
click:
|
|
1301
|
-
count:
|
|
1302
|
-
exists:
|
|
1303
|
-
fill:
|
|
1304
|
-
getAttribute:
|
|
1305
|
-
hover:
|
|
1306
|
-
isVisible:
|
|
1307
|
-
textContent:
|
|
1308
|
-
}, Symbol.toStringTag, { value: "Module" })),
|
|
1341
|
+
click: it,
|
|
1342
|
+
count: ft,
|
|
1343
|
+
exists: pt,
|
|
1344
|
+
fill: ct,
|
|
1345
|
+
getAttribute: ut,
|
|
1346
|
+
hover: at,
|
|
1347
|
+
isVisible: dt,
|
|
1348
|
+
textContent: lt
|
|
1349
|
+
}, Symbol.toStringTag, { value: "Module" })), Z = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(t)]), Q = (e) => e.replaceAll("\"", "\\\""), mt = {
|
|
1309
1350
|
to: "element",
|
|
1310
1351
|
css: !0,
|
|
1311
|
-
resolve: (e, t) =>
|
|
1352
|
+
resolve: (e, t) => Z(e, t),
|
|
1312
1353
|
render: (e) => ({
|
|
1313
1354
|
fragment: typeof e == "string" ? e : "?",
|
|
1314
1355
|
separator: "descend"
|
|
1315
1356
|
})
|
|
1316
|
-
},
|
|
1357
|
+
}, ht = {
|
|
1317
1358
|
to: "frame",
|
|
1318
1359
|
css: !0,
|
|
1319
1360
|
barrier: "down",
|
|
1320
|
-
resolve: (e, t) =>
|
|
1361
|
+
resolve: (e, t) => Z(e, t),
|
|
1321
1362
|
render: (e) => ({
|
|
1322
1363
|
fragment: typeof e == "string" ? e : "?",
|
|
1323
1364
|
separator: "down"
|
|
1324
1365
|
})
|
|
1325
|
-
},
|
|
1366
|
+
}, gt = {
|
|
1326
1367
|
element: {
|
|
1327
1368
|
selectors: {
|
|
1328
|
-
locator:
|
|
1329
|
-
frameLocator:
|
|
1369
|
+
locator: mt,
|
|
1370
|
+
frameLocator: ht,
|
|
1330
1371
|
getByRole: {
|
|
1331
1372
|
to: "element",
|
|
1332
|
-
resolve: (e, t) =>
|
|
1333
|
-
render: (e) => ({ fragment: typeof e == "string" ? `[role="${
|
|
1373
|
+
resolve: (e, t) => Z(e, `[role="${CSS.escape(t)}"]`),
|
|
1374
|
+
render: (e) => ({ fragment: typeof e == "string" ? `[role="${Q(e)}"]` : "[role]" })
|
|
1334
1375
|
},
|
|
1335
1376
|
getByText: {
|
|
1336
1377
|
to: "element",
|
|
1337
1378
|
resolve: (e, t) => e.elements.flatMap((e) => [e, ...e.querySelectorAll("*")]).filter((e) => e.textContent?.includes(t)),
|
|
1338
|
-
render: (e) => ({ fragment: typeof e == "string" ? `:has-text("${
|
|
1379
|
+
render: (e) => ({ fragment: typeof e == "string" ? `:has-text("${Q(e)}")` : ":has-text(...)" })
|
|
1339
1380
|
},
|
|
1340
1381
|
getByTestId: {
|
|
1341
1382
|
to: "element",
|
|
1342
|
-
resolve: (e, t) =>
|
|
1343
|
-
render: (e) => ({ fragment: typeof e == "string" ? `[data-testid="${
|
|
1383
|
+
resolve: (e, t) => Z(e, `[data-testid="${CSS.escape(t)}"]`),
|
|
1384
|
+
render: (e) => ({ fragment: typeof e == "string" ? `[data-testid="${Q(e)}"]` : "[data-testid]" })
|
|
1344
1385
|
},
|
|
1345
1386
|
first: {
|
|
1346
1387
|
to: "element",
|
|
@@ -1357,20 +1398,20 @@ var Oe = class {
|
|
|
1357
1398
|
}
|
|
1358
1399
|
},
|
|
1359
1400
|
operations: {
|
|
1360
|
-
click:
|
|
1361
|
-
fill:
|
|
1362
|
-
hover:
|
|
1363
|
-
textContent:
|
|
1364
|
-
getAttribute:
|
|
1365
|
-
isVisible:
|
|
1366
|
-
count:
|
|
1367
|
-
exists:
|
|
1401
|
+
click: it,
|
|
1402
|
+
fill: ct,
|
|
1403
|
+
hover: at,
|
|
1404
|
+
textContent: lt,
|
|
1405
|
+
getAttribute: ut,
|
|
1406
|
+
isVisible: dt,
|
|
1407
|
+
count: ft,
|
|
1408
|
+
exists: pt
|
|
1368
1409
|
}
|
|
1369
1410
|
},
|
|
1370
1411
|
frame: {
|
|
1371
1412
|
selectors: {
|
|
1372
|
-
locator:
|
|
1373
|
-
frameLocator:
|
|
1413
|
+
locator: mt,
|
|
1414
|
+
frameLocator: ht,
|
|
1374
1415
|
owner: {
|
|
1375
1416
|
to: "frame",
|
|
1376
1417
|
barrier: "up",
|
|
@@ -1383,9 +1424,12 @@ var Oe = class {
|
|
|
1383
1424
|
})
|
|
1384
1425
|
}
|
|
1385
1426
|
},
|
|
1386
|
-
operations: {
|
|
1427
|
+
operations: {
|
|
1428
|
+
addStyleTag: et,
|
|
1429
|
+
fetch: Y
|
|
1430
|
+
}
|
|
1387
1431
|
}
|
|
1388
|
-
},
|
|
1432
|
+
}, _t = (e, t = gt) => ({
|
|
1389
1433
|
element: {
|
|
1390
1434
|
selectors: {
|
|
1391
1435
|
...t.element.selectors,
|
|
@@ -1406,29 +1450,29 @@ var Oe = class {
|
|
|
1406
1450
|
...e.frame?.operations
|
|
1407
1451
|
}
|
|
1408
1452
|
}
|
|
1409
|
-
}),
|
|
1453
|
+
}), vt = 3e4, yt = 50, bt = (e) => {
|
|
1410
1454
|
let t = e[e.length - 1];
|
|
1411
1455
|
return typeof t == "object" && t ? t : void 0;
|
|
1412
|
-
},
|
|
1413
|
-
let t =
|
|
1414
|
-
return typeof t == "number" ? t :
|
|
1415
|
-
},
|
|
1456
|
+
}, xt = (e) => {
|
|
1457
|
+
let t = bt(e)?.timeout;
|
|
1458
|
+
return typeof t == "number" ? t : vt;
|
|
1459
|
+
}, St = ({ executor: e, parts: t }) => ({ highlight: (n) => e.highlight(t, n).then(() => {}, () => {}) }), Ct = async (e) => {
|
|
1416
1460
|
let t = {
|
|
1417
1461
|
parts: e.parts,
|
|
1418
1462
|
operation: e.operation,
|
|
1419
1463
|
args: e.args,
|
|
1420
1464
|
phase: "ensure"
|
|
1421
1465
|
};
|
|
1422
|
-
await e.gate?.(t,
|
|
1423
|
-
},
|
|
1466
|
+
await e.gate?.(t, St(e));
|
|
1467
|
+
}, wt = async (e) => {
|
|
1424
1468
|
let { executor: t, gate: n, parts: r, operation: i, args: a } = e;
|
|
1425
1469
|
n && await n({
|
|
1426
1470
|
parts: r,
|
|
1427
1471
|
operation: i,
|
|
1428
1472
|
args: a,
|
|
1429
1473
|
phase: "execute"
|
|
1430
|
-
},
|
|
1431
|
-
let o =
|
|
1474
|
+
}, St(e));
|
|
1475
|
+
let o = xt(a), s = Date.now() + o, c = /* @__PURE__ */ Error(`Locator timeout (${o}ms): ${i}`), { promise: l, reject: u } = Promise.withResolvers();
|
|
1432
1476
|
l.catch(() => {});
|
|
1433
1477
|
let d = setTimeout(() => u(c), o), f = c;
|
|
1434
1478
|
try {
|
|
@@ -1436,49 +1480,55 @@ var Oe = class {
|
|
|
1436
1480
|
return await Promise.race([t.execute(r, i, a), l]);
|
|
1437
1481
|
} catch (e) {
|
|
1438
1482
|
if (e === c) break;
|
|
1439
|
-
if (
|
|
1483
|
+
if (Be(e)) throw e;
|
|
1440
1484
|
f = e;
|
|
1441
1485
|
let t = s - Date.now();
|
|
1442
1486
|
if (t <= 0) break;
|
|
1443
|
-
await new Promise((e) => setTimeout(e, Math.min(
|
|
1487
|
+
await new Promise((e) => setTimeout(e, Math.min(yt, t)));
|
|
1444
1488
|
}
|
|
1445
1489
|
} finally {
|
|
1446
1490
|
clearTimeout(d);
|
|
1447
1491
|
}
|
|
1448
1492
|
throw f;
|
|
1449
|
-
},
|
|
1493
|
+
}, Tt = (e, t, n, r) => {
|
|
1450
1494
|
let i = {};
|
|
1451
|
-
for (let [a, o] of Object.entries(t[n].selectors)) i[a] = (...i) =>
|
|
1495
|
+
for (let [a, o] of Object.entries(t[n].selectors)) i[a] = (...i) => Tt(e, t, o.to, [...r, {
|
|
1452
1496
|
kind: n,
|
|
1453
1497
|
name: a,
|
|
1454
1498
|
args: i
|
|
1455
1499
|
}]);
|
|
1456
|
-
for (let a of Object.keys(t[n].operations)) i[a] = (...t) =>
|
|
1500
|
+
for (let a of Object.keys(t[n].operations)) i[a] = (...t) => wt({
|
|
1457
1501
|
...e,
|
|
1458
1502
|
parts: r,
|
|
1459
1503
|
operation: a,
|
|
1460
1504
|
args: t
|
|
1461
1505
|
});
|
|
1462
|
-
return i.ensure = (t, n = {}) =>
|
|
1506
|
+
return i.ensure = (t, n = {}) => Ct({
|
|
1463
1507
|
...e,
|
|
1464
1508
|
parts: r,
|
|
1465
1509
|
operation: t,
|
|
1466
1510
|
args: [n]
|
|
1467
1511
|
}), i;
|
|
1468
|
-
},
|
|
1512
|
+
}, Et = (e) => Tt(e, e.modules ?? gt, "frame", []), Dt = _t({
|
|
1469
1513
|
element: { operations: {
|
|
1470
|
-
click: { resolve: (e, t = {}) =>
|
|
1471
|
-
hover: { resolve: (e, t = {}) =>
|
|
1472
|
-
fill: { resolve: (e, t, n = {}) =>
|
|
1473
|
-
textContent: { resolve: (e, t = {}) =>
|
|
1474
|
-
getAttribute: { resolve: (e, t, n = {}) =>
|
|
1475
|
-
isVisible: { resolve: (e, t = {}) =>
|
|
1476
|
-
count: { resolve: (e, t = {}) =>
|
|
1477
|
-
exists: { resolve: (e, t = {}) =>
|
|
1478
|
-
videoElement: { resolve: (e, t = {}) => x(
|
|
1514
|
+
click: { resolve: (e, t = {}) => X.click.resolve(e, t) },
|
|
1515
|
+
hover: { resolve: (e, t = {}) => X.hover.resolve(e, t) },
|
|
1516
|
+
fill: { resolve: (e, t, n = {}) => X.fill.resolve(e, t, n) },
|
|
1517
|
+
textContent: { resolve: (e, t = {}) => X.textContent.resolve(e) },
|
|
1518
|
+
getAttribute: { resolve: (e, t, n = {}) => X.getAttribute.resolve(e, t) },
|
|
1519
|
+
isVisible: { resolve: (e, t = {}) => X.isVisible.resolve(e) },
|
|
1520
|
+
count: { resolve: (e, t = {}) => X.count.resolve(e) },
|
|
1521
|
+
exists: { resolve: (e, t = {}) => X.exists.resolve(e) },
|
|
1522
|
+
videoElement: { resolve: (e, t = {}) => x(He(J(e.elements), "HTMLVideoElement")) }
|
|
1479
1523
|
} },
|
|
1480
|
-
frame: { operations: {
|
|
1481
|
-
|
|
1524
|
+
frame: { operations: {
|
|
1525
|
+
addStyleTag: { resolve: (e, t) => et.resolve(e, t) },
|
|
1526
|
+
fetch: {
|
|
1527
|
+
resolve: (e, t, n = {}) => Y.resolve(e, t, n),
|
|
1528
|
+
kind: Y.kind
|
|
1529
|
+
}
|
|
1530
|
+
} }
|
|
1531
|
+
}), Ot = (e) => {
|
|
1482
1532
|
if (!e || e === "about:blank") return !1;
|
|
1483
1533
|
let t;
|
|
1484
1534
|
try {
|
|
@@ -1486,30 +1536,27 @@ var Oe = class {
|
|
|
1486
1536
|
} catch {
|
|
1487
1537
|
return !1;
|
|
1488
1538
|
}
|
|
1489
|
-
|
|
1490
|
-
if (t.protocol === "about:") return !1;
|
|
1491
|
-
let n = t.hostname, r = (e) => n === e || n.endsWith(`.${e}`);
|
|
1492
|
-
return r("fkn.app") || r("fkn.dev") || r("sdbx.app");
|
|
1539
|
+
return t.protocol === "chrome-extension:" || t.protocol === "moz-extension:" ? !0 : t.protocol === "about:" ? !1 : me(t.hostname);
|
|
1493
1540
|
}, $ = (e) => {
|
|
1494
|
-
if (
|
|
1495
|
-
},
|
|
1541
|
+
if (Ot(e)) throw Error("attachFrame: refusing to target the extension's own pages or an FKN platform origin");
|
|
1542
|
+
}, kt = ({ src: e, domains: t, lockdown: n }) => {
|
|
1496
1543
|
if (!(!n || t.length) && e && e !== "about:blank") throw Error("attachFrame: lockdown needs domains when the frame already has a src; pass domains or load it via goto");
|
|
1497
|
-
},
|
|
1544
|
+
}, At = {
|
|
1498
1545
|
scope: "embed.iframe",
|
|
1499
1546
|
category: "embed",
|
|
1500
1547
|
severity: 0,
|
|
1501
1548
|
title: "Load another website inside this app",
|
|
1502
1549
|
description: "Lets the app embed external pages directly inside its own view."
|
|
1503
|
-
},
|
|
1550
|
+
}, jt = {
|
|
1504
1551
|
scope: "embed.open",
|
|
1505
1552
|
category: "embed",
|
|
1506
1553
|
severity: 0,
|
|
1507
1554
|
title: "Open a website inside this app",
|
|
1508
1555
|
description: "Lets the app navigate to another site without leaving its window."
|
|
1509
|
-
},
|
|
1510
|
-
let t =
|
|
1556
|
+
}, Mt = (e) => {
|
|
1557
|
+
let t = Et({
|
|
1511
1558
|
executor: e.executor,
|
|
1512
|
-
modules:
|
|
1559
|
+
modules: Dt,
|
|
1513
1560
|
gate: e.gate
|
|
1514
1561
|
}), n = (t, n = {}) => ($(t), e.goto(t, n)), r = () => e.url();
|
|
1515
1562
|
return {
|
|
@@ -1517,21 +1564,21 @@ var Oe = class {
|
|
|
1517
1564
|
goto: n,
|
|
1518
1565
|
url: r
|
|
1519
1566
|
};
|
|
1520
|
-
},
|
|
1567
|
+
}, Nt = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", Pt = async ({ iframe: e, domains: t = [], syncCookies: n = !0, lockdown: r = !1 }) => {
|
|
1521
1568
|
let i = crypto.randomUUID();
|
|
1522
|
-
if ($(e.src),
|
|
1569
|
+
if ($(e.src), kt({
|
|
1523
1570
|
src: e.src,
|
|
1524
1571
|
domains: t,
|
|
1525
1572
|
lockdown: r
|
|
1526
1573
|
}), await k(), !e.isConnected) throw Error("attachFrame: the iframe must be connected to the document before attaching");
|
|
1527
|
-
e.dispatchEvent(new CustomEvent(
|
|
1574
|
+
e.dispatchEvent(new CustomEvent(Nt, { detail: i }));
|
|
1528
1575
|
let { executeLocator: a, highlightLocator: o, ensureLocatorPermission: s, goto: c } = await A.attachFrame({
|
|
1529
1576
|
marker: i,
|
|
1530
1577
|
domains: t,
|
|
1531
1578
|
syncCookies: n,
|
|
1532
1579
|
lockdown: r
|
|
1533
1580
|
});
|
|
1534
|
-
return
|
|
1581
|
+
return Mt({
|
|
1535
1582
|
executor: {
|
|
1536
1583
|
execute: a,
|
|
1537
1584
|
highlight: o
|
|
@@ -1543,10 +1590,10 @@ var Oe = class {
|
|
|
1543
1590
|
}),
|
|
1544
1591
|
url: () => e.src
|
|
1545
1592
|
});
|
|
1546
|
-
},
|
|
1593
|
+
}, Ft = { request: (e) => A.requestPermissions(e.map((e) => ({
|
|
1547
1594
|
key: e.key,
|
|
1548
1595
|
scope: e.scope ?? "",
|
|
1549
1596
|
reason: e.reason
|
|
1550
1597
|
}))) };
|
|
1551
1598
|
//#endregion
|
|
1552
|
-
export {
|
|
1599
|
+
export { j as A, x as B, N as C, he as D, _e as E, D as F, w as H, oe as I, k as L, de as M, ue as N, M as O, E as P, T as R, Se as S, ge as T, u as U, S as V, Fe as _, Mt as a, Te as b, kt as c, Be as d, Pe as f, B as g, H as h, At as i, fe as j, ye as k, Ot as l, V as m, Nt as n, jt as o, Re as p, Pt as r, $ as s, Ft as t, Le as u, we as v, xe as w, Ce as x, Ee as y, C as z };
|