wire-mesh 3.0.3 → 3.1.1

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/README.md CHANGED
@@ -34,11 +34,12 @@ Every flag the CLI accepts, exactly as `wire-mesh --help` prints it. An unknown
34
34
  Usage: wire-mesh [options]
35
35
 
36
36
  Options:
37
- --bind <host:port> Address to listen on. Port 0 asks the OS for a free port. Use 127.0.0.1:8787 to accept local connections only. (default: 0.0.0.0:8787)
38
- --tls-cert <path> PEM certificate file, to serve wss:// and https://. Requires --tls-key.
39
- --tls-key <path> PEM private key file for --tls-cert. Requires --tls-cert.
40
- -h, --help Print this help and exit.
41
- -v, --version Print the version and exit.
37
+ --bind <host:port> Address to listen on. Port 0 asks the OS for a free port. Use 127.0.0.1:8787 to accept local connections only. (default: 0.0.0.0:8787)
38
+ --tls-cert <path> PEM certificate file, to serve wss:// and https://. Requires --tls-key.
39
+ --tls-key <path> PEM private key file for --tls-cert. Requires --tls-cert.
40
+ --mailbox-dir <path> Directory to hold other devices' logs in while they are offline, which makes this node an announcer as well as a relay. Bounded by fixed limits. Off unless given.
41
+ -h, --help Print this help and exit.
42
+ -v, --version Print the version and exit.
42
43
  ```
43
44
 
44
45
  **Default bind address is `0.0.0.0:8787`, not loopback.** Unlike a typical dev-server tool, whose loopback-only default assumes only the machine itself needs to reach it, this package's whole purpose is LAN reachability — a phone on the same network, a laptop in the next room. `--bind` overrides the address if you want to restrict it (loopback-only, a specific interface, a different port).
@@ -50,6 +51,8 @@ curl http://<host>:8787/health
50
51
  # {"ok":true,"node":"wire-mesh","roles":["relay"]}
51
52
  ```
52
53
 
54
+ With `--mailbox-dir` the node also serves the announcer role and `/health` says so (`"roles":["relay","announcer"]`). It then holds other devices' `core/data` logs in that directory while those devices are offline, so a peer that reconnects catches up from the node. Only the device that owns a log can write to it: the node takes a log's entries from the connection whose verified advert names that device and from no one else. Any client that has gossiped an advert can read a log. Entries are opaque bytes to the node, and the applications that write them sign and encrypt their own. The number of logs, the bytes in each and the size of an entry are bounded (`src/mailbox-limits.ts`), and a frame that would exceed a bound is refused whole; nothing is evicted, so a full log stays full until the directory is cleared.
55
+
53
56
  **TLS (`wss://`/`https://`)** is opt-in via `--tls-cert`/`--tls-key`, both required together — this package generates no certificate of its own, so bring your own (a real one from a CA, or a self-signed one for a LAN). This matters specifically for wire-mesh#182/#183: an `https://`-served PWA (`mesh.exadev.io`) can only reach a plain `ws://` node if it's literally on `localhost` of the same machine, since browsers block mixed-content WebSocket connections from a secure page to an insecure one — a self-hosted node on someone's LAN, addressed by its own IP, needs to answer `wss://` for that PWA to reach it at all. How a LAN node is meant to be reached from the HTTPS-served console, and why a certificate is not the whole answer, is worked through in [docs/lan-certificates.md](docs/lan-certificates.md).
54
57
 
55
58
  **Security note:** this package adds no access control beyond the protocol's own capability tokens (`core/exec`/`core/management` verbs gated by a signed capability, same as any other wire-mesh node) — anyone who can reach the bound address can gossip, relay-connect, and relay-data through it. Bind to a trusted network (a home LAN, a VPN/tailnet) rather than a public interface unless the capability-token story for whatever you're relaying is one you're comfortable exposing to the open internet.
package/dist/server.cjs CHANGED
@@ -7,6 +7,8 @@ let node_url = require("node:url");
7
7
  let wire_mesh_core_domain_relay_hub = require("wire-mesh-core/domain/relay-hub");
8
8
  let wire_mesh_core_adapters_node_identity = require("wire-mesh-core/adapters/node-identity");
9
9
  let node_util = require("node:util");
10
+ let wire_mesh_core_domain_hub_mailbox = require("wire-mesh-core/domain/hub-mailbox");
11
+ let wire_mesh_core_adapters_node_fs_storage = require("wire-mesh-core/adapters/node-fs-storage");
10
12
  //#region src/cli-options.ts
11
13
  /** The address the server binds when --bind is not given. */
12
14
  const DEFAULT_BIND_ADDRESS = "0.0.0.0:8787";
@@ -29,6 +31,11 @@ const FLAGS = {
29
31
  valueName: "path",
30
32
  description: "PEM private key file for --tls-cert. Requires --tls-cert."
31
33
  },
34
+ "mailbox-dir": {
35
+ type: "string",
36
+ valueName: "path",
37
+ description: "Directory to hold other devices' logs in while they are offline, which makes this node an announcer as well as a relay. Bounded by fixed limits. Off unless given."
38
+ },
32
39
  help: {
33
40
  type: "boolean",
34
41
  short: "h",
@@ -94,10 +101,20 @@ function parseCliArguments(argv) {
94
101
  tls: certPath === void 0 || keyPath === void 0 ? void 0 : {
95
102
  certPath,
96
103
  keyPath
97
- }
104
+ },
105
+ mailboxDir: values["mailbox-dir"]
98
106
  };
99
107
  }
100
108
  //#endregion
109
+ //#region src/mailbox-limits.ts
110
+ const BYTES_PER_KIB = 1024;
111
+ const nodeMailboxLimits = {
112
+ maxLogs: 64,
113
+ maxLogBytes: 65536 * BYTES_PER_KIB,
114
+ maxEntryBytes: 512 * BYTES_PER_KIB,
115
+ readBatch: 64
116
+ };
117
+ //#endregion
101
118
  //#region src/static-console.ts
102
119
  const CONTENT_TYPES = {
103
120
  ".css": "text/css; charset=utf-8",
@@ -140,11 +157,12 @@ function resolveConsoleFile(consoleDir, pathname) {
140
157
  }
141
158
  //#endregion
142
159
  //#region src/server.ts
143
- function healthResponse() {
160
+ /** What /health says: the relay role always, and the announcer role when the node was given somewhere to hold other devices' logs. */
161
+ function healthResponse(announcer) {
144
162
  return {
145
163
  ok: true,
146
164
  node: "wire-mesh",
147
- roles: ["relay"]
165
+ roles: announcer ? ["relay", "announcer"] : ["relay"]
148
166
  };
149
167
  }
150
168
  const HTTP_OK = 200;
@@ -161,12 +179,12 @@ function readPackageVersion() {
161
179
  return manifest.version;
162
180
  }
163
181
  /** Builds the listener's onHttpRequest handler: /health answers the same JSON shape healthResponse() returns, everything else resolves against consoleDir via resolveConsoleFile. Takes consoleDir as a parameter, not a module-level constant, so a test can point it at a temp fixture instead of the real build-time CONSOLE_DIR. */
164
- function createHttpRequestHandler(consoleDir) {
182
+ function createHttpRequestHandler(consoleDir, announcer) {
165
183
  return (request, response) => {
166
184
  const url = new URL(request.url ?? "/", "http://localhost");
167
185
  if (url.pathname === HEALTH_PATH) {
168
186
  response.writeHead(HTTP_OK, { "content-type": "application/json" });
169
- response.end(JSON.stringify(healthResponse()));
187
+ response.end(JSON.stringify(healthResponse(announcer)));
170
188
  return;
171
189
  }
172
190
  const file = resolveConsoleFile(consoleDir, url.pathname);
@@ -201,12 +219,23 @@ async function main(argv) {
201
219
  certificatePem: (0, node_fs.readFileSync)(command.tls.certPath, "utf-8"),
202
220
  privateKeyPem: (0, node_fs.readFileSync)(command.tls.keyPath, "utf-8")
203
221
  } : void 0;
204
- const hub = (0, wire_mesh_core_domain_relay_hub.createRelayHub)({ identity: {
205
- verify: wire_mesh_core_adapters_node_identity.verifyWithPublicKey,
206
- deriveDeviceId: wire_mesh_core_adapters_node_identity.deriveDeviceId
207
- } });
222
+ const hub = (0, wire_mesh_core_domain_relay_hub.createRelayHub)({
223
+ identity: {
224
+ verify: wire_mesh_core_adapters_node_identity.verifyWithPublicKey,
225
+ deriveDeviceId: wire_mesh_core_adapters_node_identity.deriveDeviceId
226
+ },
227
+ ...command.mailboxDir !== void 0 ? {
228
+ mailbox: (0, wire_mesh_core_domain_hub_mailbox.createMailbox)({
229
+ storage: (0, wire_mesh_core_adapters_node_fs_storage.createNodeFsStorage)({ dir: command.mailboxDir }),
230
+ limits: nodeMailboxLimits
231
+ }),
232
+ onMailboxRefused: ({ reason }) => {
233
+ logError(`wire-mesh: refused a data frame: ${reason}`);
234
+ }
235
+ } : {}
236
+ });
208
237
  const listener = await require_adapters_node_websocket_transport.createNodeWebSocketTransport({
209
- onHttpRequest: createHttpRequestHandler(CONSOLE_DIR),
238
+ onHttpRequest: createHttpRequestHandler(CONSOLE_DIR, command.mailboxDir !== void 0),
210
239
  ...tls ? { tls } : {}
211
240
  }).listen(command.bindAddress, (connection) => {
212
241
  hub.handleConnection(connection);
package/dist/server.d.cts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { IncomingMessage, ServerResponse } from "node:http";
2
2
  //#region src/server.d.ts
3
- export declare function healthResponse(): {
3
+ /** What /health says: the relay role always, and the announcer role when the node was given somewhere to hold other devices' logs. */
4
+ export declare function healthResponse(announcer: boolean): {
4
5
  ok: true;
5
6
  node: string;
6
7
  roles: string[];
7
8
  };
8
9
  /** Builds the listener's onHttpRequest handler: /health answers the same JSON shape healthResponse() returns, everything else resolves against consoleDir via resolveConsoleFile. Takes consoleDir as a parameter, not a module-level constant, so a test can point it at a temp fixture instead of the real build-time CONSOLE_DIR. */
9
- export declare function createHttpRequestHandler(consoleDir: string): (request: IncomingMessage, response: ServerResponse) => void;
10
+ export declare function createHttpRequestHandler(consoleDir: string, announcer: boolean): (request: IncomingMessage, response: ServerResponse) => void;
10
11
  //#endregion
package/dist/server.d.mts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { IncomingMessage, ServerResponse } from "node:http";
2
2
  //#region src/server.d.ts
3
- export declare function healthResponse(): {
3
+ /** What /health says: the relay role always, and the announcer role when the node was given somewhere to hold other devices' logs. */
4
+ export declare function healthResponse(announcer: boolean): {
4
5
  ok: true;
5
6
  node: string;
6
7
  roles: string[];
7
8
  };
8
9
  /** Builds the listener's onHttpRequest handler: /health answers the same JSON shape healthResponse() returns, everything else resolves against consoleDir via resolveConsoleFile. Takes consoleDir as a parameter, not a module-level constant, so a test can point it at a temp fixture instead of the real build-time CONSOLE_DIR. */
9
- export declare function createHttpRequestHandler(consoleDir: string): (request: IncomingMessage, response: ServerResponse) => void;
10
+ export declare function createHttpRequestHandler(consoleDir: string, announcer: boolean): (request: IncomingMessage, response: ServerResponse) => void;
10
11
  //#endregion
package/dist/server.mjs CHANGED
@@ -6,6 +6,8 @@ import { fileURLToPath } from "node:url";
6
6
  import { createRelayHub } from "wire-mesh-core/domain/relay-hub";
7
7
  import { deriveDeviceId, verifyWithPublicKey } from "wire-mesh-core/adapters/node-identity";
8
8
  import { parseArgs } from "node:util";
9
+ import { createMailbox } from "wire-mesh-core/domain/hub-mailbox";
10
+ import { createNodeFsStorage } from "wire-mesh-core/adapters/node-fs-storage";
9
11
  //#region src/cli-options.ts
10
12
  /** The address the server binds when --bind is not given. */
11
13
  const DEFAULT_BIND_ADDRESS = "0.0.0.0:8787";
@@ -28,6 +30,11 @@ const FLAGS = {
28
30
  valueName: "path",
29
31
  description: "PEM private key file for --tls-cert. Requires --tls-cert."
30
32
  },
33
+ "mailbox-dir": {
34
+ type: "string",
35
+ valueName: "path",
36
+ description: "Directory to hold other devices' logs in while they are offline, which makes this node an announcer as well as a relay. Bounded by fixed limits. Off unless given."
37
+ },
31
38
  help: {
32
39
  type: "boolean",
33
40
  short: "h",
@@ -93,10 +100,20 @@ function parseCliArguments(argv) {
93
100
  tls: certPath === void 0 || keyPath === void 0 ? void 0 : {
94
101
  certPath,
95
102
  keyPath
96
- }
103
+ },
104
+ mailboxDir: values["mailbox-dir"]
97
105
  };
98
106
  }
99
107
  //#endregion
108
+ //#region src/mailbox-limits.ts
109
+ const BYTES_PER_KIB = 1024;
110
+ const nodeMailboxLimits = {
111
+ maxLogs: 64,
112
+ maxLogBytes: 65536 * BYTES_PER_KIB,
113
+ maxEntryBytes: 512 * BYTES_PER_KIB,
114
+ readBatch: 64
115
+ };
116
+ //#endregion
100
117
  //#region src/static-console.ts
101
118
  const CONTENT_TYPES = {
102
119
  ".css": "text/css; charset=utf-8",
@@ -139,11 +156,12 @@ function resolveConsoleFile(consoleDir, pathname) {
139
156
  }
140
157
  //#endregion
141
158
  //#region src/server.ts
142
- function healthResponse() {
159
+ /** What /health says: the relay role always, and the announcer role when the node was given somewhere to hold other devices' logs. */
160
+ function healthResponse(announcer) {
143
161
  return {
144
162
  ok: true,
145
163
  node: "wire-mesh",
146
- roles: ["relay"]
164
+ roles: announcer ? ["relay", "announcer"] : ["relay"]
147
165
  };
148
166
  }
149
167
  const HTTP_OK = 200;
@@ -160,12 +178,12 @@ function readPackageVersion() {
160
178
  return manifest.version;
161
179
  }
162
180
  /** Builds the listener's onHttpRequest handler: /health answers the same JSON shape healthResponse() returns, everything else resolves against consoleDir via resolveConsoleFile. Takes consoleDir as a parameter, not a module-level constant, so a test can point it at a temp fixture instead of the real build-time CONSOLE_DIR. */
163
- function createHttpRequestHandler(consoleDir) {
181
+ function createHttpRequestHandler(consoleDir, announcer) {
164
182
  return (request, response) => {
165
183
  const url = new URL(request.url ?? "/", "http://localhost");
166
184
  if (url.pathname === HEALTH_PATH) {
167
185
  response.writeHead(HTTP_OK, { "content-type": "application/json" });
168
- response.end(JSON.stringify(healthResponse()));
186
+ response.end(JSON.stringify(healthResponse(announcer)));
169
187
  return;
170
188
  }
171
189
  const file = resolveConsoleFile(consoleDir, url.pathname);
@@ -200,12 +218,23 @@ async function main(argv) {
200
218
  certificatePem: readFileSync(command.tls.certPath, "utf-8"),
201
219
  privateKeyPem: readFileSync(command.tls.keyPath, "utf-8")
202
220
  } : void 0;
203
- const hub = createRelayHub({ identity: {
204
- verify: verifyWithPublicKey,
205
- deriveDeviceId
206
- } });
221
+ const hub = createRelayHub({
222
+ identity: {
223
+ verify: verifyWithPublicKey,
224
+ deriveDeviceId
225
+ },
226
+ ...command.mailboxDir !== void 0 ? {
227
+ mailbox: createMailbox({
228
+ storage: createNodeFsStorage({ dir: command.mailboxDir }),
229
+ limits: nodeMailboxLimits
230
+ }),
231
+ onMailboxRefused: ({ reason }) => {
232
+ logError(`wire-mesh: refused a data frame: ${reason}`);
233
+ }
234
+ } : {}
235
+ });
207
236
  const listener = await createNodeWebSocketTransport({
208
- onHttpRequest: createHttpRequestHandler(CONSOLE_DIR),
237
+ onHttpRequest: createHttpRequestHandler(CONSOLE_DIR, command.mailboxDir !== void 0),
209
238
  ...tls ? { tls } : {}
210
239
  }).listen(command.bindAddress, (connection) => {
211
240
  hub.handleConnection(connection);
@@ -67,6 +67,6 @@ ${wc.repeat(a.depth)}}`:a.close=`}`;break}case L.TAG:o+=String(c),o+=Dc(L.POS_IN
67
67
 
68
68
  `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Nl,c=!Cu.jitless,l=c&&Pl.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?Jf([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function Qf(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Yl(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>eu(e,r,wu())))}),t)}var $f=W(`$ZodUnion`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),U(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),U(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),U(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>wl(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Qf(t,r,e,i)):Qf(o,r,e,i)}}),ep=W(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,$f.init(e,t);let n=e._zod.parse;U(e,`propValues`,e=>{let t={};for(let n of e.def.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(n)}"`);for(let[e,n]of Object.entries(r)){Object.prototype.hasOwnProperty.call(t,e)||Ol(t,e,new Set);for(let r of n)t[e].add(r)}}return t}),t.options.forEach((e,n)=>{let r=Yf.get(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=Sl(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!Nl(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),tp=W(`$ZodIntersection`,(e,t)=>{Zd.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>rp(e,t,n)):rp(e,i,a)}});function np(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Fl(e)&&Fl(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=np(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=np(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function rp(e,t,n){let r=new Map,i,a=new Map,o=(e,t)=>{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=np(t.value,n.value);if(!c.valid){if(Yl(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var ip=W(`$ZodTuple`,(e,t)=>{Zd.init(e,t);let n=t.items,r=Cu.memoizer;r?.attach(e),e._zod.parse=(i,a)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:`tuple`,code:`invalid_type`}),i;i.value=r?r.alloc(e,i,[],a):[];let s=[],c=ap(n,`optin`),l=ap(n,`optout`);if(!t.rest){if(o.length<c)return i.issues.push({code:`too_small`,minimum:c,inclusive:!0,input:o,inst:e,origin:`array`}),i;o.length>n.length&&i.issues.push({code:`too_big`,maximum:n.length,inclusive:!0,input:o,inst:e,origin:`array`})}let u=Array(n.length);for(let e=0;e<n.length;e++){let t=n[e]._zod.run({value:o[e],issues:[]},a);t instanceof Promise?s.push(t.then(t=>{u[e]=t})):u[e]=t}if(t.rest){let e=n.length-1,r=o.slice(n.length);for(let n of r){e++;let r=t.rest._zod.run({value:n,issues:[]},a);r instanceof Promise?s.push(r.then(t=>op(t,i,e))):op(r,i,e)}}return s.length?Promise.all(s).then(()=>sp(u,i,n,o,l)):sp(u,i,n,o,l)}});function ap(e,t){for(let n=e.length-1;n>=0;n--)if(!(t===`optin`?e[n]._zod.optin!==void 0:e[n]._zod.optout===`optional`))return n+1;return 0}function op(e,t,n){e.issues.length&&t.issues.push(...Zl(n,e.issues)),t.value[n]=e.value}function sp(e,t,n,r,i){for(let a=0;a<n.length;a++){let o=e[a],s=a<r.length;if(!s&&a>=i&&n[a]._zod.optin===`optional`){t.value.length=a;break}if(o.issues.length){if(!s&&a>=i){t.value.length=a;break}t.issues.push(...Zl(a,o.issues))}t.value[a]=o.value}for(let e=t.value.length-1;e>=r.length&&n[e]._zod.optout===`optional`&&t.value[e]===void 0;e--)t.value.length=e;return t}var cp=W(`$ZodRecord`,(e,t)=>{Zd.init(e,t);let n=Cu.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Fl(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>eu(e,i,wu())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...Zl(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...Zl(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&G.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>eu(e,i,wu())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...Zl(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...Zl(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),lp=W(`$ZodEnum`,(e,t)=>{Zd.init(e,t);let n=yl(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>Ll.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>Rl(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),up=W(`$ZodLiteral`,(e,t)=>{Zd.init(e,t);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(t.values.length?`^(${t.values.map(e=>typeof e==`string`?Rl(e):e?Rl(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),dp=W(`$ZodTransform`,(e,t)=>{Zd.init(e,t),e._zod.optin=`optional`,Cu.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Su(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new xu;return n.value=i,n}});function fp(e,t){return e.value=t.issues.length?void 0:t.value,e}var pp=W(`$ZodOptional`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,U(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),U(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${wl(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>fp(e,t)):fp(e,r)}return t.innerType._zod.run(e,n)}}),mp=W(`$ZodExactOptional`,(e,t)=>{pp.init(e,t),U(e,`values`,e=>e.def.innerType._zod.values),U(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),hp=W(`$ZodNullable`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.innerType._zod.optin),U(e,`optout`,e=>e.def.innerType._zod.optout),U(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${wl(t.source)}|null)$`):void 0}),U(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),gp=W(`$ZodDefault`,(e,t)=>{Zd.init(e,t),e._zod.optin=`defaulted`,U(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>_p(e,t)):_p(r,t)}});function _p(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var vp=W(`$ZodPrefault`,(e,t)=>{Zd.init(e,t),e._zod.optin=`defaulted`,U(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),yp=W(`$ZodNonOptional`,(e,t)=>{Zd.init(e,t),U(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>bp(t,e)):bp(i,e)}});function bp(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function xp(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>eu(e,r,wu()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Sp=W(`$ZodCatch`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),U(e,`optout`,e=>e.def.innerType._zod.optout),U(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>xp(e,r,t,n)):xp(e,r,t,n)}}),Cp=W(`$ZodPipe`,(e,t)=>{Zd.init(e,t),U(e,`values`,e=>e.def.in._zod.values),U(e,`optin`,e=>e.def.in._zod.optin),U(e,`optout`,e=>e.def.out._zod.optout),U(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>wp(e,t.in,n)):wp(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>wp(e,t.out,n)):wp(r,t.out,n)}});function wp(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var Tp=W(`$ZodReadonly`,(e,t)=>{Zd.init(e,t),U(e,`propValues`,e=>e.def.innerType._zod.propValues),U(e,`values`,e=>e.def.innerType._zod.values),U(e,`optin`,e=>e.def.innerType?._zod?.optin),U(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Ep):Ep(r)}});function Ep(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Dp=W(`$ZodLazy`,(e,t)=>{Zd.init(e,t),Dl(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),U(e,`pattern`,e=>e.innerType?._zod?.pattern),U(e,`propValues`,e=>e.innerType?._zod?.propValues),U(e,`optin`,e=>e.innerType?._zod?.optin??void 0),U(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Op=W(`$ZodCustom`,(e,t)=>{jd.init(e,t),Zd.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>kp(t,n,r,e));kp(i,n,r,e)}});function kp(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(au(e))}}var Ap=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},jp=`~memo`,Mp=[];function Np(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Pp=new WeakMap;function Fp(e,t){let n=Pp.get(e);if(n!==void 0)return n;if(t.has(e))return!0;t.add(e);let r=!1,i=e=>{!r&&e?._zod&&Fp(e,t)&&(r=!0)},a=e._zod.def;switch(a.type){case`object`:for(let e of Reflect.ownKeys(a.shape))i(a.shape[e]);i(a.catchall);break;case`array`:i(a.element);break;case`tuple`:for(let e of a.items)i(e);i(a.rest);break;case`record`:case`map`:i(a.keyType),i(a.valueType);break;case`set`:i(a.valueType);break;case`union`:for(let e of a.options)i(e);break;case`intersection`:i(a.left),i(a.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:i(a.innerType);break;case`pipe`:i(a.in),i(a.out);break;case`function`:i(a.input),i(a.output);break;case`lazy`:i(e._zod.innerType);break;case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in a){let t=Object.getOwnPropertyDescriptor(a,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)i(n);else if(Array.isArray(n))for(let e of n)i(e)}}}return t.delete(e),Pp.set(e,r),r}function Ip(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var Lp,Rp=[],zp={alloc(e,t,n){let r=Lp;if(!r)return n;Lp=void 0;let i={value:n,issues:null};return r.set(t.value,i),Rp.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&Vp(n,e.value))throw new Ap;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,a=(o,s)=>{if(n===void 0&&(n=Fp(e,new Set),!n))return e._zod.parse=t,e._zod.run===a&&(e._zod.run=t),t(o,s);let c=o.value;if(typeof c!=`object`||!c)return t(o,s);let l=s[jp];l||(l={buckets:new Map,backEdges:void 0},s[jp]=l);let u;r===s?u=i:(u=Ip(l,e),r=s,i=u);let d=u.get(c);if(d)return o.value=d.value,d.issues?d.issues.length&&o.issues.push(...Np(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;Lp=u;let f=Rp.length,p=t(o,s);Lp=void 0;let m=Rp.length>f?Rp.pop():void 0;return p instanceof Promise?p.then(e=>(m&&(m.issues=e.issues.length?Np(e.issues):Mp),e)):(m&&(m.issues=p.issues.length?Np(p.issues):Mp),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function Bp(){return zp}function Vp(e,t){let n=e[jp]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var Hp=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,credit_card:`credit card number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(iu(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${Bl(e.values[0])}`:`Invalid option: expected one of ${bl(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${bl(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function Up(){return{localeError:Hp()}}var Wp,Gp=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Kp(){return new Gp}(Wp=globalThis).__zod_globalRegistry??(Wp.__zod_globalRegistry=Kp());var qp=globalThis.__zod_globalRegistry;function Jp(e,t){return new e({type:`string`,...V(t)})}function Yp(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...V(t)})}function Xp(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...V(t)})}function Zp(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...V(t)})}function Qp(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...V(t)})}function $p(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...V(t)})}function em(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...V(t)})}function tm(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...V(t)})}function nm(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...V(t)})}function rm(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...V(t)})}function im(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...V(t)})}function am(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...V(t)})}function om(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...V(t)})}function sm(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...V(t)})}function cm(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...V(t)})}function lm(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...V(t)})}function um(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...V(t)})}function dm(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...V(t)})}function fm(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...V(t)})}function pm(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...V(t)})}function mm(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...V(t)})}function hm(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...V(t)})}function gm(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...V(t)})}function _m(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...V(t)})}function vm(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...V(t)})}function ym(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...V(t)})}function bm(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...V(t)})}function xm(e,t){return new e({type:`number`,checks:[],...V(t)})}function Sm(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...V(t)})}function Cm(e,t){return new e({type:`boolean`,...V(t)})}function wm(e,t){return new e({type:`null`,...V(t)})}function Tm(e){return new e({type:`unknown`})}function Em(e,t){return new e({type:`never`,...V(t)})}function Dm(e,t){return new Pd({check:`less_than`,...V(t),value:e,inclusive:!1})}function Om(e,t){return new Pd({check:`less_than`,...V(t),value:e,inclusive:!0})}function km(e,t){return new Fd({check:`greater_than`,...V(t),value:e,inclusive:!1})}function Am(e,t){return new Fd({check:`greater_than`,...V(t),value:e,inclusive:!0})}function jm(e,t){return new Id({check:`multiple_of`,...V(t),value:e})}function Mm(e,t){return new Rd({check:`max_length`,...V(t),maximum:e})}function Nm(e,t){return new zd({check:`min_length`,...V(t),minimum:e})}function Pm(e,t){return new Bd({check:`length_equals`,...V(t),length:e})}function Fm(e,t){return new Hd({check:`string_format`,format:`regex`,...V(t),pattern:e})}function Im(e){return new Ud({check:`string_format`,format:`lowercase`,...V(e)})}function Lm(e){return new Wd({check:`string_format`,format:`uppercase`,...V(e)})}function Rm(e,t){return new Gd({check:`string_format`,format:`includes`,...V(t),includes:e})}function zm(e,t){return new Kd({check:`string_format`,format:`starts_with`,...V(t),prefix:e})}function Bm(e,t){return new qd({check:`string_format`,format:`ends_with`,...V(t),suffix:e})}function Vm(e){return new Jd({check:`overwrite`,tx:e})}function Hm(e){return Vm(t=>t.normalize(e))}function Um(){return Vm(e=>e.trim())}function Wm(){return Vm(e=>e.toLowerCase())}function Gm(){return Vm(e=>e.toUpperCase())}function Km(){return Vm(e=>jl(e))}function qm(e,t,n){return new e({type:`array`,element:t,...V(n)})}function Jm(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...V(n)})}function Ym(e,t){let n=Xm(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(au(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(au(r))}},e(t.value,t)),t);return n}function Xm(e,t){let n=new jd({check:`custom`,...V(t)});return n._zod.check=e,n}function Zm(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&Ol(e,t,n[t]);return e}function Qm(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??qp,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function $m(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function eh(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,eh(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Zm(o.schema,c),t.io===`input`&&uh(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function th(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function nh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${th(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+th(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
69
69
 
70
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function rh(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;rh(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var ih=new Set([`type`,`properties`,`required`,`additionalProperties`]),ah=[`oneOf`,`anyOf`];function oh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function sh(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!ih.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??oh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Ol(n,r,e.length===1?e[0]:sh(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=oh(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function ch(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of ih)if(t in e)return;let n=t.filter(e=>ah.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=sh(t);else{let e=n[0],i=ah.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>sh([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,Zm(e,r))}function lh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Zm(i,s),Zm(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())rh(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])ch(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Zm(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Ol(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:fh(t,`input`,e.processors),output:fh(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function uh(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return uh(r.element,n);if(r.type===`set`)return uh(r.valueType,n);if(r.type===`lazy`)return uh(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return uh(r.innerType,n);if(r.type===`intersection`)return uh(r.left,n)||uh(r.right,n);if(r.type===`record`||r.type===`map`)return uh(r.keyType,n)||uh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:uh(r.in,n)||uh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(uh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(uh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(uh(e,n))return!0;return!!(r.rest&&uh(r.rest,n))}return!1}var dh=(e,t={})=>n=>{let r=Qm({...n,processors:t});return eh(e,r),nh(r,e),lh(r,e)},fh=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Qm({...i??{},target:a,io:t,processors:n});return eh(e,o),nh(o,e),lh(o,e)},ph={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},mh=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=ph[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},hh=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):$m(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},gh=(e,t,n,r)=>{n.type=`boolean`},_h=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},vh=(e,t,n,r)=>{n.not={}},yh=(e,t,n,r)=>{let i=e._zod.def,a=yl(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},bh=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if($m(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if($m(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},xh=(e,t,n,r)=>{$m(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Sh=(e,t,n,r)=>{$m(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Ch=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=eh(a.element,t,{...r,path:[...r.path,`items`]})};function wh(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?wh(t.out):t.type===`catch`?wh(t.innerType):e._zod.optin}var Th=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&$m(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Ol(i.properties,e,eh(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e];return t.io===`input`?wh(n)===void 0:n._zod.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=eh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Eh=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>eh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Dh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=eh(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},Oh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>eh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?eh(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?wh(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=e._zod.bag;typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function kh(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=kh(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>kh(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?G:Ed).source),p):p}var Ah=new WeakMap;function jh(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of Ah.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=kh(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var Mh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=eh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Ol(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=eh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Ah.get(t);n||(n=[],Ah.set(t,n),t.deferred.push(()=>jh(t))),n.push(e)}i.additionalProperties=eh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&wh(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},Nh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Ph=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Fh=Symbol();function Ih(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?($m(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Fh):JSON.parse(o)}var Lh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n.default=o)},Rh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n._prefault=o)},zh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{$m(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Bh=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;eh(o,t,r);let s=t.seen.get(e);s.ref=o},Vh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Hh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Uh=(e,t,n,r)=>{let i=e._zod.innerType;eh(i,t,r);let a=t.seen.get(e);a.ref=i},Wh=new WeakSet([Object.prototype,Error.prototype]);function Gh(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Kh=W(`ZodError`,(e,t)=>{Mu.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);Wh.has(n)||(Wh.add(n),Gh(n,`format`,e=>t=>Iu(e,t)),Gh(n,`flatten`,e=>t=>Fu(e,t)),Gh(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,xl,2)}),Gh(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,xl,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),qh=Ru(Kh),Jh=zu(Kh),Yh=Bu(Kh),Xh=Hu(Kh),Zh=Wu(Kh),Qh=Gu(Kh),$h=Ku(Kh),eg=qu(Kh),tg=Ju(Kh),ng=Yu(Kh),rg=Xu(Kh),ig=Zu(Kh);function ag(){Cu.localeError||wu(Up())}function og(){Cu.memoizer||wu({memoizer:Bp()})}var sg=W(`ZodType`,(e,t)=>(ag(),Zd.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(kl(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return zl(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(A_(e,t))},superRefine(e,t){return this.check(j_(e,t))},overwrite(e){return this.check(Vm(e))},optional(){return d_(this)},exactOptional(){return p_(this)},nullable(){return h_(this)},nullish(){return d_(h_(this))},nonoptional(e){return x_(this,e)},array(){return Kg(this)},or(e){return Xg([this,e])},and(e){return e_(this,e)},transform(e){return T_(this,l_(e))},default(e){return __(this,e)},prefault(e){return y_(this,e)},catch(e){return C_(this,e)},pipe(e){return T_(this,e)},readonly(){return D_(this)},describe(e){let t=this.clone();return qp.add(t,{description:e}),t},meta(...e){if(e.length===0)return qp.get(this);let t=this.clone();return qp.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return cu(this,`~standard`,{...$d(this),jsonSchema:{input:fh(this,`input`),output:fh(this,`output`)}})},set"~standard"(e){su(this,`~standard`,e)},parse:function e(t,n){return qh(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Jh(this,t,n,{callee:e})},safeParse(e,t){return Yh(this,e,t)},async safeParseAsync(e,t){return Xh(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){su(this,`spa`,e)},encode:function e(t,n){return Zh(this,t,n,{callee:e})},decode:function e(t,n){return Qh(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await $h(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await eg(this,t,n,{callee:e})},safeEncode(e,t){return tg(this,e,t)},safeDecode(e,t){return ng(this,e,t)},async safeEncodeAsync(e,t){return rg(this,e,t)},async safeDecodeAsync(e,t){return ig(this,e,t)},toJSONSchema(e){return dh(this,{})(e)},get description(){return qp.get(this)?.description},get _def(){return this._zod.def}}),cg=W(`_ZodString`,(e,t)=>{ef.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mh(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(Fm(...e))},includes(...e){return this.check(Rm(...e))},startsWith(...e){return this.check(zm(...e))},endsWith(...e){return this.check(Bm(...e))},min(...e){return this.check(Nm(...e))},max(...e){return this.check(Mm(...e))},length(...e){return this.check(Pm(...e))},nonempty(...e){return this.check(Nm(1,...e))},lowercase(e){return this.check(Im(e))},uppercase(e){return this.check(Lm(e))},trim(){return this.check(Um())},normalize(...e){return this.check(Hm(...e))},toLowerCase(){return this.check(Wm())},toUpperCase(){return this.check(Gm())},slugify(){return this.check(Km())}}),lg=W(`ZodString`,(e,t)=>{ef.init(e,t),cg.init(e,t)},{email(e){return this.check(Yp(hg,e))},url(e){return this.check(tm(vg,e))},jwt(e){return this.check(gm(Ng,e))},emoji(e){return this.check(nm(yg,e))},guid(e){return this.check(Xp(gg,e))},uuid(e){return this.check(Zp(_g,e))},uuidv4(e){return this.check(Qp(_g,e))},uuidv6(e){return this.check($p(_g,e))},uuidv7(e){return this.check(em(_g,e))},nanoid(e){return this.check(rm(bg,e))},cuid(e){return this.check(im(xg,e))},cuid2(e){return this.check(am(Sg,e))},ulid(e){return this.check(om(Cg,e))},base64(e){return this.check(pm(Ag,e))},base64url(e){return this.check(mm(jg,e))},xid(e){return this.check(sm(wg,e))},ksuid(e){return this.check(cm(Tg,e))},ipv4(e){return this.check(lm(Eg,e))},ipv6(e){return this.check(um(Dg,e))},cidrv4(e){return this.check(dm(Og,e))},cidrv6(e){return this.check(fm(kg,e))},e164(e){return this.check(hm(Mg,e))},datetime(e){return this.check(_m(dg,e))},date(e){return this.check(vm(fg,e))},time(e){return this.check(ym(pg,e))},duration(e){return this.check(bm(mg,e))}});function K(e){return Jp(lg,e)}var ug=W(`ZodStringFormat`,(e,t)=>{tf.init(e,t),cg.init(e,t)}),dg=W(`ZodISODateTime`,(e,t)=>{yf.init(e,t),ug.init(e,t)}),fg=W(`ZodISODate`,(e,t)=>{bf.init(e,t),ug.init(e,t)}),pg=W(`ZodISOTime`,(e,t)=>{xf.init(e,t),ug.init(e,t)}),mg=W(`ZodISODuration`,(e,t)=>{Sf.init(e,t),ug.init(e,t)}),hg=W(`ZodEmail`,(e,t)=>{af.init(e,t),ug.init(e,t)}),gg=W(`ZodGUID`,(e,t)=>{nf.init(e,t),ug.init(e,t)}),_g=W(`ZodUUID`,(e,t)=>{rf.init(e,t),ug.init(e,t)}),vg=W(`ZodURL`,(e,t)=>{df.init(e,t),ug.init(e,t)}),yg=W(`ZodEmoji`,(e,t)=>{ff.init(e,t),ug.init(e,t)}),bg=W(`ZodNanoID`,(e,t)=>{pf.init(e,t),ug.init(e,t)}),xg=W(`ZodCUID`,(e,t)=>{mf.init(e,t),ug.init(e,t)}),Sg=W(`ZodCUID2`,(e,t)=>{hf.init(e,t),ug.init(e,t)}),Cg=W(`ZodULID`,(e,t)=>{gf.init(e,t),ug.init(e,t)}),wg=W(`ZodXID`,(e,t)=>{_f.init(e,t),ug.init(e,t)}),Tg=W(`ZodKSUID`,(e,t)=>{vf.init(e,t),ug.init(e,t)}),Eg=W(`ZodIPv4`,(e,t)=>{Cf.init(e,t),ug.init(e,t)}),Dg=W(`ZodIPv6`,(e,t)=>{Ef.init(e,t),ug.init(e,t)}),Og=W(`ZodCIDRv4`,(e,t)=>{Df.init(e,t),ug.init(e,t)}),kg=W(`ZodCIDRv6`,(e,t)=>{kf.init(e,t),ug.init(e,t)}),Ag=W(`ZodBase64`,(e,t)=>{jf.init(e,t),ug.init(e,t)}),jg=W(`ZodBase64URL`,(e,t)=>{Nf.init(e,t),ug.init(e,t)}),Mg=W(`ZodE164`,(e,t)=>{Pf.init(e,t),ug.init(e,t)}),Ng=W(`ZodJWT`,(e,t)=>{If.init(e,t),ug.init(e,t)}),Pg=W(`ZodNumber`,(e,t)=>{Lf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hh(e,t,n,r);let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null},{gt(e,t){return this.check(km(e,t))},gte(e,t){return this.check(Am(e,t))},min(e,t){return this.check(Am(e,t))},lt(e,t){return this.check(Dm(e,t))},lte(e,t){return this.check(Om(e,t))},max(e,t){return this.check(Om(e,t))},int(e){return this.check(Ig(e))},safe(e){return this.check(Ig(e))},positive(e){return this.check(km(0,e))},nonnegative(e){return this.check(Am(0,e))},negative(e){return this.check(Dm(0,e))},nonpositive(e){return this.check(Om(0,e))},multipleOf(e,t){return this.check(jm(e,t))},step(e,t){return this.check(jm(e,t))},finite(){return this}});function q(e){return xm(Pg,e)}var Fg=W(`ZodNumberFormat`,(e,t)=>{Rf.init(e,t),Pg.init(e,t)});function Ig(e){return Sm(Fg,e)}var Lg=W(`ZodBoolean`,(e,t)=>{zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gh(e,t,n,r)});function Rg(e){return Cm(Lg,e)}var zg=W(`ZodNull`,(e,t)=>{Bf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_h(e,t,n,r)});function Bg(e){return wm(zg,e)}var Vg=W(`ZodUnknown`,(e,t)=>{Vf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Hg(){return Tm(Vg)}var Ug=W(`ZodNever`,(e,t)=>{Hf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vh(e,t,n,r)});function Wg(e){return Em(Ug,e)}var Gg=W(`ZodArray`,(e,t)=>{og(),Wf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ch(e,t,n,r),e.element=t.element},{min(e,t){return this.check(Nm(e,t))},nonempty(e){return this.check(Nm(1,e))},max(e,t){return this.check(Mm(e,t))},length(e,t){return this.check(Pm(e,t))},unwrap(){return this.element}});function Kg(e,t){return qm(Gg,e,t)}var qg=W(`ZodObject`,(e,t)=>{og(),Zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Th(e,t,n,r),mu(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return o_(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Hg()})},loose(){return this.clone({...this._zod.def,catchall:Hg()})},strict(){return this.clone({...this._zod.def,catchall:Wg()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return H(this,e)},safeExtend(e){return Gl(this,e)},merge(e){return Kl(this,e)},pick(e){return Ul(this,e)},omit(e){return Wl(this,e)},partial(...e){return ql(u_,this,e[0])},exactPartial(...e){return ql(f_,this,e[0],`exactPartial`)},required(...e){return Jl(b_,this,e[0])}});function J(e,t){return new qg({type:`object`,shape:e??{},...V(t)})}function Jg(e,t){return new qg({type:`object`,shape:e,catchall:Wg(),...V(t)})}var Yg=W(`ZodUnion`,(e,t)=>{$f.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Eh(e,t,n,r),e.options=t.options});function Xg(e,t){return new Yg({type:`union`,options:e,...V(t)})}var Zg=W(`ZodDiscriminatedUnion`,(e,t)=>{Yg.init(e,t),ep.init(e,t)});function Qg(e,t,n){return new Zg({type:`union`,options:t,discriminator:e,...V(n)})}var $g=W(`ZodIntersection`,(e,t)=>{tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dh(e,t,n,r)});function e_(e,t){return new $g({type:`intersection`,left:e,right:t})}var t_=W(`ZodTuple`,(e,t)=>{og(),ip.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oh(e,t,n,r)},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw Error(`.partial() cannot be used on tuple schemas containing refinements`);return this.clone({...e,items:e.items.map(e=>new u_({type:`optional`,innerType:e}))})}});function n_(e,t,n){let r=t instanceof Zd;return new t_({type:`tuple`,items:e,rest:r?t:null,...V(r?n:t)})}var r_=W(`ZodRecord`,(e,t)=>{og(),cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mh(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function i_(e,t,n){return!t||!t._zod?new r_({type:`record`,keyType:K(),valueType:e,...V(t)}):new r_({type:`record`,keyType:e,valueType:t,...V(n)})}var a_=W(`ZodEnum`,(e,t)=>{lp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yh(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})}});function o_(e,t){return new a_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...V(t)})}var s_=W(`ZodLiteral`,(e,t)=>{up.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bh(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Y(e,t){return new s_({type:`literal`,values:Array.isArray(e)?e:[e],...V(t)})}var c_=W(`ZodTransform`,(e,t)=>{og(),dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sh(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Su(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(au(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(au(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function l_(e){return new c_({type:`transform`,transform:e})}var u_=W(`ZodOptional`,(e,t)=>{pp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function d_(e){return new u_({type:`optional`,innerType:e})}var f_=W(`ZodExactOptional`,(e,t)=>{mp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function p_(e){return new f_({type:`optional`,innerType:e})}var m_=W(`ZodNullable`,(e,t)=>{hp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function h_(e){return new m_({type:`nullable`,innerType:e})}var g_=W(`ZodDefault`,(e,t)=>{gp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function __(e,t){return new g_({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var v_=W(`ZodPrefault`,(e,t)=>{vp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function y_(e,t){return new v_({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var b_=W(`ZodNonOptional`,(e,t)=>{yp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ph(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function x_(e,t){return new b_({type:`nonoptional`,innerType:e,...V(t)})}var S_=W(`ZodCatch`,(e,t)=>{Sp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function C_(e,t){return new S_({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:gu(t)})}var w_=W(`ZodPipe`,(e,t)=>{Cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bh(e,t,n,r),e.in=t.in,e.out=t.out});function T_(e,t){return new w_({type:`pipe`,in:e,out:t})}var E_=W(`ZodReadonly`,(e,t)=>{Tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function D_(e){return new E_({type:`readonly`,innerType:e})}var O_=W(`ZodLazy`,(e,t)=>{Dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uh(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function X(e){return new O_({type:`lazy`,getter:e})}var k_=W(`ZodCustom`,(e,t)=>{Op.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xh(e,t,n,r)});function A_(e,t={}){return Jm(k_,e,t)}function j_(e,t){return Ym(e,t)}function Z(e,t={}){let n=new k_({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...V(t)});return n._zod.bag.Class=e,n._zod.check=t=>{t.value instanceof e||t.issues.push({code:`invalid_type`,expected:e.name,input:t.value,inst:n,path:[...n._zod.def.path??[]]})},n}var M_=X(()=>Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),N_=X(()=>J({verb:Y(`bulk.open`),"transfer-id":X(()=>M_),"total-size":q().int().nonnegative().optional(),"content-type":K().optional()}).catchall(Hg())),P_=X(()=>J({verb:Y(`bulk.resume`),"transfer-id":X(()=>M_),"ack-seq":q().int().nonnegative()}).catchall(Hg())),F_=X(()=>J({verb:Y(`bulk.cancel`),"transfer-id":X(()=>M_),reason:K().optional()}).catchall(Hg())),I_=X(()=>Xg([Xg([X(()=>N_),X(()=>P_),X(()=>F_)]),Xg([X(()=>U_),X(()=>W_),X(()=>G_),X(()=>K_),X(()=>q_),X(()=>J_),X(()=>Y_),X(()=>X_)]),J({}).catchall(Hg()),X(()=>fv),X(()=>mv),X(()=>_v),X(()=>vv),Xg([X(()=>Sv),X(()=>Cv),X(()=>wv),X(()=>Tv)]),Xg([X(()=>Dv),X(()=>Ov)]),X(()=>kv),Xg([X(()=>Uv),X(()=>Wv),X(()=>Gv)]),Xg([X(()=>Kv),X(()=>qv),X(()=>Jv)]),X(()=>yy),Xg([X(()=>Sy),X(()=>Cy),X(()=>wy),X(()=>by)])])),L_=X(()=>J({type:Y(`bulk-data`),"transfer-id":X(()=>M_),seq:q().int().nonnegative(),bytes:Z(Uint8Array)})),R_=X(()=>J({type:Y(`bulk-ack`),"transfer-id":X(()=>M_),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),z_=X(()=>J({type:Y(`bulk-end`),"transfer-id":X(()=>M_),digest:Z(Uint8Array)})),B_=X(()=>J({type:Y(`data-have`),peer:X(()=>ov),"head-seq":q().int().nonnegative()})),V_=X(()=>J({type:Y(`data-request`),peer:X(()=>ov),"from-seq":q().int().nonnegative()})),H_=X(()=>J({type:Y(`data-entries`),peer:X(()=>ov),"from-seq":q().int().nonnegative(),entries:Kg(Z(Uint8Array))}));X(()=>J({handle:K(),"device-id":X(()=>ov),"identity-key":X(()=>av),candidates:Kg(X(()=>uy)).optional(),mailboxes:Kg(X(()=>ov)).optional(),issued:q().int().nonnegative(),expires:q().int().nonnegative()})),X(()=>X(()=>ty));var U_=X(()=>J({verb:Y(`pty.spawn`),shell:K().optional(),argv:Kg(K()),cwd:K().optional(),env:J({}).catchall(K()),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),W_=X(()=>J({verb:Y(`pty.write`),session:X(()=>Iv),bytes:Z(Uint8Array)})),G_=X(()=>J({verb:Y(`pty.resize`),session:X(()=>Iv),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),K_=X(()=>J({verb:Y(`pty.kill`),session:X(()=>Iv),signal:q().int()})),q_=X(()=>J({verb:Y(`proc.spawn`),argv:Kg(K()),cwd:K().optional(),env:J({}).catchall(K())})),J_=X(()=>J({verb:Y(`proc.signal`),session:X(()=>Iv),signal:q().int()})),Y_=X(()=>J({verb:Y(`proc.kill`),session:X(()=>Iv)})),X_=X(()=>J({verb:Y(`exec.list`)}));X(()=>J({session:X(()=>Iv),kind:Xg([Y(`pty`),Y(`proc`)]),argv:Kg(K()).optional(),cwd:K().optional()}));var Z_=X(()=>Xg([X(()=>iv),X(()=>iy),X(()=>ay),X(()=>oy),X(()=>cy),X(()=>dy),X(()=>fy),X(()=>py),X(()=>my),X(()=>hy),X(()=>gy),X(()=>_y),X(()=>vy),X(()=>cv),X(()=>dv),X(()=>gv),X(()=>Lv),X(()=>Rv),X(()=>zv),X(()=>B_),X(()=>V_),X(()=>H_),X(()=>L_),X(()=>R_),X(()=>z_),X(()=>Pv),X(()=>Fv)])),Q_=X(()=>X(()=>Z_)),$_=X(()=>q().int().nonnegative()),ev=X(()=>Xg([X(()=>tv),X(()=>nv),X(()=>rv)])),tv=X(()=>Xg([Y(`core/management`),Y(`core/exec`),Y(`core/data`),Y(`core/federation`),Y(`core/webrtc`),Y(`core/room`),Y(`core/bulk`),Y(`core/version`)])),nv=X(()=>K().regex(RegExp(`[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+/[A-Za-z0-9_.-]+`))),rv=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+`))),iv=X(()=>J({type:Y(`handshake`),version:X(()=>$_),domains:Kg(X(()=>ev)),params:J({}).catchall(Hg()).optional()})),av=X(()=>J({alg:q().int(),"public-key":Z(Uint8Array)})),ov=X(()=>Z(Uint8Array).refine(e=>e.length===32,{message:`expected exactly 32 bytes`}));X(()=>J({"device-id":X(()=>ov),"identity-key":X(()=>av),certificate:Z(Uint8Array).optional()}));var sv=X(()=>J({verb:X(()=>Yv),params:X(()=>I_)})),cv=X(()=>J({type:Y(`manage-request`),"request-id":q().int().nonnegative(),command:X(()=>sv),scope:X(()=>$v),token:X(()=>ny).optional()})),lv=X(()=>J({result:Y(`ok`)}).catchall(Hg())),uv=X(()=>J({result:Y(`error`),code:K(),message:K().optional()})),dv=X(()=>J({type:Y(`manage-response`),"request-id":q().int().nonnegative(),outcome:Xg([X(()=>lv),X(()=>uv)])})),fv=X(()=>J({verb:Y(`capability.request`),capability:K(),"valid-until":q().int().nonnegative().optional()}).catchall(Hg())),pv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>ny)}).catchall(Hg())),mv=X(()=>J({verb:Y(`capability.grant`),"granted-token":X(()=>ny)}).catchall(Hg()));X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av),"revoked-at":q().int().nonnegative(),authorization:Z(Uint8Array).optional()}));var hv=X(()=>X(()=>ty)),gv=X(()=>J({type:Y(`revocation-announce`),entries:Kg(X(()=>hv))})),_v=X(()=>J({verb:Y(`path.trace`)}));X(()=>J({result:Y(`ok`),relayed:Rg(),"hub-address":K().optional()}).catchall(Hg())),X(()=>J({direct:Kg(X(()=>ov)),relayed:Kg(J({device:X(()=>ov),via:X(()=>ov).optional()}))}));var vv=X(()=>J({verb:Y(`topology.get`)})),yv=X(()=>Xg([X(()=>bv),X(()=>xv)]));X(()=>K().regex(RegExp(`[0-9a-f]{64}`)));var bv=X(()=>K().regex(RegExp(`[0-9a-f]{64}/[A-Za-z0-9_-]+`))),xv=X(()=>K().regex(RegExp(`[0-9a-f]{64}\\+[0-9a-f]{64}`))),Sv=X(()=>J({verb:Y(`room.send`),"message-id":Z(Uint8Array),"sent-at":q().int().nonnegative(),text:K(),"content-type":K().optional(),refs:Kg(X(()=>Ev)).optional()}).catchall(Hg())),Cv=X(()=>J({verb:Y(`room.read`),messages:Kg(Z(Uint8Array)),at:q().int().nonnegative()}).catchall(Hg())),wv=X(()=>J({verb:Y(`room.leave`)}).catchall(Hg())),Tv=X(()=>J({verb:Y(`room.members`)}).catchall(Hg())),Ev=X(()=>J({id:Z(Uint8Array),relation:K()})),Dv=X(()=>J({verb:Y(`room.join`)}).catchall(Hg())),Ov=X(()=>J({verb:Y(`room.invite`),invitee:X(()=>ov),token:X(()=>ny)}).catchall(Hg())),kv=X(()=>J({verb:Y(`room.rekey`),"key-epoch":q().int().nonnegative(),"wrapped-key":Xg([Z(Uint8Array),Kg(Z(Uint8Array))])}).catchall(Hg())),Av=X(()=>J({device:X(()=>ov)}).catchall(Hg())),jv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>ny),members:Kg(X(()=>Av))}).catchall(Hg()));X(()=>J({result:Y(`ok`),members:Kg(X(()=>Av))}).catchall(Hg()));var Mv=X(()=>X(()=>ty)),Nv=X(()=>J({room:X(()=>yv),poster:X(()=>ov),"poster-key":X(()=>av),token:X(()=>ny),"notice-id":Z(Uint8Array),"posted-at":q().int().nonnegative(),"content-type":K(),content:Z(Uint8Array),refs:Kg(X(()=>Ev)).optional(),"valid-until":q().int().nonnegative().optional(),"key-epoch":q().int().nonnegative().optional()}).catchall(Hg())),Pv=X(()=>J({type:Y(`secure-hello`),"ephemeral-key":Z(Uint8Array).refine(e=>e.length===65,{message:`expected exactly 65 bytes`}),nonce:Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`}),"identity-key":X(()=>av),"to-device":X(()=>ov),signature:Z(Uint8Array)})),Fv=X(()=>J({type:Y(`secure-data`),counter:q().int().nonnegative(),ciphertext:Z(Uint8Array)})),Iv=X(()=>q().int().nonnegative()),Lv=X(()=>J({type:Y(`stream-data`),session:X(()=>Iv),seq:q().int().nonnegative(),channel:K(),bytes:Z(Uint8Array)})),Rv=X(()=>J({type:Y(`stream-ack`),session:X(()=>Iv),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),zv=X(()=>J({type:Y(`stream-end`),session:X(()=>Iv),"exit-code":q().int().optional(),"exit-signal":q().int().optional()})),Bv=X(()=>q().int().nonnegative()),Vv=X(()=>J({kind:Xg([Y(`capability-token`),Y(`revocation-entry`),Y(`handle-record`),Y(`room-notice`),K()]),protected:Z(Uint8Array),payload:Z(Uint8Array)})),Hv=X(()=>J({participant:X(()=>ov),hiding:Z(Uint8Array),binding:Z(Uint8Array)})),Uv=X(()=>J({verb:Y(`threshold.commit`),"session-id":X(()=>Bv),group:X(()=>ov),subject:X(()=>Vv),deadline:q().int().nonnegative()})),Wv=X(()=>J({verb:Y(`threshold.sign`),"session-id":X(()=>Bv),commitments:Kg(X(()=>Hv))}));X(()=>J({"session-id":X(()=>Bv),group:X(()=>ov),share:Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av)})),X(()=>X(()=>ty));var Gv=X(()=>J({verb:Y(`threshold.abort`),"session-id":X(()=>Bv),reason:K().optional()})),Kv=X(()=>J({verb:Y(`threshold.keygen-round1`),"session-id":X(()=>Bv),threshold:q().int().nonnegative(),participants:Kg(X(()=>ov)),commitment:Kg(Z(Uint8Array)),"proof-of-knowledge":Z(Uint8Array).optional(),"existing-group-key":Z(Uint8Array).optional()})),qv=X(()=>J({verb:Y(`threshold.keygen-round2`),"session-id":X(()=>Bv),share:Z(Uint8Array)})),Jv=X(()=>J({verb:Y(`threshold.keygen-confirm`),"session-id":X(()=>Bv),"transcript-digest":Z(Uint8Array),"group-key":Z(Uint8Array)})),Yv=X(()=>Xg([X(()=>Xv),X(()=>Zv),X(()=>Qv)])),Xv=X(()=>K().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),Zv=X(()=>K().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),Qv=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),$v=X(()=>J({kind:K(),path:K().optional()}));X(()=>Y(1)),X(()=>Y(4)),X(()=>Xg([q().int(),K()]));var ey=X(()=>J({1:q().int().optional(),4:Z(Uint8Array).optional()}).catchall(Hg())),ty=X(()=>n_([Z(Uint8Array),X(()=>ey),Xg([Z(Uint8Array),Bg()]),Z(Uint8Array)])),ny=X(()=>X(()=>ty)),ry=X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av),bearer:X(()=>ov),capability:X(()=>Yv),scope:X(()=>$v),expires:q().int().nonnegative(),"not-before":q().int().nonnegative().optional(),parent:Z(Uint8Array).optional(),"delegations-remaining":q().int().nonnegative().optional(),"valid-until":q().int().nonnegative().optional(),conditions:Z(Uint8Array).optional()}).catchall(Hg())),iy=X(()=>J({type:Y(`ping`)})),ay=X(()=>J({type:Y(`pong`)})),oy=X(()=>J({type:Y(`close`),reason:K().optional()})),sy=X(()=>J({device:X(()=>ov),addresses:Kg(K()),"snapshot-seconds":q().int(),"identity-key":X(()=>av),signature:Z(Uint8Array)}).catchall(Hg())),cy=X(()=>J({type:Y(`gossip`),peers:Kg(X(()=>sy))})),ly=X(()=>Xg([Y(`host`),Y(`server-reflexive`),Y(`relayed`)])),uy=X(()=>J({address:K(),kind:X(()=>ly),priority:q().int().nonnegative()})),dy=X(()=>J({type:Y(`candidates`),candidates:Kg(X(()=>uy))})),fy=X(()=>J({type:Y(`sync-punch`),nonce:q().int().nonnegative(),"deadline-unix-ms":q().int().nonnegative()})),py=X(()=>J({type:Y(`observed-address`),address:K()})),my=X(()=>J({type:Y(`relay-offer`),addresses:Kg(K())})),hy=X(()=>J({type:Y(`relay-connect`),"target-device":X(()=>ov)})),gy=X(()=>J({type:Y(`relay-data`),payload:Z(Uint8Array),"to-device":X(()=>ov).optional(),"from-device":X(()=>ov).optional()})),_y=X(()=>J({type:Y(`relay-inbound`),"source-device":X(()=>ov)})),vy=X(()=>J({type:Y(`coordinator`),term:q().int().nonnegative(),coordinator:X(()=>ov),"capacity-hint":q().int().nonnegative().optional()})),yy=X(()=>J({verb:Y(`version.get`)})),by=X(()=>J({verb:Y(`webrtc.sfu-track-map`),"negotiation-id":q().int().nonnegative(),tracks:Kg(X(()=>xy))})),xy=X(()=>J({mid:K(),member:X(()=>ov),kind:Xg([Y(`audio`),Y(`video`)])})),Sy=X(()=>J({verb:Y(`webrtc.offer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Cy=X(()=>J({verb:Y(`webrtc.answer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),wy=X(()=>J({verb:Y(`webrtc.ice-candidate`),"negotiation-id":q().int().nonnegative(),candidate:X(()=>Ty).optional()})),Ty=X(()=>J({candidate:K(),"sdp-mid":K().optional(),"sdp-m-line-index":q().int().nonnegative().optional(),"username-fragment":K().optional()})),Ey=16,Dy=2;function Oy(e){let t=``;for(let n of e)t+=n.toString(Ey).padStart(Dy,`0`);return t}function ky(e){return Oy(e)}var Ay=String(2**53-1).length,jy=`message`;function My(e,t){return`${jy}/${e}/${String(t.sentAt).padStart(Ay,`0`)}-${Oy(t.messageId)}`}function Ny(e){let t=e.slice(`${jy}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function Py(e){return e===`sent`||e===`received`}function Fy(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:Py(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Iy(e){return{async append(t,n){await e.set(My(t,n),new Uint8Array(hc(n,Qs)))},async roomPaths(){let t=await e.keys(`${jy}/`);return[...new Set(t.map(Ny))]},async list(t){let n=(await e.keys(`${jy}/${t}/`)).sort(),r=[];for(let t of n){let n=await e.get(t);if(n===void 0)continue;let i=rl(n,il);if(!Fy(i))throw Error(`stored message at ${t} is malformed`);r.push(i)}return r}}}function Ly(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Ry(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function zy(e,t){return Ry(e)||Ry(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function By(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&zy(t.path,e.path):!1}var Vy=`signature`,Hy=`identity-key`,Uy=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function Wy(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=hc(t,Qs),r=new Uint8Array(Uy.length+n.length);return r.set(Uy,0),r.set(n,Uy.length),r}async function Gy(e,t){let n=await e.sign(Wy(t));return{...t,[Vy]:n}}async function Ky(e,t){let n=t[Hy];try{return Ly(await e.deriveDeviceId(n[`public-key`]),t.device)?await e.verify(n,Wy(t),t[Vy]):!1}catch{return!1}}var qy={name:`wire-mesh-core`,version:`3.0.1`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`2.18.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/advert-extension-policy":{import:`./dist/domain/advert-extension-policy.mjs`,require:`./dist/domain/advert-extension-policy.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/relay-hub":{import:`./dist/domain/relay-hub.mjs`,require:`./dist/domain/relay-hub.cjs`},"./domain/relay-use-gate":{import:`./dist/domain/relay-use-gate.mjs`,require:`./dist/domain/relay-use-gate.cjs`},"./domain/revocation-view":{import:`./dist/domain/revocation-view.mjs`,require:`./dist/domain/revocation-view.cjs`},"./domain/room":{import:`./dist/domain/room.mjs`,require:`./dist/domain/room.cjs`},"./domain/room-path":{import:`./dist/domain/room-path.mjs`,require:`./dist/domain/room-path.cjs`},"./domain/room-rekey":{import:`./dist/domain/room-rekey.mjs`,require:`./dist/domain/room-rekey.cjs`},"./domain/room-token-verification":{import:`./dist/domain/room-token-verification.mjs`,require:`./dist/domain/room-token-verification.cjs`},"./domain/shard-manifest":{import:`./dist/domain/shard-manifest.mjs`,require:`./dist/domain/shard-manifest.cjs`},"./domain/threshold-subject":{import:`./dist/domain/threshold-subject.mjs`,require:`./dist/domain/threshold-subject.cjs`},"./domain/tokens":{import:`./dist/domain/tokens.mjs`,require:`./dist/domain/tokens.cjs`},"./domain/topology":{import:`./dist/domain/topology.mjs`,require:`./dist/domain/topology.cjs`},"./domain/topology-snapshot":{import:`./dist/domain/topology-snapshot.mjs`,require:`./dist/domain/topology-snapshot.cjs`},"./domain/webrtc-signaling":{import:`./dist/domain/webrtc-signaling.mjs`,require:`./dist/domain/webrtc-signaling.cjs`},"./generated/protocol":{import:`./dist/generated/protocol.mjs`,require:`./dist/generated/protocol.cjs`},"./generated/runtime":{import:`./dist/generated/runtime.mjs`,require:`./dist/generated/runtime.cjs`},"./ports/clock":{import:`./dist/ports/clock.mjs`,require:`./dist/ports/clock.cjs`},"./ports/identity":{import:`./dist/ports/identity.mjs`,require:`./dist/ports/identity.cjs`},"./ports/storage":{import:`./dist/ports/storage.mjs`,require:`./dist/ports/storage.cjs`},"./ports/transport":{import:`./dist/ports/transport.mjs`,require:`./dist/ports/transport.cjs`},"./package.json":`./package.json`},files:[`dist`,`wasm-dist`],packageManager:`pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c`,publishConfig:{provenance:!0,access:`public`},repository:{type:`git`,url:`https://github.com/ExaDev/wire-mesh.git`,directory:`ts/packages/core`},scripts:{_build:`tsdown`,"_build-wasm":`./scripts/build-threshold-wasm.sh`,"_conformance-check":`vitest run test/conformance.unit.test.ts`,_generate:`node generate.ts`,_lint:`eslint . --fix --cache --max-warnings 0`,_mutation:`stryker run stryker.config.ts`,_test:`vitest run`,_typecheck:`tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit`,build:`turbo run _build`,"build-wasm":`turbo run _build-wasm`,"conformance-check":`turbo run _conformance-check`,generate:`turbo run _generate`,lint:`turbo run _lint`,mutation:`turbo run _mutation`,prepack:`node scripts/assert-wasm-dist.ts`,test:`turbo run _test`,typecheck:`turbo run _typecheck`},type:`module`}.version,Jy=`wire-mesh/version`,Yy=`version.get`;function Xy(e){return`verb`in e&&e.verb===Yy}function Zy(){return{result:`ok`,version:qy}}var Qy=new Set([`device`,`addresses`,`snapshot-seconds`,Hy,Vy]),$y=`topology/peers`,eb=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function tb(e){for(let t of Object.keys(e)){if(Qy.has(t))throw Error(`sendGossipUpdate extension key "${t}" collides with a mandatory peer-advert field`);if(t===`topology/peers`)throw Error(`sendGossipUpdate extension key "${t}" collides with a session-managed gossip field`);if(t===`wire-mesh/version`)throw Error(`sendGossipUpdate extension key "${t}" is reserved for wire-mesh-core's own self-reported version`);if(!eb.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}var nb=[`core/federation`];function rb(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!nb.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function ib(){let e=[],t=[];return{push(n){let r=e.shift();r===void 0?t.push(n):r(n)},stream:{[Symbol.asyncIterator](){return{next:async()=>new Promise(n=>{let r=t.shift();r===void 0?e.push(e=>{n({value:e,done:!1})}):n({value:r,done:!1})})}}}}}function ab(){let e=[];function t(t){let n=e.findIndex(e=>e.sentAt===t);return n!==-1&&(e.splice(n,1),!0)}return{resolveOldest(t){let n=e.shift();n!==void 0&&n.resolve(t-n.sentAt)},rejectAll(t){for(let n of e.splice(0))n.reject(Error(t))},async sendAndAwait(n,r,i){let a=new Promise((t,r)=>{e.push({sentAt:n,resolve:t,reject:r})});return await r(),i===void 0?a:Promise.race([a,new Promise((e,r)=>{setTimeout(()=>{t(n)&&r(Error(`timed out waiting for pong`))},i)})])}}}function ob(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function sb(e){let t=ob(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function cb(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return sb({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function lb(e){return new Uint8Array(hc(e,Qs))}function ub(e,t){return{type:`relay-data`,payload:lb(e),...t===void 0?{}:{"to-device":t}}}var db=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function fb(e){let t=rl(new Uint8Array(e),il),n=Q_.safeParse(t);if(!n.success)throw new db(n.error.message);return n.data}function pb(e){let t;try{t=rl(e,il)}catch{return null}let n=Q_.safeParse(t);return n.success?n.data:null}function mb(){let e=new Map;return{has:t=>e.has(ky(t)),add:t=>{e.set(ky(t),t)},remove:t=>{e.delete(ky(t))},list:()=>[...e.values()]}}var hb=16,gb=256,_b=256,vb=12,yb=4,bb=8,xb=new TextEncoder,Sb=xb.encode(`wire-mesh/secure-hello/v1\0`),Cb=xb.encode(`wire-mesh/secure-channel/v1\0`),wb=xb.encode(`wire-mesh/secure-data/v1\0`),Tb=xb.encode(`lo-to-hi`),Eb=xb.encode(`hi-to-lo`),Db={name:`ECDH`,namedCurve:`P-256`};function Ob(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function kb(e,t){for(let n=0;n<Math.min(e.length,t.length);n+=1){let r=(e[n]??0)-(t[n]??0);if(r!==0)return r}return e.length-t.length}function Ab(e){let t=new Uint8Array(bb);return new DataView(t.buffer).setBigUint64(0,BigInt(e),!1),t}function jb(e,t,n,r){return Ob(Sb,e,t,n,r)}async function Mb(e,t){let n=await crypto.subtle.generateKey(Db,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.exportKey(`raw`,n.publicKey)),i=crypto.getRandomValues(new Uint8Array(hb)),a=await e.sign(jb(r,i,e.deviceId,t));return{peer:t,privateKey:n.privateKey,hello:{type:`secure-hello`,"ephemeral-key":r,nonce:i,"identity-key":e.identityKey,"to-device":t,signature:a}}}async function Nb(e,t){let n=t[`identity-key`];try{let r=await e.deriveDeviceId(n[`public-key`]);return Ly(t[`to-device`],e.deviceId)?await e.verify(n,jb(t[`ephemeral-key`],t.nonce,r,e.deviceId),t.signature)?{ok:!0,peer:{deviceId:r,identityKey:n}}:{ok:!1,reason:`bad_signature`}:{ok:!1,reason:`wrong_recipient`}}catch{return{ok:!1,reason:`identity_mismatch`}}}function Pb(e){let t=new Uint8Array(vb);return t.set(Ab(e),yb),t}function Fb(e,t,n){return Ob(wb,e,t,Ab(n))}async function Ib(e,t,n,r,i){let a=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(t),info:Ob(Cb,n,r,i)},a,{name:`AES-GCM`,length:gb},!1,[`encrypt`,`decrypt`])}async function Lb(e,t,n,r){let i;try{let e=await crypto.subtle.importKey(`raw`,Uint8Array.from(n[`ephemeral-key`]),Db,!1,[]);i=new Uint8Array(await crypto.subtle.deriveBits({name:`ECDH`,public:e},t.privateKey,_b))}catch{return}let a=kb(e.deviceId,r.deviceId)<0,o=a?e.deviceId:r.deviceId,s=a?r.deviceId:e.deviceId,c=Ob(a?t.hello.nonce:n.nonce,a?n.nonce:t.hello.nonce),l=await Ib(i,c,o,s,Tb),u=await Ib(i,c,o,s,Eb),d=a?l:u,f=a?u:l,p=0,m=-1,h=Promise.resolve(),g=Promise.resolve();async function _(t,n){return{type:`secure-data`,counter:n,ciphertext:new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:Pb(n),additionalData:Fb(e.deviceId,r.deviceId,n)},d,lb(t)))}}async function v(t){if(t.counter<=m)return;let n;try{n=new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:Pb(t.counter),additionalData:Fb(r.deviceId,e.deviceId,t.counter)},f,Uint8Array.from(t.ciphertext)))}catch{return}return m=t.counter,pb(n)??void 0}return{peer:r,seal:async e=>{let t=p;p+=1;let n=h.then(async()=>_(e,t));return h=n.catch(()=>void 0),n},open:async e=>{let t=g.then(async()=>v(e));return g=t.catch(()=>void 0),t}}}function Rb(e,t){let n=new Map;function r(r){let i=ky(r),a=Promise.withResolvers(),o=Mb(e,r),s={status:`awaiting`,pending:o,settle:a};return n.set(i,s),o.then(async({hello:e})=>t(r,e)).catch(e=>{a.reject(e instanceof Error?e:Error(String(e))),n.get(i)===s&&n.delete(i)}),s}return{ensure:async e=>{let t=n.get(ky(e));return t?.status===`established`?t.channel:(t??r(e)).settle.promise},applyHello:async t=>{let i=await Nb(e,t);if(!i.ok)return;let a=ky(i.peer.deviceId),o=n.get(a),s=o?.status===`awaiting`?o:r(i.peer.deviceId),c=await Lb(e,await s.pending,t,i.peer);if(c===void 0){s.settle.reject(Error(`the peer sent an unusable ephemeral key`)),n.get(a)===s&&n.delete(a);return}n.set(a,{status:`established`,channel:c}),s.settle.resolve(c)},open:async(e,t)=>{if(t===void 0)return;let r=n.get(ky(t));if(r?.status!==`established`)return;let i=await r.channel.open(e);return i===void 0?void 0:{frame:i,from:r.channel.peer.deviceId}},reset:e=>{for(let t of n.values())t.status===`awaiting`&&t.settle.reject(Error(e));n.clear()},forget:e=>{let t=ky(e),r=n.get(t);r?.status===`awaiting`&&r.settle.reject(Error(`the relay pairing was lost`)),n.delete(t)}}}var zb=1e3,Bb=3e3;function Vb(e){return{type:`handshake`,version:1,domains:[...e]}}function Hb(e,t,n,r,i,a=[],o,s){let c=null,l={status:`idle`},u={status:`pending`},d=new Map,f=[],p=!1,m=ib(),h=null,g=null,_=0,v=null,y=0,b=mb(),x=cb({getAuthenticatedPeer:()=>c?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>b.list()}),S=new Map,C=Rb(e,async(e,t)=>{if(c===null)throw Error(`not connected`);f.push({direction:`sent`,frame:t}),await c.send(ub(t,e)),E()}),w=ib(),T=ib(),ee=ab();function te(){return{state:l,directory:[...d.values()],frameLog:[...f]}}function E(){m.push(te())}function D(e){for(let t of S.values())t.reject(Error(e));S.clear()}function ne(e,t,n){let r=y;y+=1;let i=n??v;return{type:`manage-request`,"request-id":r,command:e,scope:t,...i===null?{}:{token:i}}}function O(){if(c===null||l.status!==`connected`)throw Error(`not connected`);return c}async function re(e,t,n){if(c===null)throw Error(`not connected`);if(!t){await c.send(e);return}if(n===void 0)throw Error(`a relayed frame needs the device it is for`);let r=await(await C.ensure(n)).seal(e);await c.send(ub(r,n))}function ie(e,t){let n=e[`request-id`],r=S.get(n);if(r===void 0)return;let i=r.expectedFrom;(i===void 0?t===void 0:t!==void 0&&ky(t)===ky(i))&&(S.delete(n),r.resolve(e.outcome))}function ae(e,t){let n=e[`request-id`],r=t?.fromDevice,i=t?.toDevice,a={requestId:n,command:e.command,scope:e.scope,...e.token===void 0?{}:{token:e.token},...r===void 0?{}:{fromDevice:r},...i===void 0?{}:{toDevice:i},respond:async e=>{let i={type:`manage-response`,"request-id":n,outcome:e};f.push({direction:`sent`,frame:i}),await re(i,t!==void 0,r),E()}};if(Xy(e.command.params)){a.respond(Zy());return}w.push(a)}async function oe(n){if(n.type===`relay-data`){let e=pb(n.payload);if(e?.type===`secure-hello`){f.push({direction:`received`,frame:e}),await C.applyHello(e);return}if(e?.type===`secure-data`){let t=await C.open(e,n[`from-device`]);t?.frame.type===`manage-response`?(f.push({direction:`received`,frame:t.frame}),ie(t.frame,t.from)):t?.frame.type===`manage-request`&&(f.push({direction:`received`,frame:t.frame}),ae(t.frame,{fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}}));return}f.push({direction:`received`,frame:n});return}if(f.push({direction:`received`,frame:n}),n.type===`handshake`)se(n);else if(n.type===`gossip`)for(let t of n.peers)await Ky(e,t)&&(d.set(ky(t.device),{device:t.device,advert:t}),x.recordAdvert(t.device),i?.(t));else if(n.type===`relay-inbound`)b.add(n[`source-device`]);else if(n.type===`manage-response`)ie(n);else if(n.type===`manage-request`)ae(n);else if(n.type===`pong`)ee.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)T.push(e)}async function k(e){if(c===null)throw Error(`not connected`);if(b.has(e))return;let t={type:`relay-connect`,"target-device":e};f.push({direction:`sent`,frame:t}),await c.send(t),b.add(e),E()}let A=Vb([]);function se(e){if(u.status!==`pending`)return;h!==null&&(clearTimeout(h),h=null);let t=rb(A,e);u=t.ok?{status:`negotiated`,version:t.version,sharedDomains:t.sharedDomains}:{status:`rejected`,reason:`no shared domains or version`},l.status===`connected`&&(l={...l,handshake:u})}function ce(e,t,r){if(!p){if(D(`disconnected before a response arrived`),ee.rejectAll(`disconnected before a pong arrived`),n!==null&&_<n.maxAttempts){_+=1;let i=_;l={status:`reconnecting`,address:t,attempt:i,reason:e},E(),g=setTimeout(()=>{g=null,j(t,r).catch(e=>{ce(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}l={status:`closed`,address:t,reason:e},E()}}async function le(e,t,n){for await(let t of e.receive()){if(p)return;await oe(t),await o?.(e,t),E()}s?.(e),l.status===`connected`&&ce(`node closed the connection`,t,n)}async function ue(n){return n!==void 0&&tb(n),{type:`gossip`,peers:[await Gy(e,{...n,[Jy]:qy,[$y]:x.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/zb),"identity-key":e.identityKey})]}}async function de(e,t,n){c=e,C.reset(`the connection changed before the channel was ready`),A=Vb(n),u={status:`pending`},l={status:`connected`,address:t,handshake:u},f.push({direction:`sent`,frame:A}),await c.send(A),E();let r=await ue();f.push({direction:`sent`,frame:r}),await c.send(r),E(),h=setTimeout(()=>{h=null,u.status===`pending`&&(u={status:`unanswered`},l.status===`connected`&&(l={...l,handshake:u}),E())},Bb),le(c,t,n).catch(e=>{l.status===`connected`&&ce(e instanceof Error?e.message:String(e),t,n)})}async function j(e,t){if(r===null)throw Error(`this session is already connected; there is nothing to dial`);h!==null&&(clearTimeout(h),h=null),l={status:`connecting`,address:e},E();let n=await r(e);if(p){await n.close();return}await de(n,e,t)}return{wireUpConnection:de,session:{events:m.stream,incomingManageRequests:w.stream,revocationAnnouncements:T.stream,async connect(e,t){if(c!==null)throw Error(`a session connects once; create a new one to reconnect`);_=0,await j(e,t)},async sendPing(){let e=O(),t={type:`ping`};f.push({direction:`sent`,frame:t}),await e.send(t),E()},async sendPingMeasureRtt(e){let n=O();return ee.sendAndAwait(t.now(),async()=>{let e={type:`ping`};f.push({direction:`sent`,frame:e}),await n.send(e),E()},e)},setToken(e){v=e},async sendManageRequest(e,t,n,r,i){O(),n!==void 0&&await k(n);let a=ne(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{S.set(o,{resolve:e,reject:t,expectedFrom:n})});f.push({direction:`sent`,frame:a});let c=(async()=>{try{await re(a,n!==void 0,n)}catch(e){throw S.delete(o),s.catch(()=>void 0),e}return E(),s})();return i===void 0?c:Promise.race([c,new Promise(e=>{setTimeout(()=>{S.delete(o)&&(n!==void 0&&(b.remove(n),C.forget(n)),e({result:`error`,code:`timeout`}))},i)})])},async sendRevocationAnnounce(e){O();let t={type:`revocation-announce`,entries:[...e]};f.push({direction:`sent`,frame:t}),await re(t,!1),E()},async sendGossipUpdate(e){O();let t=await ue(e);f.push({direction:`sent`,frame:t}),await re(t,!1),E()},getTopologyPeers(){return x.compute()},async sendDataFrame(e){O(),f.push({direction:`sent`,frame:e}),await re(e,!1),E()},async close(){p=!0,h!==null&&(clearTimeout(h),h=null),g!==null&&(clearTimeout(g),g=null),D(`connection closed before a response arrived`),C.reset(`the session closed before the channel was ready`),ee.rejectAll(`connection closed before a pong arrived`),c!==null&&await c.close(),(l.status===`connected`||l.status===`connecting`||l.status===`reconnecting`)&&(l={status:`closed`,address:l.address,reason:`closed by you`}),E()}}}}function Ub(e,t,n={now:()=>Date.now()},r=null,i=[],a){let{session:o}=Hb(t,n,r,async t=>e.connect(t),a,i);return o}async function Wb(e,t,n,r={}){let i=r.clock??{now:()=>Date.now()},a=null,o=new Promise(e=>{a=e}),s=!1,{session:c,wireUpConnection:l}=Hb(t,i,null,null,e=>{s||(s=!0,a?.(e.device)),r.onPeerAdvert?.(e)},r.addresses,r.onFrame,r.onSessionEnd);return await l(e,r.label??`accepted`,n),{...c,peerDeviceId:o}}function Gb(e){return e instanceof Error?e:Error(String(e))}function Kb(e){let t=ky(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[Gb(n)]);return}if(!n){e.onExpansionDeclined?.(t);return}let r=[];for(let n of t.addresses)try{let r=await e.dial(n);e.onExpanded(t,n,r);return}catch(e){r.push(Gb(e))}e.onExpansionFailed?.(t,r)}return{considerAdvert(e){let i=ky(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var qb=/^[0-9a-f]{64}$/,Jb=/^[A-Za-z0-9_-]+$/;function Yb(e,t){if(!qb.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function Xb(e,t){if(Yb(e,`a`),Yb(t,`b`),e===t)throw Error(`a DM room path cannot name the same device twice (${e})`);return e<t?`${e}+${t}`:`${t}+${e}`}function Zb(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(qb.test(n)&&Jb.test(r))return{kind:`owner-named`,owner:n,localName:r}}let n=e.indexOf(`+`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1);if(qb.test(t)&&qb.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var Qb=1e3,$b=1002,ex=`the web console is a client only: it cannot listen`;function tx(e){let t=[],n=[],r=!1,i=null;function a(){r=!0;for(let e of n.splice(0))e.resolve({value:void 0,done:!0})}function o(e){i=e,r=!0;for(let t of n.splice(0))t.reject(e)}e.addEventListener(`message`,r=>{if(!(r.data instanceof ArrayBuffer)){o(Error(`expected a binary WebSocket message`)),e.close($b,`protocol error`);return}let i;try{i=fb(r.data)}catch(t){if(t instanceof db)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close($b,`protocol error`);return}let a=n.shift();a?a.resolve({value:i,done:!1}):t.push(i)}),e.addEventListener(`close`,a),e.addEventListener(`error`,a);let s={[Symbol.asyncIterator](){return{next:async()=>c()}}};async function c(){let e=t.shift();return e===void 0?i===null?r?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{n.push({resolve:e,reject:t})}):Promise.reject(i):Promise.resolve({value:e,done:!1})}return{async send(t){return r?Promise.reject(Error(`connection is closed`)):(e.send(lb(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(Qb),Promise.resolve()}}}function nx(){return{async connect(e){let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return Promise.reject(Error(`not a WebSocket address: ${e}`));let n=new WebSocket(t);return n.binaryType=`arraybuffer`,new Promise((e,r)=>{n.addEventListener(`open`,()=>{e()}),n.addEventListener(`error`,()=>{r(Error(`connect to ${t.toString()} failed`))})}).then(()=>tx(n))},async listen(){return Promise.reject(Error(ex))}}}var rx=[{urls:`stun:stun.cloudflare.com:3478`}],ix=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),ax=i_(K(),q()),ox=o_([`ms`,`s`,`min`,`h`,`d`]);Qg(`kind`,[J({kind:Y(`number`),value:q(),unit:ax.optional()}),J({kind:Y(`text`),value:K()}),J({kind:Y(`boolean`),value:Rg()}),J({kind:Y(`instant`),value:K()}),J({kind:Y(`duration`),value:q(),unit:ox}),J({kind:Y(`complex`),re:q(),im:q(),unit:ax.optional()})]);function sx(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function cx(e,t){let n=sx(e),r=sx(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function lx(e,t){let n=sx(e),r=sx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return sx(i)}function ux(e,t){let n=sx(e),r=sx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return sx(i)}J({code:o_([`not-found`,`wrong-type`,`domain-error`]),message:K()});function Q(e){return{status:`definite`,value:e}}function $(e,t){return{status:`indeterminate`,reason:{code:e,message:t}}}function dx(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var fx=X(()=>Xg([K(),q(),Rg(),Bg(),Kg(fx),i_(K(),fx)])),px=o_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),mx=o_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),hx=o_([`in`,`notIn`]),gx=o_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),_x=o_([`first`,`unique`]),vx=J({kind:Y(`not`),get operand(){return Ax}}),yx=J({kind:Y(`and`),get left(){return Ax},get right(){return Ax}}),bx=J({kind:Y(`or`),get left(){return Ax},get right(){return Ax}}),xx=J({kind:Y(`allOf`),get operands(){return Kg(Ax)}}),Sx=J({kind:Y(`anyOf`),get operands(){return Kg(Ax)}}),Cx=J({kind:Y(`compare`),op:px,get left(){return Gx},get right(){return Gx}}),wx=J({kind:Y(`textCompare`),op:mx,get left(){return Gx},get right(){return Gx}}),Tx=J({kind:Y(`memberOf`),op:hx,get operand(){return Gx},get candidates(){return Kg(Gx)}}),Ex=J({kind:Y(`exists`),get operand(){return Gx}}),Dx=J({kind:Y(`some`),collection:fx,get item(){return Ax},get filter(){return Ax.optional()}}),Ox=J({kind:Y(`every`),collection:fx,get item(){return Ax},get filter(){return Ax.optional()}}),kx=J({kind:Y(`treeReference`),key:fx}),Ax=Qg(`kind`,[vx,yx,bx,xx,Sx,Cx,wx,Tx,Ex,Dx,Ox,kx]),jx=J({kind:Y(`numberLiteral`),value:q(),unit:ax.optional()}),Mx=J({kind:Y(`textLiteral`),value:K()}),Nx=J({kind:Y(`booleanLiteral`),value:Rg()}),Px=J({kind:Y(`instantLiteral`),value:K()}),Fx=J({kind:Y(`durationLiteral`),value:q(),unit:ox}),Ix=Xg([Jg({kind:Y(`complexLiteral`),re:q(),im:q(),unit:ax.optional()}),Jg({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:ax.optional()})]),Lx=J({kind:Y(`reference`),key:fx,unit:ax.optional()}),Rx=J({kind:Y(`arithmetic`),op:gx,get left(){return Gx},get right(){return Gx}}),zx=J({kind:Y(`negate`),get operand(){return Gx}}),Bx=J({kind:Y(`call`),fn:K(),get args(){return Kg(Gx)}}),Vx=J({kind:Y(`lookup`),table:fx,get keys(){return Kg(Gx)}}),Hx=J({get when(){return Ax},get then(){return Gx}}),Ux=J({kind:Y(`conditional`),hitPolicy:_x.optional(),get cases(){return Kg(Hx)},get fallback(){return Gx}}),Wx=Qg(`mode`,[J({mode:Y(`max`),get item(){return Gx}}),J({mode:Y(`min`),get item(){return Gx}}),J({mode:Y(`reduce`),get initial(){return Gx},get combine(){return Gx}})]),Gx=Xg([Qg(`kind`,[jx,Mx,Nx,Px,Fx,Lx,Rx,zx,Bx,Vx,Ux,J({kind:Y(`fold`),collection:fx,get filter(){return Ax.optional()},combiner:Wx}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:fx}),kx]),Ix]),Kx={},qx=1e4;function Jx(e,t){let n=0;return{checkNode(r){if(n+=1,n>e)return $(`domain-error`,`evaluation exceeded the maximum of ${e.toString()} nodes visited in a single call (resource exhausted)`);if(r>=t)return $(`domain-error`,`evaluation nesting depth exceeds the maximum of ${t.toString()} (resource exhausted)`)}}}async function Yx(e,t,n,r,i,a,o,s,c,l){let u=await i.resolveCollection(t,r);return Promise.all(u.map(async t=>{if(n===void 0)return{item:t,filterOutcome:`include`};let r=await e(n,t,i,void 0,a,o,s,c,l+1);return r.status===`indeterminate`?{item:t,filterOutcome:r}:{item:t,filterOutcome:r.value?`include`:`exclude`}}))}function Xx(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function Zx(e,t){return t>=e.from&&t<=e.to}function Qx(e,t){let n=e.ranges.some(e=>Zx(e,t));return e.negated?!n:n}var $x=class extends Error{pattern;index;constructor(e,t,n){super(`invalid pattern at index ${String(t)}: ${n}\n ${e}\n ${` `.repeat(t)}^`),this.name=`RegexParseError`,this.pattern=e,this.index=t}};function eS(e){return e.charCodeAt(0)}function tS(e,t){return{from:eS(e),to:eS(t)}}function nS(e){let t=eS(e);return{from:t,to:t}}var rS=[tS(`0`,`9`)],iS=[tS(`A`,`Z`),tS(`a`,`z`),tS(`0`,`9`),nS(`_`)],aS=[nS(` `),nS(` `),nS(`
70
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function rh(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;rh(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var ih=new Set([`type`,`properties`,`required`,`additionalProperties`]),ah=[`oneOf`,`anyOf`];function oh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function sh(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!ih.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??oh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Ol(n,r,e.length===1?e[0]:sh(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=oh(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function ch(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of ih)if(t in e)return;let n=t.filter(e=>ah.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=sh(t);else{let e=n[0],i=ah.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>sh([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,Zm(e,r))}function lh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Zm(i,s),Zm(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())rh(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])ch(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Zm(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Ol(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:fh(t,`input`,e.processors),output:fh(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function uh(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return uh(r.element,n);if(r.type===`set`)return uh(r.valueType,n);if(r.type===`lazy`)return uh(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return uh(r.innerType,n);if(r.type===`intersection`)return uh(r.left,n)||uh(r.right,n);if(r.type===`record`||r.type===`map`)return uh(r.keyType,n)||uh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:uh(r.in,n)||uh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(uh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(uh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(uh(e,n))return!0;return!!(r.rest&&uh(r.rest,n))}return!1}var dh=(e,t={})=>n=>{let r=Qm({...n,processors:t});return eh(e,r),nh(r,e),lh(r,e)},fh=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Qm({...i??{},target:a,io:t,processors:n});return eh(e,o),nh(o,e),lh(o,e)},ph={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},mh=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=ph[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},hh=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):$m(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},gh=(e,t,n,r)=>{n.type=`boolean`},_h=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},vh=(e,t,n,r)=>{n.not={}},yh=(e,t,n,r)=>{let i=e._zod.def,a=yl(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},bh=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if($m(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if($m(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},xh=(e,t,n,r)=>{$m(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Sh=(e,t,n,r)=>{$m(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Ch=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=eh(a.element,t,{...r,path:[...r.path,`items`]})};function wh(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?wh(t.out):t.type===`catch`?wh(t.innerType):e._zod.optin}var Th=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&$m(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Ol(i.properties,e,eh(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e];return t.io===`input`?wh(n)===void 0:n._zod.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=eh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Eh=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>eh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Dh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=eh(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},Oh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>eh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?eh(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?wh(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=e._zod.bag;typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function kh(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=kh(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>kh(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?G:Ed).source),p):p}var Ah=new WeakMap;function jh(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of Ah.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=kh(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var Mh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=eh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Ol(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=eh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Ah.get(t);n||(n=[],Ah.set(t,n),t.deferred.push(()=>jh(t))),n.push(e)}i.additionalProperties=eh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&wh(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},Nh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Ph=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Fh=Symbol();function Ih(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?($m(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Fh):JSON.parse(o)}var Lh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n.default=o)},Rh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n._prefault=o)},zh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{$m(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Bh=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;eh(o,t,r);let s=t.seen.get(e);s.ref=o},Vh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Hh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Uh=(e,t,n,r)=>{let i=e._zod.innerType;eh(i,t,r);let a=t.seen.get(e);a.ref=i},Wh=new WeakSet([Object.prototype,Error.prototype]);function Gh(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Kh=W(`ZodError`,(e,t)=>{Mu.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);Wh.has(n)||(Wh.add(n),Gh(n,`format`,e=>t=>Iu(e,t)),Gh(n,`flatten`,e=>t=>Fu(e,t)),Gh(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,xl,2)}),Gh(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,xl,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),qh=Ru(Kh),Jh=zu(Kh),Yh=Bu(Kh),Xh=Hu(Kh),Zh=Wu(Kh),Qh=Gu(Kh),$h=Ku(Kh),eg=qu(Kh),tg=Ju(Kh),ng=Yu(Kh),rg=Xu(Kh),ig=Zu(Kh);function ag(){Cu.localeError||wu(Up())}function og(){Cu.memoizer||wu({memoizer:Bp()})}var sg=W(`ZodType`,(e,t)=>(ag(),Zd.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(kl(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return zl(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(A_(e,t))},superRefine(e,t){return this.check(j_(e,t))},overwrite(e){return this.check(Vm(e))},optional(){return d_(this)},exactOptional(){return p_(this)},nullable(){return h_(this)},nullish(){return d_(h_(this))},nonoptional(e){return x_(this,e)},array(){return Kg(this)},or(e){return Xg([this,e])},and(e){return e_(this,e)},transform(e){return T_(this,l_(e))},default(e){return __(this,e)},prefault(e){return y_(this,e)},catch(e){return C_(this,e)},pipe(e){return T_(this,e)},readonly(){return D_(this)},describe(e){let t=this.clone();return qp.add(t,{description:e}),t},meta(...e){if(e.length===0)return qp.get(this);let t=this.clone();return qp.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return cu(this,`~standard`,{...$d(this),jsonSchema:{input:fh(this,`input`),output:fh(this,`output`)}})},set"~standard"(e){su(this,`~standard`,e)},parse:function e(t,n){return qh(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Jh(this,t,n,{callee:e})},safeParse(e,t){return Yh(this,e,t)},async safeParseAsync(e,t){return Xh(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){su(this,`spa`,e)},encode:function e(t,n){return Zh(this,t,n,{callee:e})},decode:function e(t,n){return Qh(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await $h(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await eg(this,t,n,{callee:e})},safeEncode(e,t){return tg(this,e,t)},safeDecode(e,t){return ng(this,e,t)},async safeEncodeAsync(e,t){return rg(this,e,t)},async safeDecodeAsync(e,t){return ig(this,e,t)},toJSONSchema(e){return dh(this,{})(e)},get description(){return qp.get(this)?.description},get _def(){return this._zod.def}}),cg=W(`_ZodString`,(e,t)=>{ef.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mh(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(Fm(...e))},includes(...e){return this.check(Rm(...e))},startsWith(...e){return this.check(zm(...e))},endsWith(...e){return this.check(Bm(...e))},min(...e){return this.check(Nm(...e))},max(...e){return this.check(Mm(...e))},length(...e){return this.check(Pm(...e))},nonempty(...e){return this.check(Nm(1,...e))},lowercase(e){return this.check(Im(e))},uppercase(e){return this.check(Lm(e))},trim(){return this.check(Um())},normalize(...e){return this.check(Hm(...e))},toLowerCase(){return this.check(Wm())},toUpperCase(){return this.check(Gm())},slugify(){return this.check(Km())}}),lg=W(`ZodString`,(e,t)=>{ef.init(e,t),cg.init(e,t)},{email(e){return this.check(Yp(hg,e))},url(e){return this.check(tm(vg,e))},jwt(e){return this.check(gm(Ng,e))},emoji(e){return this.check(nm(yg,e))},guid(e){return this.check(Xp(gg,e))},uuid(e){return this.check(Zp(_g,e))},uuidv4(e){return this.check(Qp(_g,e))},uuidv6(e){return this.check($p(_g,e))},uuidv7(e){return this.check(em(_g,e))},nanoid(e){return this.check(rm(bg,e))},cuid(e){return this.check(im(xg,e))},cuid2(e){return this.check(am(Sg,e))},ulid(e){return this.check(om(Cg,e))},base64(e){return this.check(pm(Ag,e))},base64url(e){return this.check(mm(jg,e))},xid(e){return this.check(sm(wg,e))},ksuid(e){return this.check(cm(Tg,e))},ipv4(e){return this.check(lm(Eg,e))},ipv6(e){return this.check(um(Dg,e))},cidrv4(e){return this.check(dm(Og,e))},cidrv6(e){return this.check(fm(kg,e))},e164(e){return this.check(hm(Mg,e))},datetime(e){return this.check(_m(dg,e))},date(e){return this.check(vm(fg,e))},time(e){return this.check(ym(pg,e))},duration(e){return this.check(bm(mg,e))}});function K(e){return Jp(lg,e)}var ug=W(`ZodStringFormat`,(e,t)=>{tf.init(e,t),cg.init(e,t)}),dg=W(`ZodISODateTime`,(e,t)=>{yf.init(e,t),ug.init(e,t)}),fg=W(`ZodISODate`,(e,t)=>{bf.init(e,t),ug.init(e,t)}),pg=W(`ZodISOTime`,(e,t)=>{xf.init(e,t),ug.init(e,t)}),mg=W(`ZodISODuration`,(e,t)=>{Sf.init(e,t),ug.init(e,t)}),hg=W(`ZodEmail`,(e,t)=>{af.init(e,t),ug.init(e,t)}),gg=W(`ZodGUID`,(e,t)=>{nf.init(e,t),ug.init(e,t)}),_g=W(`ZodUUID`,(e,t)=>{rf.init(e,t),ug.init(e,t)}),vg=W(`ZodURL`,(e,t)=>{df.init(e,t),ug.init(e,t)}),yg=W(`ZodEmoji`,(e,t)=>{ff.init(e,t),ug.init(e,t)}),bg=W(`ZodNanoID`,(e,t)=>{pf.init(e,t),ug.init(e,t)}),xg=W(`ZodCUID`,(e,t)=>{mf.init(e,t),ug.init(e,t)}),Sg=W(`ZodCUID2`,(e,t)=>{hf.init(e,t),ug.init(e,t)}),Cg=W(`ZodULID`,(e,t)=>{gf.init(e,t),ug.init(e,t)}),wg=W(`ZodXID`,(e,t)=>{_f.init(e,t),ug.init(e,t)}),Tg=W(`ZodKSUID`,(e,t)=>{vf.init(e,t),ug.init(e,t)}),Eg=W(`ZodIPv4`,(e,t)=>{Cf.init(e,t),ug.init(e,t)}),Dg=W(`ZodIPv6`,(e,t)=>{Ef.init(e,t),ug.init(e,t)}),Og=W(`ZodCIDRv4`,(e,t)=>{Df.init(e,t),ug.init(e,t)}),kg=W(`ZodCIDRv6`,(e,t)=>{kf.init(e,t),ug.init(e,t)}),Ag=W(`ZodBase64`,(e,t)=>{jf.init(e,t),ug.init(e,t)}),jg=W(`ZodBase64URL`,(e,t)=>{Nf.init(e,t),ug.init(e,t)}),Mg=W(`ZodE164`,(e,t)=>{Pf.init(e,t),ug.init(e,t)}),Ng=W(`ZodJWT`,(e,t)=>{If.init(e,t),ug.init(e,t)}),Pg=W(`ZodNumber`,(e,t)=>{Lf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hh(e,t,n,r);let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null},{gt(e,t){return this.check(km(e,t))},gte(e,t){return this.check(Am(e,t))},min(e,t){return this.check(Am(e,t))},lt(e,t){return this.check(Dm(e,t))},lte(e,t){return this.check(Om(e,t))},max(e,t){return this.check(Om(e,t))},int(e){return this.check(Ig(e))},safe(e){return this.check(Ig(e))},positive(e){return this.check(km(0,e))},nonnegative(e){return this.check(Am(0,e))},negative(e){return this.check(Dm(0,e))},nonpositive(e){return this.check(Om(0,e))},multipleOf(e,t){return this.check(jm(e,t))},step(e,t){return this.check(jm(e,t))},finite(){return this}});function q(e){return xm(Pg,e)}var Fg=W(`ZodNumberFormat`,(e,t)=>{Rf.init(e,t),Pg.init(e,t)});function Ig(e){return Sm(Fg,e)}var Lg=W(`ZodBoolean`,(e,t)=>{zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gh(e,t,n,r)});function Rg(e){return Cm(Lg,e)}var zg=W(`ZodNull`,(e,t)=>{Bf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_h(e,t,n,r)});function Bg(e){return wm(zg,e)}var Vg=W(`ZodUnknown`,(e,t)=>{Vf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Hg(){return Tm(Vg)}var Ug=W(`ZodNever`,(e,t)=>{Hf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vh(e,t,n,r)});function Wg(e){return Em(Ug,e)}var Gg=W(`ZodArray`,(e,t)=>{og(),Wf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ch(e,t,n,r),e.element=t.element},{min(e,t){return this.check(Nm(e,t))},nonempty(e){return this.check(Nm(1,e))},max(e,t){return this.check(Mm(e,t))},length(e,t){return this.check(Pm(e,t))},unwrap(){return this.element}});function Kg(e,t){return qm(Gg,e,t)}var qg=W(`ZodObject`,(e,t)=>{og(),Zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Th(e,t,n,r),mu(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return o_(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Hg()})},loose(){return this.clone({...this._zod.def,catchall:Hg()})},strict(){return this.clone({...this._zod.def,catchall:Wg()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return H(this,e)},safeExtend(e){return Gl(this,e)},merge(e){return Kl(this,e)},pick(e){return Ul(this,e)},omit(e){return Wl(this,e)},partial(...e){return ql(u_,this,e[0])},exactPartial(...e){return ql(f_,this,e[0],`exactPartial`)},required(...e){return Jl(b_,this,e[0])}});function J(e,t){return new qg({type:`object`,shape:e??{},...V(t)})}function Jg(e,t){return new qg({type:`object`,shape:e,catchall:Wg(),...V(t)})}var Yg=W(`ZodUnion`,(e,t)=>{$f.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Eh(e,t,n,r),e.options=t.options});function Xg(e,t){return new Yg({type:`union`,options:e,...V(t)})}var Zg=W(`ZodDiscriminatedUnion`,(e,t)=>{Yg.init(e,t),ep.init(e,t)});function Qg(e,t,n){return new Zg({type:`union`,options:t,discriminator:e,...V(n)})}var $g=W(`ZodIntersection`,(e,t)=>{tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dh(e,t,n,r)});function e_(e,t){return new $g({type:`intersection`,left:e,right:t})}var t_=W(`ZodTuple`,(e,t)=>{og(),ip.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oh(e,t,n,r)},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw Error(`.partial() cannot be used on tuple schemas containing refinements`);return this.clone({...e,items:e.items.map(e=>new u_({type:`optional`,innerType:e}))})}});function n_(e,t,n){let r=t instanceof Zd;return new t_({type:`tuple`,items:e,rest:r?t:null,...V(r?n:t)})}var r_=W(`ZodRecord`,(e,t)=>{og(),cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mh(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function i_(e,t,n){return!t||!t._zod?new r_({type:`record`,keyType:K(),valueType:e,...V(t)}):new r_({type:`record`,keyType:e,valueType:t,...V(n)})}var a_=W(`ZodEnum`,(e,t)=>{lp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yh(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})}});function o_(e,t){return new a_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...V(t)})}var s_=W(`ZodLiteral`,(e,t)=>{up.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bh(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Y(e,t){return new s_({type:`literal`,values:Array.isArray(e)?e:[e],...V(t)})}var c_=W(`ZodTransform`,(e,t)=>{og(),dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sh(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Su(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(au(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(au(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function l_(e){return new c_({type:`transform`,transform:e})}var u_=W(`ZodOptional`,(e,t)=>{pp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function d_(e){return new u_({type:`optional`,innerType:e})}var f_=W(`ZodExactOptional`,(e,t)=>{mp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function p_(e){return new f_({type:`optional`,innerType:e})}var m_=W(`ZodNullable`,(e,t)=>{hp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function h_(e){return new m_({type:`nullable`,innerType:e})}var g_=W(`ZodDefault`,(e,t)=>{gp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function __(e,t){return new g_({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var v_=W(`ZodPrefault`,(e,t)=>{vp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function y_(e,t){return new v_({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var b_=W(`ZodNonOptional`,(e,t)=>{yp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ph(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function x_(e,t){return new b_({type:`nonoptional`,innerType:e,...V(t)})}var S_=W(`ZodCatch`,(e,t)=>{Sp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function C_(e,t){return new S_({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:gu(t)})}var w_=W(`ZodPipe`,(e,t)=>{Cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bh(e,t,n,r),e.in=t.in,e.out=t.out});function T_(e,t){return new w_({type:`pipe`,in:e,out:t})}var E_=W(`ZodReadonly`,(e,t)=>{Tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function D_(e){return new E_({type:`readonly`,innerType:e})}var O_=W(`ZodLazy`,(e,t)=>{Dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uh(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function X(e){return new O_({type:`lazy`,getter:e})}var k_=W(`ZodCustom`,(e,t)=>{Op.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xh(e,t,n,r)});function A_(e,t={}){return Jm(k_,e,t)}function j_(e,t){return Ym(e,t)}function Z(e,t={}){let n=new k_({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...V(t)});return n._zod.bag.Class=e,n._zod.check=t=>{t.value instanceof e||t.issues.push({code:`invalid_type`,expected:e.name,input:t.value,inst:n,path:[...n._zod.def.path??[]]})},n}var M_=X(()=>Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),N_=X(()=>J({verb:Y(`bulk.open`),"transfer-id":X(()=>M_),"total-size":q().int().nonnegative().optional(),"content-type":K().optional()}).catchall(Hg())),P_=X(()=>J({verb:Y(`bulk.resume`),"transfer-id":X(()=>M_),"ack-seq":q().int().nonnegative()}).catchall(Hg())),F_=X(()=>J({verb:Y(`bulk.cancel`),"transfer-id":X(()=>M_),reason:K().optional()}).catchall(Hg())),I_=X(()=>Xg([Xg([X(()=>N_),X(()=>P_),X(()=>F_)]),Xg([X(()=>U_),X(()=>W_),X(()=>G_),X(()=>K_),X(()=>q_),X(()=>J_),X(()=>Y_),X(()=>X_)]),J({}).catchall(Hg()),X(()=>fv),X(()=>mv),X(()=>_v),X(()=>vv),Xg([X(()=>Sv),X(()=>Cv),X(()=>wv),X(()=>Tv)]),Xg([X(()=>Dv),X(()=>Ov)]),X(()=>kv),Xg([X(()=>Uv),X(()=>Wv),X(()=>Gv)]),Xg([X(()=>Kv),X(()=>qv),X(()=>Jv)]),X(()=>yy),Xg([X(()=>Sy),X(()=>Cy),X(()=>wy),X(()=>by)])])),L_=X(()=>J({type:Y(`bulk-data`),"transfer-id":X(()=>M_),seq:q().int().nonnegative(),bytes:Z(Uint8Array)})),R_=X(()=>J({type:Y(`bulk-ack`),"transfer-id":X(()=>M_),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),z_=X(()=>J({type:Y(`bulk-end`),"transfer-id":X(()=>M_),digest:Z(Uint8Array)})),B_=X(()=>J({type:Y(`data-have`),peer:X(()=>ov),"head-seq":q().int().nonnegative()})),V_=X(()=>J({type:Y(`data-request`),peer:X(()=>ov),"from-seq":q().int().nonnegative()})),H_=X(()=>J({type:Y(`data-entries`),peer:X(()=>ov),"from-seq":q().int().nonnegative(),entries:Kg(Z(Uint8Array))}));X(()=>J({handle:K(),"device-id":X(()=>ov),"identity-key":X(()=>av),candidates:Kg(X(()=>uy)).optional(),mailboxes:Kg(X(()=>ov)).optional(),issued:q().int().nonnegative(),expires:q().int().nonnegative()})),X(()=>X(()=>ty));var U_=X(()=>J({verb:Y(`pty.spawn`),shell:K().optional(),argv:Kg(K()),cwd:K().optional(),env:J({}).catchall(K()),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),W_=X(()=>J({verb:Y(`pty.write`),session:X(()=>Iv),bytes:Z(Uint8Array)})),G_=X(()=>J({verb:Y(`pty.resize`),session:X(()=>Iv),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),K_=X(()=>J({verb:Y(`pty.kill`),session:X(()=>Iv),signal:q().int()})),q_=X(()=>J({verb:Y(`proc.spawn`),argv:Kg(K()),cwd:K().optional(),env:J({}).catchall(K())})),J_=X(()=>J({verb:Y(`proc.signal`),session:X(()=>Iv),signal:q().int()})),Y_=X(()=>J({verb:Y(`proc.kill`),session:X(()=>Iv)})),X_=X(()=>J({verb:Y(`exec.list`)}));X(()=>J({session:X(()=>Iv),kind:Xg([Y(`pty`),Y(`proc`)]),argv:Kg(K()).optional(),cwd:K().optional()}));var Z_=X(()=>Xg([X(()=>iv),X(()=>iy),X(()=>ay),X(()=>oy),X(()=>cy),X(()=>dy),X(()=>fy),X(()=>py),X(()=>my),X(()=>hy),X(()=>gy),X(()=>_y),X(()=>vy),X(()=>cv),X(()=>dv),X(()=>gv),X(()=>Lv),X(()=>Rv),X(()=>zv),X(()=>B_),X(()=>V_),X(()=>H_),X(()=>L_),X(()=>R_),X(()=>z_),X(()=>Pv),X(()=>Fv)])),Q_=X(()=>X(()=>Z_)),$_=X(()=>q().int().nonnegative()),ev=X(()=>Xg([X(()=>tv),X(()=>nv),X(()=>rv)])),tv=X(()=>Xg([Y(`core/management`),Y(`core/exec`),Y(`core/data`),Y(`core/federation`),Y(`core/webrtc`),Y(`core/room`),Y(`core/bulk`),Y(`core/version`)])),nv=X(()=>K().regex(RegExp(`[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+/[A-Za-z0-9_.-]+`))),rv=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+`))),iv=X(()=>J({type:Y(`handshake`),version:X(()=>$_),domains:Kg(X(()=>ev)),params:J({}).catchall(Hg()).optional()})),av=X(()=>J({alg:q().int(),"public-key":Z(Uint8Array)})),ov=X(()=>Z(Uint8Array).refine(e=>e.length===32,{message:`expected exactly 32 bytes`}));X(()=>J({"device-id":X(()=>ov),"identity-key":X(()=>av),certificate:Z(Uint8Array).optional()}));var sv=X(()=>J({verb:X(()=>Yv),params:X(()=>I_)})),cv=X(()=>J({type:Y(`manage-request`),"request-id":q().int().nonnegative(),command:X(()=>sv),scope:X(()=>$v),token:X(()=>ny).optional()})),lv=X(()=>J({result:Y(`ok`)}).catchall(Hg())),uv=X(()=>J({result:Y(`error`),code:K(),message:K().optional()})),dv=X(()=>J({type:Y(`manage-response`),"request-id":q().int().nonnegative(),outcome:Xg([X(()=>lv),X(()=>uv)])})),fv=X(()=>J({verb:Y(`capability.request`),capability:K(),"valid-until":q().int().nonnegative().optional()}).catchall(Hg())),pv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>ny)}).catchall(Hg())),mv=X(()=>J({verb:Y(`capability.grant`),"granted-token":X(()=>ny)}).catchall(Hg()));X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av),"revoked-at":q().int().nonnegative(),authorization:Z(Uint8Array).optional()}));var hv=X(()=>X(()=>ty)),gv=X(()=>J({type:Y(`revocation-announce`),entries:Kg(X(()=>hv))})),_v=X(()=>J({verb:Y(`path.trace`)}));X(()=>J({result:Y(`ok`),relayed:Rg(),"hub-address":K().optional()}).catchall(Hg())),X(()=>J({direct:Kg(X(()=>ov)),relayed:Kg(J({device:X(()=>ov),via:X(()=>ov).optional()}))}));var vv=X(()=>J({verb:Y(`topology.get`)})),yv=X(()=>Xg([X(()=>bv),X(()=>xv)]));X(()=>K().regex(RegExp(`[0-9a-f]{64}`)));var bv=X(()=>K().regex(RegExp(`[0-9a-f]{64}/[A-Za-z0-9_-]+`))),xv=X(()=>K().regex(RegExp(`[0-9a-f]{64}\\+[0-9a-f]{64}`))),Sv=X(()=>J({verb:Y(`room.send`),"message-id":Z(Uint8Array),"sent-at":q().int().nonnegative(),text:K(),"content-type":K().optional(),refs:Kg(X(()=>Ev)).optional()}).catchall(Hg())),Cv=X(()=>J({verb:Y(`room.read`),messages:Kg(Z(Uint8Array)),at:q().int().nonnegative()}).catchall(Hg())),wv=X(()=>J({verb:Y(`room.leave`)}).catchall(Hg())),Tv=X(()=>J({verb:Y(`room.members`)}).catchall(Hg())),Ev=X(()=>J({id:Z(Uint8Array),relation:K()})),Dv=X(()=>J({verb:Y(`room.join`)}).catchall(Hg())),Ov=X(()=>J({verb:Y(`room.invite`),invitee:X(()=>ov),token:X(()=>ny)}).catchall(Hg())),kv=X(()=>J({verb:Y(`room.rekey`),"key-epoch":q().int().nonnegative(),"wrapped-key":Xg([Z(Uint8Array),Kg(Z(Uint8Array))])}).catchall(Hg())),Av=X(()=>J({device:X(()=>ov)}).catchall(Hg())),jv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>ny),members:Kg(X(()=>Av))}).catchall(Hg()));X(()=>J({result:Y(`ok`),members:Kg(X(()=>Av))}).catchall(Hg()));var Mv=X(()=>X(()=>ty)),Nv=X(()=>J({room:X(()=>yv),poster:X(()=>ov),"poster-key":X(()=>av),token:X(()=>ny),"notice-id":Z(Uint8Array),"posted-at":q().int().nonnegative(),"content-type":K(),content:Z(Uint8Array),refs:Kg(X(()=>Ev)).optional(),"valid-until":q().int().nonnegative().optional(),"key-epoch":q().int().nonnegative().optional()}).catchall(Hg())),Pv=X(()=>J({type:Y(`secure-hello`),"ephemeral-key":Z(Uint8Array).refine(e=>e.length===65,{message:`expected exactly 65 bytes`}),nonce:Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`}),"identity-key":X(()=>av),"to-device":X(()=>ov),signature:Z(Uint8Array)})),Fv=X(()=>J({type:Y(`secure-data`),counter:q().int().nonnegative(),ciphertext:Z(Uint8Array)})),Iv=X(()=>q().int().nonnegative()),Lv=X(()=>J({type:Y(`stream-data`),session:X(()=>Iv),seq:q().int().nonnegative(),channel:K(),bytes:Z(Uint8Array)})),Rv=X(()=>J({type:Y(`stream-ack`),session:X(()=>Iv),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),zv=X(()=>J({type:Y(`stream-end`),session:X(()=>Iv),"exit-code":q().int().optional(),"exit-signal":q().int().optional()})),Bv=X(()=>q().int().nonnegative()),Vv=X(()=>J({kind:Xg([Y(`capability-token`),Y(`revocation-entry`),Y(`handle-record`),Y(`room-notice`),K()]),protected:Z(Uint8Array),payload:Z(Uint8Array)})),Hv=X(()=>J({participant:X(()=>ov),hiding:Z(Uint8Array),binding:Z(Uint8Array)})),Uv=X(()=>J({verb:Y(`threshold.commit`),"session-id":X(()=>Bv),group:X(()=>ov),subject:X(()=>Vv),deadline:q().int().nonnegative()})),Wv=X(()=>J({verb:Y(`threshold.sign`),"session-id":X(()=>Bv),commitments:Kg(X(()=>Hv))}));X(()=>J({"session-id":X(()=>Bv),group:X(()=>ov),share:Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av)})),X(()=>X(()=>ty));var Gv=X(()=>J({verb:Y(`threshold.abort`),"session-id":X(()=>Bv),reason:K().optional()})),Kv=X(()=>J({verb:Y(`threshold.keygen-round1`),"session-id":X(()=>Bv),threshold:q().int().nonnegative(),participants:Kg(X(()=>ov)),commitment:Kg(Z(Uint8Array)),"proof-of-knowledge":Z(Uint8Array).optional(),"existing-group-key":Z(Uint8Array).optional()})),qv=X(()=>J({verb:Y(`threshold.keygen-round2`),"session-id":X(()=>Bv),share:Z(Uint8Array)})),Jv=X(()=>J({verb:Y(`threshold.keygen-confirm`),"session-id":X(()=>Bv),"transcript-digest":Z(Uint8Array),"group-key":Z(Uint8Array)})),Yv=X(()=>Xg([X(()=>Xv),X(()=>Zv),X(()=>Qv)])),Xv=X(()=>K().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),Zv=X(()=>K().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),Qv=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),$v=X(()=>J({kind:K(),path:K().optional()}));X(()=>Y(1)),X(()=>Y(4)),X(()=>Xg([q().int(),K()]));var ey=X(()=>J({1:q().int().optional(),4:Z(Uint8Array).optional()}).catchall(Hg())),ty=X(()=>n_([Z(Uint8Array),X(()=>ey),Xg([Z(Uint8Array),Bg()]),Z(Uint8Array)])),ny=X(()=>X(()=>ty)),ry=X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av),bearer:X(()=>ov),capability:X(()=>Yv),scope:X(()=>$v),expires:q().int().nonnegative(),"not-before":q().int().nonnegative().optional(),parent:Z(Uint8Array).optional(),"delegations-remaining":q().int().nonnegative().optional(),"valid-until":q().int().nonnegative().optional(),conditions:Z(Uint8Array).optional()}).catchall(Hg())),iy=X(()=>J({type:Y(`ping`)})),ay=X(()=>J({type:Y(`pong`)})),oy=X(()=>J({type:Y(`close`),reason:K().optional()})),sy=X(()=>J({device:X(()=>ov),addresses:Kg(K()),"snapshot-seconds":q().int(),"identity-key":X(()=>av),signature:Z(Uint8Array)}).catchall(Hg())),cy=X(()=>J({type:Y(`gossip`),peers:Kg(X(()=>sy))})),ly=X(()=>Xg([Y(`host`),Y(`server-reflexive`),Y(`relayed`)])),uy=X(()=>J({address:K(),kind:X(()=>ly),priority:q().int().nonnegative()})),dy=X(()=>J({type:Y(`candidates`),candidates:Kg(X(()=>uy))})),fy=X(()=>J({type:Y(`sync-punch`),nonce:q().int().nonnegative(),"deadline-unix-ms":q().int().nonnegative()})),py=X(()=>J({type:Y(`observed-address`),address:K()})),my=X(()=>J({type:Y(`relay-offer`),addresses:Kg(K())})),hy=X(()=>J({type:Y(`relay-connect`),"target-device":X(()=>ov)})),gy=X(()=>J({type:Y(`relay-data`),payload:Z(Uint8Array),"to-device":X(()=>ov).optional(),"from-device":X(()=>ov).optional()})),_y=X(()=>J({type:Y(`relay-inbound`),"source-device":X(()=>ov)})),vy=X(()=>J({type:Y(`coordinator`),term:q().int().nonnegative(),coordinator:X(()=>ov),"capacity-hint":q().int().nonnegative().optional()})),yy=X(()=>J({verb:Y(`version.get`)})),by=X(()=>J({verb:Y(`webrtc.sfu-track-map`),"negotiation-id":q().int().nonnegative(),tracks:Kg(X(()=>xy))})),xy=X(()=>J({mid:K(),member:X(()=>ov),kind:Xg([Y(`audio`),Y(`video`)])})),Sy=X(()=>J({verb:Y(`webrtc.offer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Cy=X(()=>J({verb:Y(`webrtc.answer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),wy=X(()=>J({verb:Y(`webrtc.ice-candidate`),"negotiation-id":q().int().nonnegative(),candidate:X(()=>Ty).optional()})),Ty=X(()=>J({candidate:K(),"sdp-mid":K().optional(),"sdp-m-line-index":q().int().nonnegative().optional(),"username-fragment":K().optional()})),Ey=16,Dy=2;function Oy(e){let t=``;for(let n of e)t+=n.toString(Ey).padStart(Dy,`0`);return t}function ky(e){return Oy(e)}var Ay=String(2**53-1).length,jy=`message`;function My(e,t){return`${jy}/${e}/${String(t.sentAt).padStart(Ay,`0`)}-${Oy(t.messageId)}`}function Ny(e){let t=e.slice(`${jy}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function Py(e){return e===`sent`||e===`received`}function Fy(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:Py(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Iy(e){return{async append(t,n){await e.set(My(t,n),new Uint8Array(hc(n,Qs)))},async roomPaths(){let t=await e.keys(`${jy}/`);return[...new Set(t.map(Ny))]},async list(t){let n=(await e.keys(`${jy}/${t}/`)).sort(),r=[];for(let t of n){let n=await e.get(t);if(n===void 0)continue;let i=rl(n,il);if(!Fy(i))throw Error(`stored message at ${t} is malformed`);r.push(i)}return r}}}function Ly(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Ry(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function zy(e,t){return Ry(e)||Ry(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function By(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&zy(t.path,e.path):!1}var Vy=`signature`,Hy=`identity-key`,Uy=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function Wy(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=hc(t,Qs),r=new Uint8Array(Uy.length+n.length);return r.set(Uy,0),r.set(n,Uy.length),r}async function Gy(e,t){let n=await e.sign(Wy(t));return{...t,[Vy]:n}}async function Ky(e,t){let n=t[Hy];try{return Ly(await e.deriveDeviceId(n[`public-key`]),t.device)?await e.verify(n,Wy(t),t[Vy]):!1}catch{return!1}}var qy={name:`wire-mesh-core`,version:`3.1.0`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`2.18.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/advert-extension-policy":{import:`./dist/domain/advert-extension-policy.mjs`,require:`./dist/domain/advert-extension-policy.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/hub-mailbox":{import:`./dist/domain/hub-mailbox.mjs`,require:`./dist/domain/hub-mailbox.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/relay-hub":{import:`./dist/domain/relay-hub.mjs`,require:`./dist/domain/relay-hub.cjs`},"./domain/relay-use-gate":{import:`./dist/domain/relay-use-gate.mjs`,require:`./dist/domain/relay-use-gate.cjs`},"./domain/revocation-view":{import:`./dist/domain/revocation-view.mjs`,require:`./dist/domain/revocation-view.cjs`},"./domain/room":{import:`./dist/domain/room.mjs`,require:`./dist/domain/room.cjs`},"./domain/room-path":{import:`./dist/domain/room-path.mjs`,require:`./dist/domain/room-path.cjs`},"./domain/room-rekey":{import:`./dist/domain/room-rekey.mjs`,require:`./dist/domain/room-rekey.cjs`},"./domain/room-token-verification":{import:`./dist/domain/room-token-verification.mjs`,require:`./dist/domain/room-token-verification.cjs`},"./domain/shard-manifest":{import:`./dist/domain/shard-manifest.mjs`,require:`./dist/domain/shard-manifest.cjs`},"./domain/threshold-subject":{import:`./dist/domain/threshold-subject.mjs`,require:`./dist/domain/threshold-subject.cjs`},"./domain/tokens":{import:`./dist/domain/tokens.mjs`,require:`./dist/domain/tokens.cjs`},"./domain/topology":{import:`./dist/domain/topology.mjs`,require:`./dist/domain/topology.cjs`},"./domain/topology-snapshot":{import:`./dist/domain/topology-snapshot.mjs`,require:`./dist/domain/topology-snapshot.cjs`},"./domain/webrtc-signaling":{import:`./dist/domain/webrtc-signaling.mjs`,require:`./dist/domain/webrtc-signaling.cjs`},"./generated/protocol":{import:`./dist/generated/protocol.mjs`,require:`./dist/generated/protocol.cjs`},"./generated/runtime":{import:`./dist/generated/runtime.mjs`,require:`./dist/generated/runtime.cjs`},"./ports/clock":{import:`./dist/ports/clock.mjs`,require:`./dist/ports/clock.cjs`},"./ports/identity":{import:`./dist/ports/identity.mjs`,require:`./dist/ports/identity.cjs`},"./ports/storage":{import:`./dist/ports/storage.mjs`,require:`./dist/ports/storage.cjs`},"./ports/transport":{import:`./dist/ports/transport.mjs`,require:`./dist/ports/transport.cjs`},"./package.json":`./package.json`},files:[`dist`,`wasm-dist`],packageManager:`pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c`,publishConfig:{provenance:!0,access:`public`},repository:{type:`git`,url:`https://github.com/ExaDev/wire-mesh.git`,directory:`ts/packages/core`},scripts:{_build:`tsdown`,"_build-wasm":`./scripts/build-threshold-wasm.sh`,"_conformance-check":`vitest run test/conformance.unit.test.ts`,_generate:`node generate.ts`,_lint:`eslint . --fix --cache --max-warnings 0`,_mutation:`stryker run stryker.config.ts`,_test:`vitest run`,_typecheck:`tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit`,build:`turbo run _build`,"build-wasm":`turbo run _build-wasm`,"conformance-check":`turbo run _conformance-check`,generate:`turbo run _generate`,lint:`turbo run _lint`,mutation:`turbo run _mutation`,prepack:`node scripts/assert-wasm-dist.ts`,test:`turbo run _test`,typecheck:`turbo run _typecheck`},type:`module`}.version,Jy=`wire-mesh/version`,Yy=`version.get`;function Xy(e){return`verb`in e&&e.verb===Yy}function Zy(){return{result:`ok`,version:qy}}var Qy=new Set([`device`,`addresses`,`snapshot-seconds`,Hy,Vy]),$y=`topology/peers`,eb=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function tb(e){for(let t of Object.keys(e)){if(Qy.has(t))throw Error(`sendGossipUpdate extension key "${t}" collides with a mandatory peer-advert field`);if(t===`topology/peers`)throw Error(`sendGossipUpdate extension key "${t}" collides with a session-managed gossip field`);if(t===`wire-mesh/version`)throw Error(`sendGossipUpdate extension key "${t}" is reserved for wire-mesh-core's own self-reported version`);if(!eb.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}var nb=[`core/federation`];function rb(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!nb.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function ib(){let e=[],t=[];return{push(n){let r=e.shift();r===void 0?t.push(n):r(n)},stream:{[Symbol.asyncIterator](){return{next:async()=>new Promise(n=>{let r=t.shift();r===void 0?e.push(e=>{n({value:e,done:!1})}):n({value:r,done:!1})})}}}}}function ab(){let e=[];function t(t){let n=e.findIndex(e=>e.sentAt===t);return n!==-1&&(e.splice(n,1),!0)}return{resolveOldest(t){let n=e.shift();n!==void 0&&n.resolve(t-n.sentAt)},rejectAll(t){for(let n of e.splice(0))n.reject(Error(t))},async sendAndAwait(n,r,i){let a=new Promise((t,r)=>{e.push({sentAt:n,resolve:t,reject:r})});return await r(),i===void 0?a:Promise.race([a,new Promise((e,r)=>{setTimeout(()=>{t(n)&&r(Error(`timed out waiting for pong`))},i)})])}}}function ob(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function sb(e){let t=ob(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function cb(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return sb({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function lb(e){return new Uint8Array(hc(e,Qs))}function ub(e,t){return{type:`relay-data`,payload:lb(e),...t===void 0?{}:{"to-device":t}}}var db=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function fb(e){let t=rl(new Uint8Array(e),il),n=Q_.safeParse(t);if(!n.success)throw new db(n.error.message);return n.data}function pb(e){let t;try{t=rl(e,il)}catch{return null}let n=Q_.safeParse(t);return n.success?n.data:null}function mb(){let e=new Map;return{has:t=>e.has(ky(t)),add:t=>{e.set(ky(t),t)},remove:t=>{e.delete(ky(t))},list:()=>[...e.values()]}}var hb=16,gb=256,_b=256,vb=12,yb=4,bb=8,xb=new TextEncoder,Sb=xb.encode(`wire-mesh/secure-hello/v1\0`),Cb=xb.encode(`wire-mesh/secure-channel/v1\0`),wb=xb.encode(`wire-mesh/secure-data/v1\0`),Tb=xb.encode(`lo-to-hi`),Eb=xb.encode(`hi-to-lo`),Db={name:`ECDH`,namedCurve:`P-256`};function Ob(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function kb(e,t){for(let n=0;n<Math.min(e.length,t.length);n+=1){let r=(e[n]??0)-(t[n]??0);if(r!==0)return r}return e.length-t.length}function Ab(e){let t=new Uint8Array(bb);return new DataView(t.buffer).setBigUint64(0,BigInt(e),!1),t}function jb(e,t,n,r){return Ob(Sb,e,t,n,r)}async function Mb(e,t){let n=await crypto.subtle.generateKey(Db,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.exportKey(`raw`,n.publicKey)),i=crypto.getRandomValues(new Uint8Array(hb)),a=await e.sign(jb(r,i,e.deviceId,t));return{peer:t,privateKey:n.privateKey,hello:{type:`secure-hello`,"ephemeral-key":r,nonce:i,"identity-key":e.identityKey,"to-device":t,signature:a}}}async function Nb(e,t){let n=t[`identity-key`];try{let r=await e.deriveDeviceId(n[`public-key`]);return Ly(t[`to-device`],e.deviceId)?await e.verify(n,jb(t[`ephemeral-key`],t.nonce,r,e.deviceId),t.signature)?{ok:!0,peer:{deviceId:r,identityKey:n}}:{ok:!1,reason:`bad_signature`}:{ok:!1,reason:`wrong_recipient`}}catch{return{ok:!1,reason:`identity_mismatch`}}}function Pb(e){let t=new Uint8Array(vb);return t.set(Ab(e),yb),t}function Fb(e,t,n){return Ob(wb,e,t,Ab(n))}async function Ib(e,t,n,r,i){let a=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(t),info:Ob(Cb,n,r,i)},a,{name:`AES-GCM`,length:gb},!1,[`encrypt`,`decrypt`])}async function Lb(e,t,n,r){let i;try{let e=await crypto.subtle.importKey(`raw`,Uint8Array.from(n[`ephemeral-key`]),Db,!1,[]);i=new Uint8Array(await crypto.subtle.deriveBits({name:`ECDH`,public:e},t.privateKey,_b))}catch{return}let a=kb(e.deviceId,r.deviceId)<0,o=a?e.deviceId:r.deviceId,s=a?r.deviceId:e.deviceId,c=Ob(a?t.hello.nonce:n.nonce,a?n.nonce:t.hello.nonce),l=await Ib(i,c,o,s,Tb),u=await Ib(i,c,o,s,Eb),d=a?l:u,f=a?u:l,p=0,m=-1,h=Promise.resolve(),g=Promise.resolve();async function _(t,n){return{type:`secure-data`,counter:n,ciphertext:new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:Pb(n),additionalData:Fb(e.deviceId,r.deviceId,n)},d,lb(t)))}}async function v(t){if(t.counter<=m)return;let n;try{n=new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:Pb(t.counter),additionalData:Fb(r.deviceId,e.deviceId,t.counter)},f,Uint8Array.from(t.ciphertext)))}catch{return}return m=t.counter,pb(n)??void 0}return{peer:r,seal:async e=>{let t=p;p+=1;let n=h.then(async()=>_(e,t));return h=n.catch(()=>void 0),n},open:async e=>{let t=g.then(async()=>v(e));return g=t.catch(()=>void 0),t}}}function Rb(e,t){let n=new Map;function r(r){let i=ky(r),a=Promise.withResolvers(),o=Mb(e,r),s={status:`awaiting`,pending:o,settle:a};return n.set(i,s),o.then(async({hello:e})=>t(r,e)).catch(e=>{a.reject(e instanceof Error?e:Error(String(e))),n.get(i)===s&&n.delete(i)}),s}return{ensure:async e=>{let t=n.get(ky(e));return t?.status===`established`?t.channel:(t??r(e)).settle.promise},applyHello:async t=>{let i=await Nb(e,t);if(!i.ok)return;let a=ky(i.peer.deviceId),o=n.get(a),s=o?.status===`awaiting`?o:r(i.peer.deviceId),c=await Lb(e,await s.pending,t,i.peer);if(c===void 0){s.settle.reject(Error(`the peer sent an unusable ephemeral key`)),n.get(a)===s&&n.delete(a);return}n.set(a,{status:`established`,channel:c}),s.settle.resolve(c)},open:async(e,t)=>{if(t===void 0)return;let r=n.get(ky(t));if(r?.status!==`established`)return;let i=await r.channel.open(e);return i===void 0?void 0:{frame:i,from:r.channel.peer.deviceId}},reset:e=>{for(let t of n.values())t.status===`awaiting`&&t.settle.reject(Error(e));n.clear()},forget:e=>{let t=ky(e),r=n.get(t);r?.status===`awaiting`&&r.settle.reject(Error(`the relay pairing was lost`)),n.delete(t)}}}var zb=1e3,Bb=3e3;function Vb(e){return{type:`handshake`,version:1,domains:[...e]}}function Hb(e,t,n,r,i,a=[],o,s){let c=null,l={status:`idle`},u={status:`pending`},d=new Map,f=[],p=!1,m=ib(),h=null,g=null,_=0,v=null,y=0,b=mb(),x=cb({getAuthenticatedPeer:()=>c?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>b.list()}),S=new Map,C=Rb(e,async(e,t)=>{if(c===null)throw Error(`not connected`);f.push({direction:`sent`,frame:t}),await c.send(ub(t,e)),E()}),w=ib(),T=ib(),ee=ab();function te(){return{state:l,directory:[...d.values()],frameLog:[...f]}}function E(){m.push(te())}function D(e){for(let t of S.values())t.reject(Error(e));S.clear()}function ne(e,t,n){let r=y;y+=1;let i=n??v;return{type:`manage-request`,"request-id":r,command:e,scope:t,...i===null?{}:{token:i}}}function O(){if(c===null||l.status!==`connected`)throw Error(`not connected`);return c}async function re(e,t,n){if(c===null)throw Error(`not connected`);if(!t){await c.send(e);return}if(n===void 0)throw Error(`a relayed frame needs the device it is for`);let r=await(await C.ensure(n)).seal(e);await c.send(ub(r,n))}function ie(e,t){let n=e[`request-id`],r=S.get(n);if(r===void 0)return;let i=r.expectedFrom;(i===void 0?t===void 0:t!==void 0&&ky(t)===ky(i))&&(S.delete(n),r.resolve(e.outcome))}function ae(e,t){let n=e[`request-id`],r=t?.fromDevice,i=t?.toDevice,a={requestId:n,command:e.command,scope:e.scope,...e.token===void 0?{}:{token:e.token},...r===void 0?{}:{fromDevice:r},...i===void 0?{}:{toDevice:i},respond:async e=>{let i={type:`manage-response`,"request-id":n,outcome:e};f.push({direction:`sent`,frame:i}),await re(i,t!==void 0,r),E()}};if(Xy(e.command.params)){a.respond(Zy());return}w.push(a)}async function oe(n){if(n.type===`relay-data`){let e=pb(n.payload);if(e?.type===`secure-hello`){f.push({direction:`received`,frame:e}),await C.applyHello(e);return}if(e?.type===`secure-data`){let t=await C.open(e,n[`from-device`]);t?.frame.type===`manage-response`?(f.push({direction:`received`,frame:t.frame}),ie(t.frame,t.from)):t?.frame.type===`manage-request`&&(f.push({direction:`received`,frame:t.frame}),ae(t.frame,{fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}}));return}f.push({direction:`received`,frame:n});return}if(f.push({direction:`received`,frame:n}),n.type===`handshake`)se(n);else if(n.type===`gossip`)for(let t of n.peers)await Ky(e,t)&&(d.set(ky(t.device),{device:t.device,advert:t}),x.recordAdvert(t.device),i?.(t));else if(n.type===`relay-inbound`)b.add(n[`source-device`]);else if(n.type===`manage-response`)ie(n);else if(n.type===`manage-request`)ae(n);else if(n.type===`pong`)ee.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)T.push(e)}async function k(e){if(c===null)throw Error(`not connected`);if(b.has(e))return;let t={type:`relay-connect`,"target-device":e};f.push({direction:`sent`,frame:t}),await c.send(t),b.add(e),E()}let A=Vb([]);function se(e){if(u.status!==`pending`)return;h!==null&&(clearTimeout(h),h=null);let t=rb(A,e);u=t.ok?{status:`negotiated`,version:t.version,sharedDomains:t.sharedDomains}:{status:`rejected`,reason:`no shared domains or version`},l.status===`connected`&&(l={...l,handshake:u})}function ce(e,t,r){if(!p){if(D(`disconnected before a response arrived`),ee.rejectAll(`disconnected before a pong arrived`),n!==null&&_<n.maxAttempts){_+=1;let i=_;l={status:`reconnecting`,address:t,attempt:i,reason:e},E(),g=setTimeout(()=>{g=null,j(t,r).catch(e=>{ce(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}l={status:`closed`,address:t,reason:e},E()}}async function le(e,t,n){for await(let t of e.receive()){if(p)return;await oe(t),await o?.(e,t),E()}s?.(e),l.status===`connected`&&ce(`node closed the connection`,t,n)}async function ue(n){return n!==void 0&&tb(n),{type:`gossip`,peers:[await Gy(e,{...n,[Jy]:qy,[$y]:x.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/zb),"identity-key":e.identityKey})]}}async function de(e,t,n){c=e,C.reset(`the connection changed before the channel was ready`),A=Vb(n),u={status:`pending`},l={status:`connected`,address:t,handshake:u},f.push({direction:`sent`,frame:A}),await c.send(A),E();let r=await ue();f.push({direction:`sent`,frame:r}),await c.send(r),E(),h=setTimeout(()=>{h=null,u.status===`pending`&&(u={status:`unanswered`},l.status===`connected`&&(l={...l,handshake:u}),E())},Bb),le(c,t,n).catch(e=>{l.status===`connected`&&ce(e instanceof Error?e.message:String(e),t,n)})}async function j(e,t){if(r===null)throw Error(`this session is already connected; there is nothing to dial`);h!==null&&(clearTimeout(h),h=null),l={status:`connecting`,address:e},E();let n=await r(e);if(p){await n.close();return}await de(n,e,t)}return{wireUpConnection:de,session:{events:m.stream,incomingManageRequests:w.stream,revocationAnnouncements:T.stream,async connect(e,t){if(c!==null)throw Error(`a session connects once; create a new one to reconnect`);_=0,await j(e,t)},async sendPing(){let e=O(),t={type:`ping`};f.push({direction:`sent`,frame:t}),await e.send(t),E()},async sendPingMeasureRtt(e){let n=O();return ee.sendAndAwait(t.now(),async()=>{let e={type:`ping`};f.push({direction:`sent`,frame:e}),await n.send(e),E()},e)},setToken(e){v=e},async sendManageRequest(e,t,n,r,i){O(),n!==void 0&&await k(n);let a=ne(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{S.set(o,{resolve:e,reject:t,expectedFrom:n})});f.push({direction:`sent`,frame:a});let c=(async()=>{try{await re(a,n!==void 0,n)}catch(e){throw S.delete(o),s.catch(()=>void 0),e}return E(),s})();return i===void 0?c:Promise.race([c,new Promise(e=>{setTimeout(()=>{S.delete(o)&&(n!==void 0&&(b.remove(n),C.forget(n)),e({result:`error`,code:`timeout`}))},i)})])},async sendRevocationAnnounce(e){O();let t={type:`revocation-announce`,entries:[...e]};f.push({direction:`sent`,frame:t}),await re(t,!1),E()},async sendGossipUpdate(e){O();let t=await ue(e);f.push({direction:`sent`,frame:t}),await re(t,!1),E()},getTopologyPeers(){return x.compute()},async sendDataFrame(e){O(),f.push({direction:`sent`,frame:e}),await re(e,!1),E()},async close(){p=!0,h!==null&&(clearTimeout(h),h=null),g!==null&&(clearTimeout(g),g=null),D(`connection closed before a response arrived`),C.reset(`the session closed before the channel was ready`),ee.rejectAll(`connection closed before a pong arrived`),c!==null&&await c.close(),(l.status===`connected`||l.status===`connecting`||l.status===`reconnecting`)&&(l={status:`closed`,address:l.address,reason:`closed by you`}),E()}}}}function Ub(e,t,n={now:()=>Date.now()},r=null,i=[],a){let{session:o}=Hb(t,n,r,async t=>e.connect(t),a,i);return o}async function Wb(e,t,n,r={}){let i=r.clock??{now:()=>Date.now()},a=null,o=new Promise(e=>{a=e}),s=!1,{session:c,wireUpConnection:l}=Hb(t,i,null,null,e=>{s||(s=!0,a?.(e.device)),r.onPeerAdvert?.(e)},r.addresses,r.onFrame,r.onSessionEnd);return await l(e,r.label??`accepted`,n),{...c,peerDeviceId:o}}function Gb(e){return e instanceof Error?e:Error(String(e))}function Kb(e){let t=ky(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[Gb(n)]);return}if(!n){e.onExpansionDeclined?.(t);return}let r=[];for(let n of t.addresses)try{let r=await e.dial(n);e.onExpanded(t,n,r);return}catch(e){r.push(Gb(e))}e.onExpansionFailed?.(t,r)}return{considerAdvert(e){let i=ky(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var qb=/^[0-9a-f]{64}$/,Jb=/^[A-Za-z0-9_-]+$/;function Yb(e,t){if(!qb.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function Xb(e,t){if(Yb(e,`a`),Yb(t,`b`),e===t)throw Error(`a DM room path cannot name the same device twice (${e})`);return e<t?`${e}+${t}`:`${t}+${e}`}function Zb(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(qb.test(n)&&Jb.test(r))return{kind:`owner-named`,owner:n,localName:r}}let n=e.indexOf(`+`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1);if(qb.test(t)&&qb.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var Qb=1e3,$b=1002,ex=`the web console is a client only: it cannot listen`;function tx(e){let t=[],n=[],r=!1,i=null;function a(){r=!0;for(let e of n.splice(0))e.resolve({value:void 0,done:!0})}function o(e){i=e,r=!0;for(let t of n.splice(0))t.reject(e)}e.addEventListener(`message`,r=>{if(!(r.data instanceof ArrayBuffer)){o(Error(`expected a binary WebSocket message`)),e.close($b,`protocol error`);return}let i;try{i=fb(r.data)}catch(t){if(t instanceof db)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close($b,`protocol error`);return}let a=n.shift();a?a.resolve({value:i,done:!1}):t.push(i)}),e.addEventListener(`close`,a),e.addEventListener(`error`,a);let s={[Symbol.asyncIterator](){return{next:async()=>c()}}};async function c(){let e=t.shift();return e===void 0?i===null?r?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{n.push({resolve:e,reject:t})}):Promise.reject(i):Promise.resolve({value:e,done:!1})}return{async send(t){return r?Promise.reject(Error(`connection is closed`)):(e.send(lb(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(Qb),Promise.resolve()}}}function nx(){return{async connect(e){let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return Promise.reject(Error(`not a WebSocket address: ${e}`));let n=new WebSocket(t);return n.binaryType=`arraybuffer`,new Promise((e,r)=>{n.addEventListener(`open`,()=>{e()}),n.addEventListener(`error`,()=>{r(Error(`connect to ${t.toString()} failed`))})}).then(()=>tx(n))},async listen(){return Promise.reject(Error(ex))}}}var rx=[{urls:`stun:stun.cloudflare.com:3478`}],ix=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),ax=i_(K(),q()),ox=o_([`ms`,`s`,`min`,`h`,`d`]);Qg(`kind`,[J({kind:Y(`number`),value:q(),unit:ax.optional()}),J({kind:Y(`text`),value:K()}),J({kind:Y(`boolean`),value:Rg()}),J({kind:Y(`instant`),value:K()}),J({kind:Y(`duration`),value:q(),unit:ox}),J({kind:Y(`complex`),re:q(),im:q(),unit:ax.optional()})]);function sx(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function cx(e,t){let n=sx(e),r=sx(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function lx(e,t){let n=sx(e),r=sx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return sx(i)}function ux(e,t){let n=sx(e),r=sx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return sx(i)}J({code:o_([`not-found`,`wrong-type`,`domain-error`]),message:K()});function Q(e){return{status:`definite`,value:e}}function $(e,t){return{status:`indeterminate`,reason:{code:e,message:t}}}function dx(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var fx=X(()=>Xg([K(),q(),Rg(),Bg(),Kg(fx),i_(K(),fx)])),px=o_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),mx=o_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),hx=o_([`in`,`notIn`]),gx=o_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),_x=o_([`first`,`unique`]),vx=J({kind:Y(`not`),get operand(){return Ax}}),yx=J({kind:Y(`and`),get left(){return Ax},get right(){return Ax}}),bx=J({kind:Y(`or`),get left(){return Ax},get right(){return Ax}}),xx=J({kind:Y(`allOf`),get operands(){return Kg(Ax)}}),Sx=J({kind:Y(`anyOf`),get operands(){return Kg(Ax)}}),Cx=J({kind:Y(`compare`),op:px,get left(){return Gx},get right(){return Gx}}),wx=J({kind:Y(`textCompare`),op:mx,get left(){return Gx},get right(){return Gx}}),Tx=J({kind:Y(`memberOf`),op:hx,get operand(){return Gx},get candidates(){return Kg(Gx)}}),Ex=J({kind:Y(`exists`),get operand(){return Gx}}),Dx=J({kind:Y(`some`),collection:fx,get item(){return Ax},get filter(){return Ax.optional()}}),Ox=J({kind:Y(`every`),collection:fx,get item(){return Ax},get filter(){return Ax.optional()}}),kx=J({kind:Y(`treeReference`),key:fx}),Ax=Qg(`kind`,[vx,yx,bx,xx,Sx,Cx,wx,Tx,Ex,Dx,Ox,kx]),jx=J({kind:Y(`numberLiteral`),value:q(),unit:ax.optional()}),Mx=J({kind:Y(`textLiteral`),value:K()}),Nx=J({kind:Y(`booleanLiteral`),value:Rg()}),Px=J({kind:Y(`instantLiteral`),value:K()}),Fx=J({kind:Y(`durationLiteral`),value:q(),unit:ox}),Ix=Xg([Jg({kind:Y(`complexLiteral`),re:q(),im:q(),unit:ax.optional()}),Jg({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:ax.optional()})]),Lx=J({kind:Y(`reference`),key:fx,unit:ax.optional()}),Rx=J({kind:Y(`arithmetic`),op:gx,get left(){return Gx},get right(){return Gx}}),zx=J({kind:Y(`negate`),get operand(){return Gx}}),Bx=J({kind:Y(`call`),fn:K(),get args(){return Kg(Gx)}}),Vx=J({kind:Y(`lookup`),table:fx,get keys(){return Kg(Gx)}}),Hx=J({get when(){return Ax},get then(){return Gx}}),Ux=J({kind:Y(`conditional`),hitPolicy:_x.optional(),get cases(){return Kg(Hx)},get fallback(){return Gx}}),Wx=Qg(`mode`,[J({mode:Y(`max`),get item(){return Gx}}),J({mode:Y(`min`),get item(){return Gx}}),J({mode:Y(`reduce`),get initial(){return Gx},get combine(){return Gx}})]),Gx=Xg([Qg(`kind`,[jx,Mx,Nx,Px,Fx,Lx,Rx,zx,Bx,Vx,Ux,J({kind:Y(`fold`),collection:fx,get filter(){return Ax.optional()},combiner:Wx}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:fx}),kx]),Ix]),Kx={},qx=1e4;function Jx(e,t){let n=0;return{checkNode(r){if(n+=1,n>e)return $(`domain-error`,`evaluation exceeded the maximum of ${e.toString()} nodes visited in a single call (resource exhausted)`);if(r>=t)return $(`domain-error`,`evaluation nesting depth exceeds the maximum of ${t.toString()} (resource exhausted)`)}}}async function Yx(e,t,n,r,i,a,o,s,c,l){let u=await i.resolveCollection(t,r);return Promise.all(u.map(async t=>{if(n===void 0)return{item:t,filterOutcome:`include`};let r=await e(n,t,i,void 0,a,o,s,c,l+1);return r.status===`indeterminate`?{item:t,filterOutcome:r}:{item:t,filterOutcome:r.value?`include`:`exclude`}}))}function Xx(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function Zx(e,t){return t>=e.from&&t<=e.to}function Qx(e,t){let n=e.ranges.some(e=>Zx(e,t));return e.negated?!n:n}var $x=class extends Error{pattern;index;constructor(e,t,n){super(`invalid pattern at index ${String(t)}: ${n}\n ${e}\n ${` `.repeat(t)}^`),this.name=`RegexParseError`,this.pattern=e,this.index=t}};function eS(e){return e.charCodeAt(0)}function tS(e,t){return{from:eS(e),to:eS(t)}}function nS(e){let t=eS(e);return{from:t,to:t}}var rS=[tS(`0`,`9`)],iS=[tS(`A`,`Z`),tS(`a`,`z`),tS(`0`,`9`),nS(`_`)],aS=[nS(` `),nS(` `),nS(`
71
71
  `),nS(`\r`),nS(`\f`),nS(`\v`)];function oS(e){switch(e){case`d`:return{kind:`charClass`,negated:!1,ranges:rS};case`D`:return{kind:`charClass`,negated:!0,ranges:rS};case`w`:return{kind:`charClass`,negated:!1,ranges:iS};case`W`:return{kind:`charClass`,negated:!0,ranges:iS};case`s`:return{kind:`charClass`,negated:!1,ranges:aS};case`S`:return{kind:`charClass`,negated:!0,ranges:aS};default:throw Error(`unreachable shorthand class letter`)}}var sS=new Set([`|`,`)`]),cS={".":`.`,"*":`*`,"+":`+`,"?":`?`,"(":`(`,")":`)`,"[":`[`,"]":`]`,"{":`{`,"}":`}`,"|":`|`,"^":`^`,$:`$`,"\\":`\\`,"/":`/`,n:`
72
72
  `,t:` `,r:`\r`,f:`\f`,v:`\v`},lS=class{pattern;pos=0;constructor(e){this.pattern=e}get position(){return this.pos}atEnd(){return this.pos>=this.pattern.length}peek(e=0){return this.pattern[this.pos+e]}advance(){let e=this.pattern[this.pos];if(e===void 0)throw new $x(this.pattern,this.pos,`unexpected end of pattern`);return this.pos+=1,e}parseAlternation(){let e=this.parseSequence(),t=[];for(;this.peek()===`|`;)this.advance(),t.push(this.parseSequence());return t.length===0?e:{kind:`alternation`,branches:[e,...t]}}parseSequence(){if(this.atEnd()||sS.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!sS.has(this.peek()??``);)t.push(this.parseQuantified());return t.length===0?e:{kind:`concat`,operands:[e,...t]}}parseQuantified(){let e=this.pos,t=this.parseAtom();if(t.kind===`anchorStart`||t.kind===`anchorEnd`){if(this.peekIsQuantifierStart())throw new $x(this.pattern,e,`an anchor ('${t.kind===`anchorStart`?`^`:`$`}') cannot be quantified`);return t}let n=this.tryParseQuantifier();if(n===void 0)return t;if(this.peekIsQuantifierStart())throw new $x(this.pattern,this.pos,`a quantifier cannot itself be quantified -- this grammar has no lazy or possessive modifiers, since a pattern that only ever answers a yes/no match question has no notion for either to change`);switch(n.kind){case`star`:return{kind:`star`,operand:t};case`plus`:return{kind:`plus`,operand:t};case`optional`:return{kind:`optional`,operand:t};case`repeat`:return{kind:`repeat`,operand:t,min:n.min,max:n.max};default:throw Error(`unreachable quantifier kind`)}}peekIsQuantifierStart(){let e=this.peek();if(e===`*`||e===`+`||e===`?`)return!0;if(e===`{`){let e=this.pos,t=this.tryParseBound();return this.pos=e,t!==void 0}return!1}tryParseQuantifier(){let e=this.peek();if(e===`*`)return this.advance(),{kind:`star`};if(e===`+`)return this.advance(),{kind:`plus`};if(e===`?`)return this.advance(),{kind:`optional`};if(e===`{`){let e=this.tryParseBound();return e===void 0?void 0:{kind:`repeat`,min:e.min,max:e.max}}}tryParseBound(){let e=this.pos;this.pos+=1;let t=this.readDigits();if(t===``){this.pos=e;return}let n,r=!1;if(this.peek()===`,`&&(r=!0,this.pos+=1,n=this.readDigits()),this.peek()!==`}`){this.pos=e;return}this.pos+=1;let i=Number.parseInt(t,10),a=r?n===``?void 0:Number.parseInt(n??``,10):i;if(a!==void 0&&a<i)throw new $x(this.pattern,e,`quantifier range is backwards: {${t}${r?`,`+(n??``):``}} would require between ${String(i)} and ${String(a)} repetitions`);return{min:i,max:a}}readDigits(){let e=``;for(;;){let t=this.peek();if(t===void 0||t<`0`||t>`9`)break;e+=t,this.pos+=1}return e}parseAtom(){let e=this.peek();if(e===void 0)throw new $x(this.pattern,this.pos,`unexpected end of pattern`);if(e===`^`)return this.advance(),{kind:`anchorStart`};if(e===`$`)return this.advance(),{kind:`anchorEnd`};if(e===`.`)return this.advance(),{kind:`anyChar`};if(e===`(`)return this.parseGroup();if(e===`[`)return this.parseCharClass();if(e===`\\`)return this.parseEscapedAtom();if(e===`*`||e===`+`||e===`?`)throw new $x(this.pattern,this.pos,`quantifier '${e}' with nothing to repeat`);return this.advance(),{kind:`literal`,codeUnit:e.charCodeAt(0)}}parseGroup(){let e=this.pos;if(this.advance(),this.peek()===`?`&&this.peek(1)===`:`)this.advance(),this.advance();else throw new $x(this.pattern,e,`capturing groups are not supported in this grammar -- there is nothing to capture, since a pattern only ever answers whether it matches. Use '(?:...)' for grouping.`);let t=this.parseAlternation();if(this.peek()!==`)`)throw new $x(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new $x(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`D`||t===`w`||t===`W`||t===`s`||t===`S`)return oS(t);let n=cS[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new $x(this.pattern,e,`unknown escape sequence '\\${t}'`)}parseCharClass(){let e=this.pos;this.advance();let t=!1;this.peek()===`^`&&(this.advance(),t=!0);let n=[];for(;;){if(this.atEnd())throw new $x(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new $x(this.pattern,this.pos,`a character class must contain at least one item -- ']' immediately, or immediately after '[^', is not the empty class here (escape it as '\\]' to match a literal ']')`);this.advance();break}n.push(...this.parseClassItem())}return{kind:`charClass`,negated:t,ranges:n}}parseClassItem(){let e=this.peek();if(e===`\\`){let e=this.pos;if(this.advance(),this.atEnd())throw new $x(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return oS(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new $x(this.pattern,e,`the negated shorthand class '\\${t}' cannot be embedded inside a character class, because its complement cannot be represented as a set of ranges to union with the class's other members -- use it as its own atom instead of embedding it here`);let n=cS[t];if(n===void 0)throw new $x(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new $x(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),this.parseOptionalRangeFrom(e.charCodeAt(0))}parseOptionalRangeFrom(e){if(this.peek()===`-`&&this.peek(1)!==void 0&&this.peek(1)!==`]`){let t=this.pos;this.advance();let n=this.parseClassRangeEndpoint();if(n<e)throw new $x(this.pattern,t,`invalid range in character class: '${String.fromCharCode(e)}-${String.fromCharCode(n)}' is reversed`);return[{from:e,to:n}]}return[{from:e,to:e}]}parseClassRangeEndpoint(){let e=this.peek();if(e===`\\`){let e=this.pos;if(this.advance(),this.atEnd())throw new $x(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`D`||t===`w`||t===`W`||t===`s`||t===`S`)throw new $x(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=cS[t];if(n===void 0)throw new $x(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new $x(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function uS(e){let t=new lS(e),n=t.parseAlternation();if(!t.atEnd())throw new $x(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var dS=class{states=[];add(e){return this.states.push(e),this.states.length-1}patch(e,t){for(let n of e){let e=this.states[n.state];if(e!==void 0)switch(n.field){case`to`:(e.kind===`char`||e.kind===`anchorStart`||e.kind===`anchorEnd`)&&(e.to=t);break;case`to1`:e.kind===`split`&&(e.to1=t);break;case`to2`:e.kind===`split`&&(e.to2=t)}}}emptyFrag(){let e=this.add({kind:`split`,to1:-1,to2:-1});return{start:e,out:[{state:e,field:`to1`},{state:e,field:`to2`}]}}compileRepeat(e){let{operand:t,min:n,max:r}=e;if(r===void 0){if(n===0)return this.compileNode({kind:`star`,operand:t});let e=[];for(let r=0;r<n-1;r+=1)e.push(t);return e.push({kind:`plus`,operand:t}),this.compileNode({kind:`concat`,operands:e})}let i=[];for(let e=0;e<n;e+=1)i.push(t);for(let e=0;e<r-n;e+=1)i.push({kind:`optional`,operand:t});return i.length===0?this.emptyFrag():this.compileNode({kind:`concat`,operands:i})}compileNode(e){switch(e.kind){case`literal`:{let t=e.codeUnit,n=this.add({kind:`char`,test:e=>e===t,to:-1});return{start:n,out:[{state:n,field:`to`}]}}case`anyChar`:{let e=this.add({kind:`char`,test:()=>!0,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`charClass`:{let t=this.add({kind:`char`,test:t=>Qx(e,t),to:-1});return{start:t,out:[{state:t,field:`to`}]}}case`anchorStart`:{let e=this.add({kind:`anchorStart`,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`anchorEnd`:{let e=this.add({kind:`anchorEnd`,to:-1});return{start:e,out:[{state:e,field:`to`}]}}case`concat`:{if(e.operands.length===0)return this.emptyFrag();let[t,...n]=e.operands;if(t===void 0)throw Error(`unreachable: a non-empty operands array always has a first element`);let r=this.compileNode(t);for(let e of n){let t=this.compileNode(e);this.patch(r.out,t.start),r={start:r.start,out:t.out}}return r}case`alternation`:{let[t,...n]=e.branches;if(t===void 0)throw Error(`unreachable: AlternationNode always has at least two branches`);let r=this.compileNode(t);for(let e of n){let t=this.compileNode(e);r={start:this.add({kind:`split`,to1:r.start,to2:t.start}),out:[...r.out,...t.out]}}return r}case`star`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return this.patch(t.out,n),{start:n,out:[{state:n,field:`to2`}]}}case`plus`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return this.patch(t.out,n),{start:t.start,out:[{state:n,field:`to2`}]}}case`optional`:{let t=this.compileNode(e.operand),n=this.add({kind:`split`,to1:t.start,to2:-1});return{start:n,out:[...t.out,{state:n,field:`to2`}]}}case`repeat`:return this.compileRepeat(e);default:throw Error(`unreachable regex node kind`)}}build(e){let t=this.compileNode(e),n=this.add({kind:`match`});return this.patch(t.out,n),{states:this.states,start:t.start,matchState:n}}};function fS(e){return new dS().build(e)}function pS(e,t,n,r){let i=new Set,a=new Set,o=[...t];for(;o.length>0;){let t=o.pop();if(t===void 0||a.has(t))continue;a.add(t);let s=e.states[t];if(s!==void 0)switch(s.kind){case`char`:case`match`:i.add(t);break;case`split`:o.push(s.to1,s.to2);break;case`anchorStart`:n===0&&o.push(s.to);break;case`anchorEnd`:n===r&&o.push(s.to)}}return i}function mS(e,t,n){let r=new Set;for(let i of t){let t=e.states[i];t?.kind===`char`&&t.test(n)&&r.add(t.to)}return r}function hS(e,t){let n=t.length,r=pS(e,[e.start],0,n);if(r.has(e.matchState))return!0;for(let i=0;i<n;i+=1){let a=t.charCodeAt(i),o=mS(e,r,a);if(o.add(e.start),r=pS(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function gS(e){let t=fS(uS(e));return{test:e=>hS(t,e)}}function _S(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=dx(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function vS(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=dx(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function yS(e,t,n){switch(e){case`gt`:return t>n;case`gte`:return t>=n;case`lt`:return t<n;case`lte`:return t<=n;case`eq`:return t===n;case`neq`:return t!==n;default:throw Error(`unreachable comparison operator`)}}var bS={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function xS(e,t){return e*bS[t]}function SS(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function CS(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function wS(e){let t=new Date(e);return Number.isNaN(t.getTime())?$(`domain-error`,`the resulting instant falls outside the representable timestamp range`):Q({kind:`instant`,value:t.toISOString()})}function TS(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?cx(t.unit,n.unit)?Q(yS(e,t.value,n.value)):$(`wrong-type`,`cannot compare numbers with incompatible units`):$(`wrong-type`,`cannot compare a 'number' value with a '${n.kind}' value`);case`text`:return $(`wrong-type`,`text values are not comparable via 'compare'; use 'textCompare'`);case`boolean`:return n.kind===`boolean`?e!==`eq`&&e!==`neq`?$(`wrong-type`,`booleans have no natural ordering; '${e}' is only defined for 'eq'/'neq'`):Q(e===`eq`?t.value===n.value:t.value!==n.value):$(`wrong-type`,`cannot compare a 'boolean' value with a '${n.kind}' value`);case`instant`:{if(n.kind!==`instant`)return $(`wrong-type`,`cannot compare an 'instant' value with a '${n.kind}' value`);let r=SS(t.value);if(r===void 0)return CS(t.value);let i=SS(n.value);return i===void 0?CS(n.value):Q(yS(e,r,i))}case`duration`:return n.kind===`duration`?Q(yS(e,xS(t.value,t.unit),xS(n.value,n.unit))):$(`wrong-type`,`cannot compare a 'duration' value with a '${n.kind}' value`);case`complex`:return e!==`eq`&&e!==`neq`?$(`wrong-type`,`ordering operator '${e}' is not defined for complex values; the complex plane has no total order`):n.kind===`complex`?cx(t.unit,n.unit)?Q(e===`eq`?t.re===n.re&&t.im===n.im:t.re!==n.re||t.im!==n.im):$(`wrong-type`,`cannot compare complex values with incompatible units`):$(`wrong-type`,`cannot compare a 'complex' value with a '${n.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function ES(e,t,n){if(t.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the left operand is '${t.kind}'`);if(n.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the right operand is '${n.kind}'`);switch(e){case`equals`:return Q(t.value===n.value);case`notEquals`:return Q(t.value!==n.value);case`matches`:case`notMatches`:{let r;try{r=new RegExp(n.value)}catch{return $(`wrong-type`,`'${n.value}' is not a valid regular expression pattern`)}let i=r.test(t.value);return Q(e===`matches`?i:!i)}case`portableMatches`:case`portableNotMatches`:{let r;try{r=gS(n.value)}catch(e){let t=e instanceof $x?e.message:String(e);return $(`wrong-type`,`'${n.value}' is not a valid trilean-regex pattern: ${t}`)}let i=r.test(t.value);return Q(e===`portableMatches`?i:!i)}default:throw Error(`unreachable text comparison operator`)}}function DS(e,t){switch(e.kind){case`number`:return t.kind===`number`?cx(e.unit,t.unit)?Q(e.value===t.value):$(`wrong-type`,`cannot compare numbers with incompatible units for membership`):$(`wrong-type`,`cannot compare a 'number' value with a '${t.kind}' value for membership`);case`text`:return t.kind===`text`?Q(e.value===t.value):$(`wrong-type`,`cannot compare a 'text' value with a '${t.kind}' value for membership`);case`boolean`:return t.kind===`boolean`?Q(e.value===t.value):$(`wrong-type`,`cannot compare a 'boolean' value with a '${t.kind}' value for membership`);case`instant`:{if(t.kind!==`instant`)return $(`wrong-type`,`cannot compare an 'instant' value with a '${t.kind}' value for membership`);let n=SS(e.value);if(n===void 0)return CS(e.value);let r=SS(t.value);return r===void 0?CS(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(xS(e.value,e.unit)===xS(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?cx(e.unit,t.unit)?Q(e.re===t.re&&e.im===t.im):$(`wrong-type`,`cannot compare complex values with incompatible units for membership`):$(`wrong-type`,`cannot compare a 'complex' value with a '${t.kind}' value for membership`);default:throw Error(`unreachable computed-value kind`)}}function OS(e){return cx(e,void 0)}function kS(e){switch(e.kind){case`number`:return Q({kind:`number`,value:-e.value,unit:e.unit});case`duration`:return Q({kind:`duration`,value:-e.value,unit:e.unit});case`complex`:return Q({kind:`complex`,re:-e.re,im:-e.im,unit:e.unit});case`text`:case`instant`:case`boolean`:return $(`wrong-type`,`cannot negate a '${e.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function AS(e,t,n){switch(e){case`add`:return cx(t.unit,n.unit)?Q({kind:`number`,value:t.value+n.value,unit:t.unit}):$(`wrong-type`,`cannot add numbers with incompatible units`);case`subtract`:return cx(t.unit,n.unit)?Q({kind:`number`,value:t.value-n.value,unit:t.unit}):$(`wrong-type`,`cannot subtract numbers with incompatible units`);case`multiply`:return Q({kind:`number`,value:t.value*n.value,unit:lx(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:ux(t.unit,n.unit)});case`power`:return!OS(t.unit)||!OS(n.unit)?$(`wrong-type`,`'power' requires dimensionless operands`):t.value<0&&!Number.isInteger(n.value)?$(`domain-error`,`a negative base raised to a non-integer power is not a real number`):t.value===0&&n.value<0?$(`domain-error`,`zero raised to a negative power is a division by zero`):Q({kind:`number`,value:t.value**n.value});case`modulo`:return!OS(t.unit)||!OS(n.unit)?$(`wrong-type`,`'modulo' requires dimensionless operands`):n.value===0?$(`domain-error`,`modulo by zero`):Q({kind:`number`,value:t.value%n.value});default:throw Error(`unreachable arithmetic operator`)}}function jS(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:xS(t.value,t.unit)+xS(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:xS(t.value,t.unit)-xS(n.value,n.unit),unit:`ms`});case`multiply`:case`divide`:case`power`:case`modulo`:return $(`wrong-type`,`arithmetic operator '${e}' is not defined between two 'duration' values`);default:throw Error(`unreachable arithmetic operator`)}}function MS(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function NS(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:lx(e.unit,t.unit)}}function PS(e,t,n){switch(e){case`add`:return cx(t.unit,n.unit)?Q({kind:`complex`,re:t.re+n.re,im:t.im+n.im,unit:t.unit}):$(`wrong-type`,`cannot add complex values with incompatible units`);case`subtract`:return cx(t.unit,n.unit)?Q({kind:`complex`,re:t.re-n.re,im:t.im-n.im,unit:t.unit}):$(`wrong-type`,`cannot subtract complex values with incompatible units`);case`multiply`:return Q(NS(t,n));case`divide`:{let e=n.re*n.re+n.im*n.im;return e===0?$(`domain-error`,`division by zero`):Q({kind:`complex`,re:(t.re*n.re+t.im*n.im)/e,im:(t.im*n.re-t.re*n.im)/e,unit:ux(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function FS(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!OS(e.unit)||!OS(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=MS(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=NS(i,r);return t.value>=0?Q(i):PS(`divide`,n,i)}function IS(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=SS(t.value);if(e===void 0)return CS(t.value);let r=SS(n.value);return r===void 0?CS(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=SS(t.value);return e===void 0?CS(t.value):wS(e+xS(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=SS(n.value);return e===void 0?CS(n.value):wS(e+xS(t.value,t.unit))}return t.kind===`instant`||n.kind===`instant`?$(`wrong-type`,`arithmetic operator '${e}' is not defined between a '${t.kind}' and a '${n.kind}' value`):t.kind===`duration`&&n.kind===`duration`?jS(e,t,n):t.kind===`duration`||n.kind===`duration`?$(`wrong-type`,`arithmetic operator '${e}' is not defined between a '${t.kind}' and a '${n.kind}' value`):t.kind!==`number`&&t.kind!==`complex`?$(`wrong-type`,`arithmetic requires numeric operands; got a '${t.kind}' value`):n.kind!==`number`&&n.kind!==`complex`?$(`wrong-type`,`arithmetic requires numeric operands; got a '${n.kind}' value`):t.kind===`complex`||n.kind===`complex`?e===`power`?FS(t,n):PS(e,MS(t),MS(n)):AS(e,t,n)}function LS(e,t){if(e!==void 0){if(t.kind!==`number`&&t.kind!==`complex`)return $(`wrong-type`,`a unit was expected on a reference that resolved to a non-numeric value`);if(!cx(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function RS(e,t,n){let r=Object.hasOwn(e,t)?e[t]:void 0;if(r===void 0)return $(`wrong-type`,`no function registered under the name '${t}'`);let i=r(n);return`domainError`in i?$(`domain-error`,i.domainError):Q(i)}async function zS(e,t,n,r,i,a,o,s,c){let l=s.checkNode(c);if(l!==void 0)return l;switch(e.kind){case`not`:{let l=await zS(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:Q(!l.value)}case`and`:{let[l,u]=await Promise.all([zS(e.left,t,n,r,i,a,o,s,c+1),zS(e.right,t,n,r,i,a,o,s,c+1)]);return _S(l,u)}case`or`:{let[l,u]=await Promise.all([zS(e.left,t,n,r,i,a,o,s,c+1),zS(e.right,t,n,r,i,a,o,s,c+1)]);return vS(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>zS(e,t,n,r,i,a,o,s,c+1)))).reduce(_S,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>zS(e,t,n,r,i,a,o,s,c+1)))).reduce(vS,Q(!1));case`compare`:{let[l,u]=await Promise.all([BS(e.left,t,n,r,i,a,o,s,c+1),BS(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:TS(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([BS(e.left,t,n,r,i,a,o,s,c+1),BS(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:ES(e.op,l.value,u.value)}case`memberOf`:{let l=await BS(e.operand,t,n,r,i,a,o,s,c+1);if(l.status===`indeterminate`)return l;let u=await Promise.all(e.candidates.map(async e=>{let u=await BS(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:DS(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=dx(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await BS(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`&&l.reason.code===`not-found`?Q(!1):Q(!0)}case`some`:case`every`:{let r=await Yx(zS,e.collection,e.filter,t,n,i,a,o,s,c+1),l=(await Promise.all(r.map(async({item:t,filterOutcome:r})=>{if(r!==`exclude`)return r===`include`?zS(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?vS:_S,d=e.kind===`some`?Q(!1):Q(!0);return l.reduce(u,d)}case`treeReference`:{if(n.resolveTree===void 0)return $(`wrong-type`,`no tree resolver registered for treeReference nodes`);let l=JSON.stringify(e.key);if(a.has(l))return $(`domain-error`,`circular treeReference detected`);if(o>=100)return $(`domain-error`,`treeReference chain exceeds the maximum depth of 100`);let u=await n.resolveTree(e.key,t);if(!u.found)return $(`not-found`,`treeReference key did not resolve to a tree`);let d=Ax.safeParse(u.node);return d.success?zS(d.data,t,n,r,i,new Set([...a,l]),o+1,s,c+1):$(`wrong-type`,`the referenced tree is not a valid PredicateNode`)}default:throw Error(`unreachable predicate node kind`)}}async function BS(e,t,n,r,i,a,o,s,c){let l=s.checkNode(c);if(l!==void 0)return l;switch(e.kind){case`reference`:{let r=await n.resolveValue(e.key,t);if(!r.found)return $(`not-found`,`no value found for reference key ${JSON.stringify(e.key)}`);let i=LS(e.unit,r.value);return i===void 0?Q(r.value):i}case`accumulator`:return r===void 0?$(`wrong-type`,`accumulator used outside a reduce fold's combine expression`):Q(r);case`call`:{let l=await Promise.all(e.args.map(async e=>BS(e,t,n,r,i,a,o,s,c+1))),u=[];for(let e of l){if(e.status===`indeterminate`)return e;u.push(e.value)}return RS(i,e.fn,u)}case`numberLiteral`:return Q({kind:`number`,value:e.value,unit:e.unit});case`textLiteral`:return Q({kind:`text`,value:e.value});case`booleanLiteral`:return Q({kind:`boolean`,value:e.value});case`instantLiteral`:return Q({kind:`instant`,value:e.value});case`durationLiteral`:return Q({kind:`duration`,value:e.value,unit:e.unit});case`complexLiteral`:return`re`in e?Q({kind:`complex`,re:e.re,im:e.im,unit:e.unit}):Q(ix(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([BS(e.left,t,n,r,i,a,o,s,c+1),BS(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:IS(e.op,l.value,u.value)}case`negate`:{let l=await BS(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:kS(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>BS(e,t,n,r,i,a,o,s,c+1))),u=[];for(let e of l){if(e.status===`indeterminate`)return e;u.push(e.value)}let d=await n.resolveLookup(e.table,u,t);return d.found?Q(d.value):$(`not-found`,`no match found in lookup table ${JSON.stringify(e.table)}`)}case`conditional`:{if((e.hitPolicy??`first`)===`first`){for(let{when:l,then:u}of e.cases){let e=await zS(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return BS(u,t,n,r,i,a,o,s,c+1)}return BS(e.fallback,t,n,r,i,a,o,s,c+1)}let l=await Promise.all(e.cases.map(async({when:e,then:l})=>({then:l,whenResult:await zS(e,t,n,r,i,a,o,s,c+1)}))),u=l.filter(({whenResult:e})=>e.status===`definite`&&e.value);if(u.length>=2)return $(`domain-error`,`more than one case matched under the 'unique' hit policy`);let d=dx(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return BS(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await Yx(zS,e.collection,e.filter,t,n,i,a,o,s,c+1),l=Xx(r);if(l!==void 0)return{status:`indeterminate`,reason:l};let u=r.filter(({filterOutcome:e})=>e===`include`).map(({item:e})=>e);if(e.combiner.mode===`reduce`){let r=await BS(e.combiner.initial,t,n,void 0,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;let l=r.value;for(let t of u){let r=await BS(e.combiner.combine,t,n,l,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;l=r.value}return Q(l)}if(u.length===0)return $(`domain-error`,`'${e.combiner.mode}' has no participating items to seed a running result from`);let d=e.combiner.mode===`max`?`gt`:`lt`,f;for(let t of u){let r=await BS(e.combiner.item,t,n,void 0,i,a,o,s,c+1);if(r.status===`indeterminate`)return r;if(f===void 0){f=r.value;continue}let l=TS(d,r.value,f);if(l.status===`indeterminate`)return l;l.value&&(f=r.value)}if(f===void 0)throw Error(`unreachable: max/min over a non-empty participating list produced no running result`);return Q(f)}case`delegate`:{if(n.resolveDelegate===void 0)return $(`wrong-type`,`no delegate handler registered for external system '${e.system}'`);let r=await n.resolveDelegate(e.system,e.payload,t);return r.found?Q(r.value):$(`not-found`,`delegate handler for external system '${e.system}' reported no value`)}case`treeReference`:{if(n.resolveTree===void 0)return $(`wrong-type`,`no tree resolver registered for treeReference nodes`);let l=JSON.stringify(e.key);if(a.has(l))return $(`domain-error`,`circular treeReference detected`);if(o>=100)return $(`domain-error`,`treeReference chain exceeds the maximum depth of 100`);let u=await n.resolveTree(e.key,t);if(!u.found)return $(`not-found`,`treeReference key did not resolve to a tree`);let d=Gx.safeParse(u.node);return d.success?BS(d.data,t,n,r,i,new Set([...a,l]),o+1,s,c+1):$(`wrong-type`,`the referenced tree is not a valid ExpressionNode`)}default:throw Error(`unreachable expression node kind`)}}function VS({functions:e=Kx,maxNodes:t=qx,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>zS(r,i,a,void 0,e,new Set,0,Jx(t,n),0),evaluateValue:async(r,i,a)=>BS(r,i,a,void 0,e,new Set,0,Jx(t,n),0)}}var{evaluatePredicate:HS,evaluateValue:US}=VS({}),WS=Kg(Ax),GS=`bearer-is`,KS=`expires-at`,qS=`scope-narrows`,JS=`capability-is`,YS=`depth-remaining`,XS=[GS,KS,qS,JS,YS];function ZS(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}function QS(e){return{found:!0,value:{kind:`boolean`,value:e}}}var $S={[GS]:(e,t)=>t.parentClaims===void 0?QS(!1):QS(Ly(t.parentClaims.bearer,t.childIssuer)),[KS]:(e,t)=>t.parentClaims===void 0?QS(!1):QS(t.candidate.expires<=t.parentClaims.expires),[qS]:(e,t)=>t.parentClaims===void 0?QS(!1):QS(By(t.parentClaims.scope,t.candidate.scope)),[JS]:(e,t)=>t.parentClaims===void 0?QS(!1):QS(t.parentClaims.capability===t.candidate.capability),[YS]:(e,t)=>{if(t.parentClaims===void 0)return QS(!1);let n=t.parentClaims[`delegations-remaining`];return QS(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function eC(e){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:null},right:{kind:`booleanLiteral`,value:!0}}}var tC=async()=>Promise.resolve({found:!1}),nC=async()=>Promise.resolve({found:!1}),rC=async()=>Promise.resolve([]);async function iC(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:tC,resolveLookup:nC,resolveCollection:rC,resolveDelegate:async(e,t)=>ZS(e)?$S[e](t,r):{found:!1}};for(let e of XS){let t=await HS(eC(e),r,i);if(t.status!==`definite`||!t.value)return e}}async function aC(e,t,n,r={}){let i={clock:n,claims:t},a={resolveValue:tC,resolveLookup:nC,resolveCollection:rC,resolveDelegate:async(e,t)=>{let n=Object.hasOwn(r,e)?r[e]:void 0;if(n===void 0)return{found:!1};try{return await n(t,i)}catch{return{found:!1}}}};for(let t of e){let e=await HS(t,i,a);if(e.status!==`definite`||!e.value)return{ok:!1,reason:`not_satisfied`}}return{ok:!0}}function oC(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function sC(e){return Uint8Array.from(e)}function cC(e){return sC(hc(e,Qs))}function lC(e){return cC({1:e.identityKey.alg,4:e.deviceId})}function uC(e){let[,,t]=e;if(t===null)return;let n;try{n=rl(t,il)}catch{return}let r=ry.safeParse(n);return r.success?r.data:void 0}async function dC(e,t){let n=await pC(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});return n.ok&&t.expectedBearer!==void 0&&!Ly(n.claims.bearer,t.expectedBearer)?{ok:!1,reason:`bearer_mismatch`}:n}async function fC(e,t,n){if(Ly(e.issuer,t.issuer))return!0;if(e.authorization===void 0)return!1;let r;try{r=rl(e.authorization,il)}catch{return!1}let i=ny.safeParse(r);if(!i.success)return!1;let a=await dC(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&By(a.claims.scope,t.scope)}async function pC(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=rl(r,il)}catch{return{ok:!1,reason:`malformed`}}let o=ry.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(!await t.identity.verify(s[`issuer-key`],oC(n,r),i))return{ok:!1,reason:`bad_signature`};if(!Ly(await t.identity.deriveDeviceId(s[`issuer-key`][`public-key`]),s.issuer))return{ok:!1,reason:`wrong_issuer`};let c=t.clock.now();if(s.expires<=c)return{ok:!1,reason:`expired`};if(s[`not-before`]!==void 0&&s[`not-before`]>c)return{ok:!1,reason:`not_yet_valid`};let l=s[`valid-until`];if(l!==void 0&&l<=c)return{ok:!1,reason:`content_expired`};let u=await t.revocation.entriesFor(s[`token-id`]);for(let e of u)if(await fC(e,s,t))return{ok:!1,reason:`revoked`};if(s.conditions!==void 0){let e;try{e=rl(s.conditions,il)}catch{return{ok:!1,reason:`conditions_invalid`}}let n=WS.safeParse(e);if(!n.success)return{ok:!1,reason:`conditions_invalid`};if(!(await aC(n.data,s,t.clock,t.extraPredicateResolvers)).ok)return{ok:!1,reason:`conditions_not_satisfied`}}if(s.parent!==void 0){let e;try{e=rl(s.parent,il)}catch{return{ok:!1,reason:`parent_invalid`}}let n=ny.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let r=await pC(n.data,t);if(!r.ok)return{ok:!1,reason:`parent_invalid`};let i={capability:s.capability,scope:s.scope,expires:s.expires,...s[`delegations-remaining`]===void 0?{}:{delegationsRemaining:s[`delegations-remaining`]}};return await iC(r.claims,s.issuer,i)===void 0?{ok:!0,claims:s,rootIssuer:r.rootIssuer,rootIssuerKey:r.rootIssuerKey,depth:r.depth+1}:{ok:!1,reason:`delegation_exceeds_parent`}}return{ok:!0,claims:s,rootIssuer:s.issuer,rootIssuerKey:s[`issuer-key`],depth:0}}var mC={"bearer-is":`parent_bearer_mismatch`,"expires-at":`expires_exceeds_parent`,"scope-narrows":`scope_does_not_narrow`,"capability-is":`capability_mismatch`,"depth-remaining":`delegation_exceeds_parent`};async function hC(e,t,n){let r=await iC(e,t,n);return r===void 0?void 0:mC[r]}async function gC(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};let t;if(e.parent!==void 0){let n=uC(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await hC(n,e.identity.deviceId,{capability:e.capability,scope:e.scope,expires:e.expires,...e.delegationsRemaining===void 0?{}:{delegationsRemaining:e.delegationsRemaining}});if(r!==void 0)return{ok:!1,reason:r};t=cC(e.parent)}let n=cC({"token-id":e.tokenId,issuer:e.identity.deviceId,"issuer-key":e.identity.identityKey,bearer:e.bearer,capability:e.capability,scope:e.scope,expires:e.expires,...e.notBefore===void 0?{}:{"not-before":e.notBefore},...t===void 0?{}:{parent:t},...e.delegationsRemaining===void 0?{}:{"delegations-remaining":e.delegationsRemaining},...e.conditions===void 0?{}:{conditions:cC(e.conditions)}}),r=lC(e.identity);return{ok:!0,token:[r,{},n,await e.identity.sign(oC(r,n))]}}var _C=`webrtc:signal`,vC={kind:`node`};function yC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function bC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function xC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function SC(e,t){return{verb:_C,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function CC(e,t){return{verb:_C,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function wC(e,t){return{verb:_C,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function TC(e){return{candidate:e.candidate,...e.sdpMid===null?{}:{"sdp-mid":e.sdpMid},...e.sdpMLineIndex===null?{}:{"sdp-m-line-index":e.sdpMLineIndex},...e.usernameFragment===null?{}:{"username-fragment":e.usernameFragment}}}function EC(e){return{candidate:e.candidate,...e[`sdp-mid`]===void 0?{}:{sdpMid:e[`sdp-mid`]},...e[`sdp-m-line-index`]===void 0?{}:{sdpMLineIndex:e[`sdp-m-line-index`]},...e[`username-fragment`]===void 0?{}:{usernameFragment:e[`username-fragment`]}}}function DC(){let e=0;return()=>{let t=e;return e+=1,t}}async function OC(e,t){if(e.token===void 0)return!1;let n=await dC(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===vC.kind:!1}function kC(e){let t=[],n=[],r=!1,i=null;function a(){r=!0;for(let e of n.splice(0))e.resolve({value:void 0,done:!0})}function o(e){i=e,r=!0;for(let t of n.splice(0))t.reject(e)}e.addEventListener(`message`,r=>{if(!(r.data instanceof ArrayBuffer)){o(Error(`expected a binary data channel message`)),e.close();return}let i;try{i=fb(r.data)}catch(t){if(t instanceof db)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close();return}let a=n.shift();a?a.resolve({value:i,done:!1}):t.push(i)}),e.addEventListener(`close`,a),e.addEventListener(`error`,a);let s={[Symbol.asyncIterator](){return{next:async()=>c()}}};async function c(){let e=t.shift();return e===void 0?i===null?r?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{n.push({resolve:e,reject:t})}):Promise.reject(i):Promise.resolve({value:e,done:!1})}return{async send(t){return e.readyState===`open`?(e.send(lb(t)),Promise.resolve()):Promise.reject(Error(`data channel is not open (state: ${e.readyState})`))},receive:()=>s,async close(){return e.close(),Promise.resolve()}}}var AC=`wire-mesh`,jC={entriesFor:async()=>Promise.resolve([])};function MC(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function NC(e,t){e.addEventListener(`open`,()=>{t(kC(e))},{once:!0})}var PC=16,FC=36e5;async function IC(e,t){let n=new Uint8Array(PC);crypto.getRandomValues(n);let r=await gC({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:_C,scope:vC,expires:t.now()+FC});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function LC(e,t){let n={identity:t.identity,clock:t.clock,revocation:jC},r=new Map,i=new Map,a=DC();async function o(t,n){let r=wC(t,n===null?void 0:TC(n));await e.sendManageRequest(r,vC,i.get(t))}async function s(a,s){if(!await OC(a,n)){await a.respond({result:`error`,code:`unauthorized`});return}let c=s[`negotiation-id`];i.set(c,a.fromDevice);let l=new RTCPeerConnection({iceServers:[...t.iceServers]});r.set(c,l),MC(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{e.channel.binaryType=`arraybuffer`,NC(e.channel,t.onIncomingConnection)}),await l.setRemoteDescription({type:`offer`,sdp:s.sdp});let u=await l.createAnswer();await l.setLocalDescription(u),await a.respond({result:`ok`}),await e.sendManageRequest(CC(c,u.sdp??``),vC,a.fromDevice)}async function c(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.setRemoteDescription({type:`answer`,sdp:t.sdp}),await e.respond({result:`ok`})}async function l(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.addIceCandidate(t.candidate===void 0?null:EC(t.candidate)),await e.respond({result:`ok`})}async function u(){for await(let t of e.incomingManageRequests){if(t.command.verb!==`webrtc:signal`)continue;let e=t.command.params;yC(e)?await s(t,e):bC(e)?await c(t,e):xC(e)&&await l(t,e)}}return u(),{async initiate(n){let s=a();i.set(s,n);let c=new RTCPeerConnection({iceServers:[...t.iceServers]});r.set(s,c),MC(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(AC);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{NC(l,e),l.addEventListener(`error`,()=>{t(Error(`data channel failed to open`))},{once:!0})}),d=await c.createOffer();await c.setLocalDescription(d);let f=await e.sendManageRequest(SC(s,d.sdp??``),vC,n,await IC(t.identity,t.clock));if(f.result===`error`)throw r.delete(s),i.delete(s),c.close(),Error(`webrtc offer rejected: ${f.code}`);return u}}}function RC(e){let[t,n]=(0,D.useState)(void 0);return(0,D.useEffect)(()=>{let t={cancelled:!1};return(async()=>{for await(let r of e.events){if(t.cancelled)return;n(r)}})(),()=>{t.cancelled=!0}},[e]),t}var zC=16;function BC(e){let t=``;for(let n of e)t+=n.toString(zC).padStart(2,`0`);return t}function VC(e){if(e.state.status!==`connected`)return``;switch(e.state.handshake.status){case`pending`:return` · handshake pending`;case`negotiated`:return` · v${String(e.state.handshake.version)} · ${e.state.handshake.sharedDomains.join(`, `)}`;case`unanswered`:return` · handshake unanswered (relay-only node?)`;case`rejected`:return` · handshake rejected (${e.state.handshake.reason})`}return``}function HC(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${VC(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}function UC(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function WC({address:e,session:t,onClose:n,onMessagePeer:r}){let i=RC(t),a=i===void 0?`idle`:HC(i),o=i?.directory??[],s=i?.frameLog??[];return(0,M.jsxs)(Ia,{withBorder:!0,padding:`md`,radius:`md`,children:[(0,M.jsxs)(mi,{justify:`space-between`,mb:`xs`,children:[(0,M.jsx)(Yi,{fw:600,children:e}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,disabled:i?.state.status!==`connected`,onClick:()=>{t.sendPing()},children:`Send ping`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:n,children:`Disconnect`})]})]}),(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`sm`,children:a}),(0,M.jsx)(Yi,{fw:600,size:`sm`,children:`Peer directory`}),o.length===0?(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:`No gossip received yet.`}):(0,M.jsxs)(F,{striped:!0,children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`device`}),(0,M.jsx)(F.Th,{children:`addresses`}),(0,M.jsx)(F.Th,{children:`snapshot (unix s)`}),(0,M.jsx)(F.Th,{})]})}),(0,M.jsx)(F.Tbody,{children:o.map(e=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:BC(e.device)}),(0,M.jsx)(F.Td,{children:e.advert.addresses.join(`, `)}),(0,M.jsx)(F.Td,{children:e.advert[`snapshot-seconds`]}),(0,M.jsx)(F.Td,{children:(0,M.jsx)(ka,{size:`xs`,onClick:()=>{r(e.device)},children:`Message`})})]},BC(e.device)))})]}),(0,M.jsx)(Yi,{fw:600,size:`sm`,mt:`md`,children:`Frame log`}),(0,M.jsx)(F.ScrollContainer,{minWidth:0,h:384,children:(0,M.jsxs)(F,{children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`direction`}),(0,M.jsx)(F.Th,{children:`frame`})]})}),(0,M.jsx)(F.Tbody,{children:s.map((e,t)=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:e.direction}),(0,M.jsx)(F.Td,{children:UC(e.frame)})]},t))})]})})]})}function GC({peers:e,onConnect:t,onDismiss:n}){return e.length===0?null:(0,M.jsxs)(Ia,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`discovered-peers`,children:[(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`xs`,children:`Discovered peers`}),(0,M.jsxs)(F,{striped:!0,children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`device`}),(0,M.jsx)(F.Th,{children:`addresses`}),(0,M.jsx)(F.Th,{})]})}),(0,M.jsx)(F.Tbody,{children:e.map(e=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:BC(e.device)}),(0,M.jsx)(F.Td,{children:e.addresses.join(`, `)}),(0,M.jsx)(F.Td,{children:(0,M.jsxs)(mi,{gap:`xs`,children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{t(e.key)},children:`Connect`}),(0,M.jsx)(ka,{size:`xs`,variant:`light`,color:`red`,onClick:()=>{n(e.key)},children:`Dismiss`})]})})]},e.key))})]})]})}function KC(e,t){return e.sentAt===t.sentAt?Oy(e.messageId).localeCompare(Oy(t.messageId)):e.sentAt-t.sentAt}function qC(e,t){let n=new Set(e.map(e=>Oy(e.messageId))),r=t.filter(e=>!n.has(Oy(e.messageId)));return r.length===0?e:[...e,...r].sort(KC)}function JC(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function YC(e,t){return{roomPath:e,participants:t,direct:void 0,relay:void 0,via:void 0,token:void 0,status:`closed`,messages:[],notices:[],outgoing:[],pendingJoinRequest:void 0,unread:0}}function XC(e,t,n){let r=t===void 0?n===void 0?void 0:`hub`:`direct`;return{...e,direct:t,relay:n,via:r,status:r===void 0?`closed`:`connected`}}function ZC(e,t){switch(t.type){case`direct-opened`:{let n=e.get(t.roomPath)??YC(t.roomPath,t.participants);return new Map(e).set(t.roomPath,{...XC(n,t.session,n.relay),participants:t.participants,notices:[]})}case`relay-opened`:{let n=e.get(t.roomPath)??YC(t.roomPath,t.participants);return new Map(e).set(t.roomPath,XC(n,n.direct,t.route))}case`direct-closed`:return JC(e,t.roomPath,e=>XC(e,void 0,e.relay));case`hub-closed`:{let n=e;for(let r of e.values())r.relay?.hub===t.hub&&(n=JC(n,r.roomPath,e=>XC(e,e.direct,void 0)));return n}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{...YC(t.roomPath,t.participants),messages:qC([],t.messages)}):JC(e,t.roomPath,e=>({...e,messages:qC(e.messages,t.messages)}));case`notices`:return JC(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return JC(e,t.roomPath,e=>{let n=qC(e.messages,[t.message]),r=n!==e.messages;return{...e,messages:n,unread:r&&t.message.direction===`received`?e.unread+1:e.unread}});case`read`:return JC(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return JC(e,t.roomPath,e=>({...e,outgoing:e.outgoing.some(e=>e.localId===t.entry.localId)?e.outgoing.map(e=>e.localId===t.entry.localId?t.entry:e):[...e.outgoing,t.entry]}));case`outgoing-removed`:return JC(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return JC(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return JC(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return JC(e,t.roomPath,e=>({...e,token:t.token}))}return e}function QC(e,t){let n=Zb(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}var $C=12;function ew(e){return e.participants.length===0?e.roomPath:e.participants.map(e=>e.slice(0,$C)).join(`, `)}function tw({conversations:e,selected:t,onSelect:n}){return e.length===0?null:(0,M.jsxs)(Za,{gap:0,"data-testid":`conversation-list`,children:[(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`xs`,children:`Conversations`}),e.map(e=>(0,M.jsx)(Ua,{active:e.roomPath===t,label:ew(e),description:e.status===`connected`?void 0:`offline`,rightSection:(0,M.jsxs)(mi,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,M.jsx)(ba,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,M.jsx)(ba,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function nw({placeholder:e,ariaLabel:t,submitLabel:n,onSubmit:r,onCancel:i,size:a,autoFocus:o}){let[s,c]=(0,D.useState)(``),[l,u]=(0,D.useState)(void 0);function d(){let e=s.trim();e!==``&&(u(void 0),Promise.resolve(r(e)).then(()=>{c(``)}).catch(e=>{u(e instanceof Error?e.message:String(e))}))}function f(e){e.key===`Enter`&&d(),e.key===`Escape`&&i?.()}return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(mi,{gap:`xs`,flex:1,children:[(0,M.jsx)(_o,{flex:1,...a===void 0?{}:{size:a},placeholder:e,"aria-label":t,autoComplete:`off`,autoFocus:o,value:s,onChange:e=>{c(e.currentTarget.value)},onKeyDown:f}),(0,M.jsx)(ka,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,M.jsx)(Yi,{size:`sm`,c:`red`,children:l})]})}var rw=`You`,iw=256,aw=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function ow({sentAt:e}){return(0,M.jsx)(Yi,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:aw.format(e)})}function sw({messages:e,outgoing:t,peerLabel:n,onRetry:r,onDiscard:i}){let a=(0,D.useRef)(null);return(0,D.useEffect)(()=>{let e=a.current;e!==null&&(e.scrollTop=e.scrollHeight)},[e,t]),(0,M.jsx)(Lr,{h:iw,viewportRef:a,children:(0,M.jsxs)(Za,{gap:4,children:[e.map((t,r)=>{let i=t.direction===`sent`,a=r===0||e[r-1]?.direction!==t.direction;return(0,M.jsxs)(Za,{gap:0,align:i?`flex-end`:`flex-start`,mt:a?`xs`:0,children:[a&&(0,M.jsx)(Yi,{size:`xs`,fw:600,c:`dimmed`,children:i?rw:n}),(0,M.jsx)(Yi,{size:`sm`,children:t.text}),(0,M.jsx)(ow,{sentAt:t.sentAt})]},Oy(t.messageId))}),t.map(e=>(0,M.jsxs)(Za,{gap:0,align:`flex-end`,mt:`xs`,children:[(0,M.jsx)(Yi,{size:`xs`,fw:600,c:`dimmed`,children:rw}),(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:e.text}),e.status===`failed`?(0,M.jsxs)(mi,{gap:`xs`,children:[(0,M.jsx)(Yi,{size:`xs`,c:`red`,children:`Not sent: ${e.error}`}),(0,M.jsx)(ka,{size:`compact-xs`,variant:`light`,onClick:()=>{r(e.localId)},children:`Retry`}),(0,M.jsx)(ka,{size:`compact-xs`,variant:`subtle`,color:`gray`,onClick:()=>{i(e.localId)},children:`Dismiss`})]}):(0,M.jsx)(Yi,{size:`xs`,c:`dimmed`,children:e.status===`awaiting-approval`?`Waiting for ${n} to allow messages`:`Sending`})]},e.localId))]})})}function cw(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function lw({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=cw(e);return(0,M.jsx)(P,{children:n===void 0?(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,fs:`italic`,children:`encrypted notice -- no key held for its epoch`}):(0,M.jsx)(Yi,{size:`sm`,children:n})},t)});return(0,M.jsxs)(Za,{gap:4,children:[t,(0,M.jsxs)(ba,{variant:`light`,color:`gray`,size:`sm`,w:`fit-content`,children:[e.length,` notice`,e.length===1?``:`s`]})]})}var uw=864e5;function dw(e){return e===`direct`?`direct`:e===`hub`?`via hub`:`offline`}function fw({view:e,onSend:t,onPostNotice:n,onRetry:r,onDiscard:i}){return(0,M.jsxs)(Za,{gap:`xs`,children:[(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsx)(Yi,{fw:600,children:e.participants.join(`, `)}),(0,M.jsx)(Yi,{size:`sm`,c:e.status===`connected`?`green`:`dimmed`,children:dw(e.via)})]}),e.pendingJoinRequest&&(0,M.jsx)(Wi,{color:`blue`,title:`Message request`,children:(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsxs)(Yi,{size:`sm`,children:[e.pendingJoinRequest.requesterHex,` wants to message you`]}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+uw})},children:`Allow`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,M.jsx)(sw,{messages:e.messages,outgoing:e.outgoing,peerLabel:ew(e),onRetry:r,onDiscard:i}),(0,M.jsx)(mi,{children:(0,M.jsx)(nw,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,M.jsx)(Ba,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,M.jsx)(lw,{notices:e.notices}),e.via===`direct`?(0,M.jsx)(mi,{children:(0,M.jsx)(nw,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})}):(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:`Durable notices need a direct connection.`})]})}var pw=`room:member`;async function mw(e,t){let n=await dC(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.expectedBearer});if(!n.ok)return n;if(n.claims.scope.kind!==`room`)return{ok:!1,reason:`wrong_scope_kind`};if(n.claims.scope.path!==t.roomPath)return{ok:!1,reason:`wrong_scope_path`};let r=Zb(t.roomPath),i=ky(n.rootIssuer);if(r.kind===`owner-named`){if(i!==r.owner)return{ok:!1,reason:`wrong_chain_root`}}else if(t.dmRootPolicy===`either-participant`){if(i!==r.participants[0]&&i!==r.participants[1])return{ok:!1,reason:`wrong_chain_root`}}else if(i!==ky(t.identity.deviceId))return{ok:!1,reason:`wrong_chain_root`};return{ok:!0,claims:n.claims,rootIssuerKey:n.rootIssuerKey}}var hw=16;function gw(){let e=new Uint8Array(hw);return crypto.getRandomValues(e),e}function _w(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function vw(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}async function yw(e,t,n,r,i,a){let o=await e.sendManageRequest(vw(t,a),n,r,void 0,i);if(o.result!==`ok`)throw Error(`capability request for "${t}" was refused (${o.code})`);let s=pv.safeParse(o);if(!s.success)throw Error(`capability request for "${t}" response was malformed`);return s.data}function bw(e){return async function(t){let n=fv.safeParse(t.command.params);if(!n.success||n.data.capability!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let r=n.data[`valid-until`];if(r!==void 0&&r<=e.clock.now()){await t.respond({result:`error`,code:`expired`});return}let i=!1,a=setTimeout(()=>{i||(i=!0,t.respond({result:`error`,code:`timeout`,message:`no decision within the capability-request timeout`}).catch(()=>void 0))},e.timeoutMs);_w(a),e.onRequest({scope:t.scope,requesterDevice:e.bearerDevice,async decide(n){if(i)return;if(i=!0,clearTimeout(a),n.kind===`reject`){await t.respond({result:`error`,code:`denied`,...n.reason===void 0?{}:{message:n.reason}});return}let r=await gC({identity:e.identity,clock:e.clock,tokenId:gw(),bearer:e.bearerDevice,capability:n.capability,scope:t.scope,expires:n.expires,...n.delegationsRemaining===void 0?{}:{delegationsRemaining:n.delegationsRemaining}});if(!r.ok){await t.respond({result:`error`,code:`mint_failed`});return}let o=r.token;await t.respond({result:`ok`,"granted-token":o,...n.extensions??{}})}})}}function xw(e){return async function(t){if(t.command.verb!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let n=mv.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}let r=n.data[`granted-token`],i=await dC(r,{identity:e.identity,clock:e.clock,revocation:e.revocation,expectedBearer:e.identity.deviceId});if(!i.ok){await t.respond({result:`error`,code:i.reason});return}if(i.claims.capability!==e.capability){await t.respond({result:`error`,code:`capability_mismatch`});return}if(!By(i.claims.scope,t.scope)){await t.respond({result:`error`,code:`scope_mismatch`});return}await t.respond({result:`ok`}),e.onGrant({capability:e.capability,grantedToken:r,scope:t.scope,granterDevice:e.granterDevice})}}var Sw=16;function Cw(){let e=new Uint8Array(Sw);return crypto.getRandomValues(e),e}var ww=3e5;function Tw(e,t,n){return{verb:pw,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function Ew(e,t,n,r,i){let a=Tw(n,Cw(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function Dw(e,t,n){let r=await yw(e,pw,{kind:`room`,path:t},n),i=jv.safeParse(r);if(!i.success)throw Error(`room.join response for ${t} was malformed`);return{token:i.data[`granted-token`],members:i.data.members.map(e=>e.device)}}function Ow(e,t,n){async function r(e,r){let i=e.scope.path;if(i===void 0||e.token===void 0){await e.respond({result:`error`,code:`unauthorized`});return}if(!(await mw(e.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:t.peerDevice,roomPath:i})).ok){await e.respond({result:`error`,code:`unauthorized`});return}await e.respond({result:`ok`});let a=r[`message-id`],o=r[`sent-at`],s=r.text;a instanceof Uint8Array&&typeof o==`number`&&typeof s==`string`&&n.onMessage?.({roomPath:i,text:s,messageId:a,sentAt:o})}function i(e){return async n=>{if(n.kind===`reject`){let t={kind:`reject`,...n.reason===void 0?{}:{reason:n.reason}};await e.decide(t);return}let r=[...t.currentMembers?.()??[],t.peerDevice].map(e=>({device:e})),i={kind:`accept`,capability:n.capability,expires:n.expires,...n.delegationsRemaining===void 0?{}:{delegationsRemaining:n.delegationsRemaining},extensions:{members:r}};await e.decide(i)}}let a=bw({capability:pw,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??ww,onRequest(e){let t=e.scope.path,r=n.onJoinRequest;if(t===void 0||r===void 0){e.decide({kind:`reject`,reason:`unsupported verb`});return}r({roomPath:t,requesterDevice:e.requesterDevice,decide:i(e)})}});async function o(e){if(e.scope.path===void 0){await e.respond({result:`error`,code:`missing_scope_path`});return}if(n.onJoinRequest===void 0){await e.respond({result:`error`,code:`unsupported_verb`});return}await a(e)}let s=xw({capability:pw,identity:t.identity,clock:t.clock,revocation:t.revocation,granterDevice:t.peerDevice,onGrant(e){let t=e.scope.path,r=n.onRoomInvite;t!==void 0&&r!==void 0&&r({roomPath:t,granterDevice:e.granterDevice,token:e.grantedToken})}});async function c(e){if(e.scope.path===void 0){await e.respond({result:`error`,code:`missing_scope_path`});return}if(n.onRoomInvite===void 0){await e.respond({result:`error`,code:`unsupported_verb`});return}await s(e)}(async()=>{for await(let t of e.incomingManageRequests){if(t.command.verb!==`room:member`)continue;let e=t.command.params;typeof e==`object`&&`verb`in e&&(e.verb===`room.send`?await r(t,e):e.verb===`capability.request`?await o(t):e.verb===`capability.grant`?await c(t):e.verb===`room.rekey`&&n.onRekey!==void 0&&await n.onRekey(t))}})()}function kw(){let e=new Map;return{get:async t=>Promise.resolve(e.get(t)),set:async(t,n)=>Promise.resolve(e.set(t,n)).then(()=>void 0),delete:async t=>Promise.resolve(e.delete(t)).then(()=>void 0),keys:async t=>Promise.resolve([...e.keys()].filter(e=>e.startsWith(t)))}}var Aw=32,jw=256,Mw=12,Nw=4,Pw=8,Fw=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function Iw(){return crypto.getRandomValues(new Uint8Array(Aw))}function Lw(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(Nw);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(Pw);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(Fw.length+n.length+t.length+r.length),a=0;return i.set(Fw,a),a+=Fw.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function Rw(e,t){let n=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(new Uint8Array),info:Uint8Array.from(Lw(t))},n,{name:`AES-GCM`,length:jw},!1,[`encrypt`,`decrypt`])}async function zw(e,t){let n=crypto.getRandomValues(new Uint8Array(Mw)),r=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:n},e,Uint8Array.from(t))),i=new Uint8Array(n.length+r.length);return i.set(n,0),i.set(r,n.length),i}async function Bw(e,t){if(t.length<Mw)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,Mw),r=t.slice(Mw);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function Vw(e,t){return zw(e,t)}async function Hw(e,t){return Bw(e,t)}async function Uw(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function Ww(e,t){return zw(await Uw(e),t)}async function Gw(e,t){return Bw(await Uw(e),t)}var Kw=`+aes256gcm`;function qw(e){return Yw(e)?e:`${e}${Kw}`}function Jw(e){return Yw(e)?e.slice(0,e.length-10):e}function Yw(e){return e.endsWith(Kw)}function Xw(e,t){return{verb:pw,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function Zw(e,t,n,r,i,a){return e.sendManageRequest(Xw(n,r),{kind:`room`,path:t},i,a)}function Qw(e){return async function(t){if(t.command.verb!==`room:member`){await t.respond({result:`error`,code:`malformed`});return}let n=kv.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}if(t.scope.kind!==`room`||t.scope.path===void 0){await t.respond({result:`error`,code:`scope_mismatch`});return}let r=t.scope.path,i=await mw(e.ownRoomMemberToken,{identity:e.identity,clock:e.clock,revocation:e.revocation,expectedBearer:e.identity.deviceId,roomPath:r,dmRootPolicy:`either-participant`});if(!i.ok){await t.respond({result:`error`,code:i.reason});return}let a=e.identity.deriveSharedSecret;if(a===void 0){await t.respond({result:`error`,code:`ecdh_unsupported`});return}let o=n.data[`key-epoch`],s=Array.isArray(n.data[`wrapped-key`])?n.data[`wrapped-key`]:[n.data[`wrapped-key`]],c=o-s.length+1,l;try{let e=await a(i.rootIssuerKey);l=await Promise.all(s.map(async(t,n)=>Hw(await Rw(e,{room:r,keyEpoch:c+n}),t)))}catch{await t.respond({result:`error`,code:`unwrap_failed`});return}await t.respond({result:`ok`}),e.onRekey({room:r,keyEpoch:o,contentKeys:l})}}function $w(e){return`data/${ky(e)}/head`}function eT(e,t){return`data/${ky(e)}/entry/${String(t)}`}async function tT(e,t){let n=await e.get($w(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function nT(e,t,n){await e.set($w(t),new TextEncoder().encode(String(n)))}async function rT(e,t){return tT(e,t)}async function iT(e,t){let n=await tT(e.storage,e.identity.deviceId)+1;return await e.storage.set(eT(e.identity.deviceId,n),t),await nT(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function aT(e,t,n){let r=await tT(e,t.peer);if(r<=t[`from-seq`])return null;let i=Math.min(r,t[`from-seq`]+n),a=[];for(let n=t[`from-seq`]+1;n<=i;n+=1){let r=await e.get(eT(t.peer,n));if(r===void 0)break;a.push(r)}return a.length===0?null:{type:`data-entries`,peer:t.peer,"from-seq":t[`from-seq`],entries:a}}async function oT(e,t){let n=await tT(e,t.peer);if(t[`from-seq`]!==n)return{ok:!1,reason:`gap`};let r=t[`from-seq`];for(let n of t.entries)r+=1,await e.set(eT(t.peer,r),n);return await nT(e,t.peer,r),{ok:!0}}async function sT(e,t,n){let r=await tT(e,t),i=[];for(let a=n+1;a<=r;a+=1){let n=await e.get(eT(t,a));if(n===void 0)break;i.push(n)}return i}function cT(e){return Uint8Array.from(e)}function lT(e){return cT(hc(e,Qs))}function uT(e){return lT({1:e.identityKey.alg,4:e.deviceId})}function dT(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function fT(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}async function pT(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=rl(r,il)}catch{return{ok:!1,reason:`malformed`}}let o=Nv.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(t.expectedRoom!==void 0&&s.room!==t.expectedRoom)return{ok:!1,reason:`wrong_room`};if(!await t.identity.verify(s[`poster-key`],dT(n,r),i))return{ok:!1,reason:`bad_signature`};if(!fT(await t.identity.deriveDeviceId(s[`poster-key`][`public-key`]),s.poster))return{ok:!1,reason:`wrong_poster`};let c=s[`valid-until`];if(c!==void 0&&c<=t.clock.now())return{ok:!1,reason:`content_expired`};let l=s[`key-epoch`];if(Yw(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await mw(s.token,{identity:t.identity,clock:t.clock,revocation:t.revocation,expectedBearer:s.poster,roomPath:s.room});return u.ok?{ok:!0,claims:s}:{ok:!1,reason:u.reason}}async function mT(e){let t=lT({room:e.room,poster:e.identity.deviceId,"poster-key":e.identity.identityKey,token:e.token,"notice-id":e.noticeId,"posted-at":e.clock.now(),"content-type":e.contentType,content:e.content,...e.refs===void 0?{}:{refs:[...e.refs]},...e.validUntil===void 0?{}:{"valid-until":e.validUntil},...e.keyEpoch===void 0?{}:{"key-epoch":e.keyEpoch}}),n=uT(e.identity);return[n,{},t,await e.identity.sign(dT(n,t))]}var hT=16;function gT(e){return new Uint8Array(hc(e,Qs))}function _T(e){let{identity:t,storage:n,clock:r,revocation:i,roomKeys:a}=e;async function o(e){let i=await a.currentEpoch(e.room);if(i===void 0)throw Error(`no content key held for room ${e.room}: room.rekey this room before posting encrypted notices`);let o=await a.get(e.room,i);if(o===void 0)throw Error(`content key store is inconsistent: epoch ${String(i)} is current for room ${e.room} but holds no key`);let s=e.noticeId??crypto.getRandomValues(new Uint8Array(hT)),c=await Ww(o,e.plaintext),l=await mT({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:qw(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await iT({identity:t,storage:n},gT(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await rT(n,e);if(!(await oT(n,{type:`data-entries`,peer:e,"from-seq":r,entries:[t]})).ok)throw Error(`gap rejecting entry for peer log (head ${String(r)})`)}async function c(e,t){let r=await sT(n,e,0),i=[];for(let e of r)i.push(await l(e,t));return i}async function l(e,n){let o=u(e);if(o===void 0)return{verified:!1,reason:`malformed`};let s=await pT(o,{identity:t,clock:r,revocation:i,expectedRoom:n});if(!s.ok)return{verified:!1,reason:s.reason};let c=s.claims;if(!Yw(c[`content-type`]))return{verified:!0,contentType:c[`content-type`],plaintext:c.content,claims:c};let l=c[`key-epoch`];if(l===void 0)return{verified:!1,reason:`key_epoch_mismatch`};let d=await a.get(c.room,l),f={verified:!0,contentType:Jw(c[`content-type`]),claims:c};if(d===void 0)return f;try{let e=await Gw(d,c.content);return{...f,plaintext:e}}catch{return f}}function u(e){try{let t=rl(e,il),n=Mv.safeParse(t);return n.success?n.data:void 0}catch{return}}return{postEncryptedNotice:o,ingestPeerEntry:s,readOwnNotices:async e=>c(t.deviceId,e),readPeerNotices:async(e,t)=>c(e,t)}}var vT=32;function yT(e){let{session:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=_T({identity:r,storage:n,clock:i,revocation:a,roomKeys:o}),l=new Map;async function u(e){let r=await rT(n,e);await t.sendDataFrame({type:`data-request`,peer:e,"from-seq":r})}function d(e){if(e.type===`data-have`){l.set(ky(e.peer),e.peer),u(e.peer).catch(()=>void 0);return}if(e.type===`data-entries`){(async()=>{(await oT(n,e)).ok&&(e.entries.length>=vT&&await u(e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await aT(n,e,vT);r!==null&&await t.sendDataFrame(r)})().catch(()=>void 0)}return{handleFrame:d,async post(e){let{dataHave:n}=await c.postEncryptedNotice(e);await t.sendDataFrame(n),s()},async readRoom(e){let t=await c.readOwnNotices(e),n=await Promise.all([...l.values()].map(async t=>c.readPeerNotices(t,e)));return[...t,...n.flat()]},roomKeys:o}}async function bT(e){let{session:t,identity:n,clock:r,revocation:i,ownRoomMemberToken:a,roomPath:o,roomKeys:s}=e;if(await s.currentEpoch(o)!==void 0)return;let c=o.split(`+`)[0]??``;if(c===``||ky(n.deviceId)!==c)return;let l=await mw(a,{identity:n,clock:r,revocation:i,expectedBearer:n.deviceId,roomPath:o,dmRootPolicy:`either-participant`});if(!l.ok)throw Error(`own room token failed verification: ${l.reason}`);let u=n.deriveSharedSecret;if(u===void 0)throw Error(`this identity cannot derive ECDH shared secrets`);let d=Iw(),f=await Vw(await Rw(await u(l.rootIssuerKey),{room:o,keyEpoch:1}),d);s.set(o,1,d),await Zw(t,o,1,f)}var xT=[`core/management`,`core/room`],ST=16;function CT(){let e=new Uint8Array(ST);return crypto.getRandomValues(e),e}function wT(e){if(e?.direct!==void 0)return{session:e.direct,target:void 0};if(e?.relay!==void 0)return{session:e.relay.hub,target:e.relay.peer};throw Error(`conversation is not connected`)}function TT(e,t,n){let[r,i]=(0,D.useReducer)(ZC,new Map),a=ky(e.deviceId);(0,D.useEffect)(()=>{let e=new AbortController;return(async()=>{for(let t of await n.roomPaths()){let r=await n.list(t);if(e.signal.aborted)return;i({type:`restored`,roomPath:t,participants:QC(t,a),messages:r})}})(),()=>{e.abort()}},[n,a]);let o=(0,D.useRef)(new Map),s=(0,D.useRef)(new Map);function c(n,r){let a=new Map,o={get:async(e,t)=>Promise.resolve(a.get(e)?.get(t)),set:(e,t,n)=>{let r=a.get(e)??new Map;r.set(t,n),a.set(e,r)},currentEpoch:async e=>Promise.resolve([...a.get(e)?.keys()??[]].sort((e,t)=>t-e)[0])},s={},c=()=>{let e=s.wiring;e!==void 0&&e.readRoom(r).then(e=>{i({type:`notices`,roomPath:r,notices:[...e]})})},l=yT({session:n,storage:kw(),identity:e,clock:t,revocation:jC,roomKeys:o,onChange:()=>{c()}});return s.wiring=l,{wiring:l,roomKeys:o,refresh:c}}function l(r,a){return{onMessage:e=>{let t={direction:`received`,text:e.text,messageId:e.messageId,sentAt:e.sentAt};n.append(r,t),i({type:`message`,roomPath:r,message:t})},onJoinRequest:e=>{i({type:`join-request`,roomPath:r,request:{requesterHex:ky(e.requesterDevice),async decide(t){i({type:`join-request-settled`,roomPath:r}),await e.decide(t)}}})},onRekey:async n=>{if(a===void 0){await n.respond({result:`error`,code:`unsupported_route`});return}let i=s.current.get(r);if(i===void 0){await n.respond({result:`error`,code:`no_token`});return}await Qw({identity:e,clock:t,revocation:jC,ownRoomMemberToken:i,onRekey:e=>{e.contentKeys.forEach((t,n)=>{a.roomKeys.set(r,e.keyEpoch-e.contentKeys.length+1+n,t)}),a.refresh()}})(n)}}}let u=(0,D.useCallback)(async(s,u)=>{let d={},f=await Wb(s,e,xT,{clock:t,onFrame:(e,t)=>{d.current?.(t)}}),p=u??await f.peerDeviceId,m=ky(p),h=Xb(a,m);if(r.get(h)?.direct!==void 0){await f.close();return}let g=c(f,h);o.current.set(h,g),d.current=e=>{g.wiring.handleFrame(e)},i({type:`direct-opened`,roomPath:h,participants:[m],session:f}),i({type:`restored`,roomPath:h,participants:[m],messages:await n.list(h)}),Ow(f,{identity:e,clock:t,revocation:jC,peerDevice:p,currentMembers:()=>[e.deviceId,p]},l(h,g)),(async()=>{for await(let e of f.events)e.state.status===`closed`&&i({type:`direct-closed`,roomPath:h})})()},[e,t,a,r,n]),d=(0,D.useCallback)(async(a,c,l)=>{let u=r.get(a),{session:d,target:f}=wT(u),p=u?.token;if(p===void 0){l(`awaiting-approval`);let n=await Dw(d,a,f);l(`sending`),p=n.token,s.current.set(a,p),i({type:`token`,roomPath:a,token:p});let r=o.current.get(a);u?.direct!==void 0&&r!==void 0&&bT({session:u.direct,identity:e,clock:t,revocation:jC,ownRoomMemberToken:p,roomPath:a,roomKeys:r.roomKeys}).catch(()=>void 0)}let m=await Ew(d,a,c,p,f);if(m.result!==`ok`)throw Error(`send failed: ${m.code}`);let h={direction:`sent`,text:c,messageId:CT(),sentAt:t.now()};return await n.append(a,h),h},[r,t,n,e]),f=(0,D.useCallback)(async(e,t,n)=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`sending`}});try{let r=await d(e,n,r=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:r}})});i({type:`message`,roomPath:e,message:r}),i({type:`outgoing-removed`,roomPath:e,localId:t})}catch(r){i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`failed`,error:r instanceof Error?r.message:String(r)}})}},[d]),p=(0,D.useCallback)(async(e,t)=>f(e,crypto.randomUUID(),t),[f]),m=(0,D.useCallback)(async(e,t)=>{let n=r.get(e)?.outgoing.find(e=>e.localId===t);n!==void 0&&await f(e,t,n.text)},[r,f]),h=(0,D.useCallback)((e,t)=>{i({type:`outgoing-removed`,roomPath:e,localId:t})},[]),g=(0,D.useCallback)(async(n,a)=>{let c=r.get(n),l=c?.direct,u=o.current.get(n);if(l===void 0||u===void 0)throw Error(`durable notices need a direct connection`);let d=c?.token??s.current.get(n);d===void 0&&(d=(await Dw(l,n)).token,s.current.set(n,d),i({type:`token`,roomPath:n,token:d})),await bT({session:l,identity:e,clock:t,revocation:jC,ownRoomMemberToken:d,roomPath:n,roomKeys:u.roomKeys}),await u.wiring.post({room:n,token:d,contentType:`text/plain`,plaintext:new TextEncoder().encode(a)}),u.refresh()},[r,e,t]),_=(0,D.useCallback)(e=>{i({type:`read`,roomPath:e})},[]),v=(0,D.useCallback)((e,t)=>{let r=Xb(a,ky(t)),o=[ky(t)];i({type:`relay-opened`,roomPath:r,participants:o,route:{hub:e,peer:t}}),n.list(r).then(e=>{i({type:`restored`,roomPath:r,participants:o,messages:e})})},[a,n]),y=(0,D.useCallback)(n=>{let r=new Map;(async()=>{for await(let i of n.incomingManageRequests){let o=i.fromDevice;if(o===void 0)continue;let s=ky(o),c=r.get(s);if(c===void 0){c=ib(),r.set(s,c);let i=Xb(a,s);v(n,o),Ow({incomingManageRequests:c.stream},{identity:e,clock:t,revocation:jC,peerDevice:o,currentMembers:()=>[e.deviceId,o]},l(i,void 0))}c.push(i)}})()},[e,t,a,v]),b=(0,D.useCallback)(e=>{i({type:`hub-closed`,hub:e})},[]);return{conversations:[...r.values()],openRelay:v,watchHub:y,dropHub:b,attach:u,send:p,retry:m,discard:h,postNotice:g,markRead:_}}function ET(e,t){let n=new Map(t.map(e=>[e,ib()]));return(async()=>{for await(let t of e)n.get(t.command.verb)?.push(t)})(),{stream:e=>{let t=n.get(e);if(t===void 0)throw Error(`the demux was not built to carry verb ${e}`);return t.stream}}}var DT=8787,OT=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function kT(e){return OT.test(e)}async function AT(e=DT){try{return await fetch(`http://127.0.0.1:${String(e)}/`,{mode:`no-cors`}),`ws://127.0.0.1:${String(e)}`}catch{return}}async function jT(e=typeof location>`u`?``:location.host){return kT(e)?Promise.resolve(void 0):AT()}var MT=`q7ltm10`,NT=`ws://localhost:8787`,PT=[`core/management`,`core/exec`,`core/data`],FT=[`core/management`,`core/data`],IT=5,LT=1e3,RT=3e4,zT=2,BT={maxAttempts:IT,delayMs:e=>Math.min(LT*zT**(e-1),RT)},VT=[_C,pw];function HT(e){return e.startsWith(`ws://`)||e.startsWith(`wss://`)?e:`ws://${e}`}function UT({identity:e,clock:t,messageStore:n,discoverLocalNode:r=jT,defaultAddress:i=NT}){let[a,o]=(0,D.useState)(i),[s,c]=(0,D.useState)(FT),[l,u]=(0,D.useState)([]),[d,f]=(0,D.useState)([]),[p,m]=(0,D.useState)([]),h=TT(e,t,n),[g,_]=(0,D.useState)(),v=h.conversations.find(e=>e.roomPath===g)??h.conversations[0],{markRead:y}=h,b=v?.roomPath,x=v?.unread??0;(0,D.useEffect)(()=>{b!==void 0&&x>0&&y(b)},[b,x,y]);let S=(0,D.useRef)(h.watchHub);(0,D.useEffect)(()=>{S.current=h.watchHub},[h.watchHub]);let C=(0,D.useRef)(h.attach);(0,D.useEffect)(()=>{C.current=h.attach},[h.attach]);let w=(0,D.useRef)(l);(0,D.useEffect)(()=>{w.current=l},[l]);let T=(0,D.useRef)(s);(0,D.useEffect)(()=>{T.current=s},[s]);function ee(n,r){let i=ET(r.incomingManageRequests,VT),a=LC({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(_C)},{identity:e,clock:t,iceServers:rx,onIncomingConnection:e=>{C.current(e)}});S.current({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(pw)}),u(e=>[...e,{address:n,session:r,negotiator:a}])}async function te(e){return new Promise(t=>{f(n=>[...n,{key:BC(e.device),device:e.device,addresses:e.addresses,resolve:t}])})}function E(e,t){f(n=>(n.find(t=>t.key===e)?.resolve(t),n.filter(t=>t.key!==e)))}function ne(){let n={current:null},r=Ub(nx(),e,t,BT,[],e=>{n.current?.considerAdvert(e)});return n.current=Kb({selfDeviceId:e.deviceId,shouldExpand:te,dial:O,onExpanded:(e,t,n)=>{ee(t,n)}}),r}async function O(e){let t=ne();return t.connect(HT(e),T.current).then(()=>t)}function re(e){if(w.current.some(t=>t.address===e))return;let t=ne();ee(e,t),t.connect(e,s).catch(()=>{})}let ie=(0,D.useRef)(re);(0,D.useEffect)(()=>{ie.current=re});let ae=(0,D.useRef)(r);(0,D.useEffect)(()=>{ae.current=r},[r]);let oe=(0,D.useRef)(!1);(0,D.useEffect)(()=>{oe.current||(oe.current=!0,ae.current().then(e=>{e!==void 0&&ie.current(e)}))},[]);function k(e){e.preventDefault(),re(a)}function A(e){h.dropHub(e.session),e.session.close(),u(t=>t.filter(t=>t.session!==e.session))}function se(t,n){h.openRelay(t.session,n),_(Xb(ky(e.deviceId),ky(n))),t.negotiator.initiate(n).then(async e=>h.attach(e,n)).catch(e=>{m(t=>[...t,{key:crypto.randomUUID(),peer:BC(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,M.jsxs)(Za,{className:MT,p:`md`,gap:`lg`,children:[(0,M.jsx)(Co,{order:1,children:`wire-mesh console`}),(0,M.jsxs)(`form`,{onSubmit:k,children:[(0,M.jsxs)(mi,{align:`flex-end`,wrap:`wrap`,children:[(0,M.jsx)(_o,{label:`Node`,value:a,onChange:e=>{o(e.currentTarget.value)},required:!0,style:{flex:1,minWidth:`16rem`}}),(0,M.jsx)(ka,{type:`submit`,children:`Connect`})]}),(0,M.jsx)(_a.Group,{label:`Domains offered`,value:s,onChange:c,children:(0,M.jsx)(mi,{mt:`xs`,children:PT.map(e=>(0,M.jsx)(_a,{value:e,label:e},e))})})]}),(0,M.jsx)(GC,{peers:d,onConnect:e=>{E(e,!0)},onDismiss:e=>{E(e,!1)}}),l.map(e=>(0,M.jsx)(WC,{address:e.address,session:e.session,onClose:()=>{A(e)},onMessagePeer:t=>{se(e,t)}},e.address)),p.map(e=>(0,M.jsxs)(Wi,{color:`yellow`,title:`No direct connection to ${e.peer}`,withCloseButton:!0,onClose:()=>{m(t=>t.filter(t=>t.key!==e.key))},children:[e.reason,`. Messages go through the hub instead.`]},e.key)),(0,M.jsx)(tw,{conversations:h.conversations,selected:v?.roomPath,onSelect:_}),v!==void 0&&(0,M.jsx)(fw,{view:v,onSend:async e=>h.send(v.roomPath,e),onPostNotice:async e=>h.postNotice(v.roomPath,e),onRetry:e=>{h.retry(v.roomPath,e)},onDiscard:e=>{h.discard(v.roomPath,e)}},v.roomPath)]})}var WT=`modulepreload`,GT=function(e){return`/`+e},KT={},qT=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=GT(t,n),t=s(t),t in KT)return;KT[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:WT,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},JT=`false`,YT=`false`,XT=JT===`true`,ZT=YT===`true`;function QT(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,c,l,u,d=async(e=!0)=>{await l,XT||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await qT(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:e}},[]).then(({Workbox:e})=>new e(`/sw.js`,{scope:`/`,type:`classic`})).catch(e=>{s?.(e)}),!c)return;if(u=()=>{c?.messageSkipWaiting()},!ZT){if(XT)c.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),c.addEventListener(`installed`,e=>{e.isUpdate||i?.()});else{let e=!1,t=()=>{e=!0,c?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),r?.()};c.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&i?.():n.isExternal?t():!e&&i?.():n.isUpdate||i?.()}),c.addEventListener(`waiting`,t)}}c.register({immediate:t}).then(e=>{o?o(`/sw.js`,e):a?.(e)}).catch(e=>{s?.(e)})}}return l=f(),d}function $T(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,[c,l]=(0,D.useState)(!1),[u,d]=(0,D.useState)(!1),[f]=(0,D.useState)(()=>QT({immediate:t,onNeedReload:n,onOfflineReady(){d(!0),i?.()},onNeedRefresh(){l(!0),r?.()},onRegistered:a,onRegisteredSW:o,onRegisterError:s}));return{needRefresh:[c,l],offlineReady:[u,d],updateServiceWorker:f}}function eE(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=$T();function a(){t(!1),r(!1)}return!e&&!n?null:(0,M.jsx)(qa,{onClose:a,closeButtonProps:{"aria-label":`Dismiss`},title:n?`Update available`:`Ready to work offline`,pos:`fixed`,bottom:`1rem`,right:`1rem`,style:{zIndex:1e3},children:(0,M.jsx)(mi,{gap:`xs`,children:n?(0,M.jsx)(ka,{size:`xs`,onClick:()=>{i(!0)},children:`Reload`}):void 0})})}var tE=`ws://localhost:8787`;function nE(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function rE(e,t){return e?tE:nE(t)}var iE=await vl(await No()),aE={now:()=>Date.now()},oE=Iy(await No()),sE=rE(!1,window.location),cE=document.getElementById(`root`);if(cE===null)throw Error(`missing #root element`);(0,wo.createRoot)(cE).render((0,M.jsx)(D.StrictMode,{children:(0,M.jsxs)(Vt,{children:[(0,M.jsx)(UT,{identity:iE,clock:aE,messageStore:oE,defaultAddress:sE}),(0,M.jsx)(eE,{})]})}));
@@ -10,7 +10,7 @@
10
10
  <meta name="theme-color" content="#1971c2" />
11
11
  <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
12
12
  <title>wire-mesh console</title>
13
- <script type="module" crossorigin src="/assets/index-CYmphOiG.js"></script>
13
+ <script type="module" crossorigin src="/assets/index-SXjQW5Qu.js"></script>
14
14
  <link rel="stylesheet" crossorigin href="/assets/index-BMlnc-0m.css">
15
15
  <link rel="manifest" href="/manifest.webmanifest"></head>
16
16
  <body>
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let t={};const l=e=>i(e,r),f={module:{uri:r},exports:t,require:l};s[r]=Promise.all(n.map(e=>f[e]||l(e))).then(e=>(o(...e),t))}}define(["./workbox-2fbc6a65"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"index.html",revision:"1d0672b59202342b4ae8f7b2f2a01875"},{url:"assets/workbox-window.prod.es5-Bd17z0YL.js",revision:null},{url:"assets/index-CYmphOiG.js",revision:null},{url:"assets/index-BMlnc-0m.css",revision:null},{url:"favicon.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"icons/icon-192x192.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"icons/icon-512x512.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"manifest.webmanifest",revision:"89b97e994ecf3ebc89bc570153e191ad"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});
1
+ if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let t={};const l=e=>i(e,r),d={module:{uri:r},exports:t,require:l};s[r]=Promise.all(n.map(e=>d[e]||l(e))).then(e=>(o(...e),t))}}define(["./workbox-2fbc6a65"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"index.html",revision:"946e56d71b410e85de90485f6245a079"},{url:"assets/workbox-window.prod.es5-Bd17z0YL.js",revision:null},{url:"assets/index-SXjQW5Qu.js",revision:null},{url:"assets/index-BMlnc-0m.css",revision:null},{url:"favicon.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"icons/icon-192x192.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"icons/icon-512x512.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"manifest.webmanifest",revision:"89b97e994ecf3ebc89bc570153e191ad"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "wire-mesh",
3
- "version": "3.0.3",
3
+ "version": "3.1.1",
4
4
  "bin": {
5
5
  "wire-mesh": "./dist/server.mjs"
6
6
  },
7
7
  "dependencies": {
8
8
  "cbor2": "2.3.0",
9
- "wire-mesh-core": "3.0.1",
9
+ "wire-mesh-core": "3.1.0",
10
10
  "ws": "8.21.3"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@arethetypeswrong/cli": "0.18.5",
14
14
  "@exadev/eslint-config": "2.18.0",
15
- "@exadev/wire-mesh-web-console": "2.6.1",
15
+ "@exadev/wire-mesh-web-console": "2.6.3",
16
16
  "@types/node": "26.4.1",
17
17
  "@types/ws": "8.18.1",
18
18
  "eslint": "10.10.0",