@fkn/lib 0.5.4 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/{background-Dk_vaVP1.cjs → background-CbU8TkWo.cjs} +1 -1
  2. package/{background-TtzKw6g0.js → background-DvQm1JHR.js} +8 -6
  3. package/cloud/dgram.cjs +1 -1
  4. package/cloud/dgram.d.ts +7 -3
  5. package/cloud/dgram.js +2 -2
  6. package/cloud/dns.d.ts +1 -1
  7. package/cloud/fs/promises.cjs +1 -1
  8. package/cloud/fs/promises.js +1 -1
  9. package/cloud/fs.cjs +1 -1
  10. package/cloud/fs.js +1 -1
  11. package/cloud/http.d.ts +2 -2
  12. package/cloud/net.d.ts +2 -2
  13. package/{cloud-BrY9dKwV.cjs → cloud-CWg9zCWm.cjs} +1 -1
  14. package/{cloud-C-LK4DWa.js → cloud-eLyGYzbA.js} +1 -1
  15. package/cloud.cjs +1 -1
  16. package/cloud.d.ts +3 -3
  17. package/cloud.js +3 -3
  18. package/connect-button-B_63ldmg.js +7 -0
  19. package/connect-button-poDZVmq2.cjs +1 -0
  20. package/dgram-B3WC4VdJ.cjs +1 -0
  21. package/{dgram-DS5_yPc5.js → dgram-c_Xk7ckJ.js} +27 -19
  22. package/dgram.cjs +1 -1
  23. package/dgram.d.ts +2 -2
  24. package/dgram.js +1 -1
  25. package/dns.d.ts +1 -1
  26. package/{extension-Dgz0UTy0.js → extension-BLkZiaAP.js} +65 -57
  27. package/extension-DAiRg5ny.cjs +1 -0
  28. package/extension.cjs +1 -1
  29. package/extension.d.ts +14 -7
  30. package/extension.js +3 -3
  31. package/fs/promises.cjs +1 -1
  32. package/fs/promises.d.ts +2 -0
  33. package/fs/promises.js +2 -2
  34. package/{fs-CQ-eWjXw.js → fs-BQs-x3_j.js} +1 -1
  35. package/{fs-Bc6087fG.cjs → fs-DI1maxcZ.cjs} +1 -1
  36. package/fs.cjs +1 -1
  37. package/fs.d.ts +4 -0
  38. package/fs.js +2 -2
  39. package/http.d.ts +2 -2
  40. package/index.cjs +1 -1
  41. package/index.d.ts +92 -30
  42. package/index.js +22 -34
  43. package/{locator-DxAsGV_o.js → locator-9s7jNIA2.js} +1 -1
  44. package/{locator-Cf7M3QKN.cjs → locator-CHfEe3Jv.cjs} +1 -1
  45. package/net.d.ts +2 -2
  46. package/{node-fs-Bd_UUx1m.js → node-fs-CdKPXPtW.js} +39 -16
  47. package/node-fs-DQn1TGJz.cjs +1 -0
  48. package/opfs/promises.cjs +1 -1
  49. package/opfs/promises.d.ts +22 -1
  50. package/opfs/promises.js +3 -3
  51. package/opfs.cjs +1 -1
  52. package/opfs.d.ts +58 -1
  53. package/opfs.js +31 -30
  54. package/package.json +6 -1
  55. package/react.cjs +1 -0
  56. package/react.d.ts +12 -0
  57. package/react.js +18 -0
  58. package/dgram-C5rGcbej.cjs +0 -1
  59. package/extension-9Uv_0HdS.cjs +0 -1
  60. package/favicon.svg +0 -5
  61. package/node-fs-lrlD_zqB.cjs +0 -1
@@ -1,5 +1,5 @@
1
1
  import { n as e } from "./chunk-CPXzm0be.js";
2
- import { d as t, f as n, i as r, l as i, m as a, p as o, r as s, t as c, u as l } from "./locator-DxAsGV_o.js";
2
+ import { d as t, f as n, i as r, l as i, m as a, p as o, r as s, t as c, u as l } from "./locator-9s7jNIA2.js";
3
3
  import { t as u } from "./api-ByfayMm1.js";
4
4
  import { n as d, t as f } from "./proxy-wiZN4eTR.js";
5
5
  import { available as p, fetch as m } from "./desktop.js";
@@ -11,7 +11,7 @@ typeof document < "u" && document.addEventListener(_, () => {
11
11
  });
12
12
  var b = () => typeof document > "u" ? !1 : document.documentElement.dataset[v] === "true", x = null, S = (e) => {
13
13
  x = e;
14
- }, C = 150, w = (e = 1e3) => new Promise((t, n) => {
14
+ }, ee = 150, C = (e = 1e3) => new Promise((t, n) => {
15
15
  if (b()) return t();
16
16
  let r, i = (e) => {
17
17
  clearTimeout(r), s.disconnect(), document.removeEventListener("readystatechange", c), e();
@@ -19,7 +19,7 @@ var b = () => typeof document > "u" ? !1 : document.documentElement.dataset[v] =
19
19
  if (x && (await x().catch(() => {}), b())) return t();
20
20
  n(/* @__PURE__ */ Error("The FKN WebExtension is not installed, enabled or not exposed on this page."));
21
21
  }), o = () => {
22
- clearTimeout(r), r = setTimeout(() => b() ? i(t) : a(), C);
22
+ clearTimeout(r), r = setTimeout(() => b() ? i(t) : a(), ee);
23
23
  }, s = new MutationObserver(() => {
24
24
  b() && i(t);
25
25
  }), c = () => {
@@ -30,39 +30,39 @@ var b = () => typeof document > "u" ? !1 : document.documentElement.dataset[v] =
30
30
  attributeFilter: ["data-fkn-extension"]
31
31
  }), document.addEventListener("readystatechange", c), document.readyState === "complete") return o();
32
32
  b() && i(t);
33
- }), T, E = new Proxy({}, { get: (e, t) => async (...e) => {
34
- await w(), T ??= g({}, {
33
+ }), w, T = new Proxy({}, { get: (e, t) => async (...e) => {
34
+ await C(), w ??= g({}, {
35
35
  transport: window,
36
36
  revivableModules: i
37
37
  });
38
- let n = (await T)[t];
38
+ let n = (await w)[t];
39
39
  return n(...e);
40
- } }), D = {
40
+ } }), E = {
41
41
  scope: "network.fetch",
42
42
  category: "network",
43
43
  severity: 0,
44
44
  title: "Fetch data from other sites",
45
45
  description: "Lets the app download public data from other websites directly, past the usual cross-origin limits."
46
- }, O = {
46
+ }, D = {
47
47
  scope: "network.fetchCredentialed",
48
48
  category: "network",
49
49
  severity: 3,
50
50
  unsafe: !0,
51
51
  title: "Fetch from other sites, signed in as you",
52
52
  description: "Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see."
53
- }, k = {
53
+ }, O = {
54
54
  scope: "network.fetchLocal",
55
55
  category: "network",
56
56
  severity: 3,
57
57
  unsafe: !0,
58
58
  title: "Access devices on your local network",
59
59
  description: "Lets the app reach devices and services on your home or work network, which websites normally cannot touch."
60
- }, A = (e) => {
60
+ }, k = (e) => {
61
61
  let t = e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);
62
62
  if (!t) return !1;
63
63
  let [n, r] = [Number(t[1]), Number(t[2])];
64
64
  return n === 10 || n === 127 || n === 0 || n === 169 && r === 254 || n === 172 && r >= 16 && r <= 31 || n === 192 && r === 168;
65
- }, j = (e) => {
65
+ }, A = (e) => {
66
66
  let t;
67
67
  try {
68
68
  t = new URL(e);
@@ -70,8 +70,8 @@ var b = () => typeof document > "u" ? !1 : document.documentElement.dataset[v] =
70
70
  return !1;
71
71
  }
72
72
  let n = t.hostname.replace(/^\[|\]$/g, "").toLowerCase().replace(/\.$/, "");
73
- 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:") : A(n);
74
- }, M = ["fkn.app", "fkn.dev"], N = (e) => {
73
+ 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:") : k(n);
74
+ }, j = ["fkn.app", "fkn.dev"], M = (e) => {
75
75
  let t;
76
76
  try {
77
77
  t = new URL(e);
@@ -80,46 +80,46 @@ var b = () => typeof document > "u" ? !1 : document.documentElement.dataset[v] =
80
80
  }
81
81
  if (t.protocol === "chrome-extension:" || t.protocol === "moz-extension:") return !0;
82
82
  let n = t.hostname;
83
- return M.some((e) => n === e || n.endsWith(`.${e}`));
84
- }, P = (e) => {
85
- if (N(e)) throw Error("fetch: refusing to target the extension's own pages or FKN platform domains");
86
- }, F = ["origin", "referer"], I = (e) => {
83
+ return j.some((e) => n === e || n.endsWith(`.${e}`));
84
+ }, N = (e) => {
85
+ if (M(e)) throw Error("fetch: refusing to target the extension's own pages or FKN platform domains");
86
+ }, P = ["origin", "referer"], F = (e) => {
87
87
  if (!e?.headers) return;
88
- let t = new Headers(e.headers), n = F.map((e) => {
88
+ let t = new Headers(e.headers), n = P.map((e) => {
89
89
  let n = t.get(e);
90
90
  return n === null ? void 0 : [e, n];
91
91
  }).filter((e) => e !== void 0);
92
92
  return n.length ? n : void 0;
93
- }, L = async (e, t) => {
93
+ }, I = async (e, t) => {
94
94
  let n = new Request(e, t);
95
- P(n.url);
95
+ N(n.url);
96
96
  let r = n.body ? await n.arrayBuffer() : null;
97
- return E.proxyFetch({
97
+ return T.proxyFetch({
98
98
  url: n.url,
99
99
  method: n.method,
100
100
  headers: [...n.headers],
101
101
  body: r,
102
102
  credentials: t?.credentials === "include" ? "include" : "omit",
103
103
  redirect: n.redirect,
104
- unsafeHeaders: I(t),
104
+ unsafeHeaders: F(t),
105
105
  reason: t?.reason,
106
106
  signal: t?.signal ?? void 0
107
107
  });
108
- }, R = {
108
+ }, L = {
109
109
  scope: "network.readCookie",
110
110
  category: "network",
111
111
  severity: 3,
112
112
  unsafe: !0,
113
113
  title: "Read a site’s cookie",
114
114
  description: "Lets the app read a named cookie from another site, which can include the login token only that site should see."
115
- }, z = { get: (e) => E.getCookie(e) }, B = {
115
+ }, R = { get: (e) => T.getCookie(e) }, z = {
116
116
  scope: "network.modifyRequestHeaders",
117
117
  category: "network",
118
118
  severity: 2,
119
119
  unsafe: !0,
120
120
  title: "Rewrite request headers to other sites",
121
121
  description: "Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites."
122
- }, V = (e) => E.setRequestHeaderRule(e), H = (e) => E.removeRequestHeaderRule({ ruleId: e });
122
+ }, B = (e) => T.setRequestHeaderRule(e), V = (e) => T.removeRequestHeaderRule({ ruleId: e });
123
123
  (() => {
124
124
  let e = {}, t = [...c.selectorModules, ...r.selectorModules];
125
125
  for (let n of t) n.render && !(n.type in e) && (e[n.type] = n.render);
@@ -127,7 +127,7 @@ var b = () => typeof document > "u" ? !1 : document.documentElement.dataset[v] =
127
127
  })();
128
128
  //#endregion
129
129
  //#region node_modules/@mfkn/web-extension/lib/lib/frame.js
130
- var U = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", W = (e) => {
130
+ var H = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", U = (e) => {
131
131
  if (!e || e === "about:blank") return !1;
132
132
  let t;
133
133
  try {
@@ -139,8 +139,10 @@ var U = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", W = (e) => {
139
139
  if (t.protocol === "about:") return !1;
140
140
  let n = t.hostname;
141
141
  return n === "fkn.app" || n.endsWith(".fkn.app");
142
- }, G = (e) => {
143
- if (W(e)) throw Error("attachFrame: refusing to target the extension's own pages or fkn.app");
142
+ }, W = (e) => {
143
+ if (U(e)) throw Error("attachFrame: refusing to target the extension's own pages or fkn.app");
144
+ }, G = ({ src: e, domains: t, lockdown: n }) => {
145
+ 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");
144
146
  }, K = {
145
147
  scope: "embed.iframe",
146
148
  category: "embed",
@@ -156,19 +158,24 @@ var U = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", W = (e) => {
156
158
  }, J = {
157
159
  scope: "embed.evaluate",
158
160
  category: "embed",
159
- severity: 0,
160
- title: "Run app code inside an embedded frame",
161
- description: "Lets the app execute its own code inside a page it embedded, to read back a computed result."
161
+ severity: 3,
162
+ unsafe: !0,
163
+ title: "Run app code inside an embedded site",
164
+ description: "Lets the app run its own code inside a page it embedded, where it can read and act on that site with your logged-in session."
162
165
  }, Y = async ({ iframe: e, domains: t = [], syncCookies: n = !0, lockdown: r = !1 }) => {
163
166
  let i = crypto.randomUUID();
164
- if (G(e.src), await w(), !e.isConnected) throw Error("attachFrame: the iframe must be connected to the document before attaching");
165
- e.dispatchEvent(new CustomEvent(U, { detail: i }));
166
- let { executeLocator: a, ensureLocatorPermission: o, goto: c, evaluate: l } = await E.attachFrame({
167
+ if (W(e.src), G({
168
+ src: e.src,
169
+ domains: t,
170
+ lockdown: r
171
+ }), await C(), !e.isConnected) throw Error("attachFrame: the iframe must be connected to the document before attaching");
172
+ e.dispatchEvent(new CustomEvent(H, { detail: i }));
173
+ let { executeLocator: a, ensureLocatorPermission: o, goto: c, evaluate: l } = await T.attachFrame({
167
174
  marker: i,
168
175
  domains: t,
169
176
  syncCookies: n,
170
177
  lockdown: r
171
- }), u = s(a, o), d = (e, t = {}) => (G(e), c({
178
+ }), u = s(a, o), d = (e, t = {}) => (W(e), c({
172
179
  url: e,
173
180
  ...t
174
181
  })), f = ((e, t) => l(e, t)), p = () => e.src;
@@ -178,7 +185,7 @@ var U = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", W = (e) => {
178
185
  evaluate: f,
179
186
  url: p
180
187
  };
181
- }, X = { request: (e) => E.requestPermissions(e.map((e) => ({
188
+ }, X = { request: (e) => T.requestPermissions(e.map((e) => ({
182
189
  key: e.key,
183
190
  scope: e.scope ?? "",
184
191
  reason: e.reason
@@ -197,49 +204,50 @@ S(() => (Q ||= Z().then(() => void 0).finally(() => {
197
204
  }), Q));
198
205
  //#endregion
199
206
  //#region src/lib/auto.ts
200
- var $ = () => typeof document < "u" && b(), ee = async (e, t) => {
207
+ var $ = () => typeof document < "u" && b(), te = async (e, t) => {
201
208
  if (d(e), t?.credentials === "include") {
202
209
  if (typeof document > "u") throw Error("fetch with credentials needs the FKN extension, which only exists in window realms");
203
- return L(e, t);
210
+ return I(e, t);
204
211
  }
205
- return $() ? L(e, {
212
+ return $() ? I(e, {
206
213
  ...t,
207
214
  credentials: "omit"
208
215
  }) : p() ? m(e, t) : f(e, t);
209
- }, te = /* @__PURE__ */ e({
210
- ATTACH_FRAME_EVENT_KEY: () => U,
211
- assertAttachableFrameUrl: () => G,
212
- assertFetchableUrl: () => P,
216
+ }, ne = /* @__PURE__ */ e({
217
+ ATTACH_FRAME_EVENT_KEY: () => H,
218
+ assertAttachableFrameUrl: () => W,
219
+ assertFetchableUrl: () => N,
220
+ assertLockdownApplicable: () => G,
213
221
  attachFrame: () => Y,
214
222
  attachFramePermission: () => K,
215
223
  available: () => $,
216
224
  box: () => l,
217
- cookies: () => z,
225
+ cookies: () => R,
218
226
  createVideoElementHandle: () => t,
219
227
  evaluatePermission: () => J,
220
228
  events: () => y,
221
229
  extension: () => y,
222
- fetch: () => L,
223
- fetchCredentialedPermission: () => O,
224
- fetchLocalPermission: () => k,
225
- fetchPermission: () => D,
230
+ fetch: () => I,
231
+ fetchCredentialedPermission: () => D,
232
+ fetchLocalPermission: () => O,
233
+ fetchPermission: () => E,
226
234
  gotoPermission: () => q,
227
235
  handleRevivableModules: () => i,
228
- isBlockedFetchUrl: () => N,
229
- isBlockedFrameUrl: () => W,
236
+ isBlockedFetchUrl: () => M,
237
+ isBlockedFrameUrl: () => U,
230
238
  isExtensionExposed: () => b,
231
- isLocalNetworkUrl: () => j,
239
+ isLocalNetworkUrl: () => A,
232
240
  isType: () => n,
233
- modifyRequestHeadersPermission: () => B,
241
+ modifyRequestHeadersPermission: () => z,
234
242
  permissions: () => X,
235
243
  promptInstall: () => Z,
236
- readCookiePermission: () => R,
237
- removeRequestHeaderRule: () => H,
244
+ readCookiePermission: () => L,
245
+ removeRequestHeaderRule: () => V,
238
246
  revive: () => o,
239
247
  setMissingExtensionHandler: () => S,
240
- setRequestHeaderRule: () => V,
248
+ setRequestHeaderRule: () => B,
241
249
  type: () => a,
242
- waitForExtensionExposure: () => w
250
+ waitForExtensionExposure: () => C
243
251
  });
244
252
  //#endregion
245
- export { N as C, S as D, b as E, w as O, D as S, y as T, R as _, X as a, O as b, Y as c, q as d, W as f, z as g, V as h, Z as i, K as l, H as m, ee as n, U as o, B as p, $ as r, G as s, te as t, J as u, P as v, j as w, k as x, L as y };
253
+ export { E as C, b as D, y as E, S as O, O as S, A as T, R as _, X as a, I as b, G as c, J as d, q as f, B as g, V as h, Z as i, C as k, Y as l, z as m, te as n, H as o, U as p, $ as r, W as s, ne as t, K as u, L as v, M as w, D as x, N as y };
@@ -0,0 +1 @@
1
+ const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./locator-CHfEe3Jv.cjs`),n=require(`./api-CDb2pv7C.cjs`),r=require(`./proxy-A9UvWUaF.cjs`),i=require(`./desktop.cjs`);let a=require(`osra`);var o=`FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY`,s=`fknExtension`,c=(0,a.createTypedEventTarget)();typeof document<`u`&&document.addEventListener(o,()=>{c.dispatchEvent(new CustomEvent(`statuschange`,{detail:{enabled:l()}}))});var l=()=>typeof document>`u`?!1:document.documentElement.dataset[s]===`true`,u=null,d=e=>{u=e},f=150,p=(e=1e3)=>new Promise((t,n)=>{if(l())return t();let r,i=e=>{clearTimeout(r),s.disconnect(),document.removeEventListener(`readystatechange`,c),e()},a=()=>i(async()=>{if(u&&(await u().catch(()=>{}),l()))return t();n(Error(`The FKN WebExtension is not installed, enabled or not exposed on this page.`))}),o=()=>{clearTimeout(r),r=setTimeout(()=>l()?i(t):a(),f)},s=new MutationObserver(()=>{l()&&i(t)}),c=()=>{document.readyState===`complete`&&!l()&&o()};if(r=setTimeout(a,e),s.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-fkn-extension`]}),document.addEventListener(`readystatechange`,c),document.readyState===`complete`)return o();l()&&i(t)}),m,h=new Proxy({},{get:(e,n)=>async(...e)=>{await p(),m??=(0,a.expose)({},{transport:window,revivableModules:t.l});let r=(await m)[n];return r(...e)}}),g={scope:`network.fetch`,category:`network`,severity:0,title:`Fetch data from other sites`,description:`Lets the app download public data from other websites directly, past the usual cross-origin limits.`},_={scope:`network.fetchCredentialed`,category:`network`,severity:3,unsafe:!0,title:`Fetch from other sites, signed in as you`,description:`Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see.`},v={scope:`network.fetchLocal`,category:`network`,severity:3,unsafe:!0,title:`Access devices on your local network`,description:`Lets the app reach devices and services on your home or work network, which websites normally cannot touch.`},y=e=>{let t=e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);if(!t)return!1;let[n,r]=[Number(t[1]),Number(t[2])];return n===10||n===127||n===0||n===169&&r===254||n===172&&r>=16&&r<=31||n===192&&r===168},b=e=>{let t;try{t=new URL(e)}catch{return!1}let n=t.hostname.replace(/^\[|\]$/g,``).toLowerCase().replace(/\.$/,``);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:`):y(n)},x=[`fkn.app`,`fkn.dev`],S=e=>{let t;try{t=new URL(e)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;let n=t.hostname;return x.some(e=>n===e||n.endsWith(`.${e}`))},C=e=>{if(S(e))throw Error(`fetch: refusing to target the extension's own pages or FKN platform domains`)},w=[`origin`,`referer`],T=e=>{if(!e?.headers)return;let t=new Headers(e.headers),n=w.map(e=>{let n=t.get(e);return n===null?void 0:[e,n]}).filter(e=>e!==void 0);return n.length?n:void 0},E=async(e,t)=>{let n=new Request(e,t);C(n.url);let r=n.body?await n.arrayBuffer():null;return h.proxyFetch({url:n.url,method:n.method,headers:[...n.headers],body:r,credentials:t?.credentials===`include`?`include`:`omit`,redirect:n.redirect,unsafeHeaders:T(t),reason:t?.reason,signal:t?.signal??void 0})},D={scope:`network.readCookie`,category:`network`,severity:3,unsafe:!0,title:`Read a site’s cookie`,description:`Lets the app read a named cookie from another site, which can include the login token only that site should see.`},O={get:e=>h.getCookie(e)},k={scope:`network.modifyRequestHeaders`,category:`network`,severity:2,unsafe:!0,title:`Rewrite request headers to other sites`,description:`Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites.`},A=e=>h.setRequestHeaderRule(e),j=e=>h.removeRequestHeaderRule({ruleId:e});(()=>{let e={},n=[...t.t.selectorModules,...t.i.selectorModules];for(let t of n)t.render&&!(t.type in e)&&(e[t.type]=t.render);return e})();var M=`FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY`,N=e=>{if(!e||e===`about:blank`)return!1;let t;try{t=new URL(e,location.href)}catch{return!1}if(t.protocol===`chrome-extension:`||t.protocol===`moz-extension:`)return!0;if(t.protocol===`about:`)return!1;let n=t.hostname;return n===`fkn.app`||n.endsWith(`.fkn.app`)},P=e=>{if(N(e))throw Error(`attachFrame: refusing to target the extension's own pages or fkn.app`)},F=({src:e,domains:t,lockdown:n})=>{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`)},I={scope:`embed.iframe`,category:`embed`,severity:0,title:`Load another website inside this app`,description:`Lets the app embed external pages directly inside its own view.`},L={scope:`embed.open`,category:`embed`,severity:0,title:`Open a website inside this app`,description:`Lets the app navigate to another site without leaving its window.`},R={scope:`embed.evaluate`,category:`embed`,severity:3,unsafe:!0,title:`Run app code inside an embedded site`,description:`Lets the app run its own code inside a page it embedded, where it can read and act on that site with your logged-in session.`},z=async({iframe:e,domains:n=[],syncCookies:r=!0,lockdown:i=!1})=>{let a=crypto.randomUUID();if(P(e.src),F({src:e.src,domains:n,lockdown:i}),await p(),!e.isConnected)throw Error(`attachFrame: the iframe must be connected to the document before attaching`);e.dispatchEvent(new CustomEvent(M,{detail:a}));let{executeLocator:o,ensureLocatorPermission:s,goto:c,evaluate:l}=await h.attachFrame({marker:a,domains:n,syncCookies:r,lockdown:i}),u=t.r(o,s),d=(e,t={})=>(P(e),c({url:e,...t})),f=((e,t)=>l(e,t)),m=()=>e.src;return{...u,goto:d,evaluate:f,url:m}},B={request:e=>h.requestPermissions(e.map(e=>({key:e.key,scope:e.scope??``,reason:e.reason})))},V=async e=>{if(typeof window>`u`)return!1;if(l())return!0;let t=await n.t,r=null,i=new Promise(e=>{r=()=>{l()&&e(!0)},c.addEventListener(`statuschange`,r)}),a=t.installPrompt.show(e).then(()=>!1),o=await Promise.race([i,a]);return r&&c.removeEventListener(`statuschange`,r),await t.installPrompt.hide().catch(()=>{}),o},H=null;d(()=>(H||=V().then(()=>void 0).finally(()=>{H=null}),H));var U=()=>typeof document<`u`&&l(),W=async(e,t)=>{if(r.n(e),t?.credentials===`include`){if(typeof document>`u`)throw Error(`fetch with credentials needs the FKN extension, which only exists in window realms`);return E(e,t)}return U()?E(e,{...t,credentials:`omit`}):i.available()?i.fetch(e,t):r.t(e,t)},G=e.n({ATTACH_FRAME_EVENT_KEY:()=>M,assertAttachableFrameUrl:()=>P,assertFetchableUrl:()=>C,assertLockdownApplicable:()=>F,attachFrame:()=>z,attachFramePermission:()=>I,available:()=>U,box:()=>t.u,cookies:()=>O,createVideoElementHandle:()=>t.d,evaluatePermission:()=>R,events:()=>c,extension:()=>c,fetch:()=>E,fetchCredentialedPermission:()=>_,fetchLocalPermission:()=>v,fetchPermission:()=>g,gotoPermission:()=>L,handleRevivableModules:()=>t.l,isBlockedFetchUrl:()=>S,isBlockedFrameUrl:()=>N,isExtensionExposed:()=>l,isLocalNetworkUrl:()=>b,isType:()=>t.f,modifyRequestHeadersPermission:()=>k,permissions:()=>B,promptInstall:()=>V,readCookiePermission:()=>D,removeRequestHeaderRule:()=>j,revive:()=>t.p,setMissingExtensionHandler:()=>d,setRequestHeaderRule:()=>A,type:()=>t.m,waitForExtensionExposure:()=>p});Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return C}});
package/extension.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./locator-Cf7M3QKN.cjs`),t=require(`./extension-9Uv_0HdS.cjs`);require(`./api-CDb2pv7C.cjs`),require(`./proxy-A9UvWUaF.cjs`),exports.ATTACH_FRAME_EVENT_KEY=t.o,exports.assertAttachableFrameUrl=t.s,exports.assertFetchableUrl=t.v,exports.attachFrame=t.c,exports.attachFramePermission=t.l,exports.available=t.r,exports.box=e.u,exports.cookies=t.g,exports.createVideoElementHandle=e.d,exports.evaluatePermission=t.u,exports.events=t.T,exports.extension=t.T,exports.fetch=t.y,exports.fetchCredentialedPermission=t.b,exports.fetchLocalPermission=t.x,exports.fetchPermission=t.S,exports.gotoPermission=t.d,exports.handleRevivableModules=e.l,exports.isBlockedFetchUrl=t.C,exports.isBlockedFrameUrl=t.f,exports.isExtensionExposed=t.E,exports.isLocalNetworkUrl=t.w,exports.isType=e.f,exports.modifyRequestHeadersPermission=t.p,exports.permissions=t.a,exports.promptInstall=t.i,exports.readCookiePermission=t._,exports.removeRequestHeaderRule=t.m,exports.revive=e.p,exports.setMissingExtensionHandler=t.D,exports.setRequestHeaderRule=t.h,exports.type=e.m,exports.waitForExtensionExposure=t.O;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./locator-CHfEe3Jv.cjs`),t=require(`./extension-DAiRg5ny.cjs`);require(`./api-CDb2pv7C.cjs`),require(`./proxy-A9UvWUaF.cjs`),exports.ATTACH_FRAME_EVENT_KEY=t.o,exports.assertAttachableFrameUrl=t.s,exports.assertFetchableUrl=t.y,exports.assertLockdownApplicable=t.c,exports.attachFrame=t.l,exports.attachFramePermission=t.u,exports.available=t.r,exports.box=e.u,exports.cookies=t._,exports.createVideoElementHandle=e.d,exports.evaluatePermission=t.d,exports.events=t.E,exports.extension=t.E,exports.fetch=t.b,exports.fetchCredentialedPermission=t.x,exports.fetchLocalPermission=t.S,exports.fetchPermission=t.C,exports.gotoPermission=t.f,exports.handleRevivableModules=e.l,exports.isBlockedFetchUrl=t.w,exports.isBlockedFrameUrl=t.p,exports.isExtensionExposed=t.D,exports.isLocalNetworkUrl=t.T,exports.isType=e.f,exports.modifyRequestHeadersPermission=t.m,exports.permissions=t.a,exports.promptInstall=t.i,exports.readCookiePermission=t.v,exports.removeRequestHeaderRule=t.h,exports.revive=e.p,exports.setMissingExtensionHandler=t.O,exports.setRequestHeaderRule=t.g,exports.type=e.m,exports.waitForExtensionExposure=t.k;
package/extension.d.ts CHANGED
@@ -552,6 +552,11 @@ type LocatorChain<L extends LocatorKindModule, Self> = {
552
552
  declare const ATTACH_FRAME_EVENT_KEY = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY";
553
553
  declare const isBlockedFrameUrl: (raw: string) => boolean;
554
554
  declare const assertAttachableFrameUrl: (raw: string) => void;
555
+ declare const assertLockdownApplicable: ({ src, domains, lockdown }: {
556
+ src: string;
557
+ domains: string[];
558
+ lockdown: boolean;
559
+ }) => void;
555
560
  declare const attachFramePermission: {
556
561
  readonly scope: 'embed.iframe';
557
562
  readonly category: 'embed';
@@ -569,9 +574,10 @@ declare const gotoPermission: {
569
574
  declare const evaluatePermission: {
570
575
  readonly scope: 'embed.evaluate';
571
576
  readonly category: 'embed';
572
- readonly severity: 0;
573
- readonly title: 'Run app code inside an embedded frame';
574
- readonly description: "Lets the app execute its own code inside a page it embedded, to read back a computed result.";
577
+ readonly severity: 3;
578
+ readonly unsafe: true;
579
+ readonly title: 'Run app code inside an embedded site';
580
+ readonly description: 'Lets the app run its own code inside a page it embedded, where it can read and act on that site with your logged-in session.';
575
581
  };
576
582
  type GotoOptions = {
577
583
  waitUntil?: 'documentstart' | 'load';
@@ -672,9 +678,10 @@ declare const PERMISSIONS: readonly [{
672
678
  }, {
673
679
  readonly scope: 'embed.evaluate';
674
680
  readonly category: 'embed';
675
- readonly severity: 0;
676
- readonly title: 'Run app code inside an embedded frame';
677
- readonly description: "Lets the app execute its own code inside a page it embedded, to read back a computed result.";
681
+ readonly severity: 3;
682
+ readonly unsafe: true;
683
+ readonly title: 'Run app code inside an embedded site';
684
+ readonly description: 'Lets the app run its own code inside a page it embedded, where it can read and act on that site with your logged-in session.';
678
685
  }, {
679
686
  readonly scope: 'network.fetch';
680
687
  readonly category: 'network';
@@ -848,5 +855,5 @@ declare const promptInstall: (reason?: string) => Promise<boolean>;
848
855
 
849
856
  declare const isExtensionAvailable: () => boolean;
850
857
 
851
- export { ATTACH_FRAME_EVENT_KEY, assertAttachableFrameUrl, assertFetchableUrl, attachFrame, attachFramePermission, isExtensionAvailable as available, box, cookies, createVideoElementHandle, evaluatePermission, extension as events, extension, fetch, fetchCredentialedPermission, fetchLocalPermission, fetchPermission, gotoPermission, handleRevivableModules, isBlockedFetchUrl, isBlockedFrameUrl, isExtensionExposed, isLocalNetworkUrl, isType, modifyRequestHeadersPermission, permissions, promptInstall, readCookiePermission, removeRequestHeaderRule, revive, setMissingExtensionHandler, setRequestHeaderRule, type, waitForExtensionExposure };
858
+ export { ATTACH_FRAME_EVENT_KEY, assertAttachableFrameUrl, assertFetchableUrl, assertLockdownApplicable, attachFrame, attachFramePermission, isExtensionAvailable as available, box, cookies, createVideoElementHandle, evaluatePermission, extension as events, extension, fetch, fetchCredentialedPermission, fetchLocalPermission, fetchPermission, gotoPermission, handleRevivableModules, isBlockedFetchUrl, isBlockedFrameUrl, isExtensionExposed, isLocalNetworkUrl, isType, modifyRequestHeadersPermission, permissions, promptInstall, readCookiePermission, removeRequestHeaderRule, revive, setMissingExtensionHandler, setRequestHeaderRule, type, waitForExtensionExposure };
852
859
  export type { AttachFrameOptions, BoxedVideoElement, CookieDetails, FetchInit, Frame, GotoOptions, HeaderOperation, PermissionGrant, PermissionRequest, ProxyFetchRequest, RemoteVideoElement, RequestHeaderRule, SiteCookie, VideoElementState };
package/extension.js CHANGED
@@ -1,5 +1,5 @@
1
- import { d as e, f as t, l as n, m as r, p as i, u as a } from "./locator-DxAsGV_o.js";
2
- import { C as o, D as s, E as c, O as l, S as u, T as d, _ as f, a as p, b as m, c as h, d as g, f as _, g as v, h as y, i as b, l as x, m as S, o as C, p as w, r as T, s as E, u as D, v as O, w as k, x as A, y as j } from "./extension-Dgz0UTy0.js";
1
+ import { d as e, f as t, l as n, m as r, p as i, u as a } from "./locator-9s7jNIA2.js";
2
+ import { C as o, D as s, E as c, O as l, S as u, T as d, _ as f, a as p, b as m, c as h, d as g, f as _, g as v, h as y, i as b, k as x, l as S, m as C, o as w, p as T, r as E, s as D, u as O, v as k, w as A, x as j, y as M } from "./extension-BLkZiaAP.js";
3
3
  import "./api-ByfayMm1.js";
4
4
  import "./proxy-wiZN4eTR.js";
5
- export { C as ATTACH_FRAME_EVENT_KEY, E as assertAttachableFrameUrl, O as assertFetchableUrl, h as attachFrame, x as attachFramePermission, T as available, a as box, v as cookies, e as createVideoElementHandle, D as evaluatePermission, d as events, d as extension, j as fetch, m as fetchCredentialedPermission, A as fetchLocalPermission, u as fetchPermission, g as gotoPermission, n as handleRevivableModules, o as isBlockedFetchUrl, _ as isBlockedFrameUrl, c as isExtensionExposed, k as isLocalNetworkUrl, t as isType, w as modifyRequestHeadersPermission, p as permissions, b as promptInstall, f as readCookiePermission, S as removeRequestHeaderRule, i as revive, s as setMissingExtensionHandler, y as setRequestHeaderRule, r as type, l as waitForExtensionExposure };
5
+ export { w as ATTACH_FRAME_EVENT_KEY, D as assertAttachableFrameUrl, M as assertFetchableUrl, h as assertLockdownApplicable, S as attachFrame, O as attachFramePermission, E as available, a as box, f as cookies, e as createVideoElementHandle, g as evaluatePermission, c as events, c as extension, m as fetch, j as fetchCredentialedPermission, u as fetchLocalPermission, o as fetchPermission, _ as gotoPermission, n as handleRevivableModules, A as isBlockedFetchUrl, T as isBlockedFrameUrl, s as isExtensionExposed, d as isLocalNetworkUrl, t as isType, C as modifyRequestHeadersPermission, p as permissions, b as promptInstall, k as readCookiePermission, y as removeRequestHeaderRule, i as revive, l as setMissingExtensionHandler, v as setRequestHeaderRule, r as type, x as waitForExtensionExposure };
package/fs/promises.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../api-CDb2pv7C.cjs`),require(`../node-fs-lrlD_zqB.cjs`),require(`../storage-C2-_-bTO.cjs`);const e=require(`../fs-Bc6087fG.cjs`);var{readFile:t,writeFile:n,appendFile:r,unlink:i,rename:a,readdir:o,mkdir:s,rm:c,rmdir:l,stat:u,lstat:d,access:f}=e.p,p=e.p;exports.access=f,exports.appendFile=r,exports.default=p,exports.lstat=d,exports.mkdir=s,exports.readFile=t,exports.readdir=o,exports.rename=a,exports.rm=c,exports.rmdir=l,exports.stat=u,exports.unlink=i,exports.writeFile=n;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../api-CDb2pv7C.cjs`),require(`../node-fs-DQn1TGJz.cjs`),require(`../storage-C2-_-bTO.cjs`);const e=require(`../fs-DI1maxcZ.cjs`);var{readFile:t,writeFile:n,appendFile:r,unlink:i,rename:a,readdir:o,mkdir:s,rm:c,rmdir:l,stat:u,lstat:d,access:f}=e.p,p=e.p;exports.access=f,exports.appendFile=r,exports.default=p,exports.lstat=d,exports.mkdir=s,exports.readFile=t,exports.readdir=o,exports.rename=a,exports.rm=c,exports.rmdir=l,exports.stat=u,exports.unlink=i,exports.writeFile=n;
package/fs/promises.d.ts CHANGED
@@ -36,6 +36,7 @@ declare const promises: {
36
36
  mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
37
37
  rm: (path: node_fs.PathLike, options?: {
38
38
  recursive?: boolean;
39
+ force?: boolean;
39
40
  }) => Promise<void>;
40
41
  rmdir: (path: node_fs.PathLike, options?: {
41
42
  recursive?: boolean;
@@ -54,6 +55,7 @@ declare const readdir: (path: node_fs.PathLike) => Promise<string[]>;
54
55
  declare const mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
55
56
  declare const rm: (path: node_fs.PathLike, options?: {
56
57
  recursive?: boolean;
58
+ force?: boolean;
57
59
  }) => Promise<void>;
58
60
  declare const rmdir: (path: node_fs.PathLike, options?: {
59
61
  recursive?: boolean;
package/fs/promises.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "../api-ByfayMm1.js";
2
- import "../node-fs-Bd_UUx1m.js";
2
+ import "../node-fs-CdKPXPtW.js";
3
3
  import "../storage-BcJfnkm3.js";
4
- import { p as e } from "../fs-CQ-eWjXw.js";
4
+ import { p as e } from "../fs-BQs-x3_j.js";
5
5
  //#region src/lib/fs/promises.ts
6
6
  var { readFile: t, writeFile: n, appendFile: r, unlink: i, rename: a, readdir: o, mkdir: s, rm: c, rmdir: l, stat: u, lstat: d, access: f } = e, p = e;
7
7
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { n as e } from "./chunk-CPXzm0be.js";
2
- import { t } from "./node-fs-Bd_UUx1m.js";
2
+ import { t } from "./node-fs-CdKPXPtW.js";
3
3
  import { a as n, i as r, n as i, s as a, t as o } from "./storage-BcJfnkm3.js";
4
4
  import { a as s, i as c, n as l, o as u, t as d } from "./opfs-BfcYLPGb.js";
5
5
  //#region src/lib/fs/hybrid.ts
@@ -1 +1 @@
1
- const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./node-fs-lrlD_zqB.cjs`),n=require(`./storage-C2-_-bTO.cjs`),r=require(`./opfs-Dsi4FkJU.cjs`);var i=e.n({available:()=>c,list:()=>l,pull:()=>p,readFile:()=>u,remove:()=>f,writeFile:()=>d}),a,o=async()=>await(a??=r.t().catch(()=>!1))?!0:(a=void 0,!1),s=()=>n.t().catch(()=>!1),c=async()=>await o()||await s(),l=async()=>{let[e,t]=await Promise.all([o().then(e=>e?r.n():[]).catch(()=>[]),s().then(e=>e?n.n():[]).catch(()=>[])]),i=new Map,a=e=>{let t=Date.parse(e.updatedAt??``);return Number.isFinite(t)?t:0},c=e=>{let t=i.get(e.path);(!t||a(e)>=a(t))&&i.set(e.path,e)};for(let t of e)c(t);for(let e of t)c(e);return[...i.values()]},u=async e=>{if(await o())try{return await r.i(e)}catch(e){if(e?.name!==`NotFoundError`)throw e}let t=await n.i(e);return await o()&&r.o(e,t).catch(()=>{}),t},d=async(e,t,i)=>{let a=t instanceof Blob?t:new Blob([t],i?.contentType?{type:i.contentType}:void 0);if(await o()){await r.o(e,a,i),await s()&&n.s(e,a,i).catch(e=>console.warn(`fs: cloud replicate failed`,e));return}if(await s())return n.s(e,a,i);throw Error(`fs: no storage backend available`)},f=async e=>{let t=[];if(await o()&&t.push(r.a(e).catch(()=>{})),await s()&&t.push(n.a(e).catch(()=>{})),!t.length)throw Error(`fs: no storage backend available`);await Promise.all(t)},p=async e=>{let t=await n.i(e);return await o()&&await r.o(e,t),t},m=e.n({appendFile:()=>j,appendFileSync:()=>y,available:()=>g,default:()=>W,exists:()=>R,existsSync:()=>b,flush:()=>V,lstatSync:()=>S,mkdir:()=>P,mkdirSync:()=>w,mount:()=>B,promises:()=>z,pull:()=>U,readFile:()=>k,readFileSync:()=>_,readdir:()=>N,readdirSync:()=>C,remount:()=>H,rename:()=>L,renameSync:()=>O,rm:()=>F,rmSync:()=>T,rmdirSync:()=>E,stat:()=>M,statSync:()=>x,unlink:()=>I,unlinkSync:()=>D,writeFile:()=>A,writeFileSync:()=>v}),h=t.t(i,{memfs:!0}),{available:g,readFileSync:_,writeFileSync:v,appendFileSync:y,existsSync:b,statSync:x,lstatSync:S,readdirSync:C,mkdirSync:w,rmSync:T,rmdirSync:E,unlinkSync:D,renameSync:O,readFile:k,writeFile:A,appendFile:j,stat:M,readdir:N,mkdir:P,rm:F,unlink:I,rename:L,exists:R,promises:z,mount:B,flush:V,remount:H}=h,U=p,W={...h,pull:U};Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return H}});
1
+ const e=require(`./chunk-B6C_zzib.cjs`),t=require(`./node-fs-DQn1TGJz.cjs`),n=require(`./storage-C2-_-bTO.cjs`),r=require(`./opfs-Dsi4FkJU.cjs`);var i=e.n({available:()=>c,list:()=>l,pull:()=>p,readFile:()=>u,remove:()=>f,writeFile:()=>d}),a,o=async()=>await(a??=r.t().catch(()=>!1))?!0:(a=void 0,!1),s=()=>n.t().catch(()=>!1),c=async()=>await o()||await s(),l=async()=>{let[e,t]=await Promise.all([o().then(e=>e?r.n():[]).catch(()=>[]),s().then(e=>e?n.n():[]).catch(()=>[])]),i=new Map,a=e=>{let t=Date.parse(e.updatedAt??``);return Number.isFinite(t)?t:0},c=e=>{let t=i.get(e.path);(!t||a(e)>=a(t))&&i.set(e.path,e)};for(let t of e)c(t);for(let e of t)c(e);return[...i.values()]},u=async e=>{if(await o())try{return await r.i(e)}catch(e){if(e?.name!==`NotFoundError`)throw e}let t=await n.i(e);return await o()&&r.o(e,t).catch(()=>{}),t},d=async(e,t,i)=>{let a=t instanceof Blob?t:new Blob([t],i?.contentType?{type:i.contentType}:void 0);if(await o()){await r.o(e,a,i),await s()&&n.s(e,a,i).catch(e=>console.warn(`fs: cloud replicate failed`,e));return}if(await s())return n.s(e,a,i);throw Error(`fs: no storage backend available`)},f=async e=>{let t=[];if(await o()&&t.push(r.a(e).catch(()=>{})),await s()&&t.push(n.a(e).catch(()=>{})),!t.length)throw Error(`fs: no storage backend available`);await Promise.all(t)},p=async e=>{let t=await n.i(e);return await o()&&await r.o(e,t),t},m=e.n({appendFile:()=>j,appendFileSync:()=>y,available:()=>g,default:()=>W,exists:()=>R,existsSync:()=>b,flush:()=>V,lstatSync:()=>S,mkdir:()=>P,mkdirSync:()=>w,mount:()=>B,promises:()=>z,pull:()=>U,readFile:()=>k,readFileSync:()=>_,readdir:()=>N,readdirSync:()=>C,remount:()=>H,rename:()=>L,renameSync:()=>O,rm:()=>F,rmSync:()=>T,rmdirSync:()=>E,stat:()=>M,statSync:()=>x,unlink:()=>I,unlinkSync:()=>D,writeFile:()=>A,writeFileSync:()=>v}),h=t.t(i,{memfs:!0}),{available:g,readFileSync:_,writeFileSync:v,appendFileSync:y,existsSync:b,statSync:x,lstatSync:S,readdirSync:C,mkdirSync:w,rmSync:T,rmdirSync:E,unlinkSync:D,renameSync:O,readFile:k,writeFile:A,appendFile:j,stat:M,readdir:N,mkdir:P,rm:F,unlink:I,rename:L,exists:R,promises:z,mount:B,flush:V,remount:H}=h,U=p,W={...h,pull:U};Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return H}});
package/fs.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`./api-CDb2pv7C.cjs`),require(`./node-fs-lrlD_zqB.cjs`),require(`./storage-C2-_-bTO.cjs`);const e=require(`./fs-Bc6087fG.cjs`);exports.appendFile=e.t,exports.appendFileSync=e.n,exports.available=e.r,exports.default=e.s,exports.exists=e.i,exports.existsSync=e.a,exports.flush=e.o,exports.lstatSync=e.l,exports.mkdir=e.u,exports.mkdirSync=e.d,exports.mount=e.f,exports.promises=e.p,exports.pull=e.m,exports.readFile=e.h,exports.readFileSync=e.g,exports.readdir=e._,exports.readdirSync=e.v,exports.remount=e.y,exports.rename=e.b,exports.renameSync=e.x,exports.rm=e.S,exports.rmSync=e.C,exports.rmdirSync=e.w,exports.stat=e.T,exports.statSync=e.E,exports.unlink=e.D,exports.unlinkSync=e.O,exports.writeFile=e.k,exports.writeFileSync=e.A;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`./api-CDb2pv7C.cjs`),require(`./node-fs-DQn1TGJz.cjs`),require(`./storage-C2-_-bTO.cjs`);const e=require(`./fs-DI1maxcZ.cjs`);exports.appendFile=e.t,exports.appendFileSync=e.n,exports.available=e.r,exports.default=e.s,exports.exists=e.i,exports.existsSync=e.a,exports.flush=e.o,exports.lstatSync=e.l,exports.mkdir=e.u,exports.mkdirSync=e.d,exports.mount=e.f,exports.promises=e.p,exports.pull=e.m,exports.readFile=e.h,exports.readFileSync=e.g,exports.readdir=e._,exports.readdirSync=e.v,exports.remount=e.y,exports.rename=e.b,exports.renameSync=e.x,exports.rm=e.S,exports.rmSync=e.C,exports.rmdirSync=e.w,exports.stat=e.T,exports.statSync=e.E,exports.unlink=e.D,exports.unlinkSync=e.O,exports.writeFile=e.k,exports.writeFileSync=e.A;
package/fs.d.ts CHANGED
@@ -53,6 +53,7 @@ declare const readdir: (path: node_fs.PathLike, a: unknown, b?: Callback<string[
53
53
  declare const mkdir: (path: node_fs.PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
54
54
  declare const rm: (path: node_fs.PathLike, a: {
55
55
  recursive?: boolean;
56
+ force?: boolean;
56
57
  } | Callback<void>, b?: Callback<void>) => void;
57
58
  declare const unlink: (path: node_fs.PathLike, callback: Callback<void>) => void;
58
59
  declare const rename: (from: node_fs.PathLike, to: node_fs.PathLike, callback: Callback<void>) => void;
@@ -67,6 +68,7 @@ declare const promises: {
67
68
  mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
68
69
  rm: (path: node_fs.PathLike, options?: {
69
70
  recursive?: boolean;
71
+ force?: boolean;
70
72
  }) => Promise<void>;
71
73
  rmdir: (path: node_fs.PathLike, options?: {
72
74
  recursive?: boolean;
@@ -107,6 +109,7 @@ declare const _default: {
107
109
  mkdir: (path: node_fs.PathLike, a: MakeOptions | Callback<void>, b?: Callback<void>) => void;
108
110
  rm: (path: node_fs.PathLike, a: {
109
111
  recursive?: boolean;
112
+ force?: boolean;
110
113
  } | Callback<void>, b?: Callback<void>) => void;
111
114
  unlink: (path: node_fs.PathLike, callback: Callback<void>) => void;
112
115
  rename: (from: node_fs.PathLike, to: node_fs.PathLike, callback: Callback<void>) => void;
@@ -121,6 +124,7 @@ declare const _default: {
121
124
  mkdir: (path: node_fs.PathLike, options?: MakeOptions) => Promise<void>;
122
125
  rm: (path: node_fs.PathLike, options?: {
123
126
  recursive?: boolean;
127
+ force?: boolean;
124
128
  }) => Promise<void>;
125
129
  rmdir: (path: node_fs.PathLike, options?: {
126
130
  recursive?: boolean;
package/fs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./api-ByfayMm1.js";
2
- import "./node-fs-Bd_UUx1m.js";
2
+ import "./node-fs-CdKPXPtW.js";
3
3
  import "./storage-BcJfnkm3.js";
4
- import { A as e, C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, d as u, f as d, g as f, h as p, i as m, k as h, l as g, m as _, n as v, o as y, p as b, r as x, s as S, t as C, u as w, v as T, w as E, x as D, y as O } from "./fs-CQ-eWjXw.js";
4
+ import { A as e, C as t, D as n, E as r, O as i, S as a, T as o, _ as s, a as c, b as l, d as u, f as d, g as f, h as p, i as m, k as h, l as g, m as _, n as v, o as y, p as b, r as x, s as S, t as C, u as w, v as T, w as E, x as D, y as O } from "./fs-BQs-x3_j.js";
5
5
  export { C as appendFile, v as appendFileSync, x as available, S as default, m as exists, c as existsSync, y as flush, g as lstatSync, w as mkdir, u as mkdirSync, d as mount, b as promises, _ as pull, p as readFile, f as readFileSync, s as readdir, T as readdirSync, O as remount, l as rename, D as renameSync, a as rm, t as rmSync, E as rmdirSync, o as stat, r as statSync, n as unlink, i as unlinkSync, h as writeFile, e as writeFileSync };
package/http.d.ts CHANGED
@@ -284,7 +284,7 @@ declare const resolvers: {
284
284
  readonly dns: {
285
285
  readonly lookup: <T extends boolean = false>(hostname: string, options?: {
286
286
  all?: T;
287
- family: 0 | 4 | 6;
287
+ family?: 0 | 4 | 6;
288
288
  }) => Promise<T extends true ? AddressLookupResult[] : AddressLookupResult | undefined>;
289
289
  };
290
290
  readonly fs: {
@@ -443,7 +443,7 @@ declare const resolvers: {
443
443
  }>;
444
444
  readonly dnsLookup: <T extends boolean = false>(hostname: string, options?: {
445
445
  all?: T;
446
- family: 0 | 4 | 6;
446
+ family?: 0 | 4 | 6;
447
447
  }) => Promise<T extends true ? AddressLookupResult[] : AddressLookupResult | undefined>;
448
448
  readonly setOverlayHost: (push: (state: {
449
449
  modal: boolean;
package/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./locator-Cf7M3QKN.cjs`),t=require(`./extension-9Uv_0HdS.cjs`),n=require(`./api-CDb2pv7C.cjs`);require(`./proxy-A9UvWUaF.cjs`);const r=require(`./cloud-BrY9dKwV.cjs`),i=require(`./dns.cjs`);require(`./node-fs-lrlD_zqB.cjs`),require(`./storage-C2-_-bTO.cjs`),require(`./utils-BsNRWMfl.cjs`);const a=require(`./net-C5kWnI4C.cjs`),o=require(`./dgram-C5rGcbej.cjs`),s=require(`./http.cjs`),c=require(`./desktop.cjs`),l=require(`./fs-Bc6087fG.cjs`),u=require(`./opfs.cjs`),d=require(`./account.cjs`);let f=require(`osra`),p=require(`react`);var m=`https://fkn.app`,h=(e,t)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);if(!n.r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,f.relay)({receive:window,emit:n.r.contentWindow},e,{key:`fkn-api`,originA:t?.originA??m,originB:t?.originB??`*`,unregisterSignal:t?.unregisterSignal})},g=async()=>typeof window>`u`?!1:(await n.t).connect.prompt(location.origin).catch(()=>!1),_=`https://fkn.app`,v=(e=location.origin)=>`${_}/connect-button?origin=${encodeURIComponent(e)}`,y=({className:e,style:t}={})=>(0,p.createElement)(`iframe`,{src:v(),title:`Connect your FKN account`,className:e,style:{border:`none`,width:150,height:40,background:`transparent`,colorScheme:`normal`,...t}});exports.ATTACH_FRAME_EVENT_KEY=t.o,exports.ConnectButton=y,Object.defineProperty(exports,`account`,{enumerable:!0,get:function(){return d.t}}),exports.assertAttachableFrameUrl=t.s,exports.assertFetchableUrl=t.v,exports.attachFrame=t.c,exports.attachFramePermission=t.l,exports.box=e.u,Object.defineProperty(exports,`cloud`,{enumerable:!0,get:function(){return r.n}}),exports.connect=g,exports.connectButtonUrl=v,exports.cookies=t.g,exports.createVideoElementHandle=e.d,Object.defineProperty(exports,`desktop`,{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,`dgram`,{enumerable:!0,get:function(){return o.i}}),Object.defineProperty(exports,`dns`,{enumerable:!0,get:function(){return i.t}}),exports.evaluatePermission=t.u,Object.defineProperty(exports,`extension`,{enumerable:!0,get:function(){return t.t}}),exports.fetch=t.n,exports.fetchCredentialedPermission=t.b,exports.fetchLocalPermission=t.x,exports.fetchPermission=t.S,Object.defineProperty(exports,`fs`,{enumerable:!0,get:function(){return l.c}}),exports.gotoPermission=t.d,exports.handleRevivableModules=e.l,Object.defineProperty(exports,`http`,{enumerable:!0,get:function(){return s.t}}),exports.isBlockedFetchUrl=t.C,exports.isBlockedFrameUrl=t.f,exports.isExtensionExposed=t.E,exports.isLocalNetworkUrl=t.w,exports.isType=e.f,exports.modifyRequestHeadersPermission=t.p,Object.defineProperty(exports,`net`,{enumerable:!0,get:function(){return a.s}}),Object.defineProperty(exports,`opfs`,{enumerable:!0,get:function(){return u.t}}),exports.permissions=t.a,exports.promptInstall=t.i,exports.readCookiePermission=t._,exports.relayWorker=h,exports.removeRequestHeaderRule=t.m,exports.revive=e.p,exports.setMissingExtensionHandler=t.D,exports.setRequestHeaderRule=t.h,exports.type=e.m,exports.waitForExtensionExposure=t.O;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./locator-CHfEe3Jv.cjs`),t=require(`./extension-DAiRg5ny.cjs`),n=require(`./api-CDb2pv7C.cjs`);require(`./proxy-A9UvWUaF.cjs`);const r=require(`./cloud-CWg9zCWm.cjs`),i=require(`./dns.cjs`);require(`./node-fs-DQn1TGJz.cjs`),require(`./storage-C2-_-bTO.cjs`),require(`./utils-BsNRWMfl.cjs`);const a=require(`./net-C5kWnI4C.cjs`),o=require(`./dgram-B3WC4VdJ.cjs`),s=require(`./http.cjs`),c=require(`./desktop.cjs`),l=require(`./fs-DI1maxcZ.cjs`),u=require(`./opfs.cjs`),d=require(`./account.cjs`),f=require(`./connect-button-poDZVmq2.cjs`);let p=require(`osra`);var m=`https://fkn.app`,h=(e,t)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);if(!n.r?.contentWindow)throw Error(`FKN @fkn/lib: relayWorker called before the FKN iframe was injected`);(0,p.relay)({receive:window,emit:n.r.contentWindow},e,{key:`fkn-api`,originA:t?.originA??m,originB:t?.originB??`*`,unregisterSignal:t?.unregisterSignal})},g=async()=>typeof window>`u`?!1:(await n.t).connect.prompt(location.origin).catch(()=>!1);exports.ATTACH_FRAME_EVENT_KEY=t.o,Object.defineProperty(exports,`account`,{enumerable:!0,get:function(){return d.t}}),exports.assertAttachableFrameUrl=t.s,exports.assertFetchableUrl=t.y,exports.assertLockdownApplicable=t.c,exports.attachFrame=t.l,exports.attachFramePermission=t.u,exports.box=e.u,Object.defineProperty(exports,`cloud`,{enumerable:!0,get:function(){return r.n}}),exports.connect=g,exports.connectButtonUrl=f.t,exports.cookies=t._,exports.createVideoElementHandle=e.d,Object.defineProperty(exports,`desktop`,{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,`dgram`,{enumerable:!0,get:function(){return o.i}}),Object.defineProperty(exports,`dns`,{enumerable:!0,get:function(){return i.t}}),exports.evaluatePermission=t.d,Object.defineProperty(exports,`extension`,{enumerable:!0,get:function(){return t.t}}),exports.fetch=t.n,exports.fetchCredentialedPermission=t.x,exports.fetchLocalPermission=t.S,exports.fetchPermission=t.C,Object.defineProperty(exports,`fs`,{enumerable:!0,get:function(){return l.c}}),exports.gotoPermission=t.f,exports.handleRevivableModules=e.l,Object.defineProperty(exports,`http`,{enumerable:!0,get:function(){return s.t}}),exports.isBlockedFetchUrl=t.w,exports.isBlockedFrameUrl=t.p,exports.isExtensionExposed=t.D,exports.isLocalNetworkUrl=t.T,exports.isType=e.f,exports.modifyRequestHeadersPermission=t.m,Object.defineProperty(exports,`net`,{enumerable:!0,get:function(){return a.s}}),Object.defineProperty(exports,`opfs`,{enumerable:!0,get:function(){return u.t}}),exports.permissions=t.a,exports.promptInstall=t.i,exports.readCookiePermission=t.v,exports.relayWorker=h,exports.removeRequestHeaderRule=t.h,exports.revive=e.p,exports.setMissingExtensionHandler=t.O,exports.setRequestHeaderRule=t.g,exports.type=e.m,exports.waitForExtensionExposure=t.k;