@fkn/lib 0.9.18 → 0.9.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{api-BPnL3UKE.d.ts → api-CyWF0RUj.d.ts} +39 -39
- package/cloud/fetch.d.ts +1 -1
- package/cloud/fs.cjs +1 -1
- package/cloud/fs.d.ts +2 -2
- package/cloud/fs.js +1 -1
- package/cloud/net.d.ts +1 -1
- package/cloud-C8jfO0iJ.cjs +1 -0
- package/{cloud-BoteCXb4.d.ts → cloud-CQVtRvcI.d.ts} +4 -4
- package/cloud-C_1Dt_tR.js +209 -0
- package/cloud.cjs +1 -1
- package/cloud.d.ts +4 -4
- package/cloud.js +1 -1
- package/dgram.d.ts +1 -1
- package/extension-B3nD2u7c.cjs +1 -0
- package/{extension-CN9oFZ0Q.d.ts → extension-CMPZjuaV.d.ts} +1 -1
- package/{extension-DVO10P3i.js → extension-jRuNpBs3.js} +42 -42
- package/extension.cjs +1 -1
- package/extension.d.ts +2 -2
- package/extension.js +3 -3
- package/fs/promises.cjs +1 -1
- package/fs/promises.js +1 -1
- package/fs-BW5mVMmu.js +340 -0
- package/{fs-D5LFP4_n.d.ts → fs-CUmugp10.d.ts} +1 -1
- package/fs-DJm0bhjg.cjs +1 -0
- package/fs.cjs +1 -1
- package/fs.js +1 -1
- package/http.d.ts +1 -1
- package/{index-DLaonjpx.d.ts → index-DY8WjklJ.d.ts} +82 -0
- package/index.cjs +1 -1
- package/index.d.ts +37 -6
- package/index.js +41 -30
- package/lib-DbiVHPXE.cjs +53 -0
- package/{lib-CegQxwDI.js → lib-k3lstfa4.js} +178 -131
- package/{net-5t6B2LnQ.d.ts → net-ByL9yG7X.d.ts} +1 -1
- package/net.d.ts +1 -1
- package/package.json +1 -1
- package/{packages-vX-1yfRK.d.ts → packages-Cn8S-Hkn.d.ts} +20 -20
- package/packages.d.ts +1 -1
- package/{proxy-DcALGZ-U.d.ts → proxy-RU8sbq68.d.ts} +1 -1
- package/storage-BW-jDLUL.cjs +1 -0
- package/storage-C8hBot2f.js +51 -0
- package/storage-qxXFLgTM.d.ts +44 -0
- package/cloud-BQoppUw4.cjs +0 -1
- package/cloud-C8CeqUht.js +0 -130
- package/extension-4BM5hKrn.cjs +0 -1
- package/fs-Br0pOpNu.js +0 -315
- package/fs-fyR-J9up.cjs +0 -1
- package/lib-ulyxIbTr.cjs +0 -53
- package/storage-B1stLxSc.js +0 -37
- package/storage-BNQlgGqF.cjs +0 -1
- package/storage-CXIXrIxB.d.ts +0 -38
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
import { A as
|
|
1
|
+
import { a as StorageQuota, i as StorageEntry, o as StorageReadResult, r as SealedGeneration, s as WriteData, t as KeyState } from "./storage-qxXFLgTM.js";
|
|
2
|
+
import { A as InstalledPackage, D as MountDescriptor, F as PickOptions, I as Placement, M as PackageResult, O as ConnectOptions, P as PackagesFail, j as PackageQuery, k as InstallOptions, z as Caller } from "./packages-Cn8S-Hkn.js";
|
|
3
3
|
import { t as AddressLookupResult } from "./lookup-BtwWaCZJ.js";
|
|
4
|
+
//#region src/api/connect-store.d.ts
|
|
5
|
+
type ConnectAvailability = 'connected' | 'disconnected' | 'unknown';
|
|
6
|
+
//#endregion
|
|
4
7
|
//#region src/api/storage-prompt.d.ts
|
|
5
8
|
type AdoptRequest = {
|
|
6
9
|
files: number;
|
|
@@ -398,6 +401,27 @@ type HiddenSurface = {
|
|
|
398
401
|
level: DisplayLevel;
|
|
399
402
|
};
|
|
400
403
|
//#endregion
|
|
404
|
+
//#region src/api/frame-consent-store.d.ts
|
|
405
|
+
/**
|
|
406
|
+
* Session-lifetime consent for cloud `frame.fetch`, stored per (app, scope, host).
|
|
407
|
+
*
|
|
408
|
+
* sessionStorage on purpose, and no 'always' tier at all: a standing grant with no surface that
|
|
409
|
+
* shows and revokes it would recreate the extension path's invisible-deny defect over here. The
|
|
410
|
+
* persistent tier arrives WITH the identity bar, which is the surface built to carry it. Rows die
|
|
411
|
+
* with the tab, and 'once' answers are never written anywhere.
|
|
412
|
+
*
|
|
413
|
+
* Denies are not stored either: a refusal is answered by the card's cooldown (prompt-gate), not by
|
|
414
|
+
* silent state the user cannot see. The failure direction of a missing row is therefore 'ask
|
|
415
|
+
* again', never 'allow'.
|
|
416
|
+
*/
|
|
417
|
+
type FrameFetchScope = 'frame.fetchRead' | 'frame.fetchWrite';
|
|
418
|
+
//#endregion
|
|
419
|
+
//#region src/api/frame-consent.d.ts
|
|
420
|
+
type FrameConsentRequest = {
|
|
421
|
+
scope: FrameFetchScope;
|
|
422
|
+
hosts: string[];
|
|
423
|
+
};
|
|
424
|
+
//#endregion
|
|
401
425
|
//#region src/api/quota.d.ts
|
|
402
426
|
type Quota = {
|
|
403
427
|
overQuota: boolean;
|
|
@@ -416,35 +440,8 @@ type Account = {
|
|
|
416
440
|
premiumUntil: string | null;
|
|
417
441
|
};
|
|
418
442
|
//#endregion
|
|
419
|
-
//#region src/api/usage-meter.d.ts
|
|
420
|
-
type UsageMetric = 'webvpnUp' | 'webvpnDown' | 'proxyDown' | 'proxyRequests' | 'storageUp' | 'storageDown';
|
|
421
|
-
type UsageAdd = {
|
|
422
|
-
metric: UsageMetric;
|
|
423
|
-
amount: number;
|
|
424
|
-
};
|
|
425
|
-
type UsageBucket = {
|
|
426
|
-
key: string;
|
|
427
|
-
metrics: Partial<Record<UsageMetric, number>>;
|
|
428
|
-
};
|
|
429
|
-
type UsageSnapshot = {
|
|
430
|
-
epoch: string;
|
|
431
|
-
minutes: UsageBucket[];
|
|
432
|
-
hours: UsageBucket[];
|
|
433
|
-
days: UsageBucket[];
|
|
434
|
-
};
|
|
435
|
-
//#endregion
|
|
436
443
|
//#region src/api/data-plane.d.ts
|
|
437
444
|
declare const dataPlane: {
|
|
438
|
-
usage: {
|
|
439
|
-
report: (scopeKey: string, adds: UsageAdd[]) => Promise<void>;
|
|
440
|
-
read: (scopeKey: string) => Promise<UsageSnapshot>;
|
|
441
|
-
scopes: () => Promise<string[]>;
|
|
442
|
-
rates: () => Promise<{
|
|
443
|
-
up: number;
|
|
444
|
-
down: number;
|
|
445
|
-
}>;
|
|
446
|
-
suppress: (scopeKey: string) => Promise<void>;
|
|
447
|
-
};
|
|
448
445
|
cloud: {
|
|
449
446
|
fetch: (input: string | Request | URL, init?: (RequestInit | undefined) & {
|
|
450
447
|
render?: boolean;
|
|
@@ -461,32 +458,28 @@ declare const dataPlane: {
|
|
|
461
458
|
list: (scope?: string) => Promise<StorageEntry[]>;
|
|
462
459
|
quota: () => Promise<StorageQuota>;
|
|
463
460
|
readFile: (path: string, scope?: string) => Promise<StorageReadResult>;
|
|
464
|
-
writeFile: (path: string, data: WriteData, contentType: string | null, encryption: string, scope?: string) => Promise<void>;
|
|
461
|
+
writeFile: (path: string, data: WriteData, contentType: string | null, encryption: string | null, scope?: string, sealed?: SealedGeneration | null) => Promise<void>;
|
|
465
462
|
remove: (path: string, scope?: string) => Promise<void>;
|
|
466
463
|
keyState: () => Promise<KeyState>;
|
|
467
464
|
};
|
|
468
465
|
webvpn: {
|
|
469
466
|
tcpSocket: ({
|
|
470
467
|
remoteAddress: _remoteAddress,
|
|
471
|
-
remotePort
|
|
472
|
-
usageTag
|
|
468
|
+
remotePort
|
|
473
469
|
}: {
|
|
474
470
|
remoteAddress: string;
|
|
475
471
|
remotePort: number;
|
|
476
|
-
usageTag?: string;
|
|
477
472
|
}) => Promise<LocalTcpSocket>;
|
|
478
473
|
tcpSocketListener: ({
|
|
479
474
|
localAddress: _localAddress,
|
|
480
475
|
localPort,
|
|
481
476
|
onConnection,
|
|
482
|
-
onClose
|
|
483
|
-
usageTag
|
|
477
|
+
onClose
|
|
484
478
|
}: {
|
|
485
479
|
localAddress: string;
|
|
486
480
|
localPort: number;
|
|
487
481
|
onConnection: (connection: TcpSocketResult) => void | Promise<void>;
|
|
488
482
|
onClose?: (error?: Error) => void | Promise<void>;
|
|
489
|
-
usageTag?: string;
|
|
490
483
|
}) => Promise<{
|
|
491
484
|
localAddress: string;
|
|
492
485
|
localFamily: "IPv4" | "IPv6";
|
|
@@ -497,14 +490,12 @@ declare const dataPlane: {
|
|
|
497
490
|
type,
|
|
498
491
|
port,
|
|
499
492
|
address,
|
|
500
|
-
dataPort
|
|
501
|
-
usageTag
|
|
493
|
+
dataPort
|
|
502
494
|
}: {
|
|
503
495
|
type: 'udp4' | 'udp6';
|
|
504
496
|
port: number;
|
|
505
497
|
address: string;
|
|
506
498
|
dataPort?: boolean;
|
|
507
|
-
usageTag?: string;
|
|
508
499
|
}) => Promise<{
|
|
509
500
|
socketId: number;
|
|
510
501
|
dataPort: MessagePort | undefined;
|
|
@@ -566,6 +557,7 @@ declare const makeResolvers: (callerOf: () => Caller | undefined, ownsOverlay?:
|
|
|
566
557
|
};
|
|
567
558
|
readonly fs: {
|
|
568
559
|
readonly available: () => Promise<boolean>;
|
|
560
|
+
readonly availability: () => Promise<ConnectAvailability>;
|
|
569
561
|
readonly list: () => Promise<StorageEntry[]>;
|
|
570
562
|
readonly quota: () => Promise<StorageQuota>;
|
|
571
563
|
readonly readFile: (path: string) => Promise<Uint8Array<ArrayBufferLike>>;
|
|
@@ -656,6 +648,9 @@ declare const makeResolvers: (callerOf: () => Caller | undefined, ownsOverlay?:
|
|
|
656
648
|
readonly show: (reason?: string) => Promise<void>;
|
|
657
649
|
readonly hide: () => void;
|
|
658
650
|
};
|
|
651
|
+
readonly frameConsent: {
|
|
652
|
+
readonly ensure: (request: FrameConsentRequest) => Promise<boolean>;
|
|
653
|
+
};
|
|
659
654
|
readonly connect: {
|
|
660
655
|
readonly prompt: (consumerOrigin: string) => Promise<boolean>;
|
|
661
656
|
};
|
|
@@ -701,6 +696,11 @@ declare const makeResolvers: (callerOf: () => Caller | undefined, ownsOverlay?:
|
|
|
701
696
|
readonly logout: () => void;
|
|
702
697
|
readonly onChange: (listener: () => void) => (() => void);
|
|
703
698
|
};
|
|
699
|
+
readonly shell: {
|
|
700
|
+
readonly updateReady: () => Promise<boolean>;
|
|
701
|
+
readonly onUpdate: (callback: () => void) => () => void;
|
|
702
|
+
readonly applyUpdate: () => Promise<boolean>;
|
|
703
|
+
};
|
|
704
704
|
readonly proxyFetch: (input: Parameters<Cloud['fetch']>[0], init: Parameters<Cloud['fetch']>[1]) => Promise<Response>;
|
|
705
705
|
readonly webVpnTcpSocket: (options: Parameters<Cloud['webvpn']['tcpSocket']>[0]) => Promise<LocalTcpSocket>;
|
|
706
706
|
readonly webVpnTcpSocketListener: (options: Parameters<Cloud['webvpn']['tcpSocketListener']>[0]) => Promise<{
|
package/cloud/fetch.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as cloudFetch } from "../proxy-
|
|
1
|
+
import { t as cloudFetch } from "../proxy-RU8sbq68.js";
|
|
2
2
|
export { cloudFetch as fetch };
|
package/cloud/fs.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../rolldown-runtime-BIInC43l.cjs"),t=require("../node-fs-BMR2yCEt.cjs"),n=require("../storage-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../rolldown-runtime-BIInC43l.cjs"),t=require("../node-fs-BMR2yCEt.cjs"),n=require("../storage-BW-jDLUL.cjs");var r=e.t({STORAGE_NOT_FOUND:()=>n.p,StorageLockedError:()=>n.t,StorageNotFoundError:()=>n.n,available:()=>i,encryption:()=>n.i,isNotFound:()=>n.a,mkdir:()=>u,promises:()=>p,quota:()=>n.s,readFile:()=>a,readdir:()=>l,rename:()=>c,rm:()=>d,stat:()=>f,unlink:()=>s,unlock:()=>n.d,writeFile:()=>o}),{available:i,readFile:a,writeFile:o,unlink:s,rename:c,readdir:l,mkdir:u,rm:d,stat:f,promises:p}=t.t(n.u,{memfs:!1});exports.STORAGE_NOT_FOUND=n.p,exports.StorageLockedError=n.t,exports.StorageNotFoundError=n.n,exports.available=i,exports.encryption=n.i,exports.isNotFound=n.a,exports.mkdir=u,exports.promises=p,exports.quota=n.s,exports.readFile=a,exports.readdir=l,exports.rename=c,exports.rm=d,exports.stat=f,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}}),exports.unlink=s,exports.unlock=n.d,exports.writeFile=o;
|
package/cloud/fs.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as STORAGE_NOT_FOUND } from "../storage-
|
|
1
|
+
import { n as STORAGE_NOT_FOUND } from "../storage-qxXFLgTM.js";
|
|
2
2
|
import { a as Stats } from "../index-CJ0vHTcS.js";
|
|
3
|
-
import { _ as encryption, a as readFile, b as unlock, c as rm, d as writeFile, f as EncryptionStatus, g as StorageQuota, h as StorageNotFoundError, i as promises, l as stat, m as StorageLockedError, o as readdir, p as FileEntry, r as mkdir, s as rename, t as available, u as unlink, v as isNotFound, y as quota } from "../fs-
|
|
3
|
+
import { _ as encryption, a as readFile, b as unlock, c as rm, d as writeFile, f as EncryptionStatus, g as StorageQuota, h as StorageNotFoundError, i as promises, l as stat, m as StorageLockedError, o as readdir, p as FileEntry, r as mkdir, s as rename, t as available, u as unlink, v as isNotFound, y as quota } from "../fs-CUmugp10.js";
|
|
4
4
|
export { type EncryptionStatus, type FileEntry, STORAGE_NOT_FOUND, type Stats, StorageLockedError, StorageNotFoundError, type StorageQuota, available, encryption, isNotFound, mkdir, promises, quota, readFile, readdir, rename, rm, stat, unlink, unlock, writeFile };
|
package/cloud/fs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "../rolldown-runtime-Dy4uBu1J.js";
|
|
2
2
|
import { t } from "../node-fs-DKfokOlh.js";
|
|
3
|
-
import { a as n, d as r, i, n as a, p as o, s, t as c, u as l } from "../storage-
|
|
3
|
+
import { a as n, d as r, i, n as a, p as o, s, t as c, u as l } from "../storage-C8hBot2f.js";
|
|
4
4
|
//#region src/lib/cloud/fs.ts
|
|
5
5
|
var u = /* @__PURE__ */ e({
|
|
6
6
|
STORAGE_NOT_FOUND: () => o,
|
package/cloud/net.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "../net-
|
|
1
|
+
import { a as createConnection, c as isIP, i as connect, l as isIPv4, n as Socket, o as createServer, r as _default, t as Server, u as isIPv6 } from "../net-ByL9yG7X.js";
|
|
2
2
|
export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-DbiVHPXE.cjs"),n=require("./api-kHMHDGar.cjs"),r=require("./proxy-B0gNjT8-.cjs"),i=require("./dns.cjs"),a=require("./cloud/fs.cjs"),o=require("./net-COzDDBnS.cjs"),s=require("./dgram-D2Or5f2e.cjs"),c=require("./http.cjs");let l=require("osra");var u={scope:`frame.fetchRead`,category:`network`,severity:3,unsafe:!0,title:`Read your account data on this site`,description:`Lets the app read pages and data from this site as you, using the session in the frame.`},d={scope:`frame.fetchWrite`,category:`network`,severity:3,unsafe:!0,title:`Change your account data on this site`,description:`Lets the app send changes to this site as you, using the session in the frame.`},f=new Set([`GET`,`HEAD`,`OPTIONS`]),p=(e,t)=>f.has((t?.method??`GET`).toUpperCase())?u:d,m=e=>{let t=[];for(let n of e){let e=n.trim().toLowerCase();!e||e.length>253||/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/.test(e)&&(t.includes(e)||t.push(e))}return t},h=(e,t)=>{if(!e.session)return{kind:`refuse`,reason:`frame.fetch on the cloud backend needs its own session: attach with syncCookies: false`};if(typeof t!=`string`)return{kind:`refuse`,reason:`frame.fetch: url must be a string`};let n;try{n=new URL(t)}catch{return{kind:`refuse`,reason:`frame.fetch on the cloud backend needs an absolute url`}}if(n.protocol!==`https:`&&n.protocol!==`http:`)return{kind:`refuse`,reason:`frame.fetch: only http(s) urls are supported`};if(!(e.declaredHosts.includes(n.hostname)||e.approvedOrigins.has(n.origin)))return{kind:`refuse`,reason:`frame.fetch: the target is outside the origins this attachment declared`};let r=e.declaredHosts.length?e.declaredHosts:[n.hostname];return{kind:`consent`,targetHost:n.hostname,promptHosts:r}},g=e=>e,_=`autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write`,v=2e4,y=65e3,b=3e4,x=5e3,S=new Set([]),C=()=>`https://fkn.app`,w=e=>!e||e===`about:blank`,T=e=>e?``:`incognito-${crypto.randomUUID()}`,E=({target:e,session:t,domains:n})=>{let r=new URL(`/attach-frame`,C());return e&&r.searchParams.set(`url`,e),t&&r.searchParams.set(`session`,t),n.length&&r.searchParams.set(`domains`,n.join(`,`)),r.href},D=(e,t,n)=>{let r,i=new Promise((e,i)=>{r=setTimeout(()=>i(Error(n)),t)});return Promise.race([e,i]).finally(()=>clearTimeout(r))},O=(e,t)=>{let n=()=>{a(),t()},r=e.parentNode,i=new MutationObserver(()=>{(!e.isConnected||e.parentNode!==r)&&(a(),t())}),a=()=>{window.removeEventListener(`pagehide`,n),i.disconnect()};window.addEventListener(`pagehide`,n,{once:!0}),r&&i.observe(r,{childList:!0}),e.isConnected||(a(),t())},k=()=>Object.assign(Error(`cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe`),{name:t.m}),A=(e,t)=>{let n=[...e.split(`;`),...t.split(`;`)].map(e=>e.trim()).filter(Boolean);return[...new Set(n)].join(`; `)},j=[300,1200,4e3],M=e=>{let t=()=>{if(!e.isConnected)return;let t=e.style.height,n=e.getBoundingClientRect();n.height&&(e.style.height=`${n.height-1}px`,setTimeout(()=>{e.style.height=t},50))};t();for(let e of j)setTimeout(t,e)},N=e=>{let t=e.getAttribute(`sandbox`);if(t===null)return;let n=new Set(t.toLowerCase().split(/\s+/).filter(Boolean)),r=[`allow-scripts`,`allow-same-origin`].filter(e=>!n.has(e));if(r.length)throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(` and `)} for the render proxy to load`)},P=async({iframe:e,domains:r=[],syncCookies:i=!0,lockdown:a=!1})=>{if(typeof window>`u`)throw Error(`cloud.attachFrame needs a window realm`);if(a)throw Error(`cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame`);if(!e.isConnected)throw Error(`cloud.attachFrame: the iframe must be connected to the document before attaching`);N(e);let o=e.getAttribute(`src`)??``,s=(()=>{if(w(o))return null;try{return new URL(e.src||o,location.href)}catch{throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${o}`)}})();if(s){let e=new URL(`/attach-frame`,C());if(s.origin===e.origin&&s.pathname===e.pathname)throw Error(`cloud.attachFrame: this iframe is already attached; navigate with the Frame returned by that attach or use a fresh iframe`)}let c=s?.href??``;c&&t.s(c);let u=c,d=T(i),f=m(r),j=new Set;try{j.add(new URL(c).origin)}catch{}let P=new AbortController,F=e.referrerPolicy,I=e.allow;if(e.referrerPolicy=`origin`,e.allow=A(_,e.allow),e.src=E({target:c,session:d,domains:f}),!e.contentWindow)throw Error(`cloud.attachFrame: the iframe window is not available`);try{let r=await D((0,l.expose)({},{key:`fkn-attach-frame`,origin:C(),transport:{receive:window,emit:e.contentWindow},unregisterSignal:P.signal,revivableModules:g(t.R)}),v,`cloud.attachFrame: timed out connecting to the render proxy page`);await D(r.ready(),y,`cloud.attachFrame: the render proxy never became ready`),c&&M(e),O(e,()=>P.abort());let i=e.contentWindow,a=()=>{if(!(!P.signal.aborted&&e.isConnected&&e.contentWindow===i))throw P.abort(),k()};return t.a({executor:{execute:(e,n,i)=>S.has(n)?Promise.reject(t.f(n,`cloud`)):(a(),r.executeLocator(e,n,i)),highlight:async()=>{}},gate:async e=>{if(e.operation!==`fetch`)return;let r=h({session:d,declaredHosts:f,approvedOrigins:j},e.args[0]);if(r.kind===`refuse`)throw t._(r.reason,`fetch`);if(!await(await n.t).frameConsent.ensure({scope:p(e.args[0],e.args[1]).scope,hosts:r.promptHosts}))throw t._(`frame.fetch: the user did not grant this`,`fetch`)},goto:async(t,n={})=>{let i=new URL(t,location.href).href;a();let{timeoutMs:o}=n;await D(r.goto(i,n),(o??b)+x,`cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded`),u=i;try{j.add(new URL(i).origin)}catch{}M(e)},url:()=>u})}catch(t){throw P.abort(),e.referrerPolicy=F,e.allow=I,e.src=c||`about:blank`,t}},F=()=>typeof window<`u`&&!0,I=async()=>{let e=await n.t.then(e=>e.cloud.quota());return{premium:e.premium,overQuota:e.overQuota,throttled:e.overQuota&&!e.premium,usedBytes:e.usedBytes,limitBytes:e.limitBytes,remainingBytes:e.remaining,bytesPerSecond:e.bytesPerSecond,bitsPerSecond:e.bytesPerSecond*8}},L=e.t({attachFrame:()=>P,available:()=>R,dgram:()=>s.i,dns:()=>i.t,fetch:()=>r.t,fs:()=>a.t,http:()=>c.t,net:()=>o.s,quota:()=>I}),R=()=>n.r;Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return R}});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as cloudFetch } from "./proxy-
|
|
2
|
-
import { d as Frame, u as AttachFrameOptions } from "./index-
|
|
1
|
+
import { t as cloudFetch } from "./proxy-RU8sbq68.js";
|
|
2
|
+
import { d as Frame, u as AttachFrameOptions } from "./index-DY8WjklJ.js";
|
|
3
3
|
import { t as dns_d_exports } from "./dns.js";
|
|
4
|
-
import { n as fs_d_exports } from "./fs-
|
|
5
|
-
import { s as net_d_exports } from "./net-
|
|
4
|
+
import { n as fs_d_exports } from "./fs-CUmugp10.js";
|
|
5
|
+
import { s as net_d_exports } from "./net-ByL9yG7X.js";
|
|
6
6
|
import { t as dgram_d_exports } from "./dgram.js";
|
|
7
7
|
import { t as http_d_exports } from "./http.js";
|
|
8
8
|
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
|
|
2
|
+
import { R as t, _ as n, a as r, f as i, m as a, s as o } from "./lib-k3lstfa4.js";
|
|
3
|
+
import { r as s, t as c } from "./api-DQ-V4Lls.js";
|
|
4
|
+
import { t as l } from "./proxy-BpqvCJmA.js";
|
|
5
|
+
import { t as u } from "./dns.js";
|
|
6
|
+
import { t as d } from "./cloud/fs.js";
|
|
7
|
+
import { s as f } from "./net-BbmQeMpt.js";
|
|
8
|
+
import { i as p } from "./dgram-DlGl_ho1.js";
|
|
9
|
+
import { t as m } from "./http.js";
|
|
10
|
+
import { expose as h } from "osra";
|
|
11
|
+
//#region node_modules/@mfkn/web-extension/lib/lib/locator-permissions.js
|
|
12
|
+
var g = {
|
|
13
|
+
scope: "frame.fetchRead",
|
|
14
|
+
category: "network",
|
|
15
|
+
severity: 3,
|
|
16
|
+
unsafe: !0,
|
|
17
|
+
title: "Read your account data on this site",
|
|
18
|
+
description: "Lets the app read pages and data from this site as you, using the session in the frame."
|
|
19
|
+
}, _ = {
|
|
20
|
+
scope: "frame.fetchWrite",
|
|
21
|
+
category: "network",
|
|
22
|
+
severity: 3,
|
|
23
|
+
unsafe: !0,
|
|
24
|
+
title: "Change your account data on this site",
|
|
25
|
+
description: "Lets the app send changes to this site as you, using the session in the frame."
|
|
26
|
+
}, v = /* @__PURE__ */ new Set([
|
|
27
|
+
"GET",
|
|
28
|
+
"HEAD",
|
|
29
|
+
"OPTIONS"
|
|
30
|
+
]), y = (e, t) => v.has((t?.method ?? "GET").toUpperCase()) ? g : _, b = (e) => {
|
|
31
|
+
let t = [];
|
|
32
|
+
for (let n of e) {
|
|
33
|
+
let e = n.trim().toLowerCase();
|
|
34
|
+
!e || e.length > 253 || /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/.test(e) && (t.includes(e) || t.push(e));
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
}, x = (e, t) => {
|
|
38
|
+
if (!e.session) return {
|
|
39
|
+
kind: "refuse",
|
|
40
|
+
reason: "frame.fetch on the cloud backend needs its own session: attach with syncCookies: false"
|
|
41
|
+
};
|
|
42
|
+
if (typeof t != "string") return {
|
|
43
|
+
kind: "refuse",
|
|
44
|
+
reason: "frame.fetch: url must be a string"
|
|
45
|
+
};
|
|
46
|
+
let n;
|
|
47
|
+
try {
|
|
48
|
+
n = new URL(t);
|
|
49
|
+
} catch {
|
|
50
|
+
return {
|
|
51
|
+
kind: "refuse",
|
|
52
|
+
reason: "frame.fetch on the cloud backend needs an absolute url"
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (n.protocol !== "https:" && n.protocol !== "http:") return {
|
|
56
|
+
kind: "refuse",
|
|
57
|
+
reason: "frame.fetch: only http(s) urls are supported"
|
|
58
|
+
};
|
|
59
|
+
if (!(e.declaredHosts.includes(n.hostname) || e.approvedOrigins.has(n.origin))) return {
|
|
60
|
+
kind: "refuse",
|
|
61
|
+
reason: "frame.fetch: the target is outside the origins this attachment declared"
|
|
62
|
+
};
|
|
63
|
+
let r = e.declaredHosts.length ? e.declaredHosts : [n.hostname];
|
|
64
|
+
return {
|
|
65
|
+
kind: "consent",
|
|
66
|
+
targetHost: n.hostname,
|
|
67
|
+
promptHosts: r
|
|
68
|
+
};
|
|
69
|
+
}, S = (e) => e, C = "autoplay; fullscreen; encrypted-media; picture-in-picture; clipboard-read; clipboard-write", w = 2e4, T = 65e3, E = 3e4, D = 5e3, O = /* @__PURE__ */ new Set([]), k = () => "https://fkn.app", A = (e) => !e || e === "about:blank", j = (e) => e ? "" : `incognito-${crypto.randomUUID()}`, M = ({ target: e, session: t, domains: n }) => {
|
|
70
|
+
let r = new URL("/attach-frame", k());
|
|
71
|
+
return e && r.searchParams.set("url", e), t && r.searchParams.set("session", t), n.length && r.searchParams.set("domains", n.join(",")), r.href;
|
|
72
|
+
}, N = (e, t, n) => {
|
|
73
|
+
let r, i = new Promise((e, i) => {
|
|
74
|
+
r = setTimeout(() => i(Error(n)), t);
|
|
75
|
+
});
|
|
76
|
+
return Promise.race([e, i]).finally(() => clearTimeout(r));
|
|
77
|
+
}, P = (e, t) => {
|
|
78
|
+
let n = () => {
|
|
79
|
+
a(), t();
|
|
80
|
+
}, r = e.parentNode, i = new MutationObserver(() => {
|
|
81
|
+
(!e.isConnected || e.parentNode !== r) && (a(), t());
|
|
82
|
+
}), a = () => {
|
|
83
|
+
window.removeEventListener("pagehide", n), i.disconnect();
|
|
84
|
+
};
|
|
85
|
+
window.addEventListener("pagehide", n, { once: !0 }), r && i.observe(r, { childList: !0 }), e.isConnected || (a(), t());
|
|
86
|
+
}, F = () => Object.assign(/* @__PURE__ */ Error("cloud.attachFrame: the attached iframe left the document or was reloaded; attach a fresh iframe"), { name: a }), I = (e, t) => {
|
|
87
|
+
let n = [...e.split(";"), ...t.split(";")].map((e) => e.trim()).filter(Boolean);
|
|
88
|
+
return [...new Set(n)].join("; ");
|
|
89
|
+
}, L = [
|
|
90
|
+
300,
|
|
91
|
+
1200,
|
|
92
|
+
4e3
|
|
93
|
+
], R = (e) => {
|
|
94
|
+
let t = () => {
|
|
95
|
+
if (!e.isConnected) return;
|
|
96
|
+
let t = e.style.height, n = e.getBoundingClientRect();
|
|
97
|
+
n.height && (e.style.height = `${n.height - 1}px`, setTimeout(() => {
|
|
98
|
+
e.style.height = t;
|
|
99
|
+
}, 50));
|
|
100
|
+
};
|
|
101
|
+
t();
|
|
102
|
+
for (let e of L) setTimeout(t, e);
|
|
103
|
+
}, z = (e) => {
|
|
104
|
+
let t = e.getAttribute("sandbox");
|
|
105
|
+
if (t === null) return;
|
|
106
|
+
let n = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), r = ["allow-scripts", "allow-same-origin"].filter((e) => !n.has(e));
|
|
107
|
+
if (r.length) throw Error(`cloud.attachFrame: the iframe's sandbox attribute must include ${r.join(" and ")} for the render proxy to load`);
|
|
108
|
+
}, B = async ({ iframe: e, domains: a = [], syncCookies: s = !0, lockdown: l = !1 }) => {
|
|
109
|
+
if (typeof window > "u") throw Error("cloud.attachFrame needs a window realm");
|
|
110
|
+
if (l) throw Error("cloud.attachFrame does not support lockdown; use the extension backend for a sealed frame");
|
|
111
|
+
if (!e.isConnected) throw Error("cloud.attachFrame: the iframe must be connected to the document before attaching");
|
|
112
|
+
z(e);
|
|
113
|
+
let u = e.getAttribute("src") ?? "", d = (() => {
|
|
114
|
+
if (A(u)) return null;
|
|
115
|
+
try {
|
|
116
|
+
return new URL(e.src || u, location.href);
|
|
117
|
+
} catch {
|
|
118
|
+
throw Error(`cloud.attachFrame: the iframe src is not a valid URL: ${u}`);
|
|
119
|
+
}
|
|
120
|
+
})();
|
|
121
|
+
if (d) {
|
|
122
|
+
let e = new URL("/attach-frame", k());
|
|
123
|
+
if (d.origin === e.origin && d.pathname === e.pathname) throw Error("cloud.attachFrame: this iframe is already attached; navigate with the Frame returned by that attach or use a fresh iframe");
|
|
124
|
+
}
|
|
125
|
+
let f = d?.href ?? "";
|
|
126
|
+
f && o(f);
|
|
127
|
+
let p = f, m = j(s), g = b(a), _ = /* @__PURE__ */ new Set();
|
|
128
|
+
try {
|
|
129
|
+
_.add(new URL(f).origin);
|
|
130
|
+
} catch {}
|
|
131
|
+
let v = new AbortController(), L = e.referrerPolicy, B = e.allow;
|
|
132
|
+
if (e.referrerPolicy = "origin", e.allow = I(C, e.allow), e.src = M({
|
|
133
|
+
target: f,
|
|
134
|
+
session: m,
|
|
135
|
+
domains: g
|
|
136
|
+
}), !e.contentWindow) throw Error("cloud.attachFrame: the iframe window is not available");
|
|
137
|
+
try {
|
|
138
|
+
let a = await N(h({}, {
|
|
139
|
+
key: "fkn-attach-frame",
|
|
140
|
+
origin: k(),
|
|
141
|
+
transport: {
|
|
142
|
+
receive: window,
|
|
143
|
+
emit: e.contentWindow
|
|
144
|
+
},
|
|
145
|
+
unregisterSignal: v.signal,
|
|
146
|
+
revivableModules: S(t)
|
|
147
|
+
}), w, "cloud.attachFrame: timed out connecting to the render proxy page");
|
|
148
|
+
await N(a.ready(), T, "cloud.attachFrame: the render proxy never became ready"), f && R(e), P(e, () => v.abort());
|
|
149
|
+
let o = e.contentWindow, s = () => {
|
|
150
|
+
if (!(!v.signal.aborted && e.isConnected && e.contentWindow === o)) throw v.abort(), F();
|
|
151
|
+
};
|
|
152
|
+
return r({
|
|
153
|
+
executor: {
|
|
154
|
+
execute: (e, t, n) => O.has(t) ? Promise.reject(i(t, "cloud")) : (s(), a.executeLocator(e, t, n)),
|
|
155
|
+
highlight: async () => {}
|
|
156
|
+
},
|
|
157
|
+
gate: async (e) => {
|
|
158
|
+
if (e.operation !== "fetch") return;
|
|
159
|
+
let t = x({
|
|
160
|
+
session: m,
|
|
161
|
+
declaredHosts: g,
|
|
162
|
+
approvedOrigins: _
|
|
163
|
+
}, e.args[0]);
|
|
164
|
+
if (t.kind === "refuse") throw n(t.reason, "fetch");
|
|
165
|
+
if (!await (await c).frameConsent.ensure({
|
|
166
|
+
scope: y(e.args[0], e.args[1]).scope,
|
|
167
|
+
hosts: t.promptHosts
|
|
168
|
+
})) throw n("frame.fetch: the user did not grant this", "fetch");
|
|
169
|
+
},
|
|
170
|
+
goto: async (t, n = {}) => {
|
|
171
|
+
let r = new URL(t, location.href).href;
|
|
172
|
+
s();
|
|
173
|
+
let { timeoutMs: i } = n;
|
|
174
|
+
await N(a.goto(r, n), (i ?? E) + D, "cloud.attachFrame: the render proxy did not answer goto; the frame may have been detached or its page reloaded"), p = r;
|
|
175
|
+
try {
|
|
176
|
+
_.add(new URL(r).origin);
|
|
177
|
+
} catch {}
|
|
178
|
+
R(e);
|
|
179
|
+
},
|
|
180
|
+
url: () => p
|
|
181
|
+
});
|
|
182
|
+
} catch (t) {
|
|
183
|
+
throw v.abort(), e.referrerPolicy = L, e.allow = B, e.src = f || "about:blank", t;
|
|
184
|
+
}
|
|
185
|
+
}, V = () => typeof window < "u" && !0, H = async () => {
|
|
186
|
+
let e = await c.then((e) => e.cloud.quota());
|
|
187
|
+
return {
|
|
188
|
+
premium: e.premium,
|
|
189
|
+
overQuota: e.overQuota,
|
|
190
|
+
throttled: e.overQuota && !e.premium,
|
|
191
|
+
usedBytes: e.usedBytes,
|
|
192
|
+
limitBytes: e.limitBytes,
|
|
193
|
+
remainingBytes: e.remaining,
|
|
194
|
+
bytesPerSecond: e.bytesPerSecond,
|
|
195
|
+
bitsPerSecond: e.bytesPerSecond * 8
|
|
196
|
+
};
|
|
197
|
+
}, U = /* @__PURE__ */ e({
|
|
198
|
+
attachFrame: () => B,
|
|
199
|
+
available: () => W,
|
|
200
|
+
dgram: () => p,
|
|
201
|
+
dns: () => u,
|
|
202
|
+
fetch: () => l,
|
|
203
|
+
fs: () => d,
|
|
204
|
+
http: () => m,
|
|
205
|
+
net: () => f,
|
|
206
|
+
quota: () => H
|
|
207
|
+
}), W = () => s;
|
|
208
|
+
//#endregion
|
|
209
|
+
export { V as a, B as i, U as n, H as r, W as t };
|
package/cloud.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-B0gNjT8-.cjs"),t=require("./cloud-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./proxy-B0gNjT8-.cjs"),t=require("./cloud-C8jfO0iJ.cjs"),n=require("./dns.cjs"),r=require("./cloud/fs.cjs"),i=require("./net-COzDDBnS.cjs"),a=require("./dgram-D2Or5f2e.cjs"),o=require("./http.cjs");exports.attachFrame=t.i,exports.available=t.t,Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return a.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return n.t}}),exports.fetch=e.t,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return r.t}}),Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return o.t}}),Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return i.s}}),exports.quota=t.r;
|
package/cloud.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as cloudFetch } from "./proxy-
|
|
2
|
-
import { a as attachFrame, i as quota, r as QuotaStatus, t as available } from "./cloud-
|
|
1
|
+
import { t as cloudFetch } from "./proxy-RU8sbq68.js";
|
|
2
|
+
import { a as attachFrame, i as quota, r as QuotaStatus, t as available } from "./cloud-CQVtRvcI.js";
|
|
3
3
|
import { t as dns_d_exports } from "./dns.js";
|
|
4
|
-
import { n as fs_d_exports } from "./fs-
|
|
5
|
-
import { s as net_d_exports } from "./net-
|
|
4
|
+
import { n as fs_d_exports } from "./fs-CUmugp10.js";
|
|
5
|
+
import { s as net_d_exports } from "./net-ByL9yG7X.js";
|
|
6
6
|
import { t as dgram_d_exports } from "./dgram.js";
|
|
7
7
|
import { t as http_d_exports } from "./http.js";
|
|
8
8
|
export { type QuotaStatus, attachFrame, available, dgram_d_exports as dgram, dns_d_exports as dns, cloudFetch as fetch, fs_d_exports as fs, http_d_exports as http, net_d_exports as net, quota };
|
package/cloud.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./proxy-BpqvCJmA.js";
|
|
2
|
-
import { i as t, r as n, t as r } from "./cloud-
|
|
2
|
+
import { i as t, r as n, t as r } from "./cloud-C_1Dt_tR.js";
|
|
3
3
|
import { t as i } from "./dns.js";
|
|
4
4
|
import { t as a } from "./cloud/fs.js";
|
|
5
5
|
import { s as o } from "./net-BbmQeMpt.js";
|
package/dgram.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-DbiVHPXE.cjs"),n=require("./api-kHMHDGar.cjs"),r=require("./proxy-B0gNjT8-.cjs"),i=require("./desktop.cjs");var a=async e=>{if(typeof window>`u`)return!1;if(t.F())return!0;let r=await n.t,i=null,a=new Promise(e=>{i=()=>{t.F()&&e(!0)},t.P.addEventListener(`statuschange`,i)}),o=r.installPrompt.show(e).then(()=>!1),s=await Promise.race([a,o]);return i&&t.P.removeEventListener(`statuschange`,i),await r.installPrompt.hide().catch(()=>{}),s},o=null;t.I(()=>(o||=a().then(()=>void 0).finally(()=>{o=null}),o));var s=()=>typeof document<`u`&&t.F(),c=async(e,n)=>{if(r.n(e),n?.credentials===`include`){if(typeof document>`u`)throw Error(`fetch with credentials needs the FKN extension, which only exists in window realms`);return t.w(e,n)}return s()?t.w(e,{...n,credentials:`omit`}):i.available()?i.fetch(e,n):r.t(e,n)},l=e.t({ATTACH_FRAME_EVENT_KEY:()=>t.n,FORGEABLE_HEADERS:()=>t.A,LOCATOR_DENIED:()=>t.h,LOCATOR_ERROR:()=>t.g,LOCATOR_UNSUPPORTED:()=>t.m,assertAttachableFrameUrl:()=>t.s,assertFetchableUrl:()=>t.C,assertForgeableHeaders:()=>t.j,assertLockdownApplicable:()=>t.c,assertOneCookieIdentity:()=>t.M,attachFrame:()=>t.r,attachFramePermission:()=>t.i,available:()=>s,box:()=>t.z,cookies:()=>t.x,createFrame:()=>t.a,createVideoElementHandle:()=>t.B,events:()=>t.P,extension:()=>t.P,fetch:()=>t.w,fetchCredentialedPermission:()=>t.T,fetchLocalPermission:()=>t.E,fetchPermission:()=>t.D,gotoPermission:()=>t.o,handleRevivableModules:()=>t.R,hasForgedCookie:()=>t.N,isBlockedFetchUrl:()=>t.O,isBlockedFrameUrl:()=>t.l,isExtensionExposed:()=>t.F,isLocalNetworkUrl:()=>t.k,isLocatorDenied:()=>t.p,isLocatorUnsupported:()=>t.u,isTerminalError:()=>t.d,isType:()=>t.V,modifyRequestHeadersPermission:()=>t.v,permissions:()=>t.t,promptInstall:()=>a,readCookiePermission:()=>t.S,removeRequestHeaderRule:()=>t.y,revive:()=>t.H,setMissingExtensionHandler:()=>t.I,setRequestHeaderRule:()=>t.b,type:()=>t.U,waitForExtensionExposure:()=>t.L});Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return l}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as fetch$1, A as LOCATOR_DENIED, B as SelectorPart, C as RemoteVideoElement, D as isType, E as createVideoElementHandle, F as isTerminalError, G as setRequestHeaderRule, H as RequestHeaderRule, I as Executor, J as cookies, K as CookieDetails, L as Gate, M as LOCATOR_UNSUPPORTED, N as isLocatorDenied, O as revive, P as isLocatorUnsupported, Q as assertFetchableUrl, R as GateTools, S as BoxedVideoElement, T as box, U as modifyRequestHeadersPermission, V as HeaderOperation, W as removeRequestHeaderRule, X as FetchInit, Y as readCookiePermission, Z as ProxyFetchRequest, _ as gotoPermission, a as PermissionGrant, at as FORGEABLE_HEADERS, b as isBlockedFrameUrl, c as ATTACH_FRAME_EVENT_KEY, ct as hasForgedCookie, d as Frame, et as fetchCredentialedPermission, f as FrameBackend, g as createFrame, h as attachFramePermission, i as waitForExtensionExposure, it as isLocalNetworkUrl, j as LOCATOR_ERROR, k as type, l as attachFrame, m as Locator, n as isExtensionExposed, nt as fetchPermission, o as PermissionRequest, ot as assertForgeableHeaders, p as GotoOptions, q as SiteCookie, r as setMissingExtensionHandler, rt as isBlockedFetchUrl, s as permissions, st as assertOneCookieIdentity, t as extension, tt as fetchLocalPermission, u as AttachFrameOptions, v as assertAttachableFrameUrl, w as VideoElementState, x as handleRevivableModules, y as assertLockdownApplicable, z as OperationRequest } from "./index-
|
|
1
|
+
import { $ as fetch$1, A as LOCATOR_DENIED, B as SelectorPart, C as RemoteVideoElement, D as isType, E as createVideoElementHandle, F as isTerminalError, G as setRequestHeaderRule, H as RequestHeaderRule, I as Executor, J as cookies, K as CookieDetails, L as Gate, M as LOCATOR_UNSUPPORTED, N as isLocatorDenied, O as revive, P as isLocatorUnsupported, Q as assertFetchableUrl, R as GateTools, S as BoxedVideoElement, T as box, U as modifyRequestHeadersPermission, V as HeaderOperation, W as removeRequestHeaderRule, X as FetchInit, Y as readCookiePermission, Z as ProxyFetchRequest, _ as gotoPermission, a as PermissionGrant, at as FORGEABLE_HEADERS, b as isBlockedFrameUrl, c as ATTACH_FRAME_EVENT_KEY, ct as hasForgedCookie, d as Frame, et as fetchCredentialedPermission, f as FrameBackend, g as createFrame, h as attachFramePermission, i as waitForExtensionExposure, it as isLocalNetworkUrl, j as LOCATOR_ERROR, k as type, l as attachFrame, m as Locator, n as isExtensionExposed, nt as fetchPermission, o as PermissionRequest, ot as assertForgeableHeaders, p as GotoOptions, q as SiteCookie, r as setMissingExtensionHandler, rt as isBlockedFetchUrl, s as permissions, st as assertOneCookieIdentity, t as extension, tt as fetchLocalPermission, u as AttachFrameOptions, v as assertAttachableFrameUrl, w as VideoElementState, x as handleRevivableModules, y as assertLockdownApplicable, z as OperationRequest } from "./index-DY8WjklJ.js";
|
|
2
2
|
|
|
3
3
|
//#region src/lib/extension-prompt.d.ts
|
|
4
4
|
declare const promptInstall: (reason?: string) => Promise<boolean>;
|
|
@@ -1,78 +1,78 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
|
|
2
|
-
import { A as t, B as n, C as r, D as i, E as a, F as o, H as s, I as c, L as l, M as u, N as d, O as f, P as p, R as m, S as h, T as g,
|
|
2
|
+
import { A as t, B as n, C as r, D as i, E as a, F as o, H as s, I as c, L as l, M as u, N as d, O as f, P as p, R as m, S as h, T as g, U as _, V as v, a as y, b, c as x, d as S, g as C, h as w, i as T, j as E, k as D, l as O, m as k, n as A, o as j, p as M, r as N, s as P, t as F, u as I, v as L, w as R, x as z, y as B, z as V } from "./lib-k3lstfa4.js";
|
|
3
3
|
import { t as H } from "./api-DQ-V4Lls.js";
|
|
4
4
|
import { n as U, t as W } from "./proxy-BpqvCJmA.js";
|
|
5
5
|
import { available as G, fetch as K } from "./desktop.js";
|
|
6
6
|
//#region src/lib/extension-prompt.ts
|
|
7
7
|
var q = async (e) => {
|
|
8
8
|
if (typeof window > "u") return !1;
|
|
9
|
-
if (
|
|
9
|
+
if (o()) return !0;
|
|
10
10
|
let t = await H, n = null, r = new Promise((e) => {
|
|
11
11
|
n = () => {
|
|
12
|
-
|
|
13
|
-
},
|
|
12
|
+
o() && e(!0);
|
|
13
|
+
}, p.addEventListener("statuschange", n);
|
|
14
14
|
}), i = t.installPrompt.show(e).then(() => !1), a = await Promise.race([r, i]);
|
|
15
|
-
return n &&
|
|
15
|
+
return n && p.removeEventListener("statuschange", n), await t.installPrompt.hide().catch(() => {}), a;
|
|
16
16
|
}, J = null;
|
|
17
|
-
|
|
17
|
+
c(() => (J ||= q().then(() => void 0).finally(() => {
|
|
18
18
|
J = null;
|
|
19
19
|
}), J));
|
|
20
20
|
//#endregion
|
|
21
21
|
//#region src/lib/auto.ts
|
|
22
|
-
var Y = () => typeof document < "u" &&
|
|
22
|
+
var Y = () => typeof document < "u" && o(), X = async (e, t) => {
|
|
23
23
|
if (U(e), t?.credentials === "include") {
|
|
24
24
|
if (typeof document > "u") throw Error("fetch with credentials needs the FKN extension, which only exists in window realms");
|
|
25
|
-
return
|
|
25
|
+
return R(e, t);
|
|
26
26
|
}
|
|
27
|
-
return Y() ?
|
|
27
|
+
return Y() ? R(e, {
|
|
28
28
|
...t,
|
|
29
29
|
credentials: "omit"
|
|
30
30
|
}) : G() ? K(e, t) : W(e, t);
|
|
31
31
|
}, Z = /* @__PURE__ */ e({
|
|
32
32
|
ATTACH_FRAME_EVENT_KEY: () => A,
|
|
33
|
-
FORGEABLE_HEADERS: () =>
|
|
34
|
-
LOCATOR_DENIED: () =>
|
|
35
|
-
LOCATOR_ERROR: () =>
|
|
36
|
-
LOCATOR_UNSUPPORTED: () =>
|
|
33
|
+
FORGEABLE_HEADERS: () => t,
|
|
34
|
+
LOCATOR_DENIED: () => w,
|
|
35
|
+
LOCATOR_ERROR: () => C,
|
|
36
|
+
LOCATOR_UNSUPPORTED: () => k,
|
|
37
37
|
assertAttachableFrameUrl: () => P,
|
|
38
|
-
assertFetchableUrl: () =>
|
|
39
|
-
assertForgeableHeaders: () =>
|
|
38
|
+
assertFetchableUrl: () => r,
|
|
39
|
+
assertForgeableHeaders: () => E,
|
|
40
40
|
assertLockdownApplicable: () => x,
|
|
41
|
-
assertOneCookieIdentity: () =>
|
|
41
|
+
assertOneCookieIdentity: () => u,
|
|
42
42
|
attachFrame: () => N,
|
|
43
43
|
attachFramePermission: () => T,
|
|
44
44
|
available: () => Y,
|
|
45
|
-
box: () =>
|
|
46
|
-
cookies: () =>
|
|
45
|
+
box: () => V,
|
|
46
|
+
cookies: () => z,
|
|
47
47
|
createFrame: () => y,
|
|
48
|
-
createVideoElementHandle: () =>
|
|
49
|
-
events: () =>
|
|
50
|
-
extension: () =>
|
|
51
|
-
fetch: () =>
|
|
52
|
-
fetchCredentialedPermission: () =>
|
|
53
|
-
fetchLocalPermission: () =>
|
|
54
|
-
fetchPermission: () =>
|
|
48
|
+
createVideoElementHandle: () => n,
|
|
49
|
+
events: () => p,
|
|
50
|
+
extension: () => p,
|
|
51
|
+
fetch: () => R,
|
|
52
|
+
fetchCredentialedPermission: () => g,
|
|
53
|
+
fetchLocalPermission: () => a,
|
|
54
|
+
fetchPermission: () => i,
|
|
55
55
|
gotoPermission: () => j,
|
|
56
|
-
handleRevivableModules: () =>
|
|
57
|
-
hasForgedCookie: () =>
|
|
58
|
-
isBlockedFetchUrl: () =>
|
|
56
|
+
handleRevivableModules: () => m,
|
|
57
|
+
hasForgedCookie: () => d,
|
|
58
|
+
isBlockedFetchUrl: () => f,
|
|
59
59
|
isBlockedFrameUrl: () => O,
|
|
60
|
-
isExtensionExposed: () =>
|
|
61
|
-
isLocalNetworkUrl: () =>
|
|
62
|
-
isLocatorDenied: () =>
|
|
63
|
-
isLocatorUnsupported: () =>
|
|
64
|
-
isTerminalError: () =>
|
|
65
|
-
isType: () =>
|
|
66
|
-
modifyRequestHeadersPermission: () =>
|
|
60
|
+
isExtensionExposed: () => o,
|
|
61
|
+
isLocalNetworkUrl: () => D,
|
|
62
|
+
isLocatorDenied: () => M,
|
|
63
|
+
isLocatorUnsupported: () => I,
|
|
64
|
+
isTerminalError: () => S,
|
|
65
|
+
isType: () => v,
|
|
66
|
+
modifyRequestHeadersPermission: () => L,
|
|
67
67
|
permissions: () => F,
|
|
68
68
|
promptInstall: () => q,
|
|
69
|
-
readCookiePermission: () =>
|
|
70
|
-
removeRequestHeaderRule: () =>
|
|
71
|
-
revive: () =>
|
|
72
|
-
setMissingExtensionHandler: () =>
|
|
73
|
-
setRequestHeaderRule: () =>
|
|
74
|
-
type: () =>
|
|
75
|
-
waitForExtensionExposure: () =>
|
|
69
|
+
readCookiePermission: () => h,
|
|
70
|
+
removeRequestHeaderRule: () => B,
|
|
71
|
+
revive: () => s,
|
|
72
|
+
setMissingExtensionHandler: () => c,
|
|
73
|
+
setRequestHeaderRule: () => b,
|
|
74
|
+
type: () => _,
|
|
75
|
+
waitForExtensionExposure: () => l
|
|
76
76
|
});
|
|
77
77
|
//#endregion
|
|
78
78
|
export { q as i, X as n, Y as r, Z as t };
|
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-DbiVHPXE.cjs"),t=require("./extension-B3nD2u7c.cjs");exports.ATTACH_FRAME_EVENT_KEY=e.n,exports.FORGEABLE_HEADERS=e.A,exports.LOCATOR_DENIED=e.h,exports.LOCATOR_ERROR=e.g,exports.LOCATOR_UNSUPPORTED=e.m,exports.assertAttachableFrameUrl=e.s,exports.assertFetchableUrl=e.C,exports.assertForgeableHeaders=e.j,exports.assertLockdownApplicable=e.c,exports.assertOneCookieIdentity=e.M,exports.attachFrame=e.r,exports.attachFramePermission=e.i,exports.available=t.r,exports.box=e.z,exports.cookies=e.x,exports.createFrame=e.a,exports.createVideoElementHandle=e.B,exports.events=e.P,exports.extension=e.P,exports.fetch=e.w,exports.fetchCredentialedPermission=e.T,exports.fetchLocalPermission=e.E,exports.fetchPermission=e.D,exports.gotoPermission=e.o,exports.handleRevivableModules=e.R,exports.hasForgedCookie=e.N,exports.isBlockedFetchUrl=e.O,exports.isBlockedFrameUrl=e.l,exports.isExtensionExposed=e.F,exports.isLocalNetworkUrl=e.k,exports.isLocatorDenied=e.p,exports.isLocatorUnsupported=e.u,exports.isTerminalError=e.d,exports.isType=e.V,exports.modifyRequestHeadersPermission=e.v,exports.permissions=e.t,exports.promptInstall=t.i,exports.readCookiePermission=e.S,exports.removeRequestHeaderRule=e.y,exports.revive=e.H,exports.setMissingExtensionHandler=e.I,exports.setRequestHeaderRule=e.b,exports.type=e.U,exports.waitForExtensionExposure=e.L;
|
package/extension.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as fetch, A as LOCATOR_DENIED, B as SelectorPart, C as RemoteVideoElement, D as isType, E as createVideoElementHandle, F as isTerminalError, G as setRequestHeaderRule, H as RequestHeaderRule, I as Executor, J as cookies, K as CookieDetails, L as Gate, M as LOCATOR_UNSUPPORTED, N as isLocatorDenied, O as revive, P as isLocatorUnsupported, Q as assertFetchableUrl, R as GateTools, S as BoxedVideoElement, T as box, U as modifyRequestHeadersPermission, V as HeaderOperation, W as removeRequestHeaderRule, X as FetchInit, Y as readCookiePermission, Z as ProxyFetchRequest, _ as gotoPermission, a as PermissionGrant, at as FORGEABLE_HEADERS, b as isBlockedFrameUrl, c as ATTACH_FRAME_EVENT_KEY, ct as hasForgedCookie, d as Frame, et as fetchCredentialedPermission, f as FrameBackend, g as createFrame, h as attachFramePermission, i as waitForExtensionExposure, it as isLocalNetworkUrl, j as LOCATOR_ERROR, k as type, l as attachFrame, m as Locator, n as isExtensionExposed, nt as fetchPermission, o as PermissionRequest, ot as assertForgeableHeaders, p as GotoOptions, q as SiteCookie, r as setMissingExtensionHandler, rt as isBlockedFetchUrl, s as permissions, st as assertOneCookieIdentity, t as extension, tt as fetchLocalPermission, u as AttachFrameOptions, v as assertAttachableFrameUrl, w as VideoElementState, x as handleRevivableModules, y as assertLockdownApplicable, z as OperationRequest } from "./index-
|
|
2
|
-
import { i as promptInstall, r as isExtensionAvailable } from "./extension-
|
|
1
|
+
import { $ as fetch, A as LOCATOR_DENIED, B as SelectorPart, C as RemoteVideoElement, D as isType, E as createVideoElementHandle, F as isTerminalError, G as setRequestHeaderRule, H as RequestHeaderRule, I as Executor, J as cookies, K as CookieDetails, L as Gate, M as LOCATOR_UNSUPPORTED, N as isLocatorDenied, O as revive, P as isLocatorUnsupported, Q as assertFetchableUrl, R as GateTools, S as BoxedVideoElement, T as box, U as modifyRequestHeadersPermission, V as HeaderOperation, W as removeRequestHeaderRule, X as FetchInit, Y as readCookiePermission, Z as ProxyFetchRequest, _ as gotoPermission, a as PermissionGrant, at as FORGEABLE_HEADERS, b as isBlockedFrameUrl, c as ATTACH_FRAME_EVENT_KEY, ct as hasForgedCookie, d as Frame, et as fetchCredentialedPermission, f as FrameBackend, g as createFrame, h as attachFramePermission, i as waitForExtensionExposure, it as isLocalNetworkUrl, j as LOCATOR_ERROR, k as type, l as attachFrame, m as Locator, n as isExtensionExposed, nt as fetchPermission, o as PermissionRequest, ot as assertForgeableHeaders, p as GotoOptions, q as SiteCookie, r as setMissingExtensionHandler, rt as isBlockedFetchUrl, s as permissions, st as assertOneCookieIdentity, t as extension, tt as fetchLocalPermission, u as AttachFrameOptions, v as assertAttachableFrameUrl, w as VideoElementState, x as handleRevivableModules, y as assertLockdownApplicable, z as OperationRequest } from "./index-DY8WjklJ.js";
|
|
2
|
+
import { i as promptInstall, r as isExtensionAvailable } from "./extension-CMPZjuaV.js";
|
|
3
3
|
export { ATTACH_FRAME_EVENT_KEY, AttachFrameOptions, BoxedVideoElement, CookieDetails, type Executor, FORGEABLE_HEADERS, FetchInit, Frame, FrameBackend, type Gate, type GateTools, GotoOptions, HeaderOperation, LOCATOR_DENIED, LOCATOR_ERROR, LOCATOR_UNSUPPORTED, Locator, type OperationRequest, PermissionGrant, PermissionRequest, ProxyFetchRequest, RemoteVideoElement, RequestHeaderRule, type SelectorPart, SiteCookie, VideoElementState, 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, isBlockedFetchUrl, isBlockedFrameUrl, isExtensionExposed, isLocalNetworkUrl, isLocatorDenied, isLocatorUnsupported, isTerminalError, isType, modifyRequestHeadersPermission, permissions, promptInstall, readCookiePermission, removeRequestHeaderRule, revive, setMissingExtensionHandler, setRequestHeaderRule, type, waitForExtensionExposure };
|