UNPKG

@bishwenduk029/fringe

Version:
2 lines (1 loc) 2.25 kB
import{createRequire as f}from"module";var n=f(import.meta.url);import{resolve as p}from"path";import x from"module";import v from"fs";import{parse as y,visit as S,print as b}from"graphql";var c="fringe_cache",q=i=>{let{updatedAST:e,cacheFields:r}=P(i);return{updatedAST:e,cacheFields:r}};function P(i){let e=[],r=y(i);return{updatedAST:S(r,{Field(t){if(t.directives.length)return e=t.directives.reduce((s,m)=>{if(m.name.value===c)return[...s,t.name.value]},e),{...t,directives:t.directives.filter(s=>s.name.value!==c)}}}),cacheFields:e}}var D=()=>({name:"graphql-loader",setup(i){i.onLoad({filter:/\.graphql$/},async e=>{let r=await v.promises.readFile(e.path,"utf8"),{updatedAST:o,cacheFields:a}=q(r);return{contents:`export const cacheFields=${JSON.stringify(a)}; export const graphQLString = ${JSON.stringify(b(o))};export const updatedAST=${JSON.stringify(o)};`}})}}),g=D;import d from"fs";import u from"path";var l=class{async setup(){let e=await d.promises.readdir(u.resolve(this.rootDir,this.pageSourcePath),"utf-8"),r=JSON.parse(await d.promises.readFile(u.resolve(this.rootDir,"package.json"),"utf8")),o=Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]));return{modulePaths:e,pkg:r,deps:o}}};var{builtinModules:L}=x,h=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(),r=this.rootDir,{modulePaths:o,deps:a}=await this.setup(),t=o;if(!t||t.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:[...t.map(s=>p(r,`${this.pageSourcePath}/${s}/index.graphql`))],external:[...L,...a],format:"esm",incremental:!1,minify:!1,outbase:p(r),outdir:p(r,this.pageBuildPath),platform:"node",resolveExtensions:[".graphql",".ts",".js"],plugins:[g()],outExtension:{".js":".js"},sourcemap:!1,splitting:!1,treeShaking:!0,write:!0}),this.logger.info({latency:Date.now()-e},"Finished server graphql build")}};export{h as ServerGraphQLBuilder};