graview 0.1.26 → 0.1.27

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.
Files changed (80) hide show
  1. package/dist/preview/{chunk.OBQ4DIFO.js → chunk.4JXWQO6Y.js} +1 -1
  2. package/dist/preview/{chunk.564EIRAT.js → chunk.4R7LDCDO.js} +1 -1
  3. package/dist/preview/{chunk.XNYBOKLW.js → chunk.4W24TPMR.js} +1 -1
  4. package/dist/preview/{chunk.PKFL2AR4.js → chunk.5BN2ARQ2.js} +1 -1
  5. package/dist/preview/{chunk.2GFB5FOK.js → chunk.7CO6VP6F.js} +1 -1
  6. package/dist/preview/{chunk.KXWRS6LY.js → chunk.7QTBDACG.js} +1 -1
  7. package/dist/preview/{chunk.BK2MJOUN.js → chunk.7SVIRYBB.js} +1 -1
  8. package/dist/preview/chunk.7THQFY52.js +1 -0
  9. package/dist/preview/{chunk.YXQCEXZX.js → chunk.AS35X6KA.js} +1 -1
  10. package/dist/preview/{chunk.4INXWGIT.js → chunk.ATLUMYAJ.js} +1 -1
  11. package/dist/preview/{chunk.NQP3DWME.js → chunk.CW7BMVBG.js} +1 -1
  12. package/dist/preview/{chunk.VW7U4CT5.js → chunk.DG2UE7PJ.js} +1 -1
  13. package/dist/preview/{chunk.YOMW4MKD.js → chunk.DG2WKNMX.js} +1 -1
  14. package/dist/preview/{chunk.XD4Q4FI2.js → chunk.DQ5OWYLQ.js} +1 -1
  15. package/dist/preview/{chunk.UEEXBS2U.js → chunk.DY2FFBWF.js} +1 -1
  16. package/dist/preview/chunk.E3SZ7T75.js +1 -0
  17. package/dist/preview/{chunk.NIEQZOHX.js → chunk.EVTZE2OZ.js} +1 -1
  18. package/dist/preview/{chunk.QFJRXAU3.js → chunk.FS5K4AVA.js} +2 -2
  19. package/dist/preview/{chunk.5CXMUC6R.js → chunk.FTBKJ5RZ.js} +1 -1
  20. package/dist/preview/{chunk.LLUZMOBZ.js → chunk.GHMICJIB.js} +1 -1
  21. package/dist/preview/chunk.HO6JR7VY.js +1 -0
  22. package/dist/preview/{chunk.DRIWJRQW.js → chunk.HPD3DSTP.js} +1 -1
  23. package/dist/preview/chunk.I5KD54S6.js +1 -0
  24. package/dist/preview/chunk.IXVSJJQH.js +20 -0
  25. package/dist/preview/{chunk.ZOWWWRYA.js → chunk.IZDKEFPJ.js} +1 -1
  26. package/dist/preview/chunk.J36GTQTV.js +1 -0
  27. package/dist/preview/{chunk.I5U42VDK.js → chunk.KAKX5TZN.js} +2 -2
  28. package/dist/preview/{chunk.UUMXYMOX.js → chunk.LHAAZQNQ.js} +1 -1
  29. package/dist/preview/{chunk.HFFEOCYY.js → chunk.LQZ2VQWN.js} +2 -2
  30. package/dist/preview/chunk.MHJJEGQO.js +1 -0
  31. package/dist/preview/chunk.MNPNW4BQ.js +1 -0
  32. package/dist/preview/{chunk.XXNC2AFL.js → chunk.NKIFVPS3.js} +1 -1
  33. package/dist/preview/{chunk.XOC5BRPU.js → chunk.NQNQPPPM.js} +1 -1
  34. package/dist/preview/{chunk.OBGG4SYF.js → chunk.OA5BVKJH.js} +1 -1
  35. package/dist/preview/chunk.OHGJ5BZ4.js +2 -0
  36. package/dist/preview/{chunk.SVL6I37U.js → chunk.OYULDOQP.js} +1 -1
  37. package/dist/preview/{chunk.D3XF643V.js → chunk.PHY3AH3L.js} +1 -1
  38. package/dist/preview/{chunk.ECG7RM6L.js → chunk.Q7544RCB.js} +1 -1
  39. package/dist/preview/{chunk.NLFLFIDS.js → chunk.QZWN46V6.js} +1 -1
  40. package/dist/preview/chunk.RUC4HFVC.js +1 -0
  41. package/dist/preview/chunk.S5JWZIVE.js +1 -0
  42. package/dist/preview/chunk.SHDYLMZE.js +2 -0
  43. package/dist/preview/{chunk.ECRZZ3U4.js → chunk.T2EZ5MTH.js} +1 -1
  44. package/dist/preview/chunk.TMPV4HLQ.js +1 -0
  45. package/dist/preview/{chunk.LHIYFAN5.js → chunk.TX2GOL65.js} +1 -1
  46. package/dist/preview/{chunk.AAVCTGAE.js → chunk.U5ZUXGWM.js} +1 -1
  47. package/dist/preview/chunk.UMMN5Z6V.js +1 -0
  48. package/dist/preview/chunk.UPGDSOBY.js +1 -0
  49. package/dist/preview/{chunk.MLQQR57X.js → chunk.V57P4LIZ.js} +1 -1
  50. package/dist/preview/{chunk.KSEKVHJJ.js → chunk.VD6FJ6KJ.js} +1 -1
  51. package/dist/preview/{chunk.4MAYBFPU.js → chunk.VFICMX5G.js} +1 -1
  52. package/dist/preview/chunk.VMD4PDYJ.js +1 -0
  53. package/dist/preview/chunk.VMEX2KZ4.js +8 -0
  54. package/dist/preview/{chunk.LEVR7WLB.js → chunk.XDHBV5K5.js} +1 -1
  55. package/dist/preview/{chunk.AKWBAWQF.js → chunk.YO7UFBJP.js} +1 -1
  56. package/dist/preview/{chunk.24X6LFD3.js → chunk.YV2RTNPU.js} +1 -1
  57. package/dist/preview/chunk.ZD5HGRPR.js +1 -0
  58. package/dist/preview/chunk.ZKM4P7US.js +1 -0
  59. package/dist/preview/{chunk.3RT463XY.js → chunk.ZMMMKTAG.js} +1 -1
  60. package/dist/preview/{chunk.CL7GGNEK.js → chunk.ZNIJONZN.js} +1 -1
  61. package/dist/preview/page.js +2 -2
  62. package/package.json +6 -6
  63. package/dist/preview/chunk.4YY54TMR.js +0 -1
  64. package/dist/preview/chunk.6GJF3F7L.js +0 -2
  65. package/dist/preview/chunk.6MZBFEXW.js +0 -1
  66. package/dist/preview/chunk.7OOKA2DK.js +0 -1
  67. package/dist/preview/chunk.7ZJPJARU.js +0 -1
  68. package/dist/preview/chunk.IQLDOIWD.js +0 -1
  69. package/dist/preview/chunk.JIWB6VGT.js +0 -2
  70. package/dist/preview/chunk.LCFCU3I3.js +0 -1
  71. package/dist/preview/chunk.LUUT2ZWF.js +0 -20
  72. package/dist/preview/chunk.P7YN4Z3K.js +0 -8
  73. package/dist/preview/chunk.PQ2IIC27.js +0 -1
  74. package/dist/preview/chunk.REODVRPZ.js +0 -1
  75. package/dist/preview/chunk.RH6VRP76.js +0 -1
  76. package/dist/preview/chunk.TAW67PZU.js +0 -1
  77. package/dist/preview/chunk.TUYKH4FG.js +0 -1
  78. package/dist/preview/chunk.WWWZZAHE.js +0 -1
  79. package/dist/preview/chunk.YIZ3DJO3.js +0 -1
  80. package/dist/preview/chunk.ZLPA5BAW.js +0 -1
@@ -1,8 +0,0 @@
1
- var Va="JanFebMarAprMayJunJulAugSepOctNovDec",xt=/^\d{4}-\d{2}-\d{2}$/;function jn(n){let e=xt.test(n)?Va.slice(+n.slice(5,7)*3-3,+n.slice(5,7)*3):"";return e?`${+n.slice(8)} ${e} ${n.slice(0,4)}`:n}var qa=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function vt(n){return n.includes("-")?n.replace(qa,e=>jn(e)):n}function cn(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 St(n,e="|"){return n.map(t=>Rt(t)).join(e)}function Qr(n,e){return typeof e=="bigint"?e.toString():e}var kt=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 eo(n){return new kt(n)}function no(n){return n==null}function _t(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function to(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 X(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function ro(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function $t(n){return ro(n._zod.def)??n._zod.def.shape}function oo(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return X(this,e,r),r},enumerable:!0,configurable:!0})}function io(n,e,t){e in n?X(n,e,t):n[e]=t}function Ha(n,e,t,r){let o=$t(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?oo(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):io(n,i,r?r(s.value,i):s.value))}}function Ja(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?oo(n,t,()=>e[t]):io(n,t,r.value))}}function so(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Ot="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function Tn(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function At(n){if(Tn(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(Tn(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var ao=new Set(["string","number","symbol"]);function un(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ge(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 Rt(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function co(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Dn={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]},Pt={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function uo(n,e){if(!At(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=$t(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 Ge(n,so(n._zod.def,{shape:Ya(n,e)}))}function Ya(n,e){let t={};return Ha(t,n,Reflect.ownKeys($t(n))),Ja(t,e),t}function ue(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 lo(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 xe(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function dn(n){return typeof n=="string"?n:n?.message}function zt(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function le(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:dn(n.inst?._zod.def?.error?.(n))??dn(i?.(n))??dn(e?.error?.(n))??dn(t.customError?.(n))??dn(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 Xa=/[\uD800-\uDBFF]/;function Et(n){let e=n.length;if(!Xa.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 Nt(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function fo(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 po(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):Qa(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 Mt(n,e,t){return ze(n,e,t,!1)}function Qa(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 ed(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var wt,be=!1,nd={configurable:!0,get(){be=!0}};function te(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&wt!==n._zod){wt=void 0;return}wt=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,nd);let o=be;be=!1;try{let i=t(this);return be?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),be=be||o,i}catch(i){throw delete this[e],be=be||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function ho(n,e,t,r){let o=ed(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 go;var It={value:void 0,enumerable:!1},mo="captureStackTrace"in Error?Error:null;function td(n){let e=mo;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return mo=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function O(n,e,t,r){let o={};function i(u){this.def=u,this.constr=f,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(u,p){if(u._zod){if(u._zod.traits.has(n))return}else{It.value=new i(p);try{Object.defineProperty(u,"_zod",It)}finally{It.value=void 0}}if(u._zod.traits.add(n),e(u,p),a){let y=Object.getPrototypeOf(u),m=u._zod.constr.prototype,g=y;for(;g&&g!==m;)g=Object.getPrototypeOf(g);let x=g??y;a.has(x)||(a.add(x),po(x,s))}let h=f.prototype;for(let y in h)Object.prototype.hasOwnProperty.call(h,y)&&(y in u||(u[y]=h[y].bind(u)))}let c=r?.Parent??Object;class l extends c{}Object.defineProperty(l,"name",{value:n});function f(u){let p=r?.Parent?td(l):this;d(p,u);let h=p._zod.deferred;if(h){for(let m of h)m();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:u=>r?.Parent&&u instanceof r.Parent?!0:u?._zod?.traits?.has(n)}),Object.defineProperty(f,"name",{value:n}),f}var pe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(go=globalThis).__zod_globalConfig??(go.__zod_globalConfig={});var Be=globalThis.__zod_globalConfig;function H(n){return n&&Object.assign(Be,n),Be}function rd(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,Qr,2)),n.message}function od(n){this._zod.message=n}var id={get:rd,set:od,enumerable:!0,configurable:!0},Tt={value:void 0,enumerable:!1},yo=new WeakSet([Object.prototype,Error.prototype]),bo=(n,e)=>{n.name="$ZodError",Tt.value=e,Object.defineProperty(n,"issues",Tt),Tt.value=void 0,Object.defineProperty(n,"message",id);let t=Object.getPrototypeOf(n);yo.has(t)||(yo.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})}}))},bf=O("$ZodError",bo),fn=O("$ZodError",bo,void 0,{Parent:Error});var ad=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 pe;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(c=>le(c,s,H())));throw Ot(d,i?.callee??e),d}return a.value};return e},Dt=ad(fn),dd=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=>le(c,s,H())));throw Ot(d,i?.callee??e),d}return a.value};return e},Ft=dd(fn),cd=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 pe;return i.issues.length?xo(n,i.issues,o):{success:!0,data:i.value}},Zt=cd(fn);function xo(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>le(o,t,H()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var ud=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?xo(n,i.issues,o):{success:!0,data:i.value}},Ct=ud(fn);var vo=/^(?:[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 wo=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,ko=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var So=/^https?$/;var _o=/^[\s\S]{0,}$/;var Lt=/^-?\d+$/,pn=/^-?\d+(?:\.\d+)?$/,$o=/^(?:true|false)$/i,Oo=/^null$/i;var J=O("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var Ao=n=>{let e=n.value;return!no(e)&&e.length!==void 0},Zn={number:"number",bigint:"bigint",object:"date"},Ro=O("$ZodCheckLessThan",(n,e)=>{J.init(n,e);let t=Zn[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:Zn[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})}}),Po=O("$ZodCheckGreaterThan",(n,e)=>{J.init(n,e);let t=Zn[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:Zn[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})}}),zo=O("$ZodCheckMultipleOf",(n,e)=>{J.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):to(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})}}),Eo=O("$ZodCheckNumberFormat",(n,e)=>{J.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Dn[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 No=O("$ZodCheckMaxLength",(n,e)=>{var t;J.init(n,e),(t=n._zod.def).when??(t.when=Ao),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?Et(o):i)<=e.maximum)return;let a=Nt(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),Mo=O("$ZodCheckMinLength",(n,e)=>{var t;J.init(n,e),(t=n._zod.def).when??(t.when=Ao),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?Et(o):i)>=e.minimum)return;let a=Nt(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var Gt=O("$ZodCheckStringFormat",(n,e)=>{var t,r;J.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=()=>{})}),Io=O("$ZodCheckRegex",(n,e)=>{Gt.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 To={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=To;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 l=ue(a),f;for(let u of d){if(u._zod.def.when){if(lo(a)||!u._zod.def.when(a))continue}else if(l)continue;let p=a.issues.length,h=u._zod.check(a);if(h instanceof Promise&&c?.async===!1)throw new pe;if(f||h instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await h,a.issues.length!==p&&(zt(a.issues,p,n),l||(l=ue(a,p)))});else{if(a.issues.length===p)continue;zt(a.issues,p,n),l||(l=ue(a,p))}}return f?f.then(()=>a):a},s=(a,d,c)=>{if(ue(a))return a.aborted=!0,a;let l=i(d,o,c);if(l instanceof Promise){if(c.async===!1)throw new pe;return l.then(f=>n._zod.parse(f,c))}return n._zod.parse(l,c)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let l=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return l instanceof Promise?l.then(f=>s(f,a,d)):s(l,a,d)}let c=n._zod.parse(a,d);if(c instanceof Promise){if(d.async===!1)throw new pe;return c.then(l=>i(l,o,d))}return i(c,o,d)}}},{get"~standard"(){return Mt(this,"~standard",fd(this))},set"~standard"(n){ze(this,"~standard",n)}}),Go=(n,e)=>n.issues.length?{issues:n.issues.map(t=>le(t,e,H()))}:{value:n.value};async function ld(n,e){let t={async:!0};return Go(await n._zod.run({value:e,issues:[]},t),t)}function fd(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return Go(r,t)}catch{}return ld(n,e)},vendor:"zod",version:1}}var Bt=O("$ZodString",(n,e)=>{L.init(n,e),n._zod.pattern=e.pattern??_o,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}}),Gn=O("$ZodStringFormat",(n,e)=>{Gt.init(n,e),Bt.init(n,e)});var Bo=O("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=vo),Gn.init(n,e)}),Uo=1,Cn=2;function pd(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function hd(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?pd(n)||Cn:gd(n,e)}function gd(n,e){if(!e.normalize&&e.protocol?.source===So.source&&!/^https?:\/\//i.test(n))return Uo;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??Cn}return new URL(n)}catch{return Cn}}var md=/[\t\n\r]/g;function Do(n){return n.replace(md,"")}function yd(n,e){return e.lastIndex=0,e.test(n.hostname)}function bd(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var Ko=O("$ZodURL",(n,e)=>{Gn.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=hd(r,e);if(o===Uo){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===Cn){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=Do(r);return}e.hostname&&!yd(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&&!bd(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:Do(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var Wo=/^[0-9a-zA-Z+/]*={0,2}$/;var Vo=/^[A-Za-z0-9_-]*$/;var Ut=O("$ZodNumber",(n,e)=>{L.init(n,e),n._zod.pattern=pn,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}}),qo=O("$ZodNumberFormat",(n,e)=>{Eo.init(n,e),Ut.init(n,e)}),Ho=O("$ZodBoolean",(n,e)=>{L.init(n,e),n._zod.pattern=$o,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 Jo=O("$ZodNull",(n,e)=>{L.init(n,e),n._zod.pattern=Oo,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 Yo=O("$ZodUnknown",(n,e)=>{L.init(n,e),n._zod.parse=t=>t}),Xo=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 Fo(n,e,t){n.issues.length&&e.issues.push(...xe(t,n.issues)),e.value[t]=n.value}var Qo=O("$ZodArray",(n,e)=>{L.init(n,e);let t=Be.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],l=e.element._zod.run({value:c,issues:[]},o);if(l instanceof Promise)s.push(l.then(f=>Fo(f,r,d)));else if(Fo(l,r,d),a&&l.issues.length!==0&&ue(l))break}return s.length?Promise.all(s).then(()=>r):r}});function Ln(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(...xe(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 xd=[];function vd(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:xd,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=co(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function wd(n,e,t,r,o,i,s){let a=[],d=o.keySet,c=o.catchall._zod,l=c.def.type,f=c.optin,u=c.optout,p=0;for(let h in e){if(s&&t.issues.length!==p){if(ue(t,p))break;p=t.issues.length}if(d.has(h))continue;if(h==="__proto__"){l==="never"&&a.push(h);continue}if(l==="never"){a.push(h);continue}let y=c.run({value:e[h],issues:[]},r);y instanceof Promise?n.push(y.then(m=>Ln(m,t,h,e,f,u))):Ln(y,t,h,e,f,u)}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 ei=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 l={...r};return Object.defineProperty(e,"shape",{value:l}),c.raw=l,l};c.raw=r,Object.defineProperty(e,"shape",{get:c})}let o=eo(()=>vd(e));te(n,"propValues",c=>{let l=c.def.shape,f={};for(let u in l){let p=l[u]._zod;if(p.values){Object.prototype.hasOwnProperty.call(f,u)||X(f,u,new Set);for(let h of p.values)f[u].add(h);p.optin!==void 0&&f[u].add(void 0)}}return f});let i=Tn,s=e.catchall,a,d=Be.memoizer;d?.attach(n),n._zod.parse=(c,l)=>{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,{},l):{};let u=[],p=a.shape,h=l?.abortEarly,y=c.issues.length;for(let m of a.allKeys){if(h&&c.issues.length!==y){if(ue(c,y))break;y=c.issues.length}if(m==="__proto__")continue;let g=p[m],x=g._zod.optin,S=g._zod.optout,v=g._zod.run({value:f[m],issues:[]},l);v instanceof Promise?u.push(v.then(b=>Ln(b,c,m,f,x,S))):Ln(v,c,m,f,x,S)}return s?wd(u,f,c,l,o.value,n,h===!0):u.length?Promise.all(u).then(()=>c):c}});function Zo(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=>!ue(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=>le(s,r,H())))}),e)}var ni=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=>_t(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=>Zo(a,r,n,o)):Zo(s,r,n,o)}});var ti=O("$ZodRecord",(n,e)=>{L.init(n,e);let t=Be.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!At(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 l of a)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){if(d.add(typeof l=="number"?l.toString():l),l==="__proto__")continue;let f=e.keyType._zod.run({value:l,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=>le(h,o,H())),input:l,path:[l],inst:n});continue}let u=f.value;if(u==="__proto__")continue;let p=e.valueType._zod.run({value:i[l],issues:[]},o);p instanceof Promise?s.push(p.then(h=>{h.issues.length&&r.issues.push(...xe(l,h.issues)),r.value[u]=h.value})):(p.issues.length&&r.issues.push(...xe(l,p.issues)),r.value[u]=p.value)}let c;for(let l in i)if(!d.has(l))if(e.mode==="loose"){if(l==="__proto__")continue;r.value[l]=i[l]}else c=c??[],c.push(l);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 l=e.keyType._zod.run({value:c,issues:[]},o);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof c=="string"&&pn.test(c)&&l.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&&(l=h)}if(l.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:l.issues.map(h=>le(h,o,H())),input:c,path:[c],inst:n});continue}let u=l.value;if(u==="__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(...xe(c,h.issues)),r.value[u]=h.value})):(p.issues.length&&r.issues.push(...xe(c,p.issues)),r.value[u]=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 ri=O("$ZodEnum",(n,e)=>{L.init(n,e);let t=cn(e.entries),r=new Set(t);n._zod.values=r,te(n,"pattern",o=>{let i=cn(o.def.entries).filter(s=>ao.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>un(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}}),oi=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"?un(i):i?un(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 Co(n,e){return n.value=e.issues.length?void 0:e.value,n}var ii=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(`^(${_t(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=>Co(t,i)):Co(t,o)}return e.innerType._zod.run(t,r)}});var si=O("$ZodCustom",(n,e)=>{J.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=>Lo(i,t,r,n));Lo(o,t,r,n)}});function Lo(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 kd=()=>{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=fo(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 ${Rt(i.values[0])}`:`Invalid option: expected one of ${St(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":""}: ${St(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 ai(){return{localeError:kd()}}var di;var Kt=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 ci(){return new Kt}(di=globalThis).__zod_globalRegistry??(di.__zod_globalRegistry=ci());var ve=globalThis.__zod_globalRegistry;function ui(n){return n.checks&&(n.checks=[...n.checks]),n}function li(n,e){return new n(ui({type:"string",...M(e)}))}function fi(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...M(e)})}function pi(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...M(e)})}function hi(n,e){return new n(ui({type:"number",checks:[],...M(e)}))}function gi(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...M(e)})}function mi(n,e){return new n({type:"boolean",...M(e)})}function yi(n,e){return new n({type:"null",...M(e)})}function bi(n){return new n({type:"unknown"})}function xi(n,e){return new n({type:"never",...M(e)})}function vi(n,e){return new Ro({check:"less_than",...M(e),value:n,inclusive:!0})}function wi(n,e){return new Po({check:"greater_than",...M(e),value:n,inclusive:!0})}function Od(n,e){return new zo({check:"multiple_of",...M(e),value:n})}function Ad(n,e){return new No({check:"max_length",...M(e),maximum:n})}function hn(n,e){return new Mo({check:"min_length",...M(e),minimum:n})}function Rd(n,e){return new Io({check:"string_format",format:"regex",...M(e),pattern:n})}function ki(n,e,t){return new n({type:"custom",check:"custom",fn:e,...M(t)})}function Si(n,e){let t=Pd(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 Pd(n,e){let t=new J({check:"custom",...M(e)});return t._zod.check=n,t}function _i(n){let e=new J({check:"describe"});return e._zod.onattach=[t=>{let r=ve.get(t)??{};ve.add(t,{...r,description:n})}],e._zod.check=()=>{},e}function gn(n,...e){for(let t of e)for(let r of Reflect.ownKeys(t))Object.prototype.propertyIsEnumerable.call(t,r)&&X(n,r,t[r]);return n}function Bn(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??ve,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 I(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 l={...t,schemaPath:[...t.schemaPath,n],path:t.path};if(n._zod.processJSONSchema)n._zod.processJSONSchema(e,s.schema,l);else{let u=s.schema,p=e.processors[o.type];if(!p)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);p(n,e,u,l)}let f=n._zod.parent;f&&(s.ref||(s.ref=f),I(f,e,l),e.seen.get(f).isParent=!0)}let d=e.metadataRegistry.get(n);return d&&gn(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 $i(n){return n.replace(/~/g,"~0").replace(/\//g,"~1")}function Un(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,u=n.external.uri??(h=>h);if(f)return{ref:u(f)};let p=s[1].defId??s[1].schema.id??`schema${n.counter++}`;return s[1].defId=p,{defId:p,ref:`${u("__shared")}#/${a}/${$i(p)}`}}let d="#",c=`${d}/${a}/`;if(s[1]===t&&!s[1].schema.id)return{ref:d};let l=s[1].schema.id??`__schema${n.counter++}`;return{defId:l,ref:c+$i(l)}},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 l=a.schema;for(let f in l)delete l[f];l.$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>
2
-
3
- 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 Pi(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;Pi(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 zi=new Set(["type","properties","required","additionalProperties"]),Oi=["oneOf","anyOf"];function Ai(n){let e=n.additionalProperties;return e===void 0||e===!1||typeof e!="object"||e===null?null:Object.keys(e).length?e:null}function Wt(n){let e=[];for(let i of n){if(typeof i!="object"||i.type!=="object")return null;for(let s in i)if(!zi.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 l=c.properties?.[s]??Ai(c);l!=null&&(a.some(f=>JSON.stringify(f)===JSON.stringify(l))||a.push(l))}let d=a.length===1?a[0]:Wt(a)??{allOf:a};X(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=Ai(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 zd(n){let e=n.allOf;if(!Array.isArray(e)||e.length<2)return;for(let o of zi)if(o in n)return;let t=e.filter(o=>Oi.some(i=>Array.isArray(o[i]))),r=null;if(!t.length)r=Wt(e);else{let o=t[0],i=Oi.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=>Wt([...s,d]));if(a.some(d=>!d))return;r={[i]:a}}r&&(delete n.allOf,gn(n,r))}function Kn(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,l={...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)):gn(c,h),gn(c,l),a._zod.parent===f)for(let m in c)m==="$ref"||m==="allOf"||m in l||delete c[m];if(h.$ref&&p.def)for(let m in c)m==="$ref"||m==="allOf"||m in p.def&&JSON.stringify(c[m])===JSON.stringify(p.def[m])&&delete c[m]}let u=a._zod.parent;if(u&&u!==f){r(u);let p=n.seen.get(u);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())Pi(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 l=c?.allOf;if(!Array.isArray(l))continue;let f=a.get(l);f?f.push(c):a.set(l,[c])}for(let d of n.intersections)for(let c of a.get(d)??[])zd(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)}gn(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,X(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:Ri(e,"input",n.processors),output:Ri(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 Ri=(n,e,t={})=>r=>{let{libraryOptions:o,target:i}=r??{},s=Bn({...o??{},target:i,io:e,processors:t});return I(n,s),Un(s,n),Kn(s,n)};var Ue=(n,e,t)=>{(n[e]===void 0||t>n[e])&&(n[e]=t)},Ke=(n,e,t)=>{(n[e]===void 0||t<n[e])&&(n[e]=t)},Ei=(n,e)=>{Ue(n,"minimum",e),Ke(n,"maximum",e)},Ti=(n,e)=>{n.multipleOf??(n.multipleOf=[]),n.multipleOf.includes(e)||n.multipleOf.push(e)},Di=(n,e)=>{n.patterns??(n.patterns=new Set),n.patterns.add(e)},Fi=(n,e)=>{n.mime=n.mime?n.mime.filter(t=>e.includes(t)):[...e]},Zi=(n,e)=>{n.format=e,e.includes("int")&&(n.isInt=!0)},Ni=(n,e)=>Ue(n,"minimum",e.minimum),Mi=(n,e)=>Ke(n,"maximum",e.maximum),Ii=n=>(e,t)=>{Zi(e,t.format);let[r,o]=n[t.format];Ue(e,"minimum",r),Ke(e,"maximum",o)},Ed={greater_than:(n,e)=>Ue(n,e.inclusive?"minimum":"exclusiveMinimum",e.value),less_than:(n,e)=>Ke(n,e.inclusive?"maximum":"exclusiveMaximum",e.value),multiple_of:(n,e)=>Ti(n,e.value),number_format:Ii(Dn),bigint_format:Ii(Pt),min_length:Ni,max_length:Mi,length_equals:(n,e)=>Ei(n,e.length),min_size:Ni,max_size:Mi,size_equals:(n,e)=>Ei(n,e.size),string_format:(n,e)=>{Zi(n,e.format),e.pattern&&Di(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)=>Fi(n,e.mime)};function We(n){let e={},t=n._zod.def,r=n._zod.traits.has("$ZodCheck")?[n,...t.checks??[]]:t.checks??[];for(let i of r)Ed[i._zod.def.check]?.(e,i._zod.def);let o=n._zod.bag;o.minimum!==void 0&&Ue(e,"minimum",o.minimum),o.exclusiveMinimum!==void 0&&Ue(e,"exclusiveMinimum",o.exclusiveMinimum),o.maximum!==void 0&&Ke(e,"maximum",o.maximum),o.exclusiveMaximum!==void 0&&Ke(e,"exclusiveMaximum",o.exclusiveMaximum),o.multipleOf!==void 0&&Ti(e,o.multipleOf),o.format!==void 0&&(e.format??(e.format=o.format),o.format.includes("int")&&(e.isInt=!0)),o.mime&&Fi(e,o.mime);for(let i of o.patterns??[])Di(e,i);return e}var Nd={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Md=new Map([[Wo,wo],[Vo,ko]]),Ci=n=>Md.get(n)??n,Id=(n,e,t,r)=>{let o=t;o.type="string";let{minimum:i,maximum:s,format:a,patterns:d,contentEncoding:c,laxFormat:l}=We(n);if(typeof i=="number"&&(o.minLength=i),typeof s=="number"&&(o.maxLength=s),a&&(o.format=Nd[a]??a,o.format===""&&delete o.format,(a==="time"||l)&&delete o.format),c&&(o.contentEncoding=c),d&&d.size>0){let f=[...d].map(Ci);f.length===1?o.pattern=f[0].source:f.length>1&&(o.allOf=[...f.map(u=>({...e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"?{type:"string"}:{},pattern:u.source}))])}},jd=(n,e,t,r)=>{let o=t,{minimum:i,maximum:s,multipleOf:a,exclusiveMaximum:d,exclusiveMinimum:c,isInt:l}=We(n);o.type=l?"integer":"number";let f=typeof c=="number"&&c>=(i??Number.NEGATIVE_INFINITY),u=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),u?p?(o.maximum=d,o.exclusiveMaximum=!0):o.exclusiveMaximum=d:typeof s=="number"&&(o.maximum=s),a){let h=new Set;for(let g of a)Number.isFinite(g)&&g!==0?h.add(Math.abs(g)):C(n,e,o,r,`A multipleOf divisor of ${g} cannot be represented in JSON Schema`);let[y,...m]=h;y!==void 0&&(o.multipleOf=y),m.length&&(o.allOf=[...o.allOf??[],...m.map(g=>({multipleOf:g}))])}},Td=(n,e,t,r)=>{t.type="boolean"},Dd=(n,e,t,r)=>{C(n,e,t,r,"BigInt cannot be represented in JSON Schema")},Fd=(n,e,t,r)=>{C(n,e,t,r,"Symbols cannot be represented in JSON Schema")},Zd=(n,e,t,r)=>{e.target==="openapi-3.0"?(t.type="string",t.nullable=!0,t.enum=[null]):t.type="null"},Cd=(n,e,t,r)=>{C(n,e,t,r,"Undefined cannot be represented in JSON Schema")},Ld=(n,e,t,r)=>{C(n,e,t,r,"Void cannot be represented in JSON Schema")},Gd=(n,e,t,r)=>{t.not={}},Bd=(n,e,t,r)=>{},Ud=(n,e,t,r)=>{},Kd=(n,e,t,r)=>{C(n,e,t,r,"Date cannot be represented in JSON Schema")},Wd=(n,e,t,r)=>{let o=n._zod.def,i=cn(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},Vd=(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},qd=(n,e,t,r)=>{C(n,e,t,r,"NaN cannot be represented in JSON Schema")},Hd=(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},Jd=(n,e,t,r)=>{let o=t;o.type="string",o.format="binary",o.contentEncoding="binary";let{minimum:i,maximum:s,mime:a}=We(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})))},Yd=(n,e,t,r)=>{t.type="boolean"},Xd=(n,e,t,r)=>{C(n,e,t,r,"Custom types cannot be represented in JSON Schema")},Qd=(n,e,t,r)=>{C(n,e,t,r,"Function types cannot be represented in JSON Schema")},ec=(n,e,t,r)=>{C(n,e,t,r,"Transforms cannot be represented in JSON Schema")},nc=(n,e,t,r)=>{C(n,e,t,r,"Map cannot be represented in JSON Schema")},tc=(n,e,t,r)=>{C(n,e,t,r,"Set cannot be represented in JSON Schema")},rc=(n,e,t,r)=>{let o=t,i=n._zod.def,{minimum:s,maximum:a}=We(n);typeof s=="number"&&(o.minItems=s),typeof a=="number"&&(o.maxItems=a),o.type="array",o.items=I(i.element,e,{...r,path:[...r.path,"items"]})};function mn(n){let e=n._zod.def;return e.type==="pipe"&&e.in._zod.traits.has("$ZodTransform")?mn(e.out):e.type==="catch"?mn(e.innerType):n._zod.optin}var oc=(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)X(o.properties,c,I(s[c],e,{...r,path:[...r.path,"properties",c]}));let d=[];for(let c of Object.keys(s)){let l=i.shape[c];(e.io==="input"?mn(l)===void 0:l._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=I(i.catchall,e,{...r,path:[...r.path,"additionalProperties"]})):e.io==="output"&&(o.additionalProperties=!1)},ic=(n,e,t,r)=>{let o=n._zod.def,i=o.inclusive===!1,s=o.options.map((a,d)=>I(a,e,{...r,path:[...r.path,i?"oneOf":"anyOf",d]}));i?t.oneOf=s:t.anyOf=s},sc=(n,e,t,r)=>{let o=n._zod.def,i=I(o.left,e,{...r,path:[...r.path,"allOf",0]}),s=I(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)},ac=(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,m)=>I(y,e,{...r,path:[...r.path,s,m]})),c=i.rest?I(i.rest,e,{...r,path:[...r.path,a,...e.target==="openapi-3.0"?[i.items.length]:[]]}):null,l=i.items.length;for(;l>0;){let y=i.items[l-1];if(!(e.io==="input"?mn(y)!==void 0:y._zod.optout==="optional"))break;l--}let f=i.items.length,u=!i.rest;e.target==="draft-2020-12"?(o.prefixItems=d,u?o.items=!1:c&&(o.items=c),l>0&&(o.minItems=l),u&&(o.maxItems=f)):e.target==="openapi-3.0"?(o.items={anyOf:d},c&&o.items.anyOf.push(c),l>0&&(o.minItems=l),u&&(o.maxItems=f)):(o.items=d,u?o.additionalItems=!1:c&&(o.additionalItems=c),l>0&&(o.minItems=l),u&&(o.maxItems=f));let{minimum:p,maximum:h}=We(n);typeof p=="number"&&(o.minItems=p),typeof h=="number"&&(o.maxItems=h)};function Vt(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=Vt(n,h,t);return y===h?e:y}for(let h of["anyOf","oneOf"]){let y=e[h];if(!Array.isArray(y))continue;let m=y.map(g=>Vt(n,g,t));m.some((g,x)=>g!==y[x])&&(e={...e,[h]:m})}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:l,format:f,id:u,...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")?pn:Lt).source)),p}var qt=new WeakMap;function dc(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 qt.get(n)??[]){let o=n.seen.get(r),i=(o?.def??o?.schema)?.propertyNames;if(!i||i===!0||t.has(i))continue;let s=Vt(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 cc=(n,e,t,r)=>{let o=t,i=n._zod.def;o.type="object";let s=i.keyType,a=We(s).patterns;if(i.mode==="loose"&&a&&a.size>0){let l=I(i.valueType,e,{...r,path:[...r.path,"patternProperties","*"]});o.patternProperties={};for(let f of a)X(o.patternProperties,Ci(f).source,l)}else{if(e.target==="draft-07"||e.target==="draft-2020-12"){o.propertyNames=I(i.keyType,e,{...r,path:[...r.path,"propertyNames"]});let l=qt.get(e);l||(l=[],qt.set(e,l),e.deferred.push(()=>dc(e))),l.push(n)}o.additionalProperties=I(i.valueType,e,{...r,path:[...r.path,"additionalProperties"]})}let d=s._zod.values,c=e.io==="input"&&mn(i.valueType)!==void 0;if(d&&!i.partial&&!c){let l=[...d].filter(f=>typeof f=="string"||typeof f=="number");l.length>0&&(o.required=l.map(String))}},uc=(n,e,t,r)=>{let o=n._zod.def,i=I(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"}]},lc=(n,e,t,r)=>{let o=n._zod.def;I(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType},Ht=Symbol();function Li(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"),Ht):JSON.parse(s)}var fc=(n,e,t,r)=>{let o=n._zod.def;I(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType;let s=Li(o.defaultValue,n,e,t,r);s!==Ht&&(t.default=s)},pc=(n,e,t,r)=>{let o=n._zod.def;I(o.innerType,e,r);let i=e.seen.get(n);if(i.ref=o.innerType,e.io!=="input")return;let s=Li(o.defaultValue,n,e,t,r);s!==Ht&&(t._prefault=s)},hc=(n,e,t,r)=>{let o=n._zod.def;I(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},gc=(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;I(s,e,r);let a=e.seen.get(n);a.ref=s},mc=(n,e,t,r)=>{let o=n._zod.def;I(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType,t.readOnly=!0},yc=(n,e,t,r)=>{let o=n._zod.def;I(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType},bc=(n,e,t,r)=>{let o=n._zod.def;I(o.innerType,e,r);let i=e.seen.get(n);i.ref=o.innerType},xc=(n,e,t,r)=>{let o=n._zod.innerType;I(o,e,r);let i=e.seen.get(n);i.ref=o},ji={string:Id,number:jd,boolean:Td,bigint:Dd,symbol:Fd,null:Zd,undefined:Cd,void:Ld,never:Gd,any:Bd,unknown:Ud,date:Kd,enum:Wd,literal:Vd,nan:qd,template_literal:Hd,file:Jd,success:Yd,custom:Xd,function:Qd,transform:ec,map:nc,set:tc,array:rc,object:oc,union:ic,intersection:sc,tuple:ac,record:cc,nullable:uc,nonoptional:lc,default:fc,prefault:pc,catch:hc,pipe:gc,readonly:mc,promise:yc,optional:bc,lazy:xc};function vc(n,e){if("_idmap"in n){let r=n,o=Bn({...e,processors:ji}),i={};for(let d of r._idmap.entries()){let[c,l]=d;I(l,o)}let s={},a={registry:r,uri:e?.uri,defs:i};o.external=a;for(let d of r._idmap.entries()){let[c,l]=d;Un(o,l),X(s,c,Kn(o,l))}if(Object.keys(i).length>0){let d=o.target==="draft-2020-12"?"$defs":"definitions";s.__shared={[d]:i}}return{schemas:s}}let t=Bn({...e,processors:ji});return I(n,t),Un(t,n),Kn(t,n)}var K=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 Dt(this,n,e,{callee:this.parse})},parseAsync(n,e){return Ft(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return Zt(this,n,e)},safeParseAsync(n,e){return Ct(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 Ge(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)}}),Bi=O("ZodMiniString",(n,e)=>{Bt.init(n,e),K.init(n,e)});function ie(n){return li(Bi,n)}var Ui=O("ZodMiniStringFormat",(n,e)=>{Gn.init(n,e),Bi.init(n,e)}),Sc=O("ZodMiniEmail",(n,e)=>{Bo.init(n,e),Ui.init(n,e)});function Ag(n){return fi(Sc,n)}var _c=O("ZodMiniURL",(n,e)=>{Ko.init(n,e),Ui.init(n,e)});function Rg(n){return pi(_c,n)}var Ki=O("ZodMiniNumber",(n,e)=>{Ut.init(n,e),K.init(n,e)});function Wn(n){return hi(Ki,n)}var $c=O("ZodMiniNumberFormat",(n,e)=>{qo.init(n,e),Ki.init(n,e)});function Pg(n){return gi($c,n)}var Oc=O("ZodMiniBoolean",(n,e)=>{Ho.init(n,e),K.init(n,e)});function zg(n){return mi(Oc,n)}var Ac=O("ZodMiniNull",(n,e)=>{Jo.init(n,e),K.init(n,e)});function Eg(n){return yi(Ac,n)}var Rc=O("ZodMiniUnknown",(n,e)=>{Yo.init(n,e),K.init(n,e)});function Pc(){return bi(Rc)}var zc=O("ZodMiniNever",(n,e)=>{Xo.init(n,e),K.init(n,e)});function Ec(n){return xi(zc,n)}var Nc=O("ZodMiniArray",(n,e)=>{Qo.init(n,e),K.init(n,e)});function Ng(n,e){return new Nc({type:"array",element:n,...M(e)})}var Jt=O("ZodMiniObject",(n,e)=>{ei.init(n,e),K.init(n,e),ho(n,"shape",t=>t._zod.def.shape,!1)});function Vn(n,e){let t={type:"object",shape:n??{},...M(e)};return new Jt(t)}function Wi(n,e){return new Jt({type:"object",shape:n,catchall:Ec(),...M(e)})}function Mg(n,e){return new Jt({type:"object",shape:n,catchall:Pc(),...M(e)})}function Vi(n,e){return uo(n,e)}var Mc=O("ZodMiniUnion",(n,e)=>{ni.init(n,e),K.init(n,e)});function Ig(n,e){return new Mc({type:"union",options:n,...M(e)})}var Gi=O("ZodMiniRecord",(n,e)=>{ti.init(n,e),K.init(n,e)});function jg(n,e,t){return!e||!e._zod?new Gi({type:"record",keyType:ie(),valueType:n,...M(e)}):new Gi({type:"record",keyType:n,valueType:e,...M(t)})}var Ic=O("ZodMiniEnum",(n,e)=>{ri.init(n,e),K.init(n,e),n.options=[...n._zod.values]});function Tg(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Ic({type:"enum",entries:t,...M(e)})}var jc=O("ZodMiniLiteral",(n,e)=>{oi.init(n,e),K.init(n,e)});function qi(n,e){return new jc({type:"literal",values:Array.isArray(n)?n:[n],...M(e)})}var Tc=O("ZodMiniOptional",(n,e)=>{ii.init(n,e),K.init(n,e)});function Ve(n){return new Tc({type:"optional",innerType:n})}var Dc=O("ZodMiniCustom",(n,e)=>{si.init(n,e),K.init(n,e)});function Hi(n,e={}){return ki(Dc,n,e)}function Dg(n,e){return Si(n,e)}var Fg=_i;H().localeError||H(ai());var Q=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Fc=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=ve.get(n)?.description;return typeof e=="string"?e:void 0};var Ji=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),Yt=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function Xt(n){let e=n??{};return Ji(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&Yt(e.bytes,0)&&Yt(e.width)&&Yt(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)}var Yi=n=>n.type.startsWith("image/"),Ee=n=>(Array.isArray(n)?n:[n]).filter(Xt),Xi=Symbol.for("@graview/core:file"),Zc=(n,e)=>(Object.defineProperty(Q(n),Xi,{value:e,enumerable:!0}),n);function Hn(n){let e=Q(n);return e?.[Xi]??(e?.innerType?Hn(e.innerType):void 0)}var Cc=()=>({href:ie(),name:ie(),type:ie(),bytes:Wn(),width:Ve(Wn()),height:Ve(Wn()),caption:Ve(ie())});function Cm(n){return Zc(Vn(Cc()).check(Hi(e=>Xt(e)&&(n==="file"||Yi(e)),`${n==="image"?"an image":"a file"} the host stored, at a path on this host`)),n)}var ee=n=>n.charAt(0).toUpperCase()+n.slice(1);function Lc(n,e){return{...e,kind:n,edges:e.edges??{}}}function we(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 Qt(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,se(e(s),s));continue}let d=a.map(p=>new Map(Yn(p,e(p.kind)).map(h=>[h.key,h.alone]))),c=[...new Set(d.flatMap(p=>[...p.keys()]))],l=p=>d.every(h=>!/\d/.test(h.get(p)??"")),u=[...c.filter(l),...c.filter(p=>!l(p))].find(p=>new Set(d.map(h=>h.get(p)??"")).size===a.length);a.forEach((p,h)=>{let y=u?d[h].get(u):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 Gc(n,e){return n?.describe?n.describe(e):`${e.kind} ${F(n,e)}`}var Bc=new Set(["id","kind","label"]);function er(n){return n.title??z(n.name)}function z(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return ee(e)}function Qi(n,e,t){let r=n?.display?.format?.[e];return r?r(t):typeof t=="string"?z(t):String(t)}function Uc(n,e,t){let r=n.tryDefinition(e);return`${t} ${t===1?se(r,e):Ne(n,e).toLowerCase()}`}function Ne(n,e){return n.tryDefinition(e)?.plural??`${z(e).toLowerCase()}s`}function yn(n,e){return ee(Ne(n,e))}function Kc(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)??z(t).toLowerCase()}function ke(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)??(e==="label"?"Name":z(e))}var Wc=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,Vc=/^(hour|honest|hono[ur]r?|heir)/;function es(n){let e=z(n).toLowerCase();return Vc.test(e)?"an":Wc.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function Jn(n){return`${es(n)} ${z(n).toLowerCase()}`}function se(n,e){return n?.noun??z(e).toLowerCase()}function qc(n,e){if(e.length===0)return!1;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`(^|[\\s\xB7,(/])${t}($|[\\s\xB7,)/])`).test(n)}function Yn(n,e,t={}){let r=e?.display,o=new Set([...Bc,...r?.hide??[]]),i=(t.said??[]).filter(u=>!!u),s=i.filter(u=>u.endsWith("\u2026")).map(u=>u.replace(/…$/,"").trim()).filter(u=>u.length>12),a=[],d=e?.fieldRoles,c=t.glance?r?.glance??[d?.who,d?.when].filter(u=>!!u):ns(r?.page),f=[...new Set([...c,...Jc(e),...Object.keys(n)])].filter(u=>Object.hasOwn(n,u)).map(u=>[u,n[u]]);for(let[u,p]of f){if(o.has(u)||p===void 0||p===null)continue;let h=r?.format?.[u],y=h?[]:Ee(p);if(y[0]&&t.glance||!y[0]&&typeof p=="object"&&(!Array.isArray(p)||p.some(b=>typeof b=="object"&&b!==null))&&h===void 0)continue;let g=y[0]?y.map(b=>b.caption?`${b.name} \u2014 ${b.caption}`:b.name).join(", "):Array.isArray(p)?p.join(", "):typeof p=="boolean"?p?"Yes":"No":String(p),x=h?h(p):Array.isArray(p)||typeof p=="boolean"?g:typeof p=="string"&&xt.test(p)?jn(p):typeof p=="string"&&Hc(e,u)?Qi(e,u,p):g;if(i.includes(x)||s.some(b=>x.startsWith(b))||t.glance&&(typeof p=="string"||typeof p=="number")&&i.some(b=>qc(b,x)))continue;let S=ke(e,u),v=typeof p=="number"?`${S} ${x}`:typeof p=="boolean"&&!h?`${S}: ${x.toLowerCase()}`:x;if(a.push({key:u,label:S,value:x,stored:g,alone:v,long:typeof p=="string"&&ts(e,u,x),...y[0]?{files:y}:{}}),t.limit!==void 0&&a.length>=t.limit)break}return a}function Hc(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 Jc(n){let e=n?.fields?.shape;return[...Object.keys(e??{}),...Object.keys(n?.computed??{})]}function ns(n){return[...n?.fields??[],...(n?.groups??[]).flatMap(e=>e.fields)]}var Yc=500,Xc=160;function Qc(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 ts(n,e,t){return Qc(n?.fields?.shape?.[e])?.checks?.some(o=>o._zod?.def?.check==="max_length"&&(o._zod.def.maximum??0)>Yc)?!0:typeof t=="string"&&(t.includes(`
4
- `)||t.length>Xc)}function eu(n,e){let t=n?.display?.page,r=t?.groups??[],o=new Map(e.map(c=>[c.key,c])),i=new Set(ns(t)),s=c=>c.flatMap(l=>o.has(l)?[o.get(l)]:[]),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)}var ae="\0graview:unset",qe=n=>n===void 0||n===ae;function bn(n){if(n.op!=="patch-node")return n;let e=t=>Object.fromEntries(Object.entries(t).map(([r,o])=>[r,o===void 0?ae:o]));return{...n,before:e(n.before),after:e(n.after)}}function xn(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 nr(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 re=class extends Error{constructor(t,r){super(r?`${t}
5
- \u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function nu(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 l=o.get(d);l?l.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 l=d.map(f=>r.get(f).edges[a].to);i.set(a,{kind:a,from:d,to:l.includes("*")?"*":[...new Set(l.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,Vi(a.fields,{id:ie().check(hn(1)),kind:qi(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 l=r.get(d)?.edges[a];return l?l.to==="*"||l.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 rs={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function os(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function tu(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(u=>[u.id,u])),r=new Map(e.nodes.map(u=>[u.id,u])),o=e.nodes.filter(u=>!t.has(u.id)),i=n.nodes.filter(u=>!r.has(u.id)),s=[];for(let u of n.nodes){let p=r.get(u.id);if(!p)continue;let h=tu(u,p);h.length>0&&s.push({before:u,after:p,fields:h})}let a=new Map(n.edges.map(u=>[T(u),u])),d=new Map(e.edges.map(u=>[T(u),u])),c=e.edges.filter(u=>!a.has(T(u))),l=n.edges.filter(u=>!d.has(T(u))),f=new Set;for(let u of o)f.add(u.id);for(let u of i)f.add(u.id);for(let u of s)f.add(u.after.id);for(let u of[...c,...l])f.add(u.from),f.add(u.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:c,removedEdges:l,touched:[...f].sort()}}function ru(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?z(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"}},Y=class extends D{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}},tr="n\0",rr="e\0",U=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;counts=new Map;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.restore(e);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()]}count(e){return this.counts.get(e)??0}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){for(let t of[this.nodes,this.edges,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts])t.clear();this.reordered=!1;for(let t of e.nodes)this.insertNode(t,!0);for(let t of e.edges)this.insertEdge(t,!0)}tally(e,t){this.counts.set(e,this.count(e)+t)}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(tr));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(rr));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,i=this.nodes.get(o);if(!i)throw new Y(o,`Cannot remove missing node "${o}"`);for(let s of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(s);this.tally(i.kind,-1),this.nodes.delete(o),this.lapse(tr+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new Y(e.id,`Cannot patch missing node "${e.id}"`);let i={...o};for(let[a,d]of Object.entries(e.after))qe(d)?delete i[a]:i[a]=d;let s=t?i:this.checkPatch(o,i,Object.keys(e.after));this.nodes.set(e.id,s),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{if(!this.edges.has(T(e.edge)))throw new Y(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`,ru(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.tally(e.kind,1),this.place(tr+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 Y(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(rr+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(rr+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){(e.get(t)??e.set(t,new Set).get(t)).add(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}};var Xn=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 ou(n,e){return{...e,name:n}}var Qn=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function is(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof Qn,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 He(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(...is(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 u=f.scope.kind,p=d.get(u);p?p.push(f):d.set(u,[f])}for(let f of n.allNodes()){let u=n.schema.tryDefinition(f.kind),p=u?.requiresInvariant?.(f)??null;if(t.subjectFilter&&!t.subjectFilter(f,r))continue;if(p!==null&&!i.has(p)){if(o==="throw")throw new Xn(p,f.id);continue}let h=!we(u,f,t.today);for(let y of d.get(f.kind)??[]){if(h&&y.judgesPast!==!0)continue;let m=y.scope.match;m&&!m(f)||s.push(...is(y,()=>y.evaluate({graph:n,subject:f,context:r}),f.id))}}let c=new Set,l=s.filter(f=>{let u=`${f.message}|${[...f.nodeIds].sort().join(",")}`;return c.has(u)?!1:(c.add(u),!0)}).map(f=>{let u=vt(f.message);return u===f.message?f:{...f,message:u}});return or?or(n,e,l):l}var or;function sy(n){or=n}function iu(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 su(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 sr=(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 au(n,e){return n.roles==="*"?!0:(e.roles??[]).some(t=>n.roles.includes(t))}function ss(n){let e=n.map(t=>Jn(z(t).toLowerCase()));return e.length<=1?e[0]??"":`${e.slice(0,-1).join(", ")} or ${e[e.length-1]}`}function Se(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(Se(n,e,t,r,void 0,i).ok)return{ok:!0};if(o.some(u=>Se(n,e,u,r,void 0,i).ok))return{ok:!0};let c=[t,...o],l=[...new Set(c.flatMap(u=>ir(n,u,r)))].sort(),f=l.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${ss(l)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:l,message:as(n,c,r,f,s)}}}for(let c of n.grants)if(au(c,e)&&sr(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=ir(n,t,r),d=a.length===0?"no role can":`${ss(a)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:a,message:as(n,[t],r,d,s)}}}function as(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>ds(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${Jn(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function ds(n,e,t){let r=new Set;for(let o of n.grants)sr(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 ir(n,e,t){let r=new Set;for(let o of n.grants)if(sr(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 ar(n,e,t){return n?t.filter(r=>{let o=r.subject;return(o&&o.kinds!=="*"?o.kinds:[void 0]).some(s=>Se(n,e,r.name,s,void 0,Z(e).id).ok)}):t}var Je=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};function dr(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function cr(n,e={}){let t=typeof n=="string"?n:n.address,r=dr(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function du(n,e){let t=dr(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 us=Symbol.for("@graview/core:node-ref"),cs=n=>typeof n=="object"&&n!==null?n[us]:void 0;function ur(n="*"){return cu(ie().check(hn(1)),n)}function cu(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,us,{value:t,enumerable:!0,configurable:!0})};return r(n),r(Q(n)),n}function lr(n){if(typeof n!="object"||n===null)return;let e=cs(n);if(e)return e;let t=Q(n),r=cs(t);if(r)return r;let o=t?.innerType;return o?lr(o):void 0}function _e(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=lr(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}function ls(n){let e=Q(n)?.innerType;return e===void 0?n:ls(e)}var uu={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]},lu=n=>(n?._zod?.def?.checks??[]).map(e=>e._zod?.def).filter(e=>e!==void 0);function Ye(n){let e=ls(n),t=Q(e),r=t?.type,o=lu(e);if(r==="enum")return{type:"choice",options:Object.keys(t?.entries??{})};let i=Hn(e);if(i)return i==="image"?{type:"file",image:!0}:{type:"file"};if(r==="boolean")return{type:"boolean"};if(r==="array"){let s=Ye(t?.element);return s.type==="unknown"?{type:"unknown"}:{type:"several",of:s}}if(r==="number"){let s,a,d;for(let c of o){c.check==="multiple_of"&&typeof c.value=="number"?d=c.value:c.check==="number_format"&&(c.format==="safeint"||c.format==="int32"||c.format==="uint32")&&(d??=1);let l=c.check==="number_format"&&c.format?uu[c.format]:void 0,f=l?l[0]:c.check==="greater_than"&&c.inclusive&&typeof c.value=="number"?c.value:void 0,u=l?l[1]:c.check==="less_than"&&c.inclusive&&typeof c.value=="number"?c.value:void 0;f!==void 0&&(s=s===void 0?f:Math.max(s,f)),u!==void 0&&(a=a===void 0?u:Math.min(a,u))}return{type:"number",...s===void 0?{}:{min:s},...a===void 0?{}:{max:a},...d===void 0?{}:{step:d}}}if(r==="string"){let a=[t?.pattern,...o.map(c=>c.pattern)].filter(c=>c instanceof RegExp).map(c=>c.source);return a.some(c=>c.includes("\\d{4}"))?a.some(c=>c.includes("\\d{2}:\\d{2}"))?{type:"date",time:!0}:{type:"date"}:o.some(c=>c.check==="max_length"&&typeof c.maximum=="number"&&c.maximum>500)?{type:"text",long:!0}:{type:"text"}}return{type:"unknown"}}function fu(n,e){let t=n?.shape;return!t||!(e in t)?{type:"unknown"}:Ye(t[e])}function pu(n,e){return n.display?.labels?.[e]??z(e)}function ps(n){let e=Ye(n);switch(e.type){case"text":case"date":case"number":case"boolean":case"choice":return e.type;default:return}}function hu(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?ee(i.description):z(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?ee(s.inverse):z(i),about:"edge",far:[o.kind]});return[...t.values()]}var gu=["current","past","any","flagged","clear"];function hs(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 gs(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,u]of Object.entries(o)){if(f==="id"||f==="kind"||f==="label"||r.has(f))continue;let p=ps(u);if(!p)continue;let h=pu(t,f),y=p==="choice"?mu(u):p==="boolean"?["true","false"]:void 0,m={key:f,label:h,about:"field",type:p,...y?{options:y}:{}};i.push(m),s.push(m),(p==="boolean"||p==="choice")&&a.push(m),p==="date"&&a.push({...m,buckets:["day","week","month","year","decade"]})}for(let f of hu(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?[...gu]:["flagged","clear"]};s.push(d);let c=t.fieldRoles?.order,l=c&&(c in o||c==="label")?{by:c,direction:"asc"}:void 0;return{kind:e,sorts:i,filters:s,groups:a,...l?{natural:l}:{}}}function mu(n){let e=Ye(n);return e.type==="choice"?e.options:[]}var yu=["day","week","month","year","decade"];function ms(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,...yu.includes(r)?{bucket:r}:{}})}return e}var bu=n=>n,fs=n=>n;function xu(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 ys(n,e,t){let r=n.schema.tryDefinition(e.kind);if(t.key==="is")switch(t.value){case"current":return we(r,fs(e),n.today);case"past":return!we(r,fs(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=bu(e)[t.key],a=ps(o[t.key]);if(a==="date"){let[d,c]=t.value.split(":");if(typeof s!="string"||!c)return!1;let l=s.slice(0,10);return d==="before"?l<c:d==="after"?l>c:l===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):"",l=Number(t.value.slice(d+1));if(c==="at-most"||c==="at-least")return typeof s!="number"||!Number.isFinite(l)?!1:c==="at-most"?s<=l:s>=l}return String(s)===t.value}let i=xu(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 vu=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 })`,Xe=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?vu(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 fr(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=U.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 fr(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,bs(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,bs(t,e.after));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function bs(n,e){let t={...n};for(let[r,o]of Object.entries(e))qe(o)?delete t[r]:t[r]=o;return t}var wu=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"?n.id:void 0;function pr(n,e,t,r){let o=l=>{let f=e.node(l);return f?t.served(f,e.writerOf(l))!==void 0:t.sees?.(l)??!1},i=wu(n);if(i===void 0){let l=n.edge,f=t.edgeClean(l)&&o(l.from)&&o(l.to);return e.apply(n),{primitives:f?[n]:[],faithful:!0}}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 l=e.incident(i).filter(u=>t.edgeClean(u)&&o(u.from===i?u.to:u.from)).map(u=>({op:"add-edge",edge:u})),f=n.op==="add-node"&&c===n.node&&l.length===0;return{primitives:f?[n]:[{op:"add-node",node:c},...l],faithful:f}}if(a&&!c){let l=n.op==="remove-node"&&a===s;return{primitives:l?[n]:[{op:"remove-node",node:a}],faithful:l}}if(n.op==="patch-node"){let l=(u,p)=>h=>h in u==(p!==void 0&&h in p);if(Object.keys(n.after).every(u=>l(a,s)(u)&&l(c,d)(u)))return{primitives:[n],faithful:!0};let f=u=>Object.fromEntries(Object.keys(n.after).map(p=>[p,p in u?u[p]:ae]));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 xs(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(u=>r[u.seq-o]?.id===u.id),s=new wn(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(u=>{let p=Z(u.author).id,h=u.primitives.map(y=>pr(y,s,t,()=>p));return{op:u,primitives:h.flatMap(y=>y.primitives),faithful:h.every(y=>y.faithful)}});let a=new Set(n.map(u=>u.seq)),d=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let u of a)u<d&&(d=u),u>c&&(c=u);d-=o,c-=o;let l=ku(r,d,e.present,t),f=l?new wn(e.present,e,l.unversioned):s;for(let u=r.length-1;u>=d;u--){let p=r[u].primitives;for(let h=p.length-1;h>=0;h--)f.undo(p[h])}return Su(n,r,d,c,a,f,l?.judge??t,e)}function ku(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,u)=>{s.has(f)||a.has(f)||(o(f)?i(u)?(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 u of n[f].primitives)u.op==="add-node"||u.op==="remove-node"?c(u.node.id,u.node):u.op==="patch-node"&&(c(u.id,u.before),c(u.id,u.after));for(let f of d){let u=t.getNode(f);u&&i(u)&&(d.delete(f),a.add(f))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(f,u)=>d.has(f.id)?f:s.has(f.id)?void 0:r.served(f,u)}}}function Su(n,e,t,r,o,i,s,a){let d=new Map;for(let c=t;c<=r;c++){let l=e[c];if(i.begin(l.seq),!o.has(l.seq)){for(let p of l.primitives)i.apply(p);continue}let f=(p,h)=>a.writers?.writerAt(p,h,l.seq+1),u=l.primitives.map(p=>pr(p,i,s,f));d.set(l.seq,{op:l,primitives:u.flatMap(p=>p.primitives),faithful:u.every(p=>p.faithful)})}return n.map(c=>d.get(c.seq))}function vs(n,e,t,r){let o=new wn(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>pr(i,o,t,()=>r).primitives)}var et="A change you cannot see",ks={kind:"system",id:"withheld",name:"Someone"};function Qe(n){return n.withheld===!0}function kn(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 Ss=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&j(r,e));function _s(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!Ss(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function j(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(j(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||j(n[t],e)))return!0;return!1}function $s(n,e){let t=r=>!e(r);return n.primitives.some(r=>kn(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&j(n.mutation.args,e)}function _u(n,e){if(kn(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 Ss(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!j(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!j(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=ae;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!j(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return j(n.edge,e.sees)?void 0:n}}function hr(n,e,t){let r=_s(e),o=i=>r.shows(i)&&Os(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:ks,intent:et,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=_u(i,r);return s?[s]:[]}),inverse:[],reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function $e(n,e){let t=_s(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=>!j(i,r.sees),sees:r.sees,names:i=>j(i,r.sees)};return xs(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?ws(i,r,s):void 0)??hr(i,r,s))}return n.map(o=>(!o.withheld&&!$s(o,r.shows)?ws(o,r):void 0)??hr(o,r))}function ws(n,e,t){if(t&&t.length<n.primitives.length){if(!t.length)return;n={...n,primitives:t,inverse:n.inverse.filter(u=>kn(u).every(e.shows))}}let r=u=>e.sees(u)&&Os(e,u),o=n.reads.filter(r),i=new Set(n.primitives.flatMap(kn)),s=n.writes.filter(u=>r(u)||e.sees(u)&&i.has(u)),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(u=>!e.sees(u)))return;if(!j(n,e.sees))return a;let c=new Set,l=u=>{if(typeof u=="string")c.add(u);else if(Array.isArray(u))for(let p of u)l(p);else if(u!==null&&typeof u=="object")for(let[p,h]of Object.entries(u))c.add(p),l(h)};t&&l(t);let f=u=>e.sees(u)||c.has(u);if(!j(a.inverse,f))return d&&n.mutation&&l(n.mutation.args),j({...a,primitives:[],inverse:[]},d?f:e.sees)?void 0:a}function Os(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 Sn(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(u=>t.has(u.batch)&&!r.has(u.id)),i=[...n.epochs()].reverse().find(u=>u.horizon);if(i){let u=new Set(n.all().map(h=>h.batch)),p=e.filter(h=>!u.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(Qe))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(Qe)?"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(u=>u.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 u of o)for(let p of u.writes)s.add(p);let a=Math.min(...o.map(u=>u.seq)),d=n.epochs().find(u=>u.change!==void 0&&u.seq>a);if(d){let u=o.find(p=>p.seq<d.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${u.intent}": ${u.intent===d.change?"it changed the declaration":`it was done before the declaration changed (${d.change})`}, and undo does not reach back across that change.`}}let c=[];for(let u of n.all()){if(u.seq<=a||t.has(u.batch)||r.has(u.id))continue;let p=u.reads.filter(h=>s.has(h));p.length>0&&c.push({op:u,overlap:p})}if(c.length===0)return{ok:!0,ops:o};let l=c.filter(u=>!Qe(u.op)).map(u=>`"${u.op.intent}" (op ${u.op.id}, read ${u.overlap.join(", ")})`).join("; ");if(c.some(u=>Qe(u.op)))return{ok:!1,ops:o,blockedBy:c,includeBatches:[],message:`Cannot undo on its own \u2014 ${l?`a later operation depends on it: ${l}; 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(u=>u.op.batch))];return{ok:!1,ops:o,blockedBy:c,includeBatches:f,message:`Cannot undo on its own \u2014 a later operation depends on it: ${l}. Include ${f.map(u=>`batch ${u}`).join(", ")} to undo them together.`}}function As(n){return[...n].sort((e,t)=>t.seq-e.seq).flatMap(e=>e.inverse)}var Ps=(n,e)=>`${n}\0${e}`,Rs=new WeakMap;function $u(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(Ps(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 Ou(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=>!qe(n.after[e]))]}function Au(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=Ou(s);if(!a)continue;let[d,c]=a;for(let l of c){let f=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,l,o):void 0,u=Ps(d,l),p=n.fields.get(u);p||n.fields.set(u,p=[]),p.push({seq:t,by:f}),i.push(u)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function Ru(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 _n(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Rs.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&&Ru(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Rs.set(n,o=$u(r));for(let i=o.end;i<t;i++)Au(o,e[i-r]);return o.writers}var Pu=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));var gr=new WeakMap;function zu(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 Eu(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 Nu(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=gr.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&&Nu(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||gr.set(n,o=zu(r,r>0?Mu(n,r)?.creators:void 0));for(let i=o.end;i<t;i++)Eu(o,e[i-r]);return o.records}function Mu(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function zs(n,e){Ie(n);let t=gr.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(!Pu(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 Es=new Set;function nt(n,e){return W(e)?Es:n.modules?.disabledKinds??Es}function he(n,e){return W(e)?!1:(n.policy?.sees?.length??0)>0||nt(n,e).size>0}function Oe(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 Iu={out:()=>[],in:()=>[]};function ju(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 l=i.kindOf(s);if(l===void 0)return r?.add(s),!0;d=!o.has(l)&&$n(n.policy,e,{id:s,kind:l},Iu,i)}return t.set(s,d),d}}function Tu(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 On(n,e){return js(n,e).lens}var yr=()=>({judged:new Map,shown:new Map});function js(n,e){let t=Tu(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=(l,f,u,p,h)=>{let y=(k,R)=>{if(!l(k.id))return;let P;for(let ne in k)if(!(!Object.hasOwn(k,ne)||ne==="id"||ne==="kind"||!j(k[ne],l))&&!(r!==void 0&&R(ne)===r)){if(!t(k.kind,ne))return;(P??=[]).push(ne)}if(!P)return k;let V=P.join("\0"),q=i.get(k);if(q?.without===V)return q.node;let me=Object.fromEntries(Object.entries(k).filter(([ne])=>!P.includes(ne)));return i.set(k,{without:V,node:me}),me},m=k=>{let R=u();return y(k,P=>f().writerAt(k.id,P,R))},g=new WeakMap,x=h?k=>{let R=g.get(k);return R||g.set(k,R={node:m(k)}),R.node}:m,S=k=>{if(!l(k))return!1;let R=s.getNode(k);return R===void 0||x(R)!==void 0},v=h?.shown??new Map,b=h?k=>{let R=v.get(k);return R===void 0&&v.set(k,R=S(k)),R}:S,w=s.outEdges&&s.inEdges?{present:{getNode:k=>s.getNode(k),outEdges:k=>s.outEdges(k),inEdges:k=>s.inEdges(k)},log:n.log,get writers(){return f()}}:void 0,_={sees:l,shows:b,served:x,servedWith:y,optional:t,kindOf:p,...r!==void 0?{actor:r}:{},...w?{timeline:w}:{},hides:()=>he(n,e),pin:h?()=>_:()=>d(yr())};return _};function d(l){let f,u=o(),p=Ie(n.log);return a(ju(n,e,l.judged,l.unnamed),()=>f??=_n(n.log),()=>u,h=>s.getNode(h)?.kind??p.kindOf(h),l)}return{lens:a(Oe(n,e),()=>_n(n.log),o,l=>s.getNode(l)?.kind??Ie(n.log).kindOf(l)),pinWith:d}}var Ns=new WeakMap,Ms=new WeakMap,Du=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 Ts(n,e){if(!he(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=Ds(e),a=Ns.get(n.log);a||Ns.set(n.log,a=new Map);let d=a.get(s),{pinWith:c}=js(n,e),l=Ms.get(n.log);l||Ms.set(n.log,l=new Set);let f=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&f){if(d.length===r)return d.ops;let h=t.slice(d.length-o),y=c(yr()),m=!0,g=Du(h);for(let x of g){let S=d.judgments.judged.get(x),v=d.judgments.shown.get(x);if(S!==void 0&&y.sees(x)!==S||v!==void 0&&y.shows(x)!==v){m=!1;break}}if(m){for(let x of g)if(l.has(x)){m=!1;break}}if(m){let x=[...d.ops,...$e(h,c(d.judgments))],S={horizon:o,off:i,length:r,last:t.at(-1),ops:x,judgments:d.judgments};return a.set(s,S),x}}let u={...yr(),unnamed:l},p=$e(t,c(u));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:p,judgments:u}),p}function Fu(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!j(t,n.sees)}function Zu(n,e,t){if(!he(n,e))return t;let r=On(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=_n(n.log),d=n.log.length??n.log.all().length,c=t.ops?.[0]?.seq??d,l=Z(e).id,f=(b,w)=>_=>a.writerAt(b,_,w),u=(b,w)=>r.shows(b.id)?r.servedWith(b,w):void 0,p=(b,w)=>b.flatMap(_=>u(_,w(_.id))??[]),h=b=>r.shows(b.from)&&r.shows(b.to)&&!j(b,r.sees),y=(b,w)=>t.ops?f(b,d):_=>w===void 0||w.includes(_)?l:a.writerAt(b,_,d),m=s.changedNodes.flatMap(b=>{let w=u(b.before,f(b.before.id,c)),_=u(b.after,y(b.after.id,b.fields));return w&&_?[{before:w,after:_,fields:b.fields.filter(k=>k in w||k in _)}]:[]}),g=new Set(s.changedNodes.map(b=>b.after.id)),x=new Map;for(let b of t.ops?.flatMap(w=>w.primitives)??t.primitives??[])b.op!=="patch-node"||g.has(b.id)||x.set(b.id,[...x.get(b.id)??[],...Object.keys(b.after)]);let v=[...x].flatMap(([b,w])=>{let _=n.graph.getNode(b);if(!_)return[];let k=u(_,f(b,c)),R=u(_,y(b,w));return k&&R&&JSON.stringify(k)!==JSON.stringify(R)?[{before:k,after:R,fields:w}]:[]});i.diff={addedNodes:p(s.addedNodes,b=>y(b)),removedNodes:p(s.removedNodes,b=>f(b,c)),changedNodes:[...m,...v],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=$e(t.ops,r)),t.primitives){let s=i.ops;i.primitives=s?s.flatMap(a=>a.primitives):r.timeline?vs(t.primitives,r.timeline,{served:(a,d)=>r.servedWith(a,d),edgeClean:a=>!j(a,r.sees),sees:r.sees},Z(e).id):$e([{id:"",seq:0,batch:"",author:{kind:"system"},intent:"",mutation:null,primitives:t.primitives,inverse:[],reads:[],writes:[],at:""}],r)[0].primitives}return 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&&j(t.intent,r.sees)&&(i.intent=et),t.violationsAfter&&Object.assign(i,br?br(n,je(n,e),!!t.ops,i.primitives??[]):{introduces:[],resolves:[],violationsAfter:[]}),i}var br,Ky=n=>void(br=n);function xr(n,e){return{all:()=>n,undoneIds:()=>vn(n),epochs:e}}var Is=new WeakMap;function Ds(n){let e=W(n)?n:Z(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?"for":""}`}var mr=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t};function je(n,e){if(!he(n,e))return n;let t=Ds(e),r=Is.get(n);r||Is.set(n,r=new Map);let o=r.get(t);if(o)return o;let i=n.graph,s=On(n,e),a=v=>{let b=P=>P===void 0?void 0:v.served(P),w=P=>b(P)!==void 0,_=P=>w(i.getNode(P));return{served:b,seenNode:w,seenId:_,seenEdge:P=>_(P.from)&&_(P.to)&&!j(P,v.sees),servedAll:P=>P.flatMap(V=>b(V)??[])}},{served:d,seenId:c}=a(s),l=()=>a(s.pin?.()??s),f=(v,b)=>{let w=_n(n.log),_=s.pin?.()??s,k=v.nodes.flatMap(P=>_.servedWith(P,V=>w.writerAt(P.id,V,b))??[]),R=new Set(k.map(P=>P.id));return{nodes:k,edges:v.edges.filter(P=>R.has(P.from)&&R.has(P.to)&&!j(P,_.sees))}},u=v=>{let b=f(v.base,v.seq);if(!v.creators)return{...v,base:b};let w=new Set(b.nodes.map(k=>k.id)),_=Object.fromEntries(Object.entries(v.creators).filter(([k,R])=>w.has(k)&&!j(R,s.sees)));return{...v,base:b,creators:_}},p=v=>v&&u(v),h=()=>Ts(n,e),y=()=>xr(h(),()=>n.log.epochs()),m=new Proxy(i,{get(v,b){switch(b){case"getNode":return w=>d(v.getNode(w));case"has":return c;case"allNodes":return()=>l().servedAll(v.allNodes());case"nodesOfKind":return w=>l().servedAll(v.nodesOfKind(w));case"count":return w=>l().servedAll(v.nodesOfKind(w)).length;case"allEdges":return()=>v.allEdges().filter(l().seenEdge);case"edgesOfKind":return w=>v.edgesOfKind(w).filter(l().seenEdge);case"out":return(w,_)=>{let k=l();return k.seenId(w)?k.servedAll(v.out(w,_)):[]};case"in":return(w,_)=>{let k=l();return k.seenId(w)?k.servedAll(v.in(w,_)):[]};case"neighbors":return w=>{let _=l();return _.seenId(w)?_.servedAll(v.neighbors(w)):[]};case"outEdges":return(w,_)=>v.outEdges(w,_).filter(l().seenEdge);case"inEdges":return(w,_)=>v.inEdges(w,_).filter(l().seenEdge);case"snapshot":return()=>{let w=v.snapshot(),_=l();return{...w,nodes:_.servedAll(w.nodes),edges:w.edges.filter(_.seenEdge)}};case"size":{let w=l();return{nodes:w.servedAll(v.allNodes()).length,edges:v.allEdges().filter(w.seenEdge).length}}default:return mr(v,b)}}}),g=()=>{let v=h();return fr(v,vn(v))},x=new Proxy(n.log,{get(v,b){switch(b){case"all":case"toJSON":return()=>[...h()];case"epochs":return()=>v.epochs().map(u);case"lastEpoch":return()=>p(v.lastEpoch());case"live":return()=>{let w=h(),_=vn(w);return w.filter(k=>!_.has(k.id))};case"get":return w=>h().find(_=>_.id===w);case"opsInBatch":return w=>h().filter(_=>_.batch===w);case"batches":return g;default:return mr(v,b)}}}),S=new Proxy(n,{get(v,b){switch(b){case"graph":return m;case"log":return x;case"snapshot":return m.snapshot;case"batches":return g;case"canUndo":return w=>Sn(y(),typeof w=="string"?[w]:w);case"violations":return w=>v.violations(w,m).filter(_=>Fu(s,k=>i.has(k),_));case"findings":return()=>v.findings().filter(w=>(w.id.includes("->")?w.id.split("->").map((k,R)=>R===0?k.slice(k.indexOf(":")+1):k):[w.id]).every(k=>!i.has(k)||c(k))&&!j(w,s.sees));case"wouldChange":return w=>v.wouldChange(w,e);case"preview":return(w,_,k)=>v.preview(w,_,{author:e,...k});case"seenBy":return w=>je(v,w);case"seenFor":return e;case"checkpoint":return(...w)=>p(v.checkpoint(...w));default:return mr(v,b)}}});return r.set(t,S),S}var Fs=["full","summary","glyph"];function ge(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function de(n,e){return`/${ge(n.tryDefinition(e)?.plural??`${e}s`)}`}function Cu(n,e,t){return`${de(n,e)}/${encodeURIComponent(t)}`}function An(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function Rn(n,e){return e.some(t=>t.as===n.as&&t.kind!==n.kind)}var Te=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function vr(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function Lu(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,l){let f={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:c,...l?.title?{title:l.title}:{},...l?.across?{across:l.across}:{},...l?.beside?{beside:!0}:{}};if(r.push(f),l?.beside||e.set(Te(a,d),f),l?.title){let u=ge(l.title);e.set(Te(a,d,u),f),d.cardinality==="many"&&!t.some(p=>p.kind===a&&p.as===u)&&t.push({kind:a,title:l.title,as:u,...l.across?{across:l.across}:{}})}return s},places:()=>t,forget(a,d){for(let l of Fs)e.delete(Te(a,{cardinality:"many",fidelity:l},d));let c=t.findIndex(l=>l.kind===a&&l.as===d);return c>=0&&t.splice(c,1),s},lookup(a,d){return e.get(Te(a,d))?.view},resolve(a,d,c){if(c)for(let l of vr(d.fidelity)){let f=e.get(Te(a,{cardinality:d.cardinality,fidelity:l},c));if(f)return f}for(let l of vr(d.fidelity)){let f=e.get(Te(a,{cardinality:d.cardinality,fidelity:l}));if(f)return f}if(d.cardinality==="one")for(let l of vr(d.fidelity)){let f=e.get(Te(a,{cardinality:"many",fidelity:l}));if(f)return f}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}function Sr(n){return n.normalize("NFD").replace(/\p{M}+/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").trim()}function rt(n){return Sr(n).replace(/ /g,"")}var tt=new Map,Gu=5e4;function _r(n){let e=tt.get(n);if(e===void 0){tt.size>=Gu&&tt.clear();let t=Sr(n);e={tokens:t.split(" ").filter(Boolean),whole:t.replace(/ /g,"")},tt.set(n,e)}return e}var Pn=n=>[..._r(n).tokens];function De(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 kr(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}])${Bu(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 l=r.lastIndexOf(" ",d);d=l<0?0:l+1}let c=Math.min(r.length,d+t);if(c<r.length){let l=r.indexOf(" ",c);c=l<0||l-c>16?c:l}return`${d>0?"\u2026":""}${r.slice(d,c).trim()}${c<r.length?"\u2026":""}`}var Bu=n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Uu=/^([\p{L}][\p{L}\p{N}_-]*):(\S+)$/u;function Cs(n){let e=[],t=[];for(let r of n.trim().split(/\s+/).filter(Boolean)){let o=Uu.exec(r);o?t.push({key:o[1],value:o[2]}):e.push(r)}return{words:e.join(" "),conditions:t}}var Zs=new WeakMap;function Ku(n,e){let t=Zs.get(e);if(t&&t.definition===n)return t.texts;let r=Wu(n,e);return Zs.set(e,{definition:n,texts:r}),r}function Wu(n,e){let t=F(n,e),r=[{field:"label",reading:"Name",text:t}];for(let o of Yn(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 en={exact:0,prefix:1,word:2,part:3,field:4};function Ls(n,e,t){let r=Pn(t);if(r.length===0)return;let o=Ku(n,e),[i,...s]=o,a=De(i.text,r);if(a)return{field:"label",reading:i.reading,fragment:kr(i.text,r),strength:a};let d=u=>p=>_r(p.text).tokens.some(h=>h.startsWith(u));if(!r.every(u=>o.some(d(u))))return;let c=Pn(i.text),l=r.find(u=>!c.some(p=>p.startsWith(u)))??r[0],f=s.find(d(l));return{field:f.field,reading:f.reading,fragment:kr(f.text,[l]),strength:"field"}}var Vu=512,qu=64;function Gs(n){let e=new Map;if(n.length===0)return e;let t=n.slice(-Vu),r=n[n.length-1].seq;for(let o of t){let i=Math.pow(.5,(r-o.seq)/qu);for(let s of o.writes)e.set(s,(e.get(s)??0)+i)}return e}var $r=(n,e)=>Ne({tryDefinition:()=>n},e),wr=(n,e)=>de({tryDefinition:()=>n},e);function Hu(n,e,t){let r=n.tryDefinition(e),o=[{field:"plural",text:$r(r,e)},{field:"kind",text:z(e)},...r?.noun?[{field:"noun",text:r.noun}]:[]],i;for(let s of o){let a=De(s.text,t);a&&(!i||en[a]<en[i.strength])&&(i={strength:a,...s})}return i}var Ju,Yu=(n,e)=>(Ju??=new Intl.Collator(void 0,{sensitivity:"base",numeric:!0})).compare(n,e),Bs=(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||Yu(n.name,e.name)||(n.id<e.id?-1:n.id>e.id?1:0);function Xu(n,e,t={}){let r=n.schema,o=Cs(e),i=Pn(o.words),s=t.principal??{kind:"human"},a=n.kindsKeptFrom(s),d=n.modules.disabledKinds,c=o.conditions.filter($=>$.key==="kind").map($=>$.value),l=o.conditions.filter($=>$.key==="is").map($=>$.value),f=l.includes("any")||l.includes("past"),u=l.includes("past")&&!l.includes("any")&&!l.includes("current"),p=($,A)=>{let E=rt(A),G=r.tryDefinition($);return rt($)===E||rt($r(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)))),m=o.conditions.filter($=>$.key!=="kind").map($=>({...$,admittedBy:h.filter(A=>gs(r,A).filters.some(E=>E.key===$.key))})),g=m.filter($=>$.key!=="is"),x=l.filter($=>$==="flagged"||$==="clear"||$==="past"),S={kinds:h,past:f},v={hits:[],words:o.words,conditions:m,searched:S,byKind:{},total:0,matched:[]};if(i.length===0&&g.length===0&&x.length===0)return v;let b=t.today,w=t.flagged??new Set(n.violations().flatMap($=>$.nodeIds)),_=t.touched??Gs(n.log.all()),k=new Set;for(let $ of t.from??[]){k.add($);for(let A of n.graph.neighbors($))k.add(A.id)}let R=he(n,s)?Oe(n,s):void 0,P=$=>cr($,t.basePath===void 0?{}:{basePath:t.basePath}),V={schema:r,graph:n.graph,flagged:w,...b?{today:b}:{}},q=[],me={};for(let $ of h){let A=r.tryDefinition($),E=m.filter(N=>N.key!=="is"&&N.admittedBy.includes($));if(i.length===0&&E.length===0&&x.length===0)continue;let G=hs(A,E);for(let N of n.graph.nodesOfKind($)){let ye=we(A,N,b);if(!f&&!G&&!ye||R&&!R(N.id)||u&&ye||!E.every(Wa=>ys(V,N,Wa))||l.includes("flagged")&&!w.has(N.id)||l.includes("clear")&&w.has(N.id))continue;let Pe=i.length>0?Ls(A,N,o.words):E[0]?{field:E[0].key,reading:z(E[0].key),fragment:`${E[0].key}:${E[0].value}`,strength:"field"}:{field:"is",reading:"Is",fragment:`is:${x[0]}`,strength:"field"};if(!Pe)continue;let In=F(A,N);me[$]=(me[$]??0)+1,q.push({hit:{about:"node",id:N.id,kind:$,label:In,why:Pe,current:ye,flagged:w.has(N.id),address:P(`${wr(A,$)}/${encodeURIComponent(N.id)}`)},tier:en[Pe.strength],inKind:$===t.inKind?0:1,near:k.has(N.id)?0:1,past:ye?0:1,touched:-(_.get(N.id)??0),flagged:w.has(N.id)?0:1,name:In,id:N.id})}}let ne=$=>$==="exact"||$==="prefix"?-1:en[$],bt=($,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=Hu(r,A,i);if(!E)continue;let G=yn(r,A),N={field:E.field,reading:E.field==="plural"?"Plural":"Kind",fragment:E.text,strength:E.strength};q.push(bt({about:"kind",kind:A,label:G,why:N,count:me[A]??0,address:P(wr(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=De(A.title,i);if(!E)continue;let G={field:"title",reading:"Title",fragment:A.title,strength:E},N=Rn(A,$)?wr(r.tryDefinition(A.kind),A.kind).slice(1):void 0,ye=P(An(A.as,N));q.push(bt({about:"place",kind:A.kind,title:A.title,as:A.as,why:G,address:ye},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??z(A.name),N=De(G,i),ye=N?void 0:De(z(A.name),i),Pe=N??ye;if(!Pe)continue;let In={field:N?"label":"name",reading:N?"Rule":"Name",fragment:N?G:A.name,strength:Pe};q.push(bt({about:"rule",name:A.name,label:G,...E?{kind:E}:{},why:In},Pe,G,`rule:${A.name}`))}}q.sort(Bs);let Ca=t.limit??50,Yr=q.slice(0,Ca).map($=>$.hit),La=Yr.flatMap($=>$.about==="node"?[n.graph.getNode($.id)]:[]).filter(Boolean),Xr=Qt(La,$=>r.tryDefinition($)),Ga=Yr.map($=>$.about==="node"&&Xr.has($.id)?{...$,apart:Xr.get($.id)}:$),Ba=Object.values(me).reduce(($,A)=>$+A,0),Ua=q.flatMap($=>$.hit.about==="node"?[$.hit.id]:[]),Ka=t.subject&&h.includes(String(n.graph.getNode(t.subject)?.kind))?Us(n,t.subject,o.words,{principal:s}):[];return{hits:[...Ga,...Ka],words:o.words,conditions:m,searched:S,byKind:me,total:Ba,matched:Ua}}function Us(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=Pn(t),a=F(n.schema.tryDefinition(o.kind),o),d=[];for(let l of n.allMutations()){let f=l.subject;if(!f||f.kinds!=="*"&&!f.kinds.includes(o.kind)||!n.permits({name:l.name,args:{[f.arg]:o.id}},i).ok)continue;let u=er(l),p=Pn(u),h=s.filter(g=>p.some(x=>x.startsWith(g))),y=h.length>0?De(u,h):void 0,m=y?{field:"title",reading:"Act",fragment:u,strength:y}:{field:"subject",reading:"On",fragment:a,strength:"field"};d.push({hit:{about:"act",name:l.name,title:u,subject:o.id,why:m,destructive:l.destructive===!0},tier:y?en[y]:en.field+1,inKind:0,near:0,past:l.destructive?1:0,touched:0,flagged:l.pinned?0:1,name:u,id:`act:${l.name}`})}d.sort(Bs);let c=d.map(l=>l.hit);return r.limit===void 0?c:c.slice(0,r.limit)}function Qu(n,e){let t=e.kinds.map((i,s)=>{let a=$r(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?`${ee(r)}, past ones included.`:`${ee(r)}, current ones; add is:any for past ones.`:`${ee(r)}.`}function Ks(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]??ke(i,t),option:c=>a?a(c):z(c)}}return{label:ke(void 0,t),option:o=>z(o)}}var Fe=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 el(n,e,t){if(t instanceof Fe){let r=e.find(i=>i.name===t.mutation);return`Not yet: ${t.issues.map(i=>{let s=i.path.length>0?Ks(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 ot={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},nl={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},tl={under:0,raised:1,over:2},Or=n=>`--graview-layer-${n}`,rl=n=>`var(${Or(n)}, ${ot[n]})`;function ol(){return Object.keys(ot).map(n=>` ${Or(n)}: ${ot[n]};`).join(`
7
- `)}var Ar=new Set;function Rr(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:Ar,disabledMutations:Ar,disabledInvariants:Ar,administered:Ws(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:Ws(n,t)}}function Ws(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}function Vs(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var it=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=Vs(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=Pr(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=Vs(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(Pr(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=Pr(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function Pr(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 il(n,e){return e.includes("*")?"record":e.map(t=>se(n.tryDefinition(t),t)).join(" or ")}function qs(n,e,t,r){let o=il(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}.`}}function zr(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":zr(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${zr(e[r])}`).join(",")}}`}var Hs=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function sl(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(Hs),t=n.edges.map(r=>({key:T(r),value:{kind:r.kind,from:r.from,to:r.to}})).sort(Hs);return zr({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function nn(n){return`sha256:${Ys(sl(n))}`}function Js(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=nn(t),a=U.from(n,i,{validate:o});for(let[y,m]of e.entries())try{a.applyPrimitives(m.primitives)}catch(g){let x=e[y-1];return{ok:!1,expected:nn(a.snapshot()),actual:s,...x?{divergedAfter:x.id}:{},reason:`The log does not fold: op "${m.id}" (${m.intent}) could not be applied. ${g instanceof Error?g.message:String(g)}`}}let d=nn(a.snapshot());if(d===s)return{ok:!0,hash:s};let c=y=>{let m=U.from(n,i,{validate:o});for(let g=0;g<=y;g++)m.applyPrimitives(e[g].primitives);return nn(m.snapshot())},l=y=>{try{let m=U.from(n,t,{validate:o});for(let g=e.length-1;g>y;g--)m.applyPrimitives(e[g].inverse);return nn(m.snapshot())}catch{return}},f=y=>{let m=l(y);return m!==void 0&&m!==c(y)},u=-1,p=e.length-1;for(;u<p;){let y=Math.floor((u+p)/2);f(y)?p=y:u=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 al=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]),dl=new TextEncoder,cl=new Uint32Array(64),ul=new Uint32Array(8),st=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Ys(n){let e=dl.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=ul;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=cl;for(let d=0;d<r.length;d+=64){for(let g=0;g<16;g++)s[g]=o.getUint32(d+g*4);for(let g=16;g<64;g++){let x=s[g-15],S=s[g-2],v=(x>>>7|x<<25)^(x>>>18|x<<14)^x>>>3,b=(S>>>17|S<<15)^(S>>>19|S<<13)^S>>>10;s[g]=s[g-16]+v+s[g-7]+b>>>0}let c=i[0],l=i[1],f=i[2],u=i[3],p=i[4],h=i[5],y=i[6],m=i[7];for(let g=0;g<64;g++){let x=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),S=p&h^~p&y,v=m+x+S+al[g]+s[g]>>>0,b=(c>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10),w=c&l^c&f^l&f,_=b+w>>>0;m=y,y=h,h=p,p=u+v>>>0,u=f,f=l,l=c,c=v+_>>>0}i[0]=i[0]+c>>>0,i[1]=i[1]+l>>>0,i[2]=i[2]+f>>>0,i[3]=i[3]+u>>>0,i[4]=i[4]+p>>>0,i[5]=i[5]+h>>>0,i[6]=i[6]+y>>>0,i[7]=i[7]+m>>>0}let a="";for(let d=0;d<8;d++){let c=i[d];a+=st[c>>>24]+st[c>>>16&255]+st[c>>>8&255]+st[c&255]}return a}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 ll(n,e){return{...e,name:n}}function Er(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function ea(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 Er(n)?[...r,"id"]:r}var Xs=(n,e)=>`does not take ${n.map(t=>`"${t}"`).join(", ")}; it takes ${e.length>0?e.map(t=>`"${t}"`).join(", "):"nothing"}`;function fl(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 pl(n){let{id:e,...t}=n;return t}function Qs(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function En(n,e,t,r={}){let o=Er(e)?fl(t):void 0,i=o===void 0?t:pl(t),s=ea(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let g=Object.keys(i).filter(x=>!s.includes(x)&&i[x]!==void 0);if(g.length>0)throw new Fe(e.name,[{path:[],message:Xs(g,s)}])}let a=e.input.safeParse(i);if(!a.success){let g=Object.keys(e.input.shape??{});throw new Fe(e.name,a.error.issues.map(x=>x.code==="unrecognized_keys"&&g.length>0?{...x,message:Xs(x.keys,g)}:x))}let d=a.data,c=new zn(r.seen??n),l=[],f=new Set,u=g=>c.has(g)||n.has(g)||f.has(g),p={graph:c,schema:n.schema,emit(g){l.push(g)},addNode(g){l.push({op:"add-node",node:g})},removeNode(g){let x=c.getNode(g)&&n.getNode(g);if(!x)throw new Y(g,`Cannot remove missing node "${g}"`);let S=new Map;for(let v of n.outEdges(g))S.set(T(v),v);for(let v of n.inEdges(g))S.set(T(v),v);for(let v of S.values())c.getNode(v.from),c.getNode(v.to),l.push({op:"remove-edge",edge:v});l.push({op:"remove-node",node:x})},patchNode(g,x){let S=c.getNode(g)&&n.getNode(g);if(!S)throw new Y(g,`Cannot patch missing node "${g}"`);let v={},b={};for(let[w,_]of Object.entries(x)){let k=S[w];JSON.stringify(k)===JSON.stringify(_)&&!r.keepUnchanged?.(_)||(v[w]=k,b[w]=_)}Object.keys(b).length!==0&&l.push({op:"patch-node",id:g,before:v,after:b})},addEdge(g){l.push({op:"add-edge",edge:g})},removeEdge(g){l.push({op:"remove-edge",edge:g})},setSingleSource(g,x,S){for(let v of n.inEdges(x,g))c.getNode(v.from),v.from!==S&&l.push({op:"remove-edge",edge:v});n.inEdges(x,g).some(v=>v.from===S)||l.push({op:"add-edge",edge:{kind:g,from:S,to:x}})},freshId(g,x){if(o!==void 0&&!f.has(o)){if(u(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 S=x?`${x}:${Qs(g)}`:Qs(g),v=S;for(let b=2;u(v);b++)v=`${S}-${b}`;return f.add(v),v}};e.apply(p,d);let h=new Set;for(let g of l)switch(g.op){case"add-node":case"remove-node":h.add(g.node.id);break;case"patch-node":h.add(g.id);break;case"add-edge":case"remove-edge":h.add(g.edge.from),h.add(g.edge.to);break}let y=new zn(r.seen??n),m=e.describe?.(d,y)??`${e.name}(${Object.entries(d).map(([g,x])=>`${g}=${JSON.stringify(x)}`).join(", ")})`;return{primitives:l,reads:[...new Set([...c.reads(),...y.reads()])],...e.describe?{described:y.reads()}:{},writes:[...h],intent:m}}function na(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function Nr(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function Mr(n,e){let t=n.subject;if(!t||!n.writes&&n.creates?.length)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(_e(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function ta(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 Nr(n,o)){let s=n.tryDefinition(i);if(s)for(let a of Mr(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 ra(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=ta(n,e).get(t);return na(r).filter(i=>!o?.has(i))}var oa=n=>`edit-${n}`;function ia(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),Nr(n,i).includes(t)&&Mr(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=oa(i);if(t.has(s))continue;let a=ra(n,e,i);if(a.length===0)continue;let d=o.fields.shape,c=se(o,i),l=a.map(f=>ke(o,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: ${l.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:a,input:Wi({id:ur([i]),...Object.fromEntries(a.map(f=>[f,Ve(hl(d[f]))]))}),describe:(f,u)=>{let p=u.getNode(f.id),h=p?F(o,p):f.id,y=o.display,m=x=>x===x.toUpperCase()?x:x.charAt(0).toLowerCase()+x.slice(1),g=a.filter(x=>f[x]!==void 0).map(x=>{let S=f[x],v=y?.format?.[x],b;try{b=v?String(v(S)):Ee(S).length>0?Ee(S).map(w=>w.name).join(", "):JSON.stringify(S)}catch{b=JSON.stringify(S)}return`${m(ke(o,x))} \u2192 ${b}`});return`Change ${h}: ${g.join(", ")||"nothing"}`},apply(f,u){let p={};for(let h of a){let y=u[h];y!==void 0&&(p[h]=y)}if(Object.keys(p).length===0)throw new Je(`Nothing to change \u2014 give at least one of ${l.join(", ")} a value.`,"invalid");f.patchNode(u.id,p)}})}return r}function hl(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 sa=n=>`remove-${n}`;function aa(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function Ir(n,e,t){if(t.derived)return t.derived.act==="edit"?ia(n,e,t.derived.kind):aa(e,t.derived.kind)}function da(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=sa(i);if(t.has(s))continue;let a=se(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:Vn({id:ur([i])}),describe:(d,c)=>{let l=d.id,f=c.getNode(l),u=f?new Set(Object.values(f).flatMap(p=>Ee(p).map(h=>h.href))).size:0;return`Remove ${f?F(o,f):l}${u?` and its ${u} file${u>1?"s":""}`:""}`},apply(d,c){d.removeNode(c.id)}})}return r}function jr(n,e){return[...at(n,e),...da(n,e)]}var Ae=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};var ca=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function ua(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 gl(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function dt(n,e){try{return F(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var ml=n=>`${n.kind}:${n.from}->${n.to}`,ct=(n,e)=>n<e?-1:n>e?1:0;function la(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let u of e.nodes)i.has(u.id)||i.set(u.id,u);let s=u=>e.edges.filter(p=>p.from===u||p.to===u),a=u=>({action:"drop",primitives:[...s(u.id).filter(p=>i.has(p.from)&&i.has(p.to)).map(p=>({op:"remove-edge",edge:p})),{op:"remove-node",node:u}]}),d=new Set;for(let u of[...i.values()].sort((p,h)=>ct(p.id,h.id))){if(!r.tryDefinition(u.kind)){d.add(u.id),o.push({code:"kind-unknown",id:u.id,message:`${dt(r,u)} is a kind of record this app no longer has`,repair:a(u)});continue}let p=ua(r,u);if(p===void 0)continue;let h=dt(r,u),y=new Map,m=p.length>0;for(let g of p){if(g==="id"||g==="kind"){m=!1;continue}let x=gl(r,u.kind,g),S=x?x.safeParse(void 0):{success:!0,data:void 0},v=r.tryDefinition(u.kind)?.defaults;!S.success&&x&&v&&Object.hasOwn(v,g)&&(S=x.safeParse(v[g])),S.success?S.data===void 0?y.set(g,{action:"clear",value:ae}):y.set(g,{action:"coerce",value:S.data}):m=!1}if(m){let g={...u};for(let[x,S]of y)S.value===ae?delete g[x]:g[x]=S.value;ua(r,g)!==void 0&&(m=!1)}if(p.length===0){o.push({code:"node-shape",id:u.id,message:`${h} does not fit what ${u.kind} declares`,repair:a(u)});continue}for(let g of p){let x=y.get(g),S=m&&x?{action:x.action,primitives:[{op:"patch-node",id:u.id,before:{[g]:u[g]===void 0?ae:u[g]},after:{[g]:x.value}}]}:a(u);o.push({code:"node-shape",id:u.id,detail:g,message:`${h}: ${z(g)} does not fit what ${u.kind} declares`,repair:S})}}let c=new Set,l=[];for(let u of[...e.edges].sort((p,h)=>ct(T(p),T(h)))){if(c.has(T(u)))continue;c.add(T(u));let p=ml(u),h=i.get(u.from),y=i.get(u.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:u}]}});continue}l.push(u),!(d.has(h.id)||d.has(y.id))&&(r.edgeAllowed(u.kind,h.kind,y.kind)||o.push({code:"edge-disallowed",id:p,message:`${dt(r,h)} \u2192 ${dt(r,y)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:u}]}}))}let f=n.invariants??[];if(f.length>0){let u=U.from(r,{nodes:[...i.values()],edges:l},{validate:!1}),p=new Set,h;try{h=He(u,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 m=y.status==="could-not-judge"?"rule-error":y.status==="over-budget"?"rule-budget":void 0;if(!m)continue;let g=y.subjectId??y.invariant,x=`${m}|${g}|${y.invariant}`;p.has(x)||(p.add(x),o.push({code:m,id:g,detail:y.invariant,message:y.message}))}}return o.sort((u,p)=>ca.indexOf(u.code)-ca.indexOf(p.code)||ct(u.id,p.id)||ct(u.detail??"",p.detail??""))}var tn=()=>globalThis.__graviewWatch;function fa(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&&z(d.kind).toLowerCase()!==d.noun.toLowerCase()&&s.push(d.kind);let c=d.fields.shape??{};for(let[f,u]of Object.entries(c)){let p=d.display?.labels?.[f];p!==void 0&&z(f)!==p&&s.push(z(f));let h=u?.def?.entries,y=d.display?.format?.[f];for(let m of h&&typeof h=="object"?Object.values(h):[]){if(typeof m!="string"||(o.push(m),!y))continue;let g=y(m);g!==m&&g.toLowerCase()===m.toLowerCase()&&s.push(m)}}i.push(d.plural??"",d.noun??"",d.description??"");let l=d.fields.shape??{};o.push(...Object.keys(l));for(let f of Object.values(d.display?.labels??{}))i.push(f);for(let[f,u]of Object.entries(d.edges??{}))o.push(f),(u.description||u.inverse)&&s.push(z(f)),i.push(u.description??"",u.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(z(d.noun??d.kind));for(let l of Object.values(d.display?.labels??{}))a.add(l);let c=d.fields.shape??{};for(let[l,f]of Object.entries(c)){let u=d.display?.format?.[l],p=f?.def?.entries;if(!u&&!d.display?.labels?.[l]&&a.add(z(l)),p&&typeof p=="object")for(let h of Object.values(p))a.add(u?u(h):z(String(h)))}}r.learn({ids:o,words:i.filter(Boolean),unsaid:[...new Set(s)].filter(d=>!a.has(d))})}function pa(n){tn()?.store?.(n)}function ut(n){n!==void 0&&tn()?.learn?.({ids:[n],words:[]})}function lt(n,e){tn()?.refused?.({...n,...e===void 0?{}:{author:e}})}function yl(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 bl(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:[]})}var Tr="preview",Ze={kind:"human"},ha={kind:"system"},ma={kind:"system",id:"modules",name:"Modules"},ga=n=>n.mutation===null&&n.undoes===void 0;function ya(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var ba=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function xa(n,e,t){let r=ba(n),o=a=>ya(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 rn=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"}},ft=class extends D{constructor(t,r){super(`Unknown mutation "${t}"`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError"}};function xl(){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 Dr=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??Ze,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=xl();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 jr(e.schema,e.mutations??[]))this.mutations.set(i.name,i);fa(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=Xe.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?U.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=Xe.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=U.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);this.countPastTheLog(),pa(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:Rr(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=Rr(this.declaredModules,e).enabled,i=[...r].filter(l=>!o.has(l)),s=[...o].filter(l=>!r.has(l));if(i.length===0&&s.length===0)return;let a=l=>l.map(f=>{let u=this.declaredModules?.[f]?.kinds??[];return u.length>0?u.map(p=>Ne(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:ma,intent:ee(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(rs,[c]),c}mutation(e){let t=this.mutations.get(e);if(!t)throw new ft(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 Ir(this.schema,[...this.mutations.values()],e)}moved(e,t){return xa(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=Ze){let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);return r?{ok:!1,refusal:r}:Se(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=>se(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=ha){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 _e(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:[]}}sighted(e){if(e===void 0||!he(this,e))return{};let t=Oe(this,e);return{seen:je(this,e).graph,keepUnchanged:r=>j(r,t)}}missingFor(e,t=Ze){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 _e(r.input))i(e.args[a.name]);if(o.size===0)return;let s=je(this,t).graph;for(let a of o)if(!s.has(a))return new Y(a,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=Ze){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=>Se(this.policy,t,o,a,this.viaOf(i)).ok):!1}):!1}seenBy(e){return je(this,e)}sees(e,t){return this.graph.has(t)&&Oe(this,e)(t)}labels;resolveRef(e,t,r=Ze){let o=(this.policy?.sees?.length??0)>0,i=f=>!o||this.sees(r,f),s=this.graph.getNode(t);if(this.labels??=new it(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,l=(c?d:a.prefix.filter(i)).map(f=>({id:f,kind:this.graph.getNode(f).kind,label:this.labels.labelOf(f)??f})).sort((f,u)=>f.label<u.label?-1:f.label>u.label?1:f.id<u.id?-1:1);return l.length===1?{ok:!0,id:l[0].id,label:l[0].label,by:c?"label":"prefix"}:qs(this.schema,e,t,l)}kindsKeptFrom(e=Ze){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=Ze){let t=this.allMutations(),r=ar(this.policy,e,t.filter(i=>!i.derived)),o=t.filter(i=>i.derived!==void 0&&Se(this.policy,e,i.name,i.derived.kind,this.viaOf(i),Z(e).id).ok);return[...r,...o]}subjectKindOf(e,t=ha){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)&&!Oe(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,t=this.graph){return He(t,this.allInvariants(),{...this.invariantOptions,...e===void 0?{}:{context:e}})}wouldChange(e,t){try{return En(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){let o=this.mutation(e.name),i=En(this.graph,o,e.args,this.sighted(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:U.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:Xe.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${Tr}:${++t}`,mintBatch:()=>Tr,rehearsing:!0}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=U.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=He(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,l=[],f=this.violations(r),u=this.graph.snapshot(),p=this.log.length;if(this.policy)for(let m of e){let g=this.permits(m,i);if(!g.ok)throw this.rehearsing||lt(g.refusal,i.id),new Ae(g.refusal)}for(let m of e){let g=this.refusesAgent(m,i)??this.namesTurnedOff(m,i);if(g)throw this.rehearsing||lt(g,i.id),new Ae(g)}this.rehearsing||ut(i.id);try{for(let m of e){let g=this.mutation(m.name),x=this.missingFor(m,i);if(x)throw x;let S=En(this.graph,g,m.args,this.sighted(i));if(S.primitives.length===0)continue;let v={id:this.nextId(),seq:this.log.length,batch:o,author:i,intent:g.describe!==void 0?S.intent:t.intent??S.intent,...t.intent!==void 0?{batchIntent:t.intent}:{},mutation:m,primitives:S.primitives.map(bn),inverse:[...S.primitives].reverse().map(bn).map(xn),reads:S.reads,writes:S.writes,...g.describe!==void 0&&S.described&&S.described.length>0?{described:S.described}:{},at:this.now(),...t.via!==void 0?{via:t.via}:{}};this.graph.applyPrimitives(v.primitives),this.log.append(v),s.push(v),a.push(...v.primitives);for(let b of v.reads)d.add(b);for(let b of v.writes)c.add(b);l.push(v.intent)}}catch(m){throw this.putBack(u,p),m}let h=oe(u,this.graph.snapshot());this.admitted(t,s,a,h,u,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??l.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 rn(d,c)}let a=this.log.length;for(let[d,c]of o.entries()){let l={...c,seq:a+d};this.log.append(l),s.push(l)}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(bn),l={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(xn),reads:a.reads??[],writes:a.writes??[...new Set(c.flatMap(nr))],at:a.at??this.now(),...a.undoes!==void 0?{undoes:a.undoes}:{},...a.via!==void 0?{via:a.via}:{}};if(r.has(l.id))throw new D(`Op "${l.id}" (${l.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(l.id),l}),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 rn(a,d)}for(let a of i)this.log.append(a);for(let a of i)ut(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(bn),c=[];if(d.length>0){let u={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:d,inverse:[...d].reverse().map(xn),reads:[],writes:[...new Set(d.flatMap(nr))],at:this.now(),...t.via!==void 0?{via:t.via}:{}};this.graph.applyPrimitives(u.primitives),this.log.append(u),c.push(u),ut(o.id)}let l=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,l),violationsAfter:l}}findings(){return la({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return Sn(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=As(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(ga),...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=Sn(xr($e(this.log.all(),On(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 m={...y.refusal,message:`Not permitted to undo "${h.intent}": ${y.refusal.message}`};throw lt(m,o.id),new Ae(m)}}let d=this.graph.snapshot(),c=this.violations(),l=[],f=this.log.length;for(let h of[...s.ops].sort((y,m)=>m.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(xn),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:ga(h)}),this.log.append(y),l.push(y)}let u=oe(d,this.graph.snapshot());this.admitted(t,l,l.flatMap(h=>[...h.primitives]),u,d,f);let p=this.violations();return this.notify(u,l),{batch:a,ops:l,diff:u,primitives:l.flatMap(h=>[...h.primitives]),reads:[...new Set(l.flatMap(h=>[...h.reads]))],writes:[...new Set(l.flatMap(h=>[...h.writes]))],intent:t.intent??l.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&&os(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(),l=[],f=[],u=[];this.quiet++;try{for(let m of[...i].reverse())this.graph.applyPrimitives(m.inverse,{restoring:!0,inPlace:!0});this.log.truncate(s);let y=new Set(this.log.all().map(m=>m.id));for(let m of e.confirmed){if(y.has(m.id))continue;try{this.graph.applyPrimitives(m.primitives,{restoring:m.undoes!==void 0})}catch(x){throw new rn(m,x)}let g={...m,seq:this.log.length};this.log.append(g),y.add(m.id),l.push(g)}for(let m of e.pending){let g=i.filter(x=>x.batch===m);if(g.length!==0)try{f.push(...this.replay(m,g))}catch(x){u.push({batch:m,error:x})}}}catch(y){this.log.truncate(s);for(let m of i)this.log.append(m);throw this.graph.load(c),y}finally{this.quiet--}let p=oe(c,this.graph.snapshot()),h=[...l,...f];return this.notify(p,h),{diff:p,confirmed:l,pending:f,refused:u}}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=[],l=[];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){l.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)),u=oe(i,this.graph.snapshot());return this.notify(u,[...f,...c]),{diff:u,adopted:f,pending:c,refused:l}}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 Js(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,l=t.find(u=>Date.parse(u.at)>c),f=l?l.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=zs(this.log,r);return Object.keys(s).length>0?{...i,creators:s}:i}compact(e){return this.log.compact(e)}};var pt={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:[]}},wa=Object.keys(pt),ka=n=>Object.hasOwn(pt,n);var Nn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function va(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=Q(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=Q(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function Fr(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 l=`lenses.${c}`,f=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,u=(b,w)=>{t.push({index:c,name:d.name,...f?{title:f}:{},why:b}),w&&r.push({severity:"warning",...w})};if(!ka(d.name)){f?u(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${l}.name`,message:`"${f}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${wa.join(", ")} \u2014 or register the view yourself and drop the title.`}):u("it is a lens this app wrote, drawn by the app's own views");return}if(!f)return u("it has no title, so it is bindings the checker holds and no place");let p=pt[d.name],h=Nn(d.options)?d.options:{};if(d.options!==void 0&&!Nn(d.options))return u("its options are not an object",{code:"lens-options-not-an-object",path:`${l}.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:`${l}.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=ms(d.arrangedBy));let m=Nn(d.bindings)?d.bindings:{},g=[],x,S=(b,w,_)=>u(w,{code:"lens-cannot-draw",path:b,message:`"${f}" cannot draw: ${w}.`,fix:_});if(p.binds==="fields"){let b=Object.keys(m).filter(_=>Nn(m[_])),w=b.filter(_=>!o.has(_));if(b.length===0)return S(`${l}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${p.requiredRoles.map(_=>`"${_}": "<field>"`).join(", ")} } }.`);if(w.length>0)return;if(y.bindings=m,g=b,d.name==="timeline"){let _=h.columns;if(Array.isArray(_))y.columns=_.map(k=>typeof k=="string"?{id:k,label:k}:k);else{let k=b.flatMap(P=>{let V=m[P],q=typeof V.column=="string"?V.column:typeof V.columns=="string"?V.columns:void 0;return q?va(n.schema,P,q):[]}),R=[...new Set(k)];if(R.length===0)return S(`${l}.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(P=>({id:P,label:P.toUpperCase()}))}y.extent===void 0&&(y.extent=1440)}if(d.name==="columns")for(let _ of b){let k=m[_].column;if(typeof k!="string"||!s(_).includes(k))return;if(va(n.schema,_,k).length===0)return S(`${l}.bindings.${_}.column`,`its column field "${k}" 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 S(`${l}.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 S(`${l}.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=k=>{let R=m[k];if(Nn(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 k of p.requiredRoles)if(b(k)===void 0)return;let w=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",_=b(w);if(!o.has(_))return;if(d.name==="coverage"){let k=b("columns");if(!o.has(k))return;let R=b("link");if(typeof R=="string"&&!i.has(R))return;Object.assign(y,{rows:_,columns:k,link:R}),k!==_&&(x=k)}else if(d.name==="board"){Object.assign(y,{slots:_,x:b("x"),y:b("y"),fill:b("fill")});for(let k of["x","y"])if(!s(_).includes(y[k]))return}else{Object.assign(y,{regions:_,outline:b("outline")});for(let k of["markers","at","within","nests","regionKind","markerKind"]){let R=b(k);typeof R=="string"&&(y[k]=R)}}g=[_]}else if(d.name==="blocks"){if(!d.on)return S(`${l}.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 S(`${l}.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(w=>o.has(w));if(!d.on&&!b)return S(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');g=b?[b]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return S(`${l}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(g=[d.on],d.name==="coverage"){let b=[y.rows,y.columns].find(w=>w!==d.on);x=typeof b=="string"?b:void 0}}let v=ge(f);if(v.length===0)return S(`${l}.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 g){let w=`${b}|${v}`;if(a.has(w))return u(`another lens on ${b} is already called "${f}"`,{code:"lens-title-taken",path:`${l}.title`,message:`"${f}" is the title of lenses.${a.get(w)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let b of g)a.set(`${b}|${v}`,c);e.push({index:c,lens:d.name,title:f,as:v,kinds:g,...x?{across:x}:{},options:y})}),{drawn:e,undrawn:t,findings:r}}var vl=6;function wl(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 kl(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(ge));return{kinds:new Set(e.kinds.filter(o=>r.has(ge(o))||r.has(de(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(ge(o.title))).map(o=>`${o.kind}|${o.as}`))}}var Zr="overview",Sa=`/places/${Zr}`;function _a(n){let e=n?.scene?.trim();return e||"Scene"}function Sl(n){let e=n?.pages?.trim();return e||"Pages"}function $a(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 Oa(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=ge(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 _l(n){let e=[];for(let t of Fr(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 $l(n){return Aa(n.schema,_l(n),{...n.pages?{pages:n.pages}:{},lenses:Fr(n).drawn,home:(n.home?.length??0)>0})}function Aa(n,e,t={}){let{pages:r}=t,o=n.kinds,i=e.filter(f=>o.includes(f.kind)),s=Oa(r?.first,n,i),a=new Set(r?.hide??[]),d=$a(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:Zr,title:_a(r),kind:null,cardinality:"many",address:Sa,stop:"#"}],l=[...i].sort((f,u)=>d.indexOf(f.kind)-d.indexOf(u.kind));for(let f of l){let u=t.lenses?.find(h=>h.as===f.as&&h.kinds.includes(f.kind)),p=Rn(f,i);c.push({slug:f.as,title:f.title,kind:f.kind,cardinality:"many",address:An(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)}`,...u?{lens:u.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:yn(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}function Cr(n,e){if(n.onBehalfOf){let{onBehalfOf:i,...s}=n;return`${Cr(s,e)}, for ${Cr(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 Ol(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 Al=1;function Rl(n){let e=n instanceof Error?n.message:String(n);if(n instanceof Ae){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof Y?{reason:"missing",sentence:e}:n instanceof Je?{reason:n.reason,sentence:n.sentence}:n instanceof Me?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var ht=(n,e)=>`${n}\0${e}`;function Gr(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 Lr=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 Gr(r)){let s=ht(o,i);(this.revs.get(s)??-1)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(ht(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=ht(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 Pl(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 Gr(r))e.add(ht(o,i))}return e}var zl=/^#([0-9a-f]{3,8})$/i,El=/(rgba?|hsla?)\(([^)]+)\)/gi;function Nl(n){let e=zl.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 Ml(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,l,f]=r;return d===void 0||c===void 0||l===void 0?null:{r:d,g:c,b:l,a:f??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...Pa(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function Ur(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 Kr(n,e,t){return{...Pa(n,e,t),a:1}}function Pa(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 on(n){let e=[];for(let t of n.matchAll(El)){let r=Ml(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=Nl(t[0]);r&&e.push(r)}return e}function Wr(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 Br(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function Ra(n){return .2126*Br(n.r)+.7152*Br(n.g)+.0722*Br(n.b)}function sn(n,e){let[t,r]=[Ra(n),Ra(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var gt=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,za={r:0,g:0,b:0,a:1},mt={r:255,g:255,b:255,a:1};function yt(n){let e=on(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=Ur(e);for(let s of["dark","light"]){let a=n.base[s],d=on(a.ground)[0]??(s==="dark"?za:mt),c=Wr(on(a.panel)[0]??mt,d),l=Dl(i,[c,d],s,4.5);l?Math.abs(l.l-i.l)>Tl&&(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(l.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=l??i,u=Kr(f.h,f.s,f.l),p=n.accentInk?.[s]??(sn(mt,u)>=sn(za,u)?"#ffffff":"#000000"),h=sn(on(p)[0]??mt,u);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:gt(u,1),accentDim:gt(u,s==="dark"?.35:.22),accentInk:p,glow:gt(u,s==="dark"?.28:.1),edgeBright:gt(u,Il(u,c,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let y=on(t[s].warn)[0];y&&jl(Ur(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 Il(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(sn(Wr({...n,a:i},e),e)>=r)return i}return 1}function jl(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var Tl=.3;function Dl(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=>sn(Kr(n.h,n.s,d),c)>=r))return{...n,l:d}}return null}function Fl(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 Ce=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),Vr="Montserrat",qr=Object.freeze({display:550,body:450,label:600}),Hr=Object.freeze({display:600,body:400,label:600}),Zl="-0.025em",Cl=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var Ea={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:Ce.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},Na={ground:Ce.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:Ce.ink,inkMuted:Ce.muted,inkFaint:"#626b7d",accent:Ce.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},an={dark:Ea,light:Na};var Re=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),Le=Object.freeze({body:`"${Vr}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function Ll(n){let e=n?.shape?.radius??Re.radius,t=n?.shape?.density??Re.density;return Object.freeze({radius:e,radiusSmall:Math.max(Re.radiusSmallFloor,Math.round(e*Re.radiusSmall)),pad:Math.round(Re.pad*t),padSmall:Math.round(Re.padSmall*t),gap:Math.round(Re.gap*t)})}function Gl(n){let e=n?.typography?.body??Le.body,t=n?.typography?.display??e,o=e===Le.body&&t===Le.body?qr:Hr,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??Le.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var Bl=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 Ul(n){return Bl[n]}function Ia(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var ja="http://www.w3.org/2000/svg",Kl=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",ja],Wl=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(" ")),Vl=new Set(["title","desc"]),Mn="it embeds a page or media",ql={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)"},Hl={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function Jl(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=Hl[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function Yl(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 Xl(n,e,t){let r=Jl(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===ja?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return Kl.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 Yl(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var Ma=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function Ta(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=ql[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(!Wl.has(d))return`it has a <${d}> element, which a picture does not need`;let l=e[e.length-1];if(l&&Vl.has(l))return`it has an element inside a <${l}>, which the page reads as HTML`;let f=a[0].length;for(let p=Ma.exec(o.slice(f));p;p=Ma.exec(o.slice(f))){let h=Xl(d,p[1],p[2]??p[3]??"");if(h)return h;f+=p[0].length}let u=/^\s*(\/?)>/.exec(o.slice(f));if(!u)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`;u[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=f+u[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 Da(n){if(n){if(!Ia(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 Ta(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}function Ql(n){return Da(n?.favicon)}var Fa={"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":Le.mono},ef=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],Za=["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 nf=n=>new Set(n.map(e=>e.toLowerCase()));function tf(n){return nf([...ef,...Za]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function rf(n){return Fa[n]??n}function zx(n){let e=yt({accent:n,base:an});return e.ok||!e.missing.every(t=>t.startsWith("warn"))?e:yt({accent:n,base:an,warn:{light:an.light.bad,dark:an.dark.bad}})}var ce={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 of(n){return n?{connectors:{all:{...ce.connectors.all,...n.connectors?.all??{}},byEdge:{...ce.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...ce.captions,...n.captions??{}},grid:{...ce.grid,...n.grid??{}},lattice:{...ce.lattice,...n.lattice??{}},tags:{...ce.tags,...n.tags??{}},emphasis:{...ce.emphasis,...n.emphasis??{}},marks:{...ce.marks,...n.marks??{}}}:ce}function sf(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function af(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 df(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 l of r){if(a.includes(l))for(let f of d)c.add(f);if(s.to==="*"||d.includes(l))for(let f of a)c.add(f)}if(c.size===0)return{ok:!1,at:o};r=c}return{ok:!0,reached:r}}function cf(n){return[...n.mutations??[],...at(n.schema,n.mutations??[])]}function uf(n){let e=[...n.schema.kinds],t=cf(n),r=new Map,o=new Map;for(let m of t){o.set(m.name,m.creates??[]);let g=_e(m.input).filter(x=>!x.optional&&!x.kinds.includes("*")).flatMap(x=>x.kinds);r.set(m.name,[...new Set(g)])}let i=new Map;for(let m of e)i.set(m,[]);for(let m of t)for(let g of o.get(m.name)??[])i.get(g)?.push(m.name);let s=new Map,a=new Set;for(let m=0;;m+=1){let g=[];for(let x of t)if((r.get(x.name)??[]).every(v=>a.has(v)))for(let v of o.get(x.name)??[])a.has(v)||g.push(v);if(g.length===0)break;for(let x of g)a.add(x),s.set(x,m)}let d=m=>{let g=i.get(m)??[];if(g.length===0)return[];let x=g.map(S=>r.get(S)??[]).sort((S,v)=>S.length-v.length)[0];return[...new Set(x)].filter(S=>S!==m)},c=new Map,l=m=>{let g=c.get(m);if(g)return g;let x=new Set;c.set(m,x);for(let S of d(m)){x.add(S);for(let v of l(S))x.add(v)}return x.delete(m),x},f=new Map(e.map(m=>[m,0]));for(let m of e)for(let g of l(m))f.set(g,(f.get(g)??0)+1);let u=e.map(m=>({kind:m,madeBy:[...i.get(m)??[]].sort(),needs:[...d(m)].sort(),depth:s.get(m)??null})).sort((m,g)=>(m.depth??Number.MAX_SAFE_INTEGER)-(g.depth??Number.MAX_SAFE_INTEGER)||(f.get(g.kind)??0)-(f.get(m.kind)??0)||m.kind.localeCompare(g.kind)),p=u.filter(m=>m.depth===0).map(m=>m.kind),h=[...new Set(t.filter(m=>(r.get(m.name)??[]).length===0).filter(m=>(o.get(m.name)??[]).length>0).map(m=>m.name))].sort(),y=u.filter(m=>m.depth===null).map(m=>({kind:m.kind,why:m.madeBy.length===0?"no act declares that it creates this kind":`every act that makes it needs ${m.needs.map(g=>`"${g}"`).join(", ")}, which nothing can make first`}));return{order:u,roots:p,doors:h,unreachable:y}}function lf(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function Jr(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 ff(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function pf(n,e,t,r=2500,o){let i=new Map;for(let[s,a]of n)Jr(a,t,r)&&i.set(s,a);for(let s of e){if(!Jr(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 hf(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{vi as a,wi as b,Od as c,Ad as d,hn as e,Rd as f,vc as g,ie as h,Ag as i,Rg as j,Wn as k,Pg as l,zg as m,Eg as n,Pc as o,Ng as p,Vn as q,Wi as r,Mg as s,Ig as t,jg as u,Tg as v,qi as w,Ve as x,Hi as y,Dg as z,Fg as A,Q as B,Fc as C,xt as D,jn as E,ee as F,Xt as G,Yi as H,Ee as I,Hn as J,Cm as K,Lc as L,we as M,Qt as N,F as O,Gc as P,er as Q,z as R,Qi as S,Uc as T,Ne as U,yn as V,Kc as W,ke as X,Jn as Y,se as Z,Yn as _,eu as $,Cr as aa,Ol as ba,nu as ca,T as da,xn as ea,U as fa,ou as ga,Qn as ha,sy as ia,iu as ja,su as ka,Al as la,Z as ma,W as na,Se as oa,Qe as pa,Je as qa,Rl as ra,dr as sa,cr as ta,du as ua,ur as va,lr as wa,_e as xa,ls as ya,Ye as za,fu as Aa,pu as Ba,ps as Ca,hu as Da,hs as Ea,gs as Fa,mu as Ga,ms as Ha,bu as Ia,fs as Ja,xu as Ka,ys as La,Zu as Ma,Ky as Na,ge as Oa,de as Pa,Cu as Qa,An as Ra,Rn as Sa,Lu as Ta,rt as Ua,Cs as Va,Ls as Wa,Gs as Xa,Xu as Ya,Us as Za,Qu as _a,Ks as $a,Fe as ab,el as bb,ll as cb,Er as db,ea as eb,En as fb,Nr as gb,Mr as hb,ta as ib,Lr as jb,Pl as kb,Fl as lb,Vr as mb,Zl as nb,an as ob,Le as pb,Ll as qb,Gl as rb,Ul as sb,Ia as tb,Ta as ub,Da as vb,Ql as wb,tf as xb,rf as yb,zx as zb,of as Ab,sf as Bb,af as Cb,nl as Db,tl as Eb,rl as Fb,ol as Gb,df as Hb,yl as Ib,bl as Jb,Ys as Kb,xa as Lb,rn as Mb,Dr as Nb,pt as Ob,wa as Pb,ka as Qb,Fr as Rb,vl as Sb,wl as Tb,kl as Ub,Zr as Vb,Sa as Wb,_a as Xb,Sl as Yb,$a as Zb,Oa as _b,$l as $b,Aa as ac,uf as bc,lf as cc,ff as dc,pf as ec,hf as fc};
@@ -1 +0,0 @@
1
- import{j as n}from"./chunk.I5U42VDK.js";import"./chunk.4MAYBFPU.js";import"./chunk.LEVR7WLB.js";import"./chunk.WVUJXDXZ.js";import{e as p}from"./chunk.TAW67PZU.js";import"./chunk.YOMW4MKD.js";import"./chunk.DRIWJRQW.js";import"./chunk.KSEKVHJJ.js";import"./chunk.JIWB6VGT.js";import"./chunk.PKFL2AR4.js";import"./chunk.XNYBOKLW.js";import"./chunk.AHDOKM4O.js";import"./chunk.6R4EI47C.js";import"./chunk.D3XF643V.js";import"./chunk.NLFLFIDS.js";import"./chunk.6LJ66MB7.js";import"./chunk.SVL6I37U.js";import"./chunk.P7YN4Z3K.js";import{b as m}from"./chunk.MRK6QJV5.js";import{b as t}from"./chunk.AJZBJBMO.js";var i=t(m(),1),a=new WeakMap;function l(o){let e=a.get(o);if(!e){let r=p(o);e=c=>c.mode==="fullscreen"?(0,i.jsx)(n,{blocks:r,slot:"home",heading:2,firstHeading:1}):(0,i.jsx)(n,{blocks:r,slot:"home",heading:3,firstHeading:2}),a.set(o,e)}return e}export{l as homeView};
@@ -1 +0,0 @@
1
- import{a,b}from"./chunk.4INXWGIT.js";import"./chunk.6GJF3F7L.js";import"./chunk.I5U42VDK.js";import"./chunk.4MAYBFPU.js";import"./chunk.QFJRXAU3.js";import"./chunk.UEEXBS2U.js";import"./chunk.6MZBFEXW.js";import"./chunk.ZLPA5BAW.js";import"./chunk.NIEQZOHX.js";import"./chunk.XOC5BRPU.js";import"./chunk.LEVR7WLB.js";import"./chunk.WVUJXDXZ.js";import"./chunk.TAW67PZU.js";import"./chunk.YOMW4MKD.js";import"./chunk.DRIWJRQW.js";import"./chunk.KSEKVHJJ.js";import"./chunk.JIWB6VGT.js";import"./chunk.PKFL2AR4.js";import"./chunk.XNYBOKLW.js";import"./chunk.AHDOKM4O.js";import"./chunk.6R4EI47C.js";import"./chunk.UUMXYMOX.js";import"./chunk.D3XF643V.js";import"./chunk.NLFLFIDS.js";import"./chunk.6LJ66MB7.js";import"./chunk.SVL6I37U.js";import"./chunk.P7YN4Z3K.js";import"./chunk.MRK6QJV5.js";import"./chunk.AJZBJBMO.js";export{b as declaredLensView,a as formatFor};
@@ -1 +0,0 @@
1
- import{b as Ie,c as te,d as Ke,e as H,g as fe,h as Le,o as J}from"./chunk.JIWB6VGT.js";import{A as Ee,K as ce,L as ze,Y as De,a as he,b as we,c as be,ca as Ge,cb as Te,d as W,da as $e,f as se,ga as le,h as N,ha as Me,i as ke,j as ve,k as ne,l as Oe,m as je,o as Re,ob as Fe,p as Ae,q as ae,qa as Z,v as xe,va as Pe,x as de,y as Se,yb as Ce,zb as Ne}from"./chunk.P7YN4Z3K.js";function on(n,c){let e=n.brand??{},i=e.accent?Ne(e.accent):void 0;i&&!i.ok&&c.push(Le("brand","brand.accent",`that accent cannot make a readable brand, so the app keeps Graview's colors: ${i.why}`,"pick a color further from orange-red, or a darker one"));let l=typeof e.logo=="string"?{src:e.logo}:e.logo,d=e.name??n.name,O=e.typography?Object.fromEntries(Object.entries(e.typography).filter(([,R])=>typeof R=="string"&&!/url\(|@import|[;{}<>\\]/i.test(R)).map(([R,E])=>[R,Ce(E)])):void 0;return{name:d,schemes:i?.ok?i.schemes:Fe,...e.currency?{currency:e.currency}:{},...e.locale?{locale:e.locale}:{},...l?{logo:l.src,logoAlt:l.alt??d}:{},...e.favicon?{favicon:e.favicon}:{},...n.description?{subtitle:n.description}:{},...O?{typography:O}:{},...e.shape?{shape:e.shape}:{},...e.accents?{accents:e.accents}:{},...e.scheme?{scheme:e.scheme}:{}}}function Ve(n){let{currency:c,locale:e}=n.brand??{};return{...c?{currency:c}:{},...e?{locale:e}:{}}}var He=new WeakMap;function qe(n,c){He.set(n,c)}var Je=[{where:"settings[]",was:"honoured",now:"honored",since:"0.1.16"},{where:"pages",was:"overview",now:"scene",since:"0.1.17"}],pe=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function Be(n,c=Je){if(!pe(n))return{document:n,respelled:[]};let e=[],i=n;for(let l of c)i=ue(i,l.where.split("."),l,"",e);return{document:i,respelled:e}}function ue(n,c,e,i,l){if(c.length===0){if(!pe(n)||!Object.hasOwn(n,e.was))return n;l.push(`${i}${e.was}`);let{[e.was]:M,...z}=n;return Object.hasOwn(n,e.now)?z:{...z,[e.now]:M}}if(!pe(n))return n;let[d,...O]=c,R=d.endsWith("[]"),E=R?d.slice(0,-2):d,A=n[E],$=A;if(!R)$=ue(A,O,e,`${i}${E}.`,l);else if(Array.isArray(A)){let M=A.map((z,P)=>ue(z,O,e,`${i}${E}.${P}.`,l));$=M.some((z,P)=>z!==A[P])?M:A}return $===A?n:{...n,[E]:$}}var Ze="graview-compiled@1",I="id",_e=n=>typeof n=="string"&&/^\$[A-Za-z][A-Za-z0-9]*$/.test(n)?n.slice(1):void 0;function Ue(n){let c=Object.entries(n.fields);return c.find(([,e])=>e.required&&(e.type==="string"||e.type==="text"))?.[0]??c.find(([,e])=>e.type==="string")?.[0]}function We(n,c){let e;switch(n.type){case"string":e=N().check(W(500));break;case"text":e=N().check(W(2e4));break;case"number":case"integer":{let i=[...n.type==="integer"?[Oe()]:[],...n.min===void 0?[]:[we(n.min)],...n.max===void 0?[]:[he(n.max)],...n.step===void 0?[]:[be(n.step)]];e=i.length>0?ne().check(...i):ne();break}case"boolean":e=je();break;case"date":e=N().check(se(/^\d{4}-\d{2}-\d{2}$/,"a date like 2026-10-02"));break;case"datetime":e=N().check(Se(i=>!Number.isNaN(Date.parse(i)),"a date and time like 2026-10-02T14:30:00Z"));break;case"enum":e=xe(n.options);break;case"list":e=Ae(n.of==="number"?ne():n.of==="date"?N().check(se(/^\d{4}-\d{2}-\d{2}$/)):n.of==="image"||n.of==="file"?ce(n.of):N().check(W(500))).check(W(200));break;case"image":case"file":e=ce(n.type);break;case"url":e=ve();break;case"email":e=ke();break}return n.description&&(e=e.check(Ee(n.description))),c?de(e):e}var U=n=>{throw new Z(`there is no record "${n}"`,"invalid")},Qe=n=>"field"in n?We(n.field,n.optional):"ref"in n?Pe(n.ref):de(Re()),Xe=new WeakMap;var re=n=>typeof n=="object"&&n!==null&&!Array.isArray(n),ye=(n,c)=>re(c)&&Object.keys(n??{}).length===Object.keys(c).length&&Object.keys(n??{}).every(e=>Object.hasOwn(c,e));function kn(n,c={}){let e=re(n)?n.format:void 0;if(e!==Ze)return{ok:!1,findings:[fe("compiled-format","format",e===void 0?"this is not a compiled Graview app":`this compiled app is ${JSON.stringify(e)}, and this build reads ${Ze}`,"compile the document instead")]};let i=n,l=Be(i.document).document,d=l===i.document?i:{...i,document:l},O=re(l)&&typeof l.name=="string"&&re(l.kinds)&&ye(l.kinds,d.kinds)&&ye(l.acts,d.acts)&&ye(l.rules,d.rules)&&Array.isArray(d.edges)&&Array.isArray(d.findings),R={ok:!1,findings:[fe("compiled-shape","","this compiled app's parts do not match its document","compile the document instead")]};if(!O)return R;try{return Ye(d,c)}catch{return R}}function Ye(n,c={}){let{document:e}=n,i=c.today??(()=>new Date().toISOString().slice(0,10)),l=new Map(n.edges.map(([p,r])=>[p,r])),d=new Map;for(let[p,r]of Object.entries(e.kinds)){let b=n.kinds[p]?.computed;d.set(p,{fields:new Set(Object.keys(r.fields)),edges:new Map(Object.entries(r.edges??{}).map(([w,x])=>[w,x.cardinality??"many"])),...b?{computed:new Map(b)}:{}})}n.facts&&d.set(Ie,{computed:new Map(n.facts)});let O=Ve(e),R=Object.entries(e.kinds).map(([p,r])=>{let b={};for(let[o,u]of Object.entries(r.fields))b[o]=We(u,!u.required);let{label:w,describe:x}=n.kinds[p]??{},D=Object.entries(r.computed??{}).map(([o,u])=>[o,typeof u=="string"?{expr:u}:u]),S=Object.fromEntries([...Object.entries(r.fields).filter(([,o])=>o.label).map(([o,u])=>[o,u.label]),...D.filter(([,o])=>o.label).map(([o,u])=>[o,u.label])]),T=Object.fromEntries(Object.entries(r.fields).filter(([,o])=>o.default!==void 0).map(([o,u])=>[o,u.default])),K=Object.fromEntries(Object.entries(r.edges??{}).map(([o,{renamedFrom:u,...L}])=>[o,L])),m=o=>r[o]?{[o]:r[o]}:{};return ze(p,{fields:ae(b),edges:K,...m("plural"),...m("noun"),...m("description"),...w?{label:o=>J(w,{node:o,kinds:d,today:i(),money:O})||o.id}:{},...x?{describe:o=>J(x,{node:o,kinds:d,today:i(),money:O})}:{},...m("lifecycle"),...m("figure"),...m("fieldRoles"),...r.computed&&Object.keys(r.computed).length>0?{computed:r.computed}:{},...Object.keys(S).length>0||r.glance||r.page?{display:{...Object.keys(S).length>0?{labels:S}:{},...r.glance?{glance:[...r.glance]}:{},...r.page?{page:r.page}:{}}}:{},...Object.keys(T).length>0?{defaults:T}:{}})}),E=Ge(R,e.computed);function A(p){return E.tryDefinition(p.kind)?.label?.(p)??p.id}let $=[];for(let[p,r]of Object.entries(e.acts??{})){let b=n.acts[p],{title:w,effects:x,guard:D,refusal:S,destructive:T,idempotent:K,creates:m,connects:o,severs:u,writes:L,writesOther:Q,sets:h}=b,V=new Map(b.args),F={};for(let[y,k]of V)F[y]=Qe(k);let q=r.on===void 0?[]:Array.isArray(r.on)?r.on:[r.on],X=new Map(b.exprs);$.push(Te(p,{input:ae(F),title:w,...r.description?{description:r.description}:{},...r.fromTheOtherEnd?{fromTheOtherEnd:r.fromTheOtherEnd}:{},...V.has(I)?{subject:{kinds:q.length>0?q:"*",arg:I}}:{},...T?{destructive:!0}:{},...K?{idempotent:!0}:{},...m.length>0?{creates:m}:{},...o.length>0?{connects:o}:{},...u.length>0?{severs:u}:{},writes:L,...Object.keys(Q).length>0?{writesOther:Q}:{},...Object.keys(h).length>0?{sets:h}:{},describe:(y,k)=>{let v=typeof y[I]=="string"?k.getNode(y[I]):void 0,G=v?A(v):Object.values(y).find(g=>typeof g=="string");return G?`${w}: ${String(G)}`:w},apply(y,k){let v=y.graph,G=typeof k[I]=="string"?k[I]:void 0,g=G?v.getNode(G):void 0;if(G&&!g&&U(G),g&&q.length>0&&!q.includes(g.kind))throw new Z(`"${w}" acts on ${q.join(" or ")}, not on ${De(g.kind)}`,"invalid");let Y={};for(let[t,s]of Object.entries(k))s!==void 0&&(Y[t]=s);if(D&&g){let t;try{t=H(D,{graph:v,subject:g,kinds:d,bindings:Y,today:i()})}catch(s){throw s instanceof te?new Z(`"${w}" could not be judged: ${s.sentence}`):s}if(t!==!0)throw new Z(S?J(S,{node:g,kinds:d,graph:v,bindings:Y,today:i(),money:O}):`"${w}" is not allowed for ${A(g)} right now`)}let ee=new Map,oe=t=>v.has(t)||[...ee.values()].includes(t),me=new Set,ie=t=>{let s=$e(t);me.has(s)||(me.add(s),y.removeEdge(t))},B=(t,s)=>{if(t&&typeof t=="object"&&!Array.isArray(t)&&"expr"in t)try{return H(X.get(t.expr),{graph:v,subject:s??g??null,kinds:d,bindings:Y,today:i()})}catch(f){throw f instanceof te?new Z(`"${w}" could not work out a value: ${f.sentence}`):f}let a=_e(t);return a===void 0?typeof t=="string"&&t.startsWith("$$")?t.slice(1):t:a==="subject"?G:a==="now"?new Date().toISOString():a==="today"?i():ee.has(a)?ee.get(a):k[a]};for(let t of x)if("create"in t){let s=e.kinds[t.create],a={kind:t.create};for(let[_,C]of Object.entries(s.fields))C.default!==void 0&&(a[_]=C.default);for(let[_,C]of Object.entries(t.set??{})){let ge=B(C,void 0);ge!==void 0&&(a[_]=ge)}let f=Ue(s),j=y.freshId(String((f&&a[f])??t.create),t.create);y.addNode({id:j,...a}),t.as&&ee.set(t.as,j)}else if("connect"in t||"sever"in t){let s="connect"in t?t.connect:t.sever,a=String(B(t.from,void 0)??""),f=String(B(t.to,void 0)??"");if(oe(a)||U(a),oe(f)||U(f),"connect"in t){if(l.get(s)?.cardinality==="one")for(let j of v.out(a,s))j.id!==f&&ie({kind:s,from:a,to:j.id});v.out(a,s).some(j=>j.id===f)||y.addEdge({kind:s,from:a,to:f})}else ie({kind:s,from:a,to:f})}else if("set"in t){let s=String(B(t.target??"$subject",void 0)??""),a=v.getNode(s);!a&&!oe(s)&&U(s);let f={};for(let[j,_]of Object.entries(t.set)){let C=B(_,a);C!==void 0&&(f[j]=C)}Object.keys(f).length>0&&y.patchNode(s,f)}else if("remove"in t){let s=String(B(t.remove,void 0)??"");v.has(s)||U(s),y.removeNode(s)}else if("replace"in t&&g){let s=k.to;for(let a of t.replace){let f=l.get(a)?.from.includes(g.kind)??!0;for(let j of f?v.out(g.id,a):v.in(g.id,a))a===t.keep&&j.id===s||ie(f?{kind:a,from:g.id,to:j.id}:{kind:a,from:j.id,to:g.id})}}}}))}let M=[];for(let[p,r]of Object.entries(e.rules??{})){let{title:b,require:w,when:x,says:D}=n.rules[p],S=r.repairs??[],T=(m,o)=>{let u={graph:m,subject:o,kinds:d,today:i()},L;try{if(x&&H(x,u)!==!0)return[];L=H(w,u)===!0}catch(h){throw h instanceof Ke?new Me(h.sentence):h instanceof te?new Error(h.sentence):h}if(L)return[];let Q=S.flatMap(h=>{let V=e.acts?.[h.act],F={};o&&(V?.on||/^(edit|remove)-/.test(h.act))&&(F[I]=o.id);for(let[y,k]of Object.entries(h.args??{}))F[y]=_e(k)==="subject"?o?.id:k;let X=(V?n.acts[h.act].args:[]).filter(([y,k])=>k.required&&F[y]===void 0).map(([y])=>y);return[{mutation:h.act,label:h.label??V?.title??h.act.replace(/-/g," "),args:F,...X.length>0?{missing:X}:{}}]});return[{invariant:p,...o?{subjectId:o.id}:{},label:b,message:D?J(D,{node:o,kinds:d,graph:m,today:i(),money:O}):o?`${A(o)}: ${b}`:b,nodeIds:o?[o.id]:[],repairs:Q}]},K={label:b,shape:{over:r.over,require:w,when:x,says:D,declared:e.kinds,money:O,kinds:d,today:i},judgment:{require:r.require,...r.when?{when:r.when}:{},...r.says?{says:r.says}:{}},...r.description?{description:r.description}:{},...S.length>0?{repairs:S.map(m=>m.act)}:{}};M.push(r.over==="graph"?le(p,{scope:"graph",...K,evaluate:({graph:m})=>T(m,null)}):le(p,{scope:{kind:r.over},...K,evaluate:({graph:m,subject:o})=>T(m,o)}))}let z=e.policy?{grants:e.policy.grants,...e.policy.sees?{sees:e.policy.sees}:{},...e.roles?{roles:e.roles}:{}}:void 0,P={name:e.name,schema:E,mutations:$,invariants:M,...z?{policy:z}:{},...n.brand?{brand:n.brand}:{},...e.modules?{modules:e.modules}:{},...e.lenses?{lenses:e.lenses}:{},...e.pages?{pages:e.pages}:{},...e.settings?{settings:e.settings}:{},...n.viewSpecs?{viewSpecs:n.viewSpecs}:{},...n.home?{home:n.home}:{},version:e.version??1};return qe(P,e),Xe.set(P,n),{ok:!0,app:P,document:e,findings:n.findings,sights:e.policy?.sees,kinds:d}}export{Be as a,on as b,Ze as c,I as d,_e as e,Ue as f,kn as g,Ye as h};
@@ -1 +0,0 @@
1
- import{a as K,b as z,c as Z,d as G}from"./chunk.YOMW4MKD.js";import{a as X}from"./chunk.DRIWJRQW.js";import{c as R,e as H}from"./chunk.KSEKVHJJ.js";import{a as O,b as D,c as $,e as j,l as U,m as g,n as W}from"./chunk.JIWB6VGT.js";import{B as v,C as _,F as I,H as A,I as k,J as b,O as L,S as x,X as F}from"./chunk.P7YN4Z3K.js";var T=e=>e?._zod?.def,ae=/^\^\\d\{4\}-\\d\{2\}-\\d\{2\}\$$/;function ie(e){let n=T(e),a=!0,r;for(let i=0;n&&i<4;i++){if(n.type==="optional"||n.type==="nullable")a=!1;else if(n.type==="default")a=!1,r=n.defaultValue;else break;n=T(n.innerType)}if(!n)return{why:"it is not a zod field"};let o=_(e),t={...a?{required:!0}:{},...r!==void 0?{default:r}:{},...o?{description:o}:{}},d=(n.checks??[]).map(i=>T(i)),l=b(e);if(l)return{spec:{type:l,...t}};switch(n.type){case"string":{let i=n.format;return i==="email"?{spec:{type:"email",...t}}:i==="url"?{spec:{type:"url",...t}}:i==="date"?{spec:{type:"date",...t}}:i==="datetime"?{spec:{type:"datetime",...t}}:d.some(s=>s?.format==="regex"&&ae.test(String(s?.pattern?.source??"")))?{spec:{type:"date",...t}}:{spec:{type:"string",...t}}}case"number":{let i={};for(let s of d){let u=s?.value;typeof u=="number"&&(s?.check==="greater_than"&&s.inclusive?i.min=Math.max(i.min??u,u):s?.check==="less_than"&&s.inclusive?i.max=Math.min(i.max??u,u):s?.check==="multiple_of"&&(i.step=u))}return{spec:{type:d.some(s=>s?.format==="safeint"||s?.format==="int")?"integer":"number",...i,...t}}}case"boolean":return{spec:{type:"boolean",...t}};case"enum":{let i=Object.keys(n.entries??{});return i.length>0?{spec:{type:"enum",options:i,...t}}:{why:"it is an enum with no options"}}case"array":{let i=T(n.element),s=b(n.element)??(i?.type==="number"?"number":i?.type==="string"?"string":void 0);return s?{spec:{type:"list",of:s,...t}}:{why:`it is a list of ${String(i?.type??"something")}, and a document lists words, numbers, dates, images or files`}}default:return{why:`it is a ${String(n.type)}, which a document has no field type for`}}}function N(e){let n=ie(e);return"spec"in n?n.spec:void 0}var M=e=>e.caption?.trim()||e.name;function se(e){let n=e?.fields?.shape??{};return Object.keys(n).filter(a=>{let r=v(n[a]);for(;r?.innerType;)r=v(r.innerType);return b(n[a])!==void 0||r?.type==="array"&&b(r.element)!==void 0})}function ve(e,n){for(let a of se(n)){let r=k(e[a]).find(A);if(r)return r}}var S=e=>{try{return e()}catch{return null}},ee=e=>typeof e=="string"&&K.includes(e);function de(e){if(e!==void 0)return ee(e)?e:e&&typeof e=="object"&&typeof e.expr=="string"?{expr:S(()=>R(e.expr))}:"neutral"}var le=4;function ue(e){let n=typeof e.list=="string"?S(()=>R(e.list)):null,a=e.sort,r=typeof a=="string"?a:a&&typeof a=="object"&&typeof a.by=="string"?a.by:void 0,o=a&&typeof a=="object"?a.direction:void 0,t=n,d;if(n&&r!==void 0)if(o==="choices")d=r;else{let p=S(()=>R(r));t=p?{t:"call",fn:"sort",args:[n,p,{t:"lit",value:o==="desc"?"desc":"asc",at:0}],at:0}:null}let l=typeof e.limit=="number"&&Number.isInteger(e.limit)&&e.limit>=1?Math.min(e.limit,G):void 0,i=e.group,s=typeof i=="string"?i:i&&typeof i=="object"&&typeof i.by=="string"?i.by:void 0,u=i&&typeof i=="object"&&i.headings&&typeof i.headings=="object"?i.headings:{};return{t:"list",source:t,...d?{choiceOrder:d}:{},...l?{limit:l}:{},...s?{group:{by:s,headings:Object.fromEntries(Object.entries(u).filter(p=>typeof p[1]=="string"))}}:{},...typeof e.empty=="string"?{empty:e.empty}:{},as:e.as==="card"?"card":"row"}}function q(e,n=1,a=""){if(!Array.isArray(e)||n>le)return[];let r={};return e.flatMap(o=>{if(!o||typeof o!="object"||Array.isArray(o))return[];let t=o,d=f=>typeof f=="string"?S(()=>H(f)):null,l=f=>typeof f=="string"?S(()=>R(f)):null,i=de(t.tone),s=typeof t.label=="string"?t.label:void 0,u=f=>Object.hasOwn(t,f),p=typeof t.currency=="string"&&/^[A-Z]{3}$/.test(t.currency)?t.currency:void 0,y=u("list")?"list":u("headline")?"headline":typeof t.figure=="string"?"number":ye.find(u);if(!y)return[];let B=r[y]=(r[y]??0)+1,E=t.key,P=typeof E=="string"&&E?E:`${a}${y}.${B}`;return[{...(()=>{switch(y){case"list":return ue(t);case"number":{let f=Z.includes(t.as)?t.as:void 0;return{t:y,value:l(t.figure),...f?{as:f}:{},...p?{currency:p}:{},...s?{label:d(s)}:{}}}case"headline":case"title":return{t:y,parts:d(t[y])};case"text":case"badge":return{t:y,parts:d(t[y]),...i?{tone:i}:{}};case"field":{let f=z.includes(t.as)?t.as:void 0;return{t:y,field:String(t.field),...f?{as:f}:{},...p?{currency:p}:{},...s?{label:s}:{}}}case"image":return{t:y,field:String(t.image),as:t.as==="gallery"?"gallery":"thumb",...s?{label:s}:{}};case"progress":{let f=t.progress??{};return{t:y,value:l(f.value),max:l(f.max),...s?{label:d(s)}:{}}}case"group":return{t:y,blocks:q(t.group,n+1,`${P}.`),direction:t.direction==="row"?"row":"column"};case"when":return{t:y,when:l(t.when),show:q(t.show,n+1,`${P}.`)};default:return{t:y}}})(),key:P}]})}var ye=["title","text","badge","field","image","progress","group","when","divider","figure"],m="\u2014",fe=500;function h(e,n){if(!e)return{ok:!1,problem:"an expression that does not parse"};try{return{ok:!0,value:j(e,{graph:n.graph??U,subject:n.node,kinds:n.kinds,today:n.today,budget:n.budget??fe})}}catch(a){return{ok:!1,problem:a instanceof Error?a.message:String(a)}}}function w(e,n){if(!e)return{text:m,problem:"a template that does not parse"};let a,r=e.map(o=>{if(o.text!==void 0)return o.text;let t=h(o.expr??null,n);return t.ok?g(t.value,o.format,n.today,o.formatArgs,n.money):(a??=`{${o.source??""}}: ${t.problem}`,m)}).join("");return a?{text:r,problem:a}:{text:r}}function J(e,n){if(e===void 0)return;if(typeof e=="string")return e;let a=h(e.expr,n);return a.ok&&ee(a.value)?a.value:"neutral"}function pe(e){if(typeof e=="string")try{let n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"?n.href:void 0}catch{return}}function ce(e,n,a,r,o){if(n==null||n==="")return m;if(typeof n=="boolean")return n?"yes":"no";if(r)return g(n,r,a.today,[],o?{...a.money,currency:o}:a.money);let t=a.fields[e];if(a.definition?.display?.format?.[e])return x(a.definition,e,n);if(t?.type==="date")return g(n,"date",a.today);if(t?.type==="enum"&&typeof n=="string")return x(a.definition,e,n);if(typeof n=="number")return n.toLocaleString("en-US");let d=k(n);return d[0]?d.map(M).join(", "):Array.isArray(n)?n.map(l=>String(l)).join(", "):typeof n=="object"?m:String(n)}function me(e,n,a,r,o){return typeof e!="number"?String(e):n==="money"?W(e,a?{...o,currency:a}:o):n==="percent"?g(e,n,r):e.toLocaleString("en-US",{maximumFractionDigits:2})}var c=(e,n)=>n?{...e,problem:n}:e;function ge(e,n,a){switch(e.t){case"title":{let r=w(e.parts,n);return c({t:"title",text:r.text},r.problem)}case"text":{let r=w(e.parts,n),o=J(e.tone,n);return c({t:"text",text:r.text,...o?{tone:o}:{}},r.problem)}case"badge":{let r=w(e.parts,n);return c({t:"badge",text:r.text,tone:J(e.tone,n)??"neutral"},r.problem)}case"field":{let r=e.label??F(n.definition,e.field);if(!n.node)return{t:"field",field:e.field,label:r,text:m,problem:`"${e.field}" names a field, and these blocks are about no one record`};let o=n.kinds.get(n.node.kind)?.computed?.has(e.field),t,d;if(o){let s=h({t:"ident",name:e.field,at:0},n);s.ok?t=s.value!==null&&typeof s.value=="object"?g(s.value,void 0,n.today):s.value:d=s.problem}else t=Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0;let l=n.fields[e.field]?.type==="url"&&e.as===void 0?pe(t):void 0,i=S(()=>ce(e.field,t,n,e.as,e.currency))??m;return c({t:"field",field:e.field,label:r,text:i,...l?{href:l}:{}},d)}case"image":{let r=k(n.node&&Object.hasOwn(n.node,e.field)?n.node[e.field]:null),o=e.as==="gallery"?r:r.filter(A).slice(0,1);return{t:"image",field:e.field,label:e.label??F(n.definition,e.field),as:e.as,files:o,text:o.map(M).join(", ")||m}}case"progress":{let r=h(e.value,n),o=h(e.max,n),t=e.label?w(e.label,n):{text:"Progress"},d=t.text,l=r.ok?o.ok?t.problem:o.problem:r.problem;return r.ok&&o.ok&&typeof r.value=="number"&&typeof o.value=="number"&&Number.isFinite(r.value)&&Number.isFinite(o.value)&&o.value>0?c({t:"progress",label:d,value:r.value,max:o.value,text:`${g(r.value,void 0,n.today)} of ${g(o.value,void 0,n.today)}`},l):c({t:"progress",label:d,text:m},l)}case"group":return{t:"group",direction:e.direction,blocks:Y(e.blocks,n)};case"when":{let r=h(e.when,n),o=r.ok&&r.value===!0;return c({t:"when",shown:o,blocks:o?Y(e.show,n):[]},r.ok?void 0:r.problem)}case"divider":return{t:"divider"};case"figure":return{t:"figure"};case"headline":{let r=w(e.parts,n),o=Math.min(6,Math.max(1,(a?n.firstHeading:void 0)??n.heading??3));return c({t:"headline",level:o,text:r.text},r.problem)}case"number":{let r=h(e.value,n),o=!r.ok||r.value===null||typeof r.value=="object"?m:me(r.value,e.as,e.currency,n.today,n.money),t=e.label?w(e.label,n):void 0;return c({t:"number",text:o,...t?{label:t.text}:{}},r.ok?t?.problem:r.problem)}case"list":return be(e,n)}}function Y(e,n){let a=e.findIndex(r=>r.t==="headline");return e.map((r,o)=>({...ge(r,n,o===a),key:r.key}))}var he=new Set(["every","some","sum","min","max","sort"]);function We(e,n){let a=new Set,r=new Set,o=i=>{if(i)switch(i.t){case"ident":a.add(i.name);return;case"list":i.items.forEach(o);return;case"member":return o(i.object);case"unary":return o(i.operand);case"binary":return o(i.left),o(i.right);case"where":return o(i.set);case"call":i.args.forEach((s,u)=>{u===1&&he.has(i.fn)||o(s)});return;default:return}},t=i=>{for(let s of i??[])o(s.expr)},d=(i,s)=>{i.forEach((u,p)=>{let y=s[p];if(y)switch(u.t){case"field":case"image":a.add(u.field);return;case"title":case"text":case"badge":case"headline":t(u.parts);return;case"number":o(u.value),t(u.label);return;case"progress":o(u.value),o(u.max);return;case"group":y.t==="group"&&d(u.blocks,y.blocks);return;case"when":y.t==="when"&&y.shown&&d(u.show,y.blocks);return;case"list":if(y.t==="list")for(let B of y.members)r.add(B.id);return;default:return}})};d(e,n);let l=n[0];return{fields:a,records:r,...e[0]?.t==="title"&&l?.t==="title"?{title:l.text}:{}}}function be(e,n){let a=Math.min(6,(n.heading??3)+1),r=h(e.source,n);if(!r.ok)return{t:"list",as:e.as,failed:!0,members:[],headingLevel:a,more:0,problem:r.problem};let o=r.value,t=o instanceof O?o.nodes:o!==null&&typeof o=="object"&&!Array.isArray(o)?[o]:[];e.choiceOrder&&n.schema&&(t=we(t,e.choiceOrder,n.schema));let d=t.length;t=t.slice(0,e.limit??G);let l=e.limit===void 0?d-t.length:0;return{t:"list",as:e.as,failed:!1,members:t,...e.group&&n.schema&&t.length>0?{groups:Se(t,e.group,n.schema)}:{},headingLevel:a,...t.length===0&&e.empty?{empty:e.empty}:{},more:l}}function ne(e,n,a){let r=e.tryDefinition(n)?.fields?.shape,o=r&&Object.hasOwn(r,a)?N(r[a]):void 0;return o?.type==="enum"?o.options??[]:[]}var V=(e,n)=>Object.hasOwn(e,n)?e[n]:void 0;function we(e,n,a){let r=o=>{let t=ne(a,o.kind,n).indexOf(String(V(o,n)));return t<0?Number.MAX_SAFE_INTEGER:t};return e.map((o,t)=>({node:o,i:t,rank:r(o)})).sort((o,t)=>o.rank-t.rank||o.i-t.i).map(o=>o.node)}function Se(e,n,a){let r=[];for(let d of e)for(let l of ne(a,d.kind,n.by))r.includes(l)||r.push(l);let o=[];for(let d of r){let l=e.filter(s=>V(s,n.by)===d);if(l.length===0)continue;let i=a.tryDefinition(l[0].kind);o.push({value:d,heading:n.headings[d]??I(x(i,n.by,d)),members:l})}let t=e.filter(d=>!r.includes(String(V(d,n.by))));return t.length>0&&o.push({value:null,members:t}),o}function Q(e){return e.t==="list"||e.t==="headline"||e.t==="number"||e.t==="image"&&e.as==="gallery"?!0:e.t==="group"?e.blocks.some(Q):e.t==="when"?e.show.some(Q):!1}function re(e,n){let a=e.tryDefinition(n)?.fields?.shape??{},r={};for(let[o,t]of Object.entries(a)){let d=N(t);d&&(r[o]=d)}return r}var te=new WeakMap;function C(e){let n=te.get(e);return n||te.set(e,n=X(e)),n}function ke(e,n,a,r={}){let o=C(e),t={},d={},l=i=>{if(i instanceof O)return i.nodes.map(s=>l(s));if(Array.isArray(i))return i.map(s=>l(s));if(i!==null&&typeof i=="object"){let s=i;return{id:s.id,kind:s.kind,label:L(e.tryDefinition(s.kind),s)}}return i};for(let[i,s]of o.get(a?a.kind:D)?.computed??[])try{t[i]=l(j(s,{graph:n,subject:a,kinds:o,...r.today?{today:r.today}:{},...r.budget?{budget:r.budget}:{}}))}catch(u){if(!(u instanceof $))throw u;d[i]=u.sentence}return{values:t,refused:d}}function Xe(e,n,a){let{values:r}=ke(e,n,a);if(Object.keys(r).length===0)return a;let o=t=>Array.isArray(t)?t.map(o):t!==null&&typeof t=="object"?t.label:t;return{...a,...Object.fromEntries(Object.entries(r).map(([t,d])=>[t,o(d)]))}}var Re=500,Ae=2e4,oe=new WeakMap;function xe(e,n){let a=oe.get(e);a||oe.set(e,a=new Map);let r=a.get(n);return r||a.set(n,r=re(e,n)),r}function Qe(e,n,a,r={}){if(n&&typeof e.seenBy!="function")throw new TypeError("blockContextFor: a seat is read from a store (its `seenBy`); a bare { graph, schema } is read as it is handed, with no principal");let o=n?e.seenBy(n):e,t=n&&a?o.graph.getNode(a.id)??null:a,d=o.schema,l=t&&d.tryDefinition(t.kind),i=!t||(r.slot??"page")==="page",{money:s,firstHeading:u}=r;return{node:t,graph:o.graph,schema:d,kinds:C(d),fields:t?xe(d,t.kind):{},definition:l||void 0,today:r.today??o.today?.()??new Date().toISOString().slice(0,10),money:s,heading:r.heading??(i?2:3),firstHeading:u,budget:r.budget??(i?Ae:Re)}}export{N as a,M as b,se as c,ve as d,q as e,Y as f,We as g,Q as h,ke as i,Xe as j,Qe as k};