@webqit/oohtml 1.10.3 → 2.0.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/.gitignore +3 -3
- package/LICENSE +20 -20
- package/README.md +399 -396
- package/dist/context-api.js +2 -0
- package/dist/context-api.js.map +7 -0
- package/dist/html-imports.js +1 -2
- package/dist/html-imports.js.map +3 -3
- package/dist/html-modules.js +1 -2
- package/dist/html-modules.js.map +3 -3
- package/dist/main.js +26 -14
- package/dist/main.js.map +3 -3
- package/dist/namespaced-html.js +1 -2
- package/dist/namespaced-html.js.map +3 -3
- package/dist/scoped-js.js +27 -0
- package/dist/scoped-js.js.map +7 -0
- package/dist/state-api.js +1 -2
- package/dist/state-api.js.map +3 -3
- package/package.json +76 -76
- package/src/context-api/HTMLContext.js +158 -0
- package/src/context-api/HTMLContextManager.js +77 -0
- package/src/context-api/_ContextRequestEvent.js +26 -0
- package/src/context-api/index.js +53 -0
- package/src/{namespaced-html/browser-entry.js → context-api/targets.browser.js} +9 -9
- package/src/html-imports/_HTMLImportElement.js +216 -0
- package/src/html-imports/index.js +92 -557
- package/src/{browser-entry.js → html-imports/targets.browser.js} +10 -10
- package/src/html-modules/HTMLExportsManager.js +191 -0
- package/src/html-modules/_HTMLImportsContext.js +114 -0
- package/src/html-modules/index.js +133 -384
- package/src/{html-imports/browser-entry.js → html-modules/targets.browser.js} +9 -9
- package/src/index.js +34 -39
- package/src/namespaced-html/index.js +130 -144
- package/src/namespaced-html/targets.browser.js +10 -0
- package/src/scoped-js/index.js +382 -0
- package/src/scoped-js/targets.browser.js +10 -0
- package/src/state-api/index.js +55 -142
- package/src/state-api/targets.browser.js +10 -0
- package/src/{html-modules/browser-entry.js → targets.browser.js} +10 -10
- package/src/util.js +20 -180
- package/test/imports.test.js +194 -0
- package/test/index.js +119 -0
- package/test/modules.test.js +198 -0
- package/test/namespaced-html.test.js +50 -0
- package/test/scoped-js.js +57 -0
- package/test/state-api.test.js +34 -0
- package/test/test.html +69 -0
- package/dist/subscript.js +0 -15
- package/dist/subscript.js.map +0 -7
- package/src/state-api/browser-entry.js +0 -10
- package/src/subscript/Element.js +0 -103
- package/src/subscript/browser-entry.js +0 -10
- package/src/subscript/index.js +0 -70
- package/test/all.test.js +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
(()=>{function oe(i={}){let t={runtimeParams:{...Pe,...i.runtimeParams||{}},compilerParams:{...Te,...i.compilerParams||{}},parserParams:{...Ie,...i.parserParams||{}}};return i.devMode,t}var Ie={ecmaVersion:"2020",allowReturnOutsideFunction:!0,allowAwaitOutsideFunction:!0,allowSuperOutsideMethod:!0,preserveParens:!1,locations:!1},Te={globalsNoObserve:["globalThis","arguments","console"],originalSource:!0,globalsOnlyPaths:!1,locations:!0,compact:2},Pe={apiVersion:1};function se(i,t=!1){let r=i.split(/\n/g);if(r.length>1){for(;!r[0].trim().length;)r.shift();let e=r[t?1:0].split(/[^\s]/)[0].length;if(e)return r.map((n,s)=>{let o=n.substring(0,e);return o.trim().length?o.trim()==="}"&&s===r.length-1?"}":n:n.substring(e)}).join(`
|
|
2
|
+
`)}return i}var O=(i,t)=>i instanceof Promise?i.then(t):t(i);var fe=new Map;function j(i,t,r=void 0){let e=fe.get(i);if(arguments.length>2){e||(e=new Map,fe.set(i,e)),e.set(t,r);return}return e&&e.get(t)}var T=class{constructor(t,r,e,n={},s=null,o=null){this.ownerContract=t,this.graph=r,this.callee=e,this.params=t?n:{...n,isSubscriptFunction:!0},this.exits=o||new Map,this.$thread=s||{entries:new Map,sequence:[],ownerContract:this},this.subContracts=new Map,this.observers=[],this.contract=function(f,c,u=null,l=null){if(!this.graph.subContracts[f])throw new Error(`[${this.graph.type}:${this.graph.lineage}]: Graph not found for child contract ${f}.`);let a=this.graph.subContracts[f],p={...this.params,isIterationContract:arguments.length===3,iterationId:arguments.length===3&&c,isFunctionContract:arguments.length===4,functionType:arguments.length===4&&c,isSubscriptFunction:arguments.length===4&&u,functionScope:this.params.isFunctionContract&&this.graph.lineage||this.params.functionScope};if(p.isIterationContract){let d=u,y=new T(this,a,d,p,this.$thread,this.exits),_=this.subContracts.get(f);return _||(_=new Map,this.subContracts.set(f,_)),_.has(p.iterationId)&&_.get(p.iterationId).dispose(),_.set(p.iterationId,y),y.call()}let g,m,h;if(this.subContracts.has(f)&&this.subContracts.get(f).dispose(),p.isFunctionContract){g=l;let d=()=>new T(this,a,g,p);if(p.functionType!=="FunctionDeclaration")h=this.createFunction(d);else{let y=d();p.apiVersion>1?(h=function(..._){let v=y.call(this,..._);return v=O(v,E=>[v,y.thread.bind(y),y]),y=d(),v},h.target=y):h=y}}else g=c,m=new T(this,a,g,p,this.$thread,this.exits),this.subContracts.set(f,m),h=m.call();return h}.bind(this),this.contract.memo=Object.create(null),this.ownerContract&&!["FunctionDeclaration","FunctionExpression"].includes(this.graph.type)&&(this.contract.args=this.ownerContract.contract.args),this.contract.exiting=function(f,c){if(!arguments.length)return this.exits.size;let u=this.exits.get(f)===c;return u&&this.exits.clear(),u}.bind(this),this.contract.exit=function(f,c){this.exits.set(f,c)}.bind(this),this.contract.functions=new Map,this.contract.functions.declaration=(f,c)=>{this.contract.functions.set(f,c),this.applyReflection(f,typeof c=="function"?c.target:c)}}fire(t,r,e){if(!this.ownerContract)return;let n=this.ownerContract.fire(t,r,e);return this.observers.forEach(s=>{s.contractUrl===t&&s.callback(r,e)}),n}observe(t,r){!this.params.isFunctionContract||this.observers.push({contractUrl:t,callback:r})}call(t,...r){if(this.disposed)throw new Error(`[${this.graph.type}:${this.graph.lineage}]: Instance not runable after having been disposed.`);this.ownerContract||(this.contract.args=r,Object.defineProperty(this.contract.args,Symbol.toStringTag,{value:"Arguments"}));let e=this.callee.call(t,this.contract,...r);if(this.graph.$sideEffects)for(let n in this.graph.effects)for(let s of this.graph.effects[n].refs)this.buildThread([],s,[],0,!0);return O(e,()=>{if(!this.ownerContract||this.params.isFunctionContract){let n=this.exits.get("return");if(this.exits.clear(),n!==void 0)return n}return e})}iterate(t=[]){if(this.disposed)return!1;if(!["ForOfStatement","ForInStatement"].includes(this.graph.type)||this.subContracts.size!==1)throw new Error(`Contract ${this.graph.lineage} is not an iterator.`);let[[,r]]=this.subContracts,e;if(!t.length||t.includes("length")&&this.graph.type==="ForOfStatement")for(let[,n]of r)e=O(e,()=>n.call());else for(let n of t){let s=r.get(n)||r.get(parseInt(n));!s||(e=O(e,()=>s.call()))}return e}thread(...t){if(this.disposed)return!1;this.$thread.active=!0;for(let r in this.graph.effects)for(let e of this.graph.effects[r].refs)for(let n of t){let[s,o,f]=this.matchRefs(n,e);!s||this.buildThread(n,e,f,o)}return this.runThread()}runThread(){let t=(s,o)=>{if(["ForOfStatement","ForInStatement"].includes(s.graph.type)&&o.every(f=>f.executionPlan.isIterationContractTarget)){let f=o.map(c=>c.executionPlan.iterationTarget);return this.fire(s.graph.lineage,"iterating",o),s.iterate(f)}return this.fire(s.graph.lineage,"executing",o),s.call()},r,e,n;for(;(e=this.$thread.sequence.shift())&&(n=[...this.$thread.entries.get(e)])&&this.$thread.entries.delete(e);)r=O(r,()=>{if(e.disposed||!e.filterRefs(n).length)return;this.$thread.current=e;let s=t(e,n);return O(s,()=>{for(let o of n)[].concat(o.executionPlan.assigneeRef||o.executionPlan.assigneeRefs||[]).forEach(f=>{e.buildThread([],f,[],0)})}),s});return O(r,()=>{let s=this.exits.get("return");return this.exits.clear(),this.$thread.current=null,this.$thread.active=!1,s})}buildThread(t,r,e,n=0,s=!1){let o=n>0;if(this.ownerContract){if(!this.compute(e)||r.condition!==void 0&&!this.assert(r.condition))return}else o||(o=e.length||r.condition!==void 0);let f=s?r.$subscriptions:r.subscriptions;Object.keys(f).forEach(c=>{let[u,l]=c.split(":"),a=g=>{!g||g.selectRefs(l,f[c],o?t:null)},p=this.locate(u);Array.isArray(p)?p.forEach(a):a(p)})}selectRefs(t,r,e=null){let n=this.$thread,s=this.graph.signals[t],o=(c,u)=>c.graph.lineage.localeCompare(u.graph.lineage,void 0,{numeric:!0}),f=(c,u=[],l={})=>{if(!n.active||n.current&&o(this,n.current)<0)return;let a=n.entries.get(this);if(a||(a=new Set,n.entries.set(this,a),n.sequence.push(this),n.sequence.sort(o)),a.add({...c,computes:u,executionPlan:l}),!l.assigneeRef&&["VariableDeclaration","AssignmentExpression"].includes(this.graph.type)){l.assigneeRefs=[];for(let p in this.graph.effects)l.assigneeRefs.push(...this.graph.effects[p].refs)}};for(let c of r){let u=s.refs[c];if(!e){f(u);continue}let[l,a,p]=this.matchRefs(e,u);if(!l)continue;if(a<=0){f(u,p);continue}let g=e.slice(-a),m="assignee"in s?this.graph.effects[s.assignee]:null;if(m){m.refs.forEach(h=>{if(h.depth.length){let[d,y,_]=this.matchRefs(g,h.depth),v=p.concat(_);if(d&&y>0){let E=h.path.concat(g.slice(-y));this.buildThread(E,h,v,y)}else d&&f(u,v,{assigneeRef:h})}else{let d=h.path.concat(g);this.buildThread(d,h,p,a)}});continue}if(a===1&&this.graph.type==="ForOfStatement"){f(u,p,{isIterationContractTarget:!0,iterationTarget:g[0]});continue}if(a===1&&this.graph.type==="ForInStatement"){f(u,p,{isIterationContractTarget:!0,iterationTarget:g[0]});continue}}}filterRefs(t){return t.filter(r=>{if(!!this.compute(r.computes)&&!(r.condition!==void 0&&!this.assert(r.condition)))return!0})}matchRefs(t,r){let e,n,s,o;Array.isArray(t)?(e=t,n=t.dotSafe?t.join("."):void 0):(e=t.path,n=t.$path),Array.isArray(r)?(s=r,o=r.dotSafe?r.join("."):void 0):(s=r.path,o=r.$path);let f=e.length-s.length;if(f>0&&([e,s,n,o]=[s,e,o,n]),n&&o)return[`${o}.`.startsWith(`${n}.`),f,[]];let c=[],u=a=>typeof a=="object"?a.name:a,l=(a,p)=>{if(!a||!p)return!1;let g=typeof a=="object"&&"memoId"in a,m=typeof p=="object"&&"memoId"in p;return g||m?(c.push(h=>(g?h[a.memoId]:u(a))===(m?h[p.memoId]:u(p))),!0):u(a)===u(p)};return[e.reduce((a,p,g)=>a&&l(p,s[g]),!0),f,c]}locate(t){let r=this.graph.lineage+"/",e=t+"/";if(e===r)return this;if(e.startsWith(r)){let n=t.slice(r.length).split("/"),s=this.subContracts.get(parseInt(n.shift()));if(n.length){if(s instanceof Map)return Array.from(s).reduce((o,[f,c])=>o.concat(c.locate(t)),[]);if(s)return s.locate(t)}return s}if(this.ownerContract)return this.ownerContract.locate(t)}compute(t){return!t.some(r=>r(this.contract.memo)===!1)}assert(t){if(typeof t=="string"&&t.includes(":")){let[n,s]=t.split(":");return this.locate(n).assert(s)}let r=this.graph.conditions[t],e=this.contract.memo;return typeof r.parent<"u"&&!this.assert(r.parent)?!1:typeof r.switch<"u"?r.cases.some(n=>e[n]===e[r.switch]):typeof r.whenNot<"u"?!e[r.whenNot]:typeof r.when<"u"?e[r.when]:!0}dispose(){this.params.isFunctionContract||(this.subContracts.forEach((t,r)=>{t instanceof Map?(t.forEach(e=>e.dispose()),t.clear()):t.dispose()}),this.subContracts.clear(),delete this.ownerContract,delete this.callee,delete this.params,delete this.contract.memo,this.disposed=!0)}createFunction(t,r=void 0){let e=t(),n=function(o,...f){let c=o.call(this===void 0?r:this,...f);return o.params.isSubscriptFunction&&o.params.apiVersion>1&&(c=O(c,u=>[u,o.thread.bind(o),o]),e=t(e)),c},s=e instanceof Promise||e.callee instanceof async function(){}.constructor?async function(){return O(e,o=>n.call(this,o,...arguments))}:function(){return n.call(this,e,...arguments)};return O(e,o=>{this.applyReflection(s,o)}),j(s,"properties",O(e,o=>{let f={type:o.params.functionType||"Program",apiVersion:o.params.apiVersion||1,isSubscriptFunction:o.params.isSubscriptFunction,sideEffects:o.graph.sideEffects||!1};if(o.params.isSubscriptFunction){f.dependencies=[];for(let[c,u]of Object.entries(o.graph.effects))f.dependencies.push(...u.refs.map(l=>l.path.map(a=>"name"in a?a.name:1/0)))}return f})),s}applyReflection(t,r){Object.defineProperty(r.callee,"length",{configurable:!0,value:r.callee.length-1});let e=r.callee.toString();Object.defineProperty(r.callee,"toString",{configurable:!0,value:(s=!1)=>!s&&r.graph.originalSource?r.graph.originalSource:e});let n={name:r.callee.name,length:r.callee.length,toString:r.callee.toString};r.params.isSubscriptFunction&&(r.params.apiVersion>1||(n={...n,thread:r.thread.bind(r),dispose:r.dispose.bind(r),runtime:r})),Object.keys(n).forEach(s=>{Object.defineProperty(t,s,{configurable:!0,value:n[s]})})}};var L=class extends T{static create(t,r=[],e={}){let s=e.async||t.graph.hoistedAwaitKeyword?Object.getPrototypeOf(async function(){}).constructor:Function,o=e.compileFunction?e.compileFunction(t.source,[t.identifier+""].concat(r)):new s(t.identifier+"",...r,t.source);return new this(null,t.graph,o,e)}static createFunction(t,r,e=[],n={},s,o=null){n={...n,functionType:"Constructor"},r instanceof Promise&&(n={...n,async:!0});let f=l=>l?new this(null,l.graph,l.callee,n):O(r,a=>c(this.create(a,e,n))),c=l=>{if(l.graph.originalSource&&!l.graph.originalSourceModified){let a=`${n.async||l.graph.hoistedAwaitKeyword?"async ":""}function ${t||"anonymous"}`,p=l.graph.originalSource.split(/\n/g).map(g=>` ${g}`).join(`
|
|
3
|
+
`);l.graph.originalSource=`${a}(${e.join(", ")}) {
|
|
4
|
+
${p}
|
|
5
|
+
}`,l.graph.originalSourceModified=!0}return t&&Object.defineProperty(l.callee,"name",{configurable:!0,value:t}),l},u=this.prototype.createFunction(f,s);return j(u,"locations",O(r,l=>({locations:l.locations}))),u}};function U(...i){if(typeof window!="object")throw new Error("No window in context.");let t=oe(typeof i[i.length-1]=="object"?i.pop():{}),r=se(i.pop()||""),e=i,n=s=>L.createFunction(void 0,s,e,t.runtimeParams,this,r);if(window.wq?.SubscriptCompiler&&!t.runtimeParams.async){let{parse:s,compile:o}=window.wq.SubscriptCompiler,f=s(r,t.parserParams);return n(o(f,t.compilerParams))}if(!window.wq?.SubscriptCompilerWorker){let f=`
|
|
6
|
+
importScripts( '${document.querySelector('meta[name="subscript-compiler-url"]')?.content||"https://unpkg.com/@webqit/subscript/dist/compiler.js"}' );
|
|
7
|
+
const { parse, compile } = self.wq.SubscriptCompiler;
|
|
8
|
+
self.onmessage = e => {
|
|
9
|
+
const { source, params } = e.data;
|
|
10
|
+
const ast = parse( source, params.parserParams );
|
|
11
|
+
const compilation = compile( ast, params.compilerParams );
|
|
12
|
+
compilation.identifier = compilation.identifier.toString();
|
|
13
|
+
e.ports[ 0 ]?.postMessage( compilation );
|
|
14
|
+
};`;window.wq=window.wq||{},window.wq.SubscriptCompilerWorker=new Worker(`data:text/javascript;base64,${btoa(f)}`)}return n(new Promise(s=>{let o=new MessageChannel;wq.SubscriptCompilerWorker.postMessage({source:r,params:t},[o.port2]),o.port1.onmessage=f=>s(f.data)}))}Object.defineProperty(U,"inspect",{value:j});function x(i){return!Array.isArray(i)&&typeof i=="object"&&i}function z(i,...t){globalThis.WebQitInternalsRegistry||(globalThis.WebQitInternalsRegistry=new Map);var r=globalThis.WebQitInternalsRegistry.get(i);if(!r){if(r=new Map,t[0]===!1)return r;globalThis.WebQitInternalsRegistry.set(i,r)}for(var e,n;e=t.shift();)if((n=r)&&!(r=r.get(e))){if(r=new Map,t[0]===!1)return r;n.set(e,r)}return r}function w(i){return Array.isArray(i)}function H(i){return typeof i=="function"}function V(i){return i===null||i===""}function P(i){return arguments.length&&(i===void 0||typeof i>"u")}function S(i){return Array.isArray(i)||typeof i=="object"&&i||H(i)}function X(i){return V(i)||P(i)||i===!1||i===0||S(i)&&!Object.keys(i).length}function b(i){return H(i)||i&&{}.toString.call(i)==="[object function]"}function W(i){return i instanceof Number||typeof i=="number"}function A(i){return W(i)||i!==!0&&i!==!1&&i!==null&&i!==""&&!isNaN(i*1)}function Q(i){return i instanceof String||typeof i=="string"&&i!==null}function Y(i){return!Q(i)&&!P(i.length)}function k(i,...t){return t.forEach(r=>{i.indexOf(r)<0&&i.push(r)}),i}function Z(e,t){t=t||Object.prototype,t=t&&!w(t)?[t]:t;for(var r=[],e=e;e&&(!t||t.indexOf(e)<0)&&e.name!=="default";)r.push(e),e=e?Object.getPrototypeOf(e):null;return r}function K(i,t){var r=[];return Z(i,t).forEach(e=>{k(r,...Object.getOwnPropertyNames(e))}),r}function I(i,t,r=!1,e=!1,n=!1){var s=0,o=i.shift();if((A(o)||o===!0||o===!1)&&(s=o,o=i.shift()),!i.length)throw new Error("_merge() requires two or more array/objects.");return i.forEach((f,c)=>{!S(f)&&!b(f)||(r?K(f):Object.keys(f)).forEach(u=>{if(!!t(u,o,f,c)){var l=o[u],a=f[u];if((w(l)&&w(a)||x(l)&&x(a))&&(s===!0||s>0))o[u]=w(l)&&w(a)?[]:{},I([A(s)?s-1:s,o[u],l,a],t,r,e,n);else if(w(o)&&w(f))e?o[u]=a:o.push(a);else try{n?Object.defineProperty(o,u,Object.getOwnPropertyDescriptor(f,u)):o[u]=f[u]}catch{}}})}),o}function D(...i){return I(i,(t,r,e)=>!0,!1,!1,!1)}function C(i,t=!0){return w(i)?i:!t&&x(i)?[i]:i!==!1&&i!==0&&X(i)?[]:Y(i)?Array.prototype.slice.call(i):x(i)?Object.values(i):[i]}function q(i,t,r={},e={}){t=C(t).slice();for(var n=i;!P(n)&&!V(n)&&t.length;){var s=t.shift();if(!(r.get?r.get(n,s):S(n)?s in n:n[s])){e.exists=!1;return}n=r.get?r.get(n,s):n[s]}return e.exists=!0,n}function te(i,t,r,e={},n={}){let s=(l,a,p)=>n.set?n.set(l,a,p):(A(t[f])&&w(l)?l.push(p):l[a]=p,!0);t=C(t);for(var o=i,f=0;f<t.length;f++)if(f<t.length-1){if(!o||!S(o)&&!b(o))return!1;var c=q(o,t[f],n);if(!S(c)){if(n.buildTree===!1)return!1;c=b(n.buildTree)?n.buildTree(f):A(t[f+1])?[]:{};var u=s(o,t[f],c);if(!u)return!1}o=c}else return s(o,t[f],r)}var pe=i=>class{constructor(r=!0){Object.defineProperty(this,"window",{value:i}),Object.defineProperty(this,"readCallbacks",{value:new Set}),Object.defineProperty(this,"writeCallbacks",{value:new Set}),this.async=r,this.window.requestAnimationFrame?this._run():this.async=!1}_run(){this.window.requestAnimationFrame(()=>{this.readCallbacks.forEach(r=>{r()||this.readCallbacks.delete(r)}),this.writeCallbacks.forEach(r=>{r()||this.writeCallbacks.delete(r)}),this._run()})}onread(r,e=!1){if(e)return new Promise((n,s)=>{this.async===!1?r(n,s):this.readCallbacks.add(()=>{r(n,s)})});this.async===!1?r():this.readCallbacks.add(r)}onwrite(r,e=!1){if(e)return new Promise((n,s)=>{this.async===!1?r(n,s):this.writeCallbacks.add(()=>{r(n,s)})});this.async===!1?r():this.writeCallbacks.add(r)}cycle(r,e,n){this.onread(()=>{let s=r(n),o=f=>{f!==void 0&&this.onwrite(()=>{let c=e(f,n),u=l=>{l!==void 0&&this.cycle(r,e,l)};c instanceof Promise?c.then(u):u(c)})};s instanceof Promise?s.then(o):o(s)})}};var $=class{constructor(t,r,e){this.context=t,this.namespace=r,this.window=t.defaultView||t.ownerDocument?.defaultView||e,this.document=this.window.document,this.wq=this.window.wq,Object.defineProperty(this,"#",{value:{}})}resolveArgs(t){return b(t[0])?t=[[],...t]:x(t[0])&&t.length===1?t=[[],void 0,t[0]]:x(t[1])&&t.length===2?t=[C(t[0],!1),void 0,t[1]]:t[0]=C(t[0],!1),t}registry(...t){return z(this.window,"dom.realtime",this.namespace,...t)}createSignalGenerator(){return{generate(){return this.lastController?.abort(),this.lastController=new AbortController,{signal:this.lastController.signal}},disconnect(){this.lastController?.abort()}}}forEachMatchingContext(t,r,e){let{window:n}=this,s=Array.isArray(r)?r:[r],o=new Set;for(let[f,c]of this.registry(t))for(let[u,l]of c){let a=s.filter(p=>u.contains(p.target)?f==="subtree"||p.target===u:!1);if(!!a.length){Array.isArray(r)||(a=a[0]);for(let p of l)o.add([p,a,u])}}for(let[f,c,u]of o)e.call(this,f,c,u)}disconnectables(t,...r){let e={disconnect(){r.forEach(n=>n&&b(n.disconnect)&&n.disconnect()||b(n)&&n()||x(n)&&(n.disconnected=!0))}};return t&&t.addEventListener("abort",()=>e.disconnect()),e}};var M=class extends ${constructor(t,...r){super(t,"attr",...r)}get(t,r=void 0,e={}){let n=typeof t=="string";[t=[],r=void 0,e={}]=this.resolveArgs(arguments);let{context:s}=this,o=we(s,t),f=n?o[0]:o;if(!r)return f;let c=r&&e.lifecycleSignals&&this.createSignalGenerator(),u=c?.generate()||{};if(r(f,u,s),e.live){c&&(e={...e,signalGenerator:c});let l=this.observe(n?t[0]:t,r,{newValue:!0,...e});return this.disconnectables(e.signal,l)}}observe(t,r,e={}){let n=typeof t=="string";if([t=[],r,e={}]=this.resolveArgs(arguments),["sync","intercept"].includes(e.timing))return this.observeSync(n?t[0]:t,r,e);if(e.timing&&e.timing!=="async")throw new Error(`Timing option "${e.timing}" invalid.`);let{context:s,window:o,wq:f}=this;e.eventDetails&&!f.attrInterceptionHooks?.intercepting&&ge.call(o,"intercept",()=>{});let c=new o.MutationObserver(p=>{p=ye(p).map(g=>_e.call(o,g)),he.call(o,a,p,s)}),u={attributes:!0,attributeOldValue:e.oldValue,subtree:e.subtree};t.length&&(u.attributeFilter=t),c.observe(s,u);let l=e.signalGenerator||e.lifecycleSignals&&this.createSignalGenerator(),a={context:s,filter:t,callback:r,params:e,atomics:new Map,originalFilterIsString:n,signalGenerator:l,disconnectable:c};return this.disconnectables(e.signal,c,l)}observeSync(t,r,e={}){let n=typeof t=="string";[t,r,e={}]=this.resolveArgs(arguments);let{context:s,window:o}=this;if(e.timing&&!["sync","intercept"].includes(e.timing))throw new Error(`Timing option "${e.timing}" invalid.`);let f=e.timing==="intercept"?"intercept":"sync",c=e.subtree?"subtree":"children";this.registry(f).size||ge.call(o,f,m=>{this.forEachMatchingContext(f,m,he)});let u={disconnect(){g.delete(a),g.size||p.delete(s)}},l=e.signalGenerator||e.lifecycleSignals&&this.createSignalGenerator(),a={context:s,filter:t,callback:r,params:e,atomics:new Map,originalFilterIsString:n,signalGenerator:l,disconnectable:u},p=this.registry(f,c);p.has(s)||p.set(s,new Set);let g=p.get(s);return g.add(a),this.disconnectables(e.signal,u,l)}};function ye(i){return i.reduce((t,r,e)=>t[e-1]?.attributeName===r.attributeName?t:t.concat(r),[])}function he(i,t){let{context:r,filter:e,callback:n,params:s,atomics:o,originalFilterIsString:f,signalGenerator:c}=i;s.atomic&&!o.size&&(t=we(r,e,t)),s.newValue===null&&s.oldValue===null||(t=t.map(a=>{let p;return!s.oldValue&&"oldValue"in a&&({oldValue:p,...a}=a),!s.newValue&&"value"in a?{value:p,...a}=a:s.newValue&&typeof a.value>"u"&&(a={...a,value:a.target.getAttribute(a.name)}),a})),s.atomic&&(t.forEach(a=>o.set(a.name,a)),t=Array.from(o.entries()).map(([,a])=>a));let u=f?t[0]:t,l=c?.generate()||{};n(u,l,r)}function we(i,t,r=[]){let e={event:null,type:"attribute"};return t.length?t.map(s=>r.find(o=>o.name===s)||{target:i,name:s,value:i.getAttribute(s),...e}):Array.from(i.attributes).map(s=>r.find(o=>o.name===s.nodeName)||{target:i,name:s.nodeName,value:s.nodeValue,...e})}function _e({target:i,attributeName:t,value:r,oldValue:e}){let o=(this.wq.attrInterceptionRecords?.get(i)||{})[t]||"mutation";return{target:i,name:t,value:r,oldValue:e,type:"observation",event:o}}function ge(i,t){let r=this,{wq:e,document:n,Element:s}=r;e.attrInterceptionHooks||(e.attrInterceptionHooks=new Map),e.attrInterceptionHooks.has(i)||e.attrInterceptionHooks.set(i,new Set),e.attrInterceptionHooks.get(i).add(t);let o=()=>e.attrInterceptionHooks.get(i).delete(t);if(e.attrInterceptionHooks?.intercepting)return o;console.warn("Attr mutation APIs are now being intercepted."),e.attrInterceptionHooks.intercepting=!0,e.attrInterceptionRecords=new Map;let f=(l,a)=>{e.attrInterceptionRecords.has(l.target)||e.attrInterceptionRecords.set(l.target,{});let p=e.attrInterceptionRecords.get(l.target);clearTimeout(p[l.name]?.timeout),p[l.name]=l.event;let g=setTimeout(()=>{delete p[l.name]},0);Object.defineProperty(l.event,"timeout",{value:g,configurable:!0}),e.attrInterceptionHooks.get("intercept")?.forEach(h=>h([l]));let m=a();return e.attrInterceptionHooks.get("sync")?.forEach(h=>h([l])),m};new r.MutationObserver(l=>{l=ye(l).map(a=>_e.call(r,a)).filter((a,p)=>!Array.isArray(a.event)),l.length&&(e.attrInterceptionHooks.get("intercept")?.forEach(a=>a(l)),e.attrInterceptionHooks.get("sync")?.forEach(a=>a(l)))}).observe(n,{attributes:!0,subtree:!0,attributeOldValue:!0});let u=Object.create(null);return["setAttribute","removeAttribute","toggleAttribute"].forEach(l=>{u[l]=s.prototype[l],s.prototype[l]=function(...a){let p,g=this.getAttribute(a[0]);["setAttribute","toggleAttribute"].includes(l)&&(p=a[1]),l==="toggleAttribute"&&p===void 0&&(p=g===null);let m={target:this,name:a[0],value:p,oldValue:g,type:"interception",event:[this,l]};return f(m,()=>u[l].call(this,...a))}}),o}var R=class extends ${constructor(t,...r){super(t,"tree",...r)}attr(t,r=void 0,e={}){let{context:n,window:s}=this;return new M(n,s).get(...arguments)}query(t,r=void 0,e={}){[t,r=void 0,e={}]=this.resolveArgs(arguments);let{context:n}=this,s=new Map,o=u=>(s.has(u)||s.set(u,{target:u,entrants:[],exits:[],type:"query",event:null}),s.get(u));if((!e.generation||e.generation==="entrants")&&(t.length?t.every(u=>typeof u=="string")&&(t=t.join(","))&&(e.subtree?n.querySelectorAll(t):[...n.children].filter(l=>l.matches(t))).forEach(l=>o(l.parentNode||n).entrants.push(l)):[...n.children].forEach(u=>o(n).entrants.push(u))),!r)return s;let f={disconnected:!1},c=r&&e.lifecycleSignals&&this.createSignalGenerator();for(let[,u]of s){if(f.disconnected)break;let l=c?.generate()||{};r(u,l,n)}if(e.live){c&&(e={...e,signalGenerator:c});let u=this.observe(t,r,e);return this.disconnectables(e.signal,f,u)}return this.disconnectables(e.signal,f,c)}children(t,r=void 0,e={}){return[t,r=void 0,e={}]=this.resolveArgs(arguments),this.query(t,r,{...e,subtree:!1})}subtree(t,r=void 0,e={}){return[t,r=void 0,e={}]=this.resolveArgs(arguments),this.query(t,r,{...e,subtree:!0})}observe(t,r,e={}){if([t,r,e={}]=this.resolveArgs(arguments),["sync","intercept"].includes(e.timing))return this.observeSync(t,r,e);if(e.timing&&e.timing!=="async")throw new Error(`Timing option "${e.timing}" invalid.`);let{context:n,window:s,wq:o,document:f}=this;e.eventDetails&&(o.domInterceptionRecordsAlwaysOn=!0),(f.readyState==="loading"||o.domInterceptionRecordsAlwaysOn)&&!o.domInterceptionHooks?.intercepting&&ve.call(s,"sync",()=>{});let c=new s.MutationObserver(a=>a.forEach(p=>{be.call(s,l,Oe.call(s,p),n)}));c.observe(n,{childList:!0,subtree:e.subtree});let u=e.signalGenerator||e.lifecycleSignals&&this.createSignalGenerator(),l={context:n,selectors:t,callback:r,params:e,signalGenerator:u,disconnectable:c};if(e.staticSensitivity){let a=xe.call(s,l);return this.disconnectables(e.signal,c,u,a)}return this.disconnectables(e.signal,c,u)}observeSync(t,r,e={}){[t,r,e={}]=this.resolveArgs(arguments);let{context:n,window:s}=this;if(e.timing&&!["sync","intercept"].includes(e.timing))throw new Error(`Timing option "${e.timing}" invalid.`);let o=e.timing==="intercept"?"intercept":"sync",f=e.subtree?"subtree":"children";this.registry(o).size||ve.call(s,o,g=>{this.forEachMatchingContext(o,g,be)});let c={disconnect(){p.delete(l),p.size||a.delete(n)}},u=e.signalGenerator||e.lifecycleSignals&&this.createSignalGenerator(),l={context:n,selectors:t,callback:r,params:e,signalGenerator:u,disconnectable:c},a=this.registry(o,f);a.has(n)||a.set(n,new Set);let p=a.get(n);if(p.add(l),e.staticSensitivity){let g=xe.call(s,l);return this.disconnectables(e.signal,c,u,g)}return this.disconnectables(e.signal,c,u)}};function xe(i){let t=this,{context:r,selectors:e,callback:n,params:s,signalGenerator:o}=i,f=l=>[...l.matchAll(/\[([^\=\]]+)(\=[^\]]+)?\]/g)].map(a=>a[1]);if(!(i.$attrs=e.filter(l=>typeof l=="string"&&l.includes("[")).reduce((l,a)=>l.concat(f(a)),[])).length)return;let c=new Set,u=new Set;return c.push=l=>(u.delete(l),c.add(l)),u.push=l=>(c.delete(l),u.add(l)),i.$deliveryCache={entrants:c,exits:u},new M(r,t).observe(i.$attrs,l=>{let a=new Map,p=h=>(a.has(h)||a.set(h,{target:h,entrants:[],exits:[],type:"static",event:null}),a.get(h)),g=new WeakMap,m=h=>(g.has(h)||g.set(h,e.some(d=>h.matches(d))),g.get(h));for(let h of l)["entrants","exits"].forEach(d=>{s.generation&&d!==s.generation||i.$deliveryCache[d].has(h.target)||(d==="entrants"?!m(h.target):m(h.target))||(i.$deliveryCache[d].push(h.target),p(h.target)[d].push(h.target),p(h.target).event=h.event)});for(let[,h]of a){let d=o?.generate()||{};n(h,d,r)}},{subtree:s.subtree,timing:s.timing,eventDetails:s.eventDetails})}function be(i,t){let{context:r,selectors:e,callback:n,params:s,signalGenerator:o,$deliveryCache:f}=i,c={...t,entrants:[],exits:[]};if(["entrants","exits"].forEach(l=>{if(!(s.generation&&l!==s.generation)&&(e.length?c[l]=Ue(e,t[l],t.event!=="parse"):c[l]=[...t[l]],!!f))for(let a of c[l])f[l].push(a)}),!c.entrants.length&&!c.exits.length)return;let u=o?.generate()||{};n(c,u,r)}function Ue(i,t,r){t=Array.isArray(t)?t:[...t];let e=(n,s)=>{if(n=n.filter(o=>o.matches),typeof s=="string"){let o=n.filter(f=>f.matches(s));if(r&&(o=n.reduce((f,c)=>[...f,...c.querySelectorAll(s)],o)),o.length)return o}else if(n.includes(s)||r&&n.some(o=>o.contains(s)))return[s]};return t.$$searchCache||(t.$$searchCache=new Map),i.reduce((n,s)=>{let o;return t.$$searchCache.has(s)?o=t.$$searchCache.get(s):(o=e(t,s)||[],x(s)&&t.$$searchCache.set(s,o)),n.concat(o)},[])}function Oe({target:i,addedNodes:t,removedNodes:r}){let e=this,n;return n=C(t).reduce((s,o)=>s||e.wq.domInterceptionRecords?.get(o),null),n=C(r).reduce((s,o)=>s||e.wq.domInterceptionRecords?.get(o),n),n=n||e.document.readyState==="loading"&&"parse"||"mutation",{target:i,entrants:t,exits:r,type:"observation",event:n}}function ve(i,t){let r=this,{wq:e,document:n,Node:s,Element:o,HTMLElement:f,HTMLTemplateElement:c,DocumentFragment:u}=r;e.domInterceptionHooks||(e.domInterceptionHooks=new Map),e.domInterceptionHooks.has(i)||e.domInterceptionHooks.set(i,new Set),e.domInterceptionHooks.get(i).add(t);let l=()=>e.domInterceptionHooks.get(i).delete(t);if(e.domInterceptionHooks?.intercepting)return l;console.warn("DOM mutation APIs are now being intercepted."),e.domInterceptionHooks.intercepting=!0,e.domInterceptionRecords=new Map;let a=()=>!0,p=(m,h)=>{a()?m.entrants.concat(m.exits).forEach(y=>{clearTimeout(e.domInterceptionRecords.get(y)?.timeout),e.domInterceptionRecords.set(y,m.event);let _=setTimeout(()=>{e.domInterceptionRecords.delete(y)},0);Object.defineProperty(m.event,"timeout",{value:_,configurable:!0})}):e.domInterceptionRecords.clear(),e.domInterceptionHooks.get("intercept")?.forEach(y=>y(m));let d=h();return e.domInterceptionHooks.get("sync")?.forEach(y=>y(m)),d};if(a()){let m=new r.MutationObserver(h=>h.forEach(d=>{Array.isArray((d=Oe.call(r,d)).event)||(e.domInterceptionHooks.get("intercept")?.forEach(y=>y(d)),e.domInterceptionHooks.get("sync")?.forEach(y=>y(d)))}));m.observe(n,{childList:!0,subtree:!0}),n.addEventListener("readystatechange",()=>!a()&&m.disconnect())}let g=Object.create(null);return["insertBefore","insertAdjacentElement","insertAdjacentHTML","setHTML","replaceChildren","replaceWith","remove","replaceChild","removeChild","before","after","append","prepend","appendChild"].forEach(m=>{let h=["insertBefore","replaceChild","removeChild","appendChild"].includes(m)?s:o;g[m]=h.prototype[m],g[m]&&(h.prototype[m]=function(...d){let y=()=>g[m].call(this,...d);if(!(this instanceof o||this instanceof u))return y();let _=[],v=[],E=this;["insertBefore"].includes(m)?v=[d[0]]:["insertAdjacentElement","insertAdjacentHTML"].includes(m)?(v=[d[1]],["beforebegin","afterend"].includes(d[0])&&(E=this.parentNode)):["setHTML","replaceChildren"].includes(m)?(_=[...this.childNodes],v=m==="replaceChildren"?[...d]:[d[0]]):["replaceWith","remove"].includes(m)?(_=[this],v=m==="replaceWith"?[...d]:[],E=this.parentNode):["replaceChild"].includes(m)?(_=[d[1]],v=[d[0]]):["removeChild"].includes(m)?_=[...d]:(v=[...d],["before","after"].includes(m)&&(E=this.parentNode));let N=m;if(["insertAdjacentHTML","setHTML"].includes(m)){let F=this.nodeName;if(m==="insertAdjacentHTML"&&["beforebegin","afterend"].includes(d[0])){if(!this.parentNode)return g[m].call(this,...d);F=this.parentNode.nodeName}let B=n.createElement(F);g.setHTML.call(B,v[0],m==="setHTML"?d[1]:{}),v=[...B.childNodes],m==="insertAdjacentHTML"?(N="insertAdjacentElement",d[1]=new u,d[1].______isTemp=!0,d[1].append(...B.childNodes)):(N="replaceChildren",d=[...B.childNodes])}return p({target:E,entrants:v,exits:_,type:"interception",event:[this,m]},()=>g[N].call(this,...d))})}),["outerHTML","outerText","innerHTML","innerText","textContent","nodeValue"].forEach(m=>{let h=["textContent","nodeValue"].includes(m)?s:["outerText","innerText"].includes(m)?f:o;g[m]=Object.getOwnPropertyDescriptor(h.prototype,m),Object.defineProperty(h.prototype,m,{...g[m],set:function(d){let y=()=>g[m].set.call(this,d);if(!(this instanceof o))return y();let _=[],v=[],E=this;if(["outerHTML","outerText"].includes(m)?(_=[this],E=this.parentNode):_=[...this.childNodes],["outerHTML","innerHTML"].includes(m)){let G=this.nodeName;if(m==="outerHTML"){if(!this.parentNode)return y();G=this.parentNode.nodeName}let F=n.createElement(G==="TEMPLATE"?"div":G);g[m].set.call(F,d),v=this instanceof c?[]:[...F.childNodes],m==="outerHTML"?(d=new u,d.______isTemp=!0,d.append(...F.childNodes),y=()=>g.replaceWith.call(this,d)):this instanceof c?y=()=>this.content.replaceChildren(...F.childNodes):y=()=>g.replaceChildren.call(this,...F.childNodes)}return p({target:E,entrants:v,exits:_,type:"interception",event:[this,m]},y)}})}),["append","prepend","replaceChildren"].forEach(m=>{[n,u.prototype].forEach(h=>{let d=h[m];h[m]=function(...y){if(this.______isTemp)return d.call(this,...y);let _=m==="replaceChildren"?[...this.childNodes]:[];return p({target:this,entrants:y,exits:_,type:"interception",event:[this,m]},()=>d.call(this,...y))}})}),l}function Se(){ze.call(this),Qe.call(this),ke.call(this)}function ze(){let i=this;i.CSS||(i.CSS={}),i.CSS.escape||(i.CSS.escape=t=>t.replace(/([\:@\~\$\&])/g,"\\$1"))}function Qe(){let i=this;"isConnected"in i.Node.prototype||Object.defineProperty(i.Node.prototype,"isConnected",{get:function(){return!this.ownerDocument||!(this.ownerDocument.compareDocumentPosition(this)&this.DOCUMENT_POSITION_DISCONNECTED)}})}function ke(){let i=this;i.Element.prototype.matches||(i.Element.prototype.matches=i.Element.prototype.matchesSelector||i.Element.prototype.mozMatchesSelector||i.Element.prototype.msMatchesSelector||i.Element.prototype.oMatchesSelector||i.Element.prototype.webkitMatchesSelector||function(t){for(var r=(this.document||this.ownerDocument).querySelectorAll(t),e=r.length;--e>=0&&r.item(e)!==this;);return e>-1})}function Ce(){let i=this;if(i.wq||(i.wq={}),i.wq.dom)return i.wq.dom;i.wq.dom={},Se.call(i);let t=pe(i);return i.wq.dom.Reflow=new t,i.wq.dom.DOMRealtime=R,i.wq.dom.AttrRealtime=M,i.wq.dom.realtime=(r,e="tree")=>{if(e==="tree")return new R(r,i);if(e==="attr")return new M(r,i)},i.wq.dom.ready=Je.bind(i),i.wq.dom.meta=Xe.bind(i),i.wq.dom}function Je(i){let t=this;t.document.readyState==="complete"?i(t):(t.document.domReadyCallbacks||(t.document.domReadyCallbacks=[],t.document.addEventListener("DOMContentLoaded",()=>{t.document.domReadyCallbacks.splice(0).forEach(r=>r(t))},!1)),t.document.domReadyCallbacks.push(i))}function Xe(i,t=!1){let r=this,e={content:{}};return!(e.el=r.document.querySelector(`meta[name="${i}"]`))&&t&&(e.el=r.document.createElement("meta"),e.el.setAttribute("name",i),r.document.head.append(e.el)),e.el&&(e.content=(e.el.getAttribute("content")||"").split(";").filter(n=>n).reduce((n,s)=>{let o=s.split("=").map(f=>f.trim());return te(n,o[0].split("."),o[1]==="true"?!0:o[1]==="false"?!1:A(o[1])?parseInt(o[1]):o[1]),n},{})),e.get=function(n){return JSON.parse(JSON.stringify(q(this.content,n.split("."))))},e.copy=function(){return JSON.parse(JSON.stringify(this.content))},e.copyWithDefaults=function(...n){return n.length?D(!0,{},...n.reverse().concat(this.content)):this.copy()},e}function ie(i={}){let t=this,e=Ce.call(t).meta("oohtml").copyWithDefaults(i,{retention:"retain",mimeType:""});e.scriptSelector=(Array.isArray(e.mimeType)?e.mimeType:[e.mimeType]).reduce((n,s)=>{let o=s?`[type=${t.CSS.escape(s)}]`:"";return n.concat(`script${o}[scoped],script${o}[contract]`)},[]).join(","),Ye.call(this,e)}function Ye(i){let t=this,{dom:r}=t.wq;t.wq.transformCache=new Map,t.wq.compileCache=[new Map,new Map];let e=()=>{};r.realtime(t.document).observe(i.scriptSelector,n=>{n.entrants.forEach(s=>{if("contract"in s||(Object.defineProperty(s,"contract",{value:s.hasAttribute("contract")}),"scoped"in s))return e(s);Object.defineProperty(s,"scoped",{value:s.hasAttribute("scoped")});let o=s.scoped?n.target:s.type==="module"?void 0:t;Ke.call(this,s,o,i)})},{subtree:!0,timing:"intercept",generation:"entrants"}),t.wq.exec=n=>{let s=ot(n);if(!s)throw new Error("Argument must be a valid exec hash.");let{script:o,compiledScript:f,thisContext:c}=s;switch(c instanceof t.Element&&o.scoped&&(c.scripts||Object.defineProperty(c,"scripts",{value:new Set}),c.scripts.add(o)),i.retention){case"dispose":o.remove();break;case"hidden":o.textContent='"hidden"';break;default:o.textContent=f.function.originalSource}return Ze.call(this,f,c,o)}}function Ze(i,t,r){if(!i.function)throw new Error("Input script must already be compiled!");let e=i.function.call(t);i.contract&&Object.defineProperty(r,"rerender",{value:(...f)=>it(e,([,c])=>c(...f))});let n=this,{dom:s}=n.wq;if(!(t instanceof n.EventTarget))return e;let o;return r.contract&&(o=f=>{r.rerender((f.detail||{paths:[]}).paths)},t.addEventListener("namespacechange",o),t.addEventListener("statechange",o)),s.realtime(n.document).observe(t,()=>{r.contract&&(t.removeEventListener("namespacechange",o),t.removeEventListener("statechange",o)),t.dispatchEvent(new n.CustomEvent("remove")),t.scripts.delete(r)},{subtree:!0,timing:"sync",generation:"exits"}),r}function Ke(i,t,r={}){let e=this.wq,n=e.compileCache[i.contract?0:1],s=Ae(i.textContent),o=i.textContent,f;if(!(f=n.get(s))){let u=[],l={},a=[];i.type==="module"&&a.push("import "),i.type==="module"&&!i.contract&&a.push("await "),a.length&&new RegExp(a.join("|")).test(o)&&([u,o,l]=et(o),u.length&&(o=`
|
|
15
|
+
${tt(u).join(`
|
|
16
|
+
`)}
|
|
17
|
+
${o}
|
|
18
|
+
`));let p;if(i.contract){let g={...r.parserParams||{},allowReturnOutsideFunction:!1,allowAwaitOutsideFunction:i.type==="module",allowSuperOutsideMethod:!1},m={...r.runtimeParams||{},async:i.type==="module",apiVersion:2};p=U(o,{...r,parserParams:g,runtimeParams:m})}else{let m=i.type==="module"?Object.getPrototypeOf(async function(){}).constructor:Function;p=r.runtimeParams?.compileFunction?r.runtimeParams.compileFunction(o):new m(o),Object.defineProperty(p,"originalSource",{configurable:!0,value:i.textContent})}f=Object.defineProperty(i.cloneNode(),"function",{value:p}),i.scoped&&Object.defineProperty(f,"scoped",Object.getOwnPropertyDescriptor(i,"scoped")),i.contract&&Object.defineProperty(f,"contract",Object.getOwnPropertyDescriptor(i,"contract")),n.set(s,f)}let c=Ae({script:i,compiledScript:f,thisContext:t});i.textContent=`wq.exec('${c}');`}function et(i){let[t,r]=Ee(i,(o,f,c,u,l,a)=>{if(f==="start-enclosure"&&c==="{"&&!u.openAsync?.type&&u.openEnclosures.length===u.openAsync?.scopeId)u.openAsync.type="block";else if(f==="end-enclosure"&&c==="}"&&u.openAsync?.type==="block"&&u.openEnclosures.length===u.openAsync.scopeId)u.openAsync=null;else if(f==="start-quote"&&!u.openEnclosures.length&&["starting","from"].includes(u.openImport))u.openImport="url";else if(f==="end-quote"&&u.openImport==="url")u.openImport="closing";else if(f==="char"){if(u.openImport==="closing"&&(c===";"||![" ",`
|
|
19
|
+
`].includes(c)||a))return c===";"||a?(o[0]+=c,o.unshift("")):o.unshift(c),u.openImport=null,!1;let p=i.substring(l-1);if(!u.openImport&&/^[\W]?import[ ]*[^\(]/.test(p))return u.openImport="starting",o.unshift(""),6;if(u.openImport==="starting"&&/^[\W]?from /.test(p))return u.openImport="from",4;if(!u.openAsync){if(/^[\W]?async /.test(p))return u.openAsync={scopeId:u.openEnclosures.length},5;if(/^[\W]?await /.test(p))return u.topLevelAwait=!0,5}u.openAsync&&(!u.openAsync.type&&/.?\=\>[ ]*?\{/.test(p)?u.openAsync.type="inline-arrow":u.openAsync.type==="inline-arrow"&&[`
|
|
20
|
+
`,";"].includes(c)&&u.openEnclosures.length===u.openAsync.scopeId&&(u.openAsync=null))}}),e=[],n="",s;for(let o of t.reverse())(s=o.trim()).startsWith("import ")?e.push(o):s&&(n+=o);return[e,n,r]}function tt(i){let t=[],r=[];return i.forEach((e,n)=>{e=rt(e);let[s,o]=e.items.reduce(([f,c],u)=>u.id==="*"?[u.alias,c]:[f,c.concat(u)],[null,[]]);if(s&&t.push(`const ${s} = __$imports$__[${n}];`),o.length){let f=o.map(c=>`${c.id}${c.id!==c.alias?`: ${c.alias}`:""}`).join(", ");t.push(`const { ${f} } = __$imports$__[${n}];`)}r.push(`import("${e.url}")`)}),[`
|
|
21
|
+
const __$imports$__ = await Promise.all([
|
|
22
|
+
${r.join(`,
|
|
23
|
+
`)}
|
|
24
|
+
]);`,t.join(`
|
|
25
|
+
`)]}function rt(i){let t=n=>{let s=/^[`'"]/.exec(n);return s&&n.substring(1,n.lastIndexOf(s[0]))},r={items:[{id:""}]},e=i.replace("import","").trim();return(r.url=t(e))||Ee(e,(n,s,o,f,c,u)=>{if(["start-quote","ongoing-quote","end-quote","char"].includes(s)){if(r.url)return;if(!f.openQuote){let l=e.substring(c);if(o===","){r.items.unshift({id:""});return}if(l.startsWith(" as "))return r.items[0].alias="",3;if(l.startsWith(" from "))return r.url=t(l.replace("from","").trim()),l.length}"alias"in r.items[0]?r.items[0].alias+=o:(r.items[0].id+=o,f.openEnclosures.length&&(r.items[0].enclosed=!0))}}),r.items=r.items.map(n=>({id:n.id&&!n.alias&&!n.enclosed?"default":n.id.trim(),alias:n.alias?n.alias.trim():n.id.trim()})).filter(n=>n.id).reverse(),r}function Ee(i,t){let r=i.length-1;return[...i].reduce(([e,n,s],o,f)=>{if(s)return e[0]+=o,[e,n,--s];let c;if(n.openQuote||n.openComment)return o===n.openQuote?(n.openQuote=null,c=t(e,"end-quote",o,n,f,f===r)):n.openQuote?c=t(e,"ongoing-quote",o,n,f,f===r):n.openComment&&(n.openComment==="//"&&o===`
|
|
26
|
+
`||n.openComment==="/*"&&e[0].substr(-1)==="*"&&o==="/")&&(n.openComment=null,c=t(e,"end-comment",o,n,f,f===r)),c!==!1&&(e[0]+=o),[e,n,typeof c=="number"?c:s];let u;return(u=["()","{}","[]"].filter(l=>o===l[0])[0])?(c=t(e,"start-enclosure",o,n,f,f===r),n.openEnclosures.unshift(u)):n.openEnclosures.length&&o===n.openEnclosures[0][1]?(n.openEnclosures.shift(),c=t(e,"end-enclosure",o,n,f,f===r)):['"',"'","`"].includes(o)?(c=t(e,"start-quote",o,n,f,f===r),n.openQuote=o):!n.openComment&&["/*","//"].includes(i.substr(f,2))?(c=t(e,"start-comment",o,n,f,f===r),n.openComment=i.substr(f,2)):c=t(e,"char",o,n,f,f===r),c!==!1&&(e[0]+=o),[e,n,typeof c=="number"?c:s]},[[""],{openEnclosures:[]},0])}var ne=new Map,nt=()=>(0|Math.random()*9e6).toString(36),it=(i,t)=>i instanceof Promise?i.then(t):t(i);function Ae(i){let t;return(t=ne.get(i))||(t=nt(),ne.set(i,t)),t}function ot(i){let t;return ne.forEach((r,e)=>{r===i&&(t=e)}),t}ie.call(window);})();
|
|
27
|
+
//# sourceMappingURL=scoped-js.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/@webqit/subscript/src/params.js", "../node_modules/@webqit/subscript/src/util.js", "../node_modules/@webqit/subscript/src/runtime/inspect.js", "../node_modules/@webqit/subscript/src/runtime/Contract.js", "../node_modules/@webqit/subscript/src/runtime/Runtime.js", "../node_modules/@webqit/subscript/src/SubscriptFunctionLite.js", "../node_modules/@webqit/util/js/isObject.js", "../node_modules/@webqit/util/js/internals.js", "../node_modules/@webqit/util/js/isArray.js", "../node_modules/@webqit/util/js/isTypeFunction.js", "../node_modules/@webqit/util/js/isNull.js", "../node_modules/@webqit/util/js/isUndefined.js", "../node_modules/@webqit/util/js/isTypeObject.js", "../node_modules/@webqit/util/js/isEmpty.js", "../node_modules/@webqit/util/js/isFunction.js", "../node_modules/@webqit/util/js/isNumber.js", "../node_modules/@webqit/util/js/isNumeric.js", "../node_modules/@webqit/util/js/isString.js", "../node_modules/@webqit/util/js/isTypeArray.js", "../node_modules/@webqit/util/arr/pushUnique.js", "../node_modules/@webqit/util/obj/getPrototypeChain.js", "../node_modules/@webqit/util/obj/getAllPropertyNames.js", "../node_modules/@webqit/util/obj/mergeCallback.js", "../node_modules/@webqit/util/obj/merge.js", "../node_modules/@webqit/util/arr/from.js", "../node_modules/@webqit/util/obj/get.js", "../node_modules/@webqit/util/obj/set.js", "../node_modules/@webqit/dom/src/_Reflow.js", "../node_modules/@webqit/dom/src/realtime/Realtime.js", "../node_modules/@webqit/dom/src/realtime/AttrRealtime.js", "../node_modules/@webqit/dom/src/realtime/DOMRealtime.js", "../node_modules/@webqit/dom/src/polyfills.js", "../node_modules/@webqit/dom/src/index.js", "../src/scoped-js/index.js", "../src/scoped-js/targets.browser.js"],
|
|
4
|
+
"sourcesContent": ["\r\n/**\r\n * @exports\r\n */\r\nexport function resolveParams( extensions = {} ) {\r\n const params = {\r\n runtimeParams: { ...runtimeParams, ...( extensions.runtimeParams || {} ) },\r\n compilerParams: { ...compilerParams, ...( extensions.compilerParams || {} ) },\r\n parserParams: { ...parserParams, ...( extensions.parserParams || {} ) },\r\n };\r\n if ( extensions.devMode ) { /* shortcut for devMode configs */ }\r\n return params;\r\n}\r\nexport const parserParams = {\r\n ecmaVersion: '2020',\r\n allowReturnOutsideFunction: true,\r\n allowAwaitOutsideFunction: true,\r\n allowSuperOutsideMethod: true,\r\n preserveParens: false,\r\n locations: false,\r\n};\r\nexport const compilerParams = {\r\n globalsNoObserve: [ 'globalThis', 'arguments', 'console', ],\r\n originalSource: true,\r\n globalsOnlyPaths: false,\r\n locations: true,\r\n compact: 2,\r\n};\r\nexport const runtimeParams = {\r\n apiVersion: 1,\r\n};\r\n", "\r\n/**\r\n * @normalizeTabs\r\n */\r\nexport function normalizeTabs( rawSource, isFunc = false ) {\r\n let rawSourceSplit = rawSource.split(/\\n/g);\r\n if ( rawSourceSplit.length > 1 ) {\r\n while ( !rawSourceSplit[ 0 ].trim().length ) rawSourceSplit.shift();\r\n let possibleBodyIndentLevel = rawSourceSplit[ isFunc ? 1 : 0 ].split(/[^\\s]/)[ 0 ].length;\r\n if ( possibleBodyIndentLevel ) {\r\n return rawSourceSplit.map( ( line, i ) => {\r\n let possibleIndent = line.substring( 0, possibleBodyIndentLevel );\r\n if ( !possibleIndent.trim().length ) {\r\n return line.substring( possibleBodyIndentLevel );\r\n }\r\n // Last line?\r\n if ( possibleIndent.trim() === '}' && i === rawSourceSplit.length - 1 ) {\r\n return '}';\r\n }\r\n return line;\r\n } ).join( \"\\n\" );\r\n }\r\n }\r\n return rawSource;\r\n}\r\n\r\nexport const _await = ( maybePromise, callback ) => (\r\n maybePromise instanceof Promise ? maybePromise.then( callback ) : callback( maybePromise )\r\n);\r\n\r\nexport const _compare = ( a, b ) => {\r\n if ( typeof a === 'object' && a && typeof b === 'object' && b ) return _deepEql( a, b );\r\n if ( Array.isArray( a ) && Array.isArray( b ) && a.length === b.length ) return a.every( valueA => b.some( valueB => _compare( valueA, valueB ) ) );\r\n return a === b;\r\n};\r\n\r\nexport const _deepEql = function( a, b ) {\r\n for ( let key in a ) {\r\n if ( !_compare( a[ key ], b[ key ] ) ) return false;\r\n }\r\n return true;\r\n};\r\n\r\n// ------------------\r\n// Obsolete\r\n// ------------------\r\n\r\n/**\r\n * @SubscriptFunctionClone\r\n */\r\nexport function SubscriptFunctionClone( _function, defaultThis = null, params = {} ) {\r\n if ( typeof _function !== 'function' ) {\r\n throw new Error( `Expected argument 1 to be of type 'function' but got ${ typeof _function }.` );\r\n }\r\n if ( !_function.name ) {\r\n throw new Error(`Function must have a name.`);\r\n }\r\n params = resolveParams( params );\r\n const rawSource = normalizeTabs( _function.toString(), true );\r\n let source = rawSource, isAsync;\r\n if ( rawSource.startsWith( 'async ' ) ) {\r\n params.runtimeParams.async = true;\r\n source = source.substring( 6 );\r\n isAsync = true;\r\n }\r\n if ( !source.startsWith( 'function ' ) && !source.startsWith( 'function(' ) ) {\r\n if ( source.trim().startsWith( '[' ) ) {\r\n let computedName, roughSPlit = source.split(/\\](?:[\\s]+)?\\(/g).filter( str => str );\r\n [ computedName, source ] = roughSPlit.reduce( ( prev, str, i ) => {\r\n if ( Array.isArray( prev ) ) return prev;\r\n str = `${ prev }${ str || '' }]`;\r\n try {\r\n parse( str );\r\n return [ str, `${ _function.name }(${ roughSPlit.slice( i + 1 ).join( '] (' ) }`]\r\n } catch( e ) { return `${ str } (`; }\r\n }, '' );\r\n }\r\n source = 'function ' + source;\r\n }\r\n const ast = parse( source, params.parserParams ).body[ 0 ];\r\n let bodyStart = ast.body.start + 1/* the opening brace */;\r\n if ( source.substr( bodyStart, 1 ) === \"\\n\" ) {\r\n bodyStart += 1;\r\n }\r\n const originalSource = source.substring( bodyStart, ast.body.end - 1 );\r\n const compilation = compile( { type: 'Program', body: ast.body.body }, { ...params.compilerParams, locStart: - bodyStart } );\r\n const parameters = ast.params.map( paramExpr => serialize( paramExpr ) );\r\n return Runtime.createFunction( _function.name, compilation, parameters, params.runtimeParams, defaultThis, originalSource );\r\n}\r\n\r\n/**\r\n * @SubscriptClass\r\n */\r\nexport const SubscriptClass = Class => class extends ( Class || class {} ) {\r\n\r\n constructor() {\r\n super();\r\n const _static = this.constructor;\r\n _static.subscriptMethods.forEach( methodName => {\r\n if ( !this[ methodName ] ) {\r\n throw new Error( `${ methodName } is not a method.` );\r\n }\r\n if ( methodName === 'constructor' ) {\r\n throw new Error( `Class constructors cannot be subscript methods.` );\r\n }\r\n this[ methodName ] = _static.implementMethod( this[ methodName ], this );\r\n } );\r\n }\r\n \r\n static implementMethod( method, thisBinding = null ) {\r\n return SubscriptFunctionClone( method, thisBinding, {\r\n compilerParams: this.compilerParams,\r\n runtimeParams: this.runtimeParams,\r\n } );\r\n }\r\n\r\n static get subscriptMethods() {\r\n return [];\r\n }\r\n\r\n static get runtimeParams() {\r\n return {};\r\n }\r\n\r\n static get compilerParams() {\r\n return {};\r\n }\r\n\r\n}", "\r\n/**\r\n * @exports\r\n */\r\nconst store = new Map;\r\nexport default function( _function, property, value = undefined ) {\r\n let insp = store.get( _function );\r\n if ( arguments.length > 2 ) {\r\n if ( !insp ) {\r\n insp = new Map;\r\n store.set( _function, insp );\r\n }\r\n insp.set( property, value );\r\n return;\r\n }\r\n return insp && insp.get( property );\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { _await } from '../util.js';\r\nimport inspection from './inspect.js';\r\n\r\nexport default class Contract {\r\n\r\n constructor( ownerContract, graph, callee, params = {}, $thread = null, exits = null ) {\r\n this.ownerContract = ownerContract;\r\n this.graph = graph;\r\n this.callee = callee;\r\n this.params = !ownerContract ? { ...params, isSubscriptFunction: true } : params;\r\n this.exits = exits || new Map;\r\n this.$thread = $thread || { entries: new Map, sequence: [], ownerContract: this };\r\n this.subContracts = new Map;\r\n this.observers = [];\r\n this.contract = function( contractId, arg1, arg2 = null, arg3 = null ) {\r\n if ( !this.graph.subContracts[ contractId ] ) {\r\n throw new Error( `[${ this.graph.type }:${ this.graph.lineage }]: Graph not found for child contract ${ contractId }.` );\r\n }\r\n\r\n let subGraph = this.graph.subContracts[ contractId ];\r\n let subParams = {\r\n ...this.params,\r\n isIterationContract: arguments.length === 3,\r\n iterationId: arguments.length === 3 && arg1,\r\n isFunctionContract: arguments.length === 4,\r\n functionType: arguments.length === 4 && arg1,\r\n isSubscriptFunction: arguments.length === 4 && arg2,\r\n functionScope: ( this.params.isFunctionContract && this.graph.lineage ) || this.params.functionScope,\r\n };\r\n\r\n if ( subParams.isIterationContract ) {\r\n // This is an iteration contract\r\n let callee = arg2;\r\n // Create iteration\r\n let iterationInstanceContract = new Contract( this, subGraph, callee, subParams, this.$thread, this.exits );\r\n // Add iteration\r\n let iterations = this.subContracts.get( contractId );\r\n if ( !iterations ) {\r\n iterations = new Map;\r\n this.subContracts.set( contractId, iterations );\r\n }\r\n // Dispose all existing\r\n if ( iterations.has( subParams.iterationId ) ) {\r\n iterations.get( subParams.iterationId ).dispose();\r\n }\r\n iterations.set( subParams.iterationId, iterationInstanceContract );\r\n return iterationInstanceContract.call();\r\n }\r\n\r\n let callee, subContract, returnValue;\r\n // Dispose existing\r\n if ( this.subContracts.has( contractId ) ) {\r\n this.subContracts.get( contractId ).dispose();\r\n }\r\n\r\n if ( subParams.isFunctionContract ) {\r\n // Function contracts\r\n callee = arg3;\r\n const createCallback = () => new Contract( this, subGraph, callee, subParams );\r\n if ( subParams.functionType !== 'FunctionDeclaration' ) {\r\n returnValue = this.createFunction( createCallback );\r\n } else {\r\n let subContract = createCallback();\r\n if ( subParams.apiVersion > 1 ) {\r\n returnValue = function( ...args ) {\r\n let _returnValue = subContract.call( this, ...args );\r\n _returnValue = _await( _returnValue, __returnValue => [ _returnValue, subContract.thread.bind( subContract ), subContract ] );\r\n subContract = createCallback();\r\n return _returnValue;\r\n }\r\n returnValue.target = subContract;\r\n } else {\r\n returnValue = subContract;\r\n }\r\n }\r\n } else {\r\n // Regular contracts\r\n callee = arg1, subContract = new Contract( this, subGraph, callee, subParams, this.$thread, this.exits );\r\n this.subContracts.set( contractId, subContract );\r\n returnValue = subContract.call();\r\n }\r\n\r\n return returnValue;\r\n }.bind( this );\r\n // ---------------------------\r\n this.contract.memo = Object.create( null );\r\n if ( this.ownerContract && ![ 'FunctionDeclaration', 'FunctionExpression' ].includes( this.graph.type ) ) {\r\n this.contract.args = this.ownerContract.contract.args;\r\n }\r\n // ---------------------------\r\n this.contract.exiting = function( keyword, arg ) {\r\n if ( !arguments.length ) return this.exits.size;\r\n let exitMatch = this.exits.get( keyword ) === arg;\r\n if ( exitMatch ) this.exits.clear();\r\n return exitMatch;\r\n }.bind( this );\r\n // ---------------------------\r\n this.contract.exit = function( keyword, arg ) {\r\n this.exits.set( keyword, arg );\r\n }.bind( this );\r\n // ---------------------------\r\n this.contract.functions = new Map;\r\n this.contract.functions.declaration = ( functionDeclaration, callTarget ) => {\r\n this.contract.functions.set( functionDeclaration, callTarget );\r\n this.applyReflection( functionDeclaration, typeof callTarget === 'function' ? callTarget.target : callTarget );\r\n }\r\n }\r\n\r\n fire( contractUrl, event, refs ) {\r\n if ( !this.ownerContract ) return;\r\n const ret = this.ownerContract.fire( contractUrl, event, refs );\r\n this.observers.forEach( observer => {\r\n if ( observer.contractUrl !== contractUrl ) return;\r\n observer.callback( event, refs );\r\n } );\r\n return ret;\r\n }\r\n\r\n observe( contractUrl, callback ) {\r\n if ( !this.params.isFunctionContract ) return;\r\n this.observers.push( { contractUrl, callback } );\r\n }\r\n\r\n call( $this, ...$arguments ) {\r\n if ( this.disposed ) {\r\n throw new Error( `[${ this.graph.type }:${ this.graph.lineage }]: Instance not runable after having been disposed.` );\r\n }\r\n if ( !this.ownerContract ) {\r\n this.contract.args = $arguments;\r\n Object.defineProperty( this.contract.args, Symbol.toStringTag, { value: 'Arguments' } );\r\n }\r\n let returnValue = this.callee.call( $this, this.contract, ...$arguments );\r\n if ( this.graph.$sideEffects ) {\r\n for ( let referenceId in this.graph.effects ) {\r\n for ( let effectRef of this.graph.effects[ referenceId ].refs ) {\r\n // Build side effects\r\n this.buildThread( [], effectRef, [], 0, true );\r\n }\r\n }\r\n }\r\n return _await( returnValue, () => {\r\n if ( !this.ownerContract || this.params.isFunctionContract ) {\r\n let exitReturnValue = this.exits.get( 'return' );\r\n this.exits.clear();\r\n if ( exitReturnValue !== undefined ) return exitReturnValue;\r\n }\r\n return returnValue;\r\n } );\r\n }\r\n\r\n iterate( keys = [] ) {\r\n if ( this.disposed ) return false;\r\n if ( ![ 'ForOfStatement', 'ForInStatement' ].includes( this.graph.type ) || this.subContracts.size !== 1 ) {\r\n throw new Error( `Contract ${ this.graph.lineage } is not an iterator.` );\r\n }\r\n let [ [ /* iterationContractId */, iterationInstances ] ] = this.subContracts;\r\n let prev\r\n if ( !keys.length || ( keys.includes( 'length' ) && this.graph.type === 'ForOfStatement' ) ) {\r\n for ( let [ /* iterationId */, iterationInstance ] of iterationInstances ) {\r\n prev = _await( prev, () => iterationInstance.call() );\r\n }\r\n } else {\r\n for ( let key of keys ) {\r\n let instance = iterationInstances.get( key ) || iterationInstances.get( parseInt( key ) );\r\n if ( !instance ) continue;\r\n prev = _await( prev, () => instance.call() );\r\n }\r\n }\r\n return prev;\r\n }\r\n\r\n thread( ...eventRefs ) {\r\n if ( this.disposed ) return false;\r\n this.$thread.active = true;\r\n for ( let referenceId in this.graph.effects ) {\r\n for ( let effectRef of this.graph.effects[ referenceId ].refs ) {\r\n for ( let eventRef of eventRefs ) {\r\n let [ isMatch, remainder, computes ] = this.matchRefs( eventRef, effectRef );\r\n if ( !isMatch ) continue;\r\n this.buildThread( eventRef, effectRef, computes, remainder );\r\n }\r\n }\r\n }\r\n return this.runThread();\r\n }\r\n\r\n runThread() {\r\n let execute = ( entry, refs ) => {\r\n if ( [ 'ForOfStatement', 'ForInStatement' ].includes( entry.graph.type ) \r\n && refs.every( ref => ref.executionPlan.isIterationContractTarget ) ) {\r\n let targets = refs.map( ref => ref.executionPlan.iterationTarget );\r\n this.fire( entry.graph.lineage, 'iterating', refs );\r\n return entry.iterate( targets );\r\n }\r\n this.fire( entry.graph.lineage, 'executing', refs );\r\n return entry.call();\r\n };\r\n let prev, entry, refs;\r\n while ( \r\n ( entry = this.$thread.sequence.shift() ) \r\n && ( refs = [ ...this.$thread.entries.get( entry ) ] ) \r\n && this.$thread.entries.delete( entry ) // Important: to allow re-entry on susequent threads\r\n ) {\r\n prev = _await( prev, () => {\r\n if ( entry.disposed || !entry.filterRefs( refs ).length ) return;\r\n this.$thread.current = entry;\r\n let maybePromise = execute( entry, refs );\r\n _await( maybePromise, () => {\r\n for ( let ref of refs ) {\r\n [].concat( ref.executionPlan.assigneeRef || ref.executionPlan.assigneeRefs || [] ).forEach( assigneeRef => {\r\n entry.buildThread( [], assigneeRef, [], 0 );\r\n } );\r\n }\r\n } );\r\n return maybePromise;\r\n } );\r\n }\r\n return _await( prev, () => {\r\n let _ret = this.exits.get( 'return' );\r\n this.exits.clear();\r\n this.$thread.current = null;\r\n this.$thread.active = false;\r\n return _ret;\r\n } );\r\n }\r\n\r\n buildThread( eventRef, effectRef, computes, remainder = 0, isSideEffect = false ) {\r\n let shouldMatchEventRef = remainder > 0;\r\n if ( this.ownerContract ) {\r\n // IMPORTANT: effectRef at global level are not supposed to be checked for computes and condition\r\n if ( !this.compute( computes ) ) return;\r\n if ( effectRef.condition !== undefined && !this.assert( effectRef.condition ) ) return;\r\n } else if ( !shouldMatchEventRef ) {\r\n shouldMatchEventRef = computes.length || effectRef.condition !== undefined;\r\n }\r\n let subscriptionsObject = isSideEffect ? effectRef.$subscriptions : effectRef.subscriptions;\r\n // First we assert the conditions for the effectRef before moving on\r\n Object.keys( subscriptionsObject ).forEach( fullReferenceUrl => {\r\n let [ contractUrl, referenceId ] = fullReferenceUrl.split( ':' );\r\n let selectRefs = _subscriberInstance => {\r\n if ( !_subscriberInstance ) return;\r\n _subscriberInstance.selectRefs( referenceId, subscriptionsObject[ fullReferenceUrl ], shouldMatchEventRef ? eventRef : null );\r\n }\r\n // We find the subscriber instance\r\n let subscriberInstance = this.locate( contractUrl );\r\n if ( Array.isArray( subscriberInstance ) ) {\r\n subscriberInstance.forEach( selectRefs );\r\n } else {\r\n selectRefs( subscriberInstance );\r\n }\r\n } );\r\n }\r\n\r\n selectRefs( referenceId, refIds, eventRef = null ) {\r\n // We'll select refs from within the following reference\r\n let $thread = this.$thread;\r\n let reference = this.graph.signals[ referenceId ];\r\n // -----------------------------------------\r\n let compare = ( a, b ) => a.graph.lineage.localeCompare( b.graph.lineage, undefined, { numeric: true } );\r\n let selectRef = ( ref, computes = [], executionPlan = {} ) => {\r\n // If this addition is by the side effect of a function, \"this\" can sometimes be higher in scope\r\n if ( !$thread.active ) return;\r\n if ( $thread.current && compare( this, $thread.current ) < 0 ) return;\r\n let refs = $thread.entries.get( this );\r\n if ( !refs ) {\r\n refs = new Set;\r\n $thread.entries.set( this, refs );\r\n $thread.sequence.push( this );\r\n $thread.sequence.sort( compare );\r\n }\r\n refs.add( { ...ref, computes, executionPlan } );\r\n if ( !executionPlan.assigneeRef && [ 'VariableDeclaration', 'AssignmentExpression' ].includes( this.graph.type ) ) {\r\n executionPlan.assigneeRefs = [];\r\n for ( let referenceId in this.graph.effects ) {\r\n executionPlan.assigneeRefs.push( ...this.graph.effects[ referenceId ].refs )\r\n }\r\n }\r\n };\r\n // -----------------------------------------\r\n for ( let refId of refIds ) {\r\n // The ref within reference\r\n let ref = reference.refs[ refId ];\r\n // First we assert the conditions for the ref before moving on\r\n if ( !eventRef ) {\r\n // AffectedRef matched event ref... So we select ALL refs within reference\r\n selectRef( ref );\r\n continue;\r\n }\r\n // We match ref to decide whether or how to select it\r\n let [ isMatch_b, remainder_b, computes_b ] = this.matchRefs( eventRef, ref );\r\n if ( !isMatch_b ) continue;\r\n if ( remainder_b <= 0 ) {\r\n // SubscriberRef matches event ref\r\n selectRef( ref, computes_b );\r\n continue;\r\n }\r\n let eventRef_balance = eventRef.slice( -remainder_b );\r\n let assigneeReference = 'assignee' in reference ? this.graph.effects[ reference.assignee ] : null;\r\n if ( assigneeReference ) {\r\n assigneeReference.refs.forEach( assigneeRef => {\r\n if ( assigneeRef.depth.length ) {\r\n let [ isMatch_c, remainder_c, computes_c ] = this.matchRefs( eventRef_balance, assigneeRef.depth );\r\n let computes_d = computes_b.concat( computes_c );\r\n if ( isMatch_c && remainder_c > 0 ) {\r\n // We move on passively to effects on the assignee\r\n let newEventRef = assigneeRef.path.concat( eventRef_balance.slice( -remainder_c ) );\r\n this.buildThread( newEventRef, assigneeRef, computes_d, remainder_c );\r\n } else if ( isMatch_c ) {\r\n // Match is successful on the destructuring side... so we select\r\n selectRef( ref, computes_d, { assigneeRef } );\r\n }\r\n } else {\r\n // We move on passively to effects on the assignee\r\n let newEventRef = assigneeRef.path.concat( eventRef_balance );\r\n this.buildThread( newEventRef, assigneeRef, computes_b, remainder_b );\r\n }\r\n } );\r\n continue;\r\n }\r\n if ( remainder_b === 1 && this.graph.type === 'ForOfStatement' ) {\r\n // An iteration item was changed or the length property of the list was changed\r\n selectRef( ref, computes_b, { isIterationContractTarget: true, iterationTarget: eventRef_balance[ 0 ] } );\r\n continue;\r\n }\r\n if ( remainder_b === 1 && this.graph.type === 'ForInStatement' ) {\r\n // An iteration property was changed\r\n selectRef( ref, computes_b, { isIterationContractTarget: true, iterationTarget: eventRef_balance[ 0 ] } );\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n filterRefs( refs ) {\r\n return refs.filter( ref => {\r\n if ( !this.compute( ref.computes ) ) return;\r\n if ( ref.condition !== undefined && !this.assert( ref.condition ) ) return;\r\n return true;\r\n } );\r\n }\r\n\r\n matchRefs( a, b ) {\r\n let pathA, $pathA, pathB, $pathB;\r\n if ( Array.isArray( a ) ) {\r\n pathA = a, $pathA = a.dotSafe ? a.join( '.' ) : undefined;\r\n } else {\r\n pathA = a.path, $pathA = a.$path;\r\n }\r\n if ( Array.isArray( b ) ) {\r\n pathB = b, $pathB = b.dotSafe ? b.join( '.' ) : undefined;\r\n } else {\r\n pathB = b.path, $pathB = b.$path;\r\n }\r\n let remainder = pathA.length - pathB.length;\r\n if ( remainder > 0 ) {\r\n [ pathA, pathB, $pathA, $pathB ] = [ pathB, pathA, $pathB, $pathA ];\r\n }\r\n if ( $pathA && $pathB ) {\r\n return [ `${ $pathB }.`.startsWith( `${ $pathA }.` ), remainder, [] ];\r\n }\r\n let computes = [];\r\n let getVal = element => ( typeof element === 'object' ? element.name : element );\r\n let compareIdentifiers = ( a, b ) => {\r\n if ( !a || !b ) return false;\r\n let isComputeA = typeof a === 'object' && ( 'memoId' in a ),\r\n isComputeB = typeof b === 'object' && ( 'memoId' in b );\r\n if ( isComputeA || isComputeB ) {\r\n computes.push( memo => {\r\n return ( isComputeA ? memo[ a.memoId ] : getVal( a ) ) === ( isComputeB ? memo[ b.memoId ] : getVal( b ) ) \r\n } );\r\n return true;\r\n }\r\n return getVal( a ) === getVal( b );\r\n };\r\n return [\r\n pathA.reduce( ( prev, identifier, i ) => prev && compareIdentifiers( identifier, pathB[ i ] ), true ),\r\n remainder,\r\n computes,\r\n ];\r\n }\r\n\r\n locate( contractUrl ) {\r\n let ownLineage_ = this.graph.lineage + '/';\r\n let contractUrl_ = contractUrl + '/';\r\n if ( contractUrl_ === ownLineage_ ) return this;\r\n if ( contractUrl_.startsWith( ownLineage_ ) ) {\r\n let postLineage = contractUrl.slice( ownLineage_.length ).split( '/' );\r\n let subContract = this.subContracts.get( parseInt( postLineage.shift() ) );\r\n if ( postLineage.length) {\r\n if ( subContract instanceof Map ) {\r\n return Array.from( subContract ).reduce( ( subContracts, [ key, _subContract ] ) => {\r\n return subContracts.concat( _subContract.locate( contractUrl ) );\r\n }, [] );\r\n }\r\n if ( subContract ) {\r\n return subContract.locate( contractUrl );\r\n }\r\n }\r\n return subContract;\r\n }\r\n if ( this.ownerContract ) {\r\n return this.ownerContract.locate( contractUrl );\r\n }\r\n }\r\n\r\n compute( computes ) {\r\n return !computes.some( compute => compute( this.contract.memo ) === false );\r\n }\r\n\r\n assert( condition ) {\r\n if ( typeof condition === 'string' && condition.includes( ':' ) ) {\r\n let [ contractUrl, _condition ] = condition.split( ':' );\r\n return this.locate( contractUrl ).assert( _condition );\r\n }\r\n let conditionDef = this.graph.conditions[ condition ];\r\n let memo = this.contract.memo;\r\n if ( typeof conditionDef.parent !== 'undefined' && !this.assert( conditionDef.parent ) ) return false;\r\n if ( typeof conditionDef.switch !== 'undefined' ) {\r\n return conditionDef.cases.some( _case => memo[ _case ] === memo[ conditionDef.switch ] );\r\n }\r\n if ( typeof conditionDef.whenNot !== 'undefined' ) {\r\n return !memo[ conditionDef.whenNot ];\r\n }\r\n if ( typeof conditionDef.when !== 'undefined' ) {\r\n return memo[ conditionDef.when ];\r\n }\r\n return true;\r\n }\r\n\r\n dispose() {\r\n if ( this.params.isFunctionContract ) return;\r\n this.subContracts.forEach( ( subContract, contractId ) => {\r\n if ( subContract instanceof Map ) {\r\n subContract.forEach( subContract => subContract.dispose() );\r\n subContract.clear();\r\n } else {\r\n subContract.dispose();\r\n }\r\n } );\r\n this.subContracts.clear();\r\n delete this.ownerContract;\r\n delete this.callee;\r\n delete this.params;\r\n delete this.contract.memo;\r\n this.disposed = true;\r\n }\r\n \r\n createFunction( createCallback, defaultThis = undefined ) {\r\n let contract = createCallback();\r\n // -------------\r\n const execute = function( _contract, ...args ) {\r\n let _returnValue = _contract.call( this === undefined ? defaultThis : this, ...args );\r\n if ( _contract.params.isSubscriptFunction && _contract.params.apiVersion > 1 ) {\r\n _returnValue = _await( _returnValue, __returnValue => [ __returnValue, _contract.thread.bind( _contract ), _contract ] );\r\n // Replace global for next call\r\n contract = createCallback( contract );\r\n }\r\n return _returnValue;\r\n };\r\n // -------------\r\n const _function = ( contract instanceof Promise ) || ( contract.callee instanceof ( async function() {} ).constructor )\r\n ? async function() { return _await( contract, _contract => execute.call( this, _contract, ...arguments ) ); } \r\n : function() { return execute.call( this, contract, ...arguments ); };\r\n // -------------\r\n _await( contract, _contract => {\r\n this.applyReflection( _function, _contract );\r\n } );\r\n // -------------\r\n inspection( _function, 'properties', _await( contract, _contract => {\r\n const graph = {\r\n type: _contract.params.functionType || 'Program',\r\n apiVersion: _contract.params.apiVersion || 1,\r\n isSubscriptFunction: _contract.params.isSubscriptFunction,\r\n sideEffects: _contract.graph.sideEffects || false,\r\n };\r\n if ( _contract.params.isSubscriptFunction ) {\r\n graph.dependencies = [];\r\n for ( const [ id, effect ] of Object.entries( _contract.graph.effects ) ) {\r\n graph.dependencies.push( ...effect.refs.map( ref => ref.path.map( s => !( 'name' in s ) ? Infinity : s.name ) ) );\r\n }\r\n }\r\n return graph;\r\n } ) );\r\n // -------------\r\n return _function;\r\n }\r\n\r\n applyReflection( _function, contract ) {\r\n // Hide implementation details on callee\r\n Object.defineProperty( contract.callee, 'length', { configurable: true, value: contract.callee.length - 1 } );\r\n const compiledSourceNeat = contract.callee.toString()//.replace( /\\(\\$[\\w]+\\,([\\s]*)?/, '(' );\r\n Object.defineProperty( contract.callee, 'toString', { configurable: true, value: ( compiledSource = false ) => {\r\n if ( !compiledSource && contract.graph.originalSource ) { return contract.graph.originalSource; }\r\n return compiledSourceNeat;\r\n } } );\r\n // Hide implementation details on main\r\n let properties = {\r\n name: contract.callee.name,\r\n length: contract.callee.length,\r\n toString: contract.callee.toString,\r\n };\r\n if ( contract.params.isSubscriptFunction ) {\r\n if ( !( contract.params.apiVersion > 1 ) ) {\r\n properties = {\r\n ...properties,\r\n thread: contract.thread.bind( contract ),\r\n dispose: contract.dispose.bind( contract ),\r\n runtime: contract,\r\n };\r\n }\r\n }\r\n Object.keys( properties ).forEach( name => {\r\n Object.defineProperty( _function, name, { configurable: true, value: properties[ name ] } );\r\n } );\r\n }\r\n\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport { _await } from '../util.js';\r\nimport Contract from './Contract.js';\r\nimport inspection from './inspect.js';\r\n\r\nexport default class Runtime extends Contract {\r\n\r\n static create( compilation, parameters = [], runtimeParams = {} ) {\r\n const isAsync = runtimeParams.async || compilation.graph.hoistedAwaitKeyword;\r\n const _Function = isAsync ? Object.getPrototypeOf( async function() {} ).constructor : Function;\r\n const callee = runtimeParams.compileFunction \r\n ? runtimeParams.compileFunction( compilation.source, [ compilation.identifier + '' ].concat( parameters ) )\r\n : new _Function( compilation.identifier + '', ...parameters, compilation.source );\r\n return new this( null, compilation.graph, callee, runtimeParams );\r\n }\r\n\r\n static createFunction( sourceName, compilation, parameters = [], runtimeParams = {}, defaultThis, originalSource = null ) {\r\n runtimeParams = { ...runtimeParams, functionType: 'Constructor', };\r\n if ( compilation instanceof Promise ) { runtimeParams = { ...runtimeParams, async: true, }; }\r\n const createCallback = contract => {\r\n // Subsequent calls avoid recompilation\r\n if ( contract ) { return new this( null, contract.graph, contract.callee, runtimeParams ); }\r\n // Supports lazy compilation. So, input compilation may be a Promise\r\n return _await( compilation, _compilation => applyReflection( this.create( _compilation, parameters, runtimeParams ) ) );\r\n };\r\n const applyReflection = contract => { \r\n if ( contract.graph.originalSource && !contract.graph.originalSourceModified ) {\r\n const ownSource = `${ runtimeParams.async || contract.graph.hoistedAwaitKeyword ? 'async ' : '' }function ${ sourceName || 'anonymous' }`;\r\n const originalSourceIndented = contract.graph.originalSource.split(/\\n/g).map( line => ` ${ line }` ).join( `\\n` );\r\n contract.graph.originalSource = `${ ownSource }(${ parameters.join( ', ' ) }) {\\n${ originalSourceIndented }\\n}`;\r\n contract.graph.originalSourceModified = true;\r\n }\r\n if ( sourceName ) { Object.defineProperty( contract.callee, 'name', { configurable: true, value: sourceName } ); }\r\n return contract;\r\n };\r\n const _function = this.prototype.createFunction( createCallback, defaultThis );\r\n inspection( _function, 'locations', _await( compilation, _compilation => ( {\r\n locations: _compilation.locations,\r\n } ) ) );\r\n return _function;\r\n }\r\n\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { resolveParams } from './params.js';\r\nimport { normalizeTabs } from './util.js';\r\nimport Runtime from './runtime/Runtime.js';\r\nimport inspect from './runtime/inspect.js';\r\n\r\n/**\r\n * @SubscriptFunctionLite\r\n */\r\nexport default function SubscriptFunctionLite( ...args ) {\r\n if ( typeof window !== 'object' ) throw new Error( `No window in context.` );\r\n // --------------------\r\n const params = resolveParams( typeof args[ args.length - 1 ] === 'object' ? args.pop() : {} );\r\n const source = normalizeTabs( args.pop() || '' );\r\n const parameters = args;\r\n const createFunction = compilation => Runtime.createFunction( undefined, compilation, parameters, params.runtimeParams, this, source );\r\n // --------------------\r\n // SubscriptCompiler has been loaded sync?\r\n if ( window.wq?.SubscriptCompiler && !params.runtimeParams.async ) {\r\n const { parse, compile } = window.wq.SubscriptCompiler;\r\n const ast = parse( source, params.parserParams );\r\n return createFunction( compile( ast, params.compilerParams ) );\r\n }\r\n // Load and run SubscriptCompiler async - in the background?\r\n if ( !window.wq?.SubscriptCompilerWorker ) {\r\n const customUrl = document.querySelector( 'meta[name=\"subscript-compiler-url\"]' );\r\n const compilerUrl = customUrl?.content || `https://unpkg.com/@webqit/subscript/dist/compiler.js`;\r\n const workerScriptText = `\r\n importScripts( '${ compilerUrl }' );\r\n const { parse, compile } = self.wq.SubscriptCompiler;\r\n self.onmessage = e => {\r\n const { source, params } = e.data;\r\n const ast = parse( source, params.parserParams );\r\n const compilation = compile( ast, params.compilerParams );\r\n compilation.identifier = compilation.identifier.toString();\r\n e.ports[ 0 ]?.postMessage( compilation );\r\n };`;\r\n window.wq = window.wq || {};\r\n window.wq.SubscriptCompilerWorker = new Worker( `data:text/javascript;base64,${ btoa( workerScriptText ) }` );\r\n }\r\n return createFunction( new Promise( res => {\r\n let messageChannel = new MessageChannel;\r\n wq.SubscriptCompilerWorker.postMessage( { source, params }, [ messageChannel.port2 ] );\r\n messageChannel.port1.onmessage = e => res( e.data );\r\n } ) );\r\n}\r\n\r\n/**\r\n * @inspect\r\n */\r\nObject.defineProperty( SubscriptFunctionLite, 'inspect', { value: inspect } );\r\n", "\n/**\n * Tells if val is pure object.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !Array.isArray(val) && typeof val === 'object' && val;\n};\n", "\n/**\n * Creates and/or returns an \"internals\" object for the given object.\n * \n * @param Any obj\n * @param String namespace\n * \n * @return Object\n */\nexport default function internals(obj, ...namespaces) {\n if (!globalThis.WebQitInternalsRegistry) {\n globalThis.WebQitInternalsRegistry = new Map;\n }\n var itnls = globalThis.WebQitInternalsRegistry.get(obj);\n if (!itnls) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n globalThis.WebQitInternalsRegistry.set(obj, itnls);\n }\n var _ns, _itnls;\n while ((_ns = namespaces.shift())) {\n if ((_itnls = itnls) && !(itnls = itnls.get(_ns))) {\n itnls = new Map;\n if (namespaces[0] === false) {\n // FALSE means: Return orphan Map if not exists\n return itnls;\n }\n _itnls.set(_ns, itnls);\n }\n }\n return itnls;\n}", "\n/**\n * Tells if val is of type \"array\".\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val);\n};\n", "\n/**\n * Tells if val is of type \"function\".\n * This holds true for both regular functions and classes.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn typeof val === 'function';\n};\n", "\n/**\n * Tells if val is undefined or is null.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val === null || val === '';\n};\n", "\n/**\n * Tells if val is undefined or is of type \"undefined\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn arguments.length && (val === undefined || typeof val === 'undefined');\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"object\".\n * This holds true for anything object, including built-ins.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn Array.isArray(val) || (typeof val === 'object' && val) || _isTypeFunction(val);\n};\n", "\n/**\n * @imports\n */\nimport _isNull from './isNull.js';\nimport _isUndefined from './isUndefined.js';\nimport _isTypeObject from './isTypeObject.js';\n\n/**\n * Tells if val is empty in its own type.\n * This holds true for NULLs, UNDEFINED, FALSE, 0,\n * objects without keys, empty arrays.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNull(val) || _isUndefined(val) || val === false || val === 0 \n\t\t|| (_isTypeObject(val) && !Object.keys(val).length);\n};\n", "\n/**\n * @imports\n */\nimport _isTypeFunction from './isTypeFunction.js';\n\n/**\n * Tells if val is of type \"function\".\n *\n * @param object \t\tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isTypeFunction(val) || (val && {}.toString.call(val) === '[object function]');\n};\n", "\n/**\n * Tells if val is of type \"number\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof Number || (typeof val === 'number');\n};\n", "\n/**\n * @imports\n */\nimport _isNumber from './isNumber.js';\n/**\n * Tells if val is of type \"string\" or a numeric string.\n * This holds true for both numbers and numeric strings.\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn _isNumber(val) || (val !== true && val !== false && val !== null && val !== '' && !isNaN(val * 1));\n};\n", "\n/**\n * Tells if val is of type \"string\".\n *\n * @param string \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn val instanceof String || (typeof val === 'string' && val !== null);\n};\n", "\n/**\n * @imports\n */\nimport _isString from './isString.js';\nimport _isUndefined from './isUndefined.js';\n\n/**\n * Tells if val is \"array-like\".\n * This holds true for anything that has a length property.\n *\n * @param object\t \tval\n *\n * @return bool\n */\nexport default function(val) {\n\treturn !_isString(val) && !_isUndefined(val.length);\n};\n", "\n/**\n * Adds an item if not already exist.\n *\n * @param array \tarr\n * @param array\t \t...itms\n *\n * @return array\n */\nexport default function(arr, ...items) {\n\titems.forEach(itm => {\n\t\tif (arr.indexOf(itm) < 0) {\n\t\t\tarr.push(itm);\n\t\t}\n\t});\n\treturn arr;\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\n\n/**\n * Returns the prototype chain.\n *\n * @param object \t\tobj\n * @param object\t \tuntil\n *\n * @return bool\n */\nexport default function(obj, until) {\n\tuntil = until || Object.prototype;\n\tuntil = until && !_isArray(until) ? [until] : until;\n\t// We get the chain of inheritance\n\tvar prototypalChain = [];\n\tvar obj = obj;\n\twhile((obj && (!until || until.indexOf(obj) < 0) && obj.name !== 'default')) {\n\t\tprototypalChain.push(obj);\n\t\tobj = obj ? Object.getPrototypeOf(obj) : null;\n\t}\n\treturn prototypalChain;\n};\n", "\n/**\n * @imports\n */\nimport _pushUnique from '../arr/pushUnique.js';\nimport _getPrototypeChain from './getPrototypeChain.js';\n\n/**\n * Eagerly retrieves object members all down the prototype chain.\n *\n * @param object\t \tobj\n * @param object\t \tuntil\n *\n * @return array\n */\nexport default function(obj, until) {\n\tvar keysAll = [];\n\t_getPrototypeChain(obj, until).forEach(obj => {\n\t\t_pushUnique(keysAll, ...Object.getOwnPropertyNames(obj));\n\t});\n\treturn keysAll;\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isObject from '../js/isObject.js';\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _getAllPropertyNames from './getAllPropertyNames.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function mergeCallback(objs, callback, deepProps = false, isReplace = false, withSymbols = false) {\n\tvar depth = 0;\n\tvar obj1 = objs.shift();\n\tif (_isNumeric(obj1) || obj1 === true || obj1 === false) {\n\t\tdepth = obj1;\n\t\tobj1 = objs.shift();\n\t}\n\tif (!objs.length) {\n\t\tthrow new Error('_merge() requires two or more array/objects.');\n\t}\n\tobjs.forEach((obj2, i) => {\n\t\tif (!_isTypeObject(obj2) && !_isFunction(obj2)) {\n\t\t\treturn;\n\t\t}\n\t\t(deepProps ? _getAllPropertyNames(obj2) : Object.keys(obj2)).forEach(key => {\n\t\t\tif (!callback(key, obj1, obj2, i)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar valAtObj1 = obj1[key];\n\t\t\tvar valAtObj2 = obj2[key];\n\t\t\tif (((_isArray(valAtObj1) && _isArray(valAtObj2)) || (_isObject(valAtObj1) && _isObject(valAtObj2))) \n\t\t\t&& (depth === true || depth > 0)) {\n\t\t\t\t// RECURSE...\n\t\t\t\tobj1[key] = _isArray(valAtObj1) && _isArray(valAtObj2) ? [] : {};\n\t\t\t\tmergeCallback([_isNumeric(depth) ? depth - 1 : depth, obj1[key], valAtObj1, valAtObj2], callback, deepProps, isReplace, withSymbols);\n\t\t\t} else {\n\t\t\t\tif (_isArray(obj1) && _isArray(obj2)) {\n\t\t\t\t\tif (isReplace) {\n\t\t\t\t\t\tobj1[key] = valAtObj2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj1.push(valAtObj2);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// In case we're setting a read-only property\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (withSymbols) {\n\t\t\t\t\t\t\tObject.defineProperty(obj1, key, Object.getOwnPropertyDescriptor(obj2, key));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tobj1[key] = obj2[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\treturn obj1;\n};\n", "\n/**\n * @imports\n */\nimport _mergeCallback from './mergeCallback.js';\n\n/**\n * Merges values from subsequent arrays/objects first array/object;\n * optionally recursive\n *\n * @param array ...objs\n *\n * @return void\n */\nexport default function(...objs) {\n\treturn _mergeCallback(objs, (k, obj1, obj2) => {\n\t\treturn true;\n\t}, false/*deepProps*/, false/*isReplace*/, false/*withSymbols*/);\n};\n", "\n/**\n * @imports\n */\nimport _isArray from '../js/isArray.js';\nimport _isTypeArray from '../js/isTypeArray.js';\nimport _isEmpty from '../js/isEmpty.js';\nimport _isObject from '../js/isObject.js';\n\n/**\n * Casts an array-like object to an array.\n *\n * @param mixed \tval\n * @param bool\t \tcastObject\n *\n * @return array\n */\nexport default function(val, castObject = true) {\n\tif (_isArray(val)) {\n\t\treturn val;\n\t};\n\tif (!castObject && _isObject(val)) {\n\t\treturn [val];\n\t};\n\tif (val !== false && val !== 0 && _isEmpty(val)) {\n\t\treturn [];\n\t};\n\tif (_isTypeArray(val)) {\n\t\treturn Array.prototype.slice.call(val);\n\t};\n\tif (_isObject(val)) {\n\t\treturn Object.values(val);\n\t};\n\treturn [val];\n};\n", "\n/**\n * @imports\n */\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isUndefined from '../js/isUndefined.js';\nimport _isNull from '../js/isNull.js';\nimport _arrFrom from '../arr/from.js';\n\n/**\n * Retrieves the value at the given path.\n *\n * A return value of undefined is ambiguous, and can mean either that the\n * path does not exist, or that the path actually exists but with a value of undefined. If it is required to\n * know whether the path actually exists, pass an object as a third argument.\n * This object will have an \"exists\" key set to true/false.\n *\n * @param object \t\t\t\tctxt\n * @param array \t\t\t\tpath\n * @param object \t\t\t\ttrap\n * @param object \t\t\t\treciever\n *\n * @return mixed\n */\nexport default function(ctxt, path, trap = {}, reciever = {}) {\n\tpath = _arrFrom(path).slice();\n\tvar _ctxt = ctxt;\n\twhile(!_isUndefined(_ctxt) && !_isNull(_ctxt) && path.length) {\n\t\tvar _key = path.shift();\n\t\tif (!(trap.get ? trap.get(_ctxt, _key) : (_isTypeObject(_ctxt) ? _key in _ctxt : _ctxt[_key]))) {\n\t\t\treciever.exists = false;\n\t\t\treturn;\n\t\t}\n\t\t_ctxt = trap.get ? trap.get(_ctxt, _key) : _ctxt[_key];\n\t}\n\treciever.exists = true;\n\treturn _ctxt;\n};\n", "\n/**\n * @imports\n */\nimport _isTypeObject from '../js/isTypeObject.js';\nimport _isFunction from '../js/isFunction.js';\nimport _isNumeric from '../js/isNumeric.js';\nimport _isArray from '../js/isArray.js';\nimport _arrFrom from '../arr/from.js';\nimport _get from './get.js';\n\n/**\n * Sets a value to the given path.\n *\n * @param object \t\t\t\tobj\n * @param array \t\t\t\tpath\n * @param mixed \t\t\t\tval\n * @param object|function \t\tbuildTree\n * @param object \t\t\t\ttrap\n *\n * @return bool\n */\nexport default function(obj, path, val, buildTree = {}, trap = {}) {\n\tconst _set = (target, key, val) => {\n\t\tif (trap.set) {\n\t\t\treturn trap.set(target, key, val);\n\t\t} else {\n\t\t\tif (_isNumeric(path[i]) && _isArray(target)) {\n\t\t\t\ttarget.push(val);\n\t\t\t} else {\n\t\t\t\ttarget[key] = val;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t};\n\tpath = _arrFrom(path);\n\tvar target = obj;\n\tfor(var i = 0; i < path.length; i ++) {\n\t\tif (i < path.length - 1) {\n\t\t\tif (!target || (!_isTypeObject(target) && !_isFunction(target))) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar branch = _get(target, path[i], trap);\n\t\t\tif (!_isTypeObject(branch)) {\n\t\t\t\tif (trap.buildTree === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tbranch = _isFunction(trap.buildTree) ? trap.buildTree(i) : (_isNumeric(path[i + 1]) ? [] : {});\n\t\t\t\tvar branchSuccess = _set(target, path[i], branch);\n\t\t\t\tif (!branchSuccess) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttarget = branch;\n\t\t} else {\n\t\t\treturn _set(target, path[i], val);\n\t\t}\n\t}\n};\n", "\r\n/**\r\n * ---------------------------\r\n * Binds callbacks to requestAnimationFrame()\r\n * to create a central \"read/write\" phases for Ctxt access.\r\n * ---------------------------\r\n */\r\n\t\t\t\r\nexport default window => class Reflow {\r\n\r\n\t/**\r\n\t * Starts the loop.\r\n\t *\r\n\t * @return this\r\n\t */\r\n\tconstructor( asyncDOM = true ) {\r\n\t\tObject.defineProperty( this, 'window', { value: window } );\r\n\t\tObject.defineProperty( this, 'readCallbacks', { value: new Set } );\r\n\t\tObject.defineProperty( this, 'writeCallbacks', { value: new Set } );\r\n\t\tthis.async = asyncDOM;\r\n\t\tif ( this.window.requestAnimationFrame ) {\r\n\t\t\tthis._run();\r\n\t\t} else {\r\n\t\t\tthis.async = false;\r\n\t\t}\r\n\t}\r\n\r\n\t_run() {\r\n\t\tthis.window.requestAnimationFrame( () => {\r\n\t\t\tthis.readCallbacks.forEach( callback => {\r\n\t\t\t\tif ( !callback() ) {\r\n\t\t\t\t\tthis.readCallbacks.delete( callback );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tthis.writeCallbacks.forEach( callback => {\r\n\t\t\t\tif ( !callback() ) {\r\n\t\t\t\t\tthis.writeCallbacks.delete( callback );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tthis._run();\r\n\t\t} );\r\n\t}\r\n\t\r\n\t/**\r\n\t * Binds a callback to the \"read\" phase.\r\n\t *\r\n\t * @param function \tcallback\r\n\t * @param bool\t\twithPromise\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonread( callback, withPromise = false ) {\r\n\t\tif ( withPromise ) {\r\n\t\t\treturn new Promise( ( resolve, reject ) => {\r\n\t\t\t\tif ( this.async === false ) {\r\n\t\t\t\t\tcallback( resolve, reject );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.readCallbacks.add( () => {\r\n\t\t\t\t\t\tcallback( resolve, reject );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t\tif ( this.async === false ) {\r\n\t\t\tcallback();\r\n\t\t} else {\r\n\t\t\tthis.readCallbacks.add( callback );\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * Binds a callback to the \"write\" phase.\r\n\t *\r\n\t * @param function \tcallback\r\n\t * @param bool\t\twithPromise\r\n\t *\r\n\t * @return void\r\n\t */\r\n\tonwrite( callback, withPromise = false ) {\r\n\t\tif ( withPromise ) {\r\n\t\t\treturn new Promise( ( resolve, reject ) => {\r\n\t\t\t\tif ( this.async === false ) {\r\n\t\t\t\t\tcallback( resolve, reject );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.writeCallbacks.add( () => {\r\n\t\t\t\t\t\tcallback( resolve, reject );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t\tif ( this.async === false ) {\r\n\t\t\tcallback();\r\n\t\t} else {\r\n\t\t\tthis.writeCallbacks.add( callback );\r\n\t\t}\r\n\t}\r\n\t\r\n\t/**\r\n\t * A special construct for Ctxt manipulations that span\r\n\t * one or more read/write cycles.\r\n\t *\r\n\t * @param function \tread\r\n\t * @param function \twrite\r\n\t * @param mixed\t\tprevTransaction\r\n\t *\r\n\t * @return void|mixed\r\n\t */\r\n\tcycle( onread, onwrite, prevTransaction ) {\r\n\t\tthis.onread( () => {\r\n\t\t\t// Record initial values\r\n\t\t\tconst readReturn = onread( prevTransaction );\r\n\t\t\t// Call erite, the transation\r\n\t\t\tconst callWrite = ( readReturn ) => {\r\n\t\t\t\tif ( readReturn === undefined ) return;\r\n\t\t\t\tthis.onwrite( () => {\r\n\t\t\t\t\tconst writeReturn = onwrite( readReturn, prevTransaction );\r\n\t\t\t\t\t// Repeat transaction\r\n\t\t\t\t\tconst repeatTransaction = ( writeReturn ) => {\r\n\t\t\t\t\t\tif ( writeReturn === undefined ) return;\r\n\t\t\t\t\t\tthis.cycle( onread, onwrite, writeReturn );\r\n\t\t\t\t\t};\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\t// If \"write\" returns a promise, we wait until it is resolved\r\n\t\t\t\t\t// ---------------------------------------\r\n\t\t\t\t\tif ( writeReturn instanceof Promise ) {\r\n\t\t\t\t\t\twriteReturn.then( repeatTransaction );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\trepeatTransaction( writeReturn );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t};\r\n\t\t\t// ---------------------------------------\r\n\t\t\t// If \"read\" returns a promise, we wait until it is resolved\r\n\t\t\t// ---------------------------------------\r\n\t\t\tif ( readReturn instanceof Promise ) {\r\n\t\t\t\treadReturn.then( callWrite );\r\n\t\t\t} else {\r\n\t\t\t\tcallWrite( readReturn );\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { _isFunction, _isObject, _internals } from '@webqit/util/js/index.js';\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\n\r\n/**\r\n *\r\n * @class Realtime\r\n */\r\nexport default class Realtime {\r\n\r\n\t/**\r\n\t * @constructor\r\n\t *\r\n\t * @param document|Element\tcontext\r\n\t */\r\n\tconstructor( context, namespace, window ) {\r\n\t\tthis.context = context;\r\n\t\tthis.namespace = namespace;\r\n\t\tthis.window = context.defaultView || context.ownerDocument?.defaultView || window;\r\n\t\tthis.document = this.window.document;\r\n\t\tthis.wq = this.window.wq;\r\n\t\tObject.defineProperty( this, '#', { value: {} } );\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves arguments\r\n\t * \r\n\t * @param Array \t\t\targs \r\n\t * \r\n\t * @returns Array\r\n\t */\r\n\tresolveArgs( args ) {\r\n\t\tif ( _isFunction( args[ 0 ] ) ) { args = [ [], ...args ]; }\r\n\t\telse if ( _isObject( args[ 0 ] ) && args.length === 1 ) {\r\n\t\t\targs = [ [], undefined, args[ 0 ] ];\r\n\t\t} else if ( _isObject( args[ 1 ] ) && args.length === 2 ) {\r\n\t\t\targs = [ _arrFrom( args[ 0 ], false/*castObject*/ ), undefined, args[ 1 ] ];\r\n\t\t} else { args[ 0 ] = _arrFrom( args[ 0 ], false/*castObject*/ ); }\r\n\t\treturn args;\r\n\t}\r\n\r\n\t/**\r\n\t * @registry\r\n\t *\r\n\t * @param Array\t\t\t\t...args\r\n\t * \r\n\t * @returns Map\r\n\t */\r\n\tregistry( ...args ) {\r\n\t\treturn _internals( this.window, 'dom.realtime', this.namespace, ...args );\r\n\t}\r\n\t\t\r\n\t/**\r\n\t * @createSignalGenerator\r\n\t * \r\n\t * @param Object \t\t\tmo \r\n\t * \r\n\t * @returns Object\r\n\t */\r\n\tcreateSignalGenerator() {\r\n\t\treturn {\r\n\t\t\tgenerate() {\r\n\t\t\t\t// Abort previous\r\n\t\t\t\tthis.lastController?.abort();\r\n\t\t\t\tthis.lastController = new AbortController;\r\n\t\t\t\tconst flags = { signal: this.lastController.signal };\r\n\t\t\t\treturn flags;\r\n\t\t\t},\r\n\t\t\tdisconnect() { this.lastController?.abort(); }\r\n\t\t}\r\n\t}\r\n\t\t\r\n\t/**\r\n\t * Loops through registration objects whose contexts match the event context.\r\n\t * \r\n\t * @param String \t\tinterceptionTiming\r\n\t * @param Object|Array \trecord_s\r\n\t * @param Function \t\tcallback \r\n\t * \r\n\t * @returns void\r\n\t */\r\n\tforEachMatchingContext( interceptionTiming, record_s, callback ) {\r\n\t\tconst { window } = this, records = Array.isArray( record_s ) ? record_s : [ record_s ];\r\n\t\tlet dispatchBatch = new Set;\r\n\t\tfor ( const [ depth, registries ] of this.registry( interceptionTiming ) ) {\r\n\t\t\tfor ( const [ context, registry ] of registries ) {\r\n\t\t\t\t// Ensure event target is/within context\r\n\t\t\t\tlet matches = records.filter( record => {\r\n\t\t\t\t\tif ( !context.contains( record.target ) ) return false;\r\n\t\t\t\t\treturn depth === 'subtree' || record.target === context;\r\n\t\t\t\t} );\r\n\t\t\t\tif ( !matches.length ) continue;\r\n\t\t\t\t// Records will be dispatched in their original form\r\n\t\t\t\tif ( !Array.isArray( record_s ) ) { matches = matches[ 0 ]; }\r\n\t\t\t\tfor ( const registration of registry ) {\r\n\t\t\t\t\tdispatchBatch.add( [ registration, matches, context ] );\r\n\t\t\t\t\t//callback.call( this, registration, matches, context );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Saving everything to dispatchBatch ensures that recursive modifications\r\n\t\t// to both this.registry( interceptionTiming ), registries, and registry aren't pciked up\r\n\t\tfor ( const [ registration, record_s, context ] of dispatchBatch ) {\r\n\t\t\tcallback.call( this, registration, record_s, context );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @disconnectables\r\n\t * \r\n\t * @param AbortSignal \t\tsignal\r\n\t * @param Array \t\t\t...objects \r\n\t * \r\n\t * @returns Object\r\n\t */\r\n\tdisconnectables( signal, ...objects ) {\r\n\t\tconst disconnectable = { disconnect() {\r\n\t\t\tobjects.forEach( d => (\r\n\t\t\t\td && _isFunction( d.disconnect ) && d.disconnect() \r\n\t\t\t\t|| _isFunction( d ) && d() \r\n\t\t\t\t|| _isObject( d ) && ( d.disconnected = true )\r\n\t\t\t) );\r\n\t\t} };\r\n\t\tif ( signal ) signal.addEventListener( 'abort', () => disconnectable.disconnect() );\r\n\t\treturn disconnectable;\r\n\t}\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport Realtime from './Realtime.js';\r\n\r\n/**\r\n *\r\n * @class AttrRealtime\r\n */\r\nexport default class AttrRealtime extends Realtime {\r\n\r\n\t/**\r\n\t * @constructor\r\n\t */\r\n\tconstructor( context, ...args ) {\r\n\t\tsuper( context, 'attr', ...args );\r\n\t}\r\n\t\r\n\t/**\r\n\t * Runs a query.\r\n\t *\r\n\t * @param array|string\t\t\t\tfilter\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return Disconnectable|Void\r\n\t */\r\n\tget( filter, callback = undefined, params = {} ) {\r\n\t\tconst originalFilterIsString = typeof filter === 'string';\r\n\t\t[ filter = [], callback = undefined, params = {} ] = this.resolveArgs( arguments );\r\n\t\tconst { context } = this;\r\n\t\t// -------------\r\n\t\tconst records = attrIntersection( context, filter );\r\n\t\tconst record_s = originalFilterIsString ? records[ 0 ] : records;\r\n\t\tif ( !callback ) return record_s;\r\n\t\tconst signalGenerator = callback && params.lifecycleSignals && this.createSignalGenerator();\r\n\t\tconst flags = signalGenerator?.generate() || {};\r\n\t\tcallback( record_s, flags, context );\r\n\t\t// -------------\r\n\t\tif ( params.live ) {\r\n\t\t\tif ( signalGenerator ) { params = { ...params, signalGenerator }; }\r\n\t\t\tconst disconnectable_live = this.observe( originalFilterIsString ? filter[ 0 ] : filter, callback, { newValue: true, ...params } );\r\n\t\t\treturn this.disconnectables( params.signal, disconnectable_live );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Mutation Observer\r\n\t * \r\n\t * @param array|string\t\t\t\tfilter\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t * \r\n\t * @returns Disconnectable\r\n\t */\r\n\tobserve( filter, callback, params = {} ) {\r\n\t\tconst originalFilterIsString = typeof filter === 'string';\r\n\t\t[ filter = [], callback, params = {} ] = this.resolveArgs( arguments );\r\n\t\t// ------------------------\r\n\t\tif ( [ 'sync', 'intercept' ].includes( params.timing ) ) return this.observeSync( originalFilterIsString ? filter[ 0 ] : filter, callback, params );\r\n\t\tif ( params.timing && params.timing !== 'async' ) throw new Error( `Timing option \"${ params.timing }\" invalid.` );\r\n\t\t// ------------------------\r\n\t\tconst { context, window, wq } = this;\r\n\t\t// ------------------\r\n\t\tif ( params.eventDetails && !wq.attrInterceptionHooks?.intercepting ) {\r\n\t\t\tattrInterception.call( window, 'intercept', () => {} );\r\n\t\t}\r\n\t\t// -------------\r\n\t\tconst disconnectable = new window.MutationObserver( records => {\r\n\t\t\trecords = dedup( records ).map( rcd => withAttrEventDetails.call( window, rcd ) );\r\n\t\t\tdispatch.call( window, registration, records, context );\r\n\t\t} );\r\n\t\t// ------------------\r\n\t\tconst $params = { attributes: true, attributeOldValue: params.oldValue, subtree: params.subtree };\r\n\t\tif ( filter.length ) { $params.attributeFilter = filter; }\r\n\t\tdisconnectable.observe( context, $params );\r\n\t\t// -------------\r\n\t\tconst signalGenerator = params.signalGenerator || params.lifecycleSignals && this.createSignalGenerator();\r\n\t\tconst registration = { context, filter, callback, params, atomics: new Map, originalFilterIsString, signalGenerator, disconnectable };\r\n\t\t// -------------\r\n\t\treturn this.disconnectables( params.signal, disconnectable, signalGenerator );\r\n\t}\r\n\t\r\n\t/**\r\n\t * Mutation Interceptor\r\n\t * \r\n\t * @param array|string\t\t\t\tfilter\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t * \r\n\t * @returns Disconnectable\r\n\t */\r\n\tobserveSync( filter, callback, params = {} ) {\r\n\t\tconst originalFilterIsString = typeof filter === 'string';\r\n\t\t[ filter, callback, params = {} ] = this.resolveArgs( arguments );\r\n\t\tconst { context, window } = this;\r\n\t\t// -------------\r\n\t\tif ( params.timing && ![ 'sync', 'intercept' ].includes( params.timing ) ) throw new Error( `Timing option \"${ params.timing }\" invalid.` );\r\n\t\tconst interceptionTiming = params.timing === 'intercept' ? 'intercept' : 'sync';\r\n\t\tconst intersectionDepth = params.subtree ? 'subtree' : 'children';\r\n\t\tif ( !this.registry( interceptionTiming ).size ) {\r\n\t\t\t// One handler per intercept/sync registry\r\n\t\t\tattrInterception.call( window, interceptionTiming, records => {\r\n\t\t\t\tthis.forEachMatchingContext( interceptionTiming, records, dispatch );\r\n\t\t\t} );\r\n\t\t}\r\n\t\t// -------------\r\n\t\tconst disconnectable = { disconnect() {\r\n\t\t\tregistry.delete( registration );\r\n\t\t\tif ( !registry.size ) { registries.delete( context ); }\r\n\t\t} };\r\n\t\tconst signalGenerator = params.signalGenerator || params.lifecycleSignals && this.createSignalGenerator();\r\n\t\tconst registration = { context, filter, callback, params, atomics: new Map, originalFilterIsString, signalGenerator, disconnectable };\r\n\t\t// -------------\r\n\t\tconst registries = this.registry( interceptionTiming, intersectionDepth );\r\n\t\tif ( !registries.has( context ) ) { registries.set( context, new Set ); }\r\n\t\tconst registry = registries.get( context );\r\n\t\tregistry.add( registration );\r\n\t\t// -------------\r\n\t\treturn this.disconnectables( params.signal, disconnectable, signalGenerator );\r\n\t}\r\n}\r\n\r\n/**\r\n * Deduplicates records.\r\n * \r\n * @param Array \t\t\trecords\r\n * \r\n * @returns Array\r\n */\r\nfunction dedup( records ) {\r\n\treturn records.reduce( ( rcds, rcd, i ) => {\r\n\t\tif ( rcds[ i - 1 ]?.attributeName === rcd.attributeName ) return rcds;\r\n\t\treturn rcds.concat( rcd );\r\n\t}, [] );\r\n}\r\n\r\n/**\r\n * Dispatches a mutation record if it matches the observed.\r\n * \r\n * @param Object \t\t\tregistration\r\n * @param Array \t\t\trecords\r\n * \r\n * @returns Void\r\n */\r\nfunction dispatch( registration, records ) {\r\n\tconst { context, filter, callback, params, atomics, originalFilterIsString, signalGenerator } = registration;\r\n\tif ( params.atomic && !atomics.size ) {\r\n\t\trecords = attrIntersection( context, filter, records );\r\n\t}\r\n\t// Should we care about old / new values being present?\r\n\tif ( !( params.newValue === null && params.oldValue === null ) ) {\r\n\t\trecords = records.map( rcd => {\r\n\t\t\tlet exclusion;\r\n\t\t\tif ( !params.oldValue && ( 'oldValue' in rcd ) ) {\r\n\t\t\t\t( { oldValue: exclusion, ...rcd } = rcd );\r\n\t\t\t}\r\n\t\t\tif ( !params.newValue && ( 'value' in rcd ) ) {\r\n\t\t\t\t( { value: exclusion, ...rcd } = rcd );\r\n\t\t\t} else if ( params.newValue && typeof rcd.value === 'undefined' ) {\r\n\t\t\t\trcd = { ...rcd, value: rcd.target.getAttribute( rcd.name ) };\r\n\t\t\t}\r\n\t\t\treturn rcd;\r\n\t\t} );\r\n\t}\r\n\tif ( params.atomic ) {\r\n\t\trecords.forEach( record => atomics.set( record.name, record ) );\r\n\t\trecords = Array.from( atomics.entries() ).map( ( [ , value ] ) => value );\r\n\t}\r\n\tconst record_s = originalFilterIsString ? records[ 0 ] : records;\r\n\tconst flags = signalGenerator?.generate() || {};\r\n\tcallback( record_s, flags, context );\r\n}\r\n\r\n/**\r\n * Helper to determining which records to deliver.\r\n * \r\n * @param Object \t\t\tcontext\r\n * @param Array \t\t\tfilter\r\n * @param Array \t\t\trecords\r\n * \r\n * @returns Array\r\n */\r\nfunction attrIntersection( context, filter, records = [] ) {\r\n\tconst _type = { event: null, type: 'attribute' };\r\n\tif ( filter.length ) {\r\n\t\treturn filter.map( attrName => {\r\n\t\t\treturn records.find( r => r.name === attrName ) || { target: context, name: attrName, value: context.getAttribute( attrName ), ..._type };\r\n\t\t} );\r\n\t}\r\n\tconst attrs = Array.from( context.attributes );\r\n\treturn attrs.map( attr => {\r\n\t\treturn records.find( r => r.name === attr.nodeName ) || { target: context, name: attr.nodeName, value: attr.nodeValue, ..._type };\r\n\t} );\r\n}\r\n\r\n/**\r\n * Determines the event for an attr mutation record.\r\n * \r\n * @param MutationRecord \t{ target, attributeName }\r\n * \r\n * @returns Object\r\n */\r\nfunction withAttrEventDetails( { target, attributeName, value, oldValue } ) {\r\n\tconst window = this, registry = window.wq.attrInterceptionRecords?.get( target ) || {};\r\n\tconst event = registry[ attributeName ] || 'mutation';\r\n\tconst record = { target, name: attributeName, value, oldValue, type: 'observation', event };\r\n\treturn record;\r\n}\r\n\r\n/**\r\n * Attributes intersection engine.\r\n * \r\n * @param String \t\t\ttiming \r\n * @param Function \t\t\tcallback \r\n * \r\n * @returns \r\n */\r\nfunction attrInterception( timing, callback ) {\r\n\tconst window = this;\r\n\tconst { wq, document, Element } = window;\r\n\tif ( !wq.attrInterceptionHooks ) { wq.attrInterceptionHooks = new Map; }\r\n\tif ( !wq.attrInterceptionHooks.has( timing ) ) { wq.attrInterceptionHooks.set( timing, new Set ); }\r\n\twq.attrInterceptionHooks.get( timing ).add( callback );\r\n\tconst rm = () => wq.attrInterceptionHooks.get( timing ).delete( callback );\r\n\tif ( wq.attrInterceptionHooks?.intercepting ) return rm;\r\n\tconsole.warn( `Attr mutation APIs are now being intercepted.` );\r\n\twq.attrInterceptionHooks.intercepting = true;\r\n\twq.attrInterceptionRecords = new Map;\r\n\r\n\t// Interception hooks\r\n\tconst attrIntercept = ( record, defaultAction ) => {\r\n\t\tif ( !wq.attrInterceptionRecords.has( record.target ) ) { wq.attrInterceptionRecords.set( record.target, {} ); }\r\n\t\tconst registry = wq.attrInterceptionRecords.get( record.target );\r\n\t\t// ------------------\r\n\t\tclearTimeout( registry[ record.name ]?.timeout ); // Clear any previous that's still active\r\n\t\tregistry[ record.name ] = record.event; // Main: set event details... and next to timeout details\r\n\t\tconst timeout = setTimeout( () => { delete registry[ record.name ]; }, 0 );\r\n\t\tObject.defineProperty( record.event, 'timeout', { value: timeout, configurable: true } );\r\n\t\t// ------------------\r\n\t\twq.attrInterceptionHooks.get( 'intercept' )?.forEach( callback => callback( [ record ] ) );\r\n\t\tconst returnValue = defaultAction();\r\n\t\twq.attrInterceptionHooks.get( 'sync' )?.forEach( callback => callback( [ record ] ) );\r\n\t\treturn returnValue;\r\n\t};\r\n\r\n\t// Interception observer WILL need to know non-API-based mutations\r\n\tconst mo = new window.MutationObserver( records => {\r\n\t\trecords = dedup( records ).map( rcd => withAttrEventDetails.call( window, rcd ) ).filter( ( rcd, i ) => {\r\n\t\t\treturn !Array.isArray( rcd.event );\r\n\t\t} );\r\n\t\tif ( !records.length ) return;\r\n\t\twq.attrInterceptionHooks.get( 'intercept' )?.forEach( callback => callback( records ) );\r\n\t\twq.attrInterceptionHooks.get( 'sync' )?.forEach( callback => callback( records ) );\r\n\t} );\r\n\tmo.observe( document, { attributes: true, subtree: true, attributeOldValue: true } );\r\n\r\n\t// Intercept DOM attr mutation methods\r\n\tconst originalApis = Object.create( null );\r\n\t[ 'setAttribute', 'removeAttribute', 'toggleAttribute', ].forEach( apiName => {\r\n\t\toriginalApis[ apiName ] = Element.prototype[ apiName ];\r\n\t\tElement.prototype[ apiName ] = function( ...args ) {\r\n\t\t\tlet value, oldValue = this.getAttribute( args[ 0 ] );\r\n\t\t\tif ( [ 'setAttribute', 'toggleAttribute' ].includes( apiName ) ) { value = args[ 1 ]; }\r\n\t\t\tif ( apiName === 'toggleAttribute' && value === undefined ) {\r\n\t\t\t\tvalue = oldValue === null ? true : false;\r\n\t\t\t}\r\n\t\t\tconst record = { target: this, name: args[ 0 ], value, oldValue, type: 'interception', event: [ this, apiName ] };\r\n\t\t\tconst exec = () => originalApis[ apiName ].call( this, ...args );\r\n\t\t\treturn attrIntercept( record, exec );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn rm;\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport { _isObject } from '@webqit/util/js/index.js';\r\nimport { _from as _arrFrom } from '@webqit/util/arr/index.js';\r\nimport AttrRealtime from './AttrRealtime.js';\r\nimport Realtime from './Realtime.js';\r\n\r\n/**\r\n *\r\n * @class DOMRealtime\r\n */\r\nexport default class DOMRealtime extends Realtime {\r\n\r\n\t/**\r\n\t * @constructor\r\n\t */\r\n\tconstructor( context, ...args ) {\r\n\t\tsuper( context, 'tree', ...args );\r\n\t}\r\n\r\n\t/**\r\n\t * Alias for ( new AttrRealtime() ).all( ... )\r\n\t */\r\n\tattr( filter, callback = undefined, params = {} ) {\r\n\t\tconst { context, window } = this;\r\n\t\treturn ( new AttrRealtime( context, window ) ).get( ...arguments );\r\n\t}\r\n\r\n\t/**\r\n\t * Runs a query.\r\n\t *\r\n\t * @param array|Element|string\t\tselectors\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t *\r\n\t * @return Disconnectable|Void\r\n\t */\r\n\tquery( selectors, callback = undefined, params = {} ) {\r\n\t\t[ selectors, callback = undefined, params = {} ] = this.resolveArgs( arguments );\r\n\t\tconst { context } = this;\r\n\t\t// ------------------\r\n\t\tconst records = new Map, getRecord = target => {\r\n\t\t\tif ( !records.has( target ) ) { records.set( target, { target, entrants: [], exits: [], type: 'query', event: null } ); }\r\n\t\t\treturn records.get( target );\r\n\t\t};\r\n\t\t// ------------------\r\n\t\tif ( !params.generation || params.generation === 'entrants' ) {\r\n\t\t\tif ( !selectors.length ) {\r\n\t\t\t\t//if ( params.subtree ) throw new Error( `The subtree option requires a selector to work.` );\r\n\t\t\t\t[ ...context.children ].forEach( node => getRecord( context ).entrants.push( node ) );\r\n\t\t\t} else if ( selectors.every( selector => typeof selector === 'string' ) && ( selectors = selectors.join( ',' ) ) ) {\r\n\t\t\t\tconst matches = params.subtree\r\n\t\t\t\t\t? context.querySelectorAll( selectors )\r\n\t\t\t\t\t: [ ...context.children ].filter( node => node.matches( selectors ) );\r\n\t\t\t\tmatches.forEach( node => getRecord( node.parentNode || context ).entrants.push( node ) );\r\n\t\t\t}\r\n\t\t}\r\n\t\t// ------------------\r\n\t\tif ( !callback ) return records;\r\n\t\tconst disconnectable = { disconnected: false };\r\n\t\tconst signalGenerator = callback && params.lifecycleSignals && this.createSignalGenerator();\r\n\t\tfor ( const [ , record ] of records ) {\r\n\t\t\tif ( disconnectable.disconnected ) break;\r\n\t\t\tconst flags = signalGenerator?.generate() || {};\r\n\t\t\tcallback( record, flags, context );\r\n\t\t}\r\n\t\t// ------------------\r\n\t\tif ( params.live ) {\r\n\t\t\tif ( signalGenerator ) { params = { ...params, signalGenerator }; }\r\n\t\t\tconst disconnectable_live = this.observe( selectors, callback, params );\r\n\t\t\treturn this.disconnectables( params.signal, disconnectable, disconnectable_live );\r\n\t\t}\r\n\t\treturn this.disconnectables( params.signal, disconnectable, signalGenerator );\r\n\t}\r\n\r\n\t/**\r\n\t * Alias for query( ..., { subtree: false } )\r\n\t */\r\n\tchildren( selectors, callback = undefined, params = {} ) {\r\n\t\t[ selectors, callback = undefined, params = {} ] = this.resolveArgs( arguments );\r\n\t\treturn this.query( selectors, callback, { ...params, subtree: false } );\r\n\t}\r\n\r\n\t/**\r\n\t * Alias for query( ..., { subtree: true } )\r\n\t */\r\n\tsubtree( selectors, callback = undefined, params = {} ) {\r\n\t\t[ selectors, callback = undefined, params = {} ] = this.resolveArgs( arguments );\r\n\t\treturn this.query( selectors, callback, { ...params, subtree: true } );\r\n\t}\r\n\r\n\t/**\r\n\t * Mutation Observer\r\n\t * \r\n\t * @param array|Element|string\t\tselectors\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t * \r\n\t * @returns Disconnectable\r\n\t */\r\n\tobserve( selectors, callback, params = {} ) {\r\n\t\t[ selectors, callback, params = {} ] = this.resolveArgs( arguments );\r\n\t\t// ------------------------\r\n\t\tif ( [ 'sync', 'intercept' ].includes( params.timing ) ) return this.observeSync( selectors, callback, params );\r\n\t\tif ( params.timing && params.timing !== 'async' ) throw new Error( `Timing option \"${ params.timing }\" invalid.` );\r\n\t\t// ------------------------\r\n\t\tconst { context, window, wq, document } = this;\r\n\t\t// ------------------\r\n\t\tif ( params.eventDetails ) { wq.domInterceptionRecordsAlwaysOn = true; }\r\n\t\tif ( ( document.readyState === 'loading' || wq.domInterceptionRecordsAlwaysOn ) && !wq.domInterceptionHooks?.intercepting ) {\r\n\t\t\tdomInterception.call( window, 'sync', () => {} );\r\n\t\t}\r\n\t\t// -------------\r\n\t\tconst disconnectable = new window.MutationObserver( records => records.forEach( record => {\r\n\t\t\tdispatch.call( window, registration, withEventDetails.call( window, record ), context );\r\n\t\t} ) );\r\n\t\tdisconnectable.observe( context, { childList: true, subtree: params.subtree, } );\r\n\t\tconst signalGenerator = params.signalGenerator || params.lifecycleSignals && this.createSignalGenerator();\r\n\t\tconst registration = { context, selectors, callback, params, signalGenerator, disconnectable };\r\n\t\t// -------------\r\n\t\tif ( params.staticSensitivity ) {\r\n\t\t\tconst disconnectable_attr = staticSensitivity.call( window, registration );\r\n\t\t\treturn this.disconnectables( params.signal, disconnectable, signalGenerator, disconnectable_attr );\r\n\t\t}\r\n\t\treturn this.disconnectables( params.signal, disconnectable, signalGenerator );\r\n\t}\r\n\t\r\n\t/**\r\n\t * Mutation Interceptor\r\n\t * \r\n\t * @param array|Element|string\t\tselectors\r\n\t * @param function\t\t\t\t\tcallback\r\n\t * @param object\t\t\t\t\tparams\r\n\t * \r\n\t * @returns Disconnectable\r\n\t */\r\n\tobserveSync( selectors, callback, params = {} ) {\r\n\t\t[ selectors, callback, params = {} ] = this.resolveArgs( arguments );\r\n\t\tconst { context, window } = this;\r\n\t\t// -------------\r\n\t\tif ( params.timing && ![ 'sync', 'intercept' ].includes( params.timing ) ) throw new Error( `Timing option \"${ params.timing }\" invalid.` );\r\n\t\tconst interceptionTiming = params.timing === 'intercept' ? 'intercept' : 'sync';\r\n\t\tconst intersectionDepth = params.subtree ? 'subtree' : 'children';\r\n\t\tif ( !this.registry( interceptionTiming ).size ) {\r\n\t\t\t// One handler per intercept/sync registry\r\n\t\t\tdomInterception.call( window, interceptionTiming, record => {\r\n\t\t\t\tthis.forEachMatchingContext( interceptionTiming, record, dispatch );\r\n\t\t\t} );\r\n\t\t}\r\n\t\t// -------------\r\n\t\tconst disconnectable = { disconnect() {\r\n\t\t\tregistry.delete( registration );\r\n\t\t\tif ( !registry.size ) { registries.delete( context ); }\r\n\t\t} };\r\n\t\tconst signalGenerator = params.signalGenerator || params.lifecycleSignals && this.createSignalGenerator();\r\n\t\tconst registration = { context, selectors, callback, params, signalGenerator, disconnectable };\r\n\t\t// -------------\r\n\t\tconst registries = this.registry( interceptionTiming, intersectionDepth );\r\n\t\tif ( !registries.has( context ) ) { registries.set( context, new Set ); }\r\n\t\tconst registry = registries.get( context );\r\n\t\tregistry.add( registration );\r\n\t\t// -------------\r\n\t\tif ( params.staticSensitivity ) {\r\n\t\t\tconst disconnectable_attr = staticSensitivity.call( window, registration );\r\n\t\t\treturn this.disconnectables( params.signal, disconnectable, signalGenerator, disconnectable_attr );\r\n\t\t}\r\n\t\treturn this.disconnectables( params.signal, disconnectable, signalGenerator );\r\n\t}\r\n}\r\n\r\n/**\r\n * Sensitivty for attribute changes for attribute selectors.\r\n * \r\n * @param object registration\r\n * \r\n * @returns Disconnectable\r\n */\r\nfunction staticSensitivity( registration ) {\r\n\tconst window = this;\r\n\tconst { context, selectors, callback, params, signalGenerator } = registration;\r\n\tconst parse = selector => [ ...selector.matchAll(/\\[([^\\=\\]]+)(\\=[^\\]]+)?\\]/g) ].map( x => x[ 1 ] );\r\n\tif ( !( registration.$attrs = selectors.filter( s => typeof s === 'string' && s.includes( '[' ) ).reduce( ( attrs, selector ) => attrs.concat( parse( selector ) ), [] ) ).length ) return;\r\n\t// ---------\r\n\tconst entrants = new Set, exits = new Set;\r\n\tentrants.push = val => ( exits.delete( val ), entrants.add( val ) );\r\n\texits.push = val => ( entrants.delete( val ), exits.add( val ) );\r\n\tregistration.$deliveryCache = { entrants, exits };\r\n\t// ---------\r\n\treturn ( new AttrRealtime( context, window ) ).observe( registration.$attrs, _records => {\r\n\t\tconst records = new Map, getRecord = target => {\r\n\t\t\tif ( !records.has( target ) ) { records.set( target, { target, entrants: [], exits: [], type: 'static', event: null } ); }\r\n\t\t\treturn records.get( target );\r\n\t\t};\r\n\t\t// ---------\r\n\t\tconst matchesCache = new WeakMap;\r\n\t\tconst matches = node => {\r\n\t\t\tif ( !matchesCache.has( node ) ) { matchesCache.set( node, selectors.some( selector => node.matches( selector ) ) ); }\r\n\t\t\treturn matchesCache.get( node );\r\n\t\t};\r\n\t\t// ---------\r\n\t\tfor ( const _record of _records ) {\r\n\t\t\t[ 'entrants', 'exits' ].forEach( generation => {\r\n\t\t\t\tif ( params.generation && generation !== params.generation ) return;\r\n\t\t\t\tif ( registration.$deliveryCache[ generation ].has( _record.target ) || ( generation === 'entrants' ? !matches( _record.target ) : matches( _record.target ) ) ) return;\r\n\t\t\t\tregistration.$deliveryCache[ generation ].push( _record.target );\r\n\t\t\t\tgetRecord( _record.target )[ generation ].push( _record.target );\r\n\t\t\t\tgetRecord( _record.target ).event = _record.event;\r\n\t\t\t} );\r\n\t\t}\r\n\t\t// ---------\r\n\t\tfor ( const [ , record ] of records ) {\r\n\t\t\tconst flags = signalGenerator?.generate() || {};\r\n\t\t\tcallback( record, flags, context );\r\n\t\t}\r\n\t}, { subtree: params.subtree, timing: params.timing, eventDetails: params.eventDetails } );\r\n}\r\n\r\n/**\r\n * Dispatches a mutation record if it matches the observed.\r\n * \r\n * @param Object \t\t\tregistration \r\n * @param Object \t\t\trecord \r\n * \r\n * @returns Void\r\n */\r\nfunction dispatch( registration, _record ) {\r\n\tconst { context, selectors, callback, params, signalGenerator, $deliveryCache } = registration;\r\n\t// ---------\r\n\tconst record = { ..._record, entrants: [], exits: [] };\r\n\t[ 'entrants', 'exits' ].forEach( generation => {\r\n\t\tif ( params.generation && generation !== params.generation ) return;\r\n\t\tif ( selectors.length ) {\r\n\t\t\trecord[ generation ] = nodesIntersection( selectors, _record[ generation ], _record.event !== 'parse' );\r\n\t\t} else {\r\n\t\t\trecord[ generation ] = [ ..._record[ generation ] ];\r\n\t\t}\r\n\t\tif ( !$deliveryCache ) return;\r\n\t\tfor ( const node of record[ generation ] ) {\r\n\t\t\t$deliveryCache[ generation ].push( node );\r\n\t\t}\r\n\t} );\r\n\t// ---------\r\n\tif ( !record.entrants.length && !record.exits.length ) return;\r\n\tconst flags = signalGenerator?.generate() || {};\r\n\tcallback( record, flags, context );\r\n}\r\n\r\n/**\r\n * Aggregates instances of els in sources\r\n * \r\n * @param Array \t\t\ttargets \r\n * @param Array \t\t\tsources \r\n * @param Bool \t\t\t\tdeepIntersect \r\n * \r\n * @returns \r\n */\r\nfunction nodesIntersection( targets, sources, deepIntersect ) {\r\n\tsources = Array.isArray( sources ) ? sources : [ ...sources ];\r\n\tconst match = ( sources, target ) => {\r\n\t\t// Filter out text nodes\r\n\t\tsources = sources.filter( source => source.matches );\r\n\t\tif ( typeof target === 'string' ) {\r\n\t\t\t// Is directly mutated...\r\n\t\t\tlet matches = sources.filter( source => source.matches( target ) );\r\n\t\t\t// Is contextly mutated...\r\n\t\t\tif ( deepIntersect ) {\r\n\t\t\t\tmatches = sources.reduce( ( collection, source ) => {\r\n\t\t\t\t\treturn [ ...collection, ...source.querySelectorAll( target ) ];\r\n\t\t\t\t}, matches );\r\n\t\t\t}\r\n\t\t\tif ( matches.length ) return matches;\r\n\t\t} else {\r\n\t\t\t// Is directly mutated...\r\n\t\t\tif ( sources.includes( target ) || (\r\n\t\t\t\tdeepIntersect && sources.some( source => source.contains( target ) )\r\n\t\t\t) ) { return [ target ]; }\r\n\t\t}\r\n\t};\r\n\t// Search can be expensive...\r\n\t// Multiple listeners searching the same thing in the same list?\r\n\tif ( !sources.$$searchCache ) { sources.$$searchCache = new Map; }\r\n\treturn targets.reduce( ( matches, target ) => {\r\n\t\tlet _matches;\r\n\t\tif ( sources.$$searchCache.has( target ) ) {\r\n\t\t\t_matches = sources.$$searchCache.get( target );\r\n\t\t} else {\r\n\t\t\t_matches = match( sources, target ) || [];\r\n\t\t\tif ( _isObject( target ) ) {\r\n\t\t\t\tsources.$$searchCache.set( target, _matches );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn matches.concat( _matches );\r\n\t}, [] );\r\n}\r\n\r\n/**\r\n * Determines the event for a mutation record\r\n * \r\n * @param MutationRecord \t{ target, entrants, exits }\r\n * \r\n * @returns Object\r\n */\r\nfunction withEventDetails( { target, addedNodes, removedNodes } ) {\r\n\tlet window = this, event;\r\n\tevent = _arrFrom( addedNodes ).reduce( ( prev, node ) => prev || window.wq.domInterceptionRecords?.get( node ), null );\r\n\tevent = _arrFrom( removedNodes ).reduce( ( prev, node ) => prev || window.wq.domInterceptionRecords?.get( node ), event );\r\n\tevent = event || window.document.readyState === 'loading' && 'parse' || 'mutation';\r\n\treturn { target, entrants: addedNodes, exits: removedNodes, type: 'observation', event };\r\n}\r\n\r\n/**\r\n * DOM intersection engine.\r\n * \r\n * @param String \t\t\ttiming \r\n * @param Function \t\t\tcallback \r\n * \r\n * @returns \r\n */\r\nfunction domInterception( timing, callback ) {\r\n\tconst window = this;\r\n\tconst { wq, document, Node, Element, HTMLElement, HTMLTemplateElement, DocumentFragment } = window;\r\n\tif ( !wq.domInterceptionHooks ) { wq.domInterceptionHooks = new Map; }\r\n\tif ( !wq.domInterceptionHooks.has( timing ) ) { wq.domInterceptionHooks.set( timing, new Set ); }\r\n\twq.domInterceptionHooks.get( timing ).add( callback );\r\n\tconst rm = () => wq.domInterceptionHooks.get( timing ).delete( callback );\r\n\tif ( wq.domInterceptionHooks?.intercepting ) return rm;\r\n\tconsole.warn( `DOM mutation APIs are now being intercepted.` );\r\n\twq.domInterceptionHooks.intercepting = true;\r\n\twq.domInterceptionRecords = new Map;\r\n\r\n\t// Interception hooks\r\n\tconst shouldObserve = () => true//document.readyState === 'loading' || wq.domInterceptionRecordsAlwaysOn;\r\n\tconst intercept = ( record, defaultAction ) => {\r\n\t\tif ( shouldObserve() ) {\r\n\t\t\trecord.entrants.concat( record.exits ).forEach( node => {\r\n\t\t\t\tclearTimeout( wq.domInterceptionRecords.get( node )?.timeout ); // Clear any previous that's still active\r\n\t\t\t\twq.domInterceptionRecords.set( node, record.event ); // Main: set event details... and next to timeout details\r\n\t\t\t\tconst timeout = setTimeout( () => { wq.domInterceptionRecords.delete( node ); }, 0 );\r\n\t\t\t\tObject.defineProperty( record.event, 'timeout', { value: timeout, configurable: true } );\r\n\t\t\t} );\r\n\t\t} else { wq.domInterceptionRecords.clear(); }\r\n\t\twq.domInterceptionHooks.get( 'intercept' )?.forEach( callback => callback( record ) );\r\n\t\tconst returnValue = defaultAction();\r\n\t\twq.domInterceptionHooks.get( 'sync' )?.forEach( callback => callback( record ) );\r\n\t\treturn returnValue;\r\n\t};\r\n\r\n\t// Interception observer WILL need to know non-API-based mutations\r\n\tif ( shouldObserve() ) {\r\n\t\tconst mo = new window.MutationObserver( records => records.forEach( record => {\r\n\t\t\tif ( Array.isArray( ( record = withEventDetails.call( window, record ) ).event ) ) return;\r\n\t\t\twq.domInterceptionHooks.get( 'intercept' )?.forEach( callback => callback( record ) );\r\n\t\t\twq.domInterceptionHooks.get( 'sync' )?.forEach( callback => callback( record ) );\r\n\t\t} ) );\r\n\t\tmo.observe( document, { childList: true, subtree: true, } );\r\n\t\tdocument.addEventListener( 'readystatechange', () => !shouldObserve() && mo.disconnect() );\r\n\t}\r\n\r\n\t// Intercept DOM mutation methods\r\n\tconst originalApis = Object.create( null );\r\n\t[ 'insertBefore'/*Node*/, 'insertAdjacentElement', 'insertAdjacentHTML', 'setHTML',\r\n\t\t'replaceChildren', 'replaceWith', 'remove', 'replaceChild'/*Node*/, 'removeChild'/*Node*/, \r\n\t\t'before', 'after', 'append', 'prepend', 'appendChild'/*Node*/, \r\n\t].forEach( apiName => {\r\n\t\t// We'll be sure to monkey the correct interface\r\n\t\tconst Interface = [ 'insertBefore', 'replaceChild', 'removeChild', 'appendChild' ].includes( apiName ) ? Node : Element;\r\n\t\toriginalApis[ apiName ] = Interface.prototype[ apiName ];\r\n\t\t// In case newer methods like setHTML() are not supported\r\n\t\tif ( !originalApis[ apiName ] ) return;\r\n\t\t// Monkey now...\r\n\t\tInterface.prototype[ apiName ] = function( ...args ) {\r\n\t\t\t// Instance of Node interface? Abort!\r\n\t\t\tconst exec = () => originalApis[ apiName ].call( this, ...args );\r\n\t\t\tif ( !( this instanceof Element || this instanceof DocumentFragment ) ) return exec();\r\n\t\t\t// --------------\r\n\t\t\t// Obtain exits and entrants\r\n\t\t\tlet exits = [], entrants = [], target = this;\r\n\t\t\tif ( [ 'insertBefore' ].includes( apiName ) ) {\r\n\t\t\t\tentrants = [ args[ 0 ] ];\r\n\t\t\t} else if ( [ 'insertAdjacentElement', 'insertAdjacentHTML' ].includes( apiName ) ) {\r\n\t\t\t\tentrants = [ args[ 1 ] ];\r\n\t\t\t\tif ( [ 'beforebegin', 'afterend' ].includes( args[ 0 ] ) ) {\r\n\t\t\t\t\ttarget = this.parentNode;\r\n\t\t\t\t}\r\n\t\t\t} else if ( [ 'setHTML', 'replaceChildren' ].includes( apiName ) ) {\r\n\t\t\t\texits = [ ...this.childNodes ];\r\n\t\t\t\tentrants = apiName === 'replaceChildren' ? [ ...args ] : [ args[ 0 ] ];\r\n\t\t\t} else if ( [ 'replaceWith', 'remove' ].includes( apiName ) ) {\r\n\t\t\t\texits = [ this ];\r\n\t\t\t\tentrants = apiName === 'replaceWith' ? [ ...args ] : [];\r\n\t\t\t\ttarget = this.parentNode;\r\n\t\t\t} else if ( [ 'replaceChild' ].includes( apiName ) ) {\r\n\t\t\t\texits = [ args[ 1 ] ];\r\n\t\t\t\tentrants = [ args[ 0 ] ];\r\n\t\t\t} else if ( [ 'removeChild' ].includes( apiName ) ) {\r\n\t\t\t\texits = [ ...args ];\r\n\t\t\t} else {\r\n\t\t\t\t// 'before', 'after', 'append', 'prepend', 'appendChild'\r\n\t\t\t\tentrants = [ ...args ];\r\n\t\t\t\tif ( [ 'before', 'after' ].includes( apiName ) ) {\r\n\t\t\t\t\ttarget = this.parentNode;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// --------------\r\n\t\t\t// Parse HTML to entrants\r\n\t\t\tlet apiNameFinal = apiName;\r\n\t\t\tif ( [ 'insertAdjacentHTML', 'setHTML' ].includes( apiName ) ) {\r\n\t\t\t\tlet tempNodeName = this.nodeName;\r\n\t\t\t\tif ( apiName === 'insertAdjacentHTML' && [ 'beforebegin', 'afterend' ].includes( args[ 0 ] ) ) {\r\n\t\t\t\t\t// We can't handle this... and this is going to throw afterall\r\n\t\t\t\t\tif ( !this.parentNode ) return originalApis[ apiName ].call( this, ...args );\r\n\t\t\t\t\ttempNodeName = this.parentNode.nodeName;\r\n\t\t\t\t}\r\n\t\t\t\tconst temp = document.createElement( tempNodeName );\r\n\t\t\t\toriginalApis.setHTML.call( temp, entrants[ 0 ], apiName === 'setHTML' ? args[ 1 ] : {} );\r\n\t\t\t\tentrants = [ ...temp.childNodes ];\r\n\t\t\t\t// -------------- \r\n\t\t\t\tif ( apiName === 'insertAdjacentHTML' ) {\r\n\t\t\t\t\tapiNameFinal = 'insertAdjacentElement';\r\n\t\t\t\t\targs[ 1 ] = new DocumentFragment;\r\n\t\t\t\t\targs[ 1 ].______isTemp = true;\r\n\t\t\t\t\targs[ 1 ].append( ...temp.childNodes );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tapiNameFinal = 'replaceChildren';\r\n\t\t\t\t\targs = [ ...temp.childNodes ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// --------------\r\n\t\t\tconst record = { target, entrants, exits, type: 'interception', event: [ this, apiName ] };\r\n\t\t\treturn intercept( record, () => {\r\n\t\t\t\treturn originalApis[ apiNameFinal ].call( this, ...args );\r\n\t\t\t} );\r\n\t\t}\r\n\t} );\r\n\r\n\t// Intercept DOM mutation properties\r\n\t[ 'outerHTML', 'outerText'/*HTMLElement*/, 'innerHTML', \r\n\t\t'innerText'/*HTMLElement*/,'textContent'/*Node*/, 'nodeValue'/*Node*/\r\n\t].forEach( apiName => {\r\n\t\t// We'll be sure to monkey the correct interface\r\n\t\tconst Interface = [ 'textContent', 'nodeValue' ].includes( apiName ) ? Node : (\r\n\t\t\t[ 'outerText', 'innerText' ].includes( apiName ) ? HTMLElement : Element\r\n\t\t);\r\n\t\toriginalApis[ apiName ] = Object.getOwnPropertyDescriptor( Interface.prototype, apiName );\r\n\t\tObject.defineProperty( Interface.prototype, apiName, { ...originalApis[ apiName ], set: function( value ) {\r\n\t\t\tlet exec = () => originalApis[ apiName ].set.call( this, value );\r\n\t\t\t// Instance of Node interface? Abort!\r\n\t\t\tif ( !( this instanceof Element ) ) return exec();\r\n\t\t\t// --------------\r\n\t\t\t// Obtain exits and entrants\r\n\t\t\tlet exits = [], entrants = [], target = this;\r\n\t\t\tif ( [ 'outerHTML', 'outerText' ].includes( apiName ) ) {\r\n\t\t\t\texits = [ this ];\r\n\t\t\t\ttarget = this.parentNode;\r\n\t\t\t} else {\r\n\t\t\t\t// 'innerHTML', 'innerText', 'textContent', 'nodeValue'\r\n\t\t\t\texits = /*this instanceof HTMLTemplateElement \r\n\t\t\t\t\t? [ ...this.content.childNodes ]\r\n\t\t\t\t\t: */[ ...this.childNodes ];\r\n\t\t\t}\r\n\t\t\t// --------------\r\n\t\t\t// Parse HTML to nodes\r\n\t\t\tif ( [ 'outerHTML', 'innerHTML' ].includes( apiName ) ) {\r\n\t\t\t\tlet tempNodeName = this.nodeName;\r\n\t\t\t\tif ( apiName === 'outerHTML' ) {\r\n\t\t\t\t\t// We can't handle this... and this is going to throw afterall\r\n\t\t\t\t\tif ( !this.parentNode ) return exec();\r\n\t\t\t\t\ttempNodeName = this.parentNode.nodeName;\r\n\t\t\t\t}\r\n\t\t\t\tconst temp = document.createElement( tempNodeName === 'TEMPLATE' ? 'div' : tempNodeName );\r\n\t\t\t\toriginalApis[ apiName ].set.call( temp, value );\r\n\t\t\t\tentrants = /*[ ...temp.childNodes ];*/this instanceof HTMLTemplateElement ? [] : [ ...temp.childNodes ];\r\n\t\t\t\t// -------------- \r\n\t\t\t\tif ( apiName === 'outerHTML' ) {\r\n\t\t\t\t\tvalue = new DocumentFragment;\r\n\t\t\t\t\tvalue.______isTemp = true;\r\n\t\t\t\t\tvalue.append( ...temp.childNodes );\r\n\t\t\t\t\texec = () => originalApis.replaceWith.call( this, value );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ( this instanceof HTMLTemplateElement ) {\r\n\t\t\t\t\t\texec = () => this.content.replaceChildren( ...temp.childNodes );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\texec = () => originalApis.replaceChildren.call( this, ...temp.childNodes );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// -------------- \r\n\t\t\tconst record = { target, entrants, exits, type: 'interception', event: [ this, apiName ] };\r\n\t\t\treturn intercept( record, exec );\r\n\t\t} } );\r\n\t} );\r\n\r\n\t// Intercept document mutation methods\r\n\t[ 'append', 'prepend', 'replaceChildren' ].forEach( apiName => {\r\n\t\t[ document, DocumentFragment.prototype ].forEach( target => {\r\n\t\t\tconst originalApi = target[ apiName ];\r\n\t\t\ttarget[ apiName ] = function( ...args ) {\r\n\t\t\t\tif ( this.______isTemp ) return originalApi.call( this, ...args );\r\n\t\t\t\tconst exits = apiName === 'replaceChildren' ? [ ...this.childNodes ] : [];\r\n\t\t\t\tconst record = {\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tentrants: args,\r\n\t\t\t\t\texits,\r\n\t\t\t\t\ttype: 'interception', \r\n\t\t\t\t\tevent: [ this, apiName ]\r\n\t\t\t\t};\r\n\t\t\t\treturn intercept( record, () => {\r\n\t\t\t\t\treturn originalApi.call( this, ...args );\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} );\r\n\t} );\r\n\r\n\treturn rm;\r\n}\r\n", "\r\n/**\r\n * Applies all supported polyfills\r\n */\r\nexport default function() {\r\n CSS_escape.call( this );\r\n Node_isConnected.call( this );\r\n Element_matches.call( this );\r\n}\r\n\r\n/**\r\n * Polyfills the window.CSS object.\r\n * \r\n * @return void\r\n */\r\nexport function CSS_escape() {\r\n const window = this;\r\n if ( !window.CSS ) { window.CSS = {} }\r\n if ( !window.CSS.escape ) {\r\n /**\r\n * Polyfills the window.CSS.escape() function.\r\n * \r\n * @param string str \r\n * \r\n * @return string\r\n */\r\n window.CSS.escape = str => str.replace( /([\\:@\\~\\$\\&])/g, '\\\\$1' );\r\n }\r\n}\r\n\r\n/**\r\n * Polyfills the Node.prototype.isConnected property\r\n * \r\n * @see MDN\r\n * \r\n * @return bool\r\n*/\r\nexport function Node_isConnected() {\r\n const window = this;\r\n if ( !( 'isConnected' in window.Node.prototype ) ) {\r\n Object.defineProperty( window.Node.prototype, 'isConnected', { get: function() {\r\n return !this.ownerDocument || !(\r\n this.ownerDocument.compareDocumentPosition( this )\r\n & this.DOCUMENT_POSITION_DISCONNECTED);\r\n } } );\r\n }\r\n}\r\n\r\n/**\r\n * Polyfills the Element.prototype.matches() method\r\n * \r\n * @see MDN\r\n * \r\n * @return void\r\n*/\r\nexport function Element_matches() {\r\n const window = this;\r\n if ( !window.Element.prototype.matches ) {\r\n window.Element.prototype.matches = \r\n window.Element.prototype.matchesSelector || \r\n window.Element.prototype.mozMatchesSelector ||\r\n window.Element.prototype.msMatchesSelector || \r\n window.Element.prototype.oMatchesSelector || \r\n window.Element.prototype.webkitMatchesSelector ||\r\n function( s ) {\r\n var matches = ( this.document || this.ownerDocument ).querySelectorAll( s ),\r\n i = matches.length;\r\n while ( --i >= 0 && matches.item( i ) !== this ) {}\r\n return i > -1; \r\n }\r\n }\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport { _isNumeric } from '@webqit/util/js/index.js';\r\nimport { _set, _get, _merge } from '@webqit/util/obj/index.js';\r\nimport _Reflow from './_Reflow.js';\r\nimport DOMRealtime from './realtime/DOMRealtime.js';\r\nimport AttrRealtime from './realtime/AttrRealtime.js';\r\nimport polyfill from './polyfills.js';\r\n\r\nexport default function() {\r\n const window = this;\r\n if ( !window.wq ) window.wq = {};\r\n if ( window.wq.dom ) return window.wq.dom;\r\n window.wq.dom = {};\r\n polyfill.call( window );\r\n // ------\r\n const Reflow = _Reflow( window );\r\n window.wq.dom.Reflow = new Reflow;\r\n // ------\r\n window.wq.dom.DOMRealtime = DOMRealtime;\r\n window.wq.dom.AttrRealtime = AttrRealtime;\r\n window.wq.dom.realtime = ( context, namespace = 'tree' ) => {\r\n if ( namespace === 'tree' ) return new DOMRealtime( context, window );\r\n if ( namespace === 'attr' ) return new AttrRealtime( context, window );\r\n };\r\n // ------\r\n window.wq.dom.ready = ready.bind( window );\r\n window.wq.dom.meta = meta.bind( window );\r\n // ------\r\n return window.wq.dom;\r\n}\r\n\r\n\r\n/**\r\n * DOM-ready listeners.\r\n * \r\n * @param Function\t \t\tcallback\r\n * \r\n * @return void\r\n */\r\nfunction ready( callback ) {\r\n\tconst window = this;\r\n\tif ( window.document.readyState === 'complete' ) {\r\n\t\tcallback( window );\r\n\t} else {\r\n\t\tif ( !window.document.domReadyCallbacks ) {\r\n\t\t\twindow.document.domReadyCallbacks = [];\r\n\t\t\twindow.document.addEventListener( 'DOMContentLoaded', () => {\r\n\t\t\t\twindow.document.domReadyCallbacks.splice( 0 ).forEach( cb => cb( window ) );\r\n\t\t\t}, false );\r\n\t\t}\r\n\t\twindow.document.domReadyCallbacks.push( callback );\r\n\t}\r\n}\r\n\r\n/**\r\n * A wq's meta tag props reader.\r\n * \r\n * @param String name\r\n * @param Bool\t readWrite\r\n * \r\n * @return Object\r\n */\r\nfunction meta( name, readWrite = false ) {\r\n const window = this;\r\n const metaInstance = { content: {} };\r\n // Initialize reader\r\n if ( !(metaInstance.el = window.document.querySelector( `meta[name=\"${ name }\"]` ) ) && readWrite ) {\r\n metaInstance.el = window.document.createElement( 'meta' );\r\n metaInstance.el.setAttribute( 'name', name );\r\n window.document.head.append( metaInstance.el );\r\n }\r\n if ( metaInstance.el ) {\r\n metaInstance.content = ( metaInstance.el.getAttribute( 'content' ) || '' ).split( ';' ).filter( v => v ).reduce( ( _metaVars, directive ) => {\r\n const directiveSplit = directive.split( '=' ).map( d => d.trim() );\r\n _set( _metaVars, directiveSplit[ 0 ].split( '.' ), directiveSplit[ 1 ] === 'true' \r\n ? true : (directiveSplit[ 1 ] === 'false' ? false : (\r\n _isNumeric( directiveSplit[ 1 ] ) ? parseInt( directiveSplit[ 1 ] ) : directiveSplit[ 1 ]\r\n ) )\r\n );\r\n return _metaVars;\r\n }, {} );\r\n }\r\n // Read prop...\r\n metaInstance.get = function( prop ) { return JSON.parse( JSON.stringify( _get( this.content, prop.split( '.' ) ) ) ); }\r\n // Copy...\r\n metaInstance.copy = function() {\r\n\t\treturn JSON.parse( JSON.stringify( this.content ) );\r\n };\r\n\t// Copy with defaults...\r\n metaInstance.copyWithDefaults = function( ...defaults ) {\r\n\t\tif ( defaults.length ) return _merge( true, {}, ...defaults.reverse().concat( this.content ) );\r\n\t\treturn this.copy();\r\n };\r\n return metaInstance;\r\n}", "\r\n/**\r\n * @imports\r\n */\r\nimport SubscriptFunctionLite from '@webqit/subscript/src/SubscriptFunctionLite.js';\r\nimport wqDom from '@webqit/dom';\r\n\r\n/**\r\n * @init\r\n * \r\n * @param Object $params\r\n */\r\nexport default function init( $params = {} ) {\r\n\tconst window = this, dom = wqDom.call( window );\r\n // -------\r\n const params = dom.meta( 'oohtml' ).copyWithDefaults( $params, {\r\n retention: 'retain',\r\n mimeType: '',\r\n } );\r\n\tparams.scriptSelector = ( Array.isArray( params.mimeType ) ? params.mimeType : [ params.mimeType ] ).reduce( ( selector, mm ) => {\r\n const qualifier = mm ? `[type=${ window.CSS.escape( mm ) }]` : '';\r\n return selector.concat( `script${ qualifier }[scoped],script${ qualifier }[contract]` );\r\n }, [] ).join( ',' );\r\n // -------\r\n realtime.call( this, params );\r\n}\r\n\r\n/**\r\n * Performs realtime capture of elements and builds their relationships.\r\n *\r\n * @param Object params\r\n *\r\n * @return Void\r\n */\r\nfunction realtime( params ) {\r\n\tconst window = this, { dom } = window.wq;\r\n // ---\r\n window.wq.transformCache = new Map;\r\n window.wq.compileCache = [ new Map, new Map, ];\r\n // ---\r\n const handled = () => {};\r\n\tdom.realtime( window.document ).observe( params.scriptSelector, record => {\r\n record.entrants.forEach( script => {\r\n if ( 'contract' in script ) return handled( script );\r\n Object.defineProperty( script, 'contract', { value: script.hasAttribute( 'contract' ) } ); \r\n if ( 'scoped' in script ) return handled( script );\r\n Object.defineProperty( script, 'scoped', { value: script.hasAttribute( 'scoped' ) } ); \r\n // ---\r\n const thisContext = script.scoped ? record.target : ( script.type === 'module' ? undefined : window );\r\n compile.call( this, script, thisContext, params );\r\n } );\r\n\t}, { subtree: true, timing: 'intercept', generation: 'entrants' } );\r\n // ---\r\n window.wq.exec = ( execHash ) => {\r\n const exec = fromHash( execHash );\r\n if ( !exec ) throw new Error( `Argument must be a valid exec hash.` );\r\n const { script, compiledScript, thisContext } = exec;\r\n if ( thisContext instanceof window.Element && script.scoped ) {\r\n if ( !thisContext.scripts ) { Object.defineProperty( thisContext, 'scripts', { value: new Set } ); }\r\n thisContext.scripts.add( script );\r\n }\r\n switch ( params.retention ) {\r\n case 'dispose':\r\n script.remove();\r\n break;\r\n case 'hidden':\r\n script.textContent = `\"hidden\"`;\r\n break;\r\n default:\r\n script.textContent = compiledScript.function.originalSource;\r\n }\r\n return execute.call( this, compiledScript, thisContext, script );\r\n };\r\n}\r\n\r\n// ------------------\r\n// Script runner\r\nexport function execute( compiledScript, thisContext, script ) {\r\n if ( !compiledScript.function ) throw new Error( `Input script must already be compiled!` );\r\n // Execute...\r\n const returnValue = compiledScript.function.call( thisContext );\r\n if ( compiledScript.contract ) {\r\n Object.defineProperty( script, 'rerender', { value: ( ...args ) => _await( returnValue, ( [ , rerender ] ) => rerender( ...args ) ) } );\r\n }\r\n // Observe,,,\r\n const window = this, { dom } = window.wq;\r\n if ( !( thisContext instanceof window.EventTarget ) ) return returnValue;\r\n let changeHandler;\r\n if ( script.contract ) {\r\n changeHandler = e => { script.rerender( ( e.detail || { paths: [] } ).paths ); };\r\n thisContext.addEventListener( 'namespacechange', changeHandler );\r\n thisContext.addEventListener( 'statechange', changeHandler );\r\n }\r\n dom.realtime( window.document ).observe( thisContext, () => {\r\n if ( script.contract ) {\r\n thisContext.removeEventListener( 'namespacechange', changeHandler );\r\n thisContext.removeEventListener( 'statechange', changeHandler );\r\n }\r\n thisContext.dispatchEvent( new window.CustomEvent( 'remove' ) );\r\n thisContext.scripts.delete( script );\r\n }, { subtree: true, timing: 'sync', generation: 'exits' } );\r\n return script;\r\n}\r\n\r\n// ------------------\r\n// JAVASCRIPT::[SCOPED|CONTRACT]\r\nexport function compile( script, thisContext, params = {} ) {\r\n const wq = this.wq, cache = wq.compileCache[ script.contract ? 0 : 1 ];\r\n const sourceHash = toHash( script.textContent );\r\n // Script instances are parsed only once\r\n let source = script.textContent, compiledScript;\r\n if ( !( compiledScript = cache.get( sourceHash ) ) ) {\r\n // Are there \"import\" (and \"await\") statements? Then, we need to rewrite that\r\n let imports = [], meta = {};\r\n let targetKeywords = [];\r\n if ( script.type === 'module' ) targetKeywords.push( 'import ' );\r\n if ( script.type === 'module' && !script.contract ) targetKeywords.push( 'await ' );\r\n if ( targetKeywords.length && ( new RegExp( targetKeywords.join( '|' ) ) ).test( source ) ) {\r\n [ imports, source, meta ] = parse( source );\r\n if ( imports.length ) {\r\n source = `\\n\\t${ rewriteImportStmts( imports ).join( `\\n\\t` ) }\\n\\t${ source }\\n`;\r\n }\r\n }\r\n // Let's obtain a material functions\r\n let _Function;\r\n if ( script.contract ) {\r\n const parserParams = {\r\n ...( params.parserParams || {} ),\r\n allowReturnOutsideFunction: false,\r\n allowAwaitOutsideFunction: script.type === 'module',\r\n allowSuperOutsideMethod: false,\r\n }\r\n const runtimeParams = {\r\n ...( params.runtimeParams || {} ),\r\n async: script.type === 'module',\r\n apiVersion: 2,\r\n };\r\n _Function = SubscriptFunctionLite( source, { ...params, parserParams, runtimeParams, } );\r\n } else {\r\n const isAsync = script.type === 'module'//meta.topLevelAwait || imports.length;\r\n const _FunctionConstructor = isAsync ? Object.getPrototypeOf( async function() {} ).constructor : Function;\r\n _Function = params.runtimeParams?.compileFunction \r\n ? params.runtimeParams.compileFunction( source )\r\n : new _FunctionConstructor( source );\r\n Object.defineProperty( _Function, 'originalSource', { configurable: true, value: script.textContent } );\r\n }\r\n // Save material function to compile cache\r\n compiledScript = Object.defineProperty( script.cloneNode(), 'function', { value: _Function } );\r\n script.scoped && Object.defineProperty( compiledScript, 'scoped', Object.getOwnPropertyDescriptor( script, 'scoped') );\r\n script.contract && Object.defineProperty( compiledScript, 'contract', Object.getOwnPropertyDescriptor( script, 'contract') );\r\n cache.set( sourceHash, compiledScript );\r\n }\r\n const execHash = toHash( { script, compiledScript, thisContext } );\r\n script.textContent = `wq.exec('${ execHash }');`;\r\n}\r\n\r\n// ------------------\r\n// Match import statements\r\n// and detect top-level await\r\nexport function parse( source ) {\r\n const [ tokens, meta ] = tokenize( source, ( $tokens, event, char, meta, i, isLastChar ) => {\r\n \r\n if ( event === 'start-enclosure' && char === '{' && !meta.openAsync?.type && meta.openEnclosures.length === meta.openAsync?.scopeId ) {\r\n meta.openAsync.type = 'block';\r\n } else if ( event === 'end-enclosure' && char === '}' && meta.openAsync?.type === 'block' && meta.openEnclosures.length === meta.openAsync.scopeId ) {\r\n meta.openAsync = null;\r\n } else if ( event === 'start-quote' && !meta.openEnclosures.length && [ 'starting', 'from' ].includes( meta.openImport ) ) {\r\n meta.openImport = 'url';\r\n } else if ( event === 'end-quote' && meta.openImport === 'url' ) {\r\n meta.openImport = 'closing';\r\n } else if ( event === 'char' ) {\r\n\r\n if ( meta.openImport === 'closing' && (\r\n char === ';'/* explicit */ || ![ ' ', `\\n` ].includes( char )/* implicit */ || isLastChar\r\n ) ) {\r\n if ( char === ';' || isLastChar ) {\r\n $tokens[ 0 ] += char;\r\n $tokens.unshift( '' );\r\n } else { $tokens.unshift( char ); }\r\n meta.openImport = null;\r\n return false;\r\n }\r\n\r\n let remainder = source.substring( i - 1 );\r\n\r\n if ( !meta.openImport && /^[\\W]?import[ ]*[^\\(]/.test( remainder ) ) {\r\n meta.openImport = 'starting';\r\n $tokens.unshift( '' );\r\n return 6;\r\n }\r\n if ( meta.openImport === 'starting' && /^[\\W]?from /.test( remainder ) ) {\r\n meta.openImport = 'from';\r\n return 4;\r\n }\r\n if ( !meta.openAsync ) {\r\n if ( /^[\\W]?async /.test( remainder ) ) {\r\n meta.openAsync = { scopeId: meta.openEnclosures.length };\r\n return 5;\r\n }\r\n if ( /^[\\W]?await /.test( remainder ) ) {\r\n meta.topLevelAwait = true;\r\n return 5;\r\n }\r\n }\r\n if ( meta.openAsync ) {\r\n if ( !meta.openAsync.type && /.?\\=\\>[ ]*?\\{/.test( remainder ) ) {\r\n meta.openAsync.type = 'inline-arrow';\r\n } else if ( meta.openAsync.type === 'inline-arrow' && [ `\\n`, ';' ].includes( char ) && meta.openEnclosures.length === meta.openAsync.scopeId ) {\r\n meta.openAsync = null;\r\n }\r\n }\r\n\r\n }\r\n\r\n } );\r\n // Hoist all import statements\r\n let imports = [], body = '', _str;\r\n for ( const str of tokens.reverse() ) {\r\n if ( ( _str = str.trim() ).startsWith( 'import ' ) ) {\r\n imports.push( str );\r\n } else if ( _str ) { body += str; }\r\n }\r\n\r\n return [ imports, body, meta ];\r\n}\r\n\r\n// ------------------\r\n// Rewrite import statements\r\nexport function rewriteImportStmts( imports ) {\r\n const importSpecs = [], importPromises = [];\r\n imports.forEach( ( $import, i ) => {\r\n $import = parseImportStmt( $import );\r\n // Identify whole imports and individual imports\r\n const [ wholeImport, individualImports ] = $import.items.reduce( ( [ whole, parts ], item ) => {\r\n return item.id === '*' ? [ item.alias, parts ] : [ whole, parts.concat( item ) ];\r\n }, [ null, [] ] );\r\n if ( wholeImport ) {\r\n // const main = await import(\"url\");\r\n importSpecs.push( `const ${ wholeImport } = __$imports$__[${ i }];` );\r\n }\r\n if ( individualImports.length ) {\r\n // const { aa: bb, cc } = await import(\"url\");\r\n const individualImportsSpec = individualImports.map( item => `${ item.id }${ item.id !== item.alias ? `: ${ item.alias }` : '' }` ).join( ', ' );\r\n importSpecs.push( `const { ${ individualImportsSpec } } = __$imports$__[${ i }];` );\r\n }\r\n importPromises.push( `import(\"${ $import.url }\")` );\r\n } );\r\n return [\r\n `\\n\\tconst __$imports$__ = await Promise.all([\\n\\t\\t${ importPromises.join( `,\\n\\t\\t` ) }\\n\\t]);`,\r\n importSpecs.join( `\\n\\t` ),\r\n ];\r\n}\r\n\r\n// ------------------\r\n// Parse import statements\r\nexport function parseImportStmt( str ) {\r\n const getUrl = str => {\r\n let quo = /^[`'\"]/.exec( str );\r\n return quo && str.substring( 1, str.lastIndexOf( quo[ 0 ] ) );\r\n }\r\n let $import = { items: [ { id: '' } ] }, _str = str.replace( 'import', '' ).trim();\r\n if ( !( $import.url = getUrl( _str ) ) ) {\r\n tokenize( _str, ( $tokens, event, char, meta, i, isLastChar ) => {\r\n if ( [ 'start-quote', 'ongoing-quote', 'end-quote', 'char' ].includes( event ) ) {\r\n if ( $import.url ) return;\r\n if ( !meta.openQuote ) {\r\n let remainder = _str.substring( i );\r\n if ( char === ',' ) {\r\n $import.items.unshift( { id: '' } );\r\n return;\r\n }\r\n if ( remainder.startsWith( ' as ' ) ) {\r\n $import.items[ 0 ].alias = '';\r\n return 3;\r\n }\r\n if ( remainder.startsWith( ' from ' ) ) {\r\n $import.url = getUrl( remainder.replace( 'from', '' ).trim() );\r\n return remainder.length;\r\n }\r\n }\r\n if ( 'alias' in $import.items[ 0 ] ) {\r\n $import.items[ 0 ].alias += char;\r\n } else {\r\n $import.items[ 0 ].id += char;\r\n if ( meta.openEnclosures.length ) {\r\n $import.items[ 0 ].enclosed = true;\r\n }\r\n }\r\n }\r\n } );\r\n }\r\n $import.items = $import.items\r\n .map( item => ( {\r\n id: item.id && !item.alias && !item.enclosed ? 'default' : item.id.trim(),\r\n alias: item.alias ? item.alias.trim() : item.id.trim(),\r\n } ) )\r\n .filter( item => item.id )\r\n .reverse();\r\n return $import;\r\n}\r\n\r\n// ------------------\r\n// Token JavaScript source\r\nexport function tokenize( source, _callback ) {\r\n const lastI = source.length - 1;\r\n return [ ...source ].reduce( ( [ $tokens, meta, skip ], char, i ) => {\r\n \r\n if ( skip ) {\r\n $tokens[ 0 ] += char;\r\n return [ $tokens, meta, --skip ];\r\n }\r\n let callbackReturn;\r\n\r\n if ( meta.openQuote || meta.openComment ) {\r\n if ( char === meta.openQuote ) {\r\n meta.openQuote = null;\r\n callbackReturn = _callback( $tokens, 'end-quote', char, meta, i, i === lastI );\r\n } else if ( meta.openQuote ) {\r\n callbackReturn = _callback( $tokens, 'ongoing-quote', char, meta, i, i === lastI );\r\n } else if ( meta.openComment ) {\r\n if ( ( meta.openComment === '//' && char === `\\n` ) || ( meta.openComment === '/*' && $tokens[ 0 ].substr( -1 ) === '*' && char === '/' ) ) {\r\n meta.openComment = null;\r\n callbackReturn = _callback( $tokens, 'end-comment', char, meta, i, i === lastI );\r\n }\r\n }\r\n if ( callbackReturn !== false ) {\r\n $tokens[ 0 ] += char;\r\n }\r\n return [ $tokens, meta, typeof callbackReturn === 'number' ? callbackReturn : skip ];\r\n }\r\n\r\n let enclosure;\r\n if ( enclosure = [ '()', '{}', '[]' ].filter( pair => char === pair[ 0 ] )[ 0 ] ) {\r\n callbackReturn = _callback( $tokens, 'start-enclosure', char, meta, i, i === lastI );\r\n meta.openEnclosures.unshift( enclosure );\r\n } else if ( meta.openEnclosures.length && char === meta.openEnclosures[ 0 ][ 1 ] ) {\r\n meta.openEnclosures.shift();\r\n callbackReturn = _callback( $tokens, 'end-enclosure', char, meta, i, i === lastI );\r\n } else if ( [ '\"', \"'\", \"`\" ].includes( char ) ) {\r\n callbackReturn = _callback( $tokens, 'start-quote', char, meta, i, i === lastI );\r\n meta.openQuote = char;\r\n } else if ( !meta.openComment && [ '/*', '//' ].includes( source.substr( i, 2 ) ) ) {\r\n callbackReturn = _callback( $tokens, 'start-comment', char, meta, i, i === lastI );\r\n meta.openComment = source.substr( i, 2 );\r\n } else {\r\n callbackReturn = _callback( $tokens, 'char', char, meta, i, i === lastI );\r\n }\r\n\r\n if ( callbackReturn !== false ) {\r\n $tokens[ 0 ] += char;\r\n }\r\n return [ $tokens, meta, typeof callbackReturn === 'number' ? callbackReturn : skip ];\r\n\r\n }, [ [ '' ], { openEnclosures: [], }, 0 ] );\r\n}\r\n\r\n// ------------------\r\n// Unique ID generator\r\nconst hashTable = new Map;\r\nconst uniqId = () => (0|Math.random()*9e6).toString(36);\r\nconst _await = ( value, callback ) => value instanceof Promise ? value.then( callback ) : callback( value );\r\n\r\n// ------------------\r\n// Hash of anything generator\r\nexport function toHash( val ) {\r\n let hash;\r\n if ( !( hash = hashTable.get( val ) ) ) {\r\n hash = uniqId();\r\n hashTable.set( val, hash );\r\n }\r\n return hash;\r\n}\r\n\r\n// ------------------\r\n// Value of any hash\r\nexport function fromHash( hash ) {\r\n let val;\r\n hashTable.forEach( ( _hash, _val ) => {\r\n if ( _hash === hash ) val = _val;\r\n } );\r\n return val;\r\n}\r\n", "\r\n/**\r\n * @imports\r\n */\r\nimport init from './index.js';\r\n\r\n/**\r\n * @init\r\n */\r\ninit.call( window );"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|