@fkn/lib 0.9.43 → 0.9.45
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-H1TzWitc.d.ts → api-Cuf3ynZX.d.ts} +83 -30
- package/api.d.ts +2 -2
- package/attach-policy.d.ts +11 -15
- package/cloud/dns.d.ts +1 -1
- package/cloud/fetch.d.ts +1 -1
- package/cloud/fs/promises.d.ts +1 -1
- package/cloud/fs.d.ts +3 -3
- package/cloud/net.d.ts +1 -1
- package/cloud-CKCrMMB_.cjs +1 -0
- package/cloud-CVWGyZRT.js +559 -0
- package/{cloud-Y0FzWpFT.d.ts → cloud-KBzjWzt1.d.ts} +4 -4
- package/cloud.cjs +1 -1
- package/cloud.d.ts +4 -4
- package/cloud.js +1 -1
- package/{contract-DJxGa8lb.d.ts → contract-DP_jc5pZ.d.ts} +161 -27
- package/contract.cjs +1 -1
- package/contract.d.ts +4 -4
- package/contract.js +9 -3
- package/dgram.d.ts +7 -14
- package/dns.d.ts +1 -1
- package/extension-Dmnh5pcs.js +94 -0
- package/{extension-BtDg-F2g.d.ts → extension-X8cnvZej.d.ts} +19 -37
- package/extension-YBe6Q6r_.cjs +1 -0
- package/extension.cjs +1 -1
- package/extension.d.ts +2 -2
- package/extension.js +3 -3
- package/fs/promises.d.ts +1 -1
- package/{fs-D0MMRnHC.d.ts → fs-KA1Mgisv.d.ts} +2 -2
- package/fs.d.ts +3 -3
- package/http.d.ts +1 -1
- package/{index-Cgnfjh9o.d.ts → index-C8Y-YHrU.d.ts} +42 -58
- package/{index-D2lvaQDs.d.ts → index-DKr9L2RI.d.ts} +6 -11
- package/index.cjs +1 -1
- package/index.d.ts +35 -38
- package/index.js +12 -12
- package/lib-D4uqe_rb.cjs +53 -0
- package/{lib-C3UwxjVs.js → lib-H5-e2A1h.js} +483 -468
- package/messages-d7pvCXPn.d.ts +34 -0
- package/messages.d.ts +1 -1
- package/{net-BOswhyfE.d.ts → net-eyWUIVn2.d.ts} +3 -19
- package/net.d.ts +1 -1
- package/package.json +1 -1
- package/packages.d.ts +1 -1
- package/{proxy-ylK5lpw8.d.ts → proxy-8Zp-G5da.d.ts} +2 -2
- package/rooms.cjs +1 -1
- package/rooms.d.ts +94 -15
- package/rooms.js +118 -90
- package/{storage-BVr2Rb-d.d.ts → storage-BLBsmkmp.d.ts} +14 -28
- package/{wire-Gbo-D74t.d.ts → wire-BwA4JjZH.d.ts} +6 -12
- package/wire.d.ts +1 -1
- package/cloud-Bx64HSkQ.cjs +0 -1
- package/cloud-D-vDUzzx.js +0 -552
- package/extension-CzZn0bY2.js +0 -94
- package/extension-DvFf7uoG.cjs +0 -1
- package/lib-fqQfEPk6.cjs +0 -53
- package/messages-CRcziTuC.d.ts +0 -46
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-D4uqe_rb.cjs"),n=require("./api--LOXTOpv.cjs"),r=require("./proxy-CFK-KiwE.cjs"),i=require("./desktop.cjs");var a=`BackgroundStoppedError`,o=e=>t.d(e)&&e.name===`BackgroundStoppedError`,s=async e=>{if(typeof window>`u`)return!1;if(t.nt())return!0;let r=await n.o,i=null,a=new Promise(e=>{i=()=>{t.nt()&&e(!0)},t.tt.addEventListener(`statuschange`,i)}),o=r.installPrompt.show(e).then(()=>!1),s=await Promise.race([a,o]);return i&&t.tt.removeEventListener(`statuschange`,i),await r.installPrompt.hide().catch(()=>{}),s},c=null;t.it(()=>(c||=s().then(()=>void 0).finally(()=>{c=null}),c));var l=()=>typeof document<`u`&&t.nt(),u=async(e,a)=>{if(n.p(e),a?.credentials===`include`){if(typeof document>`u`)throw Error(`fetch with credentials needs the FKN extension, which only exists in window realms`);return t.G(e,a)}return l()?t.G(e,{...a,credentials:`omit`}):i.available()?i.fetch(e,a):r.t(e,a)},d=e.t({ATTACH_FRAME_EVENT_KEY:()=>t.i,BACKGROUND_STOPPED:()=>a,CATEGORIES:()=>t.w,EXTENSION_ABI:()=>4,ExtensionOperationUnsupportedError:()=>t.st,ExtensionOutdatedError:()=>t.ct,FORGEABLE_HEADERS:()=>t.Z,FrameWindowBlockedError:()=>t.g,FrameWindowRefusedError:()=>t._,LOCATOR_DENIED:()=>t.A,LOCATOR_ERROR:()=>t.I,LOCATOR_INVALID:()=>t.R,LOCATOR_UNSUPPORTED:()=>t.D,PERMISSION_DENIED:()=>t.t,REQUIRED_EXTENSION_ABI:()=>0,TimeoutError:()=>t.E,assertAttachableFrameUrl:()=>t.x,assertFetchableUrl:()=>t.W,assertForgeableHeaders:()=>t.Q,assertLockdownApplicable:()=>t.S,assertOneCookieIdentity:()=>t.$,attachFrame:()=>t.a,attachFramePermission:()=>t.v,available:()=>l,box:()=>t.ft,cookies:()=>t.H,createFrame:()=>t.y,createVideoElementHandle:()=>t.pt,events:()=>t.tt,extension:()=>t.tt,fetch:()=>t.G,fetchCredentialedPermission:()=>t.K,fetchLocalPermission:()=>t.q,fetchPermission:()=>t.J,gotoPermission:()=>t.b,handleRevivableModules:()=>t.dt,hasForgedCookie:()=>t.et,isBackgroundStopped:()=>o,isBlockedFetchUrl:()=>t.Y,isBlockedFrameUrl:()=>t.C,isExtensionExposed:()=>t.nt,isLocalNetworkUrl:()=>t.X,isLocatorDenied:()=>t.L,isLocatorInvalid:()=>t.M,isLocatorUnsupported:()=>t.O,isPermissionDenied:()=>t.n,isTerminalError:()=>t.F,isType:()=>t.mt,modifyRequestHeadersPermission:()=>t.z,permissions:()=>t.r,promptInstall:()=>s,readCookiePermission:()=>t.U,readExtensionHandshake:()=>t.rt,removeRequestHeaderRule:()=>t.B,revive:()=>t.ht,setMissingExtensionHandler:()=>t.it,setRequestHeaderRule:()=>t.V,supportsOperation:()=>t.ut,type:()=>t.gt,waitForExtensionExposure:()=>t.at});Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return d}});
|
package/extension.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./lib-D4uqe_rb.cjs"),t=require("./extension-YBe6Q6r_.cjs");exports.ATTACH_FRAME_EVENT_KEY=e.i,exports.BACKGROUND_STOPPED=t.a,exports.CATEGORIES=e.w,exports.EXTENSION_ABI=e.ot,exports.ExtensionOperationUnsupportedError=e.st,exports.ExtensionOutdatedError=e.ct,exports.FORGEABLE_HEADERS=e.Z,exports.FrameWindowBlockedError=e.g,exports.FrameWindowRefusedError=e._,exports.LOCATOR_DENIED=e.A,exports.LOCATOR_ERROR=e.I,exports.LOCATOR_INVALID=e.R,exports.LOCATOR_UNSUPPORTED=e.D,exports.PERMISSION_DENIED=e.t,exports.REQUIRED_EXTENSION_ABI=e.lt,exports.TimeoutError=e.E,exports.assertAttachableFrameUrl=e.x,exports.assertFetchableUrl=e.W,exports.assertForgeableHeaders=e.Q,exports.assertLockdownApplicable=e.S,exports.assertOneCookieIdentity=e.$,exports.attachFrame=e.a,exports.attachFramePermission=e.v,exports.available=t.r,exports.box=e.ft,exports.cookies=e.H,exports.createFrame=e.y,exports.createVideoElementHandle=e.pt,exports.events=e.tt,exports.extension=e.tt,exports.fetch=e.G,exports.fetchCredentialedPermission=e.K,exports.fetchLocalPermission=e.q,exports.fetchPermission=e.J,exports.gotoPermission=e.b,exports.handleRevivableModules=e.dt,exports.hasForgedCookie=e.et,exports.isBackgroundStopped=t.o,exports.isBlockedFetchUrl=e.Y,exports.isBlockedFrameUrl=e.C,exports.isExtensionExposed=e.nt,exports.isLocalNetworkUrl=e.X,exports.isLocatorDenied=e.L,exports.isLocatorInvalid=e.M,exports.isLocatorUnsupported=e.O,exports.isPermissionDenied=e.n,exports.isTerminalError=e.F,exports.isType=e.mt,exports.modifyRequestHeadersPermission=e.z,exports.permissions=e.r,exports.promptInstall=t.i,exports.readCookiePermission=e.U,exports.readExtensionHandshake=e.rt,exports.removeRequestHeaderRule=e.B,exports.revive=e.ht,exports.setMissingExtensionHandler=e.it,exports.setRequestHeaderRule=e.V,exports.supportsOperation=e.ut,exports.type=e.gt,exports.waitForExtensionExposure=e.at;
|
package/extension.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as GateTools, A as attachFramePermission, B as CategoryMeta, C as FrameWindowRefusal, D as StorageState, E as Locator, F as LegacyPermissionRequest, G as VideoElementState, H as handleRevivableModules, I as PermissionGrant, J as isType, K as box, L as PermissionRequest, M as gotoPermission, N as CategoryGrant, O as StorageStateCookie, P as CategoryRequest, Q as Gate, R as permissions, S as FrameWindowOptions, T as GotoOptions, U as BoxedVideoElement, V as PermissionCategory, W as RemoteVideoElement, X as type, Y as revive, Z as Executor, _ as FrameEventMap, a as AttachCookies, b as FramePostMessageOptions, c as BlankPage, d as CookieMatchWire, et as OperationRequest, f as Frame, g as FrameEventListener, h as FrameDocumentEvent, i as AddScriptTagOptions, j as createFrame, k as WindowFrame, l as ClearCookiesOptions, m as FrameBackendEvent, n as attachFrame, o as AttachFrameOptions, p as FrameBackend, q as createVideoElementHandle, s as AttachWindowOptions, t as ATTACH_FRAME_EVENT_KEY, tt as SelectorPart, u as ClearCookiesWire, v as FrameLocator, w as FrameWindowRefusedError, x as FrameWindowBlockedError, y as FrameMessageEvent, z as CATEGORIES } from "./index-
|
|
2
|
-
import { $ as isLocatorInvalid, A as CookieDetails, B as fetchPermission, C as assertLockdownApplicable, D as modifyRequestHeadersPermission, E as RequestHeaderRule, F as ProxyFetchRequest, G as assertOneCookieIdentity, H as isLocalNetworkUrl, I as assertFetchableUrl, J as LOCATOR_ERROR, K as hasForgedCookie, L as fetch, M as cookies, N as readCookiePermission, O as removeRequestHeaderRule, P as FetchInit, Q as isLocatorDenied, R as fetchCredentialedPermission, S as assertAttachableFrameUrl, T as HeaderOperation, U as FORGEABLE_HEADERS, V as isBlockedFetchUrl, W as assertForgeableHeaders, X as LOCATOR_UNSUPPORTED, Y as LOCATOR_INVALID, Z as TimeoutError, _ as BackgroundStoppedError, a as extension, b as PermissionDeniedError, c as setMissingExtensionHandler, d as ExtensionHandshake, et as isLocatorUnsupported, f as ExtensionOperationUnsupportedError, g as BACKGROUND_STOPPED, h as supportsOperation, i as promptInstall, j as SiteCookie, k as setRequestHeaderRule, l as waitForExtensionExposure, m as REQUIRED_EXTENSION_ABI, o as isExtensionExposed, p as ExtensionOutdatedError, q as LOCATOR_DENIED, r as isExtensionAvailable, s as readExtensionHandshake, tt as isTerminalError, u as EXTENSION_ABI, v as isBackgroundStopped, w as isBlockedFrameUrl, x as isPermissionDenied, y as PERMISSION_DENIED, z as fetchLocalPermission } from "./extension-
|
|
1
|
+
import { $ as GateTools, A as attachFramePermission, B as CategoryMeta, C as FrameWindowRefusal, D as StorageState, E as Locator, F as LegacyPermissionRequest, G as VideoElementState, H as handleRevivableModules, I as PermissionGrant, J as isType, K as box, L as PermissionRequest, M as gotoPermission, N as CategoryGrant, O as StorageStateCookie, P as CategoryRequest, Q as Gate, R as permissions, S as FrameWindowOptions, T as GotoOptions, U as BoxedVideoElement, V as PermissionCategory, W as RemoteVideoElement, X as type, Y as revive, Z as Executor, _ as FrameEventMap, a as AttachCookies, b as FramePostMessageOptions, c as BlankPage, d as CookieMatchWire, et as OperationRequest, f as Frame, g as FrameEventListener, h as FrameDocumentEvent, i as AddScriptTagOptions, j as createFrame, k as WindowFrame, l as ClearCookiesOptions, m as FrameBackendEvent, n as attachFrame, o as AttachFrameOptions, p as FrameBackend, q as createVideoElementHandle, s as AttachWindowOptions, t as ATTACH_FRAME_EVENT_KEY, tt as SelectorPart, u as ClearCookiesWire, v as FrameLocator, w as FrameWindowRefusedError, x as FrameWindowBlockedError, y as FrameMessageEvent, z as CATEGORIES } from "./index-C8Y-YHrU.js";
|
|
2
|
+
import { $ as isLocatorInvalid, A as CookieDetails, B as fetchPermission, C as assertLockdownApplicable, D as modifyRequestHeadersPermission, E as RequestHeaderRule, F as ProxyFetchRequest, G as assertOneCookieIdentity, H as isLocalNetworkUrl, I as assertFetchableUrl, J as LOCATOR_ERROR, K as hasForgedCookie, L as fetch, M as cookies, N as readCookiePermission, O as removeRequestHeaderRule, P as FetchInit, Q as isLocatorDenied, R as fetchCredentialedPermission, S as assertAttachableFrameUrl, T as HeaderOperation, U as FORGEABLE_HEADERS, V as isBlockedFetchUrl, W as assertForgeableHeaders, X as LOCATOR_UNSUPPORTED, Y as LOCATOR_INVALID, Z as TimeoutError, _ as BackgroundStoppedError, a as extension, b as PermissionDeniedError, c as setMissingExtensionHandler, d as ExtensionHandshake, et as isLocatorUnsupported, f as ExtensionOperationUnsupportedError, g as BACKGROUND_STOPPED, h as supportsOperation, i as promptInstall, j as SiteCookie, k as setRequestHeaderRule, l as waitForExtensionExposure, m as REQUIRED_EXTENSION_ABI, o as isExtensionExposed, p as ExtensionOutdatedError, q as LOCATOR_DENIED, r as isExtensionAvailable, s as readExtensionHandshake, tt as isTerminalError, u as EXTENSION_ABI, v as isBackgroundStopped, w as isBlockedFrameUrl, x as isPermissionDenied, y as PERMISSION_DENIED, z as fetchLocalPermission } from "./extension-X8cnvZej.js";
|
|
3
3
|
export { ATTACH_FRAME_EVENT_KEY, AddScriptTagOptions, AttachCookies, AttachFrameOptions, AttachWindowOptions, BACKGROUND_STOPPED, type BackgroundStoppedError, BlankPage, BoxedVideoElement, CATEGORIES, CategoryGrant, type CategoryMeta, CategoryRequest, ClearCookiesOptions, ClearCookiesWire, CookieDetails, CookieMatchWire, EXTENSION_ABI, type Executor, type ExtensionHandshake, ExtensionOperationUnsupportedError, ExtensionOutdatedError, FORGEABLE_HEADERS, FetchInit, Frame, FrameBackend, FrameBackendEvent, FrameDocumentEvent, FrameEventListener, FrameEventMap, FrameLocator, FrameMessageEvent, FramePostMessageOptions, FrameWindowBlockedError, FrameWindowOptions, FrameWindowRefusal, FrameWindowRefusedError, type Gate, type GateTools, GotoOptions, HeaderOperation, LOCATOR_DENIED, LOCATOR_ERROR, LOCATOR_INVALID, LOCATOR_UNSUPPORTED, LegacyPermissionRequest, Locator, type OperationRequest, PERMISSION_DENIED, type PermissionCategory, type PermissionDeniedError, PermissionGrant, PermissionRequest, ProxyFetchRequest, REQUIRED_EXTENSION_ABI, RemoteVideoElement, RequestHeaderRule, type SelectorPart, SiteCookie, StorageState, StorageStateCookie, TimeoutError, VideoElementState, WindowFrame, assertAttachableFrameUrl, assertFetchableUrl, assertForgeableHeaders, assertLockdownApplicable, assertOneCookieIdentity, attachFrame, attachFramePermission, isExtensionAvailable as available, box, cookies, createFrame, createVideoElementHandle, extension as events, extension, fetch, fetchCredentialedPermission, fetchLocalPermission, fetchPermission, gotoPermission, handleRevivableModules, hasForgedCookie, isBackgroundStopped, isBlockedFetchUrl, isBlockedFrameUrl, isExtensionExposed, isLocalNetworkUrl, isLocatorDenied, isLocatorInvalid, isLocatorUnsupported, isPermissionDenied, isTerminalError, isType, modifyRequestHeadersPermission, permissions, promptInstall, readCookiePermission, readExtensionHandshake, removeRequestHeaderRule, revive, setMissingExtensionHandler, setRequestHeaderRule, supportsOperation, type, waitForExtensionExposure };
|
package/extension.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as e,
|
|
2
|
-
import { a as te, i as ne, o as re, r as ie } from "./extension-
|
|
3
|
-
export {
|
|
1
|
+
import { $ as e, A as t, B as n, C as r, D as i, E as a, F as o, G as s, H as c, I as l, J as u, K as d, L as f, M as p, O as m, Q as h, R as g, S as _, U as v, V as y, W as b, X as x, Y as S, Z as C, _ as w, a as T, at as E, b as D, ct as O, dt as k, et as ee, ft as A, g as j, gt as M, ht as N, i as P, it as F, lt as I, mt as L, n as R, nt as z, ot as B, pt as V, q as H, r as U, rt as W, st as G, t as K, tt as q, ut as J, v as Y, w as X, x as Z, y as Q, z as $ } from "./lib-H5-e2A1h.js";
|
|
2
|
+
import { a as te, i as ne, o as re, r as ie } from "./extension-Dmnh5pcs.js";
|
|
3
|
+
export { P as ATTACH_FRAME_EVENT_KEY, te as BACKGROUND_STOPPED, X as CATEGORIES, B as EXTENSION_ABI, G as ExtensionOperationUnsupportedError, O as ExtensionOutdatedError, C as FORGEABLE_HEADERS, j as FrameWindowBlockedError, w as FrameWindowRefusedError, t as LOCATOR_DENIED, l as LOCATOR_ERROR, g as LOCATOR_INVALID, i as LOCATOR_UNSUPPORTED, K as PERMISSION_DENIED, I as REQUIRED_EXTENSION_ABI, a as TimeoutError, Z as assertAttachableFrameUrl, b as assertFetchableUrl, h as assertForgeableHeaders, _ as assertLockdownApplicable, e as assertOneCookieIdentity, T as attachFrame, Y as attachFramePermission, ie as available, A as box, c as cookies, Q as createFrame, V as createVideoElementHandle, q as events, q as extension, s as fetch, d as fetchCredentialedPermission, H as fetchLocalPermission, u as fetchPermission, D as gotoPermission, k as handleRevivableModules, ee as hasForgedCookie, re as isBackgroundStopped, S as isBlockedFetchUrl, r as isBlockedFrameUrl, z as isExtensionExposed, x as isLocalNetworkUrl, f as isLocatorDenied, p as isLocatorInvalid, m as isLocatorUnsupported, R as isPermissionDenied, o as isTerminalError, L as isType, $ as modifyRequestHeadersPermission, U as permissions, ne as promptInstall, v as readCookiePermission, W as readExtensionHandshake, n as removeRequestHeaderRule, N as revive, F as setMissingExtensionHandler, y as setRequestHeaderRule, J as supportsOperation, M as type, E as waitForExtensionExposure };
|
package/fs/promises.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as WriteData, i as Stats, n as MakeOptions, o as WriteOptions, r as ReadOptions } from "../index-BQgZVQl7.js";
|
|
2
|
-
import { v as promises } from "../index-
|
|
2
|
+
import { v as promises } from "../index-DKr9L2RI.js";
|
|
3
3
|
//#region src/fs/promises.d.ts
|
|
4
4
|
export declare const readFile: (path: import("node:fs").PathLike, options?: ReadOptions) => Promise<Buffer | string>, writeFile: (path: import("node:fs").PathLike, data: WriteData, options?: WriteOptions) => Promise<void>, appendFile: (path: import("node:fs").PathLike, data: WriteData, options?: WriteOptions) => Promise<void>, unlink: (path: import("node:fs").PathLike) => Promise<void>, rename: (from: import("node:fs").PathLike, to: import("node:fs").PathLike) => Promise<void>, readdir: (path: import("node:fs").PathLike) => Promise<string[]>, mkdir: (path: import("node:fs").PathLike, options?: MakeOptions) => Promise<void>, rm: (path: import("node:fs").PathLike, options?: {
|
|
5
5
|
recursive?: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as WriteData, i as Stats, n as MakeOptions, o as WriteOptions, r as ReadOptions, t as Callback } from "./index-BQgZVQl7.js";
|
|
2
|
-
import { _ as unlock, a as StorageAccountChangedError, c as StorageNotFoundError, f as encryption, g as storage_d_exports, h as quota, i as SealedRead, l as StorageQuota, m as isNotFound, n as EncryptionStatus, o as StorageAccountPinUnsupportedError, p as isAccountChanged, r as FileEntry, s as StorageLockedError, t as CloudAvailability, u as availability } from "./storage-
|
|
3
|
-
import { c as STORAGE_ACCOUNT_CHANGED, l as STORAGE_ACCOUNT_PIN_UNSUPPORTED, u as STORAGE_NOT_FOUND } from "./messages-
|
|
2
|
+
import { _ as unlock, a as StorageAccountChangedError, c as StorageNotFoundError, f as encryption, g as storage_d_exports, h as quota, i as SealedRead, l as StorageQuota, m as isNotFound, n as EncryptionStatus, o as StorageAccountPinUnsupportedError, p as isAccountChanged, r as FileEntry, s as StorageLockedError, t as CloudAvailability, u as availability } from "./storage-BLBsmkmp.js";
|
|
3
|
+
import { c as STORAGE_ACCOUNT_CHANGED, l as STORAGE_ACCOUNT_PIN_UNSUPPORTED, u as STORAGE_NOT_FOUND } from "./messages-d7pvCXPn.js";
|
|
4
4
|
declare namespace fs_d_exports {
|
|
5
5
|
export { CloudAvailability, EncryptionStatus, FileEntry, STORAGE_ACCOUNT_CHANGED, STORAGE_ACCOUNT_PIN_UNSUPPORTED, STORAGE_NOT_FOUND, SealedRead, Stats, StorageAccountChangedError, StorageAccountPinUnsupportedError, StorageLockedError, StorageNotFoundError, StorageQuota, availability, available, encryption, isAccountChanged, isNotFound, list, mkdir, promises, quota, readFile, readFileSealed, readdir, rename, rm, stat, unlink, unlock, writeFile };
|
|
6
6
|
}
|
package/fs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as Stats } from "./index-BQgZVQl7.js";
|
|
2
|
-
import { a as StorageAccountChangedError, i as SealedRead, o as StorageAccountPinUnsupportedError, p as isAccountChanged } from "./storage-
|
|
3
|
-
import { c as STORAGE_ACCOUNT_CHANGED, l as STORAGE_ACCOUNT_PIN_UNSUPPORTED } from "./messages-
|
|
4
|
-
import { A as rmSync, B as ConflictResolver, C as readdir, D as renameSync, E as rename, F as unlinkSync, H as FileConflict, I as writeFile, L as writeFileSync, M as stat, N as statSync, O as replicating, P as unlink, R as AdoptSummary, S as readFileSync, T as remount, V as ConflictSide, _ as pendingDeletes, a as appendFileSync, b as readFile, c as existsSync, d as lstatSync, f as mkdir, g as pending, h as onConflict, i as appendFile, j as rmdirSync, k as rm, l as flush, m as mount, n as adopt, o as available, p as mkdirSync, r as adoptable, s as exists, t as _default, v as promises, w as readdirSync, x as readFileSealed, y as pull, z as ConflictResolution } from "./index-
|
|
2
|
+
import { a as StorageAccountChangedError, i as SealedRead, o as StorageAccountPinUnsupportedError, p as isAccountChanged } from "./storage-BLBsmkmp.js";
|
|
3
|
+
import { c as STORAGE_ACCOUNT_CHANGED, l as STORAGE_ACCOUNT_PIN_UNSUPPORTED } from "./messages-d7pvCXPn.js";
|
|
4
|
+
import { A as rmSync, B as ConflictResolver, C as readdir, D as renameSync, E as rename, F as unlinkSync, H as FileConflict, I as writeFile, L as writeFileSync, M as stat, N as statSync, O as replicating, P as unlink, R as AdoptSummary, S as readFileSync, T as remount, V as ConflictSide, _ as pendingDeletes, a as appendFileSync, b as readFile, c as existsSync, d as lstatSync, f as mkdir, g as pending, h as onConflict, i as appendFile, j as rmdirSync, k as rm, l as flush, m as mount, n as adopt, o as available, p as mkdirSync, r as adoptable, s as exists, t as _default, v as promises, w as readdirSync, x as readFileSealed, y as pull, z as ConflictResolution } from "./index-DKr9L2RI.js";
|
|
5
5
|
export { type AdoptSummary, type ConflictResolution, type ConflictResolver, type ConflictSide, type FileConflict, STORAGE_ACCOUNT_CHANGED, STORAGE_ACCOUNT_PIN_UNSUPPORTED, type SealedRead, type Stats, StorageAccountChangedError, StorageAccountPinUnsupportedError, adopt, adoptable, appendFile, appendFileSync, available, _default as default, exists, existsSync, flush, isAccountChanged, lstatSync, mkdir, mkdirSync, mount, onConflict, pending, pendingDeletes, promises, pull, readFile, readFileSealed, readFileSync, readdir, readdirSync, remount, rename, renameSync, replicating, rm, rmSync, rmdirSync, stat, statSync, unlink, unlinkSync, writeFile, writeFileSync };
|
package/http.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as Socket, t as Server$1 } from "./net-
|
|
1
|
+
import { n as Socket, t as Server$1 } from "./net-eyWUIVn2.js";
|
|
2
2
|
import { Buffer } from "buffer";
|
|
3
3
|
import { Stream } from "stream";
|
|
4
4
|
import { IncomingHttpHeaders, OutgoingHttpHeaders, RequestOptions } from "http";
|
|
@@ -24,35 +24,24 @@ type SelectorModule = {
|
|
|
24
24
|
type OperationModule = {
|
|
25
25
|
resolve: (context: LocatorContext, ...args: any[]) => unknown;
|
|
26
26
|
/**
|
|
27
|
-
* Pins the operation to one chain kind, opting it out of the executor's cross-kind fallback.
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* `
|
|
31
|
-
* element `click` then runs against the child's `documentElement`. It is also bidirectional, so
|
|
32
|
-
* without this an operation registered only on the `frame` kind is silently reachable from an
|
|
33
|
-
* element chain too.
|
|
34
|
-
*
|
|
35
|
-
* For most operations that is a convenience. For one whose whole meaning is WHICH REALM it runs
|
|
36
|
-
* in, it is a silent identity confusion: `locator('#x').fetch()` would run in the document that
|
|
37
|
-
* CONTAINS `#x` while reading as though it ran in `#x`. Pin those, so the wrong spelling is
|
|
38
|
-
* refused by name instead of quietly doing something else.
|
|
27
|
+
* Pins the operation to one chain kind, opting it out of the executor's cross-kind fallback. That
|
|
28
|
+
* fallback is load bearing (`frameLocator('#f').click()` runs the element `click` against the
|
|
29
|
+
* child's `documentElement`) and bidirectional, so pin an operation whose meaning is which realm it
|
|
30
|
+
* runs in: unpinned, `locator('#x').fetch()` would run in the document containing `#x`.
|
|
39
31
|
*/
|
|
40
32
|
kind?: ChainKind;
|
|
41
33
|
/**
|
|
42
|
-
* The argument list a gate sees when `ensure(operation, options)` asks about this operation
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* settles a different key at `ensure` than the real call does: `fetch(url, init)` reads the method
|
|
47
|
-
* from `args[1]`, so it declares `options => [undefined, options]`.
|
|
34
|
+
* The argument list a gate sees when `ensure(operation, options)` asks about this operation, so a
|
|
35
|
+
* gate keyed on an argument settles the same key at `ensure` as the real call. Defaults to
|
|
36
|
+
* `[options]`; `fetch(url, init)` reads the method from `args[1]`, so it declares
|
|
37
|
+
* `options => [undefined, options]`.
|
|
48
38
|
*/
|
|
49
39
|
ensureArgs?: (options: Record<string, unknown>) => unknown[];
|
|
50
40
|
/**
|
|
51
|
-
* Maps the
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* arguments travel verbatim.
|
|
41
|
+
* Maps the caller's arguments to the ones the wire carries, before the gate and the executor see
|
|
42
|
+
* them, and gives the chain method its parameter types, so a public option can take a new name while
|
|
43
|
+
* every backend keeps reading the old one. Throw to refuse a call before anything is gated or sent.
|
|
44
|
+
* Absent, the arguments travel verbatim.
|
|
56
45
|
*/
|
|
57
46
|
send?: (...args: any[]) => unknown[];
|
|
58
47
|
/**
|
|
@@ -72,10 +61,9 @@ type Modules = {
|
|
|
72
61
|
};
|
|
73
62
|
/**
|
|
74
63
|
* A chain method answered on the calling side by rewriting the parts collected so far into parts every
|
|
75
|
-
* executor already resolves,
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* Throw to refuse a chain the rewrite cannot express. The executor never sees it.
|
|
64
|
+
* executor already resolves, so it reaches an older executor (which refuses a selector name it lacks)
|
|
65
|
+
* with a meaning it already has. `to` is the kind of chain it returns. Throw to refuse a chain the
|
|
66
|
+
* rewrite cannot express. The executor never sees it.
|
|
79
67
|
*/
|
|
80
68
|
type ChainRewrite = {
|
|
81
69
|
to: ChainKind;
|
|
@@ -122,16 +110,13 @@ type AddStyleTagOptions$1 = OperationOptions & {
|
|
|
122
110
|
//#endregion
|
|
123
111
|
//#region ../frame-locator/lib/fetch.d.ts
|
|
124
112
|
/**
|
|
125
|
-
* A request issued from the realm the chain
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* exactly the degraded shape a CSRF-protected private API refuses.
|
|
113
|
+
* A request issued from the realm the chain lands in, so the browser supplies that document's own
|
|
114
|
+
* cookie jar (partitioned, on the extension path), `Origin`, `Referer` and `Sec-Fetch-*`. Nothing here
|
|
115
|
+
* synthesizes them: a private API declines a request whose initiator was synthesized.
|
|
129
116
|
*
|
|
130
|
-
* This
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* without a permission a type error, plus an authoritative origin check in the content-script resolver.
|
|
134
|
-
* Do not add a "convenience" path that skips the consumer's gate.
|
|
117
|
+
* This is the mechanism only, with no allowlist and no consent. The consumer gates it (in the FKN
|
|
118
|
+
* extension, `LOCATOR_PERMISSIONS` plus an origin check in the content-script resolver), so do not add
|
|
119
|
+
* a path that skips the consumer's gate.
|
|
135
120
|
*/
|
|
136
121
|
type FrameFetchInit = OperationOptions & {
|
|
137
122
|
method?: string;
|
|
@@ -144,16 +129,12 @@ type FrameFetchInit = OperationOptions & {
|
|
|
144
129
|
*/
|
|
145
130
|
credentials?: RequestCredentials;
|
|
146
131
|
};
|
|
147
|
-
/**
|
|
148
|
-
* Deliberately NOT a `Response`. It crosses at least one RPC boundary, and a `Response` rebuilt on the
|
|
149
|
-
* far side with `new Response()` would be a different object with different headers anyway, so the
|
|
150
|
-
* shape says plainly what actually survives.
|
|
151
|
-
*/
|
|
132
|
+
/** Not a `Response`: it crosses at least one RPC boundary, so the shape states what survives. */
|
|
152
133
|
type FrameFetchResult = {
|
|
153
134
|
status: number;
|
|
154
135
|
statusText: string;
|
|
155
136
|
ok: boolean;
|
|
156
|
-
/** Where the response came from
|
|
137
|
+
/** Where the response came from after redirects. */
|
|
157
138
|
url: string;
|
|
158
139
|
redirected: boolean;
|
|
159
140
|
type: ResponseType;
|
|
@@ -364,11 +345,7 @@ type ToOf<M> = M extends {
|
|
|
364
345
|
} ? K : 'element';
|
|
365
346
|
type KindRewrites<R, K extends ChainKind> = K extends keyof R ? (R[K] extends Record<string, ChainRewrite> ? R[K] : {}) : {};
|
|
366
347
|
type ChainOf<M extends Modules, K extends ChainKind, R extends Rewrites> = K extends 'frame' ? FrameLocator$1<M, R> : Locator$1<M, R>;
|
|
367
|
-
/**
|
|
368
|
-
* What `ensure` may carry. An option no gate reads is accepted and ignored rather than refused:
|
|
369
|
-
* `subtree` is the one apps still pass, and the scope it once narrowed is now decided per site by
|
|
370
|
-
* the gate, so passing it changes nothing.
|
|
371
|
-
*/
|
|
348
|
+
/** What `ensure` may carry. An option no gate reads, `subtree` included, is accepted and ignored rather than refused. */
|
|
372
349
|
type EnsureOptions = OperationOptions & Record<string, unknown>;
|
|
373
350
|
type Chain<M extends Modules, K extends ChainKind, R extends Rewrites = {}> = { [N in Exclude<keyof M[K]['selectors'], keyof KindRewrites<R, K>>]: (...args: ArgsOf<M[K]['selectors'][N]>) => ChainOf<M, ToOf<M[K]['selectors'][N]>, R>; } & { [N in keyof M[K]['operations'] as M[K]['operations'][N] extends {
|
|
374
351
|
typed: false;
|
|
@@ -724,17 +701,17 @@ type LocatorRewrites = typeof locatorRewrites;
|
|
|
724
701
|
type PermissionCategory = 'interaction' | 'storage' | 'network' | 'evaluation';
|
|
725
702
|
/**
|
|
726
703
|
* What a category row says. `heading` is the name the popup, dashboard and activity log print;
|
|
727
|
-
* `summary` is
|
|
728
|
-
*
|
|
729
|
-
*
|
|
730
|
-
*
|
|
704
|
+
* `summary` is a one-line account of the category. The row copy is a template over `site` (the host
|
|
705
|
+
* the row consults, or its "first and N more" form). On the cloud card `cloudTitle` is its one short
|
|
706
|
+
* line and `cloudDescription` the line under it where hovering cannot be counted on, its tooltip
|
|
707
|
+
* everywhere else.
|
|
731
708
|
*/
|
|
732
709
|
type CategoryMeta = {
|
|
733
710
|
id: PermissionCategory;
|
|
734
711
|
heading: string;
|
|
735
712
|
summary: string;
|
|
736
713
|
title: (site: string) => string;
|
|
737
|
-
/** `signedIn` is false when the attach
|
|
714
|
+
/** `signedIn` is false only when the attach carried `syncCookies: false`, which only a library that predates `cookies` sends */
|
|
738
715
|
description: (site: string, signedIn: boolean) => string;
|
|
739
716
|
cloudTitle: (site: string) => string;
|
|
740
717
|
cloudDescription: (site: string) => string;
|
|
@@ -1134,9 +1111,8 @@ type Frame = Omit<FrameLocator, 'owner'> & {
|
|
|
1134
1111
|
/**
|
|
1135
1112
|
* Which backend serves this attachment, fixed for its life. The same call can draw a card on one
|
|
1136
1113
|
* backend and not the other, and spends a different identity on each, so an app must be able to
|
|
1137
|
-
* tell.
|
|
1138
|
-
*
|
|
1139
|
-
* backend that names none.
|
|
1114
|
+
* tell. Undefined only for a Frame an app built itself with `createFrame` from a backend that
|
|
1115
|
+
* names none.
|
|
1140
1116
|
*/
|
|
1141
1117
|
backend(): 'cloud' | 'extension' | undefined;
|
|
1142
1118
|
/**
|
|
@@ -1288,6 +1264,10 @@ type Frame = Omit<FrameLocator, 'owner'> & {
|
|
|
1288
1264
|
* reload the app`.
|
|
1289
1265
|
* - cloud, `Error` `frame.clearCookies: the cookies are gone from this attachment, but its jar did
|
|
1290
1266
|
* not take the removal, so other attachments may still send them; call it again`.
|
|
1267
|
+
* - cloud, `Error` `frame.clearCookies: this attachment's jar is sealed under the FKN account's key,
|
|
1268
|
+
* which this device does not hold yet; unlock it and call it again`, with nothing removed: the
|
|
1269
|
+
* jar runs without the sealed cookies until the key card is answered, so a removal then would
|
|
1270
|
+
* only look done.
|
|
1291
1271
|
* - cloud, `TimeoutError` `frame.clearCookies: the render proxy did not answer within 30000ms; the
|
|
1292
1272
|
* cookies may or may not be gone, and calling it again is safe`.
|
|
1293
1273
|
* - extension, `ExtensionOperationUnsupportedError` (operation `'clearCookies'`)
|
|
@@ -1372,9 +1352,13 @@ type Frame = Omit<FrameLocator, 'owner'> & {
|
|
|
1372
1352
|
*
|
|
1373
1353
|
* - `'persistent'`, the default: the cloud render proxy's jar of the app's top-level site
|
|
1374
1354
|
* (https://fkn.app for every fkn.app app), which every app of that site shares, the same jar its
|
|
1375
|
-
* inline frames and its windows use, kept across visits.
|
|
1376
|
-
*
|
|
1377
|
-
*
|
|
1355
|
+
* inline frames and its windows use, kept across visits on this device. Once a key the FKN api
|
|
1356
|
+
* vouched for reaches it, the jar is written sealed under a key derived from the account's for that
|
|
1357
|
+
* site: a copy of the browser's files without that key shows none of its cookies, and a device that
|
|
1358
|
+
* remembers the account's key holds what opens them. Without an account it is kept in the clear,
|
|
1359
|
+
* and once an account's jar on that site is sealed, as a jar of its own that the account's never
|
|
1360
|
+
* takes in. Always the cloud backend, whatever is installed, so `frame.backend()` answers
|
|
1361
|
+
* `'cloud'`. Its requests leave through WebVPN, which keeps the cookies their answers set.
|
|
1378
1362
|
* - `'ephemeral'`: a fresh jar of the attachment's own, with site storage under a namespace of its
|
|
1379
1363
|
* own, both gone with it, seeded from `storageState` when one is given. Always the cloud backend:
|
|
1380
1364
|
* the browser keeps a partition's cookies after its frame goes, so no extension jar ends with the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as WriteData, i as Stats, n as MakeOptions, o as WriteOptions, r as ReadOptions, t as Callback } from "./index-BQgZVQl7.js";
|
|
2
|
-
import { a as StorageAccountChangedError, b as PinOptions, d as captureAccount$1, g as storage_d_exports, i as SealedRead, o as StorageAccountPinUnsupportedError, p as isAccountChanged, v as FileEntry, x as WriteData$1, y as FileSystem } from "./storage-
|
|
3
|
-
import { c as STORAGE_ACCOUNT_CHANGED, l as STORAGE_ACCOUNT_PIN_UNSUPPORTED } from "./messages-
|
|
2
|
+
import { a as StorageAccountChangedError, b as PinOptions, d as captureAccount$1, g as storage_d_exports, i as SealedRead, o as StorageAccountPinUnsupportedError, p as isAccountChanged, v as FileEntry, x as WriteData$1, y as FileSystem } from "./storage-BLBsmkmp.js";
|
|
3
|
+
import { c as STORAGE_ACCOUNT_CHANGED, l as STORAGE_ACCOUNT_PIN_UNSUPPORTED } from "./messages-d7pvCXPn.js";
|
|
4
4
|
declare namespace hybrid_d_exports {
|
|
5
5
|
export { AdoptSummary, ConflictResolution, ConflictResolver, ConflictSide, FileConflict, FileEntry, FileSystem, WriteData$1 as WriteData, adopt$1 as adopt, adoptable$1 as adoptable, available$1 as available, captureAccount, list, onConflict$1 as onConflict, pending$1 as pending, pendingDeletes$1 as pendingDeletes, pull$1 as pull, readFile$1 as readFile, readFileSealed$1 as readFileSealed, remove, replicating$1 as replicating, writeFile$1 as writeFile };
|
|
6
6
|
}
|
|
@@ -46,15 +46,10 @@ type FileConflict = {
|
|
|
46
46
|
* What should be at that path. Return one side's bytes, or anything else as a merge; null leaves the
|
|
47
47
|
* file alone and the summary reports it unresolved.
|
|
48
48
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* That identity is sound only because the resolver runs in THIS realm: the reads are memoized here,
|
|
54
|
-
* so the object the app holds is the object compared. A value that crosses osra arrives as a
|
|
55
|
-
* different object with equal content, in both directions, which `tests/osra-identity.browser.test.ts`
|
|
56
|
-
* pins against a real channel. So a resolver whose answer ever crossed a realm would simply read as a
|
|
57
|
-
* merge: one redundant write, never a wrong file.
|
|
49
|
+
* Whatever comes back is what wins. Returning the very Blob that `readLocal()` or `readCloud()`
|
|
50
|
+
* handed you is recognised by identity, so picking a side costs one write rather than two. An answer
|
|
51
|
+
* that crossed a realm (osra) arrives as a different object, so it reads as a merge: one redundant
|
|
52
|
+
* write, never a wrong file.
|
|
58
53
|
*/
|
|
59
54
|
type ConflictResolution = WriteData$1 | null;
|
|
60
55
|
type ConflictResolver = (conflict: FileConflict) => Promise<ConflictResolution> | ConflictResolution;
|
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-D4uqe_rb.cjs"),n=require("./extension-YBe6Q6r_.cjs"),r=require("./api--LOXTOpv.cjs"),i=require("./busy-Dv8wzE5M.cjs"),a=require("./cloud-CKCrMMB_.cjs"),o=require("./dns.cjs"),s=require("./net.cjs"),c=require("./dgram.cjs"),l=require("./http.cjs"),u=require("./desktop.cjs"),d=require("./fs-p0bOOj5n.cjs"),f=require("./opfs.cjs"),p=require("./packages.cjs"),m=require("./rooms.cjs"),h=require("./account.cjs"),g=require("./connect-button-BpXDs7tw.cjs");let _=require("osra");var v=1e4,y=150,b=()=>new Promise(e=>{if(t.nt())return e(!0);let n,r=setTimeout(()=>i(t.nt()),v),i=t=>{clearTimeout(n),clearTimeout(r),o.disconnect(),document.removeEventListener(`readystatechange`,s),e(t)},a=()=>{clearTimeout(n),n=setTimeout(()=>i(t.nt()),y)},o=new MutationObserver(()=>{t.nt()&&i(!0)}),s=()=>{document.readyState===`complete`&&!t.nt()&&a()};o.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-fkn-extension`]}),document.addEventListener(`readystatechange`,s),document.readyState===`complete`&&a()}),x=(async e=>{let{kind:n,cookies:r}=t.o(e);if(n===`window`){let n=e;return r===`native`?t.a(n):a.i(n)}let i=e;return r===`native`?S(i):a.i(i)}),S=async e=>(a.a(e),await b(),t.a(e)),C=`https://fkn.app`,w=async(e,t)=>{if(typeof window>`u`)throw Error(`FKN @fkn/lib: relayWorker must be called from the main thread`);let n=await r.f;if(!n)throw Error(`FKN @fkn/lib: relayWorker found no FKN transport in this realm`);r.d();let a=i.t(`relayed worker`);t?.unregisterSignal?.aborted?a():t?.unregisterSignal?.addEventListener(`abort`,a,{once:!0});let o=n.emit instanceof MessagePort?{}:{originA:t?.originA??C,originB:t?.originB??`*`};(0,_.relay)(n,e,{key:`fkn-api`,...o,unregisterSignal:t?.unregisterSignal})},T=async()=>typeof window>`u`?!1:(await r.o).connect.prompt(location.origin).catch(()=>!1),E=async()=>typeof window>`u`?null:(await r.o).relay.prompt().catch(()=>null),D=new Set,O=e=>(D.add(e),()=>{D.delete(e)}),k=()=>{if(D.size===0)return!1;for(let e of[...D])try{e()}catch{}return!0},A=(e,t)=>{if(typeof e?.onUpdateTaken==`function`)return Promise.resolve(e.onUpdateTaken(t))},j=e.t({applyUpdate:()=>W,busyReasons:()=>U,onUpdate:()=>R,onUpdateTaken:()=>z,updateReady:()=>M}),M=async()=>typeof window>`u`?!1:r.o.then(e=>e.shell?.updateReady()).then(e=>e===!0).catch(()=>!1),N=new Set,P=!1,F=()=>{P=!0;for(let e of[...N])try{e()}catch{}},I=0,L=()=>{let e=r.c();e&&N.size!==0&&I!==e.epoch&&(I=e.epoch,P=!1,Promise.resolve(e.remote.shell?.onUpdate(F)).catch(()=>{I===e.epoch&&(I=0)}))};typeof window<`u`&&r.u(L);var R=async e=>{if(typeof window>`u`)return()=>{};if(N.add(e),P)try{e()}catch{}return L(),()=>{N.delete(e)}},z=e=>typeof window>`u`?()=>{}:O(e),B=0,V=!1,H=()=>{if(!k()&&!V){V=!0;try{location.reload()}catch{}}};typeof window<`u`&&r.u(()=>{let e=r.c();if(!e||B===e.epoch)return;B=e.epoch;let t=A(e.remote.shell,H);if(!t){B=0;return}t.catch(()=>{B===e.epoch&&(B=0)})});var U=()=>i.n(),W=async()=>typeof window>`u`?!1:r.o.then(e=>e.shell?.applyUpdate()).then(e=>e===!0).catch(()=>!1);exports.ATTACH_FRAME_EVENT_KEY=t.i,exports.BACKGROUND_STOPPED=n.a,exports.CATEGORIES=t.w,exports.EXTENSION_ABI=t.ot,exports.ExtensionOperationUnsupportedError=t.st,exports.ExtensionOutdatedError=t.ct,exports.FORGEABLE_HEADERS=t.Z,exports.FrameWindowBlockedError=t.g,exports.FrameWindowRefusedError=t._,exports.LOCATOR_DENIED=t.A,exports.LOCATOR_ERROR=t.I,exports.LOCATOR_INVALID=t.R,exports.LOCATOR_UNSUPPORTED=t.D,exports.PERMISSION_DENIED=t.t,exports.REQUIRED_EXTENSION_ABI=t.lt,exports.TimeoutError=t.E,Object.defineProperty(exports,"account",{enumerable:!0,get:function(){return h.t}}),exports.assertAttachableFrameUrl=t.x,exports.assertFetchableUrl=t.W,exports.assertForgeableHeaders=t.Q,exports.assertLockdownApplicable=t.S,exports.assertOneCookieIdentity=t.$,exports.attachFrame=x,exports.attachFramePermission=t.v,exports.box=t.ft,Object.defineProperty(exports,"cloud",{enumerable:!0,get:function(){return a.n}}),exports.connect=T,exports.connectButtonUrl=g.t,exports.cookies=t.H,exports.createFrame=t.y,exports.createVideoElementHandle=t.pt,Object.defineProperty(exports,"desktop",{enumerable:!0,get:function(){return u.t}}),Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,"extension",{enumerable:!0,get:function(){return n.t}}),exports.fetch=n.n,exports.fetchCredentialedPermission=t.K,exports.fetchLocalPermission=t.q,exports.fetchPermission=t.J,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return d.u}}),exports.gotoPermission=t.b,exports.handleRevivableModules=t.dt,exports.hasForgedCookie=t.et,Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return l.t}}),exports.isBackgroundStopped=n.o,exports.isBlockedFetchUrl=t.Y,exports.isBlockedFrameUrl=t.C,exports.isExtensionExposed=t.nt,exports.isLocalNetworkUrl=t.X,exports.isLocatorDenied=t.L,exports.isLocatorInvalid=t.M,exports.isLocatorUnsupported=t.O,exports.isPermissionDenied=t.n,exports.isTerminalError=t.F,exports.isType=t.mt,exports.modifyRequestHeadersPermission=t.z,Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return s.t}}),Object.defineProperty(exports,"opfs",{enumerable:!0,get:function(){return f.t}}),Object.defineProperty(exports,"packages",{enumerable:!0,get:function(){return p.t}}),exports.permissions=t.r,exports.promptInstall=n.i,exports.promptRelay=E,exports.readCookiePermission=t.U,exports.readExtensionHandshake=t.rt,exports.relayWorker=w,exports.removeRequestHeaderRule=t.B,exports.revive=t.ht,Object.defineProperty(exports,"rooms",{enumerable:!0,get:function(){return m.t}}),exports.setMissingExtensionHandler=t.it,exports.setRequestHeaderRule=t.V,Object.defineProperty(exports,"shell",{enumerable:!0,get:function(){return j}}),exports.supportsOperation=t.ut,exports.type=t.gt,exports.waitForExtensionExposure=t.at;
|
package/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as account_d_exports } from "./account.js";
|
|
2
|
-
import { $ as GateTools, A as attachFramePermission, B as CategoryMeta, C as FrameWindowRefusal, D as StorageState, E as Locator, F as LegacyPermissionRequest, G as VideoElementState, H as handleRevivableModules, I as PermissionGrant, J as isType, K as box, L as PermissionRequest, M as gotoPermission, N as CategoryGrant, O as StorageStateCookie, P as CategoryRequest, Q as Gate, R as permissions, S as FrameWindowOptions, T as GotoOptions, U as BoxedVideoElement, V as PermissionCategory, W as RemoteVideoElement, X as type, Y as revive, Z as Executor, _ as FrameEventMap, a as AttachCookies, b as FramePostMessageOptions, c as BlankPage, d as CookieMatchWire, et as OperationRequest, f as Frame, g as FrameEventListener, h as FrameDocumentEvent, i as AddScriptTagOptions, j as createFrame, k as WindowFrame, l as ClearCookiesOptions, m as FrameBackendEvent, o as AttachFrameOptions, p as FrameBackend, q as createVideoElementHandle, r as AttachFrameFunction, s as AttachWindowOptions, t as ATTACH_FRAME_EVENT_KEY, tt as SelectorPart, u as ClearCookiesWire, v as FrameLocator, w as FrameWindowRefusedError, x as FrameWindowBlockedError, y as FrameMessageEvent, z as CATEGORIES } from "./index-
|
|
3
|
-
import { $ as isLocatorInvalid, A as CookieDetails, B as fetchPermission, C as assertLockdownApplicable, D as modifyRequestHeadersPermission, E as RequestHeaderRule, F as ProxyFetchRequest, G as assertOneCookieIdentity, H as isLocalNetworkUrl, I as assertFetchableUrl, J as LOCATOR_ERROR, K as hasForgedCookie, M as cookies, N as readCookiePermission, O as removeRequestHeaderRule, P as FetchInit, Q as isLocatorDenied, R as fetchCredentialedPermission, S as assertAttachableFrameUrl, T as HeaderOperation, U as FORGEABLE_HEADERS, V as isBlockedFetchUrl, W as assertForgeableHeaders, X as LOCATOR_UNSUPPORTED, Y as LOCATOR_INVALID, Z as TimeoutError, _ as BackgroundStoppedError, b as PermissionDeniedError, c as setMissingExtensionHandler, d as ExtensionHandshake, et as isLocatorUnsupported, f as ExtensionOperationUnsupportedError, g as BACKGROUND_STOPPED, h as supportsOperation, i as promptInstall, j as SiteCookie, k as setRequestHeaderRule, l as waitForExtensionExposure, m as REQUIRED_EXTENSION_ABI, n as fetch, o as isExtensionExposed, p as ExtensionOutdatedError, q as LOCATOR_DENIED, s as readExtensionHandshake, t as extension_d_exports, tt as isTerminalError, u as EXTENSION_ABI, v as isBackgroundStopped, w as isBlockedFrameUrl, x as isPermissionDenied, y as PERMISSION_DENIED, z as fetchLocalPermission } from "./extension-
|
|
4
|
-
import { n as cloud_d_exports } from "./cloud-
|
|
2
|
+
import { $ as GateTools, A as attachFramePermission, B as CategoryMeta, C as FrameWindowRefusal, D as StorageState, E as Locator, F as LegacyPermissionRequest, G as VideoElementState, H as handleRevivableModules, I as PermissionGrant, J as isType, K as box, L as PermissionRequest, M as gotoPermission, N as CategoryGrant, O as StorageStateCookie, P as CategoryRequest, Q as Gate, R as permissions, S as FrameWindowOptions, T as GotoOptions, U as BoxedVideoElement, V as PermissionCategory, W as RemoteVideoElement, X as type, Y as revive, Z as Executor, _ as FrameEventMap, a as AttachCookies, b as FramePostMessageOptions, c as BlankPage, d as CookieMatchWire, et as OperationRequest, f as Frame, g as FrameEventListener, h as FrameDocumentEvent, i as AddScriptTagOptions, j as createFrame, k as WindowFrame, l as ClearCookiesOptions, m as FrameBackendEvent, o as AttachFrameOptions, p as FrameBackend, q as createVideoElementHandle, r as AttachFrameFunction, s as AttachWindowOptions, t as ATTACH_FRAME_EVENT_KEY, tt as SelectorPart, u as ClearCookiesWire, v as FrameLocator, w as FrameWindowRefusedError, x as FrameWindowBlockedError, y as FrameMessageEvent, z as CATEGORIES } from "./index-C8Y-YHrU.js";
|
|
3
|
+
import { $ as isLocatorInvalid, A as CookieDetails, B as fetchPermission, C as assertLockdownApplicable, D as modifyRequestHeadersPermission, E as RequestHeaderRule, F as ProxyFetchRequest, G as assertOneCookieIdentity, H as isLocalNetworkUrl, I as assertFetchableUrl, J as LOCATOR_ERROR, K as hasForgedCookie, M as cookies, N as readCookiePermission, O as removeRequestHeaderRule, P as FetchInit, Q as isLocatorDenied, R as fetchCredentialedPermission, S as assertAttachableFrameUrl, T as HeaderOperation, U as FORGEABLE_HEADERS, V as isBlockedFetchUrl, W as assertForgeableHeaders, X as LOCATOR_UNSUPPORTED, Y as LOCATOR_INVALID, Z as TimeoutError, _ as BackgroundStoppedError, b as PermissionDeniedError, c as setMissingExtensionHandler, d as ExtensionHandshake, et as isLocatorUnsupported, f as ExtensionOperationUnsupportedError, g as BACKGROUND_STOPPED, h as supportsOperation, i as promptInstall, j as SiteCookie, k as setRequestHeaderRule, l as waitForExtensionExposure, m as REQUIRED_EXTENSION_ABI, n as fetch, o as isExtensionExposed, p as ExtensionOutdatedError, q as LOCATOR_DENIED, s as readExtensionHandshake, t as extension_d_exports, tt as isTerminalError, u as EXTENSION_ABI, v as isBackgroundStopped, w as isBlockedFrameUrl, x as isPermissionDenied, y as PERMISSION_DENIED, z as fetchLocalPermission } from "./extension-X8cnvZej.js";
|
|
4
|
+
import { n as cloud_d_exports } from "./cloud-KBzjWzt1.js";
|
|
5
5
|
import { t as dns_d_exports } from "./dns.js";
|
|
6
|
-
import { s as net_d_exports } from "./net-
|
|
6
|
+
import { s as net_d_exports } from "./net-eyWUIVn2.js";
|
|
7
7
|
import { t as dgram_d_exports } from "./dgram.js";
|
|
8
8
|
import { t as http_d_exports } from "./http.js";
|
|
9
9
|
import { t as desktop_d_exports } from "./desktop.js";
|
|
10
|
-
import { u as index_d_exports } from "./index-
|
|
10
|
+
import { u as index_d_exports } from "./index-DKr9L2RI.js";
|
|
11
11
|
import { t as index_d_exports$1 } from "./opfs.js";
|
|
12
12
|
import { t as packages_d_exports } from "./packages.js";
|
|
13
13
|
import { t as rooms_d_exports } from "./rooms.js";
|
|
@@ -31,6 +31,18 @@ import { t as connectButtonUrl } from "./connect-button-Cp0NS95-.js";
|
|
|
31
31
|
export declare const attachFrame: AttachFrameFunction;
|
|
32
32
|
//#endregion
|
|
33
33
|
//#region src/relay.d.ts
|
|
34
|
+
/**
|
|
35
|
+
* Bridges a worker into the FKN API: once called, the worker can import `@fkn/lib` and use `net` /
|
|
36
|
+
* `dgram` exactly like the main thread. Main thread only.
|
|
37
|
+
*
|
|
38
|
+
* `originA` (default `WEB_ORIGIN`) is the `targetOrigin` for posts to the iframe, `originB` (default
|
|
39
|
+
* `'*'`) the one for posts to the worker, which enforces none. Pass `WEB_ORIGIN` for both only when
|
|
40
|
+
* relaying between two windows on the FKN origin.
|
|
41
|
+
*
|
|
42
|
+
* The page hands its `fkn-api` channel to the worker for good, and its own calls move to
|
|
43
|
+
* `fkn-api-window`. Against a cached FKN page from before that channel, the page's own calls refuse
|
|
44
|
+
* with `OwnChannelUnavailableError` and FKN's UI and account changes stay off here until a reload.
|
|
45
|
+
*/
|
|
34
46
|
export declare const relayWorker: (worker: Worker, options?: {
|
|
35
47
|
unregisterSignal?: AbortSignal;
|
|
36
48
|
originA?: string;
|
|
@@ -47,31 +59,20 @@ declare namespace shell_d_exports {
|
|
|
47
59
|
}
|
|
48
60
|
/**
|
|
49
61
|
* The FKN shell's update surface, for apps that want a say in when the platform frame reloads.
|
|
62
|
+
* Nothing here fires on its own schedule. Two moments:
|
|
50
63
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
64
|
+
* - **READY**, `onUpdate` / `updateReady`: a newer shell is downloaded and nothing has happened. The
|
|
65
|
+
* broker offers it in its own header and `applyUpdate` lets the app offer it too. It is never taken
|
|
66
|
+
* without a person asking, since only the app knows what a reload costs right now. The one
|
|
67
|
+
* exception: a broker frame that finds a newer shell while loading, before answering this page and
|
|
68
|
+
* with no other fkn.app window open, reloads itself first, so nothing of the app is interrupted.
|
|
69
|
+
* - **TAKEN**, `onUpdateTaken`: someone pressed update, here or in another tab, and the new shell
|
|
70
|
+
* controls every page on the origin. Each page now runs a new worker against an old-build document,
|
|
71
|
+
* so the lib RELOADS THE PAGE by default; an app that cannot be interrupted registers a handler.
|
|
53
72
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* a reload costs right now, and a torrent mid-download is the case that matters. The one exception
|
|
58
|
-
* is a broker frame that finds a newer shell as it loads, before it has answered this page at all,
|
|
59
|
-
* while no other fkn.app window is open: it reloads its own frame first, so this page's first
|
|
60
|
-
* connection is simply to the newer shell and nothing of the app is interrupted.
|
|
61
|
-
* - **TAKEN**, `onUpdateTaken`. Someone pressed update, here or in another tab, and the new shell is
|
|
62
|
-
* now in control of every page on the origin. That leaves each one running a new worker against a
|
|
63
|
-
* document from the old build, so the lib RELOADS THE PAGE by default to end the mix. An app that
|
|
64
|
-
* cannot be interrupted registers a handler and decides for itself.
|
|
65
|
-
*
|
|
66
|
-
* A lib-side driver that took a ready update by ITSELF, on an idle-looking page, shipped in 0.9.20
|
|
67
|
-
* to 0.9.22 and was removed. Idleness measured from the app realm cannot see a transfer running in
|
|
68
|
-
* a worker, and the cost of being wrong is someone's download. The default reload above is not that
|
|
69
|
-
* driver returning: it happens only after a person has pressed update, and only to finish what they
|
|
70
|
-
* asked for.
|
|
71
|
-
*
|
|
72
|
-
* The page's connection to a replaced frame is re-established automatically either way, which is
|
|
73
|
-
* what makes the button cheap to press: a call in flight at that moment rejects with a named error
|
|
74
|
-
* rather than hanging.
|
|
73
|
+
* The lib never takes a ready update by itself: idleness seen from the app realm cannot see a
|
|
74
|
+
* transfer running in a worker. The page's connection to a replaced frame is re-established
|
|
75
|
+
* automatically, and a call in flight at that moment rejects with a named error rather than hanging.
|
|
75
76
|
*/
|
|
76
77
|
/** Whether a newer FKN shell is downloaded and ready to apply. */
|
|
77
78
|
declare const updateReady: () => Promise<boolean>;
|
|
@@ -106,17 +107,13 @@ declare const onUpdate: (callback: () => void) => Promise<() => void>;
|
|
|
106
107
|
*/
|
|
107
108
|
declare const onUpdateTaken: (handler: () => void) => (() => void);
|
|
108
109
|
/**
|
|
109
|
-
* What a shell reload would sever right now, as
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* servers, a streaming proxy response, a mounted package, a live frame attachment, unflushed
|
|
114
|
-
* write-behind. An empty list is not a promise that a reload is free, only that this realm holds
|
|
115
|
-
* nothing the lib knows about, so an app with state of its own should weigh that too.
|
|
110
|
+
* What a shell reload would sever right now, as human-readable reasons, empty when nothing is bound
|
|
111
|
+
* to the broker connection: open sockets and listening servers, a streaming proxy response, a mounted
|
|
112
|
+
* package, a live frame attachment, unflushed write-behind. Empty is not a promise that a reload is
|
|
113
|
+
* free, only that this realm holds nothing the lib knows about.
|
|
116
114
|
*
|
|
117
|
-
* It is per REALM
|
|
118
|
-
*
|
|
119
|
-
* app whose transfers live in a worker should ask the worker, not the page.
|
|
115
|
+
* It is per REALM: a worker that imports `@fkn/lib/net` keeps its own tally, which the window cannot
|
|
116
|
+
* see. An app whose transfers live in a worker should ask the worker, not the page.
|
|
120
117
|
*/
|
|
121
118
|
declare const busyReasons: () => string[];
|
|
122
119
|
/**
|
package/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
|
|
2
|
-
import {
|
|
3
|
-
import { a as fe, i as pe, n as me, o as he, t as ge } from "./extension-
|
|
2
|
+
import { $ as t, A as n, B as r, C as i, D as a, E as o, F as ee, H as te, I as ne, J as s, K as re, L as ie, M as ae, O as c, Q as l, R as oe, S as se, U as ce, V as le, W as ue, X as de, Y as u, Z as d, _ as f, a as p, at as m, b as h, ct as g, dt as _, et as v, ft as y, g as b, gt as x, ht as S, i as C, it as w, lt as T, mt as E, n as D, nt as O, o as k, ot as A, pt as j, q as M, r as N, rt as P, st as F, t as I, ut as L, v as R, w as z, x as B, y as V, z as H } from "./lib-H5-e2A1h.js";
|
|
3
|
+
import { a as fe, i as pe, n as me, o as he, t as ge } from "./extension-Dmnh5pcs.js";
|
|
4
4
|
import { c as U, d as _e, f as ve, o as W, u as G } from "./api-DIgTslNb.js";
|
|
5
5
|
import { n as ye, t as be } from "./busy-B189uX--.js";
|
|
6
|
-
import { a as xe, i as K, n as Se } from "./cloud-
|
|
6
|
+
import { a as xe, i as K, n as Se } from "./cloud-CVWGyZRT.js";
|
|
7
7
|
import { t as Ce } from "./dns.js";
|
|
8
8
|
import { t as we } from "./net.js";
|
|
9
9
|
import { t as Te } from "./dgram.js";
|
|
@@ -18,29 +18,29 @@ import { t as Ne } from "./connect-button-DtsN3X1J.js";
|
|
|
18
18
|
import { relay as Pe } from "osra";
|
|
19
19
|
//#region src/frame.ts
|
|
20
20
|
var Fe = 1e4, Ie = 150, Le = () => new Promise((e) => {
|
|
21
|
-
if (
|
|
22
|
-
let t, n = setTimeout(() => r(
|
|
21
|
+
if (O()) return e(!0);
|
|
22
|
+
let t, n = setTimeout(() => r(O()), Fe), r = (r) => {
|
|
23
23
|
clearTimeout(t), clearTimeout(n), a.disconnect(), document.removeEventListener("readystatechange", o), e(r);
|
|
24
24
|
}, i = () => {
|
|
25
|
-
clearTimeout(t), t = setTimeout(() => r(
|
|
25
|
+
clearTimeout(t), t = setTimeout(() => r(O()), Ie);
|
|
26
26
|
}, a = new MutationObserver(() => {
|
|
27
|
-
|
|
27
|
+
O() && r(!0);
|
|
28
28
|
}), o = () => {
|
|
29
|
-
document.readyState === "complete" && !
|
|
29
|
+
document.readyState === "complete" && !O() && i();
|
|
30
30
|
};
|
|
31
31
|
a.observe(document.documentElement, {
|
|
32
32
|
attributes: !0,
|
|
33
33
|
attributeFilter: ["data-fkn-extension"]
|
|
34
34
|
}), document.addEventListener("readystatechange", o), document.readyState === "complete" && i();
|
|
35
35
|
}), Re = (async (e) => {
|
|
36
|
-
let { kind: t, cookies: n } =
|
|
36
|
+
let { kind: t, cookies: n } = k(e);
|
|
37
37
|
if (t === "window") {
|
|
38
38
|
let t = e;
|
|
39
|
-
return n === "native" ?
|
|
39
|
+
return n === "native" ? p(t) : K(t);
|
|
40
40
|
}
|
|
41
41
|
let r = e;
|
|
42
42
|
return n === "native" ? ze(r) : K(r);
|
|
43
|
-
}), ze = async (e) => (xe(e), await Le(),
|
|
43
|
+
}), ze = async (e) => (xe(e), await Le(), p(e)), Be = "https://fkn.app", Ve = async (e, t) => {
|
|
44
44
|
if (typeof window > "u") throw Error("FKN @fkn/lib: relayWorker must be called from the main thread");
|
|
45
45
|
let n = await ve;
|
|
46
46
|
if (!n) throw Error("FKN @fkn/lib: relayWorker found no FKN transport in this realm");
|
|
@@ -115,4 +115,4 @@ typeof window < "u" && G(() => {
|
|
|
115
115
|
});
|
|
116
116
|
var $e = () => ye(), et = async () => typeof window > "u" ? !1 : W.then((e) => e.shell?.applyUpdate()).then((e) => e === !0).catch(() => !1);
|
|
117
117
|
//#endregion
|
|
118
|
-
export {
|
|
118
|
+
export { C as ATTACH_FRAME_EVENT_KEY, fe as BACKGROUND_STOPPED, z as CATEGORIES, A as EXTENSION_ABI, F as ExtensionOperationUnsupportedError, g as ExtensionOutdatedError, d as FORGEABLE_HEADERS, b as FrameWindowBlockedError, f as FrameWindowRefusedError, n as LOCATOR_DENIED, ne as LOCATOR_ERROR, oe as LOCATOR_INVALID, a as LOCATOR_UNSUPPORTED, I as PERMISSION_DENIED, T as REQUIRED_EXTENSION_ABI, o as TimeoutError, Me as account, B as assertAttachableFrameUrl, ue as assertFetchableUrl, l as assertForgeableHeaders, se as assertLockdownApplicable, t as assertOneCookieIdentity, Re as attachFrame, R as attachFramePermission, y as box, Se as cloud, He as connect, Ne as connectButtonUrl, te as cookies, V as createFrame, j as createVideoElementHandle, De as desktop, Te as dgram, Ce as dns, ge as extension, me as fetch, re as fetchCredentialedPermission, M as fetchLocalPermission, s as fetchPermission, Oe as fs, h as gotoPermission, _ as handleRevivableModules, v as hasForgedCookie, Ee as http, he as isBackgroundStopped, u as isBlockedFetchUrl, i as isBlockedFrameUrl, O as isExtensionExposed, de as isLocalNetworkUrl, ie as isLocatorDenied, ae as isLocatorInvalid, c as isLocatorUnsupported, D as isPermissionDenied, ee as isTerminalError, E as isType, H as modifyRequestHeadersPermission, we as net, ke as opfs, Ae as packages, N as permissions, pe as promptInstall, Ue as promptRelay, ce as readCookiePermission, P as readExtensionHandshake, Ve as relayWorker, r as removeRequestHeaderRule, S as revive, je as rooms, w as setMissingExtensionHandler, le as setRequestHeaderRule, qe as shell, L as supportsOperation, x as type, m as waitForExtensionExposure };
|