UNPKG

@gqty/cli

Version:

Interactive codegen for GQty

8 lines (6 loc) 4.85 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const fs=require("fs"),module$1=require("module"),path=require("path");require("@commander-js/extra-typings"),require("@graphql-codegen/core"),require("@graphql-codegen/typescript"),require("@graphql-tools/utils"),require("@graphql-tools/wrap"),require("@inquirer/prompts");const cosmiconfig=require("cosmiconfig");require("cross-fetch"),require("fast-glob"),require("graphql"),require("lodash-es/sortBy.js"),require("prettier");const innerState=require("./innerState.js"),prettier=require("./prettier.js"),cjsRequire=globalThis.require||module$1.createRequire((typeof document>"u"?new(require("url")).URL("file:"+__filename).href:document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||new URL("config.js",document.baseURI).href).toString());function isPlainObject(r){return r!=null&&typeof r=="object"&&!Array.isArray(r)}function isStringRecord(r){return isPlainObject(r)&&Object.values(r).every(n=>typeof n=="string")}const DUMMY_ENDPOINT="SPECIFY_ENDPOINT_OR_SCHEMA_FILE_PATH_HERE",defaultConfig={frameworks:(()=>{const r=[];try{cjsRequire.resolve("react"),r.push("react")}catch{}try{cjsRequire.resolve("solid-js"),r.push("solid-js")}catch{}return r})(),scalarTypes:{DateTime:"string"},introspection:{endpoint:DUMMY_ENDPOINT,headers:{}},endpoint:"/api/graphql",destination:"./src/gqty/index.ts",subscriptions:!1,javascriptOutput:!1,enumStyle:"enum",enumsAsStrings:!1,enumsAsConst:!1,preImport:""};function warnConfig(r,n,e,t){console.warn(`Warning, invalid config ${r}, got: ${JSON.stringify(n)}, expected ${e}. ${JSON.stringify(t)} used instead.`)}function getValidConfig(r){if(isPlainObject(r)){const n={};typeof r.javascriptOutput=="boolean"&&(n.javascriptOutput=r.javascriptOutput);for(const[e,t]of Object.entries(r))if(t!==void 0)switch(e){case"destination":case"preImport":{typeof t=="string"?n[e]=t:warnConfig(e,t,"string",defaultConfig[e]);break}case"javascriptOutput":case"react":case"subscriptions":case"enumsAsStrings":{typeof t=="boolean"?n[e]=t:warnConfig(e,t,"boolean",defaultConfig[e]);break}case"enumsAsConst":{typeof t=="boolean"?n[e]=t:warnConfig(e,t,"boolean",defaultConfig[e]);break}case"scalarTypes":{isStringRecord(t)?n[e]=t:warnConfig(e,t,'"object of strings"',defaultConfig[e]);break}case"endpoint":{t&&typeof t=="string"?n[e]=t:warnConfig(e,t,"string",defaultConfig[e]);break}case"introspection":{if(isPlainObject(t)){const o={};for(const[s,i]of Object.entries(t))if(i!==void 0)switch(s){case"endpoint":{typeof i=="string"?o[s]=i:warnConfig(`${e}.${s}`,i,"string",defaultConfig.introspection.endpoint);break}case"headers":{isStringRecord(i)?o[s]=i:warnConfig(`${e}.${s}`,i,'"object of strings"',defaultConfig.introspection.headers);break}default:console.warn(`Warning, invalid and unused config property "${e}.${s}": ${JSON.stringify(t)}`)}n[e]=o}else warnConfig(e,t,"object",defaultConfig[e]);break}case"introspections":{if(isPlainObject(t)){const o={};for(const[s,i]of Object.entries(t))isPlainObject(i)?o[s]=i:warnConfig(`${e}.${s}`,i,'"object of strings"',{});n[e]=o}else warnConfig(e,t,"object",defaultConfig[e]);break}case"transformSchema":{typeof t=="function"?n[e]=t:warnConfig(e,t,"function","undefined");break}default:console.warn(`Warning, invalid and unused config property "${e}": ${JSON.stringify(t)}`)}return n}else return console.warn("Invalid config, using instead: "+JSON.stringify(defaultConfig,null,2)),defaultConfig}const defaultFilePath=path.resolve(process.cwd(),"gqty.config.cjs"),defaultGQtyConfig={filepath:defaultFilePath,config:defaultConfig};let gqtyConfigPromise;const loadOrGenerateConfig=async({writeConfigFile:r=!1}={})=>(gqtyConfigPromise===void 0&&(gqtyConfigPromise=(async()=>{try{const e=o=>cjsRequire(o),t=await cosmiconfig.cosmiconfig("gqty",{searchPlaces:["gqty.config.cjs","gqty.config.js","package.json"],loaders:{".cjs":e,".js":e}}).search();if(!t||t.isEmpty){const o=t?.filepath||defaultFilePath,s=process.env.NODE_ENV;if(s!=="test"&&s!=="production"&&innerState.__innerState.isCLI){const{format:i}=prettier.formatPrettier({parser:"typescript"}),c={...defaultConfig};delete c.preImport,delete c.enumsAsStrings,r&&await fs.promises.writeFile(defaultFilePath,await i(` /** * @type {import("@gqty/cli").GQtyConfig} */ const config = ${JSON.stringify(c)}; module.exports = config;`))}return{filepath:o,config:defaultConfig}}return{config:getValidConfig(t.config),filepath:t.filepath}}catch(e){return console.error(e),defaultGQtyConfig}})()),gqtyConfigPromise);exports.DUMMY_ENDPOINT=DUMMY_ENDPOINT,exports.defaultConfig=defaultConfig,exports.getValidConfig=getValidConfig,exports.loadOrGenerateConfig=loadOrGenerateConfig;