@fkn/lib 0.9.53 → 0.9.55
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-generation-BgiEc3fw.js → account-generation-CTB1J33G.js} +4 -3
- package/account-generation-DOuApHq5.cjs +1 -0
- package/{account-storage-IAVrRXTF.cjs → account-storage-CL0wLuQw.cjs} +1 -1
- package/{account-storage-DHl6bXdb.d.ts → account-storage-Co9IvkPr.d.ts} +3 -3
- package/{account-storage-DptsMWKl.js → account-storage-D1RiskV6.js} +2 -2
- package/account.cjs +1 -1
- package/account.d.ts +21 -11
- package/account.js +2 -2
- package/{api-mHRuM_Sd.d.ts → api-BSpQkgnM.d.ts} +1198 -30
- package/{api-CX9w35R2.js → api-BYtMzj8u.js} +1 -1
- package/{api-6wTec7WK.cjs → api-Csb5b8dE.cjs} +1 -1
- package/api.cjs +1 -1
- package/api.d.ts +2 -2
- package/api.js +1 -1
- package/cloud/dns.d.ts +1 -1
- package/cloud/fetch.cjs +1 -1
- package/cloud/fetch.d.ts +1 -1
- package/cloud/fetch.js +1 -1
- package/cloud/fs/promises.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-CMEnCSBw.js → cloud-8sJ1Sg8n.js} +3 -3
- package/{cloud-Dykm74YZ.d.ts → cloud-BslRIoKs.d.ts} +3 -3
- package/{cloud-kg1hOpPJ.cjs → cloud-CI6WMBPa.cjs} +1 -1
- package/cloud.cjs +1 -1
- package/cloud.d.ts +4 -4
- package/cloud.js +2 -2
- package/{contract-BN0cD-Oq.d.ts → contract-DFycgFJK.d.ts} +160 -8
- package/contract.d.ts +2 -2
- package/dgram.cjs +1 -1
- package/dgram.d.ts +2 -2
- package/dgram.js +1 -1
- package/dns.cjs +1 -1
- package/dns.d.ts +1 -1
- package/dns.js +1 -1
- package/{extension-BdAR-wQ0.cjs → extension-BXI3MVXw.cjs} +1 -1
- package/{extension-DiyykwoW.js → extension-BmqjgSIQ.js} +3 -3
- package/extension.cjs +1 -1
- package/extension.js +2 -2
- package/fs/promises.cjs +1 -1
- package/fs/promises.d.ts +1 -1
- package/fs/promises.js +1 -1
- package/{fs-CPsnX6ti.cjs → fs-CPU00CI3.cjs} +1 -1
- package/{fs-BZv2djbS.d.ts → fs-DCJAYoYy.d.ts} +1 -1
- package/{fs-Cd1HK3C3.js → fs-ohcMNiu2.js} +2 -2
- package/fs.cjs +1 -1
- package/fs.d.ts +2 -2
- package/fs.js +2 -2
- package/http.d.ts +1 -1
- package/{index-DawD_N1P.d.ts → index-57lTXnoe.d.ts} +1 -1
- package/index.cjs +1 -1
- package/index.d.ts +4 -4
- package/index.js +5 -5
- package/{lib-C5N2rmbj.js → lib-BGAmzIcU.js} +1 -1
- package/{lib-C0xyv8BQ.cjs → lib-BiQ6cOZ7.cjs} +1 -1
- package/{net-Dq1KyRP0.d.ts → net-eEjhJ0AE.d.ts} +2 -2
- package/net.cjs +1 -1
- package/net.d.ts +1 -1
- package/net.js +1 -1
- package/package.json +1 -1
- package/packages.cjs +1 -1
- package/packages.d.ts +15 -2
- package/packages.js +114 -113
- package/{proxy-Cer0Iarp.d.ts → proxy-8hIHeEHD.d.ts} +2 -2
- package/{proxy-DhalpZoN.cjs → proxy-CL8j00ao.cjs} +1 -1
- package/{proxy-v_Z5aPh2.js → proxy-vAsYHMIa.js} +1 -1
- package/rooms.cjs +1 -1
- package/rooms.d.ts +43 -9
- package/rooms.js +167 -94
- package/storage.cjs +1 -1
- package/storage.d.ts +1 -1
- package/storage.js +3 -3
- package/account-generation-C5rMCyt1.cjs +0 -1
package/packages.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-Csb5b8dE.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)}}};exports.attach=M,exports.connect=E,exports.hide=T,exports.install=m,exports.isVisible=K,exports.list=h,exports.mount=j,exports.onConnect=G,exports.onVisibilityChange=q,exports.pick=p,exports.search=f,exports.show=w,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}}),exports.uninstall=g;
|
package/packages.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { E as InstalledPackage, F as PackageResult, G as Radii, I as PackagesErrorCode, P as PackageQuery, Pt as SurfaceRect, R as PickOptions, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-DFycgFJK.js";
|
|
2
2
|
import { Remote } from "osra";
|
|
3
3
|
declare namespace packages_d_exports {
|
|
4
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 };
|
|
@@ -101,6 +101,7 @@ export type MountedPackage<T = unknown> = PackageConnection<T> & {
|
|
|
101
101
|
* at navigation and is not inherited, so it cannot be added afterwards on the frame handed back.
|
|
102
102
|
*
|
|
103
103
|
* Needs a package built against this version of the lib: an older one only accepts a port from fkn.app.
|
|
104
|
+
* The package reads `brokered: false`.
|
|
104
105
|
*/
|
|
105
106
|
export declare const mount: <T = unknown>(uri: string, options: MountOptions) => Promise<MountedPackage<T>>;
|
|
106
107
|
/** Run this end of an already-brokered connection port, e.g. after transferring it into a worker. */
|
|
@@ -108,8 +109,20 @@ export declare const attach: <T = unknown>(port: MessagePort, payload?: unknown,
|
|
|
108
109
|
signal?: AbortSignal;
|
|
109
110
|
}) => Promise<Remote<T>>;
|
|
110
111
|
export type IncomingConnectionInfo = {
|
|
111
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* The connecting app's identity: its package uri when it runs on a sandbox origin, else its page
|
|
114
|
+
* origin. Proof of nothing unless `brokered` is true: under `packages.mount`, or in any page that
|
|
115
|
+
* frames this package's url itself, the embedder writes whatever it likes here.
|
|
116
|
+
*/
|
|
112
117
|
from: string;
|
|
118
|
+
/**
|
|
119
|
+
* True only when fkn.app's broker made this connection (`packages.connect`), so `from` is the app the
|
|
120
|
+
* broker identified by its browser-set origin. False under `packages.mount` and for any other embedder.
|
|
121
|
+
* Worked out here from the origin of the message that carried the port, never read from the message.
|
|
122
|
+
* Key what a connection is allowed (a grant you stored, an app named to the person) to `from` only
|
|
123
|
+
* when this is true. A package built on a lib older than this field gets none, so test `=== true`.
|
|
124
|
+
*/
|
|
125
|
+
brokered: boolean;
|
|
113
126
|
/** the contract tag the app passed to connect(), e.g. 'stub-source@1' */
|
|
114
127
|
protocol: string | null;
|
|
115
128
|
/** this package's normalized uri per the connecting app's install record, e.g. 'npm:@banou/stub-source-example' */
|
package/packages.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
|
|
2
|
-
import { c as t, l as n, o as r, u as i } from "./api-
|
|
2
|
+
import { c as t, l as n, o as r, u as i } from "./api-BYtMzj8u.js";
|
|
3
3
|
import { i as a, t as o } from "./busy-DsMWrSzc.js";
|
|
4
4
|
import { expose as s } from "osra";
|
|
5
5
|
//#region src/packages.ts
|
|
6
6
|
var c = /* @__PURE__ */ e({
|
|
7
|
-
attach: () =>
|
|
8
|
-
connect: () =>
|
|
9
|
-
hide: () =>
|
|
10
|
-
install: () =>
|
|
11
|
-
isVisible: () =>
|
|
12
|
-
list: () =>
|
|
13
|
-
mount: () =>
|
|
14
|
-
onConnect: () =>
|
|
15
|
-
onVisibilityChange: () =>
|
|
16
|
-
pick: () =>
|
|
17
|
-
search: () =>
|
|
18
|
-
show: () =>
|
|
19
|
-
uninstall: () =>
|
|
20
|
-
}), l = "fkn-packages-connection", u =
|
|
21
|
-
if (!n) throw
|
|
7
|
+
attach: () => I,
|
|
8
|
+
connect: () => A,
|
|
9
|
+
hide: () => k,
|
|
10
|
+
install: () => v,
|
|
11
|
+
isVisible: () => X,
|
|
12
|
+
list: () => y,
|
|
13
|
+
mount: () => F,
|
|
14
|
+
onConnect: () => Y,
|
|
15
|
+
onVisibilityChange: () => Z,
|
|
16
|
+
pick: () => _,
|
|
17
|
+
search: () => g,
|
|
18
|
+
show: () => O,
|
|
19
|
+
uninstall: () => b
|
|
20
|
+
}), l = "fkn-packages-connection", u = "https://fkn.app", d = 3e4, f = (e, t) => Object.assign(Error(t), { code: e }), p = async () => {
|
|
21
|
+
if (!n) throw f("unavailable", "packages: no FKN transport in this realm - use relayWorker to bridge workers");
|
|
22
22
|
return r;
|
|
23
|
-
},
|
|
23
|
+
}, m = (e, t, n) => s(e ?? {}, {
|
|
24
24
|
transport: t,
|
|
25
25
|
key: l,
|
|
26
26
|
unregisterSignal: n
|
|
27
|
-
}),
|
|
27
|
+
}), h = async (e, t, n = {}) => {
|
|
28
28
|
let { signal: r, closed: i } = n;
|
|
29
|
-
if (r?.aborted) throw
|
|
29
|
+
if (r?.aborted) throw f("unavailable", "packages.connect: aborted before connecting");
|
|
30
30
|
let a = new AbortController();
|
|
31
31
|
r && r.addEventListener("abort", () => a.abort(r.reason), { once: !0 });
|
|
32
32
|
let o = new AbortController(), s = new Promise((e, n) => {
|
|
33
|
-
let a = setTimeout(() => n(
|
|
33
|
+
let a = setTimeout(() => n(f("timeout", "packages.connect: the package did not complete the connection")), d);
|
|
34
34
|
o.signal.addEventListener("abort", () => clearTimeout(a), { once: !0 }), t.addEventListener("message", (e) => {
|
|
35
35
|
if (e.data?.type === "fkn-packages-nack") {
|
|
36
36
|
let t = e.data.message;
|
|
37
|
-
n(
|
|
37
|
+
n(f("unavailable", typeof t == "string" && t ? t : "packages.connect: the package refused the connection"));
|
|
38
38
|
}
|
|
39
|
-
}, { signal: o.signal }), t.start(), r && r.addEventListener("abort", () => n(
|
|
39
|
+
}, { signal: o.signal }), t.start(), r && r.addEventListener("abort", () => n(f("unavailable", "packages.connect: aborted before connecting")), {
|
|
40
40
|
once: !0,
|
|
41
41
|
signal: o.signal
|
|
42
|
-
}), i?.then(() => n(
|
|
42
|
+
}), i?.then(() => n(f("unavailable", "packages.connect: the package closed before connecting")));
|
|
43
43
|
});
|
|
44
44
|
try {
|
|
45
|
-
return await Promise.race([
|
|
45
|
+
return await Promise.race([m(e, t, a.signal), s]);
|
|
46
46
|
} catch (e) {
|
|
47
47
|
a.abort(e);
|
|
48
48
|
try {
|
|
@@ -52,27 +52,27 @@ var c = /* @__PURE__ */ e({
|
|
|
52
52
|
} finally {
|
|
53
53
|
o.abort();
|
|
54
54
|
}
|
|
55
|
-
},
|
|
56
|
-
let t = await (await
|
|
57
|
-
if ("error" in t) throw
|
|
55
|
+
}, g = async (e) => {
|
|
56
|
+
let t = await (await p()).packages.search(e);
|
|
57
|
+
if ("error" in t) throw f(t.error, t.message);
|
|
58
58
|
return t.results;
|
|
59
|
-
}, g = async (e, t) => {
|
|
60
|
-
let n = await (await f()).packages.pick(e, t);
|
|
61
|
-
if ("error" in n) throw d(n.error, n.message);
|
|
62
|
-
return "declined" in n ? [] : n.results;
|
|
63
59
|
}, _ = async (e, t) => {
|
|
64
|
-
let n = await (await
|
|
65
|
-
if ("error" in n) throw
|
|
60
|
+
let n = await (await p()).packages.pick(e, t);
|
|
61
|
+
if ("error" in n) throw f(n.error, n.message);
|
|
62
|
+
return "declined" in n ? [] : n.results;
|
|
63
|
+
}, v = async (e, t) => {
|
|
64
|
+
let n = await (await p()).packages.install(e, t);
|
|
65
|
+
if ("error" in n) throw f(n.error, n.message);
|
|
66
66
|
return "declined" in n ? null : n.installed;
|
|
67
|
-
},
|
|
68
|
-
let t = await (await
|
|
69
|
-
if ("error" in t) throw
|
|
70
|
-
},
|
|
67
|
+
}, y = async () => (await (await p()).packages.list()).results, b = async (e) => {
|
|
68
|
+
let t = await (await p()).packages.uninstall(e);
|
|
69
|
+
if ("error" in t) throw f(t.error, t.message);
|
|
70
|
+
}, x = ({ x: e, y: t, width: n, height: r }) => ({
|
|
71
71
|
x: Math.round(e),
|
|
72
72
|
y: Math.round(t),
|
|
73
73
|
width: Math.round(n),
|
|
74
74
|
height: Math.round(r)
|
|
75
|
-
}),
|
|
75
|
+
}), S = (e, t) => {
|
|
76
76
|
let n = Math.max(e.x, t.x), r = Math.max(e.y, t.y);
|
|
77
77
|
return {
|
|
78
78
|
x: n,
|
|
@@ -80,14 +80,14 @@ var c = /* @__PURE__ */ e({
|
|
|
80
80
|
width: Math.max(0, Math.min(e.x + e.width, t.x + t.width) - n),
|
|
81
81
|
height: Math.max(0, Math.min(e.y + e.height, t.y + t.height) - r)
|
|
82
82
|
};
|
|
83
|
-
},
|
|
83
|
+
}, C = (e, t) => {
|
|
84
84
|
let n = t;
|
|
85
85
|
for (let t = e.parentElement; t; t = t.parentElement) {
|
|
86
86
|
let e = getComputedStyle(t);
|
|
87
|
-
if ((e.overflowX !== "visible" || e.overflowY !== "visible") && (n =
|
|
87
|
+
if ((e.overflowX !== "visible" || e.overflowY !== "visible") && (n = S(n, x(t.getBoundingClientRect())), n.width === 0 || n.height === 0)) break;
|
|
88
88
|
}
|
|
89
89
|
return n;
|
|
90
|
-
},
|
|
90
|
+
}, w = (e) => {
|
|
91
91
|
let t = getComputedStyle(e), n = [
|
|
92
92
|
t.borderTopLeftRadius,
|
|
93
93
|
t.borderTopRightRadius,
|
|
@@ -100,66 +100,66 @@ var c = /* @__PURE__ */ e({
|
|
|
100
100
|
return Number.isFinite(t) && t > 0 ? t : 0;
|
|
101
101
|
});
|
|
102
102
|
return r.some((e) => e > 0) ? r : void 0;
|
|
103
|
-
},
|
|
103
|
+
}, T = (e, t) => {
|
|
104
104
|
if (!e) return !1;
|
|
105
105
|
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
106
|
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 =
|
|
107
|
+
}, E = /* @__PURE__ */ new Map();
|
|
108
|
+
a("package view", () => E.size > 0);
|
|
109
|
+
var D = async (e, t) => {
|
|
110
|
+
let n = E.get(e);
|
|
111
111
|
if (n) {
|
|
112
112
|
for (let e of n) t && e.element !== t || (e.stop(), n.delete(e));
|
|
113
113
|
if (n.size > 0) return;
|
|
114
|
-
|
|
114
|
+
E.delete(e);
|
|
115
115
|
}
|
|
116
|
-
let r = await (await
|
|
117
|
-
if ("error" in r) throw
|
|
118
|
-
},
|
|
116
|
+
let r = await (await p()).packages.hide(e);
|
|
117
|
+
if ("error" in r) throw f(r.error, r.message);
|
|
118
|
+
}, O = async (e, t) => {
|
|
119
119
|
let { element: n, rect: r } = t;
|
|
120
|
-
if (!n && !r) throw
|
|
121
|
-
let i = (await
|
|
122
|
-
if (!n) return { rect:
|
|
123
|
-
let e =
|
|
120
|
+
if (!n && !r) throw f("invalid", "packages.show: pass an element or a rect");
|
|
121
|
+
let i = (await p()).packages, a = () => {
|
|
122
|
+
if (!n) return { rect: x(r) };
|
|
123
|
+
let e = x(n.getBoundingClientRect());
|
|
124
124
|
return {
|
|
125
125
|
rect: e,
|
|
126
|
-
clip:
|
|
127
|
-
radius:
|
|
126
|
+
clip: C(n, e),
|
|
127
|
+
radius: w(n)
|
|
128
128
|
};
|
|
129
129
|
}, o = !0, s, c = 0, l = async (t) => {
|
|
130
130
|
s = t;
|
|
131
131
|
let n = await i.show(e, t);
|
|
132
|
-
if ("error" in n) throw o = !1,
|
|
132
|
+
if ("error" in n) throw o = !1, f(n.error, n.message);
|
|
133
133
|
};
|
|
134
134
|
await l(a());
|
|
135
135
|
let u = () => {
|
|
136
136
|
if (!o) return;
|
|
137
137
|
let e = a();
|
|
138
|
-
|
|
138
|
+
T(s, e) || l(e).catch(() => {}), c = requestAnimationFrame(u);
|
|
139
139
|
};
|
|
140
140
|
n && (c = requestAnimationFrame(u));
|
|
141
|
-
let
|
|
141
|
+
let d = {
|
|
142
142
|
element: n,
|
|
143
143
|
stop: () => {
|
|
144
144
|
o = !1, cancelAnimationFrame(c);
|
|
145
145
|
}
|
|
146
|
-
}, m =
|
|
147
|
-
return m.add(
|
|
146
|
+
}, m = E.get(e) ?? /* @__PURE__ */ new Set();
|
|
147
|
+
return m.add(d), E.set(e, m), {
|
|
148
148
|
hide: () => {
|
|
149
|
-
|
|
149
|
+
D(e, n).catch(() => {});
|
|
150
150
|
},
|
|
151
151
|
refresh: () => {
|
|
152
152
|
if (!o) return;
|
|
153
153
|
let e = a();
|
|
154
|
-
|
|
154
|
+
T(s, e) || l(e).catch(() => {});
|
|
155
155
|
}
|
|
156
156
|
};
|
|
157
|
-
},
|
|
158
|
-
let r = await (await
|
|
157
|
+
}, k = async (e, t = {}) => D(e, t.element), A = (async (e, n = {}) => {
|
|
158
|
+
let r = await (await p()).packages.connect(e, {
|
|
159
159
|
protocol: n.protocol,
|
|
160
160
|
...n.path === void 0 ? {} : { path: n.path }
|
|
161
161
|
});
|
|
162
|
-
if ("error" in r) throw
|
|
162
|
+
if ("error" in r) throw f(r.error, r.message);
|
|
163
163
|
let a = o("package connection"), s = t()?.epoch ?? 0, c = i((e, t) => {
|
|
164
164
|
t !== s && (a(), c());
|
|
165
165
|
});
|
|
@@ -173,7 +173,7 @@ var E = async (e, t) => {
|
|
|
173
173
|
closed: u,
|
|
174
174
|
port: l
|
|
175
175
|
};
|
|
176
|
-
let
|
|
176
|
+
let d = await h(n.payload, l, {
|
|
177
177
|
signal: n.signal,
|
|
178
178
|
closed: u
|
|
179
179
|
});
|
|
@@ -182,34 +182,34 @@ var E = async (e, t) => {
|
|
|
182
182
|
l.postMessage({ type: "fkn-packages-disconnect" });
|
|
183
183
|
} catch {}
|
|
184
184
|
}, { once: !0 }), {
|
|
185
|
-
remote:
|
|
185
|
+
remote: d,
|
|
186
186
|
closed: u,
|
|
187
187
|
port: l
|
|
188
188
|
};
|
|
189
|
-
}),
|
|
189
|
+
}), j = ["allow-scripts", "allow-same-origin"], M = (e) => {
|
|
190
190
|
let t = e.getAttribute("sandbox");
|
|
191
191
|
if (t !== null) {
|
|
192
|
-
let e = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), n =
|
|
193
|
-
if (n.length) throw
|
|
192
|
+
let e = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), n = j.filter((t) => !e.has(t));
|
|
193
|
+
if (n.length) throw f("invalid", `packages.mount: the iframe's sandbox attribute must include ${n.join(" and ")}, or the package cannot start`);
|
|
194
194
|
}
|
|
195
|
-
if (globalThis.crossOriginIsolated && !new Set((e.getAttribute("allow") ?? "").toLowerCase().split(";").map((e) => e.trim().split(/\s+/)[0]).filter(Boolean)).has("cross-origin-isolated")) throw
|
|
196
|
-
},
|
|
195
|
+
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
|
+
}, N = 3e4, P = (e, t) => new Promise((n, r) => {
|
|
197
197
|
let i = (e) => {
|
|
198
198
|
clearTimeout(o), window.removeEventListener("message", a), e ? r(e) : n();
|
|
199
199
|
}, a = (n) => {
|
|
200
200
|
if (n.source !== e.contentWindow || n.origin !== t) return;
|
|
201
201
|
let r = n.data;
|
|
202
202
|
if (r?.type === "fkn-packages-ready") return i();
|
|
203
|
-
r?.type === "fkn-packages-failed" && i(
|
|
204
|
-
}, o = setTimeout(() => i(
|
|
203
|
+
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")), N);
|
|
205
205
|
window.addEventListener("message", a);
|
|
206
|
-
}),
|
|
206
|
+
}), F = async (e, t) => {
|
|
207
207
|
let { iframe: n } = t;
|
|
208
|
-
if (!(n instanceof HTMLIFrameElement)) throw
|
|
209
|
-
if (!n.isConnected) throw
|
|
210
|
-
|
|
211
|
-
let r = await (await
|
|
212
|
-
if ("error" in r) throw
|
|
208
|
+
if (!(n instanceof HTMLIFrameElement)) throw f("invalid", "packages.mount: pass the iframe to load the package into");
|
|
209
|
+
if (!n.isConnected) throw f("invalid", "packages.mount: the iframe must be in the document before mounting into it");
|
|
210
|
+
M(n);
|
|
211
|
+
let r = await (await p()).packages.frame(e);
|
|
212
|
+
if ("error" in r) throw f(r.error, r.message);
|
|
213
213
|
n.src = r.url;
|
|
214
214
|
let i = { done: !1 }, a = () => {}, s = new Promise((e) => {
|
|
215
215
|
a = e;
|
|
@@ -223,13 +223,13 @@ var E = async (e, t) => {
|
|
|
223
223
|
}
|
|
224
224
|
};
|
|
225
225
|
try {
|
|
226
|
-
await
|
|
226
|
+
await P(n, r.origin);
|
|
227
227
|
} catch (e) {
|
|
228
228
|
throw l(), e;
|
|
229
229
|
}
|
|
230
|
-
let u = new MessageChannel(),
|
|
231
|
-
if (!
|
|
232
|
-
|
|
230
|
+
let u = new MessageChannel(), d = n.contentWindow;
|
|
231
|
+
if (!d) throw l(), f("unavailable", "packages.mount: the frame was detached before it could connect");
|
|
232
|
+
d.postMessage({
|
|
233
233
|
type: "fkn-packages-port",
|
|
234
234
|
from: r.from,
|
|
235
235
|
protocol: t.protocol,
|
|
@@ -238,7 +238,7 @@ var E = async (e, t) => {
|
|
|
238
238
|
version: r.version
|
|
239
239
|
}, r.origin, [u.port2]);
|
|
240
240
|
try {
|
|
241
|
-
|
|
241
|
+
d.postMessage({
|
|
242
242
|
type: "fkn-packages-visibility",
|
|
243
243
|
visible: !0
|
|
244
244
|
}, r.origin);
|
|
@@ -251,7 +251,7 @@ var E = async (e, t) => {
|
|
|
251
251
|
};
|
|
252
252
|
try {
|
|
253
253
|
return {
|
|
254
|
-
remote: await
|
|
254
|
+
remote: await h(t.payload, u.port1, {
|
|
255
255
|
signal: t.signal,
|
|
256
256
|
closed: s
|
|
257
257
|
}),
|
|
@@ -263,10 +263,10 @@ var E = async (e, t) => {
|
|
|
263
263
|
} catch (e) {
|
|
264
264
|
throw l(), e;
|
|
265
265
|
}
|
|
266
|
-
},
|
|
267
|
-
let t =
|
|
268
|
-
t && (
|
|
269
|
-
},
|
|
266
|
+
}, I = (e, t, n) => h(t, e, { signal: n?.signal }), L = null, R = !1, z = /* @__PURE__ */ new Set(), B = [], V = /* @__PURE__ */ new Map(), H = !1, U = !1, W = (e) => {
|
|
267
|
+
let t = V.get(e);
|
|
268
|
+
t && (V.delete(e), t());
|
|
269
|
+
}, G = (e, t) => {
|
|
270
270
|
try {
|
|
271
271
|
e.postMessage({
|
|
272
272
|
type: "fkn-packages-nack",
|
|
@@ -276,26 +276,26 @@ var E = async (e, t) => {
|
|
|
276
276
|
try {
|
|
277
277
|
e.close();
|
|
278
278
|
} catch {}
|
|
279
|
-
},
|
|
279
|
+
}, K = async (e, t) => {
|
|
280
280
|
let { port: n, ...r } = e;
|
|
281
281
|
e.port.addEventListener("message", (t) => {
|
|
282
|
-
t.data?.type === "fkn-packages-disconnect" &&
|
|
282
|
+
t.data?.type === "fkn-packages-disconnect" && W(e.port);
|
|
283
283
|
});
|
|
284
284
|
let i;
|
|
285
285
|
try {
|
|
286
286
|
i = await t.createPayload(r);
|
|
287
287
|
} catch (t) {
|
|
288
|
-
throw
|
|
288
|
+
throw G(e.port, t instanceof Error ? t.message : "the package failed to produce a connection"), t;
|
|
289
289
|
}
|
|
290
|
-
let a = new Promise((t) =>
|
|
290
|
+
let a = new Promise((t) => V.set(e.port, t)), o = await m(i, e.port);
|
|
291
291
|
t.handler?.({
|
|
292
292
|
...r,
|
|
293
293
|
remote: o,
|
|
294
294
|
closed: a,
|
|
295
295
|
port: e.port
|
|
296
296
|
});
|
|
297
|
-
},
|
|
298
|
-
|
|
297
|
+
}, q = () => {
|
|
298
|
+
H || typeof window > "u" || window.parent === window || (H = !0, window.addEventListener("message", (e) => {
|
|
299
299
|
if (e.source !== window.parent) return;
|
|
300
300
|
let t = e.data;
|
|
301
301
|
if (t?.type === "fkn-packages-port") {
|
|
@@ -304,43 +304,44 @@ var E = async (e, t) => {
|
|
|
304
304
|
let r = {
|
|
305
305
|
port: n,
|
|
306
306
|
from: typeof t.from == "string" ? t.from : "",
|
|
307
|
+
brokered: e.origin === u,
|
|
307
308
|
protocol: typeof t.protocol == "string" ? t.protocol : null,
|
|
308
309
|
uri: typeof t.uri == "string" ? t.uri : "",
|
|
309
310
|
name: typeof t.name == "string" ? t.name : "",
|
|
310
311
|
version: typeof t.version == "string" ? t.version : ""
|
|
311
312
|
};
|
|
312
|
-
|
|
313
|
+
L ? K(r, L).catch((e) => console.warn("packages.onConnect:", e)) : B.push(r);
|
|
313
314
|
}
|
|
314
|
-
if (t?.type === "fkn-packages-close") for (let e of [...
|
|
315
|
+
if (t?.type === "fkn-packages-close") for (let e of [...V.keys()]) W(e);
|
|
315
316
|
if (t?.type === "fkn-packages-visibility") {
|
|
316
|
-
|
|
317
|
-
for (let e of
|
|
318
|
-
e(
|
|
317
|
+
R = t.visible === !0;
|
|
318
|
+
for (let e of z) try {
|
|
319
|
+
e(R);
|
|
319
320
|
} catch {}
|
|
320
321
|
}
|
|
321
322
|
}));
|
|
322
|
-
},
|
|
323
|
-
|
|
324
|
-
},
|
|
323
|
+
}, J = () => {
|
|
324
|
+
U || typeof window > "u" || window.parent === window || (U = !0, window.parent.postMessage({ type: "fkn-packages-ready" }, "*"));
|
|
325
|
+
}, Y = (e, t) => {
|
|
325
326
|
if (typeof window > "u") return { unsubscribe: () => {} };
|
|
326
|
-
|
|
327
|
+
q();
|
|
327
328
|
let n = {
|
|
328
329
|
createPayload: e,
|
|
329
330
|
handler: t
|
|
330
331
|
};
|
|
331
|
-
for (
|
|
332
|
+
for (L = n, J(); B.length && L === n;) K(B.shift(), n).catch((e) => console.warn("packages.onConnect:", e));
|
|
332
333
|
return { unsubscribe: () => {
|
|
333
|
-
|
|
334
|
+
L === n && (L = null);
|
|
334
335
|
} };
|
|
335
|
-
},
|
|
336
|
+
}, X = () => R, Z = (e) => {
|
|
336
337
|
if (typeof window > "u") return { unsubscribe: () => {} };
|
|
337
|
-
|
|
338
|
+
q(), z.add(e);
|
|
338
339
|
try {
|
|
339
|
-
e(
|
|
340
|
+
e(R);
|
|
340
341
|
} catch {}
|
|
341
342
|
return { unsubscribe: () => {
|
|
342
|
-
|
|
343
|
+
z.delete(e);
|
|
343
344
|
} };
|
|
344
345
|
};
|
|
345
346
|
//#endregion
|
|
346
|
-
export {
|
|
347
|
+
export { I as attach, A as connect, k as hide, v as install, X as isVisible, y as list, F as mount, Y as onConnect, Z as onVisibilityChange, _ as pick, g as search, O as show, c as t, b as uninstall };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { K as Resolvers } from "./contract-
|
|
2
|
-
import "./api-
|
|
1
|
+
import { K as Resolvers } from "./contract-DFycgFJK.js";
|
|
2
|
+
import "./api-BSpQkgnM.js";
|
|
3
3
|
//#region src/proxy.d.ts
|
|
4
4
|
type ProxyFetch = Resolvers['cloud']['fetch'];
|
|
5
5
|
type FetchParameters = Parameters<ProxyFetch>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./api-
|
|
1
|
+
const e=require("./api-Csb5b8dE.cjs"),t=require("./busy-BXbVH595.cjs");var n=typeof FinalizationRegistry>`u`?void 0:new FinalizationRegistry(e=>e()),r=e=>{let r=e.body;if(!r)return e;let i=t.t(`streamed response`),a=r.getReader(),o=new ReadableStream({pull:async e=>{try{let{done:t,value:n}=await a.read();if(t){i(),e.close();return}e.enqueue(n)}catch(t){i(),e.error(t)}},cancel:async e=>{i(),await a.cancel(e).catch(()=>{})}}),s=new Response(o,{status:e.status,statusText:e.statusText,headers:e.headers});return n?.register(s,i),s},i=async e=>{if(e!=null)return typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e:new Request(`https://body.invalid/`,{method:`POST`,body:e,duplex:`half`}).arrayBuffer()},a=async e=>{if(e.method===`GET`||e.method===`HEAD`)return;let t=await e.clone().arrayBuffer();return t.byteLength?t:void 0},o=async(t,n)=>{if(e.p(t),typeof t==`object`&&t&&!(t instanceof URL)&&typeof t.url==`string`){let o=t,s={};o.headers.forEach((e,t)=>{s[t]=e});let c=await i(n?.body===void 0?await a(o):n.body);return e.o.then(e=>e.cloud.fetch(o.url,{...n,method:n?.method??o.method,headers:n?.headers??s,body:c})).then(r)}let o=t instanceof URL?t.href:t,s=await i(n?.body);return e.o.then(e=>e.cloud.fetch(o,n?.body===void 0?n:{...n,body:s})).then(r)};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return o}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as e, p as t } from "./api-
|
|
1
|
+
import { o as e, p as t } from "./api-BYtMzj8u.js";
|
|
2
2
|
import { t as n } from "./busy-DsMWrSzc.js";
|
|
3
3
|
//#region src/proxy.ts
|
|
4
4
|
var r = typeof FinalizationRegistry > "u" ? void 0 : new FinalizationRegistry((e) => e()), i = (e) => {
|
package/rooms.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-Csb5b8dE.cjs"),n=require("./busy-BXbVH595.cjs"),r=require("./contract.cjs");var i=e.t({available:()=>S,create:()=>T,join:()=>E,open:()=>w}),a={wrongKey:`rooms: wrong room key`,inviteNoKey:`rooms: the invite carries no key`,badName:`rooms: the name is not one a room can have`,badKeyOption:`rooms: the key is not 32 bytes base64url`,noSuchMember:`rooms: no such member`,noSuchMessage:`rooms: no such message`,roomFull:`rooms: the room is full`,tooManyConnections:`rooms: too many connections`,tooManyBlocks:`rooms: too many blocks`,tooManyClaims:`rooms: too many claims`,mailboxFull:`rooms: the mailbox is full`,outOfStorage:`rooms: the owner is out of storage`,outOfQuota:`rooms: out of daily bandwidth`,blocked:`rooms: you are blocked from this room`,cannotSend:`rooms: you cannot send here`,permissionDenied:`rooms: permission denied`,notOwner:`rooms: not the room owner`,ownerNotRemovable:`rooms: the owner cannot be removed`,ownerKeepsEvery:`rooms: the owner keeps every permission`,removeYourself:`rooms: you cannot remove yourself`,needsAccount:`rooms: claiming needs an account`,nameClaimed:`rooms: the name is claimed`,notClaimed:`rooms: the room is not claimed`,noMailbox:`rooms: the room keeps no messages`,badLimit:`rooms: the limit is out of range`,badDescription:`rooms: the description is not one a claim can carry`,notClaimer:`rooms: only the app that claimed the room can describe it`,notReleaser:`rooms: only the app that claimed the room can release it`,notClaimingApp:`rooms: only the app that claimed the room can change it`,badTemporary:`rooms: the temporary duration is not one a claim can carry`,notTemporaryClaimer:`rooms: only the app that claimed the room can set when it expires`,temporaryUnavailable:`rooms: temporary claims are not available`,mailboxUnavailable:`rooms: the mailbox switch is not available`,guestUnavailable:`rooms: guest joins are not available`,schemasUnavailable:`rooms: room schemas are not available`,badSchema:`rooms: the schema is not one a room can take`,newerSchema:`rooms: the room holds a newer schema`,noSchema:`rooms: the room has no schema`,misfit:`rooms: the message does not fit the room's schema`,ownerSends:`rooms: only the owner sends this type`,accountSends:`rooms: sending this needs an account`,perAccount:`rooms: you have as many of these here as the room allows`,tooFast:`rooms: sending too fast`,tooLarge:`rooms: the message is too large`,unavailable:`rooms: rooms are unavailable`,notEnabled:`rooms: rooms are not available`,alreadyJoined:`rooms: already joined`,notJoined:`rooms: not joined`,malformed:`rooms: malformed frame`,ended:`rooms: the room has ended`},o=(e,t)=>Object.assign(Error(t),{code:e}),s=e=>e instanceof Error&&typeof e.code==`string`,c={send:!0,receive:!0,maxMessageBytes:262144},l=2048,u=()=>({messages:0,bytes:0,cap:5e8,archived:!1}),d=async()=>{if(!t.l)return;let e=(await t.s(`a room`).catch(()=>void 0))?.rooms;return typeof e?.open==`function`?e:void 0},f=()=>{throw o(`unavailable`,a.unavailable)},p=e=>e===`blocked`?`blocked`:e===`not-found`?`ended`:`unavailable`,m=e=>{if(e!==void 0&&e!==!1)return e===!0?r.ROOM_TEMPORARY_MS.default:typeof e!=`number`||!Number.isInteger(e)?null:e>=r.ROOM_TEMPORARY_MS.min&&e<=r.ROOM_TEMPORARY_MS.max?e:null},h=(e,t)=>{let n=t?e?.guest:e;return typeof n?.join==`function`?n:void 0},g=e=>{let t;try{t=JSON.stringify(e)}catch{}let n=t===void 0?void 0:JSON.parse(t),r=typeof n==`object`&&!!n&&!Array.isArray(n)&&typeof n.type==`string`;if(t===void 0||!r||t.length>l)throw o(`invalid`,a.misfit);return t},_=e=>{let t;try{t=JSON.parse(JSON.stringify(e))}catch{}if(typeof t!=`object`||!t||Array.isArray(t))throw o(`invalid`,a.badSchema);return t},v=e=>e?.schema===void 0?e:{...e,schema:_(e.schema)},y=e=>{if(e.schemas!==!0)throw o(`unavailable`,a.schemasUnavailable);return e},b=e=>{let t=e?.guest;if(t!==void 0&&typeof t!=`boolean`)throw o(`invalid`,a.malformed);return t===!0},x=async(e,r)=>{let i=e.invite,l=e,d=0,f=e.self,v=e.owner,b=e.claimed,x=e.mailbox,S=0,C=await e.defaults().catch(()=>c),w=e.schemas===!0?await Promise.resolve(e.schema()).catch(()=>null):null,T=0,E=!1,D=new Set,O=new Set,k=n.t(`room`),A=()=>{},j=()=>{},M=new Promise(e=>{j=e}),N=e=>{let t=[...O];O.clear();for(let n of t)try{n(e)}catch{}},P=e=>{E||(E=!0,A(),D.clear(),k(),N(o(`closed`,a.ended)),j({reason:e}))},F=e=>{if(E)return;let t=e;if(t.type===`defaults`&&(C=t.defaults),t.type===`schema`&&(T+=1,w=t.schema),t.type===`message`||t.type===`edited`){let e={...t.message,envelope:t.message.envelope??null};t=t.type===`message`?{...t,message:e}:{type:`edited`,message:e}}if(t.type===`permissions`&&t.id===f.id&&(f={id:f.id,permissions:t.permissions,maxMessageBytes:t.maxMessageBytes}),t.type===`claim`){S+=1;let e=t.claimed&&t.mailbox!==!1;t={type:`claim`,claimed:t.claimed,owner:t.owner,mailbox:e},b=t.claimed,v=t.owner,x=e?u():null}for(let e of[...D])try{e(t)}catch{}},I=(e,t)=>{Promise.resolve(e.on(F)).catch(()=>{}),Promise.resolve(e.closed).then(e=>{t===d&&P(e.reason)},()=>{})},L=async(e,t)=>{let n=h(e,r);if(!n)return P(`unavailable`);let a=await n.join(i).catch(()=>void 0);if(E||t!==d)return;if(!a)return P(`unavailable`);if(`error`in a)return P(p(a.error));if(a.self.id!==f.id)return Promise.resolve(a.leave()).catch(()=>{}),P(`unavailable`);l=a,f=a.self,v=a.owner,b=a.claimed,x=a.mailbox,I(a,t);let o=await a.defaults().catch(()=>void 0);if(o&&!E&&t===d&&(C=o),a.schemas!==!0)return;let s=await Promise.resolve(a.schema()).catch(()=>void 0);s!==void 0&&!E&&t===d&&(w=s)};A=t.u((e,t)=>{let n=d;d=t,!(E||n===0||n===t)&&(N(o(`unavailable`,a.unavailable)),L(e.rooms,t))}),I(e,d);let R=async e=>{if(E)throw o(`closed`,a.ended);let t=()=>{},n=new Promise((e,n)=>{t=n});O.add(t);try{return await Promise.race([Promise.resolve(e(l)),n])}catch(e){throw s(e)?e:o(`unavailable`,a.unavailable)}finally{O.delete(t)}},z=async e=>{let t=await R(e);if(`error`in t)throw o(t.error,t.message)},B=async e=>{let t=await R(e);if(typeof t==`object`&&t&&`error`in t)throw o(t.error,t.message);return t};return{id:e.id,name:e.name,key:e.key,invite:i,get self(){return f},get owner(){return v},get claimed(){return b},get mailbox(){return x},defaults:()=>C,members:()=>R(e=>e.members()),schema:()=>w,send:async(e,t)=>{if(t===void 0)return z(t=>t.send(e));let n=g(t);return z(t=>y(t).send(e,n))},edit:async(e,t,n)=>{if(n===void 0)return z(n=>n.edit(e,t));let r=g(n);return z(n=>y(n).edit(e,t,r))},setSchema:async e=>{let t=_(e),n=T;await z(e=>y(e).setSchema(t)),T===n&&(w=t)},delete:(e,t)=>z(n=>n.delete(e,t)),backlog:(e,t)=>B(n=>n.backlog(e,t)),setDefault:(e,t)=>z(n=>n.setDefault(e,t)),limit:(e,t)=>z(n=>n.limit(e,t)),grant:(e,t)=>z(n=>n.grant(e,t)),revoke:(e,t)=>z(n=>n.revoke(e,t)),remove:e=>z(t=>t.remove(e)),block:e=>z(t=>t.block(e)),unblock:e=>z(t=>t.unblock(e)),claim:async e=>{let t=e?.description;if(t!==void 0&&typeof t!=`string`)throw o(`invalid`,a.badDescription);let n=m(e?.temporary);if(n===null)throw o(`invalid`,a.badTemporary);let r=e?.mailbox;if(r!==void 0&&typeof r!=`boolean`)throw o(`invalid`,a.malformed);let i={...t===void 0?{}:{description:t},...n===void 0?{}:{temporary:n},...r===void 0?{}:{mailbox:r}};return Object.keys(i).length===0?z(e=>e.claim()):z(e=>{if(n!==void 0&&e.temporaryClaims!==!0)throw o(`unavailable`,a.temporaryUnavailable);if(r===!1&&e.mailboxSwitch!==!0)throw o(`unavailable`,a.mailboxUnavailable);return e.claim(i)})},setMailbox:async e=>{if(typeof e!=`boolean`)throw o(`invalid`,a.malformed);let t=S;await z(t=>{if(t.mailboxSwitch!==!0)throw o(`unavailable`,a.mailboxUnavailable);return t.setMailbox(e)}),S===t&&(e?x===null&&(x=u()):x=null)},release:()=>z(e=>e.release()),usage:async()=>{let e=await B(e=>e.usage());return x=e,e},on:async e=>E?()=>{}:(D.add(e),()=>{D.delete(e)}),leave:async()=>{await Promise.resolve(l.leave()).catch(()=>{}),P(`left`)},closed:M}},S=async()=>{let e=await d();return e?e.available().catch(()=>!1):!1},C=async(e,t,n)=>{let r=await d();if(!r)throw o(`unavailable`,a.unavailable);let i=h(r,e);if(!i)throw o(`unavailable`,a.guestUnavailable);let s=await n(i).catch(f);if(`error`in s)throw o(s.error,s.message);if(t?.schema!==void 0&&s.schemas!==!0)throw await Promise.resolve(s.leave()).catch(()=>{}),o(`unavailable`,a.schemasUnavailable);return x(s,e)},w=async(e,t)=>{if(typeof e!=`string`||e.length===0||e.length>72)throw o(`invalid`,a.badName);let n=b(t),r=v(t);return C(n,r,t=>t.open(e,r))},T=async e=>{let t=b(e),n=v(e);return C(t,n,e=>e.create(n))},E=async(e,t)=>{let n=typeof e==`string`?e.indexOf(`.`):-1;if(n<=0||n===e.length-1)throw o(`invalid`,a.inviteNoKey);return C(b(t),void 0,n=>n.join(e,t))};exports.available=S,exports.create=T,exports.join=E,exports.open=w,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|