Skip to content

Instantly share code, notes, and snippets.

@bundle-js
Created March 22, 2023 07:00
Show Gist options
  • Select an option

  • Save bundle-js/0b7fac0e97ffbd7b46d221f0f88fa479 to your computer and use it in GitHub Desktop.

Select an option

Save bundle-js/0b7fac0e97ffbd7b46d221f0f88fa479 to your computer and use it in GitHub Desktop.
var te={NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType"},le={QUERY:"query",MUTATION:"mutation",SUBSCRIPTION:"subscription"},j=class extends Error{constructor(i,n,t,o,v,r,s){super(i),this.name="GraphQLError",this.message=i,v&&(this.path=v),n&&(this.nodes=Array.isArray(n)?n:[n]),t&&(this.source=t),o&&(this.positions=o),r&&(this.originalError=r);var d=s;if(!d&&r){var c=r.extensions;c&&typeof c=="object"&&(d=c)}this.extensions=d||{}}toJSON(){return{...this,message:this.message}}toString(){return this.message}get[Symbol.toStringTag](){return"GraphQLError"}},u,a;function f(e){return new j(`Syntax Error: Unexpected token at ${a} in ${e}`)}function h(e){if(e.lastIndex=a,e.test(u))return u.slice(a,a=e.lastIndex)}var I=/ +(?=[^\s])/y;function P(e){for(var i=e.split(`
`),n="",t=0,o=0,v=i.length-1,r=0;r<i.length;r++)I.lastIndex=0,I.test(i[r])&&(r&&(!t||I.lastIndex<t)&&(t=I.lastIndex),o=o||r,v=r);for(var s=o;s<=v;s++)s!==o&&(n+=`
`),n+=i[s].slice(t).replace(/\\"""/g,'"""');return n}function l(){for(var e=0|u.charCodeAt(a++);e===9||e===10||e===13||e===32||e===35||e===44||e===65279;e=0|u.charCodeAt(a++))if(e===35)for(;(e=u.charCodeAt(a++))!==10&&e!==13;);a--}var x=/[_\w][_\d\w]*/y;function V(){var e;if(e=h(x))return{kind:"Name",value:e}}var J=/null|true|false/y,U=/\$[_\w][_\d\w]*/y,q=/-?\d+/y,Y=/(?:\.\d+)?(?:[eE][+-]?\d+)?/y,$=/\\/g,K=/"""(?:[\s\S]+(?="""))?"""/y,Q=/"(?:[^"\r\n]+)?"/y;function T(e){var i,n;if(n=h(J))i=n==="null"?{kind:"NullValue"}:{kind:"BooleanValue",value:n==="true"};else if(!e&&(n=h(U)))i={kind:"Variable",name:{kind:"Name",value:n.slice(1)}};else if(n=h(q)){var t=n;(n=h(Y))?i={kind:"FloatValue",value:t+n}:i={kind:"IntValue",value:t}}else if(n=h(x))i={kind:"EnumValue",value:n};else if(n=h(K))i={kind:"StringValue",value:P(n.slice(3,-3)),block:!0};else if(n=h(Q))i={kind:"StringValue",value:$.test(n)?JSON.parse(n):n.slice(1,-1),block:!1};else if(i=function(v){var r;if(u.charCodeAt(a)===91){a++,l();for(var s=[];r=T(v);)s.push(r);if(u.charCodeAt(a++)!==93)throw f("ListValue");return l(),{kind:"ListValue",values:s}}}(e)||function(v){if(u.charCodeAt(a)===123){a++,l();for(var r=[],s;s=V();){if(l(),u.charCodeAt(a++)!==58)throw f("ObjectField");l();var d=T(v);if(!d)throw f("ObjectField");r.push({kind:"ObjectField",name:s,value:d})}if(u.charCodeAt(a++)!==125)throw f("ObjectValue");return l(),{kind:"ObjectValue",fields:r}}}(e))return i;return l(),i}function M(e){var i=[];if(l(),u.charCodeAt(a)===40){a++,l();for(var n;n=V();){if(l(),u.charCodeAt(a++)!==58)throw f("Argument");l();var t=T(e);if(!t)throw f("Argument");i.push({kind:"Argument",name:n,value:t})}if(!i.length||u.charCodeAt(a++)!==41)throw f("Argument");l()}return i}function A(e){var i=[];for(l();u.charCodeAt(a)===64;){a++;var n=V();if(!n)throw f("Directive");l(),i.push({kind:"Directive",name:n,arguments:M(e)})}return i}function z(){var e=V();if(e){l();var i;if(u.charCodeAt(a)===58){if(a++,l(),i=e,!(e=V()))throw f("Field");l()}return{kind:"Field",alias:i,name:e,arguments:M(!1),directives:A(!1),selectionSet:F()}}}function L(){var e;if(l(),u.charCodeAt(a)===91){a++,l();var i=L();if(!i||u.charCodeAt(a++)!==93)throw f("ListType");e={kind:"ListType",type:i}}else if(e=V())e={kind:"NamedType",name:e};else throw f("NamedType");return l(),u.charCodeAt(a)===33?(a++,l(),{kind:"NonNullType",type:e}):e}var H=/on/y;function G(){if(h(H)){l();var e=V();if(!e)throw f("NamedType");return l(),{kind:"NamedType",name:e}}}var W=/\.\.\./y;function X(){if(h(W)){l();var e=a,i;if((i=V())&&i.value!=="on")return{kind:"FragmentSpread",name:i,directives:A(!1)};a=e;var n=G(),t=A(!1),o=F();if(!o)throw f("InlineFragment");return{kind:"InlineFragment",typeCondition:n,directives:t,selectionSet:o}}}function F(){var e;if(l(),u.charCodeAt(a)===123){a++,l();for(var i=[];e=X()||z();)i.push(e);if(!i.length||u.charCodeAt(a++)!==125)throw f("SelectionSet");return l(),{kind:"SelectionSet",selections:i}}}var Z=/fragment/y;function ee(){if(h(Z)){l();var e=V();if(!e)throw f("FragmentDefinition");l();var i=G();if(!i)throw f("FragmentDefinition");var n=A(!1),t=F();if(!t)throw f("FragmentDefinition");return{kind:"FragmentDefinition",name:e,typeCondition:i,directives:n,selectionSet:t}}}var ie=/query|mutation|subscription/y;function ne(){var e,i,n=[],t=[];(e=h(ie))&&(l(),i=V(),n=function(){var r,s=[];if(l(),u.charCodeAt(a)===40){for(a++,l();r=h(U);){if(l(),u.charCodeAt(a++)!==58)throw f("VariableDefinition");var d=L(),c=void 0;if(u.charCodeAt(a)===61&&(a++,l(),!(c=T(!0))))throw f("VariableDefinition");l(),s.push({kind:"VariableDefinition",variable:{kind:"Variable",name:{kind:"Name",value:r.slice(1)}},type:d,defaultValue:c,directives:A(!0)})}if(u.charCodeAt(a++)!==41)throw f("VariableDefinition");l()}return s}(),t=A(!1));var o=F();if(o)return{kind:"OperationDefinition",operation:e||"query",name:i,variableDefinitions:n,directives:t,selectionSet:o}}function oe(e,i){return u=typeof e.body=="string"?e.body:e,a=0,function(){var t;l();for(var o=[];t=ee()||ne();)o.push(t);return{kind:"Document",definitions:o}}()}function ue(e,i){u=typeof e.body=="string"?e.body:e,a=0,l();var n=T(!1);if(!n)throw f("ValueNode");return n}function ve(e,i){return u=typeof e.body=="string"?e.body:e,a=0,L()}var b={};function se(e,i){var n=[],t=[];try{var o=function v(r,s,d){var c=!1,_=i[r.kind]&&i[r.kind].enter||i[r.kind]||i.enter,N=_&&_.call(i,r,s,d,t,n);if(N===!1)return r;if(N===null)return null;if(N===b)throw b;N&&typeof N.kind=="string"&&(c=N!==r,r=N),d&&n.push(d);var k,w={...r};for(var D in r){t.push(D);var p=r[D];if(Array.isArray(p)){for(var B=[],S=0;S<p.length;S++)p[S]!=null&&typeof p[S].kind=="string"&&(n.push(r),t.push(S),k=v(p[S],S,p),t.pop(),n.pop(),k==null?c=!0:(c=c||k!==p[S],B.push(k)));p=B}else p!=null&&typeof p.kind=="string"&&(k=v(p,D,r))!==void 0&&(c=c||p!==k,p=k);t.pop(),c&&(w[D]=p)}d&&n.pop();var R=i[r.kind]&&i[r.kind].leave||i.leave,C=R&&R.call(i,r,s,d,t,n);if(C===b)throw b;return C!==void 0?C:N!==void 0?c?w:N:c?w:r}(e);return o!==void 0&&o!==!1?o:e}catch(v){if(v!==b)throw v;return e}}function re(e){return JSON.stringify(e)}function ae(e){return`"""
`+e.replace(/"""/g,'\\"""')+`
"""`}var g=e=>!(!e||!e.length),m={OperationDefinition(e){if(e.operation==="query"&&!e.name&&!g(e.variableDefinitions)&&!g(e.directives))return m.SelectionSet(e.selectionSet);var i=e.operation;return e.name&&(i+=" "+e.name.value),g(e.variableDefinitions)&&(e.name||(i+=" "),i+="("+e.variableDefinitions.map(m.VariableDefinition).join(", ")+")"),g(e.directives)&&(i+=" "+e.directives.map(m.Directive).join(" ")),i+" "+m.SelectionSet(e.selectionSet)},VariableDefinition(e){var i=m.Variable(e.variable)+": "+y(e.type);return e.defaultValue&&(i+=" = "+y(e.defaultValue)),g(e.directives)&&(i+=" "+e.directives.map(m.Directive).join(" ")),i},Field(e){var i=(e.alias?e.alias.value+": ":"")+e.name.value;if(g(e.arguments)){var n=e.arguments.map(m.Argument),t=i+"("+n.join(", ")+")";i=t.length>80?i+`(
`+n.join(`
`).replace(/\n/g,`
`)+`
)`:t}return g(e.directives)&&(i+=" "+e.directives.map(m.Directive).join(" ")),e.selectionSet?i+" "+m.SelectionSet(e.selectionSet):i},StringValue:e=>e.block?ae(e.value):re(e.value),BooleanValue:e=>""+e.value,NullValue:e=>"null",IntValue:e=>e.value,FloatValue:e=>e.value,EnumValue:e=>e.value,Name:e=>e.value,Variable:e=>"$"+e.name.value,ListValue:e=>"["+e.values.map(y).join(", ")+"]",ObjectValue:e=>"{"+e.fields.map(m.ObjectField).join(", ")+"}",ObjectField:e=>e.name.value+": "+y(e.value),Document:e=>g(e.definitions)?e.definitions.map(y).join(`
`):"",SelectionSet:e=>`{
`+e.selections.map(y).join(`
`).replace(/\n/g,`
`)+`
}`,Argument:e=>e.name.value+": "+y(e.value),FragmentSpread(e){var i="..."+e.name.value;return g(e.directives)&&(i+=" "+e.directives.map(m.Directive).join(" ")),i},InlineFragment(e){var i="...";return e.typeCondition&&(i+=" on "+e.typeCondition.name.value),g(e.directives)&&(i+=" "+e.directives.map(m.Directive).join(" ")),i+" "+y(e.selectionSet)},FragmentDefinition(e){var i="fragment "+e.name.value;return i+=" on "+e.typeCondition.name.value,g(e.directives)&&(i+=" "+e.directives.map(m.Directive).join(" ")),i+" "+y(e.selectionSet)},Directive(e){var i="@"+e.name.value;return g(e.arguments)&&(i+="("+e.arguments.map(m.Argument).join(", ")+")"),i},NamedType:e=>e.name.value,ListType:e=>"["+y(e.type)+"]",NonNullType:e=>y(e.type)+"!"};function y(e){return m[e.kind]?m[e.kind](e):""}function E(e,i){switch(e.kind){case"NullValue":return null;case"IntValue":return parseInt(e.value,10);case"FloatValue":return parseFloat(e.value);case"StringValue":case"EnumValue":case"BooleanValue":return e.value;case"ListValue":for(var n=[],t=0,o=e.values;t<o.length;t+=1)n.push(E(o[t],i));return n;case"ObjectValue":for(var v=Object.create(null),r=0,s=e.fields;r<s.length;r+=1){var d=s[r];v[d.name.value]=E(d.value,i)}return v;case"Variable":return i&&i[e.name.value]}}function O(e,i,n){if(e.kind==="Variable")return n?O(n[e.name.value],i,n):void 0;if(i.kind==="NonNullType")return e.kind!=="NullValue"?O(e,i,n):void 0;if(e.kind==="NullValue")return null;if(i.kind==="ListType"){if(e.kind==="ListValue"){for(var t=[],o=0,v=e.values;o<v.length;o+=1){var r=O(v[o],i.type,n);if(r===void 0)return;t.push(r)}return t}}else if(i.kind==="NamedType")switch(i.name.value){case"Int":case"Float":case"String":case"Bool":return i.name.value+"Value"===e.kind?E(e,n):void 0;default:return E(e,n)}}export{b as BREAK,j as GraphQLError,te as Kind,le as OperationTypeNode,oe as parse,ve as parseType,ue as parseValue,y as print,ae as printBlockString,re as printString,E as valueFromASTUntyped,O as valueFromTypeNode,se as visit};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment