@lapxo/bound 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -20
- package/TARGET.bound +70 -27
- package/assets/wasm/guest.js +4 -0
- package/assets/wasm/manifest.json +27 -0
- package/assets/wasm/runtime.js +6 -0
- package/assets/wasm/runtime.wasm +0 -0
- package/dist/cli/accept.js +83 -59
- package/dist/cli/act-result.d.ts +9 -0
- package/dist/cli/act-result.js +68 -13
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.js +5 -2
- package/dist/cli/custodian.d.ts +1 -0
- package/dist/cli/custodian.js +29 -0
- package/dist/cli/native-descendant.d.ts +1 -0
- package/dist/cli/native-descendant.js +19 -0
- package/dist/cli/native.d.ts +1 -0
- package/dist/cli/native.js +60 -0
- package/dist/cli/observe.js +9 -2
- package/dist/cli/pass.js +9 -4
- package/dist/cli/place.d.ts +2 -0
- package/dist/cli/place.js +7 -4
- package/dist/cli/standing-result.js +7 -26
- package/dist/cli/verb.js +65 -9
- package/dist/engine/index.d.ts +11 -0
- package/dist/engine/index.js +9 -0
- package/dist/engine/object.d.ts +17 -0
- package/dist/engine/object.js +38 -0
- package/dist/fold/admission-history.js +2 -2
- package/dist/fold/claims.d.ts +4 -0
- package/dist/fold/claims.js +23 -3
- package/dist/fold/closed.d.ts +1 -1
- package/dist/fold/closed.js +36 -7
- package/dist/fold/digests.d.ts +1 -1
- package/dist/fold/digests.js +6 -4
- package/dist/fold/evidence.d.ts +1 -1
- package/dist/fold/kept.js +2 -1
- package/dist/fold/object.d.ts +3 -17
- package/dist/fold/object.js +2 -38
- package/dist/fold/observed.d.ts +1 -0
- package/dist/fold/observed.js +54 -9
- package/dist/fold/readers.d.ts +4 -3
- package/dist/fold/readers.js +18 -13
- package/dist/fold/resolved.js +12 -2
- package/dist/fold/signers.js +2 -2
- package/dist/host/adapters/modules/javascript.d.ts +2 -0
- package/dist/host/adapters/modules/javascript.js +8 -6
- package/dist/host/admitted-place.d.ts +5 -0
- package/dist/host/admitted-place.js +57 -0
- package/dist/host/capsule-process.d.ts +1 -1
- package/dist/host/capsule-process.js +4 -1
- package/dist/host/capsule.d.ts +4 -0
- package/dist/host/capsule.js +16 -2
- package/dist/host/cell-receipts.js +1 -1
- package/dist/host/contextual-place.d.ts +59 -0
- package/dist/host/contextual-place.js +77 -0
- package/dist/host/hash.d.ts +7 -0
- package/dist/host/hash.js +6 -0
- package/dist/host/io.d.ts +2 -0
- package/dist/host/io.js +2 -0
- package/dist/host/lifetime.js +61 -22
- package/dist/host/native/bounded-file.d.ts +8 -0
- package/dist/host/native/bounded-file.js +32 -0
- package/dist/host/native/command.d.ts +36 -0
- package/dist/host/native/command.js +91 -0
- package/dist/host/native/control-bridge-worker.d.ts +1 -0
- package/dist/host/native/control-bridge-worker.js +88 -0
- package/dist/host/native/control-bridge.d.ts +30 -0
- package/dist/host/native/control-bridge.js +110 -0
- package/dist/host/native/control-selection.d.ts +29 -0
- package/dist/host/native/control-selection.js +32 -0
- package/dist/host/native/custody.d.ts +5 -0
- package/dist/host/native/custody.js +91 -0
- package/dist/host/native/deadline.d.ts +12 -0
- package/dist/host/native/deadline.js +28 -0
- package/dist/host/native/descendants.d.ts +1 -0
- package/dist/host/native/descendants.js +528 -0
- package/dist/host/native/generated-custodian.d.ts +122 -0
- package/dist/host/native/generated-custodian.js +267 -0
- package/dist/host/native/generated.d.ts +217 -0
- package/dist/host/native/generated.js +379 -0
- package/dist/host/native/image.d.ts +36 -0
- package/dist/host/native/image.js +45 -0
- package/dist/host/native/jobs.d.ts +75 -0
- package/dist/host/native/jobs.js +148 -0
- package/dist/host/native/loader.d.ts +80 -0
- package/dist/host/native/loader.js +269 -0
- package/dist/host/native/materialize.d.ts +22 -0
- package/dist/host/native/materialize.js +175 -0
- package/dist/host/native/module-closure.d.ts +27 -0
- package/dist/host/native/module-closure.js +99 -0
- package/dist/host/native/module-syntax.d.ts +8 -0
- package/dist/host/native/module-syntax.js +63 -0
- package/dist/host/native/native-binary.d.ts +54 -0
- package/dist/host/native/native-binary.js +115 -0
- package/dist/host/native/native-program.d.ts +56 -0
- package/dist/host/native/native-program.js +72 -0
- package/dist/host/native/node-jobs.d.ts +84 -0
- package/dist/host/native/node-jobs.js +187 -0
- package/dist/host/native/node-launch.d.ts +72 -0
- package/dist/host/native/node-launch.js +159 -0
- package/dist/host/native/preload.d.ts +1 -0
- package/dist/host/native/preload.js +45 -0
- package/dist/host/native/reading.d.ts +91 -0
- package/dist/host/native/reading.js +249 -0
- package/dist/host/native/receipt-environment.d.ts +3 -0
- package/dist/host/native/receipt-environment.js +41 -0
- package/dist/host/native/references.d.ts +5 -0
- package/dist/host/native/references.js +30 -0
- package/dist/host/native/root.d.ts +17 -0
- package/dist/host/native/root.js +37 -0
- package/dist/host/native/route.d.ts +66 -0
- package/dist/host/native/route.js +216 -0
- package/dist/host/native/runtime.d.ts +4 -0
- package/dist/host/native/runtime.js +9 -0
- package/dist/host/native-reader-context.d.ts +3 -0
- package/dist/host/native-reader-context.js +8 -0
- package/dist/host/objects.d.ts +2 -1
- package/dist/host/objects.js +24 -4
- package/dist/host/place-clock-selection.d.ts +55 -0
- package/dist/host/place-clock-selection.js +124 -0
- package/dist/host/ports/local-act.d.ts +10 -0
- package/dist/host/ports/local-act.js +78 -6
- package/dist/host/ports/place-act.d.ts +46 -0
- package/dist/host/ports/place-act.js +169 -0
- package/dist/host/process-lifetime.js +8 -3
- package/dist/host/provide.d.ts +25 -0
- package/dist/host/provide.js +115 -13
- package/dist/host/reading-closures.d.ts +17 -1
- package/dist/host/reading-closures.js +98 -18
- package/dist/host/reading-context.d.ts +29 -0
- package/dist/host/reading-context.js +53 -0
- package/dist/host/reference-authenticated.d.ts +28 -0
- package/dist/host/reference-authenticated.js +84 -0
- package/dist/host/reference-native.d.ts +10 -0
- package/dist/host/reference-native.js +50 -0
- package/dist/host/reference-profile.d.ts +23 -0
- package/dist/host/reference-profile.js +62 -0
- package/dist/host/reference.d.ts +6 -0
- package/dist/host/reference.js +24 -0
- package/dist/host/root-clock-source.d.ts +85 -0
- package/dist/host/root-clock-source.js +305 -0
- package/dist/host/selected-capsules.js +3 -2
- package/dist/host/selected-topos.d.ts +1 -1
- package/dist/host/selected-topos.js +9 -1
- package/dist/land/act.d.ts +26 -0
- package/dist/land/act.js +96 -3
- package/dist/land/ledger.d.ts +4 -0
- package/dist/land/ledger.js +20 -2
- package/dist/observe/regions.d.ts +4 -0
- package/dist/observe/regions.js +109 -1
- package/dist/observe/runner.d.ts +4 -0
- package/dist/observe/runner.js +9 -2
- package/dist/wasm/adapter.d.ts +51 -0
- package/dist/wasm/adapter.js +180 -0
- package/dist/wasm/node-worker.d.ts +1 -0
- package/dist/wasm/node-worker.js +13 -0
- package/dist/wasm/object.d.ts +8 -0
- package/dist/wasm/object.js +76 -0
- package/dist/wasm/worker.d.ts +1 -0
- package/dist/wasm/worker.js +7 -0
- package/docs/contracts/authenticated-reference.publication.json +25 -0
- package/docs/contracts/cli.md +13 -0
- package/docs/contracts/engine-object-projection.publication.json +25 -0
- package/docs/contracts/engine.md +39 -0
- package/docs/contracts/native-publication.inventory.json +8 -0
- package/docs/contracts/optional-wasm-adapter.publication.json +25 -0
- package/docs/contracts/publication-additions.inventory.json +8 -0
- package/docs/contracts/reference-port.md +33 -0
- package/docs/contracts/reference-port.publication.json +25 -0
- package/licenses/wasm/bound.txt +21 -0
- package/licenses/wasm/fast-text-encoding.txt +201 -0
- package/licenses/wasm/jitl-quickjs-ffi-types.txt +21 -0
- package/licenses/wasm/jitl-quickjs-wasmfile-release-sync.txt +47 -0
- package/licenses/wasm/obligations.txt +21 -0
- package/licenses/wasm/quickjs-emscripten-core.txt +21 -0
- package/licenses/wasm/topos.txt +21 -0
- package/package.json +94 -4
- package/receipts.bound +7672 -573
- package/samples/authenticated-reference/no.json +31 -0
- package/samples/authenticated-reference/yes/editorial-state/TARGET.bound +57 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/arrival.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/coverage.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/era.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/order.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/signature.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/transport.arrival.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/transport.coverage.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/transport.era.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/transport.order.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/transport.signature.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/transport.yes.json +1 -0
- package/samples/authenticated-reference/yes/editorial-state/inputs/yes.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/TARGET.bound +57 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/arrival.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/coverage.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/era.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/order.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/signature.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/transport.arrival.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/transport.coverage.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/transport.era.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/transport.order.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/transport.signature.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/transport.yes.json +1 -0
- package/samples/authenticated-reference/yes/weather-reading/inputs/yes.json +1 -0
- package/samples/authenticated-reference/yes.json +19 -0
- package/samples/engine-alphabet/TARGET.bound +29 -0
- package/samples/engine-alphabet/inputs/sample.json +323 -0
- package/samples/engine-alphabet/package.json +1 -0
- package/samples/engine-alphabet/reader.js +1457 -0
- package/samples/engine-alphabet/receipts.bound +12 -0
- package/samples/engine-interval/TARGET.bound +29 -0
- package/samples/engine-interval/inputs/sample.json +277 -0
- package/samples/engine-interval/package.json +1 -0
- package/samples/engine-interval/reader.js +1457 -0
- package/samples/engine-interval/receipts.bound +12 -0
- package/samples/no/engine-order/TARGET.bound +29 -0
- package/samples/no/engine-order/inputs/sample.json +277 -0
- package/samples/no/engine-order/package.json +1 -0
- package/samples/no/engine-order/reader.js +1457 -0
- package/samples/reference-port/no/catalog/standing.json +1 -0
- package/samples/reference-port/no/catalog/transport.json +1 -0
- package/samples/reference-port/no/route-notes/standing.json +1 -0
- package/samples/reference-port/no/route-notes/transport.json +1 -0
- package/samples/reference-port/yes/catalog/TARGET.bound +33 -0
- package/samples/reference-port/yes/catalog/standing.json +1 -0
- package/samples/reference-port/yes/catalog/transport.json +1 -0
- package/samples/reference-port/yes/route-notes/TARGET.bound +33 -0
- package/samples/reference-port/yes/route-notes/standing.json +1 -0
- package/samples/reference-port/yes/route-notes/transport.json +1 -0
- package/samples/wasm/editorial-notes/TARGET.bound +65 -0
- package/samples/wasm/editorial-notes/esm.bound +59 -0
- package/samples/wasm/editorial-notes/no-deadline.bound +65 -0
- package/samples/wasm/editorial-notes/no-memory.bound +65 -0
- package/samples/wasm/editorial-notes/no-missing-limit.bound +64 -0
- package/samples/wasm/editorial-notes/receipts.bound +1 -0
- package/samples/wasm/water-level/TARGET.bound +65 -0
- package/samples/wasm/water-level/esm.bound +59 -0
- package/samples/wasm/water-level/no-deadline.bound +65 -0
- package/samples/wasm/water-level/no-memory.bound +65 -0
- package/samples/wasm/water-level/no-missing-limit.bound +64 -0
- package/samples/wasm/water-level/receipts.bound +1 -0
- package/vectors/engine-object.cli.json +548 -0
- package/vectors/native/authenticated-reference-formation.vector.json +53 -0
- package/vectors/native/authenticated-reference.cli.json +157 -0
- package/vectors/native/authenticated-reference.vector.json +440 -0
- package/vectors/reference-port.cli.json +688 -0
- package/vectors/wasm-object.cli.json +452 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var global=globalThis;
|
|
2
|
+
var bt=Object.create;var Re=Object.defineProperty;var xt=Object.getOwnPropertyDescriptor;var kt=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,vt=Object.prototype.hasOwnProperty;var Et=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var $t=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of kt(t))!vt.call(e,o)&&o!==n&&Re(e,o,{get:()=>t[o],enumerable:!(r=xt(t,o))||r.enumerable});return e};var Rt=(e,t,n)=>(n=e!=null?bt(Ot(e)):{},$t(t||!e||!e.__esModule?Re(n,"default",{value:e,enumerable:!0}):n,e));var Me=Et(Fe=>{(function(e){"use strict";function t(c,h){var y;return c instanceof Buffer?y=c:y=Buffer.from(c.buffer,c.byteOffset,c.byteLength),y.toString(h)}var n=function(c){return Buffer.from(c)};function r(c){for(var h=0,y=Math.min(256*256,c.length+1),x=new Uint16Array(y),M=[],k=0;;){var g=h<c.length;if(!g||k>=y-1){var E=x.subarray(0,k),v=E;if(M.push(String.fromCharCode.apply(null,v)),!g)return M.join("");c=c.subarray(h),h=0,k=0}var $=c[h++];if(($&128)===0)x[k++]=$;else if(($&224)===192){var P=c[h++]&63;x[k++]=($&31)<<6|P}else if(($&240)===224){var P=c[h++]&63,le=c[h++]&63;x[k++]=($&31)<<12|P<<6|le}else if(($&248)===240){var P=c[h++]&63,le=c[h++]&63,yt=c[h++]&63,B=($&7)<<18|P<<12|le<<6|yt;B>65535&&(B-=65536,x[k++]=B>>>10&1023|55296,B=56320|B&1023),x[k++]=B}}}function o(c){for(var h=0,y=c.length,x=0,M=Math.max(32,y+(y>>>1)+7),k=new Uint8Array(M>>>3<<3);h<y;){var g=c.charCodeAt(h++);if(g>=55296&&g<=56319){if(h<y){var E=c.charCodeAt(h);(E&64512)===56320&&(++h,g=((g&1023)<<10)+(E&1023)+65536)}if(g>=55296&&g<=56319)continue}if(x+4>k.length){M+=8,M*=1+h/c.length*2,M=M>>>3<<3;var v=new Uint8Array(M);v.set(k),k=v}if((g&4294967168)===0){k[x++]=g;continue}else if((g&4294965248)===0)k[x++]=g>>>6&31|192;else if((g&4294901760)===0)k[x++]=g>>>12&15|224,k[x++]=g>>>6&63|128;else if((g&4292870144)===0)k[x++]=g>>>18&7|240,k[x++]=g>>>12&63|128,k[x++]=g>>>6&63|128;else continue;k[x++]=g&63|128}return k.slice?k.slice(0,x):k.subarray(0,x)}var i="Failed to ",l=function(c,h,y){if(c)throw new Error("".concat(i).concat(h,": the '").concat(y,"' option is unsupported."))},s=typeof Buffer=="function"&&Buffer.from,u=s?n:o;function m(){this.encoding="utf-8"}m.prototype.encode=function(c,h){return l(h&&h.stream,"encode","stream"),u(c)};function a(c){var h;try{var y=new Blob([c],{type:"text/plain;charset=UTF-8"});h=URL.createObjectURL(y);var x=new XMLHttpRequest;return x.open("GET",h,!1),x.send(),x.responseText}finally{h&&URL.revokeObjectURL(h)}}var b=!s&&typeof Blob=="function"&&typeof URL=="function"&&typeof URL.createObjectURL=="function",F=["utf-8","utf8","unicode-1-1-utf-8"],p=r;s?p=t:b&&(p=function(c){try{return a(c)}catch{return r(c)}});var w="construct 'TextDecoder'",f="".concat(i," ").concat(w,": the ");function d(c,h){l(h&&h.fatal,w,"fatal"),c=c||"utf-8";var y;if(s?y=Buffer.isEncoding(c):y=F.indexOf(c.toLowerCase())!==-1,!y)throw new RangeError("".concat(f," encoding label provided ('").concat(c,"') is invalid."));this.encoding=c,this.fatal=!1,this.ignoreBOM=!1}d.prototype.decode=function(c,h){l(h&&h.stream,"decode","stream");var y;return c instanceof Uint8Array?y=c:c.buffer instanceof ArrayBuffer?y=new Uint8Array(c.buffer):y=new Uint8Array(c),p(y,this.encoding)},e.TextEncoder=e.TextEncoder||m,e.TextDecoder=e.TextDecoder||d})(typeof window<"u"?window:typeof global<"u"?global:Fe)});var qr=Rt(Me());function Se(e,t="/"){let n=e.split(new RegExp(`[${t.replace(/[.*+?^${}()|[\]\\-]/g,"\\$&")}]`)).filter(r=>r!=="");for(;n[n.length-1]==="*"||n[n.length-1]==="**";)n.pop();return n}var A=class e extends Error{code;detail;constructor(t,n,r={}){super(n),this.name="UnitError",this.code=t,this.detail=Object.freeze({...r}),Object.setPrototypeOf(this,e.prototype)}};function q(e,t=0,n=[],r=[]){return{at:Se(e),epoch:t,seen:n,restsOn:r}}function N(e){if(e.widens!==void 0&&e.reach==="travels")throw new A("widening-travels","obligations: REFUSE\xB7widening-travels a widening stands where it was witnessed and never travels to what rests there",{pole:e.pole});return e.takes===void 0?e:{...e,sign:-1}}function j(e){let t=new Set(e.flatMap(n=>n.takes===void 0?[]:[n.takes]));return e.filter(n=>n.takes===void 0&&(n.id===void 0||!t.has(n.id)))}function z(e,t=new Map){let n=e.at.join("/"),r=[],o=new Set,i=[...e.restsOn];for(let l=0;l<i.length;l+=1){let s=i[l];if(s===n)throw new A("rest-cycle",`obligations: REFUSE\xB7rest ${n} rests on itself: an order of rest with a cycle has no fold to reach`,{at:n});o.has(s)||(o.add(s),r.push(s),i.push(...t.get(s)?.restsOn??[]))}return r}function Y(e,t,n=new Map){let r=z(t,n),o=r.flatMap(a=>j(n.get(a)?.marks??[]).filter(b=>b.reach==="travels"&&b.widens===void 0)),i=[...j(t.marks??[]),...o].sort((a,b)=>(a.at??0)-(b.at??0)),l=e.top,s=e.top;for(let a of i)a.pole==="floor"?l=e.meet(l,a.span):s=a.widens===void 0?e.meet(s,a.span):e.join(s,a.span);let u=j(t.seen),m=u.reduce((a,b)=>e.meet(a,b.span),e.top);return{floor:e.meet(l,m),ceiling:e.meet(s,m),origins:u,rest:r,required:l,signed:s}}function ce(e,t,n=new Map){let{floor:r,ceiling:o,origins:i,required:l,signed:s}=Y(e,t,n);return e.inhabited(e.meet(l,s))?new Set(i.map(u=>u.origin)).size<2?"REQUIRED":e.inhabited(i.reduce((u,m)=>e.meet(u,m.span),e.top))?e.inhabited(e.meet(r,o))?"FREE":"FORBIDDEN":"CONFLICT":"CONFLICT"}function fe(e,t,n,r,o){if(r==="")throw new A("join-unwitnessed","obligations: REFUSE\xB7join a widening lands only with a witness or the signatures of whoever rests on the old bound");return{...t,marks:[...t.marks??[],N({pole:"ceiling",reach:"local",span:e.meet(e.top,n),widens:r,...o===void 0?{}:{at:o}})]}}function ue(e,t,n=t.takes===void 0?1:-1){let r=n===1?void 0:t.takes??t.id;if(n===1&&t.takes!==void 0)throw new A("sign-mismatch","obligations: REFUSE\xB7observe a claim that takes another back is observed at \u22121, never at +1");if(n===-1&&r===void 0)throw new A("withdrawal-unnamed","obligations: REFUSE\xB7observe a withdrawal names the claim it takes back, never a value that looks like it");let o=r===void 0?t:{origin:t.origin,span:t.span,sign:-1,takes:r,...t.at===void 0?{}:{at:t.at}};return{...e,epoch:Math.max(e.epoch,t.at??e.epoch),seen:[...e.seen,o]}}function de(e,t,n,r,o={}){let i=t.get(n)??q(n);return new Map([...t,[n,{...i,marks:[...i.marks??[],N({pole:"floor",reach:"travels",span:e.meet(e.top,r),...o})]}]])}function pe(e,t,n,r,o={}){let i=t.get(n)??q(n);return new Map([...t,[n,{...i,marks:[...i.marks??[],N({pole:"ceiling",reach:"travels",span:e.meet(e.top,r),...o})]}]])}function J(e){let t=[],n="";for(let r=0;r<e.length;r++){let o=e[r];if(o==="\\"){let i=e[r+1];if(i!=="|"&&i!=="\\")return null;n+=i,r+=1}else o==="|"?(t.push(n),n=""):n+=o}return t.push(n),t}var G="*",Ae=e=>{if(!/^-?\d+(\.\d+)?$/.test(e))return null;let t=Number(e);return isFinite(t)?t:null};var Ft={interval:e=>{let t=e.indexOf("..");if(t<0)return null;let n=e.slice(0,t),r=e.slice(t+2),o=n===G?null:Ae(n),i=r===G?null:Ae(r);return n!==G&&o===null||r!==G&&i===null?null:{kind:"interval",lo:o,hi:i}},alphabet:e=>{let t=J(e);return t===null?null:{kind:"enumerated",values:t}},ladder:e=>{let t=J(e);return t===null||t.length!==2?null:{kind:"band",floor:t[0]??"",ceiling:t[1]??""}}};var un=Object.keys(Ft);var je=new TextEncoder;function Ie(e,t){let n=je.encode(e),r=je.encode(t);for(let o=0;o<n.length&&o<r.length;o++)if(n[o]!==r[o])return n[o]-r[o];return n.length-r.length}var[X,me,he,hn,gn,wn,yn,Z]=["not:","none","|","=","/","@","*","\\"],Ne=(e,t)=>{throw new Error(`REFUSE\xB7wire ${e}: ${t}`)};function ge(e){if(typeof e!="string"){let o=e.members.map(i=>i.split(Z).join(Z+Z).split(he).join(Z+he)).join(he);return e.polarity==="forbid"?X+o:o.startsWith(X)||o===me?Ne("alphabet","a permitted alphabet neither begins with not: nor is the one word none"):o||me}let t=e.startsWith(X),n=t?e.slice(X.length):e,r=!t&&n===me?[]:J(n)??Ne("alphabet","a backslash escapes only a pipe or itself");return{polarity:t?"forbid":"permit",members:r.filter(o=>o!=="")}}function Mt(e){return e!==""&&!/[\s\\|]/.test(e)&&e.split("/").every(t=>t!==""&&t!=="."&&t!==".."&&t!=="*"&&t!=="**")}function we(e){try{let t=ge(e);if(t.polarity!=="permit"||t.members.some(r=>!Mt(r)))return;let n=[...new Set(t.members)].sort(Ie);return ge({polarity:"permit",members:n})!==e?void 0:n}catch{return}}function Ce(e,t){let n=new Map,r=new Map(e.filter(l=>l.record==="cell").map(l=>[l.fields.scope,l])),o=new Map([...r].map(([l,s])=>[l,t.resolve(s)])),i=new Map(e.map(l=>[l.fields.id,l]));for(let l of[...e].sort((s,u)=>Number(s.fields.epoch)-Number(u.fields.epoch))){let s=l.fields,u=s.scope,m=Number(s.epoch);if(l.record==="cell"){n=new Map([...n,[u,q(u,m,[],we(s.restsOn))]]);continue}let a=o.get(u),b=a.form.lattice(a.params),F=n.get(u);if(l.record==="claim"){let p=s.sign==="-1"?i.get(s.takes).fields:s,w=ue(F,{id:s.id,at:m,origin:p.origin,span:a.form.parse(a.params,p.value),...s.takes?{takes:s.takes}:{}},s.sign==="-1"?-1:1),f=[...w.seen];f[f.length-1]={...f.at(-1),id:s.id},n=new Map([...n,[u,{...w,seen:f}]])}else if(s.sign==="-1"){let p=i.get(s.takes).fields;n=new Map([...n,[u,{...F,marks:[...F.marks??[],N({id:s.id,at:m,takes:s.takes,pole:p.pole,reach:"local",span:a.form.parse(a.params,p.value)})]}]])}else if(s.widens!==void 0){let p=fe(b,F,a.form.parse(a.params,s.value),s.widens,m),w=[...p.marks??[]];w[w.length-1]={...w.at(-1),id:s.id},n=new Map([...n,[u,{...p,marks:w}]])}else{let p=a.form.parse(a.params,s.value);n=s.pole==="floor"?de(b,n,u,p,{id:s.id,at:m}):pe(b,n,u,p,{id:s.id,at:m})}}return[...n].map(([l,s])=>{let u=o.get(l),m=u.form.lattice(u.params);return{cell:l,state:ce(m,s,n),parts:Y(m,s,n),rest:z(s,n),ownMarks:j(s.marks??[]).map(a=>a.id),ownClaims:j(s.seen).map(a=>({id:a.id,origin:a.origin})),marks:j(s.marks??[]),claims:j(s.seen)}})}var I=class e extends Error{code;detail;constructor(t,n,r={}){super(n),this.name="UnitError",this.code=t,this.detail=Object.freeze({...r}),Object.setPrototypeOf(this,e.prototype)}};function Te(e,t,n){let r=e.length;for(let f=0;f<r;f++)if(e.indexOf(e[f])!==f)throw new I("DUPLICATE_LEVEL",`the level \`${e[f]}\` is declared twice`,{level:e[f]});let o=new Map(e.map((f,d)=>[f,d])),i=(f,d)=>t[f][d]===d,l=e.every((f,d)=>e.every((c,h)=>t[d][h]===d||t[d][h]===h)),s=!0;for(let f=0;f<r&&s;f++)for(let d=0;d<r&&s;d++)for(let c=0;c<r;c++)if(n[f][t[d][c]]!==t[n[f][d]][n[f][c]]){s=!1;break}let u=[...e.keys()],m=u.find(f=>u.every(d=>i(f,d)))??0,a=u.find(f=>u.every(d=>i(d,f)))??r-1,b=u.filter(f=>f!==m&&u.filter(d=>d!==f&&i(d,f)).reduce((d,c)=>t[d][c],m)!==f),F=u.filter(f=>f!==a&&u.filter(d=>d!==f&&i(f,d)).reduce((d,c)=>n[d][c],a)!==f),p=new Set,w=[];for(let f of[...b,...F])p.has(f)||(p.add(f),w.push(f));return{levels:e,isLadder:l,isSimple:s,bottomIx:m,topIx:a,bottom:e[m],top:e[a],leq:i,higher:(f,d)=>t[f][d],lower:(f,d)=>n[f][d],rank(f){let d=o.get(f);if(d===void 0)throw new I("UNKNOWN_LEVEL",`no level \`${f}\` in this scale`,{level:f,levels:e});return d},stateOf(f,d){return i(f,d)?f!==m?"REQUIRED":d!==a?"FORBIDDEN":"FREE":"CONFLICT"},joins:()=>b.slice(),limits:()=>F.slice(),debits:()=>w.slice(),intervalHeight(f,d){if(!i(f,d))return null;let c=u.filter(g=>i(f,g)&&i(g,d)),h=g=>c.filter(E=>E!==g&&i(g,E)&&!c.some(v=>v!==g&&v!==E&&i(g,v)&&i(v,E))),y=new Map([[f,0]]),x=new Map([[f,0]]),M=[...c].sort((g,E)=>c.filter(v=>i(v,g)).length-c.filter(v=>i(v,E)).length);for(let g of M){let E=y.get(g),v=x.get(g);if(!(E===void 0||v===void 0))for(let $ of h(g))y.set($,Math.max(y.get($)??E+1,E+1)),x.set($,Math.min(x.get($)??v+1,v+1))}let k=y.get(d);return k!==void 0&&k===x.get(d)?k:null}}}function ye(e){if(!Array.isArray(e)||e.length===0)throw new I("EMPTY_CHAIN","a chain needs at least one level");let t=e.length,n=r=>[...Array(t)].map((o,i)=>[...Array(t)].map((l,s)=>r(i,s)));return Te(e,n(Math.max),n(Math.min))}function qe(e,t){if(!Array.isArray(e)||e.length===0)throw new I("EMPTY_CHAIN","an order needs at least one level");let n=e.length,r=(i,l,s)=>{let u=[...Array(n).keys()].filter(a=>s?t[i][a]&&t[l][a]:t[a][i]&&t[a][l]),m=u.filter(a=>u.every(b=>s?t[a][b]:t[b][a]));if(m.length!==1)throw new I("MALFORMED",`\`${e[i]}\` and \`${e[l]}\` have ${m.length} ${s?"lowest common":"highest common"} bounds, so this is not a usable scale`,{levels:[e[i],e[l]]});return m[0]},o=i=>[...Array(n)].map((l,s)=>[...Array(n)].map((u,m)=>r(s,m,i)));return Te(e,o(!0),o(!1))}function St(e,t){return{subject:e,floor:t.floor,ceiling:t.ceiling}}var be=(e,t)=>St(t,{floor:e.bottom,ceiling:e.top});function Ue(e,t){return e.stateOf(e.rank(t.floor),e.rank(t.ceiling))}function At(e,t,n,r,o){let i=n.floor,l=n.ceiling;for(let s of t)i=r(i,e.rank(s.floor)),l=o(l,e.rank(s.ceiling));return{subject:t[0].subject,floor:e.levels[i],ceiling:e.levels[l]}}function Be(e,t){return t.length===0?be(e,""):At(e,t,{floor:e.bottomIx,ceiling:e.topIx},(n,r)=>e.higher(n,r),(n,r)=>e.lower(n,r))}function De(e,t,n){let[r,o]=[e.rank(t.floor),e.rank(t.ceiling)],[i,l]=[e.rank(n.floor),e.rank(n.ceiling)];return e.leq(i,r)&&e.leq(o,l)}var Le=32;function We(e){return e<=0?0:Math.ceil(e/Le)}var S=class e{words;width;constructor(t,n){this.width=t,this.words=n??new Uint32Array(We(t))}static fromTokens(t,n){let r=new e(t.length);return t.forEach((o,i)=>{n.has(o)&&r.set(i)}),r}set(t){if(t<0||t>=this.width)throw new I("MALFORMED",`bit ${t} is outside a mask of width ${this.width}`,{bit:t,width:this.width});this.words[t>>5]|=1<<(t&31)}has(t){return t<0||t>=this.width?!1:(this.words[t>>5]&1<<(t&31))!==0}and(t){let n=Math.max(this.width,t.width),r=new e(n),o=Math.min(this.words.length,t.words.length);for(let i=0;i<o;i++)r.words[i]=this.words[i]&t.words[i];return r}or(t){let n=Math.max(this.width,t.width),r=new e(n);for(let o=0;o<r.words.length;o++)r.words[o]=(this.words[o]??0)|(t.words[o]??0);return r}difference(t){let n=Math.max(this.width,t.width),r=new e(n);for(let i=0;i<r.words.length;i++)r.words[i]=(this.words[i]??0)&~(t.words[i]??0);let o=n%32;return o!==0&&r.words.length>0&&(r.words[r.words.length-1]&=(1<<o)-1),r}subsetOf(t){let n=Math.max(this.words.length,t.words.length);for(let r=0;r<n;r++){let o=this.words[r]??0,i=t.words[r]??0;if((o&~i)!==0)return!1}return!0}size(){let t=0;for(let n=0;n<this.width;n++)this.has(n)&&t++;return t}members(t){return t.filter((n,r)=>this.has(r))}static filled(t){let n=new e(t);if(t<=0)return n;n.words.fill(4294967295);let r=t%32;return r!==0&&(n.words[n.words.length-1]=(1<<r)-1),n}};function xe(e){let t=n=>Ue(e,n)!=="CONFLICT";return{top:be(e,""),bottom:{subject:"",floor:e.levels[e.topIx]??"",ceiling:e.levels[e.bottomIx]??""},leq:(n,r)=>De(e,n,r),meet:(n,r)=>Be(e,[n,r]),join:(n,r)=>t(n)?t(r)?{subject:n.subject||r.subject,floor:e.levels[e.lower(e.rank(n.floor),e.rank(r.floor))]??n.floor,ceiling:e.levels[e.higher(e.rank(n.ceiling),e.rank(r.ceiling))]??n.ceiling}:n:r,show:n=>`[${n.floor}, ${n.ceiling}]`,inhabited:t}}function _e(e){return{bottom:new S(e.length),top:S.filled(e.length),leq:(t,n)=>t.subsetOf(n),meet:(t,n)=>t.and(n),join:(t,n)=>t.or(n),show:t=>t.members(e).join(","),inhabited:t=>t.size()>0}}function K(e,t){let n=Math.min(e,t),r=Math.max(e,t);return{bottom:{lo:r,hi:n},top:{lo:n,hi:r},leq(o,i){return o.lo>o.hi?!0:i.lo>i.hi?!1:i.lo<=o.lo&&o.hi<=i.hi},meet(o,i){return{lo:Math.max(o.lo,i.lo),hi:Math.min(o.hi,i.hi)}},join(o,i){return o.lo>o.hi?i:i.lo>i.hi?o:{lo:Math.min(o.lo,i.lo),hi:Math.max(o.hi,i.hi)}},show(o){return o.lo>o.hi?"empty":`${o.lo}..${o.hi}`},inhabited(o){return o.lo<=o.hi}}}function ee(e){let t={lattice:e.lattice,parse:e.parse,emit:e.emit,count:e.count,show:e.show,points:e.points},n=Object.entries(t).find(([,r])=>typeof r!="function");if(n)throw new Error(`form \`${e.id}\` declared no ${n[0]}`);return e}var R=e=>e!==null&&typeof e=="object"?e:{};function C(e){return Array.isArray(e)?e.map(String):[]}var ke=e=>{let t=e>>>0;return()=>{t=t+1831565813>>>0;let n=Math.imul(t^t>>>15,t|1);return n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}},Pe=(e,t)=>t[Math.floor(e()*t.length)];function jt(e,t){if(e.length===0)return{kind:"refused",why:"a ladder with no levels cannot be counted"};let n=ye(e),r=n.rank(t.floor),o=n.rank(t.ceiling);return n.leq(r,o)?{kind:"finite",n:e.filter((l,s)=>n.leq(r,s)&&n.leq(s,o)).length}:{kind:"finite",n:0}}var ze={parse(e,t){let n=this.lattice(e),r=R(t);return{subject:String(r.subject??""),floor:String(r.floor??n.top.floor),ceiling:String(r.ceiling??n.top.ceiling)}},emit(e,t){return{subject:t.subject,floor:t.floor,ceiling:t.ceiling}},count(e,t){return jt(C(R(t).levels),e)},points(e,t,n){let r=this.lattice(e),o=C(R(e).levels),i=ke(t),l=(s,u)=>({subject:"",floor:s,ceiling:u});return Array.from({length:n},()=>{let[s,u]=[Pe(i,o),Pe(i,o)];return[l(s,u),l(u,s)].find(m=>r.inhabited(m))??l(s,s)})}},Ke=ee({id:"ladder",lattice(e){let t=C(R(e).levels);if(t.length===0)throw new Error("ladder needs levels");return xe(ye(t))},...ze,show(e){return e.floor===e.ceiling?e.floor:`${e.floor}..${e.ceiling}`}}),D=ee({id:"alphabet",lattice(e){return _e(C(R(e).tokens))},parse(e,t){let n=C(R(e).tokens),r=R(t),o=r.want!==void 0?C(r.want):n;return S.fromTokens(n,new Set(o))},emit(e,t){return{want:t.members(C(R(e).tokens))}},count(e){return{kind:"finite",n:e.size()}},show(e){return`${e.size()}`},points(e,t,n){let r=C(R(e).tokens),o=ke(t);return Array.from({length:n},()=>S.fromTokens(r,new Set(r.filter(()=>o()<.5))))}}),L=ee({id:"continuous",lattice(e){let t=R(e);return K(Number(t.lo??0),Number(t.hi??1))},parse(e,t){let n=this.lattice(e),r=R(t);return{lo:r.lo===void 0?n.top.lo:Number(r.lo),hi:r.hi===void 0?n.top.hi:Number(r.hi)}},emit(e,t){return{lo:t.lo,hi:t.hi}},count(){return{kind:"refused",why:"a continuous band has no count; prefer not to exist over inventing one"}},show(e){return e.lo>e.hi?"empty":`${e.lo}..${e.hi}`},points(e,t,n){let r=R(e),o=Number(r.lo??0),i=Number(r.hi??1),l=ke(t),s=()=>o+Math.round(l()*(i-o));return Array.from({length:n},()=>({lo:s(),hi:s()}))}}),He=ee({id:"lattice",lattice(e){let t=R(e),n=C(t.levels),r=t.leq;if(n.length&&r)return xe(qe(n,r));throw new Error("lattice needs levels+leq")},...ze,show(e){return`${e.floor}..${e.ceiling}`}}),Qe=[Ke,D,L,He],It=[...Qe];function W(e){let t=[],n="";for(let r=0;r<e.length;r++){let o=e[r];if(o==="\\"){let i=e[r+1];if(i!=="|"&&i!=="\\")return null;n+=i,r+=1}else o==="|"?(t.push(n),n=""):n+=o}return t.push(n),t}var te="*",Ve=e=>{if(!/^-?\d+(\.\d+)?$/.test(e))return null;let t=Number(e);return isFinite(t)?t:null};function Ye(e){if(!isFinite(e))throw new Error(`REFUSE\xB7wire decimal: \`${e}\` is not a finite number`);let t=/^(-?)(\d)(?:\.(\d+))?e([+-])(\d+)$/.exec(String(e));if(t===null)return String(e);let[,n="",r="",o="",i="",l="0"]=t;return i==="+"?`${n}${r}${o}${"0".repeat(Number(l)-o.length)}`:`${n}0.${"0".repeat(Number(l)-1)}${r}${o}`}var Ge={interval:e=>{let t=e.indexOf("..");if(t<0)return null;let n=e.slice(0,t),r=e.slice(t+2),o=n===te?null:Ve(n),i=r===te?null:Ve(r);return n!==te&&o===null||r!==te&&i===null?null:{kind:"interval",lo:o,hi:i}},alphabet:e=>{let t=W(e);return t===null?null:{kind:"enumerated",values:t}},ladder:e=>{let t=W(e);return t===null||t.length!==2?null:{kind:"band",floor:t[0]??"",ceiling:t[1]??""}}};function ne(e,t,n){let r=Array.isArray(n)?n.find(o=>o.form===e):void 0;return r?r.parse(t):Ge[e]?.(t)??null}var Je=Object.keys(Ge),Xe=["within","copies","derives"];var[re,Oe,ve,Xn,Zn,er,tr,oe]=["not:","none","|","=","/","@","*","\\"],Ze=(e,t)=>{throw new Error(`REFUSE\xB7wire ${e}: ${t}`)};function U(e){if(typeof e!="string"){let o=e.members.map(i=>i.split(oe).join(oe+oe).split(ve).join(oe+ve)).join(ve);return e.polarity==="forbid"?re+o:o.startsWith(re)||o===Oe?Ze("alphabet","a permitted alphabet neither begins with not: nor is the one word none"):o||Oe}let t=e.startsWith(re),n=t?e.slice(re.length):e,r=!t&&n===Oe?[]:W(n)??Ze("alphabet","a backslash escapes only a pipe or itself");return{polarity:t?"forbid":"permit",members:r.filter(o=>o!=="")}}var _=e=>({kind:"fact",value:e}),T=e=>({kind:"abstain",why:e}),O=(e,t)=>({kind:"refuse",why:e,...t===void 0?{}:{named:t}});var Ee="bound-lock/1",tt=/[ ="\n\\]/;function Nt(e){return tt.test(e)?`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}"`:e}function Ct(e){if(!e.startsWith('"'))return tt.test(e)?null:e;if(e.length<2||!e.endsWith('"'))return null;let t=e.slice(1,-1),n="";for(let r=0;r<t.length;r++){let o=t[r];if(o!=="\\"){if(o==='"')return null;n+=o;continue}let i=t[r+1];if(i==='"')n+='"';else if(i==="\\")n+="\\";else if(i==="n")n+=`
|
|
3
|
+
`;else return null;r+=1}return n}var et=new TextEncoder;function H(e,t){let n=et.encode(e),r=et.encode(t);for(let o=0;o<n.length&&o<r.length;o++)if(n[o]!==r[o])return n[o]-r[o];return n.length-r.length}var nt=e=>e.form==="interval"&&e.value!==void 0&&e.value!=="withdraw"&&ne("interval",e.value)===null;function rt(e,t="1"){if(nt(e))throw new Error(`REFUSE\xB7wire canonical: \`${e.value}\` is no interval the wire writes: two ends, each decimal or *`);let r=Object.keys(e).sort(H).map(o=>`${o}=${Nt(e[o])}`);return[`${Ee.split("/")[0]}/${t}`,...r].join(" ")}var Tt="-";function ot(e,t={}){if(e.includes(`
|
|
4
|
+
`))return O("a line is one line \u2014 a newline in a value must be escaped as `\\n`");let n=e.indexOf(" "),r=n===-1?e:e.slice(0,n),[o,i]=r.split("/");if(o!==Ee.split("/")[0]||!i)return O(`no \`bound-lock/<v>\` envelope \u2014 found \`${r.slice(0,24)}\``);if(i!==Ee.split("/")[1])return T(`\`bound-lock/${i}\` is a version this reader does not know`);let l={},s=new Set;for(let u of qt(n===-1?"":e.slice(n+1))){if(u===null)return O("a quoted value is not closed");let m=u.indexOf("=");if(m<=0)return O(`\`${u.slice(0,24)}\` is not \`key=value\``);let a=u.slice(0,m);if(s.has(a))return O(`\`${a}\` appears twice \u2014 one line, one value per key`);s.add(a);let b=Ct(u.slice(m+1));if(b===null)return O(`\`${a}\` has an escaping this format does not define`);b!==Tt&&(l[a]=b)}return nt(l)?O(`\`${l.value}\` is no interval the wire reads: two ends, each decimal or *`):_({version:i,fields:l,...t.preserveKeys?{keys:[...s]}:{}})}function*qt(e){let t=0;for(;t<e.length;){for(;e[t]===" ";)t+=1;if(t>=e.length)return;let n=t,r=!1;for(;n<e.length&&(r||e[n]!==" ");)e[n]==="\\"&&r?n+=1:e[n]==='"'&&(r=!r),n+=1;if(r){yield null;return}yield e.slice(t,n),t=n}}function it(e){return e!==""&&!/[\s\\|]/.test(e)&&e.split("/").every(t=>t!==""&&t!=="."&&t!==".."&&t!=="*"&&t!=="**")}function Ut(e){try{let t=U(e);if(t.polarity!=="permit"||t.members.some(r=>!it(r)))return;let n=[...new Set(t.members)].sort(H);return U({polarity:"permit",members:n})!==e?void 0:n}catch{return}}var Bt=["type","scope","id","epoch","by","sig"];function st(e,t,n,r,o){let i=(a,b)=>O(a,b);if(t.includes("at"))return i("object records carry no at: order is epoch and a local join witness is widens","at");let l=e.type;if(!n.types.has(l??"")||!["cell","claim","mark"].includes(l??""))return i("an object record names a declared type: cell, claim or mark","type");if(!/^(0|[1-9][0-9]*)$/.test(e.epoch??"")||!Number.isSafeInteger(Number(e.epoch)))return i("an object record carries an exactly supported logical epoch","epoch");if(Number(e.epoch)<n.activation)return i(`an object epoch precedes typed-wire activation ${n.activation}`,"epoch");let s;if(l==="cell")s="cell";else if(e.sign==="-1")s=`${l}/negative`;else{if(e.sign!=="+1")return i("a claim or mark names sign=+1 or sign=-1","sign");if(l==="claim")s="claim/positive";else if(e.pole==="floor"&&e.reach==="travels"&&e.widens===void 0)s="mark/floor-travelling";else if(e.pole==="ceiling"&&e.reach==="travels"&&e.widens===void 0)s="mark/travelling";else if(e.pole==="ceiling"&&e.reach==="local")s="mark/local";else return i("a positive mark is ceiling/travels, ceiling/local with widens, or floor/travels without widens","pole")}let u=n.required.get(s),m=n.allowed.get(s);if(!u||!m||n.common.size===0||n.configuration.size===0||[...n.common].some(a=>!u.has(a)||!m.has(a))||[...u].some(a=>!m.has(a)))return i(`typed wire has no complete required/allowed contract for ${s}`,"type");for(let a of Bt)if(e[a]===void 0||e[a]==="")return i(`an object record has no ${a}`,a);for(let a of t)if(!r.has(a)||!m.has(a))return i(`\`${a}=\` is not allowed on ${s}`,a);for(let a of u)if(!m.has(a)||e[a]===void 0||e[a]==="")return i(`a ${s} record has no declared required \`${a}\``,a);if(!it(e.scope))return i("scope is a canonical cell coordinate","scope");if(l==="cell"){if(!o.has(e.form))return i("the cell names no admitted form","form");if(Ut(e.restsOn)===void 0)return i("cell restsOn is none or a canonical alphabet of coordinates","restsOn")}return _({record:l,fields:{...e}})}function at(e){let t=e.lastIndexOf(":");return t<=0||t===e.length-1?null:{algorithm:e.slice(0,t),raw:e.slice(t+1)}}var lt="withdraw";function se(e,t){let n=e.indexOf(":");return n>0&&t.digests.has(e.slice(0,n))&&/^[0-9a-f]+$/i.test(e.slice(n+1))}function Dt(e){if(e.startsWith("/")||/[\s\\]/.test(e))return!1;let t=e.split("/").filter(n=>n!=="");return t.length>0&&t.every((n,r)=>n!=="."&&n!==".."&&(!n.includes("*")||r===t.length-1))}var ct={region:e=>e.split("|").filter(Boolean).every(Dt),class:(e,t)=>{let n=e.indexOf(":");if(n<=0||!t.classes.has(e.slice(0,n)))return!1;let r=e.slice(n+1);return!/^[a-z0-9-]+:[0-9a-f]{16,}$/i.test(r)||se(r,t)},signature:(e,t)=>{let n=at(e);if(n===null||!t.signatures.has(n.algorithm))return!1;let r=n.algorithm.slice(n.algorithm.lastIndexOf(":")+1);return se(n.algorithm,t)||n.algorithm.includes(":")&&(t.lists.get("era")?.has(r)??!1)},count:e=>/^\d+$/.test(e)};function ie(e,t){return O(t,e)}function ft(e,t,n){let r=ot(e,{preserveKeys:!0});if(r.kind!=="fact")return r.kind==="abstain"?T(r.why):O(r.why,r.named);let o=r.value.fields,i=r.value.keys;if(i.includes("type")){if(!t?.object)return O("typed object grammar is not admitted at this epoch","type");if(!t.object.configuration.size||!t.object.reserved.size||[...t.object.reserved].some(w=>t.object.configuration.has(w)))return O("typed wire has no closed configuration/object field contract","type");let p=st(o,i,t.object,t.fields,t.forms);return p.kind!=="fact"?p:ct.signature(o.sig,t)?p.value.record==="cell"&&!se(o.topos,t)?O("cell topos is not an admitted digest","topos"):p.value.record==="cell"&&(o.restsOn??"").split("|").some(w=>se(w,t))?O("cell restsOn names coordinates, not byte digests","restsOn"):p:O("object signature grammar is not admitted","sig")}if(t){if(t.object){if(!t.object.configuration.size||!t.object.reserved.size||[...t.object.reserved].some(w=>t.object.configuration.has(w)))return O("typed wire has no closed configuration/object field contract","type");let p=i.find(w=>t.object.reserved.has(w)||!t.object.configuration.has(w));if(p)return O(`\`${p}=\` is an object-only field: untyped configuration cannot carry it`,p)}for(let p of Object.keys(o))if(!t.fields.has(p))return ie(p,`\`${p}=\` is not a field of the wire at epoch ${t.epoch}`);for(let p of t.required)if(o[p]===void 0)return ie(p,`a claim with no \`${p}\``);for(let[p,w]of t.formOf){let f=o[p];if(f===void 0)continue;let d=t.lists.get(w),c=ct[w]??(d?h=>d.has(h):void 0);if(!c)return T(`\`${p}\` takes the form ${w}, which this reader does not know`);if(!c(f,t))return ie(p,`\`${p}=${f}\` is not a ${w} of the wire at epoch ${t.epoch}`)}if(o.role!==void 0&&!t.roles.has(o.role))return T(`\`role=${o.role}\` is a role this wire does not name`);if(!t.forms.has(o.form??""))return T(`\`form=${o.form}\` is a form this wire does not name`)}let l=Array.isArray(n)?n:void 0,s=o.value===lt?{kind:"enumerated",values:[lt]}:ne(o.form??"",o.value??"",l);if(s===null)return Je.includes(o.form??"")||(l?.some(w=>w.form===o.form)??!1)?ie("value",`\`${o.value}\` is not a ${o.form}`):T(`\`form=${o.form}\` is a form this reader does not know`);let u=o.role==="writes"?"writes":o.role==="demands"?"demands":"reads",m={};for(let[p,w]of Object.entries(o))["scope","measure","form","value","by","at","role","unit","multiplicity","epoch","ref","to","ref_by"].includes(p)||(m[p]=w);let a=o.ref,b=o.to===void 0?null:W(o.to),F=a&&b&&Xe.includes(a)?{rel:a,to:b,by:o.ref_by==="declared"?"declared":"inferred"}:null;return _({scope:o.scope??"",measure:o.measure??"",bound:s,role:u,by:o.by??"",at:o.at??"",...o.unit!==void 0?{unit:o.unit}:{},...o.multiplicity==="one"||o.multiplicity==="many"||o.multiplicity==="unknown"?{multiplicity:o.multiplicity}:{},...o.epoch!==void 0?{epoch:o.epoch}:{},...F?{reference:F}:{},extra:m})}var yr=K(-1/0,1/0),br=K(1,1/0);var ut=e=>e!==null&&typeof e=="object"?e:{};function Q(e,t){throw new Error(`REFUSE\xB7form ${e}: ${t}`)}function $e(e,t,n){let r=ut(t)[n];return(typeof r!="number"||!isFinite(r))&&Q(e,`takes ${n} as a number, and a value it is not given is not invented`),r}function dt(e,t,n){let r=ut(t)[n];return(!Array.isArray(r)||!r.length||r.some(o=>typeof o!="string"))&&Q(e,`takes ${n} as a list of words`),r}var pt=e=>U({polarity:"permit",members:[...new Set(e)].sort(H)});function mt(e,t,n){if(n==="empty")return{lo:t.hi,hi:t.lo};let r=o=>(i=>i.kind==="fact"&&i.value.bound.kind==="interval"?{lo:i.value.bound.lo??t.lo,hi:i.value.bound.hi??t.hi}:void 0)(ft(rt({form:"interval",value:o}),null));return r(n)??r(`${n}..${n}`)??Q(e,`\`${n}\` is not a band: lo..hi or one end, each a number or *`)}var ht=e=>(t=>e.lo>e.hi?"empty":`${t(e.lo)}..${t(e.hi)}`)(t=>isFinite(t)?Ye(t):"*");var V=e=>({tokens:dt("alphabet",e,"tokens")}),gt={id:"alphabet",lattice:e=>D.lattice(V(e)),parse(e,t){let{tokens:n}=V(e),r=U(t),o=r.members.find(i=>!n.includes(i));return o!==void 0&&Q("alphabet",`\`${o}\` is not one of its tokens`),S.fromTokens(n,new Set(r.polarity==="forbid"?n.filter(i=>!r.members.includes(i)):r.members))},emit:(e,t)=>pt(t.members(V(e).tokens)),show:(e,t)=>D.lattice(V(e)).show(t),points:(e,t,n)=>D.points(V(e),t,n)};var ae=e=>({lo:$e("interval",e,"lo"),hi:$e("interval",e,"hi")}),wt={id:"interval",lattice:e=>L.lattice(ae(e)),parse:(e,t)=>mt("interval",ae(e),t),emit:(e,t)=>ht(t),show:(e,t)=>L.lattice(ae(e)).show(t),points:(e,t,n)=>L.points(ae(e),t,n)};export{gt as alphabetOfForm,wt as intervalForm,Ce as objectFold};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"profile": "bound-wasm-assets-proposed@1",
|
|
3
|
+
"runtime": "sha256:78daa39ad957affb2423846cf0e6754c4ed9e729829db84e58b25b3b241336e7",
|
|
4
|
+
"wasm": "sha256:105c3bed22d457e43e3d1c3c1c6959fda62a8fe06f0fc8a985303c3a2be72232",
|
|
5
|
+
"modules": {
|
|
6
|
+
"/bound/guest.js": "sha256:4a8cef02c4027ca2bd35aa2810f3c56ddd9884e8f245ede48d01f020f70e00f3"
|
|
7
|
+
},
|
|
8
|
+
"byteLengths": {
|
|
9
|
+
"runtime": 51308,
|
|
10
|
+
"wasm": 503134,
|
|
11
|
+
"modules": {
|
|
12
|
+
"/bound/guest.js": 29909
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"forms": {
|
|
16
|
+
"sha256:13ee36d217833cb78bc180a62303e3335f4f1020d120914d1ef7d674ae38f67e": {
|
|
17
|
+
"form": "interval",
|
|
18
|
+
"export": "intervalForm",
|
|
19
|
+
"contextArtifact": "sha256:04942f6938e4e4ca1ff25257347df3d124d3f9dd554c3fe8b85e8eb31338b891"
|
|
20
|
+
},
|
|
21
|
+
"sha256:7ca38123f88692b8c38cb7673fc1885d3324bd1b8558113173b4add055b06d28": {
|
|
22
|
+
"form": "alphabet",
|
|
23
|
+
"export": "alphabetOfForm",
|
|
24
|
+
"contextArtifact": "sha256:04942f6938e4e4ca1ff25257347df3d124d3f9dd554c3fe8b85e8eb31338b891"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var _t=Object.defineProperty;var se=(e,r,t)=>()=>{if(t)throw t[0];try{return e&&(r=e(e=0)),r}catch(i){throw t=[i],i}};var yt=(e,r)=>{for(var t in r)_t(e,t,{get:r[t],enumerable:!0})};var L,oe,z,J,D,W=se(()=>{L={JS_EVAL_TYPE_GLOBAL:0,JS_EVAL_TYPE_MODULE:1,JS_EVAL_TYPE_DIRECT:2,JS_EVAL_TYPE_INDIRECT:3,JS_EVAL_TYPE_MASK:3,JS_EVAL_FLAG_STRICT:8,JS_EVAL_FLAG_STRIP:16,JS_EVAL_FLAG_COMPILE_ONLY:32,JS_EVAL_FLAG_BACKTRACE_BARRIER:64},oe={BaseObjects:1,Date:2,Eval:4,StringNormalize:8,RegExp:16,RegExpCompiler:32,JSON:64,Proxy:128,MapSet:256,TypedArrays:512,Promise:1024,BigInt:2048,BigFloat:4096,BigDecimal:8192,OperatorOverloading:16384,BignumExt:32768},z={Pending:0,Fulfilled:1,Rejected:2},J={JS_GPN_STRING_MASK:1,JS_GPN_SYMBOL_MASK:2,JS_GPN_PRIVATE_MASK:4,JS_GPN_ENUM_ONLY:16,JS_GPN_SET_ENUM:32,QTS_GPN_NUMBER_MASK:64,QTS_STANDARD_COMPLIANT_NUMBER:128},D={IsStrictlyEqual:0,IsSameValue:1,IsSameValueZero:2}});function V(...e){ce&&console.log("quickjs-emscripten:",...e)}function*Ke(e){return yield e}function xt(e){return Ke(fe(e))}function Ce(e,r){return(...t)=>{let i=r.call(e,de,...t);return fe(i)}}function Pt(e,r){let t=r.call(e,de);return fe(t)}function fe(e){function r(t){return t.done?t.value:t.value instanceof Promise?t.value.then(i=>r(e.next(i)),i=>r(e.throw(i))):r(e.next(t.value))}return r(e.next())}function ue(e,r){let t;try{e.dispose()}catch(i){t=i}if(r&&t)throw Object.assign(r,{message:`${r.message}
|
|
2
|
+
Then, failed to dispose scope: ${t.message}`,disposeError:t}),r;if(r||t)throw r||t}function Mt(e){let r=e?Array.from(e):[];function t(){return r.forEach(u=>u.alive?u.dispose():void 0)}function i(){return r.some(u=>u.alive)}return Object.defineProperty(r,he,{configurable:!0,enumerable:!1,value:t}),Object.defineProperty(r,"dispose",{configurable:!0,enumerable:!1,value:t}),Object.defineProperty(r,"alive",{configurable:!0,enumerable:!1,get:i}),r}function Y(e){return!!(e&&(typeof e=="object"||typeof e=="function")&&"alive"in e&&typeof e.alive=="boolean"&&"dispose"in e&&typeof e.dispose=="function")}function kt(e){if(!e)return 0;let r=0;for(let[t,i]of Object.entries(e)){if(!(t in oe))throw new We(t);i&&(r|=oe[t])}return r}function It(e){if(typeof e=="number")return e;if(e===void 0)return 0;let{type:r,strict:t,strip:i,compileOnly:u,backtraceBarrier:a}=e,l=0;return r==="global"&&(l|=L.JS_EVAL_TYPE_GLOBAL),r==="module"&&(l|=L.JS_EVAL_TYPE_MODULE),t&&(l|=L.JS_EVAL_FLAG_STRICT),i&&(l|=L.JS_EVAL_FLAG_STRIP),u&&(l|=L.JS_EVAL_FLAG_COMPILE_ONLY),a&&(l|=L.JS_EVAL_FLAG_BACKTRACE_BARRIER),l}function Lt(e){if(typeof e=="number")return e;if(e===void 0)return 0;let{strings:r,symbols:t,quickjsPrivate:i,onlyEnumerable:u,numbers:a,numbersAsStrings:l}=e,m=0;return r&&(m|=J.JS_GPN_STRING_MASK),t&&(m|=J.JS_GPN_SYMBOL_MASK),i&&(m|=J.JS_GPN_PRIVATE_MASK),u&&(m|=J.JS_GPN_ENUM_ONLY),a&&(m|=J.QTS_GPN_NUMBER_MASK),l&&(m|=J.QTS_STANDARD_COMPLIANT_NUMBER),m}function Jt(...e){let r=[];for(let t of e)t!==void 0&&(r=r.concat(t));return r}function ae(e){return e>>8}function we(e,r){r.interruptHandler&&e.setInterruptHandler(r.interruptHandler),r.maxStackSizeBytes!==void 0&&e.setMaxStackSize(r.maxStackSizeBytes),r.memoryLimitBytes!==void 0&&e.setMemoryLimit(r.memoryLimitBytes)}function _e(e,r){r.moduleLoader&&e.setModuleLoader(r.moduleLoader),r.shouldInterrupt&&e.setInterruptHandler(r.shouldInterrupt),r.memoryLimitBytes!==void 0&&e.setMemoryLimit(r.memoryLimitBytes),r.maxStackSizeBytes!==void 0&&e.setMaxStackSize(r.maxStackSizeBytes)}var vt,gt,ce,bt,le,Be,me,Ue,je,ze,Tt,Qt,We,$e,qe,Ye,R,de,M,he,He,y,N,Oe,x,pe,At,Et,H,Rt,et,zt,Nt,Ge,De,q,Ft,Ve,Ct,Ht,Ot,Gt,Se,tt,rt=se(()=>{W();W();vt=Object.defineProperty,gt=(e,r)=>{for(var t in r)vt(e,t,{get:r[t],enumerable:!0})},ce=!1;bt={};gt(bt,{QuickJSAsyncifyError:()=>je,QuickJSAsyncifySuspended:()=>ze,QuickJSEmptyGetOwnPropertyNames:()=>qe,QuickJSEmscriptenModuleError:()=>Qt,QuickJSHostRefInvalid:()=>R,QuickJSHostRefRangeExceeded:()=>Ye,QuickJSMemoryLeakDetected:()=>Tt,QuickJSNotImplemented:()=>Ue,QuickJSPromisePending:()=>$e,QuickJSUnknownIntrinsic:()=>We,QuickJSUnwrapError:()=>le,QuickJSUseAfterFree:()=>me,QuickJSWrongOwner:()=>Be});le=class extends Error{constructor(e,r){let t=typeof e=="object"&&e&&"message"in e?String(e.message):String(e);super(t),this.cause=e,this.context=r,this.name="QuickJSUnwrapError"}},Be=class extends Error{constructor(){super(...arguments),this.name="QuickJSWrongOwner"}},me=class extends Error{constructor(){super(...arguments),this.name="QuickJSUseAfterFree"}},Ue=class extends Error{constructor(){super(...arguments),this.name="QuickJSNotImplemented"}},je=class extends Error{constructor(){super(...arguments),this.name="QuickJSAsyncifyError"}},ze=class extends Error{constructor(){super(...arguments),this.name="QuickJSAsyncifySuspended"}},Tt=class extends Error{constructor(){super(...arguments),this.name="QuickJSMemoryLeakDetected"}},Qt=class extends Error{constructor(){super(...arguments),this.name="QuickJSEmscriptenModuleError"}},We=class extends TypeError{constructor(){super(...arguments),this.name="QuickJSUnknownIntrinsic"}},$e=class extends Error{constructor(){super(...arguments),this.name="QuickJSPromisePending"}},qe=class extends Error{constructor(){super(...arguments),this.name="QuickJSEmptyGetOwnPropertyNames"}},Ye=class extends Error{constructor(){super(...arguments),this.name="QuickJSHostRefRangeExceeded"}},R=class extends Error{constructor(){super(...arguments),this.name="QuickJSHostRefInvalid"}};de=Ke;de.of=xt;M=class{[Symbol.dispose](){return this.dispose()}},he=Symbol.dispose??Symbol.for("Symbol.dispose"),He=M.prototype;He[he]||(He[he]=function(){return this.dispose()});y=class Ze extends M{constructor(r,t,i,u){super(),this._value=r,this.copier=t,this.disposer=i,this._owner=u,this._alive=!0,this._constructorStack=ce?new Error("Lifetime constructed").stack:void 0}get alive(){return this._alive}get value(){return this.assertAlive(),this._value}get owner(){return this._owner}get dupable(){return!!this.copier}dup(){if(this.assertAlive(),!this.copier)throw new Error("Non-dupable lifetime");return new Ze(this.copier(this._value),this.copier,this.disposer,this._owner)}consume(r){this.assertAlive();let t=r(this);return this.dispose(),t}map(r){return this.assertAlive(),r(this)}tap(r){return r(this),this}dispose(){this.assertAlive(),this.disposer&&this.disposer(this._value),this._alive=!1}assertAlive(){if(!this.alive)throw this._constructorStack?new me(`Lifetime not alive
|
|
3
|
+
${this._constructorStack}
|
|
4
|
+
Lifetime used`):new me("Lifetime not alive")}},N=class extends y{constructor(e,r){super(e,void 0,void 0,r)}get dupable(){return!0}dup(){return this}dispose(){}},Oe=class extends y{constructor(e,r,t,i){super(e,r,t,i)}dispose(){this._alive=!1}};x=class $ extends M{constructor(){super(...arguments),this._disposables=new y(new Set),this.manage=r=>(this._disposables.value.add(r),r)}static withScope(r){let t=new $,i;try{return r(t)}catch(u){throw i=u,u}finally{ue(t,i)}}static withScopeMaybeAsync(r,t){return Pt(void 0,function*(i){let u=new $,a;try{return yield*i.of(t.call(r,i,u))}catch(l){throw a=l,l}finally{ue(u,a)}})}static async withScopeAsync(r){let t=new $,i;try{return await r(t)}catch(u){throw i=u,u}finally{ue(t,i)}}get alive(){return this._disposables.alive}dispose(){let r=Array.from(this._disposables.value.values()).reverse();for(let t of r)t.alive&&t.dispose();this._disposables.dispose()}};pe=class Xe extends M{static success(r){return new At(r)}static fail(r,t){return new Et(r,t)}static is(r){return r instanceof Xe}},At=class extends pe{constructor(e){super(),this.value=e}get alive(){return Y(this.value)?this.value.alive:!0}dispose(){Y(this.value)&&this.value.dispose()}unwrap(){return this.value}unwrapOr(e){return this.value}},Et=class extends pe{constructor(e,r){super(),this.error=e,this.onUnwrap=r}get alive(){return Y(this.error)?this.error.alive:!0}dispose(){Y(this.error)&&this.error.dispose()}unwrap(){throw this.onUnwrap(this),this.error}unwrapOr(e){return e}},H=pe,Rt=class extends M{constructor(e){super(),this.resolve=r=>{this.resolveHandle.alive&&(this.context.unwrapResult(this.context.callFunction(this.resolveHandle,this.context.undefined,r||this.context.undefined)).dispose(),this.disposeResolvers(),this.onSettled())},this.reject=r=>{this.rejectHandle.alive&&(this.context.unwrapResult(this.context.callFunction(this.rejectHandle,this.context.undefined,r||this.context.undefined)).dispose(),this.disposeResolvers(),this.onSettled())},this.dispose=()=>{this.handle.alive&&this.handle.dispose(),this.disposeResolvers()},this.context=e.context,this.owner=e.context.runtime,this.handle=e.promiseHandle,this.settled=new Promise(r=>{this.onSettled=r}),this.resolveHandle=e.resolveHandle,this.rejectHandle=e.rejectHandle}get alive(){return this.handle.alive||this.resolveHandle.alive||this.rejectHandle.alive}disposeResolvers(){this.resolveHandle.alive&&this.resolveHandle.dispose(),this.rejectHandle.alive&&this.rejectHandle.dispose()}},et=class{constructor(e){this.module=e}toPointerArray(e){let r=new Int32Array(e.map(u=>u.value)),t=r.length*r.BYTES_PER_ELEMENT,i=this.module._malloc(t);return new Uint8Array(this.module.HEAPU8.buffer,i,t).set(new Uint8Array(r.buffer)),new y(i,void 0,u=>this.module._free(u))}newTypedArray(e,r){let t=new e(new Array(r).fill(0)),i=t.length*t.BYTES_PER_ELEMENT,u=this.module._malloc(i),a=new e(this.module.HEAPU8.buffer,u,r);return a.set(t),new y({typedArray:a,ptr:u},void 0,l=>this.module._free(l.ptr))}newMutablePointerArray(e){return this.newTypedArray(Int32Array,e)}newHeapCharPointer(e){let r=this.module.lengthBytesUTF8(e),t=r+1,i=this.module._malloc(t);return this.module.stringToUTF8(e,i,t),new y({ptr:i,strlen:r},void 0,u=>this.module._free(u.ptr))}newHeapBufferPointer(e){let r=e.byteLength,t=this.module._malloc(r);return this.module.HEAPU8.set(e,t),new y({pointer:t,numBytes:r},void 0,i=>this.module._free(i.pointer))}consumeHeapCharPointer(e){let r=this.module.UTF8ToString(e);return this.module._free(e),r}},zt=Object.freeze({BaseObjects:!0,Date:!0,Eval:!0,StringNormalize:!0,RegExp:!0,JSON:!0,Proxy:!0,MapSet:!0,TypedArrays:!0,Promise:!0});Nt=class extends M{constructor(e,r){super(),this.handle=e,this.context=r,this._isDone=!1,this.owner=r.runtime}[Symbol.iterator](){return this}next(e){if(!this.alive||this._isDone)return{done:!0,value:void 0};let r=this._next??(this._next=this.context.getProp(this.handle,"next"));return this.callIteratorMethod(r,e)}return(e){if(!this.alive)return{done:!0,value:void 0};let r=this.context.getProp(this.handle,"return");if(r===this.context.undefined&&e===void 0)return this.dispose(),{done:!0,value:void 0};let t=this.callIteratorMethod(r,e);return r.dispose(),this.dispose(),t}throw(e){if(!this.alive)return{done:!0,value:void 0};let r=e instanceof y?e:this.context.newError(e),t=this.context.getProp(this.handle,"throw"),i=this.callIteratorMethod(t,e);return r.alive&&r.dispose(),t.dispose(),this.dispose(),i}get alive(){return this.handle.alive}dispose(){this._isDone=!0,this.handle.dispose(),this._next?.dispose()}callIteratorMethod(e,r){let t=r?this.context.callFunction(e,this.handle,r):this.context.callFunction(e,this.handle);if(t.error)return this.dispose(),{value:t};let i=this.context.getProp(t.value,"done").consume(a=>this.context.dump(a)),u=this.context.getProp(t.value,"value");return t.value.dispose(),i&&this.dispose(),{value:H.success(u),done:i}}},Ge=-2147483648,De=2147483647,q=0;Ft=class{constructor(){this.nextId=Ge,this.freelist=[],this.groups=new Map}put(e){let r=this.allocateId(),t=ae(r),i=this.groups.get(t);return i||(i=new Map,this.groups.set(t,i)),i.set(r,e),r}get(e){if(e===q)throw new R("no host reference id defined");let r=ae(e),t=this.groups.get(r);if(!t)throw new R(`host reference id ${e} is not defined`);let i=t.get(e);if(!i)throw new R(`host reference id ${e} is not defined`);return i}delete(e){if(e===q)throw new R("no host reference id defined");let r=ae(e),t=this.groups.get(r);if(!t)throw new R(`host reference id ${e} is not defined`);t.delete(e),t.size===0&&this.groups.delete(r),this.freelist.push(e)}allocateId(){if(this.freelist.length>0)return this.freelist.shift();if(this.nextId===q&&this.nextId++,this.nextId>De)throw new Ye(`HostRefMap: too many host refs created without disposing. Max simultaneous host refs: ${De-Ge}`);return this.nextId++}},Ve=class extends M{constructor(e,r,t){if(t===q)throw new R("cannot create HostRef with undefined id");super(),this.runtime=e,this.handle=r,this.id=t}get alive(){return this.handle.alive}dispose(){this.handle.dispose()}get value(){return this.runtime.hostRefs.get(this.id)}},Ct=class extends et{constructor(e){super(e.module),this.scope=new x,this.copyJSValue=r=>this.ffi.QTS_DupValuePointer(this.ctx.value,r),this.freeJSValue=r=>{this.ffi.QTS_FreeValuePointer(this.ctx.value,r)},e.ownedLifetimes?.forEach(r=>this.scope.manage(r)),this.owner=e.owner,this.module=e.module,this.ffi=e.ffi,this.rt=e.rt,this.ctx=this.scope.manage(e.ctx)}get alive(){return this.scope.alive}dispose(){return this.scope.dispose()}[Symbol.dispose](){return this.dispose()}manage(e){return this.scope.manage(e)}consumeJSCharPointer(e){let r=this.module.UTF8ToString(e);return this.ffi.QTS_FreeCString(this.ctx.value,e),r}heapValueHandle(e,r){let t=r?i=>{r(),this.freeJSValue(i)}:this.freeJSValue;return new y(e,this.copyJSValue,t,this.owner)}staticHeapValueHandle(e){return this.manage(this.heapValueHandle(e)),new N(e,this.owner)}},Ht=class extends M{constructor(e){super(),this._undefined=void 0,this._null=void 0,this._false=void 0,this._true=void 0,this._global=void 0,this._BigInt=void 0,this._Symbol=void 0,this._SymbolIterator=void 0,this._SymbolAsyncIterator=void 0,this.cToHostCallbacks={callFunction:(r,t,i,u,a)=>{if(r!==this.ctx.value)throw new Error("QuickJSContext instance received C -> JS call with mismatched ctx");let l=this.getFunction(a);return x.withScopeMaybeAsync(this,function*(m,c){let T=c.manage(new Oe(t,this.memory.copyJSValue,this.memory.freeJSValue,this.runtime)),Q=new Array(i);for(let S=0;S<i;S++){let g=this.ffi.QTS_ArgvGetJSValueConstPointer(u,S);Q[S]=c.manage(new Oe(g,this.memory.copyJSValue,this.memory.freeJSValue,this.runtime))}try{let S=yield*m(l.apply(T,Q));if(S){if("error"in S&&S.error)throw this.runtime.debugLog("throw error",S.error),S.error;let g=c.manage(S instanceof y?S:S.value);return this.ffi.QTS_DupValuePointer(this.ctx.value,g.value)}return 0}catch(S){return this.errorToHandle(S).consume(g=>this.ffi.QTS_Throw(this.ctx.value,g.value))}})}},this.runtime=e.runtime,this.module=e.module,this.ffi=e.ffi,this.rt=e.rt,this.ctx=e.ctx,this.memory=new Ct({...e,owner:this.runtime}),e.callbacks.setContextCallbacks(this.ctx.value,this.cToHostCallbacks),this.dump=this.dump.bind(this),this.getString=this.getString.bind(this),this.getNumber=this.getNumber.bind(this),this.resolvePromise=this.resolvePromise.bind(this),this.uint32Out=this.memory.manage(this.memory.newTypedArray(Uint32Array,1))}get alive(){return this.memory.alive}dispose(){this.memory.dispose()}get undefined(){if(this._undefined)return this._undefined;let e=this.ffi.QTS_GetUndefined();return this._undefined=new N(e)}get null(){if(this._null)return this._null;let e=this.ffi.QTS_GetNull();return this._null=new N(e)}get true(){if(this._true)return this._true;let e=this.ffi.QTS_GetTrue();return this._true=new N(e)}get false(){if(this._false)return this._false;let e=this.ffi.QTS_GetFalse();return this._false=new N(e)}get global(){if(this._global)return this._global;let e=this.ffi.QTS_GetGlobalObject(this.ctx.value);return this._global=this.memory.staticHeapValueHandle(e),this._global}newNumber(e){return this.memory.heapValueHandle(this.ffi.QTS_NewFloat64(this.ctx.value,e))}newString(e){let r=this.memory.newHeapCharPointer(e).consume(t=>this.ffi.QTS_NewString(this.ctx.value,t.value.ptr));return this.memory.heapValueHandle(r)}newUniqueSymbol(e){let r=(typeof e=="symbol"?e.description:e)??"",t=this.memory.newHeapCharPointer(r).consume(i=>this.ffi.QTS_NewSymbol(this.ctx.value,i.value.ptr,0));return this.memory.heapValueHandle(t)}newSymbolFor(e){let r=(typeof e=="symbol"?e.description:e)??"",t=this.memory.newHeapCharPointer(r).consume(i=>this.ffi.QTS_NewSymbol(this.ctx.value,i.value.ptr,1));return this.memory.heapValueHandle(t)}getWellKnownSymbol(e){return this._Symbol??(this._Symbol=this.memory.manage(this.getProp(this.global,"Symbol"))),this.getProp(this._Symbol,e)}newBigInt(e){if(!this._BigInt){let i=this.getProp(this.global,"BigInt");this.memory.manage(i),this._BigInt=new N(i.value,this.runtime)}let r=this._BigInt,t=String(e);return this.newString(t).consume(i=>this.unwrapResult(this.callFunction(r,this.undefined,i)))}newObject(e){e&&this.runtime.assertOwned(e);let r=e?this.ffi.QTS_NewObjectProto(this.ctx.value,e.value):this.ffi.QTS_NewObject(this.ctx.value);return this.memory.heapValueHandle(r)}newArray(){let e=this.ffi.QTS_NewArray(this.ctx.value);return this.memory.heapValueHandle(e)}newArrayBuffer(e){let r=new Uint8Array(e),t=this.memory.newHeapBufferPointer(r),i=this.ffi.QTS_NewArrayBuffer(this.ctx.value,t.value.pointer,r.length);return this.memory.heapValueHandle(i)}newPromise(e){let r=x.withScope(t=>{let i=t.manage(this.memory.newMutablePointerArray(2)),u=this.ffi.QTS_NewPromiseCapability(this.ctx.value,i.value.ptr),a=this.memory.heapValueHandle(u),[l,m]=Array.from(i.value.typedArray).map(c=>this.memory.heapValueHandle(c));return new Rt({context:this,promiseHandle:a,resolveHandle:l,rejectHandle:m})});return e&&typeof e=="function"&&(e=new Promise(e)),e&&Promise.resolve(e).then(r.resolve,t=>t instanceof y?r.reject(t):this.newError(t).consume(r.reject)),r}newFunction(e,r){let t=typeof e=="function"?e:r;if(!t)throw new TypeError("Expected a function");return this.newFunctionWithOptions({name:typeof e=="string"?e:void 0,length:t.length,isConstructor:!1,fn:t})}newConstructorFunction(e,r){let t=typeof e=="function"?e:r;if(!t)throw new TypeError("Expected a function");return this.newFunctionWithOptions({name:typeof e=="string"?e:void 0,length:t.length,isConstructor:!0,fn:t})}newFunctionWithOptions(e){let{name:r,length:t,isConstructor:i,fn:u}=e,a=this.runtime.hostRefs.put(u);try{return this.memory.heapValueHandle(this.ffi.QTS_NewFunction(this.ctx.value,r??"",t,i,a))}catch(l){throw this.runtime.hostRefs.delete(a),l}}newError(e){let r=this.memory.heapValueHandle(this.ffi.QTS_NewError(this.ctx.value));return e&&typeof e=="object"?(e.name!==void 0&&this.newString(e.name).consume(t=>this.setProp(r,"name",t)),e.message!==void 0&&this.newString(e.message).consume(t=>this.setProp(r,"message",t))):typeof e=="string"?this.newString(e).consume(t=>this.setProp(r,"message",t)):e!==void 0&&this.newString(String(e)).consume(t=>this.setProp(r,"message",t)),r}newHostRef(e){let r=this.runtime.hostRefs.put(e);try{let t=this.memory.heapValueHandle(this.ffi.QTS_NewHostRef(this.ctx.value,r));return new Ve(this.runtime,t,r)}catch(t){throw this.runtime.hostRefs.delete(r),t}}toHostRef(e){let r=this.ffi.QTS_GetHostRefId(e.value);if(r!==0)return this.runtime.hostRefs.get(r),new Ve(this.runtime,e.dup(),r)}unwrapHostRef(e){let r=this.ffi.QTS_GetHostRefId(e.value);if(r===0)throw new R("handle is not a HostRef");return this.runtime.hostRefs.get(r)}typeof(e){return this.runtime.assertOwned(e),this.memory.consumeHeapCharPointer(this.ffi.QTS_Typeof(this.ctx.value,e.value))}getNumber(e){return this.runtime.assertOwned(e),this.ffi.QTS_GetFloat64(this.ctx.value,e.value)}getString(e){return this.runtime.assertOwned(e),this.memory.consumeJSCharPointer(this.ffi.QTS_GetString(this.ctx.value,e.value))}getSymbol(e){this.runtime.assertOwned(e);let r=this.memory.consumeJSCharPointer(this.ffi.QTS_GetSymbolDescriptionOrKey(this.ctx.value,e.value));return this.ffi.QTS_IsGlobalSymbol(this.ctx.value,e.value)?Symbol.for(r):Symbol(r)}getBigInt(e){this.runtime.assertOwned(e);let r=this.getString(e);return BigInt(r)}getArrayBuffer(e){this.runtime.assertOwned(e);let r=this.ffi.QTS_GetArrayBufferLength(this.ctx.value,e.value),t=this.ffi.QTS_GetArrayBuffer(this.ctx.value,e.value);if(!t)throw new Error("Couldn't allocate memory to get ArrayBuffer");return new y(this.module.HEAPU8.subarray(t,t+r),void 0,()=>this.module._free(t))}getPromiseState(e){this.runtime.assertOwned(e);let r=this.ffi.QTS_PromiseState(this.ctx.value,e.value);if(r<0)return{type:"fulfilled",value:e,notAPromise:!0};if(r===z.Pending)return{type:"pending",get error(){return new $e("Cannot unwrap a pending promise")}};let t=this.ffi.QTS_PromiseResult(this.ctx.value,e.value),i=this.memory.heapValueHandle(t);if(r===z.Fulfilled)return{type:"fulfilled",value:i};if(r===z.Rejected)return{type:"rejected",error:i};throw i.dispose(),new Error(`Unknown JSPromiseStateEnum: ${r}`)}resolvePromise(e){this.runtime.assertOwned(e);let r=x.withScope(t=>{let i=t.manage(this.getProp(this.global,"Promise")),u=t.manage(this.getProp(i,"resolve"));return this.callFunction(u,i,e)});return r.error?Promise.resolve(r):new Promise(t=>{x.withScope(i=>{let u=i.manage(this.newFunction("resolve",c=>{t(this.success(c&&c.dup()))})),a=i.manage(this.newFunction("reject",c=>{t(this.fail(c&&c.dup()))})),l=i.manage(r.value),m=i.manage(this.getProp(l,"then"));this.callFunction(m,l,u,a).unwrap().dispose()})})}isEqual(e,r,t=D.IsStrictlyEqual){if(e===r)return!0;this.runtime.assertOwned(e),this.runtime.assertOwned(r);let i=this.ffi.QTS_IsEqual(this.ctx.value,e.value,r.value,t);if(i===-1)throw new Ue("WASM variant does not expose equality");return!!i}eq(e,r){return this.isEqual(e,r,D.IsStrictlyEqual)}sameValue(e,r){return this.isEqual(e,r,D.IsSameValue)}sameValueZero(e,r){return this.isEqual(e,r,D.IsSameValueZero)}getProp(e,r){this.runtime.assertOwned(e);let t;return typeof r=="number"&&r>=0?t=this.ffi.QTS_GetPropNumber(this.ctx.value,e.value,r):t=this.borrowPropertyKey(r).consume(i=>this.ffi.QTS_GetProp(this.ctx.value,e.value,i.value)),this.memory.heapValueHandle(t)}getLength(e){if(this.runtime.assertOwned(e),!(this.ffi.QTS_GetLength(this.ctx.value,this.uint32Out.value.ptr,e.value)<0))return this.uint32Out.value.typedArray[0]}getOwnPropertyNames(e,r={strings:!0,numbersAsStrings:!0}){this.runtime.assertOwned(e),e.value;let t=Lt(r);if(t===0)throw new qe("No options set, will return an empty array");return x.withScope(i=>{let u=i.manage(this.memory.newMutablePointerArray(1)),a=this.ffi.QTS_GetOwnPropertyNames(this.ctx.value,u.value.ptr,this.uint32Out.value.ptr,e.value,t);if(a)return this.fail(this.memory.heapValueHandle(a));let l=this.uint32Out.value.typedArray[0],m=u.value.typedArray[0],c=new Uint32Array(this.module.HEAP8.buffer,m,l),T=Array.from(c).map(Q=>this.memory.heapValueHandle(Q));return this.ffi.QTS_FreeVoidPointer(this.ctx.value,m),this.success(Mt(T))})}getIterator(e){let r=this._SymbolIterator??(this._SymbolIterator=this.memory.manage(this.getWellKnownSymbol("iterator")));return x.withScope(t=>{let i=t.manage(this.getProp(e,r)),u=this.callFunction(i,e);return u.error?u:this.success(new Nt(u.value,this))})}setProp(e,r,t){this.runtime.assertOwned(e),this.borrowPropertyKey(r).consume(i=>this.ffi.QTS_SetProp(this.ctx.value,e.value,i.value,t.value))}defineProp(e,r,t){this.runtime.assertOwned(e),x.withScope(i=>{let u=i.manage(this.borrowPropertyKey(r)),a=t.value||this.undefined,l=!!t.configurable,m=!!t.enumerable,c=!!t.value,T=t.get?i.manage(this.newFunction(t.get.name,t.get)):this.undefined,Q=t.set?i.manage(this.newFunction(t.set.name,t.set)):this.undefined;this.ffi.QTS_DefineProp(this.ctx.value,e.value,u.value,a.value,T.value,Q.value,l,m,c)})}callFunction(e,r,...t){this.runtime.assertOwned(e);let i,u=t[0];u===void 0||Array.isArray(u)?i=u??[]:i=t;let a=this.memory.toPointerArray(i).consume(m=>this.ffi.QTS_Call(this.ctx.value,e.value,r.value,i.length,m.value)),l=this.ffi.QTS_ResolveException(this.ctx.value,a);return l?(this.ffi.QTS_FreeValuePointer(this.ctx.value,a),this.fail(this.memory.heapValueHandle(l))):this.success(this.memory.heapValueHandle(a))}callMethod(e,r,t=[]){return this.getProp(e,r).consume(i=>this.callFunction(i,e,t))}evalCode(e,r="eval.js",t){let i=t===void 0?1:0,u=It(t),a=this.memory.newHeapCharPointer(e).consume(m=>this.ffi.QTS_Eval(this.ctx.value,m.value.ptr,m.value.strlen,r,i,u)),l=this.ffi.QTS_ResolveException(this.ctx.value,a);return l?(this.ffi.QTS_FreeValuePointer(this.ctx.value,a),this.fail(this.memory.heapValueHandle(l))):this.success(this.memory.heapValueHandle(a))}throw(e){return this.errorToHandle(e).consume(r=>this.ffi.QTS_Throw(this.ctx.value,r.value))}borrowPropertyKey(e){return typeof e=="number"?this.newNumber(e):typeof e=="string"?this.newString(e):new N(e.value,this.runtime)}getMemory(e){if(e===this.rt.value)return this.memory;throw new Error("Private API. Cannot get memory from a different runtime")}dump(e){this.runtime.assertOwned(e);let r=this.typeof(e);if(r==="string")return this.getString(e);if(r==="number")return this.getNumber(e);if(r==="bigint")return this.getBigInt(e);if(r==="undefined")return;if(r==="symbol")return this.getSymbol(e);let t=this.getPromiseState(e);if(t.type==="fulfilled"&&!t.notAPromise)return e.dispose(),{type:t.type,value:t.value.consume(this.dump)};if(t.type==="pending")return e.dispose(),{type:t.type};if(t.type==="rejected")return e.dispose(),{type:t.type,error:t.error.consume(this.dump)};let i=this.memory.consumeJSCharPointer(this.ffi.QTS_Dump(this.ctx.value,e.value));try{return JSON.parse(i)}catch{return i}}unwrapResult(e){if(e.error){let r="context"in e.error?e.error.context:this,t=e.error.consume(i=>this.dump(i));if(t&&typeof t=="object"&&typeof t.message=="string"){let{message:i,name:u,stack:a,...l}=t,m=new le(t,r);typeof u=="string"&&(m.name=t.name),m.message=i;let c=m.stack;throw typeof a=="string"&&(m.stack=`${u}: ${i}
|
|
5
|
+
${t.stack}Host: ${c}`),Object.assign(m,l),m}throw new le(t)}return e.value}[Symbol.for("nodejs.util.inspect.custom")](){return this.alive?`${this.constructor.name} { ctx: ${this.ctx.value} rt: ${this.rt.value} }`:`${this.constructor.name} { disposed }`}getFunction(e){let r=this.runtime.hostRefs.get(e);if(typeof r!="function")throw new Error(`Host reference ${e} is not a function`);return r}errorToHandle(e){return e instanceof y?e:this.newError(e)}encodeBinaryJSON(e){let r=this.ffi.QTS_bjson_encode(this.ctx.value,e.value);return this.memory.heapValueHandle(r)}decodeBinaryJSON(e){let r=this.ffi.QTS_bjson_decode(this.ctx.value,e.value);return this.memory.heapValueHandle(r)}success(e){return H.success(e)}fail(e){return H.fail(e,r=>this.unwrapResult(r))}},Ot=class extends M{constructor(e){super(),this.scope=new x,this.contextMap=new Map,this.hostRefs=new Ft,this._debugMode=!1,this.cToHostCallbacks={freeHostRef:(r,t)=>{if(r!==this.rt.value)throw new Error("Runtime pointer mismatch");this.hostRefs.delete(t)},shouldInterrupt:r=>{if(r!==this.rt.value)throw new Error("QuickJSContext instance received C -> JS interrupt with mismatched rt");let t=this.interruptHandler;if(!t)throw new Error("QuickJSContext had no interrupt handler");return t(this)?1:0},loadModuleSource:Ce(this,function*(r,t,i,u){let a=this.moduleLoader;if(!a)throw new Error("Runtime has no module loader");if(t!==this.rt.value)throw new Error("Runtime pointer mismatch");let l=this.contextMap.get(i)??this.newContext({contextPointer:i});try{let m=yield*r(a(u,l));if(typeof m=="object"&&"error"in m&&m.error)throw this.debugLog("cToHostLoadModule: loader returned error",m.error),m.error;let c=typeof m=="string"?m:"value"in m?m.value:m;return this.memory.newHeapCharPointer(c).value.ptr}catch(m){return this.debugLog("cToHostLoadModule: caught error",m),l.throw(m),0}}),normalizeModule:Ce(this,function*(r,t,i,u,a){let l=this.moduleNormalizer;if(!l)throw new Error("Runtime has no module normalizer");if(t!==this.rt.value)throw new Error("Runtime pointer mismatch");let m=this.contextMap.get(i)??this.newContext({contextPointer:i});try{let c=yield*r(l(u,a,m));if(typeof c=="object"&&"error"in c&&c.error)throw this.debugLog("cToHostNormalizeModule: normalizer returned error",c.error),c.error;let T=typeof c=="string"?c:c.value;return m.getMemory(this.rt.value).newHeapCharPointer(T).value.ptr}catch(c){return this.debugLog("normalizeModule: caught error",c),m.throw(c),0}})},e.ownedLifetimes?.forEach(r=>this.scope.manage(r)),this.module=e.module,this.memory=new et(this.module),this.ffi=e.ffi,this.rt=e.rt,this.callbacks=e.callbacks,this.scope.manage(this.rt),this.callbacks.setRuntimeCallbacks(this.rt.value,this.cToHostCallbacks),this.executePendingJobs=this.executePendingJobs.bind(this),ce&&this.setDebugMode(!0)}get alive(){return this.scope.alive}dispose(){return this.scope.dispose()}newContext(e={}){let r=kt(e.intrinsics),t=new y(e.contextPointer||this.ffi.QTS_NewContext(this.rt.value,r),void 0,u=>{this.contextMap.delete(u),this.callbacks.deleteContext(u),this.ffi.QTS_FreeContext(u)}),i=new Ht({module:this.module,ctx:t,ffi:this.ffi,rt:this.rt,ownedLifetimes:e.ownedLifetimes,runtime:this,callbacks:this.callbacks});return this.contextMap.set(t.value,i),i}setModuleLoader(e,r){this.moduleLoader=e,this.moduleNormalizer=r,this.ffi.QTS_RuntimeEnableModuleLoader(this.rt.value,this.moduleNormalizer?1:0)}removeModuleLoader(){this.moduleLoader=void 0,this.ffi.QTS_RuntimeDisableModuleLoader(this.rt.value)}hasPendingJob(){return!!this.ffi.QTS_IsJobPending(this.rt.value)}setInterruptHandler(e){let r=this.interruptHandler;this.interruptHandler=e,r||this.ffi.QTS_RuntimeEnableInterruptHandler(this.rt.value)}removeInterruptHandler(){this.interruptHandler&&(this.ffi.QTS_RuntimeDisableInterruptHandler(this.rt.value),this.interruptHandler=void 0)}executePendingJobs(e=-1){let r=this.memory.newMutablePointerArray(1),t=this.ffi.QTS_ExecutePendingJob(this.rt.value,e??-1,r.value.ptr),i=r.value.typedArray[0];if(r.dispose(),i===0)return this.ffi.QTS_FreeValuePointerRuntime(this.rt.value,t),H.success(0);let u=this.contextMap.get(i)??this.newContext({contextPointer:i}),a=u.getMemory(this.rt.value).heapValueHandle(t);if(u.typeof(a)==="number"){let l=u.getNumber(a);return a.dispose(),H.success(l)}else{let l=Object.assign(a,{context:u});return H.fail(l,m=>u.unwrapResult(m))}}setMemoryLimit(e){if(e<0&&e!==-1)throw new Error("Cannot set memory limit to negative number. To unset, pass -1");this.ffi.QTS_RuntimeSetMemoryLimit(this.rt.value,e)}computeMemoryUsage(){let e=this.getSystemContext().getMemory(this.rt.value);return e.heapValueHandle(this.ffi.QTS_RuntimeComputeMemoryUsage(this.rt.value,e.ctx.value))}dumpMemoryUsage(){return this.memory.consumeHeapCharPointer(this.ffi.QTS_RuntimeDumpMemoryUsage(this.rt.value))}setMaxStackSize(e){if(e<0)throw new Error("Cannot set memory limit to negative number. To unset, pass 0.");this.ffi.QTS_RuntimeSetMaxStackSize(this.rt.value,e)}assertOwned(e){if(e.owner&&e.owner.rt!==this.rt)throw new Be(`Handle is not owned by this runtime: ${e.owner.rt.value} != ${this.rt.value}`)}setDebugMode(e){this._debugMode=e,this.ffi.DEBUG&&this.rt.alive&&this.ffi.QTS_SetDebugLogEnabled(this.rt.value,e?1:0)}isDebugMode(){return this._debugMode}debugLog(...e){this._debugMode&&console.log("quickjs-emscripten:",...e)}[Symbol.for("nodejs.util.inspect.custom")](){return this.alive?`${this.constructor.name} { rt: ${this.rt.value} }`:`${this.constructor.name} { disposed }`}getSystemContext(){return this.context||(this.context=this.scope.manage(this.newContext())),this.context}},Gt=class{constructor(e){this.freeHostRef=e.freeHostRef,this.callFunction=e.callFunction,this.shouldInterrupt=e.shouldInterrupt,this.loadModuleSource=e.loadModuleSource,this.normalizeModule=e.normalizeModule}},Se=class{constructor(e){this.contextCallbacks=new Map,this.runtimeCallbacks=new Map,this.suspendedCount=0,this.cToHostCallbacks=new Gt({freeHostRef:(r,t,i)=>{let u=this.runtimeCallbacks.get(t);if(!u)throw new Error(`QuickJSRuntime(rt = ${t}) not found when trying to free HostRef(id = ${i})`);u.freeHostRef(t,i)},callFunction:(r,t,i,u,a,l)=>this.handleAsyncify(r,()=>{try{let m=this.contextCallbacks.get(t);if(!m)throw new Error(`QuickJSContext(ctx = ${t}) not found for C function call "${l}"`);return m.callFunction(t,i,u,a,l)}catch(m){return console.error("[C to host error: returning null]",m),0}}),shouldInterrupt:(r,t)=>this.handleAsyncify(r,()=>{try{let i=this.runtimeCallbacks.get(t);if(!i)throw new Error(`QuickJSRuntime(rt = ${t}) not found for C interrupt`);return i.shouldInterrupt(t)}catch(i){return console.error("[C to host interrupt: returning error]",i),1}}),loadModuleSource:(r,t,i,u)=>this.handleAsyncify(r,()=>{try{let a=this.runtimeCallbacks.get(t);if(!a)throw new Error(`QuickJSRuntime(rt = ${t}) not found for C module loader`);let l=a.loadModuleSource;if(!l)throw new Error(`QuickJSRuntime(rt = ${t}) does not support module loading`);return l(t,i,u)}catch(a){return console.error("[C to host module loader error: returning null]",a),0}}),normalizeModule:(r,t,i,u,a)=>this.handleAsyncify(r,()=>{try{let l=this.runtimeCallbacks.get(t);if(!l)throw new Error(`QuickJSRuntime(rt = ${t}) not found for C module loader`);let m=l.normalizeModule;if(!m)throw new Error(`QuickJSRuntime(rt = ${t}) does not support module loading`);return m(t,i,u,a)}catch(l){return console.error("[C to host module loader error: returning null]",l),0}})}),this.module=e,this.module.callbacks=this.cToHostCallbacks}setRuntimeCallbacks(e,r){this.runtimeCallbacks.set(e,r)}deleteRuntime(e){this.runtimeCallbacks.delete(e)}setContextCallbacks(e,r){this.contextCallbacks.set(e,r)}deleteContext(e){this.contextCallbacks.delete(e)}handleAsyncify(e,r){if(e)return e.handleSleep(i=>{try{let u=r();if(!(u instanceof Promise)){V("asyncify.handleSleep: not suspending:",u),i(u);return}if(this.suspended)throw new je(`Already suspended at: ${this.suspended.stack}
|
|
6
|
+
Attempted to suspend at:`);this.suspended=new ze(`(${this.suspendedCount++})`),V("asyncify.handleSleep: suspending:",this.suspended),u.then(a=>{this.suspended=void 0,V("asyncify.handleSleep: resolved:",a),i(a)},a=>{V("asyncify.handleSleep: rejected:",a),console.error("QuickJS: cannot handle error in suspended function",a),this.suspended=void 0})}catch(u){throw V("asyncify.handleSleep: error:",u),this.suspended=void 0,u}});let t=r();if(t instanceof Promise)throw new Error("Promise return value not supported in non-asyncify context.");return t}};tt=class{constructor(e,r){this.module=e,this.ffi=r,this.callbacks=new Se(e)}newRuntime(e={}){let r=new y(this.ffi.QTS_NewRuntime(),void 0,i=>{this.ffi.QTS_FreeRuntime(i),this.callbacks.deleteRuntime(i)}),t=new Ot({module:this.module,callbacks:this.callbacks,ffi:this.ffi,rt:r});return we(t,e),e.moduleLoader&&t.setModuleLoader(e.moduleLoader),t}newContext(e={}){let r=this.newRuntime(),t=r.newContext({...e,ownedLifetimes:Jt(r,e.ownedLifetimes)});return r.context=t,t}evalCode(e,r={}){return x.withScope(t=>{let i=t.manage(this.newContext());_e(i.runtime,r);let u=i.evalCode(e,"eval.js");if(r.memoryLimitBytes!==void 0&&i.runtime.setMemoryLimit(-1),u.error)throw i.dump(t.manage(u.error));return i.dump(t.manage(u.value))})}getWasmMemory(){let e=this.module.quickjsEmscriptenInit?.(()=>{})?.getWasmMemory?.();if(!e)throw new Error("Variant does not support getting WebAssembly.Memory");return e}getFFI(){return this.ffi}}});var it={};yt(it,{QuickJSModuleCallbacks:()=>Se,QuickJSWASMModule:()=>tt,applyBaseRuntimeOptions:()=>we,applyModuleEvalRuntimeOptions:()=>_e});var nt=se(()=>{rt()});W();async function st(e){let r=ye(await e),[t,i,{QuickJSWASMModule:u}]=await Promise.all([r.importModuleLoader().then(ye),r.importFFI(),Promise.resolve().then(()=>(nt(),it)).then(ye)]),a=await t();a.type="sync";let l=new i(a);return new u(a,l)}function ye(e){return e&&"default"in e&&e.default?e.default&&"default"in e.default&&e.default.default?e.default.default:e.default:e}var ot=class{constructor(e){this.module=e,this.DEBUG=!1,this.QTS_Throw=this.module.cwrap("QTS_Throw","number",["number","number"]),this.QTS_NewError=this.module.cwrap("QTS_NewError","number",["number"]),this.QTS_RuntimeSetMemoryLimit=this.module.cwrap("QTS_RuntimeSetMemoryLimit",null,["number","number"]),this.QTS_RuntimeComputeMemoryUsage=this.module.cwrap("QTS_RuntimeComputeMemoryUsage","number",["number","number"]),this.QTS_RuntimeDumpMemoryUsage=this.module.cwrap("QTS_RuntimeDumpMemoryUsage","number",["number"]),this.QTS_RecoverableLeakCheck=this.module.cwrap("QTS_RecoverableLeakCheck","number",[]),this.QTS_BuildIsSanitizeLeak=this.module.cwrap("QTS_BuildIsSanitizeLeak","number",[]),this.QTS_RuntimeSetMaxStackSize=this.module.cwrap("QTS_RuntimeSetMaxStackSize",null,["number","number"]),this.QTS_GetUndefined=this.module.cwrap("QTS_GetUndefined","number",[]),this.QTS_GetNull=this.module.cwrap("QTS_GetNull","number",[]),this.QTS_GetFalse=this.module.cwrap("QTS_GetFalse","number",[]),this.QTS_GetTrue=this.module.cwrap("QTS_GetTrue","number",[]),this.QTS_NewHostRef=this.module.cwrap("QTS_NewHostRef","number",["number","number"]),this.QTS_GetHostRefId=this.module.cwrap("QTS_GetHostRefId","number",["number"]),this.QTS_NewRuntime=this.module.cwrap("QTS_NewRuntime","number",[]),this.QTS_FreeRuntime=this.module.cwrap("QTS_FreeRuntime",null,["number"]),this.QTS_NewContext=this.module.cwrap("QTS_NewContext","number",["number","number"]),this.QTS_FreeContext=this.module.cwrap("QTS_FreeContext",null,["number"]),this.QTS_FreeValuePointer=this.module.cwrap("QTS_FreeValuePointer",null,["number","number"]),this.QTS_FreeValuePointerRuntime=this.module.cwrap("QTS_FreeValuePointerRuntime",null,["number","number"]),this.QTS_FreeVoidPointer=this.module.cwrap("QTS_FreeVoidPointer",null,["number","number"]),this.QTS_FreeCString=this.module.cwrap("QTS_FreeCString",null,["number","number"]),this.QTS_DupValuePointer=this.module.cwrap("QTS_DupValuePointer","number",["number","number"]),this.QTS_NewObject=this.module.cwrap("QTS_NewObject","number",["number"]),this.QTS_NewObjectProto=this.module.cwrap("QTS_NewObjectProto","number",["number","number"]),this.QTS_NewArray=this.module.cwrap("QTS_NewArray","number",["number"]),this.QTS_NewArrayBuffer=this.module.cwrap("QTS_NewArrayBuffer","number",["number","number","number"]),this.QTS_NewFloat64=this.module.cwrap("QTS_NewFloat64","number",["number","number"]),this.QTS_GetFloat64=this.module.cwrap("QTS_GetFloat64","number",["number","number"]),this.QTS_NewString=this.module.cwrap("QTS_NewString","number",["number","number"]),this.QTS_GetString=this.module.cwrap("QTS_GetString","number",["number","number"]),this.QTS_GetArrayBuffer=this.module.cwrap("QTS_GetArrayBuffer","number",["number","number"]),this.QTS_GetArrayBufferLength=this.module.cwrap("QTS_GetArrayBufferLength","number",["number","number"]),this.QTS_NewSymbol=this.module.cwrap("QTS_NewSymbol","number",["number","number","number"]),this.QTS_GetSymbolDescriptionOrKey=this.module.cwrap("QTS_GetSymbolDescriptionOrKey","number",["number","number"]),this.QTS_IsGlobalSymbol=this.module.cwrap("QTS_IsGlobalSymbol","number",["number","number"]),this.QTS_IsJobPending=this.module.cwrap("QTS_IsJobPending","number",["number"]),this.QTS_ExecutePendingJob=this.module.cwrap("QTS_ExecutePendingJob","number",["number","number","number"]),this.QTS_GetProp=this.module.cwrap("QTS_GetProp","number",["number","number","number"]),this.QTS_GetPropNumber=this.module.cwrap("QTS_GetPropNumber","number",["number","number","number"]),this.QTS_SetProp=this.module.cwrap("QTS_SetProp",null,["number","number","number","number"]),this.QTS_DefineProp=this.module.cwrap("QTS_DefineProp",null,["number","number","number","number","number","number","boolean","boolean","boolean"]),this.QTS_GetOwnPropertyNames=this.module.cwrap("QTS_GetOwnPropertyNames","number",["number","number","number","number","number"]),this.QTS_Call=this.module.cwrap("QTS_Call","number",["number","number","number","number","number"]),this.QTS_ResolveException=this.module.cwrap("QTS_ResolveException","number",["number","number"]),this.QTS_Dump=this.module.cwrap("QTS_Dump","number",["number","number"]),this.QTS_Eval=this.module.cwrap("QTS_Eval","number",["number","number","number","string","number","number"]),this.QTS_GetModuleNamespace=this.module.cwrap("QTS_GetModuleNamespace","number",["number","number"]),this.QTS_Typeof=this.module.cwrap("QTS_Typeof","number",["number","number"]),this.QTS_GetLength=this.module.cwrap("QTS_GetLength","number",["number","number","number"]),this.QTS_IsEqual=this.module.cwrap("QTS_IsEqual","number",["number","number","number","number"]),this.QTS_GetGlobalObject=this.module.cwrap("QTS_GetGlobalObject","number",["number"]),this.QTS_NewPromiseCapability=this.module.cwrap("QTS_NewPromiseCapability","number",["number","number"]),this.QTS_PromiseState=this.module.cwrap("QTS_PromiseState","number",["number","number"]),this.QTS_PromiseResult=this.module.cwrap("QTS_PromiseResult","number",["number","number"]),this.QTS_TestStringArg=this.module.cwrap("QTS_TestStringArg",null,["string"]),this.QTS_GetDebugLogEnabled=this.module.cwrap("QTS_GetDebugLogEnabled","number",["number"]),this.QTS_SetDebugLogEnabled=this.module.cwrap("QTS_SetDebugLogEnabled",null,["number","number"]),this.QTS_BuildIsDebug=this.module.cwrap("QTS_BuildIsDebug","number",[]),this.QTS_BuildIsAsyncify=this.module.cwrap("QTS_BuildIsAsyncify","number",[]),this.QTS_NewFunction=this.module.cwrap("QTS_NewFunction","number",["number","string","number","boolean","number"]),this.QTS_ArgvGetJSValueConstPointer=this.module.cwrap("QTS_ArgvGetJSValueConstPointer","number",["number","number"]),this.QTS_RuntimeEnableInterruptHandler=this.module.cwrap("QTS_RuntimeEnableInterruptHandler",null,["number"]),this.QTS_RuntimeDisableInterruptHandler=this.module.cwrap("QTS_RuntimeDisableInterruptHandler",null,["number"]),this.QTS_RuntimeEnableModuleLoader=this.module.cwrap("QTS_RuntimeEnableModuleLoader",null,["number","number"]),this.QTS_RuntimeDisableModuleLoader=this.module.cwrap("QTS_RuntimeDisableModuleLoader",null,["number"]),this.QTS_bjson_encode=this.module.cwrap("QTS_bjson_encode","number",["number","number"]),this.QTS_bjson_decode=this.module.cwrap("QTS_bjson_decode","number",["number","number"])}};async function Dt(e={}){var r,t=e,i=!!globalThis.window,u=!!globalThis.WorkerGlobalScope;function a(n){n={log:n||function(){}};for(let o of a.Pa)o(n);return t.quickJSEmscriptenExtensions=n}a.Pa=[],t.quickjsEmscriptenInit=a,a.Pa.push(n=>{n.getWasmMemory=function(){return k}});var l="./this.program",m=import.meta.url,c="",T,Q;if(i||u){try{c=new URL(".",m).href}catch{}u&&(Q=n=>{var o=new XMLHttpRequest;return o.open("GET",n,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),T=async n=>{if(n=await fetch(n,{credentials:"same-origin"}),n.ok)return n.arrayBuffer();throw Error(n.status+" : "+n.url)}}var S=console.log.bind(console),g=console.error.bind(console),O,B=!1,K,ve,ge,be,F,b,A,Te=!1;function Qe(){var n=k.buffer;t.HEAP8=be=new Int8Array(n),new Int16Array(n),t.HEAPU8=F=new Uint8Array(n),new Uint16Array(n),b=new Int32Array(n),A=new Uint32Array(n),new Float32Array(n),new Float64Array(n),new BigInt64Array(n),new BigUint64Array(n)}function Z(n){throw t.onAbort?.(n),n="Aborted("+n+")",g(n),B=!0,n=new WebAssembly.RuntimeError(n+". Build with -sASSERTIONS for more info."),ge?.(n),n}var X;async function at(n){if(!O)try{var o=await T(n);return new Uint8Array(o)}catch{}if(n==X&&O)n=new Uint8Array(O);else if(Q)n=Q(n);else throw"both async and sync fetching of the wasm failed";return n}async function lt(n,o){try{var s=await at(n);return await WebAssembly.instantiate(s,o)}catch(h){g(`failed to asynchronously prepare wasm: ${h}`),Z(h)}}async function mt(n){var o=X;if(!O)try{var s=fetch(o,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(s,n)}catch(h){g(`wasm streaming compile failed: ${h}`),g("falling back to ArrayBuffer instantiation")}return lt(o,n)}class xe{name="ExitStatus";constructor(o){this.message=`Program terminated with exit(${o})`,this.status=o}}var Pe=n=>{for(;0<n.length;)n.shift()(t)},Me=[],Ae=[],ht=()=>{var n=t.preRun.shift();Ae.push(n)},U=!0,k,Ee=new TextDecoder,Re=(n,o,s,h)=>{if(s=o+s,h)return s;for(;n[o]&&!(o>=s);)++o;return o},E=(n,o,s)=>n?Ee.decode(F.subarray(n,Re(F,n,o,s))):"",ee=0,ct=[0,31,60,91,121,152,182,213,244,274,305,335],dt=[0,31,59,90,120,151,181,212,243,273,304,334],G={},ke=n=>{if(!(n instanceof xe||n=="unwind"))throw n},Ie=n=>{throw K=n,U||0<ee||(t.onExit?.(n),B=!0),new xe(n)},ft=n=>{if(!B)try{n()}catch(o){ke(o)}finally{if(!(U||0<ee))try{K=n=K,Ie(n)}catch(o){ke(o)}}},I=(n,o,s)=>{var h=F;if(!(0<s))return 0;var d=o;s=o+s-1;for(var f=0;f<n.length;++f){var p=n.codePointAt(f);if(127>=p){if(o>=s)break;h[o++]=p}else if(2047>=p){if(o+1>=s)break;h[o++]=192|p>>6,h[o++]=128|p&63}else if(65535>=p){if(o+2>=s)break;h[o++]=224|p>>12,h[o++]=128|p>>6&63,h[o++]=128|p&63}else{if(o+3>=s)break;h[o++]=240|p>>18,h[o++]=128|p>>12&63,h[o++]=128|p>>6&63,h[o++]=128|p&63,f++}}return h[o]=0,o-d},te={},Le=()=>{if(!re){var n={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:l||"./this.program"},o;for(o in te)te[o]===void 0?delete n[o]:n[o]=te[o];var s=[];for(o in n)s.push(`${o}=${n[o]}`);re=s}return re},re,ie=n=>{for(var o=0,s=0;s<n.length;++s){var h=n.charCodeAt(s);127>=h?o++:2047>=h?o+=2:55296<=h&&57343>=h?(o+=4,++s):o+=3}return o},pt=[null,[],[]],St=(n,o,s,h)=>{var d={string:w=>{var _=0;if(w!=null&&w!==0){_=ie(w)+1;var P=ne(_);I(w,P,_),_=P}return _},array:w=>{var _=ne(w.length);return be.set(w,_),_}};n=t["_"+n];var f=[],p=0;if(h)for(var v=0;v<h.length;v++){var C=d[s[v]];C?(p===0&&(p=Fe()),f[v]=C(h[v])):f[v]=h[v]}return s=n(...f),s=(function(w){return p!==0&&Ne(p),o==="string"?E(w):o==="boolean"?!!w:w})(s)};if(t.wasmMemory?k=t.wasmMemory:k=new WebAssembly.Memory({initial:(t.INITIAL_MEMORY||16777216)/65536,maximum:32768}),Qe(),t.noExitRuntime&&(U=t.noExitRuntime),t.print&&(S=t.print),t.printErr&&(g=t.printErr),t.wasmBinary&&(O=t.wasmBinary),t.thisProgram&&(l=t.thisProgram),t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.shift()();t.cwrap=(n,o,s,h)=>{var d=!s||s.every(f=>f==="number"||f==="boolean");return o!=="string"&&d&&!h?t["_"+n]:(...f)=>St(n,o,s,f)},t.UTF8ToString=E,t.stringToUTF8=(n,o,s)=>I(n,o,s),t.lengthBytesUTF8=ie;var Je,Ne,ne,Fe,wt={b:(n,o,s,h)=>Z(`Assertion failed: ${E(n)}, at: `+[o?E(o):"unknown filename",s,h?E(h):"unknown function"]),q:()=>Z(""),l:()=>{U=!1,ee=0},m:function(n,o){n=-9007199254740992>n||9007199254740992<n?NaN:Number(n),n=new Date(1e3*n),b[o>>2]=n.getSeconds(),b[o+4>>2]=n.getMinutes(),b[o+8>>2]=n.getHours(),b[o+12>>2]=n.getDate(),b[o+16>>2]=n.getMonth(),b[o+20>>2]=n.getFullYear()-1900,b[o+24>>2]=n.getDay();var s=n.getFullYear();b[o+28>>2]=(s%4!==0||s%100===0&&s%400!==0?dt:ct)[n.getMonth()]+n.getDate()-1|0,b[o+36>>2]=-(60*n.getTimezoneOffset()),s=new Date(n.getFullYear(),6,1).getTimezoneOffset();var h=new Date(n.getFullYear(),0,1).getTimezoneOffset();b[o+32>>2]=(s!=h&&n.getTimezoneOffset()==Math.min(h,s))|0},j:(n,o)=>{if(G[n]&&(clearTimeout(G[n].id),delete G[n]),!o)return 0;var s=setTimeout(()=>{delete G[n],ft(()=>Je(n,performance.now()))},o);return G[n]={id:s,Qa:o},0},n:(n,o,s,h)=>{var d=new Date().getFullYear(),f=new Date(d,0,1).getTimezoneOffset();d=new Date(d,6,1).getTimezoneOffset(),A[n>>2]=60*Math.max(f,d),b[o>>2]=+(f!=d),o=p=>{var v=Math.abs(p);return`UTC${0<=p?"-":"+"}${String(Math.floor(v/60)).padStart(2,"0")}${String(v%60).padStart(2,"0")}`},n=o(f),o=o(d),d<f?(I(n,s,17),I(o,h,17)):(I(n,h,17),I(o,s,17))},p:()=>Date.now(),k:n=>{var o=F.length;if(n>>>=0,2147483648<n)return!1;for(var s=1;4>=s;s*=2){var h=o*(1+.2/s);h=Math.min(h,n+100663296);e:{h=(Math.min(2147483648,65536*Math.ceil(Math.max(n,h)/65536))-k.buffer.byteLength+65535)/65536|0;try{k.grow(h),Qe();var d=1;break e}catch{}d=void 0}if(d)return!0}return!1},e:(n,o)=>{var s=0,h=0,d;for(d of Le()){var f=o+s;A[n+h>>2]=f,s+=I(d,f,1/0)+1,h+=4}return 0},f:(n,o)=>{var s=Le();A[n>>2]=s.length,n=0;for(var h of s)n+=ie(h)+1;return A[o>>2]=n,0},d:()=>52,o:function(){return 70},c:(n,o,s,h)=>{for(var d=0,f=0;f<s;f++){var p=A[o>>2],v=A[o+4>>2];o+=8;for(var C=0;C<v;C++){var w=n,_=F[p+C],P=pt[w];_===0||_===10?(w=w===1?S:g,_=Re(P,0),_=Ee.decode(P.buffer?P.subarray(0,_):new Uint8Array(P.slice(0,_))),w(_),P.length=0):P.push(_)}d+=v}return A[h>>2]=d,0},a:k,r:Ie,s:function(n,o,s,h,d){return t.callbacks.callFunction(void 0,n,o,s,h,d)},i:function(n){return t.callbacks.shouldInterrupt(void 0,n)},h:function(n,o,s){return s=E(s),t.callbacks.loadModuleSource(void 0,n,o,s)},g:function(n,o,s,h){return s=E(s),h=E(h),t.callbacks.normalizeModule(void 0,n,o,s,h)},t:function(n,o){t.callbacks.freeHostRef(void 0,n,o)}},j;return j=await(async function(){function n(s){return s=j=s.exports,t._malloc=s.v,t._QTS_Throw=s.w,t._QTS_NewError=s.x,t._QTS_RuntimeSetMemoryLimit=s.y,t._QTS_RuntimeComputeMemoryUsage=s.z,t._QTS_RuntimeDumpMemoryUsage=s.A,t._QTS_RecoverableLeakCheck=s.B,t._QTS_BuildIsSanitizeLeak=s.C,t._QTS_RuntimeSetMaxStackSize=s.D,t._QTS_GetUndefined=s.E,t._QTS_GetNull=s.F,t._QTS_GetFalse=s.G,t._QTS_GetTrue=s.H,t._QTS_NewHostRef=s.I,t._QTS_GetHostRefId=s.J,t._QTS_NewRuntime=s.K,t._QTS_FreeRuntime=s.L,t._free=s.M,t._QTS_NewContext=s.N,t._QTS_FreeContext=s.O,t._QTS_FreeValuePointer=s.P,t._QTS_FreeValuePointerRuntime=s.Q,t._QTS_FreeVoidPointer=s.R,t._QTS_FreeCString=s.S,t._QTS_DupValuePointer=s.T,t._QTS_NewObject=s.U,t._QTS_NewObjectProto=s.V,t._QTS_NewArray=s.W,t._QTS_NewArrayBuffer=s.X,t._QTS_NewFloat64=s.Y,t._QTS_GetFloat64=s.Z,t._QTS_NewString=s._,t._QTS_GetString=s.$,t._QTS_GetArrayBuffer=s.aa,t._QTS_GetArrayBufferLength=s.ba,t._QTS_NewSymbol=s.ca,t._QTS_GetSymbolDescriptionOrKey=s.da,t._QTS_IsGlobalSymbol=s.ea,t._QTS_IsJobPending=s.fa,t._QTS_ExecutePendingJob=s.ga,t._QTS_GetProp=s.ha,t._QTS_GetPropNumber=s.ia,t._QTS_SetProp=s.ja,t._QTS_DefineProp=s.ka,t._QTS_GetOwnPropertyNames=s.la,t._QTS_Call=s.ma,t._QTS_ResolveException=s.na,t._QTS_Dump=s.oa,t._QTS_Eval=s.pa,t._QTS_GetModuleNamespace=s.qa,t._QTS_Typeof=s.ra,t._QTS_GetLength=s.sa,t._QTS_IsEqual=s.ta,t._QTS_GetGlobalObject=s.ua,t._QTS_NewPromiseCapability=s.va,t._QTS_PromiseState=s.wa,t._QTS_PromiseResult=s.xa,t._QTS_TestStringArg=s.ya,t._QTS_GetDebugLogEnabled=s.za,t._QTS_SetDebugLogEnabled=s.Aa,t._QTS_BuildIsDebug=s.Ba,t._QTS_BuildIsAsyncify=s.Ca,t._QTS_NewFunction=s.Da,t._QTS_ArgvGetJSValueConstPointer=s.Ea,t._QTS_RuntimeEnableInterruptHandler=s.Fa,t._QTS_RuntimeDisableInterruptHandler=s.Ga,t._QTS_RuntimeEnableModuleLoader=s.Ha,t._QTS_RuntimeDisableModuleLoader=s.Ia,t._QTS_bjson_encode=s.Ja,t._QTS_bjson_decode=s.Ka,Je=s.La,Ne=s.Ma,ne=s.Na,Fe=s.Oa,j}var o={a:wt};return t.instantiateWasm?new Promise(s=>{t.instantiateWasm(o,(h,d)=>{s(n(h,d))})}):(X??=t.locateFile?t.locateFile?t.locateFile("emscripten-module.wasm",c):c+"emscripten-module.wasm":new URL("emscripten-module.wasm",import.meta.url).href,n((await mt(o)).instance))})(),(function(){function n(){if(t.calledRun=!0,!B){if(Te=!0,j.u(),ve?.(t),t.onRuntimeInitialized?.(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;){var o=t.postRun.shift();Me.push(o)}Pe(Me)}}if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)ht();Pe(Ae),t.setStatus?(t.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>t.setStatus(""),1),n()},1)):n()})(),Te?r=t:r=new Promise((n,o)=>{ve=n,ge=o}),r}var ut=Dt;var Ir=e=>st({type:"sync",importFFI:async()=>ot,importModuleLoader:async()=>()=>ut({wasmBinary:e,locateFile:()=>"data:application/wasm;base64,"})});export{Ir as createQuickJS};
|
|
Binary file
|
package/dist/cli/accept.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { assertProspectiveRootClockSelection } from "../host/root-clock-source.js";
|
|
2
|
+
import { hasContextualPlace, landContextualPlace } from "../host/contextual-place.js";
|
|
1
3
|
import { commitLocalAct, intactLocalAct, committedLocalActs } from "../host/ports/local-act.js";
|
|
2
4
|
import { withoutEffects } from "../host/read-only.js";
|
|
3
5
|
import { admittedLine } from "../host/selected-topos.js";
|
|
@@ -26,7 +28,7 @@ import { retractedTogether, withdrawal } from "../land/withdraw.js";
|
|
|
26
28
|
import { isCeiling } from "../fold/configures.js";
|
|
27
29
|
import { inertIn } from "../land/inert.js";
|
|
28
30
|
import { landSaid } from "./pass.js";
|
|
29
|
-
import { underTheLock, underTheRegions } from "../land/act.js";
|
|
31
|
+
import { underTheLock, underTheRegions, underAuthorityRegions, underRootProjection } from "../land/act.js";
|
|
30
32
|
import { openedBy } from "../fold/opened.js";
|
|
31
33
|
import { touchedBy } from "../fold/reach.js";
|
|
32
34
|
import { landOwned, ownedOf } from "../land/owned.js";
|
|
@@ -46,6 +48,7 @@ import { judgeDemand, landTake } from "./takes.js";
|
|
|
46
48
|
function admissionEvidence(root, signed, standing) {
|
|
47
49
|
return withoutEffects(() => {
|
|
48
50
|
const store = storeOf(root);
|
|
51
|
+
assertProspectiveRootClockSelection(root, signed);
|
|
49
52
|
const reads = !signed.some(isReaderLock) && signed.some(isCeiling);
|
|
50
53
|
const fold = reads ? coneOf(root, entryOf(root), signed.filter(isCeiling)) : { standing, observed: [], own: {}, kept: true };
|
|
51
54
|
const inert = inertIn(signed, { standing: fold.standing, ceiling: isCeiling, signsReader: !reads, observed: fold.observed, own: fold.own, epoch: epochOf([...lockLines(store), ...signed]) });
|
|
@@ -277,6 +280,14 @@ export async function signedBatch(root, args, files) {
|
|
|
277
280
|
*/
|
|
278
281
|
export async function accept(root, args) {
|
|
279
282
|
const started = Date.now();
|
|
283
|
+
const contextFiles = positionalsOf(args);
|
|
284
|
+
if (contextFiles.length === 1 && hasContextualPlace(root) && !claimLinesIn(contextFiles[0]).length) {
|
|
285
|
+
if (namedPlaces(args).length || valueOf(args, FLAGS.key) || valueOf(args, FLAGS.keyFile) || valueOf(args, FLAGS.signer))
|
|
286
|
+
throw Error('REFUSE·contextual place accepts one already signed context envelope');
|
|
287
|
+
const result = await landContextualPlace(root, contextFiles[0]);
|
|
288
|
+
process.stdout.write(JSON.stringify({ profile: 'place-act-context@1', identity: result.identity, status: result.kind, context: result.context, receipts: result.receipts }) + '\n');
|
|
289
|
+
return 0;
|
|
290
|
+
}
|
|
280
291
|
const named = namedPlaces(args);
|
|
281
292
|
const placed = positionalsOf(args).reduce((all, file) => ((places) => (places.length ? claimLinesIn(file).reduce((got, line) => got.set(sayingOf(line), [...new Set([...(got.get(sayingOf(line)) ?? []), ...places])]), all) : all))(placesOfFile(file)), new Map());
|
|
282
293
|
const batch = await signedBatch(root, args, positionalsOf(args));
|
|
@@ -301,7 +312,11 @@ export async function accept(root, args) {
|
|
|
301
312
|
const where = every ? 'every place · then the root, where the places join' : regions.length ? regions.map((one) => `${one}/`).join(' · ') : 'the root alone, where the places join';
|
|
302
313
|
process.stdout.write(`ACTS ${where} · ${owned.ledger.length} lines to the ledger${[...owned.own].map(([place, lines]) => ` · ${lines.length} to ${place}'s own lock`).join('')} · before the lock\n`);
|
|
303
314
|
const asked = Date.now();
|
|
304
|
-
|
|
315
|
+
// Root-ledger writes may change grants or inherited policies. Child-only
|
|
316
|
+
// lots read that authority through publication, without excluding siblings.
|
|
317
|
+
const rootWrite = owned.ledger.length > 0 || every || regions.length === 0;
|
|
318
|
+
const enter = rootWrite ? underTheRegions : underAuthorityRegions;
|
|
319
|
+
return enter(store, rootWrite ? [...regions, ''] : regions, 'land', () => acceptNow(root, { ...batch, signed: owned.ledger, records: batch.signed }, started, owned, asked, regions));
|
|
305
320
|
}
|
|
306
321
|
async function acceptNow(root, batch, started, owned, asked = started, descent = []) {
|
|
307
322
|
const waited = Date.now() - asked;
|
|
@@ -318,6 +333,13 @@ async function acceptNow(root, batch, started, owned, asked = started, descent =
|
|
|
318
333
|
process.stderr.write(`${selfName()}: REFUSE·base moved ${batch.base.digest} → ${currentBase} · nothing landed\n`);
|
|
319
334
|
return 1;
|
|
320
335
|
}
|
|
336
|
+
try {
|
|
337
|
+
assertProspectiveRootClockSelection(root, signed);
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
process.stderr.write(`${selfName()}: ${error instanceof Error ? error.message : String(error)} · nothing landed\n`);
|
|
341
|
+
return 1;
|
|
342
|
+
}
|
|
321
343
|
if (signed.some(line => !isConfig(line))) {
|
|
322
344
|
try {
|
|
323
345
|
await admittedObjects(root, [...signedOwnerLines(store), ...signed]);
|
|
@@ -396,67 +418,69 @@ async function acceptNow(root, batch, started, owned, asked = started, descent =
|
|
|
396
418
|
landed = took('land', () => [...new Set(signed.map(line => fieldOf(line, 'by')))].map(by => land(store, by, signed.filter(line => fieldOf(line, 'by') === by))));
|
|
397
419
|
for (const [place, lines] of owned.own)
|
|
398
420
|
landOwned(root, place, lines, resultProfile !== undefined);
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
const
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
for (const need of locationsOf(fieldOf(line, 'needs')).locations) {
|
|
405
|
-
const at = join(root, need);
|
|
406
|
-
const bytes = observeFile(at);
|
|
407
|
-
if (bytes === undefined)
|
|
421
|
+
return underRootProjection(store, 'projection', async () => {
|
|
422
|
+
landSaid(store, writerFor(told.standing, 'fold'), []);
|
|
423
|
+
for (const line of signed) {
|
|
424
|
+
const value = fieldOf(line, 'value');
|
|
425
|
+
if (!/^[a-z0-9-]+:[0-9a-f]{32,}$/.test(value))
|
|
408
426
|
continue;
|
|
409
|
-
|
|
410
|
-
|
|
427
|
+
for (const need of locationsOf(fieldOf(line, 'needs')).locations) {
|
|
428
|
+
const at = join(root, need);
|
|
429
|
+
const bytes = observeFile(at);
|
|
430
|
+
if (bytes === undefined)
|
|
431
|
+
continue;
|
|
432
|
+
if (bytesDigest(store, bytes) === value)
|
|
433
|
+
landBlob(store, value, bytes);
|
|
434
|
+
}
|
|
411
435
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
436
|
+
if (coordinates.taken.length) {
|
|
437
|
+
for (const path of coordinates.taken) {
|
|
438
|
+
if (existsSync(join(root, path)))
|
|
439
|
+
rmSync(join(root, path), { recursive: true });
|
|
440
|
+
for (let dir = dirname(path); dir !== '.' && existsSync(join(root, dir)) && !entriesIn(join(root, dir)).length; dir = dirname(dir))
|
|
441
|
+
rmdirSync(join(root, dir));
|
|
442
|
+
}
|
|
443
|
+
landCoordinates(store, new Map(), coordinates.taken, `withdraw:epoch-${epoch}`);
|
|
444
|
+
for (const path of coordinates.taken)
|
|
445
|
+
process.stdout.write(`GONE ${path} · withdrawn by its line\n`);
|
|
419
446
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
land(store, 'judge', late);
|
|
431
|
-
for (const line of late)
|
|
432
|
-
if (fieldOf(line, 'measure') !== 'cone')
|
|
433
|
-
process.stdout.write(`LATE ${fieldOf(line, 'scope')} · answered from the landed cone\n`);
|
|
434
|
-
}
|
|
435
|
-
if (signed.some((line) => fieldOf(line, 'scope').startsWith(`${basename(ownRoot())}/`) && !fieldOf(line, 'scope').split('/').slice(1, -1).includes('uses'))) {
|
|
436
|
-
const code = instrumentOf(store, entryOf(root), told.standing, root, ownLock());
|
|
437
|
-
if (instrumentKept(store) !== code) {
|
|
438
|
-
const open = await closeReceipts(root, store);
|
|
439
|
-
instrumentKeep(store, code);
|
|
440
|
-
process.stderr.write(`open by instrument · ${open.length}\n`);
|
|
447
|
+
for (const one of judged)
|
|
448
|
+
landTake(root, one, []);
|
|
449
|
+
const standingAsked = [...signed, ...fold.standing].filter((line) => fieldOf(line, 'role') === 'demands' && fieldOf(line, 'value') !== 'withdraw');
|
|
450
|
+
const paidScopes = new Set(paidOf(store, standingAsked, fold.observed, view).paid.map((line) => fieldOf(line, 'scope')));
|
|
451
|
+
const late = lateFacts(store, [...signed, ...fold.standing], paidScopes);
|
|
452
|
+
if (late.length) {
|
|
453
|
+
land(store, 'judge', late);
|
|
454
|
+
for (const line of late)
|
|
455
|
+
if (fieldOf(line, 'measure') !== 'cone')
|
|
456
|
+
process.stdout.write(`LATE ${fieldOf(line, 'scope')} · answered from the landed cone\n`);
|
|
441
457
|
}
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
458
|
+
if (signed.some((line) => fieldOf(line, 'scope').startsWith(`${basename(ownRoot())}/`) && !fieldOf(line, 'scope').split('/').slice(1, -1).includes('uses'))) {
|
|
459
|
+
const code = instrumentOf(store, entryOf(root), told.standing, root, ownLock());
|
|
460
|
+
if (instrumentKept(store) !== code) {
|
|
461
|
+
const open = await closeReceipts(root, store);
|
|
462
|
+
instrumentKeep(store, code);
|
|
463
|
+
process.stderr.write(`open by instrument · ${open.length}\n`);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
const rendered = took('render', () => renderInto(root, store));
|
|
467
|
+
process.stdout.write(`RENDER 0\n`);
|
|
468
|
+
const own = new Set([...owned.own.values()].flat()).size;
|
|
469
|
+
const perLine = Math.round((Date.now() - started) / Math.max(1, signed.length + own));
|
|
470
|
+
const folder = writerFor(fold.standing, 'fold');
|
|
471
|
+
const beat = (ms, at) => canonical({ scope: 'beat/accept', role: 'writes', form: 'interval', measure: 'ms', value: `${ms}..${ms}`, by: folder ?? '', at: `place:${at}` });
|
|
472
|
+
if (folder !== undefined)
|
|
473
|
+
land(store, folder, [beat(perLine, 'line'), beat(1, fold.kept ? 'kept' : 'folded'), beat(Date.now() - started, 'total')]);
|
|
474
|
+
process.stdout.write(`FACT signed ${signed.length + own} · landed ${landed.length ? landed.map((one) => `${one.appended} in ${one.at}`).join(' · ') : '0'}${[...owned.own].map(([place, lines]) => ` · ${lines.length} in ${place}/${LOCK}`).join('')} · epoch ${epoch}\n`
|
|
475
|
+
+ `TARGET ${rendered.standing} claims · ${rendered.forks.length} forks · ${rendered.vacuous.length} vacuous · ${rendered.grey.length} grey · ${rendered.refused.length} refused · readings · no encounters computed · ${Date.now() - started} ms\n`
|
|
476
|
+
+ `SPENT ${spent.join(' ms · ')} ms · ${signed.length} lines\n`);
|
|
477
|
+
if (withdrawn) {
|
|
478
|
+
process.stdout.write(`WITHDRAW ${withdrawn.taken.length} taken · ${withdrawn.exact.length} exact on distributive scales · ${withdrawn.open.length} on open scales, not computed\n`);
|
|
479
|
+
for (const line of withdrawn.inexact)
|
|
480
|
+
process.stdout.write(`INEXACT ${fieldOf(line, 'scope')} · its scale is not distributive: what the others hold is not what they held without it\n`);
|
|
481
|
+
}
|
|
482
|
+
return 0;
|
|
483
|
+
});
|
|
460
484
|
}
|
|
461
485
|
/**
|
|
462
486
|
* A batch landed twice is one: nothing of it lands again. What it left unpaid is judged again, the way it would be now:
|
package/dist/cli/act-result.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { type ActResult } from '@lapxo/topos/wire';
|
|
2
|
+
import { type LocalActBundle } from '../host/ports/local-act.ts';
|
|
1
3
|
/** Public query of a committed identity, using the same admission authority.
|
|
2
4
|
* Native fold evidence has store provenance; it never grants coverage. */
|
|
5
|
+
export declare function verifiedLegacyActResult(root: string, identity: string): {
|
|
6
|
+
result: ActResult;
|
|
7
|
+
bundle: LocalActBundle;
|
|
8
|
+
records: readonly string[];
|
|
9
|
+
epoch: number;
|
|
10
|
+
history: readonly string[];
|
|
11
|
+
};
|
|
3
12
|
export declare function printActResult(root: string, identity: string | undefined): void;
|
package/dist/cli/act-result.js
CHANGED
|
@@ -1,31 +1,68 @@
|
|
|
1
|
+
import { hashText } from "../host/hash.js";
|
|
2
|
+
import { hasContextualPlace, contextualAct } from "../host/contextual-place.js";
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
1
4
|
import { actResultOf, actResultProfile } from '@lapxo/topos/wire';
|
|
2
5
|
import { actLines, intactLocalAct, localActResult } from "../host/ports/local-act.js";
|
|
3
6
|
import { storeOf } from "../land/ledger.js";
|
|
4
7
|
import { lockStanding } from "../fold/keys.js";
|
|
5
8
|
import { authorityFor, writerFor } from "../fold/signers.js";
|
|
6
9
|
import { eraOf } from "../fold/digests.js";
|
|
7
|
-
import { fieldOf, isConfig, foldClaims } from "../fold/claims.js";
|
|
10
|
+
import { fieldOf, isConfig, foldClaims, parsedLine } from "../fold/claims.js";
|
|
8
11
|
import { ownRecordAdmitted } from "../fold/signed.js";
|
|
9
12
|
import { admissionAnchor, admissionHistoryAt } from "../fold/admission-history.js";
|
|
10
13
|
import { fullDigest } from "../host/digest.js";
|
|
11
14
|
import { wordOf, wireLine } from "../fold/wire.js";
|
|
12
15
|
import { viewsOf } from "../fold/views.js";
|
|
16
|
+
/** Historical proof only. Exact current bodies, admission history and bootstrap
|
|
17
|
+
* anchor are reread before lookup; this never retains a current command grant. */
|
|
18
|
+
const historicalProofs = new WeakMap();
|
|
19
|
+
function proofFingerprint(identity, bundle, history, anchor, algorithms) {
|
|
20
|
+
const hash = createHash('sha256'), text = hashText.bind(undefined, hash);
|
|
21
|
+
text('legacy-act-historical-proof/1');
|
|
22
|
+
text(identity);
|
|
23
|
+
text(bundle.records);
|
|
24
|
+
text(bundle.receipt);
|
|
25
|
+
text(bundle.placements === undefined ? 'absent' : 'present');
|
|
26
|
+
text(String(bundle.placements?.length ?? 0));
|
|
27
|
+
for (const placement of bundle.placements ?? []) {
|
|
28
|
+
text(placement.place);
|
|
29
|
+
text(placement.records);
|
|
30
|
+
}
|
|
31
|
+
text(String(history.length));
|
|
32
|
+
for (const line of history)
|
|
33
|
+
text(line);
|
|
34
|
+
text(JSON.stringify(anchor));
|
|
35
|
+
text(String(algorithms.length));
|
|
36
|
+
for (const algorithm of algorithms)
|
|
37
|
+
text(algorithm);
|
|
38
|
+
return hash.digest('hex');
|
|
39
|
+
}
|
|
40
|
+
const freshResult = (result) => ({ ...result, records: [...result.records] });
|
|
13
41
|
/** Public query of a committed identity, using the same admission authority.
|
|
14
42
|
* Native fold evidence has store provenance; it never grants coverage. */
|
|
15
|
-
export function
|
|
16
|
-
const store = storeOf(root)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
43
|
+
export function verifiedLegacyActResult(root, identity) {
|
|
44
|
+
const store = storeOf(root);
|
|
45
|
+
let observation;
|
|
46
|
+
const bundle = localActResult(store, identity, (id, current) => {
|
|
47
|
+
const receipt = parsedLine(current.receipt.trim());
|
|
48
|
+
if (receipt.kind !== 'fact')
|
|
49
|
+
return intactLocalAct(id, current);
|
|
50
|
+
const epoch = Number(fieldOf(current.receipt.trim(), 'epoch'));
|
|
51
|
+
const history = admissionHistoryAt(root, epoch), before = history.filter(line => !isConfig(line) || Number(fieldOf(line, 'epoch')) < epoch);
|
|
52
|
+
const algorithms = eraOf(foldClaims(before).standing).admitted, anchor = admissionAnchor(root);
|
|
53
|
+
const fingerprint = proofFingerprint(id, current, history, anchor, algorithms), cached = historicalProofs.get(receipt.value);
|
|
54
|
+
const retained = cached?.fingerprint === fingerprint ? cached.result : undefined;
|
|
55
|
+
observation = { epoch, history, before, algorithms, anchor, key: receipt.value, fingerprint, ...(retained ? { retained } : {}) };
|
|
56
|
+
return retained !== undefined || intactLocalAct(id, current);
|
|
57
|
+
});
|
|
23
58
|
if (!bundle)
|
|
24
59
|
throw Error('REFUSE·act no committed result ' + identity);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
60
|
+
if (!observation)
|
|
61
|
+
throw Error('REFUSE·act historical proof observation absent');
|
|
62
|
+
const records = actLines(bundle.records), { epoch, history, before, algorithms, anchor, retained } = observation;
|
|
63
|
+
if (retained)
|
|
64
|
+
return { result: freshResult(retained), bundle, records, epoch, history };
|
|
65
|
+
const authority = authorityFor(history, anchor, algorithms);
|
|
29
66
|
const admittedBefore = foldClaims(before.filter(line => authority.of(line).kind === 'admitted')).standing;
|
|
30
67
|
const profile = actResultProfile(admittedBefore);
|
|
31
68
|
if (!profile)
|
|
@@ -44,5 +81,23 @@ export function printActResult(root, identity) {
|
|
|
44
81
|
return bundle.placements.some(p => actLines(p.records).includes(line) && (p.place === '.' ? authority.of(line).kind === 'admitted' : ownRecordAdmitted(line, p.place.slice(0, p.place.lastIndexOf('/')), family, authority.admitted, algorithms)));
|
|
45
82
|
},
|
|
46
83
|
verifiesReceipt: line => fieldOf(line, 'by') === writerFor(admittedBefore, 'fold') && intactLocalAct(identity, bundle), });
|
|
84
|
+
const kept = Object.freeze({ ...result, records: Object.freeze([...result.records]) });
|
|
85
|
+
historicalProofs.set(observation.key, { fingerprint: observation.fingerprint, result: kept });
|
|
86
|
+
return { result: freshResult(kept), bundle, records, epoch, history };
|
|
87
|
+
}
|
|
88
|
+
export function printActResult(root, identity) {
|
|
89
|
+
const store = storeOf(root), standing = lockStanding(store), view = viewsOf(standing).get('act');
|
|
90
|
+
if (!view || view.shape || !view.regions.some(region => region.name === 'act'))
|
|
91
|
+
throw Error('REFUSE·view act requires an admitted result profile and act view');
|
|
92
|
+
if (!identity)
|
|
93
|
+
throw Error('REFUSE·act name one committed identity');
|
|
94
|
+
if (hasContextualPlace(root)) {
|
|
95
|
+
const contextual = contextualAct(root, identity);
|
|
96
|
+
if (contextual) {
|
|
97
|
+
process.stdout.write(JSON.stringify(contextual) + '\n');
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const { result, bundle } = verifiedLegacyActResult(root, identity);
|
|
47
102
|
process.stdout.write(`ACT ${result.identity} · epoch ${result.epoch} · admitted · conformance not asserted\n` + bundle.records + bundle.receipt);
|
|
48
103
|
}
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare function entryOf(root: string): string;
|
|
|
5
5
|
export declare function valueOf(args: readonly string[], flag: string): string | undefined;
|
|
6
6
|
export declare const valuesOf: (args: readonly string[], flag: string) => readonly string[];
|
|
7
7
|
export declare const namedPlaces: (args: readonly string[]) => readonly string[];
|
|
8
|
+
export declare function positionalIndexes(args: readonly string[]): number[];
|
|
8
9
|
export declare function positionalsOf(args: readonly string[]): string[];
|
|
9
10
|
export declare const placesOfFile: (file: string) => readonly string[];
|
|
10
11
|
export declare function claimLinesIn(file: string): string[];
|
package/dist/cli/args.js
CHANGED
|
@@ -14,7 +14,7 @@ export function valueOf(args, flag) {
|
|
|
14
14
|
}
|
|
15
15
|
export const valuesOf = (args, flag) => args.flatMap((arg, i) => (arg === flag && args[i + 1] !== undefined ? [args[i + 1]] : []));
|
|
16
16
|
export const namedPlaces = (args) => valuesOf(args, FLAGS.place).map((one) => one.replace(/\/$/, ''));
|
|
17
|
-
export function
|
|
17
|
+
export function positionalIndexes(args) {
|
|
18
18
|
const out = [];
|
|
19
19
|
for (let i = 0; i < args.length; i += 1) {
|
|
20
20
|
const arg = args[i] ?? '';
|
|
@@ -23,10 +23,13 @@ export function positionalsOf(args) {
|
|
|
23
23
|
continue;
|
|
24
24
|
}
|
|
25
25
|
if (!arg.startsWith('--'))
|
|
26
|
-
out.push(
|
|
26
|
+
out.push(i);
|
|
27
27
|
}
|
|
28
28
|
return out;
|
|
29
29
|
}
|
|
30
|
+
export function positionalsOf(args) {
|
|
31
|
+
return positionalIndexes(args).map(index => args[index]);
|
|
32
|
+
}
|
|
30
33
|
export const placesOfFile = (file) => (observeText(file) ?? '').split('\n').map((line) => line.trim())
|
|
31
34
|
.filter((line) => line.startsWith('# place ')).map((line) => line.slice('# place '.length).trim().replace(/\/$/, '')).filter(Boolean);
|
|
32
35
|
export function claimLinesIn(file) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|