@beforesemicolon/site-builder 0.18.0 → 0.19.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.
@@ -1 +1 @@
1
- "use strict";var P=Object.create;var c=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var h=(e,t)=>c(e,"name",{value:t,configurable:!0});var R=(e,t)=>{for(var a in t)c(e,a,{get:t[a],enumerable:!0})},g=(e,t,a,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of k(t))!J.call(e,l)&&l!==a&&c(e,l,{get:()=>t[l],enumerable:!(p=$(t,l))||p.enumerable});return e};var f=(e,t,a)=>(a=e!=null?P(A(e)):{},g(t||!e||!e.__esModule?c(a,"default",{value:e,enumerable:!0}):a,e)),q=e=>g(c({},"__esModule",{value:!0}),e);var K={};R(K,{buildTemplates:()=>I});module.exports=q(K);var s=f(require("path"),1),d=f(require("fs"),1),j=f(require("esbuild"),1),S=require("./utils/merge-objects.js"),W=require("./parse-template.js"),F=f(require("clean-css"),1),x=require("./types.js");const z=new F.default,{writeFile:v,readFile:T,readdir:E,mkdir:u,cp:G,rm:H}=d.default.promises,I=h(async({publicDir:e,srcDir:t})=>{const a=s.default.resolve(e,"scripts"),p=s.default.resolve(e,"stylesheets"),l=s.default.resolve(e,"assets");d.default.existsSync(e)&&await H(e,{recursive:!0,force:!0}),await u(e,{recursive:!0}),await u(a,{recursive:!0}),await u(p,{recursive:!0}),await G(s.default.resolve(t,"assets"),l,{recursive:!0});const O=await E(s.default.resolve(t,"templates")),y=await Promise.all(O.filter(i=>i.endsWith(".json")).map(async i=>{const m=s.default.basename(i);return{dir:s.default.dirname(i),name:m.replace(".json",""),content:JSON.parse(await T(s.default.resolve(t,"templates",i),"utf8"))}})),w=y.reduce((i,m)=>({...i,[m.name]:m}),{}),b=y.filter(({content:i})=>i.type===x.TemplateType.Page);for(const{name:i,dir:m,content:B}of b){let o=B;if(o.extends){const r=w[o.extends];o=(0,S.mergeObjects)(r.content,o)}await u(s.default.join(e,m),{recursive:!0});for(let r=0;r<(o.scripts?.length??0);r++){const n=o.scripts[r];typeof n=="string"&&n.endsWith(".js")&&!n.startsWith("http")&&await j.default.build({entryPoints:[s.default.resolve(t,"scripts",n)],minify:!0,outfile:s.default.join(a,n)})}for(let r=0;r<(o.stylesheets?.length??0);r++){const n=o.stylesheets[r];if(typeof n=="string"&&n.endsWith(".css")&&!n.startsWith("http")){const N=await T(s.default.resolve(t,"stylesheets",n),"utf8");await v(s.default.join(p,n),z.minify(N).styles,"utf-8")}}const C=await(0,W.parseTemplate)(o,{prod:!0,fetchTemplate:r=>w[r].content,fetchWidget:async r=>(await import(s.default.resolve(t,"widgets",`${r}.js`))).default});await v(s.default.join(e,m,`${i}.html`),C)}},"buildTemplates");0&&(module.exports={buildTemplates});
1
+ "use strict";var $=Object.create;var c=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var h=(e,t)=>c(e,"name",{value:t,configurable:!0});var q=(e,t)=>{for(var n in t)c(e,n,{get:t[n],enumerable:!0})},g=(e,t,n,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of A(t))!R.call(e,l)&&l!==n&&c(e,l,{get:()=>t[l],enumerable:!(p=k(t,l))||p.enumerable});return e};var f=(e,t,n)=>(n=e!=null?$(J(e)):{},g(t||!e||!e.__esModule?c(n,"default",{value:e,enumerable:!0}):n,e)),z=e=>g(c({},"__esModule",{value:!0}),e);var L={};q(L,{buildTemplates:()=>K});module.exports=z(L);var s=f(require("path"),1),d=f(require("fs"),1),j=f(require("esbuild"),1),S=require("./utils/merge-objects.js"),W=require("./parse-template.js"),F=f(require("clean-css"),1),b=require("./types.js");const E=new F.default,{writeFile:v,readFile:T,readdir:G,mkdir:u,cp:H,rm:I}=d.default.promises,K=h(async({publicDir:e,srcDir:t,prod:n=!0})=>{const p=s.default.resolve(e,"scripts"),l=s.default.resolve(e,"stylesheets"),x=s.default.resolve(e,"assets");d.default.existsSync(e)&&await I(e,{recursive:!0,force:!0}),await u(e,{recursive:!0}),await u(p,{recursive:!0}),await u(l,{recursive:!0}),await H(s.default.resolve(t,"assets"),x,{recursive:!0});const O=await G(s.default.resolve(t,"templates")),y=await Promise.all(O.filter(a=>a.endsWith(".json")).map(async a=>{const m=s.default.basename(a);return{dir:s.default.dirname(a),name:m.replace(".json",""),content:JSON.parse(await T(s.default.resolve(t,"templates",a),"utf8"))}})),w=y.reduce((a,m)=>({...a,[m.name]:m}),{}),B=y.filter(({content:a})=>a.type===b.TemplateType.Page);for(const{name:a,dir:m,content:C}of B){let o=C;if(o.extends){const r=w[o.extends];o=(0,S.mergeObjects)(r.content,o)}await u(s.default.join(e,m),{recursive:!0});for(let r=0;r<(o.scripts?.length??0);r++){const i=o.scripts[r];typeof i=="string"&&i.endsWith(".js")&&!i.startsWith("http")&&await j.default.build({entryPoints:[s.default.resolve(t,"scripts",i)],minify:!0,outfile:s.default.join(p,i)})}for(let r=0;r<(o.stylesheets?.length??0);r++){const i=o.stylesheets[r];if(typeof i=="string"&&i.endsWith(".css")&&!i.startsWith("http")){const P=await T(s.default.resolve(t,"stylesheets",i),"utf8");await v(s.default.join(l,i),E.minify(P).styles,"utf-8")}}const N=await(0,W.parseTemplate)(o,{prod:n,fetchTemplate:r=>w[r].content,fetchWidget:async r=>(await import(s.default.resolve(t,"widgets",`${r}.js`))).default});await v(s.default.join(e,m,`${a}.html`),N)}},"buildTemplates");0&&(module.exports={buildTemplates});
@@ -1 +1 @@
1
- "use strict";var d=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var f=(e,t)=>d(e,"name",{value:t,configurable:!0});var h=(e,t)=>{for(var s in t)d(e,s,{get:t[s],enumerable:!0})},M=(e,t,s,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of w(t))!b.call(e,i)&&i!==s&&d(e,i,{get:()=>t[i],enumerable:!(a=O(t,i))||a.enumerable});return e};var S=e=>M(d({},"__esModule",{value:!0}),e);var W={};h(W,{parseTemplateContent:()=>l,parseWidget:()=>C});module.exports=S(W);var m=require("./default-parse-options.js"),u=require("./utils/input-definitions-to-object.js"),g=require("./parse-style.js"),y=require("./utils/attributes-to-string.js"),$=require("./utils/replace-string-value.js");const c=new Map;async function C(e,t={},s,a=m.defaultOptions){let{name:i,children:o,...n}=e;if(e["data-render-id"]=e["data-render-id"]||Math.random().toString(36).substring(2,15),{name:i,children:o,...n}=e,n.id){const r=c.get(n.id)||await a.fetchWidget?.(n.id);if(r){const p={...(0,u.inputDefinitionsToObject)(r?.inputs??[]),...n,env:{...t,assetsOrigin:a.assetsOrigin}};if(typeof r.render=="function"?o=[r.render(p)]:o=r.content?[r.content]:[],r.style){const T=typeof r.style=="function"?r.style(p):r.style;s.set(r.id||n.id,(0,g.parseStyle)(T))}c.set(n.id,r)}}return a.prod?o.join(""):`<${i} id="${n.id}" data-render-id="${n["data-render-id"]}">${await l(o,t,s,a)}</${i}>`}f(C,"parseWidget");async function l(e,t={},s,a=m.defaultOptions){return e?(await Promise.all(e.map(async i=>{if(typeof i=="string")return(0,$.replaceStringValue)(i,t);const{name:o,children:n,...r}=i;if(o==="widget")return C(i,t,s,a);const p=(0,y.attributeToString)(r,t);return`<${o}`+(p?` ${p}`:"")+`>${await l(n,t,s,a)}</${o}>`}))).join(""):""}f(l,"parseTemplateContent");0&&(module.exports={parseTemplateContent,parseWidget});
1
+ "use strict";var d=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var f=(e,t)=>d(e,"name",{value:t,configurable:!0});var h=(e,t)=>{for(var a in t)d(e,a,{get:t[a],enumerable:!0})},M=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of w(t))!b.call(e,r)&&r!==a&&d(e,r,{get:()=>t[r],enumerable:!(n=O(t,r))||n.enumerable});return e};var S=e=>M(d({},"__esModule",{value:!0}),e);var W={};h(W,{parseTemplateContent:()=>l,parseWidget:()=>C});module.exports=S(W);var m=require("./default-parse-options.js"),u=require("./utils/input-definitions-to-object.js"),g=require("./parse-style.js"),y=require("./utils/attributes-to-string.js"),$=require("./utils/replace-string-value.js");const c=new Map;async function C(e,t={},a,n=m.defaultOptions){let{name:r,children:o,...s}=e;if(e["data-render-id"]=e["data-render-id"]||Math.random().toString(36).substring(2,15),{name:r,children:o,...s}=e,s.id){const i=c.get(s.id)||await n.fetchWidget?.(s.id);if(i){const p={...(0,u.inputDefinitionsToObject)(i?.inputs??[]),...s,env:{...t,assetsOrigin:n.assetsOrigin,prod:n.prod}};if(typeof i.render=="function"?o=[i.render(p)]:o=i.content?[i.content]:[],i.style){const T=typeof i.style=="function"?i.style(p):i.style;a.set(i.id||s.id,(0,g.parseStyle)(T))}c.set(s.id,i)}}return n.prod?o.join(""):`<${r} id="${s.id}" data-render-id="${s["data-render-id"]}">${await l(o,t,a,n)}</${r}>`}f(C,"parseWidget");async function l(e,t={},a,n=m.defaultOptions){return e?(await Promise.all(e.map(async r=>{if(typeof r=="string")return(0,$.replaceStringValue)(r,t);const{name:o,children:s,...i}=r;if(o==="widget")return C(r,t,a,n);const p=(0,y.attributeToString)(i,t);return`<${o}`+(p?` ${p}`:"")+`>${await l(s,t,a,n)}</${o}>`}))).join(""):""}f(l,"parseTemplateContent");0&&(module.exports={parseTemplateContent,parseWidget});
package/dist/client.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var V=Object.defineProperty;var s=(e,t)=>V(e,"name",{value:t,configurable:!0});var W=s(e=>{let t=e.match(/(?:[A-Z]+(?=[A-Z][a-z])|[A-Z]+|[a-zA-Z])[^A-Z]*/g);if(t){for(let r=0;r<t.length;r++)t[r]=t[r].toLowerCase();return t.join("-")}return name},"turnCamelToKebabCasing");function $(e){return typeof e=="string"?e:Object.entries(e).map(([t,r])=>typeof r=="object"?`${W(t)} { ${$(r)} }`:`${W(t)}: ${r};`).join(" ")}s($,"parseStyle");function O(e,t){if(e===null||typeof e!="object"||t===null||typeof t!="object")return t;if(Array.isArray(e)&&Array.isArray(t))return Array.from(new Set([...e,...t]));let r=Array.isArray(e)?[...e]:{...e};for(let n in t)t.hasOwnProperty(n)&&(Array.isArray(e[n])&&Array.isArray(t[n])?r[n]=Array.from(new Set([...e[n],...t[n]])):r[n]=O(r[n],t[n]));return r}s(O,"mergeObjects");var b={fetchWidget:async()=>null,fetchTemplate:async()=>null,prod:!1,assetsOrigin:"/"};function y(e){return e.reduce((t,{name:r="",value:n,type:o,definitions:a=[]})=>{switch(o){case"group":t[r]=y(a);break;case"options":t[r]={value:n,options:a.map(l=>Object.values(y([l]))[0])};break;case"list":t[r]=a.map(l=>Object.values(y([l]))[0]);break;default:t[r]=n}return t},{})}s(y,"inputDefinitionsToObject");var N=s((e,t)=>String(t??"").split(".").filter(Boolean).reduce((n,o)=>{try{return n&&typeof n=="object"?n[o]:void 0}catch{return null}},e),"deepValue");var j=s((e,t)=>{let r=null;for(;(r=/{{([a-z0-9.$_]+)}}/gim.exec(e))!==null;){let[n,o]=r,a=N(t,o);e=e.replace(n,String(a))}return e},"replaceStringValue");var x=s((e,t={})=>Object.entries(e).map(([r,n])=>(typeof n=="string"&&(n=j(n,t)),`${r}="${n}"`)).join(" "),"attributeToString");var R=new Map;async function E(e,t={},r,n=b){let{name:o,children:a,...l}=e;if(e["data-render-id"]=e["data-render-id"]||Math.random().toString(36).substring(2,15),{name:o,children:a,...l}=e,l.id){let c=R.get(l.id)||await n.fetchWidget?.(l.id);if(c){let g={...y(c?.inputs??[]),...l,env:{...t,assetsOrigin:n.assetsOrigin}};if(typeof c.render=="function"?a=[c.render(g)]:a=c.content?[c.content]:[],c.style){let w=typeof c.style=="function"?c.style(g):c.style;r.set(c.id||l.id,$(w))}R.set(l.id,c)}}return n.prod?a.join(""):`<${o} id="${l.id}" data-render-id="${l["data-render-id"]}">${await h(a,t,r,n)}</${o}>`}s(E,"parseWidget");async function h(e,t={},r,n=b){return e?(await Promise.all(e.map(async o=>{if(typeof o=="string")return j(o,t);let{name:a,children:l,...c}=o;if(a==="widget")return E(o,t,r,n);let g=x(c,t);return`<${a}`+(g?` ${g}`:"")+`>${await h(l,t,r,n)}</${a}>`}))).join(""):""}s(h,"parseTemplateContent");var L=new Map,B=s(async(e,t=b)=>{if(t=O(b,t),L.set(e.id,e),e.extends){let i=L.get(e.extends)||await t.fetchTemplate?.(e.extends);if(!i)throw new Error(`Template "${e.extends}" not found`);L.set(e.extends,i),e=O(i,e)}let{metadata:r={},scripts:n=[],stylesheets:o=[],links:a=[],fonts:l=[],favicons:c=[],content:g="",manifest:w,...d}=e??{},P=new Map,v=typeof g=="string"?g:await h(g,d,P,t);r.charset||(r.charset="UTF-8"),r.viewport||(r.viewport="width=device-width, initial-scale=1.0");let M=Object.entries(r).map(([i,p])=>i.startsWith("property:")?`<meta property="${i.replace("property:","")}" content="${p}">`:(i==="msapplication-TileImage"&&(p=`${t.assetsOrigin}${p}`),`<meta name="${i}" content="${p}">`)).join(""),S="";a.forEach(i=>{let p="<link ";Object.entries(i).forEach(([m,T])=>{p+=`${m}="${T}" `}),S+=p+"/>"});let A="";c.forEach(i=>{let p="<link ";Object.entries(i).forEach(([m,T])=>{p+=`${m}="${m==="href"?`${t.assetsOrigin}assets/favicons/`:""}${T}" `}),A+=p+"/>"});let C="";l.forEach(i=>{C+=`<link rel="preload" href="${t.assetsOrigin}assets/fonts/${i}" as="font" crossorigin>`});let f="";[...o,...Array.from(P.entries())].forEach(i=>{if(typeof i=="string")i.startsWith("http")?f+=`<link rel="stylesheet" href="${i}" >`:i.endsWith(".css")?f+=`<link rel="stylesheet" href="${t.assetsOrigin}stylesheets/${i}">`:f+=`<style>${i}</style>`;else if(Array.isArray(i)){let[p,m]=i;f+=`<style id="${p}">${$(m)}</style>`}else f+="<style",Object.entries(i.attributes).forEach(([p,m])=>{f+=`${p}="${m}" `}),f+="></style>"});let u="";return n.forEach(i=>{typeof i=="string"?i.startsWith("http")?u+=`<script src="${i}"><\/script>`:i.endsWith(".js")?u+=`<script src="${t.assetsOrigin}scripts/${i}"><\/script>`:u+=`<script>${i}<\/script>`:(u+="<script ",Object.entries(i).forEach(([p,m])=>{u+=`${p}="${m}" `}),u+="><\/script>")}),`<!doctype html>
1
+ "use strict";(()=>{var V=Object.defineProperty;var s=(e,t)=>V(e,"name",{value:t,configurable:!0});var W=s(e=>{let t=e.match(/(?:[A-Z]+(?=[A-Z][a-z])|[A-Z]+|[a-zA-Z])[^A-Z]*/g);if(t){for(let r=0;r<t.length;r++)t[r]=t[r].toLowerCase();return t.join("-")}return name},"turnCamelToKebabCasing");function $(e){return typeof e=="string"?e:Object.entries(e).map(([t,r])=>typeof r=="object"?`${W(t)} { ${$(r)} }`:`${W(t)}: ${r};`).join(" ")}s($,"parseStyle");function O(e,t){if(e===null||typeof e!="object"||t===null||typeof t!="object")return t;if(Array.isArray(e)&&Array.isArray(t))return Array.from(new Set([...e,...t]));let r=Array.isArray(e)?[...e]:{...e};for(let n in t)t.hasOwnProperty(n)&&(Array.isArray(e[n])&&Array.isArray(t[n])?r[n]=Array.from(new Set([...e[n],...t[n]])):r[n]=O(r[n],t[n]));return r}s(O,"mergeObjects");var b={fetchWidget:async()=>null,fetchTemplate:async()=>null,prod:!1,assetsOrigin:"/"};function y(e){return e.reduce((t,{name:r="",value:n,type:o,definitions:a=[]})=>{switch(o){case"group":t[r]=y(a);break;case"options":t[r]={value:n,options:a.map(l=>Object.values(y([l]))[0])};break;case"list":t[r]=a.map(l=>Object.values(y([l]))[0]);break;default:t[r]=n}return t},{})}s(y,"inputDefinitionsToObject");var N=s((e,t)=>String(t??"").split(".").filter(Boolean).reduce((n,o)=>{try{return n&&typeof n=="object"?n[o]:void 0}catch{return null}},e),"deepValue");var j=s((e,t)=>{let r=null;for(;(r=/{{([a-z0-9.$_]+)}}/gim.exec(e))!==null;){let[n,o]=r,a=N(t,o);e=e.replace(n,String(a))}return e},"replaceStringValue");var x=s((e,t={})=>Object.entries(e).map(([r,n])=>(typeof n=="string"&&(n=j(n,t)),`${r}="${n}"`)).join(" "),"attributeToString");var R=new Map;async function E(e,t={},r,n=b){let{name:o,children:a,...l}=e;if(e["data-render-id"]=e["data-render-id"]||Math.random().toString(36).substring(2,15),{name:o,children:a,...l}=e,l.id){let c=R.get(l.id)||await n.fetchWidget?.(l.id);if(c){let g={...y(c?.inputs??[]),...l,env:{...t,assetsOrigin:n.assetsOrigin,prod:n.prod}};if(typeof c.render=="function"?a=[c.render(g)]:a=c.content?[c.content]:[],c.style){let w=typeof c.style=="function"?c.style(g):c.style;r.set(c.id||l.id,$(w))}R.set(l.id,c)}}return n.prod?a.join(""):`<${o} id="${l.id}" data-render-id="${l["data-render-id"]}">${await h(a,t,r,n)}</${o}>`}s(E,"parseWidget");async function h(e,t={},r,n=b){return e?(await Promise.all(e.map(async o=>{if(typeof o=="string")return j(o,t);let{name:a,children:l,...c}=o;if(a==="widget")return E(o,t,r,n);let g=x(c,t);return`<${a}`+(g?` ${g}`:"")+`>${await h(l,t,r,n)}</${a}>`}))).join(""):""}s(h,"parseTemplateContent");var L=new Map,B=s(async(e,t=b)=>{if(t=O(b,t),L.set(e.id,e),e.extends){let i=L.get(e.extends)||await t.fetchTemplate?.(e.extends);if(!i)throw new Error(`Template "${e.extends}" not found`);L.set(e.extends,i),e=O(i,e)}let{metadata:r={},scripts:n=[],stylesheets:o=[],links:a=[],fonts:l=[],favicons:c=[],content:g="",manifest:w,...d}=e??{},P=new Map,v=typeof g=="string"?g:await h(g,d,P,t);r.charset||(r.charset="UTF-8"),r.viewport||(r.viewport="width=device-width, initial-scale=1.0");let M=Object.entries(r).map(([i,p])=>i.startsWith("property:")?`<meta property="${i.replace("property:","")}" content="${p}">`:(i==="msapplication-TileImage"&&(p=`${t.assetsOrigin}${p}`),`<meta name="${i}" content="${p}">`)).join(""),S="";a.forEach(i=>{let p="<link ";Object.entries(i).forEach(([m,T])=>{p+=`${m}="${T}" `}),S+=p+"/>"});let A="";c.forEach(i=>{let p="<link ";Object.entries(i).forEach(([m,T])=>{p+=`${m}="${m==="href"?`${t.assetsOrigin}assets/favicons/`:""}${T}" `}),A+=p+"/>"});let C="";l.forEach(i=>{C+=`<link rel="preload" href="${t.assetsOrigin}assets/fonts/${i}" as="font" crossorigin>`});let f="";[...o,...Array.from(P.entries())].forEach(i=>{if(typeof i=="string")i.startsWith("http")?f+=`<link rel="stylesheet" href="${i}" >`:i.endsWith(".css")?f+=`<link rel="stylesheet" href="${t.assetsOrigin}stylesheets/${i}">`:f+=`<style>${i}</style>`;else if(Array.isArray(i)){let[p,m]=i;f+=`<style id="${p}">${$(m)}</style>`}else f+="<style",Object.entries(i.attributes).forEach(([p,m])=>{f+=`${p}="${m}" `}),f+="></style>"});let u="";return n.forEach(i=>{typeof i=="string"?i.startsWith("http")?u+=`<script src="${i}"><\/script>`:i.endsWith(".js")?u+=`<script src="${t.assetsOrigin}scripts/${i}"><\/script>`:u+=`<script>${i}<\/script>`:(u+="<script ",Object.entries(i).forEach(([p,m])=>{u+=`${p}="${m}" `}),u+="><\/script>")}),`<!doctype html>
2
2
  <html lang="${d.lang??"en"}">
3
3
  <head>
4
4
  <title>${d.title}</title>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/utils/turn-camel-to-kebab-casing.ts", "../src/parse-style.ts", "../src/utils/merge-objects.ts", "../src/default-parse-options.ts", "../src/utils/input-definitions-to-object.ts", "../src/utils/deep-value.ts", "../src/utils/replace-string-value.ts", "../src/utils/attributes-to-string.ts", "../src/parse-widget.ts", "../src/parse-template.ts", "../src/utils/merge-data-into-input-definition.ts", "../src/client.ts"],
4
- "sourcesContent": ["export const turnCamelToKebabCasing = (str: string) => {\n const match = str.match(/(?:[A-Z]+(?=[A-Z][a-z])|[A-Z]+|[a-zA-Z])[^A-Z]*/g)\n\n if (match) {\n for (let i = 0; i < match.length; i++) {\n match[i] = match[i].toLowerCase()\n }\n\n return match.join('-')\n }\n\n return name\n}\n", "import { Style } from './types.ts'\nimport { turnCamelToKebabCasing } from './utils/turn-camel-to-kebab-casing.ts'\n\nexport function parseStyle(style: Style): string {\n if (typeof style === 'string') {\n return style\n }\n\n return Object.entries(style)\n .map(([key, value]) => {\n if (typeof value === 'object') {\n return `${turnCamelToKebabCasing(key)} { ${parseStyle(value)} }`\n }\n\n return `${turnCamelToKebabCasing(key)}: ${value};`\n })\n .join(' ')\n}\n", "export function mergeObjects(a: unknown, b: unknown) {\n if (a === null || typeof a !== 'object') return b\n if (b === null || typeof b !== 'object') return b\n\n if (Array.isArray(a) && Array.isArray(b)) {\n return Array.from(new Set([...a, ...b]))\n }\n\n const obj = Array.isArray(a) ? [...a] : { ...a }\n\n for (const key in b) {\n if (b.hasOwnProperty(key)) {\n // @ts-expect-error a or b in unknown\n if (Array.isArray(a[key]) && Array.isArray(b[key])) {\n // @ts-expect-error a or b in unknown\n obj[key] = Array.from(new Set([...a[key], ...b[key]]))\n } else {\n // @ts-expect-error a or b in unknown\n obj[key] = mergeObjects(obj[key], b[key])\n }\n }\n }\n\n return obj\n}\n", "import { parseOptions } from './types.ts'\n\nexport const defaultOptions: parseOptions = {\n fetchWidget: async () => null,\n fetchTemplate: async () => null,\n prod: false,\n assetsOrigin: '/',\n}\n", "import { ObjectLiteral, InputDefinition } from '../types.ts'\n\nexport function inputDefinitionsToObject(inputDefinitions: InputDefinition[]) {\n return inputDefinitions.reduce(\n (acc, { name = '', value, type, definitions = [] }) => {\n switch (type) {\n case 'group':\n acc[name] = inputDefinitionsToObject(definitions)\n break\n case 'options':\n acc[name] = {\n value,\n options: definitions.map((item) => {\n return Object.values(\n inputDefinitionsToObject([item])\n )[0]\n }),\n }\n break\n case 'list':\n acc[name] = definitions.map((item) => {\n return Object.values(\n inputDefinitionsToObject([item])\n )[0]\n })\n break\n default:\n acc[name] = value\n }\n\n return acc\n },\n {} as ObjectLiteral\n )\n}\n", "import { ObjectLiteral } from '../types.ts'\n\nexport const deepValue = (obj: ObjectLiteral | unknown[], key: string) => {\n const keyParts = String(key ?? '')\n .split('.')\n .filter(Boolean)\n\n return keyParts.reduce((acc, k) => {\n try {\n // @ts-expect-error No index signature with a parameter of type string\n return acc && typeof acc === 'object' ? acc[k] : undefined\n } catch (e) {\n return null\n }\n }, obj) as unknown\n}\n", "import { deepValue } from './deep-value.ts'\n\nexport const replaceStringValue = (\n value: string,\n data: Record<string, unknown>\n) => {\n let match = null\n\n while ((match = /{{([a-z0-9.$_]+)}}/gim.exec(value)) !== null) {\n const [full, key] = match\n const dv = deepValue(data, key)\n\n value = value.replace(full, String(dv))\n }\n\n return value\n}\n", "import { replaceStringValue } from './replace-string-value.ts'\n\nexport const attributeToString = (\n attributes: Record<string, unknown>,\n data = {}\n) => {\n return Object.entries(attributes)\n .map(([name, value]) => {\n if (typeof value === 'string') {\n value = replaceStringValue(value, data)\n }\n\n return `${name}=\"${value}\"`\n })\n .join(' ')\n}\n", "import {\n parseOptions,\n TemplateContentNode,\n Widget,\n Style,\n TemplateContent,\n} from './types.js'\nimport { defaultOptions } from './default-parse-options.ts'\nimport { inputDefinitionsToObject } from './utils/input-definitions-to-object.ts'\nimport { parseStyle } from './parse-style.ts'\nimport { attributeToString } from './utils/attributes-to-string.ts'\nimport { replaceStringValue } from './utils/replace-string-value.ts'\n\nconst widgetCache: Map<string, Widget> = new Map()\n\nexport async function parseWidget(\n node: TemplateContentNode,\n data = {},\n widgetStyles: Map<string, Style>,\n opt: parseOptions = defaultOptions\n) {\n let { name, children, ...attributes } = node\n\n node['data-render-id'] =\n node['data-render-id'] || Math.random().toString(36).substring(2, 15)\n ;({ name, children, ...attributes } = node)\n\n if (attributes.id) {\n const widget =\n widgetCache.get(attributes.id) ||\n (await opt.fetchWidget?.(attributes.id))\n\n if (widget) {\n const props = {\n ...inputDefinitionsToObject(widget?.inputs ?? []),\n ...attributes,\n env: {\n ...data,\n assetsOrigin: opt.assetsOrigin,\n },\n }\n\n if (typeof widget.render === 'function') {\n children = [widget.render(props)]\n } else {\n children = widget.content ? [widget.content] : []\n }\n\n if (widget.style) {\n const styleContent =\n typeof widget.style === 'function'\n ? widget.style(props)\n : widget.style\n widgetStyles.set(\n widget.id || attributes.id,\n parseStyle(styleContent)\n )\n }\n\n widgetCache.set(attributes.id, widget)\n }\n }\n\n if (opt.prod) {\n return children.join('')\n }\n\n return (\n `<${name} id=\"${attributes.id}\" data-render-id=\"${attributes['data-render-id']}\"` +\n `>${await parseTemplateContent(children, data, widgetStyles, opt)}</${name}>`\n )\n}\n\nexport async function parseTemplateContent(\n content: TemplateContent,\n data = {},\n widgetStyles: Map<string, Style>,\n opt: parseOptions = defaultOptions\n): Promise<string> {\n if (!content) {\n return ''\n }\n\n return (\n await Promise.all(\n content.map(async (node) => {\n if (typeof node === 'string') {\n return replaceStringValue(node, data)\n }\n\n const { name, children, ...attributes } = node\n\n if (name === 'widget') {\n return parseWidget(\n node as TemplateContentNode,\n data,\n widgetStyles,\n opt\n )\n }\n\n const attrs = attributeToString(attributes, data)\n\n return (\n `<${name}` +\n (attrs ? ` ${attrs}` : '') +\n `>${await parseTemplateContent(children, data, widgetStyles, opt)}</${name}>`\n )\n })\n )\n ).join('')\n}\n", "import { parseOptions, Template, TemplateContent } from './types.ts'\nimport { mergeObjects } from './utils/merge-objects.ts'\nimport { defaultOptions } from './default-parse-options.ts'\nimport { parseTemplateContent } from './parse-widget.ts'\nimport { parseStyle } from './parse-style.ts'\n\nconst tempCache: Map<string, Template> = new Map()\n\nexport const parseTemplate = async (\n temp: Template,\n opt: parseOptions = defaultOptions\n) => {\n opt = mergeObjects(defaultOptions, opt) as parseOptions\n tempCache.set(temp.id, temp)\n\n if (temp.extends) {\n const base =\n tempCache.get(temp.extends) ||\n (await opt.fetchTemplate?.(temp.extends))\n\n if (!base) {\n throw new Error(`Template \"${temp.extends}\" not found`)\n }\n\n tempCache.set(temp.extends, base)\n temp = mergeObjects(base, temp) as Template\n }\n\n const {\n metadata = {},\n scripts = [],\n stylesheets = [],\n links = [],\n fonts = [],\n favicons = [],\n content = '',\n manifest,\n ...data\n } = temp ?? {}\n\n const widgetStyles = new Map()\n\n const bodyContent =\n typeof content === 'string'\n ? content\n : await parseTemplateContent(\n content as TemplateContent,\n data,\n widgetStyles,\n opt\n )\n\n if (!metadata['charset']) {\n metadata['charset'] = 'UTF-8'\n }\n\n if (!metadata['viewport']) {\n metadata['viewport'] = 'width=device-width, initial-scale=1.0'\n }\n\n const metas = Object.entries(metadata)\n .map(([key, value]) => {\n if (key.startsWith('property:')) {\n return `<meta property=\"${key.replace('property:', '')}\" content=\"${value}\">`\n }\n\n if (key === 'msapplication-TileImage') {\n value = `${opt.assetsOrigin}${value}`\n }\n\n return `<meta name=\"${key}\" content=\"${value}\">`\n })\n .join('')\n\n let ls = ''\n\n links.forEach((link) => {\n let l = '<link '\n\n Object.entries(link).forEach(([key, value]) => {\n l += `${key}=\"${value}\" `\n })\n\n ls += l + '/>'\n })\n\n let fi = ''\n\n favicons.forEach((link) => {\n let l = '<link '\n\n Object.entries(link).forEach(([key, value]) => {\n l += `${key}=\"${key === 'href' ? `${opt.assetsOrigin}assets/favicons/` : ''}${value}\" `\n })\n\n fi += l + '/>'\n })\n\n let ft = ''\n\n fonts.forEach((font) => {\n ft += `<link rel=\"preload\" href=\"${opt.assetsOrigin}assets/fonts/${font}\" as=\"font\" crossorigin>`\n })\n\n let st = ''\n\n ;[...stylesheets, ...Array.from(widgetStyles.entries())].forEach(\n (stylesheet) => {\n if (typeof stylesheet === 'string') {\n if (stylesheet.startsWith('http')) {\n st += `<link rel=\"stylesheet\" href=\"${stylesheet}\" >`\n } else if (stylesheet.endsWith('.css')) {\n st += `<link rel=\"stylesheet\" href=\"${opt.assetsOrigin}stylesheets/${stylesheet}\">`\n } else {\n st += `<style>${stylesheet}</style>`\n }\n } else if (Array.isArray(stylesheet)) {\n const [id, style] = stylesheet\n st += `<style id=\"${id}\">${parseStyle(style)}</style>`\n } else {\n st += `<style`\n\n Object.entries(stylesheet.attributes).forEach(\n ([key, value]) => {\n st += `${key}=\"${value}\" `\n }\n )\n\n st += '></style>'\n }\n }\n )\n\n let sc = ''\n\n scripts.forEach((script) => {\n if (typeof script === 'string') {\n if (script.startsWith('http')) {\n sc += `<script src=\"${script}\"></script>`\n } else if (script.endsWith('.js')) {\n sc += `<script src=\"${opt.assetsOrigin}scripts/${script}\"></script>`\n } else {\n sc += `<script>${script}</script>`\n }\n } else {\n sc += '<script '\n\n Object.entries(script).forEach(([key, value]) => {\n sc += `${key}=\"${value}\" `\n })\n\n sc += `></script>`\n }\n })\n\n return `<!doctype html>\n<html lang=\"${data.lang ?? 'en'}\">\n<head>\n <title>${data.title}</title>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <!-- og -->\n <meta property=\"og:title\" content=\"${data.title}\">\n <meta property=\"og:type\" content=\"website\">\n <meta property=\"og:description\" content=\"${data.description}\">\n <meta property=\"og:image\" content=\"${data.image}\">\n <meta property=\"og:url\" content=\"${data.domain}\">\n <meta property=\"og:site_name\" content=\"${data.title}\">\n ${metas ? `<!-- metas -->${metas}` : ''}\n ${fi ? `<!-- favicons -->${fi}` : ''}\n ${ft ? `<!-- fonts -->${ft}` : ''}\n ${ls ? `<!-- links -->${ls}` : ''}\n ${manifest ? `<link rel=\"manifest\" href=\"${opt.assetsOrigin}assets/${manifest}\">` : ''}\n ${st ? `<!-- stylesheets -->${st}` : ''}\n</head>\n<body>\n${bodyContent}\n${sc ? '<!-- scripts -->' + sc : ''}\n</body>\n</html>`\n .replace(/\\s{2,}/g, ' ')\n .replace(/[\\t\\n]+/g, '')\n}\n", "import {\n InputDefinition,\n ObjectLiteral,\n InputDefinitionType,\n} from '../types.ts'\n\nconst dataTypeToInputType = (data: unknown) => {\n switch (typeof data) {\n case 'number':\n return InputDefinitionType.Number\n case 'boolean':\n return InputDefinitionType.Boolean\n case 'object':\n if (Array.isArray(data)) {\n return InputDefinitionType.List\n } else {\n return InputDefinitionType.Group\n }\n default:\n return InputDefinitionType.Text\n }\n}\n\nexport function mergeDataIntoInputDefinition(\n data: unknown,\n def: InputDefinition\n): InputDefinition {\n switch (def.type) {\n case 'group':\n return {\n ...def,\n definitions: Object.entries((data ?? {}) as ObjectLiteral).map(\n ([k, v]) => {\n return mergeDataIntoInputDefinition(\n v,\n ((def.definitions ?? []) as InputDefinition[]).find(\n (item) => item.name === k\n ) ?? {\n name: k,\n type: dataTypeToInputType(v),\n value: v,\n }\n )\n }\n ),\n }\n case 'list':\n return {\n ...def,\n definitions: ((data ?? []) as Array<unknown>).map(\n (item, idx) => {\n return mergeDataIntoInputDefinition(\n item,\n ((def.definitions ?? [])[idx] ?? {\n name: String(idx),\n type: dataTypeToInputType(item),\n value: item,\n }) as InputDefinition\n )\n }\n ),\n }\n default:\n return {\n ...def,\n value: data,\n }\n }\n}\n", "import { parseStyle } from './parse-style.ts'\nimport { parseTemplate } from './parse-template.ts'\nimport { parseTemplateContent, parseWidget } from './parse-widget.ts'\nimport { attributeToString } from './utils/attributes-to-string.ts'\nimport { inputDefinitionsToObject } from './utils/input-definitions-to-object.ts'\nimport { mergeDataIntoInputDefinition } from './utils/merge-data-into-input-definition.ts'\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nif (window) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.BFS = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ...(window.BFS || {}),\n SITE_BUILDER: {\n inputDefinitionsToObject,\n mergeDataIntoInputDefinition,\n attributeToString,\n parseTemplate,\n parseTemplateContent,\n parseWidget,\n parseStyle,\n },\n }\n}\n"],
5
- "mappings": "kGAAO,IAAMA,EAAyBC,EAACC,GAAgB,CACnD,IAAMC,EAAQD,EAAI,MAAM,kDAAkD,EAE1E,GAAIC,EAAO,CACP,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAC9BD,EAAMC,CAAC,EAAID,EAAMC,CAAC,EAAE,YAAY,EAGpC,OAAOD,EAAM,KAAK,GAAG,CACzB,CAEA,OAAO,IACX,EAZsC,0BCG/B,SAASE,EAAWC,EAAsB,CAC7C,OAAI,OAAOA,GAAU,SACVA,EAGJ,OAAO,QAAQA,CAAK,EACtB,IAAI,CAAC,CAACC,EAAKC,CAAK,IACT,OAAOA,GAAU,SACV,GAAGC,EAAuBF,CAAG,CAAC,MAAMF,EAAWG,CAAK,CAAC,KAGzD,GAAGC,EAAuBF,CAAG,CAAC,KAAKC,CAAK,GAClD,EACA,KAAK,GAAG,CACjB,CAdgBE,EAAAL,EAAA,cCHT,SAASM,EAAaC,EAAYC,EAAY,CAEjD,GADID,IAAM,MAAQ,OAAOA,GAAM,UAC3BC,IAAM,MAAQ,OAAOA,GAAM,SAAU,OAAOA,EAEhD,GAAI,MAAM,QAAQD,CAAC,GAAK,MAAM,QAAQC,CAAC,EACnC,OAAO,MAAM,KAAK,IAAI,IAAI,CAAC,GAAGD,EAAG,GAAGC,CAAC,CAAC,CAAC,EAG3C,IAAMC,EAAM,MAAM,QAAQF,CAAC,EAAI,CAAC,GAAGA,CAAC,EAAI,CAAE,GAAGA,CAAE,EAE/C,QAAWG,KAAOF,EACVA,EAAE,eAAeE,CAAG,IAEhB,MAAM,QAAQH,EAAEG,CAAG,CAAC,GAAK,MAAM,QAAQF,EAAEE,CAAG,CAAC,EAE7CD,EAAIC,CAAG,EAAI,MAAM,KAAK,IAAI,IAAI,CAAC,GAAGH,EAAEG,CAAG,EAAG,GAAGF,EAAEE,CAAG,CAAC,CAAC,CAAC,EAGrDD,EAAIC,CAAG,EAAIJ,EAAaG,EAAIC,CAAG,EAAGF,EAAEE,CAAG,CAAC,GAKpD,OAAOD,CACX,CAxBgBE,EAAAL,EAAA,gBCET,IAAMM,EAA+B,CACxC,YAAa,SAAY,KACzB,cAAe,SAAY,KAC3B,KAAM,GACN,aAAc,GAClB,ECLO,SAASC,EAAyBC,EAAqC,CAC1E,OAAOA,EAAiB,OACpB,CAACC,EAAK,CAAE,KAAAC,EAAO,GAAI,MAAAC,EAAO,KAAAC,EAAM,YAAAC,EAAc,CAAC,CAAE,IAAM,CACnD,OAAQD,EAAM,CACV,IAAK,QACDH,EAAIC,CAAI,EAAIH,EAAyBM,CAAW,EAChD,MACJ,IAAK,UACDJ,EAAIC,CAAI,EAAI,CACR,MAAAC,EACA,QAASE,EAAY,IAAKC,GACf,OAAO,OACVP,EAAyB,CAACO,CAAI,CAAC,CACnC,EAAE,CAAC,CACN,CACL,EACA,MACJ,IAAK,OACDL,EAAIC,CAAI,EAAIG,EAAY,IAAKC,GAClB,OAAO,OACVP,EAAyB,CAACO,CAAI,CAAC,CACnC,EAAE,CAAC,CACN,EACD,MACJ,QACIL,EAAIC,CAAI,EAAIC,CACpB,CAEA,OAAOF,CACX,EACA,CAAC,CACL,CACJ,CAhCgBM,EAAAR,EAAA,4BCAT,IAAMS,EAAYC,EAAA,CAACC,EAAgCC,IACrC,OAAOA,GAAO,EAAE,EAC5B,MAAM,GAAG,EACT,OAAO,OAAO,EAEH,OAAO,CAACC,EAAKC,IAAM,CAC/B,GAAI,CAEA,OAAOD,GAAO,OAAOA,GAAQ,SAAWA,EAAIC,CAAC,EAAI,MACrD,MAAY,CACR,OAAO,IACX,CACJ,EAAGH,CAAG,EAZe,aCAlB,IAAMI,EAAqBC,EAAA,CAC9BC,EACAC,IACC,CACD,IAAIC,EAAQ,KAEZ,MAAQA,EAAQ,wBAAwB,KAAKF,CAAK,KAAO,MAAM,CAC3D,GAAM,CAACG,EAAMC,CAAG,EAAIF,EACdG,EAAKC,EAAUL,EAAMG,CAAG,EAE9BJ,EAAQA,EAAM,QAAQG,EAAM,OAAOE,CAAE,CAAC,CAC1C,CAEA,OAAOL,CACX,EAdkC,sBCA3B,IAAMO,EAAoBC,EAAA,CAC7BC,EACAC,EAAO,CAAC,IAED,OAAO,QAAQD,CAAU,EAC3B,IAAI,CAAC,CAACE,EAAMC,CAAK,KACV,OAAOA,GAAU,WACjBA,EAAQC,EAAmBD,EAAOF,CAAI,GAGnC,GAAGC,CAAI,KAAKC,CAAK,IAC3B,EACA,KAAK,GAAG,EAZgB,qBCWjC,IAAME,EAAmC,IAAI,IAE7C,eAAsBC,EAClBC,EACAC,EAAO,CAAC,EACRC,EACAC,EAAoBC,EACtB,CACE,GAAI,CAAE,KAAAC,EAAM,SAAAC,EAAU,GAAGC,CAAW,EAAIP,EAMxC,GAJAA,EAAK,gBAAgB,EACjBA,EAAK,gBAAgB,GAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,EACtE,CAAE,KAAAK,EAAM,SAAAC,EAAU,GAAGC,CAAW,EAAIP,EAElCO,EAAW,GAAI,CACf,IAAMC,EACFV,EAAY,IAAIS,EAAW,EAAE,GAC5B,MAAMJ,EAAI,cAAcI,EAAW,EAAE,EAE1C,GAAIC,EAAQ,CACR,IAAMC,EAAQ,CACV,GAAGC,EAAyBF,GAAQ,QAAU,CAAC,CAAC,EAChD,GAAGD,EACH,IAAK,CACD,GAAGN,EACH,aAAcE,EAAI,YACtB,CACJ,EAQA,GANI,OAAOK,EAAO,QAAW,WACzBF,EAAW,CAACE,EAAO,OAAOC,CAAK,CAAC,EAEhCH,EAAWE,EAAO,QAAU,CAACA,EAAO,OAAO,EAAI,CAAC,EAGhDA,EAAO,MAAO,CACd,IAAMG,EACF,OAAOH,EAAO,OAAU,WAClBA,EAAO,MAAMC,CAAK,EAClBD,EAAO,MACjBN,EAAa,IACTM,EAAO,IAAMD,EAAW,GACxBK,EAAWD,CAAY,CAC3B,CACJ,CAEAb,EAAY,IAAIS,EAAW,GAAIC,CAAM,CACzC,CACJ,CAEA,OAAIL,EAAI,KACGG,EAAS,KAAK,EAAE,EAIvB,IAAID,CAAI,QAAQE,EAAW,EAAE,qBAAqBA,EAAW,gBAAgB,CAAC,KAC1E,MAAMM,EAAqBP,EAAUL,EAAMC,EAAcC,CAAG,CAAC,KAAKE,CAAI,GAElF,CAxDsBS,EAAAf,EAAA,eA0DtB,eAAsBc,EAClBE,EACAd,EAAO,CAAC,EACRC,EACAC,EAAoBC,EACL,CACf,OAAKW,GAKD,MAAM,QAAQ,IACVA,EAAQ,IAAI,MAAOf,GAAS,CACxB,GAAI,OAAOA,GAAS,SAChB,OAAOgB,EAAmBhB,EAAMC,CAAI,EAGxC,GAAM,CAAE,KAAAI,EAAM,SAAAC,EAAU,GAAGC,CAAW,EAAIP,EAE1C,GAAIK,IAAS,SACT,OAAON,EACHC,EACAC,EACAC,EACAC,CACJ,EAGJ,IAAMc,EAAQC,EAAkBX,EAAYN,CAAI,EAEhD,MACI,IAAII,CAAI,IACPY,EAAQ,IAAIA,CAAK,GAAK,IACvB,IAAI,MAAMJ,EAAqBP,EAAUL,EAAMC,EAAcC,CAAG,CAAC,KAAKE,CAAI,GAElF,CAAC,CACL,GACF,KAAK,EAAE,EA9BE,EA+Bf,CAtCsBS,EAAAD,EAAA,wBCnEtB,IAAMM,EAAmC,IAAI,IAEhCC,EAAgBC,EAAA,MACzBC,EACAC,EAAoBC,IACnB,CAID,GAHAD,EAAME,EAAaD,EAAgBD,CAAG,EACtCJ,EAAU,IAAIG,EAAK,GAAIA,CAAI,EAEvBA,EAAK,QAAS,CACd,IAAMI,EACFP,EAAU,IAAIG,EAAK,OAAO,GACzB,MAAMC,EAAI,gBAAgBD,EAAK,OAAO,EAE3C,GAAI,CAACI,EACD,MAAM,IAAI,MAAM,aAAaJ,EAAK,OAAO,aAAa,EAG1DH,EAAU,IAAIG,EAAK,QAASI,CAAI,EAChCJ,EAAOG,EAAaC,EAAMJ,CAAI,CAClC,CAEA,GAAM,CACF,SAAAK,EAAW,CAAC,EACZ,QAAAC,EAAU,CAAC,EACX,YAAAC,EAAc,CAAC,EACf,MAAAC,EAAQ,CAAC,EACT,MAAAC,EAAQ,CAAC,EACT,SAAAC,EAAW,CAAC,EACZ,QAAAC,EAAU,GACV,SAAAC,EACA,GAAGC,CACP,EAAIb,GAAQ,CAAC,EAEPc,EAAe,IAAI,IAEnBC,EACF,OAAOJ,GAAY,SACbA,EACA,MAAMK,EACFL,EACAE,EACAC,EACAb,CACJ,EAELI,EAAS,UACVA,EAAS,QAAa,SAGrBA,EAAS,WACVA,EAAS,SAAc,yCAG3B,IAAMY,EAAQ,OAAO,QAAQZ,CAAQ,EAChC,IAAI,CAAC,CAACa,EAAKC,CAAK,IACTD,EAAI,WAAW,WAAW,EACnB,mBAAmBA,EAAI,QAAQ,YAAa,EAAE,CAAC,cAAcC,CAAK,MAGzED,IAAQ,4BACRC,EAAQ,GAAGlB,EAAI,YAAY,GAAGkB,CAAK,IAGhC,eAAeD,CAAG,cAAcC,CAAK,KAC/C,EACA,KAAK,EAAE,EAERC,EAAK,GAETZ,EAAM,QAASa,GAAS,CACpB,IAAIC,EAAI,SAER,OAAO,QAAQD,CAAI,EAAE,QAAQ,CAAC,CAACH,EAAKC,CAAK,IAAM,CAC3CG,GAAK,GAAGJ,CAAG,KAAKC,CAAK,IACzB,CAAC,EAEDC,GAAME,EAAI,IACd,CAAC,EAED,IAAIC,EAAK,GAETb,EAAS,QAASW,GAAS,CACvB,IAAIC,EAAI,SAER,OAAO,QAAQD,CAAI,EAAE,QAAQ,CAAC,CAACH,EAAKC,CAAK,IAAM,CAC3CG,GAAK,GAAGJ,CAAG,KAAKA,IAAQ,OAAS,GAAGjB,EAAI,YAAY,mBAAqB,EAAE,GAAGkB,CAAK,IACvF,CAAC,EAEDI,GAAMD,EAAI,IACd,CAAC,EAED,IAAIE,EAAK,GAETf,EAAM,QAASgB,GAAS,CACpBD,GAAM,6BAA6BvB,EAAI,YAAY,gBAAgBwB,CAAI,0BAC3E,CAAC,EAED,IAAIC,EAAK,GAER,CAAC,GAAGnB,EAAa,GAAG,MAAM,KAAKO,EAAa,QAAQ,CAAC,CAAC,EAAE,QACpDa,GAAe,CACZ,GAAI,OAAOA,GAAe,SAClBA,EAAW,WAAW,MAAM,EAC5BD,GAAM,gCAAgCC,CAAU,MACzCA,EAAW,SAAS,MAAM,EACjCD,GAAM,gCAAgCzB,EAAI,YAAY,eAAe0B,CAAU,KAE/ED,GAAM,UAAUC,CAAU,mBAEvB,MAAM,QAAQA,CAAU,EAAG,CAClC,GAAM,CAACC,EAAIC,CAAK,EAAIF,EACpBD,GAAM,cAAcE,CAAE,KAAKE,EAAWD,CAAK,CAAC,UAChD,MACIH,GAAM,SAEN,OAAO,QAAQC,EAAW,UAAU,EAAE,QAClC,CAAC,CAACT,EAAKC,CAAK,IAAM,CACdO,GAAM,GAAGR,CAAG,KAAKC,CAAK,IAC1B,CACJ,EAEAO,GAAM,WAEd,CACJ,EAEA,IAAIK,EAAK,GAET,OAAAzB,EAAQ,QAAS0B,GAAW,CACpB,OAAOA,GAAW,SACdA,EAAO,WAAW,MAAM,EACxBD,GAAM,gBAAgBC,CAAM,eACrBA,EAAO,SAAS,KAAK,EAC5BD,GAAM,gBAAgB9B,EAAI,YAAY,WAAW+B,CAAM,eAEvDD,GAAM,WAAWC,CAAM,cAG3BD,GAAM,WAEN,OAAO,QAAQC,CAAM,EAAE,QAAQ,CAAC,CAACd,EAAKC,CAAK,IAAM,CAC7CY,GAAM,GAAGb,CAAG,KAAKC,CAAK,IAC1B,CAAC,EAEDY,GAAM,cAEd,CAAC,EAEM;AAAA,cACGlB,EAAK,MAAQ,IAAI;AAAA;AAAA,WAEpBA,EAAK,KAAK;AAAA;AAAA;AAAA;AAAA,uCAIkBA,EAAK,KAAK;AAAA;AAAA,6CAEJA,EAAK,WAAW;AAAA,uCACtBA,EAAK,KAAK;AAAA,qCACZA,EAAK,MAAM;AAAA,2CACLA,EAAK,KAAK;AAAA,IACjDI,EAAQ,iBAAiBA,CAAK,GAAK,EAAE;AAAA,IACrCM,EAAK,oBAAoBA,CAAE,GAAK,EAAE;AAAA,IAClCC,EAAK,iBAAiBA,CAAE,GAAK,EAAE;AAAA,IAC/BJ,EAAK,iBAAiBA,CAAE,GAAK,EAAE;AAAA,IAC/BR,EAAW,8BAA8BX,EAAI,YAAY,UAAUW,CAAQ,KAAO,EAAE;AAAA,IACpFc,EAAK,uBAAuBA,CAAE,GAAK,EAAE;AAAA;AAAA;AAAA,EAGvCX,CAAW;AAAA,EACXgB,EAAK,mBAAqBA,EAAK,EAAE;AAAA;AAAA,SAG1B,QAAQ,UAAW,GAAG,EACtB,QAAQ,WAAY,EAAE,CAC/B,EA9K6B,iBCF7B,IAAME,EAAsBC,EAACC,GAAkB,CAC3C,OAAQ,OAAOA,EAAM,CACjB,IAAK,SACD,eACJ,IAAK,UACD,gBACJ,IAAK,SACD,OAAI,MAAM,QAAQA,CAAI,iBAK1B,QACI,YACR,CACJ,EAf4B,uBAiBrB,SAASC,EACZD,EACAE,EACe,CACf,OAAQA,EAAI,KAAM,CACd,IAAK,QACD,MAAO,CACH,GAAGA,EACH,YAAa,OAAO,QAASF,GAAQ,CAAC,CAAmB,EAAE,IACvD,CAAC,CAACG,EAAGC,CAAC,IACKH,EACHG,GACEF,EAAI,aAAe,CAAC,GAAyB,KAC1CG,GAASA,EAAK,OAASF,CAC5B,GAAK,CACD,KAAMA,EACN,KAAML,EAAoBM,CAAC,EAC3B,MAAOA,CACX,CACJ,CAER,CACJ,EACJ,IAAK,OACD,MAAO,CACH,GAAGF,EACH,aAAeF,GAAQ,CAAC,GAAsB,IAC1C,CAACK,EAAMC,IACIL,EACHI,GACEH,EAAI,aAAe,CAAC,GAAGI,CAAG,GAAK,CAC7B,KAAM,OAAOA,CAAG,EAChB,KAAMR,EAAoBO,CAAI,EAC9B,MAAOA,CACX,CACJ,CAER,CACJ,EACJ,QACI,MAAO,CACH,GAAGH,EACH,MAAOF,CACX,CACR,CACJ,CA7CgBD,EAAAE,EAAA,gCCdZ,SAGA,OAAO,IAAM,CAGT,GAAI,OAAO,KAAO,CAAC,EACnB,aAAc,CACV,yBAAAM,EACA,6BAAAC,EACA,kBAAAC,EACA,cAAAC,EACA,qBAAAC,EACA,YAAAC,EACA,WAAAC,CACJ,CACJ",
4
+ "sourcesContent": ["export const turnCamelToKebabCasing = (str: string) => {\n const match = str.match(/(?:[A-Z]+(?=[A-Z][a-z])|[A-Z]+|[a-zA-Z])[^A-Z]*/g)\n\n if (match) {\n for (let i = 0; i < match.length; i++) {\n match[i] = match[i].toLowerCase()\n }\n\n return match.join('-')\n }\n\n return name\n}\n", "import { Style } from './types.ts'\nimport { turnCamelToKebabCasing } from './utils/turn-camel-to-kebab-casing.ts'\n\nexport function parseStyle(style: Style): string {\n if (typeof style === 'string') {\n return style\n }\n\n return Object.entries(style)\n .map(([key, value]) => {\n if (typeof value === 'object') {\n return `${turnCamelToKebabCasing(key)} { ${parseStyle(value)} }`\n }\n\n return `${turnCamelToKebabCasing(key)}: ${value};`\n })\n .join(' ')\n}\n", "export function mergeObjects(a: unknown, b: unknown) {\n if (a === null || typeof a !== 'object') return b\n if (b === null || typeof b !== 'object') return b\n\n if (Array.isArray(a) && Array.isArray(b)) {\n return Array.from(new Set([...a, ...b]))\n }\n\n const obj = Array.isArray(a) ? [...a] : { ...a }\n\n for (const key in b) {\n if (b.hasOwnProperty(key)) {\n // @ts-expect-error a or b in unknown\n if (Array.isArray(a[key]) && Array.isArray(b[key])) {\n // @ts-expect-error a or b in unknown\n obj[key] = Array.from(new Set([...a[key], ...b[key]]))\n } else {\n // @ts-expect-error a or b in unknown\n obj[key] = mergeObjects(obj[key], b[key])\n }\n }\n }\n\n return obj\n}\n", "import { parseOptions } from './types.ts'\n\nexport const defaultOptions: parseOptions = {\n fetchWidget: async () => null,\n fetchTemplate: async () => null,\n prod: false,\n assetsOrigin: '/',\n}\n", "import { ObjectLiteral, InputDefinition } from '../types.ts'\n\nexport function inputDefinitionsToObject(inputDefinitions: InputDefinition[]) {\n return inputDefinitions.reduce(\n (acc, { name = '', value, type, definitions = [] }) => {\n switch (type) {\n case 'group':\n acc[name] = inputDefinitionsToObject(definitions)\n break\n case 'options':\n acc[name] = {\n value,\n options: definitions.map((item) => {\n return Object.values(\n inputDefinitionsToObject([item])\n )[0]\n }),\n }\n break\n case 'list':\n acc[name] = definitions.map((item) => {\n return Object.values(\n inputDefinitionsToObject([item])\n )[0]\n })\n break\n default:\n acc[name] = value\n }\n\n return acc\n },\n {} as ObjectLiteral\n )\n}\n", "import { ObjectLiteral } from '../types.ts'\n\nexport const deepValue = (obj: ObjectLiteral | unknown[], key: string) => {\n const keyParts = String(key ?? '')\n .split('.')\n .filter(Boolean)\n\n return keyParts.reduce((acc, k) => {\n try {\n // @ts-expect-error No index signature with a parameter of type string\n return acc && typeof acc === 'object' ? acc[k] : undefined\n } catch (e) {\n return null\n }\n }, obj) as unknown\n}\n", "import { deepValue } from './deep-value.ts'\n\nexport const replaceStringValue = (\n value: string,\n data: Record<string, unknown>\n) => {\n let match = null\n\n while ((match = /{{([a-z0-9.$_]+)}}/gim.exec(value)) !== null) {\n const [full, key] = match\n const dv = deepValue(data, key)\n\n value = value.replace(full, String(dv))\n }\n\n return value\n}\n", "import { replaceStringValue } from './replace-string-value.ts'\n\nexport const attributeToString = (\n attributes: Record<string, unknown>,\n data = {}\n) => {\n return Object.entries(attributes)\n .map(([name, value]) => {\n if (typeof value === 'string') {\n value = replaceStringValue(value, data)\n }\n\n return `${name}=\"${value}\"`\n })\n .join(' ')\n}\n", "import {\n parseOptions,\n TemplateContentNode,\n Widget,\n Style,\n TemplateContent,\n} from './types.js'\nimport { defaultOptions } from './default-parse-options.ts'\nimport { inputDefinitionsToObject } from './utils/input-definitions-to-object.ts'\nimport { parseStyle } from './parse-style.ts'\nimport { attributeToString } from './utils/attributes-to-string.ts'\nimport { replaceStringValue } from './utils/replace-string-value.ts'\n\nconst widgetCache: Map<string, Widget> = new Map()\n\nexport async function parseWidget(\n node: TemplateContentNode,\n data = {},\n widgetStyles: Map<string, Style>,\n opt: parseOptions = defaultOptions\n) {\n let { name, children, ...attributes } = node\n\n node['data-render-id'] =\n node['data-render-id'] || Math.random().toString(36).substring(2, 15)\n ;({ name, children, ...attributes } = node)\n\n if (attributes.id) {\n const widget =\n widgetCache.get(attributes.id) ||\n (await opt.fetchWidget?.(attributes.id))\n\n if (widget) {\n const props = {\n ...inputDefinitionsToObject(widget?.inputs ?? []),\n ...attributes,\n env: {\n ...data,\n assetsOrigin: opt.assetsOrigin,\n prod: opt.prod,\n },\n }\n\n if (typeof widget.render === 'function') {\n children = [widget.render(props)]\n } else {\n children = widget.content ? [widget.content] : []\n }\n\n if (widget.style) {\n const styleContent =\n typeof widget.style === 'function'\n ? widget.style(props)\n : widget.style\n widgetStyles.set(\n widget.id || attributes.id,\n parseStyle(styleContent)\n )\n }\n\n widgetCache.set(attributes.id, widget)\n }\n }\n\n if (opt.prod) {\n return children.join('')\n }\n\n return (\n `<${name} id=\"${attributes.id}\" data-render-id=\"${attributes['data-render-id']}\"` +\n `>${await parseTemplateContent(children, data, widgetStyles, opt)}</${name}>`\n )\n}\n\nexport async function parseTemplateContent(\n content: TemplateContent,\n data = {},\n widgetStyles: Map<string, Style>,\n opt: parseOptions = defaultOptions\n): Promise<string> {\n if (!content) {\n return ''\n }\n\n return (\n await Promise.all(\n content.map(async (node) => {\n if (typeof node === 'string') {\n return replaceStringValue(node, data)\n }\n\n const { name, children, ...attributes } = node\n\n if (name === 'widget') {\n return parseWidget(\n node as TemplateContentNode,\n data,\n widgetStyles,\n opt\n )\n }\n\n const attrs = attributeToString(attributes, data)\n\n return (\n `<${name}` +\n (attrs ? ` ${attrs}` : '') +\n `>${await parseTemplateContent(children, data, widgetStyles, opt)}</${name}>`\n )\n })\n )\n ).join('')\n}\n", "import { parseOptions, Template, TemplateContent } from './types.ts'\nimport { mergeObjects } from './utils/merge-objects.ts'\nimport { defaultOptions } from './default-parse-options.ts'\nimport { parseTemplateContent } from './parse-widget.ts'\nimport { parseStyle } from './parse-style.ts'\n\nconst tempCache: Map<string, Template> = new Map()\n\nexport const parseTemplate = async (\n temp: Template,\n opt: parseOptions = defaultOptions\n) => {\n opt = mergeObjects(defaultOptions, opt) as parseOptions\n tempCache.set(temp.id, temp)\n\n if (temp.extends) {\n const base =\n tempCache.get(temp.extends) ||\n (await opt.fetchTemplate?.(temp.extends))\n\n if (!base) {\n throw new Error(`Template \"${temp.extends}\" not found`)\n }\n\n tempCache.set(temp.extends, base)\n temp = mergeObjects(base, temp) as Template\n }\n\n const {\n metadata = {},\n scripts = [],\n stylesheets = [],\n links = [],\n fonts = [],\n favicons = [],\n content = '',\n manifest,\n ...data\n } = temp ?? {}\n\n const widgetStyles = new Map()\n\n const bodyContent =\n typeof content === 'string'\n ? content\n : await parseTemplateContent(\n content as TemplateContent,\n data,\n widgetStyles,\n opt\n )\n\n if (!metadata['charset']) {\n metadata['charset'] = 'UTF-8'\n }\n\n if (!metadata['viewport']) {\n metadata['viewport'] = 'width=device-width, initial-scale=1.0'\n }\n\n const metas = Object.entries(metadata)\n .map(([key, value]) => {\n if (key.startsWith('property:')) {\n return `<meta property=\"${key.replace('property:', '')}\" content=\"${value}\">`\n }\n\n if (key === 'msapplication-TileImage') {\n value = `${opt.assetsOrigin}${value}`\n }\n\n return `<meta name=\"${key}\" content=\"${value}\">`\n })\n .join('')\n\n let ls = ''\n\n links.forEach((link) => {\n let l = '<link '\n\n Object.entries(link).forEach(([key, value]) => {\n l += `${key}=\"${value}\" `\n })\n\n ls += l + '/>'\n })\n\n let fi = ''\n\n favicons.forEach((link) => {\n let l = '<link '\n\n Object.entries(link).forEach(([key, value]) => {\n l += `${key}=\"${key === 'href' ? `${opt.assetsOrigin}assets/favicons/` : ''}${value}\" `\n })\n\n fi += l + '/>'\n })\n\n let ft = ''\n\n fonts.forEach((font) => {\n ft += `<link rel=\"preload\" href=\"${opt.assetsOrigin}assets/fonts/${font}\" as=\"font\" crossorigin>`\n })\n\n let st = ''\n\n ;[...stylesheets, ...Array.from(widgetStyles.entries())].forEach(\n (stylesheet) => {\n if (typeof stylesheet === 'string') {\n if (stylesheet.startsWith('http')) {\n st += `<link rel=\"stylesheet\" href=\"${stylesheet}\" >`\n } else if (stylesheet.endsWith('.css')) {\n st += `<link rel=\"stylesheet\" href=\"${opt.assetsOrigin}stylesheets/${stylesheet}\">`\n } else {\n st += `<style>${stylesheet}</style>`\n }\n } else if (Array.isArray(stylesheet)) {\n const [id, style] = stylesheet\n st += `<style id=\"${id}\">${parseStyle(style)}</style>`\n } else {\n st += `<style`\n\n Object.entries(stylesheet.attributes).forEach(\n ([key, value]) => {\n st += `${key}=\"${value}\" `\n }\n )\n\n st += '></style>'\n }\n }\n )\n\n let sc = ''\n\n scripts.forEach((script) => {\n if (typeof script === 'string') {\n if (script.startsWith('http')) {\n sc += `<script src=\"${script}\"></script>`\n } else if (script.endsWith('.js')) {\n sc += `<script src=\"${opt.assetsOrigin}scripts/${script}\"></script>`\n } else {\n sc += `<script>${script}</script>`\n }\n } else {\n sc += '<script '\n\n Object.entries(script).forEach(([key, value]) => {\n sc += `${key}=\"${value}\" `\n })\n\n sc += `></script>`\n }\n })\n\n return `<!doctype html>\n<html lang=\"${data.lang ?? 'en'}\">\n<head>\n <title>${data.title}</title>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <!-- og -->\n <meta property=\"og:title\" content=\"${data.title}\">\n <meta property=\"og:type\" content=\"website\">\n <meta property=\"og:description\" content=\"${data.description}\">\n <meta property=\"og:image\" content=\"${data.image}\">\n <meta property=\"og:url\" content=\"${data.domain}\">\n <meta property=\"og:site_name\" content=\"${data.title}\">\n ${metas ? `<!-- metas -->${metas}` : ''}\n ${fi ? `<!-- favicons -->${fi}` : ''}\n ${ft ? `<!-- fonts -->${ft}` : ''}\n ${ls ? `<!-- links -->${ls}` : ''}\n ${manifest ? `<link rel=\"manifest\" href=\"${opt.assetsOrigin}assets/${manifest}\">` : ''}\n ${st ? `<!-- stylesheets -->${st}` : ''}\n</head>\n<body>\n${bodyContent}\n${sc ? '<!-- scripts -->' + sc : ''}\n</body>\n</html>`\n .replace(/\\s{2,}/g, ' ')\n .replace(/[\\t\\n]+/g, '')\n}\n", "import {\n InputDefinition,\n ObjectLiteral,\n InputDefinitionType,\n} from '../types.ts'\n\nconst dataTypeToInputType = (data: unknown) => {\n switch (typeof data) {\n case 'number':\n return InputDefinitionType.Number\n case 'boolean':\n return InputDefinitionType.Boolean\n case 'object':\n if (Array.isArray(data)) {\n return InputDefinitionType.List\n } else {\n return InputDefinitionType.Group\n }\n default:\n return InputDefinitionType.Text\n }\n}\n\nexport function mergeDataIntoInputDefinition(\n data: unknown,\n def: InputDefinition\n): InputDefinition {\n switch (def.type) {\n case 'group':\n return {\n ...def,\n definitions: Object.entries((data ?? {}) as ObjectLiteral).map(\n ([k, v]) => {\n return mergeDataIntoInputDefinition(\n v,\n ((def.definitions ?? []) as InputDefinition[]).find(\n (item) => item.name === k\n ) ?? {\n name: k,\n type: dataTypeToInputType(v),\n value: v,\n }\n )\n }\n ),\n }\n case 'list':\n return {\n ...def,\n definitions: ((data ?? []) as Array<unknown>).map(\n (item, idx) => {\n return mergeDataIntoInputDefinition(\n item,\n ((def.definitions ?? [])[idx] ?? {\n name: String(idx),\n type: dataTypeToInputType(item),\n value: item,\n }) as InputDefinition\n )\n }\n ),\n }\n default:\n return {\n ...def,\n value: data,\n }\n }\n}\n", "import { parseStyle } from './parse-style.ts'\nimport { parseTemplate } from './parse-template.ts'\nimport { parseTemplateContent, parseWidget } from './parse-widget.ts'\nimport { attributeToString } from './utils/attributes-to-string.ts'\nimport { inputDefinitionsToObject } from './utils/input-definitions-to-object.ts'\nimport { mergeDataIntoInputDefinition } from './utils/merge-data-into-input-definition.ts'\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nif (window) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.BFS = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ...(window.BFS || {}),\n SITE_BUILDER: {\n inputDefinitionsToObject,\n mergeDataIntoInputDefinition,\n attributeToString,\n parseTemplate,\n parseTemplateContent,\n parseWidget,\n parseStyle,\n },\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["turnCamelToKebabCasing", "__name", "str", "match", "i", "parseStyle", "style", "key", "value", "turnCamelToKebabCasing", "__name", "mergeObjects", "a", "b", "obj", "key", "__name", "defaultOptions", "inputDefinitionsToObject", "inputDefinitions", "acc", "name", "value", "type", "definitions", "item", "__name", "deepValue", "__name", "obj", "key", "acc", "k", "replaceStringValue", "__name", "value", "data", "match", "full", "key", "dv", "deepValue", "attributeToString", "__name", "attributes", "data", "name", "value", "replaceStringValue", "widgetCache", "parseWidget", "node", "data", "widgetStyles", "opt", "defaultOptions", "name", "children", "attributes", "widget", "props", "inputDefinitionsToObject", "styleContent", "parseStyle", "parseTemplateContent", "__name", "content", "replaceStringValue", "attrs", "attributeToString", "tempCache", "parseTemplate", "__name", "temp", "opt", "defaultOptions", "mergeObjects", "base", "metadata", "scripts", "stylesheets", "links", "fonts", "favicons", "content", "manifest", "data", "widgetStyles", "bodyContent", "parseTemplateContent", "metas", "key", "value", "ls", "link", "l", "fi", "ft", "font", "st", "stylesheet", "id", "style", "parseStyle", "sc", "script", "dataTypeToInputType", "__name", "data", "mergeDataIntoInputDefinition", "def", "k", "v", "item", "idx", "inputDefinitionsToObject", "mergeDataIntoInputDefinition", "attributeToString", "parseTemplate", "parseTemplateContent", "parseWidget", "parseStyle"]
7
7
  }
@@ -1 +1 @@
1
- var W=Object.defineProperty;var u=(a,n)=>W(a,"name",{value:n,configurable:!0});import e from"path";import d from"fs";import F from"esbuild";import{mergeObjects as x}from"./utils/merge-objects.js";import{parseTemplate as O}from"./parse-template.js";import b from"clean-css";import{TemplateType as B}from"./types.js";const C=new b,{writeFile:y,readFile:w,readdir:N,mkdir:l,cp:P,rm:$}=d.promises,I=u(async({publicDir:a,srcDir:n})=>{const m=e.resolve(a,"scripts"),p=e.resolve(a,"stylesheets"),h=e.resolve(a,"assets");d.existsSync(a)&&await $(a,{recursive:!0,force:!0}),await l(a,{recursive:!0}),await l(m,{recursive:!0}),await l(p,{recursive:!0}),await P(e.resolve(n,"assets"),h,{recursive:!0});const g=await N(e.resolve(n,"templates")),c=await Promise.all(g.filter(s=>s.endsWith(".json")).map(async s=>{const o=e.basename(s);return{dir:e.dirname(s),name:o.replace(".json",""),content:JSON.parse(await w(e.resolve(n,"templates",s),"utf8"))}})),f=c.reduce((s,o)=>({...s,[o.name]:o}),{}),v=c.filter(({content:s})=>s.type===B.Page);for(const{name:s,dir:o,content:T}of v){let i=T;if(i.extends){const t=f[i.extends];i=x(t.content,i)}await l(e.join(a,o),{recursive:!0});for(let t=0;t<(i.scripts?.length??0);t++){const r=i.scripts[t];typeof r=="string"&&r.endsWith(".js")&&!r.startsWith("http")&&await F.build({entryPoints:[e.resolve(n,"scripts",r)],minify:!0,outfile:e.join(m,r)})}for(let t=0;t<(i.stylesheets?.length??0);t++){const r=i.stylesheets[t];if(typeof r=="string"&&r.endsWith(".css")&&!r.startsWith("http")){const S=await w(e.resolve(n,"stylesheets",r),"utf8");await y(e.join(p,r),C.minify(S).styles,"utf-8")}}const j=await O(i,{prod:!0,fetchTemplate:t=>f[t].content,fetchWidget:async t=>(await import(e.resolve(n,"widgets",`${t}.js`))).default});await y(e.join(a,o,`${s}.html`),j)}},"buildTemplates");export{I as buildTemplates};
1
+ var F=Object.defineProperty;var u=(a,n)=>F(a,"name",{value:n,configurable:!0});import e from"path";import d from"fs";import b from"esbuild";import{mergeObjects as x}from"./utils/merge-objects.js";import{parseTemplate as O}from"./parse-template.js";import B from"clean-css";import{TemplateType as C}from"./types.js";const N=new B,{writeFile:y,readFile:w,readdir:P,mkdir:l,cp:$,rm:k}=d.promises,K=u(async({publicDir:a,srcDir:n,prod:h=!0})=>{const m=e.resolve(a,"scripts"),p=e.resolve(a,"stylesheets"),g=e.resolve(a,"assets");d.existsSync(a)&&await k(a,{recursive:!0,force:!0}),await l(a,{recursive:!0}),await l(m,{recursive:!0}),await l(p,{recursive:!0}),await $(e.resolve(n,"assets"),g,{recursive:!0});const v=await P(e.resolve(n,"templates")),c=await Promise.all(v.filter(s=>s.endsWith(".json")).map(async s=>{const o=e.basename(s);return{dir:e.dirname(s),name:o.replace(".json",""),content:JSON.parse(await w(e.resolve(n,"templates",s),"utf8"))}})),f=c.reduce((s,o)=>({...s,[o.name]:o}),{}),T=c.filter(({content:s})=>s.type===C.Page);for(const{name:s,dir:o,content:j}of T){let i=j;if(i.extends){const t=f[i.extends];i=x(t.content,i)}await l(e.join(a,o),{recursive:!0});for(let t=0;t<(i.scripts?.length??0);t++){const r=i.scripts[t];typeof r=="string"&&r.endsWith(".js")&&!r.startsWith("http")&&await b.build({entryPoints:[e.resolve(n,"scripts",r)],minify:!0,outfile:e.join(m,r)})}for(let t=0;t<(i.stylesheets?.length??0);t++){const r=i.stylesheets[t];if(typeof r=="string"&&r.endsWith(".css")&&!r.startsWith("http")){const W=await w(e.resolve(n,"stylesheets",r),"utf8");await y(e.join(p,r),N.minify(W).styles,"utf-8")}}const S=await O(i,{prod:h,fetchTemplate:t=>f[t].content,fetchWidget:async t=>(await import(e.resolve(n,"widgets",`${t}.js`))).default});await y(e.join(a,o,`${s}.html`),S)}},"buildTemplates");export{K as buildTemplates};
@@ -1 +1 @@
1
- var u=Object.defineProperty;var d=(i,r)=>u(i,"name",{value:r,configurable:!0});import{defaultOptions as f}from"./default-parse-options.js";import{inputDefinitionsToObject as g}from"./utils/input-definitions-to-object.js";import{parseStyle as y}from"./parse-style.js";import{attributeToString as $}from"./utils/attributes-to-string.js";import{replaceStringValue as C}from"./utils/replace-string-value.js";const m=new Map;async function T(i,r={},o,a=f){let{name:s,children:n,...e}=i;if(i["data-render-id"]=i["data-render-id"]||Math.random().toString(36).substring(2,15),{name:s,children:n,...e}=i,e.id){const t=m.get(e.id)||await a.fetchWidget?.(e.id);if(t){const p={...g(t?.inputs??[]),...e,env:{...r,assetsOrigin:a.assetsOrigin}};if(typeof t.render=="function"?n=[t.render(p)]:n=t.content?[t.content]:[],t.style){const c=typeof t.style=="function"?t.style(p):t.style;o.set(t.id||e.id,y(c))}m.set(e.id,t)}}return a.prod?n.join(""):`<${s} id="${e.id}" data-render-id="${e["data-render-id"]}">${await l(n,r,o,a)}</${s}>`}d(T,"parseWidget");async function l(i,r={},o,a=f){return i?(await Promise.all(i.map(async s=>{if(typeof s=="string")return C(s,r);const{name:n,children:e,...t}=s;if(n==="widget")return T(s,r,o,a);const p=$(t,r);return`<${n}`+(p?` ${p}`:"")+`>${await l(e,r,o,a)}</${n}>`}))).join(""):""}d(l,"parseTemplateContent");export{l as parseTemplateContent,T as parseWidget};
1
+ var u=Object.defineProperty;var d=(r,i)=>u(r,"name",{value:i,configurable:!0});import{defaultOptions as f}from"./default-parse-options.js";import{inputDefinitionsToObject as g}from"./utils/input-definitions-to-object.js";import{parseStyle as y}from"./parse-style.js";import{attributeToString as $}from"./utils/attributes-to-string.js";import{replaceStringValue as C}from"./utils/replace-string-value.js";const m=new Map;async function T(r,i={},o,s=f){let{name:a,children:n,...e}=r;if(r["data-render-id"]=r["data-render-id"]||Math.random().toString(36).substring(2,15),{name:a,children:n,...e}=r,e.id){const t=m.get(e.id)||await s.fetchWidget?.(e.id);if(t){const p={...g(t?.inputs??[]),...e,env:{...i,assetsOrigin:s.assetsOrigin,prod:s.prod}};if(typeof t.render=="function"?n=[t.render(p)]:n=t.content?[t.content]:[],t.style){const c=typeof t.style=="function"?t.style(p):t.style;o.set(t.id||e.id,y(c))}m.set(e.id,t)}}return s.prod?n.join(""):`<${a} id="${e.id}" data-render-id="${e["data-render-id"]}">${await l(n,i,o,s)}</${a}>`}d(T,"parseWidget");async function l(r,i={},o,s=f){return r?(await Promise.all(r.map(async a=>{if(typeof a=="string")return C(a,i);const{name:n,children:e,...t}=a;if(n==="widget")return T(a,i,o,s);const p=$(t,i);return`<${n}`+(p?` ${p}`:"")+`>${await l(e,i,o,s)}</${n}>`}))).join(""):""}d(l,"parseTemplateContent");export{l as parseTemplateContent,T as parseWidget};
@@ -1,6 +1,7 @@
1
1
  interface BuildOptions {
2
2
  srcDir: string;
3
3
  publicDir: string;
4
+ prod: boolean;
4
5
  }
5
- export declare const buildTemplates: ({ publicDir, srcDir }: BuildOptions) => Promise<void>;
6
+ export declare const buildTemplates: ({ publicDir, srcDir, prod, }: BuildOptions) => Promise<void>;
6
7
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beforesemicolon/site-builder",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Site builder based on JSON files",
5
5
  "engines": {
6
6
  "node": ">=18.16.0"