@graffiti-garden/implementation-local 1.0.7 → 1.0.8

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.
@@ -1,2 +1,2 @@
1
- import{c as i,e as o,f as d,g as a}from"./chunk-GE6AZATH.js";i();a();o();i();a();o();i();a();o();i();a();o();var Yt={type:"object",properties:{value:{type:"object"},channels:{type:"array",items:{type:"string"}},allowed:{type:"array",items:{type:"string"},nullable:!0},url:{type:"string"},actor:{type:"string"}},additionalProperties:!1,required:["value","channels","actor","url"]},en={...Yt,required:["value","channels"]};i();a();o();var L=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorForbidden",Object.setPrototypeOf(this,t.prototype)}},U=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorNotFound",Object.setPrototypeOf(this,t.prototype)}},ee=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorInvalidSchema",Object.setPrototypeOf(this,t.prototype)}},te=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorSchemaMismatch",Object.setPrototypeOf(this,t.prototype)}},re=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorTooLarge",Object.setPrototypeOf(this,t.prototype)}},ne=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorNotAcceptable",Object.setPrototypeOf(this,t.prototype)}},ie=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorCursorExpired",Object.setPrototypeOf(this,t.prototype)}};i();a();o();function ke(t){return typeof t=="string"?t:t.url}function ze(t,e){return!Array.isArray(t.allowed)||typeof e?.actor=="string"&&(t.actor===e.actor||t.allowed.includes(e.actor))}function Ie(t,e,r){if(r===t.actor)return t;let n=t.allowed&&r?[r]:void 0,c=t.channels.filter(u=>e.includes(u));return{...t,allowed:n,channels:c}}function Ve(t,e){let[r,n]=t.toLowerCase().split(";")[0].split("/");return!r||!n?!1:e.some(c=>{let[u,s]=c.toLowerCase().split(";")[0].split("/");return!u||!s?!1:(u===r||u==="*")&&(s===n||s==="*")})}var xe;async function we(t){if(!xe){let{Ajv:e}=await import("./ajv-IY2ZY7VT.js");xe=new e({strict:!1})}try{return xe.compile(t)}catch(e){throw new ee(e instanceof Error?e.message:String(e))}}i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();var Qt=Object.freeze({status:"aborted"});function b(t,e,r){function n(l,g){if(l._zod||Object.defineProperty(l,"_zod",{value:{def:g,constr:s,traits:new Set},enumerable:!1}),l._zod.traits.has(t))return;l._zod.traits.add(t),e(l,g);let p=s.prototype,y=Object.keys(p);for(let x=0;x<y.length;x++){let k=y[x];k in l||(l[k]=p[k].bind(l))}}let c=r?.Parent??Object;class u extends c{}Object.defineProperty(u,"name",{value:t});function s(l){var g;let p=r?.Parent?new u:this;n(p,l),(g=p._zod).deferred??(g.deferred=[]);for(let y of p._zod.deferred)y();return p}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:l=>r?.Parent&&l instanceof r.Parent?!0:l?._zod?.traits?.has(t)}),Object.defineProperty(s,"name",{value:t}),s}var O=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};var Se={};function E(t){return t&&Object.assign(Se,t),Se}i();a();o();i();a();o();i();a();o();function Be(t,e){return typeof e=="bigint"?e.toString():e}function Ue(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function ce(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}var Je=Symbol("evaluating");function I(t,e,r){let n;Object.defineProperty(t,e,{get(){if(n!==Je)return n===void 0&&(n=Je,n=r()),n},set(c){Object.defineProperty(t,e,{value:c})},configurable:!0})}function er(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function tr(...t){let e={};for(let r of t){let n=Object.getOwnPropertyDescriptors(r);Object.assign(e,n)}return Object.defineProperties({},e)}var Pe="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function ae(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var rr=Ue(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function Ke(t){if(ae(t)===!1)return!1;let e=t.constructor;if(e===void 0||typeof e!="function")return!0;let r=e.prototype;return!(ae(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function K(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function P(t){let e=t;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 We(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var Xe={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]};function qe(t,e){if(!Ke(e))throw new Error("Invalid input to extend: expected a plain object");let r=t._zod.def.checks;if(r&&r.length>0){let u=t._zod.def.shape;for(let s in e)if(Object.getOwnPropertyDescriptor(u,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let c=tr(t._zod.def,{get shape(){let u={...t._zod.def.shape,...e};return er(this,"shape",u),u}});return K(t,c)}function C(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue!==!0)return!0;return!1}function W(t,e){return e.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function oe(t){return typeof t=="string"?t:t?.message}function N(t,e,r){let n={...t,path:t.path??[]};if(!t.message){let c=oe(t.inst?._zod.def?.error?.(t))??oe(e?.error?.(t))??oe(r.customError?.(t))??oe(r.localeError?.(t))??"Invalid input";n.message=c}return delete n.inst,delete n.continue,e?.reportInput||delete n.input,n}function De(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}var He=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,Be,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},Ye=b("$ZodError",He),X=b("$ZodError",He,{Parent:Error});var ir=t=>(e,r,n,c)=>{let u=n?Object.assign(n,{async:!1}):{async:!1},s=e._zod.run({value:r,issues:[]},u);if(s instanceof Promise)throw new O;if(s.issues.length){let l=new(c?.Err??t)(s.issues.map(g=>N(g,u,E())));throw Pe(l,c?.callee),l}return s.value},ue=ir(X),or=t=>async(e,r,n,c)=>{let u=n?Object.assign(n,{async:!0}):{async:!0},s=e._zod.run({value:r,issues:[]},u);if(s instanceof Promise&&(s=await s),s.issues.length){let l=new(c?.Err??t)(s.issues.map(g=>N(g,u,E())));throw Pe(l,c?.callee),l}return s.value},se=or(X),ar=t=>(e,r,n)=>{let c=n?{...n,async:!1}:{async:!1},u=e._zod.run({value:r,issues:[]},c);if(u instanceof Promise)throw new O;return u.issues.length?{success:!1,error:new(t??Ye)(u.issues.map(s=>N(s,c,E())))}:{success:!0,data:u.value}},q=ar(X),cr=t=>async(e,r,n)=>{let c=n?Object.assign(n,{async:!0}):{async:!0},u=e._zod.run({value:r,issues:[]},c);return u instanceof Promise&&(u=await u),u.issues.length?{success:!1,error:new t(u.issues.map(s=>N(s,c,E())))}:{success:!0,data:u.value}},H=cr(X);i();a();o();i();a();o();i();a();o();var ur="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",sr=new RegExp(`^${ur}$`);var et=t=>{let e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)};var tt=/^-?\d+$/,rt=/^-?\d+(?:\.\d+)?$/;var M=b("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),lr={number:"number",bigint:"bigint",object:"date"};var nt=b("$ZodCheckGreaterThan",(t,e)=>{M.init(t,e);let r=lr[typeof e.value];t._zod.onattach.push(n=>{let c=n._zod.bag,u=(e.inclusive?c.minimum:c.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>u&&(e.inclusive?c.minimum=e.value:c.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}});var it=b("$ZodCheckNumberFormat",(t,e)=>{M.init(t,e),e.format=e.format||"float64";let r=e.format?.includes("int"),n=r?"int":"number",[c,u]=Xe[e.format];t._zod.onattach.push(s=>{let l=s._zod.bag;l.format=e.format,l.minimum=c,l.maximum=u,r&&(l.pattern=tt)}),t._zod.check=s=>{let l=s.value;if(r){if(!Number.isInteger(l)){s.issues.push({expected:n,format:e.format,code:"invalid_type",continue:!1,input:l,inst:t});return}if(!Number.isSafeInteger(l)){l>0?s.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort}):s.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort});return}}l<c&&s.issues.push({origin:"number",input:l,code:"too_small",minimum:c,inclusive:!0,inst:t,continue:!e.abort}),l>u&&s.issues.push({origin:"number",input:l,code:"too_big",maximum:u,inclusive:!0,inst:t,continue:!e.abort})}});var ot=b("$ZodCheckStringFormat",(t,e)=>{var r,n;M.init(t,e),t._zod.onattach.push(c=>{let u=c._zod.bag;u.format=e.format,e.pattern&&(u.patterns??(u.patterns=new Set),u.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=c=>{e.pattern.lastIndex=0,!e.pattern.test(c.value)&&c.issues.push({origin:"string",code:"invalid_format",format:e.format,input:c.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})});i();a();o();i();a();o();var ct={major:4,minor:3,patch:5};var S=b("$ZodType",(t,e)=>{var r;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=ct;let n=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&n.unshift(t);for(let c of n)for(let u of c._zod.onattach)u(t);if(n.length===0)(r=t._zod).deferred??(r.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{let c=(s,l,g)=>{let p=C(s),y;for(let x of l){if(x._zod.def.when){if(!x._zod.def.when(s))continue}else if(p)continue;let k=s.issues.length,z=x._zod.check(s);if(z instanceof Promise&&g?.async===!1)throw new O;if(y||z instanceof Promise)y=(y??Promise.resolve()).then(async()=>{await z,s.issues.length!==k&&(p||(p=C(s,k)))});else{if(s.issues.length===k)continue;p||(p=C(s,k))}}return y?y.then(()=>s):s},u=(s,l,g)=>{if(C(s))return s.aborted=!0,s;let p=c(l,n,g);if(p instanceof Promise){if(g.async===!1)throw new O;return p.then(y=>t._zod.parse(y,g))}return t._zod.parse(p,g)};t._zod.run=(s,l)=>{if(l.skipChecks)return t._zod.parse(s,l);if(l.direction==="backward"){let p=t._zod.parse({value:s.value,issues:[]},{...l,skipChecks:!0});return p instanceof Promise?p.then(y=>u(y,s,l)):u(p,s,l)}let g=t._zod.parse(s,l);if(g instanceof Promise){if(l.async===!1)throw new O;return g.then(p=>c(p,n,l))}return c(g,n,l)}}I(t,"~standard",()=>({validate:c=>{try{let u=q(t,c);return u.success?{value:u.data}:{issues:u.error?.issues}}catch{return H(t,c).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),me=b("$ZodString",(t,e)=>{S.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??et(t._zod.bag),t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:t}),r}}),Oe=b("$ZodStringFormat",(t,e)=>{ot.init(t,e),me.init(t,e)});var mt=b("$ZodURL",(t,e)=>{Oe.init(t,e),t._zod.check=r=>{try{let n=r.value.trim(),c=new URL(n);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(c.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:r.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(c.protocol.endsWith(":")?c.protocol.slice(0,-1):c.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:r.value,inst:t,continue:!e.abort})),e.normalize?r.value=c.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:t,continue:!e.abort})}}});var Ze=b("$ZodNumber",(t,e)=>{S.init(t,e),t._zod.pattern=t._zod.bag.pattern??rt,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=Number(r.value)}catch{}let c=r.value;if(typeof c=="number"&&!Number.isNaN(c)&&Number.isFinite(c))return r;let u=typeof c=="number"?Number.isNaN(c)?"NaN":Number.isFinite(c)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:c,inst:t,...u?{received:u}:{}}),r}}),ft=b("$ZodNumberFormat",(t,e)=>{it.init(t,e),Ze.init(t,e)});var pt=b("$ZodUnknown",(t,e)=>{S.init(t,e),t._zod.parse=r=>r});function ut(t,e,r){t.issues.length&&e.issues.push(...W(r,t.issues)),e.value[r]=t.value}var gt=b("$ZodArray",(t,e)=>{S.init(t,e),t._zod.parse=(r,n)=>{let c=r.value;if(!Array.isArray(c))return r.issues.push({expected:"array",code:"invalid_type",input:c,inst:t}),r;r.value=Array(c.length);let u=[];for(let s=0;s<c.length;s++){let l=c[s],g=e.element._zod.run({value:l,issues:[]},n);g instanceof Promise?u.push(g.then(p=>ut(p,r,s))):ut(g,r,s)}return u.length?Promise.all(u).then(()=>r):r}});function de(t,e,r,n,c){if(t.issues.length){if(c&&!(r in n))return;e.issues.push(...W(r,t.issues))}t.value===void 0?r in n&&(e.value[r]=void 0):e.value[r]=t.value}function mr(t){let e=Object.keys(t.shape);for(let n of e)if(!t.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=We(t.shape);return{...t,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(r)}}function fr(t,e,r,n,c,u){let s=[],l=c.keySet,g=c.catchall._zod,p=g.def.type,y=g.optout==="optional";for(let x in e){if(l.has(x))continue;if(p==="never"){s.push(x);continue}let k=g.run({value:e[x],issues:[]},n);k instanceof Promise?t.push(k.then(z=>de(z,r,x,e,y))):de(k,r,x,e,y)}return s.length&&r.issues.push({code:"unrecognized_keys",keys:s,input:e,inst:u}),t.length?Promise.all(t).then(()=>r):r}var vt=b("$ZodObject",(t,e)=>{if(S.init(t,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){let l=e.shape;Object.defineProperty(e,"shape",{get:()=>{let g={...l};return Object.defineProperty(e,"shape",{value:g}),g}})}let n=Ue(()=>mr(e));I(t._zod,"propValues",()=>{let l=e.shape,g={};for(let p in l){let y=l[p]._zod;if(y.values){g[p]??(g[p]=new Set);for(let x of y.values)g[p].add(x)}}return g});let c=ae,u=e.catchall,s;t._zod.parse=(l,g)=>{s??(s=n.value);let p=l.value;if(!c(p))return l.issues.push({expected:"object",code:"invalid_type",input:p,inst:t}),l;l.value={};let y=[],x=s.shape;for(let k of s.keys){let z=x[k],T=z._zod.optout==="optional",J=z._zod.run({value:p[k],issues:[]},g);J instanceof Promise?y.push(J.then(be=>de(be,l,k,p,T))):de(J,l,k,p,T)}return u?fr(y,p,l,g,n.value,t):y.length?Promise.all(y).then(()=>l):l}});function st(t,e,r,n){for(let u of t)if(u.issues.length===0)return e.value=u.value,e;let c=t.filter(u=>!C(u));return c.length===1?(e.value=c[0].value,c[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:r,errors:t.map(u=>u.issues.map(s=>N(s,n,E())))}),e)}var $t=b("$ZodUnion",(t,e)=>{S.init(t,e),I(t._zod,"optin",()=>e.options.some(c=>c._zod.optin==="optional")?"optional":void 0),I(t._zod,"optout",()=>e.options.some(c=>c._zod.optout==="optional")?"optional":void 0),I(t._zod,"values",()=>{if(e.options.every(c=>c._zod.values))return new Set(e.options.flatMap(c=>Array.from(c._zod.values)))}),I(t._zod,"pattern",()=>{if(e.options.every(c=>c._zod.pattern)){let c=e.options.map(u=>u._zod.pattern);return new RegExp(`^(${c.map(u=>ce(u.source)).join("|")})$`)}});let r=e.options.length===1,n=e.options[0]._zod.run;t._zod.parse=(c,u)=>{if(r)return n(c,u);let s=!1,l=[];for(let g of e.options){let p=g._zod.run({value:c.value,issues:[]},u);if(p instanceof Promise)l.push(p),s=!0;else{if(p.issues.length===0)return p;l.push(p)}}return s?Promise.all(l).then(g=>st(g,c,t,u)):st(l,c,t,u)}});var ht=b("$ZodTuple",(t,e)=>{S.init(t,e);let r=e.items;t._zod.parse=(n,c)=>{let u=n.value;if(!Array.isArray(u))return n.issues.push({input:u,inst:t,expected:"tuple",code:"invalid_type"}),n;n.value=[];let s=[],l=[...r].reverse().findIndex(y=>y._zod.optin!=="optional"),g=l===-1?0:r.length-l;if(!e.rest){let y=u.length>r.length,x=u.length<g-1;if(y||x)return n.issues.push({...y?{code:"too_big",maximum:r.length,inclusive:!0}:{code:"too_small",minimum:r.length},input:u,inst:t,origin:"array"}),n}let p=-1;for(let y of r){if(p++,p>=u.length&&p>=g)continue;let x=y._zod.run({value:u[p],issues:[]},c);x instanceof Promise?s.push(x.then(k=>le(k,n,p))):le(x,n,p)}if(e.rest){let y=u.slice(r.length);for(let x of y){p++;let k=e.rest._zod.run({value:x,issues:[]},c);k instanceof Promise?s.push(k.then(z=>le(z,n,p))):le(k,n,p)}}return s.length?Promise.all(s).then(()=>n):n}});function le(t,e,r){t.issues.length&&e.issues.push(...W(r,t.issues)),e.value[r]=t.value}function lt(t,e){return t.issues.length&&e===void 0?{issues:[],value:void 0}:t}var _t=b("$ZodOptional",(t,e)=>{S.init(t,e),t._zod.optin="optional",t._zod.optout="optional",I(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),I(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${ce(r.source)})?$`):void 0}),t._zod.parse=(r,n)=>{if(e.innerType._zod.optin==="optional"){let c=e.innerType._zod.run(r,n);return c instanceof Promise?c.then(u=>lt(u,r.value)):lt(c,r.value)}return r.value===void 0?r:e.innerType._zod.run(r,n)}});var yt=b("$ZodNullable",(t,e)=>{S.init(t,e),I(t._zod,"optin",()=>e.innerType._zod.optin),I(t._zod,"optout",()=>e.innerType._zod.optout),I(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${ce(r.source)}|null)$`):void 0}),I(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),t._zod.parse=(r,n)=>r.value===null?r:e.innerType._zod.run(r,n)});var bt=b("$ZodCustom",(t,e)=>{M.init(t,e),S.init(t,e),t._zod.parse=(r,n)=>r,t._zod.check=r=>{let n=r.value,c=e.fn(n);if(c instanceof Promise)return c.then(u=>dt(u,r,n,t));dt(c,r,n,t)}});function dt(t,e,r,n){if(!t){let c={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(c.params=n._zod.def.params),e.issues.push(De(c))}}i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();var kt;var Te=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...r){let n=r[0];return this._map.set(e,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let r=this._map.get(e);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(e),this}get(e){let r=e._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let c={...n,...this._map.get(e)};return Object.keys(c).length?c:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function zt(){return new Te}(kt=globalThis).__zod_globalRegistry??(kt.__zod_globalRegistry=zt());var Ee=globalThis.__zod_globalRegistry;i();a();o();function It(t,e){return new t({type:"string",...P(e)})}function wt(t,e){return new t({type:"string",format:"url",check:"string_format",abort:!1,...P(e)})}function St(t,e){return new t({type:"number",check:"number_format",abort:!1,format:"safeint",...P(e)})}function jt(t){return new t({type:"unknown"})}function Ne(t,e){return new nt({check:"greater_than",...P(e),value:t,inclusive:!0})}function Me(t){return Ne(0,t)}function Ut(t,e,r){let n=P(r);return n.abort??(n.abort=!0),new t({type:"custom",check:"custom",fn:e,...n})}i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();var D=b("ZodMiniType",(t,e)=>{if(!t._zod)throw new Error("Uninitialized schema in ZodMiniType.");S.init(t,e),t.def=e,t.type=e.type,t.parse=(r,n)=>ue(t,r,n,{callee:t.parse}),t.safeParse=(r,n)=>q(t,r,n),t.parseAsync=async(r,n)=>se(t,r,n,{callee:t.parseAsync}),t.safeParseAsync=async(r,n)=>H(t,r,n),t.check=(...r)=>t.clone({...e,checks:[...e.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),t.with=t.check,t.clone=(r,n)=>K(t,r,n),t.brand=()=>t,t.register=((r,n)=>(r.add(t,n),t)),t.apply=r=>r(t)}),Ae=b("ZodMiniString",(t,e)=>{me.init(t,e),D.init(t,e)});function R(t){return It(Ae,t)}var Pt=b("ZodMiniStringFormat",(t,e)=>{Oe.init(t,e),Ae.init(t,e)});var Sr=b("ZodMiniURL",(t,e)=>{mt.init(t,e),Pt.init(t,e)});function j(t){return wt(Sr,t)}var Dt=b("ZodMiniNumber",(t,e)=>{Ze.init(t,e),D.init(t,e)});var jr=b("ZodMiniNumberFormat",(t,e)=>{ft.init(t,e),Dt.init(t,e)});function Ot(t){return St(jr,t)}var Ur=b("ZodMiniUnknown",(t,e)=>{pt.init(t,e),D.init(t,e)});function Pr(){return jt(Ur)}var Dr=b("ZodMiniArray",(t,e)=>{gt.init(t,e),D.init(t,e)});function F(t,e){return new Dr({type:"array",element:t,...P(e)})}var Or=b("ZodMiniObject",(t,e)=>{vt.init(t,e),D.init(t,e),I(t,"shape",()=>e.shape)});function Z(t,e){return new Or({type:"object",shape:t,catchall:Pr(),...P(e)})}function Le(t,e){return qe(t,e)}var Zr=b("ZodMiniUnion",(t,e)=>{$t.init(t,e),D.init(t,e)});function Zt(t,e){return new Zr({type:"union",options:t,...P(e)})}var Tr=b("ZodMiniTuple",(t,e)=>{ht.init(t,e),D.init(t,e)});function w(t,e,r){let n=e instanceof S,c=n?r:e,u=n?e:null;return new Tr({type:"tuple",items:t,rest:u,...P(c)})}var Er=b("ZodMiniOptional",(t,e)=>{_t.init(t,e),D.init(t,e)});function A(t){return new Er({type:"optional",innerType:t})}var Nr=b("ZodMiniNullable",(t,e)=>{yt.init(t,e),D.init(t,e)});function pe(t){return new Nr({type:"nullable",innerType:t})}var Mr=b("ZodMiniCustom",(t,e)=>{bt.init(t,e),D.init(t,e)});function Ar(t,e){return Ut(Mr,t??(()=>!0),e)}function Tt(t,e={}){let r=Ar(n=>n instanceof t,e);return r._zod.bag.Class=t,r._zod.check=n=>{n.value instanceof t||n.issues.push({code:"invalid_type",expected:t.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}i();a();o();i();a();o();i();a();o();var Mt=Z({value:Z({}),channels:F(R()),allowed:A(pe(F(j())))}),ig=Le(Mt,{url:j(),actor:j()}),Nt=Zt([Z({url:j()}),j()]),G=Z({actor:j()}),V=A(pe(G)),At=Z({data:Tt(Blob),allowed:A(pe(F(j())))}),og=Le(At,{actor:j()}),Gr=Z({types:A(F(R())),maxBytes:A(Ot().check(Me()))});async function*Vr(t){for(;;){let e=await t.next();if(e.done){let{cursor:r,continue:n}=e.value;return{cursor:r,continue:(...c)=>{let u=w([V]).parse(c);return n(...u)}}}else yield e.value}}async function*Jr(t){for(;;){let e=await t.next();if(e.done){let{cursor:r,continue:n}=e.value;return{cursor:r,continue:(...c)=>{let u=w([V]).parse(c);return n(...u)}}}else yield e.value}}var ge=class{constructor(e){this.graffiti=e,this.sessionEvents=this.graffiti.sessionEvents}sessionEvents;login=(...e)=>{let r=w([A(j())]).parse(e);return this.graffiti.login(...r)};logout=(...e)=>{let r=w([G]).parse(e);return this.graffiti.logout(...r)};handleToActor=(...e)=>{let r=w([R()]).parse(e);return this.graffiti.handleToActor(...r)};actorToHandle=(...e)=>{let r=w([j()]).parse(e);return this.graffiti.actorToHandle(...r)};async post(e,r){let n=w([Mt,G]).parse([e,r]);return await this.graffiti.post(...n)}get=(...e)=>{let r=w([Nt,Z({}),V]).parse(e);return this.graffiti.get(...r)};delete=(...e)=>{let r=w([Nt,G]).parse(e);return this.graffiti.delete(...r)};postMedia=(...e)=>{let r=w([At,G]).parse(e);return this.graffiti.postMedia(...r)};getMedia=(...e)=>{let r=w([j(),Gr,V]).parse(e);return this.graffiti.getMedia(...r)};deleteMedia=(...e)=>{let r=w([j(),G]).parse(e);return this.graffiti.deleteMedia(...r)};discover=(...e)=>{let r=w([F(R()),Z({}),V]).parse(e),n=this.graffiti.discover(...r);return Vr(n)};continueDiscover=(...e)=>{let r=w([R(),V]).parse(e),n=this.graffiti.continueDiscover(...r);return Jr(n)}};i();a();o();i();a();o();function Ce(t){return btoa(String.fromCodePoint(...t)).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=+$/,"")}function Ct(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";return Uint8Array.from(atob(e),r=>r.charCodeAt(0))}function Rt(t=32){let e=new Uint8Array(t);return crypto.getRandomValues(e),Ce(e)}var Ft="graffiti:";function Lt(t){let e=t.replace(/:/g,"!").replace(/\//g,"~");return encodeURIComponent(e)}function Br(t){return decodeURIComponent(t).replace(/!/g,":").replace(/~/g,"/")}function Kr(t,e,r){return`${r}${Lt(t)}:${Lt(e)}`}function Gt(t,e){return Kr(t,e,Ft)}function Wr(t,e){if(!t.startsWith(e))throw new U(`URL does not start with ${e}`);let r=t.slice(e.length).split(":");if(r.length!==2)throw new U("URL has too many colon-seperated parts");let[n,c]=r.map(Br);return{actor:n,id:c}}function ve(t){return Wr(t,Ft)}async function Vt(t){if(typeof FileReader<"u")return new Promise((e,r)=>{let n=new FileReader;n.onload=()=>{typeof n.result=="string"?e(n.result):r(new Error("Unexpected result type"))},n.onerror=r,n.readAsDataURL(t)});if(typeof d<"u"){let e=await t.arrayBuffer();return`data:${t.type};base64,${d.from(e).toString("base64")}`}throw new Error("Unsupported environment")}async function Jt(t){return await(await fetch(t)).blob()}var $e="did:local:",he=class{sessionEvents=new EventTarget;handleToActor=async e=>{let r=new TextEncoder().encode(e),n=Ce(r);return`${$e}${n}`};actorToHandle=async e=>{if(!e.startsWith($e))throw new Error(`actor must start with ${$e}`);let r=e.slice($e.length),n=Ct(r);return new TextDecoder().decode(n)};constructor(){(async()=>{await Promise.resolve();for(let n of this.getLoggedInHandles()){let c=new CustomEvent("login",{detail:{session:{actor:await this.handleToActor(n)}}});this.sessionEvents.dispatchEvent(c)}let r=new CustomEvent("initialized",{detail:{}});this.sessionEvents.dispatchEvent(r)})()}loggedInHandles=[];getLoggedInHandles(){if(typeof window<"u"){let e=window.localStorage.getItem("graffiti-handles");return e?e.split(",").map(decodeURIComponent):[]}else return this.loggedInHandles}setLoggedInHandles(e){typeof window<"u"?window.localStorage.setItem("graffiti-handles",e.join(",")):this.loggedInHandles=e}login=async e=>{await new Promise(n=>setTimeout(n,0));let r=e?await this.actorToHandle(e):void 0;if(typeof window<"u"&&(r=window.prompt("Choose a username to log in.",r)??void 0),r){let n=this.getLoggedInHandles();n.includes(r)||this.setLoggedInHandles([...n,r]),window.location.reload()}else{let n={error:new Error("No handle provided to login")},c=new CustomEvent("login",{detail:n});this.sessionEvents.dispatchEvent(c)}};logout=async e=>{let r=await this.actorToHandle(e.actor),n=this.getLoggedInHandles(),c=n.includes(r);c&&this.setLoggedInHandles(n.filter(l=>l!==r));let u=c?{actor:e.actor}:{actor:e.actor,error:new Error("Not logged in with that actor")},s=new CustomEvent("logout",{detail:u});this.sessionEvents.dispatchEvent(s)}};i();a();o();var _e=class{db_;options;get db(){return this.db_||(this.db_=(async()=>{let{default:e}=await import("./index-browser.es-UXYPGJ2M.js"),r={name:"graffitiDb",...this.options.pouchDBOptions},n=new e(r.name,r);return await n.put({_id:"_design/indexes",views:{objectsPerChannelAndLastModified:{map:function(c){let u=c.lastModified.toString().padStart(15,"0");c.channels.forEach(function(s){let l=encodeURIComponent(s)+"/"+u;emit(l)})}.toString()}}}).catch(c=>{if(!(c&&typeof c=="object"&&"name"in c&&c.name==="conflict"))throw c}),n})()),this.db_}async getOperationClock(){return Number((await(await this.db).info()).update_seq)}constructor(e){this.options=e??{}}get=async(...e)=>{let[r,n,c]=e,u=ke(r),s;try{s=await(await this.db).get(u)}catch{throw new U("The object you are trying to get either does not exist or you are not allowed to see it")}if(s.tombstone)throw new U("The object you are trying to get either does not exist or you are not allowed to see it");let{actor:l}=ve(u),{value:g,channels:p,allowed:y}=s,x={value:g,channels:p,allowed:y,url:u,actor:l};if(!ze(x,c))throw new U("The object you are trying to get either does not exist or you are not allowed to see it");let k=Ie(x,[],c?.actor);if(!(await we(n))(k))throw new te;return k};delete=async(...e)=>{let[r,n]=e,c=ke(r),{actor:u}=ve(c);if(u!==n.actor)throw new L("You cannot delete an object that you did not create.");let s;try{s=await(await this.db).get(c)}catch{throw new U("Object not found.")}if(s.tombstone)throw new U("Object not found.");s.tombstone=!0,s.lastModified=await this.getOperationClock();try{await(await this.db).put(s)}catch{throw new U("Object not found.")}let{value:l,channels:g,allowed:p}=s;return{value:l,channels:g,allowed:p,url:c,actor:u}};post=async(...e)=>{let[r,n]=e,c=n.actor,u=Rt(),s=Gt(c,u),{value:l,channels:g,allowed:p}=r,y={value:l,channels:g,allowed:p,lastModified:await this.getOperationClock(),tombstone:!1};return await(await this.db).put({_id:s,...y}),{...r,actor:c,url:s}};async*discoverMeta(e,r){if(r){let x=this.options.continueBuffer??2e3,k=Date.now()-r.lastDiscovered;k<x&&await new Promise(z=>setTimeout(z,x-k))}let[n,c,u]=e,s=await we(c),l=r?r.ifModifiedSince.toString().padStart(15,"0"):"",g="\uFFFF",p=new Set,y=await this.getOperationClock();for(let x of n){let k=encodeURIComponent(x)+"/",z=k+l,T=k+g,J=await(await this.db).query("indexes/objectsPerChannelAndLastModified",{startkey:z,endkey:T,include_docs:!0});for(let be of J.rows){let Q=be.doc;if(!Q)continue;let B=Q._id;if(p.has(B)||(p.add(B),!r&&Q.tombstone))continue;let{tombstone:Kt,value:Wt,channels:Xt,allowed:qt}=Q,{actor:Ht}=ve(B),Fe={url:B,value:Wt,allowed:qt,channels:Xt,actor:Ht};if(!ze(Fe,u))continue;let Ge=Ie(Fe,n,u?.actor);s(Ge)&&(yield Kt?{tombstone:!0,object:{url:B}}:{object:Ge})}}return{lastDiscovered:Date.now(),ifModifiedSince:y}}discoverCursor(e,r){let[n,c,u]=e;return"discover:"+JSON.stringify({channels:n,schema:c,continueParams:r,actor:u?.actor})}async*discoverContinue(e,r,n){if(n?.actor!==e[2]?.actor)throw new L("Cannot continue a cursor started by another actor");let c=this.discoverMeta(e,r);for(;;){let u=await c.next();if(u.done)return{continue:s=>this.discoverContinue(e,u.value,s),cursor:this.discoverCursor(e,u.value)};yield u.value}}discover=(...e)=>{let[r,n,c]=e,u=this.discoverMeta([r,n,c]),s=this;return(async function*(){for(;;){let l=await u.next();if(l.done)return{continue:g=>s.discoverContinue(e,l.value,g),cursor:s.discoverCursor(e,l.value)};l.value.tombstone||(yield l.value)}})()};continueDiscover=(...e)=>{let[r,n]=e;if(r.startsWith("discover:")){let{channels:c,schema:u,actor:s,continueParams:l}=JSON.parse(r.slice(9));return s&&s!==n?.actor?(async function*(){throw new L("Cannot continue a cursor started by another actor")})():this.discoverContinue([c,u,n],l)}else return(async function*(){throw new ie("Cursor not found")})()}};i();a();o();var Xr={properties:{value:{properties:{dataBase64:{type:"string"},type:{type:"string"},size:{type:"number"}},required:["dataBase64","type","size"]}}},ye=class{db;constructor(e){this.db=e}postMedia=async(...e)=>{let[r,n]=e,c=await Vt(r.data),u=r.data.type,{url:s}=await this.db.post({value:{dataBase64:c,type:u,size:r.data.size},channels:[],allowed:r.allowed},n);return s};getMedia=async(...e)=>{let[r,n,c]=e,u=await this.db.get(r,Xr,c),{dataBase64:s,type:l,size:g}=u.value;if(n?.maxBytes&&g>n.maxBytes)throw new re("File size exceeds limit");if(n?.types&&!Ve(l,n.types))throw new ne(`Unacceptable media type, ${l}`);let p=await Jt(s);if(p.size!==g||p.type!==l)throw new Error("Invalid data");return{data:p,actor:u.actor,allowed:u.allowed}};deleteMedia=async(...e)=>{let[r,n]=e;await this.db.delete(r,n)}};var Bt=class extends ge{constructor(e){let r=new Re(e);super(r)}},Re=class{graffitiLocalIdentity=new he;login=this.graffitiLocalIdentity.login.bind(this.graffitiLocalIdentity);logout=this.graffitiLocalIdentity.logout.bind(this.graffitiLocalIdentity);handleToActor=this.graffitiLocalIdentity.handleToActor.bind(this.graffitiLocalIdentity);actorToHandle=this.graffitiLocalIdentity.actorToHandle.bind(this.graffitiLocalIdentity);sessionEvents=this.graffitiLocalIdentity.sessionEvents;graffitiLocalObjects;post;get;delete;discover;continueDiscover;graffitiLocalMedia;postMedia;getMedia;deleteMedia;constructor(e){this.graffitiLocalObjects=new _e(e),this.post=this.graffitiLocalObjects.post.bind(this.graffitiLocalObjects),this.get=this.graffitiLocalObjects.get.bind(this.graffitiLocalObjects),this.delete=this.graffitiLocalObjects.delete.bind(this.graffitiLocalObjects),this.discover=this.graffitiLocalObjects.discover.bind(this.graffitiLocalObjects),this.continueDiscover=this.graffitiLocalObjects.continueDiscover.bind(this.graffitiLocalObjects),this.graffitiLocalMedia=new ye(this.graffitiLocalObjects),this.postMedia=this.graffitiLocalMedia.postMedia.bind(this.graffitiLocalMedia),this.getMedia=this.graffitiLocalMedia.getMedia.bind(this.graffitiLocalMedia),this.deleteMedia=this.graffitiLocalMedia.deleteMedia.bind(this.graffitiLocalMedia)}};export{Bt as GraffitiLocal};
1
+ import{c as i,e as o,f as d,g as a}from"./chunk-GE6AZATH.js";i();a();o();i();a();o();i();a();o();i();a();o();var Yt={type:"object",properties:{value:{type:"object"},channels:{type:"array",items:{type:"string"}},allowed:{type:"array",items:{type:"string"},nullable:!0},url:{type:"string"},actor:{type:"string"}},additionalProperties:!1,required:["value","channels","actor","url"]},en={...Yt,required:["value","channels"]};i();a();o();var L=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorForbidden",Object.setPrototypeOf(this,t.prototype)}},U=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorNotFound",Object.setPrototypeOf(this,t.prototype)}},ee=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorInvalidSchema",Object.setPrototypeOf(this,t.prototype)}},te=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorSchemaMismatch",Object.setPrototypeOf(this,t.prototype)}},re=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorTooLarge",Object.setPrototypeOf(this,t.prototype)}},ne=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorNotAcceptable",Object.setPrototypeOf(this,t.prototype)}},ie=class t extends Error{constructor(e){super(e),this.name="GraffitiErrorCursorExpired",Object.setPrototypeOf(this,t.prototype)}};i();a();o();function ke(t){return typeof t=="string"?t:t.url}function ze(t,e){return!Array.isArray(t.allowed)||typeof e?.actor=="string"&&(t.actor===e.actor||t.allowed.includes(e.actor))}function Ie(t,e,r){if(r===t.actor)return t;let n=t.allowed&&r?[r]:void 0,c=t.channels.filter(u=>e.includes(u));return{...t,allowed:n,channels:c}}function Ve(t,e){let[r,n]=t.toLowerCase().split(";")[0].split("/");return!r||!n?!1:e.some(c=>{let[u,s]=c.toLowerCase().split(";")[0].split("/");return!u||!s?!1:(u===r||u==="*")&&(s===n||s==="*")})}var xe;async function we(t){if(!xe){let{default:e}=await import("./ajv-IY2ZY7VT.js");xe=new e({strict:!1})}try{return xe.compile(t)}catch(e){throw new ee(e instanceof Error?e.message:String(e))}}i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();var Qt=Object.freeze({status:"aborted"});function b(t,e,r){function n(l,g){if(l._zod||Object.defineProperty(l,"_zod",{value:{def:g,constr:s,traits:new Set},enumerable:!1}),l._zod.traits.has(t))return;l._zod.traits.add(t),e(l,g);let p=s.prototype,y=Object.keys(p);for(let x=0;x<y.length;x++){let k=y[x];k in l||(l[k]=p[k].bind(l))}}let c=r?.Parent??Object;class u extends c{}Object.defineProperty(u,"name",{value:t});function s(l){var g;let p=r?.Parent?new u:this;n(p,l),(g=p._zod).deferred??(g.deferred=[]);for(let y of p._zod.deferred)y();return p}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:l=>r?.Parent&&l instanceof r.Parent?!0:l?._zod?.traits?.has(t)}),Object.defineProperty(s,"name",{value:t}),s}var O=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};var Se={};function E(t){return t&&Object.assign(Se,t),Se}i();a();o();i();a();o();i();a();o();function Be(t,e){return typeof e=="bigint"?e.toString():e}function Ue(t){return{get value(){{let r=t();return Object.defineProperty(this,"value",{value:r}),r}throw new Error("cached value already set")}}}function ce(t){let e=t.startsWith("^")?1:0,r=t.endsWith("$")?t.length-1:t.length;return t.slice(e,r)}var Je=Symbol("evaluating");function I(t,e,r){let n;Object.defineProperty(t,e,{get(){if(n!==Je)return n===void 0&&(n=Je,n=r()),n},set(c){Object.defineProperty(t,e,{value:c})},configurable:!0})}function er(t,e,r){Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!0,configurable:!0})}function tr(...t){let e={};for(let r of t){let n=Object.getOwnPropertyDescriptors(r);Object.assign(e,n)}return Object.defineProperties({},e)}var Pe="captureStackTrace"in Error?Error.captureStackTrace:(...t)=>{};function ae(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var rr=Ue(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let t=Function;return new t(""),!0}catch{return!1}});function Ke(t){if(ae(t)===!1)return!1;let e=t.constructor;if(e===void 0||typeof e!="function")return!0;let r=e.prototype;return!(ae(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function K(t,e,r){let n=new t._zod.constr(e??t._zod.def);return(!e||r?.parent)&&(n._zod.parent=t),n}function P(t){let e=t;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 We(t){return Object.keys(t).filter(e=>t[e]._zod.optin==="optional"&&t[e]._zod.optout==="optional")}var Xe={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]};function qe(t,e){if(!Ke(e))throw new Error("Invalid input to extend: expected a plain object");let r=t._zod.def.checks;if(r&&r.length>0){let u=t._zod.def.shape;for(let s in e)if(Object.getOwnPropertyDescriptor(u,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let c=tr(t._zod.def,{get shape(){let u={...t._zod.def.shape,...e};return er(this,"shape",u),u}});return K(t,c)}function C(t,e=0){if(t.aborted===!0)return!0;for(let r=e;r<t.issues.length;r++)if(t.issues[r]?.continue!==!0)return!0;return!1}function W(t,e){return e.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(t),r})}function oe(t){return typeof t=="string"?t:t?.message}function N(t,e,r){let n={...t,path:t.path??[]};if(!t.message){let c=oe(t.inst?._zod.def?.error?.(t))??oe(e?.error?.(t))??oe(r.customError?.(t))??oe(r.localeError?.(t))??"Invalid input";n.message=c}return delete n.inst,delete n.continue,e?.reportInput||delete n.input,n}function De(...t){let[e,r,n]=t;return typeof e=="string"?{message:e,code:"custom",input:r,inst:n}:{...e}}var He=(t,e)=>{t.name="$ZodError",Object.defineProperty(t,"_zod",{value:t._zod,enumerable:!1}),Object.defineProperty(t,"issues",{value:e,enumerable:!1}),t.message=JSON.stringify(e,Be,2),Object.defineProperty(t,"toString",{value:()=>t.message,enumerable:!1})},Ye=b("$ZodError",He),X=b("$ZodError",He,{Parent:Error});var ir=t=>(e,r,n,c)=>{let u=n?Object.assign(n,{async:!1}):{async:!1},s=e._zod.run({value:r,issues:[]},u);if(s instanceof Promise)throw new O;if(s.issues.length){let l=new(c?.Err??t)(s.issues.map(g=>N(g,u,E())));throw Pe(l,c?.callee),l}return s.value},ue=ir(X),or=t=>async(e,r,n,c)=>{let u=n?Object.assign(n,{async:!0}):{async:!0},s=e._zod.run({value:r,issues:[]},u);if(s instanceof Promise&&(s=await s),s.issues.length){let l=new(c?.Err??t)(s.issues.map(g=>N(g,u,E())));throw Pe(l,c?.callee),l}return s.value},se=or(X),ar=t=>(e,r,n)=>{let c=n?{...n,async:!1}:{async:!1},u=e._zod.run({value:r,issues:[]},c);if(u instanceof Promise)throw new O;return u.issues.length?{success:!1,error:new(t??Ye)(u.issues.map(s=>N(s,c,E())))}:{success:!0,data:u.value}},q=ar(X),cr=t=>async(e,r,n)=>{let c=n?Object.assign(n,{async:!0}):{async:!0},u=e._zod.run({value:r,issues:[]},c);return u instanceof Promise&&(u=await u),u.issues.length?{success:!1,error:new t(u.issues.map(s=>N(s,c,E())))}:{success:!0,data:u.value}},H=cr(X);i();a();o();i();a();o();i();a();o();var ur="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",sr=new RegExp(`^${ur}$`);var et=t=>{let e=t?`[\\s\\S]{${t?.minimum??0},${t?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${e}$`)};var tt=/^-?\d+$/,rt=/^-?\d+(?:\.\d+)?$/;var M=b("$ZodCheck",(t,e)=>{var r;t._zod??(t._zod={}),t._zod.def=e,(r=t._zod).onattach??(r.onattach=[])}),lr={number:"number",bigint:"bigint",object:"date"};var nt=b("$ZodCheckGreaterThan",(t,e)=>{M.init(t,e);let r=lr[typeof e.value];t._zod.onattach.push(n=>{let c=n._zod.bag,u=(e.inclusive?c.minimum:c.exclusiveMinimum)??Number.NEGATIVE_INFINITY;e.value>u&&(e.inclusive?c.minimum=e.value:c.exclusiveMinimum=e.value)}),t._zod.check=n=>{(e.inclusive?n.value>=e.value:n.value>e.value)||n.issues.push({origin:r,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:n.value,inclusive:e.inclusive,inst:t,continue:!e.abort})}});var it=b("$ZodCheckNumberFormat",(t,e)=>{M.init(t,e),e.format=e.format||"float64";let r=e.format?.includes("int"),n=r?"int":"number",[c,u]=Xe[e.format];t._zod.onattach.push(s=>{let l=s._zod.bag;l.format=e.format,l.minimum=c,l.maximum=u,r&&(l.pattern=tt)}),t._zod.check=s=>{let l=s.value;if(r){if(!Number.isInteger(l)){s.issues.push({expected:n,format:e.format,code:"invalid_type",continue:!1,input:l,inst:t});return}if(!Number.isSafeInteger(l)){l>0?s.issues.push({input:l,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort}):s.issues.push({input:l,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:t,origin:n,inclusive:!0,continue:!e.abort});return}}l<c&&s.issues.push({origin:"number",input:l,code:"too_small",minimum:c,inclusive:!0,inst:t,continue:!e.abort}),l>u&&s.issues.push({origin:"number",input:l,code:"too_big",maximum:u,inclusive:!0,inst:t,continue:!e.abort})}});var ot=b("$ZodCheckStringFormat",(t,e)=>{var r,n;M.init(t,e),t._zod.onattach.push(c=>{let u=c._zod.bag;u.format=e.format,e.pattern&&(u.patterns??(u.patterns=new Set),u.patterns.add(e.pattern))}),e.pattern?(r=t._zod).check??(r.check=c=>{e.pattern.lastIndex=0,!e.pattern.test(c.value)&&c.issues.push({origin:"string",code:"invalid_format",format:e.format,input:c.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:t,continue:!e.abort})}):(n=t._zod).check??(n.check=()=>{})});i();a();o();i();a();o();var ct={major:4,minor:3,patch:5};var S=b("$ZodType",(t,e)=>{var r;t??(t={}),t._zod.def=e,t._zod.bag=t._zod.bag||{},t._zod.version=ct;let n=[...t._zod.def.checks??[]];t._zod.traits.has("$ZodCheck")&&n.unshift(t);for(let c of n)for(let u of c._zod.onattach)u(t);if(n.length===0)(r=t._zod).deferred??(r.deferred=[]),t._zod.deferred?.push(()=>{t._zod.run=t._zod.parse});else{let c=(s,l,g)=>{let p=C(s),y;for(let x of l){if(x._zod.def.when){if(!x._zod.def.when(s))continue}else if(p)continue;let k=s.issues.length,z=x._zod.check(s);if(z instanceof Promise&&g?.async===!1)throw new O;if(y||z instanceof Promise)y=(y??Promise.resolve()).then(async()=>{await z,s.issues.length!==k&&(p||(p=C(s,k)))});else{if(s.issues.length===k)continue;p||(p=C(s,k))}}return y?y.then(()=>s):s},u=(s,l,g)=>{if(C(s))return s.aborted=!0,s;let p=c(l,n,g);if(p instanceof Promise){if(g.async===!1)throw new O;return p.then(y=>t._zod.parse(y,g))}return t._zod.parse(p,g)};t._zod.run=(s,l)=>{if(l.skipChecks)return t._zod.parse(s,l);if(l.direction==="backward"){let p=t._zod.parse({value:s.value,issues:[]},{...l,skipChecks:!0});return p instanceof Promise?p.then(y=>u(y,s,l)):u(p,s,l)}let g=t._zod.parse(s,l);if(g instanceof Promise){if(l.async===!1)throw new O;return g.then(p=>c(p,n,l))}return c(g,n,l)}}I(t,"~standard",()=>({validate:c=>{try{let u=q(t,c);return u.success?{value:u.data}:{issues:u.error?.issues}}catch{return H(t,c).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),me=b("$ZodString",(t,e)=>{S.init(t,e),t._zod.pattern=[...t?._zod.bag?.patterns??[]].pop()??et(t._zod.bag),t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:t}),r}}),Oe=b("$ZodStringFormat",(t,e)=>{ot.init(t,e),me.init(t,e)});var mt=b("$ZodURL",(t,e)=>{Oe.init(t,e),t._zod.check=r=>{try{let n=r.value.trim(),c=new URL(n);e.hostname&&(e.hostname.lastIndex=0,e.hostname.test(c.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:r.value,inst:t,continue:!e.abort})),e.protocol&&(e.protocol.lastIndex=0,e.protocol.test(c.protocol.endsWith(":")?c.protocol.slice(0,-1):c.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:r.value,inst:t,continue:!e.abort})),e.normalize?r.value=c.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:t,continue:!e.abort})}}});var Ze=b("$ZodNumber",(t,e)=>{S.init(t,e),t._zod.pattern=t._zod.bag.pattern??rt,t._zod.parse=(r,n)=>{if(e.coerce)try{r.value=Number(r.value)}catch{}let c=r.value;if(typeof c=="number"&&!Number.isNaN(c)&&Number.isFinite(c))return r;let u=typeof c=="number"?Number.isNaN(c)?"NaN":Number.isFinite(c)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:c,inst:t,...u?{received:u}:{}}),r}}),ft=b("$ZodNumberFormat",(t,e)=>{it.init(t,e),Ze.init(t,e)});var pt=b("$ZodUnknown",(t,e)=>{S.init(t,e),t._zod.parse=r=>r});function ut(t,e,r){t.issues.length&&e.issues.push(...W(r,t.issues)),e.value[r]=t.value}var gt=b("$ZodArray",(t,e)=>{S.init(t,e),t._zod.parse=(r,n)=>{let c=r.value;if(!Array.isArray(c))return r.issues.push({expected:"array",code:"invalid_type",input:c,inst:t}),r;r.value=Array(c.length);let u=[];for(let s=0;s<c.length;s++){let l=c[s],g=e.element._zod.run({value:l,issues:[]},n);g instanceof Promise?u.push(g.then(p=>ut(p,r,s))):ut(g,r,s)}return u.length?Promise.all(u).then(()=>r):r}});function de(t,e,r,n,c){if(t.issues.length){if(c&&!(r in n))return;e.issues.push(...W(r,t.issues))}t.value===void 0?r in n&&(e.value[r]=void 0):e.value[r]=t.value}function mr(t){let e=Object.keys(t.shape);for(let n of e)if(!t.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);let r=We(t.shape);return{...t,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(r)}}function fr(t,e,r,n,c,u){let s=[],l=c.keySet,g=c.catchall._zod,p=g.def.type,y=g.optout==="optional";for(let x in e){if(l.has(x))continue;if(p==="never"){s.push(x);continue}let k=g.run({value:e[x],issues:[]},n);k instanceof Promise?t.push(k.then(z=>de(z,r,x,e,y))):de(k,r,x,e,y)}return s.length&&r.issues.push({code:"unrecognized_keys",keys:s,input:e,inst:u}),t.length?Promise.all(t).then(()=>r):r}var vt=b("$ZodObject",(t,e)=>{if(S.init(t,e),!Object.getOwnPropertyDescriptor(e,"shape")?.get){let l=e.shape;Object.defineProperty(e,"shape",{get:()=>{let g={...l};return Object.defineProperty(e,"shape",{value:g}),g}})}let n=Ue(()=>mr(e));I(t._zod,"propValues",()=>{let l=e.shape,g={};for(let p in l){let y=l[p]._zod;if(y.values){g[p]??(g[p]=new Set);for(let x of y.values)g[p].add(x)}}return g});let c=ae,u=e.catchall,s;t._zod.parse=(l,g)=>{s??(s=n.value);let p=l.value;if(!c(p))return l.issues.push({expected:"object",code:"invalid_type",input:p,inst:t}),l;l.value={};let y=[],x=s.shape;for(let k of s.keys){let z=x[k],T=z._zod.optout==="optional",J=z._zod.run({value:p[k],issues:[]},g);J instanceof Promise?y.push(J.then(be=>de(be,l,k,p,T))):de(J,l,k,p,T)}return u?fr(y,p,l,g,n.value,t):y.length?Promise.all(y).then(()=>l):l}});function st(t,e,r,n){for(let u of t)if(u.issues.length===0)return e.value=u.value,e;let c=t.filter(u=>!C(u));return c.length===1?(e.value=c[0].value,c[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:r,errors:t.map(u=>u.issues.map(s=>N(s,n,E())))}),e)}var $t=b("$ZodUnion",(t,e)=>{S.init(t,e),I(t._zod,"optin",()=>e.options.some(c=>c._zod.optin==="optional")?"optional":void 0),I(t._zod,"optout",()=>e.options.some(c=>c._zod.optout==="optional")?"optional":void 0),I(t._zod,"values",()=>{if(e.options.every(c=>c._zod.values))return new Set(e.options.flatMap(c=>Array.from(c._zod.values)))}),I(t._zod,"pattern",()=>{if(e.options.every(c=>c._zod.pattern)){let c=e.options.map(u=>u._zod.pattern);return new RegExp(`^(${c.map(u=>ce(u.source)).join("|")})$`)}});let r=e.options.length===1,n=e.options[0]._zod.run;t._zod.parse=(c,u)=>{if(r)return n(c,u);let s=!1,l=[];for(let g of e.options){let p=g._zod.run({value:c.value,issues:[]},u);if(p instanceof Promise)l.push(p),s=!0;else{if(p.issues.length===0)return p;l.push(p)}}return s?Promise.all(l).then(g=>st(g,c,t,u)):st(l,c,t,u)}});var ht=b("$ZodTuple",(t,e)=>{S.init(t,e);let r=e.items;t._zod.parse=(n,c)=>{let u=n.value;if(!Array.isArray(u))return n.issues.push({input:u,inst:t,expected:"tuple",code:"invalid_type"}),n;n.value=[];let s=[],l=[...r].reverse().findIndex(y=>y._zod.optin!=="optional"),g=l===-1?0:r.length-l;if(!e.rest){let y=u.length>r.length,x=u.length<g-1;if(y||x)return n.issues.push({...y?{code:"too_big",maximum:r.length,inclusive:!0}:{code:"too_small",minimum:r.length},input:u,inst:t,origin:"array"}),n}let p=-1;for(let y of r){if(p++,p>=u.length&&p>=g)continue;let x=y._zod.run({value:u[p],issues:[]},c);x instanceof Promise?s.push(x.then(k=>le(k,n,p))):le(x,n,p)}if(e.rest){let y=u.slice(r.length);for(let x of y){p++;let k=e.rest._zod.run({value:x,issues:[]},c);k instanceof Promise?s.push(k.then(z=>le(z,n,p))):le(k,n,p)}}return s.length?Promise.all(s).then(()=>n):n}});function le(t,e,r){t.issues.length&&e.issues.push(...W(r,t.issues)),e.value[r]=t.value}function lt(t,e){return t.issues.length&&e===void 0?{issues:[],value:void 0}:t}var _t=b("$ZodOptional",(t,e)=>{S.init(t,e),t._zod.optin="optional",t._zod.optout="optional",I(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,void 0]):void 0),I(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${ce(r.source)})?$`):void 0}),t._zod.parse=(r,n)=>{if(e.innerType._zod.optin==="optional"){let c=e.innerType._zod.run(r,n);return c instanceof Promise?c.then(u=>lt(u,r.value)):lt(c,r.value)}return r.value===void 0?r:e.innerType._zod.run(r,n)}});var yt=b("$ZodNullable",(t,e)=>{S.init(t,e),I(t._zod,"optin",()=>e.innerType._zod.optin),I(t._zod,"optout",()=>e.innerType._zod.optout),I(t._zod,"pattern",()=>{let r=e.innerType._zod.pattern;return r?new RegExp(`^(${ce(r.source)}|null)$`):void 0}),I(t._zod,"values",()=>e.innerType._zod.values?new Set([...e.innerType._zod.values,null]):void 0),t._zod.parse=(r,n)=>r.value===null?r:e.innerType._zod.run(r,n)});var bt=b("$ZodCustom",(t,e)=>{M.init(t,e),S.init(t,e),t._zod.parse=(r,n)=>r,t._zod.check=r=>{let n=r.value,c=e.fn(n);if(c instanceof Promise)return c.then(u=>dt(u,r,n,t));dt(c,r,n,t)}});function dt(t,e,r,n){if(!t){let c={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(c.params=n._zod.def.params),e.issues.push(De(c))}}i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();var kt;var Te=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...r){let n=r[0];return this._map.set(e,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let r=this._map.get(e);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(e),this}get(e){let r=e._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let c={...n,...this._map.get(e)};return Object.keys(c).length?c:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function zt(){return new Te}(kt=globalThis).__zod_globalRegistry??(kt.__zod_globalRegistry=zt());var Ee=globalThis.__zod_globalRegistry;i();a();o();function It(t,e){return new t({type:"string",...P(e)})}function wt(t,e){return new t({type:"string",format:"url",check:"string_format",abort:!1,...P(e)})}function St(t,e){return new t({type:"number",check:"number_format",abort:!1,format:"safeint",...P(e)})}function jt(t){return new t({type:"unknown"})}function Ne(t,e){return new nt({check:"greater_than",...P(e),value:t,inclusive:!0})}function Me(t){return Ne(0,t)}function Ut(t,e,r){let n=P(r);return n.abort??(n.abort=!0),new t({type:"custom",check:"custom",fn:e,...n})}i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();i();a();o();var D=b("ZodMiniType",(t,e)=>{if(!t._zod)throw new Error("Uninitialized schema in ZodMiniType.");S.init(t,e),t.def=e,t.type=e.type,t.parse=(r,n)=>ue(t,r,n,{callee:t.parse}),t.safeParse=(r,n)=>q(t,r,n),t.parseAsync=async(r,n)=>se(t,r,n,{callee:t.parseAsync}),t.safeParseAsync=async(r,n)=>H(t,r,n),t.check=(...r)=>t.clone({...e,checks:[...e.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),t.with=t.check,t.clone=(r,n)=>K(t,r,n),t.brand=()=>t,t.register=((r,n)=>(r.add(t,n),t)),t.apply=r=>r(t)}),Ae=b("ZodMiniString",(t,e)=>{me.init(t,e),D.init(t,e)});function R(t){return It(Ae,t)}var Pt=b("ZodMiniStringFormat",(t,e)=>{Oe.init(t,e),Ae.init(t,e)});var Sr=b("ZodMiniURL",(t,e)=>{mt.init(t,e),Pt.init(t,e)});function j(t){return wt(Sr,t)}var Dt=b("ZodMiniNumber",(t,e)=>{Ze.init(t,e),D.init(t,e)});var jr=b("ZodMiniNumberFormat",(t,e)=>{ft.init(t,e),Dt.init(t,e)});function Ot(t){return St(jr,t)}var Ur=b("ZodMiniUnknown",(t,e)=>{pt.init(t,e),D.init(t,e)});function Pr(){return jt(Ur)}var Dr=b("ZodMiniArray",(t,e)=>{gt.init(t,e),D.init(t,e)});function F(t,e){return new Dr({type:"array",element:t,...P(e)})}var Or=b("ZodMiniObject",(t,e)=>{vt.init(t,e),D.init(t,e),I(t,"shape",()=>e.shape)});function Z(t,e){return new Or({type:"object",shape:t,catchall:Pr(),...P(e)})}function Le(t,e){return qe(t,e)}var Zr=b("ZodMiniUnion",(t,e)=>{$t.init(t,e),D.init(t,e)});function Zt(t,e){return new Zr({type:"union",options:t,...P(e)})}var Tr=b("ZodMiniTuple",(t,e)=>{ht.init(t,e),D.init(t,e)});function w(t,e,r){let n=e instanceof S,c=n?r:e,u=n?e:null;return new Tr({type:"tuple",items:t,rest:u,...P(c)})}var Er=b("ZodMiniOptional",(t,e)=>{_t.init(t,e),D.init(t,e)});function A(t){return new Er({type:"optional",innerType:t})}var Nr=b("ZodMiniNullable",(t,e)=>{yt.init(t,e),D.init(t,e)});function pe(t){return new Nr({type:"nullable",innerType:t})}var Mr=b("ZodMiniCustom",(t,e)=>{bt.init(t,e),D.init(t,e)});function Ar(t,e){return Ut(Mr,t??(()=>!0),e)}function Tt(t,e={}){let r=Ar(n=>n instanceof t,e);return r._zod.bag.Class=t,r._zod.check=n=>{n.value instanceof t||n.issues.push({code:"invalid_type",expected:t.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}i();a();o();i();a();o();i();a();o();var Mt=Z({value:Z({}),channels:F(R()),allowed:A(pe(F(j())))}),ig=Le(Mt,{url:j(),actor:j()}),Nt=Zt([Z({url:j()}),j()]),G=Z({actor:j()}),V=A(pe(G)),At=Z({data:Tt(Blob),allowed:A(pe(F(j())))}),og=Le(At,{actor:j()}),Gr=Z({types:A(F(R())),maxBytes:A(Ot().check(Me()))});async function*Vr(t){for(;;){let e=await t.next();if(e.done){let{cursor:r,continue:n}=e.value;return{cursor:r,continue:(...c)=>{let u=w([V]).parse(c);return n(...u)}}}else yield e.value}}async function*Jr(t){for(;;){let e=await t.next();if(e.done){let{cursor:r,continue:n}=e.value;return{cursor:r,continue:(...c)=>{let u=w([V]).parse(c);return n(...u)}}}else yield e.value}}var ge=class{constructor(e){this.graffiti=e,this.sessionEvents=this.graffiti.sessionEvents}sessionEvents;login=(...e)=>{let r=w([A(j())]).parse(e);return this.graffiti.login(...r)};logout=(...e)=>{let r=w([G]).parse(e);return this.graffiti.logout(...r)};handleToActor=(...e)=>{let r=w([R()]).parse(e);return this.graffiti.handleToActor(...r)};actorToHandle=(...e)=>{let r=w([j()]).parse(e);return this.graffiti.actorToHandle(...r)};async post(e,r){let n=w([Mt,G]).parse([e,r]);return await this.graffiti.post(...n)}get=(...e)=>{let r=w([Nt,Z({}),V]).parse(e);return this.graffiti.get(...r)};delete=(...e)=>{let r=w([Nt,G]).parse(e);return this.graffiti.delete(...r)};postMedia=(...e)=>{let r=w([At,G]).parse(e);return this.graffiti.postMedia(...r)};getMedia=(...e)=>{let r=w([j(),Gr,V]).parse(e);return this.graffiti.getMedia(...r)};deleteMedia=(...e)=>{let r=w([j(),G]).parse(e);return this.graffiti.deleteMedia(...r)};discover=(...e)=>{let r=w([F(R()),Z({}),V]).parse(e),n=this.graffiti.discover(...r);return Vr(n)};continueDiscover=(...e)=>{let r=w([R(),V]).parse(e),n=this.graffiti.continueDiscover(...r);return Jr(n)}};i();a();o();i();a();o();function Ce(t){return btoa(String.fromCodePoint(...t)).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=+$/,"")}function Ct(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";return Uint8Array.from(atob(e),r=>r.charCodeAt(0))}function Rt(t=32){let e=new Uint8Array(t);return crypto.getRandomValues(e),Ce(e)}var Ft="graffiti:";function Lt(t){let e=t.replace(/:/g,"!").replace(/\//g,"~");return encodeURIComponent(e)}function Br(t){return decodeURIComponent(t).replace(/!/g,":").replace(/~/g,"/")}function Kr(t,e,r){return`${r}${Lt(t)}:${Lt(e)}`}function Gt(t,e){return Kr(t,e,Ft)}function Wr(t,e){if(!t.startsWith(e))throw new U(`URL does not start with ${e}`);let r=t.slice(e.length).split(":");if(r.length!==2)throw new U("URL has too many colon-seperated parts");let[n,c]=r.map(Br);return{actor:n,id:c}}function ve(t){return Wr(t,Ft)}async function Vt(t){if(typeof FileReader<"u")return new Promise((e,r)=>{let n=new FileReader;n.onload=()=>{typeof n.result=="string"?e(n.result):r(new Error("Unexpected result type"))},n.onerror=r,n.readAsDataURL(t)});if(typeof d<"u"){let e=await t.arrayBuffer();return`data:${t.type};base64,${d.from(e).toString("base64")}`}throw new Error("Unsupported environment")}async function Jt(t){return await(await fetch(t)).blob()}var $e="did:local:",he=class{sessionEvents=new EventTarget;handleToActor=async e=>{let r=new TextEncoder().encode(e),n=Ce(r);return`${$e}${n}`};actorToHandle=async e=>{if(!e.startsWith($e))throw new Error(`actor must start with ${$e}`);let r=e.slice($e.length),n=Ct(r);return new TextDecoder().decode(n)};constructor(){(async()=>{await Promise.resolve();for(let n of this.getLoggedInHandles()){let c=new CustomEvent("login",{detail:{session:{actor:await this.handleToActor(n)}}});this.sessionEvents.dispatchEvent(c)}let r=new CustomEvent("initialized",{detail:{}});this.sessionEvents.dispatchEvent(r)})()}loggedInHandles=[];getLoggedInHandles(){if(typeof window<"u"){let e=window.localStorage.getItem("graffiti-handles");return e?e.split(",").map(decodeURIComponent):[]}else return this.loggedInHandles}setLoggedInHandles(e){typeof window<"u"?window.localStorage.setItem("graffiti-handles",e.join(",")):this.loggedInHandles=e}login=async e=>{await new Promise(n=>setTimeout(n,0));let r=e?await this.actorToHandle(e):void 0;if(typeof window<"u"&&(r=window.prompt("Choose a username to log in.",r)??void 0),r){let n=this.getLoggedInHandles();n.includes(r)||this.setLoggedInHandles([...n,r]),window.location.reload()}else{let n={error:new Error("No handle provided to login")},c=new CustomEvent("login",{detail:n});this.sessionEvents.dispatchEvent(c)}};logout=async e=>{let r=await this.actorToHandle(e.actor),n=this.getLoggedInHandles(),c=n.includes(r);c&&this.setLoggedInHandles(n.filter(l=>l!==r));let u=c?{actor:e.actor}:{actor:e.actor,error:new Error("Not logged in with that actor")},s=new CustomEvent("logout",{detail:u});this.sessionEvents.dispatchEvent(s)}};i();a();o();var _e=class{db_;options;get db(){return this.db_||(this.db_=(async()=>{let{default:e}=await import("./index-browser.es-UXYPGJ2M.js"),r={name:"graffitiDb",...this.options.pouchDBOptions},n=new e(r.name,r);return await n.put({_id:"_design/indexes",views:{objectsPerChannelAndLastModified:{map:function(c){let u=c.lastModified.toString().padStart(15,"0");c.channels.forEach(function(s){let l=encodeURIComponent(s)+"/"+u;emit(l)})}.toString()}}}).catch(c=>{if(!(c&&typeof c=="object"&&"name"in c&&c.name==="conflict"))throw c}),n})()),this.db_}async getOperationClock(){return Number((await(await this.db).info()).update_seq)}constructor(e){this.options=e??{}}get=async(...e)=>{let[r,n,c]=e,u=ke(r),s;try{s=await(await this.db).get(u)}catch{throw new U("The object you are trying to get either does not exist or you are not allowed to see it")}if(s.tombstone)throw new U("The object you are trying to get either does not exist or you are not allowed to see it");let{actor:l}=ve(u),{value:g,channels:p,allowed:y}=s,x={value:g,channels:p,allowed:y,url:u,actor:l};if(!ze(x,c))throw new U("The object you are trying to get either does not exist or you are not allowed to see it");let k=Ie(x,[],c?.actor);if(!(await we(n))(k))throw new te;return k};delete=async(...e)=>{let[r,n]=e,c=ke(r),{actor:u}=ve(c);if(u!==n.actor)throw new L("You cannot delete an object that you did not create.");let s;try{s=await(await this.db).get(c)}catch{throw new U("Object not found.")}if(s.tombstone)throw new U("Object not found.");s.tombstone=!0,s.lastModified=await this.getOperationClock();try{await(await this.db).put(s)}catch{throw new U("Object not found.")}let{value:l,channels:g,allowed:p}=s;return{value:l,channels:g,allowed:p,url:c,actor:u}};post=async(...e)=>{let[r,n]=e,c=n.actor,u=Rt(),s=Gt(c,u),{value:l,channels:g,allowed:p}=r,y={value:l,channels:g,allowed:p,lastModified:await this.getOperationClock(),tombstone:!1};return await(await this.db).put({_id:s,...y}),{...r,actor:c,url:s}};async*discoverMeta(e,r){if(r){let x=this.options.continueBuffer??2e3,k=Date.now()-r.lastDiscovered;k<x&&await new Promise(z=>setTimeout(z,x-k))}let[n,c,u]=e,s=await we(c),l=r?r.ifModifiedSince.toString().padStart(15,"0"):"",g="\uFFFF",p=new Set,y=await this.getOperationClock();for(let x of n){let k=encodeURIComponent(x)+"/",z=k+l,T=k+g,J=await(await this.db).query("indexes/objectsPerChannelAndLastModified",{startkey:z,endkey:T,include_docs:!0});for(let be of J.rows){let Q=be.doc;if(!Q)continue;let B=Q._id;if(p.has(B)||(p.add(B),!r&&Q.tombstone))continue;let{tombstone:Kt,value:Wt,channels:Xt,allowed:qt}=Q,{actor:Ht}=ve(B),Fe={url:B,value:Wt,allowed:qt,channels:Xt,actor:Ht};if(!ze(Fe,u))continue;let Ge=Ie(Fe,n,u?.actor);s(Ge)&&(yield Kt?{tombstone:!0,object:{url:B}}:{object:Ge})}}return{lastDiscovered:Date.now(),ifModifiedSince:y}}discoverCursor(e,r){let[n,c,u]=e;return"discover:"+JSON.stringify({channels:n,schema:c,continueParams:r,actor:u?.actor})}async*discoverContinue(e,r,n){if(n?.actor!==e[2]?.actor)throw new L("Cannot continue a cursor started by another actor");let c=this.discoverMeta(e,r);for(;;){let u=await c.next();if(u.done)return{continue:s=>this.discoverContinue(e,u.value,s),cursor:this.discoverCursor(e,u.value)};yield u.value}}discover=(...e)=>{let[r,n,c]=e,u=this.discoverMeta([r,n,c]),s=this;return(async function*(){for(;;){let l=await u.next();if(l.done)return{continue:g=>s.discoverContinue(e,l.value,g),cursor:s.discoverCursor(e,l.value)};l.value.tombstone||(yield l.value)}})()};continueDiscover=(...e)=>{let[r,n]=e;if(r.startsWith("discover:")){let{channels:c,schema:u,actor:s,continueParams:l}=JSON.parse(r.slice(9));return s&&s!==n?.actor?(async function*(){throw new L("Cannot continue a cursor started by another actor")})():this.discoverContinue([c,u,n],l)}else return(async function*(){throw new ie("Cursor not found")})()}};i();a();o();var Xr={properties:{value:{properties:{dataBase64:{type:"string"},type:{type:"string"},size:{type:"number"}},required:["dataBase64","type","size"]}}},ye=class{db;constructor(e){this.db=e}postMedia=async(...e)=>{let[r,n]=e,c=await Vt(r.data),u=r.data.type,{url:s}=await this.db.post({value:{dataBase64:c,type:u,size:r.data.size},channels:[],allowed:r.allowed},n);return s};getMedia=async(...e)=>{let[r,n,c]=e,u=await this.db.get(r,Xr,c),{dataBase64:s,type:l,size:g}=u.value;if(n?.maxBytes&&g>n.maxBytes)throw new re("File size exceeds limit");if(n?.types&&!Ve(l,n.types))throw new ne(`Unacceptable media type, ${l}`);let p=await Jt(s);if(p.size!==g||p.type!==l)throw new Error("Invalid data");return{data:p,actor:u.actor,allowed:u.allowed}};deleteMedia=async(...e)=>{let[r,n]=e;await this.db.delete(r,n)}};var Bt=class extends ge{constructor(e){let r=new Re(e);super(r)}},Re=class{graffitiLocalIdentity=new he;login=this.graffitiLocalIdentity.login.bind(this.graffitiLocalIdentity);logout=this.graffitiLocalIdentity.logout.bind(this.graffitiLocalIdentity);handleToActor=this.graffitiLocalIdentity.handleToActor.bind(this.graffitiLocalIdentity);actorToHandle=this.graffitiLocalIdentity.actorToHandle.bind(this.graffitiLocalIdentity);sessionEvents=this.graffitiLocalIdentity.sessionEvents;graffitiLocalObjects;post;get;delete;discover;continueDiscover;graffitiLocalMedia;postMedia;getMedia;deleteMedia;constructor(e){this.graffitiLocalObjects=new _e(e),this.post=this.graffitiLocalObjects.post.bind(this.graffitiLocalObjects),this.get=this.graffitiLocalObjects.get.bind(this.graffitiLocalObjects),this.delete=this.graffitiLocalObjects.delete.bind(this.graffitiLocalObjects),this.discover=this.graffitiLocalObjects.discover.bind(this.graffitiLocalObjects),this.continueDiscover=this.graffitiLocalObjects.continueDiscover.bind(this.graffitiLocalObjects),this.graffitiLocalMedia=new ye(this.graffitiLocalObjects),this.postMedia=this.graffitiLocalMedia.postMedia.bind(this.graffitiLocalMedia),this.getMedia=this.graffitiLocalMedia.getMedia.bind(this.graffitiLocalMedia),this.deleteMedia=this.graffitiLocalMedia.deleteMedia.bind(this.graffitiLocalMedia)}};export{Bt as GraffitiLocal};
2
2
  //# sourceMappingURL=index.js.map