@bishwenduk029/fringe
Version:
Edge rendered React and GraphQL
3 lines (2 loc) • 6.34 kB
JavaScript
var $=Object.create,u=Object.defineProperty,j=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty,T=Object.getOwnPropertyNames,J=Object.getOwnPropertyDescriptor;var d=r=>u(r,"__esModule",{value:!0});var m=(r,e)=>()=>(e||(e={exports:{}},r(e.exports,e)),e.exports),h=(r,e)=>{for(var t in e)u(r,t,{get:e[t],enumerable:!0})},_=(r,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of T(e))!M.call(r,o)&&o!=="default"&&u(r,o,{get:()=>e[o],enumerable:!(t=J(e,o))||t.enumerable});return r},f=r=>r&&r.__esModule?r:_(d(u(r!=null?$(j(r)):{},"default",{value:r,enumerable:!0})),r);import{resolve as g}from"path";import V from"module";var B=m(Q=>{d(Q);h(Q,{ServerApisBuilder:()=>w});var{builtinModules:I}=V,w=class extends l{constructor(e){super();this.pageSourcePath="src/api";this.pageBuildPath="dist";this.logger=e.logger,this.service=e.service,this.rootDir=e.rootDir}async build(){let e=Date.now(),{modulePaths:t,deps:o}=await this.setup(),s=t;if(!s||s.length===0){this.logger.info({latency:Date.now()-e},"API functions build skipped; no api entrypoints found.");return}this.logger.info("Starting server api build"),await this.service.build({bundle:!0,define:{"process.env.NODE_ENV":"production"},logLevel:"error",entryPoints:[g(this.rootDir,"src/index.ts"),...s.map(i=>g(this.rootDir,`${this.pageSourcePath}/${i}/index.ts`))],external:[...I,...o],format:"esm",incremental:!1,minify:!1,outbase:g(this.rootDir),outdir:g(this.rootDir,this.pageBuildPath),platform:"node",plugins:[],resolveExtensions:[".ts",".js"],sourcemap:!1,splitting:!1,treeShaking:!0,write:!0}),this.logger.info({latency:Date.now()-e},"Finished server functions build")}}});import{resolve as v}from"path";import ee from"module";var q=m(Z=>{d(Z);h(Z,{ServerGraphQLBuilder:()=>L});var{builtinModules:re}=ee,L=class extends l{constructor(e){super();this.pageSourcePath="src/graphql";this.pageBuildPath="dist";this.logger=e.logger,this.service=e.service,this.rootDir=e.rootDir}async build(){let e=Date.now(),t=this.rootDir,{modulePaths:o,deps:s}=await this.setup(),i=o;if(!i||i.length===0){this.logger.info({latency:Date.now()-e},"Graphql build skipped; no graphql entrypoints found.");return}this.logger.info("Starting server graphql build"),await this.service.build({bundle:!0,define:{"process.env.NODE_ENV":"production"},logLevel:"error",entryPoints:[...i.map(a=>v(t,`${this.pageSourcePath}/${a}/index.graphql`))],external:[...re,...s],format:"esm",incremental:!1,minify:!1,outbase:v(t),outdir:v(t,this.pageBuildPath),platform:"node",resolveExtensions:[".graphql",".ts",".js"],plugins:[O()],outExtension:{".js":".js"},sourcemap:!1,splitting:!1,treeShaking:!0,write:!0}),this.logger.info({latency:Date.now()-e},"Finished server graphql build")}}});import{resolve as y}from"path";import oe from"module";var N=m(te=>{d(te);h(te,{ServerPagesBuilder:()=>k});var{builtinModules:ie}=oe,k=class extends l{constructor(e){super();this.pageSourcePath="src/pages";this.pageBuildPath="dist";this.logger=e.logger,this.service=e.service,this.rootDir=e.rootDir}async build(){let e=Date.now(),t=this.rootDir,{modulePaths:o,deps:s}=await this.setup(),i=o;if(!i||i.length===0){this.logger.info({latency:Date.now()-e},"Page build skipped; no page entry points found.");return}this.logger.info("Starting server page build"),await this.service.build({bundle:!0,define:{"process.env.NODE_ENV":"production"},logLevel:"error",entryPoints:[...i.map(a=>y(t,`${this.pageSourcePath}/${a}/index.tsx`))],external:[...ie,...s],format:"esm",incremental:!1,minify:!1,outbase:y(t),outdir:y(t,this.pageBuildPath),platform:"node",resolveExtensions:[".tsx",".jsx"],sourcemap:!1,splitting:!1,treeShaking:!0,write:!0}),this.logger.info({latency:Date.now()-e},"Finished server pages build")}}});import{createRequire as G}from"module";var n=G(import.meta.url);import{readFileSync as se}from"fs";import{resolve as ae}from"path";import{cac as ne}from"cac";import{isMainThread as R,parentPort as b}from"worker_threads";import p from"chalk";var S=class extends Error{constructor(e){super(e);this.name=this.constructor.name,typeof Error.captureStackTrace=="function"?Error.captureStackTrace(this,this.constructor):this.stack=new Error(e).stack}};function P(r){r.loc&&console.error(p.bold(p.red(`Error parsing: ${r.loc.file}:${r.loc.line}:${r.loc.column}`))),r.frame?(console.error(p.red(r.message)),console.error(p.dim(r.frame))):r instanceof S?console.error(p.red(r.message)):console.error(p.red(r.stack)),process.exitCode=1,!R&&b&&b.postMessage("has-error")}import le from"pino";import pe from"esbuild";var{startService:ce}=pe;import D from"fs";import x from"path";var l=class{async setup(){let e=await D.promises.readdir(x.resolve(this.rootDir,this.pageSourcePath),"utf-8"),t=JSON.parse(await D.promises.readFile(x.resolve(this.rootDir,"package.json"),"utf8")),o=Array.from(new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.peerDependencies||{})]));return{modulePaths:e,pkg:t,deps:o}}};import H from"fs";import{parse as K,visit as z,print as U}from"graphql";var E="fringe_cache",X=r=>{let{updatedAST:e,cacheFields:t}=W(r);return{updatedAST:e,cacheFields:t}};function W(r){let e=[],t=K(r);return{updatedAST:z(t,{Field(i){if(i.directives.length)return e=i.directives.reduce((a,c)=>{if(c.name.value===E)return[...a,i.name.value]},e),{...i,directives:i.directives.filter(a=>a.name.value!==E)}}}),cacheFields:e}}var Y=()=>({name:"graphql-loader",setup(r){r.onLoad({filter:/\.graphql$/},async e=>{let t=await H.promises.readFile(e.path,"utf8"),{updatedAST:o,cacheFields:s}=X(t);return{contents:`export const cacheFields=${JSON.stringify(s)}; export const graphQLString = ${JSON.stringify(U(o))};export const updatedAST=${JSON.stringify(o)};`}})}}),O=Y;async function ue(){let r=ne("fringe"),e=await ce();r.command("build","Bundle files",{ignoreOptionDefaultValue:!0}).action(async o=>{let{ServerApisBuilder:s}=await Promise.resolve().then(()=>f(B())),{ServerGraphQLBuilder:i}=await Promise.resolve().then(()=>f(q())),{ServerPagesBuilder:a}=await Promise.resolve().then(()=>f(N())),c={logger:new le,service:e,rootDir:process.cwd()},C=new s(c).build(),F=new i(c).build(),A=new a(c).build();await Promise.all([C,F,A])}),r.help();let t=ae(process.cwd(),"./package.json");r.version(JSON.parse(se(t,"utf8")).version),r.parse(process.argv,{run:!1}),await r.runMatchedCommand()}ue().catch(P);