UNPKG

@gqty/cli

Version:

Interactive codegen for GQty

3 lines (2 loc) 1.59 kB
#! /usr/bin/env node import{promises as c,existsSync as a}from"fs";import{resolve as u,dirname as f}from"path";import{defaultConfig as p}from"./config.mjs";import{generate as g}from"./generate.mjs";async function v({destinationPath:r,clientCode:e,onExistingFileConflict:t}){if(a(r)){if(t){const s=await c.readFile(r,{encoding:"utf-8"});await t(s)}return}await c.writeFile(r,e,{encoding:"utf-8"})}function x(...r){return Promise.all(r.map(e=>e()))}async function y({schemaCode:r,destinationPath:e,isJavascriptOutput:t,javascriptSchemaCode:s}){await x(async()=>{const i=u(f(e),t?"./schema.generated.d.ts":"./schema.generated.ts");a(i)&&await c.readFile(i,{encoding:"utf-8"})===r||await c.writeFile(i,r,{encoding:"utf-8"})},async()=>{if(t){const i=u(f(e),"./schema.generated.js");if(a(i)&&await c.readFile(i,{encoding:"utf-8"})===s)return;await c.writeFile(i,s,{encoding:"utf-8"})}})}async function m(r,e,t,s,i){const n=t.javascriptOutput??p.javascriptOutput;if(n){if(!e.endsWith(".js")){const o=Error('You have to specify the ".js" extension, instead, it received: "'+e+'"');throw Error.captureStackTrace(o,m),o}}else if(!e.endsWith(".ts")){const o=Error('You have to specify the ".ts" extension, instead, it received: "'+e+'"');throw Error.captureStackTrace(o,m),o}e=u(e);const[{clientCode:w,schemaCode:d,javascriptSchemaCode:l}]=await Promise.all([g(r,t,i),c.mkdir(f(e),{recursive:!0})]);return await Promise.all([v({clientCode:w,destinationPath:e,onExistingFileConflict:s}),y({schemaCode:d,destinationPath:e,isJavascriptOutput:n,javascriptSchemaCode:l})]),e}export{m as writeGenerate};