nx-mesh
Version:
GraphQL Mesh support for Nx
2 lines (1 loc) • 3.68 kB
JavaScript
var R=Object.create;var p=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var U=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),$=(e,r)=>{for(var o in r)p(e,o,{get:r[o],enumerable:!0})},f=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of M(r))!K.call(e,n)&&n!==o&&p(e,n,{get:()=>r[n],enumerable:!(t=q(r,n))||t.enumerable});return e};var j=(e,r,o)=>(o=e!=null?R(I(e)):{},f(r||!e||!e.__esModule?p(o,"default",{value:e,enumerable:!0}):o,e)),D=e=>f(p({},"__esModule",{value:!0}),e);var S=U((ie,l)=>{"use strict";var L=require("net"),u=class extends Error{constructor(r){super(`${r} is locked`)}},a={old:new Set,young:new Set},G=1e3*15,d,h=e=>new Promise((r,o)=>{let t=L.createServer();t.unref(),t.on("error",o),t.listen(e,()=>{let{port:n}=t.address();t.close(()=>{r(n)})})}),N=function*(e){e&&(yield*e),yield 0};l.exports=async e=>{let r;e&&(r=typeof e.port=="number"?[e.port]:e.port),d===void 0&&(d=setInterval(()=>{a.old=a.young,a.young=new Set},G),d.unref&&d.unref());for(let o of N(r))try{let t=await h({...e,port:o});for(;a.old.has(t)||a.young.has(t);){if(o!==0)throw new u(o);t=await h({...e,port:o})}return a.young.add(t),t}catch(t){if(!["EADDRINUSE","EACCES"].includes(t.code)&&!(t instanceof u))throw t}throw new Error("No available ports found")};l.exports.makeRange=(e,r)=>{if(!Number.isInteger(e)||!Number.isInteger(r))throw new TypeError("`from` and `to` must be integer numbers");if(e<1024||e>65535)throw new RangeError("`from` must be between 1024 and 65535");if(r<1024||r>65536)throw new RangeError("`to` must be between 1024 and 65536");if(r<e)throw new RangeError("`to` must be greater than or equal to `from`");return function*(t,n){for(let s=t;s<=n;s++)yield s}(e,r)}});var Q={};$(Q,{default:()=>V,startExecutor:()=>b});module.exports=D(Q);var w=require("@nrwl/devkit"),T=require("node:path");var C=e=>{let r={};return Object.entries(e).forEach(([o,t])=>{let n=`--${o}`,s;Array.isArray(t)?s=t.join(" "):s=t,s!==void 0&&s!==""&&(r[n]=`${s}`)}),r},x=e=>Object.entries(e).flat();var A=require("node:child_process");var y=e=>{let r={};return Object.keys(e).forEach(o=>{let t=e[o],n=o.toUpperCase();o==="debug"&&t!==void 0&&(r[n]=(+t).toString())}),r};var v=e=>{let r=C(e.args),o=y(e.env);return{args:r,env:o}};var i;async function E(e,r,o,t){let{args:n,env:s}=v(r),k=x(n);return new Promise((P,c)=>{i=(0,A.spawn)("npx",["graphql-mesh",e,...k],{stdio:t?.stdio??[0,1,2],cwd:o.root,env:{...process.env,...s,FORCE_COLOR:"true"}}),process.on("exit",()=>i.kill()),process.on("SIGTERM",()=>i.kill()),i.on("error",m=>{c(m)}),i.on("exit",m=>{m===0?P(m):c(m)})})}var g=j(S());async function B(e){let r=e.port.number??4200,o=e.port.range!==void 0,t=g.default.makeRange(e.port.range?.from??1024,e.port.range?.to??65535);return e.port.auto?r=await(0,g.default)({port:o?t:void 0}):e.port.fallback==="auto"&&(r=await(0,g.default)({port:o?t:e.port.number,host:e.port.host})),{baseUrl:`http://${e.port.host}:${r}`,host:e.port.host,port:r}}var O=B;var F="Serving GraphQL Mesh:";async function*b(e,r){if(e.dir===void 0)throw new Error("Please define the 'dir' value");let{baseUrl:o,port:t}=await O(e);w.logger.info("Starting GraphQL Mesh start server..."),E("start",{args:{dir:(0,T.resolve)(r.root,e.dir),port:t,require:e.require},env:{debug:e.debug}},r,{stdio:"pipe"}),i?.stdout?.on("data",n=>{process.stdout.write(n)}),i?.stderr?.on("data",n=>{process.stderr.write(n)}),await new Promise(n=>{i?.stdout?.on("data",s=>{s.toString().indexOf(F)>-1&&n()})}),yield{baseUrl:o,success:!0},await new Promise(()=>{})}var V=b;0&&(module.exports={startExecutor});