From f5b22582e75c861b516d41b9c548b67251520f2d Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Mon, 4 Aug 2025 17:06:40 -0400 Subject: [PATCH] misc fixes (still broken import) --- deno.json | 11 ++++++----- dist/bundle_entry.js | 2 +- dist/hmr-NY37ZYM7.js | 1 - dist/hmr-WDOBNTDQ.js | 1 + dist/index.html | 9 --------- index.html | 11 +++++++++++ scripts/assemble_files.ts | 6 ++++-- scripts/dev_server.ts | 2 -- scripts/scaffold.ts | 4 +++- src/hmr.js | 4 ++-- 10 files changed, 28 insertions(+), 23 deletions(-) delete mode 100644 dist/hmr-NY37ZYM7.js create mode 100644 dist/hmr-WDOBNTDQ.js delete mode 100644 dist/index.html create mode 100644 index.html diff --git a/deno.json b/deno.json index 4512197..8bc844b 100644 --- a/deno.json +++ b/deno.json @@ -3,16 +3,17 @@ { "checkJs": true, "lib": ["deno.window", "DOM"], - "types": ["./dist/core.d.ts"] + "types": ["GALE@HOST/dist/core.d.ts"] }, "tasks": { - "work": "deno run -Ar ./scripts/dev_server.ts", - "scan": "deno run -Ar ./scripts/refresh_types.ts", - "html": "deno run -Ar ./scripts/scaffold.ts --html" + "work": "deno run -Ar GALE@HOST/scripts/dev_server.ts", + "scan": "deno run -Ar GALE@HOST/scripts/refresh_types.ts", + "html": "deno run -Ar GALE@HOST/scripts/scaffold.ts --html" }, "imports": { - "entry":"./app.js" + "GALE@HOST/":"./", + "GALE@ENTRY":"./app.js" } } \ No newline at end of file diff --git a/dist/bundle_entry.js b/dist/bundle_entry.js index f88e866..abdac60 100644 --- a/dist/bundle_entry.js +++ b/dist/bundle_entry.js @@ -1,3 +1,3 @@ var pe=Object.defineProperty;var _e=(e,t)=>{for(var r in t)pe(e,r,{get:t[r],enumerable:!0})};var p=Object.getPrototypeOf,A,M,S,b,Q={isConnected:1},me=1e3,O,we={},Se=p(Q),U=p(p),_,Z=(e,t,r,l)=>(e??(setTimeout(r,l),new Set)).add(t),q=(e,t,r)=>{let l=S;S=t;try{return e(r)}catch(n){return console.error(n),r}finally{S=l}},D=e=>e.filter(t=>t._dom?.isConnected),Y=e=>O=Z(O,e,()=>{for(let t of O)t._bindings=D(t._bindings),t._listeners=D(t._listeners);O=_},me),$={get val(){return S?._getters?.add(this),this.rawVal},get oldVal(){return S?._getters?.add(this),this._oldVal},set val(e){S?._setters?.add(this),e!==this.rawVal&&(this.rawVal=e,this._bindings.length+this._listeners.length?(M?.add(this),A=Z(A,this,ve)):this._oldVal=e)}},j=e=>({__proto__:$,rawVal:e,_oldVal:e,_bindings:[],_listeners:[]}),V=(e,t)=>{let r={_getters:new Set,_setters:new Set},l={f:e},n=b;b=[];let a=q(e,r,t);a=(a??document).nodeType?a:new Text(a);for(let o of r._getters)r._setters.has(o)||(Y(o),o._bindings.push(l));for(let o of b)o._dom=a;return b=n,l._dom=a},k=(e,t=j(),r)=>{let l={_getters:new Set,_setters:new Set},n={f:e,s:t};n._dom=r??b?.push(n)??Q,t.val=q(e,l,t.rawVal);for(let a of l._getters)l._setters.has(a)||(Y(a),a._listeners.push(n));return t},ee=(e,...t)=>{for(let r of t.flat(1/0)){let l=p(r??0),n=l===$?V(()=>r.val):l===U?V(r):r;n!=_&&e.append(n)}return e},te=(e,t,...r)=>{let[{is:l,...n},...a]=p(r[0]??0)===Se?r:[{},...r],o=e?document.createElementNS(e,t,{is:l}):document.createElement(t,{is:l});for(let[d,h]of Object.entries(n)){let y=u=>u?Object.getOwnPropertyDescriptor(u,d)??y(p(u)):_,T=t+","+d,c=we[T]??=y(p(o))?.set??0,i=d.startsWith("on")?(u,g)=>{let f=d.slice(2);o.removeEventListener(f,g),o.addEventListener(f,u)}:c?c.bind(o):o.setAttribute.bind(o,d),s=p(h??0);d.startsWith("on")||s===U&&(h=k(h),s=$),s===$?V(()=>(i(h.val,h._oldVal),o)):i(h)}return ee(o,a)},z=e=>({get:(t,r)=>te.bind(_,e,r)}),re=(e,t)=>t?t!==e&&e.replaceWith(t):e.remove(),ve=()=>{let e=0,t=[...A].filter(l=>l.rawVal!==l._oldVal);do{M=new Set;for(let l of new Set(t.flatMap(n=>n._listeners=D(n._listeners))))k(l.f,l.s,l._dom),l._dom=_}while(++e<100&&(t=[...M]).length);let r=[...A].filter(l=>l.rawVal!==l._oldVal);A=_;for(let l of new Set(r.flatMap(n=>n._bindings=D(n._bindings))))re(l._dom,V(l.f,l._dom)),l._dom=_;for(let l of r)l._oldVal=l.rawVal},x={tags:new Proxy(e=>new Proxy(te,z(e)),z()),hydrate:(e,t)=>re(e,V(t,e)),add:ee,state:j,derive:k};var H={};_e(H,{calc:()=>De,compact:()=>B,list:()=>Fe,noreactive:()=>xe,raw:()=>ce,reactive:()=>E,replace:()=>ge,stateFields:()=>Ke});var{fromEntries:ne,entries:P,keys:L,hasOwn:X,getPrototypeOf:I,create:be,assign:Ae}=Object,{get:oe,set:le,deleteProperty:Ve,ownKeys:Ce}=Reflect,{state:N,derive:Pe,add:Te}=x,K,Oe=1e3,J,W,w=Symbol(),ae=Symbol(),G=Symbol(),m=Symbol(),C=Symbol(),ie=Symbol(),De=e=>(e[ae]=1,e),v=e=>e instanceof Object&&!(e instanceof Function)&&!e[ie],se=e=>{if(e?.[ae]){let t=N();return Pe(()=>{let r=e();v(t.rawVal)&&v(r)?ge(t.rawVal,r):t.val=E(r)}),t}else return N(E(e))},$e=e=>{let t=Array.isArray(e)?[]:{__proto__:I(e)};for(let[r,l]of P(e))t[r]=se(l);return t[G]=[],t[m]=N(1),t},de={get:(e,t,r)=>t===w?e:X(e,t)?Array.isArray(e)&&t==="length"?(e[m].val,e.length):e[t].val:oe(e,t,r),set:(e,t,r,l)=>X(e,t)?Array.isArray(e)&&t==="length"?(r!==e.length&&++e[m].val,e.length=r,1):(e[t].val=E(r),1):t in e?le(e,t,r,l):le(e,t,se(r))&&(++e[m].val,F(e).forEach(fe.bind(J,l,t,e[t],W)),1),deleteProperty:(e,t)=>(Ve(e,t)&&Ee(e,t),++e[m].val),ownKeys:e=>(e[m].val,Ce(e))},E=e=>!v(e)||e[w]?e:new Proxy($e(e),de),xe=e=>(e[ie]=1,e),Ke=e=>e[w],Ne=I(N()),Ge=e=>new Proxy(e,{get:(t,r,l)=>I(t[r]??0)===Ne?{val:ce(t[r].rawVal)}:oe(t,r,l)}),ce=e=>e?.[w]?new Proxy(Ge(e[w]),de):e,F=e=>e[G]=e[G].filter(t=>t._containerDom.isConnected),fe=(e,t,r,l,{_containerDom:n,f:a})=>{let o=Array.isArray(e),d=o?Number(t):t;Te(n,()=>n[C][t]=a(r,()=>delete e[t],d)),o&&!l&&d!==e.length-1&&n.insertBefore(n.lastChild,n[C][L(e).find(h=>Number(h)>d)])},Ee=(e,t)=>{for(let r of F(e)){let l=r._containerDom[C];l[t]?.remove(),delete l[t]}},Ie=e=>(K??(K=(setTimeout(()=>(K.forEach(F),K=J),Oe),new Set))).add(e),Fe=(e,t,r)=>{let l={_containerDom:e instanceof Function?e():e,f:r},n=t[w];l._containerDom[C]={},n[G].push(l),Ie(n);for(let[a,o]of P(n))fe(t,a,o,1,l);return l._containerDom},he=(e,t)=>{for(let[n,a]of P(t)){let o=e[n];v(o)&&v(a)?he(o,a):e[n]=a}for(let n in e)X(t,n)||delete e[n];let r=L(t),l=Array.isArray(e);if(l||L(e).some((n,a)=>n!==r[a])){let n=e[w];if(l)e.length=t.length;else{++n[m].val;let a={...n};for(let o of r)delete n[o];for(let o of r)n[o]=a[o]}for(let{_containerDom:a}of F(n)){let{firstChild:o,[C]:d}=a;for(let h of r)o===d[h]?o=o.nextSibling:a.insertBefore(d[h],o)}}return e},ge=(e,t)=>{W=1;try{return he(e,t instanceof Function?Array.isArray(e)?t(e.filter(r=>1)):ne(t(P(e))):t)}finally{W=J}},B=e=>Array.isArray(e)?e.filter(t=>1).map(B):v(e)?Ae(be(I(e)),ne(P(e).map(([t,r])=>[t,B(r)]))):e;var ye=(e,t="")=>{let r="@",l=":",n=".",a="^",o=(c,i,s)=>{let u=Object.keys(i).map(g=>{let f=i[g];switch(g[0]){case r:return o(`@media(max-width:${g.substring(r.length)})`,f,s);case l:return o(`&${g}`,f,s);case n:return o(`${g}${s}`,f,s);case a:return o(`&:hover .${g.substring(a.length)}${s}`,f,s)}return`${g.replace(/([a-z])([A-Z])/g,"$1-$2")}: ${f};`});return`${c}{${u.join(` `)}}`},d=(c,i)=>{let s=i.lastIndexOf(c)+c.length;return s?i.substring(s):i},h=c=>{let i=van.tags[c],s=[],u=new Proxy((...g)=>{let f=i(...g);return f.className=s.join(y+" ")+y+" "+f.className,s=[],f},{get(g,f){return s.push(f.substring(f.lastIndexOf(".")+1)),u}});return u},y=t?"_"+t:"",T=Object.keys(e).map(c=>o("."+c+y,e[c],y)).join(` -`);return globalThis.document?.head.insertAdjacentHTML("beforeend",``),{Tag(...c){return c.map(i=>d(a,d(n,i))).join(y+" ")+y},CSS:T,DOM:new Proxy({},{get(c,i){return h(i)}}),Div:new Proxy({},{get(c,i){return h("div")[i]}})}};globalThis.van=x;globalThis.vanX=H;globalThis.Gale=ye;var R=new URL(import.meta.url).searchParams;vanX.Store=(e,t)=>{let r=localStorage.getItem(t),l=vanX.reactive(r?JSON.parse(r):e);return van.derive(()=>localStorage.setItem(t,JSON.stringify(vanX.compact(l)))),l};R.has("hmr")&&await import("./hmr-NY37ZYM7.js");var ue=R.get("root")||"/";fetch(ue+"deno.json").then(e=>e.json()).then(e=>{let t=(l,n)=>{let a=document.createElement("script");return a.type=l,a.textContent=n,document.head.appendChild(a),a},r=e.imports;for(let l in r){let n=r[l];n.startsWith("./")&&(r[l]=ue+n.substring(2))}R.has("map")&&t("importmap",JSON.stringify({imports:r})),t("module").src=r.entry}); +`);return globalThis.document?.head.insertAdjacentHTML("beforeend",``),{Tag(...c){return c.map(i=>d(a,d(n,i))).join(y+" ")+y},CSS:T,DOM:new Proxy({},{get(c,i){return h(i)}}),Div:new Proxy({},{get(c,i){return h("div")[i]}})}};globalThis.van=x;globalThis.vanX=H;globalThis.Gale=ye;var R=new URL(import.meta.url).searchParams;vanX.Store=(e,t)=>{let r=localStorage.getItem(t),l=vanX.reactive(r?JSON.parse(r):e);return van.derive(()=>localStorage.setItem(t,JSON.stringify(vanX.compact(l)))),l};R.has("hmr")&&await import("./hmr-WDOBNTDQ.js");var ue=R.get("root")||"/";fetch(ue+"deno.json").then(e=>e.json()).then(e=>{let t=(l,n)=>{let a=document.createElement("script");return a.type=l,a.textContent=n,document.head.appendChild(a),a},r=e.imports;for(let l in r){let n=r[l];n.startsWith("./")&&(r[l]=ue+n.substring(2))}R.has("map")&&t("importmap",JSON.stringify({imports:r})),t("module").src=r.entry}); diff --git a/dist/hmr-NY37ZYM7.js b/dist/hmr-NY37ZYM7.js deleted file mode 100644 index 972dda6..0000000 --- a/dist/hmr-NY37ZYM7.js +++ /dev/null @@ -1 +0,0 @@ -var g=0,c={};function d(){for(let e in c)sessionStorage.setItem(e,c[e]);c={},g=0}function f(e,t){c[e]=t,g||(g=setTimeout(d,500)),console.log("SAVE",e,t)}function m(e){let t=sessionStorage.getItem(e);return console.log("LOAD",e,t),t}var S,u=0;function v(e){u=0,S=e}function h(){return S?S+"_"+u+++"_":""}var I=globalThis.van.state;globalThis.van.state=(e,t="")=>{let n=typeof e,o=l=>l,a=l=>l?.toString()||null;switch(n){case"boolean":o=l=>l==="true";break;case"number":o=parseFloat;break;case"object":o=JSON.parse,a=JSON.stringify;break}let r="HMR_"+h()+t,s=m(r),i=I(s?o(s):e);return van.derive(()=>f(r,a(i.val))),i};var w=globalThis.vanX.reactive;globalThis.vanX.reactive=(e,t)=>{v(t);let n=w(e);return v(),n};new WebSocket("ws://"+window.location.host+"/ws").addEventListener("message",e=>e.data==="reload"&&window.location.reload());vanX.Store=(e,t)=>{let n=JSON.stringify(e),o=localStorage.getItem(t+"check");localStorage.setItem(t+"check",n);let a;if(n==o){let s=localStorage.getItem(t);try{a=JSON.parse(s)||e}catch{a=e}}else a=e;let r=vanX.reactive(a);return van.derive(()=>localStorage.setItem(t,JSON.stringify(vanX.compact(r)))),r}; diff --git a/dist/hmr-WDOBNTDQ.js b/dist/hmr-WDOBNTDQ.js new file mode 100644 index 0000000..26bf935 --- /dev/null +++ b/dist/hmr-WDOBNTDQ.js @@ -0,0 +1 @@ +var g=0,c={};function d(){for(let e in c)sessionStorage.setItem(e,c[e]);c={},g=0}function f(e,t){c[e]=t,g||(g=setTimeout(d,500)),console.log("SAVE",e,t)}function h(e){let t=sessionStorage.getItem(e);return console.log("LOAD",e,t),t}var S,u=0;function v(e){u=0,S=e}function m(){return S?S+"_"+u+++"_":""}var I=globalThis.van.state;globalThis.van.state=(e,t="")=>{let n=typeof e,o=r=>r,a=r=>r?.toString()||null;switch(n){case"boolean":o=r=>r==="true";break;case"number":o=parseFloat;break;case"object":o=JSON.parse,a=JSON.stringify;break}let l="HMR_"+m()+t,s=h(l),i=I(s?o(s):e);return van.derive(()=>f(l,a(i.val))),i};var T=globalThis.vanX.reactive;globalThis.vanX={...globalThis.VanX,reactive:(e,t)=>{v(t);let n=T(e);return v(),n}};new WebSocket("ws://"+window.location.host+"/ws").addEventListener("message",e=>e.data==="reload"&&window.location.reload());vanX.Store=(e,t)=>{let n=JSON.stringify(e),o=localStorage.getItem(t+"check");localStorage.setItem(t+"check",n);let a;if(n==o){let s=localStorage.getItem(t);try{a=JSON.parse(s)||e}catch{a=e}}else a=e;let l=vanX.reactive(a);return van.derive(()=>localStorage.setItem(t,JSON.stringify(vanX.compact(l)))),l}; diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index 79473eb..0000000 --- a/dist/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..0dc0181 --- /dev/null +++ b/index.html @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/scripts/assemble_files.ts b/scripts/assemble_files.ts index 9cade63..c8ddfc5 100644 --- a/scripts/assemble_files.ts +++ b/scripts/assemble_files.ts @@ -1,5 +1,7 @@ -const index = await fetch(import.meta.resolve("../dist/index.html")).then(r=>r.text()); -export const HTML = index.replace(``, ``); export const Root = import.meta.resolve("../"); +const bundle = await fetch(Root + "dist/core.js").then(r=>r.text()); +const index = await fetch(Root + "index.html").then(r=>r.text()); +export const HTML = index.replace(``, ``); + export const Load =async(file:string)=> await fetch(Root + file).then(resp=>resp.text()); export const Save =async(text:string, name:string)=> await Deno.writeTextFile(name, text); \ No newline at end of file diff --git a/scripts/dev_server.ts b/scripts/dev_server.ts index b862041..ad64c42 100644 --- a/scripts/dev_server.ts +++ b/scripts/dev_server.ts @@ -4,7 +4,6 @@ import {HTML} from "./assemble_files.ts"; // Parse the port from the command-line arguments, defaulting to 8000 const port = parseInt(Deno.args[0] || "8000", 10); const sockets: WebSocket[] = []; -//const devinc = await fetch(import.meta.resolve("../src/dev.js")).then(r=>r.text()); let html: string; try { @@ -12,7 +11,6 @@ try { } catch (_) { html = HTML; } -//html = html.replace("", ``); function extension(path: string): string { // Remove trailing slash if it exists diff --git a/scripts/scaffold.ts b/scripts/scaffold.ts index b8ee2d8..d56f9cf 100644 --- a/scripts/scaffold.ts +++ b/scripts/scaffold.ts @@ -9,6 +9,8 @@ if(args.html) else { const config = await Load("deno.json"); - Save(config.replaceAll("./scripts/", Root+"scripts/").replaceAll("./dist/", Root+"dist/"), "deno.json"); + const json = JSON.parse(config); + json.imports["GALE@HOST/"] = Root; + Save(JSON.stringify(json, null, "\t"), "deno.json"); Save(await Load("app.js"), "app.js"); } diff --git a/src/hmr.js b/src/hmr.js index 2402368..844fd1d 100644 --- a/src/hmr.js +++ b/src/hmr.js @@ -78,13 +78,13 @@ globalThis.van.state =(value, key="")=> //bind VanX const originalReactive = globalThis.vanX.reactive; -globalThis.vanX.reactive =(obj, id)=> +globalThis.vanX = {...globalThis.VanX, reactive:(obj, id)=> { StartID(id); const state = originalReactive(obj); StartID(); return state; -} +}}; // added in devmode to index.html new WebSocket('ws://'+window.location.host+'/ws').addEventListener('message',e=>e.data==='reload'&&window.location.reload());