stellate
Version:
The CLI you need to work with Stellate from your CLI. See https://docs.stellate.co/docs/cli for the complete documentation.
3 lines (2 loc) • 3.52 kB
JavaScript
var q=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var n in t)q(e,n,{get:t[n],enumerable:!0})},J=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of D(t))!R.call(e,r)&&r!==n&&q(e,r,{get:()=>t[r],enumerable:!(a=V(t,r))||a.enumerable});return e};var B=e=>J(q({},"__esModule",{value:!0}),e);var G={};$(G,{createBlake3Hash:()=>h,createStellateLoggerPlugin:()=>F});module.exports=B(G);function h(e){let t=0,n=e.length;if(n===0)return t;for(let a=0;a<n;++a){let r=e.charCodeAt(a);t=(t<<5)-t+r,t&=t}return t>>>0}function x({headers:e,operation:t,method:n,start:a,operationName:r,errors:S,response:p,variables:u,responseHeaders:s,sendVariablesAsHash:l,hasSetCookie:i,graphqlClientName:f,graphqlClientVersion:v}){let g=e.get("x-forwarded-for"),b=g?g.split(","):[],c=s&&s.get("vary"),m;if(c&&c.length){let d=c.split(",").map(o=>o&&o.trim()).sort().map(o=>{let y=o&&e.get(o);return y?`${o}:${y}`:void 0}).filter(Boolean).join(`
`);m=h(d)}return{graphqlClientName:f,graphqlClientVersion:v,operation:t,operationName:r,variables:l?void 0:u,variableHash:l?h(JSON.stringify(u||{})):void 0,method:n,elapsed:Date.now()-a,ip:b[0]||e.get("true-client-ip")||e.get("x-real-ip")||void 0,hasSetCookie:i,referer:e.get("referer")||void 0,userAgent:e.get("user-agent")||void 0,statusCode:200,errors:S,responseSize:JSON.stringify(p).length,responseHash:h(JSON.stringify(p)),varyHash:m}}function L(e){if(typeof e!="function"){console.warn("Stellate logger plugin requires a fetch function to be provided as an option.");return}}var H=process.env.STELLATE_ENDPOINT==="local"||process.env.STELLATE_ENDPOINT==="staging"?"stellate.dev":"stellate.sh";async function w({fetch:e,payload:t,token:n,serviceName:a}){return e(`https://${a}.${H}/log`,{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json","Stellate-Logging-Token":n}})}var C=require("graphql");var F=e=>{var p,u;let t=(p=e.sendVariablesAsHash)!=null?p:!0,n=(u=e.schemaSyncing)!=null?u:!0,a=!1,r,S=async s=>{if(n){let l=(0,C.introspectionFromSchema)(s),i=Math.random()*5e3;r&&clearTimeout(r),r=setTimeout(async()=>{if(r=null,!a)try{e.fetch(`https://${e.serviceName}.${H}/schema`,{method:"POST",body:JSON.stringify({schema:l}),headers:{"Content-Type":"application/json","Stellate-Schema-Token":e.token}}).then(()=>{})}catch{}},i)}};return{async serverWillStart(){return{schemaDidLoadOrUpdate({apiSchema:s}){S(s)},async serverWillStop(){a=!0,r&&clearTimeout(r)}}},async requestDidStart(s){let l=Date.now(),{request:i}=s,{operationName:f,variables:v,http:g,query:b}=i;if(!g)return;let{headers:c,method:m}=g;if(!c.has("gcdn-request-id"))return{async willSendResponse(k){var T,P;let{response:d,source:o}=k;if(d.body.kind!=="single"){console.warn("Stellate does not currently support logging incremental results.");return}let y=d.body.singleResult,N=b||o;if(!N)return;let O=((T=i.http)==null?void 0:T.headers.get("x-graphql-client-name"))||void 0,A=((P=i.http)==null?void 0:P.headers.get("x-graphql-client-version"))||void 0,E=x({headers:c,responseHeaders:d.http.headers,operation:N,method:m,sendVariablesAsHash:t,start:l,operationName:f,errors:k.errors,response:y,variables:v,hasSetCookie:d.http.headers.has("set-cookie"),graphqlClientName:O,graphqlClientVersion:A});L(e.fetch);try{await w({fetch:e.fetch,payload:E,token:e.token,serviceName:e.serviceName})}catch{}}}}}};0&&(module.exports={createBlake3Hash,createStellateLoggerPlugin});
;