@fkn/lib 0.9.67 → 0.9.68
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/{account-DBagcNfd.d.ts → account-CXUwroRM.d.ts} +1 -1
- package/account.d.ts +2 -2
- package/{api-BlYVLNjo.d.ts → api-DhwJz0vo.d.ts} +35 -1
- package/api.d.ts +2 -2
- package/cloud/dgram.d.ts +1 -1
- package/cloud/dns.d.ts +2 -2
- package/cloud/fetch.d.ts +1 -1
- package/cloud/http.d.ts +1 -1
- package/cloud/net.d.ts +1 -1
- package/{cloud-BCRo1U9I.d.ts → cloud-P8d7GYmM.d.ts} +5 -5
- package/cloud.d.ts +6 -6
- package/{contract-CJk3vE9P.d.ts → contract-CDdIE_Es.d.ts} +49 -2
- package/contract.d.ts +1 -1
- package/{dgram-DSgktX7M.d.ts → dgram-CPQqam5Z.d.ts} +3 -3
- package/dgram.d.ts +1 -1
- package/{dns-BwS2LM9b.d.ts → dns-_NCe2YLS.d.ts} +1 -1
- package/dns.d.ts +2 -2
- package/{http-D8ulR5RD.d.ts → http-D3wvnIVo.d.ts} +1 -1
- package/http.d.ts +1 -1
- package/index.cjs +1 -1
- package/index.d.ts +11 -11
- package/index.js +1 -1
- package/{net-BCEAHCZe.d.ts → net-v_6ythjK.d.ts} +3 -3
- package/net.d.ts +1 -1
- package/package.json +1 -1
- package/packages-CTqprdnz.cjs +1 -0
- package/{packages-Cws_rcgf.js → packages-CrD5Sa28.js} +72 -69
- package/{packages-BlJK4kSJ.d.ts → packages-SwO4CxMl.d.ts} +19 -6
- package/packages.cjs +1 -1
- package/packages.d.ts +3 -3
- package/packages.js +1 -1
- package/{proxy-CfgavvzR.d.ts → proxy-CzP07me0.d.ts} +2 -2
- package/{relay-choice-D5Jeevab.d.ts → relay-choice-DB1F7bcn.d.ts} +1 -1
- package/{rooms-0vp7HaAY.d.ts → rooms-3XplwXzb.d.ts} +1 -1
- package/rooms.d.ts +2 -2
- package/{storage-CidJUc0x.d.ts → storage-C38adB-z.d.ts} +1 -1
- package/storage.d.ts +2 -2
- package/packages-DT8vPB5_.cjs +0 -1
package/account.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as AccountChange } from "./contract-
|
|
2
|
-
import { a as logout, i as login, o as onChange, r as info, t as AccountInfo } from "./account-
|
|
1
|
+
import { a as AccountChange } from "./contract-CDdIE_Es.js";
|
|
2
|
+
import { a as logout, i as login, o as onChange, r as info, t as AccountInfo } from "./account-CXUwroRM.js";
|
|
3
3
|
export { type AccountChange, AccountInfo, info, login, logout, onChange };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { D as RelayChoice } from "./index-HMfzm6dF.js";
|
|
2
|
-
import { D as IpFamily, H as ProxyFetchInput, I as PackagesErrorCode, N as OverlayState, Nt as StoragePutWire, P as PackageQuery, Q as RoomClaimOptions, R as PickOptions, T as InstallOptions, Ut as UdpDatagram, V as ProxyFetchInit, Vt as TcpSocketOptions, Wt as UdpSocketOptions, X as Resolvers, Xt as WriteData, a as AccountChange, at as RoomJoinOptions, b as FrameConsentAnswer, c as AdoptRequest, d as ConflictRequest, dt as RoomPermission, ht as RoomsErrorCode, kt as StorageErrorCode, l as AdoptState, m as ConnectOptions, mt as RoomType, o as AccountPinOptions, p as ConnectAvailability, rt as RoomEvent, st as RoomMailbox, u as ConflictChoice, ut as RoomOpenOptions, x as FrameConsentRequest, z as Placement, zt as TcpSocketListenerOptions } from "./contract-
|
|
2
|
+
import { D as IpFamily, H as ProxyFetchInput, I as PackagesErrorCode, N as OverlayState, Nt as StoragePutWire, P as PackageQuery, Q as RoomClaimOptions, R as PickOptions, T as InstallOptions, Ut as UdpDatagram, V as ProxyFetchInit, Vt as TcpSocketOptions, Wt as UdpSocketOptions, X as Resolvers, Xt as WriteData, a as AccountChange, at as RoomJoinOptions, b as FrameConsentAnswer, c as AdoptRequest, d as ConflictRequest, dt as RoomPermission, ht as RoomsErrorCode, kt as StorageErrorCode, l as AdoptState, m as ConnectOptions, mt as RoomType, o as AccountPinOptions, p as ConnectAvailability, rt as RoomEvent, st as RoomMailbox, u as ConflictChoice, ut as RoomOpenOptions, x as FrameConsentRequest, z as Placement, zt as TcpSocketListenerOptions } from "./contract-CDdIE_Es.js";
|
|
3
3
|
import { o as TcpSocketOption, x as UdpSocketOption } from "./wire-DhmLnYEU.js";
|
|
4
4
|
import { Remote } from "osra";
|
|
5
5
|
type EpochListener<T> = (remote: T, epoch: number) => void;
|
|
@@ -248,10 +248,26 @@ declare const onApiEpoch: (listener: EpochListener<{
|
|
|
248
248
|
version: string | null;
|
|
249
249
|
installedAt: number;
|
|
250
250
|
appId?: string;
|
|
251
|
+
temporary?: true;
|
|
251
252
|
};
|
|
252
253
|
} | {
|
|
253
254
|
declined: true;
|
|
254
255
|
}>;
|
|
256
|
+
installTemporary?: ((uri: string, options?: InstallOptions | undefined) => Promise<{
|
|
257
|
+
error: PackagesErrorCode;
|
|
258
|
+
message: string;
|
|
259
|
+
} | {
|
|
260
|
+
installed: {
|
|
261
|
+
uri: string;
|
|
262
|
+
name: string;
|
|
263
|
+
version: string | null;
|
|
264
|
+
installedAt: number;
|
|
265
|
+
appId?: string;
|
|
266
|
+
temporary?: true;
|
|
267
|
+
};
|
|
268
|
+
} | {
|
|
269
|
+
declined: true;
|
|
270
|
+
}>) | undefined;
|
|
255
271
|
frame: (uri: string) => Promise<{
|
|
256
272
|
error: PackagesErrorCode;
|
|
257
273
|
message: string;
|
|
@@ -270,6 +286,7 @@ declare const onApiEpoch: (listener: EpochListener<{
|
|
|
270
286
|
version: string | null;
|
|
271
287
|
installedAt: number;
|
|
272
288
|
appId?: string;
|
|
289
|
+
temporary?: true;
|
|
273
290
|
}[];
|
|
274
291
|
}>;
|
|
275
292
|
uninstall: (uri: string) => Promise<{
|
|
@@ -1632,10 +1649,26 @@ declare const currentApiEpoch: () => {
|
|
|
1632
1649
|
version: string | null;
|
|
1633
1650
|
installedAt: number;
|
|
1634
1651
|
appId?: string;
|
|
1652
|
+
temporary?: true;
|
|
1635
1653
|
};
|
|
1636
1654
|
} | {
|
|
1637
1655
|
declined: true;
|
|
1638
1656
|
}>;
|
|
1657
|
+
installTemporary?: ((uri: string, options?: InstallOptions | undefined) => Promise<{
|
|
1658
|
+
error: PackagesErrorCode;
|
|
1659
|
+
message: string;
|
|
1660
|
+
} | {
|
|
1661
|
+
installed: {
|
|
1662
|
+
uri: string;
|
|
1663
|
+
name: string;
|
|
1664
|
+
version: string | null;
|
|
1665
|
+
installedAt: number;
|
|
1666
|
+
appId?: string;
|
|
1667
|
+
temporary?: true;
|
|
1668
|
+
};
|
|
1669
|
+
} | {
|
|
1670
|
+
declined: true;
|
|
1671
|
+
}>) | undefined;
|
|
1639
1672
|
frame: (uri: string) => Promise<{
|
|
1640
1673
|
error: PackagesErrorCode;
|
|
1641
1674
|
message: string;
|
|
@@ -1654,6 +1687,7 @@ declare const currentApiEpoch: () => {
|
|
|
1654
1687
|
version: string | null;
|
|
1655
1688
|
installedAt: number;
|
|
1656
1689
|
appId?: string;
|
|
1690
|
+
temporary?: true;
|
|
1657
1691
|
}[];
|
|
1658
1692
|
}>;
|
|
1659
1693
|
uninstall: (uri: string) => Promise<{
|
package/api.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { X as Resolvers } from "./contract-
|
|
2
|
-
import { a as apiLastCall, c as currentApiEpoch, i as apiInFlight, l as hasTransport, n as BrokerUnreachableError, o as apiPromise, r as OwnChannelUnavailableError, s as apiWithin, t as API_DEADLINE_MS, u as onApiEpoch } from "./api-
|
|
1
|
+
import { X as Resolvers } from "./contract-CDdIE_Es.js";
|
|
2
|
+
import { a as apiLastCall, c as currentApiEpoch, i as apiInFlight, l as hasTransport, n as BrokerUnreachableError, o as apiPromise, r as OwnChannelUnavailableError, s as apiWithin, t as API_DEADLINE_MS, u as onApiEpoch } from "./api-DhwJz0vo.js";
|
|
3
3
|
export { API_DEADLINE_MS, BrokerUnreachableError, OwnChannelUnavailableError, type Resolvers, apiInFlight, apiLastCall, apiPromise, apiWithin, currentApiEpoch, hasTransport, onApiEpoch };
|
package/cloud/dgram.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as _default, r as createSocket, t as Socket } from "../dgram-
|
|
1
|
+
import { n as _default, r as createSocket, t as Socket } from "../dgram-CPQqam5Z.js";
|
|
2
2
|
export { Socket, createSocket, _default as default };
|
package/cloud/dns.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { s as AddressLookupResult } from "../contract-
|
|
2
|
-
import { n as lookup } from "../dns-
|
|
1
|
+
import { s as AddressLookupResult } from "../contract-CDdIE_Es.js";
|
|
2
|
+
import { n as lookup } from "../dns-_NCe2YLS.js";
|
|
3
3
|
export { type AddressLookupResult, lookup };
|
package/cloud/fetch.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as cloudFetch } from "../proxy-
|
|
1
|
+
import { t as cloudFetch } from "../proxy-CzP07me0.js";
|
|
2
2
|
export { cloudFetch as fetch };
|
package/cloud/http.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as IncomingMessage, c as RequestListener, d as ServerResponse, f as ServerResponseOptions, g as globalAgent, h as get, i as HTTPParser, l as STATUS_CODES, m as createServer, n as ClientRequest, o as METHODS, p as _default, r as ClientRequestArgs, s as ParsedHead, t as Agent, u as Server, v as request } from "../http-
|
|
1
|
+
import { a as IncomingMessage, c as RequestListener, d as ServerResponse, f as ServerResponseOptions, g as globalAgent, h as get, i as HTTPParser, l as STATUS_CODES, m as createServer, n as ClientRequest, o as METHODS, p as _default, r as ClientRequestArgs, s as ParsedHead, t as Agent, u as Server, v as request } from "../http-D3wvnIVo.js";
|
|
2
2
|
export { Agent, ClientRequest, ClientRequestArgs, HTTPParser, IncomingMessage, METHODS, ParsedHead, RequestListener, STATUS_CODES, Server, ServerResponse, ServerResponseOptions, _default, _default as default, createServer, get, globalAgent, request };
|
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-v_6ythjK.js";
|
|
2
2
|
export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as AttachFrameFunction } from "./index-HMfzm6dF.js";
|
|
2
|
-
import { t as cloudFetch } from "./proxy-
|
|
3
|
-
import { t as dns_d_exports } from "./dns-
|
|
2
|
+
import { t as cloudFetch } from "./proxy-CzP07me0.js";
|
|
3
|
+
import { t as dns_d_exports } from "./dns-_NCe2YLS.js";
|
|
4
4
|
import { n as fs_d_exports } from "./fs-ChOYC6VD.js";
|
|
5
|
-
import { s as net_d_exports } from "./net-
|
|
6
|
-
import { i as dgram_d_exports } from "./dgram-
|
|
7
|
-
import { _ as http_d_exports } from "./http-
|
|
5
|
+
import { s as net_d_exports } from "./net-v_6ythjK.js";
|
|
6
|
+
import { i as dgram_d_exports } from "./dgram-CPQqam5Z.js";
|
|
7
|
+
import { _ as http_d_exports } from "./http-D3wvnIVo.js";
|
|
8
8
|
/**
|
|
9
9
|
* Attaches the render proxy to an iframe the app mounted, or opens it in a window of its own with
|
|
10
10
|
* `{ window }`. A window opens before the first await, so call this directly in a click handler.
|
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-
|
|
3
|
-
import { t as dns_d_exports } from "./dns-
|
|
1
|
+
import { t as cloudFetch } from "./proxy-CzP07me0.js";
|
|
2
|
+
import { a as attachFrame, i as quota, r as QuotaStatus, t as available } from "./cloud-P8d7GYmM.js";
|
|
3
|
+
import { t as dns_d_exports } from "./dns-_NCe2YLS.js";
|
|
4
4
|
import { n as fs_d_exports } from "./fs-ChOYC6VD.js";
|
|
5
|
-
import { s as net_d_exports } from "./net-
|
|
6
|
-
import { i as dgram_d_exports } from "./dgram-
|
|
7
|
-
import { _ as http_d_exports } from "./http-
|
|
5
|
+
import { s as net_d_exports } from "./net-v_6ythjK.js";
|
|
6
|
+
import { i as dgram_d_exports } from "./dgram-CPQqam5Z.js";
|
|
7
|
+
import { _ as http_d_exports } from "./http-D3wvnIVo.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 };
|
|
@@ -500,6 +500,11 @@ type InstalledPackage = {
|
|
|
500
500
|
installedAt: number;
|
|
501
501
|
/** the app id this pin last verified as, version-free. Absent until a verified resolve has run. */
|
|
502
502
|
appId?: string;
|
|
503
|
+
/**
|
|
504
|
+
* `true` on a temporary install (`InstallOptions.temporary`), absent on a kept one and on anything an
|
|
505
|
+
* older fkn.app answers, so read it with `=== true`. A package both kept and temporary reads as kept.
|
|
506
|
+
*/
|
|
507
|
+
temporary?: true;
|
|
503
508
|
};
|
|
504
509
|
type PickOptions = {
|
|
505
510
|
/** untrusted, rendered as text in the picker header */
|
|
@@ -514,9 +519,41 @@ type InstallOptions = {
|
|
|
514
519
|
/**
|
|
515
520
|
* Re-pin an existing record to whatever the source now calls latest, instead of answering the
|
|
516
521
|
* record already held. A host page pinning its own package on every load is what this exists for.
|
|
517
|
-
* An unreachable source keeps the record rather than dropping it.
|
|
522
|
+
* An unreachable source keeps the record rather than dropping it. A temporary install stays temporary.
|
|
518
523
|
*/
|
|
519
524
|
latest?: boolean;
|
|
525
|
+
/**
|
|
526
|
+
* Install for this tab only, writing no install record. The package connects, mounts and lists like a
|
|
527
|
+
* kept one, and asks exactly what a kept install asks: the confirm, or with `noConfirm` the notice.
|
|
528
|
+
*
|
|
529
|
+
* It lasts as long as the tab: a reload keeps it, another tab does not have it, and closing the tab
|
|
530
|
+
* ends it. The exceptions are the browser's own copies of a tab: on Chromium, Duplicate Tab, Reopen
|
|
531
|
+
* Closed Tab and a `window.open` that keeps its opener carry it along, and the copy then lives on its
|
|
532
|
+
* own. A link's `target=_blank` carries nothing, and neither does Firefox's `window.open`.
|
|
533
|
+
*
|
|
534
|
+
* Signing out of the app ends it, on the app's other websites too wherever the sign out reaches them.
|
|
535
|
+
* One installed after the sign out stays until the next one.
|
|
536
|
+
*
|
|
537
|
+
* Within one tab it follows the app between its websites fkn.dev holds as verified, as long as they
|
|
538
|
+
* share a site (anime.fkn.app to movies.fkn.app). A website on another domain reads other storage and
|
|
539
|
+
* does not have it, so carry the package on the link there and install it again.
|
|
540
|
+
*
|
|
541
|
+
* Over a package already kept this changes nothing and answers the kept record. `install()` without
|
|
542
|
+
* this option, and without `latest`, keeps a temporary package, behind what a kept install asks, and
|
|
543
|
+
* replaces the temporary record. To turn a kept install temporary, uninstall it and install it
|
|
544
|
+
* temporary at the version it had. That ends its connections, so connect again, and takes it off the
|
|
545
|
+
* app's other tabs. An install that fails there, offline say, leaves the package uninstalled.
|
|
546
|
+
*
|
|
547
|
+
* ```ts
|
|
548
|
+
* await packages.uninstall(uri)
|
|
549
|
+
* await packages.install(uri, { temporary: true, noConfirm: true, version: kept.version ?? undefined })
|
|
550
|
+
* ```
|
|
551
|
+
*
|
|
552
|
+
* An older fkn.app cannot do this, and `install` then throws a PackagesError with code 'unsupported'
|
|
553
|
+
* and installs nothing. To know beforehand, which the uninstall above needs, ask
|
|
554
|
+
* `await packages.supportsTemporary?.() === true`: the `?.` covers an @fkn/lib older than this option.
|
|
555
|
+
*/
|
|
556
|
+
temporary?: boolean;
|
|
520
557
|
};
|
|
521
558
|
type ConnectOptions = {
|
|
522
559
|
/** opaque contract tag delivered to the package's onConnect, e.g. 'stub-source@1' */
|
|
@@ -541,7 +578,7 @@ type Placement = {
|
|
|
541
578
|
/** the placeholder's corner radii, so the frame follows a rounded container */
|
|
542
579
|
radius?: Radii;
|
|
543
580
|
};
|
|
544
|
-
type PackagesErrorCode = 'invalid' | 'not-installed' | 'unaddressable' | 'timeout' | 'unavailable' | 'denied';
|
|
581
|
+
type PackagesErrorCode = 'invalid' | 'not-installed' | 'unaddressable' | 'timeout' | 'unavailable' | 'denied' | 'unsupported';
|
|
545
582
|
type PackagesFail = {
|
|
546
583
|
error: PackagesErrorCode;
|
|
547
584
|
message: string;
|
|
@@ -1393,6 +1430,16 @@ type Resolvers = {
|
|
|
1393
1430
|
} | {
|
|
1394
1431
|
declined: true;
|
|
1395
1432
|
}>;
|
|
1433
|
+
/**
|
|
1434
|
+
* `install` with `temporary: true`. A member of its own, and a function, because that is what the
|
|
1435
|
+
* lib's facade can detect: a broker predating it reads undefined and is never asked, where its
|
|
1436
|
+
* `install` would ignore the option and keep the package.
|
|
1437
|
+
*/
|
|
1438
|
+
installTemporary?: (uri: string, options?: InstallOptions) => Promise<PackagesFail | {
|
|
1439
|
+
installed: InstalledPackage;
|
|
1440
|
+
} | {
|
|
1441
|
+
declined: true;
|
|
1442
|
+
}>;
|
|
1396
1443
|
frame: (uri: string) => Promise<PackagesFail | MountDescriptor>;
|
|
1397
1444
|
list: () => Promise<{
|
|
1398
1445
|
results: InstalledPackage[];
|
package/contract.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { D as RelayChoice, d as CookieMatchWire, u as ClearCookiesWire } from "./index-HMfzm6dF.js";
|
|
2
|
-
import { $ as RoomCreateOptions, A as MiddleGotoOptions, At as StorageFail, B as ProxyFetch, Bt as TcpSocketListenerResult, C as FrameMessageRelay, Ct as SetOverlayHost, D as IpFamily, Dt as ShellJarUnreachable, E as InstalledPackage, Et as ShellGotoOptions, F as PackageResult, Ft as StoredHandle, G as RELAY_HEADER, Gt as UdpSocketResult, H as ProxyFetchInput, Ht as TcpSocketResult, I as PackagesErrorCode, It as StoredObject, J as Radii, Jt as WINDOW_JAR_MODE_TIMEOUT_MS, K as RELAY_UNAVAILABLE, Kt as WINDOW_HANDSHAKE_TIMEOUT_MS, L as PackagesFail, Lt as StoredPage, M as OverlayRect, Mt as StoragePutOptions, N as OverlayState, Nt as StoragePutWire, O as JAR_ANCHOR_MESSAGE, Ot as StorageEntry, P as PackageQuery, Pt as StorageQuota, Q as RoomClaimOptions, Qt as JarSeedCookie, R as PickOptions, Rt as SurfaceRect, S as FrameFetchScope, St as STORAGE_REFUSALS, T as InstallOptions, Tt as ShellFrameMessage, U as Quota, Ut as UdpDatagram, V as ProxyFetchInit, Vt as TcpSocketOptions, W as RELAY_CHOICE_UNSUPPORTED, Wt as UdpSocketOptions, X as Resolvers, Xt as WriteData, Y as RelayResolution, Yt as WindowMiddleControl, Z as RoomBacklog, Zt as JarSeed, _ as DnsLookup, _t as SHELL_ATTACH_ERROR, a as AccountChange, at as RoomJoinOptions, b as FrameConsentAnswer, bt as SHELL_JAR_MESSAGE, c as AdoptRequest, ct as RoomMember, d as ConflictRequest, dt as RoomPermission, et as RoomDefaults, f as ConflictSide, ft as RoomPermissions, g as DisplayLevel, gt as RoomsFail, h as DisplayCause, ht as RoomsErrorCode, i as Account, it as RoomHandle, j as MountDescriptor, jt as StorageProgress, k as MiddleControl, kt as StorageErrorCode, l as AdoptState, lt as RoomMessage, m as ConnectOptions, mt as RoomType, n as ATTACH_WINDOW_KEY, nt as RoomEnvelope, o as AccountPinOptions, ot as RoomJson, p as ConnectAvailability, pt as RoomSchema, q as ROOM_TEMPORARY_MS, qt as WINDOW_HELLO_TIMEOUT_MS, r as ATTACH_WINDOW_MESSAGE, rt as RoomEvent, s as AddressLookupResult, st as RoomMailbox, t as ATTACH_FRAME_KEY, tt as RoomEnd, u as ConflictChoice, ut as RoomOpenOptions, v as EncryptionState, vt as SHELL_CONTROL_KEY, w as HiddenSurface, wt as ShellControl, x as FrameConsentRequest, xt as SHELL_JAR_UNREACHABLE, y as FRAME_MESSAGE, yt as SHELL_FRAME_MESSAGE, z as Placement, zt as TcpSocketListenerOptions } from "./contract-
|
|
2
|
+
import { $ as RoomCreateOptions, A as MiddleGotoOptions, At as StorageFail, B as ProxyFetch, Bt as TcpSocketListenerResult, C as FrameMessageRelay, Ct as SetOverlayHost, D as IpFamily, Dt as ShellJarUnreachable, E as InstalledPackage, Et as ShellGotoOptions, F as PackageResult, Ft as StoredHandle, G as RELAY_HEADER, Gt as UdpSocketResult, H as ProxyFetchInput, Ht as TcpSocketResult, I as PackagesErrorCode, It as StoredObject, J as Radii, Jt as WINDOW_JAR_MODE_TIMEOUT_MS, K as RELAY_UNAVAILABLE, Kt as WINDOW_HANDSHAKE_TIMEOUT_MS, L as PackagesFail, Lt as StoredPage, M as OverlayRect, Mt as StoragePutOptions, N as OverlayState, Nt as StoragePutWire, O as JAR_ANCHOR_MESSAGE, Ot as StorageEntry, P as PackageQuery, Pt as StorageQuota, Q as RoomClaimOptions, Qt as JarSeedCookie, R as PickOptions, Rt as SurfaceRect, S as FrameFetchScope, St as STORAGE_REFUSALS, T as InstallOptions, Tt as ShellFrameMessage, U as Quota, Ut as UdpDatagram, V as ProxyFetchInit, Vt as TcpSocketOptions, W as RELAY_CHOICE_UNSUPPORTED, Wt as UdpSocketOptions, X as Resolvers, Xt as WriteData, Y as RelayResolution, Yt as WindowMiddleControl, Z as RoomBacklog, Zt as JarSeed, _ as DnsLookup, _t as SHELL_ATTACH_ERROR, a as AccountChange, at as RoomJoinOptions, b as FrameConsentAnswer, bt as SHELL_JAR_MESSAGE, c as AdoptRequest, ct as RoomMember, d as ConflictRequest, dt as RoomPermission, et as RoomDefaults, f as ConflictSide, ft as RoomPermissions, g as DisplayLevel, gt as RoomsFail, h as DisplayCause, ht as RoomsErrorCode, i as Account, it as RoomHandle, j as MountDescriptor, jt as StorageProgress, k as MiddleControl, kt as StorageErrorCode, l as AdoptState, lt as RoomMessage, m as ConnectOptions, mt as RoomType, n as ATTACH_WINDOW_KEY, nt as RoomEnvelope, o as AccountPinOptions, ot as RoomJson, p as ConnectAvailability, pt as RoomSchema, q as ROOM_TEMPORARY_MS, qt as WINDOW_HELLO_TIMEOUT_MS, r as ATTACH_WINDOW_MESSAGE, rt as RoomEvent, s as AddressLookupResult, st as RoomMailbox, t as ATTACH_FRAME_KEY, tt as RoomEnd, u as ConflictChoice, ut as RoomOpenOptions, v as EncryptionState, vt as SHELL_CONTROL_KEY, w as HiddenSurface, wt as ShellControl, x as FrameConsentRequest, xt as SHELL_JAR_UNREACHABLE, y as FRAME_MESSAGE, yt as SHELL_FRAME_MESSAGE, z as Placement, zt as TcpSocketListenerOptions } from "./contract-CDdIE_Es.js";
|
|
3
3
|
import { o as TcpSocketOption, x as UdpSocketOption } from "./wire-DhmLnYEU.js";
|
|
4
4
|
export { ATTACH_FRAME_KEY, ATTACH_WINDOW_KEY, ATTACH_WINDOW_MESSAGE, Account, AccountChange, AccountPinOptions, AddressLookupResult, AdoptRequest, AdoptState, type ClearCookiesWire, ConflictChoice, ConflictRequest, ConflictSide, ConnectAvailability, ConnectOptions, type CookieMatchWire, DisplayCause, DisplayLevel, DnsLookup, EncryptionState, FRAME_MESSAGE, FrameConsentAnswer, FrameConsentRequest, FrameFetchScope, FrameMessageRelay, HiddenSurface, InstallOptions, InstalledPackage, IpFamily, JAR_ANCHOR_MESSAGE, type JarSeed, type JarSeedCookie, MiddleControl, MiddleGotoOptions, MountDescriptor, OverlayRect, OverlayState, PackageQuery, PackageResult, PackagesErrorCode, PackagesFail, PickOptions, Placement, ProxyFetch, ProxyFetchInit, ProxyFetchInput, Quota, RELAY_CHOICE_UNSUPPORTED, RELAY_HEADER, RELAY_UNAVAILABLE, ROOM_TEMPORARY_MS, Radii, type RelayChoice, RelayResolution, Resolvers, RoomBacklog, RoomClaimOptions, RoomCreateOptions, RoomDefaults, RoomEnd, RoomEnvelope, RoomEvent, RoomHandle, RoomJoinOptions, RoomJson, RoomMailbox, RoomMember, RoomMessage, RoomOpenOptions, RoomPermission, RoomPermissions, RoomSchema, RoomType, RoomsErrorCode, RoomsFail, SHELL_ATTACH_ERROR, SHELL_CONTROL_KEY, SHELL_FRAME_MESSAGE, SHELL_JAR_MESSAGE, SHELL_JAR_UNREACHABLE, STORAGE_REFUSALS, SetOverlayHost, ShellControl, ShellFrameMessage, ShellGotoOptions, ShellJarUnreachable, StorageEntry, StorageErrorCode, StorageFail, StorageProgress, StoragePutOptions, StoragePutWire, StorageQuota, StoredHandle, StoredObject, StoredPage, SurfaceRect, TcpSocketListenerOptions, TcpSocketListenerResult, type TcpSocketOption, TcpSocketOptions, TcpSocketResult, UdpDatagram, type UdpSocketOption, UdpSocketOptions, UdpSocketResult, WINDOW_HANDSHAKE_TIMEOUT_MS, WINDOW_HELLO_TIMEOUT_MS, WINDOW_JAR_MODE_TIMEOUT_MS, WindowMiddleControl, WriteData };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { D as RelayChoice } from "./index-HMfzm6dF.js";
|
|
2
|
-
import { Gt as UdpSocketResult, X as Resolvers } from "./contract-
|
|
2
|
+
import { Gt as UdpSocketResult, X as Resolvers } from "./contract-CDdIE_Es.js";
|
|
3
3
|
import { x as UdpSocketOption } from "./wire-DhmLnYEU.js";
|
|
4
|
-
import "./api-
|
|
5
|
-
import { t as RelayOption } from "./relay-choice-
|
|
4
|
+
import "./api-DhwJz0vo.js";
|
|
5
|
+
import { t as RelayOption } from "./relay-choice-DB1F7bcn.js";
|
|
6
6
|
import { Buffer } from "buffer";
|
|
7
7
|
import { AddressInfo } from "net";
|
|
8
8
|
import { BindOptions, RemoteInfo, Socket as Socket$1, SocketOptions, SocketType } from "dgram";
|
package/dgram.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as _default, r as createSocket, t as Socket } from "./dgram-
|
|
1
|
+
import { n as _default, r as createSocket, t as Socket } from "./dgram-CPQqam5Z.js";
|
|
2
2
|
export { Socket, createSocket, _default as default };
|
package/dns.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { s as AddressLookupResult } from "./contract-
|
|
2
|
-
import { n as lookup } from "./dns-
|
|
1
|
+
import { s as AddressLookupResult } from "./contract-CDdIE_Es.js";
|
|
2
|
+
import { n as lookup } from "./dns-_NCe2YLS.js";
|
|
3
3
|
export { type AddressLookupResult, lookup };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { D as RelayChoice } from "./index-HMfzm6dF.js";
|
|
2
|
-
import { n as Socket, t as Server$1 } from "./net-
|
|
2
|
+
import { n as Socket, t as Server$1 } from "./net-v_6ythjK.js";
|
|
3
3
|
import { Buffer } from "buffer";
|
|
4
4
|
import { Stream } from "stream";
|
|
5
5
|
import { IncomingHttpHeaders, OutgoingHttpHeaders, RequestOptions } from "http";
|
package/http.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as IncomingMessage, c as RequestListener, d as ServerResponse, f as ServerResponseOptions, g as globalAgent, h as get, i as HTTPParser, l as STATUS_CODES, m as createServer, n as ClientRequest, o as METHODS, p as _default, r as ClientRequestArgs, s as ParsedHead, t as Agent, u as Server, v as request } from "./http-
|
|
1
|
+
import { a as IncomingMessage, c as RequestListener, d as ServerResponse, f as ServerResponseOptions, g as globalAgent, h as get, i as HTTPParser, l as STATUS_CODES, m as createServer, n as ClientRequest, o as METHODS, p as _default, r as ClientRequestArgs, s as ParsedHead, t as Agent, u as Server, v as request } from "./http-D3wvnIVo.js";
|
|
2
2
|
export { Agent, ClientRequest, ClientRequestArgs, HTTPParser, IncomingMessage, METHODS, ParsedHead, RequestListener, STATUS_CODES, Server, ServerResponse, ServerResponseOptions, _default, _default as default, createServer, get, globalAgent, request };
|
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-_WDKIXcj.cjs"),n=require("./extension-Dn64NfoU.cjs"),r=require("./api-DrvhPN56.cjs"),i=require("./busy-BXbVH595.cjs"),a=require("./contract.cjs"),o=require("./relay-choice-JC_JJY_M.cjs"),s=require("./cloud-r8DsgB1W.cjs"),c=require("./dns-2v96zoEh.cjs"),l=require("./net-Dk2kqtgE.cjs"),u=require("./dgram-D9ljiUFh.cjs"),d=require("./http-BE3UBktN.cjs"),f=require("./desktop-vXKU4wEK.cjs"),p=require("./account-m2iCmNui.cjs"),m=require("./fs--MLHvMW-.cjs"),h=require("./opfs-DuXvTgIl.cjs"),g=require("./packages-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./lib-_WDKIXcj.cjs"),n=require("./extension-Dn64NfoU.cjs"),r=require("./api-DrvhPN56.cjs"),i=require("./busy-BXbVH595.cjs"),a=require("./contract.cjs"),o=require("./relay-choice-JC_JJY_M.cjs"),s=require("./cloud-r8DsgB1W.cjs"),c=require("./dns-2v96zoEh.cjs"),l=require("./net-Dk2kqtgE.cjs"),u=require("./dgram-D9ljiUFh.cjs"),d=require("./http-BE3UBktN.cjs"),f=require("./desktop-vXKU4wEK.cjs"),p=require("./account-m2iCmNui.cjs"),m=require("./fs--MLHvMW-.cjs"),h=require("./opfs-DuXvTgIl.cjs"),g=require("./packages-CTqprdnz.cjs"),_=require("./rooms-DHFS9cwA.cjs"),v=require("./storage-BCjYihUO.cjs"),y=require("./connect-button-BpXDs7tw.cjs");let b=require("osra");var x=(async e=>{let{kind:n,cookies:r}=t.o(e);if(n===`window`){let n=e;return r===`native`?t.a(n):s.i(n)}let i=e;return r===`native`?S(i):s.i(i)}),S=e=>(s.a(e),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(),i.r(`relayed worker`,t?.unregisterSignal);let a=n.emit instanceof MessagePort?{}:{originA:t?.originA??C,originB:t?.originB??`*`};(0,b.relay)(n,e,{key:`fkn-api`,...a,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);t?t.catch(()=>{B===e.epoch&&(B=0)}):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.st,exports.ExtensionOperationUnsupportedError=t.ct,exports.ExtensionOutdatedError=t.lt,exports.FORGEABLE_HEADERS=t.Q,exports.FrameWindowBlockedError=t.g,exports.FrameWindowRefusedError=t._,exports.LOCATOR_DENIED=t.A,exports.LOCATOR_ERROR=t.P,exports.LOCATOR_INVALID=t.I,exports.LOCATOR_UNSUPPORTED=t.D,exports.MAX_REASON_LENGTH=t.X,exports.PERMISSION_DENIED=t.t,exports.RELAY_UNAVAILABLE=a.RELAY_UNAVAILABLE,exports.REQUIRED_EXTENSION_ABI=t.ut,exports.TimeoutError=t.E,Object.defineProperty(exports,"account",{enumerable:!0,get:function(){return p.t}}),exports.assertAttachableFrameUrl=t.x,exports.assertFetchableUrl=t.U,exports.assertForgeableHeaders=t.$,exports.assertLockdownApplicable=t.S,exports.assertOneCookieIdentity=t.et,exports.attachFrame=x,exports.attachFramePermission=t.v,exports.box=t.pt,Object.defineProperty(exports,"cloud",{enumerable:!0,get:function(){return s.n}}),exports.connect=T,exports.connectButtonUrl=y.t,exports.cookies=t.V,exports.createFrame=t.y,exports.createVideoElementHandle=t.mt,Object.defineProperty(exports,"desktop",{enumerable:!0,get:function(){return f.n}}),Object.defineProperty(exports,"dgram",{enumerable:!0,get:function(){return u.i}}),Object.defineProperty(exports,"dns",{enumerable:!0,get:function(){return c.t}}),Object.defineProperty(exports,"extension",{enumerable:!0,get:function(){return n.t}}),exports.fetch=n.n,exports.fetchCredentialedPermission=t.G,exports.fetchLocalPermission=t.K,exports.fetchPermission=t.q,Object.defineProperty(exports,"fs",{enumerable:!0,get:function(){return m.u}}),exports.gotoPermission=t.b,exports.handleRevivableModules=t.ft,exports.hasForgedCookie=t.tt,Object.defineProperty(exports,"http",{enumerable:!0,get:function(){return d.p}}),exports.isBackgroundStopped=n.o,exports.isBlockedFetchUrl=t.J,exports.isBlockedFrameUrl=t.C,exports.isExtensionExposed=t.rt,exports.isLocalNetworkUrl=t.Y,exports.isLocatorDenied=t.F,exports.isLocatorInvalid=t.M,exports.isLocatorUnsupported=t.O,exports.isPermissionDenied=t.n,exports.isRelayUnavailable=o.n,exports.isTerminalError=t.L,exports.isType=t.ht,exports.modifyRequestHeadersPermission=t.R,Object.defineProperty(exports,"net",{enumerable:!0,get:function(){return l.s}}),Object.defineProperty(exports,"opfs",{enumerable:!0,get:function(){return h.f}}),Object.defineProperty(exports,"packages",{enumerable:!0,get:function(){return g.u}}),exports.permissions=t.r,exports.promptInstall=n.i,exports.promptRelay=E,exports.readCookiePermission=t.H,exports.readExtensionHandshake=t.it,exports.relayOf=o.r,exports.relayWorker=w,exports.removeRequestHeaderRule=t.z,exports.revive=t.gt,Object.defineProperty(exports,"rooms",{enumerable:!0,get:function(){return _.a}}),exports.setMissingExtensionHandler=t.at,exports.setRequestHeaderRule=t.B,Object.defineProperty(exports,"shell",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"storage",{enumerable:!0,get:function(){return v.o}}),exports.supportsOperation=t.dt,exports.type=t._t,exports.waitForExtensionExposure=t.ot;
|
package/index.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { $ as Gate, A as WindowFrame, B as CATEGORIES, C as FrameWindowRefusal, D as RelayChoice, E as Locator, F as CategoryRequest, G as RemoteVideoElement, H as PermissionCategory, I as LegacyPermissionRequest, J as createVideoElementHandle, K as VideoElementState, L as PermissionGrant, M as createFrame, N as gotoPermission, O as StorageState, P as CategoryGrant, Q as Executor, R as PermissionRequest, S as FrameWindowOptions, T as GotoOptions, U as handleRevivableModules, V as CategoryMeta, W as BoxedVideoElement, X as revive, Y as isType, Z as type, _ as FrameEventMap, a as AttachCookies, b as FramePostMessageOptions, c as BlankPage, d as CookieMatchWire, et as GateTools, f as Frame, g as FrameEventListener, h as FrameDocumentEvent, i as AddScriptTagOptions, j as attachFramePermission, k as StorageStateCookie, l as ClearCookiesOptions, m as FrameBackendEvent, nt as SelectorPart, o as AttachFrameOptions, p as FrameBackend, q as box, r as AttachFrameFunction, s as AttachWindowOptions, t as ATTACH_FRAME_EVENT_KEY, tt as OperationRequest, u as ClearCookiesWire, v as FrameLocator, w as FrameWindowRefusedError, x as FrameWindowBlockedError, y as FrameMessageEvent, z as permissions } from "./index-HMfzm6dF.js";
|
|
2
2
|
import { $ as isLocatorDenied, A as setRequestHeaderRule, B as fetchLocalPermission, C as assertAttachableFrameUrl, D as RequestHeaderRule, E as HeaderOperation, F as FetchInit, G as assertForgeableHeaders, H as isBlockedFetchUrl, I as ProxyFetchRequest, J as LOCATOR_DENIED, K as assertOneCookieIdentity, L as assertFetchableUrl, M as SiteCookie, N as cookies, O as modifyRequestHeadersPermission, P as readCookiePermission, Q as TimeoutError, S as MAX_REASON_LENGTH, T as isBlockedFrameUrl, U as isLocalNetworkUrl, V as fetchPermission, W as FORGEABLE_HEADERS, X as LOCATOR_INVALID, Y as LOCATOR_ERROR, Z as LOCATOR_UNSUPPORTED, _ as BackgroundStoppedError, b as PermissionDeniedError, c as setMissingExtensionHandler, d as ExtensionHandshake, et as isLocatorInvalid, f as ExtensionOperationUnsupportedError, g as BACKGROUND_STOPPED, h as supportsOperation, i as promptInstall, j as CookieDetails, k as removeRequestHeaderRule, l as waitForExtensionExposure, m as REQUIRED_EXTENSION_ABI, n as fetch, nt as isTerminalError, o as isExtensionExposed, p as ExtensionOutdatedError, q as hasForgedCookie, s as readExtensionHandshake, t as extension_d_exports, tt as isLocatorUnsupported, u as EXTENSION_ABI, v as isBackgroundStopped, w as assertLockdownApplicable, x as isPermissionDenied, y as PERMISSION_DENIED, z as fetchCredentialedPermission } from "./extension-Kzx83mrR.js";
|
|
3
|
-
import { K as RELAY_UNAVAILABLE } from "./contract-
|
|
4
|
-
import { n as account_d_exports } from "./account-
|
|
5
|
-
import { n as cloud_d_exports } from "./cloud-
|
|
6
|
-
import { t as dns_d_exports } from "./dns-
|
|
3
|
+
import { K as RELAY_UNAVAILABLE } from "./contract-CDdIE_Es.js";
|
|
4
|
+
import { n as account_d_exports } from "./account-CXUwroRM.js";
|
|
5
|
+
import { n as cloud_d_exports } from "./cloud-P8d7GYmM.js";
|
|
6
|
+
import { t as dns_d_exports } from "./dns-_NCe2YLS.js";
|
|
7
7
|
import { u as index_d_exports } from "./index-D6GPJ4Ow.js";
|
|
8
|
-
import { i as relayOf, n as RelayUnavailableError, r as isRelayUnavailable } from "./relay-choice-
|
|
9
|
-
import { s as net_d_exports } from "./net-
|
|
10
|
-
import { i as dgram_d_exports } from "./dgram-
|
|
11
|
-
import { _ as http_d_exports } from "./http-
|
|
8
|
+
import { i as relayOf, n as RelayUnavailableError, r as isRelayUnavailable } from "./relay-choice-DB1F7bcn.js";
|
|
9
|
+
import { s as net_d_exports } from "./net-v_6ythjK.js";
|
|
10
|
+
import { i as dgram_d_exports } from "./dgram-CPQqam5Z.js";
|
|
11
|
+
import { _ as http_d_exports } from "./http-D3wvnIVo.js";
|
|
12
12
|
import { n as desktop_d_exports } from "./desktop-DOubT4ES.js";
|
|
13
13
|
import { c as index_d_exports$1 } from "./index-CUWTpQKP.js";
|
|
14
|
-
import { S as packages_d_exports } from "./packages-
|
|
15
|
-
import { s as rooms_d_exports } from "./rooms-
|
|
16
|
-
import { c as storage_d_exports } from "./storage-
|
|
14
|
+
import { S as packages_d_exports } from "./packages-SwO4CxMl.js";
|
|
15
|
+
import { s as rooms_d_exports } from "./rooms-3XplwXzb.js";
|
|
16
|
+
import { c as storage_d_exports } from "./storage-C38adB-z.js";
|
|
17
17
|
import { t as connectButtonUrl } from "./connect-button-2FmOM8ai.js";
|
|
18
18
|
/**
|
|
19
19
|
* Attaches FKN to an iframe the app mounted, or with `{ window }` opens the attachment in a window
|
package/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import { n as je } from "./desktop-xTT7ciGX.js";
|
|
|
14
14
|
import { t as Me } from "./account-Uh0-1Cbp.js";
|
|
15
15
|
import { u as Ne } from "./fs-Cw7CcUhx.js";
|
|
16
16
|
import { f as Pe } from "./opfs-D3pYzYRc.js";
|
|
17
|
-
import { u as Fe } from "./packages-
|
|
17
|
+
import { u as Fe } from "./packages-CrD5Sa28.js";
|
|
18
18
|
import { a as Ie } from "./rooms-DP5stTEr.js";
|
|
19
19
|
import { o as Le } from "./storage-BhfImh_2.js";
|
|
20
20
|
import { t as Re } from "./connect-button-C1wKkIhh.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { D as RelayChoice } from "./index-HMfzm6dF.js";
|
|
2
|
-
import { Bt as TcpSocketListenerResult, Ht as TcpSocketResult, X as Resolvers } from "./contract-
|
|
2
|
+
import { Bt as TcpSocketListenerResult, Ht as TcpSocketResult, X as Resolvers } from "./contract-CDdIE_Es.js";
|
|
3
3
|
import { o as TcpSocketOption } from "./wire-DhmLnYEU.js";
|
|
4
|
-
import "./api-
|
|
5
|
-
import { t as RelayOption } from "./relay-choice-
|
|
4
|
+
import "./api-DhwJz0vo.js";
|
|
5
|
+
import { t as RelayOption } from "./relay-choice-DB1F7bcn.js";
|
|
6
6
|
import { AddressInfo, ListenOptions, Server, ServerOpts, Socket, SocketConnectOpts, SocketConstructorOpts } from "net";
|
|
7
7
|
import { BindOptions } from "dgram";
|
|
8
8
|
import { DuplexOptions, Stream } from "stream";
|
package/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-v_6ythjK.js";
|
|
2
2
|
export { Server, Socket, _default, _default as default, connect, createConnection, createServer, isIP, isIPv4, isIPv6 };
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-DrvhPN56.cjs"),n=require("./busy-BXbVH595.cjs");let r=require("osra");var i=e.t({attach:()=>N,connect:()=>D,hide:()=>E,install:()=>m,isVisible:()=>q,list:()=>g,mount:()=>M,onConnect:()=>K,onVisibilityChange:()=>J,pick:()=>p,search:()=>f,show:()=>T,supportsTemporary:()=>h,uninstall:()=>_}),a=`fkn-packages-connection`,o=`https://fkn.app`,s=3e4,c=(e,t)=>Object.assign(Error(t),{code:e}),l=async()=>{if(!t.l)throw c(`unavailable`,`packages: no FKN transport in this realm - use relayWorker to bridge workers`);return t.o},u=(e,t,n)=>(0,r.expose)(e??{},{transport:t,key:a,unregisterSignal:n}),d=async(e,t,n={})=>{let{signal:r,closed:i}=n;if(r?.aborted)throw c(`unavailable`,`packages.connect: aborted before connecting`);let a=new AbortController;r&&r.addEventListener(`abort`,()=>a.abort(r.reason),{once:!0});let o=new AbortController,l=new Promise((e,n)=>{let a=setTimeout(()=>n(c(`timeout`,`packages.connect: the package did not complete the connection`)),s);o.signal.addEventListener(`abort`,()=>clearTimeout(a),{once:!0}),t.addEventListener(`message`,e=>{if(e.data?.type===`fkn-packages-nack`){let t=e.data.message;n(c(`unavailable`,typeof t==`string`&&t?t:`packages.connect: the package refused the connection`))}},{signal:o.signal}),t.start(),r&&r.addEventListener(`abort`,()=>n(c(`unavailable`,`packages.connect: aborted before connecting`)),{once:!0,signal:o.signal}),i?.then(()=>n(c(`unavailable`,`packages.connect: the package closed before connecting`)))});try{return await Promise.race([u(e,t,a.signal),l])}catch(e){a.abort(e);try{t.close()}catch{}throw e}finally{o.abort()}},f=async e=>{let t=await(await l()).packages.search(e);if(`error`in t)throw c(t.error,t.message);return t.results},p=async(e,t)=>{let n=await(await l()).packages.pick(e,t);if(`error`in n)throw c(n.error,n.message);return`declined`in n?[]:n.results},m=async(e,t)=>{let{packages:n}=await l(),r=t?.temporary?n.installTemporary:n.install;if(!r)throw c(`unsupported`,`packages.install: this fkn.app cannot install a package temporarily`);let i=await r(e,t);if(`error`in i)throw c(i.error,i.message);return`declined`in i?null:i.installed},h=async()=>typeof(await l()).packages.installTemporary==`function`,g=async()=>(await(await l()).packages.list()).results,_=async e=>{let t=await(await l()).packages.uninstall(e);if(`error`in t)throw c(t.error,t.message)},v=({x:e,y:t,width:n,height:r})=>({x:Math.round(e),y:Math.round(t),width:Math.round(n),height:Math.round(r)}),y=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,width:Math.max(0,Math.min(e.x+e.width,t.x+t.width)-n),height:Math.max(0,Math.min(e.y+e.height,t.y+t.height)-r)}},b=(e,t)=>{let n=t;for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t);if((e.overflowX!==`visible`||e.overflowY!==`visible`)&&(n=y(n,v(t.getBoundingClientRect())),n.width===0||n.height===0))break}return n},x=e=>{let t=getComputedStyle(e),n=[t.borderTopLeftRadius,t.borderTopRightRadius,t.borderBottomRightRadius,t.borderBottomLeftRadius];if(n.some(e=>e.includes(`%`)||e.includes(` `)))return;let r=n.map(e=>{let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:0});return r.some(e=>e>0)?r:void 0},S=(e,t)=>{if(!e)return!1;let n=(e,t)=>e===t||!!e&&!!t&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height;return n(e.rect,t.rect)&&n(e.clip,t.clip)&&((e,t)=>e===t||!!e&&!!t&&e.every((e,n)=>e===t[n]))(e.radius,t.radius)},C=new Map;n.i(`package view`,()=>C.size>0);var w=async(e,t)=>{let n=C.get(e);if(n){for(let e of n)t&&e.element!==t||(e.stop(),n.delete(e));if(n.size>0)return;C.delete(e)}let r=await(await l()).packages.hide(e);if(`error`in r)throw c(r.error,r.message)},T=async(e,t)=>{let{element:n,rect:r}=t;if(!n&&!r)throw c(`invalid`,`packages.show: pass an element or a rect`);let i=(await l()).packages,a=()=>{if(!n)return{rect:v(r)};let e=v(n.getBoundingClientRect());return{rect:e,clip:b(n,e),radius:x(n)}},o=!0,s,u=0,d=async t=>{s=t;let n=await i.show(e,t);if(`error`in n)throw o=!1,c(n.error,n.message)};await d(a());let f=()=>{if(!o)return;let e=a();S(s,e)||d(e).catch(()=>{}),u=requestAnimationFrame(f)};n&&(u=requestAnimationFrame(f));let p={element:n,stop:()=>{o=!1,cancelAnimationFrame(u)}},m=C.get(e)??new Set;return m.add(p),C.set(e,m),{hide:()=>{w(e,n).catch(()=>{})},refresh:()=>{if(!o)return;let e=a();S(s,e)||d(e).catch(()=>{})}}},E=async(e,t={})=>w(e,t.element),D=(async(e,r={})=>{let i=await(await l()).packages.connect(e,{protocol:r.protocol,...r.path===void 0?{}:{path:r.path}});if(`error`in i)throw c(i.error,i.message);let a=n.t(`package connection`),o=t.c()?.epoch??0,s=t.u((e,t)=>{t!==o&&(a(),s())});Promise.resolve(i.closed).then(()=>{a(),s()},()=>{a(),s()});let{port:u,closed:f}=i;if(r.raw)return{closed:f,port:u};let p=await d(r.payload,u,{signal:r.signal,closed:f});return r.signal&&r.signal.addEventListener(`abort`,()=>{try{u.postMessage({type:`fkn-packages-disconnect`})}catch{}},{once:!0}),{remote:p,closed:f,port:u}}),O=[`allow-scripts`,`allow-same-origin`],k=e=>{let t=e.getAttribute(`sandbox`);if(t!==null){let e=new Set(t.toLowerCase().split(/\s+/).filter(Boolean)),n=O.filter(t=>!e.has(t));if(n.length)throw c(`invalid`,`packages.mount: the iframe's sandbox attribute must include ${n.join(` and `)}, or the package cannot start`)}if(globalThis.crossOriginIsolated&&!new Set((e.getAttribute(`allow`)??``).toLowerCase().split(`;`).map(e=>e.trim().split(/\s+/)[0]).filter(Boolean)).has(`cross-origin-isolated`))throw c(`invalid`,`packages.mount: this page is cross-origin isolated, so the iframe's allow attribute must include 'cross-origin-isolated' to hand that down to the package`)},A=3e4,j=(e,t)=>new Promise((n,r)=>{let i=e=>{clearTimeout(o),window.removeEventListener(`message`,a),e?r(e):n()},a=n=>{if(n.source!==e.contentWindow||n.origin!==t)return;let r=n.data;if(r?.type===`fkn-packages-ready`)return i();r?.type===`fkn-packages-failed`&&i(c(`unavailable`,typeof r.message==`string`&&r.message?r.message:`packages.mount: the package failed to boot`))},o=setTimeout(()=>i(c(`timeout`,`packages.mount: the package did not register a connection handler`)),A);window.addEventListener(`message`,a)}),M=async(e,t)=>{let{iframe:r}=t;if(!(r instanceof HTMLIFrameElement))throw c(`invalid`,`packages.mount: pass the iframe to load the package into`);if(!r.isConnected)throw c(`invalid`,`packages.mount: the iframe must be in the document before mounting into it`);k(r);let i=await(await l()).packages.frame(e);if(`error`in i)throw c(i.error,i.message);r.src=i.url;let a={done:!1},o=()=>{},s=new Promise(e=>{o=e}),u=n.t(`mounted package`),f=()=>{if(!a.done){a.done=!0,u();try{r.contentWindow?.postMessage({type:`fkn-packages-close`},i.origin)}catch{}r.src=`about:blank`,o()}};try{await j(r,i.origin)}catch(e){throw f(),e}let p=new MessageChannel,m=r.contentWindow;if(!m)throw f(),c(`unavailable`,`packages.mount: the frame was detached before it could connect`);m.postMessage({type:`fkn-packages-port`,from:i.from,protocol:t.protocol,uri:i.uri,name:i.name,version:i.version},i.origin,[p.port2]);try{m.postMessage({type:`fkn-packages-visibility`,visible:!0},i.origin)}catch{}if(t.raw)return{closed:s,port:p.port1,frame:r,unmount:f};try{return{remote:await d(t.payload,p.port1,{signal:t.signal,closed:s}),closed:s,port:p.port1,frame:r,unmount:f}}catch(e){throw f(),e}},N=(e,t,n)=>d(t,e,{signal:n?.signal}),P=null,F=!1,I=new Set,L=[],R=new Map,z=!1,B=!1,V=e=>{let t=R.get(e);t&&(R.delete(e),t())},H=(e,t)=>{try{e.postMessage({type:`fkn-packages-nack`,message:t})}catch{}try{e.close()}catch{}},U=async(e,t)=>{let{port:n,...r}=e;e.port.addEventListener(`message`,t=>{t.data?.type===`fkn-packages-disconnect`&&V(e.port)});let i;try{i=await t.createPayload(r)}catch(t){throw H(e.port,t instanceof Error?t.message:`the package failed to produce a connection`),t}let a=new Promise(t=>R.set(e.port,t)),o=await u(i,e.port);t.handler?.({...r,remote:o,closed:a,port:e.port})},W=()=>{z||typeof window>`u`||window.parent===window||(z=!0,window.addEventListener(`message`,e=>{if(e.source!==window.parent)return;let t=e.data;if(t?.type===`fkn-packages-port`){let n=e.ports[0];if(!n)return;let r={port:n,from:typeof t.from==`string`?t.from:``,brokered:e.origin===o,protocol:typeof t.protocol==`string`?t.protocol:null,uri:typeof t.uri==`string`?t.uri:``,name:typeof t.name==`string`?t.name:``,version:typeof t.version==`string`?t.version:``};P?U(r,P).catch(e=>console.warn(`packages.onConnect:`,e)):L.push(r)}if(t?.type===`fkn-packages-close`)for(let e of[...R.keys()])V(e);if(t?.type===`fkn-packages-visibility`){F=t.visible===!0;for(let e of I)try{e(F)}catch{}}}))},G=()=>{B||typeof window>`u`||window.parent===window||(B=!0,window.parent.postMessage({type:`fkn-packages-ready`},`*`))},K=(e,t)=>{if(typeof window>`u`)return{unsubscribe:()=>{}};W();let n={createPayload:e,handler:t};for(P=n,G();L.length&&P===n;)U(L.shift(),n).catch(e=>console.warn(`packages.onConnect:`,e));return{unsubscribe:()=>{P===n&&(P=null)}}},q=()=>F,J=e=>{if(typeof window>`u`)return{unsubscribe:()=>{}};W(),I.add(e);try{e(F)}catch{}return{unsubscribe:()=>{I.delete(e)}}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return i}});
|
|
@@ -4,19 +4,20 @@ import { i as a, t as o } from "./busy-C1JPjoZ_.js";
|
|
|
4
4
|
import { expose as s } from "osra";
|
|
5
5
|
// src/packages.ts
|
|
6
6
|
var c = /* @__PURE__ */ e({
|
|
7
|
-
attach: () =>
|
|
8
|
-
connect: () =>
|
|
9
|
-
hide: () =>
|
|
7
|
+
attach: () => L,
|
|
8
|
+
connect: () => j,
|
|
9
|
+
hide: () => A,
|
|
10
10
|
install: () => v,
|
|
11
|
-
isVisible: () =>
|
|
12
|
-
list: () =>
|
|
13
|
-
mount: () =>
|
|
14
|
-
onConnect: () =>
|
|
15
|
-
onVisibilityChange: () =>
|
|
11
|
+
isVisible: () => Z,
|
|
12
|
+
list: () => b,
|
|
13
|
+
mount: () => I,
|
|
14
|
+
onConnect: () => X,
|
|
15
|
+
onVisibilityChange: () => Q,
|
|
16
16
|
pick: () => _,
|
|
17
17
|
search: () => g,
|
|
18
|
-
show: () =>
|
|
19
|
-
|
|
18
|
+
show: () => k,
|
|
19
|
+
supportsTemporary: () => y,
|
|
20
|
+
uninstall: () => x
|
|
20
21
|
}), l = "fkn-packages-connection", u = "https://fkn.app", d = 3e4, f = (e, t) => Object.assign(Error(t), { code: e }), p = async () => {
|
|
21
22
|
if (!n) throw f("unavailable", "packages: no FKN transport in this realm - use relayWorker to bridge workers");
|
|
22
23
|
return r;
|
|
@@ -61,18 +62,20 @@ var c = /* @__PURE__ */ e({
|
|
|
61
62
|
if ("error" in n) throw f(n.error, n.message);
|
|
62
63
|
return "declined" in n ? [] : n.results;
|
|
63
64
|
}, v = async (e, t) => {
|
|
64
|
-
let n = await
|
|
65
|
-
if (
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
let { packages: n } = await p(), r = t?.temporary ? n.installTemporary : n.install;
|
|
66
|
+
if (!r) throw f("unsupported", "packages.install: this fkn.app cannot install a package temporarily");
|
|
67
|
+
let i = await r(e, t);
|
|
68
|
+
if ("error" in i) throw f(i.error, i.message);
|
|
69
|
+
return "declined" in i ? null : i.installed;
|
|
70
|
+
}, y = async () => typeof (await p()).packages.installTemporary == "function", b = async () => (await (await p()).packages.list()).results, x = async (e) => {
|
|
68
71
|
let t = await (await p()).packages.uninstall(e);
|
|
69
72
|
if ("error" in t) throw f(t.error, t.message);
|
|
70
|
-
},
|
|
73
|
+
}, S = ({ x: e, y: t, width: n, height: r }) => ({
|
|
71
74
|
x: Math.round(e),
|
|
72
75
|
y: Math.round(t),
|
|
73
76
|
width: Math.round(n),
|
|
74
77
|
height: Math.round(r)
|
|
75
|
-
}),
|
|
78
|
+
}), C = (e, t) => {
|
|
76
79
|
let n = Math.max(e.x, t.x), r = Math.max(e.y, t.y);
|
|
77
80
|
return {
|
|
78
81
|
x: n,
|
|
@@ -80,14 +83,14 @@ var c = /* @__PURE__ */ e({
|
|
|
80
83
|
width: Math.max(0, Math.min(e.x + e.width, t.x + t.width) - n),
|
|
81
84
|
height: Math.max(0, Math.min(e.y + e.height, t.y + t.height) - r)
|
|
82
85
|
};
|
|
83
|
-
},
|
|
86
|
+
}, w = (e, t) => {
|
|
84
87
|
let n = t;
|
|
85
88
|
for (let t = e.parentElement; t; t = t.parentElement) {
|
|
86
89
|
let e = getComputedStyle(t);
|
|
87
|
-
if ((e.overflowX !== "visible" || e.overflowY !== "visible") && (n =
|
|
90
|
+
if ((e.overflowX !== "visible" || e.overflowY !== "visible") && (n = C(n, S(t.getBoundingClientRect())), n.width === 0 || n.height === 0)) break;
|
|
88
91
|
}
|
|
89
92
|
return n;
|
|
90
|
-
},
|
|
93
|
+
}, T = (e) => {
|
|
91
94
|
let t = getComputedStyle(e), n = [
|
|
92
95
|
t.borderTopLeftRadius,
|
|
93
96
|
t.borderTopRightRadius,
|
|
@@ -100,31 +103,31 @@ var c = /* @__PURE__ */ e({
|
|
|
100
103
|
return Number.isFinite(t) && t > 0 ? t : 0;
|
|
101
104
|
});
|
|
102
105
|
return r.some((e) => e > 0) ? r : void 0;
|
|
103
|
-
},
|
|
106
|
+
}, E = (e, t) => {
|
|
104
107
|
if (!e) return !1;
|
|
105
108
|
let n = (e, t) => e === t || !!e && !!t && e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
|
|
106
109
|
return n(e.rect, t.rect) && n(e.clip, t.clip) && ((e, t) => e === t || !!e && !!t && e.every((e, n) => e === t[n]))(e.radius, t.radius);
|
|
107
|
-
},
|
|
108
|
-
a("package view", () =>
|
|
109
|
-
var
|
|
110
|
-
let n =
|
|
110
|
+
}, D = /* @__PURE__ */ new Map();
|
|
111
|
+
a("package view", () => D.size > 0);
|
|
112
|
+
var O = async (e, t) => {
|
|
113
|
+
let n = D.get(e);
|
|
111
114
|
if (n) {
|
|
112
115
|
for (let e of n) t && e.element !== t || (e.stop(), n.delete(e));
|
|
113
116
|
if (n.size > 0) return;
|
|
114
|
-
|
|
117
|
+
D.delete(e);
|
|
115
118
|
}
|
|
116
119
|
let r = await (await p()).packages.hide(e);
|
|
117
120
|
if ("error" in r) throw f(r.error, r.message);
|
|
118
|
-
},
|
|
121
|
+
}, k = async (e, t) => {
|
|
119
122
|
let { element: n, rect: r } = t;
|
|
120
123
|
if (!n && !r) throw f("invalid", "packages.show: pass an element or a rect");
|
|
121
124
|
let i = (await p()).packages, a = () => {
|
|
122
|
-
if (!n) return { rect:
|
|
123
|
-
let e =
|
|
125
|
+
if (!n) return { rect: S(r) };
|
|
126
|
+
let e = S(n.getBoundingClientRect());
|
|
124
127
|
return {
|
|
125
128
|
rect: e,
|
|
126
|
-
clip:
|
|
127
|
-
radius:
|
|
129
|
+
clip: w(n, e),
|
|
130
|
+
radius: T(n)
|
|
128
131
|
};
|
|
129
132
|
}, o = !0, s, c = 0, l = async (t) => {
|
|
130
133
|
s = t;
|
|
@@ -135,7 +138,7 @@ var D = async (e, t) => {
|
|
|
135
138
|
let u = () => {
|
|
136
139
|
if (!o) return;
|
|
137
140
|
let e = a();
|
|
138
|
-
|
|
141
|
+
E(s, e) || l(e).catch(() => {}), c = requestAnimationFrame(u);
|
|
139
142
|
};
|
|
140
143
|
n && (c = requestAnimationFrame(u));
|
|
141
144
|
let d = {
|
|
@@ -143,18 +146,18 @@ var D = async (e, t) => {
|
|
|
143
146
|
stop: () => {
|
|
144
147
|
o = !1, cancelAnimationFrame(c);
|
|
145
148
|
}
|
|
146
|
-
}, m =
|
|
147
|
-
return m.add(d),
|
|
149
|
+
}, m = D.get(e) ?? /* @__PURE__ */ new Set();
|
|
150
|
+
return m.add(d), D.set(e, m), {
|
|
148
151
|
hide: () => {
|
|
149
|
-
|
|
152
|
+
O(e, n).catch(() => {});
|
|
150
153
|
},
|
|
151
154
|
refresh: () => {
|
|
152
155
|
if (!o) return;
|
|
153
156
|
let e = a();
|
|
154
|
-
|
|
157
|
+
E(s, e) || l(e).catch(() => {});
|
|
155
158
|
}
|
|
156
159
|
};
|
|
157
|
-
},
|
|
160
|
+
}, A = async (e, t = {}) => O(e, t.element), j = (async (e, n = {}) => {
|
|
158
161
|
let r = await (await p()).packages.connect(e, {
|
|
159
162
|
protocol: n.protocol,
|
|
160
163
|
...n.path === void 0 ? {} : { path: n.path }
|
|
@@ -186,14 +189,14 @@ var D = async (e, t) => {
|
|
|
186
189
|
closed: u,
|
|
187
190
|
port: l
|
|
188
191
|
};
|
|
189
|
-
}),
|
|
192
|
+
}), M = ["allow-scripts", "allow-same-origin"], N = (e) => {
|
|
190
193
|
let t = e.getAttribute("sandbox");
|
|
191
194
|
if (t !== null) {
|
|
192
|
-
let e = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), n =
|
|
195
|
+
let e = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), n = M.filter((t) => !e.has(t));
|
|
193
196
|
if (n.length) throw f("invalid", `packages.mount: the iframe's sandbox attribute must include ${n.join(" and ")}, or the package cannot start`);
|
|
194
197
|
}
|
|
195
198
|
if (globalThis.crossOriginIsolated && !new Set((e.getAttribute("allow") ?? "").toLowerCase().split(";").map((e) => e.trim().split(/\s+/)[0]).filter(Boolean)).has("cross-origin-isolated")) throw f("invalid", "packages.mount: this page is cross-origin isolated, so the iframe's allow attribute must include 'cross-origin-isolated' to hand that down to the package");
|
|
196
|
-
},
|
|
199
|
+
}, P = 3e4, F = (e, t) => new Promise((n, r) => {
|
|
197
200
|
let i = (e) => {
|
|
198
201
|
clearTimeout(o), window.removeEventListener("message", a), e ? r(e) : n();
|
|
199
202
|
}, a = (n) => {
|
|
@@ -201,13 +204,13 @@ var D = async (e, t) => {
|
|
|
201
204
|
let r = n.data;
|
|
202
205
|
if (r?.type === "fkn-packages-ready") return i();
|
|
203
206
|
r?.type === "fkn-packages-failed" && i(f("unavailable", typeof r.message == "string" && r.message ? r.message : "packages.mount: the package failed to boot"));
|
|
204
|
-
}, o = setTimeout(() => i(f("timeout", "packages.mount: the package did not register a connection handler")),
|
|
207
|
+
}, o = setTimeout(() => i(f("timeout", "packages.mount: the package did not register a connection handler")), P);
|
|
205
208
|
window.addEventListener("message", a);
|
|
206
|
-
}),
|
|
209
|
+
}), I = async (e, t) => {
|
|
207
210
|
let { iframe: n } = t;
|
|
208
211
|
if (!(n instanceof HTMLIFrameElement)) throw f("invalid", "packages.mount: pass the iframe to load the package into");
|
|
209
212
|
if (!n.isConnected) throw f("invalid", "packages.mount: the iframe must be in the document before mounting into it");
|
|
210
|
-
|
|
213
|
+
N(n);
|
|
211
214
|
let r = await (await p()).packages.frame(e);
|
|
212
215
|
if ("error" in r) throw f(r.error, r.message);
|
|
213
216
|
n.src = r.url;
|
|
@@ -223,7 +226,7 @@ var D = async (e, t) => {
|
|
|
223
226
|
}
|
|
224
227
|
};
|
|
225
228
|
try {
|
|
226
|
-
await
|
|
229
|
+
await F(n, r.origin);
|
|
227
230
|
} catch (e) {
|
|
228
231
|
throw l(), e;
|
|
229
232
|
}
|
|
@@ -263,10 +266,10 @@ var D = async (e, t) => {
|
|
|
263
266
|
} catch (e) {
|
|
264
267
|
throw l(), e;
|
|
265
268
|
}
|
|
266
|
-
},
|
|
267
|
-
let t =
|
|
268
|
-
t && (
|
|
269
|
-
},
|
|
269
|
+
}, L = (e, t, n) => h(t, e, { signal: n?.signal }), R = null, z = !1, B = /* @__PURE__ */ new Set(), V = [], H = /* @__PURE__ */ new Map(), U = !1, W = !1, G = (e) => {
|
|
270
|
+
let t = H.get(e);
|
|
271
|
+
t && (H.delete(e), t());
|
|
272
|
+
}, K = (e, t) => {
|
|
270
273
|
try {
|
|
271
274
|
e.postMessage({
|
|
272
275
|
type: "fkn-packages-nack",
|
|
@@ -276,26 +279,26 @@ var D = async (e, t) => {
|
|
|
276
279
|
try {
|
|
277
280
|
e.close();
|
|
278
281
|
} catch {}
|
|
279
|
-
},
|
|
282
|
+
}, q = async (e, t) => {
|
|
280
283
|
let { port: n, ...r } = e;
|
|
281
284
|
e.port.addEventListener("message", (t) => {
|
|
282
|
-
t.data?.type === "fkn-packages-disconnect" &&
|
|
285
|
+
t.data?.type === "fkn-packages-disconnect" && G(e.port);
|
|
283
286
|
});
|
|
284
287
|
let i;
|
|
285
288
|
try {
|
|
286
289
|
i = await t.createPayload(r);
|
|
287
290
|
} catch (t) {
|
|
288
|
-
throw
|
|
291
|
+
throw K(e.port, t instanceof Error ? t.message : "the package failed to produce a connection"), t;
|
|
289
292
|
}
|
|
290
|
-
let a = new Promise((t) =>
|
|
293
|
+
let a = new Promise((t) => H.set(e.port, t)), o = await m(i, e.port);
|
|
291
294
|
t.handler?.({
|
|
292
295
|
...r,
|
|
293
296
|
remote: o,
|
|
294
297
|
closed: a,
|
|
295
298
|
port: e.port
|
|
296
299
|
});
|
|
297
|
-
},
|
|
298
|
-
|
|
300
|
+
}, J = () => {
|
|
301
|
+
U || typeof window > "u" || window.parent === window || (U = !0, window.addEventListener("message", (e) => {
|
|
299
302
|
if (e.source !== window.parent) return;
|
|
300
303
|
let t = e.data;
|
|
301
304
|
if (t?.type === "fkn-packages-port") {
|
|
@@ -310,37 +313,37 @@ var D = async (e, t) => {
|
|
|
310
313
|
name: typeof t.name == "string" ? t.name : "",
|
|
311
314
|
version: typeof t.version == "string" ? t.version : ""
|
|
312
315
|
};
|
|
313
|
-
|
|
316
|
+
R ? q(r, R).catch((e) => console.warn("packages.onConnect:", e)) : V.push(r);
|
|
314
317
|
}
|
|
315
|
-
if (t?.type === "fkn-packages-close") for (let e of [...
|
|
318
|
+
if (t?.type === "fkn-packages-close") for (let e of [...H.keys()]) G(e);
|
|
316
319
|
if (t?.type === "fkn-packages-visibility") {
|
|
317
|
-
|
|
318
|
-
for (let e of
|
|
319
|
-
e(
|
|
320
|
+
z = t.visible === !0;
|
|
321
|
+
for (let e of B) try {
|
|
322
|
+
e(z);
|
|
320
323
|
} catch {}
|
|
321
324
|
}
|
|
322
325
|
}));
|
|
323
|
-
},
|
|
324
|
-
|
|
325
|
-
},
|
|
326
|
+
}, Y = () => {
|
|
327
|
+
W || typeof window > "u" || window.parent === window || (W = !0, window.parent.postMessage({ type: "fkn-packages-ready" }, "*"));
|
|
328
|
+
}, X = (e, t) => {
|
|
326
329
|
if (typeof window > "u") return { unsubscribe: () => {} };
|
|
327
|
-
|
|
330
|
+
J();
|
|
328
331
|
let n = {
|
|
329
332
|
createPayload: e,
|
|
330
333
|
handler: t
|
|
331
334
|
};
|
|
332
|
-
for (
|
|
335
|
+
for (R = n, Y(); V.length && R === n;) q(V.shift(), n).catch((e) => console.warn("packages.onConnect:", e));
|
|
333
336
|
return { unsubscribe: () => {
|
|
334
|
-
|
|
337
|
+
R === n && (R = null);
|
|
335
338
|
} };
|
|
336
|
-
},
|
|
339
|
+
}, Z = () => z, Q = (e) => {
|
|
337
340
|
if (typeof window > "u") return { unsubscribe: () => {} };
|
|
338
|
-
|
|
341
|
+
J(), B.add(e);
|
|
339
342
|
try {
|
|
340
|
-
e(
|
|
343
|
+
e(z);
|
|
341
344
|
} catch {}
|
|
342
345
|
return { unsubscribe: () => {
|
|
343
|
-
|
|
346
|
+
B.delete(e);
|
|
344
347
|
} };
|
|
345
348
|
};
|
|
346
|
-
export {
|
|
349
|
+
export { Z as a, X as c, _ as d, g as f, x as h, v as i, Q as l, y as m, j as n, b as o, k as p, A as r, I as s, L as t, c as u };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-
|
|
1
|
+
import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-CDdIE_Es.js";
|
|
2
2
|
import { Remote } from "osra";
|
|
3
3
|
declare namespace packages_d_exports {
|
|
4
|
-
export { AppConnectOptions, Connect, ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, InstallOptions, InstalledPackage, MountOptions, MountedPackage, PackageConnection, PackageQuery, PackageResult, PackageView, PackagesError, PackagesErrorCode, PickOptions, Placement, Radii, RawPackageConnection, ShowOptions, SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, uninstall };
|
|
4
|
+
export { AppConnectOptions, Connect, ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, InstallOptions, InstalledPackage, MountOptions, MountedPackage, PackageConnection, PackageQuery, PackageResult, PackageView, PackagesError, PackagesErrorCode, PickOptions, Placement, Radii, RawPackageConnection, ShowOptions, SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, supportsTemporary, uninstall };
|
|
5
5
|
}
|
|
6
6
|
type PackagesError = Error & {
|
|
7
7
|
code: PackagesErrorCode;
|
|
@@ -10,11 +10,24 @@ type PackagesError = Error & {
|
|
|
10
10
|
declare const search: (query: PackageQuery) => Promise<PackageResult[]>;
|
|
11
11
|
/** FKN-rendered picker over the same search; resolves the user's selection, already installed. [] on cancel. */
|
|
12
12
|
declare const pick: (query: PackageQuery, options?: PickOptions) => Promise<PackageResult[]>;
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Install a package for this app behind an FKN-rendered confirm, or with `{ noConfirm: true }` for a
|
|
15
|
+
* notice instead of a prompt. Resolves null when the user declines.
|
|
16
|
+
*
|
|
17
|
+
* `{ temporary: true }` installs it for this tab only, with no install record: see
|
|
18
|
+
* `InstallOptions.temporary`. Throws a PackagesError with code 'unsupported', having installed nothing,
|
|
19
|
+
* on an fkn.app too old to hold that, so an app never ends up keeping what it asked not to keep.
|
|
20
|
+
*/
|
|
14
21
|
declare const install: (uri: string, options?: InstallOptions) => Promise<InstalledPackage | null>;
|
|
15
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Whether fkn.app can install a package temporarily, asked with no install attempted. False on an
|
|
24
|
+
* fkn.app older than `InstallOptions.temporary`; on an @fkn/lib older than it this export is undefined,
|
|
25
|
+
* so `await packages.supportsTemporary?.() === true` holds for both.
|
|
26
|
+
*/
|
|
27
|
+
declare const supportsTemporary: () => Promise<boolean>;
|
|
28
|
+
/** The packages installed by this app, kept and temporary. A temporary one reads `temporary: true`. */
|
|
16
29
|
declare const list: () => Promise<InstalledPackage[]>;
|
|
17
|
-
/** Uninstall a package from this app; its frames and connections are torn down. */
|
|
30
|
+
/** Uninstall a package from this app, kept or temporary; its frames and connections are torn down. */
|
|
18
31
|
declare const uninstall: (uri: string) => Promise<void>;
|
|
19
32
|
type ShowOptions = {
|
|
20
33
|
/**
|
|
@@ -152,4 +165,4 @@ declare const isVisible: () => boolean;
|
|
|
152
165
|
declare const onVisibilityChange: (handler: (visible: boolean) => void) => {
|
|
153
166
|
unsubscribe: () => void;
|
|
154
167
|
};
|
|
155
|
-
export { pick as C, uninstall as E, packages_d_exports as S, show as T, isVisible as _, IncomingConnectionInfo as a, onConnect as b, PackageConnection as c, RawPackageConnection as d, ShowOptions as f, install as g, hide as h, IncomingConnection as i, PackageView as l, connect as m, Connect as n, MountOptions as o, attach as p, ConnectPayload as r, MountedPackage as s, AppConnectOptions as t, PackagesError as u, list as v, search as w, onVisibilityChange as x, mount as y };
|
|
168
|
+
export { pick as C, uninstall as D, supportsTemporary as E, packages_d_exports as S, show as T, isVisible as _, IncomingConnectionInfo as a, onConnect as b, PackageConnection as c, RawPackageConnection as d, ShowOptions as f, install as g, hide as h, IncomingConnection as i, PackageView as l, connect as m, Connect as n, MountOptions as o, attach as p, ConnectPayload as r, MountedPackage as s, AppConnectOptions as t, PackagesError as u, list as v, search as w, onVisibilityChange as x, mount as y };
|
package/packages.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./packages-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./packages-CTqprdnz.cjs");exports.attach=e.t,exports.connect=e.n,exports.hide=e.r,exports.install=e.i,exports.isVisible=e.a,exports.list=e.o,exports.mount=e.s,exports.onConnect=e.c,exports.onVisibilityChange=e.l,exports.pick=e.d,exports.search=e.f,exports.show=e.p,exports.supportsTemporary=e.m,exports.uninstall=e.h;
|
package/packages.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-
|
|
2
|
-
import { C as pick,
|
|
3
|
-
export { AppConnectOptions, Connect, type ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, type InstallOptions, type InstalledPackage, MountOptions, MountedPackage, PackageConnection, type PackageQuery, type PackageResult, PackageView, PackagesError, type PackagesErrorCode, type PickOptions, type Placement, type Radii, RawPackageConnection, ShowOptions, type SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, uninstall };
|
|
1
|
+
import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-CDdIE_Es.js";
|
|
2
|
+
import { C as pick, D as uninstall, E as supportsTemporary, T as show, _ as isVisible, a as IncomingConnectionInfo, b as onConnect, c as PackageConnection, d as RawPackageConnection, f as ShowOptions, g as install, h as hide, i as IncomingConnection, l as PackageView, m as connect, n as Connect, o as MountOptions, p as attach, r as ConnectPayload, s as MountedPackage, t as AppConnectOptions, u as PackagesError, v as list, w as search, x as onVisibilityChange, y as mount } from "./packages-SwO4CxMl.js";
|
|
3
|
+
export { AppConnectOptions, Connect, type ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, type InstallOptions, type InstalledPackage, MountOptions, MountedPackage, PackageConnection, type PackageQuery, type PackageResult, PackageView, PackagesError, type PackagesErrorCode, type PickOptions, type Placement, type Radii, RawPackageConnection, ShowOptions, type SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, supportsTemporary, uninstall };
|
package/packages.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as attach, n as connect, r as hide, i as install, a as isVisible, o as list, s as mount, c as onConnect, l as onVisibilityChange, d as pick, f as search, p as show, m as uninstall } from "./packages-
|
|
1
|
+
export { t as attach, n as connect, r as hide, i as install, a as isVisible, o as list, s as mount, c as onConnect, l as onVisibilityChange, d as pick, f as search, p as show, m as supportsTemporary, h as uninstall } from "./packages-CrD5Sa28.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { X as Resolvers } from "./contract-
|
|
2
|
-
import "./api-
|
|
1
|
+
import { X as Resolvers } from "./contract-CDdIE_Es.js";
|
|
2
|
+
import "./api-DhwJz0vo.js";
|
|
3
3
|
type ProxyFetch = Resolvers['cloud']['fetch'];
|
|
4
4
|
type FetchParameters = Parameters<ProxyFetch>;
|
|
5
5
|
declare const cloudFetch: (input: FetchParameters[0], init?: FetchParameters[1]) => Promise<Response>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { D as RelayChoice, f as Frame } from "./index-HMfzm6dF.js";
|
|
2
|
-
import { K as RELAY_UNAVAILABLE } from "./contract-
|
|
2
|
+
import { K as RELAY_UNAVAILABLE } from "./contract-CDdIE_Es.js";
|
|
3
3
|
import { Server, Socket } from "net";
|
|
4
4
|
import { Socket as Socket$1 } from "dgram";
|
|
5
5
|
/** What `net.connect`, `net.createServer`, `dgram.createSocket` and `http.request` take beside Node's own options; Node ignores it. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-
|
|
1
|
+
import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-CDdIE_Es.js";
|
|
2
2
|
declare namespace rooms_d_exports {
|
|
3
3
|
export { RoomClaimOptions as ClaimOptions, RoomCreateOptions as CreateOptions, RoomJoinOptions as JoinOptions, RoomOpenOptions as OpenOptions, Room, RoomBacklog, RoomDefaults, RoomEnd, RoomEnvelope, RoomEvent, RoomJson, RoomMailbox, RoomMember, RoomMessage, RoomPermission, RoomPermissions, RoomSchema, RoomType, RoomsError, RoomsErrorCode, available, create, join, open };
|
|
4
4
|
}
|
package/rooms.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-
|
|
2
|
-
import { a as join, i as create, n as RoomsError, o as open, r as available, t as Room } from "./rooms-
|
|
1
|
+
import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-CDdIE_Es.js";
|
|
2
|
+
import { a as join, i as create, n as RoomsError, o as open, r as available, t as Room } from "./rooms-3XplwXzb.js";
|
|
3
3
|
export { type RoomClaimOptions as ClaimOptions, type RoomCreateOptions as CreateOptions, type RoomJoinOptions as JoinOptions, type RoomOpenOptions as OpenOptions, Room, type RoomBacklog, type RoomDefaults, type RoomEnd, type RoomEnvelope, type RoomEvent, type RoomJson, type RoomMailbox, type RoomMember, type RoomMessage, type RoomPermission, type RoomPermissions, type RoomSchema, type RoomType, RoomsError, type RoomsErrorCode, available, create, join, open };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-
|
|
1
|
+
import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-CDdIE_Es.js";
|
|
2
2
|
declare namespace storage_d_exports {
|
|
3
3
|
export { StorageError, StorageErrorCode, StorageProgress, StoragePutOptions, StoredBlob, StoredObject, StoredPage, available, remove as delete, get, list, put };
|
|
4
4
|
}
|
package/storage.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-
|
|
2
|
-
import { a as list, i as get, n as StoredBlob, o as put, r as available, s as remove, t as StorageError } from "./storage-
|
|
1
|
+
import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-CDdIE_Es.js";
|
|
2
|
+
import { a as list, i as get, n as StoredBlob, o as put, r as available, s as remove, t as StorageError } from "./storage-C38adB-z.js";
|
|
3
3
|
export { StorageError, type StorageErrorCode, type StorageProgress, type StoragePutOptions, StoredBlob, type StoredObject, type StoredPage, available, remove as delete, get, list, put };
|
package/packages-DT8vPB5_.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-DrvhPN56.cjs"),n=require("./busy-BXbVH595.cjs");let r=require("osra");var i=e.t({attach:()=>M,connect:()=>E,hide:()=>T,install:()=>m,isVisible:()=>K,list:()=>h,mount:()=>j,onConnect:()=>G,onVisibilityChange:()=>q,pick:()=>p,search:()=>f,show:()=>w,uninstall:()=>g}),a=`fkn-packages-connection`,o=`https://fkn.app`,s=3e4,c=(e,t)=>Object.assign(Error(t),{code:e}),l=async()=>{if(!t.l)throw c(`unavailable`,`packages: no FKN transport in this realm - use relayWorker to bridge workers`);return t.o},u=(e,t,n)=>(0,r.expose)(e??{},{transport:t,key:a,unregisterSignal:n}),d=async(e,t,n={})=>{let{signal:r,closed:i}=n;if(r?.aborted)throw c(`unavailable`,`packages.connect: aborted before connecting`);let a=new AbortController;r&&r.addEventListener(`abort`,()=>a.abort(r.reason),{once:!0});let o=new AbortController,l=new Promise((e,n)=>{let a=setTimeout(()=>n(c(`timeout`,`packages.connect: the package did not complete the connection`)),s);o.signal.addEventListener(`abort`,()=>clearTimeout(a),{once:!0}),t.addEventListener(`message`,e=>{if(e.data?.type===`fkn-packages-nack`){let t=e.data.message;n(c(`unavailable`,typeof t==`string`&&t?t:`packages.connect: the package refused the connection`))}},{signal:o.signal}),t.start(),r&&r.addEventListener(`abort`,()=>n(c(`unavailable`,`packages.connect: aborted before connecting`)),{once:!0,signal:o.signal}),i?.then(()=>n(c(`unavailable`,`packages.connect: the package closed before connecting`)))});try{return await Promise.race([u(e,t,a.signal),l])}catch(e){a.abort(e);try{t.close()}catch{}throw e}finally{o.abort()}},f=async e=>{let t=await(await l()).packages.search(e);if(`error`in t)throw c(t.error,t.message);return t.results},p=async(e,t)=>{let n=await(await l()).packages.pick(e,t);if(`error`in n)throw c(n.error,n.message);return`declined`in n?[]:n.results},m=async(e,t)=>{let n=await(await l()).packages.install(e,t);if(`error`in n)throw c(n.error,n.message);return`declined`in n?null:n.installed},h=async()=>(await(await l()).packages.list()).results,g=async e=>{let t=await(await l()).packages.uninstall(e);if(`error`in t)throw c(t.error,t.message)},_=({x:e,y:t,width:n,height:r})=>({x:Math.round(e),y:Math.round(t),width:Math.round(n),height:Math.round(r)}),v=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,width:Math.max(0,Math.min(e.x+e.width,t.x+t.width)-n),height:Math.max(0,Math.min(e.y+e.height,t.y+t.height)-r)}},y=(e,t)=>{let n=t;for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t);if((e.overflowX!==`visible`||e.overflowY!==`visible`)&&(n=v(n,_(t.getBoundingClientRect())),n.width===0||n.height===0))break}return n},b=e=>{let t=getComputedStyle(e),n=[t.borderTopLeftRadius,t.borderTopRightRadius,t.borderBottomRightRadius,t.borderBottomLeftRadius];if(n.some(e=>e.includes(`%`)||e.includes(` `)))return;let r=n.map(e=>{let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:0});return r.some(e=>e>0)?r:void 0},x=(e,t)=>{if(!e)return!1;let n=(e,t)=>e===t||!!e&&!!t&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height;return n(e.rect,t.rect)&&n(e.clip,t.clip)&&((e,t)=>e===t||!!e&&!!t&&e.every((e,n)=>e===t[n]))(e.radius,t.radius)},S=new Map;n.i(`package view`,()=>S.size>0);var C=async(e,t)=>{let n=S.get(e);if(n){for(let e of n)t&&e.element!==t||(e.stop(),n.delete(e));if(n.size>0)return;S.delete(e)}let r=await(await l()).packages.hide(e);if(`error`in r)throw c(r.error,r.message)},w=async(e,t)=>{let{element:n,rect:r}=t;if(!n&&!r)throw c(`invalid`,`packages.show: pass an element or a rect`);let i=(await l()).packages,a=()=>{if(!n)return{rect:_(r)};let e=_(n.getBoundingClientRect());return{rect:e,clip:y(n,e),radius:b(n)}},o=!0,s,u=0,d=async t=>{s=t;let n=await i.show(e,t);if(`error`in n)throw o=!1,c(n.error,n.message)};await d(a());let f=()=>{if(!o)return;let e=a();x(s,e)||d(e).catch(()=>{}),u=requestAnimationFrame(f)};n&&(u=requestAnimationFrame(f));let p={element:n,stop:()=>{o=!1,cancelAnimationFrame(u)}},m=S.get(e)??new Set;return m.add(p),S.set(e,m),{hide:()=>{C(e,n).catch(()=>{})},refresh:()=>{if(!o)return;let e=a();x(s,e)||d(e).catch(()=>{})}}},T=async(e,t={})=>C(e,t.element),E=(async(e,r={})=>{let i=await(await l()).packages.connect(e,{protocol:r.protocol,...r.path===void 0?{}:{path:r.path}});if(`error`in i)throw c(i.error,i.message);let a=n.t(`package connection`),o=t.c()?.epoch??0,s=t.u((e,t)=>{t!==o&&(a(),s())});Promise.resolve(i.closed).then(()=>{a(),s()},()=>{a(),s()});let{port:u,closed:f}=i;if(r.raw)return{closed:f,port:u};let p=await d(r.payload,u,{signal:r.signal,closed:f});return r.signal&&r.signal.addEventListener(`abort`,()=>{try{u.postMessage({type:`fkn-packages-disconnect`})}catch{}},{once:!0}),{remote:p,closed:f,port:u}}),D=[`allow-scripts`,`allow-same-origin`],O=e=>{let t=e.getAttribute(`sandbox`);if(t!==null){let e=new Set(t.toLowerCase().split(/\s+/).filter(Boolean)),n=D.filter(t=>!e.has(t));if(n.length)throw c(`invalid`,`packages.mount: the iframe's sandbox attribute must include ${n.join(` and `)}, or the package cannot start`)}if(globalThis.crossOriginIsolated&&!new Set((e.getAttribute(`allow`)??``).toLowerCase().split(`;`).map(e=>e.trim().split(/\s+/)[0]).filter(Boolean)).has(`cross-origin-isolated`))throw c(`invalid`,`packages.mount: this page is cross-origin isolated, so the iframe's allow attribute must include 'cross-origin-isolated' to hand that down to the package`)},k=3e4,A=(e,t)=>new Promise((n,r)=>{let i=e=>{clearTimeout(o),window.removeEventListener(`message`,a),e?r(e):n()},a=n=>{if(n.source!==e.contentWindow||n.origin!==t)return;let r=n.data;if(r?.type===`fkn-packages-ready`)return i();r?.type===`fkn-packages-failed`&&i(c(`unavailable`,typeof r.message==`string`&&r.message?r.message:`packages.mount: the package failed to boot`))},o=setTimeout(()=>i(c(`timeout`,`packages.mount: the package did not register a connection handler`)),k);window.addEventListener(`message`,a)}),j=async(e,t)=>{let{iframe:r}=t;if(!(r instanceof HTMLIFrameElement))throw c(`invalid`,`packages.mount: pass the iframe to load the package into`);if(!r.isConnected)throw c(`invalid`,`packages.mount: the iframe must be in the document before mounting into it`);O(r);let i=await(await l()).packages.frame(e);if(`error`in i)throw c(i.error,i.message);r.src=i.url;let a={done:!1},o=()=>{},s=new Promise(e=>{o=e}),u=n.t(`mounted package`),f=()=>{if(!a.done){a.done=!0,u();try{r.contentWindow?.postMessage({type:`fkn-packages-close`},i.origin)}catch{}r.src=`about:blank`,o()}};try{await A(r,i.origin)}catch(e){throw f(),e}let p=new MessageChannel,m=r.contentWindow;if(!m)throw f(),c(`unavailable`,`packages.mount: the frame was detached before it could connect`);m.postMessage({type:`fkn-packages-port`,from:i.from,protocol:t.protocol,uri:i.uri,name:i.name,version:i.version},i.origin,[p.port2]);try{m.postMessage({type:`fkn-packages-visibility`,visible:!0},i.origin)}catch{}if(t.raw)return{closed:s,port:p.port1,frame:r,unmount:f};try{return{remote:await d(t.payload,p.port1,{signal:t.signal,closed:s}),closed:s,port:p.port1,frame:r,unmount:f}}catch(e){throw f(),e}},M=(e,t,n)=>d(t,e,{signal:n?.signal}),N=null,P=!1,F=new Set,I=[],L=new Map,R=!1,z=!1,B=e=>{let t=L.get(e);t&&(L.delete(e),t())},V=(e,t)=>{try{e.postMessage({type:`fkn-packages-nack`,message:t})}catch{}try{e.close()}catch{}},H=async(e,t)=>{let{port:n,...r}=e;e.port.addEventListener(`message`,t=>{t.data?.type===`fkn-packages-disconnect`&&B(e.port)});let i;try{i=await t.createPayload(r)}catch(t){throw V(e.port,t instanceof Error?t.message:`the package failed to produce a connection`),t}let a=new Promise(t=>L.set(e.port,t)),o=await u(i,e.port);t.handler?.({...r,remote:o,closed:a,port:e.port})},U=()=>{R||typeof window>`u`||window.parent===window||(R=!0,window.addEventListener(`message`,e=>{if(e.source!==window.parent)return;let t=e.data;if(t?.type===`fkn-packages-port`){let n=e.ports[0];if(!n)return;let r={port:n,from:typeof t.from==`string`?t.from:``,brokered:e.origin===o,protocol:typeof t.protocol==`string`?t.protocol:null,uri:typeof t.uri==`string`?t.uri:``,name:typeof t.name==`string`?t.name:``,version:typeof t.version==`string`?t.version:``};N?H(r,N).catch(e=>console.warn(`packages.onConnect:`,e)):I.push(r)}if(t?.type===`fkn-packages-close`)for(let e of[...L.keys()])B(e);if(t?.type===`fkn-packages-visibility`){P=t.visible===!0;for(let e of F)try{e(P)}catch{}}}))},W=()=>{z||typeof window>`u`||window.parent===window||(z=!0,window.parent.postMessage({type:`fkn-packages-ready`},`*`))},G=(e,t)=>{if(typeof window>`u`)return{unsubscribe:()=>{}};U();let n={createPayload:e,handler:t};for(N=n,W();I.length&&N===n;)H(I.shift(),n).catch(e=>console.warn(`packages.onConnect:`,e));return{unsubscribe:()=>{N===n&&(N=null)}}},K=()=>P,q=e=>{if(typeof window>`u`)return{unsubscribe:()=>{}};U(),F.add(e);try{e(P)}catch{}return{unsubscribe:()=>{F.delete(e)}}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return i}});
|