wire-mesh 3.2.0 → 3.3.0
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.
|
@@ -67,6 +67,6 @@ ${Tc.repeat(a.depth)}}`:a.close=`}`;break}case I.TAG:o+=String(c),o+=Oc(I.POS_IN
|
|
|
67
67
|
|
|
68
68
|
`)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Pl,c=!Cu.jitless,l=c&&Fl.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=>Tl(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)||kl(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=Cl(()=>{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(!Pl(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(Il(e)&&Il(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(!Il(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=bl(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>Rl.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>zl(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`?zl(e):e?zl(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(`^(${Tl(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(`^(${Tl(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),Ol(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 ${Vl(e.values[0])}`:`Invalid option: expected one of ${xl(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`:``}: ${xl(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`,...B(t)})}function Yp(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...B(t)})}function Xp(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...B(t)})}function Zp(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...B(t)})}function Qp(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...B(t)})}function $p(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...B(t)})}function em(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...B(t)})}function tm(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...B(t)})}function nm(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...B(t)})}function rm(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...B(t)})}function im(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...B(t)})}function am(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...B(t)})}function om(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...B(t)})}function sm(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...B(t)})}function cm(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...B(t)})}function lm(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...B(t)})}function um(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...B(t)})}function dm(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...B(t)})}function fm(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...B(t)})}function pm(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...B(t)})}function mm(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...B(t)})}function hm(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...B(t)})}function gm(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...B(t)})}function _m(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...B(t)})}function vm(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...B(t)})}function ym(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...B(t)})}function bm(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...B(t)})}function xm(e,t){return new e({type:`number`,checks:[],...B(t)})}function Sm(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...B(t)})}function Cm(e,t){return new e({type:`boolean`,...B(t)})}function wm(e,t){return new e({type:`null`,...B(t)})}function Tm(e){return new e({type:`unknown`})}function Em(e,t){return new e({type:`never`,...B(t)})}function Dm(e,t){return new Pd({check:`less_than`,...B(t),value:e,inclusive:!1})}function Om(e,t){return new Pd({check:`less_than`,...B(t),value:e,inclusive:!0})}function km(e,t){return new Fd({check:`greater_than`,...B(t),value:e,inclusive:!1})}function Am(e,t){return new Fd({check:`greater_than`,...B(t),value:e,inclusive:!0})}function jm(e,t){return new Id({check:`multiple_of`,...B(t),value:e})}function Mm(e,t){return new Rd({check:`max_length`,...B(t),maximum:e})}function Nm(e,t){return new zd({check:`min_length`,...B(t),minimum:e})}function Pm(e,t){return new Bd({check:`length_equals`,...B(t),length:e})}function Fm(e,t){return new Hd({check:`string_format`,format:`regex`,...B(t),pattern:e})}function Im(e){return new Ud({check:`string_format`,format:`lowercase`,...B(e)})}function Lm(e){return new Wd({check:`string_format`,format:`uppercase`,...B(e)})}function Rm(e,t){return new Gd({check:`string_format`,format:`includes`,...B(t),includes:e})}function zm(e,t){return new Kd({check:`string_format`,format:`starts_with`,...B(t),prefix:e})}function Bm(e,t){return new qd({check:`string_format`,format:`ends_with`,...B(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=>Ml(e))}function qm(e,t,n){return new e({type:`array`,element:t,...B(n)})}function Jm(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...B(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`,...B(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)&&kl(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))}kl(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,kl(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=bl(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)kl(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)kl(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,Sl,2)}),Gh(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Sl,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(Al(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 Bl(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 V(this,e)},safeExtend(e){return H(this,e)},merge(e){return Kl(this,e)},pick(e){return Wl(this,e)},omit(e){return Gl(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??{},...B(t)})}function Jg(e,t){return new qg({type:`object`,shape:e,catchall:Wg(),...B(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,...B(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,...B(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,...B(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,...B(t)}):new r_({type:`record`,keyType:e,valueType:t,...B(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:[],...B(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:[],...B(r),entries:i})}});function o_(e,t){return new a_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...B(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],...B(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():Ll(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():Ll(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,...B(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,...B(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(gc(n,$s)))},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=il(n,al);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=gc(t,$s),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/byte-stream-connection":{import:`./dist/adapters/byte-stream-connection.mjs`,require:`./dist/adapters/byte-stream-connection.cjs`},"./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/pinned-address":{import:`./dist/domain/pinned-address.mjs`,require:`./dist/domain/pinned-address.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(gc(e,$s))}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=il(new Uint8Array(e),al),n=Q_.safeParse(t);if(!n.success)throw new db(n.error.message);return n.data}function pb(e){let t;try{t=il(e,al)}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,fe(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 fe(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 fe(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=`#sha256=`,$b=/^[0-9a-f]{64}$/;function ex(e){let t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*2,n*2+2),16);return t}function tx(e){return e.startsWith(`https://`)&&e.includes(Qb)}function nx(e){let t=new URL(e),n=t.hash.startsWith(Qb)?t.hash.slice(8):``;if(t.protocol!==`https:`||!$b.test(n))throw Error(`expected "https://host:port${Qb}<64 hex digits>", got "${e}"`);return t.hash=``,{url:t.toString(),sha256:ex(n)}}var rx=4,ix=1024,ax=ix*ix*100,ox=new Uint8Array(rx);function sx(e){let t=gc(e,$s),n=new Uint8Array(rx+t.length);return new DataView(n.buffer).setUint32(0,t.length),n.set(t,rx),n}function cx(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}async function*lx(e){let t=new Uint8Array;try{for(;;){let n=await e.read();if(n.done)return;for(t=cx(t,n.value);t.length>=rx;){let e=new DataView(t.buffer,t.byteOffset).getUint32(0);if(e>104857600)throw Error(`frame of ${String(e)} bytes exceeds the ${String(ax)}-byte limit`);if(t.length<rx+e)break;if(e===0){t=t.slice(rx);continue}let n=t.slice(rx,rx+e);t=t.slice(rx+e);let r=Q_.safeParse(il(n,al));r.success&&(yield r.data)}}}catch(t){throw await e.cancel(t),t}}function ux(e,t={opened:!1}){let n=e.writable.getWriter(),r=e.readable.getReader(),i=lx(r),a=t.opened?n.write(ox):Promise.resolve();return a.catch(()=>void 0),{send:async e=>{await a,await n.write(sx(e))},receive:()=>i,close:async()=>{await n.close(),await r.cancel()}}}var dx=`/wire-mesh`,fx=`the web console is a client only: it cannot listen`;function px(){return{async connect(e){if(typeof WebTransport>`u`)throw Error(`this browser does not support WebTransport`);let{url:t,sha256:n}=nx(e),r=new WebTransport(new URL(dx,t).toString(),{serverCertificateHashes:[{algorithm:`sha-256`,value:n}]});return await r.ready,ux(await r.createBidirectionalStream(),{opened:!0})},async listen(){return Promise.reject(Error(fx))}}}var mx=1e3,hx=1002,gx=`the web console is a client only: it cannot listen`;function _x(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(hx,`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(hx,`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(mx),Promise.resolve()}}}function vx(){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(()=>_x(n))},async listen(){return Promise.reject(Error(gx))}}}function yx(){let e=vx(),t=px();return{connect:async n=>tx(n)?t.connect(n):e.connect(n),listen:async(t,n)=>e.listen(t,n)}}var bx=[{urls:`stun:stun.cloudflare.com:3478`}],xx=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),Sx=i_(K(),q()),Cx=o_([`ms`,`s`,`min`,`h`,`d`]);Qg(`kind`,[J({kind:Y(`number`),value:q(),unit:Sx.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:Cx}),J({kind:Y(`complex`),re:q(),im:q(),unit:Sx.optional()})]);function wx(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function Tx(e,t){let n=wx(e),r=wx(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function Ex(e,t){let n=wx(e),r=wx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return wx(i)}function Dx(e,t){let n=wx(e),r=wx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return wx(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 Ox(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var kx=X(()=>Xg([K(),q(),Rg(),Bg(),Kg(kx),i_(K(),kx)])),Ax=o_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),jx=o_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),Mx=o_([`in`,`notIn`]),Nx=o_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),Px=o_([`first`,`unique`]),Fx=J({kind:Y(`not`),get operand(){return qx}}),Ix=J({kind:Y(`and`),get left(){return qx},get right(){return qx}}),Lx=J({kind:Y(`or`),get left(){return qx},get right(){return qx}}),Rx=J({kind:Y(`allOf`),get operands(){return Kg(qx)}}),zx=J({kind:Y(`anyOf`),get operands(){return Kg(qx)}}),Bx=J({kind:Y(`compare`),op:Ax,get left(){return cS},get right(){return cS}}),Vx=J({kind:Y(`textCompare`),op:jx,get left(){return cS},get right(){return cS}}),Hx=J({kind:Y(`memberOf`),op:Mx,get operand(){return cS},get candidates(){return Kg(cS)}}),Ux=J({kind:Y(`exists`),get operand(){return cS}}),Wx=J({kind:Y(`some`),collection:kx,get item(){return qx},get filter(){return qx.optional()}}),Gx=J({kind:Y(`every`),collection:kx,get item(){return qx},get filter(){return qx.optional()}}),Kx=J({kind:Y(`treeReference`),key:kx}),qx=Qg(`kind`,[Fx,Ix,Lx,Rx,zx,Bx,Vx,Hx,Ux,Wx,Gx,Kx]),Jx=J({kind:Y(`numberLiteral`),value:q(),unit:Sx.optional()}),Yx=J({kind:Y(`textLiteral`),value:K()}),Xx=J({kind:Y(`booleanLiteral`),value:Rg()}),Zx=J({kind:Y(`instantLiteral`),value:K()}),Qx=J({kind:Y(`durationLiteral`),value:q(),unit:Cx}),$x=Xg([Jg({kind:Y(`complexLiteral`),re:q(),im:q(),unit:Sx.optional()}),Jg({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:Sx.optional()})]),eS=J({kind:Y(`reference`),key:kx,unit:Sx.optional()}),tS=J({kind:Y(`arithmetic`),op:Nx,get left(){return cS},get right(){return cS}}),nS=J({kind:Y(`negate`),get operand(){return cS}}),rS=J({kind:Y(`call`),fn:K(),get args(){return Kg(cS)}}),iS=J({kind:Y(`lookup`),table:kx,get keys(){return Kg(cS)}}),aS=J({get when(){return qx},get then(){return cS}}),oS=J({kind:Y(`conditional`),hitPolicy:Px.optional(),get cases(){return Kg(aS)},get fallback(){return cS}}),sS=Qg(`mode`,[J({mode:Y(`max`),get item(){return cS}}),J({mode:Y(`min`),get item(){return cS}}),J({mode:Y(`reduce`),get initial(){return cS},get combine(){return cS}})]),cS=Xg([Qg(`kind`,[Jx,Yx,Xx,Zx,Qx,eS,tS,nS,rS,iS,oS,J({kind:Y(`fold`),collection:kx,get filter(){return qx.optional()},combiner:sS}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:kx}),Kx]),$x]),lS={},uS=1e4;function dS(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 fS(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 pS(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function mS(e,t){return t>=e.from&&t<=e.to}function hS(e,t){let n=e.ranges.some(e=>mS(e,t));return e.negated?!n:n}var gS=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 _S(e){return e.charCodeAt(0)}function vS(e,t){return{from:_S(e),to:_S(t)}}function yS(e){let t=_S(e);return{from:t,to:t}}var bS=[vS(`0`,`9`)],xS=[vS(`A`,`Z`),vS(`a`,`z`),vS(`0`,`9`),yS(`_`)],SS=[yS(` `),yS(` `),yS(`
|
|
71
|
-
`),
|
|
72
|
-
`,t:` `,r:`\r`,f:`\f`,v:`\v`},ES=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 gS(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()||wS.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!wS.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 gS(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 gS(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 gS(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 gS(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 gS(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 gS(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 gS(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new gS(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 CS(t);let n=TS[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new gS(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 gS(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new gS(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 gS(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return CS(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new gS(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=TS[t];if(n===void 0)throw new gS(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new gS(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 gS(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 gS(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 gS(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=TS[t];if(n===void 0)throw new gS(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new gS(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function DS(e){let t=new ES(e),n=t.parseAlternation();if(!t.atEnd())throw new gS(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var OS=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=>hS(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 kS(e){return new OS().build(e)}function AS(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 jS(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 MS(e,t){let n=t.length,r=AS(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=jS(e,r,a);if(o.add(e.start),r=AS(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function NS(e){let t=kS(DS(e));return{test:e=>MS(t,e)}}function PS(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=Ox(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function FS(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=Ox(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function IS(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 LS={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function RS(e,t){return e*LS[t]}function zS(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function BS(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function VS(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 HS(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?Tx(t.unit,n.unit)?Q(IS(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=zS(t.value);if(r===void 0)return BS(t.value);let i=zS(n.value);return i===void 0?BS(n.value):Q(IS(e,r,i))}case`duration`:return n.kind===`duration`?Q(IS(e,RS(t.value,t.unit),RS(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`?Tx(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 US(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=NS(n.value)}catch(e){let t=e instanceof gS?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 WS(e,t){switch(e.kind){case`number`:return t.kind===`number`?Tx(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=zS(e.value);if(n===void 0)return BS(e.value);let r=zS(t.value);return r===void 0?BS(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(RS(e.value,e.unit)===RS(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?Tx(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 GS(e){return Tx(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 qS(e,t,n){switch(e){case`add`:return Tx(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 Tx(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:Ex(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:Dx(t.unit,n.unit)});case`power`:return!GS(t.unit)||!GS(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!GS(t.unit)||!GS(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:RS(t.value,t.unit)+RS(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:RS(t.value,t.unit)-RS(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 YS(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function XS(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:Ex(e.unit,t.unit)}}function ZS(e,t,n){switch(e){case`add`:return Tx(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 Tx(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(XS(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:Dx(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function QS(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!GS(e.unit)||!GS(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=YS(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=XS(i,r);return t.value>=0?Q(i):ZS(`divide`,n,i)}function $S(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=zS(t.value);if(e===void 0)return BS(t.value);let r=zS(n.value);return r===void 0?BS(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=zS(t.value);return e===void 0?BS(t.value):VS(e+RS(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=zS(n.value);return e===void 0?BS(n.value):VS(e+RS(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`?QS(t,n):ZS(e,YS(t),YS(n)):qS(e,t,n)}function eC(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(!Tx(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function tC(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 nC(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 nC(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([nC(e.left,t,n,r,i,a,o,s,c+1),nC(e.right,t,n,r,i,a,o,s,c+1)]);return PS(l,u)}case`or`:{let[l,u]=await Promise.all([nC(e.left,t,n,r,i,a,o,s,c+1),nC(e.right,t,n,r,i,a,o,s,c+1)]);return FS(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>nC(e,t,n,r,i,a,o,s,c+1)))).reduce(PS,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>nC(e,t,n,r,i,a,o,s,c+1)))).reduce(FS,Q(!1));case`compare`:{let[l,u]=await Promise.all([rC(e.left,t,n,r,i,a,o,s,c+1),rC(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:HS(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([rC(e.left,t,n,r,i,a,o,s,c+1),rC(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:US(e.op,l.value,u.value)}case`memberOf`:{let l=await rC(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 rC(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:WS(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=Ox(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await rC(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 fS(nC,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`?nC(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?FS:PS,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=qx.safeParse(u.node);return d.success?nC(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 rC(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=eC(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=>rC(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 tC(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(xx(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([rC(e.left,t,n,r,i,a,o,s,c+1),rC(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:$S(e.op,l.value,u.value)}case`negate`:{let l=await rC(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=>rC(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 nC(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return rC(u,t,n,r,i,a,o,s,c+1)}return rC(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 nC(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=Ox(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return rC(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await fS(nC,e.collection,e.filter,t,n,i,a,o,s,c+1),l=pS(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 rC(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 rC(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 rC(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=HS(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=cS.safeParse(u.node);return d.success?rC(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 iC({functions:e=lS,maxNodes:t=uS,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>nC(r,i,a,void 0,e,new Set,0,dS(t,n),0),evaluateValue:async(r,i,a)=>rC(r,i,a,void 0,e,new Set,0,dS(t,n),0)}}var{evaluatePredicate:aC,evaluateValue:oC}=iC({}),sC=Kg(qx),cC=`bearer-is`,lC=`expires-at`,uC=`scope-narrows`,dC=`capability-is`,fC=`depth-remaining`,pC=[cC,lC,uC,dC,fC];function mC(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}function hC(e){return{found:!0,value:{kind:`boolean`,value:e}}}var gC={[cC]:(e,t)=>t.parentClaims===void 0?hC(!1):hC(Ly(t.parentClaims.bearer,t.childIssuer)),[lC]:(e,t)=>t.parentClaims===void 0?hC(!1):hC(t.candidate.expires<=t.parentClaims.expires),[uC]:(e,t)=>t.parentClaims===void 0?hC(!1):hC(By(t.parentClaims.scope,t.candidate.scope)),[dC]:(e,t)=>t.parentClaims===void 0?hC(!1):hC(t.parentClaims.capability===t.candidate.capability),[fC]:(e,t)=>{if(t.parentClaims===void 0)return hC(!1);let n=t.parentClaims[`delegations-remaining`];return hC(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function _C(e){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:null},right:{kind:`booleanLiteral`,value:!0}}}var vC=async()=>Promise.resolve({found:!1}),yC=async()=>Promise.resolve({found:!1}),bC=async()=>Promise.resolve([]);async function xC(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:vC,resolveLookup:yC,resolveCollection:bC,resolveDelegate:async(e,t)=>mC(e)?gC[e](t,r):{found:!1}};for(let e of pC){let t=await aC(_C(e),r,i);if(t.status!==`definite`||!t.value)return e}}async function SC(e,t,n,r={}){let i={clock:n,claims:t},a={resolveValue:vC,resolveLookup:yC,resolveCollection:bC,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 aC(t,i,a);if(e.status!==`definite`||!e.value)return{ok:!1,reason:`not_satisfied`}}return{ok:!0}}function CC(e,t){return gc([`Signature1`,e,new Uint8Array,t],$s)}function wC(e){return Uint8Array.from(e)}function TC(e){return wC(gc(e,$s))}function EC(e){return TC({1:e.identityKey.alg,4:e.deviceId})}function DC(e){let[,,t]=e;if(t===null)return;let n;try{n=il(t,al)}catch{return}let r=ry.safeParse(n);return r.success?r.data:void 0}async function OC(e,t){let n=await AC(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 kC(e,t,n){if(Ly(e.issuer,t.issuer))return!0;if(e.authorization===void 0)return!1;let r;try{r=il(e.authorization,al)}catch{return!1}let i=ny.safeParse(r);if(!i.success)return!1;let a=await OC(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&By(a.claims.scope,t.scope)}async function AC(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=il(r,al)}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`],CC(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 kC(e,s,t))return{ok:!1,reason:`revoked`};if(s.conditions!==void 0){let e;try{e=il(s.conditions,al)}catch{return{ok:!1,reason:`conditions_invalid`}}let n=sC.safeParse(e);if(!n.success)return{ok:!1,reason:`conditions_invalid`};if(!(await SC(n.data,s,t.clock,t.extraPredicateResolvers)).ok)return{ok:!1,reason:`conditions_not_satisfied`}}if(s.parent!==void 0){let e;try{e=il(s.parent,al)}catch{return{ok:!1,reason:`parent_invalid`}}let n=ny.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let r=await AC(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 xC(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 jC={"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 MC(e,t,n){let r=await xC(e,t,n);return r===void 0?void 0:jC[r]}async function NC(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};let t;if(e.parent!==void 0){let n=DC(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await MC(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=TC(e.parent)}let n=TC({"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:TC(e.conditions)}}),r=EC(e.identity);return{ok:!0,token:[r,{},n,await e.identity.sign(CC(r,n))]}}var PC=`webrtc:signal`,FC={kind:`node`};function IC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function LC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function RC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function zC(e,t){return{verb:PC,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function BC(e,t){return{verb:PC,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function VC(e,t){return{verb:PC,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function HC(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 UC(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 WC(){let e=0;return()=>{let t=e;return e+=1,t}}async function GC(e,t){if(e.token===void 0)return!1;let n=await OC(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===FC.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 qC=`wire-mesh`,JC={entriesFor:async()=>Promise.resolve([])};function YC(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function XC(e,t){e.addEventListener(`open`,()=>{t(KC(e))},{once:!0})}var ZC=16,QC=36e5;async function $C(e,t){let n=new Uint8Array(ZC);crypto.getRandomValues(n);let r=await NC({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:PC,scope:FC,expires:t.now()+QC});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function ew(e,t){let n={identity:t.identity,clock:t.clock,revocation:JC},r=new Map,i=new Map,a=WC();async function o(t,n){let r=VC(t,n===null?void 0:HC(n));await e.sendManageRequest(r,FC,i.get(t))}async function s(a,s){if(!await GC(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),YC(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{e.channel.binaryType=`arraybuffer`,XC(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(BC(c,u.sdp??``),FC,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:UC(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;IC(e)?await s(t,e):LC(e)?await c(t,e):RC(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),YC(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(qC);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{XC(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(zC(s,d.sdp??``),FC,n,await $C(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 tw(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 nw=16;function rw(e){let t=``;for(let n of e)t+=n.toString(nw).padStart(2,`0`);return t}function iw(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 aw(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${iw(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}function ow(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function sw({address:e,session:t,onClose:n,onMessagePeer:r}){let i=tw(t),a=i===void 0?`idle`:aw(i),o=i?.directory??[],s=i?.frameLog??[];return(0,j.jsxs)(La,{withBorder:!0,padding:`md`,radius:`md`,children:[(0,j.jsxs)(hi,{justify:`space-between`,mb:`xs`,children:[(0,j.jsx)(Xi,{fw:600,children:e}),(0,j.jsxs)(hi,{children:[(0,j.jsx)(Aa,{size:`xs`,disabled:i?.state.status!==`connected`,onClick:()=>{t.sendPing()},children:`Send ping`}),(0,j.jsx)(Aa,{size:`xs`,color:`red`,variant:`light`,onClick:n,children:`Disconnect`})]})]}),(0,j.jsx)(Xi,{fw:600,size:`sm`,mb:`sm`,children:a}),(0,j.jsx)(Xi,{fw:600,size:`sm`,children:`Peer directory`}),o.length===0?(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,children:`No gossip received yet.`}):(0,j.jsxs)(P,{striped:!0,children:[(0,j.jsx)(P.Thead,{children:(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Th,{children:`device`}),(0,j.jsx)(P.Th,{children:`addresses`}),(0,j.jsx)(P.Th,{children:`snapshot (unix s)`}),(0,j.jsx)(P.Th,{})]})}),(0,j.jsx)(P.Tbody,{children:o.map(e=>(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Td,{children:rw(e.device)}),(0,j.jsx)(P.Td,{children:e.advert.addresses.join(`, `)}),(0,j.jsx)(P.Td,{children:e.advert[`snapshot-seconds`]}),(0,j.jsx)(P.Td,{children:(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{r(e.device)},children:`Message`})})]},rw(e.device)))})]}),(0,j.jsx)(Xi,{fw:600,size:`sm`,mt:`md`,children:`Frame log`}),(0,j.jsx)(P.ScrollContainer,{minWidth:0,h:384,children:(0,j.jsxs)(P,{children:[(0,j.jsx)(P.Thead,{children:(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Th,{children:`direction`}),(0,j.jsx)(P.Th,{children:`frame`})]})}),(0,j.jsx)(P.Tbody,{children:s.map((e,t)=>(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Td,{children:e.direction}),(0,j.jsx)(P.Td,{children:ow(e.frame)})]},t))})]})})]})}function cw({peers:e,onConnect:t,onDismiss:n}){return e.length===0?null:(0,j.jsxs)(La,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`discovered-peers`,children:[(0,j.jsx)(Xi,{fw:600,size:`sm`,mb:`xs`,children:`Discovered peers`}),(0,j.jsxs)(P,{striped:!0,children:[(0,j.jsx)(P.Thead,{children:(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Th,{children:`device`}),(0,j.jsx)(P.Th,{children:`addresses`}),(0,j.jsx)(P.Th,{})]})}),(0,j.jsx)(P.Tbody,{children:e.map(e=>(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Td,{children:rw(e.device)}),(0,j.jsx)(P.Td,{children:e.addresses.join(`, `)}),(0,j.jsx)(P.Td,{children:(0,j.jsxs)(hi,{gap:`xs`,children:[(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{t(e.key)},children:`Connect`}),(0,j.jsx)(Aa,{size:`xs`,variant:`light`,color:`red`,onClick:()=>{n(e.key)},children:`Dismiss`})]})})]},e.key))})]})]})}function lw(e,t){return e.sentAt===t.sentAt?Oy(e.messageId).localeCompare(Oy(t.messageId)):e.sentAt-t.sentAt}function uw(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(lw)}function dw(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function fw(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 pw(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 mw(e,t){switch(t.type){case`direct-opened`:{let n=e.get(t.roomPath)??fw(t.roomPath,t.participants);return new Map(e).set(t.roomPath,{...pw(n,t.session,n.relay),participants:t.participants,notices:[]})}case`relay-opened`:{let n=e.get(t.roomPath)??fw(t.roomPath,t.participants);return new Map(e).set(t.roomPath,pw(n,n.direct,t.route))}case`direct-closed`:return dw(e,t.roomPath,e=>pw(e,void 0,e.relay));case`hub-closed`:{let n=e;for(let r of e.values())r.relay?.hub===t.hub&&(n=dw(n,r.roomPath,e=>pw(e,e.direct,void 0)));return n}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{...fw(t.roomPath,t.participants),messages:uw([],t.messages)}):dw(e,t.roomPath,e=>({...e,messages:uw(e.messages,t.messages)}));case`notices`:return dw(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return dw(e,t.roomPath,e=>{let n=uw(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 dw(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return dw(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 dw(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return dw(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return dw(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return dw(e,t.roomPath,e=>({...e,token:t.token}))}return e}function hw(e,t){let n=Zb(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}var gw=12;function _w(e){return e.participants.length===0?e.roomPath:e.participants.map(e=>e.slice(0,gw)).join(`, `)}function vw({conversations:e,selected:t,onSelect:n}){return e.length===0?null:(0,j.jsxs)(Qa,{gap:0,"data-testid":`conversation-list`,children:[(0,j.jsx)(Xi,{fw:600,size:`sm`,mb:`xs`,children:`Conversations`}),e.map(e=>(0,j.jsx)(Wa,{active:e.roomPath===t,label:_w(e),description:e.status===`connected`?void 0:`offline`,rightSection:(0,j.jsxs)(hi,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,j.jsx)(xa,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,j.jsx)(xa,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function yw({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,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(hi,{gap:`xs`,flex:1,children:[(0,j.jsx)(vo,{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,j.jsx)(Aa,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,j.jsx)(Xi,{size:`sm`,c:`red`,children:l})]})}var bw=`You`,xw=256,Sw=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function Cw({sentAt:e}){return(0,j.jsx)(Xi,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:Sw.format(e)})}function ww({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,j.jsx)(Rr,{h:xw,viewportRef:a,children:(0,j.jsxs)(Qa,{gap:4,children:[e.map((t,r)=>{let i=t.direction===`sent`,a=r===0||e[r-1]?.direction!==t.direction;return(0,j.jsxs)(Qa,{gap:0,align:i?`flex-end`:`flex-start`,mt:a?`xs`:0,children:[a&&(0,j.jsx)(Xi,{size:`xs`,fw:600,c:`dimmed`,children:i?bw:n}),(0,j.jsx)(Xi,{size:`sm`,children:t.text}),(0,j.jsx)(Cw,{sentAt:t.sentAt})]},Oy(t.messageId))}),t.map(e=>(0,j.jsxs)(Qa,{gap:0,align:`flex-end`,mt:`xs`,children:[(0,j.jsx)(Xi,{size:`xs`,fw:600,c:`dimmed`,children:bw}),(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,children:e.text}),e.status===`failed`?(0,j.jsxs)(hi,{gap:`xs`,children:[(0,j.jsx)(Xi,{size:`xs`,c:`red`,children:`Not sent: ${e.error}`}),(0,j.jsx)(Aa,{size:`compact-xs`,variant:`light`,onClick:()=>{r(e.localId)},children:`Retry`}),(0,j.jsx)(Aa,{size:`compact-xs`,variant:`subtle`,color:`gray`,onClick:()=>{i(e.localId)},children:`Dismiss`})]}):(0,j.jsx)(Xi,{size:`xs`,c:`dimmed`,children:e.status===`awaiting-approval`?`Waiting for ${n} to allow messages`:`Sending`})]},e.localId))]})})}function Tw(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function Ew({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=Tw(e);return(0,j.jsx)(N,{children:n===void 0?(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,fs:`italic`,children:`encrypted notice -- no key held for its epoch`}):(0,j.jsx)(Xi,{size:`sm`,children:n})},t)});return(0,j.jsxs)(Qa,{gap:4,children:[t,(0,j.jsxs)(xa,{variant:`light`,color:`gray`,size:`sm`,w:`fit-content`,children:[e.length,` notice`,e.length===1?``:`s`]})]})}var Dw=864e5;function Ow(e){return e===`direct`?`direct`:e===`hub`?`via hub`:`offline`}function kw({view:e,onSend:t,onPostNotice:n,onRetry:r,onDiscard:i}){return(0,j.jsxs)(Qa,{gap:`xs`,children:[(0,j.jsxs)(hi,{justify:`space-between`,children:[(0,j.jsx)(Xi,{fw:600,children:e.participants.join(`, `)}),(0,j.jsx)(Xi,{size:`sm`,c:e.status===`connected`?`green`:`dimmed`,children:Ow(e.via)})]}),e.pendingJoinRequest&&(0,j.jsx)(Gi,{color:`blue`,title:`Message request`,children:(0,j.jsxs)(hi,{justify:`space-between`,children:[(0,j.jsxs)(Xi,{size:`sm`,children:[e.pendingJoinRequest.requesterHex,` wants to message you`]}),(0,j.jsxs)(hi,{children:[(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+Dw})},children:`Allow`}),(0,j.jsx)(Aa,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,j.jsx)(ww,{messages:e.messages,outgoing:e.outgoing,peerLabel:_w(e),onRetry:r,onDiscard:i}),(0,j.jsx)(hi,{children:(0,j.jsx)(yw,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,j.jsx)(Va,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,j.jsx)(Ew,{notices:e.notices}),e.via===`direct`?(0,j.jsx)(hi,{children:(0,j.jsx)(yw,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})}):(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,children:`Durable notices need a direct connection.`})]})}var Aw=`room:member`;async function jw(e,t){let n=await OC(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 Mw=16;function Nw(){let e=new Uint8Array(Mw);return crypto.getRandomValues(e),e}function Pw(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function Fw(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}async function Iw(e,t,n,r,i,a){let o=await e.sendManageRequest(Fw(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 Lw(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);Pw(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 NC({identity:e.identity,clock:e.clock,tokenId:Nw(),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 Rw(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 OC(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 zw=16;function Bw(){let e=new Uint8Array(zw);return crypto.getRandomValues(e),e}var Vw=3e5;function Hw(e,t,n){return{verb:Aw,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function Uw(e,t,n,r,i){let a=Hw(n,Bw(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function Ww(e,t,n){let r=await Iw(e,Aw,{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 Gw(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 jw(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=Lw({capability:Aw,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??Vw,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=Rw({capability:Aw,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 qw=32,Jw=256,Yw=12,Xw=4,Zw=8,Qw=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function $w(){return crypto.getRandomValues(new Uint8Array(qw))}function eT(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(Xw);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(Zw);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(Qw.length+n.length+t.length+r.length),a=0;return i.set(Qw,a),a+=Qw.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function tT(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(eT(t))},n,{name:`AES-GCM`,length:Jw},!1,[`encrypt`,`decrypt`])}async function nT(e,t){let n=crypto.getRandomValues(new Uint8Array(Yw)),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 rT(e,t){if(t.length<Yw)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,Yw),r=t.slice(Yw);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function iT(e,t){return nT(e,t)}async function aT(e,t){return rT(e,t)}async function oT(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function sT(e,t){return nT(await oT(e),t)}async function cT(e,t){return rT(await oT(e),t)}var lT=`+aes256gcm`;function uT(e){return fT(e)?e:`${e}${lT}`}function dT(e){return fT(e)?e.slice(0,e.length-10):e}function fT(e){return e.endsWith(lT)}function pT(e,t){return{verb:Aw,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function mT(e,t,n,r,i,a){return e.sendManageRequest(pT(n,r),{kind:`room`,path:t},i,a)}function hT(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 jw(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)=>aT(await tT(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 gT(e){return`data/${ky(e)}/head`}function _T(e,t){return`data/${ky(e)}/entry/${String(t)}`}async function vT(e,t){let n=await e.get(gT(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function yT(e,t,n){await e.set(gT(t),new TextEncoder().encode(String(n)))}async function bT(e,t){return vT(e,t)}async function xT(e,t){let n=await vT(e.storage,e.identity.deviceId)+1;return await e.storage.set(_T(e.identity.deviceId,n),t),await yT(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function ST(e,t,n){let r=await vT(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(_T(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 CT(e,t){let n=await vT(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(_T(t.peer,r),n);return await yT(e,t.peer,r),{ok:!0}}async function wT(e,t,n){let r=await vT(e,t),i=[];for(let a=n+1;a<=r;a+=1){let n=await e.get(_T(t,a));if(n===void 0)break;i.push(n)}return i}function TT(e){return Uint8Array.from(e)}function ET(e){return TT(gc(e,$s))}function DT(e){return ET({1:e.identityKey.alg,4:e.deviceId})}function OT(e,t){return gc([`Signature1`,e,new Uint8Array,t],$s)}function kT(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 AT(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=il(r,al)}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`],OT(n,r),i))return{ok:!1,reason:`bad_signature`};if(!kT(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(fT(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await jw(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 jT(e){let t=ET({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=DT(e.identity);return[n,{},t,await e.identity.sign(OT(n,t))]}var MT=16;function NT(e){return new Uint8Array(gc(e,$s))}function PT(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(MT)),c=await sT(o,e.plaintext),l=await jT({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:uT(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await xT({identity:t,storage:n},NT(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await bT(n,e);if(!(await CT(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 wT(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 AT(o,{identity:t,clock:r,revocation:i,expectedRoom:n});if(!s.ok)return{verified:!1,reason:s.reason};let c=s.claims;if(!fT(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:dT(c[`content-type`]),claims:c};if(d===void 0)return f;try{let e=await cT(d,c.content);return{...f,plaintext:e}}catch{return f}}function u(e){try{let t=il(e,al),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 FT=32;function IT(e){let{session:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=PT({identity:r,storage:n,clock:i,revocation:a,roomKeys:o}),l=new Map;async function u(e){let r=await bT(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 CT(n,e)).ok&&(e.entries.length>=FT&&await u(e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await ST(n,e,FT);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 LT(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 jw(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=$w(),f=await iT(await tT(await u(l.rootIssuerKey),{room:o,keyEpoch:1}),d);s.set(o,1,d),await mT(t,o,1,f)}var RT=[`core/management`,`core/room`],zT=16;function BT(){let e=new Uint8Array(zT);return crypto.getRandomValues(e),e}function VT(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 HT(e,t,n){let[r,i]=(0,D.useReducer)(mw,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:hw(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=IT({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 hT({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,RT,{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)}),Gw(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}=VT(u),p=u?.token;if(p===void 0){l(`awaiting-approval`);let n=await Ww(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&<({session:u.direct,identity:e,clock:t,revocation:JC,ownRoomMemberToken:p,roomPath:a,roomKeys:r.roomKeys}).catch(()=>void 0)}let m=await Uw(d,a,c,p,f);if(m.result!==`ok`)throw Error(`send failed: ${m.code}`);let h={direction:`sent`,text:c,messageId:BT(),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 Ww(l,n)).token,s.current.set(n,d),i({type:`token`,roomPath:n,token:d})),await LT({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),Gw({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 UT(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 WT=8787,GT=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function KT(e){return GT.test(e)}async function qT(e=WT){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):qT()}var YT=`q7ltm10`,XT=/^([a-z][a-z0-9+.-]*):\/\//i,ZT={ws:`ws:`,wss:`wss:`,http:`ws:`,https:`wss:`};function QT(e){if(tx(e))return e;let t=XT.exec(e);if(t===null)return`ws://${e}`;let n=ZT[t[1]?.toLowerCase()??``];if(n===void 0)return e;let r=new URL(e);return r.protocol=n,r.hash=``,r.toString()}var $T=`ws://localhost:8787`,eE=[`core/management`,`core/exec`,`core/data`],tE=[`core/management`,`core/data`],nE=5,rE=1e3,iE=3e4,aE=2,oE={maxAttempts:nE,delayMs:e=>Math.min(rE*aE**(e-1),iE)},sE=[PC,Aw];function cE({identity:e,clock:t,messageStore:n,discoverLocalNode:r=JT,defaultAddress:i=$T}){let[a,o]=(0,D.useState)(i),[s,c]=(0,D.useState)(tE),[l,u]=(0,D.useState)([]),[d,f]=(0,D.useState)([]),[p,m]=(0,D.useState)([]),h=HT(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=UT(r.incomingManageRequests,sE),a=ew({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(PC)},{identity:e,clock:t,iceServers:bx,onIncomingConnection:e=>{C.current(e)}});S.current({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(Aw)}),u(e=>[...e,{address:n,session:r,negotiator:a}])}async function te(e){return new Promise(t=>{f(n=>[...n,{key:rw(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(yx(),e,t,oE,[],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(QT(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(QT(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:rw(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,j.jsxs)(Qa,{className:YT,p:`md`,gap:`lg`,children:[(0,j.jsx)(wo,{order:1,children:`wire-mesh console`}),(0,j.jsxs)(`form`,{onSubmit:k,children:[(0,j.jsxs)(hi,{align:`flex-end`,wrap:`wrap`,children:[(0,j.jsx)(vo,{label:`Node`,value:a,onChange:e=>{o(e.currentTarget.value)},required:!0,style:{flex:1,minWidth:`16rem`}}),(0,j.jsx)(Aa,{type:`submit`,children:`Connect`})]}),(0,j.jsx)(va.Group,{label:`Domains offered`,value:s,onChange:c,children:(0,j.jsx)(hi,{mt:`xs`,children:eE.map(e=>(0,j.jsx)(va,{value:e,label:e},e))})})]}),(0,j.jsx)(cw,{peers:d,onConnect:e=>{E(e,!0)},onDismiss:e=>{E(e,!1)}}),l.map(e=>(0,j.jsx)(sw,{address:e.address,session:e.session,onClose:()=>{A(e)},onMessagePeer:t=>{se(e,t)}},e.address)),p.map(e=>(0,j.jsxs)(Gi,{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,j.jsx)(vw,{conversations:h.conversations,selected:v?.roomPath,onSelect:_}),v!==void 0&&(0,j.jsx)(kw,{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 lE=`modulepreload`,uE=function(e){return`/`+e},dE={},fE=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=uE(t,n),t=s(t),t in dE)return;dE[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`:lE,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)})},pE=`false`,mE=`false`,hE=pE===`true`,gE=mE===`true`;function _E(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,hE||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await fE(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()},!gE){if(hE)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 vE(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)(()=>_E({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 yE(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=vE();function a(){t(!1),r(!1)}return!e&&!n?null:(0,j.jsx)(Ja,{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,j.jsx)(hi,{gap:`xs`,children:n?(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{i(!0)},children:`Reload`}):void 0})})}var bE=`ws://localhost:8787`;function xE(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function SE(e,t){return e?bE:xE(t)}var CE=await yl(await Po()),wE={now:()=>Date.now()},TE=Iy(await Po()),EE=SE(!1,window.location),DE=document.getElementById(`root`);if(DE===null)throw Error(`missing #root element`);(0,To.createRoot)(DE).render((0,j.jsx)(D.StrictMode,{children:(0,j.jsxs)(Ht,{children:[(0,j.jsx)(cE,{identity:CE,clock:wE,messageStore:TE,defaultAddress:EE}),(0,j.jsx)(yE,{})]})}));
|
|
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))}kl(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,kl(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=bl(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)kl(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)kl(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,Sl,2)}),Gh(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Sl,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(Al(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 Bl(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 V(this,e)},safeExtend(e){return H(this,e)},merge(e){return Kl(this,e)},pick(e){return Wl(this,e)},omit(e){return Gl(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??{},...B(t)})}function Jg(e,t){return new qg({type:`object`,shape:e,catchall:Wg(),...B(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,...B(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,...B(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,...B(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,...B(t)}):new r_({type:`record`,keyType:e,valueType:t,...B(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:[],...B(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:[],...B(r),entries:i})}});function o_(e,t){return new a_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...B(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],...B(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():Ll(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():Ll(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,...B(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,...B(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(gc(n,$s)))},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=il(n,al);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=gc(t,$s),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.2.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/byte-stream-connection":{import:`./dist/adapters/byte-stream-connection.mjs`,require:`./dist/adapters/byte-stream-connection.cjs`},"./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/pinned-address":{import:`./dist/domain/pinned-address.mjs`,require:`./dist/domain/pinned-address.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(gc(e,$s))}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=il(new Uint8Array(e),al),n=Q_.safeParse(t);if(!n.success)throw new db(n.error.message);return n.data}function pb(e){let t;try{t=il(e,al)}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,fe(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 fe(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 fe(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=`#sha256=`,$b=`,`,ex=/^[0-9a-f]{64}$/;function tx(e){let t=new Uint8Array(e.length/2);for(let n=0;n<t.length;n++)t[n]=Number.parseInt(e.slice(n*2,n*2+2),16);return t}function nx(e){return e.startsWith(`https://`)&&e.includes(Qb)}function rx(e){let t=new URL(e),n=t.hash.startsWith(Qb)?t.hash.slice(8).split($b):[];if(t.protocol!==`https:`||n.length===0||!n.every(e=>ex.test(e)))throw Error(`expected "https://host:port${Qb}<64 hex digits>[${$b}<64 hex digits>...]", got "${e}"`);return t.hash=``,{url:t.toString(),sha256:n.map(tx)}}var ix=4,ax=1024,ox=ax*ax*100,sx=new Uint8Array(ix);function cx(e){let t=gc(e,$s),n=new Uint8Array(ix+t.length);return new DataView(n.buffer).setUint32(0,t.length),n.set(t,ix),n}function lx(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}async function*ux(e){let t=new Uint8Array;try{for(;;){let n=await e.read();if(n.done)return;for(t=lx(t,n.value);t.length>=ix;){let e=new DataView(t.buffer,t.byteOffset).getUint32(0);if(e>104857600)throw Error(`frame of ${String(e)} bytes exceeds the ${String(ox)}-byte limit`);if(t.length<ix+e)break;if(e===0){t=t.slice(ix);continue}let n=t.slice(ix,ix+e);t=t.slice(ix+e);let r=Q_.safeParse(il(n,al));r.success&&(yield r.data)}}}catch(t){throw await e.cancel(t),t}}function dx(e,t={opened:!1}){let n=e.writable.getWriter(),r=e.readable.getReader(),i=ux(r),a=t.opened?n.write(sx):Promise.resolve();return a.catch(()=>void 0),{send:async e=>{await a,await n.write(cx(e))},receive:()=>i,close:async()=>{await n.close(),await r.cancel()}}}var fx=`/wire-mesh`,px=`the web console is a client only: it cannot listen`;function mx(){return{async connect(e){if(typeof WebTransport>`u`)throw Error(`this browser does not support WebTransport`);let{url:t,sha256:n}=rx(e),r=new WebTransport(new URL(fx,t).toString(),{serverCertificateHashes:n.map(e=>({algorithm:`sha-256`,value:e}))});return await r.ready,dx(await r.createBidirectionalStream(),{opened:!0})},async listen(){return Promise.reject(Error(px))}}}var hx=1e3,gx=1002,_x=`the web console is a client only: it cannot listen`;function vx(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(gx,`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(gx,`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(hx),Promise.resolve()}}}function yx(){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(()=>vx(n))},async listen(){return Promise.reject(Error(_x))}}}function bx(){let e=yx(),t=mx();return{connect:async n=>nx(n)?t.connect(n):e.connect(n),listen:async(t,n)=>e.listen(t,n)}}var xx=[{urls:`stun:stun.cloudflare.com:3478`}],Sx=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),Cx=i_(K(),q()),wx=o_([`ms`,`s`,`min`,`h`,`d`]);Qg(`kind`,[J({kind:Y(`number`),value:q(),unit:Cx.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:wx}),J({kind:Y(`complex`),re:q(),im:q(),unit:Cx.optional()})]);function Tx(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function Ex(e,t){let n=Tx(e),r=Tx(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function Dx(e,t){let n=Tx(e),r=Tx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return Tx(i)}function Ox(e,t){let n=Tx(e),r=Tx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return Tx(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 kx(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var Ax=X(()=>Xg([K(),q(),Rg(),Bg(),Kg(Ax),i_(K(),Ax)])),jx=o_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),Mx=o_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),Nx=o_([`in`,`notIn`]),Px=o_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),Fx=o_([`first`,`unique`]),Ix=J({kind:Y(`not`),get operand(){return Jx}}),Lx=J({kind:Y(`and`),get left(){return Jx},get right(){return Jx}}),Rx=J({kind:Y(`or`),get left(){return Jx},get right(){return Jx}}),zx=J({kind:Y(`allOf`),get operands(){return Kg(Jx)}}),Bx=J({kind:Y(`anyOf`),get operands(){return Kg(Jx)}}),Vx=J({kind:Y(`compare`),op:jx,get left(){return lS},get right(){return lS}}),Hx=J({kind:Y(`textCompare`),op:Mx,get left(){return lS},get right(){return lS}}),Ux=J({kind:Y(`memberOf`),op:Nx,get operand(){return lS},get candidates(){return Kg(lS)}}),Wx=J({kind:Y(`exists`),get operand(){return lS}}),Gx=J({kind:Y(`some`),collection:Ax,get item(){return Jx},get filter(){return Jx.optional()}}),Kx=J({kind:Y(`every`),collection:Ax,get item(){return Jx},get filter(){return Jx.optional()}}),qx=J({kind:Y(`treeReference`),key:Ax}),Jx=Qg(`kind`,[Ix,Lx,Rx,zx,Bx,Vx,Hx,Ux,Wx,Gx,Kx,qx]),Yx=J({kind:Y(`numberLiteral`),value:q(),unit:Cx.optional()}),Xx=J({kind:Y(`textLiteral`),value:K()}),Zx=J({kind:Y(`booleanLiteral`),value:Rg()}),Qx=J({kind:Y(`instantLiteral`),value:K()}),$x=J({kind:Y(`durationLiteral`),value:q(),unit:wx}),eS=Xg([Jg({kind:Y(`complexLiteral`),re:q(),im:q(),unit:Cx.optional()}),Jg({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:Cx.optional()})]),tS=J({kind:Y(`reference`),key:Ax,unit:Cx.optional()}),nS=J({kind:Y(`arithmetic`),op:Px,get left(){return lS},get right(){return lS}}),rS=J({kind:Y(`negate`),get operand(){return lS}}),iS=J({kind:Y(`call`),fn:K(),get args(){return Kg(lS)}}),aS=J({kind:Y(`lookup`),table:Ax,get keys(){return Kg(lS)}}),oS=J({get when(){return Jx},get then(){return lS}}),sS=J({kind:Y(`conditional`),hitPolicy:Fx.optional(),get cases(){return Kg(oS)},get fallback(){return lS}}),cS=Qg(`mode`,[J({mode:Y(`max`),get item(){return lS}}),J({mode:Y(`min`),get item(){return lS}}),J({mode:Y(`reduce`),get initial(){return lS},get combine(){return lS}})]),lS=Xg([Qg(`kind`,[Yx,Xx,Zx,Qx,$x,tS,nS,rS,iS,aS,sS,J({kind:Y(`fold`),collection:Ax,get filter(){return Jx.optional()},combiner:cS}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:Ax}),qx]),eS]),uS={},dS=1e4;function fS(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 pS(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 mS(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function hS(e,t){return t>=e.from&&t<=e.to}function gS(e,t){let n=e.ranges.some(e=>hS(e,t));return e.negated?!n:n}var _S=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 vS(e){return e.charCodeAt(0)}function yS(e,t){return{from:vS(e),to:vS(t)}}function bS(e){let t=vS(e);return{from:t,to:t}}var xS=[yS(`0`,`9`)],SS=[yS(`A`,`Z`),yS(`a`,`z`),yS(`0`,`9`),bS(`_`)],CS=[bS(` `),bS(` `),bS(`
|
|
71
|
+
`),bS(`\r`),bS(`\f`),bS(`\v`)];function wS(e){switch(e){case`d`:return{kind:`charClass`,negated:!1,ranges:xS};case`D`:return{kind:`charClass`,negated:!0,ranges:xS};case`w`:return{kind:`charClass`,negated:!1,ranges:SS};case`W`:return{kind:`charClass`,negated:!0,ranges:SS};case`s`:return{kind:`charClass`,negated:!1,ranges:CS};case`S`:return{kind:`charClass`,negated:!0,ranges:CS};default:throw Error(`unreachable shorthand class letter`)}}var TS=new Set([`|`,`)`]),ES={".":`.`,"*":`*`,"+":`+`,"?":`?`,"(":`(`,")":`)`,"[":`[`,"]":`]`,"{":`{`,"}":`}`,"|":`|`,"^":`^`,$:`$`,"\\":`\\`,"/":`/`,n:`
|
|
72
|
+
`,t:` `,r:`\r`,f:`\f`,v:`\v`},DS=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 _S(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()||TS.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!TS.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 _S(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 _S(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 _S(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 _S(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 _S(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 _S(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 _S(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new _S(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 wS(t);let n=ES[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new _S(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 _S(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new _S(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 _S(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return wS(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new _S(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=ES[t];if(n===void 0)throw new _S(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new _S(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 _S(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 _S(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 _S(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=ES[t];if(n===void 0)throw new _S(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new _S(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function OS(e){let t=new DS(e),n=t.parseAlternation();if(!t.atEnd())throw new _S(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var kS=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=>gS(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 AS(e){return new kS().build(e)}function jS(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 NS(e,t){let n=t.length,r=jS(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=jS(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function PS(e){let t=AS(OS(e));return{test:e=>NS(t,e)}}function FS(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=kx(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function IS(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=kx(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function LS(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 RS={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function zS(e,t){return e*RS[t]}function BS(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function VS(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function HS(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 US(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?Ex(t.unit,n.unit)?Q(LS(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=BS(t.value);if(r===void 0)return VS(t.value);let i=BS(n.value);return i===void 0?VS(n.value):Q(LS(e,r,i))}case`duration`:return n.kind===`duration`?Q(LS(e,zS(t.value,t.unit),zS(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`?Ex(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 WS(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=PS(n.value)}catch(e){let t=e instanceof _S?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 GS(e,t){switch(e.kind){case`number`:return t.kind===`number`?Ex(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=BS(e.value);if(n===void 0)return VS(e.value);let r=BS(t.value);return r===void 0?VS(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(zS(e.value,e.unit)===zS(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?Ex(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 KS(e){return Ex(e,void 0)}function qS(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 JS(e,t,n){switch(e){case`add`:return Ex(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 Ex(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:Dx(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:Ox(t.unit,n.unit)});case`power`:return!KS(t.unit)||!KS(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!KS(t.unit)||!KS(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 YS(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:zS(t.value,t.unit)+zS(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:zS(t.value,t.unit)-zS(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 XS(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function ZS(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:Dx(e.unit,t.unit)}}function QS(e,t,n){switch(e){case`add`:return Ex(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 Ex(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(ZS(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:Ox(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function $S(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!KS(e.unit)||!KS(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=XS(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=ZS(i,r);return t.value>=0?Q(i):QS(`divide`,n,i)}function eC(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=BS(t.value);if(e===void 0)return VS(t.value);let r=BS(n.value);return r===void 0?VS(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=BS(t.value);return e===void 0?VS(t.value):HS(e+zS(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=BS(n.value);return e===void 0?VS(n.value):HS(e+zS(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`?YS(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`?$S(t,n):QS(e,XS(t),XS(n)):JS(e,t,n)}function tC(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(!Ex(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function nC(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 rC(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 rC(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([rC(e.left,t,n,r,i,a,o,s,c+1),rC(e.right,t,n,r,i,a,o,s,c+1)]);return FS(l,u)}case`or`:{let[l,u]=await Promise.all([rC(e.left,t,n,r,i,a,o,s,c+1),rC(e.right,t,n,r,i,a,o,s,c+1)]);return IS(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>rC(e,t,n,r,i,a,o,s,c+1)))).reduce(FS,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>rC(e,t,n,r,i,a,o,s,c+1)))).reduce(IS,Q(!1));case`compare`:{let[l,u]=await Promise.all([iC(e.left,t,n,r,i,a,o,s,c+1),iC(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:US(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([iC(e.left,t,n,r,i,a,o,s,c+1),iC(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:WS(e.op,l.value,u.value)}case`memberOf`:{let l=await iC(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 iC(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:GS(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=kx(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await iC(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 pS(rC,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`?rC(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?IS:FS,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=Jx.safeParse(u.node);return d.success?rC(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 iC(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=tC(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=>iC(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 nC(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(Sx(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([iC(e.left,t,n,r,i,a,o,s,c+1),iC(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:eC(e.op,l.value,u.value)}case`negate`:{let l=await iC(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:qS(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>iC(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 rC(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return iC(u,t,n,r,i,a,o,s,c+1)}return iC(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 rC(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=kx(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return iC(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await pS(rC,e.collection,e.filter,t,n,i,a,o,s,c+1),l=mS(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 iC(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 iC(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 iC(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=US(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=lS.safeParse(u.node);return d.success?iC(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 aC({functions:e=uS,maxNodes:t=dS,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>rC(r,i,a,void 0,e,new Set,0,fS(t,n),0),evaluateValue:async(r,i,a)=>iC(r,i,a,void 0,e,new Set,0,fS(t,n),0)}}var{evaluatePredicate:oC,evaluateValue:sC}=aC({}),cC=Kg(Jx),lC=`bearer-is`,uC=`expires-at`,dC=`scope-narrows`,fC=`capability-is`,pC=`depth-remaining`,mC=[lC,uC,dC,fC,pC];function hC(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}function gC(e){return{found:!0,value:{kind:`boolean`,value:e}}}var _C={[lC]:(e,t)=>t.parentClaims===void 0?gC(!1):gC(Ly(t.parentClaims.bearer,t.childIssuer)),[uC]:(e,t)=>t.parentClaims===void 0?gC(!1):gC(t.candidate.expires<=t.parentClaims.expires),[dC]:(e,t)=>t.parentClaims===void 0?gC(!1):gC(By(t.parentClaims.scope,t.candidate.scope)),[fC]:(e,t)=>t.parentClaims===void 0?gC(!1):gC(t.parentClaims.capability===t.candidate.capability),[pC]:(e,t)=>{if(t.parentClaims===void 0)return gC(!1);let n=t.parentClaims[`delegations-remaining`];return gC(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function vC(e){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:null},right:{kind:`booleanLiteral`,value:!0}}}var yC=async()=>Promise.resolve({found:!1}),bC=async()=>Promise.resolve({found:!1}),xC=async()=>Promise.resolve([]);async function SC(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:yC,resolveLookup:bC,resolveCollection:xC,resolveDelegate:async(e,t)=>hC(e)?_C[e](t,r):{found:!1}};for(let e of mC){let t=await oC(vC(e),r,i);if(t.status!==`definite`||!t.value)return e}}async function CC(e,t,n,r={}){let i={clock:n,claims:t},a={resolveValue:yC,resolveLookup:bC,resolveCollection:xC,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 oC(t,i,a);if(e.status!==`definite`||!e.value)return{ok:!1,reason:`not_satisfied`}}return{ok:!0}}function wC(e,t){return gc([`Signature1`,e,new Uint8Array,t],$s)}function TC(e){return Uint8Array.from(e)}function EC(e){return TC(gc(e,$s))}function DC(e){return EC({1:e.identityKey.alg,4:e.deviceId})}function OC(e){let[,,t]=e;if(t===null)return;let n;try{n=il(t,al)}catch{return}let r=ry.safeParse(n);return r.success?r.data:void 0}async function kC(e,t){let n=await jC(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 AC(e,t,n){if(Ly(e.issuer,t.issuer))return!0;if(e.authorization===void 0)return!1;let r;try{r=il(e.authorization,al)}catch{return!1}let i=ny.safeParse(r);if(!i.success)return!1;let a=await kC(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&By(a.claims.scope,t.scope)}async function jC(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=il(r,al)}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`],wC(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 AC(e,s,t))return{ok:!1,reason:`revoked`};if(s.conditions!==void 0){let e;try{e=il(s.conditions,al)}catch{return{ok:!1,reason:`conditions_invalid`}}let n=cC.safeParse(e);if(!n.success)return{ok:!1,reason:`conditions_invalid`};if(!(await CC(n.data,s,t.clock,t.extraPredicateResolvers)).ok)return{ok:!1,reason:`conditions_not_satisfied`}}if(s.parent!==void 0){let e;try{e=il(s.parent,al)}catch{return{ok:!1,reason:`parent_invalid`}}let n=ny.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let r=await jC(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 SC(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 NC(e,t,n){let r=await SC(e,t,n);return r===void 0?void 0:MC[r]}async function PC(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};let t;if(e.parent!==void 0){let n=OC(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await NC(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=EC(e.parent)}let n=EC({"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:EC(e.conditions)}}),r=DC(e.identity);return{ok:!0,token:[r,{},n,await e.identity.sign(wC(r,n))]}}var FC=`webrtc:signal`,IC={kind:`node`};function LC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function RC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function zC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function BC(e,t){return{verb:FC,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function VC(e,t){return{verb:FC,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function HC(e,t){return{verb:FC,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function UC(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 WC(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 GC(){let e=0;return()=>{let t=e;return e+=1,t}}async function KC(e,t){if(e.token===void 0)return!1;let n=await kC(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===IC.kind:!1}function qC(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 JC=`wire-mesh`,YC={entriesFor:async()=>Promise.resolve([])};function XC(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function ZC(e,t){e.addEventListener(`open`,()=>{t(qC(e))},{once:!0})}var QC=16,$C=36e5;async function ew(e,t){let n=new Uint8Array(QC);crypto.getRandomValues(n);let r=await PC({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:FC,scope:IC,expires:t.now()+$C});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function tw(e,t){let n={identity:t.identity,clock:t.clock,revocation:YC},r=new Map,i=new Map,a=GC();async function o(t,n){let r=HC(t,n===null?void 0:UC(n));await e.sendManageRequest(r,IC,i.get(t))}async function s(a,s){if(!await KC(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),XC(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{e.channel.binaryType=`arraybuffer`,ZC(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(VC(c,u.sdp??``),IC,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:WC(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;LC(e)?await s(t,e):RC(e)?await c(t,e):zC(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),XC(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(JC);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{ZC(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(BC(s,d.sdp??``),IC,n,await ew(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 nw(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 rw=16;function iw(e){let t=``;for(let n of e)t+=n.toString(rw).padStart(2,`0`);return t}function aw(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 ow(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${aw(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}function sw(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function cw({address:e,session:t,onClose:n,onMessagePeer:r}){let i=nw(t),a=i===void 0?`idle`:ow(i),o=i?.directory??[],s=i?.frameLog??[];return(0,j.jsxs)(La,{withBorder:!0,padding:`md`,radius:`md`,children:[(0,j.jsxs)(hi,{justify:`space-between`,mb:`xs`,children:[(0,j.jsx)(Xi,{fw:600,children:e}),(0,j.jsxs)(hi,{children:[(0,j.jsx)(Aa,{size:`xs`,disabled:i?.state.status!==`connected`,onClick:()=>{t.sendPing()},children:`Send ping`}),(0,j.jsx)(Aa,{size:`xs`,color:`red`,variant:`light`,onClick:n,children:`Disconnect`})]})]}),(0,j.jsx)(Xi,{fw:600,size:`sm`,mb:`sm`,children:a}),(0,j.jsx)(Xi,{fw:600,size:`sm`,children:`Peer directory`}),o.length===0?(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,children:`No gossip received yet.`}):(0,j.jsxs)(P,{striped:!0,children:[(0,j.jsx)(P.Thead,{children:(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Th,{children:`device`}),(0,j.jsx)(P.Th,{children:`addresses`}),(0,j.jsx)(P.Th,{children:`snapshot (unix s)`}),(0,j.jsx)(P.Th,{})]})}),(0,j.jsx)(P.Tbody,{children:o.map(e=>(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Td,{children:iw(e.device)}),(0,j.jsx)(P.Td,{children:e.advert.addresses.join(`, `)}),(0,j.jsx)(P.Td,{children:e.advert[`snapshot-seconds`]}),(0,j.jsx)(P.Td,{children:(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{r(e.device)},children:`Message`})})]},iw(e.device)))})]}),(0,j.jsx)(Xi,{fw:600,size:`sm`,mt:`md`,children:`Frame log`}),(0,j.jsx)(P.ScrollContainer,{minWidth:0,h:384,children:(0,j.jsxs)(P,{children:[(0,j.jsx)(P.Thead,{children:(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Th,{children:`direction`}),(0,j.jsx)(P.Th,{children:`frame`})]})}),(0,j.jsx)(P.Tbody,{children:s.map((e,t)=>(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Td,{children:e.direction}),(0,j.jsx)(P.Td,{children:sw(e.frame)})]},t))})]})})]})}function lw({peers:e,onConnect:t,onDismiss:n}){return e.length===0?null:(0,j.jsxs)(La,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`discovered-peers`,children:[(0,j.jsx)(Xi,{fw:600,size:`sm`,mb:`xs`,children:`Discovered peers`}),(0,j.jsxs)(P,{striped:!0,children:[(0,j.jsx)(P.Thead,{children:(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Th,{children:`device`}),(0,j.jsx)(P.Th,{children:`addresses`}),(0,j.jsx)(P.Th,{})]})}),(0,j.jsx)(P.Tbody,{children:e.map(e=>(0,j.jsxs)(P.Tr,{children:[(0,j.jsx)(P.Td,{children:iw(e.device)}),(0,j.jsx)(P.Td,{children:e.addresses.join(`, `)}),(0,j.jsx)(P.Td,{children:(0,j.jsxs)(hi,{gap:`xs`,children:[(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{t(e.key)},children:`Connect`}),(0,j.jsx)(Aa,{size:`xs`,variant:`light`,color:`red`,onClick:()=>{n(e.key)},children:`Dismiss`})]})})]},e.key))})]})]})}function uw(e,t){return e.sentAt===t.sentAt?Oy(e.messageId).localeCompare(Oy(t.messageId)):e.sentAt-t.sentAt}function dw(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(uw)}function fw(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function pw(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 mw(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 hw(e,t){switch(t.type){case`direct-opened`:{let n=e.get(t.roomPath)??pw(t.roomPath,t.participants);return new Map(e).set(t.roomPath,{...mw(n,t.session,n.relay),participants:t.participants,notices:[]})}case`relay-opened`:{let n=e.get(t.roomPath)??pw(t.roomPath,t.participants);return new Map(e).set(t.roomPath,mw(n,n.direct,t.route))}case`direct-closed`:return fw(e,t.roomPath,e=>mw(e,void 0,e.relay));case`hub-closed`:{let n=e;for(let r of e.values())r.relay?.hub===t.hub&&(n=fw(n,r.roomPath,e=>mw(e,e.direct,void 0)));return n}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{...pw(t.roomPath,t.participants),messages:dw([],t.messages)}):fw(e,t.roomPath,e=>({...e,messages:dw(e.messages,t.messages)}));case`notices`:return fw(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return fw(e,t.roomPath,e=>{let n=dw(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 fw(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return fw(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 fw(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return fw(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return fw(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return fw(e,t.roomPath,e=>({...e,token:t.token}))}return e}function gw(e,t){let n=Zb(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}var _w=12;function vw(e){return e.participants.length===0?e.roomPath:e.participants.map(e=>e.slice(0,_w)).join(`, `)}function yw({conversations:e,selected:t,onSelect:n}){return e.length===0?null:(0,j.jsxs)(Qa,{gap:0,"data-testid":`conversation-list`,children:[(0,j.jsx)(Xi,{fw:600,size:`sm`,mb:`xs`,children:`Conversations`}),e.map(e=>(0,j.jsx)(Wa,{active:e.roomPath===t,label:vw(e),description:e.status===`connected`?void 0:`offline`,rightSection:(0,j.jsxs)(hi,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,j.jsx)(xa,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,j.jsx)(xa,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function bw({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,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(hi,{gap:`xs`,flex:1,children:[(0,j.jsx)(vo,{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,j.jsx)(Aa,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,j.jsx)(Xi,{size:`sm`,c:`red`,children:l})]})}var xw=`You`,Sw=256,Cw=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function ww({sentAt:e}){return(0,j.jsx)(Xi,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:Cw.format(e)})}function Tw({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,j.jsx)(Rr,{h:Sw,viewportRef:a,children:(0,j.jsxs)(Qa,{gap:4,children:[e.map((t,r)=>{let i=t.direction===`sent`,a=r===0||e[r-1]?.direction!==t.direction;return(0,j.jsxs)(Qa,{gap:0,align:i?`flex-end`:`flex-start`,mt:a?`xs`:0,children:[a&&(0,j.jsx)(Xi,{size:`xs`,fw:600,c:`dimmed`,children:i?xw:n}),(0,j.jsx)(Xi,{size:`sm`,children:t.text}),(0,j.jsx)(ww,{sentAt:t.sentAt})]},Oy(t.messageId))}),t.map(e=>(0,j.jsxs)(Qa,{gap:0,align:`flex-end`,mt:`xs`,children:[(0,j.jsx)(Xi,{size:`xs`,fw:600,c:`dimmed`,children:xw}),(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,children:e.text}),e.status===`failed`?(0,j.jsxs)(hi,{gap:`xs`,children:[(0,j.jsx)(Xi,{size:`xs`,c:`red`,children:`Not sent: ${e.error}`}),(0,j.jsx)(Aa,{size:`compact-xs`,variant:`light`,onClick:()=>{r(e.localId)},children:`Retry`}),(0,j.jsx)(Aa,{size:`compact-xs`,variant:`subtle`,color:`gray`,onClick:()=>{i(e.localId)},children:`Dismiss`})]}):(0,j.jsx)(Xi,{size:`xs`,c:`dimmed`,children:e.status===`awaiting-approval`?`Waiting for ${n} to allow messages`:`Sending`})]},e.localId))]})})}function Ew(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function Dw({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=Ew(e);return(0,j.jsx)(N,{children:n===void 0?(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,fs:`italic`,children:`encrypted notice -- no key held for its epoch`}):(0,j.jsx)(Xi,{size:`sm`,children:n})},t)});return(0,j.jsxs)(Qa,{gap:4,children:[t,(0,j.jsxs)(xa,{variant:`light`,color:`gray`,size:`sm`,w:`fit-content`,children:[e.length,` notice`,e.length===1?``:`s`]})]})}var Ow=864e5;function kw(e){return e===`direct`?`direct`:e===`hub`?`via hub`:`offline`}function Aw({view:e,onSend:t,onPostNotice:n,onRetry:r,onDiscard:i}){return(0,j.jsxs)(Qa,{gap:`xs`,children:[(0,j.jsxs)(hi,{justify:`space-between`,children:[(0,j.jsx)(Xi,{fw:600,children:e.participants.join(`, `)}),(0,j.jsx)(Xi,{size:`sm`,c:e.status===`connected`?`green`:`dimmed`,children:kw(e.via)})]}),e.pendingJoinRequest&&(0,j.jsx)(Gi,{color:`blue`,title:`Message request`,children:(0,j.jsxs)(hi,{justify:`space-between`,children:[(0,j.jsxs)(Xi,{size:`sm`,children:[e.pendingJoinRequest.requesterHex,` wants to message you`]}),(0,j.jsxs)(hi,{children:[(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+Ow})},children:`Allow`}),(0,j.jsx)(Aa,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,j.jsx)(Tw,{messages:e.messages,outgoing:e.outgoing,peerLabel:vw(e),onRetry:r,onDiscard:i}),(0,j.jsx)(hi,{children:(0,j.jsx)(bw,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,j.jsx)(Va,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,j.jsx)(Dw,{notices:e.notices}),e.via===`direct`?(0,j.jsx)(hi,{children:(0,j.jsx)(bw,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})}):(0,j.jsx)(Xi,{size:`sm`,c:`dimmed`,children:`Durable notices need a direct connection.`})]})}var jw=`room:member`;async function Mw(e,t){let n=await kC(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 Nw=16;function Pw(){let e=new Uint8Array(Nw);return crypto.getRandomValues(e),e}function Fw(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function Iw(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}async function Lw(e,t,n,r,i,a){let o=await e.sendManageRequest(Iw(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 Rw(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);Fw(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 PC({identity:e.identity,clock:e.clock,tokenId:Pw(),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 zw(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 kC(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 Bw=16;function Vw(){let e=new Uint8Array(Bw);return crypto.getRandomValues(e),e}var Hw=3e5;function Uw(e,t,n){return{verb:jw,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function Ww(e,t,n,r,i){let a=Uw(n,Vw(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function Gw(e,t,n){let r=await Lw(e,jw,{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 Kw(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=Rw({capability:jw,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??Hw,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=zw({capability:jw,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 qw(){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 Jw=32,Yw=256,Xw=12,Zw=4,Qw=8,$w=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function eT(){return crypto.getRandomValues(new Uint8Array(Jw))}function tT(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(Zw);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(Qw);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array($w.length+n.length+t.length+r.length),a=0;return i.set($w,a),a+=$w.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function nT(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(tT(t))},n,{name:`AES-GCM`,length:Yw},!1,[`encrypt`,`decrypt`])}async function rT(e,t){let n=crypto.getRandomValues(new Uint8Array(Xw)),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 iT(e,t){if(t.length<Xw)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,Xw),r=t.slice(Xw);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function aT(e,t){return rT(e,t)}async function oT(e,t){return iT(e,t)}async function sT(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function cT(e,t){return rT(await sT(e),t)}async function lT(e,t){return iT(await sT(e),t)}var uT=`+aes256gcm`;function dT(e){return pT(e)?e:`${e}${uT}`}function fT(e){return pT(e)?e.slice(0,e.length-10):e}function pT(e){return e.endsWith(uT)}function mT(e,t){return{verb:jw,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function hT(e,t,n,r,i,a){return e.sendManageRequest(mT(n,r),{kind:`room`,path:t},i,a)}function gT(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)=>oT(await nT(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 _T(e){return`data/${ky(e)}/head`}function vT(e,t){return`data/${ky(e)}/entry/${String(t)}`}async function yT(e,t){let n=await e.get(_T(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function bT(e,t,n){await e.set(_T(t),new TextEncoder().encode(String(n)))}async function xT(e,t){return yT(e,t)}async function ST(e,t){let n=await yT(e.storage,e.identity.deviceId)+1;return await e.storage.set(vT(e.identity.deviceId,n),t),await bT(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function CT(e,t,n){let r=await yT(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(vT(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 wT(e,t){let n=await yT(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(vT(t.peer,r),n);return await bT(e,t.peer,r),{ok:!0}}async function TT(e,t,n){let r=await yT(e,t),i=[];for(let a=n+1;a<=r;a+=1){let n=await e.get(vT(t,a));if(n===void 0)break;i.push(n)}return i}function ET(e){return Uint8Array.from(e)}function DT(e){return ET(gc(e,$s))}function OT(e){return DT({1:e.identityKey.alg,4:e.deviceId})}function kT(e,t){return gc([`Signature1`,e,new Uint8Array,t],$s)}function AT(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 jT(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=il(r,al)}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`],kT(n,r),i))return{ok:!1,reason:`bad_signature`};if(!AT(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(pT(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=DT({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=OT(e.identity);return[n,{},t,await e.identity.sign(kT(n,t))]}var NT=16;function PT(e){return new Uint8Array(gc(e,$s))}function FT(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(NT)),c=await cT(o,e.plaintext),l=await MT({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:dT(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await ST({identity:t,storage:n},PT(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await xT(n,e);if(!(await wT(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 TT(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 jT(o,{identity:t,clock:r,revocation:i,expectedRoom:n});if(!s.ok)return{verified:!1,reason:s.reason};let c=s.claims;if(!pT(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:fT(c[`content-type`]),claims:c};if(d===void 0)return f;try{let e=await lT(d,c.content);return{...f,plaintext:e}}catch{return f}}function u(e){try{let t=il(e,al),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 IT=32;function LT(e){let{session:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=FT({identity:r,storage:n,clock:i,revocation:a,roomKeys:o}),l=new Map;async function u(e){let r=await xT(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 wT(n,e)).ok&&(e.entries.length>=IT&&await u(e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await CT(n,e,IT);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 RT(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=eT(),f=await aT(await nT(await u(l.rootIssuerKey),{room:o,keyEpoch:1}),d);s.set(o,1,d),await hT(t,o,1,f)}var zT=[`core/management`,`core/room`],BT=16;function VT(){let e=new Uint8Array(BT);return crypto.getRandomValues(e),e}function HT(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 UT(e,t,n){let[r,i]=(0,D.useReducer)(hw,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:gw(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=LT({session:n,storage:qw(),identity:e,clock:t,revocation:YC,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 gT({identity:e,clock:t,revocation:YC,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,zT,{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)}),Kw(f,{identity:e,clock:t,revocation:YC,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}=HT(u),p=u?.token;if(p===void 0){l(`awaiting-approval`);let n=await Gw(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&&RT({session:u.direct,identity:e,clock:t,revocation:YC,ownRoomMemberToken:p,roomPath:a,roomKeys:r.roomKeys}).catch(()=>void 0)}let m=await Ww(d,a,c,p,f);if(m.result!==`ok`)throw Error(`send failed: ${m.code}`);let h={direction:`sent`,text:c,messageId:VT(),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 Gw(l,n)).token,s.current.set(n,d),i({type:`token`,roomPath:n,token:d})),await RT({session:l,identity:e,clock:t,revocation:YC,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),Kw({incomingManageRequests:c.stream},{identity:e,clock:t,revocation:YC,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 WT(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 GT=8787,KT=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function qT(e){return KT.test(e)}async function JT(e=GT){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 YT(e=typeof location>`u`?``:location.host){return qT(e)?Promise.resolve(void 0):JT()}var XT=`q7ltm10`,ZT=/^([a-z][a-z0-9+.-]*):\/\//i,QT={ws:`ws:`,wss:`wss:`,http:`ws:`,https:`wss:`};function $T(e){if(nx(e))return e;let t=ZT.exec(e);if(t===null)return`ws://${e}`;let n=QT[t[1]?.toLowerCase()??``];if(n===void 0)return e;let r=new URL(e);return r.protocol=n,r.hash=``,r.toString()}var eE=`ws://localhost:8787`,tE=[`core/management`,`core/exec`,`core/data`],nE=[`core/management`,`core/data`],rE=5,iE=1e3,aE=3e4,oE=2,sE={maxAttempts:rE,delayMs:e=>Math.min(iE*oE**(e-1),aE)},cE=[FC,jw];function lE({identity:e,clock:t,messageStore:n,discoverLocalNode:r=YT,defaultAddress:i=eE}){let[a,o]=(0,D.useState)(i),[s,c]=(0,D.useState)(nE),[l,u]=(0,D.useState)([]),[d,f]=(0,D.useState)([]),[p,m]=(0,D.useState)([]),h=UT(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=WT(r.incomingManageRequests,cE),a=tw({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(FC)},{identity:e,clock:t,iceServers:xx,onIncomingConnection:e=>{C.current(e)}});S.current({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(jw)}),u(e=>[...e,{address:n,session:r,negotiator:a}])}async function te(e){return new Promise(t=>{f(n=>[...n,{key:iw(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(bx(),e,t,sE,[],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($T(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($T(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:iw(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,j.jsxs)(Qa,{className:XT,p:`md`,gap:`lg`,children:[(0,j.jsx)(wo,{order:1,children:`wire-mesh console`}),(0,j.jsxs)(`form`,{onSubmit:k,children:[(0,j.jsxs)(hi,{align:`flex-end`,wrap:`wrap`,children:[(0,j.jsx)(vo,{label:`Node`,value:a,onChange:e=>{o(e.currentTarget.value)},required:!0,style:{flex:1,minWidth:`16rem`}}),(0,j.jsx)(Aa,{type:`submit`,children:`Connect`})]}),(0,j.jsx)(va.Group,{label:`Domains offered`,value:s,onChange:c,children:(0,j.jsx)(hi,{mt:`xs`,children:tE.map(e=>(0,j.jsx)(va,{value:e,label:e},e))})})]}),(0,j.jsx)(lw,{peers:d,onConnect:e=>{E(e,!0)},onDismiss:e=>{E(e,!1)}}),l.map(e=>(0,j.jsx)(cw,{address:e.address,session:e.session,onClose:()=>{A(e)},onMessagePeer:t=>{se(e,t)}},e.address)),p.map(e=>(0,j.jsxs)(Gi,{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,j.jsx)(yw,{conversations:h.conversations,selected:v?.roomPath,onSelect:_}),v!==void 0&&(0,j.jsx)(Aw,{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 uE=`modulepreload`,dE=function(e){return`/`+e},fE={},pE=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=dE(t,n),t=s(t),t in fE)return;fE[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`:uE,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)})},mE=`false`,hE=`false`,gE=mE===`true`,_E=hE===`true`;function vE(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,gE||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await pE(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()},!_E){if(gE)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 yE(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)(()=>vE({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 bE(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=yE();function a(){t(!1),r(!1)}return!e&&!n?null:(0,j.jsx)(Ja,{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,j.jsx)(hi,{gap:`xs`,children:n?(0,j.jsx)(Aa,{size:`xs`,onClick:()=>{i(!0)},children:`Reload`}):void 0})})}var xE=`ws://localhost:8787`;function SE(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function CE(e,t){return e?xE:SE(t)}var wE=await yl(await Po()),TE={now:()=>Date.now()},EE=Iy(await Po()),DE=CE(!1,window.location),OE=document.getElementById(`root`);if(OE===null)throw Error(`missing #root element`);(0,To.createRoot)(OE).render((0,j.jsx)(D.StrictMode,{children:(0,j.jsxs)(Ht,{children:[(0,j.jsx)(lE,{identity:wE,clock:TE,messageStore:EE,defaultAddress:DE}),(0,j.jsx)(bE,{})]})}));
|