graview 0.1.21 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/dist/preview/chunk.2F7OKRDK.js +9 -0
- package/dist/preview/chunk.3HEJZPJM.js +1040 -0
- package/dist/preview/chunk.3MLQ3Q5X.js +1 -0
- package/dist/preview/chunk.4CDEIDKB.js +1 -0
- package/dist/preview/chunk.4HGBVU5B.js +1 -0
- package/dist/preview/chunk.4JSMCNF7.js +1 -0
- package/dist/preview/chunk.4UQLZ7VW.js +1 -0
- package/dist/preview/chunk.5JNXQHN4.js +1 -0
- package/dist/preview/chunk.5MAMCKVU.js +1 -0
- package/dist/preview/chunk.6C7SJJQO.js +1 -0
- package/dist/preview/chunk.6CLHFNDM.js +321 -0
- package/dist/preview/chunk.6KJSFIO7.js +1 -0
- package/dist/preview/chunk.75WDSWXL.js +20 -0
- package/dist/preview/chunk.7YC34AIK.js +1 -0
- package/dist/preview/chunk.7YCQZJGB.js +1 -0
- package/dist/preview/chunk.ACZGK7LQ.js +1 -0
- package/dist/preview/chunk.AHDOKM4O.js +1 -0
- package/dist/preview/chunk.AJZBJBMO.js +1 -0
- package/dist/preview/chunk.AZG6V3PF.js +1 -0
- package/dist/preview/chunk.AZYJTNSM.js +107 -0
- package/dist/preview/chunk.BQV62QEL.js +61 -0
- package/dist/preview/chunk.CJQL7AHT.js +3 -0
- package/dist/preview/chunk.DAKED3WK.js +1 -0
- package/dist/preview/chunk.DJ26NOOW.js +1 -0
- package/dist/preview/chunk.DN4D4HGX.js +1 -0
- package/dist/preview/chunk.DO4P2UK4.js +1 -0
- package/dist/preview/chunk.ELEHYYCN.js +1 -0
- package/dist/preview/chunk.ENMNLR73.js +2 -0
- package/dist/preview/chunk.EQOU4POV.js +1 -0
- package/dist/preview/chunk.FLDFRFDH.js +23 -0
- package/dist/preview/chunk.FLJP3BGP.js +1 -0
- package/dist/preview/chunk.G4JJXA63.js +1 -0
- package/dist/preview/chunk.HCK6IHGP.js +1 -0
- package/dist/preview/chunk.IKT7JQUW.js +14 -0
- package/dist/preview/chunk.JE4VH767.js +16 -0
- package/dist/preview/chunk.K7UJG5II.js +1 -0
- package/dist/preview/chunk.KFLY4MAT.js +1 -0
- package/dist/preview/chunk.KWYU5NPM.js +1 -0
- package/dist/preview/chunk.L5G5DTFX.js +1 -0
- package/dist/preview/chunk.LGUV2J6Q.js +1 -0
- package/dist/preview/chunk.LSLFKW4M.js +1 -0
- package/dist/preview/chunk.LZQZP2PD.js +2 -0
- package/dist/preview/chunk.M4XNUM2A.js +6 -0
- package/dist/preview/chunk.MRK6QJV5.js +25 -0
- package/dist/preview/chunk.NOXC454O.js +1 -0
- package/dist/preview/chunk.ONDILMIX.js +1 -0
- package/dist/preview/chunk.OR6ZWN76.js +1 -0
- package/dist/preview/chunk.PC6FAJF5.js +1 -0
- package/dist/preview/chunk.Q5WEOX3Q.js +1 -0
- package/dist/preview/chunk.Q7WQ5UIE.js +1 -0
- package/dist/preview/chunk.R5K7NK4U.js +1 -0
- package/dist/preview/chunk.SCLIBKLS.js +1 -0
- package/dist/preview/chunk.SQD7ZPEJ.js +1 -0
- package/dist/preview/chunk.THBP5EES.js +1 -0
- package/dist/preview/chunk.UNRYIETM.js +1 -0
- package/dist/preview/chunk.VNC6H6IM.js +1 -0
- package/dist/preview/chunk.VRXWNUDR.js +1 -0
- package/dist/preview/chunk.VVZ2Z7OS.js +29 -0
- package/dist/preview/chunk.WGNF4E67.js +1 -0
- package/dist/preview/chunk.WTF3CP76.js +1 -0
- package/dist/preview/chunk.WWRWXFYR.js +0 -0
- package/dist/preview/chunk.XEJS2VS5.js +8 -0
- package/dist/preview/chunk.XYZ7KAMZ.js +1 -0
- package/dist/preview/chunk.Y235YZSZ.js +8 -0
- package/dist/preview/chunk.YAONM74M.js +19 -0
- package/dist/preview/chunk.YSYT3ASK.js +1 -0
- package/dist/preview/chunk.YU64JSAL.js +1 -0
- package/dist/preview/chunk.ZFUQA3KT.js +1 -0
- package/dist/preview/chunk.ZKUXPS44.js +2 -0
- package/dist/preview/chunk.ZQZ557VR.js +1 -0
- package/dist/preview/index.html +13 -0
- package/dist/preview/page.js +34 -0
- package/package.json +7 -7
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var Ba="JanFebMarAprMayJunJulAugSepOctNovDec",vt=/^\d{4}-\d{2}-\d{2}$/;function jn(n){let e=vt.test(n)?Ba.slice(+n.slice(5,7)*3-3,+n.slice(5,7)*3):"";return e?`${+n.slice(8)} ${e} ${n.slice(0,4)}`:n}var Ua=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function wt(n){return n.includes("-")?n.replace(Ua,e=>jn(e)):n}var Q=n=>n.charAt(0).toUpperCase()+n.slice(1);function Ka(n,e){return{...e,kind:n,edges:e.edges??{}}}function ve(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??new Date().toISOString().slice(0,10)):!r.retired.includes(o)}function kt(n,e){let t=new Map,r=new Map;for(let o of n){let i=F(e(o.kind),o).trim().toLowerCase();r.set(i,[...r.get(i)??[],o])}for(let o of r.values()){if(o.length<2)continue;let i=new Map;for(let s of o)i.set(s.kind,[...i.get(s.kind)??[],s]);for(let[s,a]of i){if(a.length===1){t.set(a[0].id,ie(e(s),s));continue}let d=a.map(p=>new Map(Fn(p,e(p.kind)).map(h=>[h.key,h.alone]))),c=[...new Set(d.flatMap(p=>[...p.keys()]))],u=p=>d.every(h=>!/\d/.test(h.get(p)??"")),l=[...c.filter(u),...c.filter(p=>!u(p))].find(p=>new Set(d.map(h=>h.get(p)??"")).size===a.length);a.forEach((p,h)=>{let y=l?d[h].get(l):void 0;t.set(p.id,y??p.id)})}}return t}function F(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function Wa(n,e){return n?.describe?n.describe(e):`${e.kind} ${F(n,e)}`}var Va=new Set(["id","kind","label"]);function St(n){return n.title??P(n.name)}function P(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return Q(e)}function no(n,e,t){let r=n?.display?.format?.[e];return r?r(t):typeof t=="string"?P(t):String(t)}function qa(n,e,t){let r=n.tryDefinition(e);return`${t} ${t===1?ie(r,e):Pe(n,e).toLowerCase()}`}function Pe(n,e){return n.tryDefinition(e)?.plural??`${P(e).toLowerCase()}s`}function sn(n,e){return Q(Pe(n,e))}function Ha(n,e,t,r){let o=n.tryDefinition(e)?.edges,i=o&&Object.hasOwn(o,t)?o[t]:void 0;return(r==="out"?i?.description:i?.inverse)??P(t).toLowerCase()}function Tn(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??P(e)}var Ja=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,Ya=/^(hour|honest|hono[ur]r?|heir)/;function to(n){let e=P(n).toLowerCase();return Ya.test(e)?"an":Ja.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function Dn(n){return`${to(n)} ${P(n).toLowerCase()}`}function ie(n,e){return n?.noun??P(e).toLowerCase()}function Xa(n,e){if(e.length===0)return!1;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`(^|[\\s\xB7,(/])${t}($|[\\s\xB7,)/])`).test(n)}function Fn(n,e,t={}){let r=e?.display,o=new Set([...Va,...r?.hide??[]]),i=(t.said??[]).filter(l=>!!l),s=i.filter(l=>l.endsWith("\u2026")).map(l=>l.replace(/…$/,"").trim()).filter(l=>l.length>12),a=[],d=e?.fieldRoles,c=t.glance?r?.glance??[d?.who,d?.when].filter(l=>!!l):ro(r?.page),f=[...new Set([...c,...ed(e),...Object.keys(n)])].filter(l=>Object.hasOwn(n,l)).map(l=>[l,n[l]]);for(let[l,p]of f){if(o.has(l)||p===void 0||p===null)continue;let h=r?.format?.[l];if(typeof p=="object"&&(!Array.isArray(p)||p.some(w=>typeof w=="object"&&w!==null))&&h===void 0)continue;let g=Array.isArray(p)?p.join(", "):typeof p=="boolean"?p?"Yes":"No":String(p),m=h?h(p):Array.isArray(p)||typeof p=="boolean"?g:typeof p=="string"&&vt.test(p)?jn(p):typeof p=="string"&&Qa(e,l)?no(e,l,p):g;if(i.includes(m)||s.some(w=>m.startsWith(w))||t.glance&&(typeof p=="string"||typeof p=="number")&&i.some(w=>Xa(w,m)))continue;let x=Tn(e,l),k=typeof p=="number"?`${x} ${m}`:typeof p=="boolean"?`${x}: ${m.toLowerCase()}`:m;if(a.push({key:l,label:x,value:m,stored:g,alone:k,long:typeof p=="string"&&oo(e,l,m)}),t.limit!==void 0&&a.length>=t.limit)break}return a}function Qa(n,e){let t=n?.fields?.shape?.[e];for(let r=0;r<6&&t?._zod?.def?.innerType!==void 0;r++)t=t._zod.def.innerType;return t?._zod?.def?.type==="enum"}function ed(n){let e=n?.fields?.shape;return[...Object.keys(e??{}),...Object.keys(n?.computed??{})]}function ro(n){return[...n?.fields??[],...(n?.groups??[]).flatMap(e=>e.fields)]}var nd=500,td=160;function rd(n){let e=n;for(let t=0;t<6&&e?._zod?.def?.innerType!==void 0;t++)e=e._zod.def.innerType;return e?._zod?.def?.type==="string"?e._zod.def:void 0}function oo(n,e,t){return rd(n?.fields?.shape?.[e])?.checks?.some(o=>o._zod?.def?.check==="max_length"&&(o._zod.def.maximum??0)>nd)?!0:typeof t=="string"&&(t.includes(`
|
|
2
|
+
`)||t.length>td)}function od(n,e){let t=n?.display?.page,r=t?.groups??[],o=new Map(e.map(c=>[c.key,c])),i=new Set(ro(t)),s=c=>c.flatMap(u=>o.has(u)?[o.get(u)]:[]),a=e.filter(c=>!i.has(c.key));return[{fields:[...s(t?.fields??[]),...r.length>0?[]:a]},...r.map(c=>({title:c.title,fields:s(c.fields)})),...r.length>0?[{title:"Details",fields:a}]:[]].filter(c=>c.fields.length>0)}function dn(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function Ot(n,e="|"){return n.map(t=>Et(t)).join(e)}function io(n,e){return typeof e=="bigint"?e.toString():e}var $t=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function so(n){return new $t(n)}function ao(n){return n==null}function At(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function co(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}function ee(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function lo(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function Rt(n){return lo(n._zod.def)??n._zod.def.shape}function uo(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return ee(this,e,r),r},enumerable:!0,configurable:!0})}function fo(n,e,t){e in n?ee(n,e,t):n[e]=t}function id(n,e,t,r){let o=Rt(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?uo(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):fo(n,i,r?r(s.value,i):s.value))}}function sd(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?uo(n,t,()=>e[t]):fo(n,t,r.value))}}function po(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Pt="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function Zn(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function zt(n){if(Zn(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(Zn(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var ho=new Set(["string","number","symbol"]);function cn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ze(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function M(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Et(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function go(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Cn={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Nt={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function mo(n,e){if(!zt(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=Rt(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Ze(n,po(n._zod.def,{shape:ad(n,e)}))}function ad(n,e){let t={};return id(t,n,Reflect.ownKeys(Rt(n))),sd(t,e),t}function fe(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function yo(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function ke(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function an(n){return typeof n=="string"?n:n?.message}function Mt(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function pe(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:an(n.inst?._zod.def?.error?.(n))??an(i?.(n))??an(e?.error?.(n))??an(t.customError?.(n))??an(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var dd=/[\uD800-\uDBFF]/;function It(n){let e=n.length;if(!dd.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function jt(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function bo(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function ln(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function xo(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):cd(n,t,r.value)}}function ze(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function Tt(n,e,t){return ze(n,e,t,!1)}function cd(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:ze(this,e,t.bind(this))},set(r){ze(this,e,r)}})}function ld(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var _t,we=!1,ud={configurable:!0,get(){we=!0}};function te(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&_t!==n._zod){_t=void 0;return}_t=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,ud);let o=we;we=!1;try{let i=t(this);return we?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),we=we||o,i}catch(i){throw delete this[e],we=we||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function vo(n,e,t,r){let o=ld(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var wo;var Dt={value:void 0,enumerable:!1},ko="captureStackTrace"in Error?Error:null;function fd(n){let e=ko;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return ko=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function O(n,e,t,r){let o={};function i(l){this.def=l,this.constr=f,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(l,p){if(l._zod){if(l._zod.traits.has(n))return}else{Dt.value=new i(p);try{Object.defineProperty(l,"_zod",Dt)}finally{Dt.value=void 0}}if(l._zod.traits.add(n),e(l,p),a){let y=Object.getPrototypeOf(l),g=l._zod.constr.prototype,m=y;for(;m&&m!==g;)m=Object.getPrototypeOf(m);let x=m??y;a.has(x)||(a.add(x),xo(x,s))}let h=f.prototype;for(let y in h)Object.prototype.hasOwnProperty.call(h,y)&&(y in l||(l[y]=h[y].bind(l)))}let c=r?.Parent??Object;class u extends c{}Object.defineProperty(u,"name",{value:n});function f(l){let p=r?.Parent?fd(u):this;d(p,l);let h=p._zod.deferred;if(h){for(let g of h)g();p._zod.deferred=void 0}let y=globalThis.__zod_globalConfig?.postProcessor;return y&&y(p),p}return Object.defineProperty(f,"init",{value:d}),Object.defineProperty(f,Symbol.hasInstance,{value:l=>r?.Parent&&l instanceof r.Parent?!0:l?._zod?.traits?.has(n)}),Object.defineProperty(f,"name",{value:n}),f}var ge=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(wo=globalThis).__zod_globalConfig??(wo.__zod_globalConfig={});var Ce=globalThis.__zod_globalConfig;function Y(n){return n&&Object.assign(Ce,n),Ce}function pd(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,io,2)),n.message}function hd(n){this._zod.message=n}var gd={get:pd,set:hd,enumerable:!0,configurable:!0},Zt={value:void 0,enumerable:!1},So=new WeakSet([Object.prototype,Error.prototype]),_o=(n,e)=>{n.name="$ZodError",Zt.value=e,Object.defineProperty(n,"issues",Zt),Zt.value=void 0,Object.defineProperty(n,"message",gd);let t=Object.getPrototypeOf(n);So.has(t)||(So.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},vf=O("$ZodError",_o),un=O("$ZodError",_o,void 0,{Parent:Error});var yd=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new ge;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(c=>pe(c,s,Y())));throw Pt(d,i?.callee??e),d}return a.value};return e},Ct=yd(un),bd=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(c=>pe(c,s,Y())));throw Pt(d,i?.callee??e),d}return a.value};return e},Lt=bd(un),xd=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new ge;return i.issues.length?$o(n,i.issues,o):{success:!0,data:i.value}},Gt=xd(un);function $o(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>pe(o,t,Y()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var vd=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?$o(n,i.issues,o):{success:!0,data:i.value}},Bt=vd(un);var Oo=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var Ao=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Ro=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var Po=/^https?$/;var zo=/^[\s\S]{0,}$/;var Ut=/^-?\d+$/,fn=/^-?\d+(?:\.\d+)?$/,Eo=/^(?:true|false)$/i,No=/^null$/i;var X=O("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var Mo=n=>{let e=n.value;return!ao(e)&&e.length!==void 0},Gn={number:"number",bigint:"bigint",object:"date"},Io=O("$ZodCheckLessThan",(n,e)=>{X.init(n,e);let t=Gn[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:Gn[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),jo=O("$ZodCheckGreaterThan",(n,e)=>{X.init(n,e);let t=Gn[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:Gn[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),To=O("$ZodCheckMultipleOf",(n,e)=>{X.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):co(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),Do=O("$ZodCheckNumberFormat",(n,e)=>{X.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Cn[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var Fo=O("$ZodCheckMaxLength",(n,e)=>{var t;X.init(n,e),(t=n._zod.def).when??(t.when=Mo),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?It(o):i)<=e.maximum)return;let a=jt(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),Zo=O("$ZodCheckMinLength",(n,e)=>{var t;X.init(n,e),(t=n._zod.def).when??(t.when=Mo),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?It(o):i)>=e.minimum)return;let a=jt(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var Kt=O("$ZodCheckStringFormat",(n,e)=>{var t,r;X.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),Co=O("$ZodCheckRegex",(n,e)=>{Kt.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var Go={major:4,minor:6,patch:5};var L=O("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=Go;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,c)=>{if(a.memo)return a;let u=fe(a),f;for(let l of d){if(l._zod.def.when){if(yo(a)||!l._zod.def.when(a))continue}else if(u)continue;let p=a.issues.length,h=l._zod.check(a);if(h instanceof Promise&&c?.async===!1)throw new ge;if(f||h instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await h,a.issues.length!==p&&(Mt(a.issues,p,n),u||(u=fe(a,p)))});else{if(a.issues.length===p)continue;Mt(a.issues,p,n),u||(u=fe(a,p))}}return f?f.then(()=>a):a},s=(a,d,c)=>{if(fe(a))return a.aborted=!0,a;let u=i(d,o,c);if(u instanceof Promise){if(c.async===!1)throw new ge;return u.then(f=>n._zod.parse(f,c))}return n._zod.parse(u,c)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let u=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return u instanceof Promise?u.then(f=>s(f,a,d)):s(u,a,d)}let c=n._zod.parse(a,d);if(c instanceof Promise){if(d.async===!1)throw new ge;return c.then(u=>i(u,o,d))}return i(c,o,d)}}},{get"~standard"(){return Tt(this,"~standard",kd(this))},set"~standard"(n){ze(this,"~standard",n)}}),qo=(n,e)=>n.issues.length?{issues:n.issues.map(t=>pe(t,e,Y()))}:{value:n.value};async function wd(n,e){let t={async:!0};return qo(await n._zod.run({value:e,issues:[]},t),t)}function kd(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return qo(r,t)}catch{}return wd(n,e)},vendor:"zod",version:1}}var Wt=O("$ZodString",(n,e)=>{L.init(n,e),n._zod.pattern=e.pattern??zo,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),Kn=O("$ZodStringFormat",(n,e)=>{Kt.init(n,e),Wt.init(n,e)});var Ho=O("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=Oo),Kn.init(n,e)}),Jo=1,Bn=2;function Sd(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function _d(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?Sd(n)||Bn:$d(n,e)}function $d(n,e){if(!e.normalize&&e.protocol?.source===Po.source&&!/^https?:\/\//i.test(n))return Jo;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??Bn}return new URL(n)}catch{return Bn}}var Od=/[\t\n\r]/g;function Bo(n){return n.replace(Od,"")}function Ad(n,e){return e.lastIndex=0,e.test(n.hostname)}function Rd(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var Yo=O("$ZodURL",(n,e)=>{Kn.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=_d(r,e);if(o===Jo){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===Bn){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=Bo(r);return}e.hostname&&!Ad(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!Rd(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:Bo(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var Xo=/^[0-9a-zA-Z+/]*={0,2}$/;var Qo=/^[A-Za-z0-9_-]*$/;var Vt=O("$ZodNumber",(n,e)=>{L.init(n,e),n._zod.pattern=fn,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),ei=O("$ZodNumberFormat",(n,e)=>{Do.init(n,e),Vt.init(n,e)}),ni=O("$ZodBoolean",(n,e)=>{L.init(n,e),n._zod.pattern=Eo,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var ti=O("$ZodNull",(n,e)=>{L.init(n,e),n._zod.pattern=No,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var ri=O("$ZodUnknown",(n,e)=>{L.init(n,e),n._zod.parse=t=>t}),oi=O("$ZodNever",(n,e)=>{L.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function Uo(n,e,t){n.issues.length&&e.issues.push(...ke(t,n.issues)),e.value[t]=n.value}var ii=O("$ZodArray",(n,e)=>{L.init(n,e);let t=Ce.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let c=i[d],u=e.element._zod.run({value:c,issues:[]},o);if(u instanceof Promise)s.push(u.then(f=>Uo(f,r,d)));else if(Uo(u,r,d),a&&u.issues.length!==0&&fe(u))break}return s.length?Promise.all(s).then(()=>r):r}});function Un(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...ke(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var Pd=[];function zd(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:Pd,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=go(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function Ed(n,e,t,r,o,i,s){let a=[],d=o.keySet,c=o.catchall._zod,u=c.def.type,f=c.optin,l=c.optout,p=0;for(let h in e){if(s&&t.issues.length!==p){if(fe(t,p))break;p=t.issues.length}if(d.has(h))continue;if(h==="__proto__"){u==="never"&&a.push(h);continue}if(u==="never"){a.push(h);continue}let y=c.run({value:e[h],issues:[]},r);y instanceof Promise?n.push(y.then(g=>Un(g,t,h,e,f,l))):Un(y,t,h,e,f,l)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var si=O("$ZodObject",(n,e)=>{L.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let c=()=>{let u={...r};return Object.defineProperty(e,"shape",{value:u}),c.raw=u,u};c.raw=r,Object.defineProperty(e,"shape",{get:c})}let o=so(()=>zd(e));te(n,"propValues",c=>{let u=c.def.shape,f={};for(let l in u){let p=u[l]._zod;if(p.values){Object.prototype.hasOwnProperty.call(f,l)||ee(f,l,new Set);for(let h of p.values)f[l].add(h);p.optin!==void 0&&f[l].add(void 0)}}return f});let i=Zn,s=e.catchall,a,d=Ce.memoizer;d?.attach(n),n._zod.parse=(c,u)=>{a??(a=o.value);let f=c.value;if(!i(f))return c.issues.push({expected:"object",code:"invalid_type",input:f,inst:n}),c;c.value=d?d.alloc(n,c,{},u):{};let l=[],p=a.shape,h=u?.abortEarly,y=c.issues.length;for(let g of a.allKeys){if(h&&c.issues.length!==y){if(fe(c,y))break;y=c.issues.length}if(g==="__proto__")continue;let m=p[g],x=m._zod.optin,k=m._zod.optout,w=m._zod.run({value:f[g],issues:[]},u);w instanceof Promise?l.push(w.then(b=>Un(b,c,g,f,x,k))):Un(w,c,g,f,x,k)}return s?Ed(l,f,c,u,o.value,n,h===!0):l.length?Promise.all(l).then(()=>c):c}});function Ko(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!fe(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>pe(s,r,Y())))}),e)}var ai=O("$ZodUnion",(n,e)=>{L.init(n,e),te(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),te(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),te(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),te(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>At(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>Ko(a,r,n,o)):Ko(s,r,n,o)}});var di=O("$ZodRecord",(n,e)=>{L.init(n,e);let t=Ce.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!zt(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let u of a)if(typeof u=="string"||typeof u=="number"||typeof u=="symbol"){if(d.add(typeof u=="number"?u.toString():u),u==="__proto__")continue;let f=e.keyType._zod.run({value:u,issues:[]},o);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(f.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:f.issues.map(h=>pe(h,o,Y())),input:u,path:[u],inst:n});continue}let l=f.value;if(l==="__proto__")continue;let p=e.valueType._zod.run({value:i[u],issues:[]},o);p instanceof Promise?s.push(p.then(h=>{h.issues.length&&r.issues.push(...ke(u,h.issues)),r.value[l]=h.value})):(p.issues.length&&r.issues.push(...ke(u,p.issues)),r.value[l]=p.value)}let c;for(let u in i)if(!d.has(u))if(e.mode==="loose"){if(u==="__proto__")continue;r.value[u]=i[u]}else c=c??[],c.push(u);c&&c.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:c,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let c of Reflect.ownKeys(i)){if(c==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,c))continue;let u=e.keyType._zod.run({value:c,issues:[]},o);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof c=="string"&&fn.test(c)&&u.issues.length){let h=e.keyType._zod.run({value:Number(c),issues:[]},o);if(h instanceof Promise)throw new Error("Async schemas not supported in object keys currently");h.issues.length===0&&(u=h)}if(u.issues.length){e.mode==="loose"?r.value[c]=i[c]:a?(d=d??[],d.push(c)):r.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(h=>pe(h,o,Y())),input:c,path:[c],inst:n});continue}let l=u.value;if(l==="__proto__")continue;let p=e.valueType._zod.run({value:i[c],issues:[]},o);p instanceof Promise?s.push(p.then(h=>{h.issues.length&&r.issues.push(...ke(c,h.issues)),r.value[l]=h.value})):(p.issues.length&&r.issues.push(...ke(c,p.issues)),r.value[l]=p.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var ci=O("$ZodEnum",(n,e)=>{L.init(n,e);let t=dn(e.entries),r=new Set(t);n._zod.values=r,te(n,"pattern",o=>{let i=dn(o.def.entries).filter(s=>ho.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>cn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),li=O("$ZodLiteral",(n,e)=>{L.init(n,e);let t=new Set(e.values);n._zod.values=t,te(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?cn(i):i?cn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function Wo(n,e){return n.value=e.issues.length?void 0:e.value,n}var ui=O("$ZodOptional",(n,e)=>{L.init(n,e),te(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",te(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),te(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${At(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>Wo(t,i)):Wo(t,o)}return e.innerType._zod.run(t,r)}});var fi=O("$ZodCustom",(n,e)=>{X.init(n,e),L.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>Vo(i,t,r,n));Vo(o,t,r,n)}});function Vo(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(ln(o))}}var Nd=()=>{let n={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 e(i){return n[i]??null}let t={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",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=bo(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${Et(i.values[0])}`:`Invalid option: expected one of ${Ot(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${Ot(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function pi(){return{localeError:Nd()}}var hi;var qt=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.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 r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function gi(){return new qt}(hi=globalThis).__zod_globalRegistry??(hi.__zod_globalRegistry=gi());var Se=globalThis.__zod_globalRegistry;function mi(n){return n.checks&&(n.checks=[...n.checks]),n}function yi(n,e){return new n(mi({type:"string",...M(e)}))}function bi(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...M(e)})}function xi(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...M(e)})}function vi(n,e){return new n(mi({type:"number",checks:[],...M(e)}))}function wi(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...M(e)})}function ki(n,e){return new n({type:"boolean",...M(e)})}function Si(n,e){return new n({type:"null",...M(e)})}function _i(n){return new n({type:"unknown"})}function $i(n,e){return new n({type:"never",...M(e)})}function Oi(n,e){return new Io({check:"less_than",...M(e),value:n,inclusive:!0})}function Ai(n,e){return new jo({check:"greater_than",...M(e),value:n,inclusive:!0})}function Td(n,e){return new To({check:"multiple_of",...M(e),value:n})}function Dd(n,e){return new Fo({check:"max_length",...M(e),maximum:n})}function Le(n,e){return new Zo({check:"min_length",...M(e),minimum:n})}function Fd(n,e){return new Co({check:"string_format",format:"regex",...M(e),pattern:n})}function Ri(n,e,t){return new n({type:"custom",check:"custom",fn:e,...M(t)})}function Pi(n,e){let t=Zd(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(ln(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(ln(i))}},n(r.value,r)),e);return t}function Zd(n,e){let t=new X({check:"custom",...M(e)});return t._zod.check=n,t}function zi(n){let e=new X({check:"describe"});return e._zod.onattach=[t=>{let r=Se.get(t)??{};Se.add(t,{...r,description:n})}],e._zod.check=()=>{},e}function pn(n,...e){for(let t of e)for(let r of Reflect.ownKeys(t))Object.prototype.propertyIsEnumerable.call(t,r)&&ee(n,r,t[r]);return n}function Wn(n){let e=n?.target??"draft-2020-12";return e==="draft-4"&&(e="draft-04"),e==="draft-7"&&(e="draft-07"),{processors:n.processors??{},metadataRegistry:n?.metadata??Se,target:e,unrepresentable:n?.unrepresentable??"throw",override:n?.override??(()=>{}),io:n?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:n?.cycles??"ref",reused:n?.reused??"inline",intersections:[],deferred:[],external:n?.external??void 0}}function C(n,e,t,r,o){let i=typeof e.unrepresentable=="function"?e.unrepresentable({zodSchema:n,path:r.path,message:o}):e.unrepresentable;if(i==="any")return!1;if(i===void 0||i==="throw")throw new Error(o);return Object.assign(t,i),!0}function j(n,e,t={path:[],schemaPath:[]}){var r;let o=n._zod.def,i=e.seen.get(n);if(i)return i.count++,t.schemaPath.includes(n)&&(i.cycle=t.path),i.schema;let s={schema:{},count:1,cycle:void 0,path:t.path};e.seen.set(n,s),e.sharedDefsExtractedFor=void 0,e.sharedEmitDoneFor=void 0;let a=n._zod.toJSONSchema?.();if(a)s.schema=a;else{let u={...t,schemaPath:[...t.schemaPath,n],path:t.path};if(n._zod.processJSONSchema)n._zod.processJSONSchema(e,s.schema,u);else{let l=s.schema,p=e.processors[o.type];if(!p)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);p(n,e,l,u)}let f=n._zod.parent;f&&(s.ref||(s.ref=f),j(f,e,u),e.seen.get(f).isParent=!0)}let d=e.metadataRegistry.get(n);return d&&pn(s.schema,d),e.io==="input"&&B(n)&&(delete s.schema.examples,delete s.schema.default),e.io==="input"&&"_prefault"in s.schema&&((r=s.schema).default??(r.default=s.schema._prefault)),delete s.schema._prefault,e.seen.get(n).schema}function Ei(n){return n.replace(/~/g,"~0").replace(/\//g,"~1")}function Vn(n,e){let t=n.seen.get(e);if(!t)throw new Error("Unprocessed schema. This is a bug in Zod.");if(n.external&&n.sharedDefsExtractedFor===n.external)return;let r=new Map;for(let s of n.seen.entries()){let a=n.metadataRegistry.get(s[0])?.id;if(a){let d=r.get(a);if(d&&d!==s[0])throw new Error(`Duplicate schema id "${a}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(a,s[0])}}let o=s=>{let a=n.target==="draft-2020-12"?"$defs":"definitions";if(n.external){let f=n.external.registry.get(s[0])?.id,l=n.external.uri??(h=>h);if(f)return{ref:l(f)};let p=s[1].defId??s[1].schema.id??`schema${n.counter++}`;return s[1].defId=p,{defId:p,ref:`${l("__shared")}#/${a}/${Ei(p)}`}}let d="#",c=`${d}/${a}/`;if(s[1]===t&&!s[1].schema.id)return{ref:d};let u=s[1].schema.id??`__schema${n.counter++}`;return{defId:u,ref:c+Ei(u)}},i=s=>{if(s[1].schema.$ref)return;let a=s[1],{ref:d,defId:c}=o(s);a.def={...a.schema},c&&(a.defId=c);let u=a.schema;for(let f in u)delete u[f];u.$ref=d};if(n.cycles==="throw")for(let s of n.seen.entries()){let a=s[1];if(a.cycle)throw new Error(`Cycle detected: #/${a.cycle?.join("/")}/<root>
|
|
3
|
+
|
|
4
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let s of n.seen.entries()){let a=s[1];if(e===s[0]){i(s);continue}if(n.external){let c=n.external.registry.get(s[0])?.id;if(e!==s[0]&&c){i(s);continue}}if(n.metadataRegistry.get(s[0])?.id){i(s);continue}if(a.cycle){i(s);continue}a.count>1&&n.reused==="ref"&&i(s)}n.external&&(n.sharedDefsExtractedFor=n.external)}function ji(n){let e=n.anyOf;if(!Array.isArray(e)||e.length===0||n.type!==void 0)return;let t=[];for(let r of e){if(!r||typeof r!="object")return;ji(r);let o=Object.keys(r);if(o.length!==1||o[0]!=="type")return;let i=r.type;for(let s of Array.isArray(i)?i:[i]){if(typeof s!="string")return;t.includes(s)||t.push(s)}}delete n.anyOf,n.type=t.length===1?t[0]:t}var Ti=new Set(["type","properties","required","additionalProperties"]),Ni=["oneOf","anyOf"];function Mi(n){let e=n.additionalProperties;return e===void 0||e===!1||typeof e!="object"||e===null?null:Object.keys(e).length?e:null}function Ht(n){let e=[];for(let i of n){if(typeof i!="object"||i.type!=="object")return null;for(let s in i)if(!Ti.has(s))return null;e.push(i)}let t={},r=new Set;for(let i of e){for(let s in i.properties){if(Object.prototype.hasOwnProperty.call(t,s))continue;let a=[];for(let c of e){let u=c.properties?.[s]??Mi(c);u!=null&&(a.some(f=>JSON.stringify(f)===JSON.stringify(u))||a.push(u))}let d=a.length===1?a[0]:Ht(a)??{allOf:a};ee(t,s,d)}for(let s of i.required??[])r.add(s)}let o={type:"object",properties:t};if(r.size&&(o.required=[...r]),e.every(i=>i.additionalProperties===!1))o.additionalProperties=!1;else{let i=[];for(let s of e){let a=Mi(s);a&&!i.some(d=>JSON.stringify(d)===JSON.stringify(a))&&i.push(a)}i.length===1?o.additionalProperties=i[0]:i.length>1&&(o.additionalProperties={allOf:i})}return o}function Cd(n){let e=n.allOf;if(!Array.isArray(e)||e.length<2)return;for(let o of Ti)if(o in n)return;let t=e.filter(o=>Ni.some(i=>Array.isArray(o[i]))),r=null;if(!t.length)r=Ht(e);else{let o=t[0],i=Ni.find(d=>Array.isArray(o[d]));if(Object.keys(o).length!==1)return;let s=e.filter(d=>d!==o),a=o[i].map(d=>Ht([...s,d]));if(a.some(d=>!d))return;r={[i]:a}}r&&(delete n.allOf,pn(n,r))}function qn(n,e){let t=n.seen.get(e);if(!t)throw new Error("Unprocessed schema. This is a bug in Zod.");let r=a=>{let d=n.seen.get(a);if(d.ref===null)return;let c=d.def??d.schema,u={...c},f=d.ref;if(d.ref=null,f){r(f);let p=n.seen.get(f),h=p.schema;if(h.$ref&&(n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(h)):pn(c,h),pn(c,u),a._zod.parent===f)for(let g in c)g==="$ref"||g==="allOf"||g in u||delete c[g];if(h.$ref&&p.def)for(let g in c)g==="$ref"||g==="allOf"||g in p.def&&JSON.stringify(c[g])===JSON.stringify(p.def[g])&&delete c[g]}let l=a._zod.parent;if(l&&l!==f){r(l);let p=n.seen.get(l);if(p?.schema.$ref&&(c.$ref=p.schema.$ref,p.def))for(let h in c)h==="$ref"||h==="allOf"||h in p.def&&JSON.stringify(c[h])===JSON.stringify(p.def[h])&&delete c[h]}n.override({zodSchema:a,jsonSchema:c,path:d.path??[]})};if(!n.external||n.sharedEmitDoneFor!==n.external){for(let a of[...n.seen.entries()].reverse())r(a[0]);if(n.target!=="openapi-3.0")for(let a of n.seen.entries())ji(a[1].def??a[1].schema);for(let a of n.deferred)a();if(n.intersections.length){let a=new Map;for(let d of n.seen.values())for(let c of[d.schema,d.def]){let u=c?.allOf;if(!Array.isArray(u))continue;let f=a.get(u);f?f.push(c):a.set(u,[c])}for(let d of n.intersections)for(let c of a.get(d)??[])Cd(c)}}let o={};if(n.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":n.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":n.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":n.target,n.external?.uri){let a=n.external.registry.get(e)?.id;if(!a)throw new Error("Schema is missing an `id` property");o.$id=n.external.uri(a)}pn(o,t.defId?t.schema:t.def??t.schema);let i=n.metadataRegistry.get(e)?.id;i!==void 0&&o.id===i&&delete o.id;let s=n.external?.defs??{};if(!n.external||n.sharedEmitDoneFor!==n.external)for(let a of n.seen.entries()){let d=a[1];d.def&&d.defId&&(d.def.id===d.defId&&delete d.def.id,ee(s,d.defId,d.def))}n.external&&(n.sharedEmitDoneFor=n.external),n.external||Object.keys(s).length>0&&(n.target==="draft-2020-12"?o.$defs=s:o.definitions=s);try{let a=JSON.parse(JSON.stringify(o));return Object.defineProperty(a,"~standard",{value:{...e["~standard"],jsonSchema:{input:Ii(e,"input",n.processors),output:Ii(e,"output",n.processors)}},enumerable:!1,writable:!1}),a}catch{throw new Error("Error converting schema to JSON.")}}function B(n,e){let t=e??{seen:new Set};if(t.seen.has(n))return!1;t.seen.add(n);let r=n._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return B(r.element,t);if(r.type==="set")return B(r.valueType,t);if(r.type==="lazy")return B(r.getter(),t);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 B(r.innerType,t);if(r.type==="intersection")return B(r.left,t)||B(r.right,t);if(r.type==="record"||r.type==="map")return B(r.keyType,t)||B(r.valueType,t);if(r.type==="pipe")return n._zod.traits.has("$ZodCodec")?!0:B(r.in,t)||B(r.out,t);if(r.type==="object"){for(let o in r.shape)if(B(r.shape[o],t))return!0;return!1}if(r.type==="union"){for(let o of r.options)if(B(o,t))return!0;return!1}if(r.type==="tuple"){for(let o of r.items)if(B(o,t))return!0;return!!(r.rest&&B(r.rest,t))}return!1}var Ii=(n,e,t={})=>r=>{let{libraryOptions:o,target:i}=r??{},s=Wn({...o??{},target:i,io:e,processors:t});return j(n,s),Vn(s,n),qn(s,n)};var Ge=(n,e,t)=>{(n[e]===void 0||t>n[e])&&(n[e]=t)},Be=(n,e,t)=>{(n[e]===void 0||t<n[e])&&(n[e]=t)},Di=(n,e)=>{Ge(n,"minimum",e),Be(n,"maximum",e)},Gi=(n,e)=>{n.multipleOf??(n.multipleOf=[]),n.multipleOf.includes(e)||n.multipleOf.push(e)},Bi=(n,e)=>{n.patterns??(n.patterns=new Set),n.patterns.add(e)},Ui=(n,e)=>{n.mime=n.mime?n.mime.filter(t=>e.includes(t)):[...e]},Ki=(n,e)=>{n.format=e,e.includes("int")&&(n.isInt=!0)},Fi=(n,e)=>Ge(n,"minimum",e.minimum),Zi=(n,e)=>Be(n,"maximum",e.maximum),Ci=n=>(e,t)=>{Ki(e,t.format);let[r,o]=n[t.format];Ge(e,"minimum",r),Be(e,"maximum",o)},Ld={greater_than:(n,e)=>Ge(n,e.inclusive?"minimum":"exclusiveMinimum",e.value),less_than:(n,e)=>Be(n,e.inclusive?"maximum":"exclusiveMaximum",e.value),multiple_of:(n,e)=>Gi(n,e.value),number_format:Ci(Cn),bigint_format:Ci(Nt),min_length:Fi,max_length:Zi,length_equals:(n,e)=>Di(n,e.length),min_size:Fi,max_size:Zi,size_equals:(n,e)=>Di(n,e.size),string_format:(n,e)=>{Ki(n,e.format),e.pattern&&Bi(n,e.pattern),(e.format==="base64"||e.format==="base64url")&&(n.contentEncoding=e.format),(e.local||e.precision===-1)&&(n.laxFormat=!0)},mime_type:(n,e)=>Ui(n,e.mime)};function Ue(n){let e={},t=n._zod.def,r=n._zod.traits.has("$ZodCheck")?[n,...t.checks??[]]:t.checks??[];for(let i of r)Ld[i._zod.def.check]?.(e,i._zod.def);let o=n._zod.bag;o.minimum!==void 0&&Ge(e,"minimum",o.minimum),o.exclusiveMinimum!==void 0&&Ge(e,"exclusiveMinimum",o.exclusiveMinimum),o.maximum!==void 0&&Be(e,"maximum",o.maximum),o.exclusiveMaximum!==void 0&&Be(e,"exclusiveMaximum",o.exclusiveMaximum),o.multipleOf!==void 0&&Gi(e,o.multipleOf),o.format!==void 0&&(e.format??(e.format=o.format),o.format.includes("int")&&(e.isInt=!0)),o.mime&&Ui(e,o.mime);for(let i of o.patterns??[])Bi(e,i);return e}var Gd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Bd=new Map([[Xo,Ao],[Qo,Ro]]),Wi=n=>Bd.get(n)??n,Ud=(n,e,t,r)=>{let o=t;o.type="string";let{minimum:i,maximum:s,format:a,patterns:d,contentEncoding:c,laxFormat:u}=Ue(n);if(typeof i=="number"&&(o.minLength=i),typeof s=="number"&&(o.maxLength=s),a&&(o.format=Gd[a]??a,o.format===""&&delete o.format,(a==="time"||u)&&delete o.format),c&&(o.contentEncoding=c),d&&d.size>0){let f=[...d].map(Wi);f.length===1?o.pattern=f[0].source:f.length>1&&(o.allOf=[...f.map(l=>({...e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"?{type:"string"}:{},pattern:l.source}))])}},Kd=(n,e,t,r)=>{let o=t,{minimum:i,maximum:s,multipleOf:a,exclusiveMaximum:d,exclusiveMinimum:c,isInt:u}=Ue(n);o.type=u?"integer":"number";let f=typeof c=="number"&&c>=(i??Number.NEGATIVE_INFINITY),l=typeof d=="number"&&d<=(s??Number.POSITIVE_INFINITY),p=e.target==="draft-04"||e.target==="openapi-3.0";if(f?p?(o.minimum=c,o.exclusiveMinimum=!0):o.exclusiveMinimum=c:typeof i=="number"&&(o.minimum=i),l?p?(o.maximum=d,o.exclusiveMaximum=!0):o.exclusiveMaximum=d:typeof s=="number"&&(o.maximum=s),a){let h=new Set;for(let m of a)Number.isFinite(m)&&m!==0?h.add(Math.abs(m)):C(n,e,o,r,`A multipleOf divisor of ${m} cannot be represented in JSON Schema`);let[y,...g]=h;y!==void 0&&(o.multipleOf=y),g.length&&(o.allOf=[...o.allOf??[],...g.map(m=>({multipleOf:m}))])}},Wd=(n,e,t,r)=>{t.type="boolean"},Vd=(n,e,t,r)=>{C(n,e,t,r,"BigInt cannot be represented in JSON Schema")},qd=(n,e,t,r)=>{C(n,e,t,r,"Symbols cannot be represented in JSON Schema")},Hd=(n,e,t,r)=>{e.target==="openapi-3.0"?(t.type="string",t.nullable=!0,t.enum=[null]):t.type="null"},Jd=(n,e,t,r)=>{C(n,e,t,r,"Undefined cannot be represented in JSON Schema")},Yd=(n,e,t,r)=>{C(n,e,t,r,"Void cannot be represented in JSON Schema")},Xd=(n,e,t,r)=>{t.not={}},Qd=(n,e,t,r)=>{},ec=(n,e,t,r)=>{},nc=(n,e,t,r)=>{C(n,e,t,r,"Date cannot be represented in JSON Schema")},tc=(n,e,t,r)=>{let o=n._zod.def,i=dn(o.entries);if(i.length===0){t.not={};return}i.every(s=>typeof s=="number")&&(t.type="number"),i.every(s=>typeof s=="string")&&(t.type="string"),t.enum=i},rc=(n,e,t,r)=>{let o=n._zod.def;if(o.values.length===0){t.not={};return}let i=[];for(let s of o.values)if(s===void 0){if(C(n,e,t,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof s=="bigint"){if(C(n,e,t,r,"BigInt literals cannot be represented in JSON Schema"))return;i.push(Number(s))}else i.push(s);if(i.length!==0)if(i.length===1){let s=i[0];t.type=s===null?"null":typeof s,e.target==="draft-04"||e.target==="openapi-3.0"?t.enum=[s]:t.const=s}else i.every(s=>typeof s=="number")&&(t.type="number"),i.every(s=>typeof s=="string")&&(t.type="string"),i.every(s=>typeof s=="boolean")&&(t.type="boolean"),i.every(s=>s===null)&&(t.type="null"),t.enum=i},oc=(n,e,t,r)=>{C(n,e,t,r,"NaN cannot be represented in JSON Schema")},ic=(n,e,t,r)=>{let o=t,i=n._zod.pattern;if(!i)throw new Error("Pattern not found in template literal");o.type="string",o.pattern=i.source},sc=(n,e,t,r)=>{let o=t;o.type="string",o.format="binary",o.contentEncoding="binary";let{minimum:i,maximum:s,mime:a}=Ue(n);i!==void 0&&(o.minLength=i),s!==void 0&&(o.maxLength=s),a&&(a.length===0?o.not={}:a.length===1?o.contentMediaType=a[0]:o.anyOf=a.map(d=>({contentMediaType:d})))},ac=(n,e,t,r)=>{t.type="boolean"},dc=(n,e,t,r)=>{C(n,e,t,r,"Custom types cannot be represented in JSON Schema")},cc=(n,e,t,r)=>{C(n,e,t,r,"Function types cannot be represented in JSON Schema")},lc=(n,e,t,r)=>{C(n,e,t,r,"Transforms cannot be represented in JSON Schema")},uc=(n,e,t,r)=>{C(n,e,t,r,"Map cannot be represented in JSON Schema")},fc=(n,e,t,r)=>{C(n,e,t,r,"Set cannot be represented in JSON Schema")},pc=(n,e,t,r)=>{let o=t,i=n._zod.def,{minimum:s,maximum:a}=Ue(n);typeof s=="number"&&(o.minItems=s),typeof a=="number"&&(o.maxItems=a),o.type="array",o.items=j(i.element,e,{...r,path:[...r.path,"items"]})};function hn(n){let e=n._zod.def;return e.type==="pipe"&&e.in._zod.traits.has("$ZodTransform")?hn(e.out):e.type==="catch"?hn(e.innerType):n._zod.optin}var hc=(n,e,t,r)=>{let o=t,i=n._zod.def,s=i.shape;if(Object.getOwnPropertySymbols(s).length&&C(n,e,o,r,"Symbol keys cannot be represented in JSON Schema"))return;o.type="object",o.properties={};for(let c in s)ee(o.properties,c,j(s[c],e,{...r,path:[...r.path,"properties",c]}));let d=[];for(let c of Object.keys(s)){let u=i.shape[c];(e.io==="input"?hn(u)===void 0:u._zod.optout===void 0)&&d.push(c)}d.length>0&&(o.required=d),i.catchall?._zod.def.type==="never"?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=j(i.catchall,e,{...r,path:[...r.path,"additionalProperties"]})):e.io==="output"&&(o.additionalProperties=!1)},gc=(n,e,t,r)=>{let o=n._zod.def,i=o.inclusive===!1,s=o.options.map((a,d)=>j(a,e,{...r,path:[...r.path,i?"oneOf":"anyOf",d]}));i?t.oneOf=s:t.anyOf=s},mc=(n,e,t,r)=>{let o=n._zod.def,i=j(o.left,e,{...r,path:[...r.path,"allOf",0]}),s=j(o.right,e,{...r,path:[...r.path,"allOf",1]}),a=c=>"allOf"in c&&Object.keys(c).length===1,d=[...a(i)?i.allOf:[i],...a(s)?s.allOf:[s]];t.allOf=d,e.intersections.push(d)},yc=(n,e,t,r)=>{let o=t,i=n._zod.def;o.type="array";let s=e.target==="draft-2020-12"?"prefixItems":"items",a=e.target==="draft-2020-12"||e.target==="openapi-3.0"?"items":"additionalItems",d=i.items.map((y,g)=>j(y,e,{...r,path:[...r.path,s,g]})),c=i.rest?j(i.rest,e,{...r,path:[...r.path,a,...e.target==="openapi-3.0"?[i.items.length]:[]]}):null,u=i.items.length;for(;u>0;){let y=i.items[u-1];if(!(e.io==="input"?hn(y)!==void 0:y._zod.optout==="optional"))break;u--}let f=i.items.length,l=!i.rest;e.target==="draft-2020-12"?(o.prefixItems=d,l?o.items=!1:c&&(o.items=c),u>0&&(o.minItems=u),l&&(o.maxItems=f)):e.target==="openapi-3.0"?(o.items={anyOf:d},c&&o.items.anyOf.push(c),u>0&&(o.minItems=u),l&&(o.maxItems=f)):(o.items=d,l?o.additionalItems=!1:c&&(o.additionalItems=c),u>0&&(o.minItems=u),l&&(o.maxItems=f));let{minimum:p,maximum:h}=Ue(n);typeof p=="number"&&(o.minItems=p),typeof h=="number"&&(o.maxItems=h)};function Jt(n,e,t){if(e.$ref){if(t.has(e))return e;t.add(e);let h=n.get(e)?.def;if(!h)return e;let y=Jt(n,h,t);return y===h?e:y}for(let h of["anyOf","oneOf"]){let y=e[h];if(!Array.isArray(y))continue;let g=y.map(m=>Jt(n,m,t));g.some((m,x)=>m!==y[x])&&(e={...e,[h]:g})}let r=Array.isArray(e.type)?e.type:[e.type],o=!r.includes("string")&&r.some(h=>h==="number"||h==="integer"),i=e.enum??(e.const!==void 0?[e.const]:void 0);if(!o&&!i?.some(h=>typeof h=="number"))return e;let{minimum:s,maximum:a,exclusiveMinimum:d,exclusiveMaximum:c,multipleOf:u,format:f,id:l,...p}=e;return p.enum?p.enum=p.enum.map(h=>typeof h=="number"?String(h):h):typeof p.const=="number"&&(p.const=String(p.const)),o&&(p.type="string",i||(p.pattern=(r.includes("number")?fn:Ut).source)),p}var Yt=new WeakMap;function bc(n){let e=new Map;for(let r of n.seen.values())r.def&&!e.has(r.schema)&&e.set(r.schema,r);let t=new Map;for(let r of Yt.get(n)??[]){let o=n.seen.get(r),i=(o?.def??o?.schema)?.propertyNames;if(!i||i===!0||t.has(i))continue;let s=Jt(e,i,new Set);s!==i&&t.set(i,s)}if(t.size)for(let r of n.seen.values())for(let o of[r.schema,r.def]){let i=o&&t.get(o.propertyNames);i&&(o.propertyNames=i)}}var xc=(n,e,t,r)=>{let o=t,i=n._zod.def;o.type="object";let s=i.keyType,a=Ue(s).patterns;if(i.mode==="loose"&&a&&a.size>0){let u=j(i.valueType,e,{...r,path:[...r.path,"patternProperties","*"]});o.patternProperties={};for(let f of a)ee(o.patternProperties,Wi(f).source,u)}else{if(e.target==="draft-07"||e.target==="draft-2020-12"){o.propertyNames=j(i.keyType,e,{...r,path:[...r.path,"propertyNames"]});let u=Yt.get(e);u||(u=[],Yt.set(e,u),e.deferred.push(()=>bc(e))),u.push(n)}o.additionalProperties=j(i.valueType,e,{...r,path:[...r.path,"additionalProperties"]})}let d=s._zod.values,c=e.io==="input"&&hn(i.valueType)!==void 0;if(d&&!i.partial&&!c){let u=[...d].filter(f=>typeof f=="string"||typeof f=="number");u.length>0&&(o.required=u.map(String))}},vc=(n,e,t,r)=>{let o=n._zod.def,i=j(o.innerType,e,r),s=e.seen.get(n);e.target==="openapi-3.0"?(s.ref=o.innerType,t.nullable=!0):t.anyOf=[i,{type:"null"}]},wc=(n,e,t,r)=>{let o=n._zod.def;j(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType},Xt=Symbol();function Vi(n,e,t,r,o){let i=!1,s=JSON.stringify(n,(a,d)=>typeof d!="bigint"?d:(i=!0,null));return i?(C(e,t,r,o,"BigInt defaults cannot be represented in JSON Schema"),Xt):JSON.parse(s)}var kc=(n,e,t,r)=>{let o=n._zod.def;j(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType;let s=Vi(o.defaultValue,n,e,t,r);s!==Xt&&(t.default=s)},Sc=(n,e,t,r)=>{let o=n._zod.def;j(o.innerType,e,r);let i=e.seen.get(n);if(i.ref=o.innerType,e.io!=="input")return;let s=Vi(o.defaultValue,n,e,t,r);s!==Xt&&(t._prefault=s)},_c=(n,e,t,r)=>{let o=n._zod.def;j(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType;let s;try{s=o.catchValue(void 0)}catch{C(n,e,t,r,"Dynamic catch values are not supported in JSON Schema");return}t.default=s},$c=(n,e,t,r)=>{let o=n._zod.def,i=o.in._zod.traits.has("$ZodTransform"),s=e.io==="input"?i?o.out:o.in:o.out;j(s,e,r);let a=e.seen.get(n);a.ref=s},Oc=(n,e,t,r)=>{let o=n._zod.def;j(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType,t.readOnly=!0},Ac=(n,e,t,r)=>{let o=n._zod.def;j(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType},Rc=(n,e,t,r)=>{let o=n._zod.def;j(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType},Pc=(n,e,t,r)=>{let o=n._zod.innerType;j(o,e,r);let i=e.seen.get(n);i.ref=o},Li={string:Ud,number:Kd,boolean:Wd,bigint:Vd,symbol:qd,null:Hd,undefined:Jd,void:Yd,never:Xd,any:Qd,unknown:ec,date:nc,enum:tc,literal:rc,nan:oc,template_literal:ic,file:sc,success:ac,custom:dc,function:cc,transform:lc,map:uc,set:fc,array:pc,object:hc,union:gc,intersection:mc,tuple:yc,record:xc,nullable:vc,nonoptional:wc,default:kc,prefault:Sc,catch:_c,pipe:$c,readonly:Oc,promise:Ac,optional:Rc,lazy:Pc};function Qt(n,e){if("_idmap"in n){let r=n,o=Wn({...e,processors:Li}),i={};for(let d of r._idmap.entries()){let[c,u]=d;j(u,o)}let s={},a={registry:r,uri:e?.uri,defs:i};o.external=a;for(let d of r._idmap.entries()){let[c,u]=d;Vn(o,u),ee(s,c,qn(o,u))}if(Object.keys(i).length>0){let d=o.target==="draft-2020-12"?"$defs":"definitions";s.__shared={[d]:i}}return{schemas:s}}let t=Wn({...e,processors:Li});return j(n,t),Vn(t,n),qn(t,n)}var V=O("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");L.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){ze(this,"with",n)},parse(n,e){return Ct(this,n,e,{callee:this.parse})},parseAsync(n,e){return Lt(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return Gt(this,n,e)},safeParseAsync(n,e){return Bt(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return Ze(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),Hi=O("ZodMiniString",(n,e)=>{Wt.init(n,e),V.init(n,e)});function Ke(n){return yi(Hi,n)}var Ji=O("ZodMiniStringFormat",(n,e)=>{Kn.init(n,e),Hi.init(n,e)}),Nc=O("ZodMiniEmail",(n,e)=>{Ho.init(n,e),Ji.init(n,e)});function Pg(n){return bi(Nc,n)}var Mc=O("ZodMiniURL",(n,e)=>{Yo.init(n,e),Ji.init(n,e)});function zg(n){return xi(Mc,n)}var Yi=O("ZodMiniNumber",(n,e)=>{Vt.init(n,e),V.init(n,e)});function Eg(n){return vi(Yi,n)}var Ic=O("ZodMiniNumberFormat",(n,e)=>{ei.init(n,e),Yi.init(n,e)});function Ng(n){return wi(Ic,n)}var jc=O("ZodMiniBoolean",(n,e)=>{ni.init(n,e),V.init(n,e)});function Mg(n){return ki(jc,n)}var Tc=O("ZodMiniNull",(n,e)=>{ti.init(n,e),V.init(n,e)});function Ig(n){return Si(Tc,n)}var Dc=O("ZodMiniUnknown",(n,e)=>{ri.init(n,e),V.init(n,e)});function Fc(){return _i(Dc)}var Zc=O("ZodMiniNever",(n,e)=>{oi.init(n,e),V.init(n,e)});function Cc(n){return $i(Zc,n)}var Lc=O("ZodMiniArray",(n,e)=>{ii.init(n,e),V.init(n,e)});function jg(n,e){return new Lc({type:"array",element:n,...M(e)})}var er=O("ZodMiniObject",(n,e)=>{si.init(n,e),V.init(n,e),vo(n,"shape",t=>t._zod.def.shape,!1)});function Xi(n,e){let t={type:"object",shape:n??{},...M(e)};return new er(t)}function Qi(n,e){return new er({type:"object",shape:n,catchall:Cc(),...M(e)})}function Tg(n,e){return new er({type:"object",shape:n,catchall:Fc(),...M(e)})}function nr(n,e){return mo(n,e)}var Gc=O("ZodMiniUnion",(n,e)=>{ai.init(n,e),V.init(n,e)});function Dg(n,e){return new Gc({type:"union",options:n,...M(e)})}var qi=O("ZodMiniRecord",(n,e)=>{di.init(n,e),V.init(n,e)});function Fg(n,e,t){return!e||!e._zod?new qi({type:"record",keyType:Ke(),valueType:n,...M(e)}):new qi({type:"record",keyType:n,valueType:e,...M(t)})}var Bc=O("ZodMiniEnum",(n,e)=>{ci.init(n,e),V.init(n,e),n.options=[...n._zod.values]});function Zg(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Bc({type:"enum",entries:t,...M(e)})}var Uc=O("ZodMiniLiteral",(n,e)=>{li.init(n,e),V.init(n,e)});function tr(n,e){return new Uc({type:"literal",values:Array.isArray(n)?n:[n],...M(e)})}var Kc=O("ZodMiniOptional",(n,e)=>{ui.init(n,e),V.init(n,e)});function es(n){return new Kc({type:"optional",innerType:n})}var Wc=O("ZodMiniCustom",(n,e)=>{fi.init(n,e),V.init(n,e)});function Cg(n,e={}){return Ri(Wc,n,e)}function Lg(n,e){return Pi(n,e)}var Gg=zi;Y().localeError||Y(pi());var U=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Vc=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=Se.get(n)?.description;return typeof e=="string"?e:void 0};var re=class extends Error{constructor(t,r){super(r?`${t}
|
|
5
|
+
\u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function qc(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new re(`Duplicate node kind "${a.kind}"`,"Each kind may be declared once; merge the two defineNode calls.");r.set(a.kind,a)}let o=new Map;for(let a of t)for(let[d,c]of Object.entries(a.edges)){if(c.to!=="*"){for(let f of c.to)if(!r.has(f))throw new re(`Edge "${d}" on "${a.kind}" points at undeclared kind "${f}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let u=o.get(d);u?u.from.push(a.kind):o.set(d,{from:[a.kind],decl:c})}let i=new Map;for(let[a,{from:d,decl:c}]of o){let u=d.map(f=>r.get(f).edges[a].to);i.set(a,{kind:a,from:d,to:u.includes("*")?"*":[...new Set(u.flat())],cardinality:c.cardinality??"many",...c.description===void 0?{}:{description:c.description}})}let s=new Map;for(let a of t)s.set(a.kind,nr(a.fields,{id:Ke().check(Le(1)),kind:tr(a.kind)}));return{definitions:t,computed:e,kinds:t.map(a=>a.kind),edgeKinds:[...i.keys()],definition(a){let d=r.get(a);if(!d)throw new re(`Unknown node kind "${String(a)}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return d},tryDefinition(a){return r.get(a)},edge(a){return i.get(a)},edgeAllowed(a,d,c){let u=r.get(d)?.edges[a];return u?u.to==="*"||u.to.includes(c):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new re("Node is missing a `kind`");let c=s.get(d);if(!c)throw new re(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return c.parse(a)},__node:void 0}}function T(n){return`${n.kind}\0${n.from}\0${n.to}`}var ns={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function ts(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function Hc(n,e){let t=new Set([...Object.keys(n),...Object.keys(e)]),r=[];for(let o of t){let i=n[o],s=e[o];JSON.stringify(i)!==JSON.stringify(s)&&r.push(o)}return r.sort()}function oe(n,e){let t=new Map(n.nodes.map(l=>[l.id,l])),r=new Map(e.nodes.map(l=>[l.id,l])),o=e.nodes.filter(l=>!t.has(l.id)),i=n.nodes.filter(l=>!r.has(l.id)),s=[];for(let l of n.nodes){let p=r.get(l.id);if(!p)continue;let h=Hc(l,p);h.length>0&&s.push({before:l,after:p,fields:h})}let a=new Map(n.edges.map(l=>[T(l),l])),d=new Map(e.edges.map(l=>[T(l),l])),c=e.edges.filter(l=>!a.has(T(l))),u=n.edges.filter(l=>!d.has(T(l))),f=new Set;for(let l of o)f.add(l.id);for(let l of i)f.add(l.id);for(let l of s)f.add(l.after.id);for(let l of[...c,...u])f.add(l.from),f.add(l.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:c,removedEdges:u,touched:[...f].sort()}}var se="\0graview:unset",We=n=>n===void 0||n===se;function gn(n){if(n.op!=="patch-node")return n;let e=t=>Object.fromEntries(Object.entries(t).map(([r,o])=>[r,o===void 0?se:o]));return{...n,before:e(n.before),after:e(n.after)}}function mn(n){switch(n.op){case"add-node":return{op:"remove-node",node:n.node};case"remove-node":return{op:"add-node",node:n.node};case"patch-node":return{op:"patch-node",id:n.id,before:n.after,after:n.before};case"add-edge":return{op:"remove-edge",edge:n.edge};case"remove-edge":return{op:"add-edge",edge:n.edge}}}function rr(n){switch(n.op){case"add-node":case"remove-node":return[n.node.id];case"patch-node":return[n.id];case"add-edge":case"remove-edge":return[n.edge.from,n.edge.to]}}function Jc(n){let e=n?.issues;return!Array.isArray(e)||e.length===0?n instanceof Error?n.message:String(n):e.map(t=>{let r=t.path?.length?P(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var D=class extends Error{constructor(t,r){super(r?`${t}
|
|
6
|
+
${r}`:t);this.hint=r;this.name="GraphError"}},q=class extends D{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}},or="n\0",ir="e\0",K=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=new Map;outIndex=new Map;inIndex=new Map;rank=0;ranks=new Map;lapsed=new Map;reordered=!1;listeners=new Set;validate;static from(e,t,r={}){let o=new n(e,r);return o.load(t),o}load(e){let t=this.snapshot();this.nodes.clear(),this.edges.clear(),this.outIndex.clear(),this.inIndex.clear(),this.forgetRanks();for(let o of e.nodes)this.insertNode(o,!0);for(let o of e.edges)this.insertEdge(o,!0);let r=oe(t,this.snapshot());return this.emit(r),r}getNode(e){return this.nodes.get(e)}has(e){return this.nodes.has(e)}allNodes(){return[...this.nodes.values()]}allEdges(){return[...this.edges.values()]}nodesOfKind(e){return this.allNodes().filter(t=>t.kind===e)}edgesOfKind(e){return this.allEdges().filter(t=>t.kind===e)}out(e,t){return this.resolve(this.outIndex.get(e),t,"to")}in(e,t){return this.resolve(this.inIndex.get(e),t,"from")}neighbors(e){let t=new Map;for(let r of[...this.out(e),...this.in(e)])t.set(r.id,r);return[...t.values()]}outEdges(e,t){return this.edgesFrom(this.outIndex.get(e),t)}inEdges(e,t){return this.edgesFrom(this.inIndex.get(e),t)}snapshot(){return{nodes:this.allNodes(),edges:this.allEdges()}}get size(){return{nodes:this.nodes.size,edges:this.edges.size}}applyPrimitives(e,t={}){let r=this.snapshot();try{for(let i of e)this.applyOne(i,t.restoring===!0,t.inPlace===!0);this.settleOrder()}catch(i){throw this.restore(r),i}let o=oe(r,this.snapshot());return this.emit(o),o}preview(e,t={}){return n.from(this.schema,this.snapshot(),{validate:this.validate}).applyPrimitives(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}restore(e){this.nodes.clear(),this.edges.clear(),this.outIndex.clear(),this.inIndex.clear(),this.forgetRanks();for(let t of e.nodes)this.insertNode(t,!0);for(let t of e.edges)this.insertEdge(t,!0)}forgetRanks(){this.ranks.clear(),this.lapsed.clear(),this.reordered=!1}place(e,t){let r=t?this.lapsed.get(e):void 0;if(r===void 0){this.ranks.set(e,++this.rank);return}this.ranks.set(e,r),this.lapsed.delete(e),this.reordered=!0}lapse(e){let t=this.ranks.get(e);t!==void 0&&(this.ranks.delete(e),this.lapsed.set(e,t),this.lapsed.size>4096&&this.lapsed.delete(this.lapsed.keys().next().value))}settleOrder(){if(!this.reordered)return;this.reordered=!1;let e=o=>(i,s)=>this.ranks.get(o+i[0])-this.ranks.get(o+s[0]),t=[...this.nodes.entries()].sort(e(or));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(ir));this.edges.clear();for(let[o,i]of r)this.edges.set(o,i)}emit(e){if(!(e.addedNodes.length===0&&e.removedNodes.length===0&&e.changedNodes.length===0&&e.addedEdges.length===0&&e.removedEdges.length===0))for(let t of this.listeners)t(e)}applyOne(e,t,r){switch(e.op){case"add-node":this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id;if(!this.nodes.has(o))throw new q(o,`Cannot remove missing node "${o}"`);for(let i of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(i);this.nodes.delete(o),this.lapse(or+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new q(e.id,`Cannot patch missing node "${e.id}"`);let i={...o};for(let[s,a]of Object.entries(e.after))We(a)?delete i[s]:i[s]=a;this.nodes.set(e.id,t?i:this.checkPatch(o,i,Object.keys(e.after)));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{if(!this.edges.has(T(e.edge)))throw new q(T(e.edge),`Cannot remove missing edge ${T(e.edge)}`);this.deleteEdge(e.edge);return}}}check(e){if(!this.validate)return e;try{return this.schema.parseNode(e)}catch(t){throw this.refusal(e,t)}}checkPatch(e,t,r){if(!this.validate)return t;let o=this.schema.tryDefinition(String(t.kind))?.fields?.shape;if(!o)return this.check(t);for(let a of r){if(a==="id"||a==="kind")continue;let d=o[a];if(!d){delete t[a];continue}let c=d.safeParse(t[a]);c.success&&(c.data===void 0?delete t[a]:t[a]=c.data)}let i=this.failing(t);if(i===void 0)return t;let s=this.failing(e)?.fields??new Set;if([...i.fields].some(a=>r.includes(a)||!s.has(a)))throw this.refusal(t,i.error);return t}failing(e){try{this.schema.parseNode(e);return}catch(t){if(t instanceof re)throw t;let r=t.issues??[];return{fields:new Set(r.flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[""])),error:t}}}refusal(e,t){if(t instanceof re)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?F(i,e):r;return new D(`${s} does not match what ${o} declares`,Jc(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new D(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),this.place(or+e.id,r)}insertEdge(e,t,r=!1){let o=this.nodes.get(e.from),i=this.nodes.get(e.to);if(!o||!i){let a=o?e.to:e.from;throw new q(a,`Edge "${e.kind}" references missing node "${a}"`)}if(this.validate&&!t&&!this.schema.edgeAllowed(e.kind,o.kind,i.kind)){let a=this.schema.edge(e.kind);throw new D(`Edge "${e.kind}" is not declared from ${o.kind} to ${i.kind}`,a?`Declared: ${a.from.join("|")} -> ${a.to==="*"?"*":a.to.join("|")}`:`No edge kind "${e.kind}" is declared in this schema`)}let s=T(e);this.edges.has(s)||(this.edges.set(s,e),this.place(ir+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=T(e);this.edges.delete(t),this.lapse(ir+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){let o=e.get(t);o?o.add(r):e.set(t,new Set([r]))}edgesFrom(e,t){if(!e)return[];let r=[];for(let o of e){let i=this.edges.get(o);i&&(t===void 0||i.kind===t)&&r.push(i)}return r}resolve(e,t,r){let o=[];for(let i of this.edgesFrom(e,t)){let s=this.nodes.get(i[r]);s&&o.push(s)}return o}};function rs(n,e,t){let r=[...e?.creates??[],...e?.subject&&e.subject.kinds!=="*"?e.subject.kinds:[]];for(let o of r){let i=n.tryDefinition(o),s=i?.fields?.shape??{};if(!i||!(t in s))continue;let a=i.display?.format?.[t];return{label:i.display?.labels?.[t]??(t==="label"?"Name":Tn(i,t)),option:c=>a?a(c):P(c)}}return{label:t==="label"?"Name":P(t),option:o=>P(o)}}var Ee=class extends D{constructor(t,r){super(`Invalid arguments for mutation "${t}"`,r.map(o=>`${o.path.map(String).join(".")||"(root)"}: ${o.message}`).join("; "));this.mutation=t;this.issues=r;this.name="InvalidArguments"}};function Yc(n,e,t){if(t instanceof Ee){let r=e.find(i=>i.name===t.mutation);return`Not yet: ${t.issues.map(i=>{let s=i.path.length>0?rs(n,r,String(i.path[0])).label:void 0;return s?`${s} \u2014 ${i.message.replace(/^./,a=>a.toLowerCase())}`:i.message}).join("; ")}.`}return t instanceof Error?t.message:String(t)}var Jn=class extends Error{constructor(t,r){super(`No invariant registered under "${t}" (required by node "${r}")`);this.invariant=t;this.nodeId=r;this.name="UnregisteredInvariantError"}};function Xc(n,e){return{...e,name:n}}var Yn=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function os(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof Yn,i=r instanceof Error?r.message:String(r),s=n.label??n.name.replace(/-/g," ");return[{invariant:n.name,status:o?"over-budget":"could-not-judge",...t!==void 0?{subjectId:t}:{},label:s,message:`${s} could not be judged: ${i}`,nodeIds:t!==void 0?[t]:[],repairs:[]}]}}function Ve(n,e,t={}){let r=t.context??{},o=t.onUnregistered??"skip",i=new Set(e.map(f=>f.name)),s=[];for(let f of e)f.scope==="graph"&&s.push(...os(f,()=>f.evaluate({graph:n,subject:void 0,context:r}),void 0));let a=e.filter(f=>f.scope!=="graph"),d=new Map;for(let f of a){let l=f.scope.kind,p=d.get(l);p?p.push(f):d.set(l,[f])}for(let f of n.allNodes()){let l=n.schema.tryDefinition(f.kind),p=l?.requiresInvariant?.(f)??null;if(t.subjectFilter&&!t.subjectFilter(f,r))continue;if(p!==null&&!i.has(p)){if(o==="throw")throw new Jn(p,f.id);continue}let h=!ve(l,f,t.today);for(let y of d.get(f.kind)??[]){if(h&&y.judgesPast!==!0)continue;let g=y.scope.match;g&&!g(f)||s.push(...os(y,()=>y.evaluate({graph:n,subject:f,context:r}),f.id))}}let c=new Set,u=s.filter(f=>{let l=`${f.message}|${[...f.nodeIds].sort().join(",")}`;return c.has(l)?!1:(c.add(l),!0)}).map(f=>{let l=wt(f.message);return l===f.message?f:{...f,message:l}});return Xn(n,e,u)}var sr;function iy(n){sr=n}var Xn=(n,e,t)=>sr?sr(n,e,t):t;function Qc(n,e){let t=new Set(e);return n.filter(r=>r.nodeIds.some(o=>t.has(o))||r.subjectId!==void 0&&t.has(r.subjectId))}function el(n){let e=new Set(n.map(r=>r.invariant)).size;if(e===0)return"All rules hold";let t=`${e} ${e===1?"rule":"rules"} broken`;return n.length>e?`${t} in ${n.length} places`:t}var dr=(n,e)=>n==="*"||n.includes(e);function Z(n){let e=n.onBehalfOf;if(!e)return n;let t=e.roles??[],r=n.roles===void 0?t:n.roles.filter(o=>t.includes(o));return{...n,...e.id!==void 0?{id:e.id}:{},roles:r}}var W=n=>n.kind==="system"&&n.onBehalfOf===void 0;function nl(n,e){return n.roles==="*"?!0:(e.roles??[]).some(t=>n.roles.includes(t))}function is(n){let e=n.map(t=>Dn(P(t).toLowerCase()));return e.length<=1?e[0]??"":`${e.slice(0,-1).join(", ")} or ${e[e.length-1]}`}function _e(n,e,t,r,o,i,s={}){if(!n)return{ok:!0};if(W(e))return{ok:!0};if(e=Z(e),o!==void 0){if(_e(n,e,t,r,void 0,i).ok)return{ok:!0};if(o.some(l=>_e(n,e,l,r,void 0,i).ok))return{ok:!0};let c=[t,...o],u=[...new Set(c.flatMap(l=>ar(n,l,r)))].sort(),f=u.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${is(u)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:u,message:ss(n,c,r,f,s)}}}for(let c of n.grants)if(nl(c,e)&&dr(c.mutations,t)&&!(c.kinds!==void 0&&c.kinds!=="*"&&(r===void 0||!c.kinds.includes(r)))&&!(c.self&&(i===void 0||e.id===void 0||i!==e.id)))return{ok:!0};let a=ar(n,t,r),d=a.length===0?"no role can":`${is(a)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:a,message:ss(n,[t],r,d,s)}}}function ss(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>as(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${Dn(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function as(n,e,t){let r=new Set;for(let o of n.grants)dr(o.mutations,e)&&(o.kinds!==void 0&&o.kinds!=="*"&&t!==void 0&&!o.kinds.includes(t)||o.describe&&r.add(o.describe));return[...r]}function ar(n,e,t){let r=new Set;for(let o of n.grants)if(dr(o.mutations,e)&&!(o.kinds!==void 0&&o.kinds!=="*"&&t!==void 0&&!o.kinds.includes(t))){if(o.roles==="*")return[];for(let i of o.roles)r.add(i)}return[...r].sort()}function cr(n,e,t){return n?t.filter(r=>{let o=r.subject;return(o&&o.kinds!=="*"?o.kinds:[void 0]).some(s=>_e(n,e,r.name,s,void 0,Z(e).id).ok)}):t}var qe=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};function lr(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function ur(n,e={}){let t=typeof n=="string"?n:n.address,r=lr(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function tl(n,e){let t=lr(e);if(t==="")return n.startsWith("/")?n:`/${n}`;if(!n.toLowerCase().startsWith(t.toLowerCase()))return null;let r=n.slice(t.length);return r===""||r==="/"?"/":r.startsWith("/")?r:null}var cs=Symbol.for("@graview/core:node-ref"),ds=n=>typeof n=="object"&&n!==null?n[cs]:void 0;function fr(n="*"){return rl(Ke().check(Le(1)),n)}function rl(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,cs,{value:t,enumerable:!0,configurable:!0})};return r(n),r(U(n)),n}function yn(n){if(typeof n!="object"||n===null)return;let e=ds(n);if(e)return e;let t=U(n),r=ds(t);if(r)return r;let o=t?.innerType;return o?yn(o):void 0}function ae(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=yn(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}function He(n){let e=U(n)?.innerType;return e===void 0?n:He(e)}var ol={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},il=n=>(n?._zod?.def?.checks??[]).map(e=>e._zod?.def).filter(e=>e!==void 0);function $e(n){let e=He(n),t=U(e),r=t?.type,o=il(e);if(r==="enum")return{type:"choice",options:Object.keys(t?.entries??{})};if(r==="boolean")return{type:"boolean"};if(r==="array"){let i=$e(t?.element);return i.type==="unknown"?{type:"unknown"}:{type:"several",of:i}}if(r==="number"){let i,s,a;for(let d of o){d.check==="multiple_of"&&typeof d.value=="number"?a=d.value:d.check==="number_format"&&(d.format==="safeint"||d.format==="int32"||d.format==="uint32")&&(a??=1);let c=d.check==="number_format"&&d.format?ol[d.format]:void 0,u=c?c[0]:d.check==="greater_than"&&d.inclusive&&typeof d.value=="number"?d.value:void 0,f=c?c[1]:d.check==="less_than"&&d.inclusive&&typeof d.value=="number"?d.value:void 0;u!==void 0&&(i=i===void 0?u:Math.max(i,u)),f!==void 0&&(s=s===void 0?f:Math.min(s,f))}return{type:"number",...i===void 0?{}:{min:i},...s===void 0?{}:{max:s},...a===void 0?{}:{step:a}}}if(r==="string"){let s=[t?.pattern,...o.map(d=>d.pattern)].filter(d=>d instanceof RegExp).map(d=>d.source);return s.some(d=>d.includes("\\d{4}"))?s.some(d=>d.includes("\\d{2}:\\d{2}"))?{type:"date",time:!0}:{type:"date"}:o.some(d=>d.check==="max_length"&&typeof d.maximum=="number"&&d.maximum>500)?{type:"text",long:!0}:{type:"text"}}return{type:"unknown"}}function sl(n,e){let t=n?.shape;return!t||!(e in t)?{type:"unknown"}:$e(t[e])}function al(n,e){return n.display?.labels?.[e]??P(e)}function us(n){let e=$e(n);switch(e.type){case"text":case"date":case"number":case"boolean":case"choice":return e.type;default:return}}function dl(n,e){let t=new Map,r=n.tryDefinition(e);for(let[o,i]of Object.entries(r?.edges??{}))t.set(o,{key:o,label:i.description?Q(i.description):P(o),about:"edge",far:i.to==="*"?[...n.kinds]:[...i.to]});for(let o of n.definitions)if(o.kind!==e)for(let[i,s]of Object.entries(o.edges??{}))t.has(i)||s.to!=="*"&&!s.to.includes(e)||t.set(i,{key:i,label:s.inverse?Q(s.inverse):P(i),about:"edge",far:[o.kind]});return[...t.values()]}var cl=["current","past","any","flagged","clear"];function fs(n,e){let t=n?.lifecycle;if(!t||t.retired==="date")return!1;let r=t.retired.map(String);return e.some(o=>o.key===t.field&&r.includes(o.value))}function ps(n,e){let t=n.tryDefinition(e);if(!t)return{kind:e,sorts:[],filters:[],groups:[]};let r=new Set(t.display?.hide??[]),o=t.fields.shape??{},i=[{key:"label",label:"Name",about:"label",type:"text"}],s=[],a=[];for(let[f,l]of Object.entries(o)){if(f==="id"||f==="kind"||f==="label"||r.has(f))continue;let p=us(l);if(!p)continue;let h=al(t,f),y=p==="choice"?ll(l):p==="boolean"?["true","false"]:void 0,g={key:f,label:h,about:"field",type:p,...y?{options:y}:{}};i.push(g),s.push(g),(p==="boolean"||p==="choice")&&a.push(g),p==="date"&&a.push({...g,buckets:["day","week","month","year","decade"]})}for(let f of dl(n,e))i.push(f),s.push(f),a.push(f);let d={key:"is",label:t.lifecycle?"Standing and currency":"Standing",about:"is",type:"choice",options:t.lifecycle?[...cl]:["flagged","clear"]};s.push(d);let c=t.fieldRoles?.order,u=c&&(c in o||c==="label")?{by:c,direction:"asc"}:void 0;return{kind:e,sorts:i,filters:s,groups:a,...u?{natural:u}:{}}}function ll(n){let e=$e(n);return e.type==="choice"?e.options:[]}var ul=["day","week","month","year","decade"];function hs(n){let e={};if(n.q&&n.q.trim().length>0&&(e.query=n.q),n.sort){let[t,r]=n.sort.split(":");t&&(e.sort={by:t,direction:r==="desc"?"desc":"asc"})}if(n.filter){let t=[];for(let r of n.filter.split(",")){let o=r.indexOf(":");o<=0||t.push({key:r.slice(0,o),value:r.slice(o+1)})}t.length>0&&(e.filter=t)}if(n.group){let[t,r]=n.group.split(":");t&&(e.group={by:t,...ul.includes(r)?{bucket:r}:{}})}return e}var fl=n=>n,ls=n=>n;function pl(n,e,t){let r=new Map;for(let o of[...n.out(e,t),...n.in(e,t)])r.set(o.id,o);return[...r.values()]}function gs(n,e,t){let r=n.schema.tryDefinition(e.kind);if(t.key==="is")switch(t.value){case"current":return ve(r,ls(e),n.today);case"past":return!ve(r,ls(e),n.today);case"any":return!0;case"flagged":return n.flagged?.has(e.id)??!1;case"clear":return!(n.flagged?.has(e.id)??!1);default:return!0}let o=r?.fields.shape??{};if(t.key in o){let s=fl(e)[t.key],a=us(o[t.key]);if(a==="date"){let[d,c]=t.value.split(":");if(typeof s!="string"||!c)return!1;let u=s.slice(0,10);return d==="before"?u<c:d==="after"?u>c:u===c}if(a==="boolean")return String(s)===t.value;if(a==="number"){let d=t.value.lastIndexOf(":"),c=d>0?t.value.slice(0,d):"",u=Number(t.value.slice(d+1));if(c==="at-most"||c==="at-least")return typeof s!="number"||!Number.isFinite(u)?!1:c==="at-most"?s<=u:s>=u}return String(s)===t.value}let i=pl(n.graph,e.id,t.key);return t.value==="*"?i.length>0:t.value==="none"?i.length===0:i.some(s=>s.id===t.value)}var ms=["full","summary","glyph"];function me(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function de(n,e){return`/${me(n.tryDefinition(e)?.plural??`${e}s`)}`}function hl(n,e,t){return`${de(n,e)}/${encodeURIComponent(t)}`}function bn(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function xn(n,e){return e.some(t=>t.as===n.as&&t.kind!==n.kind)}var Ne=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function pr(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function gl(n){let e=new Map,t=[],r=[],o,i,s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a){return a!==void 0&&(i=a),s},homeView:()=>i,register(a,d,c,u){let f={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:c,...u?.title?{title:u.title}:{},...u?.across?{across:u.across}:{},...u?.beside?{beside:!0}:{}};if(r.push(f),u?.beside||e.set(Ne(a,d),f),u?.title){let l=me(u.title);e.set(Ne(a,d,l),f),d.cardinality==="many"&&!t.some(p=>p.kind===a&&p.as===l)&&t.push({kind:a,title:u.title,as:l,...u.across?{across:u.across}:{}})}return s},places:()=>t,forget(a,d){for(let u of ms)e.delete(Ne(a,{cardinality:"many",fidelity:u},d));let c=t.findIndex(u=>u.kind===a&&u.as===d);return c>=0&&t.splice(c,1),s},lookup(a,d){return e.get(Ne(a,d))?.view},resolve(a,d,c){if(c)for(let u of pr(d.fidelity)){let f=e.get(Ne(a,{cardinality:d.cardinality,fidelity:u},c));if(f)return f}for(let u of pr(d.fidelity)){let f=e.get(Ne(a,{cardinality:d.cardinality,fidelity:u}));if(f)return f}if(d.cardinality==="one")for(let u of pr(d.fidelity)){let f=e.get(Ne(a,{cardinality:"many",fidelity:u}));if(f)return f}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var ml=n=>`Op "${n.id}" has seq ${n.seq}, so the log begins at seq ${n.seq}: a log that begins past 0 begins at its undo horizon, and none was given (a checkpoint epoch, or { horizon })`,Je=class n{ops=[];marks=[];start=0;get length(){return this.start+this.ops.length}get horizon(){return this.start}all(){return this.ops}opsFrom(e){return this.ops.slice(Math.max(0,e-this.start))}append(e){if(e.seq!==this.length)throw new Error(this.length===0&&e.seq>0?ml(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);this.ops.push(e)}static from(e,t=[],r={}){let o=new n,i=[...t].reverse().find(d=>d.horizon),s=r.horizon??i?.seq??0;if(!Number.isInteger(s)||s<0)throw new Error(`A log cannot begin at seq ${s}`);if(i&&r.horizon!==void 0&&i.seq!==r.horizon)throw new Error(`A log said to begin at seq ${r.horizon} has its checkpoint at seq ${i.seq}`);let a=e[0];if(a&&s>0&&a.seq!==s)throw new Error(`A log compacted at seq ${s} begins with op "${a.id}" at seq ${a.seq}`);o.start=s;for(let d of e)o.append(d);for(let d of t)o.markEpoch(d);return o}replace(e,t=[],r={}){let o=n.from(e,t,r);this.ops=o.ops,this.marks=o.marks,this.start=o.start}epochs(){return this.marks}lastEpoch(){return this.marks.at(-1)}markEpoch(e){if(!Number.isInteger(e.seq)||e.seq<0||e.seq>this.length)throw new Error(`An epoch at seq ${e.seq} starts past the end of a log ${this.length} long`);if(e.seq<this.start)throw new Error(`An epoch at seq ${e.seq} is behind the horizon at seq ${this.start}: it went to the archive with the ops before it`);let t=this.lastEpoch();if(t&&e.seq<t.seq)throw new Error(`An epoch at seq ${e.seq} comes before the last one, at seq ${t.seq}`);this.marks.push(e)}truncate(e){if(!Number.isInteger(e)||e<this.start||e>this.length)throw new Error(`Cannot cut a log ${this.length} long back to ${e}`);let t=this.lastEpoch();if(t&&t.seq>e)throw new Error(`Cannot cut the log back to ${e}: an epoch begins at seq ${t.seq}`);return this.ops.splice(e-this.start)}checkpointAt(e,t,r={}){if(!Number.isInteger(t)||t<this.start||t>this.length)throw new Error(`No checkpoint at seq ${t}: this log holds seqs ${this.start} to ${this.length}`);let o=[...this.marks].reverse().find(a=>a.seq<=t);if(o?.seq===t)return{...o,horizon:!0};let i=this.fold(e,{...r,...o?{from:o}:{},to:t}).snapshot(),s=this.ops[t-1-this.start]?.at??o?.at;return{seq:t,base:i,...o?.version!==void 0?{version:o.version}:{},...s!==void 0?{at:s}:{},horizon:!0}}compact(e){if(!Number.isInteger(e.seq)||e.seq<this.start||e.seq>this.length)throw new Error(`Cannot compact at seq ${e.seq}: this log holds seqs ${this.start} to ${this.length}`);let t=this.ops.slice(0,e.seq-this.start),r=this.marks.filter(o=>o.seq<e.seq);return this.ops=this.ops.slice(e.seq-this.start),this.marks=[{...e,horizon:!0},...this.marks.filter(o=>o.seq>e.seq)],this.start=e.seq,{ops:t,epochs:r}}get(e){return this.ops.find(t=>t.id===e)}live(){let e=this.undoneIds();return this.ops.filter(t=>!e.has(t.id))}undoneIds(){return vn(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return hr(this.ops,this.undoneIds())}fold(e,t={}){let r=t.from?.seq??0;if(r<this.start)throw new Error(t.from?`An epoch at seq ${r} is behind the horizon at seq ${this.start}: fold from the checkpoint`:`A log compacted at seq ${this.start} does not fold from empty: fold from its checkpoint`);let o=t.from?.base??{nodes:[],edges:[]},i=K.from(e,o,t.validate!==void 0?{validate:t.validate}:{}),s=t.to??this.length;for(let a of this.ops.slice(r-this.start,Math.max(0,s-this.start))){if(a.undoes!==void 0){i.applyPrimitives(a.primitives,{restoring:!0});continue}try{i.applyPrimitives(a.primitives)}catch{i.applyPrimitives(a.primitives,{restoring:!0})}}return i}toJSON(){return[...this.ops]}};function vn(n){let e=new Map;for(let r of n){if(!r.undoes)continue;let o=e.get(r.undoes);o?o.push(r.id):e.set(r.undoes,[r.id])}let t=new Map;for(let r=n.length-1;r>=0;r--){let o=n[r],i=e.get(o.id)??[];t.set(o.id,!i.some(s=>t.get(s)===!0))}return new Set(n.filter(r=>t.get(r.id)===!1).map(r=>r.id))}function hr(n,e){let t=[],r=new Map;for(let o of n){let i=r.get(o.batch);i?i.push(o):(r.set(o.batch,[o]),t.push(o.batch))}return t.map(o=>{let i=r.get(o)??[],s=i[0];return{id:o,author:s.author,intent:s.batchIntent??s.intent,at:s.at,ops:i,undone:i.every(a=>e.has(a.id))}})}var wn=class{constructor(e,t,r){this.present=e;this.timeline=t;this.unversioned=r}nodes=new Map;edges=new Map;touching=new Map;seq=Number.MAX_SAFE_INTEGER;wrote=new Map;begin(e){this.seq=e,this.wrote.clear()}writerOf(e){return t=>{let r=`${e}\0${t}`;return this.wrote.has(r)?this.wrote.get(r):this.timeline?.writers?.writerAt(e,t,this.seq)}}note(e,t){let r=e.op==="add-node"?e.node.id:e.op==="patch-node"?e.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):Object.keys(e.after);for(let i of o)i!=="id"&&i!=="kind"&&this.wrote.set(`${r}\0${i}`,t(r,i))}node(e){return this.nodes.has(e)?this.nodes.get(e)??void 0:this.present.getNode(e)}setNode(e,t){this.nodes.set(e,t)}setEdge(e,t){let r=T(e);this.edges.set(r,t?e:null);for(let o of[e.from,e.to]){let i=this.touching.get(o);i||this.touching.set(o,i=new Set),i.add(r)}}incident(e){let t=new Map;for(let r of[...this.present.outEdges(e),...this.present.inEdges(e)]){let o=T(r);this.edges.has(o)||t.set(o,r)}for(let r of this.touching.get(e)??[]){let o=this.edges.get(r);o&&t.set(r,o)}return[...t.values()]}undo(e){switch(e.op){case"add-node":this.setNode(e.node.id,null);return;case"remove-node":this.setNode(e.node.id,e.node);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,ys(t,e.before));return}case"add-edge":this.setEdge(e.edge,!1);return;case"remove-edge":this.setEdge(e.edge,!0);return}}apply(e){switch(e.op){case"add-node":this.setNode(e.node.id,e.node);return;case"remove-node":for(let t of this.incident(e.node.id))this.setEdge(t,!1);this.setNode(e.node.id,null);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,ys(t,e.after));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function ys(n,e){let t={...n};for(let[r,o]of Object.entries(e))We(o)?delete t[r]:t[r]=o;return t}var yl=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"?n.id:void 0;function gr(n,e,t,r){let o=u=>{let f=e.node(u);return f?t.served(f,e.writerOf(u))!==void 0:t.sees?.(u)??!1},i=yl(n);if(i===void 0){let u=n.edge,f=t.edgeClean(u)&&o(u.from)&&o(u.to);return e.apply(n),f?{primitives:[n],faithful:!0}:{primitives:[],faithful:!1}}let s=e.node(i),a=s?t.served(s,e.writerOf(i)):void 0;e.apply(n),e.note(n,r);let d=e.node(i),c=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!c)return{primitives:[],faithful:!1};if(!a&&c){let u=e.incident(i).filter(l=>t.edgeClean(l)&&o(l.from===i?l.to:l.from)).map(l=>({op:"add-edge",edge:l})),f=n.op==="add-node"&&c===n.node&&u.length===0;return{primitives:f?[n]:[{op:"add-node",node:c},...u],faithful:f}}if(a&&!c){let u=n.op==="remove-node"&&a===s;return{primitives:u?[n]:[{op:"remove-node",node:a}],faithful:u}}if(n.op==="patch-node"){let u=(l,p)=>h=>h in l==(p!==void 0&&h in p);if(Object.keys(n.after).every(l=>u(a,s)(l)&&u(c,d)(l)))return{primitives:[n],faithful:!0};let f=l=>Object.fromEntries(Object.keys(n.after).map(p=>[p,p in l?l[p]:se]));return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(c)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:c}],faithful:!1}}function bs(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(l=>r[l.seq-o]?.id===l.id),s=new wn(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(l=>{let p=Z(l.author).id,h=l.primitives.map(y=>gr(y,s,t,()=>p));return{op:l,primitives:h.flatMap(y=>y.primitives),faithful:h.every(y=>y.faithful)}});let a=new Set(n.map(l=>l.seq)),d=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let l of a)l<d&&(d=l),l>c&&(c=l);d-=o,c-=o;let u=bl(r,d,e.present,t),f=u?new wn(e.present,e,u.unversioned):s;for(let l=r.length-1;l>=d;l--){let p=r[l].primitives;for(let h=p.length-1;h>=0;h--)f.undo(p[h])}return xl(n,r,d,c,a,f,u?.judge??t,e)}function bl(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,c=(f,l)=>{s.has(f)||a.has(f)||(o(f)?i(l)?(a.add(f),d.delete(f)):d.add(f):(s.add(f),d.delete(f)))};for(let f=e;f<n.length;f++)for(let l of n[f].primitives)l.op==="add-node"||l.op==="remove-node"?c(l.node.id,l.node):l.op==="patch-node"&&(c(l.id,l.before),c(l.id,l.after));for(let f of d){let l=t.getNode(f);l&&i(l)&&(d.delete(f),a.add(f))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(f,l)=>d.has(f.id)?f:s.has(f.id)?void 0:r.served(f,l)}}}function xl(n,e,t,r,o,i,s,a){let d=new Map;for(let c=t;c<=r;c++){let u=e[c];if(i.begin(u.seq),!o.has(u.seq)){for(let p of u.primitives)i.apply(p);continue}let f=(p,h)=>a.writers?.writerAt(p,h,u.seq+1),l=u.primitives.map(p=>gr(p,i,s,f));d.set(u.seq,{op:u,primitives:l.flatMap(p=>p.primitives),faithful:l.every(p=>p.faithful)})}return n.map(c=>d.get(c.seq))}function xs(n,e,t,r){let o=new wn(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>gr(i,o,t,()=>r).primitives)}var Qn="A change you cannot see",ws={kind:"system",id:"withheld",name:"Someone"};function Ye(n){return n.withheld===!0}function et(n){switch(n.op){case"add-node":case"remove-node":return[n.node.id];case"patch-node":return[n.id];case"add-edge":case"remove-edge":return[n.edge.from,n.edge.to]}}var mr=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&I(r,e));function ks(n){if(typeof n!="function")return n;let e=n;return{sees:e,shows:e,served:t=>e(t.id)&&!mr(t,e)?t:void 0,servedWith:t=>e(t.id)&&!mr(t,e)?t:void 0,optional:()=>!1,kindOf:()=>{}}}function I(n,e){if(typeof n=="string")return!e(n);if(n===null||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(I(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||I(n[t],e)))return!0;return!1}function Ss(n,e){return n.primitives.some(t=>et(t).some(r=>!e(r)))||n.writes.some(t=>!e(t))||n.reads.some(t=>!e(t))?!0:n.mutation!==null&&I(n.mutation.args,e)}function vl(n,e){if(et(n).every(e.shows))switch(n.op){case"add-node":{let t=e.served(n.node);return t?t===n.node?n:{op:"add-node",node:t}:void 0}case"remove-node":{let t=n.node;return mr(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!I(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!I(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=se;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!I(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return I(n.edge,e.sees)?void 0:n}}function yr(n,e,t){let r=ks(e);return{id:n.id,seq:n.seq,batch:n.batch,author:ws,intent:Qn,mutation:null,primitives:t??n.primitives.flatMap(o=>{let i=vl(o,r);return i?[i]:[]}),inverse:[],reads:n.reads.filter(o=>r.shows(o)&&br(r,o)),writes:n.writes.filter(o=>r.shows(o)&&br(r,o)),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function Oe(n,e){let t=ks(e);if(t.hides?.()===!1)return[...n];let r=t.pin?.()??t;if(r.timeline){let o={served:(i,s)=>r.servedWith(i,s),edgeClean:i=>!I(i,r.sees),sees:r.sees,names:i=>I(i,r.sees)};return bs(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?vs(i,r,s):void 0)??yr(i,r,s))}return n.map(o=>(!o.withheld&&!Ss(o,r.shows)?vs(o,r):void 0)??yr(o,r))}function vs(n,e,t){let r=l=>e.sees(l)&&br(e,l),o=n.reads.filter(r),i=new Set((t??n.primitives).flatMap(et)),s=n.writes.filter(l=>r(l)||e.sees(l)&&i.has(l)),a=o.length===n.reads.length&&s.length===n.writes.length?n:{...n,reads:o,writes:s},d=e.actor!==void 0&&Z(n.author).id===e.actor;if(!d&&n.described?.some(l=>!e.sees(l)))return;if(!I(n,e.sees))return a;let c=new Set,u=l=>{if(typeof l=="string")c.add(l);else if(Array.isArray(l))for(let p of l)u(p);else if(l!==null&&typeof l=="object")for(let[p,h]of Object.entries(l))c.add(p),u(h)};t&&u(t);let f=l=>e.sees(l)||c.has(l);if(!I(a.inverse,f))return d?(n.mutation&&u(n.mutation.args),I({...a,primitives:[],inverse:[]},f)?void 0:a):I({...a,primitives:[],inverse:[]},e.sees)?void 0:a}function br(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var Me=class extends D{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function kn(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(l=>t.has(l.batch)&&!r.has(l.id)),i=[...n.epochs()].reverse().find(l=>l.horizon);if(i){let l=new Set(n.all().map(h=>h.batch)),p=e.filter(h=>!l.has(h));if(p.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${p.map(h=>`batch ${h}`).join(", ")}: it is not after the undo horizon at op ${i.seq}${i.at?` (${i.at})`:""}. What was done before the horizon is archived, and undo does not reach behind it.`}}if(o.length===0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:e.length===0?"No batch given to undo":`Nothing live to undo in ${e.join(", ")} \u2014 already undone, or never applied`};if(o.some(Ye))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(Ye)?"Cannot undo a change you cannot see: only somebody who can see it can take it back.":"Cannot undo this here: part of it is a change you cannot see, and only somebody who can see it can take it back."};if(o.some(l=>l.enabledModules!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:"Cannot undo turning a module off or on: it is changed by turning the module the other way."};let s=new Set;for(let l of o)for(let p of l.writes)s.add(p);let a=Math.min(...o.map(l=>l.seq)),d=n.epochs().find(l=>l.change!==void 0&&l.seq>a);if(d){let l=o.find(p=>p.seq<d.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${l.intent}": it was done before the declaration changed (${d.change}), and undo does not reach back across that change.`}}let c=[];for(let l of n.all()){if(l.seq<=a||t.has(l.batch)||r.has(l.id))continue;let p=l.reads.filter(h=>s.has(h));p.length>0&&c.push({op:l,overlap:p})}if(c.length===0)return{ok:!0,ops:o};let u=c.filter(l=>!Ye(l.op)).map(l=>`"${l.op.intent}" (op ${l.op.id}, read ${l.overlap.join(", ")})`).join("; ");if(c.some(l=>Ye(l.op)))return{ok:!1,ops:o,blockedBy:c,includeBatches:[],message:`Cannot undo on its own \u2014 ${u?`a later operation depends on it: ${u}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let f=[...new Set(c.map(l=>l.op.batch))];return{ok:!1,ops:o,blockedBy:c,includeBatches:f,message:`Cannot undo on its own \u2014 a later operation depends on it: ${u}. Include ${f.map(l=>`batch ${l}`).join(", ")} to undo them together.`}}function _s(n){return[...n].sort((e,t)=>t.seq-e.seq).flatMap(e=>e.inverse)}var Os=(n,e)=>`${n}\0${e}`,$s=new WeakMap;function wl(n){let e=new Map;return{base:n,end:n,read:[],fields:e,written:[],seqOf:new Map,writers:{writerAt:(r,o,i)=>{let s=e.get(Os(r,o));if(!s)return;let a=0,d=s.length;for(;a<d;){let c=a+d>>1;s[c].seq<i?a=c+1:d=c}return a===0?void 0:s[a-1].by}}}}function kl(n){if(n.op==="add-node")return[n.node.id,Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind")];if(n.op==="patch-node")return[n.id,Object.keys(n.after).filter(e=>!We(n.after[e]))]}function Sl(n,e){let t=n.end,r=Z(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=kl(s);if(!a)continue;let[d,c]=a;for(let u of c){let f=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,u,o):void 0,l=Os(d,u),p=n.fields.get(l);p||n.fields.set(l,p=[]),p.push({seq:t,by:f}),i.push(l)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function _l(n,e){for(;n.written.length>0&&n.written.at(-1).seq>=e;){let{keys:t}=n.written.pop();for(let r of t)n.fields.get(r)?.pop()}for(let t of n.read.slice(e-n.base))n.seqOf.delete(t.id);n.read.length=e-n.base,n.end=e}function Sn(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=$s.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&_l(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||$s.set(n,o=wl(r));for(let i=o.end;i<t;i++)Sl(o,e[i-r]);return o.writers}var $l=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));var xr=new WeakMap;function Ol(n,e){let t=new Map,r=new Map(Object.entries(e??{}));return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:o=>t.get(o),creatorOf:o=>r.get(o)}}}function Al(n,e){let t=n.end;for(let r of e.primitives){if(r.op!=="add-node"&&r.op!=="remove-node")continue;let{id:o,kind:i}=r.node;if(n.kinds.has(o)||(n.kinds.set(o,i),n.entries.push({seq:t,id:o,creator:!1})),r.op!=="add-node"||n.creators.has(o)||e.undoes!==void 0)continue;let s=Z(e.author).id;s!==void 0&&(n.creators.set(o,s),n.entries.push({seq:t,id:o,creator:!0}))}n.read.push(e),n.end++}function Rl(n,e){for(;n.entries.length>0&&n.entries.at(-1).seq>=e;){let t=n.entries.pop();(t.creator?n.creators:n.kinds).delete(t.id)}n.read.length=e-n.base,n.end=e}function Ie(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=xr.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&Rl(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||xr.set(n,o=Ol(r,r>0?Pl(n,r)?.creators:void 0));for(let i=o.end;i<t;i++)Al(o,e[i-r]);return o.records}function Pl(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function As(n,e){Ie(n);let t=xr.get(n),r=new Set;for(let i=t.entries.length-1;i>=0&&t.entries[i].seq>=e;i--)t.entries[i].creator&&r.add(t.entries[i].id);let o={};for(let[i,s]of t.creators)r.has(i)||(o[i]=s);return o}function _n(n,e,t,r,o){if(!n?.sees?.length||W(e))return!0;let i=n.sees.filter(s=>s.kinds.includes(t.kind));return i.length===0?!1:(e=Z(e),i.some(s=>{if(!$l(s,e))return!1;if(!s.own)return!0;let a=e.id;return a===void 0?!1:t.id===a||r.out(t.id).some(d=>d.id===a)||r.in(t.id).some(d=>d.id===a)||o?.creatorOf(t.id)===a}))}var Rs=new Set;function nt(n,e){return W(e)?Rs:n.modules?.disabledKinds??Rs}function ce(n,e){return W(e)?!1:(n.policy?.sees?.length??0)>0||nt(n,e).size>0}function le(n,e){return t=>{let r=nt(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=Ie(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&_n(n.policy,e,i,n.graph,o);let s=o.kindOf(t);return s===void 0?!0:!r.has(s)&&_n(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o)}}var zl={out:()=>[],in:()=>[]};function El(n,e,t=new Map,r){let o=nt(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=Ie(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,c=n.graph.getNode(s);if(c)d=!o.has(c.kind)&&_n(n.policy,e,c,n.graph,i);else{let u=i.kindOf(s);if(u===void 0)return r?.add(s),!0;d=!o.has(u)&&_n(n.policy,e,{id:s,kind:u},zl,i)}return t.set(s,d),d}}function Nl(n){let e=new Map;return(t,r)=>{let o=`${t}\0${r}`,i=e.get(o);if(i===void 0){let s=n?.tryDefinition(t)?.fields?.shape,a=s?.[r];i=s!==void 0&&(a===void 0||a.safeParse?.(void 0).success===!0),e.set(o,i)}return i}}function $n(n,e){return Ns(n,e).lens}function Ns(n,e){let t=Nl(n.schema),r=W(e)?void 0:Z(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(u,f,l,p,h)=>{let y=(S,R)=>{if(!u(S.id))return;let z;for(let ne in S)if(!(!Object.hasOwn(S,ne)||ne==="id"||ne==="kind"||!I(S[ne],u))&&!(r!==void 0&&R(ne)===r)){if(!t(S.kind,ne))return;(z??=[]).push(ne)}if(!z)return S;let H=z.join("\0"),J=i.get(S);if(J?.without===H)return J.node;let be=Object.fromEntries(Object.entries(S).filter(([ne])=>!z.includes(ne)));return i.set(S,{without:H,node:be}),be},g=S=>{let R=l();return y(S,z=>f().writerAt(S.id,z,R))},m=new WeakMap,x=h?S=>{let R=m.get(S);return R||m.set(S,R={node:g(S)}),R.node}:g,k=S=>{if(!u(S))return!1;let R=s.getNode(S);return R===void 0||x(R)!==void 0},w=h?.shown??new Map,b=h?S=>{let R=w.get(S);return R===void 0&&w.set(S,R=k(S)),R}:k,v=s.outEdges&&s.inEdges?{present:{getNode:S=>s.getNode(S),outEdges:S=>s.outEdges(S),inEdges:S=>s.inEdges(S)},log:n.log,get writers(){return f()}}:void 0,_={sees:u,shows:b,served:x,servedWith:y,optional:t,kindOf:p,...r!==void 0?{actor:r}:{},...v?{timeline:v}:{},hides:()=>ce(n,e),pin:h?()=>_:()=>d({judged:new Map,shown:new Map})};return _};function d(u){let f,l=o(),p=Ie(n.log);return a(El(n,e,u.judged,u.unnamed),()=>f??=Sn(n.log),()=>l,h=>s.getNode(h)?.kind??p.kindOf(h),u)}return{lens:a(le(n,e),()=>Sn(n.log),o,u=>s.getNode(u)?.kind??Ie(n.log).kindOf(u)),pinWith:d}}var Ps=new WeakMap,zs=new WeakMap,Ml=n=>{let e=new Set;for(let t of n)for(let r of t.primitives)r.op==="add-node"||r.op==="remove-node"?e.add(r.node.id):r.op==="patch-node"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function Ms(n,e){if(!ce(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...nt(n,e)].sort().join("\0"),s=W(e)?e:Z(e),a=`${e.kind}|${s.id??""}|${(s.roles??[]).join(",")}|${e.onBehalfOf?"for":""}`,d=Ps.get(n.log);d||Ps.set(n.log,d=new Map);let c=d.get(a),{pinWith:u}=Ns(n,e),f=zs.get(n.log);f||zs.set(n.log,f=new Set);let l=c!==void 0&&c.horizon===o&&c.off===i&&c.length<=r&&(c.length===o||t[c.length-1-o]===c.last);if(c&&l){if(c.length===r)return c.ops;let y=t.slice(c.length-o),g=u({judged:new Map,shown:new Map}),m=!0,x=Ml(y);for(let k of x){let w=c.judgments.judged.get(k),b=c.judgments.shown.get(k);if(w!==void 0&&g.sees(k)!==w||b!==void 0&&g.shows(k)!==b){m=!1;break}}if(m){for(let k of x)if(f.has(k)){m=!1;break}}if(m){let k=[...c.ops,...Oe(y,u(c.judgments))],w={horizon:o,off:i,length:r,last:t.at(-1),ops:k,judgments:c.judgments};return d.set(a,w),k}}let p={judged:new Map,shown:new Map,unnamed:f},h=Oe(t,u(p));return d.set(a,{horizon:o,off:i,length:r,last:t.at(-1),ops:h,judgments:p}),h}function Is(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!I(t,n.sees)}function Il(n,e,t){if(!ce(n,e))return t;let r=$n(n,e),o=s=>n.graph.getNode(s)!==void 0||Ie(n.log).kindOf(s)!==void 0,i={...t};if(t.diff){let s=t.diff,a=Sn(n.log),d=n.log.length??n.log.all().length,c=t.ops?.[0]?.seq??d,u=Z(e).id,f=(b,v)=>_=>a.writerAt(b,_,v),l=(b,v)=>r.shows(b.id)?r.servedWith(b,v):void 0,p=(b,v)=>b.flatMap(_=>l(_,v(_.id))??[]),h=b=>r.shows(b.from)&&r.shows(b.to)&&!I(b,r.sees),y=(b,v)=>t.ops?f(b,d):_=>v===void 0||v.includes(_)?u:a.writerAt(b,_,d),g=s.changedNodes.flatMap(b=>{let v=l(b.before,f(b.before.id,c)),_=l(b.after,y(b.after.id,b.fields));return v&&_?[{before:v,after:_,fields:b.fields.filter(S=>S in v||S in _)}]:[]}),m=new Set(s.changedNodes.map(b=>b.after.id)),x=new Map;for(let b of t.ops?.flatMap(v=>v.primitives)??t.primitives??[])b.op!=="patch-node"||m.has(b.id)||x.set(b.id,[...x.get(b.id)??[],...Object.keys(b.after)]);let w=[...x].flatMap(([b,v])=>{let _=n.graph.getNode(b);if(!_)return[];let S=l(_,f(b,c)),R=l(_,y(b,v));return S&&R&&JSON.stringify(S)!==JSON.stringify(R)?[{before:S,after:R,fields:v}]:[]});i.diff={addedNodes:p(s.addedNodes,b=>y(b)),removedNodes:p(s.removedNodes,b=>f(b,c)),changedNodes:[...g,...w],addedEdges:s.addedEdges.filter(h),removedEdges:s.removedEdges.filter(h),touched:[...s.touched.filter(r.shows),...[...x.keys()].filter(b=>r.shows(b)&&!s.touched.includes(b))]}}if(t.ops&&(i.ops=Oe(t.ops,r)),t.primitives){let s=i.ops;i.primitives=s?s.flatMap(a=>a.primitives):r.timeline?xs(t.primitives,r.timeline,{served:(a,d)=>r.servedWith(a,d),edgeClean:a=>!I(a,r.sees),sees:r.sees},Z(e).id):Oe([{id:"",seq:0,batch:"",author:{kind:"system"},intent:"",mutation:null,primitives:t.primitives,inverse:[],reads:[],writes:[],at:""}],r)[0].primitives}t.reads&&(i.reads=t.reads.filter(s=>r.shows(s)&&o(s))),t.writes&&(i.writes=t.writes.filter(r.shows)),t.intent!==void 0&&I(t.intent,r.sees)&&(i.intent=Qn);for(let s of["introduces","resolves","violationsAfter"]){let a=t[s];a&&(i[s]=Xn(null,[],a.filter(d=>Is(r,o,d))))}return i}function wr(n,e){return{all:()=>n,undoneIds:()=>vn(n),epochs:e}}var Es=new WeakMap,vr=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t};function On(n,e){if(!ce(n,e))return n;let t=W(e)?e:Z(e),r=`${e.kind}|${t.id??""}|${(t.roles??[]).join(",")}|${e.onBehalfOf?"for":""}`,o=Es.get(n);o||Es.set(n,o=new Map);let i=o.get(r);if(i)return i;let s=n.graph,a=$n(n,e),d=w=>{let b=z=>z===void 0?void 0:w.served(z),v=z=>b(z)!==void 0,_=z=>v(s.getNode(z));return{served:b,seenNode:v,seenId:_,seenEdge:z=>_(z.from)&&_(z.to)&&!I(z,w.sees),servedAll:z=>z.flatMap(H=>b(H)??[])}},{served:c,seenId:u}=d(a),f=()=>d(a.pin?.()??a),l=(w,b)=>{let v=Sn(n.log),_=a.pin?.()??a,S=w.nodes.flatMap(z=>_.servedWith(z,H=>v.writerAt(z.id,H,b))??[]),R=new Set(S.map(z=>z.id));return{nodes:S,edges:w.edges.filter(z=>R.has(z.from)&&R.has(z.to)&&!I(z,_.sees))}},p=w=>{let b=l(w.base,w.seq);if(!w.creators)return{...w,base:b};let v=new Set(b.nodes.map(S=>S.id)),_=Object.fromEntries(Object.entries(w.creators).filter(([S,R])=>v.has(S)&&!I(R,a.sees)));return{...w,base:b,creators:_}},h=()=>Ms(n,e),y=()=>wr(h(),()=>n.log.epochs()),g=new Proxy(s,{get(w,b){switch(b){case"getNode":return v=>c(w.getNode(v));case"has":return v=>u(v);case"allNodes":return()=>f().servedAll(w.allNodes());case"nodesOfKind":return v=>f().servedAll(w.nodesOfKind(v));case"allEdges":return()=>w.allEdges().filter(f().seenEdge);case"edgesOfKind":return v=>w.edgesOfKind(v).filter(f().seenEdge);case"out":return(v,_)=>{let S=f();return S.seenId(v)?S.servedAll(w.out(v,_)):[]};case"in":return(v,_)=>{let S=f();return S.seenId(v)?S.servedAll(w.in(v,_)):[]};case"neighbors":return v=>{let _=f();return _.seenId(v)?_.servedAll(w.neighbors(v)):[]};case"outEdges":return(v,_)=>w.outEdges(v,_).filter(f().seenEdge);case"inEdges":return(v,_)=>w.inEdges(v,_).filter(f().seenEdge);case"snapshot":return()=>{let v=w.snapshot(),_=f();return{...v,nodes:_.servedAll(v.nodes),edges:v.edges.filter(_.seenEdge)}};case"size":{let v=f();return{nodes:w.allNodes().filter(S=>v.seenNode(S)).length,edges:w.allEdges().filter(v.seenEdge).length}}default:return vr(w,b)}}}),m=()=>{let w=h();return hr(w,vn(w))},x=new Proxy(n.log,{get(w,b){switch(b){case"all":case"toJSON":return()=>[...h()];case"epochs":return()=>w.epochs().map(v=>p(v));case"lastEpoch":return()=>{let v=w.lastEpoch();return v&&p(v)};case"live":return()=>{let v=h(),_=vn(v);return v.filter(S=>!_.has(S.id))};case"get":return v=>h().find(_=>_.id===v);case"opsInBatch":return v=>h().filter(_=>_.batch===v);case"batches":return m;default:return vr(w,b)}}}),k=new Proxy(n,{get(w,b){switch(b){case"graph":return g;case"log":return x;case"snapshot":return()=>g.snapshot();case"batches":return m;case"canUndo":return v=>kn(y(),typeof v=="string"?[v]:v);case"violations":return(...v)=>Xn(g,w.allInvariants(),w.violations(...v).filter(_=>Is(a,S=>s.has(S),_)));case"findings":return()=>w.findings().filter(v=>(v.id.includes("->")?v.id.split("->").map((S,R)=>R===0?S.slice(S.indexOf(":")+1):S):[v.id]).every(S=>!s.has(S)||u(S))&&!I(v,a.sees));case"seenBy":return v=>On(w,v);case"seenFor":return e;case"checkpoint":return(...v)=>{let _=w.checkpoint(...v);return _&&p(_)};default:return vr(w,b)}}});return o.set(r,k),k}function _r(n){return n.normalize("NFD").replace(/\p{M}+/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").trim()}function rt(n){return _r(n).replace(/ /g,"")}var tt=new Map,jl=5e4;function $r(n){let e=tt.get(n);if(e===void 0){tt.size>=jl&&tt.clear();let t=_r(n);e={tokens:t.split(" ").filter(Boolean),whole:t.replace(/ /g,"")},tt.set(n,e)}return e}var An=n=>[...$r(n).tokens];function je(n,e){if(e.length===0)return;let{whole:t,tokens:r}=$r(n),o=e.join("");if(t.length===0)return;if(t===o)return"exact";if(e.every(s=>r.some(a=>a.startsWith(s))))return t.startsWith(o)?"prefix":e.every(s=>r.includes(s))?"word":"part"}function Sr(n,e,t=48){let r=n.replace(/\s+/g," ").trim();if(r.length<=t)return r;let o=e[0],i=r.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase(),s=o?i.search(new RegExp(`(^|[^\\p{L}\\p{N}])${Tl(o)}`,"u")):-1,a=s<0?0:s+(i[s]&&/[\p{L}\p{N}]/u.test(i[s])?0:1),d=Math.max(0,a-Math.floor(t/3));if(d>0){let u=r.lastIndexOf(" ",d);d=u<0?0:u+1}let c=Math.min(r.length,d+t);if(c<r.length){let u=r.indexOf(" ",c);c=u<0||u-c>16?c:u}return`${d>0?"\u2026":""}${r.slice(d,c).trim()}${c<r.length?"\u2026":""}`}var Tl=n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Dl=/^([\p{L}][\p{L}\p{N}_-]*):(\S+)$/u;function Ts(n){let e=[],t=[];for(let r of n.trim().split(/\s+/).filter(Boolean)){let o=Dl.exec(r);o?t.push({key:o[1],value:o[2]}):e.push(r)}return{words:e.join(" "),conditions:t}}var js=new WeakMap;function Fl(n,e){let t=js.get(e);if(t&&t.definition===n)return t.texts;let r=Zl(n,e);return js.set(e,{definition:n,texts:r}),r}function Zl(n,e){let t=F(n,e),r=[{field:"label",reading:"Name",text:t}];for(let o of Fn(e,n,{limit:Number.POSITIVE_INFINITY}))o.key==="label"||o.value===t||typeof e[o.key]!="boolean"&&r.push({field:o.key,reading:o.label,text:o.value});return r}var Xe={exact:0,prefix:1,word:2,part:3,field:4};function Ds(n,e,t){let r=An(t);if(r.length===0)return;let o=Fl(n,e),[i,...s]=o,a=je(i.text,r);if(a)return{field:"label",reading:i.reading,fragment:Sr(i.text,r),strength:a};let d=l=>p=>$r(p.text).tokens.some(h=>h.startsWith(l));if(!r.every(l=>o.some(d(l))))return;let c=An(i.text),u=r.find(l=>!c.some(p=>p.startsWith(l)))??r[0],f=s.find(d(u));return{field:f.field,reading:f.reading,fragment:Sr(f.text,[u]),strength:"field"}}var Cl=512,Ll=64;function Fs(n){let e=new Map;if(n.length===0)return e;let t=n.slice(-Cl),r=n[n.length-1].seq;for(let o of t){let i=Math.pow(.5,(r-o.seq)/Ll);for(let s of o.writes)e.set(s,(e.get(s)??0)+i)}return e}var Or=(n,e)=>Pe({tryDefinition:()=>n},e),kr=(n,e)=>de({tryDefinition:()=>n},e);function Gl(n,e,t){let r=n.tryDefinition(e),o=[{field:"plural",text:Or(r,e)},{field:"kind",text:P(e)},...r?.noun?[{field:"noun",text:r.noun}]:[]],i;for(let s of o){let a=je(s.text,t);a&&(!i||Xe[a]<Xe[i.strength])&&(i={strength:a,...s})}return i}var Bl,Ul=(n,e)=>(Bl??=new Intl.Collator(void 0,{sensitivity:"base",numeric:!0})).compare(n,e),Zs=(n,e)=>n.tier-e.tier||n.inKind-e.inKind||n.near-e.near||n.past-e.past||n.touched-e.touched||n.flagged-e.flagged||Ul(n.name,e.name)||(n.id<e.id?-1:n.id>e.id?1:0);function Kl(n,e,t={}){let r=n.schema,o=Ts(e),i=An(o.words),s=t.principal??{kind:"human"},a=n.kindsKeptFrom(s),d=n.modules.disabledKinds,c=o.conditions.filter($=>$.key==="kind").map($=>$.value),u=o.conditions.filter($=>$.key==="is").map($=>$.value),f=u.includes("any")||u.includes("past"),l=u.includes("past")&&!u.includes("any")&&!u.includes("current"),p=($,A)=>{let E=rt(A),G=r.tryDefinition($);return rt($)===E||rt(Or(G,$))===E},h=r.kinds.filter($=>!a.has($)&&!d.has($)&&(t.kinds===void 0||t.kinds.includes($))&&(c.length===0||c.some(A=>p($,A)))),g=o.conditions.filter($=>$.key!=="kind").map($=>({...$,admittedBy:h.filter(A=>ps(r,A).filters.some(E=>E.key===$.key))})),m=g.filter($=>$.key!=="is"),x=u.filter($=>$==="flagged"||$==="clear"||$==="past"),k={kinds:h,past:f},w={hits:[],words:o.words,conditions:g,searched:k,byKind:{},total:0,matched:[]};if(i.length===0&&m.length===0&&x.length===0)return w;let b=t.today,v=t.flagged??new Set(n.violations().flatMap($=>$.nodeIds)),_=t.touched??Fs(n.log.all()),S=new Set;for(let $ of t.from??[]){S.add($);for(let A of n.graph.neighbors($))S.add(A.id)}let R=ce(n,s)?le(n,s):void 0,z=$=>ur($,t.basePath===void 0?{}:{basePath:t.basePath}),H={schema:r,graph:n.graph,flagged:v,...b?{today:b}:{}},J=[],be={};for(let $ of h){let A=r.tryDefinition($),E=g.filter(N=>N.key!=="is"&&N.admittedBy.includes($));if(i.length===0&&E.length===0&&x.length===0)continue;let G=fs(A,E);for(let N of n.graph.nodesOfKind($)){let xe=ve(A,N,b);if(!f&&!G&&!xe||R&&!R(N.id)||l&&xe||!E.every(Ga=>gs(H,N,Ga))||u.includes("flagged")&&!v.has(N.id)||u.includes("clear")&&v.has(N.id))continue;let Re=i.length>0?Ds(A,N,o.words):E[0]?{field:E[0].key,reading:P(E[0].key),fragment:`${E[0].key}:${E[0].value}`,strength:"field"}:{field:"is",reading:"Is",fragment:`is:${x[0]}`,strength:"field"};if(!Re)continue;let In=F(A,N);be[$]=(be[$]??0)+1,J.push({hit:{about:"node",id:N.id,kind:$,label:In,why:Re,current:xe,flagged:v.has(N.id),address:z(`${kr(A,$)}/${encodeURIComponent(N.id)}`)},tier:Xe[Re.strength],inKind:$===t.inKind?0:1,near:S.has(N.id)?0:1,past:xe?0:1,touched:-(_.get(N.id)??0),flagged:v.has(N.id)?0:1,name:In,id:N.id})}}let ne=$=>$==="exact"||$==="prefix"?-1:Xe[$],xt=($,A,E,G)=>({hit:$,tier:ne(A),inKind:1,near:1,past:0,touched:0,flagged:1,name:E,id:G});if(i.length>0){for(let A of h){let E=Gl(r,A,i);if(!E)continue;let G=sn(r,A),N={field:E.field,reading:E.field==="plural"?"Plural":"Kind",fragment:E.text,strength:E.strength};J.push(xt({about:"kind",kind:A,label:G,why:N,count:be[A]??0,address:z(kr(r.tryDefinition(A),A))},E.strength,G,`kind:${A}`))}let $=t.places??[];for(let A of $){if(!h.includes(A.kind)||A.across&&a.has(A.across))continue;let E=je(A.title,i);if(!E)continue;let G={field:"title",reading:"Title",fragment:A.title,strength:E},N=xn(A,$)?kr(r.tryDefinition(A.kind),A.kind).slice(1):void 0,xe=z(bn(A.as,N));J.push(xt({about:"place",kind:A.kind,title:A.title,as:A.as,why:G,address:xe},E,A.title,`place:${A.kind}:${A.as}`))}for(let A of n.allInvariants()){let E=A.scope==="graph"?void 0:A.scope.kind;if(E&&!h.includes(E))continue;let G=A.label??P(A.name),N=je(G,i),xe=N?void 0:je(P(A.name),i),Re=N??xe;if(!Re)continue;let In={field:N?"label":"name",reading:N?"Rule":"Name",fragment:N?G:A.name,strength:Re};J.push(xt({about:"rule",name:A.name,label:G,...E?{kind:E}:{},why:In},Re,G,`rule:${A.name}`))}}J.sort(Zs);let Ta=t.limit??50,Qr=J.slice(0,Ta).map($=>$.hit),Da=Qr.flatMap($=>$.about==="node"?[n.graph.getNode($.id)]:[]).filter(Boolean),eo=kt(Da,$=>r.tryDefinition($)),Fa=Qr.map($=>$.about==="node"&&eo.has($.id)?{...$,apart:eo.get($.id)}:$),Za=Object.values(be).reduce(($,A)=>$+A,0),Ca=J.flatMap($=>$.hit.about==="node"?[$.hit.id]:[]),La=t.subject&&h.includes(String(n.graph.getNode(t.subject)?.kind))?Cs(n,t.subject,o.words,{principal:s}):[];return{hits:[...Fa,...La],words:o.words,conditions:g,searched:k,byKind:be,total:Za,matched:Ca}}function Cs(n,e,t,r={}){let o=n.graph.getNode(e);if(!o)return[];let i=r.principal??{kind:"human"};if(n.kindsKeptFrom(i).has(o.kind))return[];let s=An(t),a=F(n.schema.tryDefinition(o.kind),o),d=[];for(let u of n.allMutations()){let f=u.subject;if(!f||f.kinds!=="*"&&!f.kinds.includes(o.kind)||!n.permits({name:u.name,args:{[f.arg]:o.id}},i).ok)continue;let l=St(u),p=An(l),h=s.filter(m=>p.some(x=>x.startsWith(m))),y=h.length>0?je(l,h):void 0,g=y?{field:"title",reading:"Act",fragment:l,strength:y}:{field:"subject",reading:"On",fragment:a,strength:"field"};d.push({hit:{about:"act",name:u.name,title:l,subject:o.id,why:g,destructive:u.destructive===!0},tier:y?Xe[y]:Xe.field+1,inKind:0,near:0,past:u.destructive?1:0,touched:0,flagged:u.pinned?0:1,name:l,id:`act:${u.name}`})}d.sort(Zs);let c=d.map(u=>u.hit);return r.limit===void 0?c:c.slice(0,r.limit)}function Wl(n,e){let t=e.kinds.map((i,s)=>{let a=Or(n.tryDefinition(i),i);return s===0?a:a.toLowerCase()}),r=t.length===0?"Nothing":t.length===1?t[0]:`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`;return e.kinds.some(i=>n.tryDefinition(i)?.lifecycle)?e.past?`${Q(r)}, past ones included.`:`${Q(r)}, current ones; add is:any for past ones.`:`${Q(r)}.`}var ot={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},Vl={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},ql={under:0,raised:1,over:2},Ar=n=>`--graview-layer-${n}`,Hl=n=>`var(${Ar(n)}, ${ot[n]})`;function Jl(){return Object.keys(ot).map(n=>` ${Ar(n)}: ${ot[n]};`).join(`
|
|
7
|
+
`)}var it={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup"]},board:{binds:"entities",requiredRoles:["slots","x","y","fill"],options:["fillFrom","slotCode","zones","aspect","emptyLabel","pickTarget","arranging","arrange"]},plan:{binds:"entities",requiredRoles:["regions","outline"],options:["hues","aspect","undrawnLabel","strayLabel","draw","place","help"]},reach:{binds:"nothing",requiredRoles:[],options:[]},blocks:{binds:"nothing",requiredRoles:[],options:["blocks"]},columns:{binds:"fields",requiredRoles:["column"],options:[]}},Gs=Object.keys(it),Bs=n=>Object.hasOwn(it,n);var Rn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function Ls(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=U(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=U(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function Rr(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let c of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(c);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,c)=>{let u=`lenses.${c}`,f=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,l=(b,v)=>{t.push({index:c,name:d.name,...f?{title:f}:{},why:b}),v&&r.push({severity:"warning",...v})};if(!Bs(d.name)){f?l(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${u}.name`,message:`"${f}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${Gs.join(", ")} \u2014 or register the view yourself and drop the title.`}):l("it is a lens this app wrote, drawn by the app's own views");return}if(!f)return l("it has no title, so it is bindings the checker holds and no place");let p=it[d.name],h=Rn(d.options)?d.options:{};if(d.options!==void 0&&!Rn(d.options))return l("its options are not an object",{code:"lens-options-not-an-object",path:`${u}.options`,message:`"${f}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let b of Object.keys(h))p.options.includes(b)||r.push({severity:"warning",code:"lens-option-unknown",path:`${u}.options.${b}`,message:`The ${d.name} lens takes no option "${b}", so "${f}" ignores it.`,fix:p.options.length===0?`The ${d.name} lens takes no options; drop it.`:`Use one of: ${p.options.join(", ")}.`});let y={};for(let b of p.options)h[b]!==void 0&&(y[b]=h[b]);d.arrangedBy&&(y.arrangedBy=hs(d.arrangedBy));let g=Rn(d.bindings)?d.bindings:{},m=[],x,k=(b,v,_)=>l(v,{code:"lens-cannot-draw",path:b,message:`"${f}" cannot draw: ${v}.`,fix:_});if(p.binds==="fields"){let b=Object.keys(g).filter(_=>Rn(g[_])),v=b.filter(_=>!o.has(_));if(b.length===0)return k(`${u}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${p.requiredRoles.map(_=>`"${_}": "<field>"`).join(", ")} } }.`);if(v.length>0)return;if(y.bindings=g,m=b,d.name==="timeline"){let _=h.columns;if(Array.isArray(_))y.columns=_.map(S=>typeof S=="string"?{id:S,label:S}:S);else{let S=b.flatMap(z=>{let H=g[z],J=typeof H.column=="string"?H.column:typeof H.columns=="string"?H.columns:void 0;return J?Ls(n.schema,z,J):[]}),R=[...new Set(S)];if(R.length===0)return k(`${u}.options.columns`,"it has no columns \u2014 no option names them and no `column` role is bound to a field of set values",'Bind "column" to a field whose values are the columns, or say "columns": ["mon", "tue", \u2026].');y.columns=R.map(z=>({id:z,label:z.toUpperCase()}))}y.extent===void 0&&(y.extent=1440)}if(d.name==="columns")for(let _ of b){let S=g[_].column;if(typeof S!="string"||!s(_).includes(S))return;if(Ls(n.schema,_,S).length===0)return k(`${u}.bindings.${_}.column`,`its column field "${S}" is not a choice`,`Bind "column" to a choice field of ${_}, like a status.`)}if(d.name==="calendar"&&y.today!==void 0&&!(typeof y.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(y.today)))return k(`${u}.options.today`,"its today is not a date",'Write it as "YYYY-MM-DD", or leave it out and the calendar opens on the day it is drawn.');if(d.name==="calendar"&&y.range!==void 0&&!["day","week","month","quarter","year","years","agenda"].includes(y.range))return k(`${u}.options.range`,`its range "${String(y.range)}" is not one a calendar opens at`,"Use one of: day, week, month, quarter, year, agenda.")}else if(p.binds==="entities"){let b=S=>{let R=g[S];if(Rn(R)){if(typeof R.kind=="string")return R.kind;if(typeof R.edge=="string")return R.edge;if(Array.isArray(R.path))return{path:R.path};if(typeof R.field=="string")return R.field}};for(let S of p.requiredRoles)if(b(S)===void 0)return;let v=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",_=b(v);if(!o.has(_))return;if(d.name==="coverage"){let S=b("columns");if(!o.has(S))return;let R=b("link");if(typeof R=="string"&&!i.has(R))return;Object.assign(y,{rows:_,columns:S,link:R}),S!==_&&(x=S)}else if(d.name==="board"){Object.assign(y,{slots:_,x:b("x"),y:b("y"),fill:b("fill")});for(let S of["x","y"])if(!s(_).includes(y[S]))return}else{Object.assign(y,{regions:_,outline:b("outline")});for(let S of["markers","at","within","nests","regionKind","markerKind"]){let R=b(S);typeof R=="string"&&(y[S]=R)}}m=[_]}else if(d.name==="blocks"){if(!d.on)return k(`${u}.on`,"it does not say which kind it stands on",'Say "on": "<the kind it is a place of>".');if(!Array.isArray(y.blocks)||y.blocks.length===0)return k(`${u}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let b=["user","person","member"].find(v=>o.has(v));if(!d.on&&!b)return k(`${u}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');m=b?[b]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return k(`${u}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(m=[d.on],d.name==="coverage"){let b=[y.rows,y.columns].find(v=>v!==d.on);x=typeof b=="string"?b:void 0}}let w=me(f);if(w.length===0)return k(`${u}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let b of m){let v=`${b}|${w}`;if(a.has(v))return l(`another lens on ${b} is already called "${f}"`,{code:"lens-title-taken",path:`${u}.title`,message:`"${f}" is the title of lenses.${a.get(v)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let b of m)a.set(`${b}|${w}`,c);e.push({index:c,lens:d.name,title:f,as:w,kinds:m,...x?{across:x}:{},options:y})}),{drawn:e,undrawn:t,findings:r}}var Yl=6;function Xl(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(a.to??[]).filter(d=>d!==s)),i=new Set(r.flatMap(s=>o(s).flat()));return new Set([...e?.hide??[],...t,...r.filter(s=>!i.has(s)&&o(s).length>0&&o(s).every(a=>a.length>=2))])}function Ql(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(me));return{kinds:new Set(e.kinds.filter(o=>r.has(me(o))||r.has(de(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(me(o.title))).map(o=>`${o.kind}|${o.as}`))}}var Pr="overview",Us=`/places/${Pr}`;function Ks(n){let e=n?.scene?.trim();return e||"Scene"}function eu(n){let e=n?.pages?.trim();return e||"Pages"}function Ws(n,e){if(!e||e.length===0)return n;let t=e.filter(r=>n.includes(r));return[...new Set(t),...n.filter(r=>!t.includes(r))]}function Vs(n,e,t){if(n===void 0)return;let r=n.trim();if(r==="")return;if(r.toLowerCase()==="home"||r==="/")return{to:"home"};let o=me(r),i=t.find(d=>d.title===r)??t.find(d=>d.as===o);if(i)return{to:"place",place:i};let s=e.kinds,a=s.find(d=>d===r)??s.find(d=>de(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function nu(n){let e=[];for(let t of Rr(n).drawn)for(let r of t.kinds)e.push({kind:r,title:t.title,as:t.as,...t.across?{across:t.across}:{}});for(let t of n.views?.places?.()??[])e.some(r=>r.kind===t.kind&&r.as===t.as)||e.push(t);return e}function tu(n){return qs(n.schema,nu(n),{...n.pages?{pages:n.pages}:{},lenses:Rr(n).drawn,home:(n.home?.length??0)>0})}function qs(n,e,t={}){let{pages:r}=t,o=n.kinds,i=e.filter(f=>o.includes(f.kind)),s=Vs(r?.first,n,i),a=new Set(r?.hide??[]),d=Ws(o,r?.order),c=[{slug:"home",title:"Home",kind:null,cardinality:"many",address:"/",stop:"#",...s?.to==="home"||s===void 0&&t.home?{first:!0}:{}},{slug:Pr,title:Ks(r),kind:null,cardinality:"many",address:Us,stop:"#"}],u=[...i].sort((f,l)=>d.indexOf(f.kind)-d.indexOf(l.kind));for(let f of u){let l=t.lenses?.find(h=>h.as===f.as&&h.kinds.includes(f.kind)),p=xn(f,i);c.push({slug:f.as,title:f.title,kind:f.kind,cardinality:"many",address:bn(f.as,p?de(n,f.kind).slice(1):void 0),stop:p?`#focus=aggregate:${f.kind}&in.view=${encodeURIComponent(f.as)}`:`#view=${encodeURIComponent(f.as)}`,...l?{lens:l.lens}:{},...s?.to==="place"&&s.place.kind===f.kind&&s.place.as===f.as?{first:!0}:{}})}for(let f of d)c.push({slug:de(n,f).slice(1),title:sn(n,f),kind:f,cardinality:"many",address:de(n,f),stop:`#focus=aggregate:${f}`,...a.has(f)?{hidden:!0}:{},...s?.to==="kind"&&s.kind===f?{first:!0}:{}});return c}var ru=n=>n.safeParse?.(void 0).success??!1,ou=n=>He(n).shape,zr=n=>{let e=He(n);if(U(e)?.type!=="literal")return;let t=U(e)?.values;return t&&t.length===1&&typeof t[0]=="string"?t[0]:void 0};function Pn(n,e){let t=ru(e),r=He(e),o=U(r)?.type,i=yn(e);if(i)return{control:"node",name:n,optional:t,kinds:i};if(o==="boolean")return{control:"boolean",name:n,optional:t};if(o==="object"){let a=r.shape??{};return{control:"group",name:n,optional:t,fields:Object.entries(a).map(([d,c])=>Pn(d,c))}}if(o==="union"){let a=U(r)?.options??[],d=a.map(u=>ou(u));if(d.every(u=>u!==void 0)){let u=Object.keys(d[0]??{}).find(f=>d.every(l=>zr(l?.[f])!==void 0));if(u)return{control:"variant",name:n,optional:t,tag:u,options:a.map((f,l)=>({value:zr(d[l]?.[u])??"",fields:Object.entries(d[l]??{}).filter(([p])=>p!==u).map(([p,h])=>Pn(p,h))}))}}let c=a.map(u=>zr(u));return c.every(u=>u!==void 0)?{control:"choice",name:n,optional:t,options:c}:{control:"opaque",name:n,optional:t}}if(o==="array"){let a=U(r)?.element;return a!==void 0?{control:"list",name:n,optional:t,item:Pn(n,a)}:{control:"opaque",name:n,optional:t}}let s=$e(e);return s.type==="text"?{control:"text",name:n,optional:t,...s.long?{long:!0}:{}}:s.type==="date"?{control:"date",name:n,optional:t,...s.time?{time:!0}:{}}:s.type==="number"?{control:"number",name:n,optional:t,...s.min===void 0?{}:{min:s.min},...s.max===void 0?{}:{max:s.max},...s.step===void 0?{}:{step:s.step}}:s.type==="choice"?{control:"choice",name:n,optional:t,options:s.options}:{control:"opaque",name:n,optional:t}}function iu(n){let e=n.shape;return e?Object.entries(e).map(([t,r])=>Pn(t,r)):[]}function Hs(n,e){let t={...e};for(let r of n){let o=e[r.name];r.control==="list"&&o===void 0&&!r.optional&&(t[r.name]=[]),r.control==="group"&&o!==void 0&&typeof o=="object"&&o!==null&&(t[r.name]=Hs(r.fields,o))}return t}function Er(n,e){if(n.onBehalfOf){let{onBehalfOf:i,...s}=n;return`${Er(s,e)}, for ${Er(i,e)}`}if(n.id===void 0)return n.name??(n.kind==="agent"?"an agent":n.kind);let t=e.graph.getNode(n.id);if(t)return F(e.schema.tryDefinition(t.kind),t);let r=e.seats?.find(i=>i.principal.id===n.id);if(r)return r.label;let o=e.people?.find(i=>i.id===n.id&&(i.kind===void 0||i.kind===n.kind));return o?o.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":/[:_/]/.test(n.id)?{human:"somebody",agent:"an agent",rule:"a rule",system:"the system"}[n.kind]:n.id}function su(n){if(n===void 0||n==="web"||n.startsWith("ai:"))return;if(n==="api")return"via the API";if(n==="cli")return"via the command line";let[e,...t]=n.split(":"),r=t.join(":");return(e==="mcp"||e==="view")&&r?`via ${r}`:e==="mcp"?"via an agent's tools":`via ${n}`}var zn=class{constructor(e){this.inner=e}seen=new Set;reads(){return[...this.seen]}mark(e){return e&&this.seen.add(e.id),e}markAll(e){for(let t of e)this.seen.add(t.id);return e}markEdges(e){for(let t of e)this.seen.add(t.from),this.seen.add(t.to);return e}getNode(e){return this.seen.add(e),this.mark(this.inner.getNode(e))}has(e){return this.seen.add(e),this.inner.has(e)}allNodes(){return this.markAll(this.inner.allNodes())}allEdges(){return this.markEdges(this.inner.allEdges())}nodesOfKind(e){return this.markAll(this.inner.nodesOfKind(e))}edgesOfKind(e){return this.markEdges(this.inner.edgesOfKind(e))}out(e,t){return this.seen.add(e),this.markAll(this.inner.out(e,t))}in(e,t){return this.seen.add(e),this.markAll(this.inner.in(e,t))}neighbors(e){return this.seen.add(e),this.markAll(this.inner.neighbors(e))}};function au(n,e){return{...e,name:n}}function En(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function st(n){let e=n.input,t=e._zod?.def;if(t?.type!=="object"||t.catchall!==void 0||!e.shape)return;let r=Object.keys(e.shape);return En(n)?[...r,"id"]:r}var Js=(n,e)=>`does not take ${n.map(t=>`"${t}"`).join(", ")}; it takes ${e.length>0?e.map(t=>`"${t}"`).join(", "):"nothing"}`;function du(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(typeof e!="string"||e.trim().length===0)throw new D("An id must be a non-empty string",`Got ${JSON.stringify(e)}.`);return e}}function cu(n){let{id:e,...t}=n;return t}function Ys(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}var Nr=Symbol("graview.readBeforeRefusing");function Nn(n,e,t,r={}){let o=En(e)?du(t):void 0,i=o===void 0?t:cu(t),s=st(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let g=Object.keys(i).filter(m=>!s.includes(m)&&i[m]!==void 0);if(g.length>0)throw new Ee(e.name,[{path:[],message:Js(g,s)}])}let a=e.input.safeParse(i);if(!a.success){let g=Object.keys(e.input.shape??{});throw new Ee(e.name,a.error.issues.map(m=>m.code==="unrecognized_keys"&&g.length>0?{...m,message:Js(m.keys,g)}:m))}let d=a.data,c=new zn(n),u=[],f=new Set,l={graph:c,schema:n.schema,emit(g){u.push(g)},addNode(g){u.push({op:"add-node",node:g})},removeNode(g){let m=c.getNode(g);if(!m)throw new q(g,`Cannot remove missing node "${g}"`);let x=new Map;for(let k of n.outEdges(g))x.set(T(k),k);for(let k of n.inEdges(g))x.set(T(k),k);for(let k of x.values())c.getNode(k.from),c.getNode(k.to),u.push({op:"remove-edge",edge:k});u.push({op:"remove-node",node:m})},patchNode(g,m){let x=c.getNode(g);if(!x)throw new q(g,`Cannot patch missing node "${g}"`);let k={},w={};for(let[b,v]of Object.entries(m)){let _=x[b];JSON.stringify(_)===JSON.stringify(v)&&!r.keepUnchanged?.(v)||(k[b]=_,w[b]=v)}Object.keys(w).length!==0&&u.push({op:"patch-node",id:g,before:k,after:w})},addEdge(g){u.push({op:"add-edge",edge:g})},removeEdge(g){u.push({op:"remove-edge",edge:g})},setSingleSource(g,m,x){for(let k of n.inEdges(m,g))c.getNode(k.from),k.from!==x&&u.push({op:"remove-edge",edge:k});n.inEdges(m,g).some(k=>k.from===x)||u.push({op:"add-edge",edge:{kind:g,from:x,to:m}})},freshId(g,m){if(o!==void 0&&!f.has(o)){if(c.has(o))throw new D(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has one. Pick another, or leave id out and let the act mint one.`);return f.add(o),o}let x=m?`${m}:${Ys(g)}`:Ys(g);if(!c.has(x)&&!f.has(x))return f.add(x),x;let k=2;for(;c.has(`${x}-${k}`)||f.has(`${x}-${k}`);)k++;let w=`${x}-${k}`;return f.add(w),w}};try{e.apply(l,d)}catch(g){throw g!==null&&typeof g=="object"&&Object.defineProperty(g,Nr,{value:c.reads(),configurable:!0}),g}let p=new Set;for(let g of u)switch(g.op){case"add-node":case"remove-node":p.add(g.node.id);break;case"patch-node":p.add(g.id);break;case"add-edge":case"remove-edge":p.add(g.edge.from),p.add(g.edge.to);break}let h=new zn(r.describeWith??n),y=e.describe?.(d,h)??`${e.name}(${Object.entries(d).map(([g,m])=>`${g}=${JSON.stringify(m)}`).join(", ")})`;return{primitives:u,reads:[...new Set([...c.reads(),...h.reads()])],...e.describe?{described:h.reads()}:{},writes:[...p],intent:y}}function Xs(n){return Qt(n,{io:"input",unrepresentable:"any",override:uu})}var lu={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string"};function uu(n){let e=n.zodSchema._zod?.def;if(!e||e.type!=="string"||typeof e.format!="string"||e.format==="regex")return;let t=n.jsonSchema,r=(e.checks??[]).map(i=>i._zod?.def).filter(i=>i?.format==="regex"&&i.pattern instanceof RegExp).map(i=>i.pattern.source);delete t.pattern;let o=t.allOf;Array.isArray(o)&&o.every(i=>typeof i=="object"&&i!==null&&Object.keys(i).length===1&&"pattern"in i)&&delete t.allOf,t.format=lu[e.format]??e.format,r.length===1?t.pattern=r[0]:r.length>1&&(t.allOf=r.map(i=>({pattern:i})))}function fu(n){let e=ae(n.input),t=Xs(n.input),r=t.properties??{};if(En(n)){let o=n.creates.join(" | ");r.id={type:"string",minLength:1,description:`Optional: the id for the ${o} this makes. Refused if the graph already has it; left out, one is minted from the label.`},t.properties=r}st(n)&&(t.additionalProperties=!1);for(let o of e){let i=r[o.name];if(!i)continue;let s=o.kinds.includes("*")?"any node kind":o.kinds.join(" | ");i.description=[i.description,`Id of a node (${s}).`].filter(Boolean).join(" ")}return{name:n.name,...n.title===void 0?{}:{title:n.title},description:n.description??n.title??n.name,inputSchema:t,nodeRefs:e}}var pu=1;var ye=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function hu(n){let e=n instanceof Error?n.message:String(n);if(n instanceof ye){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof q?{reason:"missing",sentence:e}:n instanceof qe?{reason:n.reason,sentence:n.sentence}:n instanceof Me?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}function Qs(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function Mr(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function Ir(n,e){let t=n.subject;if(!t)return[];let r=new Set(Object.keys(e.fields.shape));if(n.writes)return n.writes.filter(s=>r.has(s));let o=n.input.shape??{},i=new Set(ae(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function ea(n,e){let t=new Map,r=(o,i,s)=>{let a=t.get(o)??new Map;a.get(i)?.includes(s)||(a.set(i,[...a.get(i)??[],s]),t.set(o,a))};for(let o of e){for(let i of Mr(n,o)){let s=n.tryDefinition(i);if(s)for(let a of Ir(o,s))r(i,a,o.name)}for(let[i,s]of Object.entries(o.writesOther??{})){let a=n.tryDefinition(i)?.fields.shape;if(a)for(let d of s)d in a&&r(i,d,o.name)}}return t}function na(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=ea(n,e).get(t);return Qs(r).filter(i=>!o?.has(i))}var ta=n=>`edit-${n}`;function ra(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=new Set;for(let i of e)i.derived||((i.creates??[]).includes(t)&&o.add(i.name),Mr(n,i).includes(t)&&Ir(i,r).length>0&&o.add(i.name));return[...o]}function at(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=ta(i);if(t.has(s))continue;let a=na(n,e,i);if(a.length===0)continue;let d=o.fields.shape,c=ie(o,i),u=a.map(f=>P(f).toLowerCase());r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${c}`,description:`Change what was set when this ${c} was made: ${u.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:a,input:Qi({id:fr([i]),...Object.fromEntries(a.map(f=>[f,es(gu(d[f]))]))}),describe:(f,l)=>{let p=l.getNode(f.id),h=p?F(o,p):f.id,y=o.display,g=x=>x===x.toUpperCase()?x:x.charAt(0).toLowerCase()+x.slice(1),m=a.filter(x=>f[x]!==void 0).map(x=>{let k=f[x],w=y?.format?.[x],b;try{b=w?String(w(k)):JSON.stringify(k)}catch{b=JSON.stringify(k)}return`${g(y?.labels?.[x]??P(x))} \u2192 ${b}`});return`Change ${h}: ${m.join(", ")||"nothing"}`},apply(f,l){let p={};for(let h of a){let y=l[h];y!==void 0&&(p[h]=y)}if(Object.keys(p).length===0)throw new qe(`Nothing to change \u2014 give at least one of ${u.join(", ")} a value.`,"invalid");f.patchNode(l.id,p)}})}return r}function gu(n){let e=n;for(let t=0;t<4;t++){let r=e._zod?.def;if((r?.type==="default"||r?.type==="prefault")&&r.innerType)e=r.innerType;else break}return e}var oa=n=>`remove-${n}`;function ia(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function jr(n,e,t){if(t.derived)return t.derived.act==="edit"?ra(n,e,t.derived.kind):ia(e,t.derived.kind)}function sa(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=oa(i);if(t.has(s))continue;let a=ie(o,i);r.push({name:s,derived:{kind:i,act:"remove"},title:`Remove the ${a}`,description:`Take this ${a} out of the graph, with every tie it has. Undo puts it back.`,subject:{kinds:[i],arg:"id"},destructive:!0,idempotent:!0,input:Xi({id:fr([i])}),describe:(d,c)=>{let u=d.id,f=c.getNode(u);return`Remove ${f?F(o,f):u}`},apply(d,c){d.removeNode(c.id)}})}return r}function Tr(n,e){return[...at(n,e),...sa(n,e)]}function aa(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var dt=class{constructor(e){this.graph=e;for(let t of e.allNodes())this.file(t);e.subscribe(t=>this.follow(t))}kinds=new Map;filed=new Map;labelOf(e){return this.filed.get(e)?.label}lookup(e,t){let r=aa(t);if(r.length===0)return{exact:[],prefix:[]};let o=e.includes("*")?[...this.kinds.values()]:e.flatMap(a=>this.kinds.get(a)??[]),i=[],s=[];for(let a of o)for(let d=Dr(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let c=[...a.ids.get(a.sorted[d])??[]];s.push(...c),a.sorted[d]===r&&i.push(...c)}return{exact:i,prefix:s}}follow(e){for(let t of e.removedNodes)this.unfile(t.id);for(let t of e.changedNodes)this.unfile(t.after.id),this.file(t.after);for(let t of e.addedNodes)this.file(t)}file(e){let t=F(this.graph.schema.tryDefinition(e.kind),e),r=aa(t);this.filed.set(e.id,{kind:e.kind,key:r,label:t});let o=this.kinds.get(e.kind);o||this.kinds.set(e.kind,o={ids:new Map,sorted:[]});let i=o.ids.get(r);i?i.add(e.id):(o.ids.set(r,new Set([e.id])),o.sorted.splice(Dr(o.sorted,r),0,r))}unfile(e){let t=this.filed.get(e);if(!t)return;this.filed.delete(e);let r=this.kinds.get(t.kind),o=r?.ids.get(t.key);if(!r||!o||(o.delete(e),o.size>0))return;r.ids.delete(t.key);let i=Dr(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function Dr(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>>1;n[o]<e?t=o+1:r=o}return t}function mu(n,e){return e.includes("*")?"record":e.map(t=>ie(n.tryDefinition(t),t)).join(" or ")}function da(n,e,t,r){let o=mu(n,e.kinds);if(r.length===0)return{ok:!1,reason:"none",candidates:r,message:`There is no ${o} called "${t}".`};let i=r.slice(0,10).map(a=>`${a.label} (${a.id})`),s=r.length>i.length?`, and ${r.length-i.length} more`:"";return{ok:!1,reason:"ambiguous",candidates:r,message:`"${t}" names more than one ${o}: ${i.join(", ")}${s}. Pass the id of the one you mean as ${e.name}.`}}var ct=(n,e)=>`${n}\0${e}`;function Zr(n){return n.op==="add-node"?Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind").map(e=>[n.node.id,e]):n.op==="patch-node"?Object.keys(n.after).map(e=>[n.id,e]):[]}var Fr=class n{revs=new Map;static of(e){let t=new n;return t.note(e),t}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of Zr(r)){let s=ct(o,i);(this.revs.get(s)??-1)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(ct(e,t))??-1}baseFor(e,t=new Set){let r=new Set,o=new Map;for(let i of e)for(let s of i.primitives)if(s.op==="add-node"&&r.add(s.node.id),!(s.op!=="patch-node"||r.has(s.id)||t.has(s.id)))for(let a of Object.keys(s.after)){let d=ct(s.id,a);t.has(d)||o.has(d)||o.set(d,{node:s.id,field:a,rev:this.of(s.id,a)})}return[...o.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)!==t.rev)}};function yu(n){let e=new Set;for(let t of n)for(let r of t.primitives){r.op==="add-node"&&e.add(r.node.id);for(let[o,i]of Zr(r))e.add(ct(o,i))}return e}var bu=/^#([0-9a-f]{3,8})$/i,xu=/(rgba?|hsla?)\(([^)]+)\)/gi;function vu(n){let e=bu.exec(n.trim());if(!e)return null;let t=e[1];if((t.length===3||t.length===4)&&(t=[...t].map(i=>i+i).join("")),t.length!==6&&t.length!==8)return null;let r=Number.parseInt(t.slice(0,6),16),o=t.length===8?Number.parseInt(t.slice(6,8),16)/255:1;return{r:r>>16&255,g:r>>8&255,b:r&255,a:o}}function wu(n){let e=n.slice(0,n.indexOf("(")).toLowerCase(),r=n.slice(n.indexOf("(")+1,n.lastIndexOf(")")).split(/[,\s/]+/).filter(Boolean).map(d=>d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d));if(r.some(Number.isNaN))return null;if(e.startsWith("rgb")){let[d,c,u,f]=r;return d===void 0||c===void 0||u===void 0?null:{r:d,g:c,b:u,a:f??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...la(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function Lr(n){let e=n.r/255,t=n.g/255,r=n.b/255,o=Math.max(e,t,r),i=Math.min(e,t,r),s=(o+i)/2;if(o===i)return{h:0,s:0,l:s};let a=o-i,d=a/(1-Math.abs(2*s-1));return{h:((o===e?60*((t-r)/a%6):o===t?60*((r-e)/a+2):60*((e-t)/a+4))+360)%360,s:d,l:s}}function Gr(n,e,t){return{...la(n,e,t),a:1}}function la(n,e,t){let r=(1-Math.abs(2*t-1))*e,o=(n%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),[s,a,d]=o<1?[r,i,0]:o<2?[i,r,0]:o<3?[0,r,i]:o<4?[0,i,r]:o<5?[i,0,r]:[r,0,i],c=t-r/2;return{r:Math.round((s+c)*255),g:Math.round((a+c)*255),b:Math.round((d+c)*255)}}function Qe(n){let e=[];for(let t of n.matchAll(xu)){let r=wu(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=vu(t[0]);r&&e.push(r)}return e}function Br(n,e){let t=n.a+e.a*(1-n.a);if(t===0)return{r:0,g:0,b:0,a:0};let r=(o,i)=>(o*n.a+i*e.a*(1-n.a))/t;return{r:r(n.r,e.r),g:r(n.g,e.g),b:r(n.b,e.b),a:t}}function Cr(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function ca(n){return .2126*Cr(n.r)+.7152*Cr(n.g)+.0722*Cr(n.b)}function en(n,e){let[t,r]=[ca(n),ca(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var lt=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,ua={r:0,g:0,b:0,a:1},ut={r:255,g:255,b:255,a:1};function ft(n){let e=Qe(n.accent)[0];if(!e)return{ok:!1,missing:["accent"],why:`"${n.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`};let t={},r=new Set,o=[],i=Lr(e);for(let s of["dark","light"]){let a=n.base[s],d=Qe(a.ground)[0]??(s==="dark"?ua:ut),c=Br(Qe(a.panel)[0]??ut,d),u=$u(i,[c,d],s,4.5);u?Math.abs(u.l-i.l)>_u&&(r.add(`accent (${s})`),o.push(`reaching 4.5:1 on the ${s} panel would move the accent's lightness by ${Math.round(Math.abs(u.l-i.l)*100)} points, which is far enough that it stops being the same color \u2014 supply one for ${s}`)):(r.add(`accent (${s})`),o.push(`no lightness of this hue clears 4.5:1 as text on the ${s} panel, so ${s} needs an accent of its own`));let f=u??i,l=Gr(f.h,f.s,f.l),p=n.accentInk?.[s]??(en(ut,l)>=en(ua,l)?"#ffffff":"#000000"),h=en(Qe(p)[0]??ut,l);h+.005<4.5&&(r.add(`accentInk (${s})`),o.push(`neither black nor white clears 4.5:1 on the accent (best ${h.toFixed(2)}:1), so text on a filled button has to be given`)),t[s]={...a,accent:lt(l,1),accentDim:lt(l,s==="dark"?.35:.22),accentInk:p,glow:lt(l,s==="dark"?.28:.1),edgeBright:lt(l,ku(l,c,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let y=Qe(t[s].warn)[0];y&&Su(Lr(y).h,f.h)<25&&(r.add(`warn (${s})`),o.push(`the warning color shares the accent's hue in ${s}, so "something is broken" looks like "this is selected"`))}return r.size>0?{ok:!1,missing:[...r].sort(),why:o.join("; ")}:{ok:!0,schemes:t}}function ku(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(en(Br({...n,a:i},e),e)>=r)return i}return 1}function Su(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var _u=.3;function $u(n,e,t,r){let o=t==="dark";for(let i=0;i<=100;i++){let s=o?n.l+i/100:n.l-i/100,a=o?n.l-i/100:n.l+i/100;for(let d of[s,a])if(!(d<0||d>1)&&e.every(c=>en(Gr(n.h,n.s,d),c)>=r))return{...n,l:d}}return null}function Ou(n,e){let t=e?.[n];if(t!==void 0)return(t%360+360)%360;let r=2166136261;for(let o=0;o<n.length;o++)r^=n.charCodeAt(o),r=Math.imul(r,16777619);return(r>>>0)%360}var Te=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),Ur="Montserrat",Kr=Object.freeze({display:550,body:450,label:600}),Wr=Object.freeze({display:600,body:400,label:600}),Au="-0.025em",Ru=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var fa={ground:"#0a0f1f",groundDeep:"#060914",wash:"none",panel:"rgba(19, 27, 52, 0.96)",panelMuted:"rgba(14, 21, 42, 0.94)",panelWarning:"rgba(48, 33, 18, 0.95)",edge:"rgba(164, 178, 222, 0.18)",edgeBright:"rgba(154, 171, 255, 0.6)",ink:"#eef0f6",inkMuted:"#aab2c6",inkFaint:"#97a0b6",accent:"#9aabff",accentDim:"rgba(154, 171, 255, 0.32)",accentInk:Te.navy,warn:"#f0a868",good:"#8fdcaa",bad:"#ffa3a3",glow:"rgba(154, 171, 255, 0.18)",bar:"rgba(10, 15, 31, 0.96)",float:"rgba(16, 23, 45, 0.98)",liftLow:"0 14px 36px -22px #000",liftHigh:"0 28px 64px -30px #000",tintAlpha:.2,tintLightness:52,gridAlpha:.35},pa={ground:Te.paper,groundDeep:"#efefe8",wash:"none",panel:"#ffffff",panelMuted:"#fafaf6",panelWarning:"#fdf4ea",edge:"rgba(24, 33, 58, 0.12)",edgeBright:"rgba(0, 23, 105, 0.6)",ink:Te.ink,inkMuted:Te.muted,inkFaint:"#626b7d",accent:Te.navy,accentDim:"rgba(0, 23, 105, 0.16)",accentInk:"#ffffff",warn:"#9a5312",good:"#1b6436",bad:"#a1232d",glow:"rgba(0, 23, 105, 0.08)",bar:"rgba(255, 255, 255, 0.96)",float:"#ffffff",liftLow:"0 1px 2px rgba(24,33,58,0.06), 0 8px 24px -12px rgba(24,33,58,0.16)",liftHigh:"0 2px 6px rgba(24,33,58,0.08), 0 24px 56px -24px rgba(24,33,58,0.26)",tintAlpha:.16,tintLightness:46,gridAlpha:.5},nn={dark:fa,light:pa};var Ae=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),De=Object.freeze({body:`"${Ur}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function Pu(n){let e=n?.shape?.radius??Ae.radius,t=n?.shape?.density??Ae.density;return Object.freeze({radius:e,radiusSmall:Math.max(Ae.radiusSmallFloor,Math.round(e*Ae.radiusSmall)),pad:Math.round(Ae.pad*t),padSmall:Math.round(Ae.padSmall*t),gap:Math.round(Ae.gap*t)})}function zu(n){let e=n?.typography?.body??De.body,t=n?.typography?.display??e,o=e===De.body&&t===De.body?Kr:Wr,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??De.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var Eu=Object.freeze({light:Object.freeze({roof:Object.freeze({saturation:48,lightness:82}),right:Object.freeze({saturation:40,lightness:66}),left:Object.freeze({saturation:34,lightness:55}),roofEdge:"rgba(255,255,255,0.75)",plot:Object.freeze({saturation:45,lightness:58,alpha:.12}),plotEdge:Object.freeze({saturation:40,lightness:48,alpha:.55})}),dark:Object.freeze({roof:Object.freeze({saturation:42,lightness:32}),right:Object.freeze({saturation:40,lightness:21}),left:Object.freeze({saturation:38,lightness:13}),roofEdge:"rgba(255,255,255,0.14)",plot:Object.freeze({saturation:45,lightness:48,alpha:.2}),plotEdge:Object.freeze({saturation:40,lightness:62,alpha:.55})})});function Nu(n){return Eu[n]}function ga(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var ma="http://www.w3.org/2000/svg",Mu=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",ma],Iu=new Set("svg g defs symbol use title desc path rect circle ellipse line polyline polygon text tspan textPath linearGradient radialGradient stop pattern clipPath mask marker image filter feBlend feColorMatrix feComponentTransfer feComposite feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feMerge feMergeNode feMorphology feOffset feTile feTurbulence".split(" ")),ju=new Set(["title","desc"]),Mn="it embeds a page or media",Tu={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:Mn,embed:Mn,object:Mn,audio:Mn,video:Mn,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},Du={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function Fu(n){let e=!1,t=n.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/gi,(r,o)=>{if(o[0]==="#"){let s=o[1]==="x"||o[1]==="X"?parseInt(o.slice(2),16):parseInt(o.slice(1),10);return s>0&&s<=1114111?String.fromCodePoint(s):"\uFFFD"}let i=Du[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function Zu(n){if(/\\|@|expression\s*\(|(?:image-set|cross-fade|image|element|src)\s*\(/i.test(n))return!1;for(let[,e]of n.matchAll(/url\s*\(\s*["']?\s*([^)]*)/gi))if(!e.startsWith("#"))return!1;return!0}function Cu(n,e,t){let r=Fu(t);if(r===null)return"it declares XML entities";let o=(e.includes(":")?e.slice(e.indexOf(":")+1):e).toLowerCase();if(o.startsWith("on"))return"it has an event handler (an on\u2026 attribute)";if(e==="xml:base")return"it loads or links to something outside itself";if(e==="xmlns")return r===ma?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return Mu.includes(r)?"it changes what its elements are (another xmlns)":null;if(o==="href"||o==="src"){let i=r.replace(/[\u0000- ]+/g,"");return i.startsWith("#")||n==="image"&&/^data:image\/(png|jpe?g|gif|webp|avif);/i.test(i)?null:"it loads or links to something outside itself"}return Zu(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var ha=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function ya(n){if(/<!ENTITY/i.test(n))return"it declares XML entities";if(/<!\[CDATA\[/i.test(n))return"it has a CDATA section, which the page and the picture read differently";let e=[],t=!1,r=/^\s*(<\?xml\s[^?<>]*\?>)?/.exec(n)[0].length;for(;r<n.length;){let o=n.slice(r),i=/^[^<]+/.exec(o);if(i){if(e.length===0&&i[0].trim()!=="")return"it is not one SVG: there is text outside it";r+=i[0].length;continue}if(o.startsWith("<!--")){let p=o.indexOf("-->",4);if(p<0)return"it has a comment that never ends";let h=o.slice(4,p);if(/^-?>/.test(h)||h.includes("--")||h.includes("<!")||h.endsWith("-"))return"it has a comment the page and the picture read differently";r+=p+3;continue}if(/^<!DOCTYPE/i.test(o)){let p=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!p||e.length>0||t)return"it declares XML entities";r+=p[0].length;continue}let s=/^<\/([A-Za-z][A-Za-z0-9_.:-]*)\s*>/.exec(o);if(s){if(e.pop()!==s[1])return`it is not one SVG: </${s[1]}> closes what is not open`;e.length===0&&(t=!0),r+=s[0].length;continue}let a=/^<([A-Za-z][A-Za-z0-9_.:-]*)/.exec(o);if(!a)return"it is not one SVG: it has markup a picture cannot hold";let d=a[1],c=Tu[d.toLowerCase()];if(c)return c;if(t)return`it is not one SVG: <${d}> comes after it ends`;if(e.length===0&&d!=="svg")return"it is not one SVG";if(d.includes(":"))return`it has an element of another kind (<${d}>)`;if(!Iu.has(d))return`it has a <${d}> element, which a picture does not need`;let u=e[e.length-1];if(u&&ju.has(u))return`it has an element inside a <${u}>, which the page reads as HTML`;let f=a[0].length;for(let p=ha.exec(o.slice(f));p;p=ha.exec(o.slice(f))){let h=Cu(d,p[1],p[2]??p[3]??"");if(h)return h;f+=p[0].length}let l=/^\s*(\/?)>/.exec(o.slice(f));if(!l)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(f,f+400))?"it has an event handler (an on\u2026 attribute)":`it is not one SVG: <${d}>'s attributes are not each quoted and apart`;l[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=f+l[0].length}return e.length>0?`it is not one SVG: <${e[e.length-1]}> is never closed`:t?null:"it is not one SVG"}function ba(n){if(n){if(!ga(n)){if(/^\s*</.test(n))return;let e=/^\s*([a-z][a-z0-9+.-]*):/i.exec(n)?.[1]?.toLowerCase();return e===void 0||e==="http"||e==="https"||e==="data"&&/^\s*data:image\//i.test(n)?n:void 0}return ya(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}function Lu(n){return ba(n?.favicon)}var xa={"system-sans":'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',"system-serif":'ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif',"system-mono":De.mono},Gu=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],va=["Georgia","Times New Roman","Times","Iowan Old Style","Palatino","Palatino Linotype","Charter","Cambria","Baskerville","Optima","Helvetica","Helvetica Neue","Arial","Verdana","Segoe UI","Roboto","Avenir","Avenir Next","Gill Sans","Menlo","Monaco","Consolas","SF Mono","SFMono-Regular","Courier New"];var Bu=n=>new Set(n.map(e=>e.toLowerCase()));function Uu(n){return Bu([...Gu,...va]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function Ku(n){return xa[n]??n}function Hb(n){let e=ft({accent:n,base:nn});return e.ok||!e.missing.every(t=>t.startsWith("warn"))?e:ft({accent:n,base:nn,warn:{light:nn.light.bad,dark:nn.dark.bad}})}var ue={connectors:{all:{route:"curve",visible:!0},byEdge:{}},captions:{visible:!0},grid:{visible:!0,size:64},lattice:{visible:!0,size:46},tags:{visible:!0},emphasis:{rest:.34,dim:.12},marks:{flag:"\u26A0"}};function Wu(n){return n?{connectors:{all:{...ue.connectors.all,...n.connectors?.all??{}},byEdge:{...ue.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...ue.captions,...n.captions??{}},grid:{...ue.grid,...n.grid??{}},lattice:{...ue.lattice,...n.lattice??{}},tags:{...ue.tags,...n.tags??{}},emphasis:{...ue.emphasis,...n.emphasis??{}},marks:{...ue.marks,...n.marks??{}}}:ue}function Vu(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function qu(n){return[` --graview-kit-grid: ${n.grid.visible?1:0};`,` --graview-kit-grid-size: ${n.grid.size}px;`,` --graview-kit-lattice: ${n.lattice.visible?1:0};`,` --graview-kit-lattice-size: ${n.lattice.size}px;`,` --graview-kit-tags: ${n.tags.visible?"inline-flex":"none"};`,` --graview-kit-captions: ${n.captions.visible?"block":"none"};`,` --graview-kit-rest: ${n.emphasis.rest};`,` --graview-kit-dim: ${n.emphasis.dim};`,` --graview-kit-flag: "${n.marks.flag.replace(/"/g,"'")}";`].join(`
|
|
8
|
+
`)}function Hu(n,e,t){let r=new Set([e]);for(let[o,i]of t.entries()){let s=n.edge(i);if(!s)return{ok:!1,at:o};let a=s.from,d=s.to==="*"?n.kinds:s.to,c=new Set;for(let u of r){if(a.includes(u))for(let f of d)c.add(f);if(s.to==="*"||d.includes(u))for(let f of a)c.add(f)}if(c.size===0)return{ok:!1,at:o};r=c}return{ok:!0,reached:r}}var tn=()=>globalThis.__graviewWatch;function wa(n,e,t){let r=tn();if(!r?.learn)return;let o=[],i=[],s=[];for(let d of n.definitions){o.push(d.kind),d.noun&&P(d.kind).toLowerCase()!==d.noun.toLowerCase()&&s.push(d.kind);let c=d.fields.shape??{};for(let[f,l]of Object.entries(c)){let p=d.display?.labels?.[f];p!==void 0&&P(f)!==p&&s.push(P(f));let h=l?.def?.entries,y=d.display?.format?.[f];for(let g of h&&typeof h=="object"?Object.values(h):[]){if(typeof g!="string"||(o.push(g),!y))continue;let m=y(g);m!==g&&m.toLowerCase()===g.toLowerCase()&&s.push(g)}}i.push(d.plural??"",d.noun??"",d.description??"");let u=d.fields.shape??{};o.push(...Object.keys(u));for(let f of Object.values(d.display?.labels??{}))i.push(f);for(let[f,l]of Object.entries(d.edges??{}))o.push(f),(l.description||l.inverse)&&s.push(P(f)),i.push(l.description??"",l.inverse??"")}for(let d of e)o.push(d.name),i.push(d.title??"");for(let d of t?.grants??[])d.roles!=="*"&&o.push(...d.roles);o.push(...t?.roles??[]);let a=new Set;for(let d of n.definitions){a.add(d.plural??""),a.add(P(d.noun??d.kind));for(let u of Object.values(d.display?.labels??{}))a.add(u);let c=d.fields.shape??{};for(let[u,f]of Object.entries(c)){let l=d.display?.format?.[u],p=f?.def?.entries;if(!l&&!d.display?.labels?.[u]&&a.add(P(u)),p&&typeof p=="object")for(let h of Object.values(p))a.add(l?l(h):P(String(h)))}}r.learn({ids:o,words:i.filter(Boolean),unsaid:[...new Set(s)].filter(d=>!a.has(d))})}function ka(n){tn()?.store?.(n)}function pt(n){n!==void 0&&tn()?.learn?.({ids:[n],words:[]})}function ht(n,e){tn()?.refused?.({...n,...e===void 0?{}:{author:e}})}function Ju(n,e,t){let r=tn();if(!r?.unseen||!n.policy?.sees?.length)return;let o=new Set,i=new Set;for(let s of n.graph.allNodes()){let a=n.schema.tryDefinition(s.kind),d=[F(a,s),...Object.values(s).filter(c=>typeof c=="string"&&/^[^\s@]+@[^\s@]+$/.test(c))];for(let c of d)(n.sees(e,s.id)?i:o).add(c)}r.unseen({words:[...o].filter(s=>s.length>=5&&!i.has(s)),...t?{from:t}:{}})}function Yu(n){let e=tn();if(!e?.learn)return;let t=[...new Set(n.log.all().map(r=>r.author.id).filter(r=>typeof r=="string"&&n.graph.getNode(r)===void 0))];t.length>0&&e.learn({ids:t,words:[]})}function Vr(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":Vr(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${Vr(e[r])}`).join(",")}}`}var Sa=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function Xu(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(Sa),t=n.edges.map(r=>({key:T(r),value:{kind:r.kind,from:r.from,to:r.to}})).sort(Sa);return Vr({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function rn(n){return`sha256:${$a(Xu(n))}`}function _a(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=rn(t),a=K.from(n,i,{validate:o});for(let[y,g]of e.entries())try{a.applyPrimitives(g.primitives)}catch(m){let x=e[y-1];return{ok:!1,expected:rn(a.snapshot()),actual:s,...x?{divergedAfter:x.id}:{},reason:`The log does not fold: op "${g.id}" (${g.intent}) could not be applied. ${m instanceof Error?m.message:String(m)}`}}let d=rn(a.snapshot());if(d===s)return{ok:!0,hash:s};let c=y=>{let g=K.from(n,i,{validate:o});for(let m=0;m<=y;m++)g.applyPrimitives(e[m].primitives);return rn(g.snapshot())},u=y=>{try{let g=K.from(n,t,{validate:o});for(let m=e.length-1;m>y;m--)g.applyPrimitives(e[m].inverse);return rn(g.snapshot())}catch{return}},f=y=>{let g=u(y);return g!==void 0&&g!==c(y)},l=-1,p=e.length-1;for(;l<p;){let y=Math.floor((l+p)/2);f(y)?p=y:l=y+1}let h=p>=0?e[p]:void 0;return{ok:!1,expected:d,actual:s,...h?{divergedAfter:h.id}:{},reason:h?`The graph and the fold of its log part after op "${h.id}" (${h.intent}).`:"The graph and the fold of its log disagree before any op: the base it folds from does not match."}}var Qu=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ef=new TextEncoder,nf=new Uint32Array(64),tf=new Uint32Array(8),gt=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function $a(n){let e=ef.encode(n),t=e.length*8,r=new Uint8Array(e.length+9+63>>6<<6);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(t/2**32)),o.setUint32(r.length-4,t>>>0);let i=tf;i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225;let s=nf;for(let d=0;d<r.length;d+=64){for(let m=0;m<16;m++)s[m]=o.getUint32(d+m*4);for(let m=16;m<64;m++){let x=s[m-15],k=s[m-2],w=(x>>>7|x<<25)^(x>>>18|x<<14)^x>>>3,b=(k>>>17|k<<15)^(k>>>19|k<<13)^k>>>10;s[m]=s[m-16]+w+s[m-7]+b>>>0}let c=i[0],u=i[1],f=i[2],l=i[3],p=i[4],h=i[5],y=i[6],g=i[7];for(let m=0;m<64;m++){let x=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),k=p&h^~p&y,w=g+x+k+Qu[m]+s[m]>>>0,b=(c>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10),v=c&u^c&f^u&f,_=b+v>>>0;g=y,y=h,h=p,p=l+w>>>0,l=f,f=u,u=c,c=w+_>>>0}i[0]=i[0]+c>>>0,i[1]=i[1]+u>>>0,i[2]=i[2]+f>>>0,i[3]=i[3]+l>>>0,i[4]=i[4]+p>>>0,i[5]=i[5]+h>>>0,i[6]=i[6]+y>>>0,i[7]=i[7]+g>>>0}let a="";for(let d=0;d<8;d++){let c=i[d];a+=gt[c>>>24]+gt[c>>>16&255]+gt[c>>>8&255]+gt[c&255]}return a}var Oa=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function Aa(n,e){try{n.parseNode(e);return}catch(t){let o=(t.issues??[]).flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[]);return[...new Set(o)]}}function rf(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function mt(n,e){try{return F(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var of=n=>`${n.kind}:${n.from}->${n.to}`,yt=(n,e)=>n<e?-1:n>e?1:0;function Ra(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let l of e.nodes)i.has(l.id)||i.set(l.id,l);let s=l=>e.edges.filter(p=>p.from===l||p.to===l),a=l=>({action:"drop",primitives:[...s(l.id).filter(p=>i.has(p.from)&&i.has(p.to)).map(p=>({op:"remove-edge",edge:p})),{op:"remove-node",node:l}]}),d=new Set;for(let l of[...i.values()].sort((p,h)=>yt(p.id,h.id))){if(!r.tryDefinition(l.kind)){d.add(l.id),o.push({code:"kind-unknown",id:l.id,message:`${mt(r,l)} is a kind of record this app no longer has`,repair:a(l)});continue}let p=Aa(r,l);if(p===void 0)continue;let h=mt(r,l),y=new Map,g=p.length>0;for(let m of p){if(m==="id"||m==="kind"){g=!1;continue}let x=rf(r,l.kind,m),k=x?x.safeParse(void 0):{success:!0,data:void 0},w=r.tryDefinition(l.kind)?.defaults;!k.success&&x&&w&&Object.hasOwn(w,m)&&(k=x.safeParse(w[m])),k.success?k.data===void 0?y.set(m,{action:"clear",value:se}):y.set(m,{action:"coerce",value:k.data}):g=!1}if(g){let m={...l};for(let[x,k]of y)k.value===se?delete m[x]:m[x]=k.value;Aa(r,m)!==void 0&&(g=!1)}if(p.length===0){o.push({code:"node-shape",id:l.id,message:`${h} does not fit what ${l.kind} declares`,repair:a(l)});continue}for(let m of p){let x=y.get(m),k=g&&x?{action:x.action,primitives:[{op:"patch-node",id:l.id,before:{[m]:l[m]===void 0?se:l[m]},after:{[m]:x.value}}]}:a(l);o.push({code:"node-shape",id:l.id,detail:m,message:`${h}: ${P(m)} does not fit what ${l.kind} declares`,repair:k})}}let c=new Set,u=[];for(let l of[...e.edges].sort((p,h)=>yt(T(p),T(h)))){if(c.has(T(l)))continue;c.add(T(l));let p=of(l),h=i.get(l.from),y=i.get(l.to);if(!h||!y){o.push({code:"edge-dangling",id:p,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:l}]}});continue}u.push(l),!(d.has(h.id)||d.has(y.id))&&(r.edgeAllowed(l.kind,h.kind,y.kind)||o.push({code:"edge-disallowed",id:p,message:`${mt(r,h)} \u2192 ${mt(r,y)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:l}]}}))}let f=n.invariants??[];if(f.length>0){let l=K.from(r,{nodes:[...i.values()],edges:u},{validate:!1}),p=new Set,h;try{h=Ve(l,f,t.invariantOptions??{})}catch{h=[{invariant:"rules",status:"could-not-judge",label:"The rules",message:"The rules could not be judged",nodeIds:[],repairs:[]}]}for(let y of h){let g=y.status==="could-not-judge"?"rule-error":y.status==="over-budget"?"rule-budget":void 0;if(!g)continue;let m=y.subjectId??y.invariant,x=`${g}|${m}|${y.invariant}`;p.has(x)||(p.add(x),o.push({code:g,id:m,detail:y.invariant,message:y.message}))}}return o.sort((l,p)=>Oa.indexOf(l.code)-Oa.indexOf(p.code)||yt(l.id,p.id)||yt(l.detail??"",p.detail??""))}var qr=new Set;function Hr(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:qr,disabledMutations:qr,disabledInvariants:qr,administered:Pa(n,new Set(Object.keys(n??{})))};let t=new Set,r=a=>{if(!(t.has(a)||!(a in n))){t.add(a);for(let d of n[a]?.requires??[])r(d)}};for(let a of e)r(a);for(let[a,d]of Object.entries(n))d.required&&r(a);let o=new Set,i=new Set,s=new Set;for(let[a,d]of Object.entries(n))if(!t.has(a)){for(let c of d.kinds??[])o.add(c);for(let c of d.mutations??[])i.add(c);for(let c of d.invariants??[])s.add(c)}for(let a of t){let d=n[a];for(let c of d?.kinds??[])o.delete(c);for(let c of d?.mutations??[])i.delete(c);for(let c of d?.invariants??[])s.delete(c)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:Pa(n,t)}}function Pa(n,e){let t=new Map;for(let[r,o]of Object.entries(n??{}))e.has(r)&&o.visibility==="admin"&&t.set(r,o);return t}var Jr="preview",Fe={kind:"human"},za={kind:"system"},Na={kind:"system",id:"modules",name:"Modules"},Ea=n=>n.mutation===null&&n.undoes===void 0;function Ma(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var Ia=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function ja(n,e,t){let r=Ia(n),o=a=>Ma(a,r),i=new Set(e.map(o)),s=new Set(t.map(o));return{introduces:t.filter(a=>!i.has(o(a))),resolves:e.filter(a=>!s.has(o(a)))}}var on=class extends Error{constructor(t,r){super(`Op "${t.id}" (${t.intent}) could not be applied: ${r instanceof Error?r.message:String(r)}`,{cause:r});this.op=t;this.name="ReceiveError"}},bt=class extends D{constructor(t,r){super(`Unknown mutation "${t}"`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError"}};function sf(){let n=globalThis.crypto,e=new Uint8Array(6);if(n?.getRandomValues)n.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return[...e].map(t=>t.toString(36).padStart(2,"0")).join("")}var Yr=class n{schema;graph;log;mutations=new Map;invariants;invariantOptions;policy;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;listeners=new Set;constructor(e){this.schema=e.schema,this.invariants=e.invariants??[],this.invariantOptions=e.invariantOptions??{},this.policy=e.policy,this.by=e.principal??Fe,this.intelligence=e.intelligence??[];for(let i of e.intelligence??[])i.may&&this.may.set(i.name,new Set(i.may));this.declaredModules=e.modules,this.startingModules=e.enabledModules,this.nextId=e.ids??(()=>`op${++this.opCount}`),this.now=e.now??(()=>new Date().toISOString()),this.validate=e.validate??!0;let t=sf();this.batchTag=e.batchIds?void 0:t,this.mintBatch=e.batchIds??(i=>`${i}:${t}:${++this.counter}`);for(let i of e.mutations??[]){if(this.mutations.has(i.name))throw new D(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of Tr(e.schema,e.mutations??[]))this.mutations.set(i.name,i);wa(e.schema,this.mutations.values(),e.policy);let r=e.horizon!==void 0?{horizon:e.horizon}:{},o={validate:this.validate};if(e.log){this.log=Je.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?K.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=Je.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=K.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);this.countPastTheLog(),ka(this)}countPastTheLog(){let e=t=>{let r=/(\d+)$/.exec(t);return r?Number(r[1]):0};for(let t of this.log.all())this.counter=Math.max(this.counter,e(t.batch)),this.opCount=Math.max(this.opCount,e(t.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}get modules(){let e=this.log.all(),t=e.at(-1)?.id,r=this.projected;if(r&&r.length===e.length&&r.last===t)return r.projection;let o,i=0;r&&r.length<=e.length&&(r.length===0||e[r.length-1]?.id===r.last)&&(o=r.said,i=r.length);for(let a=e.length-1;a>=i;a--){let d=e[a].enabledModules;if(d!==void 0){o=d;break}}let s=r&&o===r.said?r.projection:Hr(this.declaredModules,o??this.startingModules);return this.projected={projection:s,length:e.length,last:t,said:o},s}setEnabledModules(e,t={}){let r=this.modules.enabled,o=Hr(this.declaredModules,e).enabled,i=[...r].filter(u=>!o.has(u)),s=[...o].filter(u=>!r.has(u));if(i.length===0&&s.length===0)return;let a=u=>u.map(f=>{let l=this.declaredModules?.[f]?.kinds??[];return l.length>0?l.map(p=>Pe(this.schema,p)).join(", "):f}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),c={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:Na,intent:Q(d),mutation:null,primitives:[],inverse:[],reads:[],writes:[],at:this.now(),...t.via!==void 0?{via:t.via}:{},enabledModules:[...o].sort()};return this.log.append(c),this.notify(ns,[c]),c}mutation(e){let t=this.mutations.get(e);if(!t)throw new bt(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new D(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return t}mutationDisabled(e){return this.modules.disabledMutations.has(e.name)?!0:e.derived!==void 0&&this.modules.disabledKinds.has(e.derived.kind)}allMutations(){return[...this.mutations.values()].filter(e=>!this.mutationDisabled(e))}viaOf(e){if(e?.derived)return jr(this.schema,[...this.mutations.values()],e)}moved(e,t){return ja(this.allInvariants(),e,t)}allInvariants(){return this.invariants.filter(e=>this.invariantEnabled(e))}invariantEnabled(e){if(this.modules.disabledInvariants.has(e.name))return!1;if(e.scope!=="graph"){let t=e.scope.kind;if(this.modules.disabledKinds.has(t))return!1}return!0}permits(e,t=Fe){let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);return r?{ok:!1,refusal:r}:_e(this.policy,t,e.name,this.subjectKindOf(e,t),this.viaOf(this.mutations.get(e.name)),this.subjectIdOf(e),this.words)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>ie(this.schema.tryDefinition(e),e)}}refusesAgent(e,t){if(t.kind!=="agent"||t.id===void 0)return;let r=this.may.get(t.id);if(!r||r.has(e.name))return;let o=s=>`\u201C${this.mutations.get(s)?.title??s}\u201D`,i=[...r].map(o);return{mutation:e.name,message:`${t.id} may not ${o(e.name)} here: it was declared able to ${i.length===0?"do nothing else":i.join(", ")}.`,wouldNeed:[]}}namesTurnedOff(e,t=za){let r=this.modules.disabledKinds;if(r.size===0||!W(t))return;let o=this.mutations.get(e.name);if(!o)return;let i=[];o.subject&&i.push(e.args[o.subject.arg]);for(let a of ae(o.input))i.push(e.args[a.name]);if(i.flatMap(a=>typeof a=="string"?[a]:Array.isArray(a)?a.filter(d=>typeof d=="string"):[]).some(a=>r.has(this.graph.getNode(a)?.kind)))return{mutation:e.name,message:`\u201C${o.title??e.name}\u201D names a record of a module this workspace has turned off.`,wouldNeed:[]}}wordedFor(e){if(e===void 0||!ce(this,e))return{};let t=le(this,e);return{describeWith:On(this,e).graph,keepUnchanged:r=>I(r,t)}}refusalWordedFor(e,t,r){if(!ce(this,t)||e instanceof ye||e instanceof q||e===null||typeof e!="object")return e;let o=e[Nr]??[],i=le(this,t);if(!o.some(a=>this.graph.has(a)&&!i(a)))return e;let s=r.length===1?this.mutations.get(r[0].name)?.title??r[0].name:void 0;return new D(s?`\u201C${s}\u201D could not be done as asked.`:"This change could not be done as asked.")}missingFor(e,t=Fe){let r=this.mutations.get(e.name);if(!r)return;let o=new Set,i=a=>{if(typeof a=="string")o.add(a);else if(Array.isArray(a))for(let d of a)typeof d=="string"&&o.add(d)};r.subject&&i(e.args[r.subject.arg]);for(let a of ae(r.input))i(e.args[a.name]);if(o.size===0)return;let s=le(this,t);for(let a of o)if(!(this.graph.has(a)&&s(a)))return new q(a,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=Fe){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return i?(i.subject&&i.subject.kinds!=="*"?i.subject.kinds:[void 0]).some(a=>_e(this.policy,t,o,a,this.viaOf(i)).ok):!1}):!1}seenBy(e){return On(this,e)}sees(e,t){return this.graph.has(t)&&le(this,e)(t)}labels;resolveRef(e,t,r=Fe){let o=(this.policy?.sees?.length??0)>0,i=f=>!o||this.sees(r,f),s=this.graph.getNode(t);if(this.labels??=new dt(this.graph),s&&i(t))return{ok:!0,id:t,label:this.labels.labelOf(t)??t,by:"id"};let a=this.labels.lookup(e.kinds,t),d=a.exact.filter(i),c=d.length>0,u=(c?d:a.prefix.filter(i)).map(f=>({id:f,kind:this.graph.getNode(f).kind,label:this.labels.labelOf(f)??f})).sort((f,l)=>f.label<l.label?-1:f.label>l.label?1:f.id<l.id?-1:1);return u.length===1?{ok:!0,id:u[0].id,label:u[0].label,by:c?"label":"prefix"}:da(this.schema,e,t,u)}kindsKeptFrom(e=Fe){let t=new Set;for(let[o,i]of this.modules.administered)if(!this.mayAdminister(o,e))for(let s of i.kinds??[])t.add(s);let r=this.policy?.sees??[];if(r.length>0&&!W(e)){let o=new Set(this.permittedMutations(e).flatMap(i=>i.creates??[]));for(let i of this.schema.kinds)!r.some(a=>a.kinds.includes(i)&&(a.roles==="*"||(e.roles??[]).some(d=>a.roles.includes(d)))&&(!a.own||e.id!==void 0))&&!o.has(i)&&t.add(i)}return t}subjectIdOf(e){let t=this.mutations.get(e.name)?.subject;if(!t)return;let r=e.args[t.arg];return typeof r=="string"?r:void 0}permittedMutations(e=Fe){let t=this.allMutations(),r=cr(this.policy,e,t.filter(i=>!i.derived)),o=t.filter(i=>i.derived!==void 0&&_e(this.policy,e,i.name,i.derived.kind,this.viaOf(i),Z(e).id).ok);return[...r,...o]}subjectKindOf(e,t=za){let o=this.mutations.get(e.name)?.subject;if(!o)return;let i=e.args[o.arg];if(typeof i!="string")return o.kinds!=="*"&&o.kinds.length===1?o.kinds[0]:void 0;if(!(!W(t)&&!le(this,t)(i)))return this.graph.getNode(i)?.kind}today(){let e=this.invariantOptions.context,t=this.invariantOptions.today??e?.today;return typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?t:void 0}violations(e){return Ve(this.graph,this.allInvariants(),{...this.invariantOptions,...e===void 0?{}:{context:e}})}wouldChange(e){try{return Nn(this.graph,this.mutation(e.name),e.args).primitives.length>0}catch{return!0}}preview(e,t,r={}){let o=this.mutation(e.name),i=Nn(this.graph,o,e.args,this.wordedFor(r.author));return this.previewPrimitives(i.primitives,{reads:i.reads,writes:i.writes,intent:i.intent,context:t})}previewAll(e,t={}){let{context:r,...o}=t;return{...this.rehearsal().applying(e,o,r),kept:!1}}rehearsal(){let e=Object.assign(Object.create(n.prototype),this),t=0;return Object.assign(e,{graph:K.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:Je.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${Jr}:${++t}`,mintBatch:()=>Jr,rehearsing:!0}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=K.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=Ve(o,this.allInvariants(),{...this.invariantOptions,...t.context===void 0?{}:{context:t.context}});return{diff:i,primitives:e,reads:t.reads,writes:t.writes,intent:t.intent,...this.moved(r,s),violationsAfter:s}}apply(e,t={}){return this.applyAll([e],t)}applyAll(e,t={}){return this.applying(e,t)}applying(e,t,r){let o=t.batch??this.mintBatch("batch"),i=t.author??this.by,s=[],a=[],d=new Set,c=new Set,u=[],f=this.violations(r),l=this.graph.snapshot(),p=this.log.length;if(this.policy)for(let g of e){let m=this.permits(g,i);if(!m.ok)throw this.rehearsing||ht(m.refusal,i.id),new ye(m.refusal)}for(let g of e){let m=this.refusesAgent(g,i)??this.namesTurnedOff(g,i);if(m)throw this.rehearsing||ht(m,i.id),new ye(m)}this.rehearsing||pt(i.id);try{for(let g of e){let m=this.mutation(g.name),x=this.missingFor(g,i);if(x)throw x;let k=Nn(this.graph,m,g.args,this.wordedFor(i));if(k.primitives.length===0)continue;let w={id:this.nextId(),seq:this.log.length,batch:o,author:i,intent:m.describe!==void 0?k.intent:t.intent??k.intent,...t.intent!==void 0?{batchIntent:t.intent}:{},mutation:g,primitives:k.primitives.map(gn),inverse:[...k.primitives].reverse().map(gn).map(mn),reads:k.reads,writes:k.writes,...m.describe!==void 0&&k.described&&k.described.length>0?{described:k.described}:{},at:this.now(),...t.via!==void 0?{via:t.via}:{}};this.graph.applyPrimitives(w.primitives),this.log.append(w),s.push(w),a.push(...w.primitives);for(let b of w.reads)d.add(b);for(let b of w.writes)c.add(b);u.push(w.intent)}}catch(g){throw this.putBack(l,p),this.refusalWordedFor(g,i,e)}let h=oe(l,this.graph.snapshot());this.admitted(t,s,a,h,l,p);let y=this.violations(r);return this.notify(h,s),{batch:o,ops:s,diff:h,primitives:a,reads:[...d],writes:[...c],intent:t.intent??u.join("; "),...this.moved(f,y),violationsAfter:y}}receive(e,t={}){let r=new Set(this.log.all().map(d=>d.id)),o=e.filter(d=>!r.has(d.id));if(o.length===0)return[];let i=this.graph.snapshot(),s=[];if(!t.applied)for(let d of o)try{this.graph.applyPrimitives(d.primitives,{restoring:d.undoes!==void 0})}catch(c){throw this.graph.load(i),new on(d,c)}let a=this.log.length;for(let[d,c]of o.entries()){let u={...c,seq:a+d};this.log.append(u),s.push(u)}return this.notify(oe(i,this.graph.snapshot()),s),s}append(e,t={}){if(e.length===0)return[];let r=new Set(this.log.all().map(a=>a.id)),o,i=e.map((a,d)=>{let c=a.primitives.map(gn),u={id:a.id??this.nextId(),seq:this.log.length+d,batch:a.batch??t.batch??(o??=this.mintBatch("batch")),author:a.author,intent:a.intent,...a.batchIntent!==void 0?{batchIntent:a.batchIntent}:{},mutation:a.mutation??null,primitives:c,inverse:a.inverse??[...c].reverse().map(mn),reads:a.reads??[],writes:a.writes??[...new Set(c.flatMap(rr))],at:a.at??this.now(),...a.undoes!==void 0?{undoes:a.undoes}:{},...a.via!==void 0?{via:a.via}:{}};if(r.has(u.id))throw new D(`Op "${u.id}" (${u.intent}) is already in the log`,"A host-made op needs an id of its own; leave `id` out and the store mints one.");return r.add(u.id),u}),s=this.graph.snapshot();for(let a of i)try{this.graph.applyPrimitives(a.primitives,{restoring:a.undoes!==void 0})}catch(d){throw this.graph.load(s),new on(a,d)}for(let a of i)this.log.append(a);for(let a of i)pt(a.author.id);return this.notify(oe(s,this.graph.snapshot()),i),i}applyPrimitives(e,t={}){let r=t.batch??this.mintBatch("batch"),o=t.author??this.by,i=this.violations(),s=this.graph.snapshot(),a=t.intent??"Apply a change",d=e.map(gn),c=[];if(d.length>0){let l={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:d,inverse:[...d].reverse().map(mn),reads:[],writes:[...new Set(d.flatMap(rr))],at:this.now(),...t.via!==void 0?{via:t.via}:{}};this.graph.applyPrimitives(l.primitives),this.log.append(l),c.push(l),pt(o.id)}let u=this.violations(),f=oe(s,this.graph.snapshot());return this.notify(f,c),{batch:r,ops:c,diff:f,primitives:d,reads:[],writes:c[0]?.writes??[],intent:a,...this.moved(i,u),violationsAfter:u}}findings(){return Ra({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return kn(this.log,typeof e=="string"?[e]:e)}previewUndo(e,t){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=_s(r.ops),i=new Set;for(let s of r.ops)for(let a of s.writes)i.add(a);return{ok:!0,check:r,...this.previewPrimitives(o,{reads:[...new Set(r.ops.flatMap(s=>[...s.reads]))],writes:[...i],intent:`Undo: ${r.ops.map(s=>s.intent).join("; ")}`,restoring:r.ops.every(Ea),...t===void 0?{}:{context:t}})}}undo(e,t={}){return this.undoing(e,t)}undoing(e,t){let r=typeof e=="string"?[e]:e,o=t.author??this.by,i=(this.policy?.sees?.length??0)>0&&!W(o);if(i){let h=kn(wr(Oe(this.log.all(),$n(this,o)),()=>this.log.epochs()),r);if(!h.ok)throw new Me(h)}let s=this.canUndo(r);if(!s.ok)throw new Me(i?{ok:!1,ops:[],blockedBy:[],includeBatches:[],message:"Cannot undo on its own \u2014 a later change you cannot see depends on it, which only somebody who can see it can take back."}:s);let a=t.batch??this.mintBatch("undo");if(this.policy)for(let h of s.ops){if(!h.mutation)continue;let y=this.permits(h.mutation,o);if(!y.ok){let g={...y.refusal,message:`Not permitted to undo "${h.intent}": ${y.refusal.message}`};throw ht(g,o.id),new ye(g)}}let d=this.graph.snapshot(),c=this.violations(),u=[],f=this.log.length;for(let h of[...s.ops].sort((y,g)=>g.seq-y.seq)){let y={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${h.intent}`,...t.intent!==void 0?{batchIntent:t.intent}:{},mutation:null,primitives:h.inverse,inverse:[...h.inverse].reverse().map(mn),reads:h.reads,writes:h.writes,at:this.now(),undoes:h.id,...t.via!==void 0?{via:t.via}:{}};this.graph.applyPrimitives(y.primitives,{restoring:Ea(h)}),this.log.append(y),u.push(y)}let l=oe(d,this.graph.snapshot());this.admitted(t,u,u.flatMap(h=>[...h.primitives]),l,d,f);let p=this.violations();return this.notify(l,u),{batch:a,ops:u,diff:l,primitives:u.flatMap(h=>[...h.primitives]),reads:[...new Set(u.flatMap(h=>[...h.reads]))],writes:[...new Set(u.flatMap(h=>[...h.writes]))],intent:t.intent??u.map(h=>h.intent).join("; "),...this.moved(c,p),violationsAfter:p}}putBack(e,t){this.graph.load(e),this.log.length>t&&this.log.truncate(t)}admitted(e,t,r,o,i,s){if(!e.admit||t.length===0)return;let a=this.graph.size;try{e.admit({ops:t,primitives:r,added:{nodes:o.addedNodes.length,edges:o.addedEdges.length},removed:{nodes:o.removedNodes.length,edges:o.removedEdges.length},changed:{nodes:o.changedNodes.length},nodesAfter:a.nodes,edgesAfter:a.edges})}catch(d){throw this.putBack(i,s),d}}redo(e,t={}){return this.undo(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(e,t){if(!(this.quiet>0)&&!(t.length===0&&ts(e)))for(let r of this.listeners)r(e,t)}rebase(e){let t=new Set([...e.pending,...e.drop??[]]),r=this.log.all(),o=r.findIndex(y=>t.has(y.batch)),i=r.slice(o<0?r.length:o),s=this.log.horizon+(o<0?r.length:o),a=i.find(y=>!t.has(y.batch));if(a)throw new D(`Cannot rebase: op "${a.id}" (${a.intent}) comes after a pending batch and is neither pending nor dropped`,"While anything is pending, land the server's ops through rebase, so the log stays confirmed ops then pending ones.");let d=this.log.lastEpoch();if(d&&d.seq>s)throw new D(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let c=this.graph.snapshot(),u=[],f=[],l=[];this.quiet++;try{for(let g of[...i].reverse())this.graph.applyPrimitives(g.inverse,{restoring:!0,inPlace:!0});this.log.truncate(s);let y=new Set(this.log.all().map(g=>g.id));for(let g of e.confirmed){if(y.has(g.id))continue;try{this.graph.applyPrimitives(g.primitives,{restoring:g.undoes!==void 0})}catch(x){throw new on(g,x)}let m={...g,seq:this.log.length};this.log.append(m),y.add(g.id),u.push(m)}for(let g of e.pending){let m=i.filter(x=>x.batch===g);if(m.length!==0)try{f.push(...this.replay(g,m))}catch(x){l.push({batch:g,error:x})}}}catch(y){this.log.truncate(s);for(let g of i)this.log.append(g);throw this.graph.load(c),y}finally{this.quiet--}let p=oe(c,this.graph.snapshot()),h=[...u,...f];return this.notify(p,h),{diff:p,confirmed:u,pending:f,refused:l}}adopt(e){let t=new Set(e.drop??[]),r=(e.pending??[]).filter(p=>!t.has(p)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(p=>p.id)),d=new Map(r.map(p=>[p,o.filter(h=>h.batch===p)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,e.horizon!==void 0?{horizon:e.horizon}:{});else{let p=e.horizon??0;this.log.replace([],e.epochs??[{seq:p,base:e.snapshot}],{horizon:p})}let c=[],u=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let p of r){let h=d.get(p)??[];if(h.length!==0)try{c.push(...this.replay(p,h))}catch(y){u.push({batch:p,error:y})}}}catch(p){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,p}finally{this.quiet--}let f=this.log.all().filter(p=>!a.has(p.id)&&!c.includes(p)),l=oe(i,this.graph.snapshot());return this.notify(l,[...f,...c]),{diff:l,adopted:f,pending:c,refused:u}}replay(e,t){let r=t[0],o={author:r.author,batch:e,...r.batchIntent!==void 0?{intent:r.batchIntent}:{},...r.via!==void 0?{via:r.via}:{}};if(r.undoes!==void 0){let i=t.map(a=>this.log.get(a.undoes??"")),s=t.find((a,d)=>i[d]===void 0);if(s)throw new D(`What "${s.intent}" took back is no longer in the log`);return this.undoing([...new Set(i.map(a=>a.batch))],o).ops}return t.every(i=>i.mutation!==null)?this.applying(t.map(i=>i.mutation),o).ops:this.append(t.map(({seq:i,...s})=>s))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return _a(this.schema,this.log.opsFrom(e?.seq??0),this.graph.snapshot(),{validate:this.validate,...e?{base:e.base}:{}})}checkpoint(e={}){let t=this.log.all(),r;if(e.seq!==void 0)r=e.seq;else{let a=this.log.length-(e.keepOps??1e3),c=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,u=t.find(l=>Date.parse(l.at)>c),f=u?u.seq:this.log.length;r=Math.min(a,f)}for(r=Math.min(Math.max(r,this.log.horizon),this.log.length);r>this.log.horizon&&r<this.log.length&&t[r-this.log.horizon].batch===t[r-1-this.log.horizon].batch;)r--;if(r<=this.log.horizon)return;let o=this.verify();if(!o.ok)throw new D(`Cannot compact a store that does not verify: ${o.reason}`);let i=this.log.checkpointAt(this.schema,r,{validate:this.validate}),s=As(this.log,r);return Object.keys(s).length>0?{...i,creators:s}:i}compact(e){return this.log.compact(e)}};function af(n){return[...n.mutations??[],...at(n.schema,n.mutations??[])]}function df(n){let e=[...n.schema.kinds],t=af(n),r=new Map,o=new Map;for(let g of t){o.set(g.name,g.creates??[]);let m=ae(g.input).filter(x=>!x.optional&&!x.kinds.includes("*")).flatMap(x=>x.kinds);r.set(g.name,[...new Set(m)])}let i=new Map;for(let g of e)i.set(g,[]);for(let g of t)for(let m of o.get(g.name)??[])i.get(m)?.push(g.name);let s=new Map,a=new Set;for(let g=0;;g+=1){let m=[];for(let x of t)if((r.get(x.name)??[]).every(w=>a.has(w)))for(let w of o.get(x.name)??[])a.has(w)||m.push(w);if(m.length===0)break;for(let x of m)a.add(x),s.set(x,g)}let d=g=>{let m=i.get(g)??[];if(m.length===0)return[];let x=m.map(k=>r.get(k)??[]).sort((k,w)=>k.length-w.length)[0];return[...new Set(x)].filter(k=>k!==g)},c=new Map,u=g=>{let m=c.get(g);if(m)return m;let x=new Set;c.set(g,x);for(let k of d(g)){x.add(k);for(let w of u(k))x.add(w)}return x.delete(g),x},f=new Map(e.map(g=>[g,0]));for(let g of e)for(let m of u(g))f.set(m,(f.get(m)??0)+1);let l=e.map(g=>({kind:g,madeBy:[...i.get(g)??[]].sort(),needs:[...d(g)].sort(),depth:s.get(g)??null})).sort((g,m)=>(g.depth??Number.MAX_SAFE_INTEGER)-(m.depth??Number.MAX_SAFE_INTEGER)||(f.get(m.kind)??0)-(f.get(g.kind)??0)||g.kind.localeCompare(m.kind)),p=l.filter(g=>g.depth===0).map(g=>g.kind),h=[...new Set(t.filter(g=>(r.get(g.name)??[]).length===0).filter(g=>(o.get(g.name)??[]).length>0).map(g=>g.name))].sort(),y=l.filter(g=>g.depth===null).map(g=>({kind:g.kind,why:g.madeBy.length===0?"no act declares that it creates this kind":`every act that makes it needs ${g.needs.map(m=>`"${m}"`).join(", ")}, which nothing can make first`}));return{order:l,roots:p,doors:h,unreachable:y}}function cf(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function Xr(n,e,t=2500){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}function lf(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function uf(n,e,t,r=2500,o){let i=new Map;for(let[s,a]of n)Xr(a,t,r)&&i.set(s,a);for(let s of e){if(!Xr(s,t,r)){i.delete(s.participant);continue}let a=i.get(s.participant);(!a||Date.parse(a.at)<=Date.parse(s.at))&&i.set(s.participant,s)}return o!==void 0&&i.delete(o),i}function ff(n,e){return!n||!e?n===e:n.participant===e.participant&&n.kind===e.kind&&n.name===e.name&&n.onBehalfOf===e.onBehalfOf&&n.onBehalfOfName===e.onBehalfOfName&&n.until===e.until&&n.held===e.held&&n.hue===e.hue&&n.stop===e.stop&&(n.over??null)===(e.over??null)&&(n.robot?.at??null)===(e.robot?.at??null)&&(n.robot?.mode??null)===(e.robot?.mode??null)}export{Oi as a,Ai as b,Td as c,Dd as d,Le as e,Fd as f,Ke as g,Pg as h,zg as i,Eg as j,Ng as k,Mg as l,Ig as m,Fc as n,jg as o,Xi as p,Qi as q,Tg as r,Dg as s,Fg as t,Zg as u,tr as v,es as w,Cg as x,Lg as y,Gg as z,U as A,Vc as B,vt as C,jn as D,Q as E,Ka as F,ve as G,kt as H,F as I,Wa as J,St as K,P as L,no as M,qa as N,Pe as O,sn as P,Ha as Q,Tn as R,Dn as S,ie as T,Fn as U,od as V,Er as W,su as X,qc as Y,T as Z,rs as _,Ee as $,Yc as aa,au as ba,Nn as ca,fr as da,yn as ea,ae as fa,$e as ga,sl as ha,fu as ia,Xc as ja,Yn as ka,iy as la,Qc as ma,el as na,pu as oa,Z as pa,W as qa,_e as ra,Ye as sa,qe as ta,hu as ua,lr as va,ur as wa,tl as xa,al as ya,us as za,dl as Aa,fs as Ba,ps as Ca,ll as Da,hs as Ea,fl as Fa,ls as Ga,pl as Ha,gs as Ia,Il as Ja,me as Ka,de as La,hl as Ma,bn as Na,xn as Oa,gl as Pa,rt as Qa,Ts as Ra,Ds as Sa,Fs as Ta,Kl as Ua,Cs as Va,Wl as Wa,Mr as Xa,Ir as Ya,ea as Za,Fr as _a,yu as $a,Ou as ab,Ur as bb,Au as cb,nn as db,De as eb,Pu as fb,zu as gb,Nu as hb,ga as ib,ya as jb,ba as kb,Lu as lb,Uu as mb,Ku as nb,Hb as ob,Wu as pb,Vu as qb,qu as rb,Vl as sb,ql as tb,Hl as ub,Jl as vb,Hu as wb,Ju as xb,Yu as yb,$a as zb,ja as Ab,on as Bb,Yr as Cb,it as Db,Gs as Eb,Bs as Fb,Rr as Gb,Yl as Hb,Xl as Ib,Ql as Jb,Pr as Kb,Us as Lb,Ks as Mb,eu as Nb,Ws as Ob,Vs as Pb,tu as Qb,qs as Rb,iu as Sb,Hs as Tb,df as Ub,cf as Vb,lf as Wb,uf as Xb,ff as Yb};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{a as k,b as K}from"./chunk.LGUV2J6Q.js";import{Aa as U,a as z,ua as j,xa as W,ya as _}from"./chunk.4JSMCNF7.js";import{Ca as F,D as M,I as G,M as E}from"./chunk.Y235YZSZ.js";import{a as X,b as B}from"./chunk.MRK6QJV5.js";import{b as L}from"./chunk.AJZBJBMO.js";var S=L(X(),1);var r=L(B(),1),ee=520;function re(e,n,u,a){let o=u.filters.find(d=>d.key===a.key);if(!o)return`${a.key}: ${a.value}`;if(o.about==="is")return a.value.charAt(0).toUpperCase()+a.value.slice(1);if(o.about==="edge"){if(a.value==="*")return`${o.label}: anything`;if(a.value==="none")return`${o.label}: nothing`;let d=n.getNode(a.value);return`${o.label}: ${d?G(e.tryDefinition(d.kind),d):a.value}`}if(o.type==="date"){let[d,g]=a.value.split(":");return`${o.label} ${d} ${g?M(g):""}`.trim()}if(o.type==="boolean")return`${o.label}: ${a.value==="true"?"yes":"no"}`;if(o.type==="number"){let d=a.value.lastIndexOf(":"),g=a.value.slice(0,Math.max(0,d));if(g==="at-most"||g==="at-least")return`${o.label}: ${g==="at-most"?"at most":"at least"} ${E(e.tryDefinition(u.kind),o.key,Number(a.value.slice(d+1)))}`}return o.type==="text"?`${o.label}: ${a.value}`:`${o.label}: ${E(e.tryDefinition(u.kind),o.key,a.value)}`}var I=e=>/^[A-Z][a-z]/.test(e)?e.charAt(0).toLowerCase()+e.slice(1):e;function ne(e){return e?.type==="date"?{asc:"Earliest first",desc:"Latest first"}:e?.type==="number"?{asc:"Lowest first",desc:"Highest first"}:e?.type==="boolean"?{asc:"No first",desc:"Yes first"}:e?.type==="choice"?{asc:"In their order",desc:"In reverse order"}:{asc:"A to Z",desc:"Z to A"}}var $=_(z(()=>import("./chunk.JE4VH767.js"))),x=$.part((e,n)=>(0,r.jsx)(e.ArrangeLists,{...n}),{what:"This list",quiet:!0}),fe=()=>$.load(),O=new Map;function ye(e){let{schema:n,graph:u,kind:a,arrangement:o,onChange:d}=e,g=F(n,a),s=e.testId??"arrange",c=k(e.allow,"sort")&&g.sorts.length>1,f=k(e.allow,"group")&&g.groups.length>0,m=k(e.allow,"filter")&&g.filters.length>0,R=e.query!==!1&&e.allow!==!1,v=te(e.noun,e.kept);if(!c&&!f&&!m&&!R&&!v)return null;let D=t=>JSON.stringify(K(t)),N=`${s}|${a}`,p={current:O.get(N)??{words:new Set,latest:null,at:0}};O.set(N,p.current),p.current.latest&&Date.now()-p.current.at>1500&&!p.current.words.has(D(o))&&(p.current={words:new Set,latest:null,at:0},O.set(N,p.current));let i=p.current.latest??o,h=t=>{let l={...p.current.latest??o,...t};for(let w of Object.keys(l))l[w]===void 0&&delete l[w];p.current.latest=l,p.current.at=Date.now(),p.current.words.add(D(l)),d(l)},y=i.filter??[],P=t=>{let l=y.filter((w,Q)=>Q!==t);h({filter:l.length>0?l:void 0})},T=t=>y.some(l=>l.key===t.key&&l.value===t.value),Y=t=>T(t)?P(y.findIndex(l=>l.key===t.key&&l.value===t.value)):h({filter:[...y,t]}),C=i.sort?g.sorts.find(t=>t.key===i.sort.by):void 0,q=i.group?g.groups.find(t=>t.key===i.group.by):void 0,Z=ne(C),b={schema:n,graph:u,offers:g,arrangement:i,set:h,toggle:Y,has:T,testId:s},V=i.sort?(0,r.jsxs)(r.Fragment,{children:["Sorted by ",I(C?.label??i.sort.by),(0,r.jsx)("span",{"aria-hidden":"true",children:i.sort.direction==="desc"?" \u2193":" \u2191"})]}):"Sort",J=i.group?.bucket&&q?.buckets?`, a ${i.group.bucket} each`:"",H=i.group?`Grouped by ${I(q?.label??i.group.by)}${J}`:"Group";return(0,r.jsxs)("div",{"data-testid":`${s}-bar`,role:"group","aria-label":"Arrange",className:"graview-arrange",style:e.style,onPointerEnter:$.prefetch,onFocus:$.prefetch,children:[(0,r.jsx)("style",{children:ie}),(0,r.jsxs)("div",{className:"graview-arrange-line",children:[v?(0,r.jsxs)("span",{className:"graview-arrange-count","data-testid":`${s}-count`,children:[v.kept?(0,r.jsx)("span",{"data-testid":`${s}-kept`,children:v.kept}):null,v.words]}):null,c?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,r.jsx)(A,{testId:`${s}-sort`,value:i.sort?.by??"",set:i.sort!==void 0,label:"Sort",name:i.sort?`Sorted by ${I(C?.label??i.sort.by)}, ${Z[i.sort.direction].toLowerCase()}`:"Sort",list:t=>(0,r.jsx)(x,{which:"sort",done:t,...b}),children:V})}):null,f?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,r.jsx)(A,{testId:`${s}-group`,value:i.group?.by??"",set:i.group!==void 0,label:"Group",name:H,list:t=>(0,r.jsx)(x,{which:"group",done:t,...b}),children:H})}):null,m?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,r.jsx)(A,{testId:`${s}-add`,value:"",set:!1,label:"Filter",name:y.length>0?`Filter \u2014 ${y.length} on`:"Filter",list:t=>(0,r.jsx)(x,{which:"filter",done:t,...b}),children:"Filter"})}):null,c||f||m?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-all",children:(0,r.jsx)(A,{testId:`${s}-all`,value:"",set:!1,label:"Arrange",name:"Arrange: sort, group and filter",list:t=>(0,r.jsx)(x,{which:"all",done:t,parts:{sort:c,group:f,filter:m},...b}),children:"Arrange"})}):null,y.map((t,l)=>{let w=re(n,u,g,t);return(0,r.jsxs)("span",{className:"graview-arrange-token","data-testid":`${s}-condition`,children:[w,(0,r.jsx)("button",{type:"button","aria-label":`Remove: ${w}`,title:"Remove",onClick:()=>P(l),children:"\xD7"})]},`${t.key}:${t.value}`)}),R?(0,r.jsxs)("label",{className:"graview-arrange-words-at",children:[(0,r.jsx)("span",{style:U,children:"Find"}),(0,r.jsx)("input",{type:"search",className:"graview-arrange-words","data-testid":`${s}-query`,value:i.query??"",placeholder:"Find\u2026",onChange:t=>h({query:t.target.value.length>0?t.target.value:void 0})})]}):null]})]})}function te(e,n){if(!n)return null;let u=n.shown!==n.of;if(!e)return u?{words:"",kept:`${n.shown} of ${n.of}`}:null;let a=n.of===1?e.one:e.many;return u?{words:` ${a}`,kept:`${n.shown} of ${n.of}`}:{words:`${n.of} ${a}`}}function A({testId:e,value:n,set:u,label:a,name:o,list:d,children:g}){let s=W("arrange",{align:"start"}),c=(0,S.useRef)(null);return(0,S.useEffect)(()=>{s.open&&c.current?.querySelector('[aria-pressed="true"]')?.focus({preventScroll:!0})},[s.open]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("button",{type:"button",className:"graview-arrange-open","data-testid":e,"data-set":u?"":void 0,value:n,"aria-label":o,...s.trigger,onClick:s.toggle,children:[g,(0,r.jsx)(oe,{})]}),s.open?(0,r.jsx)("div",{...s.pane,ref:f=>{s.pane.ref(f),c.current=f},role:"group","aria-label":a,"data-testid":"arrange-list","data-arrange":e,className:"graview-arrange-list",style:j,onKeyDown:ae,children:d(()=>s.setOpen(!1))}):null]})}function ae(e){if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;let n=[...e.currentTarget.querySelectorAll("button:not([disabled]), input")];if(n.length===0)return;let u=n.indexOf(document.activeElement);if(document.activeElement instanceof HTMLInputElement&&(e.key==="ArrowUp"||e.key==="ArrowDown"))return;e.preventDefault();let a=e.key==="Home"?0:e.key==="End"?n.length-1:e.key==="ArrowDown"?(u+1)%n.length:(u-1+n.length)%n.length;n[a].focus()}function oe(){return(0,r.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10","aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto",opacity:.7},children:(0,r.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}var ie=`
|
|
2
|
+
.graview-arrange{container-type:inline-size;box-sizing:border-box;width:100%;min-width:0;max-width:100%}
|
|
3
|
+
.graview-arrange-line{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;font-size:.875rem;line-height:1.35;color:var(--graview-ink-muted)}
|
|
4
|
+
.graview-arrange-count{margin-right:2px;color:var(--graview-ink-muted)}
|
|
5
|
+
.graview-arrange-part{display:inline-flex;align-items:center;min-width:0}
|
|
6
|
+
.graview-arrange-count~.graview-arrange-part::before{content:"\xB7";margin-right:6px;color:var(--graview-ink-muted)}
|
|
7
|
+
.graview-arrange-open{display:inline-flex;align-items:center;gap:5px;min-height:28px;min-width:0;max-width:100%;margin:0;padding:0 6px;border:1px solid transparent;border-radius:7px;background:none;box-shadow:none;font:inherit;letter-spacing:normal;text-transform:none;text-align:left;color:var(--graview-ink-muted);cursor:pointer}
|
|
8
|
+
.graview-arrange-open[data-set]{color:var(--graview-ink)}
|
|
9
|
+
.graview-arrange-open:hover,.graview-arrange-open[aria-expanded=true]{border-color:var(--graview-edge);color:var(--graview-ink)}
|
|
10
|
+
.graview-arrange :focus-visible,.graview-arrange-list :focus-visible{outline:2px solid var(--graview-accent);outline-offset:1px}
|
|
11
|
+
.graview-arrange-all{display:none}
|
|
12
|
+
@container (max-width: ${ee-1}px){.graview-arrange-one{display:none}.graview-arrange-all{display:inline-flex}}
|
|
13
|
+
.graview-arrange-token{display:inline-flex;align-items:center;gap:0;min-width:0;padding-left:6px;color:var(--graview-ink);overflow-wrap:anywhere}
|
|
14
|
+
.graview-arrange-token button{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;margin:0;padding:0;border:0;border-radius:6px;background:none;font:inherit;line-height:1;color:var(--graview-ink-muted);cursor:pointer}
|
|
15
|
+
.graview-arrange-token button:hover{color:var(--graview-ink);background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
|
|
16
|
+
.graview-arrange-words-at{display:inline-flex;min-width:0;max-width:100%}
|
|
17
|
+
.graview-arrange-words{box-sizing:border-box;width:min(100%,12rem);min-height:28px;margin:0;padding:0 8px;border:1px solid transparent;border-radius:7px;background:transparent;font:inherit;color:var(--graview-ink)}
|
|
18
|
+
.graview-arrange-words:hover,.graview-arrange-words:focus{border-color:var(--graview-edge)}
|
|
19
|
+
`;function we(e){let n=[];return e.query&&n.push(`\u201C${e.query}\u201D`),e.filter?.length&&n.push(`${e.filter.length} condition${e.filter.length===1?"":"s"}`),e.group&&n.push(`by ${e.group.by}`),e.sort&&n.push(`sorted by ${e.sort.by}`),n.length>0?n.join(" \xB7 "):null}export{ee as a,re as b,I as c,ne as d,fe as e,ye as f,we as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as r,b as m,d as k,e as h}from"./chunk.ONDILMIX.js";import"./chunk.AJZBJBMO.js";var c="way-back",g='[data-testid="notices-toasts"]';function p(n){let o=document.activeElement;o!==null&&o!==document.body&&!o.closest(g)||(n??document).querySelector('[data-graview-app-bar] [data-testid="app-home"]')?.focus({preventScroll:!0})}function E(n,o,a,d,y){let s=y?.closest("[data-graview-embed]"),i,f=e=>{if(e!==void 0&&r(n,o)?.batch!==e)return!1;try{let t=k(n,o);return t&&a?.notify({kind:"toast",id:c,sentence:`Took back \u201C${t.intent}\u201D`}),t!==void 0}catch(t){return a?.notify({kind:"toast",id:c,tone:"warn",sentence:t instanceof Error?t.message:String(t)}),!0}},u=()=>{let e=m(n,o,d);if(d=n.batches().length,e){let t=i=e.batch;a?.notify({kind:"toast",id:c,sentence:e.intent,timeout:1e4,action:{label:"Take back",onSelect:()=>(p(s),f(t))}})}else i&&r(n,o)?.batch!==i&&(i=void 0,a?.dismiss(c))},l=e=>{h(e)&&(!s||s.contains(e.target))&&f()&&e.preventDefault()};u();let b=n.subscribe(u);return document.addEventListener("keydown",l),(e=!1)=>{b(),document.removeEventListener("keydown",l),e&&i&&a?.dismiss(c)}}export{E as sceneWay};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b}from"./chunk.FLDFRFDH.js";import"./chunk.ZKUXPS44.js";import"./chunk.XEJS2VS5.js";import"./chunk.4UQLZ7VW.js";import"./chunk.DN4D4HGX.js";import"./chunk.DJ26NOOW.js";import"./chunk.SQD7ZPEJ.js";import"./chunk.YAONM74M.js";import"./chunk.CJQL7AHT.js";import"./chunk.BQV62QEL.js";import"./chunk.DAKED3WK.js";import"./chunk.WWRWXFYR.js";import"./chunk.ZFUQA3KT.js";import"./chunk.DO4P2UK4.js";import"./chunk.6KJSFIO7.js";import"./chunk.FLJP3BGP.js";import"./chunk.ENMNLR73.js";import"./chunk.LZQZP2PD.js";import"./chunk.SCLIBKLS.js";import"./chunk.ACZGK7LQ.js";import"./chunk.AHDOKM4O.js";import"./chunk.3MLQ3Q5X.js";import"./chunk.LGUV2J6Q.js";import"./chunk.4JSMCNF7.js";import"./chunk.Y235YZSZ.js";import"./chunk.MRK6QJV5.js";import"./chunk.AJZBJBMO.js";export{b as declaredLensView,a as formatFor};
|