UNPKG

@gqty/cli

Version:

Interactive codegen for GQty

2 lines (1 loc) 1.9 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const fs=require("fs"),path=require("path"),config=require("./config.js"),generate=require("./generate.js");async function writeClientCode({destinationPath:r,clientCode:e,onExistingFileConflict:i}){if(fs.existsSync(r)){if(i){const t=await fs.promises.readFile(r,{encoding:"utf-8"});await i(t)}return}await fs.promises.writeFile(r,e,{encoding:"utf-8"})}function waitFunctions(...r){return Promise.all(r.map(e=>e()))}async function writeSchemaCode({schemaCode:r,destinationPath:e,isJavascriptOutput:i,javascriptSchemaCode:t}){await waitFunctions(async()=>{const s=path.resolve(path.dirname(e),i?"./schema.generated.d.ts":"./schema.generated.ts");fs.existsSync(s)&&await fs.promises.readFile(s,{encoding:"utf-8"})===r||await fs.promises.writeFile(s,r,{encoding:"utf-8"})},async()=>{if(i){const s=path.resolve(path.dirname(e),"./schema.generated.js");if(fs.existsSync(s)&&await fs.promises.readFile(s,{encoding:"utf-8"})===t)return;await fs.promises.writeFile(s,t,{encoding:"utf-8"})}})}async function writeGenerate(r,e,i,t,s){const n=i.javascriptOutput??config.defaultConfig.javascriptOutput;if(n){if(!e.endsWith(".js")){const c=Error('You have to specify the ".js" extension, instead, it received: "'+e+'"');throw Error.captureStackTrace(c,writeGenerate),c}}else if(!e.endsWith(".ts")){const c=Error('You have to specify the ".ts" extension, instead, it received: "'+e+'"');throw Error.captureStackTrace(c,writeGenerate),c}e=path.resolve(e);const[{clientCode:o,schemaCode:a,javascriptSchemaCode:u}]=await Promise.all([generate.generate(r,i,s),fs.promises.mkdir(path.dirname(e),{recursive:!0})]);return await Promise.all([writeClientCode({clientCode:o,destinationPath:e,onExistingFileConflict:t}),writeSchemaCode({schemaCode:a,destinationPath:e,isJavascriptOutput:n,javascriptSchemaCode:u})]),e}exports.writeGenerate=writeGenerate;