@ibgib/space-gib 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/Dockerfile +14 -0
- package/IMPLEMENTATION.md +484 -0
- package/README.md +46 -0
- package/dist/client/bootstrap.mjs +58 -0
- package/dist/client/bootstrap.mjs.map +7 -0
- package/dist/client/chunk-CT47Z5WU.mjs +21 -0
- package/dist/client/chunk-CT47Z5WU.mjs.map +7 -0
- package/dist/client/chunk-RHEDTRKF.mjs +235 -0
- package/dist/client/chunk-RHEDTRKF.mjs.map +7 -0
- package/dist/client/index.html +147 -0
- package/dist/client/index.mjs +2 -0
- package/dist/client/index.mjs.map +7 -0
- package/dist/client/script.mjs +2 -0
- package/dist/client/script.mjs.map +7 -0
- package/dist/client/style.css +605 -0
- package/dist/respec-gib.node.mjs +5 -0
- package/dist/server/server.mjs +20157 -0
- package/dist/server/server.mjs.map +7 -0
- package/generate-version-file.js +35 -0
- package/package.json +27 -0
- package/src/client/AUTO-GENERATED-version.mts +11 -0
- package/src/client/README.md +19 -0
- package/src/client/api/function-infos.web.mts +38 -0
- package/src/client/api/space-gib-api-bridge.mts +85 -0
- package/src/client/bootstrap.mts +49 -0
- package/src/client/components/keystone-creator/keystone-creator.css +139 -0
- package/src/client/components/keystone-creator/keystone-creator.html +26 -0
- package/src/client/components/keystone-creator/keystone-creator.mts +229 -0
- package/src/client/constants.mts +76 -0
- package/src/client/custom.d.ts +11 -0
- package/src/client/dev-tools.mts +540 -0
- package/src/client/helpers.web.mts +178 -0
- package/src/client/index.html +147 -0
- package/src/client/index.mts +59 -0
- package/src/client/script.mts +13 -0
- package/src/client/style.css +605 -0
- package/src/client/types.mts +85 -0
- package/src/client/ui/shell/space-gib-shell-constants.mts +24 -0
- package/src/client/ui/shell/space-gib-shell-service.mts +233 -0
- package/src/client/ui/shell/space-gib-shell-types.mts +5 -0
- package/src/client/witness/app/space-gib/space-gib-app-v1.mts +160 -0
- package/src/client/witness/app/space-gib/space-gib-constants.mts +38 -0
- package/src/client/witness/app/space-gib/space-gib-helper.mts +72 -0
- package/src/client/witness/app/space-gib/space-gib-types.mts +47 -0
- package/src/common/keystone-policies.mts +159 -0
- package/src/respec-gib.node.mts +6 -0
- package/src/server/README.md +18 -0
- package/src/server/bootstrap-helper.mts +141 -0
- package/src/server/bootstrap-helper.respec.mts +100 -0
- package/src/server/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mts +85 -0
- package/src/server/path-constants.mts +89 -0
- package/src/server/path-helper.mts +101 -0
- package/src/server/path-helper.respec.mts +94 -0
- package/src/server/serve-gib/CHANGELOG.md +29 -0
- package/src/server/serve-gib/README.md +34 -0
- package/src/server/serve-gib/constants.mts +1 -0
- package/src/server/serve-gib/handlers/api/debug/ws-echo.handler.mts +104 -0
- package/src/server/serve-gib/handlers/api/health.handler.mts +23 -0
- package/src/server/serve-gib/handlers/api/health.respec.mts +51 -0
- package/src/server/serve-gib/handlers/api/ibgib/ibgib-handler-types.mts +49 -0
- package/src/server/serve-gib/handlers/api/ibgib/ibgib.handler.mts +176 -0
- package/src/server/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +261 -0
- package/src/server/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +146 -0
- package/src/server/serve-gib/handlers/api/keystone/keystone-get.handler.mts +198 -0
- package/src/server/serve-gib/handlers/api/keystone/keystone-get.respec.mts +107 -0
- package/src/server/serve-gib/handlers/api/keystone/keystone-handler-types.mts +29 -0
- package/src/server/serve-gib/handlers/api/keystone/keystone-post.handler.mts +70 -0
- package/src/server/serve-gib/handlers/api/keystone/keystone-post.respec.mts +130 -0
- package/src/server/serve-gib/handlers/error-handler.mts +36 -0
- package/src/server/serve-gib/handlers/handler-base.mts +383 -0
- package/src/server/serve-gib/handlers/static-handler.mts +82 -0
- package/src/server/serve-gib/handlers/ws/sync-upgrade.handler.mts +498 -0
- package/src/server/serve-gib/handlers/ws/ws-helper.mts +111 -0
- package/src/server/serve-gib/handlers/ws/ws-types.mts +53 -0
- package/src/server/serve-gib/serve-gib-helpers.mts +32 -0
- package/src/server/serve-gib/serve-gib-v1.mts +172 -0
- package/src/server/serve-gib/serve-gib.respec.mts +90 -0
- package/src/server/serve-gib/types.mts +102 -0
- package/src/server/server-constants.mts +2 -0
- package/src/server/server.mts +96 -0
- package/tsconfig.json +29 -0
- package/tsconfig.server.json +29 -0
- package/tsconfig.test.json +27 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var wa=Object.defineProperty;var b=(e,t)=>wa(e,"name",{value:t,configurable:!0});var _e=/^[a-zA-Z0-9_\-.]{1,256}$/,ni=/^[a-zA-Z0-9_]{1,255}$/,ai=/^(\[.+\])?\s?(\(UNEXPECTED\)|\(unexpected\))?(.+)(\([EIWeiw]: [a-fA-F\d]{32}\))(\(UNEXPECTED\)|\(unexpected\))?$/,si=/^(\[.+\]).+$/,$o=/^[0-9a-fA-F]{32}$/,yo=/^[0-9a-fA-F]{64}$/;var Io="/",_o="_nonalphanumerics_";var We=!1,Ao=globalThis.crypto,{subtle:ya}=Ao,se={sha_256:"SHA-256",sha_512:"SHA-512"};function L(e){return JSON.parse(JSON.stringify(e))}b(L,"clone");function ie(e){return(e??new Date).toUTCString()}b(ie,"getTimestamp");async function fe({s:e,algorithm:t="SHA-256"}){if(!e)return"";try{let r=Object.values(se);if(!r.includes(t))throw new Error(`Only ${r} implemented (E: 73cb52cd4d7f70c3415fdf695ba6ba23)`);let o=new TextEncoder().encode(e),a=await ya.digest(t,o);return Array.from(new Uint8Array(a)).map(s=>s.toString(16).padStart(2,"0")).join("")}catch(r){throw console.error(m(r.message)),r}}b(fe,"hash");async function P(e=64){let t="";if(e<32)throw new Error("Seed size must be at least 32");if(!globalThis.crypto)throw new Error("Cannot create UUID, as unknown crypto library version. If using node.js, v19+ is required. (E: c02cee3fd8a94f678d3f4ebe9dc49797)");let r=Ao.getRandomValues(new Uint8Array(16));if(t=await fe({s:r.join("")}),!t)throw new Error("Did not create UUID...hmm...");return t}b(P,"getUUID");function F(e){return JSON.stringify(e,null,2)}b(F,"pretty");async function X(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}b(X,"delay");function m(e){return!e&&e!==0?"[error is falsy]":typeof e=="string"?e:typeof e.message=="string"?e.message:typeof e=="number"?JSON.stringify(e):e.error?(console.warn(`[${m.name}] this fn takes the raw error object. no destructure required. change your call from extractErrorMsg({error}) to extractErrorMsg(error). (W: ea49af5fd76d4b80a55a108d73a3e9b4)`),m(e.error)):`[error is not a string and error.message is not a string. typeof error: ${typeof e} (E: d5a7723ca59646838308bc9e53a43134)]`}b(m,"extractErrorMsg");function dr({items:e,keyFn:t}){let r=`[${dr.name}]`;try{let o={};for(let a=0;a<e.length;a++){let n=e[a],s=t(n);o[s]=[...o[s]??[],n]}return o}catch(o){throw console.error(`${r} ${o.message}`),o}}b(dr,"groupBy");function _t({min:e,max:t,chars:r,noSpaces:o}){return e=e??1,t=t??999999999999,r=r??"",o?new RegExp(`^[\\w${r}]{${e},${t}}$`):new RegExp(`^[\\w\\s${r}]{${e},${t}}$`)}b(_t,"getRegExp");function ue(e){let t;if(e){if(t=new Date(e),t.toString()==="Invalid Date")throw new Error(`invalid date created by timestamp (${e}) (E: cbd6aeefe00708184e276ea3c2532b22)`)}else t=new Date;return t.getTime().toString()}b(ue,"getTimestampInTicks");function fr({startDate:e,years:t,months:r,days:o,hours:a,seconds:n}){let s=`[${fr.name}]`;try{return je({startDate:e,years:t,months:r,days:o,hours:a,seconds:n}).toUTCString()}catch(i){throw console.log(`${s} ${i.message}`),i}}b(fr,"getExpirationUTCString");function je({startDate:e,years:t,months:r,days:o,hours:a,seconds:n}){let s=`[${je.name}]`;try{if(!e&&!t&&!r&&!o&&!a&&!n)throw new Error("either startDate or a time interval required. (E: 30248f8b306f443ab036fa8c313c50d8)");e=e?new Date(e):new Date;let i,c;return t?(i=e.getFullYear()+t,c=e.setFullYear(i),je({startDate:new Date(c),months:r,days:o,hours:a,seconds:n})):r?(i=e.getMonth()+r,c=e.setMonth(i),je({startDate:new Date(c),years:t,days:o,hours:a,seconds:n})):o?(i=e.getDate()+o,c=e.setDate(i),je({startDate:new Date(c),years:t,months:r,hours:a,seconds:n})):a?(i=e.getHours()+a,c=e.setHours(i),je({startDate:new Date(c),years:t,months:r,days:o,seconds:n})):n?(i=e.getSeconds()+n,c=e.setSeconds(i),je({startDate:new Date(c),years:t,months:r,days:o,hours:a})):e}catch(i){throw console.log(`${s} ${i.message}`),i}}b(je,"addTimeToDate");function br({expirationTimestampUTC:e}){let t=`[${br.name}]`;try{if(!e)throw new Error("expirationTimestampUTC required (E: 5eeb1e29f93d64f70c71a8112080a222)");let r=new Date(e);if(r.toUTCString()==="Invalid Date")throw new Error(`invalid expirationTimestampUTC: ${e} (E: 66a1a165bcf1f9336fe78856ab777822)`);return r<new Date}catch(r){throw console.error(`${t} ${r.message}`),r}}b(br,"isExpired");function At(e){return Array.from(new Set(e))}b(At,"unique");function Ia({obj:e,value:t,path:r,pathDelimiter:o,logalot:a}){let n=`[${Ia.name}]`;try{if(a&&console.log(`${n} starting...`),!e)throw new Error("obj required (E: 6a9dd32a361476e80b1bf7b91ec50522)");if(typeof e!="object")throw new Error("obj must be type 'object' (E: 66fdc289b32c06492bd95f5d266e6a22)");if(!r)throw new Error("path required (at the very least should be the key in the root obj.) (E: fc779e7794ead8a0b44e5f2e776b0e22)");o=o||Io;let s=e,i=r.split(o).filter(l=>!!l),c=i.pop();i.forEach(l=>{let d=s[l];if(d){if(typeof d!="object")throw new Error(`invalid path into object. Each step along the path must be typeof === 'object', but typeof targetObj["${l}"] === ${typeof d}. (value: ${d}) (E: 38cf29c5f624a40b4b56502c2ec39d22)`)}else s[l]={};s=s[l]}),s[c]=t}catch(s){throw console.error(`${n} ${s.message}`),s}finally{a&&console.log(`${n} complete.`)}}b(Ia,"patchObject");async function _a({n:e}){let t=`[${_a.name}]`;try{We&&console.log(`${t} starting...`);let r=[];for(let o=0;o<e;o++){let a=await P();r.push(a.substring(0,16))}return r}catch(r){throw console.error(`${t} ${r.message}`),r}finally{We&&console.log(`${t} complete.`)}}b(_a,"getIdPool");function Aa({text:e,length:t,keepLiterals:r=["-"],replaceMap:o}){let a=`[${Aa.name}]`;try{if(We&&console.log(`${a} starting... (I: 27437e312e5aa621adfebb84e059c822)`),!e)throw new Error("text required (E: 87e0493613c8b30dfade83e1d2862a22)");let n=e,s={};r=r??[];for(let c=0;c<r.length;c++){let l=r[c],d;do d=To({count:10});while(d.includes(l)||l.includes(d)||e.includes(d));if(n.includes(l))for(s[d]=l;n.includes(l);)n=n.replace(l,d)}if(o&&Object.keys(o).length>0)for(let c=0;c<Object.keys(o).length;c++){let l=Object.keys(o)[c],d=o[l];for(;n.includes(l);)n=n.replace(l,d)}n=n.replace(/\W/g,"");let i=Object.keys(s);for(let c=0;c<i.length;c++){let l=i[c];for(;n.includes(l);)n=n.replace(l,s[l])}return t&&t>0&&n.length>t&&(We&&console.log(`${a} curtailing length (I: d7a28e05daa5979c7686b4c1cf519b23)`),n=n.substring(0,t)),n.length===0&&(n=_o),n}catch(n){throw console.error(`${a} ${n.message}`),n}finally{We&&console.log(`${a} complete.`)}}b(Aa,"getSaferSubstring");function Ta({x:e}){if((e??[]).length===0)return;let t=Math.floor(Math.random()*e.length);return e[t]}b(Ta,"pickRandom");function To({count:e}){let t=`${To.name}]`;try{if(!Number.isInteger(e))throw new Error("count required to be a number. (E: c0a21d884ebd9afc4b2e8025207e0522)");let r="";for(let o=0;o<e;o++)r+=Ta({x:"a b c d e f g h i j k l m n o p q r s t u v w x y z".split(" ")});if(r.length!==e)throw new Error(`${t} (UNEXPECTED) result.length !== count ? (E: 9bec4ec8f78610d8055e565415392a22)`);return r}catch(r){throw console.error(`${t} ${r.message}`),r}finally{We&&console.log(`${t} complete.`)}}b(To,"pickRandom_Letters");function Ve({dominant:e,recessive:t}){let r=`[${Ve.name}]`;try{if(Array.isArray(e)&&Array.isArray(t)){let o=L(e),a=!1;return t.forEach(n=>{if(typeof n=="string")o.includes(n)||o.push(n);else{a||(console.warn(`${r} merging arrays of non-string elements. (W: d8ab113064834abc8eb5fe6c4cf87ba3)`),a=!0);let s=JSON.stringify(n);o.some(i=>JSON.stringify(i)===s)||o.push(n)}}),o}else if(typeof e=="object"&&typeof t=="object"){let o={...t},a=Object.keys(e),n=Object.keys(t);return a.forEach(s=>{n.includes(s)?Array.isArray(e[s])&&Array.isArray(t[s])?o[s]=Ve({dominant:e[s],recessive:t[s]}):e[s]&&!Array.isArray(e[s])&&typeof e[s]=="object"&&t[s]&&!Array.isArray(t[s])&&typeof t[s]=="object"?o[s]=Ve({dominant:e[s],recessive:t[s]}):o[s]=e[s]:o[s]=e[s]}),o}else return console.warn(`${r} unknown values or value types do not match. Both should either be an array or map. Dominant one wins categorically without any merging. (W: 3690ea19b81a4b89b98c1940637df62c)`),e}catch(o){throw console.error(`${r} ${o.message}`),o}}b(Ve,"mergeMapsOrArrays_Naive");function $({ib:e,gib:t,ibGib:r,delimiter:o="^"}){return e=e||r?.ib||"",t=t||r?.gib||"",e+o+t}b($,"getIbGibAddr");function N({ibGib:e,ibGibAddr:t,delimiter:r="^"}){let o="[getIbAndGib]";if(!t)if(e)t=$({ibGib:e});else throw new Error(`${o} We need either an address or an ibGib object`);if(!t)throw new Error(`${o} Couldn't get ibGibAddr. ibGib invalid?`);r||(r="^");let a=t.split(r);return a.length===2?{ib:a[0],gib:a[1]}:a.length===1&&t.endsWith(r)?{ib:a[0],gib:""}:a.length===1&&t.startsWith(r)?{ib:"",gib:a[0]}:a.length===2&&a[0]===""&&a[1]===""?{ib:r,gib:""}:(console.warn(`${o} multiple delimiters found in ibGibAddr. Considering last delimiter as the demarcation of gib hash`),{ib:a.slice(0,a.length-1).join(r),gib:a.slice(a.length-1)[0]})}b(N,"getIbAndGib");var Sa=globalThis.crypto,{subtle:So}=Sa;function ct(e,t=""){t||(t="");let r=b(async s=>{if(!s)return"";let i=new TextEncoder().encode(s),c=await So.digest("SHA-256",i);return Array.from(new Uint8Array(c)).map(d=>d.toString(16).padStart(2,"0")).join("")},"hashToHex"),o=b(async(s,i)=>{let c;if(s){let f=new TextEncoder().encode(s);c=new Uint8Array(f.length+i.length),c.set(f),c.set(i,f.length)}else c=i;let l=await So.digest("SHA-256",c);return Array.from(new Uint8Array(l)).map(f=>f.toString(16).padStart(2,"0")).join("")},"hashToHex_Uint8Array"),a=b(s=>{if(s===null||typeof s!="object")return s;if(Array.isArray(s))return s.map(l=>a(l));let i={},c=Object.keys(s).sort();for(let l of c){let d=s[l];d!==void 0&&(i[l]=a(d))}return i},"toNormalizedForHashing"),n;return t?n=b(async(s,i,c)=>{let l=Object.keys(c||{}).length>0&&Object.keys(c||{}).some(E=>c[E]&&c[E].length>0),d=!!i;d&&(typeof i=="string"?d=i.length>0:i instanceof Uint8Array?d=!0:typeof i=="object"?d=Object.keys(i||{}).length>0:d=!0);let f=(await r(t+s)).toUpperCase(),p=l?(await r(t+JSON.stringify(a(c)))).toUpperCase():"",u="";return d&&(i instanceof Uint8Array?u=(await o(t,i)).toUpperCase():u=(await r(t+JSON.stringify(a(i)))).toUpperCase()),l||d?(await r(t+f+p+u)).toUpperCase():(await r(t+f)).toUpperCase()},"hashFields"):n=b(async(s,i,c)=>{let l=Object.keys(c||{}).length>0&&Object.keys(c||{}).some(E=>c[E]&&c[E].length>0),d=!!i;d&&(typeof i=="string"?d=i.length>0:i instanceof Uint8Array?d=!0:typeof i=="object"?d=Object.keys(i||{}).length>0:d=!0);let f=(await r(s)).toUpperCase(),p=l?(await r(JSON.stringify(a(c)))).toUpperCase():"",u="";return d&&(i instanceof Uint8Array?u=(await o("",i)).toUpperCase():u=(await r(JSON.stringify(a(i)))).toUpperCase()),l||d?(await r(f+p+u)).toUpperCase():(await r(f)).toUpperCase()},"hashFields"),n(e.ib,e?.data,e?.rel8ns)}b(ct,"sha256v1");var C;(function(e){e.past="past",e.ancestor="ancestor",e.dna="dna",e.identity="identity",e.tjp="tjp",e.secret="secret",e.encryption="encryption"})(C||(C={}));var ze="ib",D="gib",Tt={ib:ze,gib:D},k="^",he=".",Go="ib^gib",Be=["past","ancestor","dna","tjp"],Ga=155,xo=new RegExp(`^[\\w\\t\\-|=+.&%$#@!~\` \\[\\]\\(\\)\\{\\}]{1,${Ga}}$`);async function Fe(e){let t=L(e),r=`[${Fe.name}]`;t.srcAddr&&delete t.srcAddr,delete t.src;let o={ib:t.type,data:t,rel8ns:{ancestor:[`${t.type.toString()}${k}${D}`]}};return o.gib=await ct(o),o}b(Fe,"buildDna");function xa({ibGib:e}){let t=`[${xa.name}]`;try{if(!e)throw new Error("ibGib required.");let r=["fork","mut8","rel8","plan"].map(a=>`${a}^${D}`);return e.rel8ns&&e.rel8ns.ancestor&&Array.isArray(e.rel8ns.ancestor)&&e.rel8ns.ancestor.some(a=>r.includes(a))||!1}catch(r){throw console.error(`${t} ${m(r)}`),r}}b(xa,"isDna");function W({ibGib:e,gib:t}){return e?W({gib:e.gib}):t?t===D:!0}b(W,"isPrimitive");async function M({ibGib:e,hasTjp:t,tjpAddr:r,gibDelimiter:o,isPrimitive:a,hashAlgorithm:n}){let s=`[${M.name}]`;try{if(!e)throw new Error("ibGib required. (E: 17d073226b9d42fd841e5a94b065ef21)");if(a)return D;let i=await ct(e,""),c=e.rel8ns??{},l=e.data??{};if(o=o||he,t||(t=(c.tjp??[]).length>0||l.isTjp||!1),t){let d;if(c.tjp)if(c.tjp.length===1)if(c.tjp[0])r=c.tjp[0];else throw new Error("rel8ns.tjp[0] is falsy. (E: ed879d2b039543f8b1902e8b7b5a5a7b)");else if(c.tjp.length>1)if(c.tjp[c.tjp.length-1])console.warn(`${s} found more than one tjp addr...only expecting 1 ATOW. (W: 10ed43f716e743e0afd1954f1ab46789)`),r=c.tjp[c.tjp.length-1];else throw new Error("multiple tjp addrs, and the last (most recent) one is falsy. (E: bc835dc89be24075bba8b2b6616ea069)");else throw new Error("hasTjp is true but rel8ns.tjp is empty array. (E: d08b2f9e86494814b5e7d7b4602b2ab7)");else if(l.isTjp)r=$({ib:e.ib,gib:i});else throw new Error("hasTjp is true, but both ibGib.rel8ns.tjp and ibGib.data.isTjp are falsy. (E: 4e246897e52044789594d853bb5b66ee)");if(d=r?N({ibGibAddr:r}).gib:void 0,d)return l.isTjp?i:`${i}${he}${d}`;throw new Error("hasTjp is true but could not find tjpAddrGib. (E: 1863df626b754744a1d431a683cb0ba0)")}else return i}catch(i){throw console.error(`${s} ${m(i)}`),i}}b(M,"getGib");function Q({ibGibAddr:e,gib:t,gibDelimiter:r}){let o=`[${Q.name}]`;try{if(!e&&!t)throw new Error("Either ibGibAddr or gib required. (E: 25e3dcbe63cd44909032df12af9df75e)");if(t=t||N({ibGibAddr:e}).gib,t===D)return{isPrimitive:!0};if(r=r??he,t.includes(r)){let a=t.split(r);if(a.some(i=>i===""))throw new Error(`unexpected gib that contains gibDelimiter (${r}) but has at least one piece with empty string. (E: 75a94280045541009ee68182d12d3449)`);let n=a.length;return n>2&&console.warn(`${o} gib only expected to have two pieces ATOW. re-examine please. (W: aa4283ac5a5747a386a69966ecdad39d)`),{punctiliarHash:a.splice(0,1)[0],tjpGib:a.join(r),piecesCount:n,delimiter:r}}else return{punctiliarHash:t,piecesCount:1,delimiter:r}}catch(a){throw console.error(`${o} ${m(a)}`),a}}b(Q,"getGibInfo");async function St(e){let{noTimestamp:t,dna:r,linkedRel8ns:o,destIb:a,uuid:n,tjp:s,cloneRel8ns:i,cloneData:c,type:l="fork"}=e,d=e.src,f="[fork_v1]";if(l!=="fork")throw new Error(`${f} not a fork transform.`);if(e.type||(e.type="fork"),!d)throw new Error(`${f} src required to fork.`);if(!d.ib)throw new Error(`${f} src.ib required.`);if(a&&a.includes(k))throw new Error(`${f} destIb can't contain (hardcoded) delimiter right now.`);if(!d.gib)throw new Error(`${f} src.gib required.`);let p={ib:d.ib,gib:d.gib};d.data&&Object.keys(d.data).length>0&&(p.data=d.data),d.rel8ns&&Object.keys(d.rel8ns).length>0&&(p.rel8ns=d.rel8ns),d=p;let u=$({ib:d.ib,gib:d.gib});e.srcAddr=u;let h=i&&d.rel8ns&&Object.keys(d.rel8ns).length>0?L(d.rel8ns):{};delete h.past;let E=c&&d?.data?L(d.data):{};e.nCounter&&(E.n=0);let g=o?.includes(C.ancestor)?[u]:(h.ancestor||[]).concat([u]);h.ancestor=g,h.tjp&&delete h.tjp;let I=L(d);if(t&&s?.timestamp)throw new Error(`${f} both noTimestamp and tjp.timestamp selected.`);if(!t||s?.timestamp){let y=new Date;E.timestamp=ie(y),E.timestampMs=y.getMilliseconds()}(s?.uuid||n)&&(E.uuid=await P()),s?.uuid||s?.timestamp?E.isTjp=!0:E.isTjp&&delete E.isTjp,I.ib=a||"ib",u!==Go&&(I.rel8ns=h),Object.keys(E).length>0&&(I.data=E);let _=null;if(r){_=await Fe(e);let y=$({ibGib:_});h.dna=o?.includes(C.dna)?h.dna=[y]:h.dna=(h.dna||[]).concat(y)}I.gib=await ct(I,"");let A={newIbGib:I};return _&&(A.dnas=[_]),A}b(St,"fork");async function Je(e){let{noTimestamp:t,dna:r,linkedRel8ns:o,dataToRename:a,dataToRemove:n,dataToAddOrPatch:s,mut8Ib:i,type:c="mut8"}=e,l=e.src,d="[mut8_v1]";if(c!=="mut8")throw new Error(`${d} not a mut8 transform.`);if(e.type||(e.type="mut8"),!l)throw new Error(`${d} src required to mut8.`);if(!l.ib)throw new Error(`${d} src.ib required.`);if(l.ib.includes(k))throw new Error(`${d} ib can't contain hardcoded delimiter (${k}) right now.`);if(!l.gib)throw new Error(`${d} src.gib required.`);if(!i&&!a&&!n&&!s)throw new Error(`${d} gotta provide either a mut8Ib or some data to change.`);let f=$({ib:l.ib,gib:l.gib});if(e.srcAddr&&f!==e.srcAddr)throw new Error(`${d} srcAddr from src does not equal opts.srcAddr`);if(e.srcAddr=f,W({ibGib:l}))throw new Error(`${d} cannot mutate primitive ibgib`);let p={ib:l.ib,gib:l.gib};l.data&&Object.keys(l.data).length>0&&(p.data=l.data),l.rel8ns&&Object.keys(l.rel8ns).length>0&&(p.rel8ns=l.rel8ns),l=p;let u=L(l),h=l.rel8ns?l.rel8ns:{},E=L(h);E.past=o?.includes(C.past)?[f]:(E.past||[]).concat([f]);let g=l?.data?L(l.data):{};if(a&&(g=pr(g,a,"rename")),n&&(g=pr(g,n,"remove")),s&&(g=Oo(g,s)),!t){let G=new Date;g.timestamp=ie(G),g.timestampMs=G.getMilliseconds()}if(e.nCounter||Object.keys(g).includes("n"))if(Object.keys(g).includes("n"))if(Number.isInteger(g.n))g.n>=0?g.n=g.n+1:(console.warn(`${d} data.n is less than 0, which is unexpected. Resetting data.n to 0.`),g.n=0);else throw new Error("cannot increment nCounter because data.n is not a number.");else g.n=0;if(g.isTjp){let G=E.tjp??[];G.push(f),E.tjp=G,delete g.isTjp}let _=null;if(r){_=await Fe(e);let G=$({ibGib:_});E.dna=o?.includes(C.dna)?E.dna=[G]:E.dna=(E.dna||[]).concat(G)}u.ib=i||u.ib,u.rel8ns=E,Object.keys(g).length>0?u.data=g:delete u.data;let A=(E.tjp?.length??0)>0;u.gib=await M({ibGib:u,hasTjp:A});let y={newIbGib:u};return _&&(y.dnas=[_]),y}b(Je,"mut8");function pr(e,t,r){let o="[renameOrRemove]",a=["timestamp"];return Object.keys(t).forEach(n=>{if(a.includes(n))throw new Error(`${o} Cannot rename to ${n}.`);if(Object.keys(e).includes(n)){let s=t[n];if(typeof s=="string"){if(a.includes(s))throw new Error(`${o} Cannot rename to ${s}.`);r==="rename"&&(e[s]=e[n]),delete e[n]}else e[n]=pr(e[n],s,r)}else console.log(`${o} key to ${r} does not exist`)}),e}b(pr,"renameOrRemove");function Oo(e,t){return Object.keys(t).forEach(r=>{let o=t[r],a=e[r];a?Array.isArray(o)||Array.isArray(a)?e[r]=o:typeof o=="object"&&typeof a=="object"?e[r]=Oo(a,o):e[r]=o:e[r]=o}),e}b(Oo,"patch");async function Ae(e){let{noTimestamp:t,dna:r,linkedRel8ns:o,rel8nsToAddByAddr:a,rel8nsToRemoveByAddr:n,type:s="rel8"}=e,i=e.src,c="[rel8_v1]";if(s!=="rel8")throw new Error(`${c} not a rel8 transform.`);if(e.type||(e.type="rel8"),s!=="rel8")throw new Error(`${c} not a rel8 transform.`);if(e.type||(e.type="rel8"),!i)throw new Error(`${c} src required.`);if(!i.ib)throw new Error(`${c} src.ib required.`);if(i.ib.includes(k))throw new Error(`${c} ib can't contain hardcoded delimiter (${k}) right now.`);if(!i.gib)throw new Error(`${c} src.gib required.`);if(W({ibGib:i}))throw new Error(`${c} cannot relate/unrelate primitive ibgib`);let l=a&&Object.keys(a).length>0,d=n&&Object.keys(n).length>0;if(!(l||d))throw new Error(`${c} gotta provide relations to either add or remove.`);let f=$({ib:i.ib,gib:i.gib});if(e.srcAddr&&f!==e.srcAddr)throw new Error(`${c} srcAddr from src does not equal opts.srcAddr`);e.srcAddr=f;let p=b(y=>y&&typeof y=="string"&&y.length>=2&&y.includes("^")&&y.split("^")[0].length>=1,"fnValidIbGibAddr");Object.keys(a||{}).map(y=>(a||{})[y]).forEach(y=>{if(!(y&&y.every(G=>p(G))))throw new Error(`${c} Invalid rel8n attempt. Must be valid ibGibs. Did you include a delimiter (^)?`)}),Object.keys(n||{}).map(y=>(n||{})[y]).forEach(y=>{if(!(y&&y.every(G=>p(G))))throw new Error(`${c} Invalid remove rel8n attempt. Must be valid ibGibs. Did you include a delimiter (^)?`)});let u={ib:i.ib,gib:i.gib};i.data&&Object.keys(i.data).length>0&&(u.data=i.data),i.rel8ns&&Object.keys(i.rel8ns).length>0&&(u.rel8ns=i.rel8ns),i=u;let h=L(i),E=L(i.data||{});if(e.nCounter||Object.keys(E).includes("n"))if(Object.keys(E).includes("n"))if(Number.isInteger(E.n))E.n>=0?E.n=E.n+1:(console.warn(`${c} data.n is less than 0, which is unexpected. Resetting data.n to 0.`),E.n=0);else throw new Error("cannot increment nCounter because data.n is not a number.");else E.n=0;if(!t){let y=new Date;E.timestamp=ie(y),E.timestampMs=y.getMilliseconds()}let g=L(i.rel8ns||{});if(Object.keys(a||{}).forEach(y=>{if(Be.includes(y))throw new Error(`${c} Cannot manually add relationship: ${y}.`);let G=g[y]||[],S=a[y].filter(ae=>!G.includes(ae));g[y]=G.concat(S)}),Object.keys(n||{}).forEach(y=>{if(Be.includes(y))throw new Error(`${c} Cannot manually remove relationship: ${y}.`);let G=g[y]||[],T=n[y]||[],S=G.filter(ae=>!T.includes(ae));S.length>0?g[y]=S:delete g[y]}),g.past=(g.past||[]).concat([f]),(o||[]).filter(y=>Object.keys(g).includes(y)).filter(y=>(g[y]||[]).length>1).forEach(y=>{let G=g[y].length;g[y]=[g[y][G-1]]}),E.isTjp){let y=g.tjp||[];y.push(f),g.tjp=y,delete E.isTjp}h.data=E,h.rel8ns=g;let I=(g.tjp?.length??0)>0,_=null;if(r){_=await Fe(e);let y=$({ibGib:_});g.dna=o?.includes(C.dna)?g.dna=[y]:g.dna=(g.dna||[]).concat(y)}h.gib=await M({ibGib:h,hasTjp:I});let A={newIbGib:h};return _&&(A.dnas=[_]),A}b(Ae,"rel8");function Gt({ibGib:e}){let t=`[${Gt.name}]`;if(!e)return console.warn(`${t} ibGib falsy. (W: 884178562f5b4f15933ac4d98db74cc6)`),!1;if(e.data?.isTjp||e.rel8ns?.tjp?.length>0)return!0;let r=["fork^gib","mut8^gib","rel8^gib"];return(e.rel8ns?.ancestor??[]).some(a=>r.includes(a))?!1:e.gib?e.gib.includes(he)?!0:e.gib===D?!1:!!Q({ibGibAddr:$({ibGib:e})}).tjpGib:(console.warn(`${t} ibGib.gib falsy. (W: 6400d780822b44d992846f1196509be3)`),!1)}b(Gt,"hasTjp");function xt({ibGib:e}){let t=`[${xt.name}]`;e.ib||console.warn(`${t} ibGib.ib is falsy. (W: e60e41c2a1fc48268379d88ce13cb77b)`),e.gib||console.warn(`${t} ibGib.gib is falsy. (W: fb3889cbf0684ae4ac51e48f28570377)`);let r={ib:(e.ib||"").slice()};return e.gib&&(r.gib=e.gib.slice()),e.data&&(r.data=e.data instanceof Uint8Array?e.data:L(e.data)),e.rel8ns&&(r.rel8ns=L(e.rel8ns)),r}b(xt,"toDto");var ur=!1;async function ee({ibGib:e}){let t=`[${ee.name}]`;try{let r=[];if(e){let o=$({ibGib:e});if(r=lt({addr:o})??[],r.length>0)return console.error(`${t} errors found in addr: ${o}`),r;if(W({gib:e.gib}))return null;let a=await M({ibGib:xt({ibGib:e}),hasTjp:Gt({ibGib:e})});return a!==e.gib&&(e.data?.src&&e.data.srcAddr&&e.ib==="rel8"?(delete e.data.src,delete e.data.srcAddr,a=await M({ibGib:xt({ibGib:e}),hasTjp:Gt({ibGib:e})}),a!==e.gib&&r.push(`Ibgib invalid intrinsically - gottenGib (${a}) does not equal ibGib.gib (${e.gib}). (E: 020b71479e944b2198fe436e7e137786)`)):r.push(`Ibgib invalid intrinsically - gottenGib (${a}) does not equal ibGib.gib (${e.gib}). (E: 7416db016878430ca3c5b20697f164ed)`)),r.length>0?r:null}else return r.push("ibGib is itself falsy. (E: 4fb98caf6ed24ef7b35a19cef56e2d7e)"),r}catch(r){throw console.error(`${t} ${m(r)}`),r}}b(ee,"validateIbGibIntrinsically");function lt({addr:e,delimiter:t,version:r}){let o=`[${lt.name}]`;try{let a=[];if(r&&console.warn(`${o} version not implemented yet. Ignoring. (W: 2d19db16ec0c4766b5d35248787671f3)`),!e)return a.push("addr required. (E: e9a54041aa0b41c1bb2324d9d2d42c7f)"),a;t=t||k,e.includes(t)||a.push(`No delimiter (${t}) found. (E: 05e28dcb70ff44019edc53ed508bd1e8)`),e.startsWith(t)&&a.push("addr starts with delim. (E: d29f808c5a47452f9bb3ea684694c6eb)");let{ib:n,gib:s}=N({ibGibAddr:e,delimiter:t}),i=Qe({ib:n,ibGibAddrDelimiter:t,version:r});i&&(a=a.concat(i));let c=Ze({gib:s,ibGibAddrDelimiter:t,version:r});return c&&(a=a.concat(c)),a.length>0&&ur&&console.log(`${o} errors.length > 0. errors: ${a.join("|")} (I: 9c18f993e138f15613e4c6a340d41722)`),a.length>0?a:null}catch(a){throw console.error(`${o} ${m(a)}`),a}}b(lt,"validateIbGibAddr");function Qe({ib:e,ibGibAddrDelimiter:t,version:r}){let o=`[${Qe.name}]`;try{let a=[];return r&&console.warn(`${o} version not implemented yet. Ignoring. (W: 71228ba4ed994aaa8149910e295ab087)`),e?e===ze?null:(t=t||k,e.includes(t)&&a.push(`ib contains ibGibAddrDelimiter (${t}) (E: 09e61b46c3e84874bc02b6918f1f2c39)`),a.length>0?a:null):(a.push("ib required. (E: a76d06c7b9c24db3a731a91dbe46acd5)"),a)}catch(a){throw console.error(`${o} ${m(a)}`),a}}b(Qe,"validateIb");function Ze({gib:e,gibDelimiter:t,ibGibAddrDelimiter:r,version:o}){let a=`[${Ze.name}]`;try{let n=[];if(o&&console.warn(`${a} version not implemented yet. Ignoring. (E: 90ced1db69774702b92acb261bdaee23)`),!e)return n.push("gib required. (E: e217de4035b04086827199f4bace189c)"),n;r=r||k;let s=[r],i=[];s.forEach(u=>{e.includes(u)&&i.push(u)}),i.length>0&&n.push(`gib (${e}}) contains invalid characters: (${JSON.stringify(i.join(","))}) (E: 1e584258d9e049ba9ce7e516f3ab97f1)`);let{punctiliarHash:c,tjpGib:l,isPrimitive:d}=Q({gib:e,gibDelimiter:t||he});if(d)return null;if(!c)throw new Error(`${a} punctiliarHash is falsy on a non-primitive gib. (E: 72835394918241bdb2632bf0510bdae5)`);let f=c.match($o),p=c.match(yo);if(!f&&!p&&n.push("gib punctiliar hash is neither a 32- or 64-char hash string. (E: d47ff6d6e14b4c02a62107090c8dad39)"),l){let u=Ze({gib:l});(u??[]).length>0&&n.push(`tjpGib has errors (E: d6b79228d4a64c0b967cdb0efcea4d0d). tjpGibValidationErrors: ${u.join(". ")}`)}return n.length>0?n:null}catch(n){throw console.error(`${a} ${m(n)}`),n}}b(Ze,"validateGib");function hr({rel8ns:e}){let t=`[${hr.name}]`;try{ur&&console.log(`${t} starting... (I: 62b4722599798dd8ab95fcebf42c0e23)`);let r=[],o=Object.keys(e);for(let a=0;a<o.length;a++){let n=Object.keys(e)[a];typeof n!="string"&&r.push("non-string rel8nName found. all keys of rel8ns must be of type string. (E: 3b2e4582b638421681951f5475c85178)");let s=e[n]??[];for(let i=0;i<s.length;i++){let c=s[i],l=lt({addr:c})??[];l.length>0&&r.push(`invalid addr found for rel8nName (${n}). addr errors: ${l.join("|")} (E: 56809a746c4f462db426e90395b80364)`)}}return r.length>0?r:null}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{ur&&console.log(`${t} complete.`)}}b(hr,"validateRel8nsIntrinsically");var Do=!1,j=class e{static{b(this,"Factory_V1")}static root(){return e.primitive({ib:ze})}static primitive({ib:t}){return{ib:t,gib:D}}static primitives({ibs:t}){return t.map(r=>e.primitive({ib:r}))}static async firstGen({ib:t=ze,parentIbGib:r=e.root(),data:o,rel8ns:a,dna:n,tjp:s,linkedRel8ns:i,noTimestamp:c,nCounter:l,squash:d}){let f=`[${e.name}][${e.firstGen.name}]`;try{if(Do&&console.log(`${f} starting... (I: b7152fbd94382516d9f7c591bcf4c326)`),n&&d)throw new Error("both dna and squash cannot be true. Squash requires that no dna exist. (E: abfc58b4a4c8654924aa5428d0831826)");let p=[],u=r||Tt,h=await St({src:u,destIb:t,tjp:s,dna:n,linkedRel8ns:i,noTimestamp:c,nCounter:l});if(p.push(h),u=h.newIbGib,o){let E=await Je({src:u,dataToAddOrPatch:o,dna:n,linkedRel8ns:i,noTimestamp:c,nCounter:l});p.push(E),u=E.newIbGib}if(a){let E=await Ae({src:u,rel8nsToAddByAddr:a,dna:n,linkedRel8ns:i,noTimestamp:c,nCounter:l});p.push(E)}if(p.length>1){let E=p.slice(p.length-1)[0].newIbGib,g={newIbGib:E,intermediateIbGibs:p.slice(0,p.length-1).map(I=>I.newIbGib)};if(n){d&&`${f}`;let I=[];return p.forEach(_=>{I=I.concat(_.dnas)}),g.dnas=I,g}else if(d){if(!E.rel8ns)throw new Error("(UNEXPECTED) newIbGib.rel8ns is falsy? (E: 6b09e8057fc5b00c6cfd13be60e97f26)");return delete E.rel8ns.past,E.rel8ns.tjp&&(delete E.rel8ns.tjp,E.data??={},E.data.isTjp=!0),l&&(E.data??={},E.data.n=0),E.gib=await M({ibGib:E}),{newIbGib:E}}else return g}else{if(p.length===1)return p[0];throw new Error("(UNEXPECTED) interimResults.length is not 1 and not greater than 1? 0? But we had to fork? (E: a256c88c56916a46a888796f76ef4826)")}}catch(p){throw console.error(`${f} ${m(p)}`),p}finally{Do&&console.log(`${f} complete.`)}}static async stone({parentPrimitiveIb:t,ib:r,ibRegExpPattern:o,data:a,rel8ns:n,noTimestamp:s,uuid:i}){let c=`[${e.name}][${e.stone.name}]`;try{if(!t)throw new Error("parentPrimitiveIb required. (E: genuuid)");if(Qe({ib:t})!==null)throw new Error(`Invalid parentPrimitiveIb: ${t}. (E: genuuid)`);if(!r)throw new Error("ib required. (E: genuuid)");let l=o?new RegExp(o):xo;if(!r.match(l))throw new Error(`invalid ib. does not match regexp (${l}) (E: genuuid)`);let d=Object.keys(n??{}),f=[...Be,"tjp"];if(d.some(E=>f.includes(E)))throw new Error(`Invalid rel8ns. forbiddenRel8nNames: ${f}. rel8ns keys: ${Object.keys(n??{})}. (E: genuuid)`);let h=(await e.firstGen({ib:r,parentIbGib:e.primitive({ib:t}),data:a,rel8ns:n,dna:!1,noTimestamp:s,nCounter:!1})).newIbGib;return i&&(h.data||(h.data={}),h.data.uuid=await P()),h.rel8ns?.past&&delete h.rel8ns.past,h.rel8ns?.tjp&&delete h.rel8ns.tjp,h.gib=await M({ibGib:{ib:h.ib,data:h.data,rel8ns:h.rel8ns},hasTjp:!1}),h}catch(l){throw console.error(`${c} ${l.message}`),l}}static async constant({parentPrimitiveIb:t,ib:r,ibRegExpPattern:o,data:a,rel8ns:n}){let s=`[${e.name}][${e.constant.name}]`;try{return await e.stone({parentPrimitiveIb:t,ib:r,ibRegExpPattern:o,data:a,rel8ns:n,noTimestamp:!0,uuid:!1})}catch(i){throw console.error(`${s} ${i.message}`),i}}};var hc="[core^gib timer]";var gr=`.'",!?-`;var No=new RegExp("^[\\w\\t\\-|=+.&%$#@!~` \\[\\]\\(\\)\\{\\}]{1,155}$");var gc=/^[a-zA-Z0-9_\-.]{1,255}$/,Ec=/^[a-zA-Z0-9_\-.\s👀🤖:;&]{1,64}$/;var Ot={tags:"tags",aliases:"aliases",roots:"roots",outerspaces:"outerspaces",secrets:"secrets",encryptions:"encryptions",autosyncs:"autosyncs",robbots:"robbots",apps:"apps",history:"history"};var Oa="robbot";var Lo="zero",vo="zerospace";var vc=!1,Rc="This is a local space. There are many like it, but this one is mine.";var Cc=/^[a-zA-Z][\w\-]{0,62}[a-zA-Z]$/,Da="syncSpace";var Pc=3e4;var Dt="space";var Ro="space_lock",Co=100,Po=100,Uc=60*2,Er=30;var mr="root",wr="x",Uo="root",$r="analytics-outline",yr='This is a root ibgib, which is basically like a root folder that is primarily responsible for "containing" other ibgibs.';var Ir="tag",Na="target";var ko="pricetag-outline",Mo="This is a tag used for organizing data.";var Kc="always",jo="archive",Bo="trash";var _r=/^\w{1,32}$/,Nt="Invalid Date";var Wc={ib:"true",gib:D};var Vc={ib:"false",gib:D};var Fo="config_key";var dt=/^[a-zA-Z0-9_\-.]{1,32}$/,Lt="app";var He=`bootstrap^${D}`,ge="defaultSpaceId",Ho="spaceIds";var Ee={prependPerHash:"prependPerHash",appendPerHash:"appendPerHash",initialPrepend:"initialPrepend",initialAppend:"initialAppend"},Ce=Object.values(Ee),ne={sha_256:"SHA-256",sha_512:"SHA-512"},el=Object.values(ne),La={indexOf:"indexOf",lastIndexOf:"lastIndexOf"},Te=Object.values(La);function ft(e){let t=`[${ft.name}]`;return new Promise((r,o)=>{try{let a=qo(e),n=Ko(a);r(n)}catch(a){console.error(`${t} ${m(a)}`),o(a)}})}b(ft,"encodeStringToHexString");function qo(e){let t=`[${qo.name}]`;try{return new TextEncoder().encode(e)}catch(r){throw console.error(`${t} ${m(r)}`),r}}b(qo,"stringToUTF8Bytes");function Ko(e){let t=`[${Ko.name}]`;try{return Array.from(e,r=>r.toString(16).padStart(2,"0")).join("")}catch(r){throw console.error(`${t} ${m(r)}`),r}}b(Ko,"bytesToHexString");function Se(e){let t=`[${Se.name}]`;return new Promise((r,o)=>{try{let a=Yo(e),n=Xo(a);r(n)}catch(a){console.error(`${t} ${m(a)}`),o(a)}})}b(Se,"decodeHexStringToString");function Yo(e){let t=`[${Yo.name}]`;try{if(e.length%2!==0)throw new Error("invalid hex string. length %2 !== 0");let r=e.length/2,o=new Uint8Array(r);for(let a=0;a<r;a++)o[a]=parseInt(e.substr(a*2,2),16);return o}catch(r){throw console.error(`${t} ${m(r)}`),r}}b(Yo,"hexStringToBytes");function Xo(e){let t=`[${Xo.name}]`;try{return new TextDecoder().decode(e)}catch(r){throw console.error(`${t} ${m(r)}`),r}}b(Xo,"utf8BytesToString");var Ge=Ee.appendPerHash,xe="SHA-512",Oe=1024,me=2e4,De=1,Wo="indexOf",vt="lastIndexOf",Rt=5e6,Ct=4,Pe=",";function va({secret:e,prevHash:t,salt:r,saltStrategy:o}){if(!(t||e))throw new Error("Either secret or prevHash is required, but both are falsy (E: bee2849729ff410081d963777dcedb49))");switch(o){case Ee.prependPerHash:return r+(t||e);case Ee.appendPerHash:return(t||e)+r;case Ee.initialPrepend:return t||r+e;case Ee.initialAppend:return t||e+r;default:throw new Error(`Unknown saltStrategy: ${o} (E: 235136af1a6c40eb9c17b2ca41c08a01)`)}}b(va,"getPreHash");async function ce({secret:e,prevHash:t,count:r,salt:o,saltStrategy:a,hashAlgorithm:n}){let s=`[${ce.name}]`;try{let i=t||void 0;for(let c=0;c<r;c++){let l=va({secret:e,prevHash:i,salt:o,saltStrategy:a});i=await fe({s:l,algorithm:n})}if(!i)throw new Error("hash was not created (E: 09dfdfd644734727a34a1bc0bd8e93b9)");return i}catch(i){throw console.error(`${s} ${m(i)}`),i}}b(ce,"execRound_getNextHash");async function Ne({secret:e,initialRecursions:t,salt:r,saltStrategy:o,hashAlgorithm:a}){let n=`[${Ne.name}]`;try{return await ce({secret:e,count:t,salt:r,saltStrategy:o,hashAlgorithm:a})}catch(s){throw console.error(`${n} ${m(s)}`),s}}b(Ne,"doInitialRecursions_keystretch");async function Ar({hexEncodedData:e,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i,indexingMode:c}){let l=`[${Ar.name}]`;try{let d=await Ne({secret:n,initialRecursions:t,salt:o,saltStrategy:a,hashAlgorithm:s}),f=c==="indexOf"?(h,E)=>h.indexOf(E):(h,E)=>h.lastIndexOf(E),p=[];for(let h=0;h<e.length;h++){let E=e[h],g="",I;for(;!g.includes(E);)I=await ce({count:r,prevHash:d,salt:o,saltStrategy:a,hashAlgorithm:s}),g+=I,d=I;let _=f(g,E);p.push(_)}return p.join(i)}catch(d){throw console.error(`${l} ${m(d)}`),d}}b(Ar,"encryptFromHex_stream");async function Tr({encryptedData:e,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i}){let c=`[${Tr.name}]`;try{let l=await Ne({secret:n,initialRecursions:t,salt:o,saltStrategy:a,hashAlgorithm:s}),d=e.split(i).map(u=>parseInt(u)),f=[];for(let u=0;u<d.length;u++){let h=d[u],E="",g;for(;h>=E.length;)g=await ce({count:r,prevHash:l,salt:o,saltStrategy:a,hashAlgorithm:s}),E+=g,l=g;let I=E[h];f.push(I)}return f.join("")}catch(l){throw console.error(`${c} ${m(l)}`),l}}b(Tr,"decryptToHex_stream");async function bt({encryptedData:e,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i}){let c=`[${bt.name}]`,l=[],d=[];t=t||me,r=r||De,a=a||Ge,s=s||xe,o=o||await P(Oe),i=i||Pe;let f="[validation]";if(!t||t<1){let h=`${f} initialRecursions required, and greater than 0`;console.error(h),l.push(h)}if(!r||r<1){let h=`${f} recursionsPerHash required, and greater than 0`;console.error(h),l.push(h)}if(!e){let h=`${f} encryptedData required`;console.error(h),l.push(h)}if(!o){let h=`${f} salt required`;console.error(h),l.push(h)}if(!a){let h=`${f} saltStrategy required`;console.error(h),l.push(h)}if(!n){let h=`${f} secret required`;console.error(h),l.push(h)}if(!i){let h=`${f} encryptedDataDelimiter required`;console.error(h),l.push(h)}if(!Object.values(ne).includes(s)){let h=`${f} only ${Object.values(ne)} hash algorithms implemented`;console.error(h),l.push(h)}if(a&&!Ce.includes(a)){let h=`${f} unknown saltStrategy: ${a}`;console.error(h),l.push(h)}if(l.length>0)return{errors:l,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,hashAlgorithm:s,encryptedDataDelimiter:i};let p=await Tr({encryptedData:e,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i});return{decryptedData:await Se(p),initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,hashAlgorithm:s,encryptedDataDelimiter:i,warnings:d.length>0?d:void 0}}b(bt,"decryptImpl_stream");async function Sr({dataToEncrypt:e,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i,confirm:c,indexingMode:l}){let d=`[${Sr.name}]`,f=[],p=[];t||(console.warn(`${d} initial recursions required. defaulting to ${me}`),t=me),r=r||De,a=a||Ge,s=s||xe,o=o||await P(Oe),i=i||Pe,l=l||Wo;let u="[validation]";if(!t||t<1){let g=`${u} initialRecursions required, and greater than 0`;console.error(g),f.push(g)}if(!r||r<1){let g=`${u} recursionsPerHash required, and greater than 0`;console.error(g),f.push(g)}if(!e){let g=`${u} dataToEncrypt required`;console.error(g),f.push(g)}if(!o){let g=`${u} salt required`;console.error(g),f.push(g)}if(!a){let g=`${u} saltStrategy required`;console.error(g),f.push(g)}if(!n){let g=`${u} secret required`;console.error(g),f.push(g)}if(!i){let g=`${u} encryptedDataDelimiter required`;console.error(g),f.push(g)}if(!Te.includes(l)){let g=`${u} invalid indexingMode (${l}). Must be one of ${Te} (E: 5955c46755434982982823c97adcf076)`;console.error(g),f.push(g)}if(!Object.values(ne).includes(s)){let g=`${u} only ${Object.values(ne)} hash algorithms implemented`;console.error(g),f.push(g)}if(a&&!Ce.includes(a)){let g=`${u} unknown saltStrategy: ${a}`;console.error(g),f.push(g)}if(f.length>0)return{errors:f,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,hashAlgorithm:s,encryptedDataDelimiter:i};let h=await ft(e);if(c&&await Se(h)!==e)throw new Error("decoding encoded hex failed for this data: The encoded hex did not reverse to the original data.");let E=await Ar({hexEncodedData:h,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i,indexingMode:"indexOf"});if(c){let g=await bt({encryptedData:E,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i});if((g.errors||[]).length>0)return{errors:["Confirm check found that decrypt had errors.",...g.errors],initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,hashAlgorithm:s,encryptedDataDelimiter:i};if(g.decryptedData){if(g.decryptedData!==e)throw new Error("The ENCRYPTED data did not decrypt back to the original data.")}else throw new Error("Confirm check call to decrypt produced falsy decryptedData");(g.warnings||[]).length>0&&(p=p.concat(["Confirm check call to decrypt had warnings.",...g.warnings]))}return{encryptedData:E,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,hashAlgorithm:s,encryptedDataDelimiter:i,warnings:p.length>0?p:void 0}}b(Sr,"encryptImpl_stream");async function Gr({hexEncodedData:e,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i,indexingMode:c,maxBlockSize:l,numOfPasses:d}){let f=`[${Gr.name}]`;try{let p=await Ne({secret:n,initialRecursions:t,salt:o,saltStrategy:a,hashAlgorithm:s}),u=c==="indexOf"?(G,T)=>G.indexOf(T):(G,T)=>G.lastIndexOf(T),h=[],E=e.length,g=l;g>E&&(g=E);let I=Math.ceil(E/g),_=E%g||g,A=0;for(let G=0;G<I;G++){G===I-1&&(g=_);let S=await Vo({blockSize:g,indexHexEncodedDataAtStartOfPass:A,numOfPasses:d,hexEncodedData:e,recursionsPerHash:r,salt:o,saltStrategy:a,prevHash:p,hashAlgorithm:s}),ae=S.alphabetsThisBlock;p=S.prevHash;let O=await zo({alphabetsThisBlock:ae,blockSize:g,indexHexEncodedDataAtStartOfPass:A,hexEncodedData:e,getIndexOfCharInAlphabet:u});h=h.concat(O),A+=g}return h.join(i)}catch(p){throw console.error(`${f} ${m(p)}`),p}}b(Gr,"encryptFromHex_blockMode");async function Vo({blockSize:e,numOfPasses:t,indexHexEncodedDataAtStartOfPass:r,hexEncodedData:o,recursionsPerHash:a,salt:n,saltStrategy:s,prevHash:i,hashAlgorithm:c}){let l=`[${Vo.name}]`;try{let d=[],f,p;for(let u=0;u<t;u++)for(let h=0;h<e;h++){f=r+h;let E=d[h]??"";p=await ce({count:a,prevHash:i,salt:n,saltStrategy:s,hashAlgorithm:c}),E+=p,i=p,d[h]=E}for(let u=0;u<e;u++){f=r+u;let h=o[f],E=d[u];for(;!E.includes(h);)p=await ce({count:a,prevHash:i,salt:n,saltStrategy:s,hashAlgorithm:c}),E+=p,i=p;d[u]=E}return{alphabetsThisBlock:d,prevHash:i}}catch(d){throw console.error(`${l} error: ${m(d)}`),d}}b(Vo,"getAlphabetsThisBlock");async function zo({alphabetsThisBlock:e,blockSize:t,indexHexEncodedDataAtStartOfPass:r,hexEncodedData:o,getIndexOfCharInAlphabet:a}){let n=`[${zo.name}]`;try{let s=[];for(let i=0;i<t;i++){let c=r+i,l=e[i],d=a(l,o[c]);s.push(d)}return s}catch(s){throw console.error(`${n} ${m(s)}`),s}}b(zo,"getEncryptedIndexesThisBlock");async function xr({encryptedData:e,initialRecursions:t,recursionsPerHash:r,salt:o,saltStrategy:a,secret:n,hashAlgorithm:s,encryptedDataDelimiter:i,maxBlockSize:c,numOfPasses:l}){let d=`[${xr.name}]`;try{let f=await Ne({secret:n,initialRecursions:t,salt:o,saltStrategy:a,hashAlgorithm:s}),p=e.split(i).map(y=>parseInt(y)),u=[],h=p.length,E=c;E>h&&(E=h);let g=Math.ceil(h/E),I=h%E||E,_=0;for(let y=0;y<g;y++){y===g-1&&(E=I);let T=await Jo({blockSize:E,indexEncryptedDataIndexesAtStartOfPass:_,numOfPasses:l,encryptedDataIndexes:p,recursionsPerHash:r,salt:o,saltStrategy:a,prevHash:f,hashAlgorithm:s}),S=T.alphabetsThisBlock;f=T.prevHash;let ae=await Zo({alphabetsThisBlock:S,blockSize:E,indexEncryptedDataIndexesAtStartOfPass:_,encryptedDataIndexes:p});u=u.concat(ae),_+=E}return u.join("")}catch(f){throw console.error(`${d} ${m(f)}`),f}}b(xr,"decryptToHex_blockMode");async function Jo({blockSize:e,numOfPasses:t,indexEncryptedDataIndexesAtStartOfPass:r,encryptedDataIndexes:o,recursionsPerHash:a,salt:n,saltStrategy:s,prevHash:i,hashAlgorithm:c}){let l=`[${Jo.name}]`;try{let d=[],f,p;for(let u=0;u<t;u++)for(let h=0;h<e;h++){f=r+h;let E=d[h]??"";p=await ce({count:a,prevHash:i,salt:n,saltStrategy:s,hashAlgorithm:c}),E+=p,i=p,d[h]=E}for(let u=0;u<e;u++){f=r+u;let h=o[f],E=d[u];for(;E.at(h)===void 0;)p=await ce({count:a,prevHash:i,salt:n,saltStrategy:s,hashAlgorithm:c}),E+=p,i=p;d[u]=E}return{alphabetsThisBlock:d,prevHash:i}}catch(d){throw console.error(`${l} error: ${m(d)}`),d}}b(Jo,"getAlphabetsThisBlock");async function Zo({alphabetsThisBlock:e,blockSize:t,indexEncryptedDataIndexesAtStartOfPass:r,encryptedDataIndexes:o}){let a=`[${Zo.name}]`;try{let n=[];for(let s=0;s<t;s++){let i=r+s,c=o[i],d=e[s][c];n.push(d)}return n}catch(n){throw console.error(`${a} ${m(n)}`),n}}b(Zo,"getDecryptedDataArrayThisBlock");async function pt(e){let t=`[${pt.name}]`,{encryptedData:r,initialRecursions:o,recursionsPerHash:a,salt:n,saltStrategy:s,secret:i,hashAlgorithm:c,encryptedDataDelimiter:l,indexingMode:d,blockMode:f,multipass:p}=e,u=[],h=[];if(f&&p)throw new Error("blockMode and multipass set. blockMode was a refactored name of multipass, so these should not both be present. multipass is deprecated. (E: b9b3cd1f701c700835c0419260278223)");if(!f&&p&&(console.warn(`${t}[WARNING] "multipass" option is deprecated. this has been refactored to "blockMode". This will use multipass as blockMode. (W: b77c9773e30549cbb389ce61f31eb6d3)`),f=p),!f)throw new Error("(UNEXPECTED) blockMode required. This should be truthy in order to get to this impl fn. (E: 306bce36afd64b7182ca2b46ac04a261)");o=o||me,a=a||De,s=s||Ge,c=c||xe,n=n||await P(Oe),l=l||Pe,d=d||vt;let{maxBlockSize:E,maxPassSectionLength:g,numOfPasses:I}=f;!E&&g&&(console.warn(`${t}[WARNING] "maxPassSectionLength" option is deprecated. this has been refactored to "maxBlockSize". This will use maxPassSectioLength as maxBlockSize. (W: e2c83d78a3464704a6067e0f767f20b0)`),E=g),E=E||Rt,I=I||Ct;let _="[validation]";if(!o||o<1){let T=`${_} initialRecursions required, and greater than 0`;console.error(T),u.push(T)}if(!a||a<1){let T=`${_} recursionsPerHash required, and greater than 0`;console.error(T),u.push(T)}if(!r){let T=`${_} encryptedData required`;console.error(T),u.push(T)}if(!n){let T=`${_} salt required`;console.error(T),u.push(T)}if(!s){let T=`${_} saltStrategy required`;console.error(T),u.push(T)}if(!i){let T=`${_} secret required`;console.error(T),u.push(T)}if(!l){let T=`${_} encryptedDataDelimiter required`;console.error(T),u.push(T)}if(!d){let T=`${_} indexingMode required (E: a6fe15f8ba414e21b5355d23e808b976)`;console.error(T),u.push(T)}if(!Te.includes(d)){let T=`${_} invalid indexingMode (${d}). Must be one of ${Te} (E: 17435268651444e0b7a594135635fc58)`;console.error(T),u.push(T)}if(E<1){let T=`${_} maxBlockSize must be greater than 0 (E: 0870831aa86b4bfa939aeee9f252326a)`;console.error(T),u.push(T)}if(I<1){let T=`${_} numOfPasses must be greater than 0 (E: 691d3c3765584c6f8c9aba1ee378df00)`;console.error(T),u.push(T)}if(!Object.values(ne).includes(c)){let T=`${_} only ${Object.values(ne)} hash algorithms implemented`;console.error(T),u.push(T)}if(s&&!Ce.includes(s)){let T=`${_} unknown saltStrategy: ${s}`;console.error(T),u.push(T)}if(u.length>0){let T={...e,errors:u};return delete T.encryptedData,delete T.secret,T}let A=await xr({encryptedData:r,initialRecursions:o,recursionsPerHash:a,salt:n,saltStrategy:s,secret:i,hashAlgorithm:c,encryptedDataDelimiter:l,maxBlockSize:E,numOfPasses:I}),y=await Se(A),G={...e,decryptedData:y,warnings:h.length>0?h:void 0};return delete G.encryptedData,delete G.secret,G}b(pt,"decryptImpl_blockMode");async function Or(e){let t=`[${Or.name}]`,{dataToEncrypt:r,initialRecursions:o,recursionsPerHash:a,salt:n,saltStrategy:s,secret:i,hashAlgorithm:c,encryptedDataDelimiter:l,confirm:d,indexingMode:f,blockMode:p,multipass:u}=e,h=[],E=[];if(p&&u)throw new Error("blockMode and multipass set. blockMode was a refactored name of multipass, so these should not both be present. multipass is deprecated. (E: bde5efd1a3e449dca549c5bff147f09b)");if(!p&&u&&(console.warn(`${t}[WARNING] "multipass" option is deprecated. this has been refactored to "blockMode". This will use multipass as blockMode. (W: 046b55a6d1304155b2e5352a9e6140b0)`),p=u),!p)throw new Error("(UNEXPECTED) blockMode required. This should be truthy in order to get to this impl fn. (E: 0b87871f81d849ef8f0263b7775bd3e3)");o||(console.warn(`${t} initial recursions required. defaulting to ${me}`),o=me),l=l||Pe,f=f||vt;let{maxBlockSize:g,maxPassSectionLength:I,numOfPasses:_}=p;!g&&I&&(console.warn(`${t}[WARNING] "maxPassSectionLength" option is deprecated. this has been refactored to "maxBlockSize". This will use maxPassSectioLength as maxBlockSize. (W: c28fe476105643e184d0ddd5d2aa8a5d)`),g=I),g=g||Rt,_=_||Ct;let A="[validation]";if(!o||o<1){let S=`${A} initialRecursions required, and greater than 0 (E: dd96a75f0c504f34b1f9f2f32e011c50)`;console.error(S),h.push(S)}if(!a||a<1){let S=`${A} recursionsPerHash required, and greater than 0 (E: 64cf53e0bf9f4963be6b165ca4e6566d)`;console.error(S),h.push(S)}if(!n){let S=`${A} salt required (E: 136a5d237e0f4b1d89f8c87ac12a1507)`;console.error(S),h.push(S)}if(!s){let S=`${A} saltStrategy required (E: 457ed117bf224b9f86fe81ab6bc35381)`;console.error(S),h.push(S)}if(!i){let S=`${A} secret required (E: 5c363255055a45cfb07656e2f4854ed7)`;console.error(S),h.push(S)}if(!l){let S=`${A} encryptedDataDelimiter required (E: 1bbeb4dce19e4ac2bbe7d1e373739298)`;console.error(S),h.push(S)}if(!f){let S=`${A} indexingMode required (E: 693ebd2be64a438aa3b075d0cb0d92bf)`;console.error(S),h.push(S)}if(!Te.includes(f)){let S=`${A} invalid indexingMode (${f}). Must be one of ${Te} (E: 17435268651444e0b7a594135635fc58)`;console.error(S),h.push(S)}if(g<1){let S=`${A} maxBlockSize must be greater than 0 (E: 9f268207ae274b958fb91855331be259)`;console.error(S),h.push(S)}if(_<1){let S=`${A} numOfPasses must be greater than 0 (E: c3bcab79bb024d65b84947806290a7d4)`;console.error(S),h.push(S)}if(!Object.values(ne).includes(c)){let S=`${A} only ${Object.values(ne)} hash algorithms implemented`;console.error(S),h.push(S)}if(s&&!Ce.includes(s)){let S=`${A} unknown saltStrategy: ${s}`;console.error(S),h.push(S)}if(h.length>0){let S={...e,errors:h};return delete S.dataToEncrypt,delete S.secret,S}let y=await ft(r);if(d&&await Se(y)!==r)throw new Error("decoding encoded hex failed for this data: The encoded hex did not reverse to the original data.");let G=await Gr({hexEncodedData:y,initialRecursions:o,recursionsPerHash:a,salt:n,saltStrategy:s,secret:i,hashAlgorithm:c,encryptedDataDelimiter:l,indexingMode:f,maxBlockSize:g,numOfPasses:_});if(d)try{let S=await pt({encryptedData:G,initialRecursions:o,recursionsPerHash:a,salt:n,saltStrategy:s,secret:i,hashAlgorithm:c,encryptedDataDelimiter:l,indexingMode:f,blockMode:p});if(S.decryptedData){if(S.decryptedData!==r)throw new Error("The ENCRYPTED data did not decrypt back to the original data. (E: 16b5f1a11e4f438ab38a7f124178a7b8)")}else throw new Error("Confirm check call to decrypt produced falsy decryptedData (E: a4fe82dee61f497e9dea188ea9c287a4)");(S.warnings||[]).length>0&&(E=E.concat(["Confirm check call to decrypt had warnings.",...S.warnings]))}catch(S){throw new Error(`${t} confirm failed. decrypt error: ${m(S)} (E: 782a84d9dc294ce9a6a325e3ab293adf)`)}let T={...e,encryptedData:G,warnings:E.length>0?E:void 0};return delete T.dataToEncrypt,delete T.secret,T}b(Or,"encryptImpl_blockMode");async function Ra(e){let t=`[${Ra.name}]`;try{if(!e)throw new Error("args required (E: 22e58e03c78f4c27bf18295b8d2cdd3a)");if(!e.dataToEncrypt)throw new Error("dataToEncrypt required (E: 168c9076e5434c83ba81e3485ee6f3e4)");e.salt=e.salt||await P(Oe),e.saltStrategy=e.saltStrategy||Ge,e.hashAlgorithm=e.hashAlgorithm||xe,e.recursionsPerHash=e.recursionsPerHash||De;let r;return e.blockMode?r=await Or(e):r=await Sr(e),(r.errors??[]).length>0&&r.errors.forEach(o=>console.warn(`${t} ${o}`)),(r.warnings??[]).length>0&&r.warnings.forEach(o=>console.warn(`${t} ${o}`)),r}catch(r){throw console.error(`${t}${r.message}`),r}}b(Ra,"encrypt");async function Ca(e){let t=`[${Ca.name}]`;try{if(!e)throw new Error("args required (E: fcd9b4aad85c4deba5fe5fde0b9ecb30)");if(!e.encryptedData)throw new Error("encryptedData required (E: f879f612428b4283bae089acee929a58)");e.salt=e.salt||await P(Oe),e.saltStrategy=e.saltStrategy||Ge,e.hashAlgorithm=e.hashAlgorithm||xe,e.recursionsPerHash=e.recursionsPerHash||De;let r;return e.blockMode||e.multipass?r=await pt(e):r=await bt(e),(r.warnings??[]).length>0&&r.warnings.forEach(o=>console.warn(`${t} ${o}`)),(r.errors??[]).length>0&&r.errors.forEach(o=>console.warn(`${t} ${o}`)),r}catch(r){throw console.error(`${t}${r.message}`),r}}b(Ca,"decrypt");var fd=5e4;var bd=Ee.appendPerHash,pd=10,ud="SHA-256";var hd="encryption",gd="ciphertext";var Pa={local:"local",outerspace:"outerspace",innerspace:"innerspace"},$d=Object.values(Pa).concat(),Ua={user:"user",sync:"sync"},Dr=Object.values(Ua).concat(),ka={node_filesystem:"node-filesystem"},Ma={aws_dynamodb:"aws-dynamodb"},ja={...ka,...Ma},Nr=Object.values(ja).concat(),Ba={get:"get",put:"put",delete:"delete"},Fa={can:"can",addrs:"addrs",latest:"latest",watch:"watch",unwatch:"unwatch",tjps:"tjps",dependencyGraph:"dependency-graph"};var Ha=!1,Ut=class e{static{b(this,"DynamicFormBuilder")}lc=`[${e.name}]`;items=[];what="";idPool=[];getNewId(){let t=`${this.lc}[${this.getNewId.name}]`;if(this.idPool?.length>0)return this.idPool.pop()??"";{let r=[],o="ABCDEFGHIJKLMNOPQRSTUVWXYZ",a=o.length;for(let s=0;s<32;s++){let i=Math.floor(Math.random()*a);r.push(o[i])}let n=r.join("");return Ha&&console.log(`${t} id: ${n} (I: c6591ffee6d5bbea79ed19cfa6630422)`),n}}forA({what:t}){return this.what=t||"thingy",this}addItem(t){t.uuid||(t.uuid=this.getNewId()),this.items.push(t)}with({idPool:t}){return t&&(this.idPool=t),this}and(){return this}name({of:t,required:r=!0,defaultValue:o}){return this.addItem({name:"name",description:`What to call this ${this.what}. Doesn't have to be unique, no spaces, up to 32 alphanumerics/underscores in length.`,label:"Name",placeholder:'e.g. "bob_the_cool"',regexp:_t({min:1,max:32,noSpaces:!0}),regexpErrorMsg:"1 to 32 characters, no spaces, underscores allowed.",required:r,dataType:"text",value:t,defaultValue:o}),this}description({of:t,required:r,defaultValue:o}){return this.addItem({name:"description",description:`Description/notes for this ${this.what}.`,label:"Description",placeholder:`Describe these ${this.what} settings here...`,regexp:_t({min:0,max:155,chars:gr}),regexpErrorMsg:`0 to 155 alphanumerics or any of ${gr}`,dataType:"textarea",required:r,value:t,defaultValue:o}),this}classname({of:t,required:r=!0}){return this.addItem({name:"classname",description:`Technical setting that is the name of the ${this.what}'s class in computer code.`,label:"Classname",regexp:_t({min:1,max:128,noSpaces:!0}),regexpErrorMsg:"1 to 128 alphanumerics or underscores without spaces",dataType:"text",value:t,readonly:!0,required:r}),this}uuid({of:t,label:r,required:o}){return this.addItem({name:"uuid",description:`Unique(ish) id of the ${this.what}.`,label:r??"ID",dataType:"text",value:t,regexp:_e,regexpErrorMsg:"1 to 256 alphanumerics, underscores, dots, hyphens allowed.",readonly:!0,required:o}),this}version({of:t,required:r}){return this.addItem({name:"version",description:`Technical setting indicating the version of the ${this.what}.`,label:"Version",dataType:"text",value:t||"",readonly:!0,required:r}),this}customItem(t){return this.addItem(t),this}outputItems(){return this.items}outputForm({formName:t,label:r}){return{name:t,description:`This is a form for a ${this.what}`,label:r??this.what,items:this.items}}};var Lr=class e extends Ut{static{b(this,"WitnessFormBuilder")}lc=`[${e.name}]`;allowPrimitiveArgs({of:t,required:r=!0}){return this.addItem({name:"allowPrimitiveArgs",description:`Technical setting on if this ${this.what} accepts primitive incoming ibgibs`,label:"Allow Primitive Args",dataType:"toggle",value:t??!0,readonly:!0,required:r}),this}catchAllErrors({of:t,required:r=!0}){return this.addItem({name:"catchAllErrors",description:`Technical setting on what the ${this.what} does when it encounters an internal error.`,label:"Catch All Errors",dataType:"toggle",value:t??!0,readonly:!0,required:r}),this}persistOptsAndResultIbGibs({of:t,required:r=!0}){return this.addItem({name:"persistOptsAndResultIbGibs",description:`Technical setting on if the ${this.what} maintains an audit trail of all of its inputs/outputs.`,label:"Persist Opts and Result IbGibs",dataType:"toggle",value:t??!1,readonly:!0,required:r}),this}trace({of:t,required:r}){return this.addItem({name:"trace",description:`Technical setting on if the ${this.what}'s activity should be traced (logged to the console).`,label:"Trace",dataType:"toggle",value:t??!1,readonly:!0,required:r}),this}commonWitnessFields({data:t,allowPrimitiveArgs:r=!0,catchAllErrors:o=!0,persistOptsAndResultIbGibs:a=!0,trace:n=!0,version:s=!0}){return r&&this.allowPrimitiveArgs({of:t.allowPrimitiveArgs}),o&&this.catchAllErrors({of:t.catchAllErrors}),a&&this.persistOptsAndResultIbGibs({of:t.persistOptsAndResultIbGibs}),n&&this.trace({of:t.trace}),s&&this.version({of:t.version}),this}};var kt=!1;function Qo({appData:e}){let t=`[${Qo.name}]`;try{if(kt&&console.log(`${t} starting...`),!e)throw new Error("appData required (E: 3df782b29bc4406a87e4895cfcea28ed)");let r=[],{name:o,uuid:a,classname:n}=e;return o?o.match(dt)||r.push(`name must match regexp: ${dt}`):r.push("name required."),a?a.match(_e)||r.push(`uuid must match regexp: ${_e}`):r.push("uuid required."),n&&(n.match(dt)||r.push(`classname must match regexp: ${dt}`)),r}catch(r){throw console.error(`${t} ${r.message}`),r}finally{kt&&console.log(`${t} complete.`)}}b(Qo,"validateCommonAppData");function vr({appData:e,classname:t}){let r=`[${vr.name}]`;try{let o=Qo({appData:e});if(o.length>0)throw new Error(`invalid appData: ${o} (E: 9aff04f0cfc54a5188ca8bc40764160d)`);if(t){if(e.classname&&e.classname!==t)throw new Error("classname does not match appData.classname (E: 66f1447eef97485fba521c40980f5eb5)")}else if(t=e.classname,!t)throw new Error("classname required (E: 5f6ffb4317044125b94f662070e1f40b)");let{name:a,uuid:n}=e;return`app ${t} ${a} ${n}`}catch(o){throw console.error(`${r} ${o.message}`),o}}b(vr,"getAppIb");function qa({appIb:e}){let t=`[${qa.name}]`;try{if(!e)throw new Error("appIb required (E: 6b065aee67e641ba9f9c6db367ebb0fb)");let r=e.split(" ");return{appClassname:r[1],appName:r[2],appId:r[3]}}catch(r){throw console.error(`${t} ${r.message}`),r}}b(qa,"getInfoFromAppIb");async function Ka({fnPromptApp:e,ibgibs:t,space:r}){let o=`[${Ka.name}]`;try{if(kt&&console.log(`${o} starting...`),!t)throw new Error("ibgibs all powerful service required. (E: b24e78de0d204dc78909022bee296b30)");r=r??await t.getLocalUserSpace({lock:!0});let a=await e(r,null);if(!a)throw new Error("resApp falsy after prompt for app. (E: 2225a567abcd680a5e957e81fbb64123)");let n=a.newIbGib,s=[];s.push(n),a.intermediateIbGibs?.forEach(d=>s.push(d)),a.dnas?.forEach(d=>s.push(d));for(let d=0;d<s.length;d++){let f=s[d],p=await ee({ibGib:f});if((p??[]).length>0)throw new Error(`(UNEXPECTED) invalid app ibgib created. validationErrors: ${p}. app: ${F(n.toIbGibDto())} (E: 54cfc2f6bc284ed79be91d2da5e4bd2f)`)}await V({resTransform:a,space:r});let{zeroSpace:i,fnBroadcast:c,fnUpdateBootstrap:l}=t;return await we({ibGib:n,space:r,fnBroadcast:b(d=>c(d),"fnBroadcast")}),await et({type:"apps",rel8nName:Lt,ibGibsToRel8:[n],space:r,zeroSpace:i,fnUpdateBootstrap:l,fnBroadcast:c}),n}catch(a){debugger;console.error(`${o} ${a.message}`);return}finally{kt&&console.log(`${o} complete.`)}}b(Ka,"createNewApp");var Ya="0",Xa="chat_gib",Wa="A chat app done ibgib style, enabling infinitely nesting comments, pics and links. It's ibgibs all the way down...",en={version:"1",uuid:Ya,name:Xa,description:Wa,classname:"ChatApp_V1",icon:"chatbubbles",persistOptsAndResultIbGibs:!1,allowPrimitiveArgs:!0,catchAllErrors:!0,trace:!1},tn=void 0;var Va="0",za="raw_gib",Ja="Explorer app for navigating raw ibgib data.",rn={version:"1",uuid:Va,name:za,description:Ja,classname:"RawApp_V1",icon:"paper-plane",persistOptsAndResultIbGibs:!1,allowPrimitiveArgs:!0,catchAllErrors:!0,trace:!1},on=void 0;var Rr="0",Za="todo_gib",Qa="Todo app for viewing and interacting with ibgibs like they're checklists.",nn={version:"1",uuid:Rr,name:Za,description:Qa,classname:"TodoApp_V1",icon:"checkbox",persistOptsAndResultIbGibs:!1,allowPrimitiveArgs:!0,catchAllErrors:!0,trace:!1},an=void 0;async function Cr(e){let t=`[${Cr.name}]`,r=[];try{$({ibGib:e})!==He&&r.push(`invalid bootstrapSpace addr. Should equal "${He}" (E: ecfdbed719284db7a1aa3f867f706fe9)`);let a=await ee({ibGib:e});(a?.length??!1)&&a.forEach(i=>r.push(i));let n=e.data,s=e.rel8ns;return Object.keys(n||{}).length===0&&r.push("invalid bootstrapSpace data. data required (E: 5a9bd15dd0644f9b93cafbbba660cfdf)"),(n.spaceIds??[]).length===0&&r.push("invalid bootstrapSpace, data.spaceIds required. (E: 6b91ddc12cfd41e59ded7d7502c1909f)"),Object.keys(e.rel8ns||{}).length===0&&r.push("invalid bootstrapSpace rel8ns (empty). Should have at least one rel8n, with rel8nName corresponding to the spaceId (E: b188ce4ae25e49f794f35e141bc2ecde)"),n.spaceIds.forEach(i=>{(s[i]??[]).length===0&&r.push(`invalid bootstrap. Each spaceId listed in data should have a corresponding address in rel8ns. spaceId (${i}) missing. (E: 62dd0d76e29a415a98b4b27deb8db17e)`)}),n[ge]?(s[n[ge]]??[]).length===0&&r.push(`invalid bootstrap. data.${ge} (${n[ge]}) not found in rel8ns. (E: 44d0799d232f4a51a0b0019ebebe019f)`):r.push(`invalid bootstrap. data.${ge} required. (E: f763af2e275f445cbf1db5801bacafad)`),r.length===0?!0:(console.error(`${t} errors: ${r.join("|")}`),!1)}catch(o){return console.error(`${t} ${o.message}`),!1}}b(Cr,"validateBootstrapIbGib");var tt="meta_stone";var Pr="undefined",ut="target",Mt="targetTjp";var le=!1;function cn({ib:e}){let t=`[${cn.name}]`;try{le&&console.log(`${t} starting...`);let r=[],o=e.split(" ");o[0]!==tt&&r.push(`${t} invalid ib. atom is expected to be META_STONE_ATOM: ${tt} (E: a9812bffc18f44418aa091fb0ed260bd)`);let n=o[1],s=Ze({gib:n})??[];s.length>0&&r.push(`invalid ib. pieces[1] should be a valid tjpGib. validation errors: ${s} (E: 233db2babfbe4d28a80f98261f1c0e01)`);let i=o[2],c=Number.parseInt(i);isNaN(c)&&r.push("invalid ib. space-delimited pieces[2] should be valid integer (E: 71df0d6abd7b4cf4b11621e6bfb556cd)");let l=o[3];if(l!=="undefined"){let d=ht({timestamp:l});d.valid||r.push(`invalid ib. pieces[3] should be valid timestampInTicks. emsg: (${d.emsg}) (E: 06dae01d66f54f54b71d9c920c730840)`)}return r}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{le&&console.log(`${t} complete.`)}}b(cn,"validateCommonMetaStoneIb");function Ur({data:e}){let t=`[${Ur.name}]`;try{if(le&&console.log(`${t} starting...`),!e)throw new Error("data required (E: c50ac422af4501b72af12481fbd4961e)");let r=[],{targetData:o,timestamp:a}=e;ht({timestamp:a}).valid||r.push("invalid timestampInTicks. should be valid ticks number. (E: 7e381ed5b0c8486b90cfd37676da3626)");let{tjpGib:s,n:i,timestamp:c}=o;if(s&&s!=="undefined"){let d=Ze({gib:s})??[];d.length>0&&r.push(`invalid data (targetTjpGib). validation errors: ${d} (E: d216b12eb75544ef8c5ffb27cd132e2e)`)}if(typeof i!="number"&&r.push("invalid n. should be valid integer. if target.data.n is falsy, targetN should be -1 (E: 8f234967b388ad80776c8054d71fbc23)"),c&&c!=="undefined"){let d=ht({timestamp:c});d.valid||r.push(`invalid targetTimestamp. emsg: ${d.emsg} (E: c15d4fd2a2b74a0fab3223e83d954379)`)}let l=new Date(a);return r}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{le&&console.log(`${t} complete.`)}}b(Ur,"validateCommonMetaStoneData");function ln({rel8ns:e}){let t=`[${ln.name}]`;try{if(le&&console.log(`${t} starting...`),!e)throw new Error("rel8ns required (E: 7737ae550e2347e68c67b715c1221393)");let r=[],o=hr({rel8ns:e??{}})??[];o.length>0&&r.push(`invalid rel8ns intrinsically. errors: ${o.join("|")}. (E: abc91753f0f946afa0a3ea2c1917960f)`);let a=e[ut]??[];a.length===0?r.push(`invalid metastone rel8ns. should have exactly 1 rel8nName ${ut}. has 0. (E: 8181652da9e89613e204d245db12d723)`):a.length>1&&r.push(`invalid metastone rel8ns. should have exactly 1 rel8nName ${ut}. has ${a.length}. (E: 2318047c6fea482d9f53febe02cf8912)`);let n=e[Mt]??[];return n.length>1&&r.push(`invalid metastone rel8ns. should have 0 or 1 rel8nName ${Mt}. has ${n.length}. (E: 34a8ae53825f46caa7ad024a64400db2)`),r}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{le&&console.log(`${t} complete.`)}}b(ln,"validateCommonMetaStoneRel8ns");async function es({ibGib:e}){let t=`[${es.name}]`;try{le&&console.log(`${t} starting... (I: f32249d08105b997871a06cdee006311)`);let r=await ee({ibGib:e})??[];if(!e.data)throw new Error("MetaStoneIbGib.data required (E: 96432cf4f919d339277d9a1c61ea4264)");let o=[];try{let{atom:i,tjpGib:c,n:l,timestampInTicks:d}=fn({ib:e.ib})}catch(i){o.push(m(i))}let a=Ur({data:e.data}),n=ln({rel8ns:e.rel8ns}),s=[...r??[],...o??[],...a??[],...n??[]];return s.length>0?s:void 0}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{le&&console.log(`${t} complete.`)}}b(es,"validateCommonMetaStoneIbGib");function dn({data:e,classname:t}){let r=`[${dn.name}]`;try{let o=Ur({data:e});if(o.length>0)throw new Error(`invalid MetaStone data: ${o} (E: ac642cc5915f0fc0508cb2fb728c86fa)`);t&&le&&console.log(`${r} classname not required. no big deal that it is provided here. (I: db4d41471cb976795afd3fa89f8cb823)`);let a=e.targetData.timestamp,n=a&&a!=="undefined"?ue(a):Pr;return`${tt} ${e.targetData.tjpGib} ${e.targetData.n} ${n}`}catch(o){throw console.error(`${r} ${m(o)}`),o}}b(dn,"getMetaStoneIb");function fn({ib:e}){let t=`[${fn.name}]`;try{if(!e)throw new Error("MetaStone ib required (E: 8e74e098d7aeef52d3952e35150d83ed)");let r=cn({ib:e});if(r.length>0)throw new Error(`invalid ib. validationErrors: ${r} (E: a6107f62200eb943e523f70f51300623)`);let o=e.split(" ");return{atom:o[0],tjpGib:o[1],n:Number.parseInt(o[2]),timestampInTicks:o[3]}}catch(r){throw console.error(`${t} ${m(r)}`),r}}b(fn,"parseMetaStoneIb");function of({addr:e,ibGib:t}){if(e||=$({ibGib:t}),!e)throw new Error("either addr or ibGib required. (E: 372b2574d5a9fac298119beed9f6e223)");return e.startsWith(`${tt} `)}b(of,"isMetaStone");async function kr({targetIbGib:e}){let t=`[${kr.name}]`;try{le&&console.log(`${t} starting... (I: d846313065c89c89e4b5afa2df2b7123)`);let r=$({ibGib:e}),o=de({ibGib:e,defaultIfNone:"incomingAddr"}),a,n={[ut]:[r],[Mt]:[o]};if(!e.gib)throw new Error("(UNEXPECTED) targetIbGib.gib falsy? (E: 28eaa8a799021dadd87b043711aee826)");let s=e.data?.isTjp?e.gib:Q({ibGibAddr:r}).tjpGib??e.gib;if(s===D)throw new Error("cannot create metastone for primitive ibgib (E: 2887e8ef83381a0698256b7bc7531826)");let i=new Date,c=ie(i),l=i.getMilliseconds();e.data?gt({ibGib:e})?a={targetData:{n:-1,tjpGib:s},timestamp:c,timestampMs:l}:(a={targetData:{n:e.data.n??-1,tjpGib:s,timestamp:e.data.timestamp??Pr},timestamp:c,timestampMs:l},e.data?.isTjp&&(a.targetData.isTjp=!0)):a={targetData:{n:-1,tjpGib:s},timestamp:c,timestampMs:l};let d=dn({data:a}),f=await Mr({parentPrimitiveIb:tt,ib:d,data:a,rel8ns:n});return le&&(console.log(`${t} metaStoneIbGib... (I: 2b16197478488b329246d22d2dc41423)`),console.dir(f)),f}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{le&&console.log(`${t} complete.`)}}b(kr,"newUpMetaStone");var jt="witness",sf="witness_arg",cf="witness_result",lf="context";var w=!1;async function q({addr:e,addrs:t,isDna:r,space:o,force:a}){let n=`[${q.name}]`;try{if(w&&console.log(`${n} starting...`),!o)throw new Error("space required. (E: 4d188d6c863246f28aa575753a052304)");if(!e&&(t??[]).length===0)throw new Error("addr or addrs required. (E: 1a0b92564ba942f1ba91a089ac1a2125)");e&&(t?.length??0)>0&&(console.warn(`${n} both addr and addrs provided, but supposed to be used one or the other. (W: 87226c2ac50e4ea28211334a7b58782f)`),t.includes(e)||t.push(e)),t=(t??[]).length>0?t:[e];let s=await o.argy({ibMetadata:Le({space:o}),argData:{cmd:"get",ibGibAddrs:t,isDna:r}}),i=await o.witness(s);return i?.data?.success?(w&&console.log(`${n} got.`),{success:!0,ibGibs:i.ibGibs,rawResultIbGib:i}):(w&&console.log(`${n} didn't get.`),{success:!1,errorMsg:i.data?.errors?.join("|")||`${n} something went wrong. addrs: ${t.join(`
|
|
2
|
+
`)} (E: b9e9d5ce0cde4122bfb74f7688db85e0)`,rawResultIbGib:i})}catch(s){return console.error(`${n} ${s.message}`),{errorMsg:s.message}}}b(q,"getFromSpace");async function Fr({ibGib:e,ibGibs:t,isDna:r,force:o,space:a}){let n=`[${Fr.name}]`;try{if(!e&&(t??[]).length===0)throw new Error("ibGib or ibGibs required. (E: e59c4de3695f4dd28c8fe82dbb9c4e90)");if(!a)throw new Error("space required. (E: dd0b7189c67c43c586b905a8ed6f51c9)");e&&(t??[]).length>0&&(console.warn(`${n} Both ibGib and ibGibs is assigned, whereas this is intended to be exclusive one or the other. (W: 4c797835b620445f88e4cba6b5aa3460)`),t.some(c=>c.gib===e.gib)||(t=t.concat([e]))),t=t??[e],w&&console.log(`${n} ibGibs.length: ${t.length}`);let s=await a.argy({ibMetadata:Le({space:a}),argData:{cmd:"put",force:o,isDna:r,ibGibAddrs:t.map(c=>$({ibGib:c}))},ibGibs:t.concat()}),i=await a.witness(s);if(i.data?.success)return(i.data.warnings??[]).length>0&&i.data.warnings.forEach(c=>console.warn(`${n} ${c}`)),{success:!0};{let c=i?.data?.errors?.length>0?`Error(s) putting in local space:
|
|
3
|
+
${i.data.errors.join(`
|
|
4
|
+
`)}`:"(UNEXPECTED) unknown error putting ibGibs (E: 3d7426d4527243b79c5e55eb25f3fa73)";throw new Error(c)}}catch(s){return console.error(`${n} ${s.message}`),{errorMsg:s.message}}}b(Fr,"putInSpace");async function Hr({addr:e,isDna:t,space:r}){let o=`[${Hr.name}]`;try{if(!r)throw new Error("space required. (E: 40ab3b51e91c4b5eb4f215baeefbcef0)");if(!r.data)throw new Error("space.data required. (E: 0d02c8e85ee143b8bd6a1a1db0d9af1b)");o=`${o}[${r.data.name||"noname?"}][${r.data.uuid||"nouuid?"}]`;let a=await r.argy({ibMetadata:Le({space:r}),argData:{cmd:"delete",ibGibAddrs:[e],isDna:t}}),n=await r.witness(a);if(n.data?.success)return{success:!0};{n.data?.warnings?.length>0&&console.warn(`${o} warnings with delete (${e}): ${n.data.warnings.join("|")}`),n.data?.addrs?.length>0&&console.warn(`${o} partial addrs deleted: ${n.data.addrs.join("|")}`);let s=n.data?.errors?.join("|")||`${o} something went wrong (E: e397fd09b4a746a3ba3305d6ea0893cb)`;return s.includes("File does not exist")&&w&&console.log(`${o} tried to delete file that does not exist. (I: cb5d1348ccbc58bf0bfc95f3006f1e22)`),{errorMsg:s}}}catch(a){return console.error(`${o} ${a.message}`),{errorMsg:a.message}}}b(Hr,"deleteFromSpace");async function V({resTransform:e,space:t,force:r}){let o=`[${V.name}]`;try{if(w&&console.log(`${o} starting... (I: dc6835614ff1a1b82b179225023ae823)`),!t)throw new Error("space required. (E: cf94f1d74f1c4561bb88025a2095965b)");let{newIbGib:a,intermediateIbGibs:n,dnas:s}=e,i=[a,...n||[]],c=await t.argy({ibMetadata:Le({space:t}),argData:{cmd:"put",force:r,ibGibAddrs:i.map(d=>$({ibGib:d}))},ibGibs:i.concat()}),l=await t.witness(c);if(l.data?.success)l.data.warnings?.length>0&&l.data.warnings.forEach(d=>console.warn(`${o} ${d}`));else{let d=l?.data?.errors?.length>0?l.data.errors.join(`
|
|
5
|
+
`):"unknown error putting ibGibs";throw new Error(d)}if(s?.length??!1){let d=await t.argy({ibMetadata:Le({space:t}),argData:{cmd:"put",isDna:!0,force:r,ibGibAddrs:s.map(p=>$({ibGib:p}))},ibGibs:s.concat()}),f=await t.witness(d);if(f.data?.success)f.data.warnings?.length>0&&f.data.warnings.forEach(p=>console.warn(`${o} ${p}`));else{let p=f?.data?.errors?.length>0?f.data.errors.join(`
|
|
6
|
+
`):"unknown error putting dna ibGibs";throw new Error(p)}}}catch(a){throw console.error(`${o} ${a.message}`),a}finally{w&&console.log(`${o} complete. (I: dc6835614ff1a1b82b179225023ae823)`)}}b(V,"persistTransformResult");async function ts({type:e,rel8nName:t,space:r}){let o=`[${ts.name}]`;try{if(!r)throw new Error("space required. (E: f73868a952ac4181a4f90ee6d86cacf3)");let a=await Ht({type:e,space:r});if(!a)throw new Error(`couldn't get special (${e}) (E: a65bef190416479697605be486846731)`);let n=a.rel8ns?a.rel8ns[t]||[]:[],s=[];for(let i=0;i<n.length;i++){let c=n[i],l=await q({addr:c,space:r});if(l.success&&l.ibGibs?.length===1)s.push(l.ibGibs[0]);else throw new Error(`couldn't get addr: ${c} (E: 76ef256ee80149ab860c5786484b0e89)`)}return s}catch(a){throw console.error(`${o} ${a.message}`),a}}b(ts,"getSpecialRel8dIbGibs");async function Ht({type:e,initialize:t,space:r,zeroSpace:o,fnUpdateBootstrap:a,fnBroadcast:n,fnGetInitializing:s,fnSetInitializing:i,dontWarnIfNotExist:c}){let l=`[${Ht.name}]`;try{if(!r)throw new Error("space required. (E: d454b31d58764a9bb9c4e47fb5ef38b5)");let d=K({type:e}),f=await qt({key:d,space:r,dontWarn:c||!!t});if(!f){if(t&&(!s||!i))throw new Error("if initialize, you must provide fnGetInitializeLock & fnSetInitializeLock. (E: 8eb322625d0c4538be089800882487de)");if(t&&!s()){i(!0);try{if(!o)throw new Error("zeroSpace required when 'initialize' truthy (E: 8582c92c637f90c9b2dbe0ec8355b523)");f=await un({type:e,space:r,zeroSpace:o,fnBroadcast:n,fnUpdateBootstrap:a})??void 0}catch(E){console.error(`${l} error initializing: ${E.message}`)}finally{i(!1)}}if(!f){if(s&&s())return console.warn(`${l} couldn't get addr, but we're still initializing...`),null;throw new Error("Special address not in config and couldn't initialize it either. (E: d8ebdc9eaaa640b99cd206f132962c93)")}}w&&console.log(`${l} getting addr: ${f}`);let p=await q({addr:f,space:r});if(p.success||(p=await q({addr:f,space:r}),p.success&&(console.warn(`${l} special ibgib was not stored in meta folder...putting in meta folder now for the future (W: e6f5571fd98c449bb2809359be5057cc)`),(await Fr({ibGib:p.ibGibs[0],space:r})).success||console.warn(`${l} (UNEXPECTED) tried to put special in meta but success was false? (W: b934b53571c24057af172c790e6a7240)`))),!p.success)throw new Error(p.errorMsg);if(p.ibGibs?.length!==1)throw new Error("no ibGib in result (E: 3a42abdddc3648e292d63dc45c560064)");let u=p.ibGibs[0],h=await qe({ibGibs:[u],space:r});if(h?.data?.success&&h.data.addrs?.length===1){let E=$({ibGib:u}),g=h.data.addrs[0];g!==E&&console.warn(`${l} latest addr is not the one associated with the local space.
|
|
7
|
+
specialAddr: ${E}
|
|
8
|
+
latestAddr: ${g} (W: 141b69dc3c414efc9645bb76fcf12df9)`)}return u}catch(d){let f=`${l} ${d.message}`;return f.includes("d8ebdc9eaaa640b99cd206f132962c93")&&c||console.error(f),null}}b(Ht,"getSpecialIbGib");async function qt({key:e,space:t,dontWarn:r}){let o=`[${qt.name}](${e})`;try{if(w&&console.log(`${o} getting... (I: 43e7bfc2515d45e5af8767b9a85b248e)`),!t)throw new Error("space required. (E: 4f135d4276e64054ba21aeb9c304ecec)");if(!t.rel8ns){(w||!r)&&console.warn(`${o} space.rel8ns falsy. (W: 7c642259fbf547dbaa1b2fdf0115f6ef)`);return}if(!t.rel8ns[e]){(w||!r)&&console.warn(`${o} space.rel8ns[${e}] falsy. (W: 3c1c49b9987b45cc96dd78b808f98e91)`);return}if(t.rel8ns[e].length===1)return w&&console.log(`${o} got (I: f13e71b693d5404c9535bda8ff0cc6a9)`),t.rel8ns[e][0];if(t.rel8ns[e].length>1)return(w||!r)&&console.warn(`${o} more than one config addr with ${e} rel8n. (W: 102f63eb74904bcfaac2eaf778043205)`),t.rel8ns[e][0];w&&console.log(`${o} didn't find (I: 1163e6ac60194d25b3f24881650edfad)`);return}catch(a){console.error(`${o} ${a.message}`);return}}b(qt,"getConfigAddr");async function z({key:e,addr:t,space:r,zeroSpace:o,fnUpdateBootstrap:a}){let n=`[${z.name}]`;try{if(!r)throw new Error("space required. (E: c28b663c991d44419aef1026cc689636)");if(!o)throw new Error("zeroSpace required. (E: d3707ae5265d464891ad216f64be6184)");let s={[e]:[t]},i=await Ae({src:r.toIbGibDto(),dna:!1,linkedRel8ns:["past","ancestor",e],rel8nsToAddByAddr:s,nCounter:!0});if(!i.newIbGib)throw new Error("create new space failed.");await V({resTransform:i,space:o}),await V({resTransform:i,space:r});let c=i.newIbGib;return await r.loadIbGibDto(c),a?await a(c):console.warn(`${n} fnUpdateBootstrap is falsy. (W: 9fb874de2b19454dac18645e61ac463f)`),c}catch(s){throw console.error(`${n} ${s.message}`),s}}b(z,"setConfigAddr");async function bn({space:e}){let t=`[${bn.name}]`;try{if(!e)throw new Error("space required. (E: f0d546101fba4c169256158114ab3c56)");let r=await Ht({type:"roots",space:e});if(!r)throw new Error("Roots not initialized. (E: 89b1ba12ed12416aac41cef9fdaf1fc2)");if(!r.rel8ns)throw new Error("Roots not initialized properly. No rel8ns. (E: 8513a07cf530484db9521a2a3a27b7f6)");if(!r.rel8ns.current)throw new Error("Roots not initialized properly. No current root. (E: 459c3a007a30486d96fb8d83f696e239)");if(r.rel8ns.current.length===0)throw new Error("Invalid Roots: empty current root rel8n. (E: bede5864090440bca01ea7ab7fd107d6)");if(r.rel8ns.current.length>1)throw new Error("Invalid Roots: multiple current roots selected. (E: 97561acbf63a48ecaa037697bd26555a)");let o=r.rel8ns.current[0],a=await q({addr:o,space:e});if(a.ibGibs?.length===1)return a.ibGibs[0];throw new Error(`could not get current root. addr: ${o}`)}catch(r){console.error(`${t} ${r.message}`);return}}b(bn,"getCurrentRoot");async function qr({root:e,space:t,zeroSpace:r,fnUpdateBootstrap:o,fnBroadcast:a}){let n=`[${qr.name}]`;try{if(w&&console.log(`${n} starting... (I: 7f16e845a80fe95d28923e4170f0c825)`),!e)throw new Error("root required.");if(!t)throw new Error("space required. (E: 186af2731c5342a78b063a0a4346f3db)");let s=$({ibGib:e}),i=await Ht({type:"roots",space:t});if(!i)throw new Error("Roots not initialized. (E: a8232b9afac89d0d189534480b7a9825)");let l=await Ae({src:i,dna:!1,linkedRel8ns:["past","ancestor","current"],rel8nsToAddByAddr:{current:[s]},nCounter:!0});await V({resTransform:l,space:t});let d=K({type:"roots"}),f=l.newIbGib,p=$({ibGib:f});await z({key:d,addr:p,space:t,zeroSpace:r,fnUpdateBootstrap:o}),await we({ibGib:f,space:t,fnBroadcast:a})}catch(s){throw console.error(`${n} ${s.message}`),s}finally{w&&console.log(`${n} complete. (I: 7f16e845a80fe95d28923e4170f0c825)`)}}b(qr,"setCurrentRoot");async function pn({ibGib:e,linked:t,rel8nName:r,space:o,fnBroadcast:a,zeroSpace:n,fnUpdateBootstrap:s}){let i=`[${pn.name}]`;try{if(!o)throw new Error("space required. (E: f2758eab3bb844d2b749515672d9e392)");if(!e)throw new Error("ibGib required (E: f1bfd67754a7271553f4af544d30bc22)");let c=await bn({space:o});if(!c)throw new Error("currentRoot undefined (E: 5c2d84dafc664808866008f6eb535750");let l=de({ibGib:e,defaultIfNone:"incomingAddr"}),d=$({ibGib:e});if(r&&l&&c.rel8ns&&c.rel8ns[r]&&c.rel8ns[r].includes(l))return;r=r||wr;let f=await Ae({src:c,dna:!1,linkedRel8ns:t?["past","ancestor",r]:["past","ancestor"],rel8nsToAddByAddr:{[r]:[d]},nCounter:!0});await V({resTransform:f,space:o});let p=f.newIbGib,u=$({ibGib:p});w&&console.log(`${i} updating _currentRoot root. newRootAddr: ${u}`),await we({ibGib:p,space:o,fnBroadcast:a}),await qr({root:p,space:o,zeroSpace:n,fnUpdateBootstrap:s,fnBroadcast:a})}catch(c){console.error(`${i} ${c.message}`);return}}b(pn,"rel8ToCurrentRoot");async function jr({targetIbGib:e,space:t}){let r=`[${jr.name}]`;try{w&&console.log(`${r} starting... (I: 291638372117dbc983b4b7cbd8f52123)`);let o=await kr({targetIbGib:e}),a=await Fr({ibGib:o,space:t});if(!a.success)throw new Error(`error putting metaStone in space. error: ${a.errorMsg??"[unknown error (E: 45f700f4f1ff463ca8f5353c8e796ac7)]"} (E: 4c25379e66365055e3e423561a7d6123)`)}catch(o){throw console.error(`${r} ${m(o)}`),o}finally{w&&console.log(`${r} complete.`)}}b(jr,"createAndSaveNewMetaStone");async function we({ibGib:e,space:t,fnBroadcast:r}){let o=`[${we.name}]`,a=w;try{let n=$({ibGib:e});if(o=`${o}[${n}]`,!t)throw new Error("space required. (E: ea0c03256f8a4062b460aa4de11f1e3e)");if(w&&console.log(`${o} starting...`),!Q({ibGibAddr:n}).tjpGib&&!e.data?.isTjp){w&&console.log(`${o} incoming ibGib has no timeline, so no broadcast. still going to create a metastone for it and return early. (I: 649752e3b1be0e0ceb078e0ec2a84f23)`),await jr({targetIbGib:e,space:t});return}let i=de({ibGib:e,defaultIfNone:"undefined"});if(!i){let h=e.data?.isTjp?e:await Br({ibGib:e,space:t});h||(console.warn(`${o} tjp not found for ${n}? Should at least just be the ibGib's address itself. (W: d9b570e5bf6d4312bc7d9249ed3bbaad)`),h=e),i=$({ibGib:h})}if(!i)throw new Error("(UNEXPECTED) tjpAddr falsy? should be guaranteed at this point. (E: 39aafb70bc3c6d70b6d2cf8882311223)");let c=b(async()=>{w&&console.log(`${o} adding/replacing latest. tjp: ${i} (I: 7f848da003a2436089fd6f044d96bb42)`),await jr({targetIbGib:e,space:t}),r&&(w&&console.log(`${o} fnBroadcast is true...(I: 0e3b561fb5474a0598b5c6d698df5e1f)`),setTimeout(()=>{w&&console.log(`${o} broadcasting... (I: 61785937be0346f0959d476d7267ab24)`),r({ib:"IbGibTimelineUpdateInfo",tjpAddr:i,latestAddr:n,latestIbGib:e})}))},"replaceLatest");if(e.data?.isTjp){w&&console.log(`${o} ibGib.data?.isTjp true. replacingLatest and returning early. (I: 02c626e006668291550e278b461bcb23)`),await c();return}w&&console.log(`${o} ibGib.data?.isTjp is falsy. (I: 84940e3a9eff869c9474b7b92b864b23)`);let l=await qe({ibGibs:[e],space:t});if(!l.data)throw new Error("(UNEXPECTED) resLatest.data falsy? (E: af3d3914d96adcc5525e4db83cc5d223)");let{success:d,latestAddrsMap:f}=l.data;if(!d){let{errors:h}=l.data;throw h??=["[unknown error (E: 344857f1853641aa842cea3931f90428)]"],new Error(`resLatest.success falsy. errors: ${F(h)}. addr: ${n} (E: b66721da6e1ef9ac4f4089e86c059323)`)}if(!f)throw new Error("(UNEXPECTED) latestAddrsMap falsy but success truthy? (E: c34caff7a256503575ff3ff491dec823)");let p=Object.keys(f);if(p.length!==1)throw new Error("(UNEXPECTED) latestAddrsMap size isn't 1? (E: e11ffc2c18d473745b5bbfc3fe5e3a23)");if(p[0]!==n)throw new Error(`(UNEXPECTED) latestAddrsMap has 1 key (correct) but the key isn't the incoming ibGibAddr? (incorrect). incoming ibGibAddr: ${n}. key found: ${p[0]} (E: 82d79a95d2d7de90eae9db571a360f23)`);w&&(console.log(`${o} valid latestAddrsMap. console.dir(latestAddrsMap)... (I: e24de41622cabbef375172c3017cfd23)`),console.dir(f));let u=f[n];if(u)if(u===n){w&&console.log(`${o} no other found. possible idempotent replacement. addr: ${n} (I: 7f5bd5d3391be95919240f0e97976e22)`),await c();return}else{w&&console.log(`${o} different addr found. incoming ibgib addr is newer. existingLatestAddr: ${u}. incoming addr: ${n} (I: 6cadf13f82aabeb71d76babf1813e623)`);let h=await q({addr:u,space:t});if(!h.success||h.ibGibs?.length!==1){console.error(`Didn't find existing latest ibGib (${u}). I haven't implemented more robust multi-node/distributed strategies for this scenario yet. so we are going ahead with setting the incoming ibgib as the latest in the timeline. (E: 10f6cca6e5ef45bfacbfe48f652e2102)`),await c();return}let E=h.ibGibs[0];if(typeof e.data?.n=="number"&&e.data.n>=0){w&&console.log(`found ibGib.data.n (version counter), using this to determine latest ibGib: ${e.data.n}`);let I=e.data.n;if(typeof E.data?.n=="number"&&E.data.n>=0){let A=E.data.n;if(I>A)w&&console.log(`${o} is newer (I: 040d05ac2032f08c7fd0c4d8b2887323)`),await c();else{w&&console.log("is not newer, so we don't need to do anything else. (I: 14c25dc3314748dc909d61b77eb64354)"),console.warn(`${o} incoming ibGib (${n}) is NOT NEWER than existing latest (${u}). multiple branches for the same timeline? ignoring incoming ibGibAddr. n_ibGib: ${I}. n_existingLatest: ${A}. space.ib: ${t.ib} (W: 057baadca494473dabb26fb4fb879774)`);return}}else E.data?.isTjp&&e.data.n===0?await c():(console.warn(`${o} (UNEXPECTED) only existingLatestIbGib (isTjp: ${E.data?.isTjp}) has a data.n counter? ibGib.data.n: ${e.data.n}. usually this only happens when existing latest is a tjp and the new ibGib we are registering is n === 0. This is falsy in this instance though. We will go ahead and replace the latest with the new one, but this is an anomalous state. (W: 73d08aea17ad4e1481a5f97e2556a878)`),console.log(`${o} console.dir(existingLatestIbGib)... (I: 9ef7962d9cc74f1eb0409e5caf98e915)`),console.dir(E),console.log(`${o} console.dir(ibGib)... (I: 9ef7962d9cc74f1eb0409e5caf98e915)`),console.dir(e),await c())}else if(w&&console.log(`${o} no nCounter found. Trying brute force method.`),await Sn({ibGib:e,ibGibAddr:n,existingLatest:E,existingLatestAddr:u,tjpAddr:i,space:t})===n)await c();else return}else if(u===null){w&&console.log(`${o} no existing tjp mapping so incoming ibgib is considered new to this space. ibGib addr: ${n} (I: 4f2bbc32b31e4fa982d95b3a785db82f)`),await c();return}else throw new Error("(UNEXPECTED) latestAddr is falsy but not null? the getLatestAddrs impl in the space should be guaranteed to provide either the incoming ibgib addr, the latest addr (if exists), or null if not found. (E: 3159dd531c0bc0efc1ece116adf28923)")}catch(n){throw console.error(`${o} ${n.message}`),n}finally{w&&console.log(`${o} complete.`),w=a}}b(we,"registerNewIbGib");async function et({type:e,rel8nName:t,ibGibsToRel8:r,ibGibsToUnRel8:o,addrsToUnRel8:a,linked:n,severPast:s,deletePreviousSpecialIbGib:i,space:c,zeroSpace:l,fnUpdateBootstrap:d,fnBroadcast:f}){let p=`[${et.name}](type:${e},rel8nName:${t})`;try{if(!c)throw new Error("space required. (E: 956192eea28047eba6dad81620bb96fb)");if((r??[]).length===0&&(o??[]).length===0&&(a??[]).length===0)throw new Error("either ibGibsToRel8 or ibGibsToUnRel8 required. (E: 5add49c8e46a54e2c6b057c22646a822)");if((o??[]).length>0&&(a??[]).length>0)throw new Error("can't provide both ibGibsToUnRel8 and addrsToUnRel8. There isn't a technical reason but I'm too tired right now to implement the overhead to enable this atow (05/2025). (E: 31ef66be26349cfe1b1f352389b99425)");let u=r?.map(T=>$({ibGib:T}));a??=o?.map(T=>$({ibGib:T}));let h=K({type:e}),E=await qt({key:h,space:c});if(!E)throw new Error("specialAddr not found (E: 680dfd1caa3e4d7cb0f593b893a10f0d)");let g=await q({addr:E,space:c});if(!g.success)throw new Error("couldn't get special (E: 897f7671d2184515866c5a675d33b3dc)");if(!g.ibGibs)throw new Error("resGetSpecial.ibGibs falsy (E: 2405dd295b2444d88503f7731796a5a0)");if(g.ibGibs.length!==1)throw new Error(`resGetSpecial.ibGibs count is not 1 (${g.ibGibs.length}) (E: b4547789016a4729af30cd972a4ca4ab)`);let I=g.ibGibs[0],_=await Ae({src:I,rel8nsToAddByAddr:u?{[t]:u}:void 0,rel8nsToRemoveByAddr:a?{[t]:a}:void 0,dna:!1,linkedRel8ns:n?[C.past,t]:[C.past],nCounter:!0}),A=_.newIbGib;if(s){if(_.intermediateIbGibs)throw new Error("new special creates intermediate ibgibs. so severing past is harder. (E: b580c0c56253494192e9c62212ee187d)");A.rel8ns.past=[],A.gib=await M({ibGib:A})}await V({resTransform:_,space:c});let y=$({ibGib:A}),G=de({ibGib:A});return await z({key:h,addr:y,space:c,zeroSpace:l,fnUpdateBootstrap:d}),i&&await Hr({addr:E,space:c}),await we({ibGib:A,fnBroadcast:f,space:c}),y}catch(u){throw console.error(`${p} ${u.message}`),u}}b(et,"rel8ToSpecialIbGib");async function Br({ibGib:e,naive:t=!0,space:r}){let o=`[${Br.name}]`;try{if(!r)throw new Error("space required. (E: 941f973d50e84415b58724af173f52c2)");if(!e)throw new Error("ibGib required.");let a=$({ibGib:e}),{gib:n}=N({ibGibAddr:a});if(n===D||await Vr({ibGib:e,naive:t}))return e;if(!e.rel8ns){w&&console.log(`${o} ibgib not tjp in data, and rel8ns is falsy. so tjp is undefined (I: acdadb76a7568807db7a68f6f866de22)`);return}if(e.rel8ns.tjp&&e.rel8ns.tjp.length>0){let f=e.rel8ns.tjp[0],p=await q({addr:f,space:r});if(p.success&&p.ibGibs?.length===1)return p.ibGibs[0];{let u=p.errorMsg??"[unspecified error in get result]";throw new Error(`ibGib references tjp but could not retrieve from space. res error: ${u} (E: 94f0340706ad48c794c6a62c1b235a22)`)}}let i=e.rel8ns.past||[];if(i.length===0){console.warn(`${o} past.length === 0, so there is no tjp.`),w&&console.log(`${o} ibgib is not tjp in data, not in tjp rel8n, and past is empty. so tjp is undefined (I: bf06f664917dcf4492fb9c4c106a6222)`);return}let c=i[i.length-1],l=await q({addr:c,space:r});if(!l.success||l.ibGibs?.length!==1)throw new Error(`get past failed. addr: ${c}`);let d=l.ibGibs[0];return await Br({ibGib:d,naive:t,space:r})}catch(a){throw console.error(`${o} ${a.message}`),a}}b(Br,"getTjpIbGib");async function un({type:e,space:t,zeroSpace:r,fnUpdateBootstrap:o,fnBroadcast:a}){let n=`[${un.name}]`;try{if(!t)throw new Error("space falsy and localUserSpace not initialized. (E: 66e7d3ff098248f0a5ddda51853c92e6)");switch(e){case"roots":return En({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});case"tags":return hn({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});case"secrets":return wn({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});case"encryptions":return $n({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});case"outerspaces":return yn({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});case"autosyncs":return In({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});case"robbots":return _n({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});case"apps":return An({space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});default:return Tn({type:e,space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o})}}catch(s){throw console.error(`${n} ${s.message}`),s}}b(un,"createSpecial");async function $e({type:e,skipRel8ToRoot:t,space:r,zeroSpace:o,fnUpdateBootstrap:a,fnBroadcast:n}){let s=`[${$e.name}][${e||"falsy type?"}]`;try{w&&console.log(`${s} starting...`);let i=Xr({type:e}),c=j.primitive({ib:i}),l=await St({src:c,destIb:i,linkedRel8ns:[C.past,C.ancestor],tjp:{uuid:!0,timestamp:!0},dna:!0,nCounter:!0});return await V({resTransform:l,space:r}),e!=="roots"&&e!=="latest"&&!t&&await pn({ibGib:l.newIbGib,linked:!0,space:r,zeroSpace:o,fnBroadcast:n,fnUpdateBootstrap:a}),w&&console.log(`${s} complete.`),l.newIbGib}catch(i){throw console.error(`${s} ${i.message}`),i}}b($e,"createSpecialIbGib");async function hn({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${hn.name}]`;try{if(!e)throw new Error("space required. (E: 9c05b9bd355943a39ca47afef67a50eb)");let n=K({type:"tags"}),s=await $e({type:"tags",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r}),i=$({ibGib:s});await z({key:n,addr:i,space:e,zeroSpace:t,fnUpdateBootstrap:r});let c=[{text:"home",icon:"home-outline"},{text:"favorite",icon:"heart-outline"}];for(let l of c)i=(await gn({...l,space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r})).newTagsAddr,await z({key:n,addr:i,space:e,zeroSpace:t,fnUpdateBootstrap:r});return i}catch(n){return console.error(`${a} ${n.message}`),null}}b(hn,"createSpecial_Tags");async function gn({text:e,icon:t,description:r,space:o,zeroSpace:a,fnUpdateBootstrap:n,fnBroadcast:s}){let i=`[${gn.name}]`;try{if(w&&console.log(`${i} starting...`),!o)throw new Error("space required. (E: 5def0b1afab74b0c9286e3ac5060cb8f)");if(!e)throw new Error(`${i} text required`);t=t||ko,r=r||Mo;let c=Ke(e),l=j.primitive({ib:"tag"}),d=await j.firstGen({parentIbGib:l,ib:c,data:{text:e,icon:t,description:r},tjp:{uuid:!0,timestamp:!0},dna:!0,nCounter:!0}),f=d.newIbGib;await V({resTransform:d,space:o}),await we({ibGib:f,space:o,fnBroadcast:s});let p=await rs({tagIbGib:f,space:o,zeroSpace:a,fnUpdateBootstrap:n,fnBroadcast:s});return{newTagIbGib:f,newTagsAddr:p}}catch(c){throw console.error(`${i} ${c.message}`),c}finally{w&&console.log(`${i} complete.`)}}b(gn,"createTagIbGibAndSundry");async function En({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${En.name}]`;try{if(!e)throw new Error("space required. (E: d12a8ea31163429fb6e53ff8e7579c57)");let n=K({type:"roots"}),s=await $e({type:"roots",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r}),i=$({ibGib:s});await z({key:n,addr:i,space:e,zeroSpace:t,fnUpdateBootstrap:r});let l=["A","B","C","D","E","F","G"].map(f=>({text:`${f}root`,icon:$r,description:yr})),d;for(let f=0;f<l.length;f++){let p=l[f],u=await mn({...p,space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o});if(d||(d=u.newRootIbGib),!u.newRootIbGib)throw new Error("(UNEXPECTED) resCreate.newRootIbGib falsy? (E: c9fb2c94a9c1d762c1699b41a4d5ad23)");i=u.newRootsAddr,await z({key:n,addr:i,space:e,zeroSpace:t,fnUpdateBootstrap:r})}if(!d)throw new Error("(UNEXPECTED) firstRoot still falsy? (E: b2e2c926d242966e7ed7159e4b129e23)");if(await qr({root:d,space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}),i=await qt({key:n,space:e}),!i)throw new Error("(UNEXPECTED) no roots address in config? (E: 76345340699a4738a195e48803ef0d31)");return i}catch(n){return console.error(`${a} ${n.message}`),null}}b(En,"createSpecial_Roots");async function mn({text:e,icon:t,description:r,space:o,zeroSpace:a,fnUpdateBootstrap:n,fnBroadcast:s}){let i=`[${mn.name}]`;try{if(!o)throw new Error("space required. (E: cfa876e5c8c64a53a463ca7a645571c8)");e=e||Uo,t=t||$r,r=r||yr;let c=Wr(e),l=j.primitive({ib:"root"}),d=await j.firstGen({parentIbGib:l,ib:c,data:{text:e,icon:t,description:r},linkedRel8ns:[C.past,C.ancestor],tjp:{uuid:!0,timestamp:!0},dna:!0,nCounter:!0}),{newIbGib:f}=d;await V({resTransform:d,space:o});let p=await et({type:"roots",rel8nName:mr,ibGibsToRel8:[f],space:o,zeroSpace:a,fnUpdateBootstrap:n,fnBroadcast:s});return{newRootIbGib:f,newRootsAddr:p}}catch(c){throw console.error(`${i} ${c.message}`),c}}b(mn,"createRootIbGib");async function wn({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${wn.name}]`;try{if(!e)throw new Error("space required. (E: 340960cd5ad24addb300b23d9722e30a)");let n,s=K({type:"secrets"}),i=await $e({type:"secrets",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r});return n=$({ibGib:i}),await z({key:s,addr:n,space:e,zeroSpace:t,fnUpdateBootstrap:r}),n}catch(n){return console.error(`${a} ${n.message}`),null}}b(wn,"createSpecial_Secrets");async function $n({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${$n.name}]`;try{if(!e)throw new Error("space required. (E: 5084e698b6924e7090697ca50075ca59)");let n,s=K({type:"encryptions"}),i=await $e({type:"encryptions",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r});return n=$({ibGib:i}),await z({key:s,addr:n,space:e,zeroSpace:t,fnUpdateBootstrap:r}),n}catch(n){return console.error(`${a} ${n.message}`),null}}b($n,"createSpecial_Encryptions");async function yn({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${yn.name}]`;try{if(!e)throw new Error("space required. (E: 99dd9e92535c470482eb9f6625a33831)");let n,s=K({type:"outerspaces"}),i=await $e({type:"outerspaces",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r});return n=$({ibGib:i}),await z({key:s,addr:n,space:e,zeroSpace:t,fnUpdateBootstrap:r}),n}catch(n){return console.error(`${a} ${n.message}`),null}}b(yn,"createSpecial_OuterSpaces");async function In({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${In.name}]`;try{if(!e)throw new Error("space required. (E: f01cf6a4a460486796e16d505d629522)");let n,s=K({type:"autosyncs"}),i=await $e({type:"autosyncs",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r});return n=$({ibGib:i}),await z({key:s,addr:n,space:e,zeroSpace:t,fnUpdateBootstrap:r}),n}catch(n){return console.error(`${a} ${n.message}`),null}}b(In,"createSpecial_Autosyncs");async function _n({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${_n.name}]`;try{if(!e)throw new Error("space required. (E: f01cf6a4a460486796e16d505d629522)");let n,s=K({type:"robbots"}),i=await $e({type:"robbots",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r});return n=$({ibGib:i}),await z({key:s,addr:n,space:e,zeroSpace:t,fnUpdateBootstrap:r}),n}catch(n){return console.error(`${a} ${n.message}`),null}}b(_n,"createSpecial_Robbots");async function An({space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}){let a=`[${An.name}]`;try{if(!e)throw new Error("space required. (E: f01cf6a4a460486796e16d505d629522)");let n,s=K({type:"apps"}),i=await $e({type:"apps",space:e,zeroSpace:t,fnBroadcast:o,fnUpdateBootstrap:r});return n=$({ibGib:i}),await z({key:s,addr:n,space:e,zeroSpace:t,fnUpdateBootstrap:r}),n=await Bt({defaultAppData:en,defaultAppRel8ns:tn,space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}),n=await Bt({defaultAppData:rn,defaultAppRel8ns:on,space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}),n=await Bt({defaultAppData:nn,defaultAppRel8ns:an,space:e,zeroSpace:t,fnUpdateBootstrap:r,fnBroadcast:o}),n}catch(n){return console.error(`${a} ${n.message}`),null}}b(An,"createSpecial_Apps");async function Bt({defaultAppData:e,defaultAppRel8ns:t,space:r,zeroSpace:o,fnUpdateBootstrap:a,fnBroadcast:n}){let s=`[${Bt.name}]`;try{w&&console.log(`${s} starting... (I: 677f68789abdc7316887e8f38c764e22)`),w&&console.log(`${s} starting...`);let i=L(e),c=t?L(t):void 0;i.uuid=!i.uuid||i.uuid===Rr?await P():i.uuid;let{classname:l}=i,d=vr({appData:i,classname:l}),f=await j.firstGen({ib:d,parentIbGib:j.primitive({ib:`app ${l}`}),data:i,rel8ns:c,dna:!0,linkedRel8ns:[C.ancestor,C.past],nCounter:!0,tjp:{timestamp:!0}});return await V({resTransform:f,space:r}),await we({ibGib:f.newIbGib,fnBroadcast:n,space:r}),await et({type:"apps",rel8nName:Lt,ibGibsToRel8:[f.newIbGib],fnBroadcast:n,fnUpdateBootstrap:a,space:r,zeroSpace:o})}catch(i){throw console.error(`${s} ${i.message}`),i}finally{w&&console.log(`${s} complete.`)}}b(Bt,"createApp");async function Tn({type:e,space:t,zeroSpace:r,fnUpdateBootstrap:o,fnBroadcast:a}){let n=`[${Tn.name}]`;try{if(!t)throw new Error("space required. (E: c7bbafcbe901418db4c6048f17f53091)");w&&console.log(`${n} creating special of type: ${e} (I: 283c8bb30ed6f9698b74b886c6078622)`);let s,i=K({type:e}),c=await $e({type:e,space:t,zeroSpace:r,fnBroadcast:a,fnUpdateBootstrap:o});return s=$({ibGib:c}),await z({key:i,addr:s,space:t,zeroSpace:r,fnUpdateBootstrap:o}),s}catch(s){return console.error(`${n} ${s.message}`),null}}b(Tn,"createSpecial_Default");async function Sn({ibGib:e,ibGibAddr:t,existingLatest:r,existingLatestAddr:o,tjpAddr:a,space:n}){let s=`[${Sn.name}][${t}]`;try{if(w&&console.log(`${s} starting...`),!n)throw new Error("space required. (E: 64eb9a271f5d43deadec30b9638746c8)");let i=e.rel8ns?.past||[],c=r.rel8ns?.past||[];if(i.length===1&&c.length===0)return w&&console.log(`prospective has a past, so it "must" be newer. (won't quote "must" anymore)`),t;if(c.length===1&&i.length===0)return w&&console.log("existing has a past, so it must be newer."),o;if(c.length===0&&i.length===0)return console.warn(`${s} neither existing latest nor prospective new ibGib has a past, so keeping existing.`),o;if(c.includes(t))return w&&console.log("existing by definition is newer"),o;if(i.includes(o))return w&&console.log("ibGib by definition is newer"),t;if(o===t)return w&&console.log("they're the same!"),o;if(o===a&&r.rel8ns?.tjp?.length===1)return w&&console.log("ibGib must be newer because the existingLatestAddr is the tjp, which is by definition first in unique past."),t;if(t===a&&e.rel8ns?.tjp?.length===1)return w&&console.log("existing must be newer because the ibGibAddr is the tjp, which is by definition first in unique past."),o;w&&console.log(`${s} brute forcing through iterating the pasts.`);let l,d=-1,f=b(async(h,E,g)=>{let I=h.rel8ns?.past||[];if(I.includes(g))return l=$({ibGib:h}),-1;if(I.length===0)return E;let _=E+I.length;if(d!==-1&&_>d)return l=$({ibGib:h}),-1;let A=await q({addr:I[0],space:n});if(!A.success||A.ibGibs?.length!==1)throw new Error(`Couldn't load past addr (xPast[0]): ${I[0]}`);return f(A.ibGibs[0],E+I.length,g)},"getPastCount");w&&console.log(`${s} doing ibGibPastCount`);let p=await f(e,0,o);if(l)return l;w&&console.log(`${s} Doing existingPastCount`),d=p;let u=await f(r,0,t);return l||(p>u?(w&&console.log(`${s} ibGibPastCount (${p}) is longer than existingPastCount (${u}), so ibGib is newer.`),l=t):(w&&console.log(`${s} existingPastCount (${u}) is longer than ibGibPastCount (${p}), so ibGib is newer.`),l=o),l)}catch(i){throw console.error(`${s} ${i.message}`),i}finally{w&&console.log(`${s} complete.`)}}b(Sn,"getLatestAddr_Brute");function rs({tagIbGib:e,space:t,zeroSpace:r,fnUpdateBootstrap:o,fnBroadcast:a}){return et({type:"tags",rel8nName:Ir,ibGibsToRel8:[e],space:t,zeroSpace:r,fnUpdateBootstrap:o,fnBroadcast:a})}b(rs,"rel8TagToTagsIbGib");function Kr({space:e,scope:t}){let r=`[${Kr.name}]`;try{if(w&&console.log(`${r} starting...`),!e)throw new Error("space required. (E: 3ba16e6c3e5e47948b0e63448da11752)");if(!e.data?.uuid)throw new Error("invalid space (space.data.uuid falsy) (E: 273262b32f2ef27b2e690bc699f33822)");if(!t)throw new Error("scope required. (E: f47801d6c45e2247b42a53d9b604b522)");for(;t.includes(k);)w&&console.log(`${r} scope contains ibgib delimiter...replacing... (I: 0f456fd7cc6552a799673a0c5b4a7d22)`),t=t.replace(k,"_");let o=e.data.uuid,a=`${Ro} ${o} ${t}`;return $({ib:a,gib:D})}catch(o){throw console.error(`${r} ${o.message}`),o}finally{w&&console.log(`${r} complete.`)}}b(Kr,"getSpaceLockAddr");async function rt({space:e,scope:t,secondsValid:r,maxDelayMs:o,fn:a,callerInstanceId:n,maxLockAttempts:s}){let i=`[${rt.name}]`;try{if(w&&console.log(`${i} starting...`),!e)throw new Error("space required. (E: 66fd8f21a5b2b572d18cdeb9472a7722)");if(!r)throw new Error("secondsValid required. (E: 92c5610e57ceede5ce83cff86d5c2a22)");if(r<0)throw new Error("secondsValid must be positive. (E: 970a7510c517235d7a355a843d18d222)");if(!a)throw new Error("fn required (E: 7022e280252ec2faf756b6db05c56e22)");let c;w&&console.log(`${i} attempting to acquire lock with scope ${t} (I: fed36d42a975b1c52897a4df804ac722)`);let l;o=(o??0)>0?o:Co;let d=0;s=s??!1?s:Po;do{if(l=await Gn({space:e,scope:t,secondsValid:r,instanceId:n}),l?.data?.success)break;let p=Math.ceil(Math.random()*o);await X(p),d++}while(d<s);if(l?.data?.success)w&&console.log(`${i} lock acquired. (I: d847fa953ee131a57e1a89c537342722)`);else throw new Error(`could not acquire lock after ${d} attempts with intermittent delays of ${o} ms (E: 898c559dbd0c9bf20c14cf87a8f1e222)`);let f=`${i}[fn]`;try{w&&console.log(`${f} starting... (I: c2f7bedf95d3f1dd1f76de34a68d3f22)`),c=await a()}catch(p){throw console.error(`${f} ${p.message}`),p}finally{w&&console.log(`${f} unlocking space with scope: ${t} (I: 21034d9c3395499756e9000e40417d22)`),await xn({space:e,scope:t,instanceId:n}),w&&console.log(`${f} complete. (I: 79d8ac03714a4d429c7e6c2ac6e18d22)`)}return c}catch(c){throw console.error(`${i} ${c.message}`),c}finally{w&&console.log(`${i} complete.`)}}b(rt,"execInSpaceWithLocking");async function Ft({zeroSpace:e}){let t=`[${Ft.name}]`;try{if(w&&console.log(`${t} starting...`),!e)throw new Error("zeroSpace required. (E: 66fd8f21a5b2b572d18cdeb9472a7722)");let r=He;w&&console.log(`${t} getting from zeroSpace...`);let o=await e.argy({ibMetadata:Le({space:e}),argData:{cmd:"get",ibGibAddrs:[r]}}),a=await e.witness(o);if(a?.data?.success&&a.ibGibs?.length===1){let n=a.ibGibs[0];return w&&console.log(`${t} bootstrapibGib found: ${F(n)}`),await Cr(n)?n:(w&&console.log(`${t} bootstrapIbGib was invalid. (I: cce66b26805404fc85525d565e1f8b22)`),null)}else return w&&console.log(`${t} bootstrapIbGib NOT found. (I: 421562993bf3464eb507d2967d311e22)`),null}catch(r){throw console.error(`${t} ${r.message}`),r}finally{w&&console.log(`${t} complete.`)}}b(Ft,"getValidatedBootstrapIbGib");async function os({zeroSpace:e,bootstrapIbGib:t,localSpaceId:r,lock:o,callerInstanceId:a,fnDtoToSpace:n,localSpaceCacheSvc:s}){let i=`[${os.name}]`;try{if(!e)throw new Error("zeroSpace required. (E: 0793781a98c456a666cfa9eb960bcd22)");if(!t)if(w&&console.log(`${i} bootstrap falsy, so loading it... (I: f2366e38283495a38b5501297aa34422)`),o){let d=He;w&&console.log(`${i} using locked version of loading bootstrap... (I: 52b9b11999674e586d051c2b23f59b22)`),t=await rt({space:e,scope:d,fn:b(async()=>{let f=await Ft({zeroSpace:e});if(f)return f;throw new Error("(UNEXPECTED) unable to get bootstrap ibgib? (E: c111dc7627acbfb992134ddf4064ea23)")},"fn"),callerInstanceId:a,secondsValid:Er})}else w&&console.log(`${i} lock is false, so just getting the bootstrap ibgib (I: 49d55e5a824510bb3ee0ccd9f5ec3322)`),t=await Ft({zeroSpace:e})??void 0;if(!t)throw new Error("bootstrapIbGib falsy. not initialized? (E: 91f5c82b5e124178d958701ebcb09822)");if(!t.data)throw new Error("(UNEXPECTED) bootstrapIbGib.data required. invalid bootstrap? (E: 568c6b837c1a39f7a25d188a90167423)");r=r??t.data[ge];let c=t.rel8ns[r][0],l=b(async()=>{let d=await e.argy({ibMetadata:Le({space:e}),argData:{cmd:"get",ibGibAddrs:[c]}}),f=await e.witness(d);if(f?.data?.success&&f.ibGibs?.length===1){let p=f.ibGibs[0],u=await n(p);return s&&(u.cacheSvc=s),u}else throw new Error(`Could not get local space addr (${c}) specified in bootstrap space (${$({ibGib:t})}). (E: 6d6b45e7eae4472697ddc971438e4922)`)},"fnGet");return o?(w&&console.log(`${i} getting localSpaceId (${r}) WITH locking (I: c48a0e4ac5971cdbc57273dd35f8a522)`),await rt({space:e,scope:r,fn:b(()=>l(),"fn"),callerInstanceId:a,secondsValid:Er})):(w&&console.log(`${i} getting localSpaceId (${r}) WITHOUT locking (I: 48e504835dee4006839df8820d860b22)`),l())}catch(c){throw console.error(`${i} ${c.message}`),c}}b(os,"getLocalSpace");async function Gn({space:e,scope:t,secondsValid:r,instanceId:o}){let a=`[${Gn.name}]`;try{if(w&&console.log(`${a} starting...`),!e)throw new Error("space required. (E: 5c0a7197a75f483a82d74e5eea60df37)");if(!t)throw new Error("scope required. (E: c7f1dde9570f4df3b450faa2c2f85122)");if(!r)throw new Error("secondsValid required and positive (E: b42b6733638b46c06c9aff59a6c49822)");if(r<0)throw new Error("secondsValid must be positive (E: bbe3b6d567583bfb35a1c0825eb29622)");let n,s=Kr({space:e,scope:t}),i,c=await q({addr:s,space:e,force:!0});if(c.success&&c.ibGibs?.length===1?(i=c.ibGibs[0],i?.data?.expirationUTC?br({expirationTimestampUTC:i.data.expirationUTC})&&(console.warn(`${a} ignoring expired existing lock in space at ${s}. Should be overwritten (W: 7421c5b051724b189f88cecbbd449b22)`),i=void 0):(console.error(`${a} (UNEXPECTED) exisingLock.data.expirationUTC falsy? (E: 218dc0e935534a149d0be153c532cf25)`),i=void 0)):w&&console.log(`${a} existing lock not found for ${s} (I: 191af56ec4e2db3d19084e46bf949222)`),i){if(!i.data)throw new Error("(UNEXPECTED) existingLock.data falsy? (E: 00069b4662e5566d971760d15e293723)");n=L(i),n.data.alreadyLocked=!0,n.data.success=!1}else{let{ib:l,gib:d}=N({ibGibAddr:s});n={ib:l,gib:d,data:{scope:t,secondsValid:r,instanceId:o,expirationUTC:fr({seconds:r})}};let f=await e.argy({ibMetadata:Le({space:e}),argData:{cmd:"put",force:!0,ibGibAddrs:[s]},ibGibs:[n]}),p=await e.witness(f);if(p.data?.success)if((p.data.addrsAlreadyHave??[]).includes(s)){w&&console.log(`${a} racelost! addrsAlreadyHave includes spaceLockAddr (${s}) (I: 2e8a1562947c40698110b64251141753)`);let u=await q({addr:s,space:e,force:!0});if(u.success&&u.ibGibs?.length===1){let h=u.ibGibs[0];n=L(h),n.data.alreadyLocked=!0,n.data.success=!1}else{let h=`${a} (UNEXPECTED) addrsAlreadyHave true, but couldn't get lock? (E: 8374a2b6628b49369363bc5843105763)`;console.error(h),n.data.success=!1,n.data.errorMsg=h}}else n.data.success=!0;else{let u=`${a} there was an error putting the lock in the space: ${p.data?.errors?.join("|")}`;n.data.success=!1,n.data.errorMsg=u,console.error(u)}}return n}catch(n){throw console.error(`${a} ${n.message}`),n}finally{w&&console.log(`${a} complete.`)}}b(Gn,"lockSpace");async function xn({space:e,scope:t,instanceId:r}){let o=`[${xn.name}]`;try{if(w&&console.log(`${o} starting...`),!e)throw new Error("space required. (E: 5c0a7197a75f483a82d74e5eea60df37)");if(!t)throw new Error("scope required. (E: c7f1dde9570f4df3b450faa2c2f85122)");let a=Kr({space:e,scope:t}),n=await Hr({addr:a,space:e,force:!0});if(n.success){let{ib:s,gib:i}=N({ibGibAddr:a});return{ib:s,gib:i,data:{success:!0,instanceId:r,scope:t}}}else{let s=`Delete lock in space failed. delete errorMsg: ${n.errorMsg}`;if(s.includes("not implemented"))throw new Error(s);if(s.toLowerCase().includes("does not exist")||s.toLowerCase().includes("doesn't exist")||s.toLowerCase().includes("not found")){w&&console.log(`${o} ${s} (I: b647916fd0f3e5366e9387131be21c22)`);let{ib:i,gib:c}=N({ibGibAddr:a});return{ib:i,gib:c,data:{action:"unlock",success:!0,instanceId:r,scope:t}}}else console.warn(`${o} ${s} (W: 14c84fcac15944bd9a417099964d5d9d)`)}}catch(a){throw console.error(`${o} ${a.message}`),a}finally{w&&console.log(`${o} complete.`)}}b(xn,"unlockSpace");async function ns({space:e,zeroSpace:t,setSpaceAsDefault:r,createIfNotFound:o}){let a=`[${ns.name}]`;try{if(w&&console.log(`${a} starting...`),!e)throw new Error("space required. (E: 6fc19548fa7d1d5219e19871f280a322)");if(!e.data?.uuid)throw new Error("space.data.uuid required (E: 6483188ca6f2ed2085fd355595f3ab22)");if(!t)throw new Error("zeroSpace required. (E: abbf156e18b1018d96273e22a260f122)");let n=e.data.uuid,s=$({ibGib:e}),i=await Ft({zeroSpace:t});if(i){if(w&&console.log(`${a} updating existing bootstrap (I: 977d4aa7ed47bef73b35743c05ce0722)`),i.data.spaceIds.includes(n)){w&&console.log(`${a} space already rel8d to bootstrap, possibly updating its addr (I: b5e2c515ef732d4bbcf02625a9e7c722)`);let d=i.rel8ns[n][0];d===s?w&&console.log(`${a} bootstrap already rel8d to space (I: c1be027b23e7350c64790a631cae2822)`):(w&&console.log(`${a} updating rel8ns[${n}] with newSpaceAddr (${s}). (Old address: ${d})(I: 297a9b0061fd471b8d28a06e04a6ad22)`),i.rel8ns[n]=[s])}else w&&console.log(`${a} new space being rel8d. adding spaceId to data.spaceIds and amending rel8ns (I: 40903d71719aa1d56e498299f5699a22)`),i.data.spaceIds.push(n),i.rel8ns[n]=[s];r&&(w&&console.log(`${a} setting spaceId (${n}) as default space (I: f85eda6c6ad2b0bec9750ce3c7795b22)`),i.data[ge]=n)}else{if(!o){w&&console.log(`${a} bootstrapIbGib not found but createIfNotFound falsy, so returning early. (I: 5c67d85a8599a5ba4a6780f26a66ea22)`);return}w&&console.log(`${a} creating new bootstrap ibgib for spaceId (${n}) with address of (${s}) (I: 651959c27bf2ebc5be1f7f44e2b9e422)`);let{ib:d,gib:f}=N({ibGibAddr:He});i=j.primitive({ib:d}),i.gib=f,i.data={[ge]:n,[Ho]:[n]},i.rel8ns={[n]:[s]}}if(!i)throw new Error("(UNEXPECTED) bootstrapIbGib still falsy? (E: cf21d7f1756710a66aa0e6a28d762723)");w&&console.log(`${a} saving bootstrapIbGib: ${F(i)} (I: 3cceca0b98dde90e4a58a734be252322)`);let c=await t.argy({ibMetadata:i.ib,argData:{cmd:"put",force:!0,ibGibAddrs:[$({ibGib:i})]},ibGibs:[i]});w&&console.log(`${a} zeroSpace will witness/put... (I: 1be9aca22ffc4951b6690965a7aeae5b)`);let l=await t.witness(c);if(l?.data?.success)w&&console.log(`${a} zero space put complete. (I: ac3056d655e841f1a3c442bcc64942f9)`);else throw new Error(`${l?.data?.errors?.join("|")||"There was a problem with zeroSpace witnessing the bootstrap^gib primitive pointing to the new user space"}`);w&&console.log(`${a} complete.`)}catch(n){throw console.error(`${a} ${n.message}`),n}}b(ns,"updateBootstrapIbGib");function Le({space:e}){return`${e.ib} ${ue()}`}b(Le,"getSpaceArgMetadata");function Pf({space:e}){return`${e.ib} ${ue()}`}b(Pf,"getSpaceResultMetadata");function as({space:e,spaceData:t,classname:r}){let o=`[${as.name}]`;try{if(!e&&!t)throw new Error("either space or spaceData required (E: 4dabec34ee77d67c9cc30ee3c3049622)");if(e&&!e.data)throw new Error("(UNEXPECTED) given space has falsy space.data? (E: 058d298876ebbeada7bbddb9e3da2f23)");if(e&&t){if(e.data.uuid!==t.uuid)throw new Error("(UNEXPECTED) both space and spaceData given, but uuid don't match? (E: efdd4603cba93a17340a76811fe56b24)");if(e.data.n!==t.n)throw new Error("(UNEXPECTED) both space and spaceData given, but n don't match? (E: e51278a707c9bccc57a08a4b86524524)")}if(t??=e.data,!t)throw new Error("(UNEXPECTED) spaceData falsy? (thought this was a compiler problem that this was even possible.) (E: b3c7ffedcae4b1f45b263b3825930b24)");if(r&&t.classname&&r!==t.classname)throw new Error(`both classname arg (${r}) and spaceData.classname (${t.classname}) are different truthy values. (E: f98f012ee876eb8fbe7403f7b53e4624)`);if(r||=t.classname,!r)throw new Error("classname required (E: fa3af4613ad56742dab51d1b0d839322)");if(r.includes(" "))throw new Error(`invalid classname (${r}). cannot contain spaces (E: 243adbf720dcce7904e2665933208b22)`);let a=t?.name||vo;if(a.includes(" "))throw new Error("invalid space name. cannot contain spaces (E: a8450e1651081412c8ac018520182422)");let n=t?.uuid||void 0;if(!n)throw new Error("invalid space, spaceData.uuid falsy (E: 50ae723a9ab24f4fc7132613e65faf23)");if(n.includes(" "))throw new Error("invalid space id. cannot contain spaces (E: 8696830fe7f54bfa85e670a063f3e089)");let s=t.type??void 0,i=t.subtype??void 0;if(s&&!i)throw new Error(`spaceType (${s}) is set but spaceSubtype is falsy. (E: 878ab960d7987ae2331103b4a00d0d24)`);return`${jt} ${Dt} ${r} ${a} ${n} ${s} ${i}`}catch(a){throw console.error(`${o} ${a.message}`),a}}b(as,"getSpaceIb");function ss({ib:e}){let t=`[${ss.name}]`;if(!e){let r=`${t} ib required (E: dd5244f62f964359a86e59bb08ee47e6)`;throw console.error(r),new Error(r)}return e.startsWith(`${jt} ${Dt} `)}b(ss,"isSpaceIb");function is({spaceIb:e}){let t=`[${is.name}]`;try{if(!e)throw new Error("spaceIb required (E: fa5424cfb7e846e2851562f2f417944f)");let[r,o,a,n,s,i,c]=e.split(" ");if(r!==jt)throw new Error(`invalid spaceIb (${e}). witnessAtom !== WITNESS_ATOM (E: 5ae1ca12cf8f30ae341f3e582b025224)`);if(o!==Dt)throw new Error(`invalid spaceIb (${e}). spaceAtom !== SPACE_ATOM (E: 9cc6b6f30e13455eb29748148a94fa0f)`);if(!a)throw new Error(`invalid spaceIb (${e}). spaceClassname falsy (E: 00d3392da007ca8b2840b16b199d9a24)`);if(!n)throw new Error(`invalid spaceIb (${e}). spaceName falsy (E: b957d8e74ef34d889fa64c60c7a5ea0b)`);if(!s)throw new Error(`invalid spaceIb (${e}). spaceId falsy (E: 7a1773722d8e46a0866d683130b65b89)`);let l;if(i&&i!=="undefined")if(Dr.includes(i))l=i;else throw new Error(`invalid spaceIb (${e}). spaceType (${i}) is set but not a valid type. valid types: ${Dr.join(", ")} (E: 838f4638a88cfbf3545a3a3a38b6dd24)`);let d;if(c&&c!=="undefined")if(Nr.includes(c))d=c;else throw new Error(`invalid spaceIb (${e}). spaceSubtype (${c}) is set but not a valid subtype. valid subtypes: ${Nr.join(", ")} (E: 5bdcf23027f94e73860e4340313b04ab)`);return{spaceClassname:a,spaceName:n,spaceId:s,spaceType:l,spaceSubtype:d}}catch(r){throw console.error(`${t} ${r.message}`),r}}b(is,"parseSpaceIb");async function qe({ibGibs:e,addrs:t,tjps:r,tjpAddrs:o,space:a}){let n=`[${qe.name}]`;try{if(w&&console.log(`${n} starting...`),!a)throw new Error("space required. (E: 4d188d6c863246f28aa575753a052304)");if(e=e??[],t=t??[],r=r??[],o=o??[],t.length===0&&e.length===0&&r.length===0&&o.length===0)throw new Error("Either addrs, ibGibs, tjps, or tjpAddrs required. (E: 7c6ebfbab98d4d21a431b144457fd991)");let s=new Set(o.concat(r.map(l=>$({ibGib:l})))),i=Array.from(s).map(l=>N({ibGibAddr:l}).gib);e.map(l=>$({ibGib:l})).concat(t).forEach(l=>{let{gib:d}=N({ibGibAddr:l});i.some(p=>d.includes(p))||s.add(l)}),w&&console.log(`${n}[testing] ${a.data?.name||a.ib} (${a.data?.uuid||"[space.data.uuid falsy]"}) addrsToQuery: ${Array.from(s)} (I: 8a2202912c364238b6d6eb09577bc246)`);let c=await a.argy({ibMetadata:Le({space:a}),argData:{cmd:"get",cmdModifiers:["latest","addrs"],ibGibAddrs:Array.from(s)}});return await a.witness(c)}catch(s){throw console.error(`${n} ${s.message}`),s}}b(qe,"getLatestAddrs");function Yr({ibGib_Context:e}){let t=`[${Yr.name}]`;try{if(w&&console.log(`${t} starting... (I: 5f583fd94d27731a65d514e731b8aa22)`),!Et({ibGib:e}))return;if(["roots","autosyncs"].some(o=>e.ib.includes(o)))throw new Error("cannot perform a modification of this type on this special ibgib (E: b8fb718a7323fc54454464b973412722)")}catch(r){throw console.error(`${t} ${r.message}`),r}finally{w&&console.log(`${t} complete.`)}}b(Yr,"throwIfContextIsSpecial");async function cs({ibGib_Context:e,rel8nName_Context:t,addr:r,space:o,zeroSpace:a,fnUpdateBootstrap:n,fnBroadcast:s}){let i=`[${cs.name}]`;try{if(w&&console.log(`${i} starting... (I: 2dc486bb2d516e4534f437aaf5ec7f22)`),!e)throw new Error("ibGib_Context required (E: 75f7bfa93145d6dffe85d488443ca722)");if(!t)throw new Error("rel8nName_Context required (E: 12aaa43de9e34b68b25dc9a2a68ad6b9)");if(!r)throw new Error("addr required (E: e27df3bdc5a2554697cc9597afc4e422)");if(!o)throw new Error("space required (E: 2e3562486ed2956a770ed9e8d77a3f22)");let c=Et({ibGib:e});c&&Yr({ibGib_Context:e});let l=await Ae({src:e,rel8nsToAddByAddr:{[Bo]:[r]},rel8nsToRemoveByAddr:{[t]:[r]},dna:!0,nCounter:!0});if(await V({resTransform:l,space:o}),c){let d=$({ibGib:l.newIbGib}),f=Kt({ib:e.ib}),p=K({type:f});await z({key:p,addr:d,space:o,zeroSpace:a,fnUpdateBootstrap:n})}await we({ibGib:l.newIbGib,fnBroadcast:s,space:o})}catch(c){throw console.error(`${i} ${c.message}`),c}finally{w&&console.log(`${i} complete.`)}}b(cs,"trash");async function ls({ibGib_Context:e,rel8nName_Context:t,addr:r,space:o,zeroSpace:a,fnUpdateBootstrap:n,fnBroadcast:s}){let i=`[${ls.name}]`;try{if(w&&console.log(`${i} starting... (I: 38098552b830495187299bb24fcddff0)`),!e)throw new Error("ibGib_Context required (E: d819e8c4db5b4c0bb721300ba434cd40)");if(!t)throw new Error("rel8nName_Context required (E: de061adff8c04429a211aa09116a532d)");if(!r)throw new Error("addr required (E: 7059ebb8ef6149ea94e22f961d6b5c81)");if(!o)throw new Error("space required (E: e19566f2d42347798621447edcae312e)");let c=Et({ibGib:e});c&&Yr({ibGib_Context:e});let l=await Ae({src:e,rel8nsToAddByAddr:{[jo]:[r]},rel8nsToRemoveByAddr:{[t]:[r]},dna:!0,nCounter:!0});if(await V({resTransform:l,space:o}),c){let d=$({ibGib:l.newIbGib}),f=Kt({ib:e.ib}),p=K({type:f});await z({key:p,addr:d,space:o,zeroSpace:a,fnUpdateBootstrap:n})}await we({ibGib:l.newIbGib,fnBroadcast:s,space:o})}catch(c){throw console.error(`${i} ${c.message}`),c}finally{w&&console.log(`${i} complete.`)}}b(ls,"archive");function ds(e){let t=`[${ds.name}]`;try{if(!e)return console.error(`${t} name is falsy`),!1;let r=/[\w-]+/,o=e.match(r);if(o?.length!==1||o[0].length!==e.length)return console.error(`${t} name can only contain letters, numbers, underscores, hyphens`),!1;let a=/[a-zA-Z\d]/;return e[0].match(a)?!0:(console.error(`${t} name must start with a letter or number`),!1)}catch(r){return console.error(`${t} ${r.message}`),!1}}b(ds,"spaceNameIsValid");var Y=!1;async function Mr({parentPrimitiveIb:e,ib:t,ibRegExpPattern:r,data:o,rel8ns:a}){let n=`[${Mr.name}]`;try{if(!e)throw new Error("parentPrimitiveIb required. (E: 88ddf188cc5a4340b597abefba1481e2)");if(Qe({ib:e})!==null)throw new Error(`Invalid parentPrimitiveIb: ${e}. (E:5aec0320956d492ebeeaca41eb1fe1c6)`);if(!t)throw new Error("ib required. (E: 7bbc88f4f2e842d6b00126e55b1783e4)");let s=r?new RegExp(r):No;if(!t.match(s))throw new Error(`invalid ib. does not match regexp (${s})`);let i=Object.keys(a??{}),c=[...Be,"tjp"];if(i.some(p=>c.includes(p)))throw new Error(`Invalid rel8ns. forbiddenRel8nNames: ${c}. rel8ns keys: ${Object.keys(a??{})}. (E: 837a993c265c4362b6aa0b1a234ea5f8)`);let f=(await j.firstGen({ib:t,parentIbGib:j.primitive({ib:e}),data:o,rel8ns:a,dna:!1,noTimestamp:!0,nCounter:!1})).newIbGib;return f?.rel8ns?.past&&delete f.rel8ns.past,f?.rel8ns?.tjp&&delete f.rel8ns.tjp,f?.rel8ns?.identity&&delete f.rel8ns.identity,f.gib=await M({ibGib:{ib:f.ib,data:f.data,rel8ns:f.rel8ns},hasTjp:!1}),f}catch(s){throw console.error(`${n} ${s.message}`),s}}b(Mr,"constantIbGib");function Jf({addr:e}){return On({addr:e})}b(Jf,"getBinHashAndExt");function On({addr:e}){let t=`[${On.name}]`;try{if(!gt({addr:e}))throw new Error("not a bin address (E: df0804d129bc4888bd6939cb76c5e0f6)");let{ib:r}=N({ibGibAddr:e}),o=r.split(" ");if(o.length===2)return{binHash:o[1],binExt:""};if(o.length===3)return o[2].startsWith("enc=")?{binHash:o[1],binExt:"",binEncoding:o[2].substring(4)}:{binHash:o[1],binExt:o[2]};if(o.length===4){if(!o[3].startsWith("enc="))throw new Error(`bin ib (${r}) has 4 space-delimited pieces. we expect therefore the form to be bin \${binHash} \${binExt} enc=\${binEncoding}. but ibPieces[3] doesn't start with "enc=". (E: 87196d7cdd7c12d982cc8204a1163524)`);return{binHash:o[1],binExt:o[2],binEncoding:o[3].substring(4)}}else throw new Error('(UNEXPECTED) ibPieces.length not 2, 3, or 4? atow (01/2024) the only components of a bin ib are: atom, binHash, binExt, binEncoding. binExt and binEncoding are optional, with binEncoding being prefixed with "enc=". (E: b05df3c1b3949f76464a83c9fd1c4f24)')}catch(r){throw console.error(`${t} ${r.message}`),r}}b(On,"parseBinIb");function gt({ibGib:e,addr:t}){let r=`[${gt.name}]`;try{if(!e&&!t)throw new Error("either ibGib or addr required. (E: c935b51e773f41a2a547c556e9dc16c6)");if(e&&!e.data)return!1;t=t||$({ibGib:e});let{ib:o,gib:a}=N({ibGibAddr:t});if(!o||!a||!o.startsWith("bin "))return!1;if(a.length!==64)throw new Error('ib starts with "bin " but gib length is not 64, so return false. Two things: 1) bin ibgibs are expected to be stones, i.e., have no temporal junction point and only a single punctiliar hash for the gib. the default hash used atow (01/2024) is sha-256, so the length should be 64. But this may not be true if using another hash algorithm. need to change this function when this becomes the case. (W: 60725d65d13c4b4fbb7b96d7feb19d67)');let n=o.split(" ");if(n.length===2){if(!n[1].match(_e))throw new Error('(UNEXPECTED) ib starts with "bin " but space-delimited !ibPieces[1].match(UUID_REGEXP)? (E: f6baca2ff155f1017b278a5d7597a224)')}else if(n.length===3){if(!n[1].match(_e))throw new Error('(UNEXPECTED) ib starts with "bin " but space-delimited !ibPieces[1].match(UUID_REGEXP)? (E: 8d0443d6cada4b50be79a8390a7a426c)')}else if(n.length===4){if(!n[1].match(_e))throw new Error('(UNEXPECTED) ib starts with "bin " but space-delimited !ibPieces[1].match(UUID_REGEXP)? (E: 3209eacc0a3848a59593d4c3ee956191)');if(!n[3].startsWith("enc="))throw new Error('(UNEXPECTED) ib starts with "bin " but space-delimited !ibPieces[3].startsWith("enc=")? (E: 4c8a0c3b07a90d30e3d1a4373d57d824)')}else throw new Error('(UNEXPECTED) ib starts with "bin " but space-delimited ibPieces length is not 2, 3 or 4? (E: c7eccf88518304997c7e42b32e08d224)');return!0}catch(o){throw console.error(`${r} ${o.message}`),o}}b(gt,"isBinary");function Xr({type:e}){if(!e.match(_r))throw new Error(`special ibgib type must not have spaces and just be alphanumerics. regexp: ${_r.source} (E: 6c1c92521b7f076cc4666e4915593723)`);return`meta special ${e}`}b(Xr,"getSpecialIbGibIb");function Kt({ib:e}){let t=`[${Kt.name}]`;try{if(Y&&console.log(`${t} starting... (I: c82ba222bd345ee6b695df4d63a23322)`),!e)throw new Error("ib required (E: 08897145f7138e644fe01c4a59353322)");if(!Et({ib:e}))throw new Error("ib is not special (E: 174aff63b992adff3ac2394643735922)");let r=e.split(" ");if(r.length<3)throw new Error('invalid ib. should be space-delimited in form of "meta special [type]" (E: ffd89e2cbe63427f98634ab897aab222)');let o=r[2];return Object.values(Ot).some(a=>a===o)||console.warn(`unknown special type (${o}). This may be expected, but atow I am adding special types to the SpecialIbGibType enum-like. (W: f4e26c3ebb57fe49d69014a4ba32a922)`),o}catch(r){throw console.error(`${t} ${r.message}`),r}finally{Y&&console.log(`${t} complete.`)}}b(Kt,"getSpecialTypeFromIb");function fs({type:e}){return`${Xr({type:e})}^${D}`}b(fs,"getSpecialIbGibAddr");function K({type:e}){return`${Fo} ${fs({type:e})}`}b(K,"getSpecialConfigKey");function Et({ib:e,ibGib:t}){if(!e&&!t?.ib)throw new Error("either ib or ibGib.ib required (E: b4cf539638d7966c2e351987f55e1a23)");return(e??t?.ib)?.startsWith("meta special")}b(Et,"isSpecial");function Wr(e){let t=`[${Wr.name}]`;if(!e)throw new Error(`${t} text required.`);return`root ${e}`}b(Wr,"getRootIb");function Ke(e){let t=`[${Ke.name}]`;if(!e)throw new Error(`${t} tag required.`);return`tag ${e}`}b(Ke,"tagTextToIb");function Yt({ibGibs:e,filterPrimitives:t}){let r=`[${Yt.name}]`;try{let o={},a={},n={};return(t?e.filter(i=>i.gib??i.gib!==D):e).forEach(i=>{Dn({ibGib:i})?(i.rel8ns?.dna??[]).length>0?o[i.gib]=i:a[i.gib]=i:n[i.gib]=i}),{mapWithTjp_YesDna:o,mapWithTjp_NoDna:a,mapWithoutTjps:n}}catch(o){throw console.error(`${r} ${o.message}`),o}}b(Yt,"splitPerTjpAndOrDna");function mt({ibGibs:e}){let t=`[${mt.name}]`;try{Y&&console.log(`${t} starting...`);let{mapWithTjp_YesDna:r,mapWithTjp_NoDna:o}=Yt({ibGibs:e,filterPrimitives:!0}),a={...r,...o},n=Object.values(a),s=dr({items:n,keyFn:b(i=>i.data?.isTjp?$({ibGib:i}):i.rel8ns?.tjp?i.rel8ns?.tjp[0]??"":(Y&&console.log(`${t} neither isTjp nor x.rel8ns.tjp truthy (I: ec9a5597bf53dec1bd3d83350abbf823)`),""),"keyFn")});return Y&&console.log(`${t} sorting (ascending) ibGibsWithTjpGroupedByTjpAddr: ${F(s)} (I: 9b9fff5ce61444a6cb06d62db9a99422)`),Object.entries(s).forEach(([i,c])=>{c.some(l=>l.data?.n===void 0)&&console.warn(`${t} timeline includes ibgibs with ibGib.data?.n === undefined (W: cab9a6b64a38c4279fe82c3569bbab22)`),c.sort((l,d)=>(l.data?.n??-1)>(d.data?.n??-1)?1:-1)}),Y&&console.log(`${t} after sort ibGibsWithTjpGroupedByTjpAddr: ${F(s)} (I: 9b9fff5ce61444a6cb06d62db9a99422)`),s}catch(r){throw console.error(`${t} ${r.message}`),r}finally{Y&&console.log(`${t} complete.`)}}b(mt,"getTimelinesGroupedByTjp");function Dn({ibGib:e}){let t=`[${Dn.name}]`;if(!e)throw new Error("(UNEXPECTED) ibGib falsy? (E: ce3a59f9db14e6158bb2c438ca1a3823)");if((e.rel8ns?.tjp?.length??0)>0||e.data?.isTjp)return!0;let r=["fork^gib","mut8^gib","rel8^gib"];return(e.rel8ns?.ancestor??[]).some(a=>r.includes(a))?!1:e.gib?e.gib.includes(he)?!0:e.gib===D?!1:!!Q({ibGibAddr:$({ibGib:e})}).tjpGib:(console.warn(`${t} ibGib.gib falsy. (W: 6400d780822b44d992846f1196509be3)`),!1)}b(Dn,"hasTjp");function de({ibGib:e,defaultIfNone:t="undefined"}){let r=`[${de.name}]`;try{let o=Nn({ibGibs:[e],defaultIfNone:t});return o&&Object.keys(o).length===1?Object.values(o)[0]:void 0}catch(o){throw console.error(`${r} ${o.message}`),o}}b(de,"getTjpAddr");function Nn({ibGibs:e,defaultIfNone:t="undefined"}){let r=`[${Nn.name}]`;try{let o={};return e.forEach(a=>{let n=$({ibGib:a}),s;a.rel8ns?.tjp?.length??!1?s=a.rel8ns.tjp[a.rel8ns.tjp.length-1]:a.data?.isTjp||t==="incomingAddr"?s=n:s=void 0,o[n]=s}),o}catch(o){throw console.error(`${r} ${o.message}`),o}}b(Nn,"getTjpAddrs");async function Vr({ibGib:e,naive:t=!0}){let r=`[${Vr.name}]`;try{if(!e)throw new Error("ibGib required.");if(t){if(e.data)return e.data.isTjp?!0:e.rel8ns?e.rel8ns.past&&e.rel8ns.past.length>0?!1:!!(e.rel8ns.past&&e.rel8ns.past.length===0):(Y&&console.log(`${r} ibGib.rel8ns falsy (I: c69c9e78b34845311ce7c674d7195622)`),!1);throw new Error("loaded ibGib required (data).")}else throw new Error("only naive implemented right now.")}catch(o){throw console.error(`${r} ${o.message}`),o}}b(Vr,"isTjp_Naive");function Ln({ibGib:e}){let t=`[${Ln.name}]`;e.ib||console.warn(`${t} ibGib.ib is falsy. (W: e60e41c2a1fc48268379d88ce13cb77b)`),e.gib||console.warn(`${t} ibGib.gib is falsy. (W: fb3889cbf0684ae4ac51e48f28570377)`);let r={ib:(e.ib||"").slice()};return e.gib&&(r.gib=e.gib.slice()),e.data&&(gt({ibGib:e})?r.data=e.data.slice():r.data=L(e.data)),e.rel8ns&&(r.rel8ns=L(e.rel8ns)),r}b(Ln,"toDto");function bs(e){let t=`[${bs.name}]`;try{return Y&&console.log(`${t} starting... (I: 57aef93fc6cc2309523b5c72a6b11823)`),!!e&&typeof e.ib=="string"}catch(r){throw console.error(`${t} ${r.message}`),r}finally{Y&&console.log(`${t} complete.`)}}b(bs,"isIbGib");function ht({ibGib:e,data:t,timestamp:r}){let o=`[${ht.name}]`;try{Y&&console.log(`${o} starting... (I: 35cb68744bcf6139d78e37de644fad23)`),r=r||t?.timestamp||e?.data?.timestamp;let a=e?.data?.timestampMs||t?.timestampMs;if(!r){let n=`${o} timestamp is falsy. (W: 5f1f1182c8804807b886a3d922ac3dcf)`;return console.warn(n),{valid:!1,emsg:n}}if(typeof r=="string")if(Number.isInteger(Number.parseInt(r))){let n=Number.parseInt(r),s=new Date;if(s.setTime(n),s.toString()!==Nt)return Y&&console.log(`${o} valid timestampInTicks string (I: 7069a1c3047f3bbc92b78674b20f5b23)`),{valid:!0,date:s,utc:s.toUTCString(),ticks:s.getTime().toString(),ms:a};{let i=`${o} data.timestamp (${r}) is an integer string but not a valid timestampInTicks string. (produces invalid date) (E: f49fbb600fe1426c8805dfc8afbe5cf3)`;return console.error(i),{valid:!1,emsg:i}}}else{let n=new Date(r);if(n.toString()!==Nt)return{valid:!0,date:n,utc:n.toUTCString(),ticks:n.getTime().toString(),ms:a};{let s=`${o} data.timestamp is a non-integer string but not a valid date timestamp string (new date instantiated produces invalid date). (W: c6c90f7f3bfb49838d2081ba84fdb5fb)`;return console.warn(s),{valid:!1,emsg:s}}}else if(typeof r=="number")if(Number.isInteger(r)){console.warn(`${o} expected data.timestamp to be a string but is a number (W: 9d786f4d4e8d4279b5af7bee19bf721b)`);let n=new Date;if(n.setTime(r),n.toString()!==Nt)return{valid:!0,date:n,utc:n.toUTCString(),ticks:n.getTime().toString(),ms:a};{let s=`${o} timestamp (${r}) is an integer number but not a valid timestampInTicks (new date setTime produces invalid date). (W: c6c90f7f3bfb49838d2081ba84fdb5fb)`;return console.warn(s),{valid:!1,emsg:s}}}else{let n=`${o} timestamp (${r}) is a non-integer number (supposed to be a string either timestamp string or ticks). (E: 2963d95f8d3b464c992b0bff948b4479)`;return console.error(n),{valid:!1,emsg:n}}else{let n=`${o} unknown typeof timestamp (${typeof r}). (E: 12458a9c16c84e4f859b5771a30dd2ef)`;return console.error(n),{valid:!1,emsg:n}}}catch(a){throw console.error(`${o} ${m(a)}`),a}finally{Y&&console.log(`${o} complete.`)}}b(ht,"getTimestampInfo");async function zr({addrs:e,readCache_graph:t,readCache_array:r,space:o}){let a=`[${zr.name}]`;try{Y&&console.log(`${a} starting... (I: 5db66871239dfa05182277f886a20926)`),t??={},r??=[];let n={...t};r.forEach(l=>n[$({ibGib:l})]=l);let s=Object.keys(t),i=e.filter(l=>!s.includes(l));if(i.length>0){Y&&console.log(`${a} ${i.length} addrsNotFoundInCache: ${i} (I: fccbd18116ffb849f813aaebfc6c0826)`);let l=[o],d=i.concat();for(let f of l){let p=await q({addrs:d,space:f});if(p.success&&p.ibGibs&&p.ibGibs.length===d.length)p.ibGibs.forEach(u=>n[$({ibGib:u})]=u),d=[];else if(p.ibGibs&&p.ibGibs.length>0){if(d=d.filter(u=>!p.ibGibs.some(h=>$({ibGib:h})===u)),d.length===0)break}else Y&&console.log(`${a} no addrs found in space (${f.ib}). trying next space. (I: 4f99d8bacbb10ab3f8737a752564b326)`)}if(d.length>0)throw new Error(`could not get all addrs from cache or spaces. addrsStillNotFound: ${d}. spaces: ${l.map(f=>f.ib).join("|")} (E: 0c6418f83dd85bda886e56f5b98f3126)`)}let c=[];for(let l of e){let d=n[l];if(!d)throw new Error(`(UNEXPECTED) allIbGibs_graph doesn't have addr? We're expecting logic to preclude this at this point. addr: ${l} (E: f68e1d236ae5e3eb08da9933c8230626)`);c.push(d)}return c}catch(n){throw console.error(`${a} ${m(n)}`),n}finally{Y&&console.log(`${a} complete.`)}}b(zr,"getIbGibsFromCache_fallbackToSpaces");var Jr=!1,ps="space_gib_db",us="space_gib_store",hs="space_gib_api_key";var gs="agent";var rb=Ke(gs);var ob={dbName:ps,storeName:us,additionalStoreNames:[Lo],apiKeyName:hs};var vn="0.0.1";var Ue=!1,ib="[web^gib timer]",Zr="ibgib";var Es="agent",cb="body-outline",lb="This tag tracks the active agents for the current local user space.",db=Ke(Es),Rn="#78f87e88",Cn="#78f87e10",Pn="#ffffff";var fb="AUTOMATED_TEXT";var be=!1;function Un(e){return new Promise((t,r)=>{let o=new Blob([e],{type:"application/octet-stream"}),a=new FileReader;a.onload=()=>{let s=a.result.split(",")[1];t(s)},a.onerror=n=>r(n),a.readAsDataURL(o)})}b(Un,"uint8ArrayToBase64");async function kn(e){let t=`data:application/octet-stream;base64,${e}`,a=await(await(await fetch(t)).blob()).arrayBuffer();return new Uint8Array(a)}b(kn,"base64ToUint8Array");async function Xt({graph:e}){let t=`[${Xt.name}]`;try{be&&console.log(`${t} starting... (I: 4ddb8803cf68e1d3d35f60680cb69825)`);let r=JSON.parse(JSON.stringify(e));for(let a in r)e[a].data instanceof Uint8Array&&(r[a].data={_dataType:"Uint8Array_Base64",value:await Un(e[a].data)});let o=JSON.stringify(r);return be&&console.log(`${t} jsonString.length: ${o.length} (I: 56dec8ad0931ab8ba9b5ca3d4e66be25)`),o}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{be&&console.log(`${t} complete.`)}}b(Xt,"serializeGraphToString");async function Wt({jsonString:e}){let t=`[${Wt.name}]`;try{be&&console.log(`${t} starting... (I: 52e1a1fb1adcc75168fbc6d819868825)`);let o=JSON.parse(e,b((a,n)=>(n&&n._dataType==="Uint8Array_Base64",n),"reviver"));for(let a in o){let n=o[a].data;n&&n._dataType==="Uint8Array_Base64"&&(o[a].data=await kn(n.value))}return o}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{be&&console.log(`${t} complete.`)}}b(Wt,"deserializeStringToGraph");async function Mn(e){let t=`[${Mn.name}]`;try{be&&console.log(`${t} starting... (I: 8d306868b718596fe8f562bd5118d825)`);let r=await Xt({graph:e}),o=new TextEncoder().encode(r),n=new Response(o).body.pipeThrough(new CompressionStream("gzip"));return await new Response(n).blob()}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{be&&console.log(`${t} complete.`)}}b(Mn,"compressIbGibToBlob");async function ms(e){let t=e.stream().pipeThrough(new DecompressionStream("gzip")),r=await new Response(t).text();return await Wt({jsonString:r})}b(ms,"decompressIbGibFromBlob");async function Qr({graph:e}){let t=`[${Qr.name}]`;try{be&&console.log(`${t} starting... (I: 1352f8540c08f0b725952df8f18c4825)`);let o=await(await Mn(e)).arrayBuffer(),a=new Uint8Array(o);return await Un(a)}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{be&&console.log(`${t} complete.`)}}b(Qr,"compressIbGibGraphToString");async function eo({compressedBase64:e}){let t=`[${eo.name}]`;try{be&&console.log(`${t} starting... (I: 5f3fa940a2c8f8d7b877978ae7f87825)`);let r=await kn(e),o=new Blob([r],{type:"application/gzip"});return await ms(o)}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{be&&console.log(`${t} complete.`)}}b(eo,"decompressIbGibGraphFromString");var jn="export";var wt=!1;function Bn({data:e}){let t=`[${Bn.name}]`;try{wt&&console.log(`${t} starting... (I: 158dfaeb9613a1531be71a9735184624)`);let{graphSize:r,dependencyGraphAsString:o,timestamp:a}=e,n=o.length,s=ue(a),i=e.compression==="gzip"?"gzip":"raw";if(!e.timestamp)throw new Error("(UNEXPECTED) data.timestamp falsy? (E: 2f5bc88488cbf260634239a8a8396825)");let c=new Date(e.timestamp),{ib:l,gib:d}=N({ibGibAddr:e.contextIbGibAddr}),p=Q({gib:d}).tjpGib??d,u=c.toISOString().slice(0,19).replace("T","_").replace(/:/g,"").replace(/ /g,"_");return`${jn} ${u} ${i} ${r} ${n} ${p}`}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{wt&&console.log(`${t} complete.`)}}b(Bn,"getRawExportIb");async function to({ibGib:e,metaspace:t,space:r,compress:o,live:a,ignoreErrors:n}){let s=`[${to.name}]`;try{if(wt&&console.log(`${s} starting... (I: 0b6ba8608ba8bde0682a0936b9a01825)`),!e)throw new Error("(UNEXPECTED) ibGib falsy? (E: d2898eea744360865f0da5fb91baae22)");let i=$({ibGib:e}),c=[],l=await ee({ibGib:e})??[];if(l.length>0){let I=`ibGib had validation errors: ${l} (E: 84890bbc0598192498178a98ae299825)`;if(n)c.push({errorMsg:I,ibGibAddr:i});else throw new Error(I)}let d=await t.getDependencyGraph({ibGib:e,live:a,space:r}),f=o?await Qr({graph:d}):await Xt({graph:d}),p=de({ibGib:e,defaultIfNone:"incomingAddr"})??i,u=new Date,h={contextIbGibAddr:i,tjpAddr:p,dependencyGraphAsString:f,graphSize:Object.keys(d).length,timestamp:ie(u),timestampMs:u.getMilliseconds()};o&&(h.compression="gzip");let E={ib:Bn({data:h}),data:h},g=await M({ibGib:E,hasTjp:!1});return E.gib=g,console.log(`${s} JSON.stringify(exportIbGib).length: ${JSON.stringify(E).length} (I: db3a8d913a91d8fc5d6e45981e034822)`),{rawExportIbGib:E,manifest:Object.keys(d),errors:c.length>0?c:void 0}}catch(i){throw console.error(`${s} ${m(i)}`),i}finally{wt&&console.log(`${s} complete.`)}}b(to,"getRawExportIbGib");var Fn=Ue;async function ot(e){let t=`[${ot.name}]`;try{Fn&&console.log(`${t} starting... (I: 037b228a2568181cd3eb25dba4e03225)`);let r=document.getElementById("fullscreen-dialog"),o=document.getElementById("fullscreen-dialog-body"),a=document.getElementById("fullscreen-dialog-title"),n=document.getElementById("fullscreen-dialog-message"),s=document.getElementById("fullscreen-dialog-prompt-input"),i=document.getElementById("fullscreen-dialog-ok-button"),c=document.getElementById("fullscreen-dialog-cancel-button");if(!r||!o||!a||!n||!s||!i||!c)throw new Error("(UNEXPECTED) One or more dialog elements not found in DOM (E: 578e37c0271cc57a99e95e780ad18a25)");a.textContent=e.title||"",[...n.childNodes].forEach(f=>n.removeChild(f)),(e.msg||"").split(`
|
|
9
|
+
`).forEach(f=>{let p=document.createElement("p");p.textContent=f,n.appendChild(p)}),s.classList.remove("collapsed"),c.classList.remove("collapsed"),c.style.display="inline-block",i.textContent=e.okButtonTitle||"OK";let d=b(f=>{(f.key==="Enter"||f.key===`
|
|
10
|
+
`)&&f.ctrlKey&&i.click()},"onKeypress");return e.prompt||e.showInput?(s.addEventListener("keypress",d),e.showInput?(s.autofocus=!0,s.value=e.defaultValue??"",s.addEventListener("keypress",f=>{f.key==="Enter"&&i.click()}),e.isPassword?(s.type="password",s.autocomplete="off",s.required=!0):(s.type="text",s.autocomplete="on",s.required=!1,s.attributes["auto-complete"]="on")):(s.autofocus=!1,s.classList.add("collapsed")),c.textContent=e.cancelButtonTitle||"Cancel"):(s.classList.add("collapsed"),c.style.display="none"),new Promise(f=>{let p=b(()=>{(e.prompt||e.showInput)&&s.removeEventListener("keypress",d),i.removeEventListener("click",u),c.removeEventListener("click",h),r.removeEventListener("close",E)},"removeEventListeners"),u=b(()=>{p();let g=e.showInput?s.value??"":"true";s&&(s.value=""),r.close(g),f(g)},"onOK"),h=b(()=>{p(),s&&(s.value=""),r.close(void 0),f(void 0)},"onCancel"),E=b(()=>{p(),s&&(s.value=""),r.close(void 0),f(void 0)},"onClose");i.addEventListener("click",u),c.addEventListener("click",h),r.addEventListener("close",E),r.showModal(),X(1e3).then(()=>{o.scrollTo({top:0,behavior:"smooth"})})})}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{Fn&&console.log(`${t} complete.`)}}b(ot,"showFullscreenDialog");var H=Ue;async function ws({metaspace:e,space:t}){let r=`[${ws.name}]`;try{H&&console.log(`${r} starting... (I: 2ccb79537a75e7896bace84e6c710d25)`);let o=await e.getSpecialIbGib({type:Ot.tags,space:t});if(!o)throw new Error(`tagsIbGib not found in metaspace. space: ${t?t.ib:"default local user space"} (E: 4734c510a411274315c0add8f70e1925)`);return o}catch(o){throw console.error(`${r} ${m(o)}`),o}finally{H&&console.log(`${r} complete.`)}}b(ws,"getTagsIbGib");function oo({scope:e,ibGib:t,ibGibAddr:r,defaultNameIfError:o}){let a=`[${oo.name}]`;try{if(!t&&!r)throw new Error(`${a} Must provide either ibGib or ibGibAddr. (E: genuuid)`);e.includes(" ")&&(console.warn(`${a} scope includes one or more spaces. These will be converted to double underscores. (W: 1554a81454e8ae0a6858ea5dd17f8925)`),e=e.replace(/ /g,"__"));let n,s,i;if(t){if(!t.data)throw new Error("(UNEXPECTED) ibGib.data falsy? (E: genuuid)");if(!t.rel8ns)throw new Error("(UNEXPECTED) ibGib.rel8ns falsy? (E: genuuid)");if(!t.rel8ns.ancestor)throw new Error("(UNEXPECTED) ibGib.rel8ns.ancestor falsy? (E: genuuid)");if(t.rel8ns.ancestor.length===0)throw new Error("(UNEXPECTED) ibGib.rel8ns.ancestor.length === 0? there should be at least one ancestor (E: genuuid)");if(t&&r&&$({ibGib:t})!==r)throw new Error("(UNEXPECTED) both ibGib and ibGibAddr provided, but addr of ibGib doesn't equal ibGibAddr? (E: genuuid)");let d=t.rel8ns.ancestor.filter(p=>W({gib:N({ibGibAddr:p}).gib}));if(d.length===0){debugger;console.error(`${a} ibGib has no primitive ancestor addrs? Still going to work off of the ib then, which should have the atom as the first space-delimited term. (E: genuuid)`)}let f=d.at(-1);n=N({ibGibAddr:f}).ib,i=n}r??=$({ibGib:t});let{ib:c}=N({ibGibAddr:r});if(s=c.split(" ").at(0)??"",s=s.replace(/\W/g,"_"),n??=s,n=n.replace(/\W/g,"_"),!n&&!s)throw new Error("(UNEXPECTED) both primitiveAncestorIb and atom falsy? one should be truthy at this point. (E: genuuid)");i=s.toLowerCase(),H&&console.log(`${a} ancestorIbOrAtom: ${i} (I: genuuid)`);let l=`${i}_${e}index`;return H&&console.log(`${a} indexName: ${l} (I: genuuid)`),l}catch(n){if(o)return console.warn(`${a} error happened but defaultNameIfError (${o}) provided. So will return this value. error that was thrown: ${m(n)}`),o;throw console.error(`${a} ${m(n)}`),n}}b(oo,"getIndexNameFromIbGib");async function $s({scope:e,ibGib:t,metaspace:r,space:o,skipGetLatest:a}){let n=`[${$s.name}]`;try{if(H&&console.log(`${n} starting... (I: f19dc86aab380fe809aef27ccc7a7425)`),!e)throw new Error("scope required to be a non-empty string (E: 73e702495c38c7d8747d1cf8850af825)");if(!t)throw new Error("ibGib required (E: genuuid)");let s=oo({scope:e,ibGib:t}),i=de({ibGib:t,defaultIfNone:"incomingAddr"}),c=b(async()=>{let d=await r.getSpecialIbGib({type:s,space:o,initialize:!1,dontWarnIfNotExist:!0,lock:!0});if(!d||!d.data){H&&console.log(`${n} special ${e} index ibGib not found for indexSpecialIbGibType (${s}). No coupled ibgib registered, returning undefined. (I: genuuid)`);return}let p=(d.data.coupleMap??d.data.agentMap??{})[i];if(!p){H&&console.log(`${n} No coupled ${e} ibgib address found for domain ${i} in the coupled index map. indexSpecialIbGibType: ${s}. returning undefined. (I: genuuid)`);return}let u=a?p:await r.getLatestAddr({addr:p,space:o})??p,h=await r.get({addrs:[u],space:o});if(h.errorMsg||(h.ibGibs??[]).length!==1)throw new Error(`couldn't get latest coupled ibgib (${u}) for domain ${i}. (E: 8aa7b25f5cd4ebadd8bf2f8807dfe825)`);return h.ibGibs[0]},"fn");return await rt({scope:s,secondsValid:180,maxDelayMs:100,maxLockAttempts:1800,space:o,callerInstanceId:n+ue(),fn:c})}catch(s){throw console.error(`${n} ${m(s)}`),s}finally{H&&console.log(`${n} complete.`)}}b($s,"getLocalCoupledIbGibForDomainIbGib");async function ys({scope:e,domainIbGib:t,localIbGib:r,metaspace:o,space:a}){let n=`[${ys.name}]`;try{H&&console.log(`${n} starting... (I: 217ae68e0c820e48f4c00409f7f14325)`);let s=oo({scope:e,ibGib:t}),i=de({ibGib:t}),c=$({ibGib:r});if(!i)throw new Error(`${n} Could not get TJP address for domain ibGib. (E: 35a4e8ac291b0b85cb958e28dd812f25)`);if(!c)throw new Error(`${n} Could not get address for agent ibGib. (E: 2fce1187630b45934c4155a23204d125)`);await rt({scope:s,secondsValid:60,maxDelayMs:100,maxLockAttempts:600,space:a,fn:b(async()=>{let d=await o.getSpecialIbGib({type:s,space:a,initialize:!0,dontWarnIfNotExist:!0,lock:!1});if(!d)throw new Error(`${n} Could not get or create agent index ibGib.`);if(!d.data)throw new Error("(UNEXPECTED) agentSpecialIndex.data falsy? (E: 74299eed147debf6398ca37e7b8d5c25)");let f=d.data.coupleMap??d.data.agentMap,p=f?L(f):{},u=p[i];if(u)if(u===c){H&&console.log(`${n} domain ibGib (${i}) already mapped to agent (${c}). returning early (I: cb5d4dcef8cf14de7336120fb8ffef25)`);return}else console.warn(`${n} domainTjpAddr (${i}) already assigned to existingMappedAgentAddr (${u}). We will be changing to new localAddr (${c}). (W: eb993e33f7731e570fa76f24a2d80625)`);p[i]=c;let h=await Je({src:d,dataToAddOrPatch:{coupleMap:p},dna:!1,linkedRel8ns:[C.past],nCounter:!0}),E=h.newIbGib;await V({resTransform:h,space:a});let g=K({type:s});await o.setConfigAddr({key:g,addr:$({ibGib:E}),space:a}),await o.registerNewIbGib({ibGib:E,space:a})},"fn")}),H&&console.log(`${n} Registered domain ${i} with agent ${c}`)}catch(s){throw console.error(`${n} ${m(s)}`),s}finally{H&&console.log(`${n} complete.`)}}b(ys,"coupleDomainIbGibWithLocalIbGibViaIndex");function Ye(){let e=`[${Ye.name}]`;try{H&&console.log(`${e} starting... (I: 890f53e984d69461d9f4ded8741fcc25)`);let t=globalThis[Zr];return t||(console.log(`${e} initializing globalThis.${Zr}... (I: 9d9ff1813448d9a1b82b0e5790a74825)`),t={}),t}catch(t){throw console.error(`${e} ${m(t)}`),t}finally{H&&console.log(`${e} complete.`)}}b(Ye,"getIbGibGlobalThis_IbGib");async function ke({delayIntervalMs:e=50}={delayIntervalMs:50}){let t=`[${ke.name}]`;try{H&&console.log(`${t} starting... (I: 4acc22d08dd1100503f9b0423f302925)`);let r;for(;!r;)Ye().metaspace&&(r=Ye().metaspace),r||(console.log(`${t} metaspace still not initialized. delayIntervalMs: ${e} until next retry... (I: 490f77ac4ded1d7d3c0340e460404125)`),await X(e));return r}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{H&&console.log(`${t} complete.`)}}b(ke,"getGlobalMetaspace_waitIfNeeded");function Is({ibGibAddr:e,gib:t,ibGib:r,translucentAlpha:o=10}){let a=`[${Is.name}]`;try{H&&console.log(`${a} starting... (I: 3b70af42d1c4f6ae91870f3a15c6c625)`),!e&&!t&&!r&&(t=D),t??=r?.gib??N({ibGibAddr:e}).gib;let n=Q({gib:t});o??=10;let s="";if(n.isPrimitive)return{gib:t,gibInfo:n,punctiliarColor:Rn,punctiliarColorTranslucent:Cn,punctiliarColorContrast:Pn};s=n.tjpGib??n.punctiliarHash??t;let[i,c,l]=Hn(o,n.punctiliarHash??t),[d,f,p]=n.tjpGib?Hn(o,n.tjpGib):[void 0,void 0,void 0];return{gib:t,gibInfo:n,punctiliarColor:i,punctiliarColorTranslucent:c,punctiliarColorContrast:l,tjpColor:d,tjpColorTranslucent:f,tjpColorContrast:p}}catch(n){let s=`${a} ${m(n)}`;return console.error(s),{gib:t??D,gibInfo:{isPrimitive:!0},punctiliarColor:"#ff0000",punctiliarColorTranslucent:"#ff000010",punctiliarColorContrast:"#ffffff",errorMsg:s}}finally{H&&console.log(`${a} complete.`)}}b(Is,"getDeterministicColorInfo");function Hn(e,t){function r(i){let c=i.concat().replace("#","");var l=parseInt(c.substr(0,2),16),d=parseInt(c.substr(2,2),16),f=parseInt(c.substr(4,2),16),p=(l*299+d*587+f*114)/1e3;return p>=128?"#000000":"#FFFFFF"}b(r,"getContrastColor");let o="";if(e||e===0){if(e<0||e>100)throw new Error("alpha must be between 0 and 100 (E: c78faeb1477482c739b03dd32d2e1825)");e===100?o="":e>=0&&e<10?o=`0${e}`:o=e.toString()}let a=`#${t.substring(0,6)}`,n=`#${t.substring(0,6)}${o}`,s=r(a);return[a,n,s]}b(Hn,"getColorStrings");var te=Ue;function Kn(e){return new TextDecoder().decode(e)}b(Kn,"uint8ArrayToString");var qn=class e{static{b(this,"PathUtilsHelper")}lc=`[${e.name}]`;constructor(){}isAbsolute(t){if(!t)throw new Error("(UNEXPECTED) path falsy? (E: dcb92e11770ba06205c0afe3e6560b24)");return t.startsWith("/")}isRelative(t){return!this.isAbsolute(t)}join(...t){let r=`${this.lc}[${this.join.name}]`;if(t.length===0)return console.log(`${r} paths.length === 0. returning '.' per node convention. (I: 153da80765ff6160675fae895ebac225)`),".";if(t.length===1&&t[0]==="..")return console.log(`${r} paths.length === 1 && paths[0] === '..'. returning '..' per node convention. (I: 9af242b7615430a8c6899b1a332e9925)`),"..";let o="";for(let a=0;a<t.length;a++){let n=t[a];n===".."?o=o.split("/").slice(0,-1).join("/"):(n.startsWith("/")&&(n=n.slice(1)),n.endsWith("/")&&(n=n.slice(0,-1)),o+=(a>0?"/":"")+n)}return o}dirname(t){return t.split("/").slice(0,-1).join("/")}basename(t,r){return t.split("/").pop()??""}};async function _s({msg:e,title:t,confirm:r,noNewLine:o,rl:a,defaultValue:n,dontCloseRl:s,cancelable:i}){let c=`[${_s.name}]`;try{if(!e)throw new Error("msg required (E: 7f4d67bca4cf98ea95fa110aabc98924)");let l,d=0,f=5;do{if(d++,d>=f)throw new Error("max attempts reached (E: 1ef20ae955622d4b39479f3da91a1d25)");await X(50),l=await ot({title:t||"Prompt for Info",msg:e,prompt:!0,showInput:!0,isPassword:!1,defaultValue:n})}while(l===void 0&&!i);return l??""}catch(l){debugger;throw console.error(`${c} ${m(l)}`),l}}b(_s,"promptForText");async function As({msg:e,confirm:t}){let r=`[${As.name}]`;try{te&&console.log(`${r} starting... (I: 795a4ce348ddb9a5119770f4c572ac24)`);let o,a=!0,n=0,s=5;do{if(n++,n>=s)throw new Error("max attempts reached (E: d4166b4bf37aff0c6d44567792e9ad25)");if(await X(50),o=await ot({title:a?"Shh...":"Secrets didn't match, try again...",msg:e||"Enter Your Secret...",prompt:!0,showInput:!0,isPassword:!0,defaultValue:void 0}),o===void 0)throw new Error("user cancelled (E: 91519d04378e84106f3df8eb36d99725)");if(t){await X(250);let i=await ot({title:"Shh...",msg:"Confirm...",prompt:!0,showInput:!0,isPassword:!0,defaultValue:void 0});i===void 0&&(o=void 0),o!==i&&(o=void 0,a=!1,await X(250))}}while(o===void 0);return o}catch(o){throw console.error(`${r} ${m(o)}`),o}finally{te&&console.log(`${r} complete.`)}}b(As,"promptForSecret");async function Ts({msg:e,title:t,skipHitEnterToContinue:r}){let o=`[${Ts.name}]`;try{if(!e)throw new Error("msg required (E: ffcf7dd00324df7cea2792223d229524)");try{t??="",await X(50),await ot({title:t,msg:e})}catch(a){throw a}}catch(a){throw console.error(`${o} ${m(a)}`),a}}b(Ts,"alertUser");async function Ss({exportIbGibJsonString:e,metaspace:t}){let r=`[${Ss.name}]`;try{debugger;if(te&&console.log(`${r} starting... (I: genuuid)`),!t)throw new Error("(UNEXPECTED) metaspace falsy? (E: genuuid)");if(!await t.getLocalUserSpace({lock:!1}))throw new Error("(UNEXPECTED) couldn't get default local user space? (E: genuuid)");let a,n;try{a=JSON.parse(e)}catch(l){let d=`Error during parse JSON. error: ${m(l)} (E: genuuid)`,f=new Error(d);throw f.cause=l,f}try{let l=await ee({ibGib:a})??[];if(l.length>0)throw new Error(`validation errors when validating the parsed ibgib that should be a RawExportIbGib_V1: ${l} (E: 8ba178d3b26e8eca28a67c182fe16825)`);if(n=a,!n.data)throw new Error("(UNEXPECTED) rawExportIbGib.data falsy? (E: ef1824d1cca5584ab8e34288346e9825)")}catch(l){let d=`Error during parse JSON. error: ${m(l)} (E: genuuid)`,f=new Error(d);throw f.cause=l,f}let s;if(n.data.compression)switch(n.data.compression){case"gzip":s=await eo({compressedBase64:n.data.dependencyGraphAsString});break;default:throw new Error(`unknown value of rawExportIbGib.data.compression: ${n.data.compression} (E: 784672fae568312d887ddbb841199925)`)}else s=await Wt({jsonString:n.data.dependencyGraphAsString});let i={};for(let[l,d]of Object.entries(s)){let f=await ee({ibGib:d})??[];f.length>0&&(i[l]=f)}if(Object.keys(i).length>0)throw new Error(`there were validation errors for the RawExportIbGib_V1.data payload (contained in data.dependencyGraphAsString). Here is the validationErrorMap:
|
|
11
|
+
${F({validationErrorMap:i})} (E: e63f38b182a84122d83a55befb369825)`);return[n,s]}catch(o){throw console.error(`${r} ${m(o)}`),o}finally{te&&console.log(`${r} complete.`)}}b(Ss,"getRawExportIbGibAndGraphFromJsonString");async function Gs({ibGib:e,compress:t,metaspace:r,space:o}){let a=`[${Gs.name}]`;try{if(te&&console.log(`${a} starting... (I: 623d9463d919683be81f749821a95825)`),W({ibGib:e}))throw new Error("ibGib is primitive. Can't export primitive. (E: dd42c42e9fda0707e81c692af1a2a225)");let n=await to({ibGib:e,live:!0,compress:t,metaspace:r,space:o}),{rawExportIbGib:s,errors:i}=n;if((i??[]).length>0)throw new Error(`Export had errors: ${i} (E: 05faf83f25d3449ab809dfd24eeaf825)`);let c=JSON.stringify(s),l="data:text/json;charset=utf-8,"+encodeURIComponent(c),f=`${$({ibGib:s})}.json`,p=document.createElement("a");p.setAttribute("style","none"),p.setAttribute("href",l),p.setAttribute("download",f);let u=document.getElementsByTagName("div")[0];u.appendChild(p),p.click(),u.removeChild(p)}catch(n){throw console.error(`${a} ${m(n)}`),n}finally{te&&console.log(`${a} complete.`)}}b(Gs,"exportIbGib");function xs(){let e=`[${xs.name}]`;try{te&&console.log(`${e} starting... (I: 62a29f9982b4b5ecd91ff58ca4dd6825)`);let t=Ye();if(!t.storeName_hack)throw new Error("(UNEXPECTED) global store name falsy? (E: 3b9b680f6a980debbb877c9a13fb2625)");return t.storeName_hack}catch(t){throw console.error(`${e} ${m(t)}`),t}finally{te&&console.log(`${e} complete.`)}}b(xs,"getGlobalStoreName");function Os(){let e=`[${Os.name}]`;try{te&&console.log(`${e} starting... (I: 8c8f08728fc7384f87697377358cc825)`);let t=Ye();if(!t.dbName_hack)throw new Error("(UNEXPECTED) global db name falsy? (E: 3aa028d5e4088f3f3841aae94ac02825)");return t.dbName_hack}catch(t){throw console.error(`${e} ${m(t)}`),t}finally{te&&console.log(`${e} complete.`)}}b(Os,"getGlobalDbName");function Ds(){let e=`[${Ds.name}]`;try{te&&console.log(`${e} starting... (I: 59a2510a85051f97ed15fbc8825b6825)`);let t=Ye();if(!t.apiKeyName_hack)throw new Error("(UNEXPECTED) global api key name falsy? (E: 1782e812f0c87f54b8059468a5b60125)");return t.apiKeyName_hack}catch(t){throw console.error(`${e} ${m(t)}`),t}finally{te&&console.log(`${e} complete.`)}}b(Ds,"getGlobalIndexedDbKey_APIKey");async function no({infos:e}){let t=`[${no.name}]`;try{te&&console.log(`${t} starting... (I: 4d41880fb748ee2302a624a255665825)`);for(let r of e){let{dbName:o,storeNames:a}=r;await so({dbName:o})||await zt({dbName:o});for(let s of a)await ao({dbName:o,storeName:s})}}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{te&&console.log(`${t} complete.`)}}b(no,"initAppStorage");var re=Ue,Yn=0;async function zt({dbName:e,storeName:t,version:r,logalot:o=!1}){let a=`[${zt.name}][${e}][${t??"no store name"}]`,n=crypto.randomUUID();o&&console.time(a+n);let s;try{o&&console.log(`${a} starting... (I: f35d4e1ba37252f14c8532fb861b1125)`),await new Promise((c,l)=>{try{o&&console.log(`${a} starting... (I: 0aeddd9376daa0a044677ce4cf8a4c24)`),o&&console.timeLog(a+n,"opening... (I: e748b4ddb445d77cb10a7ba158b49125)");let d=indexedDB.open(e,r);Yn++,console.log(`${a} initRequestCount: ${Yn} (I: 294d5f0b12ffe5512bacebe891824d25)`);let f;d.onupgradeneeded=p=>{try{s=p.target.result,o&&console.timeLog(a+n,"onupgradeneeded... (I: e748b4ddb445d77cb10a7ba158b49125)"),t&&(s.objectStoreNames.contains(t)?f=!0:(f=!1,s.createObjectStore(t,{keyPath:"key"})))}catch(u){console.error(`${a}[openDBRequest.onupgradeneeded] ${m(u)} (E: 4a5fa1b0850be47e28bee653da287325)`),l(u)}},d.onblocked=p=>{console.log(`${a}[openDBRequest.onblocked] openDBRequest blocked...time wasted a bit here. version change event (old -> new): ${p.oldVersion} -> ${p.newVersion} (I: 9074ebf4afdba54d6f9d41b360b96a25)`),console.dir(p)},d.onsuccess=p=>{try{o&&console.log("init success (I: 297a5a71e405a0b56413af813f248d24)"),o&&console.timeLog(a+n,"onupgradeneeded... (I: e748b4ddb445d77cb10a7ba158b49125)"),s=p.target.result,t&&(f??=s.objectStoreNames.contains(t),o&&console.log(`${a} ${e} store "${t}" ${f?"already exists":"does not exist"}. (I: db64712bc69c5287b1cf77af1fc13d24)`)),c()}catch(u){console.error(`${a}[openDBRequest.onsuccess] ${m(u)}`),l(u)}},d.onerror=p=>{debugger;console.error(`${a}[initRequest.onerror] ${m(d.error)} (E: 74cf09e9fba2dd9e41225e943c331124)`),l(d.error)}}catch(d){console.error(`${a} ${m(d)}`);debugger;l(d)}finally{o&&console.log(`${a} complete.`)}})}catch(i){throw console.error(`${a} ${m(i)}`),i}finally{s&&(o&&console.log(`${a} closing db ${e}... (I: 3f1c18eec567ea63f3927eef0f038925)`),s.close(),o&&(console.log(`${a} closing db ${e} complete. (I: bc3b2f504245d6203dbba6bd65d30325)`),console.timeLog(a+n,"db closed. (I: e748b4ddb445d77cb10a7ba158b49125)"))),o&&(console.log(`${a} complete.`),console.timeEnd(a+n))}}b(zt,"initializeStorage");async function Xn({dbName:e,logalot:t=!1}){let r=`[${Xn.name}]`,o=crypto.randomUUID();t&&console.time(r+o);try{return t&&console.log(`${r} starting... (I: 8516795b20529d19eb6923defd7a0f24)`),(await indexedDB.databases()).filter(n=>n.name===e).at(0)}catch(a){console.error(`${r} ${m(a)}`)}finally{t&&console.timeEnd(r+o),t&&console.log(`${r} complete.`)}}b(Xn,"storageGetDBInfo");async function ao({dbName:e,storeName:t,logalot:r=!1}){let o=`[${ao.name}]`,a=crypto.randomUUID();r&&console.time(o+a);let n;try{if(r&&console.log(`${o} starting... (I: 029f7caa8ea5ea08a865f3924c82b624)`),!(await indexedDB.databases()).filter(f=>f.name===e).at(0))throw new Error(`db (${e}) does not exist. can't create store (${t}) (E: 5b15f7aed6f7068d077b2c7ebcbe8524)`);let i=!1;if(r&&console.timeLog(o+a),await new Promise((f,p)=>{let u=indexedDB.open(e);u.onsuccess=h=>{n=h.target.result,i=n.objectStoreNames?.contains(t),r&&console.timeLog(o+a,"open db request"),f()},u.onerror=h=>{debugger;console.error(`${o}[openDBRequest.onerror] ${m(u.error)} (E: 63695744e9e59ff8019e04ceeb8e2524)`),p(u.error)}}),r&&console.timeLog(o+a),i){r&&console.log(`${o} store ${t} already existed. (I: a2263b510c18240fc59fca54e3892324)`);return}let c=await Xn({dbName:e,logalot:r});if(r&&console.timeLog(o+a,"storageGetDBInfo complete"),!c)throw new Error(`db (${e}) does not exist. can't create store (${t}) (E: c771db13fa28f67079aad45e1ab7e624)`);let l=c.version;if(!l)throw new Error(`db (${e}) has no version. can't create store (${t}) (E: 3d2ec52853ad99f92b19ac5aa7fbfe24)`);let d=l+1;if(r&&console.log(`${o} creating store ${t} with version ${d} (I: 312b79f28243c650cf38935114f21e24)`),n)n.close(),n=void 0;else throw new Error("(UNEXPECTED) how did we get here with db falsy? (E: b561784879e19bac54b1c4936aff0c25)");await zt({dbName:e,storeName:t,version:d,logalot:r})}catch(s){throw console.error(`${o} ${m(s)}`),s}finally{n&&(r&&console.log(`${o} closing db ${e}... (I: 3f1c18eec567ea63f3927eef0f038925)`),n.close(),r&&console.log(`${o} closing db ${e} complete. (I: bc3b2f504245d6203dbba6bd65d30325)`)),r&&console.timeLog(o+a),r&&console.log(`${o} complete.`)}}b(ao,"storageCreateStoreIfNotExist");async function ro({dbName:e,version:t,storeName:r,key:o,value:a,logalot:n=!1}){let s=`[${ro.name}]`,i;try{n&&console.log(`${s} starting... (I: bf7316c244888cb8ead2d3aac1d9f625)`),await new Promise((l,d)=>{try{n&&console.log(`${s} starting... (I: 81df59e3961d711ce5d8f2ae3e2f3824)`);let f=indexedDB.open(e,t);f.onsuccess=p=>{i=p.target.result;try{let u=i.transaction(r,"readwrite").objectStore(r),h={key:o,value:a};u.put(h),l()}catch(u){console.error(`${s}[putRequest.onsuccess] ${m(u)}`),d(u)}},f.onerror=p=>{debugger;console.error(`${s}[putRequest.onerror] ${m(f.error)} (E: 7a946d99ede2b248df4dcfea4ac99724)`),d(f.error)}}catch(f){console.error(`${s} ${m(f)}`),d(f)}finally{n&&console.log(`${s} complete.`)}})}catch(c){throw console.error(`${s} ${m(c)}`),c}finally{i&&(n&&console.log(`${s} closing db ${e}... (I: 438c6edced94b83a3478c71b08c6c325)`),i.close(),n&&console.log(`${s} closing db ${e} complete. (I: 0d081553b1eb53c65ade2cedb802cf25)`)),n&&console.log(`${s} complete.`)}}b(ro,"storagePut");async function Vt({dbName:e,version:t,storeName:r,key:o,logalot:a=!1}){let n=`[${Vt.name}]`,s;try{return a&&console.log(`${n} starting... (I: f8ba7cd5801918a8580e91b7c90aa525)`),await new Promise((l,d)=>{try{a&&console.log(`${n} starting... (I: 24163c4a11c8712097db45febaf9c724)`);let f=indexedDB.open(e,t);f.onsuccess=p=>{s=p.target.result;let u;try{u=s.transaction(r).objectStore(r)}catch(E){debugger;console.error(`${n}[openDBRequest.onsuccess][objectStore] ${m(E)}`),d(E);return}let h=u.get(o);h.onsuccess=E=>{try{let g=E.target?.result?.value??void 0;if(!g){l(g);return}if(a&&console.log("Retrieved value:",g),g instanceof Uint8Array)l(Kn(g));else{if(typeof g!="string")throw new Error("(UNEXPECTED) truthy, non-Uint8Array value is not a string? (E: 6a4ec24e2e5d9848f8b542bc2661dc24)");l(g)}}catch(g){d(g)}},h.onerror=E=>{debugger;let g=h.error;console.error(`${n}[openDBRequest.onsuccess][getRequest.onerror] ${m(g)}`),d(g)}},f.onerror=p=>{debugger;console.error(`${n}[openDBRequest.onerror] ${m(f.error)} (E: 074963a908fa9a075f01c73cae829224)`),d(f.error)}}catch(f){console.error(`${n} ${m(f)}`),d(f)}finally{a&&console.log(`${n} complete.`)}})}catch(i){throw console.error(`${n} ${m(i)}`),i}finally{s&&(a&&console.log(`${n} closing db ${e}... (I: a938fc22dfdc76b15f6926bc4d458225)`),s.close(),a&&console.log(`${n} closing db ${e} complete. (I: 18f2ec1557bc83ec4e2c5d5e72264525)`)),a&&console.log(`${n} complete.`)}}b(Vt,"storageGet");async function so({dbName:e,store:t}){let r=`[${so.name}]`,o;try{return re&&console.log(`${r} starting... (I: 2b4373affa3841220f0b7ca690406624)`),(await window.indexedDB.databases()).some(s=>s.name===e)?t?await new Promise((s,i)=>{let c=indexedDB.open(e);c.onsuccess=l=>{o=l.target.result;let d=o.objectStoreNames.contains(t);s(d)},c.onerror=l=>{debugger;o=c.result;let{error:d}=l.target;console.error(`${r}[openDBRequest.onerror] ${m(c.error)} (E: c783fe607451e46c1feae3a81e0f7924)`),i(d)}}):!0:!1}catch(a){throw console.error(`${r} ${m(a)}`),a}finally{o&&(re&&console.log(`${r} closing db ${e}... (I: 8782d9eea285cf9eb638d493a421a625)`),o.close(),re&&console.log(`${r} closing db ${e} complete. (I: 76a0c5dea2643e2bb84c82c8446a8125)`)),re&&console.log(`${r} complete.`)}}b(so,"storageDBExists");async function Ns({dbName:e,storeName:t,pathToRm:r}){let o=`[${Ns.name}]`,a=re;re&&console.log(`${o} starting... (I: c7e4cb759789ece0a8189d7dfb4d2a24)`);let n;return new Promise((s,i)=>{try{if(!e)throw new Error("(UNEXPECTED) dbName falsy? (E: ed336d88c9c4e8d4916b29356dc58324)");if(!t)throw new Error("(UNEXPECTED) storeName falsy? (E: ad493bb79b63a192524b14c59a706524)");if(!r)throw new Error("(UNEXPECTED) pathToRm falsy? (E: 88c9631d93467e17996946882254af24)");let c=indexedDB.open(e);c.onerror=()=>{debugger;c.result&&c.result.close(),console.error(`${o}[openDBRequest.onerror] ${m(c.error)} (E: 4c5ab71a765e61b4292008fd4fafe324)`),i(c.error)},c.onsuccess=()=>{n=c.result;let d=n.transaction(t,"readwrite").objectStore(t),f=IDBKeyRange.lowerBound(r),p=d.openCursor(f);p.onerror=()=>{debugger;console.error(`${o}[openCursorRequest.onerror] ${m(p.error)} (E: caefdda2bb95f92e9fb8d89ee412b524)`),i(p.error)},p.onsuccess=()=>{try{let u=0,h=p.result;if(h)if(h.key.toString().startsWith(r)){let E=h.delete();u++,E.onerror=()=>{debugger;console.error(`${o}[deleteRequest.onerror] ${m(E.error)} (E: abc031c53e5387322cd8909b3ada9b24)`),i(E.error)},h.continue()}else re&&console.log(`${o} rmCount: ${u} (I: e4bc613a5514c0942484b79267e16724)`),s();else re&&console.log(`${o} cursor is falsy, so either we have no more records or had no records to begin with. (I: 9ff3aec6274416501a7baf6dcc5f2624)`),s()}catch(u){console.error(`${o}[openCursorRequest.onsuccess] ${m(u)}`),i(u)}}}}catch(c){debugger;console.error(`${o} ${m(c)}`),i(c)}}).finally(()=>{n&&(re&&console.log(`${o} closing db ${e}... (I: 39b4ba83de4bdfd541e3384ebab27425)`),n.close(),re&&console.log(`${o} closing db ${e} complete. (I: e4015b9436c4b2bc0ccf0e11e2037925)`)),re&&console.log(`${o} complete.`),re=a})}b(Ns,"storageRmRF");async function Ls({dbName:e,storeName:t,dirPath:r,withFileTypes:o=!1}){let a=`[${Ls.name}]`,n;try{return await new Promise((c,l)=>{let d=indexedDB.open(e);d.onerror=()=>{debugger;l(d.error)},d.onsuccess=()=>{n=d.result;let p=n.transaction(t,"readonly").objectStore(t),u=r.endsWith("/")?r:r+"/",h=IDBKeyRange.lowerBound(u),E=p.openCursor(h),g=new Set,I=[];E.onerror=()=>{debugger;console.error(`${a}[openCursorRequest.onerror] ${m(E.error)}`),l(E.error)},E.onsuccess=()=>{try{let _=E.result;if(_){let A=_.key.toString();if(A.startsWith(u)&&A!==u){let y=A.substring(u.length),G=y.split("/")[0];if(o){let T=y.substring(G.length).startsWith("/");I.push({name:G,isDirectory:b(()=>T,"isDirectory"),isFile:b(()=>!T,"isFile"),isBlockDevice:b(()=>!1,"isBlockDevice"),isCharacterDevice:b(()=>!1,"isCharacterDevice"),isSymbolicLink:b(()=>!1,"isSymbolicLink"),isFIFO:b(()=>!1,"isFIFO"),isSocket:b(()=>!1,"isSocket")})}else g.add(G);_.continue()}else A.startsWith(u)?_.continue():c(o?I:Array.from(g))}else c(o?I:Array.from(g))}catch(_){console.error(`${a}[openCursorRequest.onsuccess] ${m(_)}`),l(_)}}}})}catch(s){throw console.error(`${a} ${m(s)}`),s}finally{n&&(re&&console.log(`${a} closing db ${e}... (I: 39b4ba83de4bdfd541e3384ebab27425)`),n.close(),re&&console.log(`${a} closing db ${e} complete. (I: e4015b9436c4b2bc0ccf0e11e2037925)`))}}b(Ls,"storageReaddir");var nt=Jr;async function vs(e){let t=`[${vs.name}]`;try{nt&&console.log(`${t} starting... (I: 1905af1827a34ca8a5507fe0c5085b01)`),await no({infos:[{dbName:e.dbName,storeNames:[e.storeName,...e.additionalStoreNames??[]]}]})}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{nt&&console.log(`${t} complete.`)}}b(vs,"initIbGibStorage");function Wn(e){let t=`[${Wn.name}]`;try{nt&&console.log(`${t} starting... (I: 7be20d161bb14a498c44a42d3193bec1)`),globalThis.ibgib||(globalThis.ibgib={dbName_hack:e.dbName,apiKeyName_hack:e.apiKeyName,storeName_hack:e.storeName}),globalThis.ibgib.spaceGib||(globalThis.ibgib.spaceGib={version:vn,spaceShim:{},fnDefaultGetAPIKey:b(async()=>await Vt({dbName:e.dbName,storeName:e.storeName,key:e.apiKeyName})??"","fnDefaultGetAPIKey"),dbName_hack:e.dbName,apiKeyName_hack:e.apiKeyName,storeName_hack:e.storeName})}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{nt&&console.log(`${t} complete.`)}}b(Wn,"initIbGibGlobalThis");function Rs(e){if(!globalThis.ibgib?.spaceGib){if(!e)throw new Error("Global context not initialized and config not provided.");Wn(e)}return globalThis.ibgib.spaceGib}b(Rs,"getIbGibGlobalThis_SpaceGib");async function Cs(e){let t=`[${Cs.name}]`;try{nt&&console.log(`${t} starting... (I: 3123b18eb29b480bad056a9a029b9ad4)`),await(await import(e)).bootstrapSpaceGibApp()}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{nt&&console.log(`${t} complete.`)}}b(Cs,"dynamicallyLoadBootstrapScript");function $p(){let e=b(async()=>ke(),"fnGetMetaspace"),t=new Promise(async(r,o)=>{try{let a=1e5,n=0,s;do{if(s=Rs()?.bootstrapPromise,n++,n>a)break;await X(10)}while(s===void 0);if(!s)throw new Error("Timed out waiting for bootstrapPromise. (E: ceb3ba5261994476900e4a623c0e9d10)");await s,r()}catch(a){o(a)}});return{fnGetMetaspace:e,bootstrapPromise:t}}b($p,"getComponentCtorArg");var Ps="hash-reveal-v1",ye={hash_reveal_v1:Ps},Vn=Object.values(ye);var Us="top-up",ks="replace-all",Ms="consume",js="delete-all",J={topUp:Us,replaceAll:ks,consume:Ms,deleteAll:js},zn=Object.values(J);var Jt=class{static{b(this,"KeystoneStrategy")}config;constructor(t){this.config=t}};var Bs="recursive-salt-wrap",Jn={recursive_salt_wrap:Bs},Fs=Object.values(Jn);var Zn=!1;async function io({masterSecret:e,salt:t,rounds:r,algorithm:o=se.sha_256}){let a=`[${io.name}]`;try{Zn&&console.log(`${a} starting... (I: 850868e50aba82ff28c77da8169e4c26)`);let n=e;for(let s=0;s<r;s++)n=await fe({s:`${t}${n}${t}`,algorithm:o});return n}catch(n){throw console.error(`${a} ${m(n)}`),n}finally{Zn&&console.log(`${a} complete.`)}}b(io,"kdf_recursiveSaltWrap");var Zt=class e extends Jt{static{b(this,"KeystoneStrategy_HashRevealV1")}async derivePoolSecret({masterSecret:t}){let r=`[${e.name}.${this.derivePoolSecret.name}]`;try{let{salt:o,rounds:a,algo:n}=this.config;return await io({masterSecret:t,salt:o,rounds:a,algorithm:n})}catch(o){throw console.error(`${r} Error deriving pool secret: ${o.message}`),o}}async generateSolution({poolSecret:t,poolId:r,challengeId:o}){let a=`[${e.name}.${this.generateSolution.name}]`;try{let{rounds:n,algo:s}=this.config,i=o,c=t;for(let l=0;l<n;l++)c=await fe({s:`${i}${c}${i}`,algorithm:s});return{type:"hash-reveal-v1",poolId:r,challengeId:o,value:c}}catch(n){throw console.error(`${a} ${n.message}`),n}}async generateChallenge({solution:t}){let r=`[${e.name}.${this.generateChallenge.name}]`;try{let{rounds:o,algo:a}=this.config,{challengeId:n,value:s}=t,i=n,c=s;for(let l=0;l<o;l++)c=await fe({s:`${i}${c}${i}`,algorithm:a});return{id:n,type:"hash-reveal-v1",hash:c}}catch(o){throw console.error(`${r} ${o.message}`),o}}async validateSolution({solution:t,challenge:r}){let o=`[${e.name}.${this.validateSolution.name}]`;try{return t.type!=="hash-reveal-v1"||r.type!=="hash-reveal-v1"?(console.warn(`${o} Mismatched types provided.`),!1):(await this.generateChallenge({solution:t})).hash===r.hash}catch(a){return console.error(`${o} ${a.message}`),!1}}};var Ie=class e{static{b(this,"KeystoneStrategyFactory")}static create({config:t}){let r=`[${e.name}.create]`;try{switch(t.type){case"hash-reveal-v1":return new Zt(t);default:throw new Error(`Unknown strategy type: ${t.type} (E: 4e3c2f7129a241c1b687555e678c1065)`)}}catch(o){throw console.error(`${r} ${o.message}`),o}}};var co="keystone",lo=/^\w[\w\-.]*$/,fo=/^[a-zA-Z0-9]{1,64}$/,bo=1e3,Qt="revoke",er="manage",Hs="sign",po={REVOKE:Qt,MANAGE:er,SIGN:Hs},qp=Object.values(po);var Qn=Qt;var qs=J.topUp,Ks=se.sha_256;var ea=2e3,ta=5,ra=5,oa=16,na=J.replaceAll,aa=se.sha_512,sa=10,tr=50;var U=!1;async function uo({ibGib:e,ibGibs:t,ibGibAddr:r,ibGibAddrs:o,live:a,gotten:n,tjpAddrsAlreadyAnalyzed:s,skipAddrs:i,skipRel8nNames:c,onlyRel8nNames:l,maxRetries:d,msBetweenRetries:f,space:p,timeLogName:u,mapTjpAddrToLatestAddrsInSpace:h}){let E=`[${uo.name}]`;try{U&&console.log(`${E} starting... (I: c2a4426c22e849611ca0cedabe683a22)`);let g=await $t({ibGib:e,ibGibs:t,ibGibAddr:r,ibGibAddrs:o,live:a,gotten:n,tjpAddrsAlreadyAnalyzed:s,skipAddrs:i,skipRel8nNames:c,onlyRel8nNames:l,maxRetries:d,msBetweenRetries:f,space:p,timeLogName:u,mapTjpAddrToLatestAddrsInSpace:h});if(Object.values(g).filter(I=>I.ib.startsWith("comment ")).forEach(I=>{console.table(I)}),U){console.log(`${E} graph size: ${Object.keys(g).length} (I: c6cb5e7e1e2611d35b9006fac6503d22)`);let I=Object.values(g).filter(_=>_.ib.startsWith("comment ")||_.ib.startsWith("pic ")).map(_=>_.ib);At(I).forEach(_=>console.log(_))}return g}catch(g){throw console.error(`${E} ${g.message}`),g}finally{U&&console.log(`${E} complete.`)}}b(uo,"getDependencyGraph");async function ia({ibGib:e,ibGibs:t,ibGibAddr:r,ibGibAddrs:o,live:a,gotten:n,tjpAddrsAlreadyAnalyzed:s,skipAddrs:i,skipRel8nNames:c,onlyRel8nNames:l,maxRetries:d,msBetweenRetries:f,space:p,timeLogName:u,mapTjpAddrToLatestAddrsInSpace:h}){let E=`[${ia.name}]`;try{if(U&&console.log(`${E} starting... (I: bd6807477f679345df9dddefe0b4e922)`),!p)throw new Error("space required. (E: 9f38166ab70340cb919174f8d26af909)");if(!e&&!r&&(t??[]).length===0&&(o??[]).length===0)throw new Error("either ibGib/s or ibGibAddr/s required. (E: b6d08699651f455697f0d05a41edb039)");return c=c||[],i=i||[],n=n||{},s=s||[],o=(o??[]).filter(g=>!W({gib:N({ibGibAddr:g}).gib})).filter(g=>!i.includes(g)),t=(t??[]).filter(g=>!W({ibGib:g})).filter(g=>!i.includes($({ibGib:g}))),e&&!W({ibGib:e})&&!t.some(g=>g.gib===e.gib)&&!i.includes($({ibGib:e}))&&t.push(e),r&&!W({gib:N({ibGibAddr:r}).gib})&&!o.includes(r)&&!i.includes(r)&&o.push(r),{ibGib:e,ibGibs:t,ibGibAddr:r,ibGibAddrs:o,live:a,gotten:n,tjpAddrsAlreadyAnalyzed:s,skipAddrs:i,skipRel8nNames:c,onlyRel8nNames:l,maxRetries:d,msBetweenRetries:f,space:p,timeLogName:u,mapTjpAddrToLatestAddrsInSpace:h}}catch(g){throw console.error(`${E} ${g.message}`),g}finally{U&&console.log(`${E} complete.`)}}b(ia,"getGraphProjection_initializeOpts");async function ca({ibGibs:e,ibGibAddrs:t,gotten:r,skipAddrs:o,maxRetries:a,msBetweenRetries:n,timeLogName:s,space:i}){let c=`[${ca.name}]`;try{U&&console.log(`${c} starting... (I: 67b2be37ff24393fff56e229304da122)`);let l=[];e??=[],t??=[],o??=[],r??={};let d=[],f=Object.keys(r??{}),p=e.map(u=>$({ibGib:u}));for(let u=0;u<t.length;u++){let h=t[u];o.includes(h)||p.includes(h)||(f.includes(h)?l.push(r[h]):d.push(t[u]))}if(U&&console.log(`${c}[analyze debugging] addrsToGetFromSpace (${d.length}):
|
|
12
|
+
${d.join(`
|
|
13
|
+
`)} (I: b45a2614184b48b694becfd377c789f5)`),d.length>0){let u=d.concat(),h=0;for(a=a??0;h<=a&&u.length>0;){if(s&&h===0&&console.timeLog(s,`${c} FIRST try starting...`),s&&h>0&&console.timeLog(s,`${c} RETRY starting...`),h>0&&n&&(s&&console.timeLog(s,`${c} delaying ${n}ms for retry`),U&&console.log(`${c} retrying. addrsToGet (${u.length}): ${u} (I: 8460694cdd5518472680784c3b96a822)`),await X(n)),s&&console.timeLog(s,`${c} getFromSpace (${u?.length}) starting...`),!i)throw new Error("(UNEXPECTED) space falsy? (E: aa9f657695717034b3581066932d7d23)");let E=await q({addrs:u,space:i});if(s&&console.timeLog(s,`${c} getFromSpace complete.`),E.success&&(E.ibGibs?.length??0)>0){E.ibGibs.forEach(I=>l.push(I));let g=E.ibGibs.map(I=>$({ibGib:I}));if(g.length===u.length){s&&console.timeLog(s,`${c} got all.`),u=[];break}else s&&console.timeLog(s,`${c} got some.`),u=u.filter(I=>!g.includes(I))}else{let g=E.rawResultIbGib.ibGibs??[];if(g.length>0){g.forEach(_=>l.push(_));let I=g.map(_=>$({ibGib:_}));s&&console.timeLog(s,`${c} got some.`),u=u.filter(_=>!I.includes(_))}else s&&console.timeLog(s,`${c} failed. addrs: ${u?.join(",")}`)}h++}if(u?.length>0)throw new Error(`unable to retrieve dependency ibgibs from space (ib: ${i?.ib}). addrsToGet: ${u.join(`
|
|
14
|
+
`)} (E: 8413594b6c1b447988781cf3f3e1729d)`)}return l}catch(l){throw console.error(`${c} ${l.message}`),l}finally{U&&console.log(`${c} complete.`)}}b(ca,"getGraphProjection_getIbGibsInIbGibAddrs");async function $t(e){let t=`[${$t.name}]`;try{if(U&&console.log(`${t} starting... (I: 70508d7a5c63eae1f22ae851b32b3d22)`),!e.ibGib&&!e.ibGibAddr&&(e.ibGibs??[]).length===0&&(e.ibGibAddrs??[]).length===0)return{};let{ibGibs:r,ibGibAddrs:o,live:a,gotten:n,tjpAddrsAlreadyAnalyzed:s,skipAddrs:i,skipRel8nNames:c,onlyRel8nNames:l,maxRetries:d,msBetweenRetries:f,space:p,timeLogName:u,mapTjpAddrToLatestAddrsInSpace:h}=await ia(e);if(u&&console.timeLog(u,`${t} starting...`),o?.length??!1){let g=await ca({ibGibs:r,ibGibAddrs:o,gotten:n,skipAddrs:i,maxRetries:d,msBetweenRetries:f,timeLogName:u,space:p});r=r?[...r,...g]:[...g]}o=r.map(g=>$({ibGib:g}));let E=At(r.map(g=>g.ib).filter(g=>g.startsWith("comment ")));return U&&console.log(`${t}[analyze debugging] ibGibs commentIbs: ${E.join(`
|
|
15
|
+
`)} (I: c89dc951315f746954f9bddbe8941122)`),a?la({ibGibs:r,ibGibAddrs:o,gotten:n,tjpAddrsAlreadyAnalyzed:s,skipAddrs:i,skipRel8nNames:c,onlyRel8nNames:l,maxRetries:d,msBetweenRetries:f,space:p,timeLogName:u,mapTjpAddrToLatestAddrsInSpace:h}):da({ibGibs:r,ibGibAddrs:o,gotten:n,skipAddrs:i,skipRel8nNames:c,onlyRel8nNames:l,maxRetries:d,msBetweenRetries:f,space:p,timeLogName:u})}catch(r){throw console.error(`${t} ${r.message}`),r}finally{U&&console.log(`${t} complete.`)}}b($t,"getGraphProjection");async function la({ibGibs:e,ibGibAddrs:t,gotten:r,tjpAddrsAlreadyAnalyzed:o,mapTjpAddrToLatestAddrsInSpace:a,skipAddrs:n,skipRel8nNames:s,onlyRel8nNames:i,maxRetries:c,msBetweenRetries:l,space:d,timeLogName:f}){let p=`[${la.name}]`;try{a=a??{},o=o??[];let u={...r};(e??[]).forEach(A=>u[$({ibGib:A})]=A);let h=mt({ibGibs:Object.values(u)});U&&console.log(`${p}[analyze debugging] timeline tjps(${Object.keys(h).length}): ${Object.keys(h)} (I: 509f04ac15ca08c5a3f0777b48934622)`);let E={};Object.keys(h).forEach(A=>{o.includes(A)||(E[A]=h[A])}),U&&console.log(`${p}[analyze debugging] timelinesNotAnalyzed: ${F(E)} (I: a4b67d95fdd6b98d3241c0a7d0a93c22)`);let g={},I={};Object.keys(h).filter(A=>!o.includes(A)).forEach(A=>{let y=h[A],G=y[y.length-1];g[A]=G;let T=$({ibGib:G});I[T]=A});let _=Object.keys(g).length;if(_>0){let A={};Object.keys(a).filter(O=>!o.includes(O)).forEach(O=>{let pe=g[O];if(pe){let Re=$({ibGib:pe});A[Re]=a[O]}else console.error(`${p} latestIbGibCorrespondingToTjpAddr is falsy`)}),U&&console.log(`${p} latestAddrsMap *before* getLatestAddrs: ${F(A)} (I: 427b4bb78595e9e521ecf2c5e5c80722)`);let y=Object.values(g),G={};if(y.length>0){if(!d)throw new Error("(UNEXPECTED) space falsy? (E: 8e878975e3561df9a8dc4c628b0abc23)");let O=await qe({ibGibs:y,space:d});if(!O?.data?.latestAddrsMap)throw new Error("(UNEXPECTED) getLatestAddrs result latestAddrsMap falsy (E: 088caa1fc95fd3b079108ab63ef33422)");if(G=O?.data?.latestAddrsMap,Object.keys(G).length!==_)throw new Error("(UNEXPECTED) latestAddrsMap is not the same size as the incoming map (E: 666af512bbd44534983bb28ee8d43fed)");U&&console.log(`${p} queriedLatestAddrsMap: ${F(G)} (I: 7b39a5f7ce9e9d9fabae4be98ed44522)`),A={...G,...A}}U&&console.log(`${p} combined latestAddrsMap: ${F(A)} (I: e3aedea63f29c5b06a79632f691aa522)`);let T=[],S={};Object.values(g).forEach(O=>{let pe=$({ibGib:O}),Re=I[pe],st=A[pe];if(!st)throw new Error("(UNEXPECTED) latestAddrInSpace not found in latestAddrsMap (E: 095d2b3f88e3e8a2c3e7d3de4c6d5622)");st===pe?(U&&console.log(`${p} analyzed ${Re}(I: afb7960900f04b8a87538f4c7bd903b7)`),o.push(Re)):(T.push(st),S[st]=Re)});let ae=[];for(let O=0;O<(e??[]).length;O++){let Re=e[O].rel8ns??{};Object.keys(Re).filter(it=>!(s??[]).includes(it)).filter(it=>i?i.includes(it):!0).forEach(it=>{(Re[it]??[]).forEach(lr=>{!ae.includes(lr)&&!e.some(ma=>$({ibGib:ma})===lr)&&ae.push(lr)})})}return t=At([...t??[],...ae,...T]),await $t({ibGibs:e,ibGibAddrs:t,gotten:r,tjpAddrsAlreadyAnalyzed:o,skipAddrs:n,skipRel8nNames:s,onlyRel8nNames:i,maxRetries:c,msBetweenRetries:l,space:d,timeLogName:f,live:!0,mapTjpAddrToLatestAddrsInSpace:a})}else return e||(e=[]),Object.values(r??{}).forEach(A=>{let y=$({ibGib:A});e.some(G=>$({ibGib:A})===y)||e.push(A)}),await $t({ibGibs:e,ibGibAddrs:t,gotten:r,skipAddrs:n,skipRel8nNames:s,onlyRel8nNames:i,maxRetries:c,msBetweenRetries:l,space:d,timeLogName:f,live:!1})}catch(u){let h=`${p} ${u.message}`;throw console.error(h),f&&console.timeLog(f,`${p} error: ${h}`),u}finally{f&&console.timeLog(f,`${p} complete.`)}}b(la,"getGraphProjection_Live");async function da({ibGibs:e,ibGibAddrs:t,gotten:r,skipAddrs:o,skipRel8nNames:a,onlyRel8nNames:n,maxRetries:s,msBetweenRetries:i,space:c,timeLogName:l}){let d=`[${da.name}]`;try{let f=[];e??=[],r??={},o??=[],a??=[],l&&console.timeLog(l,`${d} analyzing next step starting...`);for(let p=0;p<e.length;p++){let u=e[p],h=$({ibGib:u}),{gib:E}=N({ibGib:u});if(E===D)throw new Error("cannot get dependency graph of primitive.");Object.keys(r).includes(h)||(r[h]=u);let g={},I=u.rel8ns||{},_=(Object.keys(I)||[]).filter(y=>!a.includes(y));n&&(_=_.filter(y=>n.includes(y)));let A=Object.keys(r);for(let y=0;y<_.length;y++){let G=_[y],T=I[G]??[],S=T.filter(O=>O===""||O===void 0||O===null||!O.includes(k));S.length>0&&console.warn(`${d} (UNEXPECTED) has falsyAddrs: ${S} (W: da9505cb0a4db68a4aff7f279ad2d322)`),T.filter(O=>!!O).filter(O=>!A.includes(O)).filter(O=>!o.includes(O)).filter(O=>N({ibGibAddr:O}).gib!==D).filter(O=>!f.includes(O)).forEach(O=>{let pe=lt({addr:O});(pe||[]).length===0?f.push(O):g[O]=pe})}if(Object.keys(g).length>0)throw new Error(`invalid addresses found in dependency graph. Errors (clipped to 1kB): ${JSON.stringify(g).substring(0,1024)}`)}if(l&&console.timeLog(l,`${d} analyzing next step complete.`),f.length>0){if(l&&console.timeLog(l,`${d} get addrsWeDontHaveAlready_Rel8dAddrs starting...`),!c)throw new Error("(UNEXPECTED) space falsy? (E: 0ce327cf5d521bd798340333460f3423)");let p=await q({addrs:f,space:c});if(l&&console.timeLog(l,`${d} get addrsWeDontHaveAlready_Rel8dAddrs complete.`),p.success)if(p.ibGibs?.length===f.length){U&&console.log(`${d} got ALL of them (happy path)`),p.ibGibs.forEach(h=>r[$({ibGib:h})]=h),l&&console.timeLog(l,`${d} call getGraphProjection recursively starting...`);let u=await $t({ibGibs:p.ibGibs,live:!1,gotten:r,skipAddrs:o,skipRel8nNames:a,onlyRel8nNames:n,maxRetries:s,msBetweenRetries:i,space:c});return l&&console.timeLog(l,`${d} call getGraphProjection recursively complete.`),u}else throw(p.ibGibs?.length??0)>0&&p.ibGibs.length<f.length?(U&&console.warn(`${d} got SOME of them (happy-ish path?). not sure what to do here... (W: e3458f61a1ae4979af9e6b18ac935c14)`),new Error("trouble getting dependency ibgibs (E: 8156bf65fd084ae4a4e8a0669db28b07)")):(p.ibGibs?.length??!1)&&p.ibGibs.length>f.length?new Error("(UNEXPECTED) got more ibGibs than addrs that we asked for. space not working properly. (E: 352219b3d18543bcbda957f2d60b78f3)"):new Error("couldn't get dependency ibgibs from space. (E: 225f26b7d7f84911bb033753a062209b)");else throw new Error(`failure getting addrs in space ${c?.data?.name||"[no name?]"} (id: ${c?.data?.uuid||"[no uuid?]"}). (E: 60404e6e389249d9bbecf0039cd51878) addrs:
|
|
16
|
+
${f.join(`
|
|
17
|
+
`)} `)}else return r}catch(f){let p=`${d} ${f.message}`;throw console.error(p),l&&console.timeLog(l,`${d} error: ${p}`),f}finally{l&&console.timeLog(l,`${d} complete.`)}}b(da,"getGraphProjection_NonLive");var B=!1;async function fa({keystoneData:e}){let t=`[${fa.name}]`;try{return B&&console.log(`${t} starting... (I: c3022a146faac9730154f34d1439a225)`),[co].join(" ")}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{B&&console.log(`${t} complete.`)}}b(fa,"getKeystoneIb");function ba({pool:e,requiredChallengeIds:t,targetAddr:r}){let o=e.config.behavior,a=new Set,n=Object.keys(e.challenges);if(t&&t.length>0){for(let s of t){if(!e.challenges[s])throw new Error(`(UNEXPECTED) Required challenge ID not found in pool: ${s} (E: 10c5619d80d8cf6cc84ffbf8be0dbc25)`);n.includes(s)&&a.add(s)}n=n.filter(s=>!a.has(s))}if(o.targetBindingChars>0&&r){let{gib:s}=N({ibGibAddr:r});if(s){let i=s!==D?s.substring(0,o.targetBindingChars).toLowerCase():"abc";for(let c of i){let d=(e.bindingMap[c]||[]).find(f=>n.includes(f));if(!d)throw new Error(`Entropy Exhaustion. Cannot satisfy binding for char '${c}'. (E: 341b95dc3a58be3e083d1d9c4a0c4925)`);a.add(d),n=n.filter(f=>f!==d)}}}if(o.selectSequentially>0){if(n.length<o.selectSequentially)throw console.error(`[getDeterministicRequirements] Entropy Exhaustion! AvailableCount: ${n.length}, Required Seq: ${o.selectSequentially}. Available IDs: ${n.join(",")}`),new Error("Entropy Exhaustion. Insufficient challenges for FIFO requirement. (E: 9efa88003e1d5eccb837c85154ee5625)");n.slice(0,o.selectSequentially).forEach(i=>a.add(i)),n=n.slice(o.selectSequentially)}return{mandatoryIds:a,availableIds:n}}b(ba,"getDeterministicRequirements");function rr(e,t){let r=t.charAt(0).toLowerCase();if(/[0-9a-f]/.test(r))e[r]||(e[r]=[]),e[r].push(t);else throw new Error(`invalid challengeId (${t}). Must start with a hex character. (E: c96ed8460de89e28c801370a0f07f826)`)}b(rr,"addToBindingMap");function Ys(e,t){for(let r of Object.keys(e))e[r]=e[r].filter(o=>o!==t)}b(Ys,"removeFromBindingMap");function nr({pools:e,poolId:t,poolFilter:r,verb:o}){let a="[resolveTargetPool]";try{let n;if(t){if(n=e.find(s=>s.id===t),!n)throw new Error(`Pool not found with ID: ${t} (E: 4a2b17428515c1e82813158581898125)`)}else if(r){let s=e.filter(r);if(s.length===0)throw new Error("No pool matched the provided filter. (E: 5b3c27428515c1e82813158581898125)");n=s[0]}else{if(!o)throw new Error("Cannot auto-resolve pool without a verb. (E: 6c4d37428515c1e82813158581898125)");if(n=e.find(s=>s.config.allowedVerbs&&s.config.allowedVerbs.includes(o)),n||(n=e.find(s=>!s.config.allowedVerbs||s.config.allowedVerbs.length===0)),!n)throw new Error(`No suitable pool found for verb: ${o} (E: 7d5e47428515c1e82813158581898125)`)}if(o&&n.config.allowedVerbs&&n.config.allowedVerbs.length>0&&!n.config.allowedVerbs.includes(o))throw new Error(`Pool ${n.id} is not authorized for verb: ${o} (E: 8e6f57428515c1e82813158581898125)`);return n}catch(n){throw console.error(`${a} ${m(n)}`),n}}b(nr,"resolveTargetPool");function ar({pool:e,targetAddr:t,requiredChallengeIds:r}){let o="[selectChallengeIds]";try{let{mandatoryIds:a,availableIds:n}=ba({pool:e,requiredChallengeIds:r,targetAddr:t}),s=e.config.behavior.selectRandomly,i=[];if(s>0){if(n.length<s)throw new Error(`Insufficient challenges for random requirement. Need ${s}, have ${n.length} (E: 9f7a67428515c1e82813158581898125)`);let c=[...n].sort(()=>.5-Math.random());i.push(...c.slice(0,s))}return[...a,...i]}catch(a){throw console.error(`${o} ${m(a)}`),a}}b(ar,"selectChallengeIds");async function or({salt:e,timestamp:t,index:r}){return(await fe({s:`${e}${t}${r}`})).substring(0,16)}b(or,"generateOpaqueChallengeId");async function Xs({prevPools:e,targetPoolId:t,consumedIds:r,masterSecret:o,strategy:a,config:n}){let s="[applyReplenishmentStrategy]";try{let i=JSON.parse(JSON.stringify(e)),c=i.findIndex(u=>u.id===t);if(c===-1)throw new Error(`Target pool ${t} not found in keystone data. (E: 75200388d22744838634524233772545)`);let l=i[c],d=await a.derivePoolSecret({masterSecret:o}),f=Date.now().toString(),p=n.behavior.replenish;if(r.forEach(u=>{l.bindingMap&&Ys(l.bindingMap,u)}),p===J.topUp){r.forEach(u=>delete l.challenges[u]);for(let u=0;u<r.length;u++){let h=await or({salt:n.salt,timestamp:f,index:u}),E=await a.generateSolution({poolSecret:d,poolId:l.id,challengeId:h});l.challenges[h]=await a.generateChallenge({solution:E}),l.bindingMap||(l.bindingMap={}),rr(l.bindingMap,h)}}else if(p===J.replaceAll){l.challenges={},l.bindingMap={};for(let u=0;u<n.behavior.size;u++){let h=await or({salt:n.salt,timestamp:f,index:u}),E=await a.generateSolution({poolSecret:d,poolId:l.id,challengeId:h});l.challenges[h]=await a.generateChallenge({solution:E}),rr(l.bindingMap,h)}}else if(p===J.consume)r.forEach(u=>delete l.challenges[u]);else if(p===J.deleteAll)l.challenges={},l.bindingMap={};else throw new Error(`Unknown replenish strategy: ${p}. Valid list: ${F(zn)} (E: 0acf56f1e1486240080e11e8046d0825)`);return i}catch(i){throw console.error(`${s} ${m(i)}`),i}}b(Xs,"applyReplenishmentStrategy");async function sr({targetPoolId:e,prevPools:t,masterSecret:r,challengeIds:o,claim:a,requiredChallengeIds:n}){let s="[solveAndReplenish]";try{B&&console.log(`${s} starting... poolId: ${e}, ids: ${o.length}`);let i=t.find(u=>u.id===e);if(!i)throw new Error(`Target pool not found: ${e} (E: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6)`);let c=Ie.create({config:i.config}),l=await c.derivePoolSecret({masterSecret:r}),d=[];for(let u of o){let h=await c.generateSolution({poolSecret:l,poolId:i.id,challengeId:u});d.push(h)}let f={claim:a,solutions:d,requiredChallengeIds:n&&n.length>0?n:void 0},p=await Xs({prevPools:t,targetPoolId:i.id,consumedIds:o,masterSecret:r,strategy:c,config:i.config});return{proof:f,nextPools:p}}catch(i){throw console.error(`${s} ${m(i)}`),i}}b(sr,"solveAndReplenish");async function pa({pool:e}){let t=`[${pa.name}]`;try{if(B&&console.log(`${t} starting... (I: e2ffd568b698cc12d8c5e838d73ae726)`),!e.config)throw new Error("(UNEXPECTED) pool.configy falsy? (E: fcde88fe20e8004a58d7e445436bf526)");if(e.config.type!==ye.hash_reveal_v1)throw new Error("(UNEXPECTED) pool.config.type !== KeystoneChallengeType.hash_reveal_v1? (E: e205f8872909c37168a624a9df778c26)");let r=[],{algo:o,rounds:a,salt:n}=e.config,s=[se.sha_256];return o?s.includes(o)||r.push(`${t} invalid hash algorithm (${o}). Must be one of ${s}. (E: a22399ca3a68e63ffcc7507699be5826)`):r.push(`${t} algorithm required. (E: 8cd6bfb0590862b9bae24d98d2cf3826)`),a&&typeof a=="number"&&Number.isInteger(a)?a>bo&&r.push(`${t} rounds too high. max rounds: ${bo} (E: 31ce082f7fd88d6b58ef08a816458826)`):r.push(`${t} invalid rounds (${a}). must be positive integer. (E: 73c643ccda78afaf28d52a6871a9e826)`),n&&typeof n=="string"?fo.test(n)||r.push(`${t} invalid salt (${n.substring(0,99)}). Must match regexp ${fo}`):r.push(`${t} invalid salt (${n}). must be truthy string value. (E: 564a4844ec88fc1988197ce89c381426)`),r}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{B&&console.log(`${t} complete.`)}}b(pa,"validateChallengePool_typeHashRevealV1");async function ua({pool:e}){let t=`[${ua.name}]`;try{B&&console.log(`${t} starting... (I: 1a0eafc158a83d1ba8fc019d5c979a26)`);let r=[];if(e.config){if(e.config.id?lo.test(e.config.id)||r.push(`${t} pool.config.id is not formatted correctly. must pass regexp: ${lo.source}`):r.push(`${t} pool.config.id falsy (E: 31d7943d95f877326d5f4ea14463d626)`),e.config.behavior){let{size:a}=e.config.behavior;(!a||a===0)&&r.push(`${t} invalid pool.config.behavior.size (${a}). Must be positive integer. (E: b221e36ec102bdc944552248ce8fe626)`)}else r.push(`${t} pool.config.behavior falsy (E: bede081c066c39732eefe2f92e296326)`);let o=e.config.type;switch(o){case ye.hash_reveal_v1:(await pa({pool:e})).forEach(n=>r.push(n));break;default:throw new Error(`(UNEXPECTED) unknown pool.config.type (${o})? We only implement the following at this time: ${Vn} (E: cce5285cf7580b8bc82172488eba2826)`)}}else r.push(`${t} pool.config falsy. (E: 8d05c875a1d2c58018a5eaf803977d26)`);return r}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{B&&console.log(`${t} complete.`)}}b(ua,"validateChallengePool");async function ir({keystoneIbGib:e}){let t=`[${ir.name}]`;try{B&&console.log(`${t} starting... (I: ec6ba82ec848b5ac3d8953e89d8d9826)`);let r=[],{data:o,rel8ns:a}=e;o.proofs&&o.proofs.length>0&&r.push(`${t} proofs already exist on genesis keystone. (E: 7a5e15f20918f1bbd8ffb62857dcd526)`);for(let n of o.challengePools)(await ua({pool:n})).forEach(i=>r.push(i)),(!n.challenges||Object.keys(n.challenges).length===0)&&r.push(`${t} invalid pool (${n.id}). pool.challenges is falsy/empty. (E: 8cd16a5416ae62a058342828be465b26)`);return o.revocationInfo&&r.push(`${t} genesis keystone already has revocationInfo. (E: e11408d0c558d0fa948efbce611ec826)`),r}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{B&&console.log(`${t} complete.`)}}b(ir,"validateGenesisKeystone");async function yt({currentIbGib:e,prevIbGib:t}){let r=`[${yt.name}]`,o=[];try{if(!e)throw new Error("(UNEXPECTED) currentIbGib falsy? (E: 3c0f02655fa8279e386a079ebb604b25)");if(!t)throw new Error("(UNEXPECTED) prevIbGib falsy? (E: 0d07c812634d839c784f31b8848ba825)");let a=await ee({ibGib:e});a&&a.length>0&&o.push(...a);let n=e.data,s=t.data,i=n.n??-2,c=s.n??-2;i<0&&o.push("invalid keystone.currData.n is undefined or null."),c<0&&o.push("invalid keystone.prevData.n is undefined or null."),i!==c+1&&o.push(`keystone data.n values are not sequential. prevData.n: ${c}, currData.n: ${i}. `);for(let l of n.proofs){if(l.solutions.length===0){o.push(`Proof ${l.id||"unknown"} has no solutions.`);continue}let d=l.solutions[0].poolId,f=s.challengePools.find(p=>p.id===d);if(!f){o.push(`Proof references unknown pool: ${d}`);continue}await ha({proof:l,pool:f,errors:o})}if(n.revocationInfo){let l=n.revocationInfo.proof.claim.target,d=$({ibGib:t});l!==d&&o.push(`Revocation target mismatch. Expected ${d}, got ${l}`)}return o}catch(a){throw console.error(`${r} ${m(a)}`),a}finally{B&&console.log(`${r} complete.`)}}b(yt,"validateKeystoneTransition");async function ha({proof:e,pool:t,errors:r}){let o=`[${ha.name}]`;try{B&&console.log(`${o} starting... (I: b8f9b6085888eea2258bf579ecd5e825)`),t.config.allowedVerbs&&t.config.allowedVerbs.length>0&&(!e.claim.verb||!t.config.allowedVerbs.includes(e.claim.verb))&&r.push(`Policy Violation: Pool ${t.id} used for unauthorized verb ${e.claim.verb}`);let{mandatoryIds:a,availableIds:n}=ba({pool:t,requiredChallengeIds:e.requiredChallengeIds,targetAddr:e.claim.target}),s=new Set(e.solutions.map(d=>d.challengeId));for(let d of a)s.has(d)||r.push(`Policy Violation: Missing mandatory challenge ${d}`);let i=[...s].filter(d=>!a.has(d)),c=t.config.behavior.selectRandomly;i.length<c&&r.push(`Policy Violation: Insufficient random count. Need ${c}, got ${i.length}`);for(let d of i)n.includes(d)||r.push(`Policy Violation: ID ${d} is invalid or double-dipped.`);let l=Ie.create({config:t.config});for(let d of e.solutions){let f=t.challenges[d.challengeId];f?await l.validateSolution({solution:d,challenge:f})||r.push(`Crypto Violation: Solution for ${d.challengeId} is invalid.`):r.push(`Crypto Violation: Challenge ${d.challengeId} not found in pool.`)}}catch(a){throw console.error(`${o} ${m(a)}`),a}finally{B&&console.log(`${o} complete.`)}}b(ha,"verifyProofAgainstPool");async function It({prevIbGib:e,newData:t,metaspace:r,space:o}){let a=`[${It.name}]`;try{if(B&&console.log(`${a} starting... (I: 8b10e8920f08b7842803665834cf8925)`),!e.data)throw new Error("(UNEXPECTED) prevIbGib.data falsy? (E: 5e84875bf992c585b979e6c8ed5bf225)");if(e.data.revocationInfo)throw new Error(`Keystone has already been revoked (prevIbGib.data.revocationInfo truthy), so we cannot evolve the keystone. Keystone addr: ${$({ibGib:e})} (E: 45d7f846556829de6b2a701838c3f825)`);let n=e.data,s={};n.proofs&&(s.proofs=[]),n.challengePools&&(s.challengePools=[]),n.frameDetails&&(s.frameDetails={}),n.checkpointDetails&&(s.checkpointDetails={}),Object.keys(s).length===0&&(s=void 0);let i=await Je({src:e,dataToRemove:s,dataToAddOrPatch:t,nCounter:!0});if(i.intermediateIbGibs)throw new Error("(UNEXPECTED) resMut8.intermediateIbGibs truthy? I'm not sure if we expect there to be intermediateIbGibs, but I feel like we shouldn't. Pretty sure we shouldn't, definitely don't *want* them. (E: ba40d55d7c2d36d438c413886f148625)");if(i.dnas)throw new Error("(UNEXPECTED) resMut8.dnas truthy? We do not want dnas with keystones. (E: 49470513d018f97d28024f4e82da3b25)");let c=i.newIbGib,l=await yt({currentIbGib:c,prevIbGib:e});if(l.length>0)throw console.error(`${a} Validation Failed:
|
|
18
|
+
${l.join(`
|
|
19
|
+
`)}`),new Error(`(UNEXPECTED) invalid keystone after we just evolved it? Errors: ${l.join("; ")} (E: ae2c58406c1db7687879dfb89fc1f825)`);return await r.put({ibGib:c,space:o}),await r.registerNewIbGib({ibGib:c,space:o}),c}catch(n){throw console.error(`${a} ${m(n)}`),n}finally{B&&console.log(`${a} complete.`)}}b(It,"evolvePersistAndRegisterKeystone");async function ho({data:e,metaspace:t,space:r}){let o=`[${ho.name}]`;try{if(B&&console.log(`${o} starting... (I: 5e32389700e9899e788cbefacef7c825)`),r??=await t.getLocalUserSpace({lock:!1}),!r)throw new Error("(UNEXPECTED) space was falsy and we couldn't get default local user space from metaspace? (E: 9a6498cf16a8801f19ec376749742225)");let n=(await j.firstGen({parentIbGib:j.primitive({ib:co}),ib:await fa({keystoneData:e}),data:e,dna:!1,nCounter:!0,tjp:{timestamp:!0,uuid:!0}})).newIbGib;if(!n.data)throw new Error("(UNEXPECTED) keystoneIbGib.data falsy? We expect the data to be populated with real keystone data. (E: 38a358facdb89d16d81d48c8520d3d25)");if(!n.rel8ns)throw new Error("(UNEXPECTED) keystoneIbGib.rel8ns falsy? we expect the rel8ns to have ancestor and past. (E: 20cb7723dc33ae1ef808fe76d1bf4b25)");if(!n.rel8ns.past||n.rel8ns.past.length===0)throw new Error("(UNEXPECTED) keystoneIbGib.rel8ns.past falsy or empty? we expect the firstGen call to generate an interstitial ibgib that we will splice out. (E: 0fd8388d045ab9f37834c27d67e78825)");return n.data.n=0,n.data.isTjp=!0,delete n.rel8ns.tjp,delete n.rel8ns.past,n.gib=await M({ibGib:n}),await t.put({ibGib:n,space:r}),await t.registerNewIbGib({ibGib:n,space:r}),n}catch(a){throw console.error(`${o} ${m(a)}`),a}finally{B&&console.log(`${o} complete.`)}}b(ho,"createKeystoneIbGibImpl");async function go({keystoneIbGib:e,dependencyGraph:t,getLatest:r,invalidIfMoreRecentKeystoneFoundInSpace:o,space:a}){let n=`[${go.name}]`;try{if(B&&console.log(`${n} starting... (I: 22e1ca1d5a08a3f90b7fe9da95df7b26)`),!e)throw new Error("(UNEXPECTED) keystoneIbGib falsy? (E: 26482871d529fff6e8899c5d8a6c3826)");let s=[];if(r){let f=$({ibGib:e}),p=await qe({ibGibs:[e],space:a});if(!p.data)throw new Error("(UNEXPECTED) resGetLatestAddrs.data falsy? (E: 3a23b3b420a8da1928219ca8d47b2126)");if(!p.data.latestAddrsMap)throw new Error("(UNEXPECTED) resGetLatestAddrs.data.latestAddrsMap falsy? (E: 93f1180598fb65a4b8d36e08d6c50426)");let{latestAddrsMap:u}=p.data;if(Object.keys(u).length===0)throw new Error("(UNEXPECTED) latestAddrsMap truthy but empty? (E: 7142f8f7625b9186281d08251e407826)");let h=u[f];if(h)if(h!==f)if(o)s.push(`${n} more recent keystone (${h}) found than the one passed in (${f}) in space (${a.ib}). (E: 64bf48de9448ee5c7528bf03bed2a826)`);else{let[E]=await zr({addrs:[h],space:a});e=E}else B&&console.log(`${n} incoming keystone (${f}) is the latest in the space (${a.ib}) (I: 8ffbd8d6cbc8a461e5e7f1084bd22a26)`);else console.warn(`${n} keystoneIbGib (${f}) not found in space (${a.ib}). I don't know what the implications of this are. (W: 258c88742448db34a585669484771826)`)}t??=await uo({ibGib:e,space:a});let i=Object.values(t),{mapWithTjp_NoDna:c,mapWithTjp_YesDna:l,mapWithoutTjps:d}=Yt({ibGibs:i});if(Object.keys(l).length>0&&s.push(`${n} DNA found. Keystones should NOT have DNA. (E: a3ec7827c4284cdea61c2372c0615826)`),Object.keys(d).length>0&&s.push(`${n} Non-tjp ibgibs found? Keystones are expected to have tjps. (E: a3ec7827c4284cdea61c2372c0615826)`),Object.keys(c).length>0){let f=Object.values(c),p=mt({ibGibs:f}),u=Object.keys(p);if(u.length===0)throw new Error("(UNEXPECTED) orderedKeystonesMap empty? (E: d437b80bef58e83a034b28af46278726)");if(u.length>1)throw new Error("(UNEXPECTED) more than one timeline in keystone graph? ATOW (02/19/2026) we are expecting only a single timeline. (E: 66085b14e3887a59c872afd240511f26)");let h=u[0],E=p[h];if(E.length===0)throw new Error("(UNEXPECTED) empty keystoneIbGibs_ordered? (E: 4a6b085aa8a76828a8d65367e7e56526)");if((await ir({keystoneIbGib:E[0]})).forEach(I=>s.push(I)),E.length!==1)for(let I=0;I<E.length-1;I++){let _=E[I],A=E[I+1],y=await yt({prevIbGib:_,currentIbGib:A});y.length>0&&(s.push(`${n} keystone has ${y.length} transition errors. i: ${I}. prevIbGib addr: ${$({ibGib:_})}. currentIbGib addr: ${$({ibGib:A})}. (E: 3ac17be916141d0c286ca5a87bb1b426)`),y.forEach(G=>s.push(G)));break}}else if(s.length===0)throw new Error("(UNEXPECTED) mapWithTjp_NoDna empty (which is an error) but errors.length === 0? If we get here, we expect one of the other errors to have been populated. (E: 7bca2866b6f8fca318923de8c88e8826)");return s}catch(s){throw console.error(`${n} ${m(s)}`),s}finally{B&&console.log(`${n} complete.`)}}b(go,"validateKeystoneGraph");var oe=!1,Xe=class e{static{b(this,"KeystoneService_V1")}lc=`[${e.name}]`;async genesis({masterSecret:t,frameDetails:r,configs:o,metaspace:a,space:n}){let s=`${this.lc}[${this.genesis.name}]`;try{oe&&console.log(`${s} starting... (I: c98ae8adbc5888dbf84c5aced7610b25)`);let i=[];for(let d of o){let f=Ie.create({config:d}),p=await f.derivePoolSecret({masterSecret:t}),u={},h={},E=d.behavior.size,g=Date.now().toString();for(let I=0;I<E;I++){let _=await or({salt:d.salt,timestamp:g,index:I}),A=await f.generateSolution({poolSecret:p,poolId:d.id,challengeId:_}),y=await f.generateChallenge({solution:A});u[_]=y,rr(h,_)}i.push({id:d.id,config:d,challenges:u,bindingMap:h})}if(i.length===0)throw new Error("No challenge pools created. (E: 38e538530996940e1f16a8b199995825)");let c={challengePools:i,proofs:[]};return r&&(c.frameDetails=r),await ho({data:c,metaspace:a,space:n})}catch(i){throw console.error(`${s} ${m(i)}`),i}finally{oe&&console.log(`${s} complete.`)}}async sign({latestKeystone:t,masterSecret:r,claim:o,poolId:a,poolFilter:n,requiredChallengeIds:s=[],frameDetails:i,metaspace:c,space:l}){let d=`${this.lc}[${this.sign.name}]`;try{oe&&console.log(`${d} starting...`);let f=t.data;if(f.revocationInfo)throw new Error("Keystone has been revoked. Cannot sign. (E: 4f2198c39116d15c48ba191940316825)");let p=nr({pools:f.challengePools,poolId:a,poolFilter:n,verb:o.verb});oe&&console.log(`${d} Selected pool: ${p.id} (size: ${Object.keys(p.challenges).length}) (I: 6b26d6f4aad18380f2b3a0989b592826)`);let u=ar({pool:p,targetAddr:o.target,requiredChallengeIds:s}),{proof:h,nextPools:E}=await sr({targetPoolId:p.id,prevPools:f.challengePools,masterSecret:r,challengeIds:u,claim:o,requiredChallengeIds:s}),g=(f.n??0)+1,I;if(g%tr===0){let y={...t,data:{...f,frameDetails:i}};I=await this.getAggregateDetails({latestKeystone:y,metaspace:c,space:l})}return await It({prevIbGib:t,newData:{challengePools:E,proofs:[h],frameDetails:i,checkpointDetails:I},metaspace:c,space:l})}catch(f){throw console.error(`${d} ${m(f)}`),f}finally{oe&&console.log(`${d} complete.`)}}async validate({currentIbGib:t,prevIbGib:r}){return await yt({currentIbGib:t,prevIbGib:r})}async validateGenesisKeystone({keystoneIbGib:t}){return await ir({keystoneIbGib:t})}async getLatestKeystone({addr:t,metaspace:r,space:o}){let a=`${this.lc}[${this.getLatestKeystone.name}]`;try{oe&&console.log(`${a} starting...`);let n=await r.getLatestAddr({tjpAddr:t,space:o});if(!n)throw new Error(`could not find latest addr for ${t}`);let s=await r.get({addr:n,space:o});if(s.success&&s.ibGibs&&s.ibGibs.length>0)return s.ibGibs[0];{let c=s.rawResultIbGib?.data?.addrsNotFound??"unknown";throw new Error(`couldn't find latest keystone at ${n}. addrsNotFound: ${c}? resGet.errorMsg: ${s.errorMsg}`)}}catch(n){throw console.error(`${a} ${m(n)}`),n}finally{oe&&console.log(`${a} complete.`)}}async validateKeystoneGraph({keystoneIbGib:t,dependencyGraph:r,getLatest:o,invalidIfMoreRecentKeystoneFoundInSpace:a,space:n}){let s=`${this.lc}[${this.validateKeystoneGraph.name}]`;try{return oe&&console.log(`${s} starting... (I: 01c5cd455038c270cbf1effc1704af26)`),await go({keystoneIbGib:t,dependencyGraph:r,getLatest:o,invalidIfMoreRecentKeystoneFoundInSpace:a,space:n})}catch(i){throw console.error(`${s} ${m(i)}`),i}finally{oe&&console.log(`${s} complete.`)}}async revoke({latestKeystone:t,masterSecret:r,reason:o="User initiated revocation",frameDetails:a,metaspace:n,space:s}){let i=`${this.lc}[${this.revoke.name}]`;try{oe&&console.log(`${i} starting...`);let c=t.data,l=nr({pools:c.challengePools,poolId:Qn}),d={verb:Qt,target:$({ibGib:t})},f=ar({pool:l,targetAddr:d.target,requiredChallengeIds:[]});if(f.length===0)throw new Error(`Revocation policy selected 0 challenges? Check config for pool ${l.id}. Revocation requires proof. (E: 97e5a8356d241ae7b882db791cb1f825)`);let{proof:p,nextPools:u}=await sr({targetPoolId:l.id,prevPools:c.challengePools,masterSecret:r,challengeIds:f,claim:d,requiredChallengeIds:[]});u.find(A=>A.id===l.id&&Object.keys(A.challenges).length>0)&&console.warn(`${i} revocation pool ${l.id} is not empty after revocation. Is the revocation pool replenish strategy set to ${J.deleteAll}? (W: 300c28bc8b98fc3e3c0b0d988344f825)`);let h={reason:o,proof:p},E=(c.n??0)+1,g;if(E%tr===0){let A={...t,data:{...c,frameDetails:a,revocationInfo:h}};g=await this.getAggregateDetails({latestKeystone:A,metaspace:n,space:s})}return await It({prevIbGib:t,newData:{challengePools:u,proofs:[p],revocationInfo:h,frameDetails:a,checkpointDetails:g},metaspace:n,space:s})}catch(c){throw console.error(`${i} ${m(c)}`),c}finally{oe&&console.log(`${i} complete.`)}}async addPools({latestKeystone:t,masterSecret:r,newPools:o,metaspace:a,space:n}){let s=`${this.lc}[${this.addPools.name}]`;try{if(oe&&console.log(`${s} starting...`),!t.data)throw new Error("(UNEXPECTED) latestKeystone.data falsy? (E: 7334c8faed128166a999d428c7805b25)");let i=t.data;if(i.revocationInfo)throw new Error("Keystone has been revoked. Cannot add pools. (E: 8599f8f51c78d722252ddb2894fdbe25)");if(o.length===0)throw new Error("No new pools provided to add. (E: 6599f8f51c78d722252ddb2894fdbe25)");let c=nr({pools:i.challengePools,verb:er});oe&&console.log(`${s} Authorized via pool: ${c.id}`);let l=$({ibGib:t}),d={verb:er,target:l,scope:JSON.stringify({add:o.map(y=>y.id)})},f=ar({pool:c,targetAddr:l}),{proof:p,nextPools:u}=await sr({targetPoolId:c.id,prevPools:i.challengePools,masterSecret:r,challengeIds:f,claim:d}),h=new Set(u.map(y=>y.id));for(let y of o)if(h.has(y.id))throw new Error(`Cannot add pool. ID collision: ${y.id} (E: 8a4c2b1d3e5f6a7b8c9d0e1f2a3b4c5d)`);let E=[...u,...o],g=(i.n??0)+1,I;if(g%tr===0){let y={...t,data:{...i,challengePools:E}};I=await this.getAggregateDetails({latestKeystone:y,metaspace:a,space:n})}return await It({prevIbGib:t,newData:{challengePools:E,proofs:[p],checkpointDetails:I},metaspace:a,space:n})}catch(i){throw console.error(`${s} ${m(i)}`),i}finally{oe&&console.log(`${s} complete.`)}}async getAggregateDetails({latestKeystone:t,metaspace:r,space:o}){let a=`${this.lc}[${this.getAggregateDetails.name}]`;try{let n={},s=t;for(;s;){let i=s.data;if(i.checkpointDetails){n=Ve({dominant:n,recessive:i.checkpointDetails});break}if(i.frameDetails&&(n=Ve({dominant:n,recessive:i.frameDetails})),i.n===0)break;let c=s.rel8ns?.past,l=c&&c.length>0?c[c.length-1]:void 0;if(!l)break;let d=await r.get({addr:l,space:o});if(!d.success||!d.ibGibs||d.ibGibs.length===0)throw new Error(`Could not find previous keystone frame at ${l} (E: e3d069b22e11e550e58844889ddb5325)`);s=d.ibGibs[0]}return n}catch(n){throw console.error(`${a} ${m(n)}`),n}}};var cr=!1,Eo=class{static{b(this,"KeystoneConfigBuilderBase")}_id;_salt;_size;_replenish;_seq;_rand;_verbs=[];_targetBinding;withId(t){return this._id=t,this}withSalt(t){return this._salt=t,this}withSize(t){return this._size=t,this}withTargetBinding(t){return this._targetBinding=t,this}withFIFO(t){return this._seq=t,this._rand=0,this}withRandom(t){return this._seq=0,this._rand=t,this}withHybrid({seqCount:t,randCount:r}){return this._seq=t,this._rand=r,this}withReplenishStrategy(t){return this._replenish=t,this}buildBehavior(){if(this._size===void 0)throw new Error("size required (E: 68320865d9adb8477836485b20b08826)");if(this._replenish===void 0)throw new Error("replenish strategy required (E: 9f8798d1a568763a282e53c89185b826)");if(this._seq===void 0)throw new Error("sequential required (E: e0da08a24e9790d0a8c1a9322f8eb826)");if(this._rand===void 0)throw new Error("selectRandomly required (E: 7721d84d1a8b7d020d0ab33c3f811426)");if(this._targetBinding===void 0)throw new Error("targetBinding required (E: 9add64d7e8e8cba01d901727a8e9b826)");return{size:this._size,replenish:this._replenish,selectSequentially:this._seq,selectRandomly:this._rand,targetBindingChars:this._targetBinding}}forVerbs(t){return this._verbs=t,this}},mo=class e extends Eo{static{b(this,"KeystoneConfigBuilder_HashV1")}lc=`[${e}]`;_algo;_rounds;withHash({algo:t,rounds:r}){let o=`${this.lc}[${this.withHash.name}]`;try{return cr&&console.log(`${o} starting... (I: 15d1b3bd2e98bba33fc6c78228755826)`),this._algo=t,this._rounds=r,this}catch(a){throw console.error(`${o} ${m(a)}`),a}finally{cr&&console.log(`${o} complete.`)}}build(){let t=`${this.lc}[${this.build.name}]`;try{if(cr&&console.log(`${t} starting... (I: 5df568c63c4993bb98df0a319ee16826)`),!this._id)throw new Error("id required (E: b50d082adf38bcbf463552f80d2c3226)");if(!this._salt)throw new Error("salt required (E: b0f1926657b8d7d3a88fb9385ead5826)");if(!this._algo)throw new Error("algorithm required (E: cff228f9898fd6383ef752088dae6826)");if(this._rounds===void 0)throw new Error("rounds required (E: eb72580f3b014cda18cba3e399683c26)");return{id:this._id,type:ye.hash_reveal_v1,salt:this._salt,allowedVerbs:this._verbs,behavior:this.buildBehavior(),algo:this._algo,rounds:this._rounds}}catch(r){throw console.error(`${t} ${m(r)}`),r}finally{cr&&console.log(`${t} complete.`)}}},wo=class{static{b(this,"KeystoneConfig")}static hash(){return new mo}};function Ws(e){if(e.type&&e.type!==ye.hash_reveal_v1)throw new Error(`invalid type (${e.type}). Only ${ye.hash_reveal_v1} currently implemented. (E: 09c1f7772bd2a7910f5562b4934d3826)`);let{salt:t,id:r,size:o,sequential:a,random:n,targetBinding:s,replenishStrategy:i,verbs:c,hashAlgorithm:l,hashRounds:d}=e;return wo.hash().withId(r).withSalt(t).withSize(o??ea).withHybrid({seqCount:a??ta,randCount:n??ra}).withTargetBinding(s??oa).withReplenishStrategy(i??na).withHash({algo:l??aa,rounds:d??sa}).forVerbs(c??[]).build()}b(Ws,"createHighSecurityPoolConfig");function ga(e){return Ws({...e,verbs:[po.MANAGE]})}b(ga,"createManagePoolConfig");var v={COMMON:{ALGO:se.sha_256,TYPE:ye.hash_reveal_v1,ROUNDS:2,REPLENISH:J.topUp},DEFAULT_POOL:{ID:"default",SIZE:20,SELECT_SEQUENTIALLY:2,SELECT_RANDOMLY:2,TARGET_BINDING_CHARS:3},HANDSHAKE_POOL:{ID:"handshake",VERB:"handshake",SIZE:10,SELECT_SEQUENTIALLY:2,SELECT_RANDOMLY:2,TARGET_BINDING_CHARS:0,SERVER_DEMAND_COUNT:3}},Hu={MIN_DEFAULT_POOL_SIZE:50,ALLOWED_ALGORITHMS:[se.sha_256,se.sha_512]};function Ea(e){let t=(e.data?.challengePools??[]).find(n=>n.id===v.HANDSHAKE_POOL.ID);if(!t)throw new Error(`Keystone missing "${v.HANDSHAKE_POOL.ID}" pool`);let r=Object.keys(t.challenges).sort();if(r.length===0)throw new Error("Handshake pool has no challenges");let o=r[0],a=t.challenges[o];return{challengeId:o,challenge:a}}b(Ea,"getHandshakeChallenge");var at=class{static{b(this,"SpaceGibApiBridge")}lc="[SpaceGibApiBridge]";async postGenesisKeystone(t){let r=`${this.lc}[${this.postGenesisKeystone.name}]`;try{console.log(`${r} [NAG][ibgib-paradigm] posting genesis keystone...`);let o=await fetch("/api/keystone/genesis",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keystoneIbGib:t})}),a=await o.json();if(!o.ok){let n=a.message||a.error||"Unknown error";return console.error(`${r} [NAG][ibgib-paradigm] server rejected genesis keystone: ${n}`),{success:!1,message:n,addr:a.addr}}return console.log(`${r} [NAG][ibgib-paradigm] genesis keystone posted successfully.`),{success:!0,addr:a.addr}}catch(o){let a=m(o);return console.error(`${r} [NAG][ibgib-paradigm] fetch error: ${a}`),{success:!1,message:a}}}async putEvolveKeystone(t,r,o=[]){let a=`${this.lc}[${this.putEvolveKeystone.name}]`;try{console.log(`${a} posting evolved keystone...`);let n=`/api/keystone/evolve/${encodeURIComponent(t)}`,s=await fetch(n,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({keystoneIbGib:r,relatedIbGibs:o})}),i=await s.json();if(!s.ok){let c=i.message||i.error||"Unknown error";return console.error(`${a} server rejected keystone evolution: ${c}`),{success:!1,message:c}}return console.log(`${a} keystone evolution accepted by server.`),{success:!0}}catch(n){let s=m(n);return console.error(`${a} fetch error: ${s}`),{success:!1,message:s}}}},Xu=new at;var Me="[dev-tools]",Z={};window.ibgibDebugState=Z;function x(e){let t=document.getElementById("dev-panel-log");if(!t)return;let r=new Date().toISOString().slice(11,23);t.textContent=`[${r}] ${e}
|
|
20
|
+
`+t.textContent}b(x,"devLog");var ve=null;function Vs(){let e=`${Me}[initWsTestButton]`,t=document.getElementById("btn-test-ws");if(!t){console.warn(`${e} btn-test-ws not found \u2014 skipping`);return}t.addEventListener("click",()=>{try{if(ve&&ve.readyState===WebSocket.OPEN){ve.send(JSON.stringify({ping:"hello from client",ts:Date.now()})),x("\u2192 sent ping on existing connection");return}let o=`${location.protocol==="https:"?"wss:":"ws:"}//${location.host}/api/debug/ws-echo`;x(`\u2192 connecting to ${o}`),ve=new WebSocket(o),ve.addEventListener("open",()=>{x("\u2713 WebSocket connected"),t.textContent="Send WS Ping"}),ve.addEventListener("message",a=>{x(`\u2190 ${a.data}`)}),ve.addEventListener("close",a=>{x(`\u2717 WebSocket closed (code ${a.code})`),t.textContent="Test WebSocket",ve=null}),ve.addEventListener("error",a=>{x("\u2717 WebSocket error \u2014 check console"),console.error(`${e} WebSocket error`,a)})}catch(r){x(`\u2717 ${m(r)}`),console.error(`${e} ${m(r)}`)}})}b(Vs,"initWsTestButton");function zs(){let e=document.getElementById("btn-print-dev-state");e&&e.addEventListener("click",()=>{x("Printing debug state to console..."),console.dir(Z)})}b(zs,"initPrintStateButton");function Js(){let e=`${Me}[initCreateDomainKeystoneButton]`,t=document.getElementById("btn-create-domain-keystone");t&&t.addEventListener("click",async()=>{try{t.disabled=!0,x("Generating dummy Domain Keystone (I)...");let r=await ke(),o=await r.getLocalUserSpace({});if(!o)throw new Error("No default space found in metaspace.");let a="password",s=await new Xe().genesis({masterSecret:a,configs:[ga({id:"default",salt:await P(),replenishStrategy:J.topUp})],metaspace:r,space:o,frameDetails:{client:"space-gib-web-dev",timestamp:ie()}}),i=$({ibGib:s});x(`\u2713 Local genesis complete: ${i}`),Z.domainI=s,Z.domainIMasterSecret=a,x("Posting genesis keystone to server...");let l=await new at().postGenesisKeystone(s);if(!l.success){x(`\u2717 Server rejected genesis keystone: ${l.message}`),t.disabled=!1;return}x("\u2713 Server accepted Domain Keystone (I)"),t.textContent="\u2713 Domain Keystone Created";let d=document.getElementById("btn-create-test-ibgib");d&&(d.disabled=!1)}catch(r){x(`\u2717 ${m(r)}`),console.error(`${e} ${m(r)}`),t.disabled=!1}})}b(Js,"initCreateDomainKeystoneButton");function Zs(){let e=`${Me}[initCreateTestIbGibButton]`,t=document.getElementById("btn-create-test-ibgib");if(!t){console.warn(`${e} btn-create-test-ibgib not found \u2014 skipping`);return}t.addEventListener("click",async()=>{try{x("Generating dummy X^Xtjp ibgib...");let o=(await j.firstGen({parentIbGib:Tt,ib:"test data",data:{hello:"world",random:Math.random()},dna:!0,nCounter:!0,tjp:{uuid:!0,timestamp:!0}})).newIbGib,a=$({ibGib:o});Z.targetX=o,x(`\u2713 Created X: ${a}`),t.textContent="\u2713 Test IbGib (X) Created";let n=document.getElementById("btn-create-session-keystone");n&&(n.disabled=!1)}catch(r){x(`\u2717 ${m(r)}`),console.error(`${e} ${m(r)}`)}})}b(Zs,"initCreateTestIbGibButton");function Qs(){let e=`${Me}[initCreateSessionKeystoneButton]`,t=document.getElementById("btn-create-session-keystone");if(!t){console.warn(`${e} btn-create-session-keystone not found \u2014 skipping`);return}t.addEventListener("click",async()=>{try{x("Generating Session Keystone (S^Stjp)...");let r=Z.domainI,o=Z.targetX;if(!r){x("\u26A0 No domain keystone (I) found in state. Please Create Domain Keystone first.");return}if(!o){x("\u26A0 No target ibgib (X) found in state. Please Create Test IbGib first.");return}let a=await ke(),n=await a.getLocalUserSpace({});if(!n)throw new Error("No default space found in metaspace.");let s="ephemeral-"+Math.random().toString(),i=new Xe;console.warn(`${Me}[NAG] placeholder genesis keystone config right now (W: 69b108687cf8bec0f9a8e148bcca8d26)`);let c=await i.genesis({masterSecret:s,configs:[{id:v.DEFAULT_POOL.ID,salt:await P(),type:v.COMMON.TYPE,algo:v.COMMON.ALGO,rounds:v.COMMON.ROUNDS,behavior:{size:v.DEFAULT_POOL.SIZE,replenish:v.COMMON.REPLENISH,selectSequentially:v.DEFAULT_POOL.SELECT_SEQUENTIALLY,selectRandomly:v.DEFAULT_POOL.SELECT_RANDOMLY,targetBindingChars:v.DEFAULT_POOL.TARGET_BINDING_CHARS},allowedVerbs:[]},{id:v.HANDSHAKE_POOL.ID,salt:await P(),type:v.COMMON.TYPE,algo:v.COMMON.ALGO,rounds:v.COMMON.ROUNDS,behavior:{size:v.HANDSHAKE_POOL.SIZE,replenish:v.COMMON.REPLENISH,selectSequentially:v.HANDSHAKE_POOL.SELECT_SEQUENTIALLY,selectRandomly:v.HANDSHAKE_POOL.SELECT_RANDOMLY,targetBindingChars:v.HANDSHAKE_POOL.TARGET_BINDING_CHARS},allowedVerbs:[v.HANDSHAKE_POOL.VERB]}],metaspace:a,space:n,frameDetails:{client:"space-gib-web-session",target_I:r?$({ibGib:r}):void 0,target_X:o?$({ibGib:o}):void 0}}),l=$({ibGib:c});Z.sessionS=c,Z.sessionSecret=s,x(`\u2713 Created Session Keystone: ${l}`),t.textContent="\u2713 Session Keystone Created";let d=document.getElementById("btn-evolve-domain-keystone");d&&(d.disabled=!1)}catch(r){x(`\u2717 ${m(r)}`),console.error(`${e} ${m(r)}`)}})}b(Qs,"initCreateSessionKeystoneButton");function ei(){let e=`${Me}[initEvolveDomainKeystoneButton]`,t=document.getElementById("btn-evolve-domain-keystone");if(!t){console.warn(`${e} btn-evolve-domain-keystone not found \u2014 skipping`);return}t.addEventListener("click",async()=>{try{t.disabled=!0,x("Evolving Domain Keystone (I^I1) with sync claim...");let r=Z.domainI,o=Z.domainIMasterSecret,a=Z.sessionS;if(!r||!o){x("\u26A0 No domain keystone (I) found. Please Create Domain Keystone first.");return}if(!a){x("\u26A0 No session keystone (S) found. Please Create Session Keystone first.");return}let n=await ke(),s=await n.getLocalUserSpace({});if(!s)throw new Error("No default space found in metaspace.");let i=new Xe,c=$({ibGib:a});x("Solving challenges to authorize sync...");let l=await i.sign({latestKeystone:r,masterSecret:o,claim:{target:c,verb:"sync"},metaspace:n,space:s}),d=$({ibGib:l});x(`\u2713 Local evolution complete: ${d}`),Z.domainI=l,x("Posting evolution to server...");let f=new at,p=$({ibGib:r}),u=await f.putEvolveKeystone(p,l,[a]);if(!u.success){x(`\u2717 Server rejected evolution: ${u.message}`),t.disabled=!1;return}x("\u2713 Server accepted Domain Keystone evolution!"),t.textContent="\u2713 Domain Keystone Evolved";let h=document.getElementById("btn-perform-sync");h&&(h.disabled=!1)}catch(r){x(`\u2717 ${m(r)}`),console.error(`${e} ${m(r)}`),t.disabled=!1}})}b(ei,"initEvolveDomainKeystoneButton");function ti(){let e=`${Me}[initPerformSyncButton]`,t=document.getElementById("btn-perform-sync");t&&t.addEventListener("click",async()=>{try{debugger;t.disabled=!0,x("Initiating Sync Handshake via WebSocket...");let r=Z.sessionS,o=Z.sessionSecret,a=Z.domainI;if(!r||!o||!a){x("\u26A0 Incomplete state. Please complete steps 1-4."),t.disabled=!1;return}let n=await ke(),s=await n.getLocalUserSpace({});if(!s)throw new Error("No space.");x("Pre-solving upfront picket-fence challenge...");let i=(r.data?.challengePools??[]).find(I=>I.id===v.HANDSHAKE_POOL.ID);if(!i)throw new Error(`Session keystone missing "${v.HANDSHAKE_POOL.ID}" pool`);let{challengeId:c}=Ea(r),l=Ie.create({config:i.config}),d=await l.derivePoolSecret({masterSecret:o}),f=await l.generateSolution({poolSecret:d,poolId:v.HANDSHAKE_POOL.ID,challengeId:c}),p=$({ibGib:r}),u=$({ibGib:a}),E=`${location.protocol==="https:"?"wss:":"ws:"}//${location.host}/api/sync/ws/${encodeURIComponent(u)}?sAddr=${encodeURIComponent(p)}&solution=${f.value}`;x(`\u2192 connecting to ${E}`);let g=new WebSocket(E);g.addEventListener("open",()=>{x("\u2713 WebSocket connected. Waiting for server challenge...")}),g.addEventListener("message",async I=>{try{let _=JSON.parse(I.data);if(x(`\u2190 received: ${_.type??"message"}`),_.type==="auth-challenge-init")x("\u2192 sending auth-init with sAddr..."),g.send(JSON.stringify({type:"auth-init",sAddr:$({ibGib:r})}));else if(_.type==="auth-challenge"){let{challengeUuid:A,demandedIds:y}=_;x(`\u2192 server demanded ${y.length} ids. Signing handshake proof...`);let T=await new Xe().sign({latestKeystone:r,masterSecret:o,poolId:"handshake",requiredChallengeIds:y,claim:{verb:"handshake",target:A},metaspace:n,space:s});x("\u2192 sending auth-proof..."),g.send(JSON.stringify({type:"auth-proof",proofFrame:T}))}else _.type==="auth-ok"?(x("\u2713 Handshake SUCCESS! Sync session authorized."),t.textContent="\u2713 Sync Authorized"):_.type==="auth-fail"&&(x(`\u2717 Handshake FAILED: ${_.message}`),t.disabled=!1)}catch(_){x(`\u2717 Message handler error: ${m(_)}`),console.error(`${e} Message handler error:`,_),t.disabled=!1}}),g.addEventListener("close",I=>{x(`\u2717 WebSocket closed (code ${I.code})`),t.disabled=!1}),g.addEventListener("error",()=>{x("\u2717 WebSocket error \u2014 check server"),t.disabled=!1})}catch(r){x(`\u2717 ${m(r)}`),console.error(`${e} ${m(r)}`),t.disabled=!1}})}b(ti,"initPerformSyncButton");function fh(){let e=`${Me}[initDevTools]`;try{zs(),Js(),Vs(),Zs(),Qs(),ei(),ti()}catch(t){console.error(`${e} ${m(t)}`)}}b(fh,"initDevTools");export{b as a,_e as b,ni as c,ai as d,si as e,Io as f,se as g,L as h,ie as i,fe as j,P as k,F as l,X as m,m as n,dr as o,ue as p,At as q,Ia as r,_a as s,Aa as t,To as u,ze as v,D as w,Tt as x,k as y,he as z,Go as A,$ as B,N as C,ct as D,C as E,xa as F,W as G,M as H,Q as I,Je as J,Ae as K,ee as L,lt as M,Qe as N,Ze as O,j as P,hc as Q,gc as R,Ec as S,Ot as T,Oa as U,Lo as V,vo as W,vc as X,Rc as Y,Cc as Z,Da as _,Pc as $,Er as aa,Ir as ba,Na as ca,Kc as da,Wc as ea,Vc as fa,Lt as ga,He as ha,Ho as ia,Wo as ja,vt as ka,Ra as la,Ca as ma,fd as na,bd as oa,pd as pa,ud as qa,hd as ra,gd as sa,Ba as ta,Fa as ua,Lr as va,Qo as wa,vr as xa,qa as ya,Ka as za,tt as Aa,ut as Ba,cn as Ca,es as Da,fn as Ea,of as Fa,sf as Ga,cf as Ha,lf as Ia,q as Ja,Fr as Ka,Hr as La,V as Ma,ts as Na,Ht as Oa,qt as Pa,z as Qa,qr as Ra,pn as Sa,we as Ta,et as Ua,Br as Va,gn as Wa,rt as Xa,Ft as Ya,os as Za,ns as _a,Le as $a,Pf as ab,as as bb,ss as cb,is as db,qe as eb,cs as fb,ls as gb,ds as hb,Mr as ib,Jf as jb,On as kb,gt as lb,K as mb,Yt as nb,mt as ob,Dn as pb,de as qb,Ln as rb,bs as sb,Ue as tb,ib as ub,Es as vb,cb as wb,lb as xb,db as yb,fb as zb,Jr as Ab,ob as Bb,ws as Cb,$s as Db,ys as Eb,Ye as Fb,ke as Gb,Is as Hb,Kn as Ib,qn as Jb,_s as Kb,As as Lb,Ts as Mb,Ss as Nb,Gs as Ob,xs as Pb,Os as Qb,Ds as Rb,ao as Sb,ro as Tb,Vt as Ub,Ns as Vb,Ls as Wb,vn as Xb,vs as Yb,Wn as Zb,Rs as _b,Cs as $b,$p as ac,ye as bc,J as cc,uo as dc,Xe as ec,Xu as fc,x as gc,fh as hc};
|
|
21
|
+
//# sourceMappingURL=chunk-CT47Z5WU.mjs.map
|