Comparing version 0.1.9 to 0.1.10
#!/usr/bin/env node | ||
import{Command as yt}from"commander";import ct from"dotenv-flow";import D from"fs-extra";import c from"path";import{fileURLToPath as ft}from"url";import{performance as _e}from"perf_hooks";import pt from"chokidar";import*as q from"esbuild";import{isEqual as ut,debounce as mt}from"lodash-es";import Oe from"express";import dt from"cors";import gt from"compression";import ht from"cookie-parser";import{ReadStream as Xe}from"fs";import{Readable as Ue}from"stream";var le=class extends Response{constructor(o,s){o instanceof Xe&&(o=Ue.toWeb(o)),super(o,s)}};globalThis.Response=le;import z from"chalk";var je=z.dim,R=z.hex("#1ac4ff"),we=z.bold.black.bgWhiteBright,Fe=z.bold.black.bgWhiteBright,$e=z.bold.whiteBright.bgHex("#e74b4b");import qe from"fs-extra";import Ge from"path";var Ke=Ge.join(import.meta.dirname,"../package.json"),ve=await qe.readJSON(Ke);function Ee(){console.log(` | ||
\u{1F525} Firebolt (v${ve.version}) | ||
`)}function ce(...e){console.log(we(" INF "),...e)}function Pe(...e){console.log(Fe(" CHN "),...e)}function k(...e){console.log($e(" ERR "),...e)}function ee(e){return import(`${e}?v=${Date.now()}`)}import fe from"fs-extra";import Be from"path";async function Ne(e,o){let s=[];async function n(a){let f=await fe.readdir(a);for(let u of f){let l=Be.join(a,u),y=await fe.stat(l);y.isFile()&&Qe(l,o)&&s.push(l),y.isDirectory()&&await n(l)}}return await fe.exists(e)&&await n(e),s}function Qe(e,o){if(!o)return!0;let s=Be.extname(e).slice(1);return o.includes(s)}function pe(e){return"/"+e.split("/").map(n=>n===""||n==="index"?"":(n.startsWith("$")&&(n=n.slice(1),n=":"+n),n.endsWith("+"),n.endsWith("-")&&(n=n.slice(0,-1),n=n+"*"),n)).filter(n=>!!n).join("/")}import Rt from"fs-extra";import{padStart as A}from"lodash-es";var X=class extends Error{constructor(o){super(o),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor)}};function Ye(e,o,s){let n=e.substring(0,o),r=e.substring(o,o+s),a=e.substring(o+s);return[n,r,a]}function Ce(e){e=e.errors[0];let o="BuildError",s=e.text,n=e.location.file,r=e.location.lineText,a=e.location.line,f=e.location.column,u=e.location.length,l=e.location.suggestion;return{name:o,message:s,file:n,code:r,line:a,column:f,length:u,suggestion:l}}function ke({name:e,message:o,file:s,code:n,line:r,column:a,length:f,suggestion:u}){let l=`${e}: ${o} | ||
`;k(l);let y=` ${s}:${r}:${a}:`;if(console.log(y),f){let d=`${A(r,6)} | `,B=Ye(n,a,f);B[1]=R(B[1]),d+=B.join(""),console.log(d)}else{let d=`${A(r,6)} | `;d+=n,console.log(d)}if(f){let d=` | ${A("",a)}${R(A("",f,"~"))}`;console.log(d)}else{let d=` | ${A("",a)}${R("^")}`;console.log(d)}if(u){let d=` | ${A("",a)}${R(u)}`;console.log(d)}console.log("")}function De(e){return e.errors?.[0].location}import Ze from"fs-extra";import te from"path";function U(e){for(var o=0,s,n=0,r=e.length;r>=4;++n,r-=4)s=e.charCodeAt(n)&255|(e.charCodeAt(++n)&255)<<8|(e.charCodeAt(++n)&255)<<16|(e.charCodeAt(++n)&255)<<24,s=(s&65535)*1540483477+((s>>>16)*59797<<16),s^=s>>>24,o=(s&65535)*1540483477+((s>>>16)*59797<<16)^(o&65535)*1540483477+((o>>>16)*59797<<16);switch(r){case 3:o^=(e.charCodeAt(n+2)&255)<<16;case 2:o^=(e.charCodeAt(n+1)&255)<<8;case 1:o^=e.charCodeAt(n)&255,o=(o&65535)*1540483477+((o>>>16)*59797<<16)}return o^=o>>>13,o=(o&65535)*1540483477+((o>>>16)*59797<<16),((o^o>>>15)>>>0).toString(36)}var et=/(useAction|useLoader)/;function ue({registry:e,appDir:o}){return{name:"registryPlugin",setup(s){s.onLoad({filter:/\.js$/},async n=>{let r=n.path;if(r.includes("node_modules")||r.includes(".firebolt"))return;let a=await Ze.readFile(r,"utf8");if(!et.test(a))return{contents:a,loader:"jsx"};let f={},u={},l,y=/import\s+{([^}]+)}\s+from\s+(['"][^'"]+['"])/g;for(;(l=y.exec(a))!==null;){let p=l[2].slice(1).slice(0,-1);l[1].split(",").forEach(w=>{let[g,j]=w.trim().split(/\s+as\s+/),b=j||g;f[b.trim()]={name:g.trim(),alias:j?.trim()||null,file:p}})}let d=/import\s+(\w+)\s+from\s+(['"][^'"]+['"])/g;for(;(l=d.exec(a))!==null;){let p=l[2].slice(1).slice(0,-1),m=l[1].trim();f[m]={name:m,alias:null,file:p}}let B=/export\s+(async\s+function|function|const)\s+(\w+)/g;for(;(l=B.exec(a))!==null;){let p=l[2].trim();u[p]={name:p,alias:null,file:r}}let I=p=>{if(f[p]){let m=f[p].name,w=f[p].alias,g=te.resolve(te.dirname(r),f[p].file),j=te.relative(o,g),E=`f_${U(j+(w||m))}`;return e&&e.set(E,{id:E,file:g,name:m}),E}if(u[p]){let m=p,w=r,g=te.relative(o,w),b=`f_${U(g+m)}`;return e&&e.set(b,{id:b,file:w,name:m}),b}},$=/(useLoader|useAction)\(([^,)]+)/g;return a=a.split(` | ||
`).map(p=>p.replace($,(m,w,g)=>{let j=I(g);if(!j)return m;let b=`${w}('${j}'`;return m.trim().endsWith(")")?b+m.substring(m.indexOf(g)+g.length,m.length-1)+")":b})).join(` | ||
`),{contents:a,loader:"jsx"}})}}}function Ie(){let e=new Set,o;return{begin(){o=!0},end(){o=!1;for(let s of e)s();e.clear()},wait(){if(o)return new Promise(s=>{e.add(s)})}}}import tt from"node:assert";import ot from"node:fs/promises";import it from"node:path";import{createFormatAwareProcessors as nt}from"@mdx-js/mdx/internal-create-format-aware-processors";import{extnamesToRegex as rt}from"@mdx-js/mdx/internal-extnames-to-regex";import{VFile as st}from"vfile";import{VFileMessage as lt}from"vfile-message";var Re=/\r\n|\r|\n|\u2028|\u2029/g,Te="@mdx-js/esbuild";function me(e){let{extnames:o,process:s}=nt(e||{}),n={};return{plugin:{name:Te,setup:r},evict:a};function r(f){f.onLoad({filter:rt(o)},u);async function u(l){if(n[l.path])return n[l.path];let y=String(l.pluginData&&l.pluginData.contents!==null&&l.pluginData.contents!==void 0?l.pluginData.contents:await ot.readFile(l.path));y=` | ||
import{Command as bt}from"commander";import at from"dotenv-flow";import N from"fs-extra";import c from"path";import{fileURLToPath as ct}from"url";import{performance as Te}from"perf_hooks";import ft from"chokidar";import*as U from"esbuild";import{isEqual as ut,debounce as pt}from"lodash-es";import _e from"express";import mt from"cors";import dt from"compression";import gt from"cookie-parser";import{ReadStream as ze}from"fs";import{Readable as Xe}from"stream";var se=class extends Response{constructor(o,s){o instanceof ze&&(o=Xe.toWeb(o)),super(o,s)}};globalThis.Response=se;import J from"chalk";var ye=J.dim,R=J.hex("#1ac4ff"),je=J.bold.black.bgWhiteBright,we=J.bold.black.bgWhiteBright,Fe=J.bold.whiteBright.bgHex("#e74b4b");import Ue from"fs-extra";import qe from"path";var Ge=qe.join(import.meta.dirname,"../package.json"),$e=await Ue.readJSON(Ge);function ve(){console.log(` | ||
\u{1F525} Firebolt (v${$e.version}) | ||
`)}function ae(...e){console.log(je(" INF "),...e)}function Ee(...e){console.log(we(" CHN "),...e)}function B(...e){console.log(Fe(" ERR "),...e)}function Z(e){return import(`${e}?v=${Date.now()}`)}import ce from"fs-extra";import Se from"path";async function Be(e,o){let s=[];async function n(a){let f=await ce.readdir(a);for(let p of f){let l=Se.join(a,p),j=await ce.stat(l);j.isFile()&&Ke(l,o)&&s.push(l),j.isDirectory()&&await n(l)}}return await ce.exists(e)&&await n(e),s}function Ke(e,o){if(!o)return!0;let s=Se.extname(e).slice(1);return o.includes(s)}function fe(e){return"/"+e.split("/").map(n=>n===""||n==="index"?"":(n.startsWith("$")&&(n=n.slice(1),n=":"+n),n.endsWith("+"),n.endsWith("-")&&(n=n.slice(0,-1),n=n+"*"),n)).filter(n=>!!n).join("/")}import It from"fs-extra";import{padStart as _}from"lodash-es";var z=class extends Error{constructor(o){super(o),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor)}};function Qe(e,o,s){let n=e.substring(0,o),r=e.substring(o,o+s),a=e.substring(o+s);return[n,r,a]}function Ne(e){e=e.errors[0];let o="BuildError",s=e.text,n=e.location.file,r=e.location.lineText,a=e.location.line,f=e.location.column,p=e.location.length,l=e.location.suggestion;return{name:o,message:s,file:n,code:r,line:a,column:f,length:p,suggestion:l}}function Ce({name:e,message:o,file:s,code:n,line:r,column:a,length:f,suggestion:p}){let l=`${e}: ${o} | ||
`;B(l);let j=` ${s}:${r}:${a}:`;if(console.log(j),f){let d=`${_(r,6)} | `,S=Qe(n,a,f);S[1]=R(S[1]),d+=S.join(""),console.log(d)}else{let d=`${_(r,6)} | `;d+=n,console.log(d)}if(f){let d=` | ${_("",a)}${R(_("",f,"~"))}`;console.log(d)}else{let d=` | ${_("",a)}${R("^")}`;console.log(d)}if(p){let d=` | ${_("",a)}${R(p)}`;console.log(d)}console.log("")}function ke(e){return e.errors?.[0].location}import Ye from"fs-extra";import ee from"path";function X(e){for(var o=0,s,n=0,r=e.length;r>=4;++n,r-=4)s=e.charCodeAt(n)&255|(e.charCodeAt(++n)&255)<<8|(e.charCodeAt(++n)&255)<<16|(e.charCodeAt(++n)&255)<<24,s=(s&65535)*1540483477+((s>>>16)*59797<<16),s^=s>>>24,o=(s&65535)*1540483477+((s>>>16)*59797<<16)^(o&65535)*1540483477+((o>>>16)*59797<<16);switch(r){case 3:o^=(e.charCodeAt(n+2)&255)<<16;case 2:o^=(e.charCodeAt(n+1)&255)<<8;case 1:o^=e.charCodeAt(n)&255,o=(o&65535)*1540483477+((o>>>16)*59797<<16)}return o^=o>>>13,o=(o&65535)*1540483477+((o>>>16)*59797<<16),((o^o>>>15)>>>0).toString(36)}var Ze=/(useAction|useLoader)/;function ue({registry:e,appDir:o}){return{name:"registryPlugin",setup(s){s.onLoad({filter:/\.js$/},async n=>{let r=n.path;if(r.includes("node_modules")||r.includes(".firebolt"))return;let a=await Ye.readFile(r,"utf8");if(!Ze.test(a))return{contents:a,loader:"jsx"};let f={},p={},l,j=/import\s+{([^}]+)}\s+from\s+(['"][^'"]+['"])/g;for(;(l=j.exec(a))!==null;){let u=l[2].slice(1).slice(0,-1);l[1].split(",").forEach(F=>{let[g,w]=F.trim().split(/\s+as\s+/),b=w||g;f[b.trim()]={name:g.trim(),alias:w?.trim()||null,file:u}})}let d=/import\s+(\w+)\s+from\s+(['"][^'"]+['"])/g;for(;(l=d.exec(a))!==null;){let u=l[2].slice(1).slice(0,-1),m=l[1].trim();f[m]={name:m,alias:null,file:u}}let S=/export\s+(async\s+function|function|const)\s+(\w+)/g;for(;(l=S.exec(a))!==null;){let u=l[2].trim();p[u]={name:u,alias:null,file:r}}let C=u=>{if(f[u]){let m=f[u].name,F=f[u].alias,g=ee.resolve(ee.dirname(r),f[u].file),w=ee.relative(o,g),E=`f_${X(w+(F||m))}`;return e&&e.set(E,{id:E,file:g,name:m}),E}if(p[u]){let m=u,F=r,g=ee.relative(o,F),b=`f_${X(g+m)}`;return e&&e.set(b,{id:b,file:F,name:m}),b}},v=/(useLoader|useAction)\(([^,)]+)/g;return a=a.split(` | ||
`).map(u=>u.replace(v,(m,F,g)=>{let w=C(g);if(!w)return m;let b=`${F}('${w}'`;return m.trim().endsWith(")")?b+m.substring(m.indexOf(g)+g.length,m.length-1)+")":b})).join(` | ||
`),{contents:a,loader:"jsx"}})}}}function De(){let e=new Set,o;return{begin(){o=!0},end(){o=!1;for(let s of e)s();e.clear()},wait(){if(o)return new Promise(s=>{e.add(s)})}}}import et from"node:assert";import tt from"node:fs/promises";import ot from"node:path";import{createFormatAwareProcessors as it}from"@mdx-js/mdx/internal-create-format-aware-processors";import{extnamesToRegex as nt}from"@mdx-js/mdx/internal-extnames-to-regex";import{VFile as rt}from"vfile";import{VFileMessage as st}from"vfile-message";var Ie=/\r\n|\r|\n|\u2028|\u2029/g,Re="@mdx-js/esbuild";function pe(e){let{extnames:o,process:s}=it(e||{}),n={};return{plugin:{name:Re,setup:r},evict:a};function r(f){f.onLoad({filter:nt(o)},p);async function p(l){if(n[l.path])return n[l.path];let j=String(l.pluginData&&l.pluginData.contents!==null&&l.pluginData.contents!==void 0?l.pluginData.contents:await tt.readFile(l.path));j=` | ||
import { cloneElement } from 'react' | ||
import { useMDXComponents } from 'firebolt' | ||
`+y+` | ||
`+j+` | ||
export default function MDXWrapper({ children }) { | ||
const components = useMDXComponents() | ||
return cloneElement(children, { components }) | ||
}`;let I={doc:y,name:Te,path:l.path},$=new st({path:l.path,value:y}),L,T=[],p=[],m=[];try{$=await s($),L=$.value,T=$.messages}catch(g){let j=g,b="reason"in j?j:new lt("Cannot process MDX file with esbuild",{cause:j,ruleId:"process-error",source:"@mdx-js/esbuild"});b.fatal=!0,T.push(b)}for(let g of T)(g.fatal?p:m).push(at(I,g));tt($.dirname,"expected `dirname` to be defined");let w={contents:L||"",errors:p,resolveDir:it.resolve($.cwd,$.dirname),warnings:m};return n[l.path]=w,w}}function a(f){console.log("evict",f,!!n[f]),delete n[f]}}function at(e,o){let s=o.place,n=s?"start"in s?s.start:s:void 0,r=s&&"end"in s?s.end:void 0,a=0,f=0,u=0,l=0;n&&n.offset!==void 0&&(u=n.line,l=n.column-1,f=n.offset-l,a=1,r&&r.offset!==void 0&&(a=r.offset-n.offset)),Re.lastIndex=f;let y=Re.exec(e.doc),d=y?y.index:e.doc.length;return{detail:o,id:"",location:{column:l,file:e.path,length:Math.min(a,d),line:u,lineText:e.doc.slice(f,d),namespace:"file",suggestion:""},notes:[],pluginName:e.name,text:o.reason}}var xt=ft(import.meta.url),bt=c.dirname(xt),oe={".svg":"dataurl",".png":"dataurl",".jpg":"dataurl",".jpeg":"dataurl",".woff2":"dataurl"};async function ie(e){let o=!!e.production,s=o?"production":"development";ct.config({node_env:s});let n=bt,r=process.cwd(),a=c.join(r,"routes"),f=c.join(r,"firebolt.config.js"),u=c.join(r,".firebolt"),l=c.join(r,".firebolt/page-shims"),y=c.join(r,".firebolt/routes.js"),d=c.join(r,".firebolt/config.js"),B=c.join(r,".firebolt/manifest.json"),I=c.join(r,".firebolt/lib.js"),$=c.join(r,".firebolt/bootstrap.js"),L=c.join(r,".firebolt/registry.js"),T=c.join(r,".firebolt/controller.js"),p=c.join(r,".firebolt/inspection.js"),m=c.join(n,"../extras"),w=c.join(r,".firebolt/controller/index.js"),g=c.join(r,".firebolt/tmp/config.js"),j=c.join(r,".firebolt/tmp/inspection.js"),b=!0,E=!0,M,F={configValidator:null,pageInspector:null,clientBundles:null,controller:null},ne=[],re=new Map;Ee();async function Le(){let h=_e.now();if(ce(`${b?"building...":"rebuilding..."}`),b&&(await D.emptyDir(u),await D.copy(m,u)),!await D.exists(f))throw new X(`missing ${R("firebolt.config.js")} file`);F.configValidator||(F.configValidator=await q.context({entryPoints:[d],outfile:g,bundle:!0,treeShaking:!0,sourcemap:!0,minify:!1,platform:"node",format:"esm",packages:"external",logLevel:"silent",define:{"process.env.NODE_ENV":JSON.stringify(s)},alias:{},loader:{".js":"jsx",...oe},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[]})),await F.configValidator.rebuild();let N=(await ee(g)).config,C={};for(let t in process.env)t.startsWith(N.publicEnvPrefix)&&(C[`process.env.${t}`]=`"${process.env[t]}"`);E&&(M=me({jsx:!1,jsxRuntime:"automatic",jsxImportSource:"@firebolt-dev/jsx",remarkPlugins:N.mdx.remarkPlugins,rehypePlugins:N.mdx.rehypePlugins}));let S={pageFiles:{},bootstrapFile:null},_=await Ne(a),O=0,v=[];for(let t of _){let i={},x=c.relative(a,t);i.id=`r_${U(x)}`,i.file=t,i.fileBase=x,i.fileBaseNoExt=i.fileBase.split(".").slice(0,-1).join("."),i.fileExt=i.fileBase.split(".").pop(),i.fileBase==="_layout.js"||i.fileBase.endsWith("/_layout.js")?i.type="layout":i.fileExt==="js"?i.type="pageOrHandler":i.fileExt==="mdx"?(i.type="page",i.mdx=!0):i.type="static",i.type==="pageOrHandler"||i.type==="page"?i.pattern=pe(i.fileBaseNoExt):i.type==="static"?i.pattern=pe(i.fileBase):i.pattern="",i.relAppToFile=c.relative(r,i.file),i.shimFile=c.join(l,i.fileBase.replace(/\//g,"_")),i.mdx&&(i.shimFile=i.shimFile.replace(".mdx",".js")),i.shimFileName=c.relative(c.dirname(i.shimFile),i.shimFile),i.relBuildToFile=c.relative(u,i.file),i.relShimToFile=c.relative(c.dirname(i.shimFile),i.file),v.push(i)}for(let t of v)if(t.parents=[],t.type==="pageOrHandler"||t.type==="page"){let i=t.fileBaseNoExt.split("/");for(let x=0;x<i.length;x++){let P=[...i].slice(0,x).join("/");if(!P)continue;let Z=v.find(ye=>ye.type==="layout"&&ye.fileBaseNoExt===P+"/_layout");Z&&t.parents.push(Z)}}v.sort((t,i)=>{let x=t.pattern.includes(":"),P=i.pattern.includes(":");return x&&!P?1:!x&&P?-1:0});let de="";for(let t of v)(t.type==="pageOrHandler"||t.type==="page")&&(de+=`export * as ${t.id} from '${t.relBuildToFile}' | ||
`);await D.outputFile(p,de),F.pageInspector||(F.pageInspector=await q.context({entryPoints:[p],outfile:j,bundle:!0,treeShaking:!0,sourcemap:!0,minify:!1,platform:"node",format:"esm",packages:"external",logLevel:"silent",alias:{firebolt:I},define:{"process.env.NODE_ENV":JSON.stringify(s),...C},loader:{".js":"jsx",...oe},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[M.plugin]})),await F.pageInspector.rebuild();let We=await ee(j);for(let t of v){let i=We[t.id];t.type==="pageOrHandler"&&(t.type=i.default?"page":"handler")}let ge=t=>{if(t.type!=="page")return null;let i="",x="";for(let P of t.parents)i+=`<${P.id}.default>`,x=`</${P.id}.default>`+x;return`props => ${i}<${t.id}.default {...props} />${x}`},Ve=` | ||
${v.filter(t=>Ae(t,"layout","page","handler")).map(t=>`import * as ${t.id} from '${t.relBuildToFile}'`).join(` | ||
}`;let C={doc:j,name:Re,path:l.path},v=new rt({path:l.path,value:j}),O,T=[],u=[],m=[];try{v=await s(v),O=v.value,T=v.messages}catch(g){let w=g,b="reason"in w?w:new st("Cannot process MDX file with esbuild",{cause:w,ruleId:"process-error",source:"@mdx-js/esbuild"});b.fatal=!0,T.push(b)}for(let g of T)(g.fatal?u:m).push(lt(C,g));et(v.dirname,"expected `dirname` to be defined");let F={contents:O||"",errors:u,resolveDir:ot.resolve(v.cwd,v.dirname),warnings:m};return n[l.path]=F,F}}function a(f){console.log("evict",f,!!n[f]),delete n[f]}}function lt(e,o){let s=o.place,n=s?"start"in s?s.start:s:void 0,r=s&&"end"in s?s.end:void 0,a=0,f=0,p=0,l=0;n&&n.offset!==void 0&&(p=n.line,l=n.column-1,f=n.offset-l,a=1,r&&r.offset!==void 0&&(a=r.offset-n.offset)),Ie.lastIndex=f;let j=Ie.exec(e.doc),d=j?j.index:e.doc.length;return{detail:o,id:"",location:{column:l,file:e.path,length:Math.min(a,d),line:p,lineText:e.doc.slice(f,d),namespace:"file",suggestion:""},notes:[],pluginName:e.name,text:o.reason}}var ht=ct(import.meta.url),xt=c.dirname(ht),te={".svg":"dataurl",".png":"dataurl",".jpg":"dataurl",".jpeg":"dataurl",".woff2":"dataurl"};async function oe(e){let o=!!e.production,s=o?"production":"development";at.config({node_env:s});let n=xt,r=process.cwd(),a=c.join(r,"routes"),f=c.join(r,"firebolt.config.js"),p=c.join(r,".firebolt"),l=c.join(r,".firebolt/page-shims"),j=c.join(r,".firebolt/routes.js"),d=c.join(r,".firebolt/config.js"),S=c.join(r,".firebolt/manifest.json"),C=c.join(r,".firebolt/lib.js"),v=c.join(r,".firebolt/bootstrap.js"),O=c.join(r,".firebolt/registry.js"),T=c.join(r,".firebolt/controller.js"),u=c.join(r,".firebolt/inspection.js"),m=c.join(n,"../extras"),F=c.join(r,".firebolt/controller/index.js"),g=c.join(r,".firebolt/tmp/config.js"),w=c.join(r,".firebolt/tmp/inspection.js"),b=!0,E=!0,A,$={configValidator:null,pageInspector:null,clientBundles:null,controller:null},ie=[],ne=new Map;ve();async function Ae(){let h=Te.now();if(ae(`${b?"building...":"rebuilding..."}`),b&&(await N.emptyDir(p),await N.copy(m,p)),!await N.exists(f))throw new z(`missing ${R("firebolt.config.js")} file`);$.configValidator||($.configValidator=await U.context({entryPoints:[d],outfile:g,bundle:!0,treeShaking:!0,sourcemap:!0,minify:!1,platform:"node",format:"esm",packages:"external",logLevel:"silent",define:{"process.env.NODE_ENV":JSON.stringify(s)},alias:{},loader:{".js":"jsx",...te},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[]})),await $.configValidator.rebuild();let k=(await Z(g)).config;E&&(A=pe({jsx:!1,jsxRuntime:"automatic",jsxImportSource:"@firebolt-dev/jsx",remarkPlugins:k.mdx.remarkPlugins,rehypePlugins:k.mdx.rehypePlugins}));let D={pageFiles:{},bootstrapFile:null},I=await Be(a),H=0,y=[];for(let t of I){let i={},x=c.relative(a,t);i.id=`r_${X(x)}`,i.file=t,i.fileBase=x,i.fileBaseNoExt=i.fileBase.split(".").slice(0,-1).join("."),i.fileExt=i.fileBase.split(".").pop(),i.fileBase==="_layout.js"||i.fileBase.endsWith("/_layout.js")?i.type="layout":i.fileExt==="js"?i.type="pageOrHandler":i.fileExt==="mdx"?(i.type="page",i.mdx=!0):i.type="static",i.type==="pageOrHandler"||i.type==="page"?i.pattern=fe(i.fileBaseNoExt):i.type==="static"?i.pattern=fe(i.fileBase):i.pattern="",i.relAppToFile=c.relative(r,i.file),i.shimFile=c.join(l,i.fileBase.replace(/\//g,"_")),i.mdx&&(i.shimFile=i.shimFile.replace(".mdx",".js")),i.shimFileName=c.relative(c.dirname(i.shimFile),i.shimFile),i.relBuildToFile=c.relative(p,i.file),i.relShimToFile=c.relative(c.dirname(i.shimFile),i.file),y.push(i)}for(let t of y)if(t.parents=[],t.type==="pageOrHandler"||t.type==="page"){let i=t.fileBaseNoExt.split("/");for(let x=0;x<i.length;x++){let P=[...i].slice(0,x).join("/");if(!P)continue;let Y=y.find(be=>be.type==="layout"&&be.fileBaseNoExt===P+"/_layout");Y&&t.parents.push(Y)}}y.sort((t,i)=>{let x=t.pattern.includes(":"),P=i.pattern.includes(":");return x&&!P?1:!x&&P?-1:0});let me="";for(let t of y)(t.type==="pageOrHandler"||t.type==="page")&&(me+=`export * as ${t.id} from '${t.relBuildToFile}' | ||
`);await N.outputFile(u,me),$.pageInspector||($.pageInspector=await U.context({entryPoints:[u],outfile:w,bundle:!0,treeShaking:!0,sourcemap:!0,minify:!1,platform:"node",format:"esm",packages:"external",logLevel:"silent",alias:{firebolt:C},define:{"process.env.NODE_ENV":JSON.stringify(s)},loader:{".js":"jsx",...te},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[A.plugin]})),await $.pageInspector.rebuild();let Me=await Z(w);for(let t of y){let i=Me[t.id];t.type==="pageOrHandler"&&(t.type=i.default?"page":"handler")}let de=t=>{if(t.type!=="page")return null;let i="",x="";for(let P of t.parents)i+=`<${P.id}.default>`,x=`</${P.id}.default>`+x;return`props => ${i}<${t.id}.default {...props} />${x}`},We=` | ||
${y.filter(t=>Oe(t,"layout","page","handler")).map(t=>`import * as ${t.id} from '${t.relBuildToFile}'`).join(` | ||
`)} | ||
const routes = [ | ||
${v.map(t=>` | ||
${y.map(t=>` | ||
{ | ||
module: ${Ae(t,"page","handler")?t.id:"null"}, | ||
module: ${Oe(t,"page","handler")?t.id:"null"}, | ||
id: '${t.id}', | ||
@@ -31,3 +31,3 @@ type: '${t.type}', | ||
relShimToFile: '${t.relShimToFile}', | ||
content: ${ge(t)} | ||
content: ${de(t)} | ||
}, | ||
@@ -38,14 +38,14 @@ `).join(` | ||
export default routes | ||
`;await D.outputFile(y,Ve);for(let t of v){if(t.type!=="page")continue;let i=` | ||
`;await N.outputFile(j,We);for(let t of y){if(t.type!=="page")continue;let i=` | ||
import * as ${t.id} from '${t.relShimToFile}' | ||
${t.parents.map(x=>`import * as ${x.id} from '${x.relShimToFile}'`).join(` | ||
`)} | ||
const content = ${ge(t)} | ||
const content = ${de(t)} | ||
globalThis.$firebolt('registerPage', '${t.id}', content) | ||
`;await D.outputFile(t.shimFile,i)}re.clear();let He=c.join(u,"public"),Y=[];for(let t of v)t.type==="page"&&Y.push(t.shimFile);Y.push($);let he=!ut(ne,Y);he&&(ne=Y),(!F.clientBundles||E||he)&&(F.clientBundles=await q.context({entryPoints:ne,entryNames:"/[name]-[hash]",outdir:He,bundle:!0,treeShaking:!0,sourcemap:o?N.productionBrowserSourceMaps:!0,splitting:!0,platform:"browser",format:"esm",minify:o,metafile:!0,logLevel:"silent",alias:{firebolt:I},define:{"process.env.NODE_ENV":JSON.stringify(s),...C},loader:{".js":"jsx",...oe},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[M.plugin,ue({registry:re,appDir:r})]}));let xe=(await F.clientBundles.rebuild()).metafile;for(let t in xe.outputs){let i=xe.outputs[t];if(i.entryPoint){if(i.entryPoint.startsWith(".firebolt/page-shims/")){let x=i.entryPoint.replace(".firebolt/page-shims/",""),P=v.find(Z=>Z.shimFileName===x);S.pageFiles[P.id]=t.replace(".firebolt/public","/_firebolt")}i.entryPoint===".firebolt/bootstrap.js"&&(S.bootstrapFile=t.replace(".firebolt/public","/_firebolt"))}}await D.outputFile(B,JSON.stringify(S,null,2));let Je=t=>c.relative(u,t),be="";re.forEach(t=>{be+=`export { ${t.name} as ${t.id} } from '${Je(t.file)}' | ||
`}),await D.outputFile(L,be),(!F.controller||E)&&(F.controller=await q.context({entryPoints:[T],outfile:w,bundle:!0,treeShaking:!0,sourcemap:!0,minify:o,platform:"node",format:"esm",packages:"external",logLevel:"silent",alias:{firebolt:I},define:{"process.env.NODE_ENV":JSON.stringify(s),...C},loader:{".js":"jsx",...oe},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[M.plugin,ue({registry:null,appDir:r})]})),await F.controller.rebuild();let ze=(_e.now()-h).toFixed(0);ce(`${b?"built":"rebuilt"} ${je(`(${ze}ms)`)} | ||
`),b=!1}let K=new Ie,W,V,H;async function Me(){if(V=await ee(w),E)try{await V.config.setup()}catch(h){k("config setup failed"),console.error(h)}if(W&&V.config.port!==H&&(W.close(),W=null),!W){let N=function(){console.log(`server running at http://localhost:${H} | ||
`)},C=function(S){S.code==="EADDRINUSE"?(k(`port ${H} is already in use | ||
`),process.exit()):k(`failed to start server: ${S.message}`)},h=Oe();h.use(dt()),h.use(gt()),h.use(Oe.json()),h.use(ht()),h.use("*",async(S,_)=>{try{await V.handle(S,_,o?K.wait:null)}catch(O){console.error(O)}}),H=V.config.port,W=h.listen(H,N).on("error",C)}}let Q=!1,J=!1,se=async()=>{if(Q){J=!0;return}if(K.begin(),Q=!0,e.build)try{await Le()}catch(h){h instanceof X?k(h.message):De(h)?ke(Ce(h)):(k(` | ||
`),console.error(h)),Q=!1,J=!1,K.end();return}e.serve&&!J&&await Me(),Q=!1,J&&(J=!1,await se()),E=!1,K.end()};if(await se(),e.watch){let h={ignoreInitial:!0,ignored:["**/.firebolt/**"]},N=pt.watch([r],h),C=async(S,_)=>{let O=c.relative(r,_);Pe(`~/${O}`),O==="firebolt.config.js"&&(E=!0),O.endsWith(".mdx")&&M.evict(_),se()};N.on("all",mt(C))}!e.serve&&!e.watch&&process.exit()}function Ae(e,...o){return o.includes(e.type)}process.title="Firebolt";var G=new yt;G.name("firebolt").description("Firebolt React Framework").version("1.0.0");G.command("dev").action(()=>{ie({build:!0,watch:!0,serve:!0})});G.command("build").action(()=>{ie({build:!0,production:!0})});G.command("start").action(()=>{ie({serve:!0,production:!0})});G.parse(); | ||
`;await N.outputFile(t.shimFile,i)}ne.clear();let Ve=c.join(p,"public"),Q=[];for(let t of y)t.type==="page"&&Q.push(t.shimFile);Q.push(v);let ge=!ut(ie,Q);ge&&(ie=Q),(!$.clientBundles||E||ge)&&($.clientBundles=await U.context({entryPoints:ie,entryNames:"/[name]-[hash]",outdir:Ve,bundle:!0,treeShaking:!0,sourcemap:o?k.productionBrowserSourceMaps:!0,splitting:!0,platform:"browser",format:"esm",minify:o,metafile:!0,logLevel:"silent",alias:{firebolt:C},define:{"process.env.NODE_ENV":JSON.stringify(s)},loader:{".js":"jsx",...te},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[A.plugin,ue({registry:ne,appDir:r})]}));let he=(await $.clientBundles.rebuild()).metafile;for(let t in he.outputs){let i=he.outputs[t];if(i.entryPoint){if(i.entryPoint.startsWith(".firebolt/page-shims/")){let x=i.entryPoint.replace(".firebolt/page-shims/",""),P=y.find(Y=>Y.shimFileName===x);D.pageFiles[P.id]=t.replace(".firebolt/public","/_firebolt")}i.entryPoint===".firebolt/bootstrap.js"&&(D.bootstrapFile=t.replace(".firebolt/public","/_firebolt"))}}await N.outputFile(S,JSON.stringify(D,null,2));let He=t=>c.relative(p,t),xe="";ne.forEach(t=>{xe+=`export { ${t.name} as ${t.id} } from '${He(t.file)}' | ||
`}),await N.outputFile(O,xe),(!$.controller||E)&&($.controller=await U.context({entryPoints:[T],outfile:F,bundle:!0,treeShaking:!0,sourcemap:!0,minify:o,platform:"node",format:"esm",packages:"external",logLevel:"silent",alias:{firebolt:C},define:{"process.env.NODE_ENV":JSON.stringify(s)},loader:{".js":"jsx",...te},jsx:"automatic",jsxImportSource:"@firebolt-dev/jsx",plugins:[A.plugin,ue({registry:null,appDir:r})]})),await $.controller.rebuild();let Je=(Te.now()-h).toFixed(0);ae(`${b?"built":"rebuilt"} ${ye(`(${Je}ms)`)} | ||
`),b=!1}let G=new De,L,M,W;async function Le(){if(M=await Z(F),E)try{await M.config.setup()}catch(h){B("config setup failed"),console.error(h)}if(L&&M.config.port!==W&&(L.close(),L=null),!L){let k=function(){console.log(`server running at http://localhost:${W} | ||
`)},D=function(I){I.code==="EADDRINUSE"?(B(`port ${W} is already in use | ||
`),process.exit()):B(`failed to start server: ${I.message}`)},h=_e();h.use(mt()),h.use(dt()),h.use(_e.json()),h.use(gt()),h.use("*",async(I,H)=>{try{await M.handle(I,H,o?G.wait:null)}catch(y){console.error(y)}}),W=M.config.port,L=h.listen(W,k).on("error",D)}}let K=!1,V=!1,re=async()=>{if(K){V=!0;return}if(G.begin(),K=!0,e.build)try{await Ae()}catch(h){h instanceof z?B(h.message):ke(h)?Ce(Ne(h)):(B(` | ||
`),console.error(h)),K=!1,V=!1,G.end();return}e.serve&&!V&&await Le(),K=!1,V&&(V=!1,await re()),E=!1,G.end()};if(await re(),e.watch){let h={ignoreInitial:!0,ignored:["**/.firebolt/**"]},k=ft.watch([r],h),D=async(I,H)=>{let y=c.relative(r,H);Ee(`~/${y}`),y==="firebolt.config.js"&&(E=!0),y.endsWith(".mdx")&&A.evict(H),re()};k.on("all",pt(D))}!e.serve&&!e.watch&&process.exit()}function Oe(e,...o){return o.includes(e.type)}process.title="Firebolt";var q=new bt;q.name("firebolt").description("Firebolt React Framework").version("1.0.0");q.command("dev").action(()=>{oe({build:!0,watch:!0,serve:!0})});q.command("build").action(()=>{oe({build:!0,production:!0})});q.command("start").action(()=>{oe({serve:!0,production:!0})});q.parse(); | ||
//# sourceMappingURL=index.js.map |
@@ -79,2 +79,18 @@ import path from 'path' | ||
// get all public env variables for client js | ||
const envs = {} | ||
for (const key in process.env) { | ||
if (key.startsWith(config.publicEnvPrefix)) { | ||
envs[key] = process.env[key] | ||
} | ||
} | ||
const envsCode = ` | ||
if (!globalThis.process) globalThis.process = {} | ||
if (!globalThis.process.env) globalThis.process.env = {} | ||
const envs = ${JSON.stringify(envs)}; | ||
for (const key in envs) { | ||
globalThis.process.env[key] = envs[key] | ||
} | ||
` | ||
// utility to find a route from a url | ||
@@ -324,2 +340,3 @@ function resolveRouteAndParams(url) { | ||
: ` | ||
${envsCode} | ||
globalThis.$firebolt = function (...args) { | ||
@@ -326,0 +343,0 @@ globalThis.$firebolt.stack.push(args) |
{ | ||
"name": "firebolt", | ||
"version": "0.1.9", | ||
"version": "0.1.10", | ||
"description": "", | ||
@@ -16,4 +16,4 @@ "license": "MIT", | ||
"dependencies": { | ||
"@firebolt-dev/css": "0.1.9", | ||
"@firebolt-dev/jsx": "0.1.9", | ||
"@firebolt-dev/css": "0.1.10", | ||
"@firebolt-dev/jsx": "0.1.10", | ||
"@mdx-js/esbuild": "^3.0.1", | ||
@@ -20,0 +20,0 @@ "@mdx-js/react": "^3.0.1", |
Sorry, the diff of this file is not supported yet
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
1862
127148
+ Added@firebolt-dev/css@0.1.10(transitive)
+ Added@firebolt-dev/jsx@0.1.10(transitive)
- Removed@firebolt-dev/css@0.1.9(transitive)
- Removed@firebolt-dev/jsx@0.1.9(transitive)
Updated@firebolt-dev/css@0.1.10
Updated@firebolt-dev/jsx@0.1.10