wire-mesh 3.5.5 → 3.5.6
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=H,c=!Lu.jitless,l=c&&Kl.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?cp([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function fp(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=>!cu(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=>pu(e,r,Ru())))}),t)}var pp=W(`$ZodUnion`,(e,t)=>{ff.init(e,t),Du(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),Du(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Du(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)))}),Du(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=>Rl(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=>fp(t,r,e,i)):fp(o,r,e,i)}}),mp=W(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,pp.init(e,t);let n=e._zod.parse;Du(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)||Hl(t,e,new Set);for(let r of n)t[e].add(r)}}return t}),t.options.forEach((e,n)=>{let r=lp.get(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=Il(()=>{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(!H(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)}}),hp=W(`$ZodIntersection`,(e,t)=>{ff.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])=>_p(e,t,n)):_p(e,i,a)}});function gp(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(ql(e)&&ql(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=gp(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=gp(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 _p(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=gp(t.value,n.value);if(!c.valid){if(cu(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var vp=W(`$ZodTuple`,(e,t)=>{ff.init(e,t);let n=t.items,r=Lu.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=yp(n,`optin`),l=yp(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=>bp(t,i,e))):bp(r,i,e)}}return s.length?Promise.all(s).then(()=>xp(u,i,n,o,l)):xp(u,i,n,o,l)}});function yp(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 bp(e,t,n){e.issues.length&&t.issues.push(...uu(n,e.issues)),t.value[n]=e.value}function xp(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(...uu(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 Sp=W(`$ZodRecord`,(e,t)=>{ff.init(e,t);let n=Lu.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!ql(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=>pu(e,i,Ru())),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(...uu(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...uu(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`&&Bd.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=>pu(e,i,Ru())),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(...uu(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...uu(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}}),Cp=W(`$ZodEnum`,(e,t)=>{ff.init(e,t);let n=Nl(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>Yl.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>Xl(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}}),wp=W(`$ZodLiteral`,(e,t)=>{ff.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`?Xl(e):e?Xl(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}}),Tp=W(`$ZodTransform`,(e,t)=>{ff.init(e,t),e._zod.optin=`optional`,Lu.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Iu(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 Fu;return n.value=i,n}});function Ep(e,t){return e.value=t.issues.length?void 0:t.value,e}var Dp=W(`$ZodOptional`,(e,t)=>{ff.init(e,t),Du(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,Du(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),Du(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Rl(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=>Ep(e,t)):Ep(e,r)}return t.innerType._zod.run(e,n)}}),Op=W(`$ZodExactOptional`,(e,t)=>{Dp.init(e,t),Du(e,`values`,e=>e.def.innerType._zod.values),Du(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),kp=W(`$ZodNullable`,(e,t)=>{ff.init(e,t),Du(e,`optin`,e=>e.def.innerType._zod.optin),Du(e,`optout`,e=>e.def.innerType._zod.optout),Du(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Rl(t.source)}|null)$`):void 0}),Du(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)}),Ap=W(`$ZodDefault`,(e,t)=>{ff.init(e,t),e._zod.optin=`defaulted`,Du(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=>jp(e,t)):jp(r,t)}});function jp(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Mp=W(`$ZodPrefault`,(e,t)=>{ff.init(e,t),e._zod.optin=`defaulted`,Du(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))}),Np=W(`$ZodNonOptional`,(e,t)=>{ff.init(e,t),Du(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=>Pp(t,e)):Pp(i,e)}});function Pp(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 Fp(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>pu(e,r,Ru()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Ip=W(`$ZodCatch`,(e,t)=>{ff.init(e,t),Du(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),Du(e,`optout`,e=>e.def.innerType._zod.optout),Du(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=>Fp(e,r,t,n)):Fp(e,r,t,n)}}),Lp=W(`$ZodPipe`,(e,t)=>{ff.init(e,t),Du(e,`values`,e=>e.def.in._zod.values),Du(e,`optin`,e=>e.def.in._zod.optin),Du(e,`optout`,e=>e.def.out._zod.optout),Du(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=>Rp(e,t.in,n)):Rp(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Rp(e,t.out,n)):Rp(r,t.out,n)}});function Rp(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 zp=W(`$ZodReadonly`,(e,t)=>{ff.init(e,t),Du(e,`propValues`,e=>e.def.innerType._zod.propValues),Du(e,`values`,e=>e.def.innerType._zod.values),Du(e,`optin`,e=>e.def.innerType?._zod?.optin),Du(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(Bp):Bp(r)}});function Bp(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Vp=W(`$ZodLazy`,(e,t)=>{ff.init(e,t),Vl(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),Du(e,`pattern`,e=>e.innerType?._zod?.pattern),Du(e,`propValues`,e=>e.innerType?._zod?.propValues),Du(e,`optin`,e=>e.innerType?._zod?.optin??void 0),Du(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Hp=W(`$ZodCustom`,(e,t)=>{Gd.init(e,t),ff.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=>Up(t,n,r,e));Up(i,n,r,e)}});function Up(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(vu(e))}}var Wp=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},Gp=`~memo`,Kp=[];function qp(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Jp=new WeakMap;function Yp(e,t){let n=Jp.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&&Yp(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),Jp.set(e,r),r}function Xp(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var Zp,Qp=[],$p={alloc(e,t,n){let r=Zp;if(!r)return n;Zp=void 0;let i={value:n,issues:null};return r.set(t.value,i),Qp.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`&&tm(n,e.value))throw new Wp;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=Yp(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[Gp];l||(l={buckets:new Map,backEdges:void 0},s[Gp]=l);let u;r===s?u=i:(u=Xp(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(...qp(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;Zp=u;let f=Qp.length,p=t(o,s);Zp=void 0;let m=Qp.length>f?Qp.pop():void 0;return p instanceof Promise?p.then(e=>(m&&(m.issues=e.issues.length?qp(e.issues):Kp),e)):(m&&(m.issues=p.issues.length?qp(p.issues):Kp),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function em(){return $p}function tm(e,t){let n=e[Gp]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var nm=()=>{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(_u(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${Ql(e.values[0])}`:`Invalid option: expected one of ${Pl(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`:``}: ${Pl(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 rm(){return{localeError:nm()}}var im,am=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 om(){return new am}(im=globalThis).__zod_globalRegistry??(im.__zod_globalRegistry=om());var sm=globalThis.__zod_globalRegistry;function cm(e,t){return new e({type:`string`,...U(t)})}function lm(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...U(t)})}function um(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...U(t)})}function dm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...U(t)})}function fm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...U(t)})}function pm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...U(t)})}function mm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...U(t)})}function hm(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...U(t)})}function gm(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...U(t)})}function _m(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...U(t)})}function vm(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...U(t)})}function ym(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...U(t)})}function bm(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...U(t)})}function xm(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...U(t)})}function Sm(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...U(t)})}function Cm(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...U(t)})}function wm(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...U(t)})}function Tm(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...U(t)})}function Em(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...U(t)})}function Dm(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...U(t)})}function Om(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...U(t)})}function km(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...U(t)})}function Am(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...U(t)})}function jm(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...U(t)})}function Mm(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...U(t)})}function Nm(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...U(t)})}function Pm(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...U(t)})}function Fm(e,t){return new e({type:`number`,checks:[],...U(t)})}function Im(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...U(t)})}function Lm(e,t){return new e({type:`boolean`,...U(t)})}function Rm(e,t){return new e({type:`null`,...U(t)})}function zm(e){return new e({type:`unknown`})}function Bm(e,t){return new e({type:`never`,...U(t)})}function Vm(e,t){return new Jd({check:`less_than`,...U(t),value:e,inclusive:!1})}function Hm(e,t){return new Jd({check:`less_than`,...U(t),value:e,inclusive:!0})}function Um(e,t){return new Yd({check:`greater_than`,...U(t),value:e,inclusive:!1})}function Wm(e,t){return new Yd({check:`greater_than`,...U(t),value:e,inclusive:!0})}function Gm(e,t){return new Xd({check:`multiple_of`,...U(t),value:e})}function Km(e,t){return new Qd({check:`max_length`,...U(t),maximum:e})}function qm(e,t){return new $d({check:`min_length`,...U(t),minimum:e})}function Jm(e,t){return new ef({check:`length_equals`,...U(t),length:e})}function Ym(e,t){return new nf({check:`string_format`,format:`regex`,...U(t),pattern:e})}function Xm(e){return new rf({check:`string_format`,format:`lowercase`,...U(e)})}function Zm(e){return new af({check:`string_format`,format:`uppercase`,...U(e)})}function Qm(e,t){return new of({check:`string_format`,format:`includes`,...U(t),includes:e})}function $m(e,t){return new sf({check:`string_format`,format:`starts_with`,...U(t),prefix:e})}function eh(e,t){return new cf({check:`string_format`,format:`ends_with`,...U(t),suffix:e})}function th(e){return new lf({check:`overwrite`,tx:e})}function nh(e){return th(t=>t.normalize(e))}function rh(){return th(e=>e.trim())}function ih(){return th(e=>e.toLowerCase())}function ah(){return th(e=>e.toUpperCase())}function oh(){return th(e=>Gl(e))}function sh(e,t,n){return new e({type:`array`,element:t,...U(n)})}function ch(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...U(n)})}function lh(e,t){let n=uh(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(vu(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(vu(r))}},e(t.value,t)),t);return n}function uh(e,t){let n=new Gd({check:`custom`,...U(t)});return n._zod.check=e,n}function dh(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&Hl(e,t,n[t]);return e}function fh(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??sm,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 ph(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 mh(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,mh(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&dh(o.schema,c),t.io===`input`&&wh(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 hh(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function gh(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}/${hh(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+hh(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 _h(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;_h(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 vh=new Set([`type`,`properties`,`required`,`additionalProperties`]),yh=[`oneOf`,`anyOf`];function bh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function xh(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!vh.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]??bh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Hl(n,r,e.length===1?e[0]:xh(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=bh(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 Sh(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of vh)if(t in e)return;let n=t.filter(e=>yh.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=xh(t);else{let e=n[0],i=yh.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=>xh([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,dh(e,r))}function Ch(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)):dh(i,s),dh(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())_h(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)??[])Sh(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)}dh(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,Hl(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:Eh(t,`input`,e.processors),output:Eh(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function wh(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 wh(r.element,n);if(r.type===`set`)return wh(r.valueType,n);if(r.type===`lazy`)return wh(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 wh(r.innerType,n);if(r.type===`intersection`)return wh(r.left,n)||wh(r.right,n);if(r.type===`record`||r.type===`map`)return wh(r.keyType,n)||wh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:wh(r.in,n)||wh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(wh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(wh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(wh(e,n))return!0;return!!(r.rest&&wh(r.rest,n))}return!1}var Th=(e,t={})=>n=>{let r=fh({...n,processors:t});return mh(e,r),gh(r,e),Ch(r,e)},Eh=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=fh({...i??{},target:a,io:t,processors:n});return mh(e,o),gh(o,e),Ch(o,e)},Dh={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Oh=(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=Dh[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}))])}},kh=(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):ph(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},Ah=(e,t,n,r)=>{n.type=`boolean`},jh=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},Mh=(e,t,n,r)=>{n.not={}},Nh=(e,t,n,r)=>{let i=e._zod.def,a=Nl(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},Ph=(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(ph(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(ph(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}},Fh=(e,t,n,r)=>{ph(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Ih=(e,t,n,r)=>{ph(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Lh=(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=mh(a.element,t,{...r,path:[...r.path,`items`]})};function Rh(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?Rh(t.out):t.type===`catch`?Rh(t.innerType):e._zod.optin}var zh=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&ph(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Hl(i.properties,e,mh(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`?Rh(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=mh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Bh=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>mh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Vh=(e,t,n,r)=>{let i=e._zod.def,a=mh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=mh(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)},Hh=(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)=>mh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?mh(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`?Rh(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 Uh(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=Uh(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=>Uh(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`)?Bd:zd).source),p):p}var Wh=new WeakMap;function Gh(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 Wh.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=Uh(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 Kh=(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=mh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Hl(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=mh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Wh.get(t);n||(n=[],Wh.set(t,n),t.deferred.push(()=>Gh(t))),n.push(e)}i.additionalProperties=mh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&Rh(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))}},qh=(e,t,n,r)=>{let i=e._zod.def,a=mh(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`}]},Jh=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Yh=Symbol();function Xh(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(ph(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Yh):JSON.parse(o)}var Zh=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Xh(i.defaultValue,e,t,n,r);o!==Yh&&(n.default=o)},Qh=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Xh(i.defaultValue,e,t,n,r);o!==Yh&&(n._prefault=o)},$h=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{ph(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},eg=(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;mh(o,t,r);let s=t.seen.get(e);s.ref=o},tg=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},ng=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},rg=(e,t,n,r)=>{let i=e._zod.innerType;mh(i,t,r);let a=t.seen.get(e);a.ref=i},ig=new WeakSet([Object.prototype,Error.prototype]);function ag(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 og=W(`ZodError`,(e,t)=>{Ku.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);ig.has(n)||(ig.add(n),ag(n,`format`,e=>t=>Xu(e,t)),ag(n,`flatten`,e=>t=>Yu(e,t)),ag(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Fl,2)}),ag(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Fl,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),sg=Qu(og),cg=$u(og),lg=ed(og),ug=nd(og),dg=id(og),fg=ad(og),pg=od(og),mg=sd(og),hg=cd(og),gg=ld(og),_g=ud(og),vg=dd(og);function yg(){Lu.localeError||Ru(rm())}function bg(){Lu.memoizer||Ru({memoizer:em()})}var xg=W(`ZodType`,(e,t)=>(yg(),ff.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(Ul(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(W_(e,t))},superRefine(e,t){return this.check(G_(e,t))},overwrite(e){return this.check(th(e))},optional(){return T_(this)},exactOptional(){return D_(this)},nullable(){return k_(this)},nullish(){return T_(k_(this))},nonoptional(e){return F_(this,e)},array(){return o_(this)},or(e){return u_([this,e])},and(e){return m_(this,e)},transform(e){return z_(this,C_(e))},default(e){return j_(this,e)},prefault(e){return N_(this,e)},catch(e){return L_(this,e)},pipe(e){return z_(this,e)},readonly(){return V_(this)},describe(e){let t=this.clone();return sm.add(t,{description:e}),t},meta(...e){if(e.length===0)return sm.get(this);let t=this.clone();return sm.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 xu(this,`~standard`,{...mf(this),jsonSchema:{input:Eh(this,`input`),output:Eh(this,`output`)}})},set"~standard"(e){bu(this,`~standard`,e)},parse:function e(t,n){return sg(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await cg(this,t,n,{callee:e})},safeParse(e,t){return lg(this,e,t)},async safeParseAsync(e,t){return ug(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){bu(this,`spa`,e)},encode:function e(t,n){return dg(this,t,n,{callee:e})},decode:function e(t,n){return fg(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await pg(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await mg(this,t,n,{callee:e})},safeEncode(e,t){return hg(this,e,t)},safeDecode(e,t){return gg(this,e,t)},async safeEncodeAsync(e,t){return _g(this,e,t)},async safeDecodeAsync(e,t){return vg(this,e,t)},toJSONSchema(e){return Th(this,{})(e)},get description(){return sm.get(this)?.description},get _def(){return this._zod.def}}),Sg=W(`_ZodString`,(e,t)=>{hf.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oh(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(Ym(...e))},includes(...e){return this.check(Qm(...e))},startsWith(...e){return this.check($m(...e))},endsWith(...e){return this.check(eh(...e))},min(...e){return this.check(qm(...e))},max(...e){return this.check(Km(...e))},length(...e){return this.check(Jm(...e))},nonempty(...e){return this.check(qm(1,...e))},lowercase(e){return this.check(Xm(e))},uppercase(e){return this.check(Zm(e))},trim(){return this.check(rh())},normalize(...e){return this.check(nh(...e))},toLowerCase(){return this.check(ih())},toUpperCase(){return this.check(ah())},slugify(){return this.check(oh())}}),Cg=W(`ZodString`,(e,t)=>{hf.init(e,t),Sg.init(e,t)},{email(e){return this.check(lm(kg,e))},url(e){return this.check(hm(Mg,e))},jwt(e){return this.check(Am(qg,e))},emoji(e){return this.check(gm(Ng,e))},guid(e){return this.check(um(Ag,e))},uuid(e){return this.check(dm(jg,e))},uuidv4(e){return this.check(fm(jg,e))},uuidv6(e){return this.check(pm(jg,e))},uuidv7(e){return this.check(mm(jg,e))},nanoid(e){return this.check(_m(Pg,e))},cuid(e){return this.check(vm(Fg,e))},cuid2(e){return this.check(ym(Ig,e))},ulid(e){return this.check(bm(Lg,e))},base64(e){return this.check(Dm(Wg,e))},base64url(e){return this.check(Om(Gg,e))},xid(e){return this.check(xm(Rg,e))},ksuid(e){return this.check(Sm(zg,e))},ipv4(e){return this.check(Cm(Bg,e))},ipv6(e){return this.check(wm(Vg,e))},cidrv4(e){return this.check(Tm(Hg,e))},cidrv6(e){return this.check(Em(Ug,e))},e164(e){return this.check(km(Kg,e))},datetime(e){return this.check(jm(Tg,e))},date(e){return this.check(Mm(Eg,e))},time(e){return this.check(Nm(Dg,e))},duration(e){return this.check(Pm(Og,e))}});function K(e){return cm(Cg,e)}var wg=W(`ZodStringFormat`,(e,t)=>{gf.init(e,t),Sg.init(e,t)}),Tg=W(`ZodISODateTime`,(e,t)=>{Nf.init(e,t),wg.init(e,t)}),Eg=W(`ZodISODate`,(e,t)=>{Pf.init(e,t),wg.init(e,t)}),Dg=W(`ZodISOTime`,(e,t)=>{Ff.init(e,t),wg.init(e,t)}),Og=W(`ZodISODuration`,(e,t)=>{If.init(e,t),wg.init(e,t)}),kg=W(`ZodEmail`,(e,t)=>{yf.init(e,t),wg.init(e,t)}),Ag=W(`ZodGUID`,(e,t)=>{_f.init(e,t),wg.init(e,t)}),jg=W(`ZodUUID`,(e,t)=>{vf.init(e,t),wg.init(e,t)}),Mg=W(`ZodURL`,(e,t)=>{Tf.init(e,t),wg.init(e,t)}),Ng=W(`ZodEmoji`,(e,t)=>{Ef.init(e,t),wg.init(e,t)}),Pg=W(`ZodNanoID`,(e,t)=>{Df.init(e,t),wg.init(e,t)}),Fg=W(`ZodCUID`,(e,t)=>{Of.init(e,t),wg.init(e,t)}),Ig=W(`ZodCUID2`,(e,t)=>{kf.init(e,t),wg.init(e,t)}),Lg=W(`ZodULID`,(e,t)=>{Af.init(e,t),wg.init(e,t)}),Rg=W(`ZodXID`,(e,t)=>{jf.init(e,t),wg.init(e,t)}),zg=W(`ZodKSUID`,(e,t)=>{Mf.init(e,t),wg.init(e,t)}),Bg=W(`ZodIPv4`,(e,t)=>{Lf.init(e,t),wg.init(e,t)}),Vg=W(`ZodIPv6`,(e,t)=>{Bf.init(e,t),wg.init(e,t)}),Hg=W(`ZodCIDRv4`,(e,t)=>{Vf.init(e,t),wg.init(e,t)}),Ug=W(`ZodCIDRv6`,(e,t)=>{Uf.init(e,t),wg.init(e,t)}),Wg=W(`ZodBase64`,(e,t)=>{Gf.init(e,t),wg.init(e,t)}),Gg=W(`ZodBase64URL`,(e,t)=>{qf.init(e,t),wg.init(e,t)}),Kg=W(`ZodE164`,(e,t)=>{Jf.init(e,t),wg.init(e,t)}),qg=W(`ZodJWT`,(e,t)=>{Xf.init(e,t),wg.init(e,t)}),Jg=W(`ZodNumber`,(e,t)=>{Zf.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kh(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(Um(e,t))},gte(e,t){return this.check(Wm(e,t))},min(e,t){return this.check(Wm(e,t))},lt(e,t){return this.check(Vm(e,t))},lte(e,t){return this.check(Hm(e,t))},max(e,t){return this.check(Hm(e,t))},int(e){return this.check(Xg(e))},safe(e){return this.check(Xg(e))},positive(e){return this.check(Um(0,e))},nonnegative(e){return this.check(Wm(0,e))},negative(e){return this.check(Vm(0,e))},nonpositive(e){return this.check(Hm(0,e))},multipleOf(e,t){return this.check(Gm(e,t))},step(e,t){return this.check(Gm(e,t))},finite(){return this}});function q(e){return Fm(Jg,e)}var Yg=W(`ZodNumberFormat`,(e,t)=>{Qf.init(e,t),Jg.init(e,t)});function Xg(e){return Im(Yg,e)}var Zg=W(`ZodBoolean`,(e,t)=>{$f.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ah(e,t,n,r)});function Qg(e){return Lm(Zg,e)}var $g=W(`ZodNull`,(e,t)=>{ep.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jh(e,t,n,r)});function e_(e){return Rm($g,e)}var t_=W(`ZodUnknown`,(e,t)=>{tp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function n_(){return zm(t_)}var r_=W(`ZodNever`,(e,t)=>{np.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mh(e,t,n,r)});function i_(e){return Bm(r_,e)}var a_=W(`ZodArray`,(e,t)=>{bg(),ip.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lh(e,t,n,r),e.element=t.element},{min(e,t){return this.check(qm(e,t))},nonempty(e){return this.check(qm(1,e))},max(e,t){return this.check(Km(e,t))},length(e,t){return this.check(Jm(e,t))},unwrap(){return this.element}});function o_(e,t){return sh(a_,e,t)}var s_=W(`ZodObject`,(e,t)=>{bg(),dp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zh(e,t,n,r),Ou(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return b_(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:n_()})},loose(){return this.clone({...this._zod.def,catchall:n_()})},strict(){return this.clone({...this._zod.def,catchall:i_()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return ru(this,e)},safeExtend(e){return iu(this,e)},merge(e){return au(this,e)},pick(e){return tu(this,e)},omit(e){return nu(this,e)},partial(...e){return ou(w_,this,e[0])},exactPartial(...e){return ou(E_,this,e[0],`exactPartial`)},required(...e){return su(P_,this,e[0])}});function J(e,t){return new s_({type:`object`,shape:e??{},...U(t)})}function c_(e,t){return new s_({type:`object`,shape:e,catchall:i_(),...U(t)})}var l_=W(`ZodUnion`,(e,t)=>{pp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bh(e,t,n,r),e.options=t.options});function u_(e,t){return new l_({type:`union`,options:e,...U(t)})}var d_=W(`ZodDiscriminatedUnion`,(e,t)=>{l_.init(e,t),mp.init(e,t)});function f_(e,t,n){return new d_({type:`union`,options:t,discriminator:e,...U(n)})}var p_=W(`ZodIntersection`,(e,t)=>{hp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vh(e,t,n,r)});function m_(e,t){return new p_({type:`intersection`,left:e,right:t})}var h_=W(`ZodTuple`,(e,t)=>{bg(),vp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(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 w_({type:`optional`,innerType:e}))})}});function g_(e,t,n){let r=t instanceof ff;return new h_({type:`tuple`,items:e,rest:r?t:null,...U(r?n:t)})}var __=W(`ZodRecord`,(e,t)=>{bg(),Sp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kh(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function v_(e,t,n){return!t||!t._zod?new __({type:`record`,keyType:K(),valueType:e,...U(t)}):new __({type:`record`,keyType:e,valueType:t,...U(n)})}var y_=W(`ZodEnum`,(e,t)=>{Cp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nh(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 y_({...t,checks:[],...U(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 y_({...t,checks:[],...U(r),entries:i})}});function b_(e,t){return new y_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...U(t)})}var x_=W(`ZodLiteral`,(e,t)=>{wp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ph(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 x_({type:`literal`,values:Array.isArray(e)?e:[e],...U(t)})}var S_=W(`ZodTransform`,(e,t)=>{bg(),Tp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ih(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Iu(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(vu(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(vu(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function C_(e){return new S_({type:`transform`,transform:e})}var w_=W(`ZodOptional`,(e,t)=>{Dp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ng(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function T_(e){return new w_({type:`optional`,innerType:e})}var E_=W(`ZodExactOptional`,(e,t)=>{Op.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ng(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function D_(e){return new E_({type:`optional`,innerType:e})}var O_=W(`ZodNullable`,(e,t)=>{kp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function k_(e){return new O_({type:`nullable`,innerType:e})}var A_=W(`ZodDefault`,(e,t)=>{Ap.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function j_(e,t){return new A_({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Jl(t)}})}var M_=W(`ZodPrefault`,(e,t)=>{Mp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Qh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function N_(e,t){return new M_({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Jl(t)}})}var P_=W(`ZodNonOptional`,(e,t)=>{Np.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Jh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function F_(e,t){return new P_({type:`nonoptional`,innerType:e,...U(t)})}var I_=W(`ZodCatch`,(e,t)=>{Ip.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$h(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function L_(e,t){return new I_({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Au(t)})}var R_=W(`ZodPipe`,(e,t)=>{Lp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>eg(e,t,n,r),e.in=t.in,e.out=t.out});function z_(e,t){return new R_({type:`pipe`,in:e,out:t})}var B_=W(`ZodReadonly`,(e,t)=>{zp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>tg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function V_(e){return new B_({type:`readonly`,innerType:e})}var H_=W(`ZodLazy`,(e,t)=>{Vp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>rg(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function X(e){return new H_({type:`lazy`,getter:e})}var U_=W(`ZodCustom`,(e,t)=>{Hp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fh(e,t,n,r)});function W_(e,t={}){return ch(U_,e,t)}function G_(e,t){return lh(e,t)}function Z(e,t={}){let n=new U_({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...U(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 K_=X(()=>Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),q_=X(()=>J({verb:Y(`bulk.open`),"transfer-id":X(()=>K_),"total-size":q().int().nonnegative().optional(),"content-type":K().optional()}).catchall(n_())),J_=X(()=>J({verb:Y(`bulk.resume`),"transfer-id":X(()=>K_),"ack-seq":q().int().nonnegative()}).catchall(n_())),Y_=X(()=>J({verb:Y(`bulk.cancel`),"transfer-id":X(()=>K_),reason:K().optional()}).catchall(n_())),X_=X(()=>u_([u_([X(()=>q_),X(()=>J_),X(()=>Y_)]),u_([X(()=>rv),X(()=>iv),X(()=>av),X(()=>ov),X(()=>sv),X(()=>cv),X(()=>lv),X(()=>uv)]),J({}).catchall(n_()),X(()=>Ev),X(()=>Ov),X(()=>jv),X(()=>Mv),u_([X(()=>Iv),X(()=>Lv),X(()=>Rv),X(()=>zv)]),u_([X(()=>Vv),X(()=>Hv)]),X(()=>Uv),u_([X(()=>ry),X(()=>iy),X(()=>ay)]),u_([X(()=>oy),X(()=>sy),X(()=>cy)]),X(()=>Ny),u_([X(()=>Iy),X(()=>Ly),X(()=>Ry),X(()=>Py)])])),Z_=X(()=>J({type:Y(`bulk-data`),"transfer-id":X(()=>K_),seq:q().int().nonnegative(),bytes:Z(Uint8Array)})),Q_=X(()=>J({type:Y(`bulk-ack`),"transfer-id":X(()=>K_),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),$_=X(()=>J({type:Y(`bulk-end`),"transfer-id":X(()=>K_),digest:Z(Uint8Array)})),ev=X(()=>J({type:Y(`data-have`),peer:X(()=>bv),"head-seq":q().int().nonnegative()})),tv=X(()=>J({type:Y(`data-request`),peer:X(()=>bv),"from-seq":q().int().nonnegative()})),nv=X(()=>J({type:Y(`data-entries`),peer:X(()=>bv),"from-seq":q().int().nonnegative(),entries:o_(Z(Uint8Array))}));X(()=>J({handle:K(),"device-id":X(()=>bv),"identity-key":X(()=>yv),candidates:o_(X(()=>wy)).optional(),mailboxes:o_(X(()=>bv)).optional(),issued:q().int().nonnegative(),expires:q().int().nonnegative()})),X(()=>X(()=>hy));var rv=X(()=>J({verb:Y(`pty.spawn`),shell:K().optional(),argv:o_(K()),cwd:K().optional(),env:J({}).catchall(K()),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),iv=X(()=>J({verb:Y(`pty.write`),session:X(()=>Xv),bytes:Z(Uint8Array)})),av=X(()=>J({verb:Y(`pty.resize`),session:X(()=>Xv),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),ov=X(()=>J({verb:Y(`pty.kill`),session:X(()=>Xv),signal:q().int()})),sv=X(()=>J({verb:Y(`proc.spawn`),argv:o_(K()),cwd:K().optional(),env:J({}).catchall(K())})),cv=X(()=>J({verb:Y(`proc.signal`),session:X(()=>Xv),signal:q().int()})),lv=X(()=>J({verb:Y(`proc.kill`),session:X(()=>Xv)})),uv=X(()=>J({verb:Y(`exec.list`)}));X(()=>J({session:X(()=>Xv),kind:u_([Y(`pty`),Y(`proc`)]),argv:o_(K()).optional(),cwd:K().optional()}));var dv=X(()=>u_([X(()=>vv),X(()=>vy),X(()=>yy),X(()=>by),X(()=>Sy),X(()=>Ty),X(()=>Ey),X(()=>Dy),X(()=>Oy),X(()=>ky),X(()=>Ay),X(()=>jy),X(()=>My),X(()=>Sv),X(()=>Tv),X(()=>Av),X(()=>Zv),X(()=>Qv),X(()=>$v),X(()=>ev),X(()=>tv),X(()=>nv),X(()=>Z_),X(()=>Q_),X(()=>$_),X(()=>Jv),X(()=>Yv)])),fv=X(()=>X(()=>dv)),pv=X(()=>q().int().nonnegative()),mv=X(()=>u_([X(()=>hv),X(()=>gv),X(()=>_v)])),hv=X(()=>u_([Y(`core/management`),Y(`core/exec`),Y(`core/data`),Y(`core/federation`),Y(`core/webrtc`),Y(`core/room`),Y(`core/bulk`),Y(`core/version`)])),gv=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_.-]+`))),_v=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+`))),vv=X(()=>J({type:Y(`handshake`),version:X(()=>pv),domains:o_(X(()=>mv)),params:J({}).catchall(n_()).optional()})),yv=X(()=>J({alg:q().int(),"public-key":Z(Uint8Array)})),bv=X(()=>Z(Uint8Array).refine(e=>e.length===32,{message:`expected exactly 32 bytes`}));X(()=>J({"device-id":X(()=>bv),"identity-key":X(()=>yv),certificate:Z(Uint8Array).optional()}));var xv=X(()=>J({verb:X(()=>ly),params:X(()=>X_)})),Sv=X(()=>J({type:Y(`manage-request`),"request-id":q().int().nonnegative(),command:X(()=>xv),scope:X(()=>py),token:X(()=>gy).optional()})),Cv=X(()=>J({result:Y(`ok`)}).catchall(n_())),wv=X(()=>J({result:Y(`error`),code:K(),message:K().optional()})),Tv=X(()=>J({type:Y(`manage-response`),"request-id":q().int().nonnegative(),outcome:u_([X(()=>Cv),X(()=>wv)])})),Ev=X(()=>J({verb:Y(`capability.request`),capability:K(),"valid-until":q().int().nonnegative().optional()}).catchall(n_())),Dv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>gy)}).catchall(n_())),Ov=X(()=>J({verb:Y(`capability.grant`),"granted-token":X(()=>gy)}).catchall(n_()));X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>bv),"issuer-key":X(()=>yv),"revoked-at":q().int().nonnegative(),authorization:Z(Uint8Array).optional()}));var kv=X(()=>X(()=>hy)),Av=X(()=>J({type:Y(`revocation-announce`),entries:o_(X(()=>kv))})),jv=X(()=>J({verb:Y(`path.trace`)}));X(()=>J({result:Y(`ok`),relayed:Qg(),"hub-address":K().optional()}).catchall(n_())),X(()=>J({direct:o_(X(()=>bv)),relayed:o_(J({device:X(()=>bv),via:X(()=>bv).optional()}))}));var Mv=X(()=>J({verb:Y(`topology.get`)})),Nv=X(()=>u_([X(()=>Pv),X(()=>Fv)]));X(()=>K().regex(RegExp(`[0-9a-f]{64}`)));var Pv=X(()=>K().regex(RegExp(`[0-9a-f]{64}/[A-Za-z0-9_-]+`))),Fv=X(()=>K().regex(RegExp(`[0-9a-f]{64}\\+[0-9a-f]{64}`))),Iv=X(()=>J({verb:Y(`room.send`),"message-id":Z(Uint8Array),"sent-at":q().int().nonnegative(),text:K(),"content-type":K().optional(),refs:o_(X(()=>Bv)).optional()}).catchall(n_())),Lv=X(()=>J({verb:Y(`room.read`),messages:o_(Z(Uint8Array)),at:q().int().nonnegative()}).catchall(n_())),Rv=X(()=>J({verb:Y(`room.leave`)}).catchall(n_())),zv=X(()=>J({verb:Y(`room.members`)}).catchall(n_())),Bv=X(()=>J({id:Z(Uint8Array),relation:K()})),Vv=X(()=>J({verb:Y(`room.join`)}).catchall(n_())),Hv=X(()=>J({verb:Y(`room.invite`),invitee:X(()=>bv),token:X(()=>gy)}).catchall(n_())),Uv=X(()=>J({verb:Y(`room.rekey`),"key-epoch":q().int().nonnegative(),"wrapped-key":u_([Z(Uint8Array),o_(Z(Uint8Array))])}).catchall(n_())),Wv=X(()=>J({device:X(()=>bv)}).catchall(n_())),Gv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>gy),members:o_(X(()=>Wv))}).catchall(n_()));X(()=>J({result:Y(`ok`),members:o_(X(()=>Wv))}).catchall(n_()));var Kv=X(()=>X(()=>hy)),qv=X(()=>J({room:X(()=>Nv),poster:X(()=>bv),"poster-key":X(()=>yv),token:X(()=>gy),"notice-id":Z(Uint8Array),"posted-at":q().int().nonnegative(),"content-type":K(),content:Z(Uint8Array),refs:o_(X(()=>Bv)).optional(),"valid-until":q().int().nonnegative().optional(),"key-epoch":q().int().nonnegative().optional()}).catchall(n_())),Jv=X(()=>J({type:Y(`secure-hello`),"ephemeral-key":Z(Uint8Array).refine(e=>e.length===65,{message:`expected exactly 65 bytes`}),nonce:Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`}),"identity-key":X(()=>yv),"to-device":X(()=>bv),signature:Z(Uint8Array)})),Yv=X(()=>J({type:Y(`secure-data`),counter:q().int().nonnegative(),ciphertext:Z(Uint8Array)})),Xv=X(()=>q().int().nonnegative()),Zv=X(()=>J({type:Y(`stream-data`),session:X(()=>Xv),seq:q().int().nonnegative(),channel:K(),bytes:Z(Uint8Array)})),Qv=X(()=>J({type:Y(`stream-ack`),session:X(()=>Xv),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),$v=X(()=>J({type:Y(`stream-end`),session:X(()=>Xv),"exit-code":q().int().optional(),"exit-signal":q().int().optional()})),ey=X(()=>q().int().nonnegative()),ty=X(()=>J({kind:u_([Y(`capability-token`),Y(`revocation-entry`),Y(`handle-record`),Y(`room-notice`),K()]),protected:Z(Uint8Array),payload:Z(Uint8Array)})),ny=X(()=>J({participant:X(()=>bv),hiding:Z(Uint8Array),binding:Z(Uint8Array)})),ry=X(()=>J({verb:Y(`threshold.commit`),"session-id":X(()=>ey),group:X(()=>bv),subject:X(()=>ty),deadline:q().int().nonnegative()})),iy=X(()=>J({verb:Y(`threshold.sign`),"session-id":X(()=>ey),commitments:o_(X(()=>ny))}));X(()=>J({"session-id":X(()=>ey),group:X(()=>bv),share:Z(Uint8Array),issuer:X(()=>bv),"issuer-key":X(()=>yv)})),X(()=>X(()=>hy));var ay=X(()=>J({verb:Y(`threshold.abort`),"session-id":X(()=>ey),reason:K().optional()})),oy=X(()=>J({verb:Y(`threshold.keygen-round1`),"session-id":X(()=>ey),threshold:q().int().nonnegative(),participants:o_(X(()=>bv)),commitment:o_(Z(Uint8Array)),"proof-of-knowledge":Z(Uint8Array).optional(),"existing-group-key":Z(Uint8Array).optional()})),sy=X(()=>J({verb:Y(`threshold.keygen-round2`),"session-id":X(()=>ey),share:Z(Uint8Array)})),cy=X(()=>J({verb:Y(`threshold.keygen-confirm`),"session-id":X(()=>ey),"transcript-digest":Z(Uint8Array),"group-key":Z(Uint8Array)})),ly=X(()=>u_([X(()=>uy),X(()=>dy),X(()=>fy)])),uy=X(()=>K().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),dy=X(()=>K().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),fy=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),py=X(()=>J({kind:K(),path:K().optional()}));X(()=>Y(1)),X(()=>Y(4)),X(()=>u_([q().int(),K()]));var my=X(()=>J({1:q().int().optional(),4:Z(Uint8Array).optional()}).catchall(n_())),hy=X(()=>g_([Z(Uint8Array),X(()=>my),u_([Z(Uint8Array),e_()]),Z(Uint8Array)])),gy=X(()=>X(()=>hy)),_y=X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>bv),"issuer-key":X(()=>yv),bearer:X(()=>bv),capability:X(()=>ly),scope:X(()=>py),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(n_())),vy=X(()=>J({type:Y(`ping`)})),yy=X(()=>J({type:Y(`pong`)})),by=X(()=>J({type:Y(`close`),reason:K().optional()})),xy=X(()=>J({device:X(()=>bv),addresses:o_(K()),"snapshot-seconds":q().int(),"identity-key":X(()=>yv),signature:Z(Uint8Array)}).catchall(n_())),Sy=X(()=>J({type:Y(`gossip`),peers:o_(X(()=>xy))})),Cy=X(()=>u_([Y(`host`),Y(`server-reflexive`),Y(`relayed`)])),wy=X(()=>J({address:K(),kind:X(()=>Cy),priority:q().int().nonnegative()})),Ty=X(()=>J({type:Y(`candidates`),candidates:o_(X(()=>wy))})),Ey=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()})),Oy=X(()=>J({type:Y(`relay-offer`),addresses:o_(K())})),ky=X(()=>J({type:Y(`relay-connect`),"target-device":X(()=>bv)})),Ay=X(()=>J({type:Y(`relay-data`),payload:Z(Uint8Array),"to-device":X(()=>bv).optional(),"from-device":X(()=>bv).optional()})),jy=X(()=>J({type:Y(`relay-inbound`),"source-device":X(()=>bv)})),My=X(()=>J({type:Y(`coordinator`),term:q().int().nonnegative(),coordinator:X(()=>bv),"capacity-hint":q().int().nonnegative().optional()})),Ny=X(()=>J({verb:Y(`version.get`)})),Py=X(()=>J({verb:Y(`webrtc.sfu-track-map`),"negotiation-id":q().int().nonnegative(),tracks:o_(X(()=>Fy))})),Fy=X(()=>J({mid:K(),member:X(()=>bv),kind:u_([Y(`audio`),Y(`video`)])})),Iy=X(()=>J({verb:Y(`webrtc.offer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Ly=X(()=>J({verb:Y(`webrtc.answer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Ry=X(()=>J({verb:Y(`webrtc.ice-candidate`),"negotiation-id":q().int().nonnegative(),candidate:X(()=>zy).optional()})),zy=X(()=>J({candidate:K(),"sdp-mid":K().optional(),"sdp-m-line-index":q().int().nonnegative().optional(),"username-fragment":K().optional()})),By=16,Vy=2;function Hy(e){let t=``;for(let n of e)t+=n.toString(By).padStart(Vy,`0`);return t}function Uy(e){return Hy(e)}var Wy=`pinned-certificates/`;function Gy(e){return{recall:async t=>{let n=await e.get(Wy+t);return n===void 0?[]:kl(n)},remember:async(t,n)=>{let r=Ol(n.map(e=>Hy(e)));await e.set(Wy+t,new Uint8Array(r))}}}var Ky=String(2**53-1).length,qy=`message`;function Jy(e,t){return`${qy}/${e}/${String(t.sentAt).padStart(Ky,`0`)}-${Hy(t.messageId)}`}function Yy(e){let t=e.slice(`${qy}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function Xy(e){return e===`sent`||e===`received`}function Zy(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:Xy(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Qy(e){return{async append(t,n){await e.set(Jy(t,n),new Uint8Array(hc(n,Qs)))},async roomPaths(){let t=await e.keys(`${qy}/`);return[...new Set(t.map(Yy))]},async list(t){let n=(await e.keys(`${qy}/${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(!Zy(i))throw Error(`stored message at ${t} is malformed`);r.push(i)}return r}}}function $y(e){return new Uint8Array(hc(e,Qs))}function eb(e,t){return{type:`relay-data`,payload:$y(e),...t===void 0?{}:{"to-device":t}}}var tb=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function nb(e){let t=rl(new Uint8Array(e),il),n=fv.safeParse(t);if(!n.success)throw new tb(n.error.message);return n.data}function rb(e){let t;try{t=rl(e,il)}catch{return null}let n=fv.safeParse(t);return n.success?n.data:null}function ib(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 ab(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function ob(e,t){return ab(e)||ab(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function sb(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&ob(t.path,e.path):!1}var cb=`signature`,lb=`identity-key`,ub=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function db(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=hc(t,Qs),r=new Uint8Array(ub.length+n.length);return r.set(ub,0),r.set(n,ub.length),r}async function fb(e,t){let n=await e.sign(db(t));return{...t,[cb]:n}}async function pb(e,t){let n=t[lb];try{return ib(await e.deriveDeviceId(n[`public-key`]),t.device)?await e.verify(n,db(t),t[cb]):!1}catch{return!1}}var mb={name:`wire-mesh-core`,version:`3.5.0`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`2.18.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/byte-stream-connection":{import:`./dist/adapters/byte-stream-connection.mjs`,require:`./dist/adapters/byte-stream-connection.cjs`},"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/advert-extension-policy":{import:`./dist/domain/advert-extension-policy.mjs`,require:`./dist/domain/advert-extension-policy.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/coordinator-election":{import:`./dist/domain/coordinator-election.mjs`,require:`./dist/domain/coordinator-election.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/hub-mailbox":{import:`./dist/domain/hub-mailbox.mjs`,require:`./dist/domain/hub-mailbox.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/pinned-address":{import:`./dist/domain/pinned-address.mjs`,require:`./dist/domain/pinned-address.cjs`},"./domain/relay-advert":{import:`./dist/domain/relay-advert.mjs`,require:`./dist/domain/relay-advert.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,hb=`wire-mesh/version`,gb=`version.get`;function _b(e){return`verb`in e&&e.verb===gb}function vb(){return{result:`ok`,version:mb}}var yb=new Set([`device`,`addresses`,`snapshot-seconds`,lb,cb]),bb=`topology/peers`,xb=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function Sb(e){for(let t of Object.keys(e)){if(yb.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(!xb.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}function Cb(){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})})}}}}}var wb=[`core/federation`];function Tb(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!wb.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function Eb(){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 Db(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function Ob(e){let t=Db(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function kb(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return Ob({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function Ab(){let e=new Map;return{has:t=>e.has(Uy(t)),add:t=>{e.set(Uy(t),t)},remove:t=>{e.delete(Uy(t))},clear:()=>{e.clear()},list:()=>[...e.values()]}}var jb=16,Mb=256,Nb=256,Pb=12,Fb=4,Ib=8,Lb=new TextEncoder,Rb=Lb.encode(`wire-mesh/secure-hello/v1\0`),zb=Lb.encode(`wire-mesh/secure-channel/v1\0`),Bb=Lb.encode(`wire-mesh/secure-data/v1\0`),Vb=Lb.encode(`lo-to-hi`),Hb=Lb.encode(`hi-to-lo`),Ub={name:`ECDH`,namedCurve:`P-256`};function Wb(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function Gb(e,t){for(let n=0;n<Math.min(e.length,t.length);n+=1){let r=(e[n]??0)-(t[n]??0);if(r!==0)return r}return e.length-t.length}function Kb(e){let t=new Uint8Array(Ib);return new DataView(t.buffer).setBigUint64(0,BigInt(e),!1),t}function qb(e,t,n,r){return Wb(Rb,e,t,n,r)}async function Jb(e,t){let n=await crypto.subtle.generateKey(Ub,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.exportKey(`raw`,n.publicKey)),i=crypto.getRandomValues(new Uint8Array(jb)),a=await e.sign(qb(r,i,e.deviceId,t));return{peer:t,privateKey:n.privateKey,hello:{type:`secure-hello`,"ephemeral-key":r,nonce:i,"identity-key":e.identityKey,"to-device":t,signature:a}}}async function Yb(e,t){let n=t[`identity-key`];try{let r=await e.deriveDeviceId(n[`public-key`]);return ib(t[`to-device`],e.deviceId)?await e.verify(n,qb(t[`ephemeral-key`],t.nonce,r,e.deviceId),t.signature)?{ok:!0,peer:{deviceId:r,identityKey:n}}:{ok:!1,reason:`bad_signature`}:{ok:!1,reason:`wrong_recipient`}}catch{return{ok:!1,reason:`identity_mismatch`}}}function Xb(e){let t=new Uint8Array(Pb);return t.set(Kb(e),Fb),t}function Zb(e,t,n){return Wb(Bb,e,t,Kb(n))}async function Qb(e,t,n,r,i){let a=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(t),info:Wb(zb,n,r,i)},a,{name:`AES-GCM`,length:Mb},!1,[`encrypt`,`decrypt`])}async function $b(e,t,n,r){let i;try{let e=await crypto.subtle.importKey(`raw`,Uint8Array.from(n[`ephemeral-key`]),Ub,!1,[]);i=new Uint8Array(await crypto.subtle.deriveBits({name:`ECDH`,public:e},t.privateKey,Nb))}catch{return}let a=Gb(e.deviceId,r.deviceId)<0,o=a?e.deviceId:r.deviceId,s=a?r.deviceId:e.deviceId,c=Wb(a?t.hello.nonce:n.nonce,a?n.nonce:t.hello.nonce),l=await Qb(i,c,o,s,Vb),u=await Qb(i,c,o,s,Hb),d=a?l:u,f=a?u:l,p=0,m=-1,h=Promise.resolve(),g=Promise.resolve();async function _(t,n){return{type:`secure-data`,counter:n,ciphertext:new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:Xb(n),additionalData:Zb(e.deviceId,r.deviceId,n)},d,$y(t)))}}async function v(t){if(t.counter<=m)return;let n;try{n=new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:Xb(t.counter),additionalData:Zb(r.deviceId,e.deviceId,t.counter)},f,Uint8Array.from(t.ciphertext)))}catch{return}return m=t.counter,rb(n)??void 0}return{peer:r,seal:async e=>{let t=p;p+=1;let n=h.then(async()=>_(e,t));return h=n.catch(()=>void 0),n},open:async e=>{let t=g.then(async()=>v(e));return g=t.catch(()=>void 0),t}}}function ex(e,t){let n=new Map;function r(r){let i=Uy(r),a=Promise.withResolvers(),o=Jb(e,r),s={status:`awaiting`,pending:o,settle:a};return n.set(i,s),o.then(async({hello:e})=>t(r,e)).catch(e=>{a.reject(e instanceof Error?e:Error(String(e))),n.get(i)===s&&n.delete(i)}),s}return{ensure:async e=>{let t=n.get(Uy(e));return t?.status===`established`?t.channel:(t??r(e)).settle.promise},applyHello:async t=>{let i=await Yb(e,t);if(!i.ok)return;let a=Uy(i.peer.deviceId),o=n.get(a),s=o?.status===`awaiting`?o:r(i.peer.deviceId),c=await $b(e,await s.pending,t,i.peer);if(c===void 0){s.settle.reject(Error(`the peer sent an unusable ephemeral key`)),n.get(a)===s&&n.delete(a);return}n.set(a,{status:`established`,channel:c}),s.settle.resolve(c)},open:async(e,t)=>{if(t===void 0)return;let r=n.get(Uy(t));if(r?.status!==`established`)return;let i=await r.channel.open(e);return i===void 0?void 0:{frame:i,from:r.channel.peer.deviceId}},reset:e=>{for(let t of n.values())t.status===`awaiting`&&t.settle.reject(Error(e));n.clear()},forget:e=>{let t=Uy(e),r=n.get(t);r?.status===`awaiting`&&r.settle.reject(Error(`the relay pairing was lost`)),n.delete(t)}}}var tx=1e3,nx=3e3;function rx(e){return{type:`handshake`,version:1,domains:[...e]}}function ix(e,t,n,r,i,a=[],o,s){let c=null,l={status:`idle`},u={status:`pending`},d=new Map,f=[],p=!1,m=Cb(),h=null,g=null,_=0,v=null,y=0,b=Ab(),x=kb({getAuthenticatedPeer:()=>c?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>b.list()}),S=new Map,C=ex(e,async(e,t)=>{if(c===null)throw Error(`not connected`);f.push({direction:`sent`,frame:t}),await c.send(eb(t,e)),D()}),w=Cb(),T=Cb(),ee=Cb(),te=Eb();function E(){return{state:l,directory:[...d.values()],frameLog:[...f]}}function D(){m.push(E())}function ne(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 re(){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(e);return}if(n===void 0)throw Error(`a relayed frame needs the device it is for`);let r=await(await C.ensure(n)).seal(e);await c.send(eb(r,n))}function ie(e,t){let n=e[`request-id`],r=S.get(n);if(r===void 0)return;let i=r.expectedFrom;(i===void 0?t===void 0:t!==void 0&&Uy(t)===Uy(i))&&(S.delete(n),r.resolve(e.outcome))}function ae(e,t){let n=e[`request-id`],r=t?.fromDevice,i=t?.toDevice,a={requestId:n,command:e.command,scope:e.scope,...e.token===void 0?{}:{token:e.token},...r===void 0?{}:{fromDevice:r},...i===void 0?{}:{toDevice:i},respond:async e=>{let i={type:`manage-response`,"request-id":n,outcome:e};f.push({direction:`sent`,frame:i}),await k(i,t!==void 0,r),D()}};if(_b(e.command.params)){a.respond(vb());return}w.push(a)}async function A(n){if(n.type===`relay-data`){let e=rb(n.payload);if(e?.type===`secure-hello`){f.push({direction:`received`,frame:e}),await C.applyHello(e);return}if(e?.type===`secure-data`){let t=await C.open(e,n[`from-device`]);t?.frame.type===`manage-response`?(f.push({direction:`received`,frame:t.frame}),ie(t.frame,t.from)):t?.frame.type===`manage-request`&&(f.push({direction:`received`,frame:t.frame}),ae(t.frame,{fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}}));return}f.push({direction:`received`,frame:n});return}if(f.push({direction:`received`,frame:n}),n.type===`handshake`)se(n);else if(n.type===`gossip`)for(let t of n.peers)await pb(e,t)&&(d.set(Uy(t.device),{device:t.device,advert:t}),x.recordAdvert(t.device),i?.(t));else if(n.type===`relay-inbound`)b.add(n[`source-device`]);else if(n.type===`manage-response`)ie(n);else if(n.type===`manage-request`)ae(n);else if(n.type===`pong`)te.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)T.push(e);else n.type===`coordinator`&&ee.push(n)}async function j(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),D()}let oe=rx([]);function se(e){if(u.status!==`pending`)return;h!==null&&(clearTimeout(h),h=null);let t=Tb(oe,e);u=t.ok?{status:`negotiated`,version:t.version,sharedDomains:t.sharedDomains}:{status:`rejected`,reason:`no shared domains or version`},l.status===`connected`&&(l={...l,handshake:u})}function ce(e,t){return e.redialAddress?.()??t}function le(e,t,r){if(!p){if(ne(`disconnected before a response arrived`),te.rejectAll(`disconnected before a pong arrived`),n!==null&&_<n.maxAttempts){_+=1;let i=_;l={status:`reconnecting`,address:t,attempt:i,reason:e},D(),g=setTimeout(()=>{g=null,pe(t,r).catch(e=>{le(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}l={status:`closed`,address:t,reason:e},D()}}async function ue(e,t,n){let r=!1;for await(let t of e.receive()){if(p)return;r||(r=!0,_=0),await A(t),await o?.(e,t),D()}s?.(e),l.status===`connected`&&le(`node closed the connection`,ce(e,t),n)}async function de(n){return n!==void 0&&Sb(n),{type:`gossip`,peers:[await fb(e,{...n,[hb]:mb,[bb]:x.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/tx),"identity-key":e.identityKey})]}}async function fe(e,t,n){c=e,C.reset(`the connection changed before the channel was ready`),b.clear(),oe=rx(n),u={status:`pending`},l={status:`connected`,address:t,handshake:u},f.push({direction:`sent`,frame:oe}),await c.send(oe),D();let r=await de();f.push({direction:`sent`,frame:r}),await c.send(r),D(),h=setTimeout(()=>{h=null,u.status===`pending`&&(u={status:`unanswered`},l.status===`connected`&&(l={...l,handshake:u}),D())},nx),ue(c,t,n).catch(r=>{l.status===`connected`&&le(r instanceof Error?r.message:String(r),ce(e,t),n)})}async function pe(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},D();let n=await r(e);if(p){await n.close();return}await fe(n,e,t)}return{wireUpConnection:fe,session:{events:m.stream,incomingManageRequests:w.stream,revocationAnnouncements:T.stream,coordinatorFrames:ee.stream,async connect(e,t){if(c!==null)throw Error(`a session connects once; create a new one to reconnect`);_=0,await pe(e,t)},async sendPing(){let e=re(),t={type:`ping`};f.push({direction:`sent`,frame:t}),await e.send(t),D()},async sendPingMeasureRtt(e){let n=re();return te.sendAndAwait(t.now(),async()=>{let e={type:`ping`};f.push({direction:`sent`,frame:e}),await n.send(e),D()},e)},setToken(e){v=e},async sendManageRequest(e,t,n,r,i){re(),n!==void 0&&await j(n);let a=O(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{S.set(o,{resolve:e,reject:t,expectedFrom:n})});f.push({direction:`sent`,frame:a});let c=(async()=>{try{await k(a,n!==void 0,n)}catch(e){throw S.delete(o),s.catch(()=>void 0),e}return D(),s})();return i===void 0?c:Promise.race([c,new Promise(e=>{setTimeout(()=>{S.delete(o)&&(n!==void 0&&(b.remove(n),C.forget(n)),e({result:`error`,code:`timeout`}))},i)})])},async sendRevocationAnnounce(e){re();let t={type:`revocation-announce`,entries:[...e]};f.push({direction:`sent`,frame:t}),await k(t,!1),D()},async sendCoordinatorClaim(e){re();let t={...e};f.push({direction:`sent`,frame:t}),await k(t,!1),D()},async sendGossipUpdate(e){re();let t=await de(e);f.push({direction:`sent`,frame:t}),await k(t,!1),D()},getTopologyPeers(){return x.compute()},async sendDataFrame(e){re(),f.push({direction:`sent`,frame:e}),await k(e,!1),D()},async close(){p=!0,h!==null&&(clearTimeout(h),h=null),g!==null&&(clearTimeout(g),g=null),ne(`connection closed before a response arrived`),C.reset(`the session closed before the channel was ready`),te.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`}),D()}}}}function ax(e,t,n={now:()=>Date.now()},r=null,i=[],a){let{session:o}=ix(t,n,r,async t=>e.connect(t),a,i);return o}async function ox(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}=ix(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 sx(e){return e instanceof Error?e:Error(String(e))}function cx(e){let t=Uy(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[sx(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(sx(e))}e.onExpansionFailed?.(t,r)}return{considerAdvert(e){let i=Uy(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var lx=/^[0-9a-f]{64}$/,ux=/^[A-Za-z0-9_-]+$/;function dx(e,t){if(!lx.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function fx(e,t){if(dx(e,`a`),dx(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 px(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(lx.test(n)&&ux.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(lx.test(t)&&lx.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var mx=4,hx=1024,gx=hx*hx*100,_x=new Uint8Array(mx);function vx(e){let t=hc(e,Qs),n=new Uint8Array(mx+t.length);return new DataView(n.buffer).setUint32(0,t.length),n.set(t,mx),n}function yx(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}async function*bx(e){let t=new Uint8Array;try{for(;;){let n=await e.read();if(n.done)return;for(t=yx(t,n.value);t.length>=mx;){let e=new DataView(t.buffer,t.byteOffset).getUint32(0);if(e>104857600)throw Error(`frame of ${String(e)} bytes exceeds the ${String(gx)}-byte limit`);if(t.length<mx+e)break;if(e===0){t=t.slice(mx);continue}let n=t.slice(mx,mx+e);t=t.slice(mx+e);let r=fv.safeParse(rl(n,il));r.success&&(yield r.data)}}}catch(t){throw await e.cancel(t),t}}function xx(e,t={opened:!1}){let n=e.writable.getWriter(),r=e.readable.getReader(),i=bx(r),a=t.opened?n.write(_x):Promise.resolve();return a.catch(()=>void 0),{send:async e=>{await a,await n.write(vx(e))},receive:()=>i,close:async()=>{await Promise.allSettled([n.close(),r.cancel()])}}}var Sx=`/wire-mesh`,Cx=8e3,wx=`the web console is a client only: it cannot listen`;async function Tx(e){let t=e.incomingUnidirectionalStreams.getReader(),n=await t.read();if(t.releaseLock(),n.done)throw Error(`the node opened no announcement stream`);let r=n.value;if(!(r instanceof ReadableStream))throw Error(`the announcement stream is not a readable stream`);let i=[],a=r.getReader();for(;;){let e=await a.read();if(e.done)break;if(!(e.value instanceof Uint8Array))throw Error(`the announcement carried something other than bytes`);i.push(e.value)}let o=new Uint8Array(i.reduce((e,t)=>e+t.length,0)),s=0;for(let e of i)o.set(e,s),s+=e.length;return kl(o)}async function Ex(e){let t,n=new Promise(e=>{t=setTimeout(()=>{e(`timed out`)},Cx)});try{let t=await Promise.race([e.createBidirectionalStream(),n]);if(t===`timed out`)throw e.close(),Error(`this browser cannot open a stream to this node: it is waiting for flow-control credit the node never grants, which is how Safari behaves with the node's HTTP/3 library (fails-components/webtransport#490); reach the node over wss:// instead`);return t}finally{clearTimeout(t)}}function Dx(e){return{async connect(t){if(typeof WebTransport>`u`)throw Error(`this browser does not support WebTransport`);let{url:n,sha256:r}=El(t),i=new URL(n).host,a=Al(r,await e.recall(i)),o=new WebTransport(new URL(Sx,n).toString(),{serverCertificateHashes:a.map(e=>({algorithm:`sha-256`,value:e}))});await o.ready;let s=xx(await Ex(o),{opened:!0});o.closed.catch(()=>void 0).then(async()=>s.close());let c;return Tx(o).then(async t=>{c=t,await e.remember(i,t)}).catch(()=>void 0),{...s,redialAddress:()=>c===void 0?t:Ml(t,c)}},async listen(){return Promise.reject(Error(wx))}}}var Ox=1e3,kx=1002,Ax=`the web console is a client only: it cannot listen`;function jx(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(kx,`protocol error`);return}let i;try{i=nb(r.data)}catch(t){if(t instanceof tb)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close(kx,`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($y(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(Ox),Promise.resolve()}}}function Mx(){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(()=>jx(n))},async listen(){return Promise.reject(Error(Ax))}}}function Nx(e){let t=Mx(),n=Dx(e);return{connect:async e=>Tl(e)?n.connect(e):t.connect(e),listen:async(e,n)=>t.listen(e,n)}}var Px=[{urls:`stun:stun.cloudflare.com:3478`}],Fx=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),Ix=v_(K(),q()),Lx=b_([`ms`,`s`,`min`,`h`,`d`]);f_(`kind`,[J({kind:Y(`number`),value:q(),unit:Ix.optional()}),J({kind:Y(`text`),value:K()}),J({kind:Y(`boolean`),value:Qg()}),J({kind:Y(`instant`),value:K()}),J({kind:Y(`duration`),value:q(),unit:Lx}),J({kind:Y(`complex`),re:q(),im:q(),unit:Ix.optional()})]);function Rx(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function zx(e,t){let n=Rx(e),r=Rx(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function Bx(e,t){let n=Rx(e),r=Rx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return Rx(i)}function Vx(e,t){let n=Rx(e),r=Rx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return Rx(i)}J({code:b_([`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 Hx(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var Ux=X(()=>u_([K(),q(),Qg(),e_(),o_(Ux),v_(K(),Ux)])),Wx=b_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),Gx=b_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),Kx=b_([`in`,`notIn`]),qx=b_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),Jx=b_([`first`,`unique`]),Yx=J({kind:Y(`not`),get operand(){return sS}}),Xx=J({kind:Y(`and`),get left(){return sS},get right(){return sS}}),Zx=J({kind:Y(`or`),get left(){return sS},get right(){return sS}}),Qx=J({kind:Y(`allOf`),get operands(){return o_(sS)}}),$x=J({kind:Y(`anyOf`),get operands(){return o_(sS)}}),eS=J({kind:Y(`compare`),op:Wx,get left(){return SS},get right(){return SS}}),tS=J({kind:Y(`textCompare`),op:Gx,get left(){return SS},get right(){return SS}}),nS=J({kind:Y(`memberOf`),op:Kx,get operand(){return SS},get candidates(){return o_(SS)}}),rS=J({kind:Y(`exists`),get operand(){return SS}}),iS=J({kind:Y(`some`),collection:Ux,get item(){return sS},get filter(){return sS.optional()}}),aS=J({kind:Y(`every`),collection:Ux,get item(){return sS},get filter(){return sS.optional()}}),oS=J({kind:Y(`treeReference`),key:Ux}),sS=f_(`kind`,[Yx,Xx,Zx,Qx,$x,eS,tS,nS,rS,iS,aS,oS]),cS=J({kind:Y(`numberLiteral`),value:q(),unit:Ix.optional()}),lS=J({kind:Y(`textLiteral`),value:K()}),uS=J({kind:Y(`booleanLiteral`),value:Qg()}),dS=J({kind:Y(`instantLiteral`),value:K()}),fS=J({kind:Y(`durationLiteral`),value:q(),unit:Lx}),pS=u_([c_({kind:Y(`complexLiteral`),re:q(),im:q(),unit:Ix.optional()}),c_({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:Ix.optional()})]),mS=J({kind:Y(`reference`),key:Ux,unit:Ix.optional()}),hS=J({kind:Y(`arithmetic`),op:qx,get left(){return SS},get right(){return SS}}),gS=J({kind:Y(`negate`),get operand(){return SS}}),_S=J({kind:Y(`call`),fn:K(),get args(){return o_(SS)}}),vS=J({kind:Y(`lookup`),table:Ux,get keys(){return o_(SS)}}),yS=J({get when(){return sS},get then(){return SS}}),bS=J({kind:Y(`conditional`),hitPolicy:Jx.optional(),get cases(){return o_(yS)},get fallback(){return SS}}),xS=f_(`mode`,[J({mode:Y(`max`),get item(){return SS}}),J({mode:Y(`min`),get item(){return SS}}),J({mode:Y(`reduce`),get initial(){return SS},get combine(){return SS}})]),SS=u_([f_(`kind`,[cS,lS,uS,dS,fS,mS,hS,gS,_S,vS,bS,J({kind:Y(`fold`),collection:Ux,get filter(){return sS.optional()},combiner:xS}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:Ux}),oS]),pS]),CS={},wS=1e4;function TS(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 ES(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 DS(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function OS(e,t){return t>=e.from&&t<=e.to}function kS(e,t){let n=e.ranges.some(e=>OS(e,t));return e.negated?!n:n}var AS=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 jS(e){return e.charCodeAt(0)}function MS(e,t){return{from:jS(e),to:jS(t)}}function NS(e){let t=jS(e);return{from:t,to:t}}var PS=[MS(`0`,`9`)],FS=[MS(`A`,`Z`),MS(`a`,`z`),MS(`0`,`9`),NS(`_`)],IS=[NS(` `),NS(` `),NS(`
|
|
70
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function _h(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;_h(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 vh=new Set([`type`,`properties`,`required`,`additionalProperties`]),yh=[`oneOf`,`anyOf`];function bh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function xh(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!vh.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]??bh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Hl(n,r,e.length===1?e[0]:xh(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=bh(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 Sh(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of vh)if(t in e)return;let n=t.filter(e=>yh.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=xh(t);else{let e=n[0],i=yh.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=>xh([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,dh(e,r))}function Ch(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)):dh(i,s),dh(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())_h(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)??[])Sh(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)}dh(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,Hl(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:Eh(t,`input`,e.processors),output:Eh(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function wh(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 wh(r.element,n);if(r.type===`set`)return wh(r.valueType,n);if(r.type===`lazy`)return wh(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 wh(r.innerType,n);if(r.type===`intersection`)return wh(r.left,n)||wh(r.right,n);if(r.type===`record`||r.type===`map`)return wh(r.keyType,n)||wh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:wh(r.in,n)||wh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(wh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(wh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(wh(e,n))return!0;return!!(r.rest&&wh(r.rest,n))}return!1}var Th=(e,t={})=>n=>{let r=fh({...n,processors:t});return mh(e,r),gh(r,e),Ch(r,e)},Eh=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=fh({...i??{},target:a,io:t,processors:n});return mh(e,o),gh(o,e),Ch(o,e)},Dh={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Oh=(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=Dh[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}))])}},kh=(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):ph(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},Ah=(e,t,n,r)=>{n.type=`boolean`},jh=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},Mh=(e,t,n,r)=>{n.not={}},Nh=(e,t,n,r)=>{let i=e._zod.def,a=Nl(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},Ph=(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(ph(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(ph(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}},Fh=(e,t,n,r)=>{ph(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Ih=(e,t,n,r)=>{ph(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Lh=(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=mh(a.element,t,{...r,path:[...r.path,`items`]})};function Rh(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?Rh(t.out):t.type===`catch`?Rh(t.innerType):e._zod.optin}var zh=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&ph(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Hl(i.properties,e,mh(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`?Rh(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=mh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Bh=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>mh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Vh=(e,t,n,r)=>{let i=e._zod.def,a=mh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=mh(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)},Hh=(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)=>mh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?mh(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`?Rh(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 Uh(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=Uh(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=>Uh(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`)?Bd:zd).source),p):p}var Wh=new WeakMap;function Gh(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 Wh.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=Uh(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 Kh=(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=mh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Hl(i.patternProperties,t.source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=mh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Wh.get(t);n||(n=[],Wh.set(t,n),t.deferred.push(()=>Gh(t))),n.push(e)}i.additionalProperties=mh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&Rh(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))}},qh=(e,t,n,r)=>{let i=e._zod.def,a=mh(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`}]},Jh=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Yh=Symbol();function Xh(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(ph(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Yh):JSON.parse(o)}var Zh=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Xh(i.defaultValue,e,t,n,r);o!==Yh&&(n.default=o)},Qh=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Xh(i.defaultValue,e,t,n,r);o!==Yh&&(n._prefault=o)},$h=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{ph(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},eg=(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;mh(o,t,r);let s=t.seen.get(e);s.ref=o},tg=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},ng=(e,t,n,r)=>{let i=e._zod.def;mh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},rg=(e,t,n,r)=>{let i=e._zod.innerType;mh(i,t,r);let a=t.seen.get(e);a.ref=i},ig=new WeakSet([Object.prototype,Error.prototype]);function ag(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 og=W(`ZodError`,(e,t)=>{Ku.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);ig.has(n)||(ig.add(n),ag(n,`format`,e=>t=>Xu(e,t)),ag(n,`flatten`,e=>t=>Yu(e,t)),ag(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Fl,2)}),ag(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Fl,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),sg=Qu(og),cg=$u(og),lg=ed(og),ug=nd(og),dg=id(og),fg=ad(og),pg=od(og),mg=sd(og),hg=cd(og),gg=ld(og),_g=ud(og),vg=dd(og);function yg(){Lu.localeError||Ru(rm())}function bg(){Lu.memoizer||Ru({memoizer:em()})}var xg=W(`ZodType`,(e,t)=>(yg(),ff.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(Ul(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(W_(e,t))},superRefine(e,t){return this.check(G_(e,t))},overwrite(e){return this.check(th(e))},optional(){return T_(this)},exactOptional(){return D_(this)},nullable(){return k_(this)},nullish(){return T_(k_(this))},nonoptional(e){return F_(this,e)},array(){return o_(this)},or(e){return u_([this,e])},and(e){return m_(this,e)},transform(e){return z_(this,C_(e))},default(e){return j_(this,e)},prefault(e){return N_(this,e)},catch(e){return L_(this,e)},pipe(e){return z_(this,e)},readonly(){return V_(this)},describe(e){let t=this.clone();return sm.add(t,{description:e}),t},meta(...e){if(e.length===0)return sm.get(this);let t=this.clone();return sm.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 xu(this,`~standard`,{...mf(this),jsonSchema:{input:Eh(this,`input`),output:Eh(this,`output`)}})},set"~standard"(e){bu(this,`~standard`,e)},parse:function e(t,n){return sg(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await cg(this,t,n,{callee:e})},safeParse(e,t){return lg(this,e,t)},async safeParseAsync(e,t){return ug(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){bu(this,`spa`,e)},encode:function e(t,n){return dg(this,t,n,{callee:e})},decode:function e(t,n){return fg(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await pg(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await mg(this,t,n,{callee:e})},safeEncode(e,t){return hg(this,e,t)},safeDecode(e,t){return gg(this,e,t)},async safeEncodeAsync(e,t){return _g(this,e,t)},async safeDecodeAsync(e,t){return vg(this,e,t)},toJSONSchema(e){return Th(this,{})(e)},get description(){return sm.get(this)?.description},get _def(){return this._zod.def}}),Sg=W(`_ZodString`,(e,t)=>{hf.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Oh(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(Ym(...e))},includes(...e){return this.check(Qm(...e))},startsWith(...e){return this.check($m(...e))},endsWith(...e){return this.check(eh(...e))},min(...e){return this.check(qm(...e))},max(...e){return this.check(Km(...e))},length(...e){return this.check(Jm(...e))},nonempty(...e){return this.check(qm(1,...e))},lowercase(e){return this.check(Xm(e))},uppercase(e){return this.check(Zm(e))},trim(){return this.check(rh())},normalize(...e){return this.check(nh(...e))},toLowerCase(){return this.check(ih())},toUpperCase(){return this.check(ah())},slugify(){return this.check(oh())}}),Cg=W(`ZodString`,(e,t)=>{hf.init(e,t),Sg.init(e,t)},{email(e){return this.check(lm(kg,e))},url(e){return this.check(hm(Mg,e))},jwt(e){return this.check(Am(qg,e))},emoji(e){return this.check(gm(Ng,e))},guid(e){return this.check(um(Ag,e))},uuid(e){return this.check(dm(jg,e))},uuidv4(e){return this.check(fm(jg,e))},uuidv6(e){return this.check(pm(jg,e))},uuidv7(e){return this.check(mm(jg,e))},nanoid(e){return this.check(_m(Pg,e))},cuid(e){return this.check(vm(Fg,e))},cuid2(e){return this.check(ym(Ig,e))},ulid(e){return this.check(bm(Lg,e))},base64(e){return this.check(Dm(Wg,e))},base64url(e){return this.check(Om(Gg,e))},xid(e){return this.check(xm(Rg,e))},ksuid(e){return this.check(Sm(zg,e))},ipv4(e){return this.check(Cm(Bg,e))},ipv6(e){return this.check(wm(Vg,e))},cidrv4(e){return this.check(Tm(Hg,e))},cidrv6(e){return this.check(Em(Ug,e))},e164(e){return this.check(km(Kg,e))},datetime(e){return this.check(jm(Tg,e))},date(e){return this.check(Mm(Eg,e))},time(e){return this.check(Nm(Dg,e))},duration(e){return this.check(Pm(Og,e))}});function K(e){return cm(Cg,e)}var wg=W(`ZodStringFormat`,(e,t)=>{gf.init(e,t),Sg.init(e,t)}),Tg=W(`ZodISODateTime`,(e,t)=>{Nf.init(e,t),wg.init(e,t)}),Eg=W(`ZodISODate`,(e,t)=>{Pf.init(e,t),wg.init(e,t)}),Dg=W(`ZodISOTime`,(e,t)=>{Ff.init(e,t),wg.init(e,t)}),Og=W(`ZodISODuration`,(e,t)=>{If.init(e,t),wg.init(e,t)}),kg=W(`ZodEmail`,(e,t)=>{yf.init(e,t),wg.init(e,t)}),Ag=W(`ZodGUID`,(e,t)=>{_f.init(e,t),wg.init(e,t)}),jg=W(`ZodUUID`,(e,t)=>{vf.init(e,t),wg.init(e,t)}),Mg=W(`ZodURL`,(e,t)=>{Tf.init(e,t),wg.init(e,t)}),Ng=W(`ZodEmoji`,(e,t)=>{Ef.init(e,t),wg.init(e,t)}),Pg=W(`ZodNanoID`,(e,t)=>{Df.init(e,t),wg.init(e,t)}),Fg=W(`ZodCUID`,(e,t)=>{Of.init(e,t),wg.init(e,t)}),Ig=W(`ZodCUID2`,(e,t)=>{kf.init(e,t),wg.init(e,t)}),Lg=W(`ZodULID`,(e,t)=>{Af.init(e,t),wg.init(e,t)}),Rg=W(`ZodXID`,(e,t)=>{jf.init(e,t),wg.init(e,t)}),zg=W(`ZodKSUID`,(e,t)=>{Mf.init(e,t),wg.init(e,t)}),Bg=W(`ZodIPv4`,(e,t)=>{Lf.init(e,t),wg.init(e,t)}),Vg=W(`ZodIPv6`,(e,t)=>{Bf.init(e,t),wg.init(e,t)}),Hg=W(`ZodCIDRv4`,(e,t)=>{Vf.init(e,t),wg.init(e,t)}),Ug=W(`ZodCIDRv6`,(e,t)=>{Uf.init(e,t),wg.init(e,t)}),Wg=W(`ZodBase64`,(e,t)=>{Gf.init(e,t),wg.init(e,t)}),Gg=W(`ZodBase64URL`,(e,t)=>{qf.init(e,t),wg.init(e,t)}),Kg=W(`ZodE164`,(e,t)=>{Jf.init(e,t),wg.init(e,t)}),qg=W(`ZodJWT`,(e,t)=>{Xf.init(e,t),wg.init(e,t)}),Jg=W(`ZodNumber`,(e,t)=>{Zf.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kh(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(Um(e,t))},gte(e,t){return this.check(Wm(e,t))},min(e,t){return this.check(Wm(e,t))},lt(e,t){return this.check(Vm(e,t))},lte(e,t){return this.check(Hm(e,t))},max(e,t){return this.check(Hm(e,t))},int(e){return this.check(Xg(e))},safe(e){return this.check(Xg(e))},positive(e){return this.check(Um(0,e))},nonnegative(e){return this.check(Wm(0,e))},negative(e){return this.check(Vm(0,e))},nonpositive(e){return this.check(Hm(0,e))},multipleOf(e,t){return this.check(Gm(e,t))},step(e,t){return this.check(Gm(e,t))},finite(){return this}});function q(e){return Fm(Jg,e)}var Yg=W(`ZodNumberFormat`,(e,t)=>{Qf.init(e,t),Jg.init(e,t)});function Xg(e){return Im(Yg,e)}var Zg=W(`ZodBoolean`,(e,t)=>{$f.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ah(e,t,n,r)});function Qg(e){return Lm(Zg,e)}var $g=W(`ZodNull`,(e,t)=>{ep.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jh(e,t,n,r)});function e_(e){return Rm($g,e)}var t_=W(`ZodUnknown`,(e,t)=>{tp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function n_(){return zm(t_)}var r_=W(`ZodNever`,(e,t)=>{np.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mh(e,t,n,r)});function i_(e){return Bm(r_,e)}var a_=W(`ZodArray`,(e,t)=>{bg(),ip.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Lh(e,t,n,r),e.element=t.element},{min(e,t){return this.check(qm(e,t))},nonempty(e){return this.check(qm(1,e))},max(e,t){return this.check(Km(e,t))},length(e,t){return this.check(Jm(e,t))},unwrap(){return this.element}});function o_(e,t){return sh(a_,e,t)}var s_=W(`ZodObject`,(e,t)=>{bg(),dp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zh(e,t,n,r),Ou(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return b_(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:n_()})},loose(){return this.clone({...this._zod.def,catchall:n_()})},strict(){return this.clone({...this._zod.def,catchall:i_()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return ru(this,e)},safeExtend(e){return iu(this,e)},merge(e){return au(this,e)},pick(e){return tu(this,e)},omit(e){return nu(this,e)},partial(...e){return ou(w_,this,e[0])},exactPartial(...e){return ou(E_,this,e[0],`exactPartial`)},required(...e){return su(P_,this,e[0])}});function J(e,t){return new s_({type:`object`,shape:e??{},...U(t)})}function c_(e,t){return new s_({type:`object`,shape:e,catchall:i_(),...U(t)})}var l_=W(`ZodUnion`,(e,t)=>{pp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bh(e,t,n,r),e.options=t.options});function u_(e,t){return new l_({type:`union`,options:e,...U(t)})}var d_=W(`ZodDiscriminatedUnion`,(e,t)=>{l_.init(e,t),mp.init(e,t)});function f_(e,t,n){return new d_({type:`union`,options:t,discriminator:e,...U(n)})}var p_=W(`ZodIntersection`,(e,t)=>{hp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vh(e,t,n,r)});function m_(e,t){return new p_({type:`intersection`,left:e,right:t})}var h_=W(`ZodTuple`,(e,t)=>{bg(),vp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Hh(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 w_({type:`optional`,innerType:e}))})}});function g_(e,t,n){let r=t instanceof ff;return new h_({type:`tuple`,items:e,rest:r?t:null,...U(r?n:t)})}var __=W(`ZodRecord`,(e,t)=>{bg(),Sp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kh(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function v_(e,t,n){return!t||!t._zod?new __({type:`record`,keyType:K(),valueType:e,...U(t)}):new __({type:`record`,keyType:e,valueType:t,...U(n)})}var y_=W(`ZodEnum`,(e,t)=>{Cp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nh(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 y_({...t,checks:[],...U(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 y_({...t,checks:[],...U(r),entries:i})}});function b_(e,t){return new y_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...U(t)})}var x_=W(`ZodLiteral`,(e,t)=>{wp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ph(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 x_({type:`literal`,values:Array.isArray(e)?e:[e],...U(t)})}var S_=W(`ZodTransform`,(e,t)=>{bg(),Tp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ih(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Iu(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(vu(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(vu(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function C_(e){return new S_({type:`transform`,transform:e})}var w_=W(`ZodOptional`,(e,t)=>{Dp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ng(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function T_(e){return new w_({type:`optional`,innerType:e})}var E_=W(`ZodExactOptional`,(e,t)=>{Op.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ng(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function D_(e){return new E_({type:`optional`,innerType:e})}var O_=W(`ZodNullable`,(e,t)=>{kp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function k_(e){return new O_({type:`nullable`,innerType:e})}var A_=W(`ZodDefault`,(e,t)=>{Ap.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function j_(e,t){return new A_({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Jl(t)}})}var M_=W(`ZodPrefault`,(e,t)=>{Mp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Qh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function N_(e,t){return new M_({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Jl(t)}})}var P_=W(`ZodNonOptional`,(e,t)=>{Np.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Jh(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function F_(e,t){return new P_({type:`nonoptional`,innerType:e,...U(t)})}var I_=W(`ZodCatch`,(e,t)=>{Ip.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$h(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function L_(e,t){return new I_({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Au(t)})}var R_=W(`ZodPipe`,(e,t)=>{Lp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>eg(e,t,n,r),e.in=t.in,e.out=t.out});function z_(e,t){return new R_({type:`pipe`,in:e,out:t})}var B_=W(`ZodReadonly`,(e,t)=>{zp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>tg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function V_(e){return new B_({type:`readonly`,innerType:e})}var H_=W(`ZodLazy`,(e,t)=>{Vp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>rg(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function X(e){return new H_({type:`lazy`,getter:e})}var U_=W(`ZodCustom`,(e,t)=>{Hp.init(e,t),xg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fh(e,t,n,r)});function W_(e,t={}){return ch(U_,e,t)}function G_(e,t){return lh(e,t)}function Z(e,t={}){let n=new U_({type:`custom`,check:`custom`,fn:t=>t instanceof e,abort:!0,...U(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 K_=X(()=>Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`})),q_=X(()=>J({verb:Y(`bulk.open`),"transfer-id":X(()=>K_),"total-size":q().int().nonnegative().optional(),"content-type":K().optional()}).catchall(n_())),J_=X(()=>J({verb:Y(`bulk.resume`),"transfer-id":X(()=>K_),"ack-seq":q().int().nonnegative()}).catchall(n_())),Y_=X(()=>J({verb:Y(`bulk.cancel`),"transfer-id":X(()=>K_),reason:K().optional()}).catchall(n_())),X_=X(()=>u_([u_([X(()=>q_),X(()=>J_),X(()=>Y_)]),u_([X(()=>rv),X(()=>iv),X(()=>av),X(()=>ov),X(()=>sv),X(()=>cv),X(()=>lv),X(()=>uv)]),J({}).catchall(n_()),X(()=>Ev),X(()=>Ov),X(()=>jv),X(()=>Mv),u_([X(()=>Iv),X(()=>Lv),X(()=>Rv),X(()=>zv)]),u_([X(()=>Vv),X(()=>Hv)]),X(()=>Uv),u_([X(()=>ry),X(()=>iy),X(()=>ay)]),u_([X(()=>oy),X(()=>sy),X(()=>cy)]),X(()=>Ny),u_([X(()=>Iy),X(()=>Ly),X(()=>Ry),X(()=>Py)])])),Z_=X(()=>J({type:Y(`bulk-data`),"transfer-id":X(()=>K_),seq:q().int().nonnegative(),bytes:Z(Uint8Array)})),Q_=X(()=>J({type:Y(`bulk-ack`),"transfer-id":X(()=>K_),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),$_=X(()=>J({type:Y(`bulk-end`),"transfer-id":X(()=>K_),digest:Z(Uint8Array)})),ev=X(()=>J({type:Y(`data-have`),peer:X(()=>bv),"head-seq":q().int().nonnegative()})),tv=X(()=>J({type:Y(`data-request`),peer:X(()=>bv),"from-seq":q().int().nonnegative()})),nv=X(()=>J({type:Y(`data-entries`),peer:X(()=>bv),"from-seq":q().int().nonnegative(),entries:o_(Z(Uint8Array))}));X(()=>J({handle:K(),"device-id":X(()=>bv),"identity-key":X(()=>yv),candidates:o_(X(()=>wy)).optional(),mailboxes:o_(X(()=>bv)).optional(),issued:q().int().nonnegative(),expires:q().int().nonnegative()})),X(()=>X(()=>hy));var rv=X(()=>J({verb:Y(`pty.spawn`),shell:K().optional(),argv:o_(K()),cwd:K().optional(),env:J({}).catchall(K()),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),iv=X(()=>J({verb:Y(`pty.write`),session:X(()=>Xv),bytes:Z(Uint8Array)})),av=X(()=>J({verb:Y(`pty.resize`),session:X(()=>Xv),cols:q().int().nonnegative(),rows:q().int().nonnegative()})),ov=X(()=>J({verb:Y(`pty.kill`),session:X(()=>Xv),signal:q().int()})),sv=X(()=>J({verb:Y(`proc.spawn`),argv:o_(K()),cwd:K().optional(),env:J({}).catchall(K())})),cv=X(()=>J({verb:Y(`proc.signal`),session:X(()=>Xv),signal:q().int()})),lv=X(()=>J({verb:Y(`proc.kill`),session:X(()=>Xv)})),uv=X(()=>J({verb:Y(`exec.list`)}));X(()=>J({session:X(()=>Xv),kind:u_([Y(`pty`),Y(`proc`)]),argv:o_(K()).optional(),cwd:K().optional()}));var dv=X(()=>u_([X(()=>vv),X(()=>vy),X(()=>yy),X(()=>by),X(()=>Sy),X(()=>Ty),X(()=>Ey),X(()=>Dy),X(()=>Oy),X(()=>ky),X(()=>Ay),X(()=>jy),X(()=>My),X(()=>Sv),X(()=>Tv),X(()=>Av),X(()=>Zv),X(()=>Qv),X(()=>$v),X(()=>ev),X(()=>tv),X(()=>nv),X(()=>Z_),X(()=>Q_),X(()=>$_),X(()=>Jv),X(()=>Yv)])),fv=X(()=>X(()=>dv)),pv=X(()=>q().int().nonnegative()),mv=X(()=>u_([X(()=>hv),X(()=>gv),X(()=>_v)])),hv=X(()=>u_([Y(`core/management`),Y(`core/exec`),Y(`core/data`),Y(`core/federation`),Y(`core/webrtc`),Y(`core/room`),Y(`core/bulk`),Y(`core/version`)])),gv=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_.-]+`))),_v=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+`))),vv=X(()=>J({type:Y(`handshake`),version:X(()=>pv),domains:o_(X(()=>mv)),params:J({}).catchall(n_()).optional()})),yv=X(()=>J({alg:q().int(),"public-key":Z(Uint8Array)})),bv=X(()=>Z(Uint8Array).refine(e=>e.length===32,{message:`expected exactly 32 bytes`}));X(()=>J({"device-id":X(()=>bv),"identity-key":X(()=>yv),certificate:Z(Uint8Array).optional()}));var xv=X(()=>J({verb:X(()=>ly),params:X(()=>X_)})),Sv=X(()=>J({type:Y(`manage-request`),"request-id":q().int().nonnegative(),command:X(()=>xv),scope:X(()=>py),token:X(()=>gy).optional()})),Cv=X(()=>J({result:Y(`ok`)}).catchall(n_())),wv=X(()=>J({result:Y(`error`),code:K(),message:K().optional()})),Tv=X(()=>J({type:Y(`manage-response`),"request-id":q().int().nonnegative(),outcome:u_([X(()=>Cv),X(()=>wv)])})),Ev=X(()=>J({verb:Y(`capability.request`),capability:K(),"valid-until":q().int().nonnegative().optional()}).catchall(n_())),Dv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>gy)}).catchall(n_())),Ov=X(()=>J({verb:Y(`capability.grant`),"granted-token":X(()=>gy)}).catchall(n_()));X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>bv),"issuer-key":X(()=>yv),"revoked-at":q().int().nonnegative(),authorization:Z(Uint8Array).optional()}));var kv=X(()=>X(()=>hy)),Av=X(()=>J({type:Y(`revocation-announce`),entries:o_(X(()=>kv))})),jv=X(()=>J({verb:Y(`path.trace`)}));X(()=>J({result:Y(`ok`),relayed:Qg(),"hub-address":K().optional()}).catchall(n_())),X(()=>J({direct:o_(X(()=>bv)),relayed:o_(J({device:X(()=>bv),via:X(()=>bv).optional()}))}));var Mv=X(()=>J({verb:Y(`topology.get`)})),Nv=X(()=>u_([X(()=>Pv),X(()=>Fv)]));X(()=>K().regex(RegExp(`[0-9a-f]{64}`)));var Pv=X(()=>K().regex(RegExp(`[0-9a-f]{64}/[A-Za-z0-9_-]+`))),Fv=X(()=>K().regex(RegExp(`[0-9a-f]{64}\\+[0-9a-f]{64}`))),Iv=X(()=>J({verb:Y(`room.send`),"message-id":Z(Uint8Array),"sent-at":q().int().nonnegative(),text:K(),"content-type":K().optional(),refs:o_(X(()=>Bv)).optional()}).catchall(n_())),Lv=X(()=>J({verb:Y(`room.read`),messages:o_(Z(Uint8Array)),at:q().int().nonnegative()}).catchall(n_())),Rv=X(()=>J({verb:Y(`room.leave`)}).catchall(n_())),zv=X(()=>J({verb:Y(`room.members`)}).catchall(n_())),Bv=X(()=>J({id:Z(Uint8Array),relation:K()})),Vv=X(()=>J({verb:Y(`room.join`)}).catchall(n_())),Hv=X(()=>J({verb:Y(`room.invite`),invitee:X(()=>bv),token:X(()=>gy)}).catchall(n_())),Uv=X(()=>J({verb:Y(`room.rekey`),"key-epoch":q().int().nonnegative(),"wrapped-key":u_([Z(Uint8Array),o_(Z(Uint8Array))])}).catchall(n_())),Wv=X(()=>J({device:X(()=>bv)}).catchall(n_())),Gv=X(()=>J({result:Y(`ok`),"granted-token":X(()=>gy),members:o_(X(()=>Wv))}).catchall(n_()));X(()=>J({result:Y(`ok`),members:o_(X(()=>Wv))}).catchall(n_()));var Kv=X(()=>X(()=>hy)),qv=X(()=>J({room:X(()=>Nv),poster:X(()=>bv),"poster-key":X(()=>yv),token:X(()=>gy),"notice-id":Z(Uint8Array),"posted-at":q().int().nonnegative(),"content-type":K(),content:Z(Uint8Array),refs:o_(X(()=>Bv)).optional(),"valid-until":q().int().nonnegative().optional(),"key-epoch":q().int().nonnegative().optional()}).catchall(n_())),Jv=X(()=>J({type:Y(`secure-hello`),"ephemeral-key":Z(Uint8Array).refine(e=>e.length===65,{message:`expected exactly 65 bytes`}),nonce:Z(Uint8Array).refine(e=>e.length===16,{message:`expected exactly 16 bytes`}),"identity-key":X(()=>yv),"to-device":X(()=>bv),signature:Z(Uint8Array)})),Yv=X(()=>J({type:Y(`secure-data`),counter:q().int().nonnegative(),ciphertext:Z(Uint8Array)})),Xv=X(()=>q().int().nonnegative()),Zv=X(()=>J({type:Y(`stream-data`),session:X(()=>Xv),seq:q().int().nonnegative(),channel:K(),bytes:Z(Uint8Array)})),Qv=X(()=>J({type:Y(`stream-ack`),session:X(()=>Xv),"ack-seq":q().int().nonnegative(),window:q().int().nonnegative()})),$v=X(()=>J({type:Y(`stream-end`),session:X(()=>Xv),"exit-code":q().int().optional(),"exit-signal":q().int().optional()})),ey=X(()=>q().int().nonnegative()),ty=X(()=>J({kind:u_([Y(`capability-token`),Y(`revocation-entry`),Y(`handle-record`),Y(`room-notice`),K()]),protected:Z(Uint8Array),payload:Z(Uint8Array)})),ny=X(()=>J({participant:X(()=>bv),hiding:Z(Uint8Array),binding:Z(Uint8Array)})),ry=X(()=>J({verb:Y(`threshold.commit`),"session-id":X(()=>ey),group:X(()=>bv),subject:X(()=>ty),deadline:q().int().nonnegative()})),iy=X(()=>J({verb:Y(`threshold.sign`),"session-id":X(()=>ey),commitments:o_(X(()=>ny))}));X(()=>J({"session-id":X(()=>ey),group:X(()=>bv),share:Z(Uint8Array),issuer:X(()=>bv),"issuer-key":X(()=>yv)})),X(()=>X(()=>hy));var ay=X(()=>J({verb:Y(`threshold.abort`),"session-id":X(()=>ey),reason:K().optional()})),oy=X(()=>J({verb:Y(`threshold.keygen-round1`),"session-id":X(()=>ey),threshold:q().int().nonnegative(),participants:o_(X(()=>bv)),commitment:o_(Z(Uint8Array)),"proof-of-knowledge":Z(Uint8Array).optional(),"existing-group-key":Z(Uint8Array).optional()})),sy=X(()=>J({verb:Y(`threshold.keygen-round2`),"session-id":X(()=>ey),share:Z(Uint8Array)})),cy=X(()=>J({verb:Y(`threshold.keygen-confirm`),"session-id":X(()=>ey),"transcript-digest":Z(Uint8Array),"group-key":Z(Uint8Array)})),ly=X(()=>u_([X(()=>uy),X(()=>dy),X(()=>fy)])),uy=X(()=>K().regex(RegExp(`[a-z][a-z0-9-]*:[a-z][a-z0-9-]*`))),dy=X(()=>K().regex(RegExp(`[a-z0-9.-]+/[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),fy=X(()=>K().regex(RegExp(`x-[A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+`))),py=X(()=>J({kind:K(),path:K().optional()}));X(()=>Y(1)),X(()=>Y(4)),X(()=>u_([q().int(),K()]));var my=X(()=>J({1:q().int().optional(),4:Z(Uint8Array).optional()}).catchall(n_())),hy=X(()=>g_([Z(Uint8Array),X(()=>my),u_([Z(Uint8Array),e_()]),Z(Uint8Array)])),gy=X(()=>X(()=>hy)),_y=X(()=>J({"token-id":Z(Uint8Array),issuer:X(()=>bv),"issuer-key":X(()=>yv),bearer:X(()=>bv),capability:X(()=>ly),scope:X(()=>py),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(n_())),vy=X(()=>J({type:Y(`ping`)})),yy=X(()=>J({type:Y(`pong`)})),by=X(()=>J({type:Y(`close`),reason:K().optional()})),xy=X(()=>J({device:X(()=>bv),addresses:o_(K()),"snapshot-seconds":q().int(),"identity-key":X(()=>yv),signature:Z(Uint8Array)}).catchall(n_())),Sy=X(()=>J({type:Y(`gossip`),peers:o_(X(()=>xy))})),Cy=X(()=>u_([Y(`host`),Y(`server-reflexive`),Y(`relayed`)])),wy=X(()=>J({address:K(),kind:X(()=>Cy),priority:q().int().nonnegative()})),Ty=X(()=>J({type:Y(`candidates`),candidates:o_(X(()=>wy))})),Ey=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()})),Oy=X(()=>J({type:Y(`relay-offer`),addresses:o_(K())})),ky=X(()=>J({type:Y(`relay-connect`),"target-device":X(()=>bv)})),Ay=X(()=>J({type:Y(`relay-data`),payload:Z(Uint8Array),"to-device":X(()=>bv).optional(),"from-device":X(()=>bv).optional()})),jy=X(()=>J({type:Y(`relay-inbound`),"source-device":X(()=>bv)})),My=X(()=>J({type:Y(`coordinator`),term:q().int().nonnegative(),coordinator:X(()=>bv),"capacity-hint":q().int().nonnegative().optional()})),Ny=X(()=>J({verb:Y(`version.get`)})),Py=X(()=>J({verb:Y(`webrtc.sfu-track-map`),"negotiation-id":q().int().nonnegative(),tracks:o_(X(()=>Fy))})),Fy=X(()=>J({mid:K(),member:X(()=>bv),kind:u_([Y(`audio`),Y(`video`)])})),Iy=X(()=>J({verb:Y(`webrtc.offer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Ly=X(()=>J({verb:Y(`webrtc.answer`),"negotiation-id":q().int().nonnegative(),sdp:K()})),Ry=X(()=>J({verb:Y(`webrtc.ice-candidate`),"negotiation-id":q().int().nonnegative(),candidate:X(()=>zy).optional()})),zy=X(()=>J({candidate:K(),"sdp-mid":K().optional(),"sdp-m-line-index":q().int().nonnegative().optional(),"username-fragment":K().optional()})),By=16,Vy=2;function Hy(e){let t=``;for(let n of e)t+=n.toString(By).padStart(Vy,`0`);return t}function Uy(e){return Hy(e)}var Wy=`pinned-certificates/`;function Gy(e){return{recall:async t=>{let n=await e.get(Wy+t);return n===void 0?[]:kl(n)},remember:async(t,n)=>{let r=Ol(n.map(e=>Hy(e)));await e.set(Wy+t,new Uint8Array(r))}}}var Ky=String(2**53-1).length,qy=`message`;function Jy(e,t){return`${qy}/${e}/${String(t.sentAt).padStart(Ky,`0`)}-${Hy(t.messageId)}`}function Yy(e){let t=e.slice(`${qy}/`.length);return t.slice(0,t.lastIndexOf(`/`))}function Xy(e){return e===`sent`||e===`received`}function Zy(e){return typeof e!=`object`||!e||!(`direction`in e)||!(`text`in e)||!(`messageId`in e)||!(`sentAt`in e)?!1:Xy(e.direction)&&typeof e.text==`string`&&e.messageId instanceof Uint8Array&&typeof e.sentAt==`number`}function Qy(e){return{async append(t,n){await e.set(Jy(t,n),new Uint8Array(hc(n,Qs)))},async roomPaths(){let t=await e.keys(`${qy}/`);return[...new Set(t.map(Yy))]},async list(t){let n=(await e.keys(`${qy}/${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(!Zy(i))throw Error(`stored message at ${t} is malformed`);r.push(i)}return r}}}function $y(e){return new Uint8Array(hc(e,Qs))}function eb(e,t){return{type:`relay-data`,payload:$y(e),...t===void 0?{}:{"to-device":t}}}var tb=class extends Error{constructor(e){super(e),this.name=`SchemaInvalidFrameError`}};function nb(e){let t=rl(new Uint8Array(e),il),n=fv.safeParse(t);if(!n.success)throw new tb(n.error.message);return n.data}function rb(e){let t;try{t=rl(e,il)}catch{return null}let n=fv.safeParse(t);return n.success?n.data:null}function ib(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 ab(e){return e.split(`/`).some(e=>e===`.`||e===`..`)}function ob(e,t){return ab(e)||ab(t)?!1:e===t?!0:e.startsWith(t)?t.endsWith(`/`)?!0:e.charAt(t.length)===`/`:!1}function sb(e,t){return e.kind===t.kind?e.path===void 0||t.path!==void 0&&ob(t.path,e.path):!1}var cb=`signature`,lb=`identity-key`,ub=new TextEncoder().encode(`wire-mesh/peer-advert/v1\0`);function db(e){let t={};for(let[n,r]of Object.entries(e))n!==`signature`&&(t[n]=r);let n=hc(t,Qs),r=new Uint8Array(ub.length+n.length);return r.set(ub,0),r.set(n,ub.length),r}async function fb(e,t){let n=await e.sign(db(t));return{...t,[cb]:n}}async function pb(e,t){let n=t[lb];try{return ib(await e.deriveDeviceId(n[`public-key`]),t.device)?await e.verify(n,db(t),t[cb]):!1}catch{return!1}}var mb={name:`wire-mesh-core`,version:`3.5.0`,dependencies:{cbor2:`2.3.0`,"cddl.js":`1.0.1`,trilean:`1.6.2`,zod:`4.5.4`},devDependencies:{"@arethetypeswrong/cli":`0.18.5`,"@exadev/eslint-config":`2.18.0`,"@stryker-mutator/api":`10.0.0`,"@stryker-mutator/core":`10.0.0`,"@stryker-mutator/typescript-checker":`10.0.0`,"@types/node":`26.4.1`,eslint:`10.10.0`,"eslint-config-prettier":`10.1.8`,"eslint-plugin-prettier":`5.5.6`,globals:`17.12.0`,jiti:`2.7.0`,prettier:`3.9.6`,tsdown:`0.23.0`,turbo:`2.10.12`,typescript:`6.0.3`,vitest:`5.0.0`},exports:{"./adapters/byte-stream-connection":{import:`./dist/adapters/byte-stream-connection.mjs`,require:`./dist/adapters/byte-stream-connection.cjs`},"./adapters/frame-codec":{import:`./dist/adapters/frame-codec.mjs`,require:`./dist/adapters/frame-codec.cjs`},"./adapters/memory-storage":{import:`./dist/adapters/memory-storage.mjs`,require:`./dist/adapters/memory-storage.cjs`},"./adapters/node-fs-storage":{import:`./dist/adapters/node-fs-storage.mjs`,require:`./dist/adapters/node-fs-storage.cjs`},"./adapters/node-identity":{import:`./dist/adapters/node-identity.mjs`,require:`./dist/adapters/node-identity.cjs`},"./adapters/system-clock":{import:`./dist/adapters/system-clock.mjs`,require:`./dist/adapters/system-clock.cjs`},"./adapters/tcp-transport":{import:`./dist/adapters/tcp-transport.mjs`,require:`./dist/adapters/tcp-transport.cjs`},"./adapters/threshold-identity":{import:`./dist/adapters/threshold-identity.mjs`,require:`./dist/adapters/threshold-identity.cjs`},"./adapters/threshold-wasm":{import:`./dist/adapters/threshold-wasm.mjs`,require:`./dist/adapters/threshold-wasm.cjs`},"./adapters/tls-transport":{import:`./dist/adapters/tls-transport.mjs`,require:`./dist/adapters/tls-transport.cjs`},"./domain/advert-extension-policy":{import:`./dist/domain/advert-extension-policy.mjs`,require:`./dist/domain/advert-extension-policy.cjs`},"./domain/async-queue":{import:`./dist/domain/async-queue.mjs`,require:`./dist/domain/async-queue.cjs`},"./domain/bulk":{import:`./dist/domain/bulk.mjs`,require:`./dist/domain/bulk.cjs`},"./domain/capability-grant":{import:`./dist/domain/capability-grant.mjs`,require:`./dist/domain/capability-grant.cjs`},"./domain/capability-request":{import:`./dist/domain/capability-request.mjs`,require:`./dist/domain/capability-request.cjs`},"./domain/coordinator-election":{import:`./dist/domain/coordinator-election.mjs`,require:`./dist/domain/coordinator-election.cjs`},"./domain/data-sync":{import:`./dist/domain/data-sync.mjs`,require:`./dist/domain/data-sync.cjs`},"./domain/device-id":{import:`./dist/domain/device-id.mjs`,require:`./dist/domain/device-id.cjs`},"./domain/direct-manage-request":{import:`./dist/domain/direct-manage-request.mjs`,require:`./dist/domain/direct-manage-request.cjs`},"./domain/erasure-coding":{import:`./dist/domain/erasure-coding.mjs`,require:`./dist/domain/erasure-coding.cjs`},"./domain/gossip-expansion":{import:`./dist/domain/gossip-expansion.mjs`,require:`./dist/domain/gossip-expansion.cjs`},"./domain/gossip-extensions":{import:`./dist/domain/gossip-extensions.mjs`,require:`./dist/domain/gossip-extensions.cjs`},"./domain/grant-candidates":{import:`./dist/domain/grant-candidates.mjs`,require:`./dist/domain/grant-candidates.cjs`},"./domain/group-key":{import:`./dist/domain/group-key.mjs`,require:`./dist/domain/group-key.cjs`},"./domain/handshake":{import:`./dist/domain/handshake.mjs`,require:`./dist/domain/handshake.cjs`},"./domain/hub-mailbox":{import:`./dist/domain/hub-mailbox.mjs`,require:`./dist/domain/hub-mailbox.cjs`},"./domain/mesh-session":{import:`./dist/domain/mesh-session.mjs`,require:`./dist/domain/mesh-session.cjs`},"./domain/notice-board":{import:`./dist/domain/notice-board.mjs`,require:`./dist/domain/notice-board.cjs`},"./domain/path-trace":{import:`./dist/domain/path-trace.mjs`,require:`./dist/domain/path-trace.cjs`},"./domain/peer-advert":{import:`./dist/domain/peer-advert.mjs`,require:`./dist/domain/peer-advert.cjs`},"./domain/ping-round-trips":{import:`./dist/domain/ping-round-trips.mjs`,require:`./dist/domain/ping-round-trips.cjs`},"./domain/pinned-address":{import:`./dist/domain/pinned-address.mjs`,require:`./dist/domain/pinned-address.cjs`},"./domain/relay-advert":{import:`./dist/domain/relay-advert.mjs`,require:`./dist/domain/relay-advert.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,hb=`wire-mesh/version`,gb=`version.get`;function _b(e){return`verb`in e&&e.verb===gb}function vb(){return{result:`ok`,version:mb}}var yb=new Set([`device`,`addresses`,`snapshot-seconds`,lb,cb]),bb=`topology/peers`,xb=/^[a-z][a-z0-9-]*\/[a-z][a-z0-9-]*$/;function Sb(e){for(let t of Object.keys(e)){if(yb.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(!xb.test(t))throw Error(`sendGossipUpdate extension key "${t}" must be domain-qualified as "<domain>/<field>" (e.g. "presence/status")`)}}function Cb(){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})})}}}}}var wb=[`core/federation`];function Tb(e,t){let n=Math.min(e.version,t.version),r=e.domains.filter(e=>!wb.includes(e)&&t.domains.includes(e));return{ok:n>=1&&r.length>0,version:n,sharedDomains:r}}function Eb(){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 Db(e){return e.authenticatedPeer===void 0?e.isAccepted?e.firstAdvertisedPeer??void 0:void 0:e.authenticatedPeer}function Ob(e){let t=Db(e);return{direct:t===void 0?[]:[t],relayed:e.relayedDevices.map(e=>({device:e,...t===void 0?{}:{via:t}}))}}function kb(e){let t=null;return{recordAdvert:e=>{t??=e},compute:()=>{let n=e.getAuthenticatedPeer();return Ob({...n===void 0?{}:{authenticatedPeer:n},firstAdvertisedPeer:t,isAccepted:e.isAccepted,relayedDevices:e.getRelayedDevices()})}}}function Ab(){let e=new Map;return{has:t=>e.has(Uy(t)),add:t=>{e.set(Uy(t),t)},remove:t=>{e.delete(Uy(t))},clear:()=>{e.clear()},list:()=>[...e.values()]}}var jb=16,Mb=256,Nb=256,Pb=12,Fb=4,Ib=8,Lb=new TextEncoder,Rb=Lb.encode(`wire-mesh/secure-hello/v1\0`),zb=Lb.encode(`wire-mesh/secure-channel/v1\0`),Bb=Lb.encode(`wire-mesh/secure-data/v1\0`),Vb=Lb.encode(`lo-to-hi`),Hb=Lb.encode(`hi-to-lo`),Ub={name:`ECDH`,namedCurve:`P-256`};function Wb(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function Gb(e,t){for(let n=0;n<Math.min(e.length,t.length);n+=1){let r=(e[n]??0)-(t[n]??0);if(r!==0)return r}return e.length-t.length}function Kb(e){let t=new Uint8Array(Ib);return new DataView(t.buffer).setBigUint64(0,BigInt(e),!1),t}function qb(e,t,n,r){return Wb(Rb,e,t,n,r)}async function Jb(e,t){let n=await crypto.subtle.generateKey(Ub,!1,[`deriveBits`]),r=new Uint8Array(await crypto.subtle.exportKey(`raw`,n.publicKey)),i=crypto.getRandomValues(new Uint8Array(jb)),a=await e.sign(qb(r,i,e.deviceId,t));return{peer:t,privateKey:n.privateKey,hello:{type:`secure-hello`,"ephemeral-key":r,nonce:i,"identity-key":e.identityKey,"to-device":t,signature:a}}}async function Yb(e,t){let n=t[`identity-key`];try{let r=await e.deriveDeviceId(n[`public-key`]);return ib(t[`to-device`],e.deviceId)?await e.verify(n,qb(t[`ephemeral-key`],t.nonce,r,e.deviceId),t.signature)?{ok:!0,peer:{deviceId:r,identityKey:n}}:{ok:!1,reason:`bad_signature`}:{ok:!1,reason:`wrong_recipient`}}catch{return{ok:!1,reason:`identity_mismatch`}}}function Xb(e){let t=new Uint8Array(Pb);return t.set(Kb(e),Fb),t}function Zb(e,t,n){return Wb(Bb,e,t,Kb(n))}async function Qb(e,t,n,r,i){let a=await crypto.subtle.importKey(`raw`,Uint8Array.from(e),`HKDF`,!1,[`deriveKey`]);return crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:Uint8Array.from(t),info:Wb(zb,n,r,i)},a,{name:`AES-GCM`,length:Mb},!1,[`encrypt`,`decrypt`])}async function $b(e,t,n,r){let i;try{let e=await crypto.subtle.importKey(`raw`,Uint8Array.from(n[`ephemeral-key`]),Ub,!1,[]);i=new Uint8Array(await crypto.subtle.deriveBits({name:`ECDH`,public:e},t.privateKey,Nb))}catch{return}let a=Gb(e.deviceId,r.deviceId)<0,o=a?e.deviceId:r.deviceId,s=a?r.deviceId:e.deviceId,c=Wb(a?t.hello.nonce:n.nonce,a?n.nonce:t.hello.nonce),l=await Qb(i,c,o,s,Vb),u=await Qb(i,c,o,s,Hb),d=a?l:u,f=a?u:l,p=0,m=-1,h=Promise.resolve(),g=Promise.resolve();async function _(t,n){return{type:`secure-data`,counter:n,ciphertext:new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:Xb(n),additionalData:Zb(e.deviceId,r.deviceId,n)},d,$y(t)))}}async function v(t){if(t.counter<=m)return;let n;try{n=new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:Xb(t.counter),additionalData:Zb(r.deviceId,e.deviceId,t.counter)},f,Uint8Array.from(t.ciphertext)))}catch{return}return m=t.counter,rb(n)??void 0}return{peer:r,seal:async e=>{let t=p;p+=1;let n=h.then(async()=>_(e,t));return h=n.catch(()=>void 0),n},open:async e=>{let t=g.then(async()=>v(e));return g=t.catch(()=>void 0),t}}}function ex(e,t){let n=new Map;function r(r){let i=Uy(r),a=Promise.withResolvers(),o=Jb(e,r),s={status:`awaiting`,pending:o,settle:a};return n.set(i,s),o.then(async({hello:e})=>t(r,e)).catch(e=>{a.reject(e instanceof Error?e:Error(String(e))),n.get(i)===s&&n.delete(i)}),s}return{ensure:async e=>{let t=n.get(Uy(e));return t?.status===`established`?t.channel:(t??r(e)).settle.promise},applyHello:async t=>{let i=await Yb(e,t);if(!i.ok)return;let a=Uy(i.peer.deviceId),o=n.get(a),s=o?.status===`awaiting`?o:r(i.peer.deviceId),c=await $b(e,await s.pending,t,i.peer);if(c===void 0){s.settle.reject(Error(`the peer sent an unusable ephemeral key`)),n.get(a)===s&&n.delete(a);return}n.set(a,{status:`established`,channel:c}),s.settle.resolve(c)},open:async(e,t)=>{if(t===void 0)return;let r=n.get(Uy(t));if(r?.status!==`established`)return;let i=await r.channel.open(e);return i===void 0?void 0:{frame:i,from:r.channel.peer.deviceId}},reset:e=>{for(let t of n.values())t.status===`awaiting`&&t.settle.reject(Error(e));n.clear()},forget:e=>{let t=Uy(e),r=n.get(t);r?.status===`awaiting`&&r.settle.reject(Error(`the relay pairing was lost`)),n.delete(t)}}}var tx=1e3,nx=3e3;function rx(e){return{type:`handshake`,version:1,domains:[...e]}}function ix(e,t,n,r,i,a=[],o,s){let c=null,l={status:`idle`},u={status:`pending`},d=new Map,f=[],p=!1,m=Cb(),h=null,g=null,_=0,v=null,y=0,b=Ab(),x=kb({getAuthenticatedPeer:()=>c?.peerDeviceId,isAccepted:r===null,getRelayedDevices:()=>b.list()}),S=new Map,C=ex(e,async(e,t)=>{if(c===null)throw Error(`not connected`);f.push({direction:`sent`,frame:t}),await c.send(eb(t,e)),D()}),w=Cb(),T=Cb(),ee=Cb(),te=Eb();function E(){return{state:l,directory:[...d.values()],frameLog:[...f]}}function D(){m.push(E())}function ne(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 re(){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(e);return}if(n===void 0)throw Error(`a relayed frame needs the device it is for`);let r=await(await C.ensure(n)).seal(e);await c.send(eb(r,n))}function ie(e,t){let n=e[`request-id`],r=S.get(n);if(r===void 0)return;let i=r.expectedFrom;(i===void 0?t===void 0:t!==void 0&&Uy(t)===Uy(i))&&(S.delete(n),r.resolve(e.outcome))}function ae(e,t){let n=e[`request-id`],r=t?.fromDevice,i=t?.toDevice,a={requestId:n,command:e.command,scope:e.scope,...e.token===void 0?{}:{token:e.token},...r===void 0?{}:{fromDevice:r},...i===void 0?{}:{toDevice:i},respond:async e=>{let i={type:`manage-response`,"request-id":n,outcome:e};f.push({direction:`sent`,frame:i}),await k(i,t!==void 0,r),D()}};if(_b(e.command.params)){a.respond(vb());return}w.push(a)}async function A(n){if(n.type===`relay-data`){let e=rb(n.payload);if(e?.type===`secure-hello`){f.push({direction:`received`,frame:e}),await C.applyHello(e);return}if(e?.type===`secure-data`){let t=await C.open(e,n[`from-device`]);t?.frame.type===`manage-response`?(f.push({direction:`received`,frame:t.frame}),ie(t.frame,t.from)):t?.frame.type===`manage-request`&&(f.push({direction:`received`,frame:t.frame}),ae(t.frame,{fromDevice:t.from,...n[`to-device`]===void 0?{}:{toDevice:n[`to-device`]}}));return}f.push({direction:`received`,frame:n});return}if(f.push({direction:`received`,frame:n}),n.type===`handshake`)se(n);else if(n.type===`gossip`)for(let t of n.peers)await pb(e,t)&&(d.set(Uy(t.device),{device:t.device,advert:t}),x.recordAdvert(t.device),i?.(t));else if(n.type===`relay-inbound`)b.add(n[`source-device`]);else if(n.type===`manage-response`)ie(n);else if(n.type===`manage-request`)ae(n);else if(n.type===`pong`)te.resolveOldest(t.now());else if(n.type===`revocation-announce`)for(let e of n.entries)T.push(e);else n.type===`coordinator`&&ee.push(n)}async function j(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),D()}let oe=rx([]);function se(e){if(u.status!==`pending`)return;h!==null&&(clearTimeout(h),h=null);let t=Tb(oe,e);u=t.ok?{status:`negotiated`,version:t.version,sharedDomains:t.sharedDomains}:{status:`rejected`,reason:`no shared domains or version`},l.status===`connected`&&(l={...l,handshake:u})}function ce(e,t){return e.redialAddress?.()??t}function le(e,t,r){if(!p){if(ne(`disconnected before a response arrived`),te.rejectAll(`disconnected before a pong arrived`),n!==null&&_<n.maxAttempts){_+=1;let i=_;l={status:`reconnecting`,address:t,attempt:i,reason:e},D(),g=setTimeout(()=>{g=null,pe(t,r).catch(e=>{le(e instanceof Error?e.message:String(e),t,r)})},n.delayMs(i));return}l={status:`closed`,address:t,reason:e},D()}}async function ue(e,t,n){let r=!1;for await(let t of e.receive()){if(p)return;r||(r=!0,_=0),await A(t),await o?.(e,t),D()}s?.(e),l.status===`connected`&&le(`node closed the connection`,ce(e,t),n)}async function de(n){return n!==void 0&&Sb(n),{type:`gossip`,peers:[await fb(e,{...n,[hb]:mb,[bb]:x.compute(),device:e.deviceId,addresses:[...a],"snapshot-seconds":Math.floor(t.now()/tx),"identity-key":e.identityKey})]}}async function fe(e,t,n){c=e,C.reset(`the connection changed before the channel was ready`),b.clear(),oe=rx(n),u={status:`pending`},l={status:`connected`,address:t,handshake:u},f.push({direction:`sent`,frame:oe}),await c.send(oe),D();let r=await de();f.push({direction:`sent`,frame:r}),await c.send(r),D(),h=setTimeout(()=>{h=null,u.status===`pending`&&(u={status:`unanswered`},l.status===`connected`&&(l={...l,handshake:u}),D())},nx),ue(c,t,n).catch(r=>{l.status===`connected`&&le(r instanceof Error?r.message:String(r),ce(e,t),n)})}async function pe(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},D();let n=await r(e);if(p){await n.close();return}await fe(n,e,t)}return{wireUpConnection:fe,session:{events:m.stream,incomingManageRequests:w.stream,revocationAnnouncements:T.stream,coordinatorFrames:ee.stream,async connect(e,t){if(c!==null)throw Error(`a session connects once; create a new one to reconnect`);_=0,await pe(e,t).catch(n=>{throw le(n instanceof Error?n.message:String(n),e,t),n})},async sendPing(){let e=re(),t={type:`ping`};f.push({direction:`sent`,frame:t}),await e.send(t),D()},async sendPingMeasureRtt(e){let n=re();return te.sendAndAwait(t.now(),async()=>{let e={type:`ping`};f.push({direction:`sent`,frame:e}),await n.send(e),D()},e)},setToken(e){v=e},async sendManageRequest(e,t,n,r,i){re(),n!==void 0&&await j(n);let a=O(e,t,r),o=a[`request-id`],s=new Promise((e,t)=>{S.set(o,{resolve:e,reject:t,expectedFrom:n})});f.push({direction:`sent`,frame:a});let c=(async()=>{try{await k(a,n!==void 0,n)}catch(e){throw S.delete(o),s.catch(()=>void 0),e}return D(),s})();return i===void 0?c:Promise.race([c,new Promise(e=>{setTimeout(()=>{S.delete(o)&&(n!==void 0&&(b.remove(n),C.forget(n)),e({result:`error`,code:`timeout`}))},i)})])},async sendRevocationAnnounce(e){re();let t={type:`revocation-announce`,entries:[...e]};f.push({direction:`sent`,frame:t}),await k(t,!1),D()},async sendCoordinatorClaim(e){re();let t={...e};f.push({direction:`sent`,frame:t}),await k(t,!1),D()},async sendGossipUpdate(e){re();let t=await de(e);f.push({direction:`sent`,frame:t}),await k(t,!1),D()},getTopologyPeers(){return x.compute()},async sendDataFrame(e){re(),f.push({direction:`sent`,frame:e}),await k(e,!1),D()},async close(){p=!0,h!==null&&(clearTimeout(h),h=null),g!==null&&(clearTimeout(g),g=null),ne(`connection closed before a response arrived`),C.reset(`the session closed before the channel was ready`),te.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`}),D()}}}}function ax(e,t,n={now:()=>Date.now()},r=null,i=[],a){let{session:o}=ix(t,n,r,async t=>e.connect(t),a,i);return o}async function ox(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}=ix(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 sx(e){return e instanceof Error?e:Error(String(e))}function cx(e){let t=Uy(e.selfDeviceId),n=new Set;async function r(t){let n;try{n=await e.shouldExpand(t)}catch(n){e.onExpansionFailed?.(t,[sx(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(sx(e))}e.onExpansionFailed?.(t,r)}return{considerAdvert(e){let i=Uy(e.device);i===t||n.has(i)||e.addresses.length===0||(n.add(i),r({device:e.device,addresses:e.addresses}))}}}var lx=/^[0-9a-f]{64}$/,ux=/^[A-Za-z0-9_-]+$/;function dx(e,t){if(!lx.test(e))throw Error(`expected ${t} to be a 64-character lowercase hex device-id, got ${JSON.stringify(e)}`)}function fx(e,t){if(dx(e,`a`),dx(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 px(e){let t=e.indexOf(`/`);if(t!==-1){let n=e.slice(0,t),r=e.slice(t+1);if(lx.test(n)&&ux.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(lx.test(t)&&lx.test(r)&&t!==r)return{kind:`dm`,participants:[t,r]}}throw Error(`${JSON.stringify(e)} is not a valid room-path`)}var mx=4,hx=1024,gx=hx*hx*100,_x=new Uint8Array(mx);function vx(e){let t=hc(e,Qs),n=new Uint8Array(mx+t.length);return new DataView(n.buffer).setUint32(0,t.length),n.set(t,mx),n}function yx(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}async function*bx(e){let t=new Uint8Array;try{for(;;){let n=await e.read();if(n.done)return;for(t=yx(t,n.value);t.length>=mx;){let e=new DataView(t.buffer,t.byteOffset).getUint32(0);if(e>104857600)throw Error(`frame of ${String(e)} bytes exceeds the ${String(gx)}-byte limit`);if(t.length<mx+e)break;if(e===0){t=t.slice(mx);continue}let n=t.slice(mx,mx+e);t=t.slice(mx+e);let r=fv.safeParse(rl(n,il));r.success&&(yield r.data)}}}catch(t){throw await e.cancel(t),t}}function xx(e,t={opened:!1}){let n=e.writable.getWriter(),r=e.readable.getReader(),i=bx(r),a=t.opened?n.write(_x):Promise.resolve();return a.catch(()=>void 0),{send:async e=>{await a,await n.write(vx(e))},receive:()=>i,close:async()=>{await Promise.allSettled([n.close(),r.cancel()])}}}var Sx=`/wire-mesh`,Cx=8e3,wx=`the web console is a client only: it cannot listen`;async function Tx(e){let t=e.incomingUnidirectionalStreams.getReader(),n=await t.read();if(t.releaseLock(),n.done)throw Error(`the node opened no announcement stream`);let r=n.value;if(!(r instanceof ReadableStream))throw Error(`the announcement stream is not a readable stream`);let i=[],a=r.getReader();for(;;){let e=await a.read();if(e.done)break;if(!(e.value instanceof Uint8Array))throw Error(`the announcement carried something other than bytes`);i.push(e.value)}let o=new Uint8Array(i.reduce((e,t)=>e+t.length,0)),s=0;for(let e of i)o.set(e,s),s+=e.length;return kl(o)}async function Ex(e){let t,n=new Promise(e=>{t=setTimeout(()=>{e(`timed out`)},Cx)});try{let t=await Promise.race([e.createBidirectionalStream(),n]);if(t===`timed out`)throw e.close(),Error(`this browser cannot open a stream to this node: it is waiting for flow-control credit the node never grants, which is how Safari behaves with the node's HTTP/3 library (fails-components/webtransport#490); reach the node over wss:// instead`);return t}finally{clearTimeout(t)}}function Dx(e){return{async connect(t){if(typeof WebTransport>`u`)throw Error(`this browser does not support WebTransport`);let{url:n,sha256:r}=El(t),i=new URL(n).host,a=Al(r,await e.recall(i)),o=new WebTransport(new URL(Sx,n).toString(),{serverCertificateHashes:a.map(e=>({algorithm:`sha-256`,value:e}))});await o.ready;let s=xx(await Ex(o),{opened:!0});o.closed.catch(()=>void 0).then(async()=>s.close());let c;return Tx(o).then(async t=>{c=t,await e.remember(i,t)}).catch(()=>void 0),{...s,redialAddress:()=>c===void 0?t:Ml(t,c)}},async listen(){return Promise.reject(Error(wx))}}}var Ox=1e3,kx=1002,Ax=`the web console is a client only: it cannot listen`;function jx(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(kx,`protocol error`);return}let i;try{i=nb(r.data)}catch(t){if(t instanceof tb)return;o(t instanceof Error?t:Error(`frame body failed to decode: ${String(t)}`)),e.close(kx,`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($y(t)),Promise.resolve())},receive:()=>s,async close(){return e.close(Ox),Promise.resolve()}}}function Mx(){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(()=>jx(n))},async listen(){return Promise.reject(Error(Ax))}}}function Nx(e){let t=Mx(),n=Dx(e);return{connect:async e=>Tl(e)?n.connect(e):t.connect(e),listen:async(e,n)=>t.listen(e,n)}}var Px=[{urls:`stun:stun.cloudflare.com:3478`}],Fx=(e,t,n)=>({kind:`complex`,re:e*Math.cos(t),im:e*Math.sin(t),unit:n}),Ix=v_(K(),q()),Lx=b_([`ms`,`s`,`min`,`h`,`d`]);f_(`kind`,[J({kind:Y(`number`),value:q(),unit:Ix.optional()}),J({kind:Y(`text`),value:K()}),J({kind:Y(`boolean`),value:Qg()}),J({kind:Y(`instant`),value:K()}),J({kind:Y(`duration`),value:q(),unit:Lx}),J({kind:Y(`complex`),re:q(),im:q(),unit:Ix.optional()})]);function Rx(e){if(e===void 0)return{};let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}function zx(e,t){let n=Rx(e),r=Rx(t),i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&i.every(e=>n[e]===r[e])}function Bx(e,t){let n=Rx(e),r=Rx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)+t;return Rx(i)}function Vx(e,t){let n=Rx(e),r=Rx(t),i={...n};for(let[e,t]of Object.entries(r))i[e]=(i[e]??0)-t;return Rx(i)}J({code:b_([`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 Hx(...e){for(let t of e)if(t?.status===`indeterminate`)return t.reason}var Ux=X(()=>u_([K(),q(),Qg(),e_(),o_(Ux),v_(K(),Ux)])),Wx=b_([`gt`,`gte`,`lt`,`lte`,`eq`,`neq`]),Gx=b_([`equals`,`notEquals`,`matches`,`notMatches`,`portableMatches`,`portableNotMatches`]),Kx=b_([`in`,`notIn`]),qx=b_([`add`,`subtract`,`multiply`,`divide`,`power`,`modulo`]),Jx=b_([`first`,`unique`]),Yx=J({kind:Y(`not`),get operand(){return sS}}),Xx=J({kind:Y(`and`),get left(){return sS},get right(){return sS}}),Zx=J({kind:Y(`or`),get left(){return sS},get right(){return sS}}),Qx=J({kind:Y(`allOf`),get operands(){return o_(sS)}}),$x=J({kind:Y(`anyOf`),get operands(){return o_(sS)}}),eS=J({kind:Y(`compare`),op:Wx,get left(){return SS},get right(){return SS}}),tS=J({kind:Y(`textCompare`),op:Gx,get left(){return SS},get right(){return SS}}),nS=J({kind:Y(`memberOf`),op:Kx,get operand(){return SS},get candidates(){return o_(SS)}}),rS=J({kind:Y(`exists`),get operand(){return SS}}),iS=J({kind:Y(`some`),collection:Ux,get item(){return sS},get filter(){return sS.optional()}}),aS=J({kind:Y(`every`),collection:Ux,get item(){return sS},get filter(){return sS.optional()}}),oS=J({kind:Y(`treeReference`),key:Ux}),sS=f_(`kind`,[Yx,Xx,Zx,Qx,$x,eS,tS,nS,rS,iS,aS,oS]),cS=J({kind:Y(`numberLiteral`),value:q(),unit:Ix.optional()}),lS=J({kind:Y(`textLiteral`),value:K()}),uS=J({kind:Y(`booleanLiteral`),value:Qg()}),dS=J({kind:Y(`instantLiteral`),value:K()}),fS=J({kind:Y(`durationLiteral`),value:q(),unit:Lx}),pS=u_([c_({kind:Y(`complexLiteral`),re:q(),im:q(),unit:Ix.optional()}),c_({kind:Y(`complexLiteral`),magnitude:q(),phase:q(),unit:Ix.optional()})]),mS=J({kind:Y(`reference`),key:Ux,unit:Ix.optional()}),hS=J({kind:Y(`arithmetic`),op:qx,get left(){return SS},get right(){return SS}}),gS=J({kind:Y(`negate`),get operand(){return SS}}),_S=J({kind:Y(`call`),fn:K(),get args(){return o_(SS)}}),vS=J({kind:Y(`lookup`),table:Ux,get keys(){return o_(SS)}}),yS=J({get when(){return sS},get then(){return SS}}),bS=J({kind:Y(`conditional`),hitPolicy:Jx.optional(),get cases(){return o_(yS)},get fallback(){return SS}}),xS=f_(`mode`,[J({mode:Y(`max`),get item(){return SS}}),J({mode:Y(`min`),get item(){return SS}}),J({mode:Y(`reduce`),get initial(){return SS},get combine(){return SS}})]),SS=u_([f_(`kind`,[cS,lS,uS,dS,fS,mS,hS,gS,_S,vS,bS,J({kind:Y(`fold`),collection:Ux,get filter(){return sS.optional()},combiner:xS}),J({kind:Y(`accumulator`)}),J({kind:Y(`delegate`),system:K(),payload:Ux}),oS]),pS]),CS={},wS=1e4;function TS(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 ES(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 DS(e){for(let{filterOutcome:t}of e)if(t!==`include`&&t!==`exclude`&&t.status===`indeterminate`)return t.reason}function OS(e,t){return t>=e.from&&t<=e.to}function kS(e,t){let n=e.ranges.some(e=>OS(e,t));return e.negated?!n:n}var AS=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 jS(e){return e.charCodeAt(0)}function MS(e,t){return{from:jS(e),to:jS(t)}}function NS(e){let t=jS(e);return{from:t,to:t}}var PS=[MS(`0`,`9`)],FS=[MS(`A`,`Z`),MS(`a`,`z`),MS(`0`,`9`),NS(`_`)],IS=[NS(` `),NS(` `),NS(`
|
|
71
71
|
`),NS(`\r`),NS(`\f`),NS(`\v`)];function LS(e){switch(e){case`d`:return{kind:`charClass`,negated:!1,ranges:PS};case`D`:return{kind:`charClass`,negated:!0,ranges:PS};case`w`:return{kind:`charClass`,negated:!1,ranges:FS};case`W`:return{kind:`charClass`,negated:!0,ranges:FS};case`s`:return{kind:`charClass`,negated:!1,ranges:IS};case`S`:return{kind:`charClass`,negated:!0,ranges:IS};default:throw Error(`unreachable shorthand class letter`)}}var RS=new Set([`|`,`)`]),zS={".":`.`,"*":`*`,"+":`+`,"?":`?`,"(":`(`,")":`)`,"[":`[`,"]":`]`,"{":`{`,"}":`}`,"|":`|`,"^":`^`,$:`$`,"\\":`\\`,"/":`/`,n:`
|
|
72
|
-
`,t:` `,r:`\r`,f:`\f`,v:`\v`},BS=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 AS(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()||RS.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!RS.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 AS(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 AS(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 AS(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 AS(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 AS(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 AS(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 AS(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new AS(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 LS(t);let n=zS[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new AS(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 AS(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new AS(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 AS(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return LS(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new AS(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=zS[t];if(n===void 0)throw new AS(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new AS(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 AS(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 AS(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 AS(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=zS[t];if(n===void 0)throw new AS(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new AS(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function VS(e){let t=new BS(e),n=t.parseAlternation();if(!t.atEnd())throw new AS(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var HS=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=>kS(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 US(e){return new HS().build(e)}function WS(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 GS(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 KS(e,t){let n=t.length,r=WS(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=GS(e,r,a);if(o.add(e.start),r=WS(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function qS(e){let t=US(VS(e));return{test:e=>KS(t,e)}}function JS(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=Hx(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function YS(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=Hx(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function XS(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 ZS={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function QS(e,t){return e*ZS[t]}function $S(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function eC(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function tC(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 nC(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?zx(t.unit,n.unit)?Q(XS(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=$S(t.value);if(r===void 0)return eC(t.value);let i=$S(n.value);return i===void 0?eC(n.value):Q(XS(e,r,i))}case`duration`:return n.kind===`duration`?Q(XS(e,QS(t.value,t.unit),QS(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`?zx(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 rC(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=qS(n.value)}catch(e){let t=e instanceof AS?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 iC(e,t){switch(e.kind){case`number`:return t.kind===`number`?zx(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=$S(e.value);if(n===void 0)return eC(e.value);let r=$S(t.value);return r===void 0?eC(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(QS(e.value,e.unit)===QS(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?zx(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 aC(e){return zx(e,void 0)}function oC(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 sC(e,t,n){switch(e){case`add`:return zx(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 zx(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:Bx(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:Vx(t.unit,n.unit)});case`power`:return!aC(t.unit)||!aC(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!aC(t.unit)||!aC(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 cC(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:QS(t.value,t.unit)+QS(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:QS(t.value,t.unit)-QS(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 lC(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function uC(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:Bx(e.unit,t.unit)}}function dC(e,t,n){switch(e){case`add`:return zx(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 zx(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(uC(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:Vx(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function fC(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!aC(e.unit)||!aC(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=lC(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=uC(i,r);return t.value>=0?Q(i):dC(`divide`,n,i)}function pC(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=$S(t.value);if(e===void 0)return eC(t.value);let r=$S(n.value);return r===void 0?eC(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=$S(t.value);return e===void 0?eC(t.value):tC(e+QS(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=$S(n.value);return e===void 0?eC(n.value):tC(e+QS(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`?cC(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`?fC(t,n):dC(e,lC(t),lC(n)):sC(e,t,n)}function mC(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(!zx(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function hC(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 gC(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 gC(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([gC(e.left,t,n,r,i,a,o,s,c+1),gC(e.right,t,n,r,i,a,o,s,c+1)]);return JS(l,u)}case`or`:{let[l,u]=await Promise.all([gC(e.left,t,n,r,i,a,o,s,c+1),gC(e.right,t,n,r,i,a,o,s,c+1)]);return YS(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>gC(e,t,n,r,i,a,o,s,c+1)))).reduce(JS,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>gC(e,t,n,r,i,a,o,s,c+1)))).reduce(YS,Q(!1));case`compare`:{let[l,u]=await Promise.all([_C(e.left,t,n,r,i,a,o,s,c+1),_C(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:nC(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([_C(e.left,t,n,r,i,a,o,s,c+1),_C(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:rC(e.op,l.value,u.value)}case`memberOf`:{let l=await _C(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 _C(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:iC(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=Hx(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await _C(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 ES(gC,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`?gC(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?YS:JS,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=sS.safeParse(u.node);return d.success?gC(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 _C(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=mC(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=>_C(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 hC(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(Fx(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([_C(e.left,t,n,r,i,a,o,s,c+1),_C(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:pC(e.op,l.value,u.value)}case`negate`:{let l=await _C(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:oC(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>_C(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 gC(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return _C(u,t,n,r,i,a,o,s,c+1)}return _C(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 gC(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=Hx(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return _C(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await ES(gC,e.collection,e.filter,t,n,i,a,o,s,c+1),l=DS(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 _C(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 _C(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 _C(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=nC(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=SS.safeParse(u.node);return d.success?_C(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 vC({functions:e=CS,maxNodes:t=wS,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>gC(r,i,a,void 0,e,new Set,0,TS(t,n),0),evaluateValue:async(r,i,a)=>_C(r,i,a,void 0,e,new Set,0,TS(t,n),0)}}var{evaluatePredicate:yC,evaluateValue:bC}=vC({}),xC=o_(sS),SC=`bearer-is`,CC=`expires-at`,wC=`scope-narrows`,TC=`capability-is`,EC=`depth-remaining`,DC=[SC,CC,wC,TC,EC];function OC(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}function kC(e){return{found:!0,value:{kind:`boolean`,value:e}}}var AC={[SC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(ib(t.parentClaims.bearer,t.childIssuer)),[CC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(t.candidate.expires<=t.parentClaims.expires),[wC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(sb(t.parentClaims.scope,t.candidate.scope)),[TC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(t.parentClaims.capability===t.candidate.capability),[EC]:(e,t)=>{if(t.parentClaims===void 0)return kC(!1);let n=t.parentClaims[`delegations-remaining`];return kC(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function jC(e){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:null},right:{kind:`booleanLiteral`,value:!0}}}var MC=async()=>Promise.resolve({found:!1}),NC=async()=>Promise.resolve({found:!1}),PC=async()=>Promise.resolve([]);async function FC(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:MC,resolveLookup:NC,resolveCollection:PC,resolveDelegate:async(e,t)=>OC(e)?AC[e](t,r):{found:!1}};for(let e of DC){let t=await yC(jC(e),r,i);if(t.status!==`definite`||!t.value)return e}}async function IC(e,t,n,r={}){let i={clock:n,claims:t},a={resolveValue:MC,resolveLookup:NC,resolveCollection:PC,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 yC(t,i,a);if(e.status!==`definite`||!e.value)return{ok:!1,reason:`not_satisfied`}}return{ok:!0}}function LC(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function RC(e){return Uint8Array.from(e)}function zC(e){return RC(hc(e,Qs))}function BC(e){return zC({1:e.identityKey.alg,4:e.deviceId})}function VC(e){let[,,t]=e;if(t===null)return;let n;try{n=rl(t,il)}catch{return}let r=_y.safeParse(n);return r.success?r.data:void 0}async function HC(e,t){let n=await WC(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});return n.ok&&t.expectedBearer!==void 0&&!ib(n.claims.bearer,t.expectedBearer)?{ok:!1,reason:`bearer_mismatch`}:n}async function UC(e,t,n){if(ib(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=gy.safeParse(r);if(!i.success)return!1;let a=await HC(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&sb(a.claims.scope,t.scope)}async function WC(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=_y.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(!await t.identity.verify(s[`issuer-key`],LC(n,r),i))return{ok:!1,reason:`bad_signature`};if(!ib(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 UC(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=xC.safeParse(e);if(!n.success)return{ok:!1,reason:`conditions_invalid`};if(!(await IC(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=gy.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let r=await WC(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 FC(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 GC={"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 KC(e,t,n){let r=await FC(e,t,n);return r===void 0?void 0:GC[r]}async function qC(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};let t;if(e.parent!==void 0){let n=VC(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await KC(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=zC(e.parent)}let n=zC({"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:zC(e.conditions)}}),r=BC(e.identity);return{ok:!0,token:[r,{},n,await e.identity.sign(LC(r,n))]}}var JC=`webrtc:signal`,YC={kind:`node`};function XC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function ZC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function QC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function $C(e,t){return{verb:JC,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function ew(e,t){return{verb:JC,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function tw(e,t){return{verb:JC,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function nw(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 rw(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 iw(){let e=0;return()=>{let t=e;return e+=1,t}}async function aw(e,t){if(e.token===void 0)return!1;let n=await HC(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===YC.kind:!1}function ow(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=nb(r.data)}catch(t){if(t instanceof tb)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($y(t)),Promise.resolve()):Promise.reject(Error(`data channel is not open (state: ${e.readyState})`))},receive:()=>s,async close(){return e.close(),Promise.resolve()}}}var sw=`wire-mesh`,cw={entriesFor:async()=>Promise.resolve([])};function lw(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function uw(e,t){e.addEventListener(`open`,()=>{t(ow(e))},{once:!0})}var dw=16,fw=36e5;async function pw(e,t){let n=new Uint8Array(dw);crypto.getRandomValues(n);let r=await qC({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:JC,scope:YC,expires:t.now()+fw});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function mw(e,t){let n={identity:t.identity,clock:t.clock,revocation:cw},r=new Map,i=new Map,a=iw();async function o(t,n){let r=tw(t,n===null?void 0:nw(n));await e.sendManageRequest(r,YC,i.get(t))}async function s(a,s){if(!await aw(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),lw(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{e.channel.binaryType=`arraybuffer`,uw(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(ew(c,u.sdp??``),YC,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:rw(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;XC(e)?await s(t,e):ZC(e)?await c(t,e):QC(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),lw(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(sw);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{uw(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($C(s,d.sdp??``),YC,n,await pw(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 hw(e){let[t,n]=(0,D.useState)(void 0);return(0,D.useEffect)(()=>{let t={cancelled:!1};return(async()=>{for await(let r of e.events){if(t.cancelled)return;n(r)}})(),()=>{t.cancelled=!0}},[e]),t}var gw=16;function _w(e){let t=``;for(let n of e)t+=n.toString(gw).padStart(2,`0`);return t}function vw(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 yw(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${vw(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}function bw(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function xw({address:e,session:t,onClose:n,onMessagePeer:r}){let i=hw(t),a=i===void 0?`idle`:yw(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:_w(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`})})]},_w(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:bw(e.frame)})]},t))})]})})]})}function Sw({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:_w(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 Cw(e,t){return e.sentAt===t.sentAt?Hy(e.messageId).localeCompare(Hy(t.messageId)):e.sentAt-t.sentAt}function ww(e,t){let n=new Set(e.map(e=>Hy(e.messageId))),r=t.filter(e=>!n.has(Hy(e.messageId)));return r.length===0?e:[...e,...r].sort(Cw)}function Tw(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function Ew(e,t){return{roomPath:e,participants:t,direct:void 0,relay:void 0,via:void 0,token:void 0,status:`closed`,messages:[],notices:[],outgoing:[],pendingJoinRequest:void 0,unread:0}}function Dw(e,t,n){let r=t===void 0?n===void 0?void 0:`hub`:`direct`;return{...e,direct:t,relay:n,via:r,status:r===void 0?`closed`:`connected`}}function Ow(e,t){switch(t.type){case`direct-opened`:{let n=e.get(t.roomPath)??Ew(t.roomPath,t.participants);return new Map(e).set(t.roomPath,{...Dw(n,t.session,n.relay),participants:t.participants,notices:[]})}case`relay-opened`:{let n=e.get(t.roomPath)??Ew(t.roomPath,t.participants);return new Map(e).set(t.roomPath,Dw(n,n.direct,t.route))}case`direct-closed`:return Tw(e,t.roomPath,e=>Dw(e,void 0,e.relay));case`hub-closed`:{let n=e;for(let r of e.values())r.relay?.hub===t.hub&&(n=Tw(n,r.roomPath,e=>Dw(e,e.direct,void 0)));return n}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{...Ew(t.roomPath,t.participants),messages:ww([],t.messages)}):Tw(e,t.roomPath,e=>({...e,messages:ww(e.messages,t.messages)}));case`notices`:return Tw(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return Tw(e,t.roomPath,e=>{let n=ww(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 Tw(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return Tw(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 Tw(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return Tw(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return Tw(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return Tw(e,t.roomPath,e=>({...e,token:t.token}))}return e}function kw(e,t){let n=px(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}var Aw=12;function jw(e){return e.participants.length===0?e.roomPath:e.participants.map(e=>e.slice(0,Aw)).join(`, `)}function Mw({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:jw(e),description:e.status===`connected`?void 0:`offline`,rightSection:(0,M.jsxs)(mi,{gap:4,wrap:`nowrap`,children:[e.pendingJoinRequest!==void 0&&(0,M.jsx)(ba,{color:`blue`,size:`sm`,children:`request`}),e.unread>0&&(0,M.jsx)(ba,{size:`sm`,"aria-label":`${String(e.unread)} unread`,children:e.unread})]}),onClick:()=>{n(e.roomPath)}},e.roomPath))]})}function Nw({placeholder:e,ariaLabel:t,submitLabel:n,onSubmit:r,onCancel:i,size:a,autoFocus:o}){let[s,c]=(0,D.useState)(``),[l,u]=(0,D.useState)(void 0);function d(){let e=s.trim();e!==``&&(u(void 0),Promise.resolve(r(e)).then(()=>{c(``)}).catch(e=>{u(e instanceof Error?e.message:String(e))}))}function f(e){e.key===`Enter`&&d(),e.key===`Escape`&&i?.()}return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(mi,{gap:`xs`,flex:1,children:[(0,M.jsx)(_o,{flex:1,...a===void 0?{}:{size:a},placeholder:e,"aria-label":t,autoComplete:`off`,autoFocus:o,value:s,onChange:e=>{c(e.currentTarget.value)},onKeyDown:f}),(0,M.jsx)(ka,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,M.jsx)(Yi,{size:`sm`,c:`red`,children:l})]})}var Pw=`You`,Fw=256,Iw=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function Lw({sentAt:e}){return(0,M.jsx)(Yi,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:Iw.format(e)})}function Rw({messages:e,outgoing:t,peerLabel:n,onRetry:r,onDiscard:i}){let a=(0,D.useRef)(null);return(0,D.useEffect)(()=>{let e=a.current;e!==null&&(e.scrollTop=e.scrollHeight)},[e,t]),(0,M.jsx)(Lr,{h:Fw,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?Pw:n}),(0,M.jsx)(Yi,{size:`sm`,children:t.text}),(0,M.jsx)(Lw,{sentAt:t.sentAt})]},Hy(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:Pw}),(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 zw(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function Bw({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=zw(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 Vw=864e5;function Hw(e){return e===`direct`?`direct`:e===`hub`?`via hub`:`offline`}function Uw({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:Hw(e.via)})]}),e.pendingJoinRequest&&(0,M.jsx)(Wi,{color:`blue`,title:`Message request`,children:(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsxs)(Yi,{size:`sm`,children:[e.pendingJoinRequest.requesterHex,` wants to message you`]}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+Vw})},children:`Allow`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,M.jsx)(Rw,{messages:e.messages,outgoing:e.outgoing,peerLabel:jw(e),onRetry:r,onDiscard:i}),(0,M.jsx)(mi,{children:(0,M.jsx)(Nw,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,M.jsx)(Ba,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,M.jsx)(Bw,{notices:e.notices}),e.via===`direct`?(0,M.jsx)(mi,{children:(0,M.jsx)(Nw,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})}):(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:`Durable notices need a direct connection.`})]})}var Ww=`room:member`;async function Gw(e,t){let n=await HC(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=px(t.roomPath),i=Uy(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!==Uy(t.identity.deviceId))return{ok:!1,reason:`wrong_chain_root`};return{ok:!0,claims:n.claims,rootIssuerKey:n.rootIssuerKey}}var Kw=16;function qw(){let e=new Uint8Array(Kw);return crypto.getRandomValues(e),e}function Jw(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function Yw(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}async function Xw(e,t,n,r,i,a){let o=await e.sendManageRequest(Yw(t,a),n,r,void 0,i);if(o.result!==`ok`)throw Error(`capability request for "${t}" was refused (${o.code})`);let s=Dv.safeParse(o);if(!s.success)throw Error(`capability request for "${t}" response was malformed`);return s.data}function Zw(e){return async function(t){let n=Ev.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);Jw(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 qC({identity:e.identity,clock:e.clock,tokenId:qw(),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 Qw(e){return async function(t){if(t.command.verb!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let n=Ov.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}let r=n.data[`granted-token`],i=await HC(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(!sb(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 $w=16;function eT(){let e=new Uint8Array($w);return crypto.getRandomValues(e),e}var tT=3e5;function nT(e,t,n){return{verb:Ww,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function rT(e,t,n,r,i){let a=nT(n,eT(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function iT(e,t,n){let r=await Xw(e,Ww,{kind:`room`,path:t},n),i=Gv.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 aT(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 Gw(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=Zw({capability:Ww,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??tT,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=Qw({capability:Ww,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 oT(){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 sT=32,cT=256,lT=12,uT=4,dT=8,fT=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function pT(){return crypto.getRandomValues(new Uint8Array(sT))}function mT(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(uT);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(dT);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(fT.length+n.length+t.length+r.length),a=0;return i.set(fT,a),a+=fT.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function hT(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(mT(t))},n,{name:`AES-GCM`,length:cT},!1,[`encrypt`,`decrypt`])}async function gT(e,t){let n=crypto.getRandomValues(new Uint8Array(lT)),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 _T(e,t){if(t.length<lT)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,lT),r=t.slice(lT);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function vT(e,t){return gT(e,t)}async function yT(e,t){return _T(e,t)}async function bT(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function xT(e,t){return gT(await bT(e),t)}async function ST(e,t){return _T(await bT(e),t)}var CT=`+aes256gcm`;function wT(e){return ET(e)?e:`${e}${CT}`}function TT(e){return ET(e)?e.slice(0,e.length-10):e}function ET(e){return e.endsWith(CT)}function DT(e,t){return{verb:Ww,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function OT(e,t,n,r,i,a){return e.sendManageRequest(DT(n,r),{kind:`room`,path:t},i,a)}function kT(e){return async function(t){if(t.command.verb!==`room:member`){await t.respond({result:`error`,code:`malformed`});return}let n=Uv.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 Gw(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)=>yT(await hT(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 AT(e){return`data/${Uy(e)}/head`}function jT(e,t){return`data/${Uy(e)}/entry/${String(t)}`}async function MT(e,t){let n=await e.get(AT(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function NT(e,t,n){await e.set(AT(t),new TextEncoder().encode(String(n)))}async function PT(e,t){return MT(e,t)}async function FT(e,t){let n=await MT(e.storage,e.identity.deviceId)+1;return await e.storage.set(jT(e.identity.deviceId,n),t),await NT(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function IT(e,t,n){let r=await MT(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(jT(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 LT(e,t){let n=await MT(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(jT(t.peer,r),n);return await NT(e,t.peer,r),{ok:!0}}async function RT(e,t,n){let r=await MT(e,t),i=[];for(let a=n+1;a<=r;a+=1){let n=await e.get(jT(t,a));if(n===void 0)break;i.push(n)}return i}function zT(e){return Uint8Array.from(e)}function BT(e){return zT(hc(e,Qs))}function VT(e){return BT({1:e.identityKey.alg,4:e.deviceId})}function HT(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function UT(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 WT(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=qv.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`],HT(n,r),i))return{ok:!1,reason:`bad_signature`};if(!UT(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(ET(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await Gw(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 GT(e){let t=BT({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=VT(e.identity);return[n,{},t,await e.identity.sign(HT(n,t))]}var KT=16;function qT(e){return new Uint8Array(hc(e,Qs))}function JT(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(KT)),c=await xT(o,e.plaintext),l=await GT({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:wT(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await FT({identity:t,storage:n},qT(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await PT(n,e);if(!(await LT(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 RT(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 WT(o,{identity:t,clock:r,revocation:i,expectedRoom:n});if(!s.ok)return{verified:!1,reason:s.reason};let c=s.claims;if(!ET(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:TT(c[`content-type`]),claims:c};if(d===void 0)return f;try{let e=await ST(d,c.content);return{...f,plaintext:e}}catch{return f}}function u(e){try{let t=rl(e,il),n=Kv.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 YT=32;function XT(e){let{session:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=JT({identity:r,storage:n,clock:i,revocation:a,roomKeys:o}),l=new Map;async function u(e){let r=await PT(n,e);await t.sendDataFrame({type:`data-request`,peer:e,"from-seq":r})}function d(e){if(e.type===`data-have`){l.set(Uy(e.peer),e.peer),u(e.peer).catch(()=>void 0);return}if(e.type===`data-entries`){(async()=>{(await LT(n,e)).ok&&(e.entries.length>=YT&&await u(e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await IT(n,e,YT);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 ZT(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===``||Uy(n.deviceId)!==c)return;let l=await Gw(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=pT(),f=await vT(await hT(await u(l.rootIssuerKey),{room:o,keyEpoch:1}),d);s.set(o,1,d),await OT(t,o,1,f)}var QT=[`core/management`,`core/room`],$T=16;function eE(){let e=new Uint8Array($T);return crypto.getRandomValues(e),e}function tE(e){if(e?.direct!==void 0)return{session:e.direct,target:void 0};if(e?.relay!==void 0)return{session:e.relay.hub,target:e.relay.peer};throw Error(`conversation is not connected`)}function nE(e,t,n){let[r,i]=(0,D.useReducer)(Ow,new Map),a=Uy(e.deviceId);(0,D.useEffect)(()=>{let e=new AbortController;return(async()=>{for(let t of await n.roomPaths()){let r=await n.list(t);if(e.signal.aborted)return;i({type:`restored`,roomPath:t,participants:kw(t,a),messages:r})}})(),()=>{e.abort()}},[n,a]);let o=(0,D.useRef)(new Map),s=(0,D.useRef)(new Map);function c(n,r){let a=new Map,o={get:async(e,t)=>Promise.resolve(a.get(e)?.get(t)),set:(e,t,n)=>{let r=a.get(e)??new Map;r.set(t,n),a.set(e,r)},currentEpoch:async e=>Promise.resolve([...a.get(e)?.keys()??[]].sort((e,t)=>t-e)[0])},s={},c=()=>{let e=s.wiring;e!==void 0&&e.readRoom(r).then(e=>{i({type:`notices`,roomPath:r,notices:[...e]})})},l=XT({session:n,storage:oT(),identity:e,clock:t,revocation:cw,roomKeys:o,onChange:()=>{c()}});return s.wiring=l,{wiring:l,roomKeys:o,refresh:c}}function l(r,a){return{onMessage:e=>{let t={direction:`received`,text:e.text,messageId:e.messageId,sentAt:e.sentAt};n.append(r,t),i({type:`message`,roomPath:r,message:t})},onJoinRequest:e=>{i({type:`join-request`,roomPath:r,request:{requesterHex:Uy(e.requesterDevice),async decide(t){i({type:`join-request-settled`,roomPath:r}),await e.decide(t)}}})},onRekey:async n=>{if(a===void 0){await n.respond({result:`error`,code:`unsupported_route`});return}let i=s.current.get(r);if(i===void 0){await n.respond({result:`error`,code:`no_token`});return}await kT({identity:e,clock:t,revocation:cw,ownRoomMemberToken:i,onRekey:e=>{e.contentKeys.forEach((t,n)=>{a.roomKeys.set(r,e.keyEpoch-e.contentKeys.length+1+n,t)}),a.refresh()}})(n)}}}let u=(0,D.useCallback)(async(s,u)=>{let d={},f=await ox(s,e,QT,{clock:t,onFrame:(e,t)=>{d.current?.(t)}}),p=u??await f.peerDeviceId,m=Uy(p),h=fx(a,m);if(r.get(h)?.direct!==void 0){await f.close();return}let g=c(f,h);o.current.set(h,g),d.current=e=>{g.wiring.handleFrame(e)},i({type:`direct-opened`,roomPath:h,participants:[m],session:f}),i({type:`restored`,roomPath:h,participants:[m],messages:await n.list(h)}),aT(f,{identity:e,clock:t,revocation:cw,peerDevice:p,currentMembers:()=>[e.deviceId,p]},l(h,g)),(async()=>{for await(let e of f.events)e.state.status===`closed`&&i({type:`direct-closed`,roomPath:h})})()},[e,t,a,r,n]),d=(0,D.useCallback)(async(a,c,l)=>{let u=r.get(a),{session:d,target:f}=tE(u),p=u?.token;if(p===void 0){l(`awaiting-approval`);let n=await iT(d,a,f);l(`sending`),p=n.token,s.current.set(a,p),i({type:`token`,roomPath:a,token:p});let r=o.current.get(a);u?.direct!==void 0&&r!==void 0&&ZT({session:u.direct,identity:e,clock:t,revocation:cw,ownRoomMemberToken:p,roomPath:a,roomKeys:r.roomKeys}).catch(()=>void 0)}let m=await rT(d,a,c,p,f);if(m.result!==`ok`)throw Error(`send failed: ${m.code}`);let h={direction:`sent`,text:c,messageId:eE(),sentAt:t.now()};return await n.append(a,h),h},[r,t,n,e]),f=(0,D.useCallback)(async(e,t,n)=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`sending`}});try{let r=await d(e,n,r=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:r}})});i({type:`message`,roomPath:e,message:r}),i({type:`outgoing-removed`,roomPath:e,localId:t})}catch(r){i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`failed`,error:r instanceof Error?r.message:String(r)}})}},[d]),p=(0,D.useCallback)(async(e,t)=>f(e,crypto.randomUUID(),t),[f]),m=(0,D.useCallback)(async(e,t)=>{let n=r.get(e)?.outgoing.find(e=>e.localId===t);n!==void 0&&await f(e,t,n.text)},[r,f]),h=(0,D.useCallback)((e,t)=>{i({type:`outgoing-removed`,roomPath:e,localId:t})},[]),g=(0,D.useCallback)(async(n,a)=>{let c=r.get(n),l=c?.direct,u=o.current.get(n);if(l===void 0||u===void 0)throw Error(`durable notices need a direct connection`);let d=c?.token??s.current.get(n);d===void 0&&(d=(await iT(l,n)).token,s.current.set(n,d),i({type:`token`,roomPath:n,token:d})),await ZT({session:l,identity:e,clock:t,revocation:cw,ownRoomMemberToken:d,roomPath:n,roomKeys:u.roomKeys}),await u.wiring.post({room:n,token:d,contentType:`text/plain`,plaintext:new TextEncoder().encode(a)}),u.refresh()},[r,e,t]),_=(0,D.useCallback)(e=>{i({type:`read`,roomPath:e})},[]),v=(0,D.useCallback)((e,t)=>{let r=fx(a,Uy(t)),o=[Uy(t)];i({type:`relay-opened`,roomPath:r,participants:o,route:{hub:e,peer:t}}),n.list(r).then(e=>{i({type:`restored`,roomPath:r,participants:o,messages:e})})},[a,n]),y=(0,D.useCallback)(n=>{let r=new Map;(async()=>{for await(let i of n.incomingManageRequests){let o=i.fromDevice;if(o===void 0)continue;let s=Uy(o),c=r.get(s);if(c===void 0){c=Cb(),r.set(s,c);let i=fx(a,s);v(n,o),aT({incomingManageRequests:c.stream},{identity:e,clock:t,revocation:cw,peerDevice:o,currentMembers:()=>[e.deviceId,o]},l(i,void 0))}c.push(i)}})()},[e,t,a,v]),b=(0,D.useCallback)(e=>{i({type:`hub-closed`,hub:e})},[]);return{conversations:[...r.values()],openRelay:v,watchHub:y,dropHub:b,attach:u,send:p,retry:m,discard:h,postNotice:g,markRead:_}}function rE(e,t){let n=new Map(t.map(e=>[e,Cb()]));return(async()=>{for await(let t of e)n.get(t.command.verb)?.push(t)})(),{stream:e=>{let t=n.get(e);if(t===void 0)throw Error(`the demux was not built to carry verb ${e}`);return t.stream}}}var iE=8787,aE=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function oE(e){return aE.test(e)}async function sE(e=iE){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 cE(e=typeof location>`u`?``:location.host){return oE(e)?Promise.resolve(void 0):sE()}var lE=`q7ltm10`,uE=/^([a-z][a-z0-9+.-]*):\/\//i,dE={ws:`ws:`,wss:`wss:`,http:`ws:`,https:`wss:`};function fE(e){if(Tl(e))return e;let t=uE.exec(e);if(t===null)return`ws://${e}`;let n=dE[t[1]?.toLowerCase()??``];if(n===void 0)return e;let r=new URL(e);return r.protocol=n,r.hash=``,r.toString()}var pE=`ws://localhost:8787`,mE=[`core/management`,`core/exec`,`core/data`],hE=[`core/management`,`core/data`],gE=5,_E=1e3,vE=3e4,yE=2,bE={maxAttempts:gE,delayMs:e=>Math.min(_E*yE**(e-1),vE)},xE=[JC,Ww];function SE({identity:e,clock:t,messageStore:n,certificateMemory:r,discoverLocalNode:i=cE,defaultAddress:a=pE}){let[o,s]=(0,D.useState)(a),[c,l]=(0,D.useState)(hE),[u,d]=(0,D.useState)([]),[f,p]=(0,D.useState)([]),[m,h]=(0,D.useState)([]),g=nE(e,t,n),[_,v]=(0,D.useState)(),y=g.conversations.find(e=>e.roomPath===_)??g.conversations[0],{markRead:b}=g,x=y?.roomPath,S=y?.unread??0;(0,D.useEffect)(()=>{x!==void 0&&S>0&&b(x)},[x,S,b]);let C=(0,D.useRef)(g.watchHub);(0,D.useEffect)(()=>{C.current=g.watchHub},[g.watchHub]);let w=(0,D.useRef)(g.attach);(0,D.useEffect)(()=>{w.current=g.attach},[g.attach]);let T=(0,D.useRef)(u);(0,D.useEffect)(()=>{T.current=u},[u]);let ee=(0,D.useRef)(c);(0,D.useEffect)(()=>{ee.current=c},[c]);function te(n,r){let i=rE(r.incomingManageRequests,xE),a=mw({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(JC)},{identity:e,clock:t,iceServers:Px,onIncomingConnection:e=>{w.current(e)}});C.current({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(Ww)}),d(e=>[...e,{address:n,session:r,negotiator:a}])}async function E(e){return new Promise(t=>{p(n=>[...n,{key:_w(e.device),device:e.device,addresses:e.addresses,resolve:t}])})}function ne(e,t){p(n=>(n.find(t=>t.key===e)?.resolve(t),n.filter(t=>t.key!==e)))}function O(){let n={current:null},i=ax(Nx(r),e,t,bE,[],e=>{n.current?.considerAdvert(e)});return n.current=cx({selfDeviceId:e.deviceId,shouldExpand:E,dial:re,onExpanded:(e,t,n)=>{te(t,n)}}),i}async function re(e){let t=O();return t.connect(fE(e),ee.current).then(()=>t)}function k(e){if(T.current.some(t=>t.address===e))return;let t=O();te(e,t),t.connect(fE(e),c).catch(()=>{})}let ie=(0,D.useRef)(k);(0,D.useEffect)(()=>{ie.current=k});let ae=(0,D.useRef)(i);(0,D.useEffect)(()=>{ae.current=i},[i]);let A=(0,D.useRef)(!1);(0,D.useEffect)(()=>{A.current||(A.current=!0,ae.current().then(e=>{e!==void 0&&ie.current(e)}))},[]);function j(e){e.preventDefault(),k(o)}function oe(e){g.dropHub(e.session),e.session.close(),d(t=>t.filter(t=>t.session!==e.session))}function se(t,n){g.openRelay(t.session,n),v(fx(Uy(e.deviceId),Uy(n))),t.negotiator.initiate(n).then(async e=>g.attach(e,n)).catch(e=>{h(t=>[...t,{key:crypto.randomUUID(),peer:_w(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,M.jsxs)(Za,{className:lE,p:`md`,gap:`lg`,children:[(0,M.jsx)(Co,{order:1,children:`wire-mesh console`}),(0,M.jsxs)(`form`,{onSubmit:j,children:[(0,M.jsxs)(mi,{align:`flex-end`,wrap:`wrap`,children:[(0,M.jsx)(_o,{label:`Node`,value:o,onChange:e=>{s(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:c,onChange:l,children:(0,M.jsx)(mi,{mt:`xs`,children:mE.map(e=>(0,M.jsx)(_a,{value:e,label:e},e))})})]}),(0,M.jsx)(Sw,{peers:f,onConnect:e=>{ne(e,!0)},onDismiss:e=>{ne(e,!1)}}),u.map(e=>(0,M.jsx)(xw,{address:e.address,session:e.session,onClose:()=>{oe(e)},onMessagePeer:t=>{se(e,t)}},e.address)),m.map(e=>(0,M.jsxs)(Wi,{color:`yellow`,title:`No direct connection to ${e.peer}`,withCloseButton:!0,onClose:()=>{h(t=>t.filter(t=>t.key!==e.key))},children:[e.reason,`. Messages go through the hub instead.`]},e.key)),(0,M.jsx)(Mw,{conversations:g.conversations,selected:y?.roomPath,onSelect:v}),y!==void 0&&(0,M.jsx)(Uw,{view:y,onSend:async e=>g.send(y.roomPath,e),onPostNotice:async e=>g.postNotice(y.roomPath,e),onRetry:e=>{g.retry(y.roomPath,e)},onDiscard:e=>{g.discard(y.roomPath,e)}},y.roomPath)]})}var CE=`modulepreload`,wE=function(e){return`/`+e},TE={},EE=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=wE(t,n),t=s(t),t in TE)return;TE[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`:CE,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)})},DE=`false`,OE=`false`,kE=DE===`true`,AE=OE===`true`;function jE(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,kE||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await EE(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()},!AE){if(kE)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 ME(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,[c,l]=(0,D.useState)(!1),[u,d]=(0,D.useState)(!1),[f]=(0,D.useState)(()=>jE({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 NE(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=ME();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 PE=`ws://localhost:8787`;function FE(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function IE(e,t){return e?PE:FE(t)}var LE=await vl(await No()),RE={now:()=>Date.now()},zE=Qy(await No()),BE=Gy(await No()),VE=IE(!1,window.location),HE=document.getElementById(`root`);if(HE===null)throw Error(`missing #root element`);(0,wo.createRoot)(HE).render((0,M.jsx)(D.StrictMode,{children:(0,M.jsxs)(Vt,{children:[(0,M.jsx)(SE,{identity:LE,clock:RE,messageStore:zE,certificateMemory:BE,defaultAddress:VE}),(0,M.jsx)(NE,{})]})}));
|
|
72
|
+
`,t:` `,r:`\r`,f:`\f`,v:`\v`},BS=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 AS(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()||RS.has(this.peek()??``))return{kind:`concat`,operands:[]};let e=this.parseQuantified(),t=[];for(;!this.atEnd()&&!RS.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 AS(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 AS(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 AS(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 AS(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 AS(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 AS(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 AS(this.pattern,this.pos,`expected ')' to close '(?:'`);return this.advance(),t}parseEscapedAtom(){let e=this.pos;if(this.advance(),this.atEnd())throw new AS(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 LS(t);let n=zS[t];if(n!==void 0)return{kind:`literal`,codeUnit:n.charCodeAt(0)};throw new AS(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 AS(this.pattern,e,`unterminated character class -- missing closing ']'`);if(this.peek()===`]`){if(n.length===0)throw new AS(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 AS(this.pattern,e,`trailing backslash with nothing to escape`);let t=this.advance();if(t===`d`||t===`w`||t===`s`)return LS(t).ranges;if(t===`D`||t===`W`||t===`S`)throw new AS(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=zS[t];if(n===void 0)throw new AS(this.pattern,e,`unknown escape sequence '\\${t}'`);return this.parseOptionalRangeFrom(n.charCodeAt(0))}if(e===void 0)throw new AS(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 AS(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 AS(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 AS(this.pattern,e,`a shorthand class ('\\${t}') cannot be a range endpoint`);let n=zS[t];if(n===void 0)throw new AS(this.pattern,e,`unknown escape sequence '\\${t}'`);return n.charCodeAt(0)}if(e===void 0)throw new AS(this.pattern,this.pos,`unterminated character class -- missing closing ']'`);return this.advance(),e.charCodeAt(0)}};function VS(e){let t=new BS(e),n=t.parseAlternation();if(!t.atEnd())throw new AS(e,t.position,`unexpected character -- if this was meant literally, escape it with a backslash`);return n}var HS=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=>kS(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 US(e){return new HS().build(e)}function WS(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 GS(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 KS(e,t){let n=t.length,r=WS(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=GS(e,r,a);if(o.add(e.start),r=WS(e,[...o],i+1,n),r.has(e.matchState))return!0}return!1}function qS(e){let t=US(VS(e));return{test:e=>KS(t,e)}}function JS(e,t){if(e.status===`definite`&&!e.value||t.status===`definite`&&!t.value)return Q(!1);let n=Hx(e,t);return n===void 0?Q(!0):{status:`indeterminate`,reason:n}}function YS(e,t){if(e.status===`definite`&&e.value||t.status===`definite`&&t.value)return Q(!0);let n=Hx(e,t);return n===void 0?Q(!1):{status:`indeterminate`,reason:n}}function XS(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 ZS={ms:1,s:1e3,min:6e4,h:36e5,d:864e5};function QS(e,t){return e*ZS[t]}function $S(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function eC(e){return $(`wrong-type`,`'${e}' is not a parseable ISO-8601 timestamp`)}function tC(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 nC(e,t,n){switch(t.kind){case`number`:return n.kind===`number`?zx(t.unit,n.unit)?Q(XS(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=$S(t.value);if(r===void 0)return eC(t.value);let i=$S(n.value);return i===void 0?eC(n.value):Q(XS(e,r,i))}case`duration`:return n.kind===`duration`?Q(XS(e,QS(t.value,t.unit),QS(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`?zx(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 rC(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=qS(n.value)}catch(e){let t=e instanceof AS?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 iC(e,t){switch(e.kind){case`number`:return t.kind===`number`?zx(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=$S(e.value);if(n===void 0)return eC(e.value);let r=$S(t.value);return r===void 0?eC(t.value):Q(n===r)}case`duration`:return t.kind===`duration`?Q(QS(e.value,e.unit)===QS(t.value,t.unit)):$(`wrong-type`,`cannot compare a 'duration' value with a '${t.kind}' value for membership`);case`complex`:return t.kind===`complex`?zx(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 aC(e){return zx(e,void 0)}function oC(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 sC(e,t,n){switch(e){case`add`:return zx(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 zx(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:Bx(t.unit,n.unit)});case`divide`:return n.value===0?$(`domain-error`,`division by zero`):Q({kind:`number`,value:t.value/n.value,unit:Vx(t.unit,n.unit)});case`power`:return!aC(t.unit)||!aC(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!aC(t.unit)||!aC(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 cC(e,t,n){switch(e){case`add`:return Q({kind:`duration`,value:QS(t.value,t.unit)+QS(n.value,n.unit),unit:`ms`});case`subtract`:return Q({kind:`duration`,value:QS(t.value,t.unit)-QS(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 lC(e){return e.kind===`complex`?e:{kind:`complex`,re:e.value,im:0,unit:e.unit}}function uC(e,t){return{kind:`complex`,re:e.re*t.re-e.im*t.im,im:e.re*t.im+e.im*t.re,unit:Bx(e.unit,t.unit)}}function dC(e,t,n){switch(e){case`add`:return zx(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 zx(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(uC(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:Vx(t.unit,n.unit)})}case`modulo`:return $(`domain-error`,`'modulo' is undefined for complex values`);default:throw Error(`unreachable arithmetic operator`)}}function fC(e,t){if(t.kind!==`number`||!Number.isInteger(t.value))return $(`wrong-type`,`'power' with a complex operand requires a real integer exponent`);if(!aC(e.unit)||!aC(t.unit))return $(`wrong-type`,`'power' requires dimensionless operands`);let n={kind:`complex`,re:1,im:0,unit:{}},r=lC(e),i=n;for(let e=0;e<Math.abs(t.value);e+=1)i=uC(i,r);return t.value>=0?Q(i):dC(`divide`,n,i)}function pC(e,t,n){if(t.kind===`instant`&&n.kind===`instant`&&e===`subtract`){let e=$S(t.value);if(e===void 0)return eC(t.value);let r=$S(n.value);return r===void 0?eC(n.value):Q({kind:`duration`,value:e-r,unit:`ms`})}if(t.kind===`instant`&&n.kind===`duration`&&e===`add`){let e=$S(t.value);return e===void 0?eC(t.value):tC(e+QS(n.value,n.unit))}if(t.kind===`duration`&&n.kind===`instant`&&e===`add`){let e=$S(n.value);return e===void 0?eC(n.value):tC(e+QS(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`?cC(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`?fC(t,n):dC(e,lC(t),lC(n)):sC(e,t,n)}function mC(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(!zx(e,t.unit))return $(`wrong-type`,`the resolved value's unit does not match the reference's expected unit`)}}function hC(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 gC(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 gC(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([gC(e.left,t,n,r,i,a,o,s,c+1),gC(e.right,t,n,r,i,a,o,s,c+1)]);return JS(l,u)}case`or`:{let[l,u]=await Promise.all([gC(e.left,t,n,r,i,a,o,s,c+1),gC(e.right,t,n,r,i,a,o,s,c+1)]);return YS(l,u)}case`allOf`:return(await Promise.all(e.operands.map(async e=>gC(e,t,n,r,i,a,o,s,c+1)))).reduce(JS,Q(!0));case`anyOf`:return(await Promise.all(e.operands.map(async e=>gC(e,t,n,r,i,a,o,s,c+1)))).reduce(YS,Q(!1));case`compare`:{let[l,u]=await Promise.all([_C(e.left,t,n,r,i,a,o,s,c+1),_C(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:nC(e.op,l.value,u.value)}case`textCompare`:{let[l,u]=await Promise.all([_C(e.left,t,n,r,i,a,o,s,c+1),_C(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:rC(e.op,l.value,u.value)}case`memberOf`:{let l=await _C(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 _C(e,t,n,r,i,a,o,s,c+1);return u.status===`indeterminate`?u:iC(l.value,u.value)}));for(let t of u)if(t.status===`definite`&&t.value)return Q(e.op===`in`);let d=Hx(...u);return d===void 0?Q(e.op===`notIn`):{status:`indeterminate`,reason:d}}case`exists`:{let l=await _C(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 ES(gC,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`?gC(e.item,t,n,void 0,i,a,o,s,c+1):r}))).filter(e=>e!==void 0),u=e.kind===`some`?YS:JS,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=sS.safeParse(u.node);return d.success?gC(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 _C(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=mC(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=>_C(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 hC(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(Fx(e.magnitude,e.phase,e.unit));case`arithmetic`:{let[l,u]=await Promise.all([_C(e.left,t,n,r,i,a,o,s,c+1),_C(e.right,t,n,r,i,a,o,s,c+1)]);return l.status===`indeterminate`?l:u.status===`indeterminate`?u:pC(e.op,l.value,u.value)}case`negate`:{let l=await _C(e.operand,t,n,r,i,a,o,s,c+1);return l.status===`indeterminate`?l:oC(l.value)}case`lookup`:{let l=await Promise.all(e.keys.map(async e=>_C(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 gC(l,t,n,r,i,a,o,s,c+1);if(e.status===`indeterminate`)return e;if(e.value)return _C(u,t,n,r,i,a,o,s,c+1)}return _C(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 gC(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=Hx(...l.map(({whenResult:e})=>e));if(d!==void 0)return{status:`indeterminate`,reason:d};let[f]=u;return _C(f===void 0?e.fallback:f.then,t,n,r,i,a,o,s,c+1)}case`fold`:{let r=await ES(gC,e.collection,e.filter,t,n,i,a,o,s,c+1),l=DS(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 _C(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 _C(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 _C(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=nC(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=SS.safeParse(u.node);return d.success?_C(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 vC({functions:e=CS,maxNodes:t=wS,maxNestingDepth:n=500}){return{evaluatePredicate:async(r,i,a)=>gC(r,i,a,void 0,e,new Set,0,TS(t,n),0),evaluateValue:async(r,i,a)=>_C(r,i,a,void 0,e,new Set,0,TS(t,n),0)}}var{evaluatePredicate:yC,evaluateValue:bC}=vC({}),xC=o_(sS),SC=`bearer-is`,CC=`expires-at`,wC=`scope-narrows`,TC=`capability-is`,EC=`depth-remaining`,DC=[SC,CC,wC,TC,EC];function OC(e){return e===`bearer-is`||e===`expires-at`||e===`scope-narrows`||e===`capability-is`||e===`depth-remaining`}function kC(e){return{found:!0,value:{kind:`boolean`,value:e}}}var AC={[SC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(ib(t.parentClaims.bearer,t.childIssuer)),[CC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(t.candidate.expires<=t.parentClaims.expires),[wC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(sb(t.parentClaims.scope,t.candidate.scope)),[TC]:(e,t)=>t.parentClaims===void 0?kC(!1):kC(t.parentClaims.capability===t.candidate.capability),[EC]:(e,t)=>{if(t.parentClaims===void 0)return kC(!1);let n=t.parentClaims[`delegations-remaining`];return kC(n===void 0||t.candidate.delegationsRemaining!==void 0&&t.candidate.delegationsRemaining<n)}};function jC(e){return{kind:`compare`,op:`eq`,left:{kind:`delegate`,system:e,payload:null},right:{kind:`booleanLiteral`,value:!0}}}var MC=async()=>Promise.resolve({found:!1}),NC=async()=>Promise.resolve({found:!1}),PC=async()=>Promise.resolve([]);async function FC(e,t,n){let r={childIssuer:t,candidate:n,parentClaims:e},i={resolveValue:MC,resolveLookup:NC,resolveCollection:PC,resolveDelegate:async(e,t)=>OC(e)?AC[e](t,r):{found:!1}};for(let e of DC){let t=await yC(jC(e),r,i);if(t.status!==`definite`||!t.value)return e}}async function IC(e,t,n,r={}){let i={clock:n,claims:t},a={resolveValue:MC,resolveLookup:NC,resolveCollection:PC,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 yC(t,i,a);if(e.status!==`definite`||!e.value)return{ok:!1,reason:`not_satisfied`}}return{ok:!0}}function LC(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function RC(e){return Uint8Array.from(e)}function zC(e){return RC(hc(e,Qs))}function BC(e){return zC({1:e.identityKey.alg,4:e.deviceId})}function VC(e){let[,,t]=e;if(t===null)return;let n;try{n=rl(t,il)}catch{return}let r=_y.safeParse(n);return r.success?r.data:void 0}async function HC(e,t){let n=await WC(e,{identity:t.identity,clock:t.clock,revocation:t.revocation,...t.extraPredicateResolvers===void 0?{}:{extraPredicateResolvers:t.extraPredicateResolvers}});return n.ok&&t.expectedBearer!==void 0&&!ib(n.claims.bearer,t.expectedBearer)?{ok:!1,reason:`bearer_mismatch`}:n}async function UC(e,t,n){if(ib(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=gy.safeParse(r);if(!i.success)return!1;let a=await HC(i.data,{...n,expectedBearer:e.issuer});return a.ok&&a.claims.capability===`manage:revoke`&&sb(a.claims.scope,t.scope)}async function WC(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=_y.safeParse(a);if(!o.success)return{ok:!1,reason:`malformed`};let s=o.data;if(!await t.identity.verify(s[`issuer-key`],LC(n,r),i))return{ok:!1,reason:`bad_signature`};if(!ib(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 UC(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=xC.safeParse(e);if(!n.success)return{ok:!1,reason:`conditions_invalid`};if(!(await IC(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=gy.safeParse(e);if(!n.success)return{ok:!1,reason:`parent_invalid`};let r=await WC(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 FC(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 GC={"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 KC(e,t,n){let r=await FC(e,t,n);return r===void 0?void 0:GC[r]}async function qC(e){if(e.expires<=e.clock.now())return{ok:!1,reason:`already_expired`};let t;if(e.parent!==void 0){let n=VC(e.parent);if(n===void 0)return{ok:!1,reason:`parent_malformed`};let r=await KC(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=zC(e.parent)}let n=zC({"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:zC(e.conditions)}}),r=BC(e.identity);return{ok:!0,token:[r,{},n,await e.identity.sign(LC(r,n))]}}var JC=`webrtc:signal`,YC={kind:`node`};function XC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.offer`}function ZC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.answer`}function QC(e){return typeof e==`object`&&`verb`in e&&e.verb===`webrtc.ice-candidate`}function $C(e,t){return{verb:JC,params:{verb:`webrtc.offer`,"negotiation-id":e,sdp:t}}}function ew(e,t){return{verb:JC,params:{verb:`webrtc.answer`,"negotiation-id":e,sdp:t}}}function tw(e,t){return{verb:JC,params:{verb:`webrtc.ice-candidate`,"negotiation-id":e,...t===void 0?{}:{candidate:t}}}}function nw(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 rw(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 iw(){let e=0;return()=>{let t=e;return e+=1,t}}async function aw(e,t){if(e.token===void 0)return!1;let n=await HC(e.token,t);return n.ok?n.claims.capability===`webrtc:signal`&&n.claims.scope.kind===YC.kind:!1}function ow(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=nb(r.data)}catch(t){if(t instanceof tb)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($y(t)),Promise.resolve()):Promise.reject(Error(`data channel is not open (state: ${e.readyState})`))},receive:()=>s,async close(){return e.close(),Promise.resolve()}}}var sw=`wire-mesh`,cw={entriesFor:async()=>Promise.resolve([])};function lw(e,t){for(let n of t.localTracks??[])e.addTrack(n);t.onRemoteTrack!==void 0&&e.addEventListener(`track`,t.onRemoteTrack)}function uw(e,t){e.addEventListener(`open`,()=>{t(ow(e))},{once:!0})}var dw=16,fw=36e5;async function pw(e,t){let n=new Uint8Array(dw);crypto.getRandomValues(n);let r=await qC({identity:e,clock:t,tokenId:n,bearer:e.deviceId,capability:JC,scope:YC,expires:t.now()+fw});if(!r.ok)throw Error(`could not mint a webrtc:signal token: ${r.reason}`);return r.token}function mw(e,t){let n={identity:t.identity,clock:t.clock,revocation:cw},r=new Map,i=new Map,a=iw();async function o(t,n){let r=tw(t,n===null?void 0:nw(n));await e.sendManageRequest(r,YC,i.get(t))}async function s(a,s){if(!await aw(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),lw(l,t),l.addEventListener(`icecandidate`,e=>{o(c,e.candidate)}),l.addEventListener(`datachannel`,e=>{e.channel.binaryType=`arraybuffer`,uw(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(ew(c,u.sdp??``),YC,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:rw(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;XC(e)?await s(t,e):ZC(e)?await c(t,e):QC(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),lw(c,t),c.addEventListener(`icecandidate`,e=>{o(s,e.candidate)});let l=c.createDataChannel(sw);l.binaryType=`arraybuffer`;let u=new Promise((e,t)=>{uw(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($C(s,d.sdp??``),YC,n,await pw(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 hw(e){let[t,n]=(0,D.useState)(void 0);return(0,D.useEffect)(()=>{let t={cancelled:!1};return(async()=>{for await(let r of e.events){if(t.cancelled)return;n(r)}})(),()=>{t.cancelled=!0}},[e]),t}var gw=`local-network-access`,_w=4,vw=255,yw=8,bw=32,xw=[`10.0.0.0/8`,`127.0.0.0/8`,`172.16.0.0/12`,`192.168.0.0/16`,`169.254.0.0/16`,`100.64.0.0/10`];function Sw(e){let t=e.split(`.`);if(t.length!==_w)return;let n=0;for(let e of t){let t=/^\d{1,3}$/.test(e)?Number(e):NaN;if(!(t<=vw))return;n=n*2**yw+t}return n}function Cw(e,t){let[n,r]=t.split(`/`),i=Sw(n??``),a=Number(r);if(i===void 0)return!1;let o=2**(bw-a);return Math.floor(e/o)===Math.floor(i/o)}function ww(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase(),n=Sw(t);return n===void 0?t.includes(`:`)?t===`::1`||/^f[cd]/.test(t)||/^fe[89ab]/.test(t):t===`localhost`||t.endsWith(`.local`)||!t.includes(`.`):xw.some(e=>Cw(n,e))}function Tw(e){try{return new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?e:`ws://${e}`).hostname}catch{return}}function Ew(e){return typeof e==`object`&&!!e&&`name`in e&&typeof e.name==`string`}function Dw(){if(`permissions`in navigator)return{query:async e=>{if(!Ew(e))throw TypeError(`not a permission descriptor`);return navigator.permissions.query(e)}}}async function Ow(e,t,n){let r=Tw(e);if(r!==void 0&&ww(r)&&!ww(t)&&n!==void 0)try{let{state:e}=await n.query({name:gw});return e===`denied`?`Your browser blocked this page from reaching ${r}, a device on your local network. Allow "Local network access" for this site in the browser's site settings (the icon left of the address), then connect again.`:void 0}catch{return}}var kw=16;function Aw(e){let t=``;for(let n of e)t+=n.toString(kw).padStart(2,`0`);return t}function jw(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 Mw(e){let{state:t}=e;switch(t.status){case`connecting`:return`connecting…`;case`connected`:return`connected${jw(e)}`;case`reconnecting`:return`reconnecting (attempt ${String(t.attempt)}, ${t.reason})…`;case`closed`:return`closed (${t.reason})`;case`idle`:return`idle`}return``}function Nw(e){return JSON.stringify(e,(e,t)=>t instanceof Uint8Array?`<${String(t.byteLength)} bytes>`:t)}function Pw({address:e,session:t,onClose:n,onMessagePeer:r,pageHost:i=window.location.hostname,permissions:a=Dw()}){let o=hw(t),s=o?.state.status===`reconnecting`||o?.state.status===`closed`,[c,l]=(0,D.useState)(void 0);(0,D.useEffect)(()=>{let t={value:!0};return s&&Ow(e,i,a).then(n=>{t.value&&l({address:e,message:n})}),()=>{t.value=!1}},[s,e,i,a]);let u=s&&c?.address===e?c.message:void 0,d=o===void 0?`idle`:Mw(o),f=o?.directory??[],p=o?.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:o?.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:d}),u===void 0?null:(0,M.jsx)(Wi,{color:`yellow`,mb:`sm`,children:u}),(0,M.jsx)(Yi,{fw:600,size:`sm`,children:`Peer directory`}),f.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:f.map(e=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:Aw(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`})})]},Aw(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:p.map((e,t)=>(0,M.jsxs)(F.Tr,{children:[(0,M.jsx)(F.Td,{children:e.direction}),(0,M.jsx)(F.Td,{children:Nw(e.frame)})]},t))})]})})]})}function Fw({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:Aw(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 Iw(e,t){return e.sentAt===t.sentAt?Hy(e.messageId).localeCompare(Hy(t.messageId)):e.sentAt-t.sentAt}function Lw(e,t){let n=new Set(e.map(e=>Hy(e.messageId))),r=t.filter(e=>!n.has(Hy(e.messageId)));return r.length===0?e:[...e,...r].sort(Iw)}function Rw(e,t,n){let r=e.get(t);return r===void 0?e:new Map(e).set(t,n(r))}function zw(e,t){return{roomPath:e,participants:t,direct:void 0,relay:void 0,via:void 0,token:void 0,status:`closed`,messages:[],notices:[],outgoing:[],pendingJoinRequest:void 0,unread:0}}function Bw(e,t,n){let r=t===void 0?n===void 0?void 0:`hub`:`direct`;return{...e,direct:t,relay:n,via:r,status:r===void 0?`closed`:`connected`}}function Vw(e,t){switch(t.type){case`direct-opened`:{let n=e.get(t.roomPath)??zw(t.roomPath,t.participants);return new Map(e).set(t.roomPath,{...Bw(n,t.session,n.relay),participants:t.participants,notices:[]})}case`relay-opened`:{let n=e.get(t.roomPath)??zw(t.roomPath,t.participants);return new Map(e).set(t.roomPath,Bw(n,n.direct,t.route))}case`direct-closed`:return Rw(e,t.roomPath,e=>Bw(e,void 0,e.relay));case`hub-closed`:{let n=e;for(let r of e.values())r.relay?.hub===t.hub&&(n=Rw(n,r.roomPath,e=>Bw(e,e.direct,void 0)));return n}case`restored`:return e.get(t.roomPath)===void 0?new Map(e).set(t.roomPath,{...zw(t.roomPath,t.participants),messages:Lw([],t.messages)}):Rw(e,t.roomPath,e=>({...e,messages:Lw(e.messages,t.messages)}));case`notices`:return Rw(e,t.roomPath,e=>({...e,notices:t.notices}));case`message`:return Rw(e,t.roomPath,e=>{let n=Lw(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 Rw(e,t.roomPath,e=>e.unread===0?e:{...e,unread:0});case`outgoing`:return Rw(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 Rw(e,t.roomPath,e=>({...e,outgoing:e.outgoing.filter(e=>e.localId!==t.localId)}));case`join-request`:return Rw(e,t.roomPath,e=>({...e,pendingJoinRequest:t.request}));case`join-request-settled`:return Rw(e,t.roomPath,e=>({...e,pendingJoinRequest:void 0}));case`token`:return Rw(e,t.roomPath,e=>({...e,token:t.token}))}return e}function Hw(e,t){let n=px(e);return n.kind===`dm`?n.participants.filter(e=>e!==t):n.owner===t?[]:[n.owner]}var Uw=12;function Ww(e){return e.participants.length===0?e.roomPath:e.participants.map(e=>e.slice(0,Uw)).join(`, `)}function Gw({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:Ww(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 Kw({placeholder:e,ariaLabel:t,submitLabel:n,onSubmit:r,onCancel:i,size:a,autoFocus:o}){let[s,c]=(0,D.useState)(``),[l,u]=(0,D.useState)(void 0);function d(){let e=s.trim();e!==``&&(u(void 0),Promise.resolve(r(e)).then(()=>{c(``)}).catch(e=>{u(e instanceof Error?e.message:String(e))}))}function f(e){e.key===`Enter`&&d(),e.key===`Escape`&&i?.()}return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(mi,{gap:`xs`,flex:1,children:[(0,M.jsx)(_o,{flex:1,...a===void 0?{}:{size:a},placeholder:e,"aria-label":t,autoComplete:`off`,autoFocus:o,value:s,onChange:e=>{c(e.currentTarget.value)},onKeyDown:f}),(0,M.jsx)(ka,{...a===void 0?{}:{size:a},onClick:d,children:n})]}),l!==void 0&&(0,M.jsx)(Yi,{size:`sm`,c:`red`,children:l})]})}var qw=`You`,Jw=256,Yw=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`});function Xw({sentAt:e}){return(0,M.jsx)(Yi,{component:`time`,size:`xs`,c:`dimmed`,dateTime:new Date(e).toISOString(),children:Yw.format(e)})}function Zw({messages:e,outgoing:t,peerLabel:n,onRetry:r,onDiscard:i}){let a=(0,D.useRef)(null);return(0,D.useEffect)(()=>{let e=a.current;e!==null&&(e.scrollTop=e.scrollHeight)},[e,t]),(0,M.jsx)(Lr,{h:Jw,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?qw:n}),(0,M.jsx)(Yi,{size:`sm`,children:t.text}),(0,M.jsx)(Xw,{sentAt:t.sentAt})]},Hy(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:qw}),(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 Qw(e){if(e.plaintext!==void 0)return new TextDecoder().decode(e.plaintext)}function $w({notices:e}){if(e.length===0)return null;let t=e.map((e,t)=>{let n=Qw(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 eT=864e5;function tT(e){return e===`direct`?`direct`:e===`hub`?`via hub`:`offline`}function nT({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:tT(e.via)})]}),e.pendingJoinRequest&&(0,M.jsx)(Wi,{color:`blue`,title:`Message request`,children:(0,M.jsxs)(mi,{justify:`space-between`,children:[(0,M.jsxs)(Yi,{size:`sm`,children:[e.pendingJoinRequest.requesterHex,` wants to message you`]}),(0,M.jsxs)(mi,{children:[(0,M.jsx)(ka,{size:`xs`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`accept`,capability:`room:member`,expires:Date.now()+eT})},children:`Allow`}),(0,M.jsx)(ka,{size:`xs`,color:`red`,variant:`light`,onClick:()=>{e.pendingJoinRequest?.decide({kind:`reject`})},children:`Deny`})]})]})}),(0,M.jsx)(Zw,{messages:e.messages,outgoing:e.outgoing,peerLabel:Ww(e),onRetry:r,onDiscard:i}),(0,M.jsx)(mi,{children:(0,M.jsx)(Kw,{ariaLabel:`Message`,placeholder:`Message`,submitLabel:`Send`,onSubmit:t})}),(0,M.jsx)(Ba,{label:`Durable notices (encrypted, replicated)`,labelPosition:`center`}),(0,M.jsx)($w,{notices:e.notices}),e.via===`direct`?(0,M.jsx)(mi,{children:(0,M.jsx)(Kw,{ariaLabel:`Post a durable notice`,placeholder:`Post a durable notice`,submitLabel:`Post notice`,onSubmit:n})}):(0,M.jsx)(Yi,{size:`sm`,c:`dimmed`,children:`Durable notices need a direct connection.`})]})}var rT=`room:member`;async function iT(e,t){let n=await HC(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=px(t.roomPath),i=Uy(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!==Uy(t.identity.deviceId))return{ok:!1,reason:`wrong_chain_root`};return{ok:!0,claims:n.claims,rootIssuerKey:n.rootIssuerKey}}var aT=16;function oT(){let e=new Uint8Array(aT);return crypto.getRandomValues(e),e}function sT(e){typeof e==`object`&&e&&`unref`in e&&typeof e.unref==`function`&&Reflect.apply(e.unref,e,[])}function cT(e,t){return{verb:e,params:{verb:`capability.request`,capability:e,...t===void 0?{}:{"valid-until":t}}}}async function lT(e,t,n,r,i,a){let o=await e.sendManageRequest(cT(t,a),n,r,void 0,i);if(o.result!==`ok`)throw Error(`capability request for "${t}" was refused (${o.code})`);let s=Dv.safeParse(o);if(!s.success)throw Error(`capability request for "${t}" response was malformed`);return s.data}function uT(e){return async function(t){let n=Ev.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);sT(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 qC({identity:e.identity,clock:e.clock,tokenId:oT(),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 dT(e){return async function(t){if(t.command.verb!==e.capability){await t.respond({result:`error`,code:`malformed`});return}let n=Ov.safeParse(t.command.params);if(!n.success){await t.respond({result:`error`,code:`malformed`});return}let r=n.data[`granted-token`],i=await HC(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(!sb(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 fT=16;function pT(){let e=new Uint8Array(fT);return crypto.getRandomValues(e),e}var mT=3e5;function hT(e,t,n){return{verb:rT,params:{verb:`room.send`,"message-id":t,"sent-at":n,text:e}}}async function gT(e,t,n,r,i){let a=hT(n,pT(),Date.now());return e.sendManageRequest(a,{kind:`room`,path:t},i,r)}async function _T(e,t,n){let r=await lT(e,rT,{kind:`room`,path:t},n),i=Gv.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 vT(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 iT(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=uT({capability:rT,identity:t.identity,clock:t.clock,bearerDevice:t.peerDevice,timeoutMs:t.joinRequestTimeoutMs??mT,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=dT({capability:rT,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 yT(){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 bT=32,xT=256,ST=12,CT=4,wT=8,TT=new TextEncoder().encode(`wire-mesh/room-rekey/v1\0`);function ET(){return crypto.getRandomValues(new Uint8Array(bT))}function DT(e){let t=new TextEncoder().encode(e.room),n=new Uint8Array(CT);new DataView(n.buffer).setUint32(0,t.length,!1);let r=new Uint8Array(wT);new DataView(r.buffer).setBigUint64(0,BigInt(e.keyEpoch),!1);let i=new Uint8Array(TT.length+n.length+t.length+r.length),a=0;return i.set(TT,a),a+=TT.length,i.set(n,a),a+=n.length,i.set(t,a),a+=t.length,i.set(r,a),i}async function OT(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(DT(t))},n,{name:`AES-GCM`,length:xT},!1,[`encrypt`,`decrypt`])}async function kT(e,t){let n=crypto.getRandomValues(new Uint8Array(ST)),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 AT(e,t){if(t.length<ST)throw Error(`ciphertext shorter than the AES-GCM IV it must carry`);let n=t.slice(0,ST),r=t.slice(ST);return new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:n},e,r))}async function jT(e,t){return kT(e,t)}async function MT(e,t){return AT(e,t)}async function NT(e){return crypto.subtle.importKey(`raw`,Uint8Array.from(e),`AES-GCM`,!1,[`encrypt`,`decrypt`])}async function PT(e,t){return kT(await NT(e),t)}async function FT(e,t){return AT(await NT(e),t)}var IT=`+aes256gcm`;function LT(e){return zT(e)?e:`${e}${IT}`}function RT(e){return zT(e)?e.slice(0,e.length-10):e}function zT(e){return e.endsWith(IT)}function BT(e,t){return{verb:rT,params:{verb:`room.rekey`,"key-epoch":e,"wrapped-key":t}}}async function VT(e,t,n,r,i,a){return e.sendManageRequest(BT(n,r),{kind:`room`,path:t},i,a)}function HT(e){return async function(t){if(t.command.verb!==`room:member`){await t.respond({result:`error`,code:`malformed`});return}let n=Uv.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 iT(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)=>MT(await OT(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 UT(e){return`data/${Uy(e)}/head`}function WT(e,t){return`data/${Uy(e)}/entry/${String(t)}`}async function GT(e,t){let n=await e.get(UT(t));return n===void 0?0:Number(new TextDecoder().decode(n))}async function KT(e,t,n){await e.set(UT(t),new TextEncoder().encode(String(n)))}async function qT(e,t){return GT(e,t)}async function JT(e,t){let n=await GT(e.storage,e.identity.deviceId)+1;return await e.storage.set(WT(e.identity.deviceId,n),t),await KT(e.storage,e.identity.deviceId,n),{seq:n,haveFrame:{type:`data-have`,peer:e.identity.deviceId,"head-seq":n}}}async function YT(e,t,n){let r=await GT(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(WT(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 XT(e,t){let n=await GT(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(WT(t.peer,r),n);return await KT(e,t.peer,r),{ok:!0}}async function ZT(e,t,n){let r=await GT(e,t),i=[];for(let a=n+1;a<=r;a+=1){let n=await e.get(WT(t,a));if(n===void 0)break;i.push(n)}return i}function QT(e){return Uint8Array.from(e)}function $T(e){return QT(hc(e,Qs))}function eE(e){return $T({1:e.identityKey.alg,4:e.deviceId})}function tE(e,t){return hc([`Signature1`,e,new Uint8Array,t],Qs)}function nE(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 rE(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=qv.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`],tE(n,r),i))return{ok:!1,reason:`bad_signature`};if(!nE(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(zT(s[`content-type`])!==(l!==void 0))return{ok:!1,reason:`key_epoch_mismatch`};let u=await iT(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 iE(e){let t=$T({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=eE(e.identity);return[n,{},t,await e.identity.sign(tE(n,t))]}var aE=16;function oE(e){return new Uint8Array(hc(e,Qs))}function sE(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(aE)),c=await PT(o,e.plaintext),l=await iE({identity:t,clock:r,room:e.room,token:e.token,noticeId:s,contentType:LT(e.contentType),content:c,keyEpoch:i}),{haveFrame:u}=await JT({identity:t,storage:n},oE(l));return{dataHave:u,notice:l,keyEpoch:i}}async function s(e,t){let r=await qT(n,e);if(!(await XT(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 ZT(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 rE(o,{identity:t,clock:r,revocation:i,expectedRoom:n});if(!s.ok)return{verified:!1,reason:s.reason};let c=s.claims;if(!zT(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:RT(c[`content-type`]),claims:c};if(d===void 0)return f;try{let e=await FT(d,c.content);return{...f,plaintext:e}}catch{return f}}function u(e){try{let t=rl(e,il),n=Kv.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 cE=32;function lE(e){let{session:t,storage:n,identity:r,clock:i,revocation:a,roomKeys:o,onChange:s}=e,c=sE({identity:r,storage:n,clock:i,revocation:a,roomKeys:o}),l=new Map;async function u(e){let r=await qT(n,e);await t.sendDataFrame({type:`data-request`,peer:e,"from-seq":r})}function d(e){if(e.type===`data-have`){l.set(Uy(e.peer),e.peer),u(e.peer).catch(()=>void 0);return}if(e.type===`data-entries`){(async()=>{(await XT(n,e)).ok&&(e.entries.length>=cE&&await u(e.peer).catch(()=>void 0),s())})();return}e.type===`data-request`&&(async()=>{let r=await YT(n,e,cE);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 uE(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===``||Uy(n.deviceId)!==c)return;let l=await iT(a,{identity:n,clock:r,revocation:i,expectedBearer:n.deviceId,roomPath:o,dmRootPolicy:`either-participant`});if(!l.ok)throw Error(`own room token failed verification: ${l.reason}`);let u=n.deriveSharedSecret;if(u===void 0)throw Error(`this identity cannot derive ECDH shared secrets`);let d=ET(),f=await jT(await OT(await u(l.rootIssuerKey),{room:o,keyEpoch:1}),d);s.set(o,1,d),await VT(t,o,1,f)}var dE=[`core/management`,`core/room`],fE=16;function pE(){let e=new Uint8Array(fE);return crypto.getRandomValues(e),e}function mE(e){if(e?.direct!==void 0)return{session:e.direct,target:void 0};if(e?.relay!==void 0)return{session:e.relay.hub,target:e.relay.peer};throw Error(`conversation is not connected`)}function hE(e,t,n){let[r,i]=(0,D.useReducer)(Vw,new Map),a=Uy(e.deviceId);(0,D.useEffect)(()=>{let e=new AbortController;return(async()=>{for(let t of await n.roomPaths()){let r=await n.list(t);if(e.signal.aborted)return;i({type:`restored`,roomPath:t,participants:Hw(t,a),messages:r})}})(),()=>{e.abort()}},[n,a]);let o=(0,D.useRef)(new Map),s=(0,D.useRef)(new Map);function c(n,r){let a=new Map,o={get:async(e,t)=>Promise.resolve(a.get(e)?.get(t)),set:(e,t,n)=>{let r=a.get(e)??new Map;r.set(t,n),a.set(e,r)},currentEpoch:async e=>Promise.resolve([...a.get(e)?.keys()??[]].sort((e,t)=>t-e)[0])},s={},c=()=>{let e=s.wiring;e!==void 0&&e.readRoom(r).then(e=>{i({type:`notices`,roomPath:r,notices:[...e]})})},l=lE({session:n,storage:yT(),identity:e,clock:t,revocation:cw,roomKeys:o,onChange:()=>{c()}});return s.wiring=l,{wiring:l,roomKeys:o,refresh:c}}function l(r,a){return{onMessage:e=>{let t={direction:`received`,text:e.text,messageId:e.messageId,sentAt:e.sentAt};n.append(r,t),i({type:`message`,roomPath:r,message:t})},onJoinRequest:e=>{i({type:`join-request`,roomPath:r,request:{requesterHex:Uy(e.requesterDevice),async decide(t){i({type:`join-request-settled`,roomPath:r}),await e.decide(t)}}})},onRekey:async n=>{if(a===void 0){await n.respond({result:`error`,code:`unsupported_route`});return}let i=s.current.get(r);if(i===void 0){await n.respond({result:`error`,code:`no_token`});return}await HT({identity:e,clock:t,revocation:cw,ownRoomMemberToken:i,onRekey:e=>{e.contentKeys.forEach((t,n)=>{a.roomKeys.set(r,e.keyEpoch-e.contentKeys.length+1+n,t)}),a.refresh()}})(n)}}}let u=(0,D.useCallback)(async(s,u)=>{let d={},f=await ox(s,e,dE,{clock:t,onFrame:(e,t)=>{d.current?.(t)}}),p=u??await f.peerDeviceId,m=Uy(p),h=fx(a,m);if(r.get(h)?.direct!==void 0){await f.close();return}let g=c(f,h);o.current.set(h,g),d.current=e=>{g.wiring.handleFrame(e)},i({type:`direct-opened`,roomPath:h,participants:[m],session:f}),i({type:`restored`,roomPath:h,participants:[m],messages:await n.list(h)}),vT(f,{identity:e,clock:t,revocation:cw,peerDevice:p,currentMembers:()=>[e.deviceId,p]},l(h,g)),(async()=>{for await(let e of f.events)e.state.status===`closed`&&i({type:`direct-closed`,roomPath:h})})()},[e,t,a,r,n]),d=(0,D.useCallback)(async(a,c,l)=>{let u=r.get(a),{session:d,target:f}=mE(u),p=u?.token;if(p===void 0){l(`awaiting-approval`);let n=await _T(d,a,f);l(`sending`),p=n.token,s.current.set(a,p),i({type:`token`,roomPath:a,token:p});let r=o.current.get(a);u?.direct!==void 0&&r!==void 0&&uE({session:u.direct,identity:e,clock:t,revocation:cw,ownRoomMemberToken:p,roomPath:a,roomKeys:r.roomKeys}).catch(()=>void 0)}let m=await gT(d,a,c,p,f);if(m.result!==`ok`)throw Error(`send failed: ${m.code}`);let h={direction:`sent`,text:c,messageId:pE(),sentAt:t.now()};return await n.append(a,h),h},[r,t,n,e]),f=(0,D.useCallback)(async(e,t,n)=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`sending`}});try{let r=await d(e,n,r=>{i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:r}})});i({type:`message`,roomPath:e,message:r}),i({type:`outgoing-removed`,roomPath:e,localId:t})}catch(r){i({type:`outgoing`,roomPath:e,entry:{localId:t,text:n,status:`failed`,error:r instanceof Error?r.message:String(r)}})}},[d]),p=(0,D.useCallback)(async(e,t)=>f(e,crypto.randomUUID(),t),[f]),m=(0,D.useCallback)(async(e,t)=>{let n=r.get(e)?.outgoing.find(e=>e.localId===t);n!==void 0&&await f(e,t,n.text)},[r,f]),h=(0,D.useCallback)((e,t)=>{i({type:`outgoing-removed`,roomPath:e,localId:t})},[]),g=(0,D.useCallback)(async(n,a)=>{let c=r.get(n),l=c?.direct,u=o.current.get(n);if(l===void 0||u===void 0)throw Error(`durable notices need a direct connection`);let d=c?.token??s.current.get(n);d===void 0&&(d=(await _T(l,n)).token,s.current.set(n,d),i({type:`token`,roomPath:n,token:d})),await uE({session:l,identity:e,clock:t,revocation:cw,ownRoomMemberToken:d,roomPath:n,roomKeys:u.roomKeys}),await u.wiring.post({room:n,token:d,contentType:`text/plain`,plaintext:new TextEncoder().encode(a)}),u.refresh()},[r,e,t]),_=(0,D.useCallback)(e=>{i({type:`read`,roomPath:e})},[]),v=(0,D.useCallback)((e,t)=>{let r=fx(a,Uy(t)),o=[Uy(t)];i({type:`relay-opened`,roomPath:r,participants:o,route:{hub:e,peer:t}}),n.list(r).then(e=>{i({type:`restored`,roomPath:r,participants:o,messages:e})})},[a,n]),y=(0,D.useCallback)(n=>{let r=new Map;(async()=>{for await(let i of n.incomingManageRequests){let o=i.fromDevice;if(o===void 0)continue;let s=Uy(o),c=r.get(s);if(c===void 0){c=Cb(),r.set(s,c);let i=fx(a,s);v(n,o),vT({incomingManageRequests:c.stream},{identity:e,clock:t,revocation:cw,peerDevice:o,currentMembers:()=>[e.deviceId,o]},l(i,void 0))}c.push(i)}})()},[e,t,a,v]),b=(0,D.useCallback)(e=>{i({type:`hub-closed`,hub:e})},[]);return{conversations:[...r.values()],openRelay:v,watchHub:y,dropHub:b,attach:u,send:p,retry:m,discard:h,postNotice:g,markRead:_}}function gE(e,t){let n=new Map(t.map(e=>[e,Cb()]));return(async()=>{for await(let t of e)n.get(t.command.verb)?.push(t)})(),{stream:e=>{let t=n.get(e);if(t===void 0)throw Error(`the demux was not built to carry verb ${e}`);return t.stream}}}var _E=8787,vE=/^(localhost|127\.\d+\.\d+\.\d+)(:\d+)?$/;function yE(e){return vE.test(e)}async function bE(e=_E){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 xE(e=typeof location>`u`?``:location.host){return yE(e)?Promise.resolve(void 0):bE()}var SE=`q7ltm10`,CE=/^([a-z][a-z0-9+.-]*):\/\//i,wE={ws:`ws:`,wss:`wss:`,http:`ws:`,https:`wss:`};function TE(e){if(Tl(e))return e;let t=CE.exec(e);if(t===null)return`ws://${e}`;let n=wE[t[1]?.toLowerCase()??``];if(n===void 0)return e;let r=new URL(e);return r.protocol=n,r.hash=``,r.toString()}var EE=`ws://localhost:8787`,DE=[`core/management`,`core/exec`,`core/data`],OE=[`core/management`,`core/data`],kE=5,AE=1e3,jE=3e4,ME=2,NE={maxAttempts:kE,delayMs:e=>Math.min(AE*ME**(e-1),jE)},PE=[JC,rT];function FE({identity:e,clock:t,messageStore:n,certificateMemory:r,discoverLocalNode:i=xE,defaultAddress:a=EE}){let[o,s]=(0,D.useState)(a),[c,l]=(0,D.useState)(OE),[u,d]=(0,D.useState)([]),[f,p]=(0,D.useState)([]),[m,h]=(0,D.useState)([]),g=hE(e,t,n),[_,v]=(0,D.useState)(),y=g.conversations.find(e=>e.roomPath===_)??g.conversations[0],{markRead:b}=g,x=y?.roomPath,S=y?.unread??0;(0,D.useEffect)(()=>{x!==void 0&&S>0&&b(x)},[x,S,b]);let C=(0,D.useRef)(g.watchHub);(0,D.useEffect)(()=>{C.current=g.watchHub},[g.watchHub]);let w=(0,D.useRef)(g.attach);(0,D.useEffect)(()=>{w.current=g.attach},[g.attach]);let T=(0,D.useRef)(u);(0,D.useEffect)(()=>{T.current=u},[u]);let ee=(0,D.useRef)(c);(0,D.useEffect)(()=>{ee.current=c},[c]);function te(n,r){let i=gE(r.incomingManageRequests,PE),a=mw({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(JC)},{identity:e,clock:t,iceServers:Px,onIncomingConnection:e=>{w.current(e)}});C.current({sendManageRequest:async(...e)=>r.sendManageRequest(...e),incomingManageRequests:i.stream(rT)}),d(e=>[...e,{address:n,session:r,negotiator:a}])}async function E(e){return new Promise(t=>{p(n=>[...n,{key:Aw(e.device),device:e.device,addresses:e.addresses,resolve:t}])})}function ne(e,t){p(n=>(n.find(t=>t.key===e)?.resolve(t),n.filter(t=>t.key!==e)))}function O(){let n={current:null},i=ax(Nx(r),e,t,NE,[],e=>{n.current?.considerAdvert(e)});return n.current=cx({selfDeviceId:e.deviceId,shouldExpand:E,dial:re,onExpanded:(e,t,n)=>{te(t,n)}}),i}async function re(e){let t=O();return t.connect(TE(e),ee.current).then(()=>t)}function k(e){if(T.current.some(t=>t.address===e))return;let t=O();te(e,t),t.connect(TE(e),c).catch(()=>{})}let ie=(0,D.useRef)(k);(0,D.useEffect)(()=>{ie.current=k});let ae=(0,D.useRef)(i);(0,D.useEffect)(()=>{ae.current=i},[i]);let A=(0,D.useRef)(!1);(0,D.useEffect)(()=>{A.current||(A.current=!0,ae.current().then(e=>{e!==void 0&&ie.current(e)}))},[]);function j(e){e.preventDefault(),k(o)}function oe(e){g.dropHub(e.session),e.session.close(),d(t=>t.filter(t=>t.session!==e.session))}function se(t,n){g.openRelay(t.session,n),v(fx(Uy(e.deviceId),Uy(n))),t.negotiator.initiate(n).then(async e=>g.attach(e,n)).catch(e=>{h(t=>[...t,{key:crypto.randomUUID(),peer:Aw(n),reason:e instanceof Error?e.message:String(e)}])})}return(0,M.jsxs)(Za,{className:SE,p:`md`,gap:`lg`,children:[(0,M.jsx)(Co,{order:1,children:`wire-mesh console`}),(0,M.jsxs)(`form`,{onSubmit:j,children:[(0,M.jsxs)(mi,{align:`flex-end`,wrap:`wrap`,children:[(0,M.jsx)(_o,{label:`Node`,value:o,onChange:e=>{s(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:c,onChange:l,children:(0,M.jsx)(mi,{mt:`xs`,children:DE.map(e=>(0,M.jsx)(_a,{value:e,label:e},e))})})]}),(0,M.jsx)(Fw,{peers:f,onConnect:e=>{ne(e,!0)},onDismiss:e=>{ne(e,!1)}}),u.map(e=>(0,M.jsx)(Pw,{address:e.address,session:e.session,onClose:()=>{oe(e)},onMessagePeer:t=>{se(e,t)}},e.address)),m.map(e=>(0,M.jsxs)(Wi,{color:`yellow`,title:`No direct connection to ${e.peer}`,withCloseButton:!0,onClose:()=>{h(t=>t.filter(t=>t.key!==e.key))},children:[e.reason,`. Messages go through the hub instead.`]},e.key)),(0,M.jsx)(Gw,{conversations:g.conversations,selected:y?.roomPath,onSelect:v}),y!==void 0&&(0,M.jsx)(nT,{view:y,onSend:async e=>g.send(y.roomPath,e),onPostNotice:async e=>g.postNotice(y.roomPath,e),onRetry:e=>{g.retry(y.roomPath,e)},onDiscard:e=>{g.discard(y.roomPath,e)}},y.roomPath)]})}var IE=`modulepreload`,LE=function(e){return`/`+e},RE={},zE=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=LE(t,n),t=s(t),t in RE)return;RE[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`:IE,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)})},BE=`false`,VE=`false`,HE=BE===`true`,UE=VE===`true`;function WE(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,c,l,u,d=async(e=!0)=>{await l,HE||u?.()};async function f(){if(`serviceWorker`in navigator){if(c=await zE(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()},!UE){if(HE)c.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),c.addEventListener(`installed`,e=>{e.isUpdate||i?.()});else{let e=!1,t=()=>{e=!0,c?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),r?.()};c.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&i?.():n.isExternal?t():!e&&i?.():n.isUpdate||i?.()}),c.addEventListener(`waiting`,t)}}c.register({immediate:t}).then(e=>{o?o(`/sw.js`,e):a?.(e)}).catch(e=>{s?.(e)})}}return l=f(),d}function GE(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:r,onOfflineReady:i,onRegistered:a,onRegisteredSW:o,onRegisterError:s}=e,[c,l]=(0,D.useState)(!1),[u,d]=(0,D.useState)(!1),[f]=(0,D.useState)(()=>WE({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 KE(){let{offlineReady:[e,t],needRefresh:[n,r],updateServiceWorker:i}=GE();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 qE=`ws://localhost:8787`;function JE(e){return`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}`}function YE(e,t){return e?qE:JE(t)}var XE=await vl(await No()),ZE={now:()=>Date.now()},QE=Qy(await No()),$E=Gy(await No()),eD=YE(!1,window.location),tD=document.getElementById(`root`);if(tD===null)throw Error(`missing #root element`);(0,wo.createRoot)(tD).render((0,M.jsx)(D.StrictMode,{children:(0,M.jsxs)(Vt,{children:[(0,M.jsx)(FE,{identity:XE,clock:ZE,messageStore:QE,certificateMemory:$E,defaultAddress:eD}),(0,M.jsx)(KE,{})]})}));
|
|
@@ -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-DX_X-Le2.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
|
|
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:"2c2b0879993e66241b197f2bbc3ced30"},{url:"assets/workbox-window.prod.es5-Bd17z0YL.js",revision:null},{url:"assets/index-DX_X-Le2.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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wire-mesh",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.6",
|
|
4
4
|
"bin": {
|
|
5
5
|
"wire-mesh": "./dist/server.mjs"
|
|
6
6
|
},
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
"@peculiar/x509": "2.1.0",
|
|
9
9
|
"cbor2": "2.3.0",
|
|
10
10
|
"reflect-metadata": "0.2.2",
|
|
11
|
-
"wire-mesh-core": "3.5.
|
|
11
|
+
"wire-mesh-core": "3.5.1",
|
|
12
12
|
"ws": "8.21.3"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@arethetypeswrong/cli": "0.18.5",
|
|
16
16
|
"@exadev/eslint-config": "2.18.0",
|
|
17
|
-
"@exadev/wire-mesh-web-console": "2.
|
|
17
|
+
"@exadev/wire-mesh-web-console": "2.11.0",
|
|
18
18
|
"@types/node": "26.4.1",
|
|
19
19
|
"@types/ws": "8.18.1",
|
|
20
20
|
"eslint": "10.10.0",
|