vaderjs 1.3.3-alpha-62 → 1.3.3-alpha-63
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/runtime/router.js +1 -1
- package/vader.js +14 -9
package/package.json
CHANGED
package/runtime/router.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Component}from"./vader.js";let middlewares=[];class VaderRouter{constructor(e,t){this.routes=[],this.middlewares=[],this.errorMiddlewares=[],this.listeners=[],this.basePath=e}get(e,t){this.routes.push({path:e,handler:t,method:"get"})}use(e){console.log(e),this.middlewares.push(e)}listen(e,t){e||(e=Math.random().toString(36).substring(7)),this.listeners.push(e),1===this.listeners.length?this.handleRoute(window.location.hash):this.listeners.pop(),t&&t(),window.onhashchange=()=>{this.handleRoute(window.location.hash)}}extractParams(e,t){const s=e.split("/"),n=t.split("/"),
|
|
1
|
+
import{Component}from"./vader.js";let middlewares=[];class VaderRouter{constructor(e,t){this.routes=[],this.middlewares=[],this.errorMiddlewares=[],this.listeners=[],this.basePath=e}get(e,t){this.routes.push({path:e,handler:t,method:"get"})}use(e){console.log(e),this.middlewares.push(e)}listen(e,t){e||(e=Math.random().toString(36).substring(7)),this.listeners.push(e),1===this.listeners.length?this.handleRoute(window.location.hash):this.listeners.pop(),t&&t(),window.onhashchange=()=>{this.handleRoute(window.location.hash)}}extractParams(e,t){const s=e.split("/"),n=t.split("/"),r={};return s.forEach(((e,t)=>{if(e.startsWith(":")){const s=e.slice(1);r[s]=n[t]}else if(e.startsWith("*")){n.slice(t).forEach(((e,t)=>{r[t]=e}))}})),r}extractQueryParams(e){const t=e.split("?")[1];if(!t)return{};const s={};return t.split("&").forEach((e=>{const[t,n]=e.split("=");s[t]=n})),s}handleRoute(e){let t=200,s=e=e.slice(1),n=this.routes.find((t=>{if(t.path===e)return!0;if(""===e&&"/"===t.path)return!0;if(e.includes("?")&&(e=e.split("?")[0]),t.path.includes("*")||t.path.includes(":")){const s=t.path.split("/"),n=e.split("/");if(s.length!==n.length&&!t.path.endsWith("*"))return!1;for(let e=0;e<s.length;e++){const t=s[e],r=n[e];if(!t.startsWith(":")&&!t.startsWith("*")&&t!==r)return!1}return!0}const n=this.extractParams(t.path,s);return Object.keys(n).length>0}));n||(n=this.routes.find((e=>{if(e.path.includes("/404"))return this.error=!0,!0;!this.error&&e.path.includes("/404")&&(window.location.hash=this.basePath)})),t=n?200:404);const r=this.extractQueryParams(s),o=n&&n.path?this.extractParams(n.path,s):{},a={headers:{},params:o,query:r,path:e,url:window.location.href+e,method:n?n.method:"get",pause:!1,timestamp:Date.now()};window.$CURRENT_URL=a.path,window.$FULL_URL=window.location.href.replace("#","");const i={status:t,log:e=>{void 0===e?console.log(`${a.path} ${a.method} ${i.status} ${a.timestamp}`):console.table({"Request Path":a.path,"Request Method":n.method,"Response Status":i.status,"Request Timestamp":a.timestamp})},refresh:()=>{this.handleRoute(window.location.hash)},redirect:e=>{!e.startsWith("/")&&(e=`/${e}`),window.location.hash=`#${e}`},render:async(e,t,s)=>{function n(e){return"function"==typeof e&&/^class\s/.test(Function.prototype.toString.call(e))}try{let a=new Component;if(n(e.default)){let t=new e.default;a.state=t.state,a=t}else{if(e.default.toString().includes("this.key"))throw new Error('Using this.key is not supported in functional components use the attribute key="a value" instead');a.key=e.default.toString().split('key="')[1]?e.default.toString().split('key="')[1].split('"')[0]:null;let n={key:a.key,render:()=>e.default.apply(a,[t,s]),request:t,response:s,params:o,queryParams:r,reset:a.reset.bind(a),onMount:a.onMount.bind(a),useState:null,router:{use:a.router.use.bind(a)},bindMount:a.bindMount.bind(a),memoize:a.memoize.bind(a),createComponent:a.createComponent.bind(a),isChild:!1,useState:a.useState.bind(a),parseStyle:a.parseStyle.bind(a),bind:a.bind.bind(a),hydrate:a.hydrate.bind(a)};a.render=n.render,a=n}if(!document.querySelector("#root"))throw new Error("Root element not found, please add an element with id root");a.reset(),a.components={},a.request=t,a.response=s,a.router.use&&!a.isChild?await new Promise((async r=>{if(n(e.default))if(n(e.default))switch(await a.router.use(t,s),t.pause){case!0:console.log("pausing",t.pause);let e=setInterval((()=>{t.pause?console.log("still pausing",t.pause):(clearInterval(e),r())}),1e3);break;case!1:r()}else r();else switch(await e.default.apply(a,[t,s]),await a.router.use(t,s),t.pause){case!0:let e=setInterval((()=>{t.pause?console.log("still pausing request",t.url):(clearInterval(e),r())}),1e3);break;case!1:r()}})):a.router.use&&a.isChild&&console.warn("Router.use() is not supported in child components");const i=await a.render();document.querySelector("#root").innerHTML=i,a.bindMount(),a.onMount()}catch(e){console.error(e)}},setQuery:e=>{let t="";Object.keys(e).forEach(((s,n)=>{t+=`${0===n?"?":"&"}${s}=${e[s]}`}));let s=window.location.hash.split("?")[0];t=t.replace("/","-").replaceAll("/","-"),window.location.hash=`${s}${t}`},send:e=>{document.querySelector("#root").innerHTML=e},json:e=>{const t=document.querySelector("#root");t.innerHTML="";const s=document.createElement("pre");s.textContent=JSON.stringify(e,null,2),t.appendChild(s)}};middlewares.forEach((e=>{e(a,i)})),n&&n.handler(a,i)}}window.VaderRouter=VaderRouter;export default VaderRouter;
|
package/vader.js
CHANGED
|
@@ -178,8 +178,7 @@ function Compiler(func, file) {
|
|
|
178
178
|
newvalue = newvalue.trim();
|
|
179
179
|
if (newvalue.endsWith("}")) {
|
|
180
180
|
newvalue = newvalue.replace("}", "");
|
|
181
|
-
}
|
|
182
|
-
console.log(newvalue)
|
|
181
|
+
}
|
|
183
182
|
functionparams.length > 0 ? params = params + ',' + functionparams.map((e) => e.name).join(',') : null
|
|
184
183
|
newvalue = newvalue.split('\n').map(line => line.trim() ? line.trim() + ';' : line).join('\n');
|
|
185
184
|
newvalue = newvalue.replaceAll(',,', ',')
|
|
@@ -518,13 +517,13 @@ function Compiler(func, file) {
|
|
|
518
517
|
return match;
|
|
519
518
|
});
|
|
520
519
|
|
|
520
|
+
string = string.replaceAll(/\$\{\/\*.*\*\/\}/gs, "");
|
|
521
521
|
string = string.replaceAll("<>", "`").replaceAll("</>", "`");
|
|
522
522
|
string = parseComponents(string);
|
|
523
523
|
|
|
524
524
|
string = string
|
|
525
525
|
.replaceAll("className", "class")
|
|
526
|
-
.replaceAll("classname", "class");
|
|
527
|
-
string = string.replaceAll(/\$\{\/\*.*\*\/\}/gs, "");
|
|
526
|
+
.replaceAll("classname", "class");
|
|
528
527
|
|
|
529
528
|
string = string.replaceAll('../src', './src')
|
|
530
529
|
string += `\n\n //wascompiled`;
|
|
@@ -648,7 +647,9 @@ function Compiler(func, file) {
|
|
|
648
647
|
string = string.replace(beforePath, "'" + path + "'")
|
|
649
648
|
}
|
|
650
649
|
let html = fs.existsSync(process.cwd() + '/dist/index.html') ? fs.readFileSync(process.cwd() + '/dist/index.html', 'utf8') : ''
|
|
651
|
-
if (!html.includes(`<link rel="preload" href="${path.replace(/'/g, '').trim()}" as="${path.replace(/'/g, '').trim().includes('.css') ? 'style' : 'script'}">`)
|
|
650
|
+
if (!html.includes(`<link rel="preload" href="${path.replace(/'/g, '').trim()}" as="${path.replace(/'/g, '').trim().includes('.css') ? 'style' : 'script'}">`)
|
|
651
|
+
&& !path.includes('.module.css')
|
|
652
|
+
) {
|
|
652
653
|
if (!html.includes(`</head>`)) {
|
|
653
654
|
throw new Error('Could not find </head> in index.html')
|
|
654
655
|
}
|
|
@@ -746,14 +747,18 @@ async function Build() {
|
|
|
746
747
|
await writer(process.cwd() + "/dist/pages/" + fileName.replace('.jsx', '.js'), data).then(async () => {
|
|
747
748
|
|
|
748
749
|
let { minify } = await import('terser')
|
|
750
|
+
|
|
749
751
|
try {
|
|
750
752
|
let minified = await minify(data, {
|
|
751
|
-
|
|
753
|
+
toplevel: true,
|
|
754
|
+
ecma:2016,
|
|
755
|
+
enclose:false,
|
|
752
756
|
module: true,
|
|
753
757
|
compress: true,
|
|
754
|
-
mangle: true,
|
|
755
758
|
keep_fnames: true,
|
|
759
|
+
|
|
756
760
|
})
|
|
761
|
+
|
|
757
762
|
await writer(process.cwd() + "/dist/pages/" + fileName.replace('.jsx', '.js'), minified.code)
|
|
758
763
|
} catch (error) {
|
|
759
764
|
console.log(error)
|
|
@@ -895,13 +900,13 @@ Vader.js v1.3.3
|
|
|
895
900
|
|
|
896
901
|
|
|
897
902
|
Array.from(Array(3).keys()).forEach((i) => {
|
|
898
|
-
let p = `${process.cwd()}${i == 0 ? '/pages/' : i == 1 ? '/src/' : '/public/'}`
|
|
899
|
-
|
|
903
|
+
let p = `${process.cwd()}${i == 0 ? '/pages/' : i == 1 ? '/src/' : '/public/'}`
|
|
900
904
|
watch(p
|
|
901
905
|
, { recursive: true }, (event, filename) => {
|
|
902
906
|
if (event == 'change'
|
|
903
907
|
&& !globalThis.isBuilding
|
|
904
908
|
) {
|
|
909
|
+
|
|
905
910
|
Build()
|
|
906
911
|
}
|
|
907
912
|
}).on('error', (err) => console.log(err))
|