@ibgib/space-gib 0.0.35 → 0.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{a as Er,b as $r,c as Re,d as Ar,e as yr,f as ce,g as ge,h as _r,i as Sr,j as Tr,k as Gr,l as Nr,m as Or}from"./chunk-FIAGRVBY.mjs";import{$a as nt,$c as mt,A as Q,Ac as lt,B as K,Db as br,E as me,Eb as R,F as Ge,Fc as X,G as Z,Hc as dt,Ia as ot,Ic as pr,Jc as Oe,K as Qt,Kc as Me,Lc as ur,M as Pe,N as ne,Nc as ft,O as Kt,P as Zt,Pc as he,Q as tt,Ra as Ce,S as se,Tc as hr,U as er,Ua as at,X as tr,Xa as it,Xc as gr,Zc as bt,_c as Le,a as b,ab as fr,ad as Be,bb as ee,bd as Ir,cd as wr,d as D,e as k,f as Ye,fd as Pr,g as Y,gb as De,h as g,ib as S,j as f,ja as rr,jb as st,ka as or,l as ze,la as ar,m as Qe,ma as ir,n as zt,na as rt,o as Ke,oa as nr,p as _,pa as sr,pd as le,q as G,qa as cr,qd as Cr,ra as Ne,rd as Dr,s as _e,sa as pe,t as Se,ta as lr,u as Ze,ua as dr,uc as ct,ud as xr,v as Te,vc as xe,wc as ue,x as et,xc as mr,z}from"./chunk-XLQ3UCQY.mjs";var Mr={src:["source","from","in","input"],dest:["destination","to","out","output"]};function Po({paramName:i,noBare:e,argTypeName:r,description:t}){let o={name:`src-${i}`,argTypeName:r??"string",synonyms:[...Mr.src.map(a=>`${a}-${i}`)],description:t};return e||o.synonyms.push(i),o}b(Po,"getParam_src");function No({paramName:i,argTypeName:e="string",description:r}){return{name:`dest-${i}`,argTypeName:e??"string",synonyms:[...Mr.dest.map(o=>`${o}-${i}`)],description:r}}b(No,"getParam_dest");var Lr={name:"bare",description:`special param that is used as the only param allowed that doesn't have a "double-dash-specifier=" form. one "bare" arg is allowed atow. if a bare arg is found, it will be mapped to this param info.`,synonyms:["bare-arg","bare-param","no-name","manco","arg-with-no-name","param-with-no-name"],argTypeName:"string"};var Sa=Po({paramName:"path",description:"for referencing/ingesting file(s)/folder(s) in a fs"}),Ta=No({paramName:"path",description:"for indicating where to put generated file(s)/folder(s)"});var F=!1;function Fe({paramInfo:i,valueString:e}){let r=`[${Fe.name}]`;try{switch(i.argTypeName){case"string":let t=e;return(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1),t=t.slice(0,t.length-1)),t;case"integer":if(e===void 0)throw new Error("integer arg value is undefined. integers must be a valid integer string (E: ce17acde3b863ec5e2fdcc594f0f1423)");let o=Number.parseInt(e);if(typeof o!="number")throw new Error(`arg value string (${e})did not parse to an integer. parse result: ${o} (E: 43cde93160458610ffb49fd16a02d123)`);return o;case"boolean":if(e===void 0||e===""){if(!i.isFlag)throw new Error("valueString is undefined or empty string but paramInfo.argTypeName === 'boolean' and paramInfo.isFlag is falsy. (E: 482e595c0ec7344b04def76c1441d623)");return!0}else{if(e===null)throw new Error("(UNEXPECTED) valueString === null? (E: 78f548b93026407968356d9c4f106223)");if(!["true","false"].includes(e))throw new Error(`invalid boolean valueString ("${e}"). must be either "true" or "false" (E: ba7a0d0804131acc2bd9ab37c0382523)`);return e==="true"}default:throw new Error("(UNEXPECTED) invalid paramInfo.argTypeName (E: c8b03ccb71394d22a29858b98753a123)")}}catch(t){throw console.error(`${r} ${f(t)}`),t}}b(Fe,"getValueFromRawString");function ve({argIdentifier:i,paramInfos:e,throwIfNotFound:r}){let t=`[${ve.name}]`;try{let o=e.filter(a=>a.name===i||(a.synonyms??[]).includes(i));if(o.length===1)return D(o[0]);if(o.length>1)throw new Error(`(UNEXPECTED) multiple param infos found with argIdentifier. do you have overlapping arg names/synonyms? (${i} found in (${o.length} param infos)) (E: d599a6647c5ead6d9fbac4e4c96e6d23)`);if(r)throw new Error(`(UNEXPECTED) param info not found for argIdentifier (${i}) (E: 47e704068f2eb5a0551cf45d0e72c823)`);return}catch(o){throw console.error(`${t} ${f(o)}`),o}}b(ve,"getParamInfo");function Br({rawArg:i}){let e=`[${Br.name}]`;try{F&&console.log(`${e} starting... (I: 5d51b75b7a025e2e3fa498da7c08ac24)`);let r=b(a=>a.startsWith('"')&&a.endsWith('"')?"double":a.startsWith("'")&&a.endsWith("'")?"single":void 0,"fnGetQuoteType"),t=b(a=>r(a)?a.slice(0,a.length-1).slice(1):a,"fnStripQuotes"),o=r(i);if(o)return{prefix:void 0,identifier:void 0,isNameValuePair:!1,valueInfo:{rawValueString:i.concat(),resolvedValueString:t(i),singleQuoted:o==="single",doubleQuoted:o==="double"}};if(i.match(/^(--\w|-\w|:\w)/))if(i.includes("=")){let a=/^(--|-|:)([\w\-]+)=(['"]?.+['"]?)$/,n=i.match(a);if(!n)throw new Error(`invalid rawArg (${i}). expected an arg matching regexp ${a}. (E: 05ca56163e184faeb66456a0e9190b28)`);let[l,d,c,s]=n,m=r(s);return{prefix:d,identifier:c,isNameValuePair:!0,valueInfo:{rawValueString:s,resolvedValueString:m?t(s):s,singleQuoted:m==="single",doubleQuoted:m==="double"}}}else{let a=/^(--|-|:)([\w\-]+)$/,n=i.match(a);if(!n)throw new Error(`invalid rawArg (${i}). expected an arg matching regexp ${a}. at this point, it should have a prefix (e.g. "--"), and a single identifier (should be a flag since there is no equal sign). (E: 93305923465d9449bdce3f81373fae24)`);let[l,d,c]=n;return{prefix:d,identifier:c,isNameValuePair:!1,valueInfo:{rawValueString:void 0,resolvedValueString:"true",singleQuoted:!1,doubleQuoted:!1}}}else{if(i.includes("="))throw new Error(`invalid rawArg (${i}). isn't quoted, doesn't start with prefix, but it does have an equal sign? that's bad. (E: e8ad15211ce6fd56a4a214c2778c4724)`);return{prefix:void 0,identifier:void 0,isNameValuePair:!1,valueInfo:{rawValueString:i,resolvedValueString:i,doubleQuoted:!1,singleQuoted:!1}}}}catch(r){throw console.error(`${e} ${r.message}`),r}finally{F&&console.log(`${e} complete.`)}}b(Br,"parseRawArg");function Ue({args:i,paramInfos:e,bareArgParamInfo:r=D(Lr),logalot:t}){let o=`[${Ue.name}]`;try{(F||t)&&console.log(`${o} starting... (I: f389aaa490796dfd823bc7b9d4e58b23)`);let a=!1;return i.map((l,d)=>{let c,s,m,{prefix:u,identifier:h,isNameValuePair:p,valueInfo:I}=Br({rawArg:l});if(u){if((F||t)&&console.log(`identifier: ${h} (I: 519ce129a1e34753a9070d3a205c9a8b)`),!h)throw new Error("(UNEXPECTED) prefix truthy but identifier falsy? (E: f33ab3a2b623acc0d1bc36685edfaf24)");if(c=h,!I)throw new Error("(UNEXPECTED) !valueInfo? (E: 05249a361a59008cd313d2dfa8f08b24)");if(p){F&&console.log(`${o} identifier with equals: ${h}. (I: 5f8ae91d1ddd4a7f94c0f4fb7e688502)`);let w=ve({argIdentifier:c,paramInfos:e,throwIfNotFound:!0});m={...w,value:Fe({paramInfo:w,valueString:I.rawValueString}),identifier:c}}else{F&&console.log(`${o} identifier without equals: ${h}`),c=h;let w=ve({argIdentifier:c,paramInfos:e,throwIfNotFound:!0});m={...w,value:Fe({paramInfo:w,valueString:void 0}),identifier:c,isFlag:!0}}}else if(d===0){if(!I)throw new Error("(UNEXPECTED) argIndex === 0 but valueInfo falsy? (E: 4642b42c855593b7ffdacb85f27dab24)");if(!I.rawValueString)throw new Error("(UNEXPECTED) !valueInfo.rawValueString? (E: 0b35f71eb8227cdd67ccfc32f2e45824)");if(I.singleQuoted)throw new Error("first arg is quoted? (single). a bare arg in first position must be a command/flag. (E: 28cce820417fd3b4f95ba6c7e94b4624)");if(I.doubleQuoted)throw new Error("first arg is quoted? (double). a bare arg in first position must be a command/flag. (E: 0b948c87081043fdb168f08ba05ebbce)");c=I.rawValueString,m={...ve({argIdentifier:c,paramInfos:e,throwIfNotFound:!0}),value:!0,identifier:c,isFlag:!0}}else{if((F||t)&&console.log("bare arg found. (I: d6f67074c7e44a63864948d4bf04bee8)"),!r)throw new Error(`bare arg found (one without prefix like "--" or ":") but there is no param info expected for bare args. You must provide which param info a bare arg maps to in this ${Ue.name} call. (E: 650dd3695d62f0f87dd0cbafbf068c23)`);if(a)throw new Error('You can have the first arg - a special arg like a command - be bare (without prefix like "--" or ":") and one additional non-positional arg be bare. But more than one non-positional bare arg found. Also remember if the arg has spaces then you have to enclose it with single or double quotes. (E: 74dea8f13f0c14e3b7a2f125c7faca23)');a=!0;let w=D(r);m={...w,isBare:!0,identifier:w.name,value:Fe({paramInfo:w,valueString:l})}}return F&&console.log(`${o} argInfo: ${g(m)}`),m})}catch(a){throw console.error(`${o} ${f(a)}`),a}finally{(F||t)&&console.log(`${o} complete.`)}}b(Ue,"buildArgInfos");var te=".",v="utf8",re="ibgib",oe=`000_${ne}`,U="ibgibs",j="meta",V="bin",H="dna",ae="l",je="This is a filesystem space. The ibgib data contains settings for the space itself, and the witness ibgib object interfaces with a back end that is hierarchical like a filesystem. Descend from this class if you're working with a similar space.",Rr=240,Ve="/",Fr=32;function pt(){return async({title:i,msg:e})=>{let r=`[${pt.name}]`,t;try{if(!e)throw new Error("msg required. (E: c39d1656b6b803e11bad46efe15b6823)");t=await ue({title:i,msg:e})}catch(o){throw console.error(`${r} ${f(o)}`),o}return t||t===""?t:null}}b(pt,"getFnPrompt");var E=!1,vr={version:"3",uuid:Pe,name:ne,classname:"FilesystemSpace_V1",baseDir:te,encoding:v,baseSubPath:re,spaceSubPath:oe,ibgibsSubPath:U,metaSubPath:j,binSubPath:V,dnaSubPath:H,longSubPath:ae,longPathLength:Rr,mitigateLongPaths:!0,persistOptsAndResultIbGibs:!1,validateIbGibAddrsMatchIbGibs:!1,longPollingIntervalMs:se,allowPrimitiveArgs:!1,catchAllErrors:!0,description:je,trace:!1};var Ee=class i extends Pr{static{b(this,"FilesystemSpace_V1")}lc=`[${i.name}]`;ibGibs={};pathExistsMap={};constructor(e,r){super(e??D(vr),r)}async validateWitnessArg(e){let r=`${this.lc}[${this.validateWitnessArg.name}]`,t=[];try{t=await super.validateWitnessArg(e)||[],e.data?.cmd==="put"&&(e.ibGibs||[]).length===0&&t.push('when "put" cmd is called, ibGibs required.'),e.data?.cmd==="get"&&(e.data?.ibGibAddrs||[]).length===0&&t.push('when "get" cmd is called, ibGibAddrs required.')}catch(o){throw console.error(`${r} ${f(o)}`),o}finally{t?.length>0&&console.error(`${r} errors: ${t}`)}return t}async initialize(){let e=`${this.lc}[${this.initialize.name}]`;try{E&&console.log(`${e} starting...`),this.data||(this.data=D(vr),this.data=this.data),this.data?.classname||(this.data.classname=i.name),this.data.baseDir||(this.data.baseDir=te),this.data.encoding||(this.data.encoding=v),this.data.baseSubPath||(this.data.baseSubPath=re),this.data.spaceSubPath||(this.data.spaceSubPath=oe),this.data.ibgibsSubPath||(this.data.ibgibsSubPath=U),this.data.metaSubPath||(this.data.metaSubPath=j),this.data.binSubPath||(this.data.binSubPath=V),this.data.dnaSubPath||(this.data.dnaSubPath=H),this.ib=Ce({space:this,classname:i.name}),this.gib=await Q({ibGib:this})}catch(r){console.error(`${e} ${f(r)}`)}finally{E&&console.log(`${e} complete.`)}}hasInCache({addr:e}){return z({gib:G({ibGibAddr:e}).gib})?Promise.resolve(!1):Object.keys(this.ibGibs).includes(e)?Promise.resolve(!0):this.cacheSvc?this.cacheSvc.has({addr:e}):Promise.resolve(!1)}async putInCache({addr:e,ibGib:r}){let t=`${this.lc}[${this.putInCache.name}][${e}]`;try{if(E&&console.log(`${t} starting...`),!r)throw new Error("ibGib required (E: 993e26fe40894bab9feccac3938f37df)");if(z({ibGib:r})){E&&console.log(`${t} skipping caching primitive (I: a04dfb691582a4db8a0bfecfefe5e622)`);return}else E&&console.log(`${t} caching addr (I: b996a306f256ee5f39db1e2f5d515c22)`);this.ibGibs[e]=r,this.cacheSvc&&await this.cacheSvc.put({addr:e,ibGib:r})}catch(o){throw console.error(`${t} ${f(o)}`),o}finally{E&&console.log(`${t} complete.`)}}async getFromCache({addr:e}){let r=`${this.lc}[${this.getFromCache.name}]`;try{E&&console.log(`${r} starting...`);let t=this.ibGibs[e];return!t&&this.cacheSvc&&(t=(await this.cacheSvc.get({addr:e}))?.ibGib),t}catch(t){throw console.error(`${r} ${f(t)}`),t}finally{E&&console.log(`${r} complete.`)}}deleteFromCache({addr:e}){let r=`${this.lc}[${this.getFromCache.name}]`;try{return E&&console.log(`${r} starting...`),delete this.ibGibs[e],Promise.resolve()}catch(t){throw console.error(`${r} ${f(t)}`),t}finally{E&&console.log(`${r} complete.`)}}async getImpl(e){let r=`${this.lc}[${this.getImpl.name}]`,t=[],o={optsAddr:_({ibGib:e})},a;try{if(!e.data)throw new Error("arg.data is falsy");let{ibGibAddrs:n,isDna:l}=e.data;n||=[];let d=n.filter(s=>ee({addr:s})),c=n.filter(s=>!d.includes(s));E&&console.log(`${r} getting non-bin ibgibs. ibGibAddrsNonBin: ${c}`);for(let s=0;s<c.length;s++){let m=c[s];if(!e.data.force&&await this.hasInCache({addr:m})){E&&console.log(`${r} YES found in naive cache. (I: 0b23f394fd944c2a96df3543dd0a59c5)`);let u=await this.getFromCache({addr:m});if(!u)throw new Error("(UNEXPECTED) we had in cache but failed to retrieve? (E: 4af334f7a90cb22ffa3b549d0db19a22)");t.push(u)}else{let u=await this.getFile({addr:m,isDna:l});u?.success&&u.ibGib?(await this.putInCache({addr:m,ibGib:u.ibGib}),t.push(u.ibGib)):(a||(a=[]),a.push(m))}}for(let s=0;s<d.length;s++){let m=d[s],{binHash:u,binExt:h}=nt({addr:m});E&&console.log(`${r} getting binHash.binExt: ${u}.${h}`);let p=await this.getFile({addr:m});p?.success&&p.ibGib?(E&&console.log(`${r} getResult.success. ibGib.data?.length: ${p.ibGib.data?.length}`),t.push(p.ibGib)):(E&&console.log(`${r} not found in files. (binData is not cached atm)`),a||(a=[]),a.push(m))}a&&a.length>0?(E&&console.log(`${r}[${this.data.uuid.substring(0,8)}] notFoundIbGibAddrs: ${a} (I: 10f7e35e75445a1d64b353851d00b923)`),o.addrsNotFound=a,o.errors??=[],o.errors.push("notFoundIbGibAddrs.length > 0 (E: e7eadcfa2f4643238590469bc917a35c)"),o.success=!1):o.success=!0}catch(n){let l=f(n);console.error(`${r} error: ${l}`),o.errors=[l]}try{let n=await this.resulty({resultData:o});return t.length>0&&(n.ibGibs=t),n}catch(n){throw console.error(`${r} ${f(n)}`),n}}async putImpl(e){let r=`${this.lc}[${this.putImpl.name}]`,t={optsAddr:_({ibGib:e})},o=[];try{if(E&&console.log("validating arg and internal state..."),!e.data)throw new Error("arg.data required. (E: d64a46e5efab4b09b57850ecf0854386)");if(e.ibGibs?.length===0)throw new Error("arg.ibGibs required. (E: b4930d564b284fb9b26b542f14143a28)");return E&&console.log("arg and internal state validated...calling impl func"),await this.putIbGibsImpl(e)}catch(n){let l=f(n);console.error(`${r} error: ${l}`),t.errors=o.concat([l]),t.success=!1}return await this.resulty({resultData:t})}async putIbGibsImpl(e){let r=`${this.lc}[${this.putIbGibsImpl.name}]`,t={optsAddr:_({ibGib:e})},o=[],a=[],n=[];try{if(!e.data)throw new Error("arg.data is falsy (E: aae5757c158d4a799deb7fca9d6245f0)");let{isDna:d,force:c}=e.data,s=e.ibGibs||[],m=[];for(let u=0;u<s.length;u++){let h=s[u],p=_({ibGib:h});E&&console.log(`${r} checking to see if already exists...`);let I=await this.getFile({addr:p,isDna:d});if(I?.success&&I.ibGib)if(E&&console.log(`${r} already exists...`),c){E&&console.log(`${r} Forcing save of already put addr: ${p} (I: 325f363e5d438b43c24b810c150e4e22)`);let w=await this.putFile({ibGib:h,isDna:d});w.success?d||await this.putInCache({addr:p,ibGib:h}):(o.push(w.errorMsg||`${r} error putting ${p}`),n.push(p))}else E&&a.push(`${r} skipping (non-force) of already exists addr: ${p} (W: b7fbe22473014dd090db88aee631fecb)`),m.push(p);else{E&&console.log(`${r} does NOT already exist...`);let w=await this.putFile({ibGib:h,isDna:d});w.success?d||await this.putInCache({addr:p,ibGib:h}):(o.push(w.errorMsg||`${r} error putting ${p}`),n.push(p))}}m.length>0&&(t.addrsAlreadyHave=m),a.length>0&&(t.warnings=a),o.length===0?t.success=!0:(t.errors=o,t.addrsErrored=n)}catch(d){let c=f(d);console.error(`${r} error: ${c}`),t.errors=o.concat([c]),t.addrsErrored=n,t.success=!1}return await this.resulty({resultData:t})}async deleteImpl(e){let r=`${this.lc}[${this.deleteImpl.name}]`,t={optsAddr:_({ibGib:e})},o=[],a=[],n=[],l=[];try{if(!e.data)throw new Error("arg.data is falsy");let{isDna:c}=e.data,s=e.data.ibGibAddrs||[];for(let m=0;m<s.length;m++){let u=s[m];await this.deleteFromCache({addr:u});let h=await this.deleteFile({addr:u,isDna:c});h?.success?n.push(u):(o.push(h.errorMsg||`delete failed: addr (${u})`),l.push(u))}if(a.length>0&&(t.warnings=a),o.length===0)t.success=!0,t.addrs=n;else if(t.errors=o,t.addrsErrored=l,n.length>0){let m=`some addrs (${n.length}) were indeed deleted, but not all. See result addrs and addrsErrored.`;t.warnings=(t.warnings||[]).concat([m])}}catch(c){let s=f(c);console.error(`${r} error: ${s}`),t.errors=o.concat([s]),t.addrsErrored=l,t.success=!1}return await this.resulty({resultData:t})}async getAddrsImpl(e){let r=`${this.lc}[${this.getAddrsImpl.name}]`;throw new Error(`${r} not implemented. (E: 74dd50ce4b564559bc44d6c08d446cb3)`)}async canGetImpl(e){let r=`${this.lc}[${this.canGetImpl.name}]`,t={optsAddr:_({ibGib:e})};try{throw new Error("not implemented (E: 2a45977c584c6bbbc4f164c16106bd22)")}catch(a){let n=f(a);console.error(`${r} error: ${n}`),t.errors=[n]}return await this.resulty({resultData:t})}async canPutImpl(e){let r=`${this.lc}[${this.canPutImpl.name}]`,t={optsAddr:_({ibGib:e})};try{throw new Error("not implemented (E: 25a005d496efc69faefdec155ffb4a22)")}catch(a){let n=f(a);console.error(`${r} error: ${n}`),t.errors=[n]}return await this.resulty({resultData:t})}async canDeleteImpl(e){let r=`${this.lc}[${this.canDeleteImpl.name}]`;throw new Error(`${r} not implemented (E: a3306138b4ac429ba5f8f293ad7dd07b)`)}async getLatestAddrsImpl(e){let r=`${this.lc}[${this.getLatestAddrsImpl.name}]`,t={optsAddr:_({ibGib:e})};try{if(E&&console.log(`${r} starting...`),!e.data)throw new Error("arg.data required (E: cd92cb965d711c8014455c69e898ac23)");if(!e.data.ibGibAddrs)throw new Error("arg.data.ibGibAddrs required (E: 2d0824f9b8aec916a751ef17e2d4a823)");if(e.data.ibGibAddrs.length===0)throw new Error("arg.data.ibGibAddrs required to be non-zero (E: 2d0824f9b8aec916a751ef17e2d4a823)");let o=new Set,a=new Set,n=new Set;t.latestAddrsMap={};for(let l=0;l<e.data.ibGibAddrs.length;l++){let d=e.data.ibGibAddrs[l],c=await this.getFile({addr:d});if(c?.success&&c.ibGib){let s=c.ibGib,m=await this.getLatestAddrImpl({ibGib:s});m?(o.add(m),t.latestAddrsMap[d]=m):(console.warn(`expecting latestAddr to either be assigned or throw. Adding addr (${d}) to addrsErrored. (W: 35c3712b1a1e579ccf28c389eb2ecc22)`),n.add(d))}else if(c?.success)a.add(d),t.latestAddrsMap[d]=null;else if(c.errorMsg)n.add(d);else throw new Error(`unknown (invalid) getResult: ${g(c)} (E: 2674ad5d30294be29a3d3fdcf54ef6d9)`)}t.addrs=o.size>0?[...o]:void 0,t.addrsErrored=n.size>0?[...n]:void 0,t.addrsNotFound=a.size>0?[...a]:void 0,t.success=!0}catch(o){let a=f(o);console.error(`${r} error: ${a}`),t.errors=[a]}try{return await this.resulty({resultData:t})}catch(o){throw console.error(`${r}[resulty] ${f(o)}`),o}}async getLatestAddrImpl({ibGib:e,ibGibAddr:r}){let t=`${this.lc}[${this.getLatestAddrImpl.name}]`;E&&console.log(`${t} starting...`);try{if(!e&&!r)throw new Error("either ibGib or ibGibAddr required (E: 1f8f0cb61d1b4c708b06762048735c22)");if(e&&r&&_({ibGib:e})!==r)throw new Error("(UNEXPECTED) both ibGib and ibGibAddr provided but they don't match? (E: 01d1938252ef49b53d41d58abfaac523)");r||=_({ibGib:e});let{ib:o,gib:a}=G({ibGibAddr:r});if(!a)throw new Error("(UNEXPECTED) gib falsy? (E: d2506b99162e27348310f8e7e68e4523)");if(z({gib:a}))return console.warn(`${t} incoming ibGibAddr is primitive. Why are we calling getLatest on a primitive? returning incoming addr. (W: 57fcf479d5cc48d393841ec3d53587fa)`),r;if(["fork","mut8","rel8"].includes(o))return E&&console.log(`${t} probably is dna (ib === fork/mut8/rel8). returning incoming ibGibAddr early. (I: 2081628936de6a36bbb51224f0223523)`),r;let l=K({ibGibAddr:r}),{tjpGib:d}=l;d||=a;let c=await this.getMetaStoneAddrs({tjpGib:d,ibGibAddr:r});if(c.length===0)return E&&console.warn(`${t} no metastones found for given ibGibAddr (${r}). returning incoming ibGibAddr (W: a6a35cbbf40745e8a3e202226bb457ff)`),r;let m=c.map($=>[$,G({ibGibAddr:$}).ib]).map(([$,B])=>[$,Ne({ib:B})]).sort(($,B)=>{let[C,L]=$,[_a,ye]=B;return L.n>ye.n?-1:L.n<ye.n?1:L.timestampInTicks>ye.timestampInTicks?-1:L.timestampInTicks<ye.timestampInTicks?1:0});if(E&&(console.log(`${t} console.dir(metaStoneAddrsAndIbInfos_descending)... (I: 1bb5e7d994248e8b6559ca2863c72123)`),console.dir(m)),m.length===0)throw new Error("(UNEXPECTED) metaStoneAddrsAndIbInfos_descending is empty? earlier in the function there should have been a check. did getMetaStoneAddrs return a populated list but no stones were found? (E: 63c035ebed77741f2330c7a625823f23)");let[u,h]=m[0];E&&console.log(`${t} [latestMetaStoneAddr, latestMetaStoneInfo]: ${[u,h]} (I: 1307ca46b4abd62c7a30fe87c08fa923)`);let p,I=await this.getFile({addr:u,isDna:!1});if(I?.success&&I.ibGib){p=I.ibGib;let $=await cr({ibGib:p})??[];if($.length>0)throw new Error(`invalid metastone (${u}) for tjpGib (${d}). errors: ${$.join("|")} (E: 7fa7c6fa696d860cc7a9148861f96123)`)}else throw new Error(`(UNEXPECTED) we just found a metastone addr (${u}) that was read from the directory's contents, but we can't get the file? (E: 3b934b4adcd9d0efee7820f8d4012e23)`);let y=p.rel8ns[nr].at(0);if(!y)throw new Error("metastone passed validation but latestMetaStoneRel8ns[META_STONE_TARGET_REL8N_NAME].at(0) is empty? (E: c188ec0089ad86efe4d925c118599d23)");return y}catch(o){throw console.error(`${t} ${f(o)}`),o}finally{E&&console.log(`${t} complete.`)}}async persistOptsAndResultIbGibs({arg:e,result:r}){let t=`${this.lc}[${this.persistOptsAndResultIbGibs.name}]`;(E||this.data?.trace)&&console.log(`${t} doing arg?.data?.cmd: ${e?.data?.cmd}, result?.data?.success: ${r?.data?.success}`);let o=[e,r??Se],a=await Be({argData:{cmd:"put",catchAllErrors:!0,ibGibAddrs:o.map(l=>_({ibGib:l}))}});a.ibGibs=o;let n=await this.putIbGibsImpl(a);if(!n?.data)throw new Error("resPut.data falsy (E: f3115254240b8eff6cd82878a4a35a23)");(!n.data.success||n.data.errors)&&console.error(`${t} Errors persisting arg & result: ${(n.data?.errors??["unknown errs"]).join(`
1
+ import{a as Er,b as $r,c as Re,d as Ar,e as yr,f as ce,g as ge,h as _r,i as Sr,j as Tr,k as Gr,l as Nr,m as Or}from"./chunk-5DTAUY3E.mjs";import{$a as nt,$c as mt,A as Q,Ac as lt,B as K,Db as br,E as me,Eb as R,F as Ge,Fc as X,G as Z,Hc as dt,Ia as ot,Ic as pr,Jc as Oe,K as Qt,Kc as Me,Lc as ur,M as Pe,N as ne,Nc as ft,O as Kt,P as Zt,Pc as he,Q as tt,Ra as Ce,S as se,Tc as hr,U as er,Ua as at,X as tr,Xa as it,Xc as gr,Zc as bt,_c as Le,a as b,ab as fr,ad as Be,bb as ee,bd as Ir,cd as wr,d as D,e as k,f as Ye,fd as Pr,g as Y,gb as De,h as g,ib as S,j as f,ja as rr,jb as st,ka as or,l as ze,la as ar,m as Qe,ma as ir,n as zt,na as rt,o as Ke,oa as nr,p as _,pa as sr,pd as le,q as G,qa as cr,qd as Cr,ra as Ne,rd as Dr,s as _e,sa as pe,t as Se,ta as lr,u as Ze,ua as dr,uc as ct,ud as xr,v as Te,vc as xe,wc as ue,x as et,xc as mr,z}from"./chunk-J7X3XTAI.mjs";var Mr={src:["source","from","in","input"],dest:["destination","to","out","output"]};function Po({paramName:i,noBare:e,argTypeName:r,description:t}){let o={name:`src-${i}`,argTypeName:r??"string",synonyms:[...Mr.src.map(a=>`${a}-${i}`)],description:t};return e||o.synonyms.push(i),o}b(Po,"getParam_src");function No({paramName:i,argTypeName:e="string",description:r}){return{name:`dest-${i}`,argTypeName:e??"string",synonyms:[...Mr.dest.map(o=>`${o}-${i}`)],description:r}}b(No,"getParam_dest");var Lr={name:"bare",description:`special param that is used as the only param allowed that doesn't have a "double-dash-specifier=" form. one "bare" arg is allowed atow. if a bare arg is found, it will be mapped to this param info.`,synonyms:["bare-arg","bare-param","no-name","manco","arg-with-no-name","param-with-no-name"],argTypeName:"string"};var Sa=Po({paramName:"path",description:"for referencing/ingesting file(s)/folder(s) in a fs"}),Ta=No({paramName:"path",description:"for indicating where to put generated file(s)/folder(s)"});var F=!1;function Fe({paramInfo:i,valueString:e}){let r=`[${Fe.name}]`;try{switch(i.argTypeName){case"string":let t=e;return(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1),t=t.slice(0,t.length-1)),t;case"integer":if(e===void 0)throw new Error("integer arg value is undefined. integers must be a valid integer string (E: ce17acde3b863ec5e2fdcc594f0f1423)");let o=Number.parseInt(e);if(typeof o!="number")throw new Error(`arg value string (${e})did not parse to an integer. parse result: ${o} (E: 43cde93160458610ffb49fd16a02d123)`);return o;case"boolean":if(e===void 0||e===""){if(!i.isFlag)throw new Error("valueString is undefined or empty string but paramInfo.argTypeName === 'boolean' and paramInfo.isFlag is falsy. (E: 482e595c0ec7344b04def76c1441d623)");return!0}else{if(e===null)throw new Error("(UNEXPECTED) valueString === null? (E: 78f548b93026407968356d9c4f106223)");if(!["true","false"].includes(e))throw new Error(`invalid boolean valueString ("${e}"). must be either "true" or "false" (E: ba7a0d0804131acc2bd9ab37c0382523)`);return e==="true"}default:throw new Error("(UNEXPECTED) invalid paramInfo.argTypeName (E: c8b03ccb71394d22a29858b98753a123)")}}catch(t){throw console.error(`${r} ${f(t)}`),t}}b(Fe,"getValueFromRawString");function ve({argIdentifier:i,paramInfos:e,throwIfNotFound:r}){let t=`[${ve.name}]`;try{let o=e.filter(a=>a.name===i||(a.synonyms??[]).includes(i));if(o.length===1)return D(o[0]);if(o.length>1)throw new Error(`(UNEXPECTED) multiple param infos found with argIdentifier. do you have overlapping arg names/synonyms? (${i} found in (${o.length} param infos)) (E: d599a6647c5ead6d9fbac4e4c96e6d23)`);if(r)throw new Error(`(UNEXPECTED) param info not found for argIdentifier (${i}) (E: 47e704068f2eb5a0551cf45d0e72c823)`);return}catch(o){throw console.error(`${t} ${f(o)}`),o}}b(ve,"getParamInfo");function Br({rawArg:i}){let e=`[${Br.name}]`;try{F&&console.log(`${e} starting... (I: 5d51b75b7a025e2e3fa498da7c08ac24)`);let r=b(a=>a.startsWith('"')&&a.endsWith('"')?"double":a.startsWith("'")&&a.endsWith("'")?"single":void 0,"fnGetQuoteType"),t=b(a=>r(a)?a.slice(0,a.length-1).slice(1):a,"fnStripQuotes"),o=r(i);if(o)return{prefix:void 0,identifier:void 0,isNameValuePair:!1,valueInfo:{rawValueString:i.concat(),resolvedValueString:t(i),singleQuoted:o==="single",doubleQuoted:o==="double"}};if(i.match(/^(--\w|-\w|:\w)/))if(i.includes("=")){let a=/^(--|-|:)([\w\-]+)=(['"]?.+['"]?)$/,n=i.match(a);if(!n)throw new Error(`invalid rawArg (${i}). expected an arg matching regexp ${a}. (E: 05ca56163e184faeb66456a0e9190b28)`);let[l,d,c,s]=n,m=r(s);return{prefix:d,identifier:c,isNameValuePair:!0,valueInfo:{rawValueString:s,resolvedValueString:m?t(s):s,singleQuoted:m==="single",doubleQuoted:m==="double"}}}else{let a=/^(--|-|:)([\w\-]+)$/,n=i.match(a);if(!n)throw new Error(`invalid rawArg (${i}). expected an arg matching regexp ${a}. at this point, it should have a prefix (e.g. "--"), and a single identifier (should be a flag since there is no equal sign). (E: 93305923465d9449bdce3f81373fae24)`);let[l,d,c]=n;return{prefix:d,identifier:c,isNameValuePair:!1,valueInfo:{rawValueString:void 0,resolvedValueString:"true",singleQuoted:!1,doubleQuoted:!1}}}else{if(i.includes("="))throw new Error(`invalid rawArg (${i}). isn't quoted, doesn't start with prefix, but it does have an equal sign? that's bad. (E: e8ad15211ce6fd56a4a214c2778c4724)`);return{prefix:void 0,identifier:void 0,isNameValuePair:!1,valueInfo:{rawValueString:i,resolvedValueString:i,doubleQuoted:!1,singleQuoted:!1}}}}catch(r){throw console.error(`${e} ${r.message}`),r}finally{F&&console.log(`${e} complete.`)}}b(Br,"parseRawArg");function Ue({args:i,paramInfos:e,bareArgParamInfo:r=D(Lr),logalot:t}){let o=`[${Ue.name}]`;try{(F||t)&&console.log(`${o} starting... (I: f389aaa490796dfd823bc7b9d4e58b23)`);let a=!1;return i.map((l,d)=>{let c,s,m,{prefix:u,identifier:h,isNameValuePair:p,valueInfo:I}=Br({rawArg:l});if(u){if((F||t)&&console.log(`identifier: ${h} (I: 519ce129a1e34753a9070d3a205c9a8b)`),!h)throw new Error("(UNEXPECTED) prefix truthy but identifier falsy? (E: f33ab3a2b623acc0d1bc36685edfaf24)");if(c=h,!I)throw new Error("(UNEXPECTED) !valueInfo? (E: 05249a361a59008cd313d2dfa8f08b24)");if(p){F&&console.log(`${o} identifier with equals: ${h}. (I: 5f8ae91d1ddd4a7f94c0f4fb7e688502)`);let w=ve({argIdentifier:c,paramInfos:e,throwIfNotFound:!0});m={...w,value:Fe({paramInfo:w,valueString:I.rawValueString}),identifier:c}}else{F&&console.log(`${o} identifier without equals: ${h}`),c=h;let w=ve({argIdentifier:c,paramInfos:e,throwIfNotFound:!0});m={...w,value:Fe({paramInfo:w,valueString:void 0}),identifier:c,isFlag:!0}}}else if(d===0){if(!I)throw new Error("(UNEXPECTED) argIndex === 0 but valueInfo falsy? (E: 4642b42c855593b7ffdacb85f27dab24)");if(!I.rawValueString)throw new Error("(UNEXPECTED) !valueInfo.rawValueString? (E: 0b35f71eb8227cdd67ccfc32f2e45824)");if(I.singleQuoted)throw new Error("first arg is quoted? (single). a bare arg in first position must be a command/flag. (E: 28cce820417fd3b4f95ba6c7e94b4624)");if(I.doubleQuoted)throw new Error("first arg is quoted? (double). a bare arg in first position must be a command/flag. (E: 0b948c87081043fdb168f08ba05ebbce)");c=I.rawValueString,m={...ve({argIdentifier:c,paramInfos:e,throwIfNotFound:!0}),value:!0,identifier:c,isFlag:!0}}else{if((F||t)&&console.log("bare arg found. (I: d6f67074c7e44a63864948d4bf04bee8)"),!r)throw new Error(`bare arg found (one without prefix like "--" or ":") but there is no param info expected for bare args. You must provide which param info a bare arg maps to in this ${Ue.name} call. (E: 650dd3695d62f0f87dd0cbafbf068c23)`);if(a)throw new Error('You can have the first arg - a special arg like a command - be bare (without prefix like "--" or ":") and one additional non-positional arg be bare. But more than one non-positional bare arg found. Also remember if the arg has spaces then you have to enclose it with single or double quotes. (E: 74dea8f13f0c14e3b7a2f125c7faca23)');a=!0;let w=D(r);m={...w,isBare:!0,identifier:w.name,value:Fe({paramInfo:w,valueString:l})}}return F&&console.log(`${o} argInfo: ${g(m)}`),m})}catch(a){throw console.error(`${o} ${f(a)}`),a}finally{(F||t)&&console.log(`${o} complete.`)}}b(Ue,"buildArgInfos");var te=".",v="utf8",re="ibgib",oe=`000_${ne}`,U="ibgibs",j="meta",V="bin",H="dna",ae="l",je="This is a filesystem space. The ibgib data contains settings for the space itself, and the witness ibgib object interfaces with a back end that is hierarchical like a filesystem. Descend from this class if you're working with a similar space.",Rr=240,Ve="/",Fr=32;function pt(){return async({title:i,msg:e})=>{let r=`[${pt.name}]`,t;try{if(!e)throw new Error("msg required. (E: c39d1656b6b803e11bad46efe15b6823)");t=await ue({title:i,msg:e})}catch(o){throw console.error(`${r} ${f(o)}`),o}return t||t===""?t:null}}b(pt,"getFnPrompt");var E=!1,vr={version:"3",uuid:Pe,name:ne,classname:"FilesystemSpace_V1",baseDir:te,encoding:v,baseSubPath:re,spaceSubPath:oe,ibgibsSubPath:U,metaSubPath:j,binSubPath:V,dnaSubPath:H,longSubPath:ae,longPathLength:Rr,mitigateLongPaths:!0,persistOptsAndResultIbGibs:!1,validateIbGibAddrsMatchIbGibs:!1,longPollingIntervalMs:se,allowPrimitiveArgs:!1,catchAllErrors:!0,description:je,trace:!1};var Ee=class i extends Pr{static{b(this,"FilesystemSpace_V1")}lc=`[${i.name}]`;ibGibs={};pathExistsMap={};constructor(e,r){super(e??D(vr),r)}async validateWitnessArg(e){let r=`${this.lc}[${this.validateWitnessArg.name}]`,t=[];try{t=await super.validateWitnessArg(e)||[],e.data?.cmd==="put"&&(e.ibGibs||[]).length===0&&t.push('when "put" cmd is called, ibGibs required.'),e.data?.cmd==="get"&&(e.data?.ibGibAddrs||[]).length===0&&t.push('when "get" cmd is called, ibGibAddrs required.')}catch(o){throw console.error(`${r} ${f(o)}`),o}finally{t?.length>0&&console.error(`${r} errors: ${t}`)}return t}async initialize(){let e=`${this.lc}[${this.initialize.name}]`;try{E&&console.log(`${e} starting...`),this.data||(this.data=D(vr),this.data=this.data),this.data?.classname||(this.data.classname=i.name),this.data.baseDir||(this.data.baseDir=te),this.data.encoding||(this.data.encoding=v),this.data.baseSubPath||(this.data.baseSubPath=re),this.data.spaceSubPath||(this.data.spaceSubPath=oe),this.data.ibgibsSubPath||(this.data.ibgibsSubPath=U),this.data.metaSubPath||(this.data.metaSubPath=j),this.data.binSubPath||(this.data.binSubPath=V),this.data.dnaSubPath||(this.data.dnaSubPath=H),this.ib=Ce({space:this,classname:i.name}),this.gib=await Q({ibGib:this})}catch(r){console.error(`${e} ${f(r)}`)}finally{E&&console.log(`${e} complete.`)}}hasInCache({addr:e}){return z({gib:G({ibGibAddr:e}).gib})?Promise.resolve(!1):Object.keys(this.ibGibs).includes(e)?Promise.resolve(!0):this.cacheSvc?this.cacheSvc.has({addr:e}):Promise.resolve(!1)}async putInCache({addr:e,ibGib:r}){let t=`${this.lc}[${this.putInCache.name}][${e}]`;try{if(E&&console.log(`${t} starting...`),!r)throw new Error("ibGib required (E: 993e26fe40894bab9feccac3938f37df)");if(z({ibGib:r})){E&&console.log(`${t} skipping caching primitive (I: a04dfb691582a4db8a0bfecfefe5e622)`);return}else E&&console.log(`${t} caching addr (I: b996a306f256ee5f39db1e2f5d515c22)`);this.ibGibs[e]=r,this.cacheSvc&&await this.cacheSvc.put({addr:e,ibGib:r})}catch(o){throw console.error(`${t} ${f(o)}`),o}finally{E&&console.log(`${t} complete.`)}}async getFromCache({addr:e}){let r=`${this.lc}[${this.getFromCache.name}]`;try{E&&console.log(`${r} starting...`);let t=this.ibGibs[e];return!t&&this.cacheSvc&&(t=(await this.cacheSvc.get({addr:e}))?.ibGib),t}catch(t){throw console.error(`${r} ${f(t)}`),t}finally{E&&console.log(`${r} complete.`)}}deleteFromCache({addr:e}){let r=`${this.lc}[${this.getFromCache.name}]`;try{return E&&console.log(`${r} starting...`),delete this.ibGibs[e],Promise.resolve()}catch(t){throw console.error(`${r} ${f(t)}`),t}finally{E&&console.log(`${r} complete.`)}}async getImpl(e){let r=`${this.lc}[${this.getImpl.name}]`,t=[],o={optsAddr:_({ibGib:e})},a;try{if(!e.data)throw new Error("arg.data is falsy");let{ibGibAddrs:n,isDna:l}=e.data;n||=[];let d=n.filter(s=>ee({addr:s})),c=n.filter(s=>!d.includes(s));E&&console.log(`${r} getting non-bin ibgibs. ibGibAddrsNonBin: ${c}`);for(let s=0;s<c.length;s++){let m=c[s];if(!e.data.force&&await this.hasInCache({addr:m})){E&&console.log(`${r} YES found in naive cache. (I: 0b23f394fd944c2a96df3543dd0a59c5)`);let u=await this.getFromCache({addr:m});if(!u)throw new Error("(UNEXPECTED) we had in cache but failed to retrieve? (E: 4af334f7a90cb22ffa3b549d0db19a22)");t.push(u)}else{let u=await this.getFile({addr:m,isDna:l});u?.success&&u.ibGib?(await this.putInCache({addr:m,ibGib:u.ibGib}),t.push(u.ibGib)):(a||(a=[]),a.push(m))}}for(let s=0;s<d.length;s++){let m=d[s],{binHash:u,binExt:h}=nt({addr:m});E&&console.log(`${r} getting binHash.binExt: ${u}.${h}`);let p=await this.getFile({addr:m});p?.success&&p.ibGib?(E&&console.log(`${r} getResult.success. ibGib.data?.length: ${p.ibGib.data?.length}`),t.push(p.ibGib)):(E&&console.log(`${r} not found in files. (binData is not cached atm)`),a||(a=[]),a.push(m))}a&&a.length>0?(E&&console.log(`${r}[${this.data.uuid.substring(0,8)}] notFoundIbGibAddrs: ${a} (I: 10f7e35e75445a1d64b353851d00b923)`),o.addrsNotFound=a,o.errors??=[],o.errors.push("notFoundIbGibAddrs.length > 0 (E: e7eadcfa2f4643238590469bc917a35c)"),o.success=!1):o.success=!0}catch(n){let l=f(n);console.error(`${r} error: ${l}`),o.errors=[l]}try{let n=await this.resulty({resultData:o});return t.length>0&&(n.ibGibs=t),n}catch(n){throw console.error(`${r} ${f(n)}`),n}}async putImpl(e){let r=`${this.lc}[${this.putImpl.name}]`,t={optsAddr:_({ibGib:e})},o=[];try{if(E&&console.log("validating arg and internal state..."),!e.data)throw new Error("arg.data required. (E: d64a46e5efab4b09b57850ecf0854386)");if(e.ibGibs?.length===0)throw new Error("arg.ibGibs required. (E: b4930d564b284fb9b26b542f14143a28)");return E&&console.log("arg and internal state validated...calling impl func"),await this.putIbGibsImpl(e)}catch(n){let l=f(n);console.error(`${r} error: ${l}`),t.errors=o.concat([l]),t.success=!1}return await this.resulty({resultData:t})}async putIbGibsImpl(e){let r=`${this.lc}[${this.putIbGibsImpl.name}]`,t={optsAddr:_({ibGib:e})},o=[],a=[],n=[];try{if(!e.data)throw new Error("arg.data is falsy (E: aae5757c158d4a799deb7fca9d6245f0)");let{isDna:d,force:c}=e.data,s=e.ibGibs||[],m=[];for(let u=0;u<s.length;u++){let h=s[u],p=_({ibGib:h});E&&console.log(`${r} checking to see if already exists...`);let I=await this.getFile({addr:p,isDna:d});if(I?.success&&I.ibGib)if(E&&console.log(`${r} already exists...`),c){E&&console.log(`${r} Forcing save of already put addr: ${p} (I: 325f363e5d438b43c24b810c150e4e22)`);let w=await this.putFile({ibGib:h,isDna:d});w.success?d||await this.putInCache({addr:p,ibGib:h}):(o.push(w.errorMsg||`${r} error putting ${p}`),n.push(p))}else E&&a.push(`${r} skipping (non-force) of already exists addr: ${p} (W: b7fbe22473014dd090db88aee631fecb)`),m.push(p);else{E&&console.log(`${r} does NOT already exist...`);let w=await this.putFile({ibGib:h,isDna:d});w.success?d||await this.putInCache({addr:p,ibGib:h}):(o.push(w.errorMsg||`${r} error putting ${p}`),n.push(p))}}m.length>0&&(t.addrsAlreadyHave=m),a.length>0&&(t.warnings=a),o.length===0?t.success=!0:(t.errors=o,t.addrsErrored=n)}catch(d){let c=f(d);console.error(`${r} error: ${c}`),t.errors=o.concat([c]),t.addrsErrored=n,t.success=!1}return await this.resulty({resultData:t})}async deleteImpl(e){let r=`${this.lc}[${this.deleteImpl.name}]`,t={optsAddr:_({ibGib:e})},o=[],a=[],n=[],l=[];try{if(!e.data)throw new Error("arg.data is falsy");let{isDna:c}=e.data,s=e.data.ibGibAddrs||[];for(let m=0;m<s.length;m++){let u=s[m];await this.deleteFromCache({addr:u});let h=await this.deleteFile({addr:u,isDna:c});h?.success?n.push(u):(o.push(h.errorMsg||`delete failed: addr (${u})`),l.push(u))}if(a.length>0&&(t.warnings=a),o.length===0)t.success=!0,t.addrs=n;else if(t.errors=o,t.addrsErrored=l,n.length>0){let m=`some addrs (${n.length}) were indeed deleted, but not all. See result addrs and addrsErrored.`;t.warnings=(t.warnings||[]).concat([m])}}catch(c){let s=f(c);console.error(`${r} error: ${s}`),t.errors=o.concat([s]),t.addrsErrored=l,t.success=!1}return await this.resulty({resultData:t})}async getAddrsImpl(e){let r=`${this.lc}[${this.getAddrsImpl.name}]`;throw new Error(`${r} not implemented. (E: 74dd50ce4b564559bc44d6c08d446cb3)`)}async canGetImpl(e){let r=`${this.lc}[${this.canGetImpl.name}]`,t={optsAddr:_({ibGib:e})};try{throw new Error("not implemented (E: 2a45977c584c6bbbc4f164c16106bd22)")}catch(a){let n=f(a);console.error(`${r} error: ${n}`),t.errors=[n]}return await this.resulty({resultData:t})}async canPutImpl(e){let r=`${this.lc}[${this.canPutImpl.name}]`,t={optsAddr:_({ibGib:e})};try{throw new Error("not implemented (E: 25a005d496efc69faefdec155ffb4a22)")}catch(a){let n=f(a);console.error(`${r} error: ${n}`),t.errors=[n]}return await this.resulty({resultData:t})}async canDeleteImpl(e){let r=`${this.lc}[${this.canDeleteImpl.name}]`;throw new Error(`${r} not implemented (E: a3306138b4ac429ba5f8f293ad7dd07b)`)}async getLatestAddrsImpl(e){let r=`${this.lc}[${this.getLatestAddrsImpl.name}]`,t={optsAddr:_({ibGib:e})};try{if(E&&console.log(`${r} starting...`),!e.data)throw new Error("arg.data required (E: cd92cb965d711c8014455c69e898ac23)");if(!e.data.ibGibAddrs)throw new Error("arg.data.ibGibAddrs required (E: 2d0824f9b8aec916a751ef17e2d4a823)");if(e.data.ibGibAddrs.length===0)throw new Error("arg.data.ibGibAddrs required to be non-zero (E: 2d0824f9b8aec916a751ef17e2d4a823)");let o=new Set,a=new Set,n=new Set;t.latestAddrsMap={};for(let l=0;l<e.data.ibGibAddrs.length;l++){let d=e.data.ibGibAddrs[l],c=await this.getFile({addr:d});if(c?.success&&c.ibGib){let s=c.ibGib,m=await this.getLatestAddrImpl({ibGib:s});m?(o.add(m),t.latestAddrsMap[d]=m):(console.warn(`expecting latestAddr to either be assigned or throw. Adding addr (${d}) to addrsErrored. (W: 35c3712b1a1e579ccf28c389eb2ecc22)`),n.add(d))}else if(c?.success)a.add(d),t.latestAddrsMap[d]=null;else if(c.errorMsg)n.add(d);else throw new Error(`unknown (invalid) getResult: ${g(c)} (E: 2674ad5d30294be29a3d3fdcf54ef6d9)`)}t.addrs=o.size>0?[...o]:void 0,t.addrsErrored=n.size>0?[...n]:void 0,t.addrsNotFound=a.size>0?[...a]:void 0,t.success=!0}catch(o){let a=f(o);console.error(`${r} error: ${a}`),t.errors=[a]}try{return await this.resulty({resultData:t})}catch(o){throw console.error(`${r}[resulty] ${f(o)}`),o}}async getLatestAddrImpl({ibGib:e,ibGibAddr:r}){let t=`${this.lc}[${this.getLatestAddrImpl.name}]`;E&&console.log(`${t} starting...`);try{if(!e&&!r)throw new Error("either ibGib or ibGibAddr required (E: 1f8f0cb61d1b4c708b06762048735c22)");if(e&&r&&_({ibGib:e})!==r)throw new Error("(UNEXPECTED) both ibGib and ibGibAddr provided but they don't match? (E: 01d1938252ef49b53d41d58abfaac523)");r||=_({ibGib:e});let{ib:o,gib:a}=G({ibGibAddr:r});if(!a)throw new Error("(UNEXPECTED) gib falsy? (E: d2506b99162e27348310f8e7e68e4523)");if(z({gib:a}))return console.warn(`${t} incoming ibGibAddr is primitive. Why are we calling getLatest on a primitive? returning incoming addr. (W: 57fcf479d5cc48d393841ec3d53587fa)`),r;if(["fork","mut8","rel8"].includes(o))return E&&console.log(`${t} probably is dna (ib === fork/mut8/rel8). returning incoming ibGibAddr early. (I: 2081628936de6a36bbb51224f0223523)`),r;let l=K({ibGibAddr:r}),{tjpGib:d}=l;d||=a;let c=await this.getMetaStoneAddrs({tjpGib:d,ibGibAddr:r});if(c.length===0)return E&&console.warn(`${t} no metastones found for given ibGibAddr (${r}). returning incoming ibGibAddr (W: a6a35cbbf40745e8a3e202226bb457ff)`),r;let m=c.map($=>[$,G({ibGibAddr:$}).ib]).map(([$,B])=>[$,Ne({ib:B})]).sort(($,B)=>{let[C,L]=$,[_a,ye]=B;return L.n>ye.n?-1:L.n<ye.n?1:L.timestampInTicks>ye.timestampInTicks?-1:L.timestampInTicks<ye.timestampInTicks?1:0});if(E&&(console.log(`${t} console.dir(metaStoneAddrsAndIbInfos_descending)... (I: 1bb5e7d994248e8b6559ca2863c72123)`),console.dir(m)),m.length===0)throw new Error("(UNEXPECTED) metaStoneAddrsAndIbInfos_descending is empty? earlier in the function there should have been a check. did getMetaStoneAddrs return a populated list but no stones were found? (E: 63c035ebed77741f2330c7a625823f23)");let[u,h]=m[0];E&&console.log(`${t} [latestMetaStoneAddr, latestMetaStoneInfo]: ${[u,h]} (I: 1307ca46b4abd62c7a30fe87c08fa923)`);let p,I=await this.getFile({addr:u,isDna:!1});if(I?.success&&I.ibGib){p=I.ibGib;let $=await cr({ibGib:p})??[];if($.length>0)throw new Error(`invalid metastone (${u}) for tjpGib (${d}). errors: ${$.join("|")} (E: 7fa7c6fa696d860cc7a9148861f96123)`)}else throw new Error(`(UNEXPECTED) we just found a metastone addr (${u}) that was read from the directory's contents, but we can't get the file? (E: 3b934b4adcd9d0efee7820f8d4012e23)`);let y=p.rel8ns[nr].at(0);if(!y)throw new Error("metastone passed validation but latestMetaStoneRel8ns[META_STONE_TARGET_REL8N_NAME].at(0) is empty? (E: c188ec0089ad86efe4d925c118599d23)");return y}catch(o){throw console.error(`${t} ${f(o)}`),o}finally{E&&console.log(`${t} complete.`)}}async persistOptsAndResultIbGibs({arg:e,result:r}){let t=`${this.lc}[${this.persistOptsAndResultIbGibs.name}]`;(E||this.data?.trace)&&console.log(`${t} doing arg?.data?.cmd: ${e?.data?.cmd}, result?.data?.success: ${r?.data?.success}`);let o=[e,r??Se],a=await Be({argData:{cmd:"put",catchAllErrors:!0,ibGibAddrs:o.map(l=>_({ibGib:l}))}});a.ibGibs=o;let n=await this.putIbGibsImpl(a);if(!n?.data)throw new Error("resPut.data falsy (E: f3115254240b8eff6cd82878a4a35a23)");(!n.data.success||n.data.errors)&&console.error(`${t} Errors persisting arg & result: ${(n.data?.errors??["unknown errs"]).join(`
2
2
  `)}. (E: 65ef314a4f8e445d851dab5b290e9a03)`)}async ensurePermissions(){let e=`${this.lc}[${this.ensurePermissions.name}]`;try{return!0}catch(r){return console.error(`${e} Dont have permissions... error: ${f(r)}`),!1}}async ensureAllDirsExist(){let e=`${this.lc}[${this.ensureAllDirsExist.name}]`;console.warn(`${e} not implemented in base class (W: c1b63ec036134db5960e0d3ea169d15b)`)}getTjpSubpath({viaTargetAddr:e,viaTargetTjpGib:r,viaMetaStoneAddr:t,pathSeparator:o=Ve}){let a=`${this.lc}[${this.getTjpSubpath.name}]`;try{if(E&&console.log(`${a} starting... (I: c65dabcf47acf6d6881087b404861e23)`),!e&&!r&&!t)throw new Error("either viaTargetAddr/TargetTjpGib/metaStoneAddr required (E: a784c4f0369e6e38eafcdf3289c38523)");if(!this.data)throw new Error("(UNEXPECTED) this.data falsy? (E: 441ff1b038366a1c07a94cf128454923)");if(o||(console.warn(`${a} pathSeparator falsy? using default: "${Ve}" (W: 295d21ab226743dd83a721f78870ab6e)`),o=Ve),r||(t?r=Ne({ib:G({ibGibAddr:t}).ib}).tjpGib:r=K({ibGibAddr:e}).tjpGib),!r)throw new Error("targetTjpGib could not be gotten. are you sure this has a tjp? or is the ibGib a stone? (E: e507f1996aaa68a229a3158b3dbc5723)");let{baseSubPath:n,spaceSubPath:l,ibgibsSubPath:d}=this.data;return`${n}${o}${l}${o}${d}${o}${r}`}catch(n){throw console.error(`${a} ${f(n)}`),n}finally{E&&console.log(`${a} complete.`)}}async buildPath({addr:e,isDna:r,isBin:t,ensureMetaStonePaths:o,pathSeparator:a="/",pretendItsALongPath:n=!1,addrIsForAMetaStone:l}){let d=`${this.lc}[${this.buildPath.name}]`;try{E&&console.log(`${d} starting... (I: d630823bbe0e1a1aa3592103768e8423)`);let c=this.data;if(!c)throw new Error("this.data required (E: d2553d11b637577aa7b074387b613f23)");if(!e)throw new Error("addr required (E: 68149eccdbe2e6ef95eb50d588d68423)");let s;a||="/";let{ib:m,gib:u}=G({ibGibAddr:e});if(!u)throw new Error("gib required in building paths. if it's a primitive ibgib, then it shouldn't be put into/gotten from a space (E: 8a34bc925496c35d1892638623ec0a23)");s=`${c.baseSubPath}${a}${c.spaceSubPath}${a}`,E&&console.log(`${d} resPath as of space subpath: ${s} (I: 5feccfadec1d8ac856243e78377c1e23)`);let h=pe({addr:e});h&&(l=!0);let p=u.split(Te);if(p.length===1)if(r?(s+=`${c.dnaSubPath}${a}`,E&&console.log(`${d} resPath dna appended subpath: ${s} (I: eecd26dfc1699110ae5b91dd68438f23)`)):t&&(s+=`${c.binSubPath}${a}`,E&&console.log(`${d} resPath bin appended subpath: ${s} (I: b53248d5b8d142108cf5a363f148980b)`)),l||h){let C;h?C=Ne({ib:m}).tjpGib:C=K({ibGibAddr:e}).tjpGib??G({ibGibAddr:e}).gib,s+=`${C}${a}`}else s+=`${u}${a}`;else if(p.length===2){let{tjpGib:C,punctiliarHash:L}=K({gib:u,gibDelimiter:Te});s+=`${C}${a}${L}${a}`}else throw new Error(`invalid gib atow (11/2023). expected only one gib delimiter (${Te}) that splits two pieces of the gib, but we have ${p.length} many pieces. gib: ${u} (E: 7d5f8608d79854e6d1d2878975258423)`);let I=!!c.mitigateLongPaths,w=c.longPathLength,y;if(ee({addr:e})){let{binExt:C}=nt({addr:e});y=C.concat()}else y="json";let $=`${m}.${y}`,B=`${e}.${y}`;if(I&&w){let C=" you have to place the root folder higher up in the OS's filesystem. (and you should put in a change request to the OS to fix their weak sauce/move to/fund a better OS.) Will try what we have and hope+pray.";if(s.length>=w)throw new Error(`path is already too long without even having a filename. ${C} (E: c126522a5cda4c2acb6de3a92fc2c423)`);if(s.length+m.length>=w||n)if(E&&console.warn(`${d} the path is too long when adding the full ib as the filename (even without the ext). (W: 3011a1e58641c53274d4776f58bb5323)`),l)h&&console.error(`can't even get a metastone ib in the path. ${C} (E: 962c52deb7a5b57842c97676a1192623)`),s+=B;else{E&&console.log(`${d} non metastone ib found (not logging ib here for privacy). will try to shorten... (I: 73dcb3f019c9b48b92fe67a9c4f2f123)`);let L=await this.buildPath_getShorterFilenameExtSubpath_ibTooLong_nonMetaStone({ib:m,ext:y,pathSeparator:a});s+=L,s.length>=w&&console.error(`${d} shortened filenamePlusExt and the path is still too long. i give up. ${C} (E: df9e52098b94a99212c15c167e4d9f23)`)}else l?s+=B:s+=$}else l?s+=B:s+=$;return E&&console.log(`${d} returning resPath: ${s} (I: 62a76a630335a872a4fc5f25dec4b623)`),s}catch(c){throw console.error(`${d} ${f(c)}`),c}finally{E&&console.log(`${d} complete.`)}}async buildPath_getShorterFilenameExtSubpath_ibTooLong_nonMetaStone({ib:e,ext:r,pathSeparator:t}){let o=`${this.lc}[${this.buildPath_getShorterFilenameExtSubpath_ibTooLong_nonMetaStone.name}]`;try{E&&console.log(`${o} starting... (I: 1f14c5de4174d726182c5dc97bd62a23)`);let a="",n=this.data.longSubPath||ae;n.length!==1&&(console.warn(`${o} longSubPath (this.data.longSubPath || IBGIB_LONG_SUBPATH) longer than one char. should be 1 char. substringing to the first char. (W: 8c19a983730f4b62ac4208f7d21c90fc)`),n=n.substring(0,1)||"l"),a+=`${n}${t}`;let d=(await Ye({s:e})).substring(0,4);a+=`${d}${t}`;let c=e.substring(0,Fr);return a+=`${c}.${r}`,a}catch(a){throw console.error(`${o} ${f(a)}`),a}finally{E&&console.log(`${o} complete.`)}}};var ht={version:"1",uuid:Pe,name:ne,classname:"WebFilesystemSpace_V1",baseDir:X(),encoding:v,baseSubPath:re,spaceSubPath:oe,ibgibsSubPath:U,metaSubPath:j,binSubPath:V,dnaSubPath:H,longSubPath:ae,mitigateLongPaths:!1,longPathLength:9999999999999,persistOptsAndResultIbGibs:!1,validateIbGibAddrsMatchIbGibs:!1,longPollingIntervalMs:se,allowPrimitiveArgs:!1,catchAllErrors:!0,description:je,trace:!1},q={ascii:"ascii",utf8:"utf8",utf_8:"utf-8","utf-8":"utf-8",utf16le:"utf16le",ucs2:"ucs2",ucs_2:"ucs-2","ucs-2":"ucs-2",base64:"base64",base64url:"base64url",latin1:"latin1",binary:"binary",hex:"hex"},jr=Object.values(q),Vr=[q.utf8,q.utf16le,q.base64,q.binary,void 0];var N=S,Hr=new xe;async function gt({path:i,directory:e,encoding:r}){let t=`[${gt.name}]`;try{N&&(console.log(`${t} starting...`),(i.includes("bootstrap^gib")||i.includes("gib/bootstrap.json"))&&console.log(`${t} trying bootstrap^gib... (I: cde10726c55737e5c5a2e0a66a188e24)`));let o=Hr.join(e,i);N&&console.log(`${t} fullPath: ${o} (I: e5cfdd62247c6ba05dffb64d8f25d424)`),r||="utf8";let a,n=await It(o,{encoding:r});return n instanceof Uint8Array?a=ct(n):typeof n=="string"&&(a=n),N&&(console.log(`${t} record found. data length: ${a?.length??0}. fullPath: ${o}. console.dir(resRead)... (I: be5cfbf04874b4e8e4787ad966cb8424)`),console.dir(a)),a??null}catch(o){return N&&console.log(`${t} fullPath not found from directory (${e}) and path (${i})
3
3
  error:
4
4
  ${f(o)} (I: 8f93e583c048fac0682f55ca74df0324)`),null}finally{N&&console.log(`${t} complete. (I: 22a6958aee350e4d99b76057ec8b9224)`)}}b(gt,"tryRead");async function Et({path:i,directory:e,encoding:r}){let t=`[${Et.name}]`;try{N&&(console.log(`${t} starting...`),i.includes("bootstrap^gib")&&console.log(`${t} trying bootstrap^gib... (I: acdb59d399ca16c45456392d935c0524)`));let o=Hr.join(e,i);N&&console.log(`${t} fullPath: ${o} (I: abef0200a4b823b446713349ca102924)`),r||="utf8";let a,n=Qe([r,...jr]),{dataBuffer:l,dataString:d,inputPath:c,detectedEncoding:s}=await qr({inputPath:i,encodingsToTry:n});if(!l)throw new Error("getFileDataAndEncoding yielded falsy dataBuffer (E: f748ffc8c71c92be06a3566102ba8e24)");return a=l,N&&(console.log(`${t} record found. data length: ${a?.length??0}. fullPath: ${o}. console.dir(resRead)... (I: b0c1da7e3849edd3edef899d74b21a24)`),console.dir(a)),{dataBuffer:l,dataString:d,inputPath:c,detectedEncoding:s}}catch(o){return N&&console.log(`${t} fullPath not found from directory (${e}) and path (${i})