@beforesemicolon/site-builder 0.34.0 → 0.35.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,4 +1,4 @@
|
|
|
1
|
-
"use strict";var oe=Object.create;var x=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,ce=Object.prototype.hasOwnProperty;var b=(t,n)=>x(t,"name",{value:n,configurable:!0});var le=(t,n)=>{for(var i in n)x(t,i,{get:n[i],enumerable:!0})},z=(t,n,i,g)=>{if(n&&typeof n=="object"||typeof n=="function")for(let p of ae(n))!ce.call(t,p)&&p!==i&&x(t,p,{get:()=>n[p],enumerable:!(g=ie(n,p))||g.enumerable});return t};var N=(t,n,i)=>(i=t!=null?oe(re(t)):{},z(n||!t||!t.__esModule?x(i,"default",{value:t,enumerable:!0}):i,t)),me=t=>z(x({},"__esModule",{value:!0}),t);var we={};le(we,{buildTemplates:()=>ue});module.exports=me(we);var e=N(require("path"),1),m=N(require("fs"),1),H=N(require("esbuild"),1),M=require("./utils/merge-objects.js"),Q=require("./parse-template.js"),V=N(require("clean-css"),1),Y=require("./types.js"),Z=require("html-minifier"),D=require("./utils/flatten-object.js");const pe=new V.default,{writeFile:T,readFile:C,readdir:P,mkdir:j,cp:w,rm:fe}=m.default.promises;async function de(t,n){try{const i=e.default.resolve(t,"templates"),g=e.default.resolve(t,"widgets"),p=await P(i),y=[];let v=null;for(const c of p)if(c.endsWith(".json")){const
|
|
1
|
+
"use strict";var oe=Object.create;var x=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,ce=Object.prototype.hasOwnProperty;var b=(t,n)=>x(t,"name",{value:n,configurable:!0});var le=(t,n)=>{for(var i in n)x(t,i,{get:n[i],enumerable:!0})},z=(t,n,i,g)=>{if(n&&typeof n=="object"||typeof n=="function")for(let p of ae(n))!ce.call(t,p)&&p!==i&&x(t,p,{get:()=>n[p],enumerable:!(g=ie(n,p))||g.enumerable});return t};var N=(t,n,i)=>(i=t!=null?oe(re(t)):{},z(n||!t||!t.__esModule?x(i,"default",{value:t,enumerable:!0}):i,t)),me=t=>z(x({},"__esModule",{value:!0}),t);var we={};le(we,{buildTemplates:()=>ue});module.exports=me(we);var e=N(require("path"),1),m=N(require("fs"),1),H=N(require("esbuild"),1),M=require("./utils/merge-objects.js"),Q=require("./parse-template.js"),V=N(require("clean-css"),1),Y=require("./types.js"),Z=require("html-minifier"),D=require("./utils/flatten-object.js");const pe=new V.default,{writeFile:T,readFile:C,readdir:P,mkdir:j,cp:w,rm:fe}=m.default.promises;async function de(t,n){try{const i=e.default.resolve(t,"templates"),g=e.default.resolve(t,"widgets"),p=await P(i),y=[];let v=null;for(const c of p)if(c.endsWith(".json")){const d=e.default.join(i,c),F=await C(d,"utf-8"),f=JSON.parse(F);c==="base.json"?v=f:y.push({id:f.id,name:f.name||f.id,url:`/${f.id}.html`,template:c,widgetsData:f.widgetsData||{}})}const O=await P(g),h=[];for(const c of O)if(c.endsWith(".js")){const d=e.default.basename(c,".js");h.push({id:d,name:d.charAt(0).toUpperCase()+d.slice(1).replace(/-/g," "),file:c})}const W={meta:v,pages:y,widgets:h},$=e.default.join(n,"config.json");await T($,JSON.stringify(W,null,2)),console.log("Generated config.json with",y.length,"pages and",h.length,"widgets")}catch(i){throw console.error("Error generating admin config:",i),i}}b(de,"generateAdminConfig");const ue=b(async({publicDir:t,srcDir:n,prod:i=!0})=>{console.log("Building templates:",{publicDir:t,srcDir:n,prod:i});const g=process.cwd(),p=e.default.join(g,"_redirects"),y=e.default.join(t,"_redirects"),v=e.default.resolve(t,"scripts"),O=e.default.resolve(t,"stylesheets"),h=e.default.resolve(n,"assets"),W=e.default.resolve(n,"admin"),$=e.default.resolve(n,"widgets"),c=e.default.resolve(t,"admin","widgets"),d=e.default.resolve(t,"assets"),F=e.default.resolve(n,"data"),f=e.default.resolve(t,"data"),B=e.default.resolve(n,"assets","robots.txt"),ee=e.default.join(t,"robots.txt"),E=e.default.resolve(n,"assets","sitemap.xml");if(m.default.existsSync(t)&&await fe(t,{recursive:!0,force:!0}),await j(t,{recursive:!0}),await j(v,{recursive:!0}),await j(O,{recursive:!0}),m.default.existsSync(p)&&await w(p,y),m.default.existsSync(h)&&await w(h,d,{recursive:!0}),m.default.existsSync(F)&&await w(F,f,{recursive:!0}),m.default.existsSync(W)){const s=e.default.resolve(t,"admin");await j(s,{recursive:!0}),await w(W,s,{recursive:!0}),await de(n,s),i||(await j(c,{recursive:!0}),await w($,c,{recursive:!0}))}const te=await P(e.default.resolve(n,"templates")),J=e.default.resolve(n,"locales"),k={};if(m.default.existsSync(J)){const s=await P(J);for(const o of s)if(o.endsWith(".json")){const l=JSON.parse(await C(e.default.join(J,o),"utf8")),r=e.default.basename(o,".json");k[r]=(0,D.flattenObject)(l)}}const L=await Promise.all(te.filter(s=>s.endsWith(".json")).map(async s=>{const o=e.default.basename(s);return{dir:e.default.dirname(s),name:o.replace(".json",""),content:JSON.parse(await C(e.default.resolve(n,"templates",s),"utf8"))}})),_=L.reduce((s,o)=>({...s,[o.name]:o}),{}),A=L.filter(({content:s})=>s.type===Y.TemplateType.Page&&s.excluded!==!0),R=e.default.resolve(n,"components");let G={};if(m.default.existsSync(R)){const s=await P(R),o=await Promise.all(s.filter(l=>l.endsWith(".json")).map(async l=>{const r=JSON.parse(await C(e.default.join(R,l),"utf8"));return[r.id,r]}));G=Object.fromEntries(o)}const I=b(async s=>{let o=typeof s=="string"?s:"";s&&typeof s=="object"&&"src"in s&&(o=String(s.src)),!o.startsWith("http")&&o.endsWith(".js")&&await H.default.build({entryPoints:[e.default.resolve(n,"scripts",o)],minify:!0,outfile:e.default.join(v,o)})},"handleScript"),K=b(async s=>{let o=typeof s=="string"?s:"";if(s&&typeof s=="object"&&"href"in s&&(o=String(s.href)),!o.startsWith("http")&&o.endsWith(".css")){const l=await C(e.default.resolve(n,"stylesheets",o),"utf8");await T(e.default.join(O,o),pe.minify(l).styles,"utf-8")}},"handleStylesheet"),X=[];for(const{name:s,dir:o,content:l}of A){let r=l;if(r.extends){const a=_[r.extends];r=(0,M.mergeObjects)(a.content,r)}const q=l.domain||"",U=l.route||"";if(U){const a=q?`${q.replace(/\/$/,"")}/${U.replace(/^\//,"")}`:`/${U.replace(/^\//,"")}`;X.push(a)}await j(e.default.join(t,o),{recursive:!0});for(let a=0;a<(r.scripts?.length??0);a++)await I(r.scripts[a]);for(let a=0;a<(r.stylesheets?.length??0);a++)await K(r.stylesheets[a]);const se=await(0,Q.parseTemplate)(r,{prod:i,components:G,locales:k,fetchTemplate:a=>_[a].content,fetchWidget:async a=>{const S=(await import(e.default.resolve($,`${a}.js`))).default;for(let u=0;u<(S.scripts?.length??0);u++)await I(S.scripts[u]);for(let u=0;u<(S.stylesheets?.length??0);u++)await K(S.stylesheets[u]);return S}}),ne=(0,Z.minify)(se,{collapseWhitespace:!0,removeComments:!0,minifyCSS:!0,minifyJS:!0});await T(e.default.join(t,o,`${s}.html`),ne)}if(m.default.existsSync(B))await w(B,e.default.join(t,"robots.txt"));else{const o=`User-agent: *
|
|
2
2
|
Disallow:
|
|
3
3
|
Sitemap: ${A[0]?.content.domain?`${A[0].content.domain.replace(/\/$/,"")}/sitemap.xml`:"/sitemap.xml"}
|
|
4
4
|
`;await T(ee,o,"utf-8")}if(m.default.existsSync(E))await w(E,e.default.join(t,"sitemap.xml"));else{const s=`<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var M=Object.defineProperty;var v=(n,o)=>M(n,"name",{value:o,configurable:!0});import e from"path";import l from"fs";import Q from"esbuild";import{mergeObjects as V}from"./utils/merge-objects.js";import{parseTemplate as Y}from"./parse-template.js";import Z from"clean-css";import{TemplateType as D}from"./types.js";import{minify as ee}from"html-minifier";import{flattenObject as te}from"./utils/flatten-object.js";const se=new Z,{writeFile:S,readFile:x,readdir:b,mkdir:g,cp:u,rm:ne}=l.promises;async function oe(n,o){try{const m=e.resolve(n,"templates"),$=e.resolve(n,"widgets"),T=await b(m),h=[];let j=null;for(const r of T)if(r.endsWith(".json")){const
|
|
1
|
+
var M=Object.defineProperty;var v=(n,o)=>M(n,"name",{value:o,configurable:!0});import e from"path";import l from"fs";import Q from"esbuild";import{mergeObjects as V}from"./utils/merge-objects.js";import{parseTemplate as Y}from"./parse-template.js";import Z from"clean-css";import{TemplateType as D}from"./types.js";import{minify as ee}from"html-minifier";import{flattenObject as te}from"./utils/flatten-object.js";const se=new Z,{writeFile:S,readFile:x,readdir:b,mkdir:g,cp:u,rm:ne}=l.promises;async function oe(n,o){try{const m=e.resolve(n,"templates"),$=e.resolve(n,"widgets"),T=await b(m),h=[];let j=null;for(const r of T)if(r.endsWith(".json")){const f=e.join(m,r),W=await x(f,"utf-8"),p=JSON.parse(W);r==="base.json"?j=p:h.push({id:p.id,name:p.name||p.id,url:`/${p.id}.html`,template:r,widgetsData:p.widgetsData||{}})}const C=await b($),w=[];for(const r of C)if(r.endsWith(".js")){const f=e.basename(r,".js");w.push({id:f,name:f.charAt(0).toUpperCase()+f.slice(1).replace(/-/g," "),file:r})}const P={meta:j,pages:h,widgets:w},O=e.join(o,"config.json");await S(O,JSON.stringify(P,null,2)),console.log("Generated config.json with",h.length,"pages and",w.length,"widgets")}catch(m){throw console.error("Error generating admin config:",m),m}}v(oe,"generateAdminConfig");const ye=v(async({publicDir:n,srcDir:o,prod:m=!0})=>{console.log("Building templates:",{publicDir:n,srcDir:o,prod:m});const $=process.cwd(),T=e.join($,"_redirects"),h=e.join(n,"_redirects"),j=e.resolve(n,"scripts"),C=e.resolve(n,"stylesheets"),w=e.resolve(o,"assets"),P=e.resolve(o,"admin"),O=e.resolve(o,"widgets"),r=e.resolve(n,"admin","widgets"),f=e.resolve(n,"assets"),W=e.resolve(o,"data"),p=e.resolve(n,"data"),R=e.resolve(o,"assets","robots.txt"),X=e.join(n,"robots.txt"),U=e.resolve(o,"assets","sitemap.xml");if(l.existsSync(n)&&await ne(n,{recursive:!0,force:!0}),await g(n,{recursive:!0}),await g(j,{recursive:!0}),await g(C,{recursive:!0}),l.existsSync(T)&&await u(T,h),l.existsSync(w)&&await u(w,f,{recursive:!0}),l.existsSync(W)&&await u(W,p,{recursive:!0}),l.existsSync(P)){const t=e.resolve(n,"admin");await g(t,{recursive:!0}),await u(P,t,{recursive:!0}),await oe(o,t),m||(await g(r,{recursive:!0}),await u(O,r,{recursive:!0}))}const q=await b(e.resolve(o,"templates")),F=e.resolve(o,"locales"),B={};if(l.existsSync(F)){const t=await b(F);for(const s of t)if(s.endsWith(".json")){const c=JSON.parse(await x(e.join(F,s),"utf8")),a=e.basename(s,".json");B[a]=te(c)}}const E=await Promise.all(q.filter(t=>t.endsWith(".json")).map(async t=>{const s=e.basename(t);return{dir:e.dirname(t),name:s.replace(".json",""),content:JSON.parse(await x(e.resolve(o,"templates",t),"utf8"))}})),k=E.reduce((t,s)=>({...t,[s.name]:s}),{}),N=E.filter(({content:t})=>t.type===D.Page&&t.excluded!==!0),J=e.resolve(o,"components");let L={};if(l.existsSync(J)){const t=await b(J),s=await Promise.all(t.filter(c=>c.endsWith(".json")).map(async c=>{const a=JSON.parse(await x(e.join(J,c),"utf8"));return[a.id,a]}));L=Object.fromEntries(s)}const _=v(async t=>{let s=typeof t=="string"?t:"";t&&typeof t=="object"&&"src"in t&&(s=String(t.src)),!s.startsWith("http")&&s.endsWith(".js")&&await Q.build({entryPoints:[e.resolve(o,"scripts",s)],minify:!0,outfile:e.join(j,s)})},"handleScript"),G=v(async t=>{let s=typeof t=="string"?t:"";if(t&&typeof t=="object"&&"href"in t&&(s=String(t.href)),!s.startsWith("http")&&s.endsWith(".css")){const c=await x(e.resolve(o,"stylesheets",s),"utf8");await S(e.join(C,s),se.minify(c).styles,"utf-8")}},"handleStylesheet"),I=[];for(const{name:t,dir:s,content:c}of N){let a=c;if(a.extends){const i=k[a.extends];a=V(i.content,a)}const K=c.domain||"",A=c.route||"";if(A){const i=K?`${K.replace(/\/$/,"")}/${A.replace(/^\//,"")}`:`/${A.replace(/^\//,"")}`;I.push(i)}await g(e.join(n,s),{recursive:!0});for(let i=0;i<(a.scripts?.length??0);i++)await _(a.scripts[i]);for(let i=0;i<(a.stylesheets?.length??0);i++)await G(a.stylesheets[i]);const z=await Y(a,{prod:m,components:L,locales:B,fetchTemplate:i=>k[i].content,fetchWidget:async i=>{const y=(await import(e.resolve(O,`${i}.js`))).default;for(let d=0;d<(y.scripts?.length??0);d++)await _(y.scripts[d]);for(let d=0;d<(y.stylesheets?.length??0);d++)await G(y.stylesheets[d]);return y}}),H=ee(z,{collapseWhitespace:!0,removeComments:!0,minifyCSS:!0,minifyJS:!0});await S(e.join(n,s,`${t}.html`),H)}if(l.existsSync(R))await u(R,e.join(n,"robots.txt"));else{const s=`User-agent: *
|
|
2
2
|
Disallow:
|
|
3
3
|
Sitemap: ${N[0]?.content.domain?`${N[0].content.domain.replace(/\/$/,"")}/sitemap.xml`:"/sitemap.xml"}
|
|
4
4
|
`;await S(X,s,"utf-8")}if(l.existsSync(U))await u(U,e.join(n,"sitemap.xml"));else{const t=`<?xml version="1.0" encoding="UTF-8"?>
|