UNPKG

houdini-adapter-auto

Version:

An adapter for deploying your Houdini application according to the build environment

3 lines (2 loc) 2.92 kB
var g=Object.create;var c=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var v=(e,t)=>{for(var o in t)c(e,o,{get:t[o],enumerable:!0})},p=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of k(t))!D.call(e,r)&&r!==o&&c(e,r,{get:()=>t[r],enumerable:!(a=w(t,r))||a.enumerable});return e};var l=(e,t,o)=>(o=e!=null?g(h(e)):{},p(t||!e||!e.__esModule?c(o,"default",{value:e,enumerable:!0}):o,e)),F=e=>p(c({},"__esModule",{value:!0}),e);var C={};v(C,{default:()=>$});module.exports=F(C);var u=require("import-meta-resolve"),f=require("child_process"),s=l(require("fs/promises"),1),n=l(require("path"),1),y=require("url"),j=[{name:"CloudFlare Pages",test:()=>!!process.env.CF_PAGES||!!process.env.CLOUDFLARE_PAGES,module:"houdini-adapter-cloudflare"},{name:"HoudiniCloud",test:()=>!!process.env.HOUDINI_CLOUD,module:"houdini-cloud-adapter"},{name:"Node",test:()=>!0,module:"houdini-adapter-node"}],E=async e=>{let t;for(let a of j)if(a.test()){t=a;break}if(!t)throw new Error("Could not identify environment");return console.log(`\u{1F3A9} Identified environment: ${t.name}`),(await A(t))(e)};async function A({module:e}){try{return await m(e)}catch(a){let r=a;if(r.code!=="ERR_MODULE_NOT_FOUND"||!r.message.startsWith(`Cannot find package '${e}'`))throw a}let{package_manager:t}=await O(),o={yarn:"add -D",npm:"install -D",pnpm:"add -D"};try{return(0,f.execSync)(`${t} ${o[t]} ${e}`,{stdio:"inherit",env:{...process.env,NODE_ENV:void 0}}),console.log(`Successfully installed ${e}!`),console.warn(`If you plan on staying in this environment, consider adding ${e} to your project so you don't have to install it every time you build your application.`),await m(e)}catch(a){throw new Error(`Could not install package ${e}. Please install it manually or maybe consider replacing houdini-adapter-auto with ${e}. ${a.message}`)}}async function m(e){let t=(0,y.pathToFileURL)(process.cwd()).href;return(await import((0,u.resolve)(e,`${t}/x.js`))).default}async function O(e=process.cwd()){let t=!1;try{await s.default.stat(n.default.join(e,"tsconfig.json")),t=!0}catch{}let o="npm",a=e;do{try{await s.default.access(n.default.join(a,"pnpm-lock.yaml")),o="pnpm";break}catch{}try{await s.default.access(n.default.join(a,"yarn.lock")),o="yarn";break}catch{}}while(a!==(a=n.default.dirname(a)));return{typescript:t,package_manager:o,...await P(e)}}async function P(e){let t;try{let i=await s.default.readFile(n.default.join(e,"package.json"),"utf-8");if(i)t=JSON.parse(i);else throw new Error("not found")}catch{throw new Error("\u274C houdini init must target an existing node project (with a package.json)")}let{devDependencies:o,dependencies:a}=t,r=i=>!!(o?.[i]||a?.[i]),d={framework:"svelte"};return r("@sveltejs/kit")&&(d={framework:"kit"}),{frameworkInfo:d,module:t.type==="module"?"esm":"commonjs"}}var $=E;