wire-mesh 2.0.5 → 2.0.7
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 @@ ${wc.repeat(a.depth)}}`:a.close=`}`;break}case L.TAG:o+=String(c),o+=Dc(L.POS_IN
|
|
|
67
67
|
|
|
68
68
|
`)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Nl,c=!Cu.jitless,l=c&&Pl.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?Jf([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function Qf(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Yl(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>eu(e,r,wu())))}),t)}var $f=W(`$ZodUnion`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),U(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),U(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),U(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>wl(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Qf(t,r,e,i)):Qf(o,r,e,i)}}),ep=W(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,$f.init(e,t);let n=e._zod.parse;U(e,`propValues`,e=>{let t={};for(let n of e.def.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(n)}"`);for(let[e,n]of Object.entries(r)){Object.prototype.hasOwnProperty.call(t,e)||Ol(t,e,new Set);for(let r of n)t[e].add(r)}}return t}),t.options.forEach((e,n)=>{let r=Yf.get(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=Sl(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!Nl(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),tp=W(`$ZodIntersection`,(e,t)=>{Zd.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>rp(e,t,n)):rp(e,i,a)}});function np(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Fl(e)&&Fl(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=np(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=np(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function rp(e,t,n){let r=new Map,i,a=new Map,o=(e,t)=>{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=np(t.value,n.value);if(!c.valid){if(Yl(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var ip=W(`$ZodTuple`,(e,t)=>{Zd.init(e,t);let n=t.items,r=Cu.memoizer;r?.attach(e),e._zod.parse=(i,a)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:`tuple`,code:`invalid_type`}),i;i.value=r?r.alloc(e,i,[],a):[];let s=[],c=ap(n,`optin`),l=ap(n,`optout`);if(!t.rest){if(o.length<c)return i.issues.push({code:`too_small`,minimum:c,inclusive:!0,input:o,inst:e,origin:`array`}),i;o.length>n.length&&i.issues.push({code:`too_big`,maximum:n.length,inclusive:!0,input:o,inst:e,origin:`array`})}let u=Array(n.length);for(let e=0;e<n.length;e++){let t=n[e]._zod.run({value:o[e],issues:[]},a);t instanceof Promise?s.push(t.then(t=>{u[e]=t})):u[e]=t}if(t.rest){let e=n.length-1,r=o.slice(n.length);for(let n of r){e++;let r=t.rest._zod.run({value:n,issues:[]},a);r instanceof Promise?s.push(r.then(t=>op(t,i,e))):op(r,i,e)}}return s.length?Promise.all(s).then(()=>sp(u,i,n,o,l)):sp(u,i,n,o,l)}});function ap(e,t){for(let n=e.length-1;n>=0;n--)if(!(t===`optin`?e[n]._zod.optin!==void 0:e[n]._zod.optout===`optional`))return n+1;return 0}function op(e,t,n){e.issues.length&&t.issues.push(...Zl(n,e.issues)),t.value[n]=e.value}function sp(e,t,n,r,i){for(let a=0;a<n.length;a++){let o=e[a],s=a<r.length;if(!s&&a>=i&&n[a]._zod.optin===`optional`){t.value.length=a;break}if(o.issues.length){if(!s&&a>=i){t.value.length=a;break}t.issues.push(...Zl(a,o.issues))}t.value[a]=o.value}for(let e=t.value.length-1;e>=r.length&&n[e]._zod.optout===`optional`&&t.value[e]===void 0;e--)t.value.length=e;return t}var cp=W(`$ZodRecord`,(e,t)=>{Zd.init(e,t);let n=Cu.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Fl(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>eu(e,i,wu())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...Zl(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...Zl(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&G.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>eu(e,i,wu())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...Zl(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...Zl(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),lp=W(`$ZodEnum`,(e,t)=>{Zd.init(e,t);let n=yl(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>Ll.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>Rl(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),up=W(`$ZodLiteral`,(e,t)=>{Zd.init(e,t);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(t.values.length?`^(${t.values.map(e=>typeof e==`string`?Rl(e):e?Rl(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),dp=W(`$ZodTransform`,(e,t)=>{Zd.init(e,t),e._zod.optin=`optional`,Cu.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Su(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new xu;return n.value=i,n}});function fp(e,t){return e.value=t.issues.length?void 0:t.value,e}var pp=W(`$ZodOptional`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,U(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),U(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${wl(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>fp(e,t)):fp(e,r)}return t.innerType._zod.run(e,n)}}),mp=W(`$ZodExactOptional`,(e,t)=>{pp.init(e,t),U(e,`values`,e=>e.def.innerType._zod.values),U(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),hp=W(`$ZodNullable`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.innerType._zod.optin),U(e,`optout`,e=>e.def.innerType._zod.optout),U(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${wl(t.source)}|null)$`):void 0}),U(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),gp=W(`$ZodDefault`,(e,t)=>{Zd.init(e,t),e._zod.optin=`defaulted`,U(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>_p(e,t)):_p(r,t)}});function _p(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var vp=W(`$ZodPrefault`,(e,t)=>{Zd.init(e,t),e._zod.optin=`defaulted`,U(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),yp=W(`$ZodNonOptional`,(e,t)=>{Zd.init(e,t),U(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>bp(t,e)):bp(i,e)}});function bp(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function xp(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>eu(e,r,wu()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Sp=W(`$ZodCatch`,(e,t)=>{Zd.init(e,t),U(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),U(e,`optout`,e=>e.def.innerType._zod.optout),U(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>xp(e,r,t,n)):xp(e,r,t,n)}}),Cp=W(`$ZodPipe`,(e,t)=>{Zd.init(e,t),U(e,`values`,e=>e.def.in._zod.values),U(e,`optin`,e=>e.def.in._zod.optin),U(e,`optout`,e=>e.def.out._zod.optout),U(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>wp(e,t.in,n)):wp(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>wp(e,t.out,n)):wp(r,t.out,n)}});function wp(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var Tp=W(`$ZodReadonly`,(e,t)=>{Zd.init(e,t),U(e,`propValues`,e=>e.def.innerType._zod.propValues),U(e,`values`,e=>e.def.innerType._zod.values),U(e,`optin`,e=>e.def.innerType?._zod?.optin),U(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Ep):Ep(r)}});function Ep(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Dp=W(`$ZodLazy`,(e,t)=>{Zd.init(e,t),Dl(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),U(e,`pattern`,e=>e.innerType?._zod?.pattern),U(e,`propValues`,e=>e.innerType?._zod?.propValues),U(e,`optin`,e=>e.innerType?._zod?.optin??void 0),U(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Op=W(`$ZodCustom`,(e,t)=>{jd.init(e,t),Zd.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>kp(t,n,r,e));kp(i,n,r,e)}});function kp(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(au(e))}}var Ap=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},jp=`~memo`,Mp=[];function Np(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Pp=new WeakMap;function Fp(e,t){let n=Pp.get(e);if(n!==void 0)return n;if(t.has(e))return!0;t.add(e);let r=!1,i=e=>{!r&&e?._zod&&Fp(e,t)&&(r=!0)},a=e._zod.def;switch(a.type){case`object`:for(let e of Reflect.ownKeys(a.shape))i(a.shape[e]);i(a.catchall);break;case`array`:i(a.element);break;case`tuple`:for(let e of a.items)i(e);i(a.rest);break;case`record`:case`map`:i(a.keyType),i(a.valueType);break;case`set`:i(a.valueType);break;case`union`:for(let e of a.options)i(e);break;case`intersection`:i(a.left),i(a.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:i(a.innerType);break;case`pipe`:i(a.in),i(a.out);break;case`function`:i(a.input),i(a.output);break;case`lazy`:i(e._zod.innerType);break;case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in a){let t=Object.getOwnPropertyDescriptor(a,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)i(n);else if(Array.isArray(n))for(let e of n)i(e)}}}return t.delete(e),Pp.set(e,r),r}function Ip(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var Lp,Rp=[],zp={alloc(e,t,n){let r=Lp;if(!r)return n;Lp=void 0;let i={value:n,issues:null};return r.set(t.value,i),Rp.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&Vp(n,e.value))throw new Ap;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,a=(o,s)=>{if(n===void 0&&(n=Fp(e,new Set),!n))return e._zod.parse=t,e._zod.run===a&&(e._zod.run=t),t(o,s);let c=o.value;if(typeof c!=`object`||!c)return t(o,s);let l=s[jp];l||(l={buckets:new Map,backEdges:void 0},s[jp]=l);let u;r===s?u=i:(u=Ip(l,e),r=s,i=u);let d=u.get(c);if(d)return o.value=d.value,d.issues?d.issues.length&&o.issues.push(...Np(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;Lp=u;let f=Rp.length,p=t(o,s);Lp=void 0;let m=Rp.length>f?Rp.pop():void 0;return p instanceof Promise?p.then(e=>(m&&(m.issues=e.issues.length?Np(e.issues):Mp),e)):(m&&(m.issues=p.issues.length?Np(p.issues):Mp),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function Bp(){return zp}function Vp(e,t){let n=e[jp]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var Hp=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,credit_card:`credit card number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(iu(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${Bl(e.values[0])}`:`Invalid option: expected one of ${bl(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${bl(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function Up(){return{localeError:Hp()}}var Wp,Gp=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Kp(){return new Gp}(Wp=globalThis).__zod_globalRegistry??(Wp.__zod_globalRegistry=Kp());var qp=globalThis.__zod_globalRegistry;function Jp(e,t){return new e({type:`string`,...V(t)})}function Yp(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...V(t)})}function Xp(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...V(t)})}function Zp(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...V(t)})}function Qp(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...V(t)})}function $p(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...V(t)})}function em(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...V(t)})}function tm(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...V(t)})}function nm(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...V(t)})}function rm(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...V(t)})}function im(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...V(t)})}function am(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...V(t)})}function om(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...V(t)})}function sm(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...V(t)})}function cm(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...V(t)})}function lm(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...V(t)})}function um(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...V(t)})}function dm(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...V(t)})}function fm(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...V(t)})}function pm(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...V(t)})}function mm(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...V(t)})}function hm(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...V(t)})}function gm(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...V(t)})}function _m(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...V(t)})}function vm(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...V(t)})}function ym(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...V(t)})}function bm(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...V(t)})}function xm(e,t){return new e({type:`number`,checks:[],...V(t)})}function Sm(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...V(t)})}function Cm(e,t){return new e({type:`boolean`,...V(t)})}function wm(e,t){return new e({type:`null`,...V(t)})}function Tm(e){return new e({type:`unknown`})}function Em(e,t){return new e({type:`never`,...V(t)})}function Dm(e,t){return new Pd({check:`less_than`,...V(t),value:e,inclusive:!1})}function Om(e,t){return new Pd({check:`less_than`,...V(t),value:e,inclusive:!0})}function km(e,t){return new Fd({check:`greater_than`,...V(t),value:e,inclusive:!1})}function Am(e,t){return new Fd({check:`greater_than`,...V(t),value:e,inclusive:!0})}function jm(e,t){return new Id({check:`multiple_of`,...V(t),value:e})}function Mm(e,t){return new Rd({check:`max_length`,...V(t),maximum:e})}function Nm(e,t){return new zd({check:`min_length`,...V(t),minimum:e})}function Pm(e,t){return new Bd({check:`length_equals`,...V(t),length:e})}function Fm(e,t){return new Hd({check:`string_format`,format:`regex`,...V(t),pattern:e})}function Im(e){return new Ud({check:`string_format`,format:`lowercase`,...V(e)})}function Lm(e){return new Wd({check:`string_format`,format:`uppercase`,...V(e)})}function Rm(e,t){return new Gd({check:`string_format`,format:`includes`,...V(t),includes:e})}function zm(e,t){return new Kd({check:`string_format`,format:`starts_with`,...V(t),prefix:e})}function Bm(e,t){return new qd({check:`string_format`,format:`ends_with`,...V(t),suffix:e})}function Vm(e){return new Jd({check:`overwrite`,tx:e})}function Hm(e){return Vm(t=>t.normalize(e))}function Um(){return Vm(e=>e.trim())}function Wm(){return Vm(e=>e.toLowerCase())}function Gm(){return Vm(e=>e.toUpperCase())}function Km(){return Vm(e=>jl(e))}function qm(e,t,n){return new e({type:`array`,element:t,...V(n)})}function Jm(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...V(n)})}function Ym(e,t){let n=Xm(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(au(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(au(r))}},e(t.value,t)),t);return n}function Xm(e,t){let n=new jd({check:`custom`,...V(t)});return n._zod.check=e,n}function Zm(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&Ol(e,t,n[t]);return e}function Qm(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??qp,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function $m(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function eh(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,eh(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Zm(o.schema,c),t.io===`input`&&uh(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function th(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function nh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${th(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+th(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
69
69
|
|
|
70
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function rh(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;rh(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var ih=new Set([`type`,`properties`,`required`,`additionalProperties`]),ah=[`oneOf`,`anyOf`];function oh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function sh(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!ih.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??oh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Ol(n,r,e.length===1?e[0]:sh(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=oh(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function ch(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of ih)if(t in e)return;let n=t.filter(e=>ah.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=sh(t);else{let e=n[0],i=ah.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>sh([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,Zm(e,r))}function lh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Zm(i,s),Zm(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())rh(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])ch(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Zm(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Ol(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:fh(t,`input`,e.processors),output:fh(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function uh(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return uh(r.element,n);if(r.type===`set`)return uh(r.valueType,n);if(r.type===`lazy`)return uh(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return uh(r.innerType,n);if(r.type===`intersection`)return uh(r.left,n)||uh(r.right,n);if(r.type===`record`||r.type===`map`)return uh(r.keyType,n)||uh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:uh(r.in,n)||uh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(uh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(uh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(uh(e,n))return!0;return!!(r.rest&&uh(r.rest,n))}return!1}var dh=(e,t={})=>n=>{let r=Qm({...n,processors:t});return eh(e,r),nh(r,e),lh(r,e)},fh=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Qm({...i??{},target:a,io:t,processors:n});return eh(e,o),nh(o,e),lh(o,e)},ph={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},mh=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=ph[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},hh=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):$m(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},gh=(e,t,n,r)=>{n.type=`boolean`},_h=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},vh=(e,t,n,r)=>{n.not={}},yh=(e,t,n,r)=>{let i=e._zod.def,a=yl(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},bh=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if($m(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if($m(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},xh=(e,t,n,r)=>{$m(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Sh=(e,t,n,r)=>{$m(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Ch=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=eh(a.element,t,{...r,path:[...r.path,`items`]})};function wh(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?wh(t.out):t.type===`catch`?wh(t.innerType):e._zod.optin}var Th=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&$m(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Ol(i.properties,e,eh(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e];return t.io===`input`?wh(n)===void 0:n._zod.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=eh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Eh=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>eh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Dh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=eh(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},Oh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>eh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?eh(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?wh(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=e._zod.bag;typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function kh(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=kh(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>kh(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?G:Ed).source),p):p}var Ah=new WeakMap;function jh(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of Ah.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=kh(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var Mh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=eh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Ol(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=eh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Ah.get(t);n||(n=[],Ah.set(t,n),t.deferred.push(()=>jh(t))),n.push(e)}i.additionalProperties=eh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&wh(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},Nh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Ph=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Fh=Symbol();function Ih(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?($m(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Fh):JSON.parse(o)}var Lh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n.default=o)},Rh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n._prefault=o)},zh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{$m(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Bh=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;eh(o,t,r);let s=t.seen.get(e);s.ref=o},Vh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Hh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Uh=(e,t,n,r)=>{let i=e._zod.innerType;eh(i,t,r);let a=t.seen.get(e);a.ref=i},Wh=new WeakSet([Object.prototype,Error.prototype]);function Gh(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Kh=W(`ZodError`,(e,t)=>{Mu.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);Wh.has(n)||(Wh.add(n),Gh(n,`format`,e=>t=>Iu(e,t)),Gh(n,`flatten`,e=>t=>Fu(e,t)),Gh(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,xl,2)}),Gh(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,xl,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),qh=Ru(Kh),Jh=zu(Kh),Yh=Bu(Kh),Xh=Hu(Kh),Zh=Wu(Kh),Qh=Gu(Kh),$h=Ku(Kh),eg=qu(Kh),tg=Ju(Kh),ng=Yu(Kh),rg=Xu(Kh),ig=Zu(Kh);function ag(){Cu.localeError||wu(Up())}function og(){Cu.memoizer||wu({memoizer:Bp()})}var sg=W(`ZodType`,(e,t)=>(ag(),Zd.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(kl(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return zl(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(A_(e,t))},superRefine(e,t){return this.check(j_(e,t))},overwrite(e){return this.check(Vm(e))},optional(){return d_(this)},exactOptional(){return p_(this)},nullable(){return h_(this)},nullish(){return d_(h_(this))},nonoptional(e){return x_(this,e)},array(){return Kg(this)},or(e){return Xg([this,e])},and(e){return e_(this,e)},transform(e){return T_(this,l_(e))},default(e){return __(this,e)},prefault(e){return y_(this,e)},catch(e){return C_(this,e)},pipe(e){return T_(this,e)},readonly(){return D_(this)},describe(e){let t=this.clone();return qp.add(t,{description:e}),t},meta(...e){if(e.length===0)return qp.get(this);let t=this.clone();return qp.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return cu(this,`~standard`,{...$d(this),jsonSchema:{input:fh(this,`input`),output:fh(this,`output`)}})},set"~standard"(e){su(this,`~standard`,e)},parse:function e(t,n){return qh(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Jh(this,t,n,{callee:e})},safeParse(e,t){return Yh(this,e,t)},async safeParseAsync(e,t){return Xh(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){su(this,`spa`,e)},encode:function e(t,n){return Zh(this,t,n,{callee:e})},decode:function e(t,n){return Qh(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await $h(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await eg(this,t,n,{callee:e})},safeEncode(e,t){return tg(this,e,t)},safeDecode(e,t){return ng(this,e,t)},async safeEncodeAsync(e,t){return rg(this,e,t)},async safeDecodeAsync(e,t){return ig(this,e,t)},toJSONSchema(e){return dh(this,{})(e)},get description(){return qp.get(this)?.description},get _def(){return this._zod.def}}),cg=W(`_ZodString`,(e,t)=>{ef.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mh(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(Fm(...e))},includes(...e){return this.check(Rm(...e))},startsWith(...e){return this.check(zm(...e))},endsWith(...e){return this.check(Bm(...e))},min(...e){return this.check(Nm(...e))},max(...e){return this.check(Mm(...e))},length(...e){return this.check(Pm(...e))},nonempty(...e){return this.check(Nm(1,...e))},lowercase(e){return this.check(Im(e))},uppercase(e){return this.check(Lm(e))},trim(){return this.check(Um())},normalize(...e){return this.check(Hm(...e))},toLowerCase(){return this.check(Wm())},toUpperCase(){return this.check(Gm())},slugify(){return this.check(Km())}}),lg=W(`ZodString`,(e,t)=>{ef.init(e,t),cg.init(e,t)},{email(e){return this.check(Yp(hg,e))},url(e){return this.check(tm(vg,e))},jwt(e){return this.check(gm(Ng,e))},emoji(e){return this.check(nm(yg,e))},guid(e){return this.check(Xp(gg,e))},uuid(e){return this.check(Zp(_g,e))},uuidv4(e){return this.check(Qp(_g,e))},uuidv6(e){return this.check($p(_g,e))},uuidv7(e){return this.check(em(_g,e))},nanoid(e){return this.check(rm(bg,e))},cuid(e){return this.check(im(xg,e))},cuid2(e){return this.check(am(Sg,e))},ulid(e){return this.check(om(Cg,e))},base64(e){return this.check(pm(Ag,e))},base64url(e){return this.check(mm(jg,e))},xid(e){return this.check(sm(wg,e))},ksuid(e){return this.check(cm(Tg,e))},ipv4(e){return this.check(lm(Eg,e))},ipv6(e){return this.check(um(Dg,e))},cidrv4(e){return this.check(dm(Og,e))},cidrv6(e){return this.check(fm(kg,e))},e164(e){return this.check(hm(Mg,e))},datetime(e){return this.check(_m(dg,e))},date(e){return this.check(vm(fg,e))},time(e){return this.check(ym(pg,e))},duration(e){return this.check(bm(mg,e))}});function K(e){return Jp(lg,e)}var ug=W(`ZodStringFormat`,(e,t)=>{tf.init(e,t),cg.init(e,t)}),dg=W(`ZodISODateTime`,(e,t)=>{yf.init(e,t),ug.init(e,t)}),fg=W(`ZodISODate`,(e,t)=>{bf.init(e,t),ug.init(e,t)}),pg=W(`ZodISOTime`,(e,t)=>{xf.init(e,t),ug.init(e,t)}),mg=W(`ZodISODuration`,(e,t)=>{Sf.init(e,t),ug.init(e,t)}),hg=W(`ZodEmail`,(e,t)=>{af.init(e,t),ug.init(e,t)}),gg=W(`ZodGUID`,(e,t)=>{nf.init(e,t),ug.init(e,t)}),_g=W(`ZodUUID`,(e,t)=>{rf.init(e,t),ug.init(e,t)}),vg=W(`ZodURL`,(e,t)=>{df.init(e,t),ug.init(e,t)}),yg=W(`ZodEmoji`,(e,t)=>{ff.init(e,t),ug.init(e,t)}),bg=W(`ZodNanoID`,(e,t)=>{pf.init(e,t),ug.init(e,t)}),xg=W(`ZodCUID`,(e,t)=>{mf.init(e,t),ug.init(e,t)}),Sg=W(`ZodCUID2`,(e,t)=>{hf.init(e,t),ug.init(e,t)}),Cg=W(`ZodULID`,(e,t)=>{gf.init(e,t),ug.init(e,t)}),wg=W(`ZodXID`,(e,t)=>{_f.init(e,t),ug.init(e,t)}),Tg=W(`ZodKSUID`,(e,t)=>{vf.init(e,t),ug.init(e,t)}),Eg=W(`ZodIPv4`,(e,t)=>{Cf.init(e,t),ug.init(e,t)}),Dg=W(`ZodIPv6`,(e,t)=>{Ef.init(e,t),ug.init(e,t)}),Og=W(`ZodCIDRv4`,(e,t)=>{Df.init(e,t),ug.init(e,t)}),kg=W(`ZodCIDRv6`,(e,t)=>{kf.init(e,t),ug.init(e,t)}),Ag=W(`ZodBase64`,(e,t)=>{jf.init(e,t),ug.init(e,t)}),jg=W(`ZodBase64URL`,(e,t)=>{Nf.init(e,t),ug.init(e,t)}),Mg=W(`ZodE164`,(e,t)=>{Pf.init(e,t),ug.init(e,t)}),Ng=W(`ZodJWT`,(e,t)=>{If.init(e,t),ug.init(e,t)}),Pg=W(`ZodNumber`,(e,t)=>{Lf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hh(e,t,n,r);let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null},{gt(e,t){return this.check(km(e,t))},gte(e,t){return this.check(Am(e,t))},min(e,t){return this.check(Am(e,t))},lt(e,t){return this.check(Dm(e,t))},lte(e,t){return this.check(Om(e,t))},max(e,t){return this.check(Om(e,t))},int(e){return this.check(Ig(e))},safe(e){return this.check(Ig(e))},positive(e){return this.check(km(0,e))},nonnegative(e){return this.check(Am(0,e))},negative(e){return this.check(Dm(0,e))},nonpositive(e){return this.check(Om(0,e))},multipleOf(e,t){return this.check(jm(e,t))},step(e,t){return this.check(jm(e,t))},finite(){return this}});function q(e){return xm(Pg,e)}var Fg=W(`ZodNumberFormat`,(e,t)=>{Rf.init(e,t),Pg.init(e,t)});function Ig(e){return Sm(Fg,e)}var Lg=W(`ZodBoolean`,(e,t)=>{zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gh(e,t,n,r)});function Rg(e){return Cm(Lg,e)}var zg=W(`ZodNull`,(e,t)=>{Bf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_h(e,t,n,r)});function Bg(e){return wm(zg,e)}var Vg=W(`ZodUnknown`,(e,t)=>{Vf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Hg(){return Tm(Vg)}var Ug=W(`ZodNever`,(e,t)=>{Hf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vh(e,t,n,r)});function Wg(e){return Em(Ug,e)}var Gg=W(`ZodArray`,(e,t)=>{og(),Wf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ch(e,t,n,r),e.element=t.element},{min(e,t){return this.check(Nm(e,t))},nonempty(e){return this.check(Nm(1,e))},max(e,t){return this.check(Mm(e,t))},length(e,t){return this.check(Pm(e,t))},unwrap(){return this.element}});function Kg(e,t){return qm(Gg,e,t)}var qg=W(`ZodObject`,(e,t)=>{og(),Zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Th(e,t,n,r),mu(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return o_(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Hg()})},loose(){return this.clone({...this._zod.def,catchall:Hg()})},strict(){return this.clone({...this._zod.def,catchall:Wg()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return H(this,e)},safeExtend(e){return Gl(this,e)},merge(e){return Kl(this,e)},pick(e){return Ul(this,e)},omit(e){return Wl(this,e)},partial(...e){return ql(u_,this,e[0])},exactPartial(...e){return ql(f_,this,e[0],`exactPartial`)},required(...e){return Jl(b_,this,e[0])}});function J(e,t){return new qg({type:`object`,shape:e??{},...V(t)})}function Jg(e,t){return new qg({type:`object`,shape:e,catchall:Wg(),...V(t)})}var Yg=W(`ZodUnion`,(e,t)=>{$f.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Eh(e,t,n,r),e.options=t.options});function Xg(e,t){return new Yg({type:`union`,options:e,...V(t)})}var Zg=W(`ZodDiscriminatedUnion`,(e,t)=>{Yg.init(e,t),ep.init(e,t)});function Qg(e,t,n){return new Zg({type:`union`,options:t,discriminator:e,...V(n)})}var $g=W(`ZodIntersection`,(e,t)=>{tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dh(e,t,n,r)});function e_(e,t){return new $g({type:`intersection`,left:e,right:t})}var t_=W(`ZodTuple`,(e,t)=>{og(),ip.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oh(e,t,n,r)},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw Error(`.partial() cannot be used on tuple schemas containing refinements`);return this.clone({...e,items:e.items.map(e=>new u_({type:`optional`,innerType:e}))})}});function n_(e,t,n){let r=t instanceof Zd;return new t_({type:`tuple`,items:e,rest:r?t:null,...V(r?n:t)})}var r_=W(`ZodRecord`,(e,t)=>{og(),cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mh(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function i_(e,t,n){return!t||!t._zod?new r_({type:`record`,keyType:K(),valueType:e,...V(t)}):new r_({type:`record`,keyType:e,valueType:t,...V(n)})}var a_=W(`ZodEnum`,(e,t)=>{lp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yh(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})}});function o_(e,t){return new a_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...V(t)})}var s_=W(`ZodLiteral`,(e,t)=>{up.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bh(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Y(e,t){return new s_({type:`literal`,values:Array.isArray(e)?e:[e],...V(t)})}var c_=W(`ZodTransform`,(e,t)=>{og(),dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sh(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Su(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(au(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(au(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function l_(e){return new c_({type:`transform`,transform:e})}var u_=W(`ZodOptional`,(e,t)=>{pp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function d_(e){return new u_({type:`optional`,innerType:e})}var f_=W(`ZodExactOptional`,(e,t)=>{mp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function p_(e){return new f_({type:`optional`,innerType:e})}var m_=W(`ZodNullable`,(e,t)=>{hp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function h_(e){return new m_({type:`nullable`,innerType:e})}var g_=W(`ZodDefault`,(e,t)=>{gp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function __(e,t){return new g_({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var v_=W(`ZodPrefault`,(e,t)=>{vp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function y_(e,t){return new v_({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var b_=W(`ZodNonOptional`,(e,t)=>{yp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ph(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function x_(e,t){return new b_({type:`nonoptional`,innerType:e,...V(t)})}var S_=W(`ZodCatch`,(e,t)=>{Sp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function C_(e,t){return new S_({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:gu(t)})}var w_=W(`ZodPipe`,(e,t)=>{Cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bh(e,t,n,r),e.in=t.in,e.out=t.out});function T_(e,t){return new w_({type:`pipe`,in:e,out:t})}var E_=W(`ZodReadonly`,(e,t)=>{Tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function D_(e){return new E_({type:`readonly`,innerType:e})}var O_=W(`ZodLazy`,(e,t)=>{Dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uh(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function X(e){return new O_({type:`lazy`,getter:e})}var k_=W(`ZodCustom`,(e,t)=>{Op.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xh(e,t,n,r)});function A_(e,t={}){return Jm(k_,e,t)}function j_(e,t){return Ym(e,t)}function Z(e,t={}){let n=new k_({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...V(t)});return n._zod.bag.Class=e,n._zod.check=t=>{t.value instanceof e||t.issues.push({code:`invalid_type`,expected:e.name,input:t.value,inst:n,path:[...n._zod.def.path??[]]})},n}var M_=X(()=>Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),N_=X(()=>J({verb:Y(`bulk.open`),"transfer-id":X(()=>M_),"total-size":q().int().nonnegative().optional(),"content-type":K().optional()}).catchall(Hg())),P_=X(()=>J({verb:Y(`bulk.resume`),"transfer-id":X(()=>M_),"ack-seq":q().int().nonnegative()}).catchall(Hg())),F_=X(()=>J({verb:Y(`bulk.cancel`),"transfer-id":X(()=>M_),reason:K().optional()}).catchall(Hg())),I_=X(()=>Xg([Xg([X(()=>N_),X(()=>P_),X(()=>F_)]),Xg([X(()=>U_),X(()=>W_),X(()=>G_),X(()=>K_),X(()=>q_),X(()=>J_),X(()=>Y_),X(()=>X_)]),J({}).catchall(Hg()),X(()=>fv),X(()=>mv),X(()=>_v),X(()=>vv),Xg([X(()=>Sv),X(()=>Cv),X(()=>wv),X(()=>Tv)]),Xg([X(()=>Dv),X(()=>Ov)]),X(()=>kv),Xg([X(()=>Vv),X(()=>Hv),X(()=>Uv)]),Xg([X(()=>Wv),X(()=>Gv),X(()=>Kv)]),X(()=>_y),Xg([X(()=>by),X(()=>xy),X(()=>Sy),X(()=>vy)])])),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(()=>cy)).optional(),mailboxes:Kg(X(()=>ov)).optional(),issued:q().int().nonnegative(),expires:q().int().nonnegative()})),X(()=>X(()=>$v));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(()=>Pv),bytes:Z(Uint8Array)})),G_=X(()=>J({verb:Y(`pty.resize`),session:X(()=>Pv),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),K_=X(()=>J({verb:Y(`pty.kill`),session:X(()=>Pv),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(()=>Pv),signal:q().int()})),Y_=X(()=>J({verb:Y(`proc.kill`),session:X(()=>Pv)})),X_=X(()=>J({verb:Y(`exec.list`)}));X(()=>J({session:X(()=>Pv),kind:Xg([Y(`pty`),Y(`proc`)]),argv:Kg(K()).optional(),cwd:K().optional()}));var Z_=X(()=>Xg([X(()=>iv),X(()=>ny),X(()=>ry),X(()=>iy),X(()=>oy),X(()=>ly),X(()=>uy),X(()=>dy),X(()=>fy),X(()=>py),X(()=>my),X(()=>hy),X(()=>gy),X(()=>cv),X(()=>dv),X(()=>gv),X(()=>Fv),X(()=>Iv),X(()=>Lv),X(()=>B_),X(()=>V_),X(()=>H_),X(()=>L_),X(()=>R_),X(()=>z_)])),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(()=>qv),params:X(()=>I_)})),cv=X(()=>J({type:Y(`manage-request`),"request-id":q().int().nonnegative(),command:X(()=>sv),scope:X(()=>Zv),token:X(()=>ey).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(()=>ey)}).catchall(Hg())),mv=X(()=>J({verb:Y(`capability.grant`),"granted-token":X(()=>ey)}).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(()=>$v)),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(()=>ey)}).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(()=>ey),members:Kg(X(()=>Av))}).catchall(Hg()));X(()=>J({result:Y(`ok`),members:Kg(X(()=>Av))}).catchall(Hg()));var Mv=X(()=>X(()=>$v)),Nv=X(()=>J({room:X(()=>yv),poster:X(()=>ov),"poster-key":X(()=>av),token:X(()=>ey),"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(()=>q().int().nonnegative()),Fv=X(()=>J({type:Y(`stream-data`),session:X(()=>Pv),seq:q().int().nonnegative(),channel:K(),bytes:Z(Uint8Array)})),Iv=X(()=>J({type:Y(`stream-ack`),session:X(()=>Pv),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),Lv=X(()=>J({type:Y(`stream-end`),session:X(()=>Pv),"exit-code":q().int().optional(),"exit-signal":q().int().optional()})),Rv=X(()=>q().int().nonnegative()),zv=X(()=>J({kind:Xg([Y(`capability-token`),Y(`revocation-entry`),Y(`handle-record`),Y(`room-notice`),K()]),protected:Z(Uint8Array),payload:Z(Uint8Array)})),Bv=X(()=>J({participant:X(()=>ov),hiding:Z(Uint8Array),binding:Z(Uint8Array)})),Vv=X(()=>J({verb:Y(`threshold.commit`),"session-id":X(()=>Rv),group:X(()=>ov),subject:X(()=>zv),deadline:q().int().nonnegative()})),Hv=X(()=>J({verb:Y(`threshold.sign`),"session-id":X(()=>Rv),commitments:Kg(X(()=>Bv))}));X(()=>J({"session-id":X(()=>Rv),group:X(()=>ov),share:Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av)})),X(()=>X(()=>$v));var Uv=X(()=>J({verb:Y(`threshold.abort`),"session-id":X(()=>Rv),reason:K().optional()})),Wv=X(()=>J({verb:Y(`threshold.keygen-round1`),"session-id":X(()=>Rv),threshold:q().int().nonnegative(),participants:Kg(X(()=>ov)),commitment:Kg(Z(Uint8Array)),"proof-of-knowledge":Z(Uint8Array).optional(),"existing-group-key":Z(Uint8Array).optional()})),Gv=X(()=>J({verb:Y(`threshold.keygen-round2`),"session-id":X(()=>Rv),share:Z(Uint8Array)})),Kv=X(()=>J({verb:Y(`threshold.keygen-confirm`),"session-id":X(()=>Rv),"transcript-digest":Z(Uint8Array),"group-key":Z(Uint8Array)})),qv=X(()=>Xg([X(()=>Jv),X(()=>Yv),X(()=>Xv)])),Jv=X(()=>K().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),Yv=X(()=>K().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),Xv=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),Zv=X(()=>J({kind:K(),path:K().optional()}));X(()=>Y(1)),X(()=>Y(4)),X(()=>Xg([q().int(),K()]));var Qv=X(()=>J({1:q().int().optional(),4:Z(Uint8Array).optional()}).catchall(Hg())),$v=X(()=>n_([Z(Uint8Array),X(()=>Qv),Xg([Z(Uint8Array),Bg()]),Z(Uint8Array)])),ey=X(()=>X(()=>$v)),ty=X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av),bearer:X(()=>ov),capability:X(()=>qv),scope:X(()=>Zv),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())),ny=X(()=>J({type:Y(`ping`)})),ry=X(()=>J({type:Y(`pong`)})),iy=X(()=>J({type:Y(`close`),reason:K().optional()})),ay=X(()=>J({device:X(()=>ov),addresses:Kg(K()),"snapshot-seconds":q().int(),"identity-key":X(()=>av),signature:Z(Uint8Array)}).catchall(Hg())),oy=X(()=>J({type:Y(`gossip`),peers:Kg(X(()=>ay))})),sy=X(()=>Xg([Y(`host`),Y(`server-reflexive`),Y(`relayed`)])),cy=X(()=>J({address:K(),kind:X(()=>sy),priority:q().int().nonnegative()})),ly=X(()=>J({type:Y(`candidates`),candidates:Kg(X(()=>cy))})),uy=X(()=>J({type:Y(`sync-punch`),nonce:q().int().nonnegative(),"deadline-unix-ms":q().int().nonnegative()})),dy=X(()=>J({type:Y(`observed-address`),address:K()})),fy=X(()=>J({type:Y(`relay-offer`),addresses:Kg(K())})),py=X(()=>J({type:Y(`relay-connect`),"target-device":X(()=>ov)})),my=X(()=>J({type:Y(`relay-data`),payload:Z(Uint8Array),"to-device":X(()=>ov).optional(),"from-device":X(()=>ov).optional()})),hy=X(()=>J({type:Y(`relay-inbound`),"source-device":X(()=>ov)})),gy=X(()=>J({type:Y(`coordinator`),term:q().int().nonnegative(),coordinator:X(()=>ov),"capacity-hint":q().int().nonnegative().optional()})),_y=X(()=>J({verb:Y(`version.get`)})),vy=X(()=>J({verb:Y(`webrtc.sfu-track-map`),"negotiation-id":q().int().nonnegative(),tracks:Kg(X(()=>yy))})),yy=X(()=>J({mid:K(),member:X(()=>ov),kind:Xg([Y(`audio`),Y(`video`)])})),by=X(()=>J({verb:Y(`webrtc.offer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),xy=X(()=>J({verb:Y(`webrtc.answer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Sy=X(()=>J({verb:Y(`webrtc.ice-candidate`),"negotiation-id":q().int().nonnegative(),candidate:X(()=>Cy).optional()})),Cy=X(()=>J({candidate:K(),"sdp-mid":K().optional(),"sdp-m-line-index":q().int().nonnegative().optional(),"username-fragment":K().optional()})),wy=16,Ty=2;function Ey(e){let t=``;for(let n of e)t+=n.toString(wy).padStart(Ty,`0`);return t}function Dy(e){return Ey(e)}var Oy=String(2**53-1).length,ky=`message`;function Ay(e,t){return`${ky}/${e}/${String(t.sentAt).padStart(Oy,`0`)}-${Ey(t.messageId)}`}function jy(e){let t=e.slice(`${ky}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function My(e){return e===`sent`||e===`received`}function Ny(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:My(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Py(e){return{async append(t,n){await e.set(Ay(t,n),new Uint8Array(hc(n,Qs)))},async roomPaths(){let t=await e.keys(`${ky}/`);return[...new Set(t.map(jy))]},async list(t){let n=(await e.keys(`${ky}/${t}/`)).sort(),r=[];for(let t of n){let n=await e.get(t);if(n===void 0)continue;let i=rl(n,il);if(!Ny(i))throw Error(`stored message at ${t} is malformed`);r.push(i)}return r}}}var Fy=[`core/federation`];function Iy(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!Fy.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function Ly(){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 Ry(){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 zy(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function By(e){let t=zy(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function Vy(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return By({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function Hy(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 Uy(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function Wy(e,t){return Uy(e)||Uy(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function Gy(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&Wy(t.path,e.path):!1}var Ky=`signature`,qy=`identity-key`,Jy=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function Yy(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=hc(t,Qs),r=new Uint8Array(Jy.length+n.length);return r.set(Jy,0),r.set(n,Jy.length),r}async function Xy(e,t){let n=await e.sign(Yy(t));return{...t,[Ky]:n}}async function Zy(e,t){let n=t[qy];try{return Hy(await e.deriveDeviceId(n[`public-key`]),t.device)?await e.verify(n,Yy(t),t[Ky]):!1}catch{return!1}}var Qy={name:`wire-mesh-core`,version:`2.0.2`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`2.18.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/relay-hub":{import:`./dist/domain/relay-hub.mjs`,require:`./dist/domain/relay-hub.cjs`},"./domain/relay-use-gate":{import:`./dist/domain/relay-use-gate.mjs`,require:`./dist/domain/relay-use-gate.cjs`},"./domain/revocation-view":{import:`./dist/domain/revocation-view.mjs`,require:`./dist/domain/revocation-view.cjs`},"./domain/room":{import:`./dist/domain/room.mjs`,require:`./dist/domain/room.cjs`},"./domain/room-path":{import:`./dist/domain/room-path.mjs`,require:`./dist/domain/room-path.cjs`},"./domain/room-rekey":{import:`./dist/domain/room-rekey.mjs`,require:`./dist/domain/room-rekey.cjs`},"./domain/room-token-verification":{import:`./dist/domain/room-token-verification.mjs`,require:`./dist/domain/room-token-verification.cjs`},"./domain/shard-manifest":{import:`./dist/domain/shard-manifest.mjs`,require:`./dist/domain/shard-manifest.cjs`},"./domain/threshold-subject":{import:`./dist/domain/threshold-subject.mjs`,require:`./dist/domain/threshold-subject.cjs`},"./domain/tokens":{import:`./dist/domain/tokens.mjs`,require:`./dist/domain/tokens.cjs`},"./domain/topology":{import:`./dist/domain/topology.mjs`,require:`./dist/domain/topology.cjs`},"./domain/topology-snapshot":{import:`./dist/domain/topology-snapshot.mjs`,require:`./dist/domain/topology-snapshot.cjs`},"./domain/webrtc-signaling":{import:`./dist/domain/webrtc-signaling.mjs`,require:`./dist/domain/webrtc-signaling.cjs`},"./generated/protocol":{import:`./dist/generated/protocol.mjs`,require:`./dist/generated/protocol.cjs`},"./generated/runtime":{import:`./dist/generated/runtime.mjs`,require:`./dist/generated/runtime.cjs`},"./ports/clock":{import:`./dist/ports/clock.mjs`,require:`./dist/ports/clock.cjs`},"./ports/identity":{import:`./dist/ports/identity.mjs`,require:`./dist/ports/identity.cjs`},"./ports/storage":{import:`./dist/ports/storage.mjs`,require:`./dist/ports/storage.cjs`},"./ports/transport":{import:`./dist/ports/transport.mjs`,require:`./dist/ports/transport.cjs`},"./package.json":`./package.json`},files:[`dist`,`wasm-dist`],packageManager:`pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c`,publishConfig:{provenance:!0,access:`public`},repository:{type:`git`,url:`https://github.com/ExaDev/wire-mesh.git`,directory:`ts/packages/core`},scripts:{_build:`tsdown`,"_build-wasm":`./scripts/build-threshold-wasm.sh`,"_conformance-check":`vitest run test/conformance.unit.test.ts`,_generate:`node generate.ts`,_lint:`eslint . --fix --cache --max-warnings 0`,_mutation:`stryker run stryker.config.ts`,_test:`vitest run`,_typecheck:`tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit`,build:`turbo run _build`,"build-wasm":`turbo run _build-wasm`,"conformance-check":`turbo run _conformance-check`,generate:`turbo run _generate`,lint:`turbo run _lint`,mutation:`turbo run _mutation`,prepack:`node scripts/assert-wasm-dist.ts`,test:`turbo run _test`,typecheck:`turbo run _typecheck`},type:`module`}.version,$y=`wire-mesh/version`,eb=`version.get`;function tb(e){return`verb`in e&&e.verb===eb}function nb(){return{result:`ok`,version:Qy}}var rb=new Set([`device`,`addresses`,`snapshot-seconds`,qy,Ky]),ib=`topology/peers`,ab=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function ob(e){for(let t of Object.keys(e)){if(rb.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(!ab.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}function sb(e){return new Uint8Array(hc(e,Qs))}function cb(e,t){return{type:`relay-data`,payload:sb(e),...t===void 0?{}:{"to-device":t}}}var lb=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function ub(e){let t=rl(new Uint8Array(e),il),n=Q_.safeParse(t);if(!n.success)throw new lb(n.error.message);return n.data}function db(e){let t;try{t=rl(e,il)}catch{return null}let n=Q_.safeParse(t);return n.success?n.data:null}function fb(){let e=new Map;return{has:t=>e.has(Dy(t)),add:t=>{e.set(Dy(t),t)},remove:t=>{e.delete(Dy(t))},list:()=>[...e.values()]}}var pb=1e3,mb=3e3;function hb(e){return{type:`handshake`,version:1,domains:[...e]}}function gb(e,t,n,r,i,a=[],o,s){let c=null,l={status:`idle`},u={status:`pending`},d=new Map,f=[],p=!1,m=Ly(),h=null,g=null,_=0,v=null,y=0,b=fb(),x=Vy({getAuthenticatedPeer:()=>c?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>b.list()}),S=new Map,C=Ly(),w=Ly(),T=Ry();function ee(){return{state:l,directory:[...d.values()],frameLog:[...f]}}function E(){m.push(ee())}function D(e){for(let t of S.values())t.reject(Error(e));S.clear()}function O(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 te(){if(c===null||l.status!==`connected`)throw Error(`not connected`);return c}async function k(e,t,n){if(c===null)throw Error(`not connected`);if(t){await c.send(cb(e,n));return}await c.send(e)}function ne(e){let t=e[`request-id`],n=S.get(t);n!==void 0&&(S.delete(t),n.resolve(e.outcome))}function re(e,t){let n=e[`request-id`],r=t?.[`from-device`],i=t?.[`to-device`],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 k(i,t!==void 0,r),E()}};if(tb(e.command.params)){a.respond(nb());return}C.push(a)}async function ie(n){if(n.type===`relay-data`){let e=db(n.payload);if(e!==null&&(e.type===`manage-request`||e.type===`manage-response`)){f.push({direction:`received`,frame:e}),e.type===`manage-response`?ne(e):re(e,n);return}f.push({direction:`received`,frame:n});return}if(f.push({direction:`received`,frame:n}),n.type===`handshake`)j(n);else if(n.type===`gossip`)for(let t of n.peers)await Zy(e,t)&&(d.set(Dy(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`)ne(n);else if(n.type===`manage-request`)re(n);else if(n.type===`pong`)T.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)w.push(e)}async function ae(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=hb([]);function j(e){if(u.status!==`pending`)return;h!==null&&(clearTimeout(h),h=null);let t=Iy(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 oe(e,t,r){if(!p){if(D(`disconnected before a response arrived`),T.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,ue(t,r).catch(e=>{oe(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}l={status:`closed`,address:t,reason:e},E()}}async function se(e,t,n){for await(let t of e.receive()){if(p)return;await ie(t),await o?.(e,t),E()}s?.(e),l.status===`connected`&&oe(`node closed the connection`,t,n)}async function ce(n){return n!==void 0&&ob(n),{type:`gossip`,peers:[await Xy(e,{...n,[$y]:Qy,[ib]:x.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/pb),"identity-key":e.identityKey})]}}async function le(e,t,n){c=e,A=hb(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 ce();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())},mb),se(c,t,n).catch(e=>{l.status===`connected`&&oe(e instanceof Error?e.message:String(e),t,n)})}async function ue(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 le(n,e,t)}return{wireUpConnection:le,session:{events:m.stream,incomingManageRequests:C.stream,revocationAnnouncements:w.stream,async connect(e,t){if(c!==null)throw Error(`a session connects once; create a new one to reconnect`);_=0,await ue(e,t)},async sendPing(){let e=te(),t={type:`ping`};f.push({direction:`sent`,frame:t}),await e.send(t),E()},async sendPingMeasureRtt(e){let n=te();return T.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){te(),n!==void 0&&await ae(n);let a=O(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{S.set(o,{resolve:e,reject:t})});return f.push({direction:`sent`,frame:a}),await k(a,n!==void 0,n),E(),i===void 0?s:Promise.race([s,new Promise(e=>{setTimeout(()=>{S.delete(o)&&(n!==void 0&&b.remove(n),e({result:`error`,code:`timeout`}))},i)})])},async sendRevocationAnnounce(e){te();let t={type:`revocation-announce`,entries:[...e]};f.push({direction:`sent`,frame:t}),await k(t,!1),E()},async sendGossipUpdate(e){te();let t=await ce(e);f.push({direction:`sent`,frame:t}),await k(t,!1),E()},getTopologyPeers(){return x.compute()},async sendDataFrame(e){te(),f.push({direction:`sent`,frame:e}),await k(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`),T.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 _b(e,t,n={now:()=>Date.now()},r=null,i=[],a){let{session:o}=gb(t,n,r,async t=>e.connect(t),a,i);return o}async function vb(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}=gb(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 yb(e){return e instanceof Error?e:Error(String(e))}function bb(e){let t=Dy(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[yb(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(yb(e))}e.onExpansionFailed?.(t,r)}return{considerAdvert(e){let i=Dy(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var xb=/^[0-9a-f]{64}$/,Sb=/^[A-Za-z0-9_-]+$/;function Cb(e,t){if(!xb.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function wb(e,t){if(Cb(e,`a`),Cb(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 Tb(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(xb.test(n)&&Sb.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(xb.test(t)&&xb.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var Eb=1e3,Db=1002,Ob=`the web console is a client only: it cannot listen`;function kb(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(Db,`protocol error`);return}let i;try{i=ub(r.data)}catch(t){if(t instanceof lb)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close(Db,`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(sb(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(Eb),Promise.resolve()}}}function Ab(){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(()=>kb(n))},async listen(){return Promise.reject(Error(Ob))}}}var jb=[{urls:`stun:stun.cloudflare.com:3478`}],Mb=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),Nb=i_(K(),q()),Pb=o_([`ms`,`s`,`min`,`h`,`d`]);Qg(`kind`,[J({kind:Y(`number`),value:q(),unit:Nb.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:Pb}),J({kind:Y(`complex`),re:q(),im:q(),unit:Nb.optional()})]);function Fb(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function Ib(e,t){let n=Fb(e),r=Fb(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function Lb(e,t){let n=Fb(e),r=Fb(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return Fb(i)}function Rb(e,t){let n=Fb(e),r=Fb(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return Fb(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 zb(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var Bb=X(()=>Xg([K(),q(),Rg(),Bg(),Kg(Bb),i_(K(),Bb)])),Vb=o_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),Hb=o_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),Ub=o_([`in`,`notIn`]),Wb=o_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),Gb=o_([`first`,`unique`]),Kb=J({kind:Y(`not`),get operand(){return ix}}),qb=J({kind:Y(`and`),get left(){return ix},get right(){return ix}}),Jb=J({kind:Y(`or`),get left(){return ix},get right(){return ix}}),Yb=J({kind:Y(`allOf`),get operands(){return Kg(ix)}}),Xb=J({kind:Y(`anyOf`),get operands(){return Kg(ix)}}),Zb=J({kind:Y(`compare`),op:Vb,get left(){return yx},get right(){return yx}}),Qb=J({kind:Y(`textCompare`),op:Hb,get left(){return yx},get right(){return yx}}),$b=J({kind:Y(`memberOf`),op:Ub,get operand(){return yx},get candidates(){return Kg(yx)}}),ex=J({kind:Y(`exists`),get operand(){return yx}}),tx=J({kind:Y(`some`),collection:Bb,get item(){return ix},get filter(){return ix.optional()}}),nx=J({kind:Y(`every`),collection:Bb,get item(){return ix},get filter(){return ix.optional()}}),rx=J({kind:Y(`treeReference`),key:Bb}),ix=Qg(`kind`,[Kb,qb,Jb,Yb,Xb,Zb,Qb,$b,ex,tx,nx,rx]),ax=J({kind:Y(`numberLiteral`),value:q(),unit:Nb.optional()}),ox=J({kind:Y(`textLiteral`),value:K()}),sx=J({kind:Y(`booleanLiteral`),value:Rg()}),cx=J({kind:Y(`instantLiteral`),value:K()}),lx=J({kind:Y(`durationLiteral`),value:q(),unit:Pb}),ux=Xg([Jg({kind:Y(`complexLiteral`),re:q(),im:q(),unit:Nb.optional()}),Jg({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:Nb.optional()})]),dx=J({kind:Y(`reference`),key:Bb,unit:Nb.optional()}),fx=J({kind:Y(`arithmetic`),op:Wb,get left(){return yx},get right(){return yx}}),px=J({kind:Y(`negate`),get operand(){return yx}}),mx=J({kind:Y(`call`),fn:K(),get args(){return Kg(yx)}}),hx=J({kind:Y(`lookup`),table:Bb,get keys(){return Kg(yx)}}),gx=J({get when(){return ix},get then(){return yx}}),_x=J({kind:Y(`conditional`),hitPolicy:Gb.optional(),get cases(){return Kg(gx)},get fallback(){return yx}}),vx=Qg(`mode`,[J({mode:Y(`max`),get item(){return yx}}),J({mode:Y(`min`),get item(){return yx}}),J({mode:Y(`reduce`),get initial(){return yx},get combine(){return yx}})]),yx=Xg([Qg(`kind`,[ax,ox,sx,cx,lx,dx,fx,px,mx,hx,_x,J({kind:Y(`fold`),collection:Bb,get filter(){return ix.optional()},combiner:vx}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:Bb}),rx]),ux]),bx={},xx=1e4;function Sx(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 Cx(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 wx(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function Tx(e,t){return t>=e.from&&t<=e.to}function Ex(e,t){let n=e.ranges.some(e=>Tx(e,t));return e.negated?!n:n}var Dx=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 Ox(e){return e.charCodeAt(0)}function kx(e,t){return{from:Ox(e),to:Ox(t)}}function Ax(e){let t=Ox(e);return{from:t,to:t}}var jx=[kx(`0`,`9`)],Mx=[kx(`A`,`Z`),kx(`a`,`z`),kx(`0`,`9`),Ax(`_`)],Nx=[Ax(` `),Ax(` `),Ax(`
|
|
70
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function rh(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;rh(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var ih=new Set([`type`,`properties`,`required`,`additionalProperties`]),ah=[`oneOf`,`anyOf`];function oh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function sh(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!ih.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??oh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Ol(n,r,e.length===1?e[0]:sh(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=oh(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function ch(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of ih)if(t in e)return;let n=t.filter(e=>ah.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=sh(t);else{let e=n[0],i=ah.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>sh([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,Zm(e,r))}function lh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Zm(i,s),Zm(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())rh(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])ch(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Zm(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Ol(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:fh(t,`input`,e.processors),output:fh(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function uh(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return uh(r.element,n);if(r.type===`set`)return uh(r.valueType,n);if(r.type===`lazy`)return uh(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return uh(r.innerType,n);if(r.type===`intersection`)return uh(r.left,n)||uh(r.right,n);if(r.type===`record`||r.type===`map`)return uh(r.keyType,n)||uh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:uh(r.in,n)||uh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(uh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(uh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(uh(e,n))return!0;return!!(r.rest&&uh(r.rest,n))}return!1}var dh=(e,t={})=>n=>{let r=Qm({...n,processors:t});return eh(e,r),nh(r,e),lh(r,e)},fh=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Qm({...i??{},target:a,io:t,processors:n});return eh(e,o),nh(o,e),lh(o,e)},ph={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},mh=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=ph[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},hh=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):$m(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},gh=(e,t,n,r)=>{n.type=`boolean`},_h=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},vh=(e,t,n,r)=>{n.not={}},yh=(e,t,n,r)=>{let i=e._zod.def,a=yl(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},bh=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if($m(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if($m(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},xh=(e,t,n,r)=>{$m(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Sh=(e,t,n,r)=>{$m(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Ch=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=eh(a.element,t,{...r,path:[...r.path,`items`]})};function wh(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?wh(t.out):t.type===`catch`?wh(t.innerType):e._zod.optin}var Th=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&$m(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Ol(i.properties,e,eh(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e];return t.io===`input`?wh(n)===void 0:n._zod.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=eh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Eh=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>eh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Dh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=eh(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},Oh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>eh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?eh(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?wh(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=e._zod.bag;typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function kh(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=kh(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>kh(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?G:Ed).source),p):p}var Ah=new WeakMap;function jh(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of Ah.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=kh(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var Mh=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=eh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Ol(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=eh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Ah.get(t);n||(n=[],Ah.set(t,n),t.deferred.push(()=>jh(t))),n.push(e)}i.additionalProperties=eh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&wh(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},Nh=(e,t,n,r)=>{let i=e._zod.def,a=eh(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Ph=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Fh=Symbol();function Ih(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?($m(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Fh):JSON.parse(o)}var Lh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n.default=o)},Rh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Ih(i.defaultValue,e,t,n,r);o!==Fh&&(n._prefault=o)},zh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{$m(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Bh=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;eh(o,t,r);let s=t.seen.get(e);s.ref=o},Vh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Hh=(e,t,n,r)=>{let i=e._zod.def;eh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Uh=(e,t,n,r)=>{let i=e._zod.innerType;eh(i,t,r);let a=t.seen.get(e);a.ref=i},Wh=new WeakSet([Object.prototype,Error.prototype]);function Gh(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Kh=W(`ZodError`,(e,t)=>{Mu.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);Wh.has(n)||(Wh.add(n),Gh(n,`format`,e=>t=>Iu(e,t)),Gh(n,`flatten`,e=>t=>Fu(e,t)),Gh(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,xl,2)}),Gh(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,xl,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),qh=Ru(Kh),Jh=zu(Kh),Yh=Bu(Kh),Xh=Hu(Kh),Zh=Wu(Kh),Qh=Gu(Kh),$h=Ku(Kh),eg=qu(Kh),tg=Ju(Kh),ng=Yu(Kh),rg=Xu(Kh),ig=Zu(Kh);function ag(){Cu.localeError||wu(Up())}function og(){Cu.memoizer||wu({memoizer:Bp()})}var sg=W(`ZodType`,(e,t)=>(ag(),Zd.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(kl(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return zl(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(A_(e,t))},superRefine(e,t){return this.check(j_(e,t))},overwrite(e){return this.check(Vm(e))},optional(){return d_(this)},exactOptional(){return p_(this)},nullable(){return h_(this)},nullish(){return d_(h_(this))},nonoptional(e){return x_(this,e)},array(){return Kg(this)},or(e){return Xg([this,e])},and(e){return e_(this,e)},transform(e){return T_(this,l_(e))},default(e){return __(this,e)},prefault(e){return y_(this,e)},catch(e){return C_(this,e)},pipe(e){return T_(this,e)},readonly(){return D_(this)},describe(e){let t=this.clone();return qp.add(t,{description:e}),t},meta(...e){if(e.length===0)return qp.get(this);let t=this.clone();return qp.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return cu(this,`~standard`,{...$d(this),jsonSchema:{input:fh(this,`input`),output:fh(this,`output`)}})},set"~standard"(e){su(this,`~standard`,e)},parse:function e(t,n){return qh(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Jh(this,t,n,{callee:e})},safeParse(e,t){return Yh(this,e,t)},async safeParseAsync(e,t){return Xh(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){su(this,`spa`,e)},encode:function e(t,n){return Zh(this,t,n,{callee:e})},decode:function e(t,n){return Qh(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await $h(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await eg(this,t,n,{callee:e})},safeEncode(e,t){return tg(this,e,t)},safeDecode(e,t){return ng(this,e,t)},async safeEncodeAsync(e,t){return rg(this,e,t)},async safeDecodeAsync(e,t){return ig(this,e,t)},toJSONSchema(e){return dh(this,{})(e)},get description(){return qp.get(this)?.description},get _def(){return this._zod.def}}),cg=W(`_ZodString`,(e,t)=>{ef.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mh(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(Fm(...e))},includes(...e){return this.check(Rm(...e))},startsWith(...e){return this.check(zm(...e))},endsWith(...e){return this.check(Bm(...e))},min(...e){return this.check(Nm(...e))},max(...e){return this.check(Mm(...e))},length(...e){return this.check(Pm(...e))},nonempty(...e){return this.check(Nm(1,...e))},lowercase(e){return this.check(Im(e))},uppercase(e){return this.check(Lm(e))},trim(){return this.check(Um())},normalize(...e){return this.check(Hm(...e))},toLowerCase(){return this.check(Wm())},toUpperCase(){return this.check(Gm())},slugify(){return this.check(Km())}}),lg=W(`ZodString`,(e,t)=>{ef.init(e,t),cg.init(e,t)},{email(e){return this.check(Yp(hg,e))},url(e){return this.check(tm(vg,e))},jwt(e){return this.check(gm(Ng,e))},emoji(e){return this.check(nm(yg,e))},guid(e){return this.check(Xp(gg,e))},uuid(e){return this.check(Zp(_g,e))},uuidv4(e){return this.check(Qp(_g,e))},uuidv6(e){return this.check($p(_g,e))},uuidv7(e){return this.check(em(_g,e))},nanoid(e){return this.check(rm(bg,e))},cuid(e){return this.check(im(xg,e))},cuid2(e){return this.check(am(Sg,e))},ulid(e){return this.check(om(Cg,e))},base64(e){return this.check(pm(Ag,e))},base64url(e){return this.check(mm(jg,e))},xid(e){return this.check(sm(wg,e))},ksuid(e){return this.check(cm(Tg,e))},ipv4(e){return this.check(lm(Eg,e))},ipv6(e){return this.check(um(Dg,e))},cidrv4(e){return this.check(dm(Og,e))},cidrv6(e){return this.check(fm(kg,e))},e164(e){return this.check(hm(Mg,e))},datetime(e){return this.check(_m(dg,e))},date(e){return this.check(vm(fg,e))},time(e){return this.check(ym(pg,e))},duration(e){return this.check(bm(mg,e))}});function K(e){return Jp(lg,e)}var ug=W(`ZodStringFormat`,(e,t)=>{tf.init(e,t),cg.init(e,t)}),dg=W(`ZodISODateTime`,(e,t)=>{yf.init(e,t),ug.init(e,t)}),fg=W(`ZodISODate`,(e,t)=>{bf.init(e,t),ug.init(e,t)}),pg=W(`ZodISOTime`,(e,t)=>{xf.init(e,t),ug.init(e,t)}),mg=W(`ZodISODuration`,(e,t)=>{Sf.init(e,t),ug.init(e,t)}),hg=W(`ZodEmail`,(e,t)=>{af.init(e,t),ug.init(e,t)}),gg=W(`ZodGUID`,(e,t)=>{nf.init(e,t),ug.init(e,t)}),_g=W(`ZodUUID`,(e,t)=>{rf.init(e,t),ug.init(e,t)}),vg=W(`ZodURL`,(e,t)=>{df.init(e,t),ug.init(e,t)}),yg=W(`ZodEmoji`,(e,t)=>{ff.init(e,t),ug.init(e,t)}),bg=W(`ZodNanoID`,(e,t)=>{pf.init(e,t),ug.init(e,t)}),xg=W(`ZodCUID`,(e,t)=>{mf.init(e,t),ug.init(e,t)}),Sg=W(`ZodCUID2`,(e,t)=>{hf.init(e,t),ug.init(e,t)}),Cg=W(`ZodULID`,(e,t)=>{gf.init(e,t),ug.init(e,t)}),wg=W(`ZodXID`,(e,t)=>{_f.init(e,t),ug.init(e,t)}),Tg=W(`ZodKSUID`,(e,t)=>{vf.init(e,t),ug.init(e,t)}),Eg=W(`ZodIPv4`,(e,t)=>{Cf.init(e,t),ug.init(e,t)}),Dg=W(`ZodIPv6`,(e,t)=>{Ef.init(e,t),ug.init(e,t)}),Og=W(`ZodCIDRv4`,(e,t)=>{Df.init(e,t),ug.init(e,t)}),kg=W(`ZodCIDRv6`,(e,t)=>{kf.init(e,t),ug.init(e,t)}),Ag=W(`ZodBase64`,(e,t)=>{jf.init(e,t),ug.init(e,t)}),jg=W(`ZodBase64URL`,(e,t)=>{Nf.init(e,t),ug.init(e,t)}),Mg=W(`ZodE164`,(e,t)=>{Pf.init(e,t),ug.init(e,t)}),Ng=W(`ZodJWT`,(e,t)=>{If.init(e,t),ug.init(e,t)}),Pg=W(`ZodNumber`,(e,t)=>{Lf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hh(e,t,n,r);let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null},{gt(e,t){return this.check(km(e,t))},gte(e,t){return this.check(Am(e,t))},min(e,t){return this.check(Am(e,t))},lt(e,t){return this.check(Dm(e,t))},lte(e,t){return this.check(Om(e,t))},max(e,t){return this.check(Om(e,t))},int(e){return this.check(Ig(e))},safe(e){return this.check(Ig(e))},positive(e){return this.check(km(0,e))},nonnegative(e){return this.check(Am(0,e))},negative(e){return this.check(Dm(0,e))},nonpositive(e){return this.check(Om(0,e))},multipleOf(e,t){return this.check(jm(e,t))},step(e,t){return this.check(jm(e,t))},finite(){return this}});function q(e){return xm(Pg,e)}var Fg=W(`ZodNumberFormat`,(e,t)=>{Rf.init(e,t),Pg.init(e,t)});function Ig(e){return Sm(Fg,e)}var Lg=W(`ZodBoolean`,(e,t)=>{zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gh(e,t,n,r)});function Rg(e){return Cm(Lg,e)}var zg=W(`ZodNull`,(e,t)=>{Bf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_h(e,t,n,r)});function Bg(e){return wm(zg,e)}var Vg=W(`ZodUnknown`,(e,t)=>{Vf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Hg(){return Tm(Vg)}var Ug=W(`ZodNever`,(e,t)=>{Hf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vh(e,t,n,r)});function Wg(e){return Em(Ug,e)}var Gg=W(`ZodArray`,(e,t)=>{og(),Wf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ch(e,t,n,r),e.element=t.element},{min(e,t){return this.check(Nm(e,t))},nonempty(e){return this.check(Nm(1,e))},max(e,t){return this.check(Mm(e,t))},length(e,t){return this.check(Pm(e,t))},unwrap(){return this.element}});function Kg(e,t){return qm(Gg,e,t)}var qg=W(`ZodObject`,(e,t)=>{og(),Zf.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Th(e,t,n,r),mu(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return o_(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Hg()})},loose(){return this.clone({...this._zod.def,catchall:Hg()})},strict(){return this.clone({...this._zod.def,catchall:Wg()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return H(this,e)},safeExtend(e){return Gl(this,e)},merge(e){return Kl(this,e)},pick(e){return Ul(this,e)},omit(e){return Wl(this,e)},partial(...e){return ql(u_,this,e[0])},exactPartial(...e){return ql(f_,this,e[0],`exactPartial`)},required(...e){return Jl(b_,this,e[0])}});function J(e,t){return new qg({type:`object`,shape:e??{},...V(t)})}function Jg(e,t){return new qg({type:`object`,shape:e,catchall:Wg(),...V(t)})}var Yg=W(`ZodUnion`,(e,t)=>{$f.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Eh(e,t,n,r),e.options=t.options});function Xg(e,t){return new Yg({type:`union`,options:e,...V(t)})}var Zg=W(`ZodDiscriminatedUnion`,(e,t)=>{Yg.init(e,t),ep.init(e,t)});function Qg(e,t,n){return new Zg({type:`union`,options:t,discriminator:e,...V(n)})}var $g=W(`ZodIntersection`,(e,t)=>{tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dh(e,t,n,r)});function e_(e,t){return new $g({type:`intersection`,left:e,right:t})}var t_=W(`ZodTuple`,(e,t)=>{og(),ip.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oh(e,t,n,r)},{rest(e){return this.clone({...this._zod.def,rest:e})},partial(){let e=this._zod.def;if(e.checks?.length)throw Error(`.partial() cannot be used on tuple schemas containing refinements`);return this.clone({...e,items:e.items.map(e=>new u_({type:`optional`,innerType:e}))})}});function n_(e,t,n){let r=t instanceof Zd;return new t_({type:`tuple`,items:e,rest:r?t:null,...V(r?n:t)})}var r_=W(`ZodRecord`,(e,t)=>{og(),cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mh(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function i_(e,t,n){return!t||!t._zod?new r_({type:`record`,keyType:K(),valueType:e,...V(t)}):new r_({type:`record`,keyType:e,valueType:t,...V(n)})}var a_=W(`ZodEnum`,(e,t)=>{lp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yh(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new a_({...t,checks:[],...V(r),entries:i})}});function o_(e,t){return new a_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...V(t)})}var s_=W(`ZodLiteral`,(e,t)=>{up.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bh(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Y(e,t){return new s_({type:`literal`,values:Array.isArray(e)?e:[e],...V(t)})}var c_=W(`ZodTransform`,(e,t)=>{og(),dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sh(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Su(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(au(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(au(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function l_(e){return new c_({type:`transform`,transform:e})}var u_=W(`ZodOptional`,(e,t)=>{pp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function d_(e){return new u_({type:`optional`,innerType:e})}var f_=W(`ZodExactOptional`,(e,t)=>{mp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function p_(e){return new f_({type:`optional`,innerType:e})}var m_=W(`ZodNullable`,(e,t)=>{hp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function h_(e){return new m_({type:`nullable`,innerType:e})}var g_=W(`ZodDefault`,(e,t)=>{gp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function __(e,t){return new g_({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var v_=W(`ZodPrefault`,(e,t)=>{vp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function y_(e,t){return new v_({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Il(t)}})}var b_=W(`ZodNonOptional`,(e,t)=>{yp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ph(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function x_(e,t){return new b_({type:`nonoptional`,innerType:e,...V(t)})}var S_=W(`ZodCatch`,(e,t)=>{Sp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function C_(e,t){return new S_({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:gu(t)})}var w_=W(`ZodPipe`,(e,t)=>{Cp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bh(e,t,n,r),e.in=t.in,e.out=t.out});function T_(e,t){return new w_({type:`pipe`,in:e,out:t})}var E_=W(`ZodReadonly`,(e,t)=>{Tp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function D_(e){return new E_({type:`readonly`,innerType:e})}var O_=W(`ZodLazy`,(e,t)=>{Dp.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uh(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function X(e){return new O_({type:`lazy`,getter:e})}var k_=W(`ZodCustom`,(e,t)=>{Op.init(e,t),sg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xh(e,t,n,r)});function A_(e,t={}){return Jm(k_,e,t)}function j_(e,t){return Ym(e,t)}function Z(e,t={}){let n=new k_({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...V(t)});return n._zod.bag.Class=e,n._zod.check=t=>{t.value instanceof e||t.issues.push({code:`invalid_type`,expected:e.name,input:t.value,inst:n,path:[...n._zod.def.path??[]]})},n}var M_=X(()=>Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),N_=X(()=>J({verb:Y(`bulk.open`),"transfer-id":X(()=>M_),"total-size":q().int().nonnegative().optional(),"content-type":K().optional()}).catchall(Hg())),P_=X(()=>J({verb:Y(`bulk.resume`),"transfer-id":X(()=>M_),"ack-seq":q().int().nonnegative()}).catchall(Hg())),F_=X(()=>J({verb:Y(`bulk.cancel`),"transfer-id":X(()=>M_),reason:K().optional()}).catchall(Hg())),I_=X(()=>Xg([Xg([X(()=>N_),X(()=>P_),X(()=>F_)]),Xg([X(()=>U_),X(()=>W_),X(()=>G_),X(()=>K_),X(()=>q_),X(()=>J_),X(()=>Y_),X(()=>X_)]),J({}).catchall(Hg()),X(()=>fv),X(()=>mv),X(()=>_v),X(()=>vv),Xg([X(()=>Sv),X(()=>Cv),X(()=>wv),X(()=>Tv)]),Xg([X(()=>Dv),X(()=>Ov)]),X(()=>kv),Xg([X(()=>Vv),X(()=>Hv),X(()=>Uv)]),Xg([X(()=>Wv),X(()=>Gv),X(()=>Kv)]),X(()=>_y),Xg([X(()=>by),X(()=>xy),X(()=>Sy),X(()=>vy)])])),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(()=>cy)).optional(),mailboxes:Kg(X(()=>ov)).optional(),issued:q().int().nonnegative(),expires:q().int().nonnegative()})),X(()=>X(()=>$v));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(()=>Pv),bytes:Z(Uint8Array)})),G_=X(()=>J({verb:Y(`pty.resize`),session:X(()=>Pv),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),K_=X(()=>J({verb:Y(`pty.kill`),session:X(()=>Pv),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(()=>Pv),signal:q().int()})),Y_=X(()=>J({verb:Y(`proc.kill`),session:X(()=>Pv)})),X_=X(()=>J({verb:Y(`exec.list`)}));X(()=>J({session:X(()=>Pv),kind:Xg([Y(`pty`),Y(`proc`)]),argv:Kg(K()).optional(),cwd:K().optional()}));var Z_=X(()=>Xg([X(()=>iv),X(()=>ny),X(()=>ry),X(()=>iy),X(()=>oy),X(()=>ly),X(()=>uy),X(()=>dy),X(()=>fy),X(()=>py),X(()=>my),X(()=>hy),X(()=>gy),X(()=>cv),X(()=>dv),X(()=>gv),X(()=>Fv),X(()=>Iv),X(()=>Lv),X(()=>B_),X(()=>V_),X(()=>H_),X(()=>L_),X(()=>R_),X(()=>z_)])),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(()=>qv),params:X(()=>I_)})),cv=X(()=>J({type:Y(`manage-request`),"request-id":q().int().nonnegative(),command:X(()=>sv),scope:X(()=>Zv),token:X(()=>ey).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(()=>ey)}).catchall(Hg())),mv=X(()=>J({verb:Y(`capability.grant`),"granted-token":X(()=>ey)}).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(()=>$v)),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(()=>ey)}).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(()=>ey),members:Kg(X(()=>Av))}).catchall(Hg()));X(()=>J({result:Y(`ok`),members:Kg(X(()=>Av))}).catchall(Hg()));var Mv=X(()=>X(()=>$v)),Nv=X(()=>J({room:X(()=>yv),poster:X(()=>ov),"poster-key":X(()=>av),token:X(()=>ey),"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(()=>q().int().nonnegative()),Fv=X(()=>J({type:Y(`stream-data`),session:X(()=>Pv),seq:q().int().nonnegative(),channel:K(),bytes:Z(Uint8Array)})),Iv=X(()=>J({type:Y(`stream-ack`),session:X(()=>Pv),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),Lv=X(()=>J({type:Y(`stream-end`),session:X(()=>Pv),"exit-code":q().int().optional(),"exit-signal":q().int().optional()})),Rv=X(()=>q().int().nonnegative()),zv=X(()=>J({kind:Xg([Y(`capability-token`),Y(`revocation-entry`),Y(`handle-record`),Y(`room-notice`),K()]),protected:Z(Uint8Array),payload:Z(Uint8Array)})),Bv=X(()=>J({participant:X(()=>ov),hiding:Z(Uint8Array),binding:Z(Uint8Array)})),Vv=X(()=>J({verb:Y(`threshold.commit`),"session-id":X(()=>Rv),group:X(()=>ov),subject:X(()=>zv),deadline:q().int().nonnegative()})),Hv=X(()=>J({verb:Y(`threshold.sign`),"session-id":X(()=>Rv),commitments:Kg(X(()=>Bv))}));X(()=>J({"session-id":X(()=>Rv),group:X(()=>ov),share:Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av)})),X(()=>X(()=>$v));var Uv=X(()=>J({verb:Y(`threshold.abort`),"session-id":X(()=>Rv),reason:K().optional()})),Wv=X(()=>J({verb:Y(`threshold.keygen-round1`),"session-id":X(()=>Rv),threshold:q().int().nonnegative(),participants:Kg(X(()=>ov)),commitment:Kg(Z(Uint8Array)),"proof-of-knowledge":Z(Uint8Array).optional(),"existing-group-key":Z(Uint8Array).optional()})),Gv=X(()=>J({verb:Y(`threshold.keygen-round2`),"session-id":X(()=>Rv),share:Z(Uint8Array)})),Kv=X(()=>J({verb:Y(`threshold.keygen-confirm`),"session-id":X(()=>Rv),"transcript-digest":Z(Uint8Array),"group-key":Z(Uint8Array)})),qv=X(()=>Xg([X(()=>Jv),X(()=>Yv),X(()=>Xv)])),Jv=X(()=>K().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),Yv=X(()=>K().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),Xv=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),Zv=X(()=>J({kind:K(),path:K().optional()}));X(()=>Y(1)),X(()=>Y(4)),X(()=>Xg([q().int(),K()]));var Qv=X(()=>J({1:q().int().optional(),4:Z(Uint8Array).optional()}).catchall(Hg())),$v=X(()=>n_([Z(Uint8Array),X(()=>Qv),Xg([Z(Uint8Array),Bg()]),Z(Uint8Array)])),ey=X(()=>X(()=>$v)),ty=X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>ov),"issuer-key":X(()=>av),bearer:X(()=>ov),capability:X(()=>qv),scope:X(()=>Zv),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())),ny=X(()=>J({type:Y(`ping`)})),ry=X(()=>J({type:Y(`pong`)})),iy=X(()=>J({type:Y(`close`),reason:K().optional()})),ay=X(()=>J({device:X(()=>ov),addresses:Kg(K()),"snapshot-seconds":q().int(),"identity-key":X(()=>av),signature:Z(Uint8Array)}).catchall(Hg())),oy=X(()=>J({type:Y(`gossip`),peers:Kg(X(()=>ay))})),sy=X(()=>Xg([Y(`host`),Y(`server-reflexive`),Y(`relayed`)])),cy=X(()=>J({address:K(),kind:X(()=>sy),priority:q().int().nonnegative()})),ly=X(()=>J({type:Y(`candidates`),candidates:Kg(X(()=>cy))})),uy=X(()=>J({type:Y(`sync-punch`),nonce:q().int().nonnegative(),"deadline-unix-ms":q().int().nonnegative()})),dy=X(()=>J({type:Y(`observed-address`),address:K()})),fy=X(()=>J({type:Y(`relay-offer`),addresses:Kg(K())})),py=X(()=>J({type:Y(`relay-connect`),"target-device":X(()=>ov)})),my=X(()=>J({type:Y(`relay-data`),payload:Z(Uint8Array),"to-device":X(()=>ov).optional(),"from-device":X(()=>ov).optional()})),hy=X(()=>J({type:Y(`relay-inbound`),"source-device":X(()=>ov)})),gy=X(()=>J({type:Y(`coordinator`),term:q().int().nonnegative(),coordinator:X(()=>ov),"capacity-hint":q().int().nonnegative().optional()})),_y=X(()=>J({verb:Y(`version.get`)})),vy=X(()=>J({verb:Y(`webrtc.sfu-track-map`),"negotiation-id":q().int().nonnegative(),tracks:Kg(X(()=>yy))})),yy=X(()=>J({mid:K(),member:X(()=>ov),kind:Xg([Y(`audio`),Y(`video`)])})),by=X(()=>J({verb:Y(`webrtc.offer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),xy=X(()=>J({verb:Y(`webrtc.answer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Sy=X(()=>J({verb:Y(`webrtc.ice-candidate`),"negotiation-id":q().int().nonnegative(),candidate:X(()=>Cy).optional()})),Cy=X(()=>J({candidate:K(),"sdp-mid":K().optional(),"sdp-m-line-index":q().int().nonnegative().optional(),"username-fragment":K().optional()})),wy=16,Ty=2;function Ey(e){let t=``;for(let n of e)t+=n.toString(wy).padStart(Ty,`0`);return t}function Dy(e){return Ey(e)}var Oy=String(2**53-1).length,ky=`message`;function Ay(e,t){return`${ky}/${e}/${String(t.sentAt).padStart(Oy,`0`)}-${Ey(t.messageId)}`}function jy(e){let t=e.slice(`${ky}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function My(e){return e===`sent`||e===`received`}function Ny(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:My(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Py(e){return{async append(t,n){await e.set(Ay(t,n),new Uint8Array(hc(n,Qs)))},async roomPaths(){let t=await e.keys(`${ky}/`);return[...new Set(t.map(jy))]},async list(t){let n=(await e.keys(`${ky}/${t}/`)).sort(),r=[];for(let t of n){let n=await e.get(t);if(n===void 0)continue;let i=rl(n,il);if(!Ny(i))throw Error(`stored message at ${t} is malformed`);r.push(i)}return r}}}function Fy(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 Iy(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function Ly(e,t){return Iy(e)||Iy(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function Ry(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&Ly(t.path,e.path):!1}var zy=`signature`,By=`identity-key`,Vy=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function Hy(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=hc(t,Qs),r=new Uint8Array(Vy.length+n.length);return r.set(Vy,0),r.set(n,Vy.length),r}async function Uy(e,t){let n=await e.sign(Hy(t));return{...t,[zy]:n}}async function Wy(e,t){let n=t[By];try{return Fy(await e.deriveDeviceId(n[`public-key`]),t.device)?await e.verify(n,Hy(t),t[zy]):!1}catch{return!1}}var Gy={name:`wire-mesh-core`,version:`2.1.0`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`2.18.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/advert-extension-policy":{import:`./dist/domain/advert-extension-policy.mjs`,require:`./dist/domain/advert-extension-policy.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/relay-hub":{import:`./dist/domain/relay-hub.mjs`,require:`./dist/domain/relay-hub.cjs`},"./domain/relay-use-gate":{import:`./dist/domain/relay-use-gate.mjs`,require:`./dist/domain/relay-use-gate.cjs`},"./domain/revocation-view":{import:`./dist/domain/revocation-view.mjs`,require:`./dist/domain/revocation-view.cjs`},"./domain/room":{import:`./dist/domain/room.mjs`,require:`./dist/domain/room.cjs`},"./domain/room-path":{import:`./dist/domain/room-path.mjs`,require:`./dist/domain/room-path.cjs`},"./domain/room-rekey":{import:`./dist/domain/room-rekey.mjs`,require:`./dist/domain/room-rekey.cjs`},"./domain/room-token-verification":{import:`./dist/domain/room-token-verification.mjs`,require:`./dist/domain/room-token-verification.cjs`},"./domain/shard-manifest":{import:`./dist/domain/shard-manifest.mjs`,require:`./dist/domain/shard-manifest.cjs`},"./domain/threshold-subject":{import:`./dist/domain/threshold-subject.mjs`,require:`./dist/domain/threshold-subject.cjs`},"./domain/tokens":{import:`./dist/domain/tokens.mjs`,require:`./dist/domain/tokens.cjs`},"./domain/topology":{import:`./dist/domain/topology.mjs`,require:`./dist/domain/topology.cjs`},"./domain/topology-snapshot":{import:`./dist/domain/topology-snapshot.mjs`,require:`./dist/domain/topology-snapshot.cjs`},"./domain/webrtc-signaling":{import:`./dist/domain/webrtc-signaling.mjs`,require:`./dist/domain/webrtc-signaling.cjs`},"./generated/protocol":{import:`./dist/generated/protocol.mjs`,require:`./dist/generated/protocol.cjs`},"./generated/runtime":{import:`./dist/generated/runtime.mjs`,require:`./dist/generated/runtime.cjs`},"./ports/clock":{import:`./dist/ports/clock.mjs`,require:`./dist/ports/clock.cjs`},"./ports/identity":{import:`./dist/ports/identity.mjs`,require:`./dist/ports/identity.cjs`},"./ports/storage":{import:`./dist/ports/storage.mjs`,require:`./dist/ports/storage.cjs`},"./ports/transport":{import:`./dist/ports/transport.mjs`,require:`./dist/ports/transport.cjs`},"./package.json":`./package.json`},files:[`dist`,`wasm-dist`],packageManager:`pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c`,publishConfig:{provenance:!0,access:`public`},repository:{type:`git`,url:`https://github.com/ExaDev/wire-mesh.git`,directory:`ts/packages/core`},scripts:{_build:`tsdown`,"_build-wasm":`./scripts/build-threshold-wasm.sh`,"_conformance-check":`vitest run test/conformance.unit.test.ts`,_generate:`node generate.ts`,_lint:`eslint . --fix --cache --max-warnings 0`,_mutation:`stryker run stryker.config.ts`,_test:`vitest run`,_typecheck:`tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit`,build:`turbo run _build`,"build-wasm":`turbo run _build-wasm`,"conformance-check":`turbo run _conformance-check`,generate:`turbo run _generate`,lint:`turbo run _lint`,mutation:`turbo run _mutation`,prepack:`node scripts/assert-wasm-dist.ts`,test:`turbo run _test`,typecheck:`turbo run _typecheck`},type:`module`}.version,Ky=`wire-mesh/version`,qy=`version.get`;function Jy(e){return`verb`in e&&e.verb===qy}function Yy(){return{result:`ok`,version:Gy}}var Xy=new Set([`device`,`addresses`,`snapshot-seconds`,By,zy]),Zy=`topology/peers`,Qy=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function $y(e){for(let t of Object.keys(e)){if(Xy.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(!Qy.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}var eb=[`core/federation`];function tb(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!eb.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function nb(){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 rb(){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 ib(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function ab(e){let t=ib(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function ob(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return ab({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function sb(e){return new Uint8Array(hc(e,Qs))}function cb(e,t){return{type:`relay-data`,payload:sb(e),...t===void 0?{}:{"to-device":t}}}var lb=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function ub(e){let t=rl(new Uint8Array(e),il),n=Q_.safeParse(t);if(!n.success)throw new lb(n.error.message);return n.data}function db(e){let t;try{t=rl(e,il)}catch{return null}let n=Q_.safeParse(t);return n.success?n.data:null}function fb(){let e=new Map;return{has:t=>e.has(Dy(t)),add:t=>{e.set(Dy(t),t)},remove:t=>{e.delete(Dy(t))},list:()=>[...e.values()]}}var pb=1e3,mb=3e3;function hb(e){return{type:`handshake`,version:1,domains:[...e]}}function gb(e,t,n,r,i,a=[],o,s){let c=null,l={status:`idle`},u={status:`pending`},d=new Map,f=[],p=!1,m=nb(),h=null,g=null,_=0,v=null,y=0,b=fb(),x=ob({getAuthenticatedPeer:()=>c?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>b.list()}),S=new Map,C=nb(),w=nb(),T=rb();function ee(){return{state:l,directory:[...d.values()],frameLog:[...f]}}function E(){m.push(ee())}function D(e){for(let t of S.values())t.reject(Error(e));S.clear()}function O(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 te(){if(c===null||l.status!==`connected`)throw Error(`not connected`);return c}async function k(e,t,n){if(c===null)throw Error(`not connected`);if(t){await c.send(cb(e,n));return}await c.send(e)}function ne(e){let t=e[`request-id`],n=S.get(t);n!==void 0&&(S.delete(t),n.resolve(e.outcome))}function re(e,t){let n=e[`request-id`],r=t?.[`from-device`],i=t?.[`to-device`],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 k(i,t!==void 0,r),E()}};if(Jy(e.command.params)){a.respond(Yy());return}C.push(a)}async function ie(n){if(n.type===`relay-data`){let e=db(n.payload);if(e!==null&&(e.type===`manage-request`||e.type===`manage-response`)){f.push({direction:`received`,frame:e}),e.type===`manage-response`?ne(e):re(e,n);return}f.push({direction:`received`,frame:n});return}if(f.push({direction:`received`,frame:n}),n.type===`handshake`)j(n);else if(n.type===`gossip`)for(let t of n.peers)await Wy(e,t)&&(d.set(Dy(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`)ne(n);else if(n.type===`manage-request`)re(n);else if(n.type===`pong`)T.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)w.push(e)}async function ae(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=hb([]);function j(e){if(u.status!==`pending`)return;h!==null&&(clearTimeout(h),h=null);let t=tb(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 oe(e,t,r){if(!p){if(D(`disconnected before a response arrived`),T.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,ue(t,r).catch(e=>{oe(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}l={status:`closed`,address:t,reason:e},E()}}async function se(e,t,n){for await(let t of e.receive()){if(p)return;await ie(t),await o?.(e,t),E()}s?.(e),l.status===`connected`&&oe(`node closed the connection`,t,n)}async function ce(n){return n!==void 0&&$y(n),{type:`gossip`,peers:[await Uy(e,{...n,[Ky]:Gy,[Zy]:x.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/pb),"identity-key":e.identityKey})]}}async function le(e,t,n){c=e,A=hb(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 ce();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())},mb),se(c,t,n).catch(e=>{l.status===`connected`&&oe(e instanceof Error?e.message:String(e),t,n)})}async function ue(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 le(n,e,t)}return{wireUpConnection:le,session:{events:m.stream,incomingManageRequests:C.stream,revocationAnnouncements:w.stream,async connect(e,t){if(c!==null)throw Error(`a session connects once; create a new one to reconnect`);_=0,await ue(e,t)},async sendPing(){let e=te(),t={type:`ping`};f.push({direction:`sent`,frame:t}),await e.send(t),E()},async sendPingMeasureRtt(e){let n=te();return T.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){te(),n!==void 0&&await ae(n);let a=O(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{S.set(o,{resolve:e,reject:t})});return f.push({direction:`sent`,frame:a}),await k(a,n!==void 0,n),E(),i===void 0?s:Promise.race([s,new Promise(e=>{setTimeout(()=>{S.delete(o)&&(n!==void 0&&b.remove(n),e({result:`error`,code:`timeout`}))},i)})])},async sendRevocationAnnounce(e){te();let t={type:`revocation-announce`,entries:[...e]};f.push({direction:`sent`,frame:t}),await k(t,!1),E()},async sendGossipUpdate(e){te();let t=await ce(e);f.push({direction:`sent`,frame:t}),await k(t,!1),E()},getTopologyPeers(){return x.compute()},async sendDataFrame(e){te(),f.push({direction:`sent`,frame:e}),await k(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`),T.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 _b(e,t,n={now:()=>Date.now()},r=null,i=[],a){let{session:o}=gb(t,n,r,async t=>e.connect(t),a,i);return o}async function vb(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}=gb(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 yb(e){return e instanceof Error?e:Error(String(e))}function bb(e){let t=Dy(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[yb(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(yb(e))}e.onExpansionFailed?.(t,r)}return{considerAdvert(e){let i=Dy(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var xb=/^[0-9a-f]{64}$/,Sb=/^[A-Za-z0-9_-]+$/;function Cb(e,t){if(!xb.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function wb(e,t){if(Cb(e,`a`),Cb(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 Tb(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(xb.test(n)&&Sb.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(xb.test(t)&&xb.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var Eb=1e3,Db=1002,Ob=`the web console is a client only: it cannot listen`;function kb(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(Db,`protocol error`);return}let i;try{i=ub(r.data)}catch(t){if(t instanceof lb)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close(Db,`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(sb(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(Eb),Promise.resolve()}}}function Ab(){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(()=>kb(n))},async listen(){return Promise.reject(Error(Ob))}}}var jb=[{urls:`stun:stun.cloudflare.com:3478`}],Mb=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),Nb=i_(K(),q()),Pb=o_([`ms`,`s`,`min`,`h`,`d`]);Qg(`kind`,[J({kind:Y(`number`),value:q(),unit:Nb.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:Pb}),J({kind:Y(`complex`),re:q(),im:q(),unit:Nb.optional()})]);function Fb(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function Ib(e,t){let n=Fb(e),r=Fb(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function Lb(e,t){let n=Fb(e),r=Fb(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return Fb(i)}function Rb(e,t){let n=Fb(e),r=Fb(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return Fb(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 zb(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var Bb=X(()=>Xg([K(),q(),Rg(),Bg(),Kg(Bb),i_(K(),Bb)])),Vb=o_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),Hb=o_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),Ub=o_([`in`,`notIn`]),Wb=o_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),Gb=o_([`first`,`unique`]),Kb=J({kind:Y(`not`),get operand(){return ix}}),qb=J({kind:Y(`and`),get left(){return ix},get right(){return ix}}),Jb=J({kind:Y(`or`),get left(){return ix},get right(){return ix}}),Yb=J({kind:Y(`allOf`),get operands(){return Kg(ix)}}),Xb=J({kind:Y(`anyOf`),get operands(){return Kg(ix)}}),Zb=J({kind:Y(`compare`),op:Vb,get left(){return yx},get right(){return yx}}),Qb=J({kind:Y(`textCompare`),op:Hb,get left(){return yx},get right(){return yx}}),$b=J({kind:Y(`memberOf`),op:Ub,get operand(){return yx},get candidates(){return Kg(yx)}}),ex=J({kind:Y(`exists`),get operand(){return yx}}),tx=J({kind:Y(`some`),collection:Bb,get item(){return ix},get filter(){return ix.optional()}}),nx=J({kind:Y(`every`),collection:Bb,get item(){return ix},get filter(){return ix.optional()}}),rx=J({kind:Y(`treeReference`),key:Bb}),ix=Qg(`kind`,[Kb,qb,Jb,Yb,Xb,Zb,Qb,$b,ex,tx,nx,rx]),ax=J({kind:Y(`numberLiteral`),value:q(),unit:Nb.optional()}),ox=J({kind:Y(`textLiteral`),value:K()}),sx=J({kind:Y(`booleanLiteral`),value:Rg()}),cx=J({kind:Y(`instantLiteral`),value:K()}),lx=J({kind:Y(`durationLiteral`),value:q(),unit:Pb}),ux=Xg([Jg({kind:Y(`complexLiteral`),re:q(),im:q(),unit:Nb.optional()}),Jg({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:Nb.optional()})]),dx=J({kind:Y(`reference`),key:Bb,unit:Nb.optional()}),fx=J({kind:Y(`arithmetic`),op:Wb,get left(){return yx},get right(){return yx}}),px=J({kind:Y(`negate`),get operand(){return yx}}),mx=J({kind:Y(`call`),fn:K(),get args(){return Kg(yx)}}),hx=J({kind:Y(`lookup`),table:Bb,get keys(){return Kg(yx)}}),gx=J({get when(){return ix},get then(){return yx}}),_x=J({kind:Y(`conditional`),hitPolicy:Gb.optional(),get cases(){return Kg(gx)},get fallback(){return yx}}),vx=Qg(`mode`,[J({mode:Y(`max`),get item(){return yx}}),J({mode:Y(`min`),get item(){return yx}}),J({mode:Y(`reduce`),get initial(){return yx},get combine(){return yx}})]),yx=Xg([Qg(`kind`,[ax,ox,sx,cx,lx,dx,fx,px,mx,hx,_x,J({kind:Y(`fold`),collection:Bb,get filter(){return ix.optional()},combiner:vx}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:Bb}),rx]),ux]),bx={},xx=1e4;function Sx(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 Cx(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 wx(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function Tx(e,t){return t>=e.from&&t<=e.to}function Ex(e,t){let n=e.ranges.some(e=>Tx(e,t));return e.negated?!n:n}var Dx=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 Ox(e){return e.charCodeAt(0)}function kx(e,t){return{from:Ox(e),to:Ox(t)}}function Ax(e){let t=Ox(e);return{from:t,to:t}}var jx=[kx(`0`,`9`)],Mx=[kx(`A`,`Z`),kx(`a`,`z`),kx(`0`,`9`),Ax(`_`)],Nx=[Ax(` `),Ax(` `),Ax(`
|
|
71
71
|
`),Ax(`\r`),Ax(`\f`),Ax(`\v`)];function Px(e){switch(e){case`d`:return{kind:`charClass`,negated:!1,ranges:jx};case`D`:return{kind:`charClass`,negated:!0,ranges:jx};case`w`:return{kind:`charClass`,negated:!1,ranges:Mx};case`W`:return{kind:`charClass`,negated:!0,ranges:Mx};case`s`:return{kind:`charClass`,negated:!1,ranges:Nx};case`S`:return{kind:`charClass`,negated:!0,ranges:Nx};default:throw Error(`unreachable shorthand class letter`)}}var Fx=new Set([`|`,`)`]),Ix={".":`.`,"*":`*`,"+":`+`,"?":`?`,"(":`(`,")":`)`,"[":`[`,"]":`]`,"{":`{`,"}":`}`,"|":`|`,"^":`^`,$:`$`,"\\":`\\`,"/":`/`,n:`
|
|
72
|
-
`,t:` `,r:`\r`,f:`\f`,v:`\v`},Lx=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 Dx(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()||Fx.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!Fx.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 Dx(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 Dx(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 Dx(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 Dx(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 Dx(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 Dx(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 Dx(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new Dx(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 Px(t);let n=Ix[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new Dx(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 Dx(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new Dx(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 Dx(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return Px(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new Dx(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=Ix[t];if(n===void 0)throw new Dx(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new Dx(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 Dx(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 Dx(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 Dx(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=Ix[t];if(n===void 0)throw new Dx(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new Dx(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function Rx(e){let t=new Lx(e),n=t.parseAlternation();if(!t.atEnd())throw new Dx(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var zx=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=>Ex(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 Bx(e){return new zx().build(e)}function Vx(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 Hx(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 Ux(e,t){let n=t.length,r=Vx(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=Hx(e,r,a);if(o.add(e.start),r=Vx(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function Wx(e){let t=Bx(Rx(e));return{test:e=>Ux(t,e)}}function Gx(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=zb(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function Kx(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=zb(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function qx(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 Jx={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function Yx(e,t){return e*Jx[t]}function Xx(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function Zx(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function Qx(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 $x(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?Ib(t.unit,n.unit)?Q(qx(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=Xx(t.value);if(r===void 0)return Zx(t.value);let i=Xx(n.value);return i===void 0?Zx(n.value):Q(qx(e,r,i))}case`duration`:return n.kind===`duration`?Q(qx(e,Yx(t.value,t.unit),Yx(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`?Ib(t.unit,n.unit)?Q(e===`eq`?t.re===n.re&&t.im===n.im:t.re!==n.re||t.im!==n.im):$(`wrong-type`,`cannot compare complex values with incompatible units`):$(`wrong-type`,`cannot compare a 'complex' value with a '${n.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function eS(e,t,n){if(t.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the left operand is '${t.kind}'`);if(n.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the right operand is '${n.kind}'`);switch(e){case`equals`:return Q(t.value===n.value);case`notEquals`:return Q(t.value!==n.value);case`matches`:case`notMatches`:{let r;try{r=new RegExp(n.value)}catch{return $(`wrong-type`,`'${n.value}' is not a valid regular expression pattern`)}let i=r.test(t.value);return Q(e===`matches`?i:!i)}case`portableMatches`:case`portableNotMatches`:{let r;try{r=Wx(n.value)}catch(e){let t=e instanceof Dx?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 tS(e,t){switch(e.kind){case`number`:return t.kind===`number`?Ib(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=Xx(e.value);if(n===void 0)return Zx(e.value);let r=Xx(t.value);return r===void 0?Zx(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(Yx(e.value,e.unit)===Yx(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?Ib(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 nS(e){return Ib(e,void 0)}function rS(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 iS(e,t,n){switch(e){case`add`:return Ib(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 Ib(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:Lb(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:Rb(t.unit,n.unit)});case`power`:return!nS(t.unit)||!nS(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!nS(t.unit)||!nS(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 aS(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:Yx(t.value,t.unit)+Yx(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:Yx(t.value,t.unit)-Yx(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 oS(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function sS(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:Lb(e.unit,t.unit)}}function cS(e,t,n){switch(e){case`add`:return Ib(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 Ib(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(sS(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:Rb(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function lS(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!nS(e.unit)||!nS(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=oS(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=sS(i,r);return t.value>=0?Q(i):cS(`divide`,n,i)}function uS(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=Xx(t.value);if(e===void 0)return Zx(t.value);let r=Xx(n.value);return r===void 0?Zx(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=Xx(t.value);return e===void 0?Zx(t.value):Qx(e+Yx(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=Xx(n.value);return e===void 0?Zx(n.value):Qx(e+Yx(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`?aS(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`?lS(t,n):cS(e,oS(t),oS(n)):iS(e,t,n)}function dS(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(!Ib(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function fS(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 pS(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 pS(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([pS(e.left,t,n,r,i,a,o,s,c+1),pS(e.right,t,n,r,i,a,o,s,c+1)]);return Gx(l,u)}case`or`:{let[l,u]=await Promise.all([pS(e.left,t,n,r,i,a,o,s,c+1),pS(e.right,t,n,r,i,a,o,s,c+1)]);return Kx(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>pS(e,t,n,r,i,a,o,s,c+1)))).reduce(Gx,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>pS(e,t,n,r,i,a,o,s,c+1)))).reduce(Kx,Q(!1));case`compare`:{let[l,u]=await Promise.all([mS(e.left,t,n,r,i,a,o,s,c+1),mS(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:$x(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([mS(e.left,t,n,r,i,a,o,s,c+1),mS(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:eS(e.op,l.value,u.value)}case`memberOf`:{let l=await mS(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 mS(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:tS(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=zb(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await mS(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 Cx(pS,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`?pS(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?Kx:Gx,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=ix.safeParse(u.node);return d.success?pS(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 mS(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=dS(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=>mS(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 fS(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(Mb(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([mS(e.left,t,n,r,i,a,o,s,c+1),mS(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`negate`:{let l=await mS(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:rS(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>mS(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 pS(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return mS(u,t,n,r,i,a,o,s,c+1)}return mS(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 pS(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=zb(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return mS(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await Cx(pS,e.collection,e.filter,t,n,i,a,o,s,c+1),l=wx(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 mS(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 mS(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 mS(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=$x(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=yx.safeParse(u.node);return d.success?mS(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 hS({functions:e=bx,maxNodes:t=xx,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>pS(r,i,a,void 0,e,new Set,0,Sx(t,n),0),evaluateValue:async(r,i,a)=>mS(r,i,a,void 0,e,new Set,0,Sx(t,n),0)}}var{evaluatePredicate:gS,evaluateValue:_S}=hS({}),vS=Kg(ix),yS=`bearer-is`,bS=`expires-at`,xS=`scope-narrows`,SS=`capability-is`,CS=`depth-remaining`,wS=[yS,bS,xS,SS,CS];function TS(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}function ES(e){return{found:!0,value:{kind:`boolean`,value:e}}}var DS={[yS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(Hy(t.parentClaims.bearer,t.childIssuer)),[bS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(t.candidate.expires<=t.parentClaims.expires),[xS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(Gy(t.parentClaims.scope,t.candidate.scope)),[SS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(t.parentClaims.capability===t.candidate.capability),[CS]:(e,t)=>{if(t.parentClaims===void 0)return ES(!1);let n=t.parentClaims[`delegations-remaining`];return ES(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function OS(e){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:null},right:{kind:`booleanLiteral`,value:!0}}}var kS=async()=>Promise.resolve({found:!1}),AS=async()=>Promise.resolve({found:!1}),jS=async()=>Promise.resolve([]);async function MS(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:kS,resolveLookup:AS,resolveCollection:jS,resolveDelegate:async(e,t)=>TS(e)?DS[e](t,r):{found:!1}};for(let e of wS){let t=await gS(OS(e),r,i);if(t.status!==`definite`||!t.value)return e}}async function NS(e,t,n,r={}){let i={clock:n,claims:t},a={resolveValue:kS,resolveLookup:AS,resolveCollection:jS,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 gS(t,i,a);if(e.status!==`definite`||!e.value)return{ok:!1,reason:`not_satisfied`}}return{ok:!0}}function PS(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function FS(e){return Uint8Array.from(e)}function IS(e){return FS(hc(e,Qs))}function LS(e){return IS({1:e.identityKey.alg,4:e.deviceId})}function RS(e){let[,,t]=e;if(t===null)return;let n;try{n=rl(t,il)}catch{return}let r=ty.safeParse(n);return r.success?r.data:void 0}async function zS(e,t){let n=await VS(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});return n.ok&&t.expectedBearer!==void 0&&!Hy(n.claims.bearer,t.expectedBearer)?{ok:!1,reason:`bearer_mismatch`}:n}async function BS(e,t,n){if(Hy(e.issuer,t.issuer))return!0;if(e.authorization===void 0)return!1;let r;try{r=rl(e.authorization,il)}catch{return!1}let i=ey.safeParse(r);if(!i.success)return!1;let a=await zS(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&Gy(a.claims.scope,t.scope)}async function VS(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=rl(r,il)}catch{return{ok:!1,reason:`malformed`}}let o=ty.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(!await t.identity.verify(s[`issuer-key`],PS(n,r),i))return{ok:!1,reason:`bad_signature`};if(!Hy(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 BS(e,s,t))return{ok:!1,reason:`revoked`};if(s.conditions!==void 0){let e;try{e=rl(s.conditions,il)}catch{return{ok:!1,reason:`conditions_invalid`}}let n=vS.safeParse(e);if(!n.success)return{ok:!1,reason:`conditions_invalid`};if(!(await NS(n.data,s,t.clock,t.extraPredicateResolvers)).ok)return{ok:!1,reason:`conditions_not_satisfied`}}if(s.parent!==void 0){let e;try{e=rl(s.parent,il)}catch{return{ok:!1,reason:`parent_invalid`}}let n=ey.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let r=await VS(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 MS(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 HS={"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 US(e,t,n){let r=await MS(e,t,n);return r===void 0?void 0:HS[r]}async function WS(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};let t;if(e.parent!==void 0){let n=RS(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await US(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=IS(e.parent)}let n=IS({"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:IS(e.conditions)}}),r=LS(e.identity);return{ok:!0,token:[r,{},n,await e.identity.sign(PS(r,n))]}}var GS=`webrtc:signal`,KS={kind:`node`};function qS(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function JS(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function YS(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function XS(e,t){return{verb:GS,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function ZS(e,t){return{verb:GS,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function QS(e,t){return{verb:GS,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function $S(e){return{candidate:e.candidate,...e.sdpMid===null?{}:{"sdp-mid":e.sdpMid},...e.sdpMLineIndex===null?{}:{"sdp-m-line-index":e.sdpMLineIndex},...e.usernameFragment===null?{}:{"username-fragment":e.usernameFragment}}}function eC(e){return{candidate:e.candidate,...e[`sdp-mid`]===void 0?{}:{sdpMid:e[`sdp-mid`]},...e[`sdp-m-line-index`]===void 0?{}:{sdpMLineIndex:e[`sdp-m-line-index`]},...e[`username-fragment`]===void 0?{}:{usernameFragment:e[`username-fragment`]}}}function tC(){let e=0;return()=>{let t=e;return e+=1,t}}async function nC(e,t){if(e.token===void 0)return!1;let n=await zS(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===KS.kind:!1}function rC(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=ub(r.data)}catch(t){if(t instanceof lb)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(sb(t)),Promise.resolve()):Promise.reject(Error(`data channel is not open (state: ${e.readyState})`))},receive:()=>s,async close(){return e.close(),Promise.resolve()}}}var iC=`wire-mesh`,aC={entriesFor:async()=>Promise.resolve([])};function oC(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function sC(e,t){e.addEventListener(`open`,()=>{t(rC(e))},{once:!0})}var cC=16,lC=36e5;async function uC(e,t){let n=new Uint8Array(cC);crypto.getRandomValues(n);let r=await WS({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:GS,scope:KS,expires:t.now()+lC});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function dC(e,t){let n={identity:t.identity,clock:t.clock,revocation:aC},r=new Map,i=new Map,a=tC();async function o(t,n){let r=QS(t,n===null?void 0:$S(n));await e.sendManageRequest(r,KS,i.get(t))}async function s(a,s){if(!await nC(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),oC(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{e.channel.binaryType=`arraybuffer`,sC(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(ZS(c,u.sdp??``),KS,a.fromDevice)}async function c(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.setRemoteDescription({type:`answer`,sdp:t.sdp}),await e.respond({result:`ok`})}async function l(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.addIceCandidate(t.candidate===void 0?null:eC(t.candidate)),await e.respond({result:`ok`})}async function u(){for await(let t of e.incomingManageRequests){if(t.command.verb!==`webrtc:signal`)continue;let e=t.command.params;qS(e)?await s(t,e):JS(e)?await c(t,e):YS(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),oC(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(iC);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{sC(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(XS(s,d.sdp??``),KS,n,await uC(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 fC(e){let[t,n]=(0,O.useState)(void 0);return(0,O.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 pC=16;function mC(e){let t=``;for(let n of e)t+=n.toString(pC).padStart(2,`0`);return t}function hC(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 gC(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${hC(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}function _C(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function vC({address:e,session:t,onClose:n,onMessagePeer:r}){let i=fC(t),a=i===void 0?`idle`:gC(i),o=i?.directory??[],s=i?.frameLog??[];return(0,M.jsxs)(Ia,{withBorder:!0,padding:`md`,radius:`md`,children:[(0,M.jsxs)(mi,{justify:`space-between`,mb:`xs`,children:[(0,M.jsx)(Yi,{fw:600,children:e}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,disabled:i?.state.status!==`connected`,onClick:()=>{t.sendPing()},children:`Send ping`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:n,children:`Disconnect`})]})]}),(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`sm`,children:a}),(0,M.jsx)(Yi,{fw:600,size:`sm`,children:`Peer directory`}),o.length===0?(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:`No gossip received yet.`}):(0,M.jsxs)(F,{striped:!0,children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`device`}),(0,M.jsx)(F.Th,{children:`addresses`}),(0,M.jsx)(F.Th,{children:`snapshot (unix s)`}),(0,M.jsx)(F.Th,{})]})}),(0,M.jsx)(F.Tbody,{children:o.map(e=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:mC(e.device)}),(0,M.jsx)(F.Td,{children:e.advert.addresses.join(`, `)}),(0,M.jsx)(F.Td,{children:e.advert[`snapshot-seconds`]}),(0,M.jsx)(F.Td,{children:(0,M.jsx)(ka,{size:`xs`,onClick:()=>{r(e.device)},children:`Message`})})]},mC(e.device)))})]}),(0,M.jsx)(Yi,{fw:600,size:`sm`,mt:`md`,children:`Frame log`}),(0,M.jsx)(F.ScrollContainer,{minWidth:0,h:384,children:(0,M.jsxs)(F,{children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`direction`}),(0,M.jsx)(F.Th,{children:`frame`})]})}),(0,M.jsx)(F.Tbody,{children:s.map((e,t)=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:e.direction}),(0,M.jsx)(F.Td,{children:_C(e.frame)})]},t))})]})})]})}function yC({peers:e,onConnect:t,onDismiss:n}){return e.length===0?null:(0,M.jsxs)(Ia,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`discovered-peers`,children:[(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`xs`,children:`Discovered peers`}),(0,M.jsxs)(F,{striped:!0,children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`device`}),(0,M.jsx)(F.Th,{children:`addresses`}),(0,M.jsx)(F.Th,{})]})}),(0,M.jsx)(F.Tbody,{children:e.map(e=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:mC(e.device)}),(0,M.jsx)(F.Td,{children:e.addresses.join(`, `)}),(0,M.jsx)(F.Td,{children:(0,M.jsxs)(mi,{gap:`xs`,children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{t(e.key)},children:`Connect`}),(0,M.jsx)(ka,{size:`xs`,variant:`light`,color:`red`,onClick:()=>{n(e.key)},children:`Dismiss`})]})})]},e.key))})]})]})}function bC(e,t){return e.sentAt===t.sentAt?Ey(e.messageId).localeCompare(Ey(t.messageId)):e.sentAt-t.sentAt}function xC(e,t){let n=new Set(e.map(e=>Ey(e.messageId))),r=t.filter(e=>!n.has(Ey(e.messageId)));return r.length===0?e:[...e,...r].sort(bC)}function SC(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function CC(e,t){switch(t.type){case`opened`:{let n=e.get(t.roomPath);return new Map(e).set(t.roomPath,{roomPath:t.roomPath,participants:t.participants,session:t.session,token:void 0,status:`connected`,messages:n?.messages??[],notices:[],outgoing:n?.outgoing??[],pendingJoinRequest:void 0,unread:n?.unread??0})}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{roomPath:t.roomPath,participants:t.participants,session:void 0,token:void 0,status:`closed`,messages:xC([],t.messages),notices:[],outgoing:[],pendingJoinRequest:void 0,unread:0}):SC(e,t.roomPath,e=>({...e,messages:xC(e.messages,t.messages)}));case`notices`:return SC(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return SC(e,t.roomPath,e=>{let n=xC(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 SC(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return SC(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 SC(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return SC(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return SC(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return SC(e,t.roomPath,e=>({...e,token:t.token}));case`closed`:return SC(e,t.roomPath,e=>({...e,status:`closed`}))}return e}function wC(e,t){let n=Tb(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}var TC=12;function EC(e){return e.participants.length===0?e.roomPath:e.participants.map(e=>e.slice(0,TC)).join(`, `)}function DC({conversations:e,selected:t,onSelect:n}){return e.length===0?null:(0,M.jsxs)(Za,{gap:0,"data-testid":`conversation-list`,children:[(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`xs`,children:`Conversations`}),e.map(e=>(0,M.jsx)(Ua,{active:e.roomPath===t,label:EC(e),description:e.status===`connected`?void 0:`offline`,rightSection:(0,M.jsxs)(mi,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,M.jsx)(ba,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,M.jsx)(ba,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function OC({placeholder:e,ariaLabel:t,submitLabel:n,onSubmit:r,onCancel:i,size:a,autoFocus:o}){let[s,c]=(0,O.useState)(``),[l,u]=(0,O.useState)(void 0);function d(){let e=s.trim();e!==``&&(u(void 0),Promise.resolve(r(e)).then(()=>{c(``)}).catch(e=>{u(e instanceof Error?e.message:String(e))}))}function f(e){e.key===`Enter`&&d(),e.key===`Escape`&&i?.()}return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(mi,{gap:`xs`,flex:1,children:[(0,M.jsx)(_o,{flex:1,...a===void 0?{}:{size:a},placeholder:e,"aria-label":t,autoComplete:`off`,autoFocus:o,value:s,onChange:e=>{c(e.currentTarget.value)},onKeyDown:f}),(0,M.jsx)(ka,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,M.jsx)(Yi,{size:`sm`,c:`red`,children:l})]})}var kC=`You`,AC=256,jC=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function MC({sentAt:e}){return(0,M.jsx)(Yi,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:jC.format(e)})}function NC({messages:e,outgoing:t,peerLabel:n,onRetry:r,onDiscard:i}){let a=(0,O.useRef)(null);return(0,O.useEffect)(()=>{let e=a.current;e!==null&&(e.scrollTop=e.scrollHeight)},[e,t]),(0,M.jsx)(Lr,{h:AC,viewportRef:a,children:(0,M.jsxs)(Za,{gap:4,children:[e.map((t,r)=>{let i=t.direction===`sent`,a=r===0||e[r-1]?.direction!==t.direction;return(0,M.jsxs)(Za,{gap:0,align:i?`flex-end`:`flex-start`,mt:a?`xs`:0,children:[a&&(0,M.jsx)(Yi,{size:`xs`,fw:600,c:`dimmed`,children:i?kC:n}),(0,M.jsx)(Yi,{size:`sm`,children:t.text}),(0,M.jsx)(MC,{sentAt:t.sentAt})]},Ey(t.messageId))}),t.map(e=>(0,M.jsxs)(Za,{gap:0,align:`flex-end`,mt:`xs`,children:[(0,M.jsx)(Yi,{size:`xs`,fw:600,c:`dimmed`,children:kC}),(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:e.text}),e.status===`sending`?(0,M.jsx)(Yi,{size:`xs`,c:`dimmed`,children:`Sending`}):(0,M.jsxs)(mi,{gap:`xs`,children:[(0,M.jsx)(Yi,{size:`xs`,c:`red`,children:`Not sent: ${e.error}`}),(0,M.jsx)(ka,{size:`compact-xs`,variant:`light`,onClick:()=>{r(e.localId)},children:`Retry`}),(0,M.jsx)(ka,{size:`compact-xs`,variant:`subtle`,color:`gray`,onClick:()=>{i(e.localId)},children:`Dismiss`})]})]},e.localId))]})})}function PC(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function FC({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=PC(e);return(0,M.jsx)(P,{children:n===void 0?(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,fs:`italic`,children:`encrypted notice -- no key held for its epoch`}):(0,M.jsx)(Yi,{size:`sm`,children:n})},t)});return(0,M.jsxs)(Za,{gap:4,children:[t,(0,M.jsxs)(ba,{variant:`light`,color:`gray`,size:`sm`,w:`fit-content`,children:[e.length,` notice`,e.length===1?``:`s`]})]})}var IC=864e5;function LC({view:e,onSend:t,onPostNotice:n,onRetry:r,onDiscard:i}){return(0,M.jsxs)(Za,{gap:`xs`,children:[(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsx)(Yi,{fw:600,children:e.participants.join(`, `)}),(0,M.jsx)(Yi,{size:`sm`,c:e.status===`connected`?`green`:`dimmed`,children:e.status})]}),e.pendingJoinRequest&&(0,M.jsx)(Wi,{color:`blue`,title:`Message request`,children:(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsxs)(Yi,{size:`sm`,children:[e.pendingJoinRequest.requesterHex,` wants to message you`]}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+IC})},children:`Allow`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,M.jsx)(NC,{messages:e.messages,outgoing:e.outgoing,peerLabel:EC(e),onRetry:r,onDiscard:i}),(0,M.jsx)(mi,{children:(0,M.jsx)(OC,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,M.jsx)(Ba,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,M.jsx)(FC,{notices:e.notices}),(0,M.jsx)(mi,{children:(0,M.jsx)(OC,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})})]})}var RC=`room:member`;async function zC(e,t){let n=await zS(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=Tb(t.roomPath),i=Dy(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!==Dy(t.identity.deviceId))return{ok:!1,reason:`wrong_chain_root`};return{ok:!0,claims:n.claims,rootIssuerKey:n.rootIssuerKey}}var BC=16;function VC(){let e=new Uint8Array(BC);return crypto.getRandomValues(e),e}function HC(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function UC(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}async function WC(e,t,n,r,i,a){let o=await e.sendManageRequest(UC(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 GC(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);HC(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 WS({identity:e.identity,clock:e.clock,tokenId:VC(),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 KC(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 zS(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(!Gy(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 qC=16;function JC(){let e=new Uint8Array(qC);return crypto.getRandomValues(e),e}var YC=3e5;function XC(e,t,n){return{verb:RC,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function ZC(e,t,n,r,i){let a=XC(n,JC(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function QC(e,t,n){let r=await WC(e,RC,{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 $C(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 zC(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=GC({capability:RC,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??YC,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=KC({capability:RC,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 ew(){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 tw=32,nw=256,rw=12,iw=4,aw=8,ow=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function sw(){return crypto.getRandomValues(new Uint8Array(tw))}function cw(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(iw);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(aw);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(ow.length+n.length+t.length+r.length),a=0;return i.set(ow,a),a+=ow.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function lw(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(cw(t))},n,{name:`AES-GCM`,length:nw},!1,[`encrypt`,`decrypt`])}async function uw(e,t){let n=crypto.getRandomValues(new Uint8Array(rw)),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 dw(e,t){if(t.length<rw)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,rw),r=t.slice(rw);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function fw(e,t){return uw(e,t)}async function pw(e,t){return dw(e,t)}async function mw(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function hw(e,t){return uw(await mw(e),t)}async function gw(e,t){return dw(await mw(e),t)}var _w=`+aes256gcm`;function vw(e){return bw(e)?e:`${e}${_w}`}function yw(e){return bw(e)?e.slice(0,e.length-10):e}function bw(e){return e.endsWith(_w)}function xw(e,t){return{verb:RC,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function Sw(e,t,n,r,i,a){return e.sendManageRequest(xw(n,r),{kind:`room`,path:t},i,a)}function Cw(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 zC(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)=>pw(await lw(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 ww(e){return`data/${Dy(e)}/head`}function Tw(e,t){return`data/${Dy(e)}/entry/${String(t)}`}async function Ew(e,t){let n=await e.get(ww(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function Dw(e,t,n){await e.set(ww(t),new TextEncoder().encode(String(n)))}async function Ow(e,t){return Ew(e,t)}async function kw(e,t){let n=await Ew(e.storage,e.identity.deviceId)+1;return await e.storage.set(Tw(e.identity.deviceId,n),t),await Dw(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function Aw(e,t,n){let r=await Ew(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(Tw(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 jw(e,t){let n=await Ew(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(Tw(t.peer,r),n);return await Dw(e,t.peer,r),{ok:!0}}async function Mw(e,t,n){let r=await Ew(e,t),i=[];for(let a=n+1;a<=r;a+=1){let n=await e.get(Tw(t,a));if(n===void 0)break;i.push(n)}return i}function Nw(e){return Uint8Array.from(e)}function Pw(e){return Nw(hc(e,Qs))}function Fw(e){return Pw({1:e.identityKey.alg,4:e.deviceId})}function Iw(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function Lw(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 Rw(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=rl(r,il)}catch{return{ok:!1,reason:`malformed`}}let o=Nv.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(t.expectedRoom!==void 0&&s.room!==t.expectedRoom)return{ok:!1,reason:`wrong_room`};if(!await t.identity.verify(s[`poster-key`],Iw(n,r),i))return{ok:!1,reason:`bad_signature`};if(!Lw(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(bw(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await zC(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 zw(e){let t=Pw({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=Fw(e.identity);return[n,{},t,await e.identity.sign(Iw(n,t))]}var Bw=16;function Vw(e){return new Uint8Array(hc(e,Qs))}function Hw(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(Bw)),c=await hw(o,e.plaintext),l=await zw({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:vw(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await kw({identity:t,storage:n},Vw(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await Ow(n,e);if(!(await jw(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 Mw(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 Rw(o,{identity:t,clock:r,revocation:i,expectedRoom:n});if(!s.ok)return{verified:!1,reason:s.reason};let c=s.claims;if(!bw(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:yw(c[`content-type`]),claims:c};if(d===void 0)return f;try{let e=await gw(d,c.content);return{...f,plaintext:e}}catch{return f}}function u(e){try{let t=rl(e,il),n=Mv.safeParse(t);return n.success?n.data:void 0}catch{return}}return{postEncryptedNotice:o,ingestPeerEntry:s,readOwnNotices:async e=>c(t.deviceId,e),readPeerNotices:async(e,t)=>c(e,t)}}var Uw=32;function Ww(e){let{session:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=Hw({identity:r,storage:n,clock:i,revocation:a,roomKeys:o}),l=new Map;async function u(e){let r=await Ow(n,e);await t.sendDataFrame({type:`data-request`,peer:e,"from-seq":r})}function d(e){if(e.type===`data-have`){l.set(Dy(e.peer),e.peer),u(e.peer).catch(()=>void 0);return}if(e.type===`data-entries`){(async()=>{(await jw(n,e)).ok&&(e.entries.length>=Uw&&await u(e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await Aw(n,e,Uw);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 Gw(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===``||Dy(n.deviceId)!==c)return;let l=await zC(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=sw(),f=await fw(await lw(await u(l.rootIssuerKey),{room:o,keyEpoch:1}),d);s.set(o,1,d),await Sw(t,o,1,f)}var Kw=[`core/management`,`core/room`],qw=16;function Jw(){let e=new Uint8Array(qw);return crypto.getRandomValues(e),e}function Yw(e){if(e?.session===void 0||e.status!==`connected`)throw Error(`conversation is not connected`);return e.session}function Xw(e,t,n){let[r,i]=(0,O.useReducer)(CC,new Map),a=Dy(e.deviceId);(0,O.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:wC(t,a),messages:r})}})(),()=>{e.abort()}},[n,a]);let o=(0,O.useRef)(new Map),s=(0,O.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=Ww({session:n,storage:ew(),identity:e,clock:t,revocation:aC,roomKeys:o,onChange:()=>{c()}});return s.wiring=l,{wiring:l,roomKeys:o,refresh:c}}let l=(0,O.useCallback)(async(l,u)=>{let d={},f=await vb(l,e,Kw,{clock:t,onFrame:(e,t)=>{d.current?.(t)}}),p=u??await f.peerDeviceId,m=Dy(p),h=wb(a,m);if(r.get(h)?.status===`connected`){await f.close();return}let g=c(f,h);o.current.set(h,g),s.current.delete(h),d.current=e=>{g.wiring.handleFrame(e)},i({type:`opened`,roomPath:h,participants:[m],session:f}),i({type:`restored`,roomPath:h,participants:[m],messages:await n.list(h)}),$C(f,{identity:e,clock:t,revocation:aC,peerDevice:p,currentMembers:()=>[e.deviceId,p]},{onMessage:e=>{let t={direction:`received`,text:e.text,messageId:e.messageId,sentAt:e.sentAt};n.append(h,t),i({type:`message`,roomPath:h,message:t})},onJoinRequest:e=>{i({type:`join-request`,roomPath:h,request:{requesterHex:Dy(e.requesterDevice),async decide(t){i({type:`join-request-settled`,roomPath:h}),await e.decide(t)}}})},onRekey:async n=>{let r=s.current.get(h);if(r===void 0){await n.respond({result:`error`,code:`no_token`});return}await Cw({identity:e,clock:t,revocation:aC,ownRoomMemberToken:r,onRekey:e=>{e.contentKeys.forEach((t,n)=>{g.roomKeys.set(h,e.keyEpoch-e.contentKeys.length+1+n,t)}),g.refresh()}})(n)}}),(async()=>{for await(let e of f.events)e.state.status===`closed`&&i({type:`closed`,roomPath:h})})()},[e,t,a,r,n]),u=(0,O.useCallback)(async(a,c)=>{let l=r.get(a),u=Yw(l),d=l?.token;d===void 0&&(d=(await QC(u,a)).token,s.current.set(a,d),i({type:`token`,roomPath:a,token:d}),Gw({session:u,identity:e,clock:t,revocation:aC,ownRoomMemberToken:d,roomPath:a,roomKeys:o.current.get(a)?.roomKeys??{get:async()=>Promise.resolve(void 0),set:()=>void 0,currentEpoch:async()=>Promise.resolve(void 0)}}).catch(()=>void 0));let f=await ZC(u,a,c,d);if(f.result!==`ok`)throw Error(`send failed: ${f.code}`);let p={direction:`sent`,text:c,messageId:Jw(),sentAt:t.now()};return await n.append(a,p),p},[r,t,n,e]),d=(0,O.useCallback)(async(e,t,n)=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`sending`}});try{let r=await u(e,n);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)}})}},[u]),f=(0,O.useCallback)(async(e,t)=>d(e,crypto.randomUUID(),t),[d]),p=(0,O.useCallback)(async(e,t)=>{let n=r.get(e)?.outgoing.find(e=>e.localId===t);n!==void 0&&await d(e,t,n.text)},[r,d]),m=(0,O.useCallback)((e,t)=>{i({type:`outgoing-removed`,roomPath:e,localId:t})},[]),h=(0,O.useCallback)(async(n,a)=>{let c=r.get(n),l=Yw(c),u=o.current.get(n);if(u===void 0)throw Error(`conversation ${n} has no notice board`);let d=c?.token??s.current.get(n);d===void 0&&(d=(await QC(l,n)).token,s.current.set(n,d),i({type:`token`,roomPath:n,token:d})),await Gw({session:l,identity:e,clock:t,revocation:aC,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]),g=(0,O.useCallback)(e=>{i({type:`read`,roomPath:e})},[]);return{conversations:[...r.values()],attach:l,send:f,retry:p,discard:m,postNotice:h,markRead:g}}var Zw=8787,Qw=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function $w(e){return Qw.test(e)}async function eT(e=Zw){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 tT(e=typeof location>`u`?``:location.host){return $w(e)?Promise.resolve(void 0):eT()}var nT=`q7ltm10`,rT=`ws://localhost:8787`,iT=[`core/management`,`core/exec`,`core/data`],aT=[`core/management`,`core/data`],oT=5,sT=1e3,cT=3e4,lT=2,uT={maxAttempts:oT,delayMs:e=>Math.min(sT*lT**(e-1),cT)};function dT(e){return e.startsWith(`ws://`)||e.startsWith(`wss://`)?e:`ws://${e}`}function fT({identity:e,clock:t,messageStore:n,discoverLocalNode:r=tT,defaultAddress:i=rT}){let[a,o]=(0,O.useState)(i),[s,c]=(0,O.useState)(aT),[l,u]=(0,O.useState)([]),[d,f]=(0,O.useState)([]),[p,m]=(0,O.useState)([]),h=Xw(e,t,n),[g,_]=(0,O.useState)(),v=h.conversations.find(e=>e.roomPath===g)??h.conversations[0],{markRead:y}=h,b=v?.roomPath,x=v?.unread??0;(0,O.useEffect)(()=>{b!==void 0&&x>0&&y(b)},[b,x,y]);let S=(0,O.useRef)(h.attach);(0,O.useEffect)(()=>{S.current=h.attach},[h.attach]);let C=(0,O.useRef)(l);(0,O.useEffect)(()=>{C.current=l},[l]);let w=(0,O.useRef)(s);(0,O.useEffect)(()=>{w.current=s},[s]);function T(n,r){let i=dC(r,{identity:e,clock:t,iceServers:jb,onIncomingConnection:e=>{S.current(e)}});u(e=>[...e,{address:n,session:r,negotiator:i}])}async function ee(e){return new Promise(t=>{f(n=>[...n,{key:mC(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 D(){let n={current:null},r=_b(Ab(),e,t,uT,[],e=>{n.current?.considerAdvert(e)});return n.current=bb({selfDeviceId:e.deviceId,shouldExpand:ee,dial:te,onExpanded:(e,t,n)=>{T(t,n)}}),r}async function te(e){let t=D();return t.connect(dT(e),w.current).then(()=>t)}function k(e){if(C.current.some(t=>t.address===e))return;let t=D();T(e,t),t.connect(e,s).catch(()=>{})}let ne=(0,O.useRef)(k);(0,O.useEffect)(()=>{ne.current=k});let re=(0,O.useRef)(r);(0,O.useEffect)(()=>{re.current=r},[r]);let ie=(0,O.useRef)(!1);(0,O.useEffect)(()=>{ie.current||(ie.current=!0,re.current().then(e=>{e!==void 0&&ne.current(e)}))},[]);function ae(e){e.preventDefault(),k(a)}function A(e){e.session.close(),u(t=>t.filter(t=>t.session!==e.session))}function j(t,n){t.initiate(n).then(async t=>{await h.attach(t,n),_(wb(Dy(e.deviceId),Dy(n)))}).catch(e=>{m(t=>[...t,{key:crypto.randomUUID(),peer:mC(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,M.jsxs)(Za,{className:nT,p:`md`,gap:`lg`,children:[(0,M.jsx)(Co,{order:1,children:`wire-mesh console`}),(0,M.jsxs)(`form`,{onSubmit:ae,children:[(0,M.jsxs)(mi,{align:`flex-end`,wrap:`wrap`,children:[(0,M.jsx)(_o,{label:`Node`,value:a,onChange:e=>{o(e.currentTarget.value)},required:!0,style:{flex:1,minWidth:`16rem`}}),(0,M.jsx)(ka,{type:`submit`,children:`Connect`})]}),(0,M.jsx)(_a.Group,{label:`Domains offered`,value:s,onChange:c,children:(0,M.jsx)(mi,{mt:`xs`,children:iT.map(e=>(0,M.jsx)(_a,{value:e,label:e},e))})})]}),(0,M.jsx)(yC,{peers:d,onConnect:e=>{E(e,!0)},onDismiss:e=>{E(e,!1)}}),l.map(e=>(0,M.jsx)(vC,{address:e.address,session:e.session,onClose:()=>{A(e)},onMessagePeer:t=>{j(e.negotiator,t)}},e.address)),p.map(e=>(0,M.jsx)(Wi,{color:`red`,title:`Could not message ${e.peer}`,withCloseButton:!0,onClose:()=>{m(t=>t.filter(t=>t.key!==e.key))},children:e.reason},e.key)),(0,M.jsx)(DC,{conversations:h.conversations,selected:v?.roomPath,onSelect:_}),v!==void 0&&(0,M.jsx)(LC,{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 pT=`modulepreload`,mT=function(e){return`/`+e},hT={},gT=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=mT(t,n),t=s(t),t in hT)return;hT[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`:pT,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)})},_T=`false`,vT=`false`,yT=_T===`true`,bT=vT===`true`;function xT(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,yT||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await gT(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()},!bT){if(yT)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 ST(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,[c,l]=(0,O.useState)(!1),[u,d]=(0,O.useState)(!1),[f]=(0,O.useState)(()=>xT({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 CT(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=ST();function a(){t(!1),r(!1)}return!e&&!n?null:(0,M.jsx)(qa,{onClose:a,closeButtonProps:{"aria-label":`Dismiss`},title:n?`Update available`:`Ready to work offline`,pos:`fixed`,bottom:`1rem`,right:`1rem`,style:{zIndex:1e3},children:(0,M.jsx)(mi,{gap:`xs`,children:n?(0,M.jsx)(ka,{size:`xs`,onClick:()=>{i(!0)},children:`Reload`}):void 0})})}var wT=`ws://localhost:8787`;function TT(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function ET(e,t){return e?wT:TT(t)}var DT=await vl(await No()),OT={now:()=>Date.now()},kT=Py(await No()),AT=ET(!1,window.location),jT=document.getElementById(`root`);if(jT===null)throw Error(`missing #root element`);(0,wo.createRoot)(jT).render((0,M.jsx)(O.StrictMode,{children:(0,M.jsxs)(Vt,{children:[(0,M.jsx)(fT,{identity:DT,clock:OT,messageStore:kT,defaultAddress:AT}),(0,M.jsx)(CT,{})]})}));
|
|
72
|
+
`,t:` `,r:`\r`,f:`\f`,v:`\v`},Lx=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 Dx(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()||Fx.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!Fx.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 Dx(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 Dx(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 Dx(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 Dx(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 Dx(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 Dx(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 Dx(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new Dx(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 Px(t);let n=Ix[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new Dx(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 Dx(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new Dx(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 Dx(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return Px(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new Dx(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=Ix[t];if(n===void 0)throw new Dx(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new Dx(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 Dx(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 Dx(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 Dx(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=Ix[t];if(n===void 0)throw new Dx(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new Dx(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function Rx(e){let t=new Lx(e),n=t.parseAlternation();if(!t.atEnd())throw new Dx(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var zx=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=>Ex(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 Bx(e){return new zx().build(e)}function Vx(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 Hx(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 Ux(e,t){let n=t.length,r=Vx(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=Hx(e,r,a);if(o.add(e.start),r=Vx(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function Wx(e){let t=Bx(Rx(e));return{test:e=>Ux(t,e)}}function Gx(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=zb(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function Kx(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=zb(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function qx(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 Jx={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function Yx(e,t){return e*Jx[t]}function Xx(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function Zx(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function Qx(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 $x(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?Ib(t.unit,n.unit)?Q(qx(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=Xx(t.value);if(r===void 0)return Zx(t.value);let i=Xx(n.value);return i===void 0?Zx(n.value):Q(qx(e,r,i))}case`duration`:return n.kind===`duration`?Q(qx(e,Yx(t.value,t.unit),Yx(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`?Ib(t.unit,n.unit)?Q(e===`eq`?t.re===n.re&&t.im===n.im:t.re!==n.re||t.im!==n.im):$(`wrong-type`,`cannot compare complex values with incompatible units`):$(`wrong-type`,`cannot compare a 'complex' value with a '${n.kind}' value`);default:throw Error(`unreachable computed-value kind`)}}function eS(e,t,n){if(t.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the left operand is '${t.kind}'`);if(n.kind!==`text`)return $(`wrong-type`,`'textCompare' requires 'text' operands; the right operand is '${n.kind}'`);switch(e){case`equals`:return Q(t.value===n.value);case`notEquals`:return Q(t.value!==n.value);case`matches`:case`notMatches`:{let r;try{r=new RegExp(n.value)}catch{return $(`wrong-type`,`'${n.value}' is not a valid regular expression pattern`)}let i=r.test(t.value);return Q(e===`matches`?i:!i)}case`portableMatches`:case`portableNotMatches`:{let r;try{r=Wx(n.value)}catch(e){let t=e instanceof Dx?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 tS(e,t){switch(e.kind){case`number`:return t.kind===`number`?Ib(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=Xx(e.value);if(n===void 0)return Zx(e.value);let r=Xx(t.value);return r===void 0?Zx(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(Yx(e.value,e.unit)===Yx(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?Ib(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 nS(e){return Ib(e,void 0)}function rS(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 iS(e,t,n){switch(e){case`add`:return Ib(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 Ib(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:Lb(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:Rb(t.unit,n.unit)});case`power`:return!nS(t.unit)||!nS(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!nS(t.unit)||!nS(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 aS(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:Yx(t.value,t.unit)+Yx(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:Yx(t.value,t.unit)-Yx(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 oS(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function sS(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:Lb(e.unit,t.unit)}}function cS(e,t,n){switch(e){case`add`:return Ib(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 Ib(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(sS(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:Rb(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function lS(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!nS(e.unit)||!nS(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=oS(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=sS(i,r);return t.value>=0?Q(i):cS(`divide`,n,i)}function uS(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=Xx(t.value);if(e===void 0)return Zx(t.value);let r=Xx(n.value);return r===void 0?Zx(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=Xx(t.value);return e===void 0?Zx(t.value):Qx(e+Yx(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=Xx(n.value);return e===void 0?Zx(n.value):Qx(e+Yx(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`?aS(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`?lS(t,n):cS(e,oS(t),oS(n)):iS(e,t,n)}function dS(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(!Ib(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function fS(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 pS(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 pS(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([pS(e.left,t,n,r,i,a,o,s,c+1),pS(e.right,t,n,r,i,a,o,s,c+1)]);return Gx(l,u)}case`or`:{let[l,u]=await Promise.all([pS(e.left,t,n,r,i,a,o,s,c+1),pS(e.right,t,n,r,i,a,o,s,c+1)]);return Kx(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>pS(e,t,n,r,i,a,o,s,c+1)))).reduce(Gx,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>pS(e,t,n,r,i,a,o,s,c+1)))).reduce(Kx,Q(!1));case`compare`:{let[l,u]=await Promise.all([mS(e.left,t,n,r,i,a,o,s,c+1),mS(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:$x(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([mS(e.left,t,n,r,i,a,o,s,c+1),mS(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:eS(e.op,l.value,u.value)}case`memberOf`:{let l=await mS(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 mS(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:tS(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=zb(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await mS(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 Cx(pS,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`?pS(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?Kx:Gx,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=ix.safeParse(u.node);return d.success?pS(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 mS(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=dS(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=>mS(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 fS(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(Mb(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([mS(e.left,t,n,r,i,a,o,s,c+1),mS(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`negate`:{let l=await mS(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:rS(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>mS(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 pS(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return mS(u,t,n,r,i,a,o,s,c+1)}return mS(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 pS(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=zb(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return mS(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await Cx(pS,e.collection,e.filter,t,n,i,a,o,s,c+1),l=wx(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 mS(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 mS(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 mS(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=$x(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=yx.safeParse(u.node);return d.success?mS(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 hS({functions:e=bx,maxNodes:t=xx,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>pS(r,i,a,void 0,e,new Set,0,Sx(t,n),0),evaluateValue:async(r,i,a)=>mS(r,i,a,void 0,e,new Set,0,Sx(t,n),0)}}var{evaluatePredicate:gS,evaluateValue:_S}=hS({}),vS=Kg(ix),yS=`bearer-is`,bS=`expires-at`,xS=`scope-narrows`,SS=`capability-is`,CS=`depth-remaining`,wS=[yS,bS,xS,SS,CS];function TS(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}function ES(e){return{found:!0,value:{kind:`boolean`,value:e}}}var DS={[yS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(Fy(t.parentClaims.bearer,t.childIssuer)),[bS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(t.candidate.expires<=t.parentClaims.expires),[xS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(Ry(t.parentClaims.scope,t.candidate.scope)),[SS]:(e,t)=>t.parentClaims===void 0?ES(!1):ES(t.parentClaims.capability===t.candidate.capability),[CS]:(e,t)=>{if(t.parentClaims===void 0)return ES(!1);let n=t.parentClaims[`delegations-remaining`];return ES(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function OS(e){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:null},right:{kind:`booleanLiteral`,value:!0}}}var kS=async()=>Promise.resolve({found:!1}),AS=async()=>Promise.resolve({found:!1}),jS=async()=>Promise.resolve([]);async function MS(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:kS,resolveLookup:AS,resolveCollection:jS,resolveDelegate:async(e,t)=>TS(e)?DS[e](t,r):{found:!1}};for(let e of wS){let t=await gS(OS(e),r,i);if(t.status!==`definite`||!t.value)return e}}async function NS(e,t,n,r={}){let i={clock:n,claims:t},a={resolveValue:kS,resolveLookup:AS,resolveCollection:jS,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 gS(t,i,a);if(e.status!==`definite`||!e.value)return{ok:!1,reason:`not_satisfied`}}return{ok:!0}}function PS(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function FS(e){return Uint8Array.from(e)}function IS(e){return FS(hc(e,Qs))}function LS(e){return IS({1:e.identityKey.alg,4:e.deviceId})}function RS(e){let[,,t]=e;if(t===null)return;let n;try{n=rl(t,il)}catch{return}let r=ty.safeParse(n);return r.success?r.data:void 0}async function zS(e,t){let n=await VS(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});return n.ok&&t.expectedBearer!==void 0&&!Fy(n.claims.bearer,t.expectedBearer)?{ok:!1,reason:`bearer_mismatch`}:n}async function BS(e,t,n){if(Fy(e.issuer,t.issuer))return!0;if(e.authorization===void 0)return!1;let r;try{r=rl(e.authorization,il)}catch{return!1}let i=ey.safeParse(r);if(!i.success)return!1;let a=await zS(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&Ry(a.claims.scope,t.scope)}async function VS(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=rl(r,il)}catch{return{ok:!1,reason:`malformed`}}let o=ty.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(!await t.identity.verify(s[`issuer-key`],PS(n,r),i))return{ok:!1,reason:`bad_signature`};if(!Fy(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 BS(e,s,t))return{ok:!1,reason:`revoked`};if(s.conditions!==void 0){let e;try{e=rl(s.conditions,il)}catch{return{ok:!1,reason:`conditions_invalid`}}let n=vS.safeParse(e);if(!n.success)return{ok:!1,reason:`conditions_invalid`};if(!(await NS(n.data,s,t.clock,t.extraPredicateResolvers)).ok)return{ok:!1,reason:`conditions_not_satisfied`}}if(s.parent!==void 0){let e;try{e=rl(s.parent,il)}catch{return{ok:!1,reason:`parent_invalid`}}let n=ey.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let r=await VS(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 MS(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 HS={"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 US(e,t,n){let r=await MS(e,t,n);return r===void 0?void 0:HS[r]}async function WS(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};let t;if(e.parent!==void 0){let n=RS(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await US(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=IS(e.parent)}let n=IS({"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:IS(e.conditions)}}),r=LS(e.identity);return{ok:!0,token:[r,{},n,await e.identity.sign(PS(r,n))]}}var GS=`webrtc:signal`,KS={kind:`node`};function qS(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function JS(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function YS(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function XS(e,t){return{verb:GS,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function ZS(e,t){return{verb:GS,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function QS(e,t){return{verb:GS,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function $S(e){return{candidate:e.candidate,...e.sdpMid===null?{}:{"sdp-mid":e.sdpMid},...e.sdpMLineIndex===null?{}:{"sdp-m-line-index":e.sdpMLineIndex},...e.usernameFragment===null?{}:{"username-fragment":e.usernameFragment}}}function eC(e){return{candidate:e.candidate,...e[`sdp-mid`]===void 0?{}:{sdpMid:e[`sdp-mid`]},...e[`sdp-m-line-index`]===void 0?{}:{sdpMLineIndex:e[`sdp-m-line-index`]},...e[`username-fragment`]===void 0?{}:{usernameFragment:e[`username-fragment`]}}}function tC(){let e=0;return()=>{let t=e;return e+=1,t}}async function nC(e,t){if(e.token===void 0)return!1;let n=await zS(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===KS.kind:!1}function rC(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=ub(r.data)}catch(t){if(t instanceof lb)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(sb(t)),Promise.resolve()):Promise.reject(Error(`data channel is not open (state: ${e.readyState})`))},receive:()=>s,async close(){return e.close(),Promise.resolve()}}}var iC=`wire-mesh`,aC={entriesFor:async()=>Promise.resolve([])};function oC(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function sC(e,t){e.addEventListener(`open`,()=>{t(rC(e))},{once:!0})}var cC=16,lC=36e5;async function uC(e,t){let n=new Uint8Array(cC);crypto.getRandomValues(n);let r=await WS({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:GS,scope:KS,expires:t.now()+lC});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function dC(e,t){let n={identity:t.identity,clock:t.clock,revocation:aC},r=new Map,i=new Map,a=tC();async function o(t,n){let r=QS(t,n===null?void 0:$S(n));await e.sendManageRequest(r,KS,i.get(t))}async function s(a,s){if(!await nC(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),oC(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{e.channel.binaryType=`arraybuffer`,sC(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(ZS(c,u.sdp??``),KS,a.fromDevice)}async function c(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.setRemoteDescription({type:`answer`,sdp:t.sdp}),await e.respond({result:`ok`})}async function l(e,t){let n=r.get(t[`negotiation-id`]);n!==void 0&&await n.addIceCandidate(t.candidate===void 0?null:eC(t.candidate)),await e.respond({result:`ok`})}async function u(){for await(let t of e.incomingManageRequests){if(t.command.verb!==`webrtc:signal`)continue;let e=t.command.params;qS(e)?await s(t,e):JS(e)?await c(t,e):YS(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),oC(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(iC);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{sC(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(XS(s,d.sdp??``),KS,n,await uC(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 fC(e){let[t,n]=(0,O.useState)(void 0);return(0,O.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 pC=16;function mC(e){let t=``;for(let n of e)t+=n.toString(pC).padStart(2,`0`);return t}function hC(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 gC(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${hC(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}function _C(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function vC({address:e,session:t,onClose:n,onMessagePeer:r}){let i=fC(t),a=i===void 0?`idle`:gC(i),o=i?.directory??[],s=i?.frameLog??[];return(0,M.jsxs)(Ia,{withBorder:!0,padding:`md`,radius:`md`,children:[(0,M.jsxs)(mi,{justify:`space-between`,mb:`xs`,children:[(0,M.jsx)(Yi,{fw:600,children:e}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,disabled:i?.state.status!==`connected`,onClick:()=>{t.sendPing()},children:`Send ping`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:n,children:`Disconnect`})]})]}),(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`sm`,children:a}),(0,M.jsx)(Yi,{fw:600,size:`sm`,children:`Peer directory`}),o.length===0?(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:`No gossip received yet.`}):(0,M.jsxs)(F,{striped:!0,children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`device`}),(0,M.jsx)(F.Th,{children:`addresses`}),(0,M.jsx)(F.Th,{children:`snapshot (unix s)`}),(0,M.jsx)(F.Th,{})]})}),(0,M.jsx)(F.Tbody,{children:o.map(e=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:mC(e.device)}),(0,M.jsx)(F.Td,{children:e.advert.addresses.join(`, `)}),(0,M.jsx)(F.Td,{children:e.advert[`snapshot-seconds`]}),(0,M.jsx)(F.Td,{children:(0,M.jsx)(ka,{size:`xs`,onClick:()=>{r(e.device)},children:`Message`})})]},mC(e.device)))})]}),(0,M.jsx)(Yi,{fw:600,size:`sm`,mt:`md`,children:`Frame log`}),(0,M.jsx)(F.ScrollContainer,{minWidth:0,h:384,children:(0,M.jsxs)(F,{children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`direction`}),(0,M.jsx)(F.Th,{children:`frame`})]})}),(0,M.jsx)(F.Tbody,{children:s.map((e,t)=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:e.direction}),(0,M.jsx)(F.Td,{children:_C(e.frame)})]},t))})]})})]})}function yC({peers:e,onConnect:t,onDismiss:n}){return e.length===0?null:(0,M.jsxs)(Ia,{withBorder:!0,padding:`md`,radius:`md`,"data-testid":`discovered-peers`,children:[(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`xs`,children:`Discovered peers`}),(0,M.jsxs)(F,{striped:!0,children:[(0,M.jsx)(F.Thead,{children:(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Th,{children:`device`}),(0,M.jsx)(F.Th,{children:`addresses`}),(0,M.jsx)(F.Th,{})]})}),(0,M.jsx)(F.Tbody,{children:e.map(e=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:mC(e.device)}),(0,M.jsx)(F.Td,{children:e.addresses.join(`, `)}),(0,M.jsx)(F.Td,{children:(0,M.jsxs)(mi,{gap:`xs`,children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{t(e.key)},children:`Connect`}),(0,M.jsx)(ka,{size:`xs`,variant:`light`,color:`red`,onClick:()=>{n(e.key)},children:`Dismiss`})]})})]},e.key))})]})]})}function bC(e,t){return e.sentAt===t.sentAt?Ey(e.messageId).localeCompare(Ey(t.messageId)):e.sentAt-t.sentAt}function xC(e,t){let n=new Set(e.map(e=>Ey(e.messageId))),r=t.filter(e=>!n.has(Ey(e.messageId)));return r.length===0?e:[...e,...r].sort(bC)}function SC(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function CC(e,t){switch(t.type){case`opened`:{let n=e.get(t.roomPath);return new Map(e).set(t.roomPath,{roomPath:t.roomPath,participants:t.participants,session:t.session,token:void 0,status:`connected`,messages:n?.messages??[],notices:[],outgoing:n?.outgoing??[],pendingJoinRequest:void 0,unread:n?.unread??0})}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{roomPath:t.roomPath,participants:t.participants,session:void 0,token:void 0,status:`closed`,messages:xC([],t.messages),notices:[],outgoing:[],pendingJoinRequest:void 0,unread:0}):SC(e,t.roomPath,e=>({...e,messages:xC(e.messages,t.messages)}));case`notices`:return SC(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return SC(e,t.roomPath,e=>{let n=xC(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 SC(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return SC(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 SC(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return SC(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return SC(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return SC(e,t.roomPath,e=>({...e,token:t.token}));case`closed`:return SC(e,t.roomPath,e=>({...e,status:`closed`}))}return e}function wC(e,t){let n=Tb(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}var TC=12;function EC(e){return e.participants.length===0?e.roomPath:e.participants.map(e=>e.slice(0,TC)).join(`, `)}function DC({conversations:e,selected:t,onSelect:n}){return e.length===0?null:(0,M.jsxs)(Za,{gap:0,"data-testid":`conversation-list`,children:[(0,M.jsx)(Yi,{fw:600,size:`sm`,mb:`xs`,children:`Conversations`}),e.map(e=>(0,M.jsx)(Ua,{active:e.roomPath===t,label:EC(e),description:e.status===`connected`?void 0:`offline`,rightSection:(0,M.jsxs)(mi,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,M.jsx)(ba,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,M.jsx)(ba,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function OC({placeholder:e,ariaLabel:t,submitLabel:n,onSubmit:r,onCancel:i,size:a,autoFocus:o}){let[s,c]=(0,O.useState)(``),[l,u]=(0,O.useState)(void 0);function d(){let e=s.trim();e!==``&&(u(void 0),Promise.resolve(r(e)).then(()=>{c(``)}).catch(e=>{u(e instanceof Error?e.message:String(e))}))}function f(e){e.key===`Enter`&&d(),e.key===`Escape`&&i?.()}return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(mi,{gap:`xs`,flex:1,children:[(0,M.jsx)(_o,{flex:1,...a===void 0?{}:{size:a},placeholder:e,"aria-label":t,autoComplete:`off`,autoFocus:o,value:s,onChange:e=>{c(e.currentTarget.value)},onKeyDown:f}),(0,M.jsx)(ka,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,M.jsx)(Yi,{size:`sm`,c:`red`,children:l})]})}var kC=`You`,AC=256,jC=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function MC({sentAt:e}){return(0,M.jsx)(Yi,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:jC.format(e)})}function NC({messages:e,outgoing:t,peerLabel:n,onRetry:r,onDiscard:i}){let a=(0,O.useRef)(null);return(0,O.useEffect)(()=>{let e=a.current;e!==null&&(e.scrollTop=e.scrollHeight)},[e,t]),(0,M.jsx)(Lr,{h:AC,viewportRef:a,children:(0,M.jsxs)(Za,{gap:4,children:[e.map((t,r)=>{let i=t.direction===`sent`,a=r===0||e[r-1]?.direction!==t.direction;return(0,M.jsxs)(Za,{gap:0,align:i?`flex-end`:`flex-start`,mt:a?`xs`:0,children:[a&&(0,M.jsx)(Yi,{size:`xs`,fw:600,c:`dimmed`,children:i?kC:n}),(0,M.jsx)(Yi,{size:`sm`,children:t.text}),(0,M.jsx)(MC,{sentAt:t.sentAt})]},Ey(t.messageId))}),t.map(e=>(0,M.jsxs)(Za,{gap:0,align:`flex-end`,mt:`xs`,children:[(0,M.jsx)(Yi,{size:`xs`,fw:600,c:`dimmed`,children:kC}),(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:e.text}),e.status===`failed`?(0,M.jsxs)(mi,{gap:`xs`,children:[(0,M.jsx)(Yi,{size:`xs`,c:`red`,children:`Not sent: ${e.error}`}),(0,M.jsx)(ka,{size:`compact-xs`,variant:`light`,onClick:()=>{r(e.localId)},children:`Retry`}),(0,M.jsx)(ka,{size:`compact-xs`,variant:`subtle`,color:`gray`,onClick:()=>{i(e.localId)},children:`Dismiss`})]}):(0,M.jsx)(Yi,{size:`xs`,c:`dimmed`,children:e.status===`awaiting-approval`?`Waiting for ${n} to allow messages`:`Sending`})]},e.localId))]})})}function PC(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function FC({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=PC(e);return(0,M.jsx)(P,{children:n===void 0?(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,fs:`italic`,children:`encrypted notice -- no key held for its epoch`}):(0,M.jsx)(Yi,{size:`sm`,children:n})},t)});return(0,M.jsxs)(Za,{gap:4,children:[t,(0,M.jsxs)(ba,{variant:`light`,color:`gray`,size:`sm`,w:`fit-content`,children:[e.length,` notice`,e.length===1?``:`s`]})]})}var IC=864e5;function LC({view:e,onSend:t,onPostNotice:n,onRetry:r,onDiscard:i}){return(0,M.jsxs)(Za,{gap:`xs`,children:[(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsx)(Yi,{fw:600,children:e.participants.join(`, `)}),(0,M.jsx)(Yi,{size:`sm`,c:e.status===`connected`?`green`:`dimmed`,children:e.status})]}),e.pendingJoinRequest&&(0,M.jsx)(Wi,{color:`blue`,title:`Message request`,children:(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsxs)(Yi,{size:`sm`,children:[e.pendingJoinRequest.requesterHex,` wants to message you`]}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+IC})},children:`Allow`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,M.jsx)(NC,{messages:e.messages,outgoing:e.outgoing,peerLabel:EC(e),onRetry:r,onDiscard:i}),(0,M.jsx)(mi,{children:(0,M.jsx)(OC,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,M.jsx)(Ba,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,M.jsx)(FC,{notices:e.notices}),(0,M.jsx)(mi,{children:(0,M.jsx)(OC,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})})]})}var RC=`room:member`;async function zC(e,t){let n=await zS(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=Tb(t.roomPath),i=Dy(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!==Dy(t.identity.deviceId))return{ok:!1,reason:`wrong_chain_root`};return{ok:!0,claims:n.claims,rootIssuerKey:n.rootIssuerKey}}var BC=16;function VC(){let e=new Uint8Array(BC);return crypto.getRandomValues(e),e}function HC(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function UC(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}async function WC(e,t,n,r,i,a){let o=await e.sendManageRequest(UC(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 GC(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);HC(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 WS({identity:e.identity,clock:e.clock,tokenId:VC(),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 KC(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 zS(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(!Ry(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 qC=16;function JC(){let e=new Uint8Array(qC);return crypto.getRandomValues(e),e}var YC=3e5;function XC(e,t,n){return{verb:RC,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function ZC(e,t,n,r,i){let a=XC(n,JC(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function QC(e,t,n){let r=await WC(e,RC,{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 $C(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 zC(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=GC({capability:RC,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??YC,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=KC({capability:RC,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 ew(){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 tw=32,nw=256,rw=12,iw=4,aw=8,ow=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function sw(){return crypto.getRandomValues(new Uint8Array(tw))}function cw(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(iw);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(aw);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(ow.length+n.length+t.length+r.length),a=0;return i.set(ow,a),a+=ow.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function lw(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(cw(t))},n,{name:`AES-GCM`,length:nw},!1,[`encrypt`,`decrypt`])}async function uw(e,t){let n=crypto.getRandomValues(new Uint8Array(rw)),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 dw(e,t){if(t.length<rw)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,rw),r=t.slice(rw);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function fw(e,t){return uw(e,t)}async function pw(e,t){return dw(e,t)}async function mw(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function hw(e,t){return uw(await mw(e),t)}async function gw(e,t){return dw(await mw(e),t)}var _w=`+aes256gcm`;function vw(e){return bw(e)?e:`${e}${_w}`}function yw(e){return bw(e)?e.slice(0,e.length-10):e}function bw(e){return e.endsWith(_w)}function xw(e,t){return{verb:RC,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function Sw(e,t,n,r,i,a){return e.sendManageRequest(xw(n,r),{kind:`room`,path:t},i,a)}function Cw(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 zC(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)=>pw(await lw(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 ww(e){return`data/${Dy(e)}/head`}function Tw(e,t){return`data/${Dy(e)}/entry/${String(t)}`}async function Ew(e,t){let n=await e.get(ww(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function Dw(e,t,n){await e.set(ww(t),new TextEncoder().encode(String(n)))}async function Ow(e,t){return Ew(e,t)}async function kw(e,t){let n=await Ew(e.storage,e.identity.deviceId)+1;return await e.storage.set(Tw(e.identity.deviceId,n),t),await Dw(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function Aw(e,t,n){let r=await Ew(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(Tw(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 jw(e,t){let n=await Ew(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(Tw(t.peer,r),n);return await Dw(e,t.peer,r),{ok:!0}}async function Mw(e,t,n){let r=await Ew(e,t),i=[];for(let a=n+1;a<=r;a+=1){let n=await e.get(Tw(t,a));if(n===void 0)break;i.push(n)}return i}function Nw(e){return Uint8Array.from(e)}function Pw(e){return Nw(hc(e,Qs))}function Fw(e){return Pw({1:e.identityKey.alg,4:e.deviceId})}function Iw(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function Lw(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 Rw(e,t){let[n,,r,i]=e;if(r===null)return{ok:!1,reason:`malformed`};let a;try{a=rl(r,il)}catch{return{ok:!1,reason:`malformed`}}let o=Nv.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(t.expectedRoom!==void 0&&s.room!==t.expectedRoom)return{ok:!1,reason:`wrong_room`};if(!await t.identity.verify(s[`poster-key`],Iw(n,r),i))return{ok:!1,reason:`bad_signature`};if(!Lw(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(bw(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await zC(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 zw(e){let t=Pw({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=Fw(e.identity);return[n,{},t,await e.identity.sign(Iw(n,t))]}var Bw=16;function Vw(e){return new Uint8Array(hc(e,Qs))}function Hw(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(Bw)),c=await hw(o,e.plaintext),l=await zw({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:vw(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await kw({identity:t,storage:n},Vw(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await Ow(n,e);if(!(await jw(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 Mw(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 Rw(o,{identity:t,clock:r,revocation:i,expectedRoom:n});if(!s.ok)return{verified:!1,reason:s.reason};let c=s.claims;if(!bw(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:yw(c[`content-type`]),claims:c};if(d===void 0)return f;try{let e=await gw(d,c.content);return{...f,plaintext:e}}catch{return f}}function u(e){try{let t=rl(e,il),n=Mv.safeParse(t);return n.success?n.data:void 0}catch{return}}return{postEncryptedNotice:o,ingestPeerEntry:s,readOwnNotices:async e=>c(t.deviceId,e),readPeerNotices:async(e,t)=>c(e,t)}}var Uw=32;function Ww(e){let{session:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=Hw({identity:r,storage:n,clock:i,revocation:a,roomKeys:o}),l=new Map;async function u(e){let r=await Ow(n,e);await t.sendDataFrame({type:`data-request`,peer:e,"from-seq":r})}function d(e){if(e.type===`data-have`){l.set(Dy(e.peer),e.peer),u(e.peer).catch(()=>void 0);return}if(e.type===`data-entries`){(async()=>{(await jw(n,e)).ok&&(e.entries.length>=Uw&&await u(e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await Aw(n,e,Uw);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 Gw(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===``||Dy(n.deviceId)!==c)return;let l=await zC(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=sw(),f=await fw(await lw(await u(l.rootIssuerKey),{room:o,keyEpoch:1}),d);s.set(o,1,d),await Sw(t,o,1,f)}var Kw=[`core/management`,`core/room`],qw=16;function Jw(){let e=new Uint8Array(qw);return crypto.getRandomValues(e),e}function Yw(e){if(e?.session===void 0||e.status!==`connected`)throw Error(`conversation is not connected`);return e.session}function Xw(e,t,n){let[r,i]=(0,O.useReducer)(CC,new Map),a=Dy(e.deviceId);(0,O.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:wC(t,a),messages:r})}})(),()=>{e.abort()}},[n,a]);let o=(0,O.useRef)(new Map),s=(0,O.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=Ww({session:n,storage:ew(),identity:e,clock:t,revocation:aC,roomKeys:o,onChange:()=>{c()}});return s.wiring=l,{wiring:l,roomKeys:o,refresh:c}}let l=(0,O.useCallback)(async(l,u)=>{let d={},f=await vb(l,e,Kw,{clock:t,onFrame:(e,t)=>{d.current?.(t)}}),p=u??await f.peerDeviceId,m=Dy(p),h=wb(a,m);if(r.get(h)?.status===`connected`){await f.close();return}let g=c(f,h);o.current.set(h,g),s.current.delete(h),d.current=e=>{g.wiring.handleFrame(e)},i({type:`opened`,roomPath:h,participants:[m],session:f}),i({type:`restored`,roomPath:h,participants:[m],messages:await n.list(h)}),$C(f,{identity:e,clock:t,revocation:aC,peerDevice:p,currentMembers:()=>[e.deviceId,p]},{onMessage:e=>{let t={direction:`received`,text:e.text,messageId:e.messageId,sentAt:e.sentAt};n.append(h,t),i({type:`message`,roomPath:h,message:t})},onJoinRequest:e=>{i({type:`join-request`,roomPath:h,request:{requesterHex:Dy(e.requesterDevice),async decide(t){i({type:`join-request-settled`,roomPath:h}),await e.decide(t)}}})},onRekey:async n=>{let r=s.current.get(h);if(r===void 0){await n.respond({result:`error`,code:`no_token`});return}await Cw({identity:e,clock:t,revocation:aC,ownRoomMemberToken:r,onRekey:e=>{e.contentKeys.forEach((t,n)=>{g.roomKeys.set(h,e.keyEpoch-e.contentKeys.length+1+n,t)}),g.refresh()}})(n)}}),(async()=>{for await(let e of f.events)e.state.status===`closed`&&i({type:`closed`,roomPath:h})})()},[e,t,a,r,n]),u=(0,O.useCallback)(async(a,c,l)=>{let u=r.get(a),d=Yw(u),f=u?.token;if(f===void 0){l(`awaiting-approval`);let n=await QC(d,a);l(`sending`),f=n.token,s.current.set(a,f),i({type:`token`,roomPath:a,token:f}),Gw({session:d,identity:e,clock:t,revocation:aC,ownRoomMemberToken:f,roomPath:a,roomKeys:o.current.get(a)?.roomKeys??{get:async()=>Promise.resolve(void 0),set:()=>void 0,currentEpoch:async()=>Promise.resolve(void 0)}}).catch(()=>void 0)}let p=await ZC(d,a,c,f);if(p.result!==`ok`)throw Error(`send failed: ${p.code}`);let m={direction:`sent`,text:c,messageId:Jw(),sentAt:t.now()};return await n.append(a,m),m},[r,t,n,e]),d=(0,O.useCallback)(async(e,t,n)=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`sending`}});try{let r=await u(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)}})}},[u]),f=(0,O.useCallback)(async(e,t)=>d(e,crypto.randomUUID(),t),[d]),p=(0,O.useCallback)(async(e,t)=>{let n=r.get(e)?.outgoing.find(e=>e.localId===t);n!==void 0&&await d(e,t,n.text)},[r,d]),m=(0,O.useCallback)((e,t)=>{i({type:`outgoing-removed`,roomPath:e,localId:t})},[]),h=(0,O.useCallback)(async(n,a)=>{let c=r.get(n),l=Yw(c),u=o.current.get(n);if(u===void 0)throw Error(`conversation ${n} has no notice board`);let d=c?.token??s.current.get(n);d===void 0&&(d=(await QC(l,n)).token,s.current.set(n,d),i({type:`token`,roomPath:n,token:d})),await Gw({session:l,identity:e,clock:t,revocation:aC,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]),g=(0,O.useCallback)(e=>{i({type:`read`,roomPath:e})},[]);return{conversations:[...r.values()],attach:l,send:f,retry:p,discard:m,postNotice:h,markRead:g}}var Zw=8787,Qw=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function $w(e){return Qw.test(e)}async function eT(e=Zw){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 tT(e=typeof location>`u`?``:location.host){return $w(e)?Promise.resolve(void 0):eT()}var nT=`q7ltm10`,rT=`ws://localhost:8787`,iT=[`core/management`,`core/exec`,`core/data`],aT=[`core/management`,`core/data`],oT=5,sT=1e3,cT=3e4,lT=2,uT={maxAttempts:oT,delayMs:e=>Math.min(sT*lT**(e-1),cT)};function dT(e){return e.startsWith(`ws://`)||e.startsWith(`wss://`)?e:`ws://${e}`}function fT({identity:e,clock:t,messageStore:n,discoverLocalNode:r=tT,defaultAddress:i=rT}){let[a,o]=(0,O.useState)(i),[s,c]=(0,O.useState)(aT),[l,u]=(0,O.useState)([]),[d,f]=(0,O.useState)([]),[p,m]=(0,O.useState)([]),h=Xw(e,t,n),[g,_]=(0,O.useState)(),v=h.conversations.find(e=>e.roomPath===g)??h.conversations[0],{markRead:y}=h,b=v?.roomPath,x=v?.unread??0;(0,O.useEffect)(()=>{b!==void 0&&x>0&&y(b)},[b,x,y]);let S=(0,O.useRef)(h.attach);(0,O.useEffect)(()=>{S.current=h.attach},[h.attach]);let C=(0,O.useRef)(l);(0,O.useEffect)(()=>{C.current=l},[l]);let w=(0,O.useRef)(s);(0,O.useEffect)(()=>{w.current=s},[s]);function T(n,r){let i=dC(r,{identity:e,clock:t,iceServers:jb,onIncomingConnection:e=>{S.current(e)}});u(e=>[...e,{address:n,session:r,negotiator:i}])}async function ee(e){return new Promise(t=>{f(n=>[...n,{key:mC(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 D(){let n={current:null},r=_b(Ab(),e,t,uT,[],e=>{n.current?.considerAdvert(e)});return n.current=bb({selfDeviceId:e.deviceId,shouldExpand:ee,dial:te,onExpanded:(e,t,n)=>{T(t,n)}}),r}async function te(e){let t=D();return t.connect(dT(e),w.current).then(()=>t)}function k(e){if(C.current.some(t=>t.address===e))return;let t=D();T(e,t),t.connect(e,s).catch(()=>{})}let ne=(0,O.useRef)(k);(0,O.useEffect)(()=>{ne.current=k});let re=(0,O.useRef)(r);(0,O.useEffect)(()=>{re.current=r},[r]);let ie=(0,O.useRef)(!1);(0,O.useEffect)(()=>{ie.current||(ie.current=!0,re.current().then(e=>{e!==void 0&&ne.current(e)}))},[]);function ae(e){e.preventDefault(),k(a)}function A(e){e.session.close(),u(t=>t.filter(t=>t.session!==e.session))}function j(t,n){t.initiate(n).then(async t=>{await h.attach(t,n),_(wb(Dy(e.deviceId),Dy(n)))}).catch(e=>{m(t=>[...t,{key:crypto.randomUUID(),peer:mC(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,M.jsxs)(Za,{className:nT,p:`md`,gap:`lg`,children:[(0,M.jsx)(Co,{order:1,children:`wire-mesh console`}),(0,M.jsxs)(`form`,{onSubmit:ae,children:[(0,M.jsxs)(mi,{align:`flex-end`,wrap:`wrap`,children:[(0,M.jsx)(_o,{label:`Node`,value:a,onChange:e=>{o(e.currentTarget.value)},required:!0,style:{flex:1,minWidth:`16rem`}}),(0,M.jsx)(ka,{type:`submit`,children:`Connect`})]}),(0,M.jsx)(_a.Group,{label:`Domains offered`,value:s,onChange:c,children:(0,M.jsx)(mi,{mt:`xs`,children:iT.map(e=>(0,M.jsx)(_a,{value:e,label:e},e))})})]}),(0,M.jsx)(yC,{peers:d,onConnect:e=>{E(e,!0)},onDismiss:e=>{E(e,!1)}}),l.map(e=>(0,M.jsx)(vC,{address:e.address,session:e.session,onClose:()=>{A(e)},onMessagePeer:t=>{j(e.negotiator,t)}},e.address)),p.map(e=>(0,M.jsx)(Wi,{color:`red`,title:`Could not message ${e.peer}`,withCloseButton:!0,onClose:()=>{m(t=>t.filter(t=>t.key!==e.key))},children:e.reason},e.key)),(0,M.jsx)(DC,{conversations:h.conversations,selected:v?.roomPath,onSelect:_}),v!==void 0&&(0,M.jsx)(LC,{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 pT=`modulepreload`,mT=function(e){return`/`+e},hT={},gT=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=mT(t,n),t=s(t),t in hT)return;hT[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`:pT,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)})},_T=`false`,vT=`false`,yT=_T===`true`,bT=vT===`true`;function xT(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,yT||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await gT(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()},!bT){if(yT)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 ST(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,[c,l]=(0,O.useState)(!1),[u,d]=(0,O.useState)(!1),[f]=(0,O.useState)(()=>xT({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 CT(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=ST();function a(){t(!1),r(!1)}return!e&&!n?null:(0,M.jsx)(qa,{onClose:a,closeButtonProps:{"aria-label":`Dismiss`},title:n?`Update available`:`Ready to work offline`,pos:`fixed`,bottom:`1rem`,right:`1rem`,style:{zIndex:1e3},children:(0,M.jsx)(mi,{gap:`xs`,children:n?(0,M.jsx)(ka,{size:`xs`,onClick:()=>{i(!0)},children:`Reload`}):void 0})})}var wT=`ws://localhost:8787`;function TT(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function ET(e,t){return e?wT:TT(t)}var DT=await vl(await No()),OT={now:()=>Date.now()},kT=Py(await No()),AT=ET(!1,window.location),jT=document.getElementById(`root`);if(jT===null)throw Error(`missing #root element`);(0,wo.createRoot)(jT).render((0,M.jsx)(O.StrictMode,{children:(0,M.jsxs)(Vt,{children:[(0,M.jsx)(fT,{identity:DT,clock:OT,messageStore:kT,defaultAddress:AT}),(0,M.jsx)(CT,{})]})}));
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<meta name="theme-color" content="#1971c2" />
|
|
11
11
|
<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
|
|
12
12
|
<title>wire-mesh console</title>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-BXUFFfLx.js"></script>
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/index-BMlnc-0m.css">
|
|
15
15
|
<link rel="manifest" href="/manifest.webmanifest"></head>
|
|
16
16
|
<body>
|
package/dist/web-console/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let t={};const l=e=>i(e,r),d={module:{uri:r},exports:t,require:l};s[r]=Promise.all(n.map(e=>d[e]||l(e))).then(e=>(o(...e),t))}}define(["./workbox-2fbc6a65"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"index.html",revision:"
|
|
1
|
+
if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let t={};const l=e=>i(e,r),d={module:{uri:r},exports:t,require:l};s[r]=Promise.all(n.map(e=>d[e]||l(e))).then(e=>(o(...e),t))}}define(["./workbox-2fbc6a65"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"index.html",revision:"24854c942914727df92cd96823987aec"},{url:"assets/workbox-window.prod.es5-Bd17z0YL.js",revision:null},{url:"assets/index-BXUFFfLx.js",revision:null},{url:"assets/index-BMlnc-0m.css",revision:null},{url:"favicon.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"icons/icon-192x192.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"icons/icon-512x512.svg",revision:"e9eabed03a72f0df2b347884322f7dfb"},{url:"manifest.webmanifest",revision:"89b97e994ecf3ebc89bc570153e191ad"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wire-mesh",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.7",
|
|
4
4
|
"bin": {
|
|
5
5
|
"wire-mesh": "./dist/server.mjs"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"cbor2": "2.3.0",
|
|
9
|
-
"wire-mesh-core": "2.0
|
|
9
|
+
"wire-mesh-core": "2.1.0",
|
|
10
10
|
"ws": "8.21.3"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@arethetypeswrong/cli": "0.18.5",
|
|
14
14
|
"@exadev/eslint-config": "2.18.0",
|
|
15
|
-
"@exadev/wire-mesh-web-console": "2.
|
|
15
|
+
"@exadev/wire-mesh-web-console": "2.5.0",
|
|
16
16
|
"@types/node": "26.4.1",
|
|
17
17
|
"@types/ws": "8.18.1",
|
|
18
18
|
"eslint": "10.10.0",
|