vaderjs 1.3.4 → 1.3.6
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/package.json +1 -1
- package/vader-min.js +1 -1
- package/vader.js +77 -51
- package/worker-min.js +9 -1
- package/worker.js +1 -2
- package/create-vader-app/example_proj/dist/vaderjs/index.js +0 -5
- package/create-vader-app/example_proj/dist/vaderjs/vader-min.js +0 -1115
- package/create-vader-app/example_proj/dist/vaderjs/vaderRouter-min.js +0 -1
- package/create-vader-app/example_proj/dist/vaderjs/worker.js +0 -327
- package/create-vader-app/example_proj/index.html +0 -20
- package/create-vader-app/example_proj/readme.md +0 -2
- package/create-vader-app/example_proj/src/pages/Index.js +0 -13
- package/create-vader-app/example_proj/src/views/app.html +0 -16
- package/create-vader-app/index.js +0 -20
- package/create-vader-app/node_modules/.package-lock.json +0 -350
- package/create-vader-app/node_modules/chalk/license +0 -9
- package/create-vader-app/node_modules/chalk/package.json +0 -83
- package/create-vader-app/node_modules/chalk/readme.md +0 -325
- package/create-vader-app/node_modules/chalk/source/index.d.ts +0 -320
- package/create-vader-app/node_modules/chalk/source/index.js +0 -225
- package/create-vader-app/node_modules/chalk/source/utilities.js +0 -33
- package/create-vader-app/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -236
- package/create-vader-app/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -223
- package/create-vader-app/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -1
- package/create-vader-app/node_modules/chalk/source/vendor/supports-color/browser.js +0 -30
- package/create-vader-app/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -55
- package/create-vader-app/node_modules/chalk/source/vendor/supports-color/index.js +0 -182
- package/create-vader-app/node_modules/commander/LICENSE +0 -22
- package/create-vader-app/node_modules/commander/Readme.md +0 -1146
- package/create-vader-app/node_modules/commander/esm.mjs +0 -16
- package/create-vader-app/node_modules/commander/index.js +0 -27
- package/create-vader-app/node_modules/commander/lib/argument.js +0 -147
- package/create-vader-app/node_modules/commander/lib/command.js +0 -2196
- package/create-vader-app/node_modules/commander/lib/error.js +0 -45
- package/create-vader-app/node_modules/commander/lib/help.js +0 -464
- package/create-vader-app/node_modules/commander/lib/option.js +0 -331
- package/create-vader-app/node_modules/commander/lib/suggestSimilar.js +0 -100
- package/create-vader-app/node_modules/commander/package-support.json +0 -16
- package/create-vader-app/node_modules/commander/package.json +0 -90
- package/create-vader-app/node_modules/commander/typings/esm.d.mts +0 -3
- package/create-vader-app/node_modules/commander/typings/index.d.ts +0 -889
- package/create-vader-app/node_modules/fs-extra/LICENSE +0 -15
- package/create-vader-app/node_modules/fs-extra/README.md +0 -292
- package/create-vader-app/node_modules/fs-extra/lib/copy/copy-sync.js +0 -161
- package/create-vader-app/node_modules/fs-extra/lib/copy/copy.js +0 -238
- package/create-vader-app/node_modules/fs-extra/lib/copy/index.js +0 -7
- package/create-vader-app/node_modules/fs-extra/lib/empty/index.js +0 -39
- package/create-vader-app/node_modules/fs-extra/lib/ensure/file.js +0 -69
- package/create-vader-app/node_modules/fs-extra/lib/ensure/index.js +0 -23
- package/create-vader-app/node_modules/fs-extra/lib/ensure/link.js +0 -64
- package/create-vader-app/node_modules/fs-extra/lib/ensure/symlink-paths.js +0 -99
- package/create-vader-app/node_modules/fs-extra/lib/ensure/symlink-type.js +0 -31
- package/create-vader-app/node_modules/fs-extra/lib/ensure/symlink.js +0 -82
- package/create-vader-app/node_modules/fs-extra/lib/esm.mjs +0 -68
- package/create-vader-app/node_modules/fs-extra/lib/fs/index.js +0 -140
- package/create-vader-app/node_modules/fs-extra/lib/index.js +0 -16
- package/create-vader-app/node_modules/fs-extra/lib/json/index.js +0 -16
- package/create-vader-app/node_modules/fs-extra/lib/json/jsonfile.js +0 -11
- package/create-vader-app/node_modules/fs-extra/lib/json/output-json-sync.js +0 -12
- package/create-vader-app/node_modules/fs-extra/lib/json/output-json.js +0 -12
- package/create-vader-app/node_modules/fs-extra/lib/mkdirs/index.js +0 -14
- package/create-vader-app/node_modules/fs-extra/lib/mkdirs/make-dir.js +0 -27
- package/create-vader-app/node_modules/fs-extra/lib/mkdirs/utils.js +0 -21
- package/create-vader-app/node_modules/fs-extra/lib/move/index.js +0 -7
- package/create-vader-app/node_modules/fs-extra/lib/move/move-sync.js +0 -55
- package/create-vader-app/node_modules/fs-extra/lib/move/move.js +0 -76
- package/create-vader-app/node_modules/fs-extra/lib/output-file/index.js +0 -40
- package/create-vader-app/node_modules/fs-extra/lib/path-exists/index.js +0 -12
- package/create-vader-app/node_modules/fs-extra/lib/remove/index.js +0 -17
- package/create-vader-app/node_modules/fs-extra/lib/util/stat.js +0 -154
- package/create-vader-app/node_modules/fs-extra/lib/util/utimes.js +0 -26
- package/create-vader-app/node_modules/fs-extra/package.json +0 -71
- package/create-vader-app/node_modules/graceful-fs/LICENSE +0 -15
- package/create-vader-app/node_modules/graceful-fs/README.md +0 -143
- package/create-vader-app/node_modules/graceful-fs/clone.js +0 -23
- package/create-vader-app/node_modules/graceful-fs/graceful-fs.js +0 -448
- package/create-vader-app/node_modules/graceful-fs/legacy-streams.js +0 -118
- package/create-vader-app/node_modules/graceful-fs/package.json +0 -53
- package/create-vader-app/node_modules/graceful-fs/polyfills.js +0 -355
- package/create-vader-app/node_modules/inherits/LICENSE +0 -16
- package/create-vader-app/node_modules/inherits/README.md +0 -42
- package/create-vader-app/node_modules/inherits/inherits.js +0 -7
- package/create-vader-app/node_modules/inherits/inherits_browser.js +0 -23
- package/create-vader-app/node_modules/inherits/package.json +0 -29
- package/create-vader-app/node_modules/jsonfile/CHANGELOG.md +0 -171
- package/create-vader-app/node_modules/jsonfile/LICENSE +0 -15
- package/create-vader-app/node_modules/jsonfile/README.md +0 -230
- package/create-vader-app/node_modules/jsonfile/index.js +0 -88
- package/create-vader-app/node_modules/jsonfile/package.json +0 -40
- package/create-vader-app/node_modules/jsonfile/utils.js +0 -14
- package/create-vader-app/node_modules/path/LICENSE +0 -18
- package/create-vader-app/node_modules/path/README.md +0 -15
- package/create-vader-app/node_modules/path/package.json +0 -24
- package/create-vader-app/node_modules/path/path.js +0 -628
- package/create-vader-app/node_modules/process/.eslintrc +0 -21
- package/create-vader-app/node_modules/process/LICENSE +0 -22
- package/create-vader-app/node_modules/process/README.md +0 -26
- package/create-vader-app/node_modules/process/browser.js +0 -184
- package/create-vader-app/node_modules/process/index.js +0 -2
- package/create-vader-app/node_modules/process/package.json +0 -27
- package/create-vader-app/node_modules/process/test.js +0 -199
- package/create-vader-app/node_modules/universalify/LICENSE +0 -20
- package/create-vader-app/node_modules/universalify/README.md +0 -76
- package/create-vader-app/node_modules/universalify/index.js +0 -24
- package/create-vader-app/node_modules/universalify/package.json +0 -34
- package/create-vader-app/node_modules/util/LICENSE +0 -18
- package/create-vader-app/node_modules/util/README.md +0 -15
- package/create-vader-app/node_modules/util/package.json +0 -35
- package/create-vader-app/node_modules/util/support/isBuffer.js +0 -3
- package/create-vader-app/node_modules/util/support/isBufferBrowser.js +0 -6
- package/create-vader-app/node_modules/util/util.js +0 -586
- package/create-vader-app/package-lock.json +0 -384
- package/create-vader-app/package.json +0 -18
- package/images/router.png +0 -0
- package/images/state.png +0 -0
package/package.json
CHANGED
package/vader-min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let dom=[],states={},worker=new Worker(new URL("./worker.js",import.meta.url));export const useRef=t=>{
|
|
1
|
+
let dom=[],states={},worker=new Worker(new URL("./worker.js",import.meta.url));export const useRef=t=>{let e=document.querySelector(`[ref="${t}"]`),s=t=>{let s=new DOMParser().parseFromString(t,"text/html"),n=s.body.firstChild;if(e){let i=!n.isEqualNode(e);i&&e.parentNode.replaceChild(n,e)}};return{current:e,update:s}};let components=[];export class Component{constructor(){this.states={},this.name=this.constructor.name,this.executedEffects={},this.storedProps={},this.componentMounted=!1,this.hasMounted=!1,this.$_signal_subscribers=[],this.$_signal_subscribers_ran=[],this.effects={},this.$_useStore_subscribers=[],this.init(),this.Componentcontent=null,this.$_signal_dispatch_event=new CustomEvent("SignalDispatch",{detail:{hasUpdated:!1,state:null}}),this.$_signal_dispatch_cleanup_event=new CustomEvent("Signal_Cleanup_Dispatch",{detail:{state:null,lastState:null}}),this.snapshots=[],this.dom=[],this.cfr=!1}adapter(t){}init(){this.registerComponent()}registerComponent(){components.push(this)}setState(t,e){this.states[t]=e,this.updateComponent()}unmount(){this.componentMounted=!1,this.componentWillUnmount(),document.querySelector(`[data-component="${this.name}"]`).remove(),document.querySelector(`[data-component="${this.name}"]`)||(components=components.filter(t=>t.name!==this.name))}componentUpdate(t,e,s){}componentDidMount(){}componentWillUnmount(){}signal=(t,e)=>{let s=!1,[n,i]=this.useState(t,e,()=>{if(this.$_signal_subscribers.length>0){for(var t=0;t<this.$_signal_subscribers.length;t++)if(!s){if(this.$_signal_subscribers[t].runonce&&this.$_signal_subscribers_ran.includes(this.$_signal_subscribers[t]))break;this.$_signal_subscribers[t].function(n),this.$_signal_subscribers_ran.push(this.$_signal_subscribers[t]);return}}else this.$_signal_dispatch_event.detail.hasUpdated=!0,this.$_signal_dispatch_event.detail.state=n,window.dispatchEvent(this.$_signal_dispatch_event)});return this.$_signal_subscribe=(t,e)=>(this.$_signal_subscribers.push({function:t,runonce:e}),t),this.$_signal_cleanup=t=>{this.lastState=n,this.$_signal_subscribers=this.$_signal_subscribers.filter(e=>e.function!==t),this.$_signal_dispatch_cleanup_event.detail.state=this.states,this.$_signal_dispatch_cleanup_event.detail.lastState=this.lastState,window.dispatchEvent(this.$_signal_dispatch_event)},this.$_signal_dispatch=()=>{for(var t=0;t<this.$_signal_subscribers.length&&!(this.$_signal_subscribers[t].runonce&&this.$_signal_subscribers_ran.includes(this.$_signal_subscribers[t]));t++)this.$_signal_subscribers[t].function(n),this.$_signal_subscribers_ran.push(this.$_signal_subscribers[t])},this.$_signal_get=()=>n,this.$_signal_call=()=>{s=!0,this.$_signal_dispatch()},this.$_signal_set=t=>{i(t)},{subscribe:this.$_signal_subscribe,cleanup:this.$_signal_cleanup,dispatch:this.$_signal_dispatch,call:this.$_signal_call,set:this.$_signal_set,get:this.$_signal_get}};useAuth(t){let e=t.rulesets;if(!e)throw Error("No rulesets provided");let s=t.user,n={can(t){let n=!1;return e.forEach(e=>{e.action===t&&e.condition(s)&&(n=!0)}),n},hasRole:t=>s.role&&s.role.includes(t),canWithRole:(t,e)=>n.can(t)&&n.hasRole(e),assignRule(t){e.some(e=>e.action===t.action)||e.push(t)},revokeRule(t){e=e.filter(e=>e.action!==t)},canAnyOf:t=>t.some(t=>n.can(t)),canAllOf:t=>t.every(t=>n.can(t)),canGroup:(t,e="any")=>"any"===e?n.canAnyOf(t):n.canAllOf(t)};return n}useReducer(t,e,s){return this.states[t]||(this.states[t]=s),[this.states[t],s=>{this.states[t]=e(s),this.updateComponent()}]}runEffects(){Object.keys(this.effects).forEach(t=>{this.effects[t].forEach(t=>{this.executedEffects[t]||(t(),this.executedEffects[t]=!0)})})}useSyncStore(t,e){let[s,n]=this.useState(t,e||localStorage.getItem(`$_vader_${t}`,e=>{localStorage.setItem(`$_vader_${t}`,JSON.stringify(e)),this.$_useStore_subscribers.forEach(t=>{t(e)})})||{}),i=t=>s[t],r=(t,e)=>{let i={...s,[t]:e};n(i)},a=t=>this.$_useStore_subscribers.push(t),o=t=>{let e=s;delete e[t],n(e)};return{getField:i,setField:r,subscribe:a,clear:o}}useState(t,e,s=null){return this.states[t]||(this.states[t]=e),[this.states[t],e=>{this.states[t]=e,this.updateComponent(),"function"==typeof s&&s()}]}useRef(t){let e=this.dom[t],s=t=>{let s=new DOMParser().parseFromString(t,"text/html"),n=s.body.firstChild;if(e){let i=!n.isEqualNode(e);i&&e.parentNode.replaceChild(n,e)}};return{current:e,update:s}}useEffect(t,e){return this.effects[this.name]||(this.effects[this.name]=[]),this.effects[this.name].push(t),e.length>0?e.forEach(t=>{if(t.set)throw Error("signal found, do not use effect and signals at the same time - signals are more efficient")}):this.hasMounted||(t(),this.hasMounted=!0),{cleanup:()=>{this.effects[this.name]=this.effects[this.name].filter(e=>e!==t)}}}$Function(t){let e=t.name;return e||(e="anonymous"+Math.floor(1e17*Math.random())),window[e]=t,`window.${e}()`}updateComponent(){let t=document.createDocumentFragment();Object.keys(components).forEach(async e=>{let{name:s}=components[e],n=document.querySelector(`[data-component="${s}"]`),i=new Date().getTime(),r={name:s,time:i,prev_state:this.states,prev_props:this.storedProps,content:n.innerHTML};if(!n)return;let a=this.useState.bind(this),o=this.useEffect.bind(this),h=this.useReducer.bind(this),l=this.useAuth.bind(this),u=this.useSyncStore.bind(this),c=this.signal.bind(this),d=this.$Function.bind(this),p=this.useRef.bind(this),f=Function("useState","useEffect","useAuth","useReducer","useSyncStore","signal","$Function","dom","render","state","useRef","return`"+await this.render()+"`")(a,o,l,h,u,c,d,dom,this.render,this.states,p);new DOMParser().parseFromString(f,"text/html").body.innerHTML!==n.innerHTML&&(this.snapshots.length>0?this.snapshots[this.snapshots.length-1]!==r&&this.snapshots.push(r):this.snapshots.push(r),this.componentUpdate(r.prev_state,r.prev_props,r.content),t.appendChild(document.createRange().createContextualFragment(f)),n.innerHTML="",n.replaceWith(t),this.runEffects())})}validateClassName(t){return/^[a-zA-Z0-9-_]+$/.test(t)}html(t,...e){let s=setInterval(()=>{document.querySelector(`[data-component="${this.name}"]`)&&(clearInterval(s),this.componentMounted=!0,document.querySelector(`[data-component="${this.name}"]`)?.querySelectorAll("*").forEach(t=>{t.hasAttribute("ref")&&(this.dom[t.getAttribute("ref")]=t)}),this.componentDidMount())},100),n=document.createElement("script");return n.setAttribute("type","text/javascript"),n.setAttribute("data-component-script",this.name),worker.postMessage({strings:t,args:e,location:window.location.origin+window.location.pathname.replace(/\/[^\/]*$/,"")+"/public/",name:this.name}),new Promise((t,e)=>{worker.onmessage=e=>{if(e.data.error)throw Error(e.data.error);let s=this.dom,n=e.data.js,i=e.data.template,r=this.useState.bind(this),a=this.useEffect.bind(this),o=this.useReducer.bind(this),h=this.useAuth.bind(this),l=this.useSyncStore.bind(this),u=this.signal.bind(this),c=this.$Function.bind(this),d=this.states,p=this.useRef.bind(this),f=setInterval(()=>{this.componentMounted&&(clearInterval(f),Function("useState","useEffect","useAuth","useReducer","useSyncStore","signal","$Function","dom","render","state","useRef",n)(r,a,h,o,l,u,c,s,this.render,this.states,p))},100);t(handletemplate(Function("useRef","state","signal","useState","useReducer","useAuth","useSyncStore","useRef","$Function","return`"+i+"`")(p,d,u,r,o,h,l,p,c)))},worker.onerror=t=>{e(t)}})}async render(t){}}let Vader={Component:Component,useRef:useRef};export const component=()=>new Component;export const rf=(t,e)=>{window[t]=e};let cache={};async function handletemplate(t){let e=new DOMParser().parseFromString(t,"text/html"),s=e.documentElement.querySelectorAll("*");if(s.length>0){for(var n=0;n<s.length;n++)if("INCLUDE"===s[n].nodeName){if(!s[n].getAttribute("src")||""===s[n].getAttribute("src"))throw Error("Include tag must have src attribute");let i=s[n].getAttribute("src")?.split("/").pop()?.split(".")[0],r=await include(s[n].getAttribute("src"));r=r.replace(/`/g,"\\`"),cache[s[n].getAttribute("src")]=r,r=Function(`return \`${r}\`;`)();let a=new DOMParser().parseFromString(r,"text/html");a.querySelectorAll("include").forEach(t=>{t.remove()});e.querySelectorAll(i).forEach(t=>{if(t.attributes.length>0)for(var s=0;s<t.attributes.length;s++){let n="{{"+t.attributes[s].name+"}}";a.body.innerHTML.includes(n)&&(a.body.innerHTML=a.body.innerHTML.replaceAll(n,t.attributes[s].value))}if(t.children.length>0&&a.body.querySelector("slot"))for(var s=0;s<t.children.length;s++)a.body.querySelectorAll("slot").forEach(e=>{let n=e.getAttribute("id");(t.hasAttribute("key")&&t.getAttribute("key")===n||!t.hasAttribute("key")&&t.nodeName===n)&&t.children[s].innerHTML.length>0&&(e.outerHTML=t.children[s].innerHTML)});e.body.querySelectorAll("include").forEach(t=>{t.remove()}),e.body.outerHTML=e.body.outerHTML.replace(/`/g,"\\`"),e.body.outerHTML=e.body.outerHTML.replace(t.outerHTML,Function(`return \`${a.body.outerHTML}\`;`)())})}}return e.body.outerHTML=e.body.outerHTML.replace(/`/g,"\\`"),t=Function(`return \`${e.body.outerHTML}\`;`)()}export const include=async t=>(!t.startsWith("/")||t.includes("/src/")||document.documentElement.outerHTML.trim().includes("<!-- #vader-disable_relative-paths -->")||(t="/src/"+t),cache[t])?cache[t]:fetch(`./${t}`).then(e=>{if(404===e.status)throw Error(`No file found at ${t}`);return e.text()}).then(async e=>(cache[t]=e,e));export default Vader;
|
package/vader.js
CHANGED
|
@@ -461,7 +461,7 @@ export class Component {
|
|
|
461
461
|
* @returns {void}
|
|
462
462
|
*/
|
|
463
463
|
(action) => {
|
|
464
|
-
this.states[key] = reducer(
|
|
464
|
+
this.states[key] = reducer(action);
|
|
465
465
|
this.updateComponent();
|
|
466
466
|
}
|
|
467
467
|
];
|
|
@@ -579,7 +579,7 @@ export class Component {
|
|
|
579
579
|
// get ref from array
|
|
580
580
|
const element = this.dom[ref];
|
|
581
581
|
|
|
582
|
-
const getElement =
|
|
582
|
+
const getElement = element;
|
|
583
583
|
|
|
584
584
|
const update = (data) => {
|
|
585
585
|
const newDom = new DOMParser().parseFromString(data, "text/html");
|
|
@@ -693,28 +693,47 @@ export class Component {
|
|
|
693
693
|
};
|
|
694
694
|
|
|
695
695
|
if (!componentContainer) return;
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
"render",
|
|
706
|
-
"return `" + (await this.render()) + "`;"
|
|
707
|
-
)(
|
|
708
|
-
this.useState,
|
|
709
|
-
this.useEffect,
|
|
710
|
-
this.useAuth,
|
|
711
|
-
this.useReducer,
|
|
712
|
-
this.useSyncStore,
|
|
713
|
-
this.signal,
|
|
714
|
-
this.render
|
|
715
|
-
);
|
|
696
|
+
const useState = this.useState.bind(this); // Bind the component's context
|
|
697
|
+
const useEffect = this.useEffect.bind(this); // Bind the component's context
|
|
698
|
+
const useReducer = this.useReducer.bind(this); // Bind the component's context
|
|
699
|
+
const useAuth = this.useAuth.bind(this); // Bind the component's context
|
|
700
|
+
const useSyncStore = this.useSyncStore.bind(this); // Bind the component's context
|
|
701
|
+
const signal = this.signal.bind(this); // Bind the component's context
|
|
702
|
+
const $Function = this.$Function.bind(this); // Bind the component's context
|
|
703
|
+
const useRef = this.useRef.bind(this); // Bind the component's context
|
|
704
|
+
|
|
716
705
|
|
|
717
|
-
|
|
706
|
+
|
|
707
|
+
let newHtml = new Function(
|
|
708
|
+
"useState",
|
|
709
|
+
"useEffect",
|
|
710
|
+
"useAuth",
|
|
711
|
+
"useReducer",
|
|
712
|
+
"useSyncStore",
|
|
713
|
+
"signal",
|
|
714
|
+
"$Function",
|
|
715
|
+
"dom",
|
|
716
|
+
"render",
|
|
717
|
+
"state",
|
|
718
|
+
"useRef",
|
|
719
|
+
"return" + "`" + await this.render() + "`"
|
|
720
|
+
)(
|
|
721
|
+
useState,
|
|
722
|
+
useEffect,
|
|
723
|
+
useAuth,
|
|
724
|
+
useReducer,
|
|
725
|
+
useSyncStore,
|
|
726
|
+
signal,
|
|
727
|
+
$Function,
|
|
728
|
+
dom,
|
|
729
|
+
this.render,
|
|
730
|
+
this.states,
|
|
731
|
+
useRef
|
|
732
|
+
);
|
|
733
|
+
|
|
734
|
+
// compare new html with old html
|
|
735
|
+
let hdom = new DOMParser().parseFromString(newHtml, "text/html");
|
|
736
|
+
if (hdom.body.innerHTML !== componentContainer.innerHTML) {
|
|
718
737
|
if (this.snapshots.length > 0) {
|
|
719
738
|
let lastSnapshot = this.snapshots[this.snapshots.length - 1];
|
|
720
739
|
if (lastSnapshot !== snapshot) {
|
|
@@ -733,7 +752,7 @@ export class Component {
|
|
|
733
752
|
document.createRange().createContextualFragment(newHtml)
|
|
734
753
|
);
|
|
735
754
|
componentContainer.innerHTML = "";
|
|
736
|
-
componentContainer.
|
|
755
|
+
componentContainer.replaceWith(fragment);
|
|
737
756
|
this.runEffects();
|
|
738
757
|
}
|
|
739
758
|
});
|
|
@@ -847,37 +866,44 @@ export class Component {
|
|
|
847
866
|
const $Function = this.$Function.bind(this); // Bind the component's context
|
|
848
867
|
let states = this.states;
|
|
849
868
|
const useRef = this.useRef.bind(this); // Bind the component's context
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
let interval = setInterval(() => {
|
|
872
|
+
if(this.componentMounted){
|
|
873
|
+
clearInterval(interval)
|
|
874
|
+
new Function(
|
|
875
|
+
"useState",
|
|
876
|
+
"useEffect",
|
|
877
|
+
"useAuth",
|
|
878
|
+
"useReducer",
|
|
879
|
+
"useSyncStore",
|
|
880
|
+
"signal",
|
|
881
|
+
"$Function",
|
|
882
|
+
"dom",
|
|
883
|
+
"render",
|
|
884
|
+
"state",
|
|
885
|
+
"useRef",
|
|
886
|
+
js
|
|
887
|
+
)(
|
|
888
|
+
useState,
|
|
889
|
+
useEffect,
|
|
890
|
+
useAuth,
|
|
891
|
+
useReducer,
|
|
892
|
+
useSyncStore,
|
|
893
|
+
signal,
|
|
894
|
+
$Function,
|
|
895
|
+
dom,
|
|
896
|
+
this.render,
|
|
897
|
+
this.states,
|
|
898
|
+
useRef
|
|
899
|
+
);
|
|
900
|
+
}
|
|
901
|
+
}, 100);
|
|
876
902
|
|
|
877
903
|
resolve(
|
|
878
904
|
handletemplate( new Function(
|
|
879
905
|
"useRef",
|
|
880
|
-
"
|
|
906
|
+
"state",
|
|
881
907
|
"signal",
|
|
882
908
|
"useState",
|
|
883
909
|
"useReducer",
|
package/worker-min.js
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
|
-
onmessage=e=>{let l=Date.now(),a=e.data.strings,t=e.data.args,s="",r=e.data.location.split("/").slice(0,-1).join("/"),c="";for(let
|
|
1
|
+
onmessage=e=>{let l=Date.now(),a=e.data.strings,t=e.data.args,s="",r=e.data.location.split("/").slice(0,-1).join("/"),c="";for(let i=0;i<a.length;i++)c+=a[i],i<t.length&&(c+=t[i]);let o=c.match(/--([^>]*)--/gs);if(o)for(;o.length;){let n=o.pop();c=c.replace(n,"")}if((c=(c=(c=(c=(c=(c=c.replace(/(#+)([^<>\n]*)(?![^<]*>)(?![^{]*})/g,(e,l,a)=>{let t=l.length;return`<h${t} class="markdown_heading">${a}</h${t}>`})).replace(/\*\*(.*?)\*\*/g,(e,l)=>`<b class="markdown_bold">${l}</b>`)).replace(/\*(.*?)\*/g,(e,l)=>`<i class="markdown_italic">${l}</i>`)).replace(/`(.*?)`/g,(e,l)=>`<code>${l}</code>`)).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,l,a)=>`<a class="markdown_link" href="${a}">${l}</a>`)).replace(/!\[([^\]]+)\]\(([^)]+)\)/g,(e,l,a)=>`<img class="markdown_image" src="${a}" alt="${l}" />`)).split("\n").forEach((e,l,a)=>{e.match(/^\s*-\s+(.*?)$/gm)&&(c=0!==l&&a[l-1].match(/^\s*-\s+(.*?)$/gm)?l!==a.length-1&&a[l+1].match(/^\s*-\s+(.*?)$/gm)?c.replace(e,`<li>${e.replace(/^\s*-\s+(.*?)$/gm,"$1")}</li>`):c.replace(e,`<li>${e.replace(/^\s*-\s+(.*?)$/gm,"$1")}</li></ul>`):c.replace(e,`<ul class="markdown_unordered" style="list-style-type:disc;list-style:inside"><li>${e.replace(/^\s*-\s+(.*?)$/gm,"$1")}</li>`))}),c.split("\n").forEach((e,l,a)=>{e.match(/^\s*\d+\.\s+(.*?)$/gm)&&(c=0!==l&&a[l-1].match(/^\s*\d+\.\s+(.*?)$/gm)?l!==a.length-1&&a[l+1].match(/^\s*\d+\.\s+(.*?)$/gm)?c.replace(e,`<li>${e.replace(/^\s*\d+\.\s+(.*?)$/gm,"$1")}</li>`):c.replace(e,`<li>${e.replace(/^\s*\d+\.\s+(.*?)$/gm,"$1")}</li></ol>`):c.replace(e,`<ol class="markdown_ordered" style="list-style-type:decimal;"><li>${e.replace(/^\s*\d+\.\s+(.*?)$/gm,"$1")}</li>`))}),!(c=(c=(c=(c=c.replace(/^\s*-\s+(.*?)$/gm,(e,l)=>`<li class="markdown_list_item">${l}</li>`)).replace(/^\s*---\s*$/gm,'<hr class="markdown_horizontal" />')).replace(/^\s*> (.*)$/gm,(e,l)=>`<blockquote class="markdown_blockquote">${l}</blockquote>`)).replace(/((?: *\|.*?)+)\n((?: *\|.*?)+)/gm,(e,l,a)=>{let t=l.split("|").slice(1,-1),s=a.split("|").slice(1,-1),r='<table class="markdown_table">';return r+='<thead class="markdown_table_head"><tr class="markdown_table_row">',t.forEach(e=>{r+=`<th class="markdown_table_header_cell">${e}</th>`}),r+='</tr></thead><tbody class="markdown_table_body"><tr class="markdown_table_row">',s.forEach(e=>{r+=`<td class="markdown_table_body_cell">${e}</td>`}),r+="</tr></tbody></table>"})).includes("<body>"))throw Error(`Vader Error: You must enclose your html in a body tag for all components.
|
|
2
|
+
|
|
3
|
+
${c}`);let d=(c=c.replace(/classname/g,"class")).match(/<img([^>]*)>/g);if(d)for(let p=0;p<d.length;p++){let h=d[p],m=h.match(/src="([^"]*)"/);if(!h.match(/alt="([^"]*)"/)&&!c.includes("<!-- #vader-disable_accessibility -->"))throw Error(`Vader Error: You must include an alt attribute in the image tag
|
|
4
|
+
|
|
5
|
+
${h} of class ${e.data.name}. `);m&&m.forEach(l=>{if(l.includes("http")||c.includes("<!-- #vader-disable_relative-paths -->")){if(!l.includes("http")&&l.startsWith(".")&&!c.includes("<!-- #vader-disable_relative-paths -->"))throw Error(`Vader Error: You cannot use absolute paths since relative paths are not disabled in ${e.data.file}. Use relative paths instead.
|
|
6
|
+
|
|
7
|
+
${l}`)}else c=c.replace(`src="${l}"`,`src="${r}/${l}"`)})}let g=c.match(/href="([^"]*)"/g);if(g)for(;g.length;){let u=g.pop();if((u=u.replace('href="',"").replace('"',"")).includes("http")||c.includes("<!-- #vader-disable_relative-paths -->")){if(!u.includes("http")&&u.startsWith(".")&&!c.includes("<!-- #vader-disable_relative-paths -->"))throw Error(`Vader Error: You cannot use absolute paths since relative paths are not disabled in ${e.data.file}. Use relative paths instead.
|
|
8
|
+
|
|
9
|
+
${u}`)}else c=c.replace(`href="${u}"`,`href="#${u}"`)}let f=Date.now()-l,b=!1;(r.includes("localhost")||r.includes("127.0.0.1")&&!b)&&(b=!0,c+=`$\{console.log('%c${e.data.name} component rendered in ${f}ms')}`);let w=c.split("<script>");w&&w.forEach((e,l)=>{if(0===l)c=e;else{if(e.includes("// <![CDATA[ <-- For SVG support"))return;s+=e.split("</script>")[0]}});let y=c.match(/(\$\(.*?\))/gs);if(y)for(;y.length;){let _=y.pop();c=c.replace(_,`$\{${_.replace("$(","").replace(")","")}}`)}let k=c.match(/@title '([^>]*)';/);if(k){let v=`{document.title = "${k[1]}", ""}`;c=c.replace(k[0],"$"+v)}let $=c.match(/@style{([^>]*)};/gs);if($)for(let A=0;A<$.length;A++){if(!$[A].includes("style"))continue;let E=$[A],V=E.replace("@style{","").replace("};","");V=(V=(V=V.replaceAll(",",";")).replaceAll(/[A-Z]/g,e=>`-${e.toLowerCase()}`)).replaceAll(/'/g," "),c=c.replace(E,`style="${V}"`)}let Y=c.match(/@stylesheet{([^>]*)};/);if(Y){let q=Y[1].replaceAll(" ","");q=(q=(q=q.replaceAll(",",";")).replaceAll(/[A-Z]/g,e=>`-${e.toLowerCase()}`)).replaceAll(/'/g," "),c=c.replace(Y[0],`<style>${q}</style>`)}postMessage({template:c.includes("data-component")?c:`<div data-component="${e.data.name}">${c}</div>`,js:s||""})};
|
package/worker.js
CHANGED
|
@@ -278,7 +278,6 @@ onmessage = (e) => {
|
|
|
278
278
|
continue;
|
|
279
279
|
}
|
|
280
280
|
let style = styles[i];
|
|
281
|
-
console.log(style)
|
|
282
281
|
|
|
283
282
|
let css = style.replace("@style{", "").replace("};", "");
|
|
284
283
|
// @ts-ignore
|
|
@@ -320,7 +319,7 @@ onmessage = (e) => {
|
|
|
320
319
|
result = result.replace(stylsheet[0], `<style>${css}</style>`);
|
|
321
320
|
}
|
|
322
321
|
postMessage({
|
|
323
|
-
template: `<div data-component
|
|
322
|
+
template: result.includes('data-component') ? result : `<div data-component="${e.data.name}">${result}</div>`,
|
|
324
323
|
js: js ? js : ""
|
|
325
324
|
});
|
|
326
325
|
};
|