PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@0no-co/graphqlsp/dist

Просмотр файла: graphqlsp.mjs

import { C as e, o as t, t as n, g as r, f as i, b as a, a as o, i as s, c as u, d as c, p as l, e as d, r as f, h as v, j as p, A as g, k as m, l as E } from "./chunks/api-chunk.mjs";

import h from "node:fs/promises";

import T from "path";

import { loadRef as y, resolveTypeScriptRootDir as I, minifyIntrospection as b, outputIntrospectionFile as S } from "@gql.tada/internal";

import { SchemaMetaFieldDef as _, TypeMetaFieldDef as D, TypeNameMetaFieldDef as N, isCompositeType as A, Kind as k, isScalarType as F, isObjectType as C, isInterfaceType as L, isUnionType as O, isEnumType as x, isInputObjectType as M, getNamedType as P, isOutputType as w, isInputType as R, GraphQLEnumType as j, GraphQLBoolean as U, isAbstractType as V, assertAbstractType as Y, doTypesOverlap as $, DirectiveLocation as B, visit as G, parse as Q, BREAK as X, isListType as W, isNonNullType as J, GraphQLInterfaceType as K, GraphQLObjectType as z, GraphQLInputObjectType as H, getNullableType as q, GraphQLList as Z, GraphQLNonNull as ee } from "graphql";

var statFile = (e, t) => h.stat(e).then(t).catch((() => !1));

var swapWrite = async (e, t) => {
  if (!await statFile(e, (e => e.isFile()))) {
    await h.writeFile(e, t);
  } else {
    var n = e + ".tmp";
    await h.writeFile(n, t);
    try {
      await h.rename(n, e);
    } catch (e) {
      await h.unlink(n);
      throw e;
    } finally {
      await (async e => {
        try {
          var t = new Date;
          await h.utimes(e, t, t);
        } catch (e) {}
      })(e);
    }
  }
};

async function saveTadaIntrospection(e, t, n, r) {
  var i = b(e);
  var a = S(i, {
    fileType: t,
    shouldPreprocess: !n
  });
  var o = t;
  if (await statFile(o, (e => e.isDirectory()))) {
    o = T.join(o, "introspection.d.ts");
  } else if (!await statFile(o, (e => !!e))) {
    await h.mkdir(T.dirname(o), {
      recursive: !0
    });
    if (await statFile(o, (e => e.isDirectory()))) {
      o = T.join(o, "introspection.d.ts");
    }
  }
  try {
    await swapWrite(o, a);
    r(`Introspection saved to path @ ${o}`);
  } catch (e) {
    r(`Failed to write introspection @ ${e}`);
  }
}

function getDefinitionState(e) {
  var t;
  forEachState(e, (e => {
    switch (e.kind) {
     case "Query":
     case "ShortQuery":
     case "Mutation":
     case "Subscription":
     case "FragmentDefinition":
      t = e;
    }
  }));
  return t;
}

function getFieldDef(e, t, n) {
  if (n === _.name && e.getQueryType() === t) {
    return _;
  }
  if (n === D.name && e.getQueryType() === t) {
    return D;
  }
  if (n === N.name && A(t)) {
    return N;
  }
  if ("getFields" in t) {
    return t.getFields()[n];
  }
  return null;
}

function forEachState(e, t) {
  var n = [];
  var r = e;
  while (null == r ? void 0 : r.kind) {
    n.push(r);
    r = r.prevState;
  }
  for (var i = n.length - 1; i >= 0; i--) {
    t(n[i]);
  }
}

function objectValues(e) {
  var t = Object.keys(e);
  var n = t.length;
  var r = new Array(n);
  for (var i = 0; i < n; ++i) {
    r[i] = e[t[i]];
  }
  return r;
}

function hintList$1(e, t) {
  return function filterAndSortList$1(e, t) {
    if (!t) {
      return filterNonEmpty$1(e, (e => !e.isDeprecated));
    }
    var n = e.map((e => ({
      proximity: getProximity$1(normalizeText$1(e.label), t),
      entry: e
    })));
    return filterNonEmpty$1(filterNonEmpty$1(n, (e => e.proximity <= 2)), (e => !e.entry.isDeprecated)).sort(((e, t) => (e.entry.isDeprecated ? 1 : 0) - (t.entry.isDeprecated ? 1 : 0) || e.proximity - t.proximity || e.entry.label.length - t.entry.label.length)).map((e => e.entry));
  }(t, normalizeText$1(e.string));
}

function filterNonEmpty$1(e, t) {
  var n = e.filter(t);
  return 0 === n.length ? e : n;
}

function normalizeText$1(e) {
  return e.toLowerCase().replaceAll(/\W/g, "");
}

function getProximity$1(e, t) {
  var n = function lexicalDistance$1(e, t) {
    var n;
    var r;
    var i = [];
    var a = e.length;
    var o = t.length;
    for (n = 0; n <= a; n++) {
      i[n] = [ n ];
    }
    for (r = 1; r <= o; r++) {
      i[0][r] = r;
    }
    for (n = 1; n <= a; n++) {
      for (r = 1; r <= o; r++) {
        var s = e[n - 1] === t[r - 1] ? 0 : 1;
        i[n][r] = Math.min(i[n - 1][r] + 1, i[n][r - 1] + 1, i[n - 1][r - 1] + s);
        if (n > 1 && r > 1 && e[n - 1] === t[r - 2] && e[n - 2] === t[r - 1]) {
          i[n][r] = Math.min(i[n][r], i[n - 2][r - 2] + s);
        }
      }
    }
    return i[a][o];
  }(t, e);
  if (e.length > t.length) {
    n -= e.length - t.length - 1;
    n += 0 === e.indexOf(t) ? 0 : .5;
  }
  return n;
}

var te;

!function(e) {
  e.is = function is(e) {
    return "string" == typeof e;
  };
}(te || (te = {}));

var ne;

!function(e) {
  e.is = function is(e) {
    return "string" == typeof e;
  };
}(ne || (ne = {}));

var re;

!function(e) {
  e.MIN_VALUE = -2147483648;
  e.MAX_VALUE = 2147483647;
  e.is = function is(t) {
    return "number" == typeof t && e.MIN_VALUE <= t && t <= e.MAX_VALUE;
  };
}(re || (re = {}));

var ie;

!function(e) {
  e.MIN_VALUE = 0;
  e.MAX_VALUE = 2147483647;
  e.is = function is(t) {
    return "number" == typeof t && e.MIN_VALUE <= t && t <= e.MAX_VALUE;
  };
}(ie || (ie = {}));

var ae;

!function(e) {
  e.create = function create(e, t) {
    if (e === Number.MAX_VALUE) {
      e = ie.MAX_VALUE;
    }
    if (t === Number.MAX_VALUE) {
      t = ie.MAX_VALUE;
    }
    return {
      line: e,
      character: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && St.uinteger(t.line) && St.uinteger(t.character);
  };
}(ae || (ae = {}));

var oe;

!function(e) {
  e.create = function create(e, t, n, r) {
    if (St.uinteger(e) && St.uinteger(t) && St.uinteger(n) && St.uinteger(r)) {
      return {
        start: ae.create(e, t),
        end: ae.create(n, r)
      };
    } else if (ae.is(e) && ae.is(t)) {
      return {
        start: e,
        end: t
      };
    } else {
      throw new Error("Range#create called with invalid arguments[".concat(e, ", ").concat(t, ", ").concat(n, ", ").concat(r, "]"));
    }
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && ae.is(t.start) && ae.is(t.end);
  };
}(oe || (oe = {}));

var se;

!function(e) {
  e.create = function create(e, t) {
    return {
      uri: e,
      range: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && oe.is(t.range) && (St.string(t.uri) || St.undefined(t.uri));
  };
}(se || (se = {}));

var ue;

!function(e) {
  e.create = function create(e, t, n, r) {
    return {
      targetUri: e,
      targetRange: t,
      targetSelectionRange: n,
      originSelectionRange: r
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && oe.is(t.targetRange) && St.string(t.targetUri) && oe.is(t.targetSelectionRange) && (oe.is(t.originSelectionRange) || St.undefined(t.originSelectionRange));
  };
}(ue || (ue = {}));

var ce;

!function(e) {
  e.create = function create(e, t, n, r) {
    return {
      red: e,
      green: t,
      blue: n,
      alpha: r
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && St.numberRange(t.red, 0, 1) && St.numberRange(t.green, 0, 1) && St.numberRange(t.blue, 0, 1) && St.numberRange(t.alpha, 0, 1);
  };
}(ce || (ce = {}));

var le;

!function(e) {
  e.create = function create(e, t) {
    return {
      range: e,
      color: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && oe.is(t.range) && ce.is(t.color);
  };
}(le || (le = {}));

var de;

!function(e) {
  e.create = function create(e, t, n) {
    return {
      label: e,
      textEdit: t,
      additionalTextEdits: n
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && St.string(t.label) && (St.undefined(t.textEdit) || ye.is(t)) && (St.undefined(t.additionalTextEdits) || St.typedArray(t.additionalTextEdits, ye.is));
  };
}(de || (de = {}));

var fe;

!function(e) {
  e.Comment = "comment";
  e.Imports = "imports";
  e.Region = "region";
}(fe || (fe = {}));

var ve;

!function(e) {
  e.create = function create(e, t, n, r, i, a) {
    var o = {
      startLine: e,
      endLine: t
    };
    if (St.defined(n)) {
      o.startCharacter = n;
    }
    if (St.defined(r)) {
      o.endCharacter = r;
    }
    if (St.defined(i)) {
      o.kind = i;
    }
    if (St.defined(a)) {
      o.collapsedText = a;
    }
    return o;
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && St.uinteger(t.startLine) && St.uinteger(t.startLine) && (St.undefined(t.startCharacter) || St.uinteger(t.startCharacter)) && (St.undefined(t.endCharacter) || St.uinteger(t.endCharacter)) && (St.undefined(t.kind) || St.string(t.kind));
  };
}(ve || (ve = {}));

var pe;

!function(e) {
  e.create = function create(e, t) {
    return {
      location: e,
      message: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && se.is(t.location) && St.string(t.message);
  };
}(pe || (pe = {}));

var ge;

!function(e) {
  e.Error = 1;
  e.Warning = 2;
  e.Information = 3;
  e.Hint = 4;
}(ge || (ge = {}));

var me;

!function(e) {
  e.Unnecessary = 1;
  e.Deprecated = 2;
}(me || (me = {}));

var Ee;

!function(e) {
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && St.string(t.href);
  };
}(Ee || (Ee = {}));

var he;

!function(e) {
  e.create = function create(e, t, n, r, i, a) {
    var o = {
      range: e,
      message: t
    };
    if (St.defined(n)) {
      o.severity = n;
    }
    if (St.defined(r)) {
      o.code = r;
    }
    if (St.defined(i)) {
      o.source = i;
    }
    if (St.defined(a)) {
      o.relatedInformation = a;
    }
    return o;
  };
  e.is = function is(e) {
    var t;
    var n = e;
    return St.defined(n) && oe.is(n.range) && St.string(n.message) && (St.number(n.severity) || St.undefined(n.severity)) && (St.integer(n.code) || St.string(n.code) || St.undefined(n.code)) && (St.undefined(n.codeDescription) || St.string(null === (t = n.codeDescription) || void 0 === t ? void 0 : t.href)) && (St.string(n.source) || St.undefined(n.source)) && (St.undefined(n.relatedInformation) || St.typedArray(n.relatedInformation, pe.is));
  };
}(he || (he = {}));

var Te;

!function(e) {
  e.create = function create(e, t) {
    var n = [];
    for (var r = 2; r < arguments.length; r++) {
      n[r - 2] = arguments[r];
    }
    var i = {
      title: e,
      command: t
    };
    if (St.defined(n) && n.length > 0) {
      i.arguments = n;
    }
    return i;
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.string(t.title) && St.string(t.command);
  };
}(Te || (Te = {}));

var ye;

!function(e) {
  e.replace = function replace(e, t) {
    return {
      range: e,
      newText: t
    };
  };
  e.insert = function insert(e, t) {
    return {
      range: {
        start: e,
        end: e
      },
      newText: t
    };
  };
  e.del = function del(e) {
    return {
      range: e,
      newText: ""
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && St.string(t.newText) && oe.is(t.range);
  };
}(ye || (ye = {}));

var Ie;

!function(e) {
  e.create = function create(e, t, n) {
    var r = {
      label: e
    };
    if (void 0 !== t) {
      r.needsConfirmation = t;
    }
    if (void 0 !== n) {
      r.description = n;
    }
    return r;
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && St.string(t.label) && (St.boolean(t.needsConfirmation) || void 0 === t.needsConfirmation) && (St.string(t.description) || void 0 === t.description);
  };
}(Ie || (Ie = {}));

var be;

!function(e) {
  e.is = function is(e) {
    return St.string(e);
  };
}(be || (be = {}));

var Se;

!function(e) {
  e.replace = function replace(e, t, n) {
    return {
      range: e,
      newText: t,
      annotationId: n
    };
  };
  e.insert = function insert(e, t, n) {
    return {
      range: {
        start: e,
        end: e
      },
      newText: t,
      annotationId: n
    };
  };
  e.del = function del(e, t) {
    return {
      range: e,
      newText: "",
      annotationId: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return ye.is(t) && (Ie.is(t.annotationId) || be.is(t.annotationId));
  };
}(Se || (Se = {}));

var _e;

!function(e) {
  e.create = function create(e, t) {
    return {
      textDocument: e,
      edits: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && xe.is(t.textDocument) && Array.isArray(t.edits);
  };
}(_e || (_e = {}));

var De;

!function(e) {
  e.create = function create(e, t, n) {
    var r = {
      kind: "create",
      uri: e
    };
    if (void 0 !== t && (void 0 !== t.overwrite || void 0 !== t.ignoreIfExists)) {
      r.options = t;
    }
    if (void 0 !== n) {
      r.annotationId = n;
    }
    return r;
  };
  e.is = function is(e) {
    var t = e;
    return t && "create" === t.kind && St.string(t.uri) && (void 0 === t.options || (void 0 === t.options.overwrite || St.boolean(t.options.overwrite)) && (void 0 === t.options.ignoreIfExists || St.boolean(t.options.ignoreIfExists))) && (void 0 === t.annotationId || be.is(t.annotationId));
  };
}(De || (De = {}));

var Ne;

!function(e) {
  e.create = function create(e, t, n, r) {
    var i = {
      kind: "rename",
      oldUri: e,
      newUri: t
    };
    if (void 0 !== n && (void 0 !== n.overwrite || void 0 !== n.ignoreIfExists)) {
      i.options = n;
    }
    if (void 0 !== r) {
      i.annotationId = r;
    }
    return i;
  };
  e.is = function is(e) {
    var t = e;
    return t && "rename" === t.kind && St.string(t.oldUri) && St.string(t.newUri) && (void 0 === t.options || (void 0 === t.options.overwrite || St.boolean(t.options.overwrite)) && (void 0 === t.options.ignoreIfExists || St.boolean(t.options.ignoreIfExists))) && (void 0 === t.annotationId || be.is(t.annotationId));
  };
}(Ne || (Ne = {}));

var Ae;

!function(e) {
  e.create = function create(e, t, n) {
    var r = {
      kind: "delete",
      uri: e
    };
    if (void 0 !== t && (void 0 !== t.recursive || void 0 !== t.ignoreIfNotExists)) {
      r.options = t;
    }
    if (void 0 !== n) {
      r.annotationId = n;
    }
    return r;
  };
  e.is = function is(e) {
    var t = e;
    return t && "delete" === t.kind && St.string(t.uri) && (void 0 === t.options || (void 0 === t.options.recursive || St.boolean(t.options.recursive)) && (void 0 === t.options.ignoreIfNotExists || St.boolean(t.options.ignoreIfNotExists))) && (void 0 === t.annotationId || be.is(t.annotationId));
  };
}(Ae || (Ae = {}));

var ke;

!function(e) {
  e.is = function is(e) {
    return e && (void 0 !== e.changes || void 0 !== e.documentChanges) && (void 0 === e.documentChanges || e.documentChanges.every((function(e) {
      if (St.string(e.kind)) {
        return De.is(e) || Ne.is(e) || Ae.is(e);
      } else {
        return _e.is(e);
      }
    })));
  };
}(ke || (ke = {}));

var Fe = function() {
  function TextEditChangeImpl(e, t) {
    this.edits = e;
    this.changeAnnotations = t;
  }
  TextEditChangeImpl.prototype.insert = function(e, t, n) {
    var r;
    var i;
    if (void 0 === n) {
      r = ye.insert(e, t);
    } else if (be.is(n)) {
      i = n;
      r = Se.insert(e, t, n);
    } else {
      this.assertChangeAnnotations(this.changeAnnotations);
      i = this.changeAnnotations.manage(n);
      r = Se.insert(e, t, i);
    }
    this.edits.push(r);
    if (void 0 !== i) {
      return i;
    }
  };
  TextEditChangeImpl.prototype.replace = function(e, t, n) {
    var r;
    var i;
    if (void 0 === n) {
      r = ye.replace(e, t);
    } else if (be.is(n)) {
      i = n;
      r = Se.replace(e, t, n);
    } else {
      this.assertChangeAnnotations(this.changeAnnotations);
      i = this.changeAnnotations.manage(n);
      r = Se.replace(e, t, i);
    }
    this.edits.push(r);
    if (void 0 !== i) {
      return i;
    }
  };
  TextEditChangeImpl.prototype.delete = function(e, t) {
    var n;
    var r;
    if (void 0 === t) {
      n = ye.del(e);
    } else if (be.is(t)) {
      r = t;
      n = Se.del(e, t);
    } else {
      this.assertChangeAnnotations(this.changeAnnotations);
      r = this.changeAnnotations.manage(t);
      n = Se.del(e, r);
    }
    this.edits.push(n);
    if (void 0 !== r) {
      return r;
    }
  };
  TextEditChangeImpl.prototype.add = function(e) {
    this.edits.push(e);
  };
  TextEditChangeImpl.prototype.all = function() {
    return this.edits;
  };
  TextEditChangeImpl.prototype.clear = function() {
    this.edits.splice(0, this.edits.length);
  };
  TextEditChangeImpl.prototype.assertChangeAnnotations = function(e) {
    if (void 0 === e) {
      throw new Error("Text edit change is not configured to manage change annotations.");
    }
  };
  return TextEditChangeImpl;
}();

var Ce = function() {
  function ChangeAnnotations(e) {
    this._annotations = void 0 === e ? Object.create(null) : e;
    this._counter = 0;
    this._size = 0;
  }
  ChangeAnnotations.prototype.all = function() {
    return this._annotations;
  };
  Object.defineProperty(ChangeAnnotations.prototype, "size", {
    get: function() {
      return this._size;
    },
    enumerable: !1,
    configurable: !0
  });
  ChangeAnnotations.prototype.manage = function(e, t) {
    var n;
    if (be.is(e)) {
      n = e;
    } else {
      n = this.nextId();
      t = e;
    }
    if (void 0 !== this._annotations[n]) {
      throw new Error("Id ".concat(n, " is already in use."));
    }
    if (void 0 === t) {
      throw new Error("No annotation provided for id ".concat(n));
    }
    this._annotations[n] = t;
    this._size++;
    return n;
  };
  ChangeAnnotations.prototype.nextId = function() {
    this._counter++;
    return this._counter.toString();
  };
  return ChangeAnnotations;
}();

!function() {
  function WorkspaceChange(e) {
    var t = this;
    this._textEditChanges = Object.create(null);
    if (void 0 !== e) {
      this._workspaceEdit = e;
      if (e.documentChanges) {
        this._changeAnnotations = new Ce(e.changeAnnotations);
        e.changeAnnotations = this._changeAnnotations.all();
        e.documentChanges.forEach((function(e) {
          if (_e.is(e)) {
            var n = new Fe(e.edits, t._changeAnnotations);
            t._textEditChanges[e.textDocument.uri] = n;
          }
        }));
      } else if (e.changes) {
        Object.keys(e.changes).forEach((function(n) {
          var r = new Fe(e.changes[n]);
          t._textEditChanges[n] = r;
        }));
      }
    } else {
      this._workspaceEdit = {};
    }
  }
  Object.defineProperty(WorkspaceChange.prototype, "edit", {
    get: function() {
      this.initDocumentChanges();
      if (void 0 !== this._changeAnnotations) {
        if (0 === this._changeAnnotations.size) {
          this._workspaceEdit.changeAnnotations = void 0;
        } else {
          this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();
        }
      }
      return this._workspaceEdit;
    },
    enumerable: !1,
    configurable: !0
  });
  WorkspaceChange.prototype.getTextEditChange = function(e) {
    if (xe.is(e)) {
      this.initDocumentChanges();
      if (void 0 === this._workspaceEdit.documentChanges) {
        throw new Error("Workspace edit is not configured for document changes.");
      }
      var t = {
        uri: e.uri,
        version: e.version
      };
      if (!(n = this._textEditChanges[t.uri])) {
        this._workspaceEdit.documentChanges.push({
          textDocument: t,
          edits: r = []
        });
        n = new Fe(r, this._changeAnnotations);
        this._textEditChanges[t.uri] = n;
      }
      return n;
    } else {
      this.initChanges();
      if (void 0 === this._workspaceEdit.changes) {
        throw new Error("Workspace edit is not configured for normal text edit changes.");
      }
      var n;
      if (!(n = this._textEditChanges[e])) {
        var r;
        this._workspaceEdit.changes[e] = r = [];
        n = new Fe(r);
        this._textEditChanges[e] = n;
      }
      return n;
    }
  };
  WorkspaceChange.prototype.initDocumentChanges = function() {
    if (void 0 === this._workspaceEdit.documentChanges && void 0 === this._workspaceEdit.changes) {
      this._changeAnnotations = new Ce;
      this._workspaceEdit.documentChanges = [];
      this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();
    }
  };
  WorkspaceChange.prototype.initChanges = function() {
    if (void 0 === this._workspaceEdit.documentChanges && void 0 === this._workspaceEdit.changes) {
      this._workspaceEdit.changes = Object.create(null);
    }
  };
  WorkspaceChange.prototype.createFile = function(e, t, n) {
    this.initDocumentChanges();
    if (void 0 === this._workspaceEdit.documentChanges) {
      throw new Error("Workspace edit is not configured for document changes.");
    }
    var r;
    if (Ie.is(t) || be.is(t)) {
      r = t;
    } else {
      n = t;
    }
    var i;
    var a;
    if (void 0 === r) {
      i = De.create(e, n);
    } else {
      a = be.is(r) ? r : this._changeAnnotations.manage(r);
      i = De.create(e, n, a);
    }
    this._workspaceEdit.documentChanges.push(i);
    if (void 0 !== a) {
      return a;
    }
  };
  WorkspaceChange.prototype.renameFile = function(e, t, n, r) {
    this.initDocumentChanges();
    if (void 0 === this._workspaceEdit.documentChanges) {
      throw new Error("Workspace edit is not configured for document changes.");
    }
    var i;
    if (Ie.is(n) || be.is(n)) {
      i = n;
    } else {
      r = n;
    }
    var a;
    var o;
    if (void 0 === i) {
      a = Ne.create(e, t, r);
    } else {
      o = be.is(i) ? i : this._changeAnnotations.manage(i);
      a = Ne.create(e, t, r, o);
    }
    this._workspaceEdit.documentChanges.push(a);
    if (void 0 !== o) {
      return o;
    }
  };
  WorkspaceChange.prototype.deleteFile = function(e, t, n) {
    this.initDocumentChanges();
    if (void 0 === this._workspaceEdit.documentChanges) {
      throw new Error("Workspace edit is not configured for document changes.");
    }
    var r;
    if (Ie.is(t) || be.is(t)) {
      r = t;
    } else {
      n = t;
    }
    var i;
    var a;
    if (void 0 === r) {
      i = Ae.create(e, n);
    } else {
      a = be.is(r) ? r : this._changeAnnotations.manage(r);
      i = Ae.create(e, n, a);
    }
    this._workspaceEdit.documentChanges.push(i);
    if (void 0 !== a) {
      return a;
    }
  };
}();

var Le;

!function(e) {
  e.create = function create(e) {
    return {
      uri: e
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.string(t.uri);
  };
}(Le || (Le = {}));

var Oe;

!function(e) {
  e.create = function create(e, t) {
    return {
      uri: e,
      version: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.string(t.uri) && St.integer(t.version);
  };
}(Oe || (Oe = {}));

var xe;

!function(e) {
  e.create = function create(e, t) {
    return {
      uri: e,
      version: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.string(t.uri) && (null === t.version || St.integer(t.version));
  };
}(xe || (xe = {}));

var Me;

!function(e) {
  e.create = function create(e, t, n, r) {
    return {
      uri: e,
      languageId: t,
      version: n,
      text: r
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.string(t.uri) && St.string(t.languageId) && St.integer(t.version) && St.string(t.text);
  };
}(Me || (Me = {}));

var Pe;

!function(e) {
  e.PlainText = "plaintext";
  e.Markdown = "markdown";
  e.is = function is(t) {
    return t === e.PlainText || t === e.Markdown;
  };
}(Pe || (Pe = {}));

var we;

!function(e) {
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(e) && Pe.is(t.kind) && St.string(t.value);
  };
}(we || (we = {}));

var Re;

!function(e) {
  e.Text = 1;
  e.Method = 2;
  e.Function = 3;
  e.Constructor = 4;
  e.Field = 5;
  e.Variable = 6;
  e.Class = 7;
  e.Interface = 8;
  e.Module = 9;
  e.Property = 10;
  e.Unit = 11;
  e.Value = 12;
  e.Enum = 13;
  e.Keyword = 14;
  e.Snippet = 15;
  e.Color = 16;
  e.File = 17;
  e.Reference = 18;
  e.Folder = 19;
  e.EnumMember = 20;
  e.Constant = 21;
  e.Struct = 22;
  e.Event = 23;
  e.Operator = 24;
  e.TypeParameter = 25;
}(Re || (Re = {}));

var je;

!function(e) {
  e.PlainText = 1;
  e.Snippet = 2;
}(je || (je = {}));

var Ue;

!function(e) {
  e.Deprecated = 1;
}(Ue || (Ue = {}));

var Ve;

!function(e) {
  e.create = function create(e, t, n) {
    return {
      newText: e,
      insert: t,
      replace: n
    };
  };
  e.is = function is(e) {
    var t = e;
    return t && St.string(t.newText) && oe.is(t.insert) && oe.is(t.replace);
  };
}(Ve || (Ve = {}));

var Ye;

!function(e) {
  e.asIs = 1;
  e.adjustIndentation = 2;
}(Ye || (Ye = {}));

var $e;

!function(e) {
  e.is = function is(e) {
    var t = e;
    return t && (St.string(t.detail) || void 0 === t.detail) && (St.string(t.description) || void 0 === t.description);
  };
}($e || ($e = {}));

var Be;

!function(e) {
  e.create = function create(e) {
    return {
      label: e
    };
  };
}(Be || (Be = {}));

var Ge;

!function(e) {
  e.create = function create(e, t) {
    return {
      items: e ? e : [],
      isIncomplete: !!t
    };
  };
}(Ge || (Ge = {}));

var Qe;

!function(e) {
  e.fromPlainText = function fromPlainText(e) {
    return e.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&");
  };
  e.is = function is(e) {
    var t = e;
    return St.string(t) || St.objectLiteral(t) && St.string(t.language) && St.string(t.value);
  };
}(Qe || (Qe = {}));

var Xe;

!function(e) {
  e.is = function is(e) {
    var t = e;
    return !!t && St.objectLiteral(t) && (we.is(t.contents) || Qe.is(t.contents) || St.typedArray(t.contents, Qe.is)) && (void 0 === e.range || oe.is(e.range));
  };
}(Xe || (Xe = {}));

var We;

!function(e) {
  e.create = function create(e, t) {
    return t ? {
      label: e,
      documentation: t
    } : {
      label: e
    };
  };
}(We || (We = {}));

var Je;

!function(e) {
  e.create = function create(e, t) {
    var n = [];
    for (var r = 2; r < arguments.length; r++) {
      n[r - 2] = arguments[r];
    }
    var i = {
      label: e
    };
    if (St.defined(t)) {
      i.documentation = t;
    }
    if (St.defined(n)) {
      i.parameters = n;
    } else {
      i.parameters = [];
    }
    return i;
  };
}(Je || (Je = {}));

var Ke;

!function(e) {
  e.Text = 1;
  e.Read = 2;
  e.Write = 3;
}(Ke || (Ke = {}));

var ze;

!function(e) {
  e.create = function create(e, t) {
    var n = {
      range: e
    };
    if (St.number(t)) {
      n.kind = t;
    }
    return n;
  };
}(ze || (ze = {}));

var He;

!function(e) {
  e.File = 1;
  e.Module = 2;
  e.Namespace = 3;
  e.Package = 4;
  e.Class = 5;
  e.Method = 6;
  e.Property = 7;
  e.Field = 8;
  e.Constructor = 9;
  e.Enum = 10;
  e.Interface = 11;
  e.Function = 12;
  e.Variable = 13;
  e.Constant = 14;
  e.String = 15;
  e.Number = 16;
  e.Boolean = 17;
  e.Array = 18;
  e.Object = 19;
  e.Key = 20;
  e.Null = 21;
  e.EnumMember = 22;
  e.Struct = 23;
  e.Event = 24;
  e.Operator = 25;
  e.TypeParameter = 26;
}(He || (He = {}));

var qe;

!function(e) {
  e.Deprecated = 1;
}(qe || (qe = {}));

var Ze;

!function(e) {
  e.create = function create(e, t, n, r, i) {
    var a = {
      name: e,
      kind: t,
      location: {
        uri: r,
        range: n
      }
    };
    if (i) {
      a.containerName = i;
    }
    return a;
  };
}(Ze || (Ze = {}));

var et;

!function(e) {
  e.create = function create(e, t, n, r) {
    return void 0 !== r ? {
      name: e,
      kind: t,
      location: {
        uri: n,
        range: r
      }
    } : {
      name: e,
      kind: t,
      location: {
        uri: n
      }
    };
  };
}(et || (et = {}));

var tt;

!function(e) {
  e.create = function create(e, t, n, r, i, a) {
    var o = {
      name: e,
      detail: t,
      kind: n,
      range: r,
      selectionRange: i
    };
    if (void 0 !== a) {
      o.children = a;
    }
    return o;
  };
  e.is = function is(e) {
    var t = e;
    return t && St.string(t.name) && St.number(t.kind) && oe.is(t.range) && oe.is(t.selectionRange) && (void 0 === t.detail || St.string(t.detail)) && (void 0 === t.deprecated || St.boolean(t.deprecated)) && (void 0 === t.children || Array.isArray(t.children)) && (void 0 === t.tags || Array.isArray(t.tags));
  };
}(tt || (tt = {}));

var nt;

!function(e) {
  e.Empty = "";
  e.QuickFix = "quickfix";
  e.Refactor = "refactor";
  e.RefactorExtract = "refactor.extract";
  e.RefactorInline = "refactor.inline";
  e.RefactorRewrite = "refactor.rewrite";
  e.Source = "source";
  e.SourceOrganizeImports = "source.organizeImports";
  e.SourceFixAll = "source.fixAll";
}(nt || (nt = {}));

var rt;

!function(e) {
  e.Invoked = 1;
  e.Automatic = 2;
}(rt || (rt = {}));

var it;

!function(e) {
  e.create = function create(e, t, n) {
    var r = {
      diagnostics: e
    };
    if (null != t) {
      r.only = t;
    }
    if (null != n) {
      r.triggerKind = n;
    }
    return r;
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.typedArray(t.diagnostics, he.is) && (void 0 === t.only || St.typedArray(t.only, St.string)) && (void 0 === t.triggerKind || t.triggerKind === rt.Invoked || t.triggerKind === rt.Automatic);
  };
}(it || (it = {}));

var at;

!function(e) {
  e.create = function create(e, t, n) {
    var r = {
      title: e
    };
    var i = !0;
    if ("string" == typeof t) {
      i = !1;
      r.kind = t;
    } else if (Te.is(t)) {
      r.command = t;
    } else {
      r.edit = t;
    }
    if (i && void 0 !== n) {
      r.kind = n;
    }
    return r;
  };
  e.is = function is(e) {
    var t = e;
    return t && St.string(t.title) && (void 0 === t.diagnostics || St.typedArray(t.diagnostics, he.is)) && (void 0 === t.kind || St.string(t.kind)) && (void 0 !== t.edit || void 0 !== t.command) && (void 0 === t.command || Te.is(t.command)) && (void 0 === t.isPreferred || St.boolean(t.isPreferred)) && (void 0 === t.edit || ke.is(t.edit));
  };
}(at || (at = {}));

var ot;

!function(e) {
  e.create = function create(e, t) {
    var n = {
      range: e
    };
    if (St.defined(t)) {
      n.data = t;
    }
    return n;
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && oe.is(t.range) && (St.undefined(t.command) || Te.is(t.command));
  };
}(ot || (ot = {}));

var st;

!function(e) {
  e.create = function create(e, t) {
    return {
      tabSize: e,
      insertSpaces: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.uinteger(t.tabSize) && St.boolean(t.insertSpaces);
  };
}(st || (st = {}));

var ut;

!function(e) {
  e.create = function create(e, t, n) {
    return {
      range: e,
      target: t,
      data: n
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && oe.is(t.range) && (St.undefined(t.target) || St.string(t.target));
  };
}(ut || (ut = {}));

var ct;

!function(e) {
  e.create = function create(e, t) {
    return {
      range: e,
      parent: t
    };
  };
  e.is = function is(t) {
    var n = t;
    return St.objectLiteral(n) && oe.is(n.range) && (void 0 === n.parent || e.is(n.parent));
  };
}(ct || (ct = {}));

var lt;

!function(e) {
  e.namespace = "namespace";
  e.type = "type";
  e.class = "class";
  e.enum = "enum";
  e.interface = "interface";
  e.struct = "struct";
  e.typeParameter = "typeParameter";
  e.parameter = "parameter";
  e.variable = "variable";
  e.property = "property";
  e.enumMember = "enumMember";
  e.event = "event";
  e.function = "function";
  e.method = "method";
  e.macro = "macro";
  e.keyword = "keyword";
  e.modifier = "modifier";
  e.comment = "comment";
  e.string = "string";
  e.number = "number";
  e.regexp = "regexp";
  e.operator = "operator";
  e.decorator = "decorator";
}(lt || (lt = {}));

var dt;

!function(e) {
  e.declaration = "declaration";
  e.definition = "definition";
  e.readonly = "readonly";
  e.static = "static";
  e.deprecated = "deprecated";
  e.abstract = "abstract";
  e.async = "async";
  e.modification = "modification";
  e.documentation = "documentation";
  e.defaultLibrary = "defaultLibrary";
}(dt || (dt = {}));

var ft;

!function(e) {
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && (void 0 === t.resultId || "string" == typeof t.resultId) && Array.isArray(t.data) && (0 === t.data.length || "number" == typeof t.data[0]);
  };
}(ft || (ft = {}));

var vt;

!function(e) {
  e.create = function create(e, t) {
    return {
      range: e,
      text: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return null != t && oe.is(t.range) && St.string(t.text);
  };
}(vt || (vt = {}));

var pt;

!function(e) {
  e.create = function create(e, t, n) {
    return {
      range: e,
      variableName: t,
      caseSensitiveLookup: n
    };
  };
  e.is = function is(e) {
    var t = e;
    return null != t && oe.is(t.range) && St.boolean(t.caseSensitiveLookup) && (St.string(t.variableName) || void 0 === t.variableName);
  };
}(pt || (pt = {}));

var gt;

!function(e) {
  e.create = function create(e, t) {
    return {
      range: e,
      expression: t
    };
  };
  e.is = function is(e) {
    var t = e;
    return null != t && oe.is(t.range) && (St.string(t.expression) || void 0 === t.expression);
  };
}(gt || (gt = {}));

var mt;

!function(e) {
  e.create = function create(e, t) {
    return {
      frameId: e,
      stoppedLocation: t
    };
  };
  e.is = function is(e) {
    return St.defined(e) && oe.is(e.stoppedLocation);
  };
}(mt || (mt = {}));

var Et;

!function(e) {
  e.Type = 1;
  e.Parameter = 2;
  e.is = function is(e) {
    return 1 === e || 2 === e;
  };
}(Et || (Et = {}));

var ht;

!function(e) {
  e.create = function create(e) {
    return {
      value: e
    };
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && (void 0 === t.tooltip || St.string(t.tooltip) || we.is(t.tooltip)) && (void 0 === t.location || se.is(t.location)) && (void 0 === t.command || Te.is(t.command));
  };
}(ht || (ht = {}));

var Tt;

!function(e) {
  e.create = function create(e, t, n) {
    var r = {
      position: e,
      label: t
    };
    if (void 0 !== n) {
      r.kind = n;
    }
    return r;
  };
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && ae.is(t.position) && (St.string(t.label) || St.typedArray(t.label, ht.is)) && (void 0 === t.kind || Et.is(t.kind)) && void 0 === t.textEdits || St.typedArray(t.textEdits, ye.is) && (void 0 === t.tooltip || St.string(t.tooltip) || we.is(t.tooltip)) && (void 0 === t.paddingLeft || St.boolean(t.paddingLeft)) && (void 0 === t.paddingRight || St.boolean(t.paddingRight));
  };
}(Tt || (Tt = {}));

var yt;

!function(e) {
  e.is = function is(e) {
    var t = e;
    return St.objectLiteral(t) && ne.is(t.uri) && St.string(t.name);
  };
}(yt || (yt = {}));

var It;

!function(e) {
  e.create = function create(e, t, n, r) {
    return new bt(e, t, n, r);
  };
  e.is = function is(e) {
    var t = e;
    return St.defined(t) && St.string(t.uri) && (St.undefined(t.languageId) || St.string(t.languageId)) && St.uinteger(t.lineCount) && St.func(t.getText) && St.func(t.positionAt) && St.func(t.offsetAt) ? !0 : !1;
  };
  e.applyEdits = function applyEdits(e, t) {
    var n = e.getText();
    var r = mergeSort(t, (function(e, t) {
      var n = e.range.start.line - t.range.start.line;
      if (0 === n) {
        return e.range.start.character - t.range.start.character;
      }
      return n;
    }));
    var i = n.length;
    for (var a = r.length - 1; a >= 0; a--) {
      var o = r[a];
      var s = e.offsetAt(o.range.start);
      var u = e.offsetAt(o.range.end);
      if (u <= i) {
        n = n.substring(0, s) + o.newText + n.substring(u, n.length);
      } else {
        throw new Error("Overlapping edit");
      }
      i = s;
    }
    return n;
  };
  function mergeSort(e, t) {
    if (e.length <= 1) {
      return e;
    }
    var n = e.length / 2 | 0;
    var r = e.slice(0, n);
    var i = e.slice(n);
    mergeSort(r, t);
    mergeSort(i, t);
    var a = 0;
    var o = 0;
    var s = 0;
    while (a < r.length && o < i.length) {
      if (t(r[a], i[o]) <= 0) {
        e[s++] = r[a++];
      } else {
        e[s++] = i[o++];
      }
    }
    while (a < r.length) {
      e[s++] = r[a++];
    }
    while (o < i.length) {
      e[s++] = i[o++];
    }
    return e;
  }
}(It || (It = {}));

var bt = function() {
  function FullTextDocument(e, t, n, r) {
    this._uri = e;
    this._languageId = t;
    this._version = n;
    this._content = r;
    this._lineOffsets = void 0;
  }
  Object.defineProperty(FullTextDocument.prototype, "uri", {
    get: function() {
      return this._uri;
    },
    enumerable: !1,
    configurable: !0
  });
  Object.defineProperty(FullTextDocument.prototype, "languageId", {
    get: function() {
      return this._languageId;
    },
    enumerable: !1,
    configurable: !0
  });
  Object.defineProperty(FullTextDocument.prototype, "version", {
    get: function() {
      return this._version;
    },
    enumerable: !1,
    configurable: !0
  });
  FullTextDocument.prototype.getText = function(e) {
    if (e) {
      var t = this.offsetAt(e.start);
      var n = this.offsetAt(e.end);
      return this._content.substring(t, n);
    }
    return this._content;
  };
  FullTextDocument.prototype.update = function(e, t) {
    this._content = e.text;
    this._version = t;
    this._lineOffsets = void 0;
  };
  FullTextDocument.prototype.getLineOffsets = function() {
    if (void 0 === this._lineOffsets) {
      var e = [];
      var t = this._content;
      var n = !0;
      for (var r = 0; r < t.length; r++) {
        if (n) {
          e.push(r);
          n = !1;
        }
        var i = t.charAt(r);
        n = "\r" === i || "\n" === i;
        if ("\r" === i && r + 1 < t.length && "\n" === t.charAt(r + 1)) {
          r++;
        }
      }
      if (n && t.length > 0) {
        e.push(t.length);
      }
      this._lineOffsets = e;
    }
    return this._lineOffsets;
  };
  FullTextDocument.prototype.positionAt = function(e) {
    e = Math.max(Math.min(e, this._content.length), 0);
    var t = this.getLineOffsets();
    var n = 0, r = t.length;
    if (0 === r) {
      return ae.create(0, e);
    }
    while (n < r) {
      var i = Math.floor((n + r) / 2);
      if (t[i] > e) {
        r = i;
      } else {
        n = i + 1;
      }
    }
    var a = n - 1;
    return ae.create(a, e - t[a]);
  };
  FullTextDocument.prototype.offsetAt = function(e) {
    var t = this.getLineOffsets();
    if (e.line >= t.length) {
      return this._content.length;
    } else if (e.line < 0) {
      return 0;
    }
    var n = t[e.line];
    return Math.max(Math.min(n + e.character, e.line + 1 < t.length ? t[e.line + 1] : this._content.length), n);
  };
  Object.defineProperty(FullTextDocument.prototype, "lineCount", {
    get: function() {
      return this.getLineOffsets().length;
    },
    enumerable: !1,
    configurable: !0
  });
  return FullTextDocument;
}();

var St;

!function(e) {
  var t = Object.prototype.toString;
  e.defined = function defined(e) {
    return void 0 !== e;
  };
  e.undefined = function undefined$1(e) {
    return void 0 === e;
  };
  e.boolean = function boolean(e) {
    return !0 === e || !1 === e;
  };
  e.string = function string(e) {
    return "[object String]" === t.call(e);
  };
  e.number = function number(e) {
    return "[object Number]" === t.call(e);
  };
  e.numberRange = function numberRange(e, n, r) {
    return "[object Number]" === t.call(e) && n <= e && e <= r;
  };
  e.integer = function integer(e) {
    return "[object Number]" === t.call(e) && -2147483648 <= e && e <= 2147483647;
  };
  e.uinteger = function uinteger(e) {
    return "[object Number]" === t.call(e) && 0 <= e && e <= 2147483647;
  };
  e.func = function func(e) {
    return "[object Function]" === t.call(e);
  };
  e.objectLiteral = function objectLiteral(e) {
    return null !== e && "object" == typeof e;
  };
  e.typedArray = function typedArray(e, t) {
    return Array.isArray(e) && e.every(t);
  };
}(St || (St = {}));

var _t;

!function(e) {
  e.Text = 1;
  e.Method = 2;
  e.Function = 3;
  e.Constructor = 4;
  e.Field = 5;
  e.Variable = 6;
  e.Class = 7;
  e.Interface = 8;
  e.Module = 9;
  e.Property = 10;
  e.Unit = 11;
  e.Value = 12;
  e.Enum = 13;
  e.Keyword = 14;
  e.Snippet = 15;
  e.Color = 16;
  e.File = 17;
  e.Reference = 18;
  e.Folder = 19;
  e.EnumMember = 20;
  e.Constant = 21;
  e.Struct = 22;
  e.Event = 23;
  e.Operator = 24;
  e.TypeParameter = 25;
}(_t || (_t = {}));

var Dt = Object.assign(Object.assign({}, k), {
  ALIASED_FIELD: "AliasedField",
  ARGUMENTS: "Arguments",
  SHORT_QUERY: "ShortQuery",
  QUERY: "Query",
  MUTATION: "Mutation",
  SUBSCRIPTION: "Subscription",
  TYPE_CONDITION: "TypeCondition",
  INVALID: "Invalid",
  COMMENT: "Comment",
  SCHEMA_DEF: "SchemaDef",
  SCALAR_DEF: "ScalarDef",
  OBJECT_TYPE_DEF: "ObjectTypeDef",
  OBJECT_VALUE: "ObjectValue",
  LIST_VALUE: "ListValue",
  INTERFACE_DEF: "InterfaceDef",
  UNION_DEF: "UnionDef",
  ENUM_DEF: "EnumDef",
  ENUM_VALUE: "EnumValue",
  FIELD_DEF: "FieldDef",
  INPUT_DEF: "InputDef",
  INPUT_VALUE_DEF: "InputValueDef",
  ARGUMENTS_DEF: "ArgumentsDef",
  EXTEND_DEF: "ExtendDef",
  EXTENSION_DEFINITION: "ExtensionDefinition",
  DIRECTIVE_DEF: "DirectiveDef",
  IMPLEMENTS: "Implements",
  VARIABLE_DEFINITIONS: "VariableDefinitions",
  TYPE: "Type"
});

var Nt = {
  command: "editor.action.triggerSuggest",
  title: "Suggestions"
};

var collectFragmentDefs = e => {
  var t = [];
  if (e) {
    try {
      G(Q(e), {
        FragmentDefinition(e) {
          t.push(e);
        }
      });
    } catch (e) {
      return [];
    }
  }
  return t;
};

var At = [ k.SCHEMA_DEFINITION, k.OPERATION_TYPE_DEFINITION, k.SCALAR_TYPE_DEFINITION, k.OBJECT_TYPE_DEFINITION, k.INTERFACE_TYPE_DEFINITION, k.UNION_TYPE_DEFINITION, k.ENUM_TYPE_DEFINITION, k.INPUT_OBJECT_TYPE_DEFINITION, k.DIRECTIVE_DEFINITION, k.SCHEMA_EXTENSION, k.SCALAR_TYPE_EXTENSION, k.OBJECT_TYPE_EXTENSION, k.INTERFACE_TYPE_EXTENSION, k.UNION_TYPE_EXTENSION, k.ENUM_TYPE_EXTENSION, k.INPUT_OBJECT_TYPE_EXTENSION ];

var hasTypeSystemDefinitions = e => {
  var t = !1;
  if (e) {
    try {
      G(Q(e), {
        enter(e) {
          if ("Document" === e.kind) {
            return;
          }
          if (At.includes(e.kind)) {
            t = !0;
            return X;
          }
          return !1;
        }
      });
    } catch (e) {
      return t;
    }
  }
  return t;
};

function getAutocompleteSuggestions(e, t, n, r, i, a) {
  var o;
  var s = Object.assign(Object.assign({}, a), {
    schema: e
  });
  var u = r || getTokenAtPosition(t, n, 1);
  var c = "Invalid" === u.state.kind ? u.state.prevState : u.state;
  var l = (null == a ? void 0 : a.mode) || function getDocumentMode(e, t) {
    if (null == t ? void 0 : t.endsWith(".graphqls")) {
      return Ft.TYPE_SYSTEM;
    }
    return hasTypeSystemDefinitions(e) ? Ft.TYPE_SYSTEM : Ft.EXECUTABLE;
  }(t, null == a ? void 0 : a.uri);
  if (!c) {
    return [];
  }
  var {kind: d, step: f, prevState: v} = c;
  var p = getTypeInfo(e, u.state);
  if (d === Dt.DOCUMENT) {
    if (l === Ft.TYPE_SYSTEM) {
      return function getSuggestionsForTypeSystemDefinitions(e) {
        return hintList$1(e, [ {
          label: "extend",
          kind: _t.Function
        }, {
          label: "type",
          kind: _t.Function
        }, {
          label: "interface",
          kind: _t.Function
        }, {
          label: "union",
          kind: _t.Function
        }, {
          label: "input",
          kind: _t.Function
        }, {
          label: "scalar",
          kind: _t.Function
        }, {
          label: "schema",
          kind: _t.Function
        } ]);
      }(u);
    }
    return function getSuggestionsForExecutableDefinitions(e) {
      return hintList$1(e, [ {
        label: "query",
        kind: _t.Function
      }, {
        label: "mutation",
        kind: _t.Function
      }, {
        label: "subscription",
        kind: _t.Function
      }, {
        label: "fragment",
        kind: _t.Function
      }, {
        label: "{",
        kind: _t.Constructor
      } ]);
    }(u);
  }
  if (d === Dt.EXTEND_DEF) {
    return function getSuggestionsForExtensionDefinitions(e) {
      return hintList$1(e, [ {
        label: "type",
        kind: _t.Function
      }, {
        label: "interface",
        kind: _t.Function
      }, {
        label: "union",
        kind: _t.Function
      }, {
        label: "input",
        kind: _t.Function
      }, {
        label: "scalar",
        kind: _t.Function
      }, {
        label: "schema",
        kind: _t.Function
      } ]);
    }(u);
  }
  if ((null === (o = null == v ? void 0 : v.prevState) || void 0 === o ? void 0 : o.kind) === Dt.EXTENSION_DEFINITION && c.name) {
    return hintList$1(u, []);
  }
  if ((null == v ? void 0 : v.kind) === k.SCALAR_TYPE_EXTENSION) {
    return hintList$1(u, Object.values(e.getTypeMap()).filter(F).map((e => ({
      label: e.name,
      kind: _t.Function
    }))));
  }
  if ((null == v ? void 0 : v.kind) === k.OBJECT_TYPE_EXTENSION) {
    return hintList$1(u, Object.values(e.getTypeMap()).filter((e => C(e) && !e.name.startsWith("__"))).map((e => ({
      label: e.name,
      kind: _t.Function
    }))));
  }
  if ((null == v ? void 0 : v.kind) === k.INTERFACE_TYPE_EXTENSION) {
    return hintList$1(u, Object.values(e.getTypeMap()).filter(L).map((e => ({
      label: e.name,
      kind: _t.Function
    }))));
  }
  if ((null == v ? void 0 : v.kind) === k.UNION_TYPE_EXTENSION) {
    return hintList$1(u, Object.values(e.getTypeMap()).filter(O).map((e => ({
      label: e.name,
      kind: _t.Function
    }))));
  }
  if ((null == v ? void 0 : v.kind) === k.ENUM_TYPE_EXTENSION) {
    return hintList$1(u, Object.values(e.getTypeMap()).filter((e => x(e) && !e.name.startsWith("__"))).map((e => ({
      label: e.name,
      kind: _t.Function
    }))));
  }
  if ((null == v ? void 0 : v.kind) === k.INPUT_OBJECT_TYPE_EXTENSION) {
    return hintList$1(u, Object.values(e.getTypeMap()).filter(M).map((e => ({
      label: e.name,
      kind: _t.Function
    }))));
  }
  if (d === Dt.IMPLEMENTS || d === Dt.NAMED_TYPE && (null == v ? void 0 : v.kind) === Dt.IMPLEMENTS) {
    return function getSuggestionsForImplements(e, t, n, r, i) {
      if (t.needsSeparator) {
        return [];
      }
      var a = n.getTypeMap();
      var o = objectValues(a).filter(L);
      var s = o.map((({name: e}) => e));
      var u = new Set;
      runOnlineParser$1(r, ((e, t) => {
        var r, a, o, c, l;
        if (t.name) {
          if (t.kind === Dt.INTERFACE_DEF && !s.includes(t.name)) {
            u.add(t.name);
          }
          if (t.kind === Dt.NAMED_TYPE && (null === (r = t.prevState) || void 0 === r ? void 0 : r.kind) === Dt.IMPLEMENTS) {
            if (i.interfaceDef) {
              if (null === (a = i.interfaceDef) || void 0 === a ? void 0 : a.getInterfaces().find((({name: e}) => e === t.name))) {
                return;
              }
              var d = n.getType(t.name);
              var f = null === (o = i.interfaceDef) || void 0 === o ? void 0 : o.toConfig();
              i.interfaceDef = new K(Object.assign(Object.assign({}, f), {
                interfaces: [ ...f.interfaces, d || new K({
                  name: t.name,
                  fields: {}
                }) ]
              }));
            } else if (i.objectTypeDef) {
              if (null === (c = i.objectTypeDef) || void 0 === c ? void 0 : c.getInterfaces().find((({name: e}) => e === t.name))) {
                return;
              }
              var v = n.getType(t.name);
              var p = null === (l = i.objectTypeDef) || void 0 === l ? void 0 : l.toConfig();
              i.objectTypeDef = new z(Object.assign(Object.assign({}, p), {
                interfaces: [ ...p.interfaces, v || new K({
                  name: t.name,
                  fields: {}
                }) ]
              }));
            }
          }
        }
      }));
      var c = i.interfaceDef || i.objectTypeDef;
      var l = ((null == c ? void 0 : c.getInterfaces()) || []).map((({name: e}) => e));
      var d = o.concat([ ...u ].map((e => ({
        name: e
      })))).filter((({name: e}) => e !== (null == c ? void 0 : c.name) && !l.includes(e)));
      return hintList$1(e, d.map((e => {
        var t = {
          label: e.name,
          kind: _t.Interface,
          type: e
        };
        if (null == e ? void 0 : e.description) {
          t.documentation = e.description;
        }
        return t;
      })));
    }(u, c, e, t, p);
  }
  if (d === Dt.SELECTION_SET || d === Dt.FIELD || d === Dt.ALIASED_FIELD) {
    return function getSuggestionsForFieldNames(e, t, n) {
      var r;
      if (t.parentType) {
        var {parentType: i} = t;
        var a = [];
        if ("getFields" in i) {
          a = objectValues(i.getFields());
        }
        if (A(i)) {
          a.push(N);
        }
        if (i === (null === (r = null == n ? void 0 : n.schema) || void 0 === r ? void 0 : r.getQueryType())) {
          a.push(_, D);
        }
        return hintList$1(e, a.map(((e, t) => {
          var r;
          var i = {
            sortText: String(t) + e.name,
            label: e.name,
            detail: String(e.type),
            documentation: null !== (r = e.description) && void 0 !== r ? r : void 0,
            deprecated: Boolean(e.deprecationReason),
            isDeprecated: Boolean(e.deprecationReason),
            deprecationReason: e.deprecationReason,
            kind: _t.Field,
            type: e.type
          };
          if (null == n ? void 0 : n.fillLeafsOnComplete) {
            var a = getInsertText(e);
            if (a) {
              i.insertText = e.name + a;
              i.insertTextFormat = je.Snippet;
              i.command = Nt;
            }
          }
          return i;
        })));
      }
      return [];
    }(u, p, s);
  }
  if (d === Dt.ARGUMENTS || d === Dt.ARGUMENT && 0 === f) {
    var {argDefs: g} = p;
    if (g) {
      return hintList$1(u, g.map((e => {
        var t;
        return {
          label: e.name,
          insertText: e.name + ": ",
          command: Nt,
          detail: String(e.type),
          documentation: null !== (t = e.description) && void 0 !== t ? t : void 0,
          kind: _t.Variable,
          type: e.type
        };
      })));
    }
  }
  if ((d === Dt.OBJECT_VALUE || d === Dt.OBJECT_FIELD && 0 === f) && p.objectFieldDefs) {
    var m = objectValues(p.objectFieldDefs);
    var E = d === Dt.OBJECT_VALUE ? _t.Value : _t.Field;
    return hintList$1(u, m.map((e => {
      var t;
      return {
        label: e.name,
        detail: String(e.type),
        documentation: null !== (t = e.description) && void 0 !== t ? t : void 0,
        kind: E,
        type: e.type
      };
    })));
  }
  if (d === Dt.ENUM_VALUE || d === Dt.LIST_VALUE && 1 === f || d === Dt.OBJECT_FIELD && 2 === f || d === Dt.ARGUMENT && 2 === f) {
    return function getSuggestionsForInputValues(e, t, n, r) {
      var i = P(t.inputType);
      var a = getVariableCompletions(n, r, e).filter((e => e.detail === i.name));
      if (i instanceof j) {
        return hintList$1(e, i.getValues().map((e => {
          var t;
          return {
            label: e.name,
            detail: String(i),
            documentation: null !== (t = e.description) && void 0 !== t ? t : void 0,
            deprecated: Boolean(e.deprecationReason),
            isDeprecated: Boolean(e.deprecationReason),
            deprecationReason: e.deprecationReason,
            kind: _t.EnumMember,
            type: i
          };
        })).concat(a));
      }
      if (i === U) {
        return hintList$1(e, a.concat([ {
          label: "true",
          detail: String(U),
          documentation: "Not false.",
          kind: _t.Variable,
          type: U
        }, {
          label: "false",
          detail: String(U),
          documentation: "Not true.",
          kind: _t.Variable,
          type: U
        } ]));
      }
      return a;
    }(u, p, t, e);
  }
  if (d === Dt.VARIABLE && 1 === f) {
    var h = P(p.inputType);
    return hintList$1(u, getVariableCompletions(t, e, u).filter((e => e.detail === (null == h ? void 0 : h.name))));
  }
  if (d === Dt.TYPE_CONDITION && 1 === f || d === Dt.NAMED_TYPE && null != v && v.kind === Dt.TYPE_CONDITION) {
    return function getSuggestionsForFragmentTypeConditions(e, t, n, r) {
      var i;
      if (t.parentType) {
        if (V(t.parentType)) {
          var a = Y(t.parentType);
          var o = n.getPossibleTypes(a);
          var s = Object.create(null);
          for (var u of o) {
            for (var c of u.getInterfaces()) {
              s[c.name] = c;
            }
          }
          i = o.concat(objectValues(s));
        } else {
          i = [ t.parentType ];
        }
      } else {
        i = objectValues(n.getTypeMap()).filter((e => A(e) && !e.name.startsWith("__")));
      }
      return hintList$1(e, i.map((e => {
        var t = P(e);
        return {
          label: String(e),
          documentation: (null == t ? void 0 : t.description) || "",
          kind: _t.Field
        };
      })));
    }(u, p, e);
  }
  if (d === Dt.FRAGMENT_SPREAD && 1 === f) {
    return function getSuggestionsForFragmentSpread$1(e, t, n, r, i) {
      if (!r) {
        return [];
      }
      var a = n.getTypeMap();
      var o = getDefinitionState(e.state);
      var s = function getFragmentDefinitions(e) {
        var t = [];
        runOnlineParser$1(e, ((e, n) => {
          if (n.kind === Dt.FRAGMENT_DEFINITION && n.name && n.type) {
            t.push({
              kind: Dt.FRAGMENT_DEFINITION,
              name: {
                kind: k.NAME,
                value: n.name
              },
              selectionSet: {
                kind: Dt.SELECTION_SET,
                selections: []
              },
              typeCondition: {
                kind: Dt.NAMED_TYPE,
                name: {
                  kind: k.NAME,
                  value: n.type
                }
              }
            });
          }
        }));
        return t;
      }(r);
      if (i && i.length > 0) {
        s.push(...i);
      }
      var u = s.filter((e => a[e.typeCondition.name.value] && !(o && o.kind === Dt.FRAGMENT_DEFINITION && o.name === e.name.value) && A(t.parentType) && A(a[e.typeCondition.name.value]) && $(n, t.parentType, a[e.typeCondition.name.value])));
      return hintList$1(e, u.map((e => ({
        label: e.name.value,
        detail: String(a[e.typeCondition.name.value]),
        documentation: `fragment ${e.name.value} on ${e.typeCondition.name.value}`,
        kind: _t.Field,
        type: a[e.typeCondition.name.value]
      }))));
    }(u, p, e, t, Array.isArray(i) ? i : collectFragmentDefs(i));
  }
  var T = unwrapType(c);
  if (l === Ft.TYPE_SYSTEM && !T.needsAdvance && d === Dt.NAMED_TYPE || d === Dt.LIST_TYPE) {
    if (T.kind === Dt.FIELD_DEF) {
      return hintList$1(u, Object.values(e.getTypeMap()).filter((e => w(e) && !e.name.startsWith("__"))).map((e => ({
        label: e.name,
        kind: _t.Function
      }))));
    }
    if (T.kind === Dt.INPUT_VALUE_DEF) {
      return hintList$1(u, Object.values(e.getTypeMap()).filter((e => R(e) && !e.name.startsWith("__"))).map((e => ({
        label: e.name,
        kind: _t.Function
      }))));
    }
  }
  if (d === Dt.VARIABLE_DEFINITION && 2 === f || d === Dt.LIST_TYPE && 1 === f || d === Dt.NAMED_TYPE && v && (v.kind === Dt.VARIABLE_DEFINITION || v.kind === Dt.LIST_TYPE || v.kind === Dt.NON_NULL_TYPE)) {
    return function getSuggestionsForVariableDefinition(e, t, n) {
      var r = t.getTypeMap();
      var i = objectValues(r).filter(R);
      return hintList$1(e, i.map((e => ({
        label: e.name,
        documentation: e.description,
        kind: _t.Variable
      }))));
    }(u, e);
  }
  if (d === Dt.DIRECTIVE) {
    return function getSuggestionsForDirective(e, t, n, r) {
      var i;
      if (null === (i = t.prevState) || void 0 === i ? void 0 : i.kind) {
        var a = n.getDirectives().filter((e => function canUseDirective(e, t) {
          if (!(null == e ? void 0 : e.kind)) {
            return !1;
          }
          var {kind: n, prevState: r} = e;
          var {locations: i} = t;
          switch (n) {
           case Dt.QUERY:
            return i.includes(B.QUERY);

           case Dt.MUTATION:
            return i.includes(B.MUTATION);

           case Dt.SUBSCRIPTION:
            return i.includes(B.SUBSCRIPTION);

           case Dt.FIELD:
           case Dt.ALIASED_FIELD:
            return i.includes(B.FIELD);

           case Dt.FRAGMENT_DEFINITION:
            return i.includes(B.FRAGMENT_DEFINITION);

           case Dt.FRAGMENT_SPREAD:
            return i.includes(B.FRAGMENT_SPREAD);

           case Dt.INLINE_FRAGMENT:
            return i.includes(B.INLINE_FRAGMENT);

           case Dt.SCHEMA_DEF:
            return i.includes(B.SCHEMA);

           case Dt.SCALAR_DEF:
            return i.includes(B.SCALAR);

           case Dt.OBJECT_TYPE_DEF:
            return i.includes(B.OBJECT);

           case Dt.FIELD_DEF:
            return i.includes(B.FIELD_DEFINITION);

           case Dt.INTERFACE_DEF:
            return i.includes(B.INTERFACE);

           case Dt.UNION_DEF:
            return i.includes(B.UNION);

           case Dt.ENUM_DEF:
            return i.includes(B.ENUM);

           case Dt.ENUM_VALUE:
            return i.includes(B.ENUM_VALUE);

           case Dt.INPUT_DEF:
            return i.includes(B.INPUT_OBJECT);

           case Dt.INPUT_VALUE_DEF:
            switch (null == r ? void 0 : r.kind) {
             case Dt.ARGUMENTS_DEF:
              return i.includes(B.ARGUMENT_DEFINITION);

             case Dt.INPUT_DEF:
              return i.includes(B.INPUT_FIELD_DEFINITION);
            }
          }
          return !1;
        }(t.prevState, e)));
        return hintList$1(e, a.map((e => ({
          label: e.name,
          documentation: e.description || "",
          kind: _t.Function
        }))));
      }
      return [];
    }(u, c, e);
  }
  return [];
}

var kt = " {\n  $1\n}";

var getInsertText = e => {
  var {type: t} = e;
  if (A(t)) {
    return kt;
  }
  if (W(t) && A(t.ofType)) {
    return kt;
  }
  if (J(t)) {
    if (A(t.ofType)) {
      return kt;
    }
    if (W(t.ofType) && A(t.ofType.ofType)) {
      return kt;
    }
  }
  return null;
};

var getParentDefinition$1 = (e, t) => {
  var n, r, i, a, o, s, u, c, l, d;
  if ((null === (n = e.prevState) || void 0 === n ? void 0 : n.kind) === t) {
    return e.prevState;
  }
  if ((null === (i = null === (r = e.prevState) || void 0 === r ? void 0 : r.prevState) || void 0 === i ? void 0 : i.kind) === t) {
    return e.prevState.prevState;
  }
  if ((null === (s = null === (o = null === (a = e.prevState) || void 0 === a ? void 0 : a.prevState) || void 0 === o ? void 0 : o.prevState) || void 0 === s ? void 0 : s.kind) === t) {
    return e.prevState.prevState.prevState;
  }
  if ((null === (d = null === (l = null === (c = null === (u = e.prevState) || void 0 === u ? void 0 : u.prevState) || void 0 === c ? void 0 : c.prevState) || void 0 === l ? void 0 : l.prevState) || void 0 === d ? void 0 : d.kind) === t) {
    return e.prevState.prevState.prevState.prevState;
  }
};

function getVariableCompletions(e, t, n) {
  var r = null;
  var i;
  var a = Object.create({});
  runOnlineParser$1(e, ((e, o) => {
    if ((null == o ? void 0 : o.kind) === Dt.VARIABLE && o.name) {
      r = o.name;
    }
    if ((null == o ? void 0 : o.kind) === Dt.NAMED_TYPE && r) {
      var s = getParentDefinition$1(o, Dt.TYPE);
      if (null == s ? void 0 : s.type) {
        i = t.getType(null == s ? void 0 : s.type);
      }
    }
    if (r && i && !a[r]) {
      a[r] = {
        detail: i.toString(),
        insertText: "$" === n.string ? r : "$" + r,
        label: r,
        type: i,
        kind: _t.Variable
      };
      r = null;
      i = null;
    }
  }));
  return objectValues(a);
}

function getTokenAtPosition(e, t, n = 0) {
  var r = null;
  var i = null;
  var a = null;
  var o = runOnlineParser$1(e, ((e, o, s, u) => {
    if (u !== t.line || e.getCurrentPosition() + n < t.character + 1) {
      return;
    }
    r = s;
    i = Object.assign({}, o);
    a = e.current();
    return "BREAK";
  }));
  return {
    start: o.start,
    end: o.end,
    string: a || o.string,
    state: i || o.state,
    style: r || o.style
  };
}

function runOnlineParser$1(n, r) {
  var i = n.split("\n");
  var a = t();
  var o = a.startState();
  var s = "";
  var u = new e("");
  for (var c = 0; c < i.length; c++) {
    u = new e(i[c]);
    while (!u.eol()) {
      if ("BREAK" === r(u, o, s = a.token(u, o), c)) {
        break;
      }
    }
    r(u, o, s, c);
    if (!o.kind) {
      o = a.startState();
    }
  }
  return {
    start: u.getStartOfToken(),
    end: u.getCurrentPosition(),
    string: u.current(),
    state: o,
    style: s
  };
}

function getTypeInfo(e, t) {
  var n;
  var r;
  var i;
  var a;
  var o;
  var s;
  var u;
  var c;
  var l;
  var d;
  var f;
  forEachState(t, (t => {
    var v;
    switch (t.kind) {
     case Dt.QUERY:
     case "ShortQuery":
      d = e.getQueryType();
      break;

     case Dt.MUTATION:
      d = e.getMutationType();
      break;

     case Dt.SUBSCRIPTION:
      d = e.getSubscriptionType();
      break;

     case Dt.INLINE_FRAGMENT:
     case Dt.FRAGMENT_DEFINITION:
      if (t.type) {
        d = e.getType(t.type);
      }
      break;

     case Dt.FIELD:
     case Dt.ALIASED_FIELD:
      if (!d || !t.name) {
        o = null;
      } else {
        o = l ? getFieldDef(e, l, t.name) : null;
        d = o ? o.type : null;
      }
      break;

     case Dt.SELECTION_SET:
      l = P(d);
      break;

     case Dt.DIRECTIVE:
      i = t.name ? e.getDirective(t.name) : null;
      break;

     case Dt.INTERFACE_DEF:
      if (t.name) {
        u = null;
        f = new K({
          name: t.name,
          interfaces: [],
          fields: {}
        });
      }
      break;

     case Dt.OBJECT_TYPE_DEF:
      if (t.name) {
        f = null;
        u = new z({
          name: t.name,
          interfaces: [],
          fields: {}
        });
      }
      break;

     case Dt.ARGUMENTS:
      if (t.prevState) {
        switch (t.prevState.kind) {
         case Dt.FIELD:
          r = o && o.args;
          break;

         case Dt.DIRECTIVE:
          r = i && i.args;
          break;

         case Dt.ALIASED_FIELD:
          var p = null === (v = t.prevState) || void 0 === v ? void 0 : v.name;
          if (!p) {
            r = null;
            break;
          }
          var g = l ? getFieldDef(e, l, p) : null;
          if (!g) {
            r = null;
            break;
          }
          r = g.args;
          break;

         default:
          r = null;
        }
      } else {
        r = null;
      }
      break;

     case Dt.ARGUMENT:
      if (r) {
        for (var m = 0; m < r.length; m++) {
          if (r[m].name === t.name) {
            n = r[m];
            break;
          }
        }
      }
      s = null == n ? void 0 : n.type;
      break;

     case Dt.ENUM_VALUE:
      var E = P(s);
      a = E instanceof j ? E.getValues().find((e => e.value === t.name)) : null;
      break;

     case Dt.LIST_VALUE:
      var h = q(s);
      s = h instanceof Z ? h.ofType : null;
      break;

     case Dt.OBJECT_VALUE:
      var T = P(s);
      c = T instanceof H ? T.getFields() : null;
      break;

     case Dt.OBJECT_FIELD:
      var y = t.name && c ? c[t.name] : null;
      s = null == y ? void 0 : y.type;
      break;

     case Dt.NAMED_TYPE:
      if (t.name) {
        d = e.getType(t.name);
      }
    }
  }));
  return {
    argDef: n,
    argDefs: r,
    directiveDef: i,
    enumValue: a,
    fieldDef: o,
    inputType: s,
    objectFieldDefs: c,
    parentType: l,
    type: d,
    interfaceDef: f,
    objectTypeDef: u
  };
}

var Ft;

!function(e) {
  e.TYPE_SYSTEM = "TYPE_SYSTEM";
  e.EXECUTABLE = "EXECUTABLE";
}(Ft || (Ft = {}));

function unwrapType(e) {
  if (e.prevState && e.kind && [ Dt.NAMED_TYPE, Dt.LIST_TYPE, Dt.TYPE, Dt.NON_NULL_TYPE ].includes(e.kind)) {
    return unwrapType(e.prevState);
  }
  return e;
}

function getHoverInformation(e, t, n, r, i) {
  var a = r || getTokenAtPosition(t, n);
  if (!e || !a || !a.state) {
    return "";
  }
  var {kind: o, step: s} = a.state;
  var u = getTypeInfo(e, a.state);
  var c = Object.assign(Object.assign({}, i), {
    schema: e
  });
  if ("Field" === o && 0 === s && u.fieldDef || "AliasedField" === o && 2 === s && u.fieldDef) {
    var l = [];
    renderMdCodeStart(l, c);
    !function renderField(e, t, n) {
      renderQualifiedField(e, t, n);
      renderTypeAnnotation(e, t, n, t.type);
    }(l, u, c);
    renderMdCodeEnd(l, c);
    renderDescription(l, c, u.fieldDef);
    return l.join("").trim();
  }
  if ("Directive" === o && 1 === s && u.directiveDef) {
    var d = [];
    renderMdCodeStart(d, c);
    renderDirective(d, u);
    renderMdCodeEnd(d, c);
    renderDescription(d, c, u.directiveDef);
    return d.join("").trim();
  }
  if ("Argument" === o && 0 === s && u.argDef) {
    var f = [];
    renderMdCodeStart(f, c);
    !function renderArg(e, t, n) {
      if (t.directiveDef) {
        renderDirective(e, t);
      } else if (t.fieldDef) {
        renderQualifiedField(e, t, n);
      }
      if (!t.argDef) {
        return;
      }
      var {name: r} = t.argDef;
      text(e, "(");
      text(e, r);
      renderTypeAnnotation(e, t, n, t.inputType);
      text(e, ")");
    }(f, u, c);
    renderMdCodeEnd(f, c);
    renderDescription(f, c, u.argDef);
    return f.join("").trim();
  }
  if ("EnumValue" === o && u.enumValue && "description" in u.enumValue) {
    var v = [];
    renderMdCodeStart(v, c);
    !function renderEnumValue(e, t, n) {
      if (!t.enumValue) {
        return;
      }
      var {name: r} = t.enumValue;
      renderType(e, t, n, t.inputType);
      text(e, ".");
      text(e, r);
    }(v, u, c);
    renderMdCodeEnd(v, c);
    renderDescription(v, c, u.enumValue);
    return v.join("").trim();
  }
  if ("NamedType" === o && u.type && "description" in u.type) {
    var p = [];
    renderMdCodeStart(p, c);
    renderType(p, u, c, u.type);
    renderMdCodeEnd(p, c);
    renderDescription(p, c, u.type);
    return p.join("").trim();
  }
  return "";
}

function renderMdCodeStart(e, t) {
  if (t.useMarkdown) {
    text(e, "```graphql\n");
  }
}

function renderMdCodeEnd(e, t) {
  if (t.useMarkdown) {
    text(e, "\n```");
  }
}

function renderQualifiedField(e, t, n) {
  if (!t.fieldDef) {
    return;
  }
  var r = t.fieldDef.name;
  if ("__" !== r.slice(0, 2)) {
    renderType(e, t, n, t.parentType);
    text(e, ".");
  }
  text(e, r);
}

function renderDirective(e, t, n) {
  if (!t.directiveDef) {
    return;
  }
  text(e, "@" + t.directiveDef.name);
}

function renderTypeAnnotation(e, t, n, r) {
  text(e, ": ");
  renderType(e, t, n, r);
}

function renderType(e, t, n, r) {
  if (!r) {
    return;
  }
  if (r instanceof ee) {
    renderType(e, t, n, r.ofType);
    text(e, "!");
  } else if (r instanceof Z) {
    text(e, "[");
    renderType(e, t, n, r.ofType);
    text(e, "]");
  } else {
    text(e, r.name);
  }
}

function renderDescription(e, t, n) {
  if (!n) {
    return;
  }
  var r = "string" == typeof n.description ? n.description : null;
  if (r) {
    text(e, "\n\n");
    text(e, r);
  }
  !function renderDeprecation(e, t, n) {
    if (!n) {
      return;
    }
    var r = n.deprecationReason || null;
    if (!r) {
      return;
    }
    text(e, "\n\n");
    text(e, "Deprecated: ");
    text(e, r);
  }(e, 0, n);
}

function text(e, t) {
  e.push(t);
}

class Cursor {
  constructor(e, t) {
    this.line = e;
    this.character = t;
  }
  setLine(e) {
    this.line = e;
  }
  setCharacter(e) {
    this.character = e;
  }
  lessThanOrEqualTo(e) {
    return this.line < e.line || this.line === e.line && this.character <= e.character;
  }
}

var getToken = (r, i) => {
  if (!n.isTemplateLiteral(r) && !n.isStringLiteralLike(r)) {
    return;
  }
  var a = r.getText().slice(1, -1).split("\n");
  var o = t();
  var s = o.startState();
  var u = r.getStart() + 1;
  var c = void 0;
  var l = void 0;
  for (var d = 0; d < a.length; d++) {
    if (c) {
      continue;
    }
    var f = u - 1;
    var v = new e(a[d] + "\n");
    while (!v.eol()) {
      var p = o.token(v, s);
      var g = v.current();
      if (f + v.getStartOfToken() + 1 <= i && f + v.getCurrentPosition() >= i) {
        c = l ? l : {
          line: d,
          start: v.getStartOfToken() + 1,
          end: v.getCurrentPosition(),
          string: g,
          state: s,
          tokenKind: p
        };
        break;
      } else if ("on" === g) {
        l = {
          line: d,
          start: v.getStartOfToken() + 1,
          end: v.getCurrentPosition(),
          string: g,
          state: s,
          tokenKind: p
        };
      } else if ("." === g || ".." === g) {
        l = {
          line: d,
          start: v.getStartOfToken() + 1,
          end: v.getCurrentPosition(),
          string: g,
          state: s,
          tokenKind: p
        };
      } else {
        l = void 0;
      }
    }
    u += a[d].length + 1;
  }
  return c;
};

function hintList(e, t) {
  return function filterAndSortList(e, t) {
    if (!t) {
      return filterNonEmpty(e, (e => !e.isDeprecated));
    }
    var n = e.map((e => ({
      proximity: getProximity(normalizeText(e.label), t),
      entry: e
    })));
    return filterNonEmpty(filterNonEmpty(n, (e => e.proximity <= 2)), (e => !e.entry.isDeprecated)).sort(((e, t) => (e.entry.isDeprecated ? 1 : 0) - (t.entry.isDeprecated ? 1 : 0) || e.proximity - t.proximity || e.entry.label.length - t.entry.label.length)).map((e => e.entry));
  }(t, normalizeText(e.string));
}

function filterNonEmpty(e, t) {
  var n = e.filter(t);
  return 0 === n.length ? e : n;
}

function normalizeText(e) {
  return e.toLowerCase().replace(/\W/g, "");
}

function getProximity(e, t) {
  var n = function lexicalDistance(e, t) {
    var n;
    var r;
    var i = [];
    var a = e.length;
    var o = t.length;
    for (n = 0; n <= a; n++) {
      i[n] = [ n ];
    }
    for (r = 1; r <= o; r++) {
      i[0][r] = r;
    }
    for (n = 1; n <= a; n++) {
      for (r = 1; r <= o; r++) {
        var s = e[n - 1] === t[r - 1] ? 0 : 1;
        i[n][r] = Math.min(i[n - 1][r] + 1, i[n][r - 1] + 1, i[n - 1][r - 1] + s);
        if (n > 1 && r > 1 && e[n - 1] === t[r - 2] && e[n - 2] === t[r - 1]) {
          i[n][r] = Math.min(i[n][r], i[n - 2][r - 2] + s);
        }
      }
    }
    return i[a][o];
  }(t, e);
  if (e.length > t.length) {
    n -= e.length - t.length - 1;
    n += 0 === e.indexOf(t) ? 0 : .5;
  }
  return n;
}

function getGraphQLCompletions(e, t, v, p) {
  var g = p.config.templateIsCallExpression ?? !0;
  var m = p.languageService.getProgram()?.getTypeChecker();
  var E = r(p, e);
  if (!E) {
    return;
  }
  var h = i(E, t);
  if (!h) {
    return;
  }
  h = g ? a(h) : o(h);
  var T, y, I;
  if (g && s(h, m)) {
    var b = u(h, m);
    I = b && v.multi[b] ? v.multi[b]?.schema : v.current?.schema;
    var S = getToken(h.arguments[0], t);
    if (!I || !S || "." === S.string || ".." === S.string) {
      return;
    }
    T = `${h.arguments[0].getText().slice(1, -1)}\n${c(e, h, p).map((e => l(e))).join("\n")}`;
    y = new Cursor(S.line, S.start - 1);
  } else if (!g && d(h)) {
    var _ = getToken(h.template, t);
    if (!_ || !v.current || "." === _.string || ".." === _.string) {
      return;
    }
    var {combinedText: D, resolvedSpans: N} = f(h, e, p);
    var F = N.filter((e => e.original.start < t && e.original.start + e.original.length < t)).reduce(((e, t) => e + (t.lines - 1)), 0);
    _.line = _.line + F;
    T = D;
    y = new Cursor(_.line, _.start - 1);
    I = v.current.schema;
  } else {
    return;
  }
  var [C, L] = function getSuggestionsInternal(e, t, n) {
    var r = getTokenAtPosition(t, n);
    var i = [];
    try {
      i = Q(t, {
        noLocation: !0
      }).definitions.filter((e => e.kind === k.FRAGMENT_DEFINITION));
    } catch (e) {}
    var a = "on" === r.string && "TypeCondition" === r.state.kind;
    var o = getAutocompleteSuggestions(e, t, n, a ? {
      ...r,
      state: {
        ...r.state,
        step: 1
      },
      type: null
    } : void 0);
    var s = !a ? function getSuggestionsForFragmentSpread(e, t, n, r, i) {
      if (!r) {
        return [];
      }
      var a = n.getTypeMap();
      var o = getDefinitionState(e.state);
      return hintList(e, i.filter((e => a[e.typeCondition.name.value] && !(o && o.kind === Dt.FRAGMENT_DEFINITION && o.name === e.name.value) && A(t.parentType) && A(a[e.typeCondition.name.value]) && $(n, t.parentType, a[e.typeCondition.name.value]))).map((e => ({
        label: e.name.value,
        detail: String(a[e.typeCondition.name.value]),
        documentation: `fragment ${e.name.value} on ${e.typeCondition.name.value}`,
        kind: _t.Field,
        type: a[e.typeCondition.name.value]
      }))));
    }(r, getTypeInfo(e, r.state), e, t, i) : [];
    var u = "Invalid" === r.state.kind ? r.state.prevState : r.state;
    var c = getParentDefinition(r.state, Dt.FIELD)?.name;
    if (u && c) {
      var {kind: l} = u;
      if (l === Dt.ARGUMENTS || l === Dt.ARGUMENT) {
        var d = new Set;
        runOnlineParser(t, ((e, t) => {
          if (t.kind === Dt.ARGUMENT) {
            var n = getParentDefinition(t, Dt.FIELD);
            if (c && t.name && n?.name === c) {
              d.add(t.name);
            }
          }
        }));
        o = o.filter((e => !d.has(e.label)));
      }
      if (l === Dt.SELECTION_SET || l === Dt.FIELD || l === Dt.ALIASED_FIELD) {
        var f = new Set;
        var v = getUsedFragments(t, c);
        runOnlineParser(t, ((e, t) => {
          if (t.kind === Dt.FIELD || t.kind === Dt.ALIASED_FIELD) {
            var n = getParentDefinition(t, Dt.FIELD);
            if (n && n.name === c && t.name) {
              f.add(t.name);
            }
          }
        }));
        o = o.filter((e => !f.has(e.label)));
        s = s.filter((e => !v.has(e.label)));
      }
      if (l === Dt.FRAGMENT_SPREAD) {
        var p = getUsedFragments(t, c);
        o = o.filter((e => !p.has(e.label)));
        s = s.filter((e => !p.has(e.label)));
      }
    }
    return [ o, s ];
  }(I, T, y);
  return {
    isGlobalCompletion: !1,
    isMemberCompletion: !1,
    isNewIdentifierLocation: !1,
    entries: [ ...C.map((e => ({
      ...e,
      kind: n.ScriptElementKind.variableElement,
      name: e.label,
      kindModifiers: "declare",
      sortText: e.sortText || "0",
      labelDetails: {
        detail: e.type ? " " + e.type?.toString() : void 0,
        description: e.documentation
      }
    }))), ...L.map((e => ({
      ...e,
      kind: n.ScriptElementKind.variableElement,
      name: e.label,
      insertText: "..." + e.label,
      kindModifiers: "declare",
      sortText: "0",
      labelDetails: {
        description: e.documentation
      }
    }))) ]
  };
}

function getUsedFragments(e, t) {
  var n = new Set;
  runOnlineParser(e, ((e, r) => {
    if (r.kind === Dt.FRAGMENT_SPREAD && r.name) {
      var i = getParentDefinition(r, Dt.FIELD);
      if (t && i?.name === t) {
        n.add(r.name);
      }
    }
  }));
  return n;
}

function getParentDefinition(e, t) {
  if (e.prevState?.kind === t) {
    return e.prevState;
  }
  if (e.prevState?.prevState?.kind === t) {
    return e.prevState.prevState;
  }
  if (e.prevState?.prevState?.prevState?.kind === t) {
    return e.prevState.prevState.prevState;
  }
  if (e.prevState?.prevState?.prevState?.prevState?.kind === t) {
    return e.prevState.prevState.prevState.prevState;
  }
}

function runOnlineParser(n, r) {
  var i = n.split("\n");
  var a = t();
  var o = a.startState();
  var s = "";
  var u = new e("");
  for (var c = 0; c < i.length; c++) {
    u = new e(i[c]);
    while (!u.eol()) {
      if ("BREAK" === r(u, o, s = a.token(u, o), c)) {
        break;
      }
    }
    r(u, o, s, c);
    if (!o.kind) {
      o = a.startState();
    }
  }
  return {
    start: u.getStartOfToken(),
    end: u.getCurrentPosition(),
    string: u.current(),
    state: o,
    style: s
  };
}

function create(e) {
  var logger = t => e.project.projectService.logger.info(`[GraphQLSP] ${t}`);
  var t = e.config;
  logger("config: " + JSON.stringify(t));
  if (!t.schema && !t.schemas) {
    logger('Missing "schema" option in configuration.');
    throw new Error("Please provide a GraphQL Schema!");
  }
  logger("Setting up the GraphQL Plugin");
  if (t.template) {
    p.add(t.template);
  }
  var c = function createBasicDecorator(e) {
    var t = Object.create(null);
    var _loop = function() {
      var r = e.languageService[n];
      t[n] = (...t) => r.apply(e.languageService, t);
    };
    for (var n of Object.keys(e.languageService)) {
      _loop();
    }
    return t;
  }(e);
  var l = ((e, t, n) => {
    var r = y(t);
    (async () => {
      var i = await I(e.project.getProjectName()) || T.dirname(e.project.getProjectName());
      var a = e.config.tadaDisablePreprocessing ?? !1;
      var o = e.config.tadaOutputLocation && T.resolve(i, e.config.tadaOutputLocation);
      n("Got root-directory to resolve schema from: " + i);
      n('Resolving schema from "schema" config: ' + JSON.stringify(t));
      try {
        n("Loading schema...");
        await r.load({
          rootPath: i
        });
      } catch (e) {
        n(`Failed to load schema: ${e}`);
      }
      if (r.current) {
        if (r.current && void 0 !== r.current.tadaOutputLocation) {
          saveTadaIntrospection(r.current.introspection, o, a, n);
        }
      } else if (r.multi) {
        Object.values(r.multi).forEach((e => {
          if (!e) {
            return;
          }
          if (e.tadaOutputLocation) {
            saveTadaIntrospection(e.introspection, T.resolve(i, e.tadaOutputLocation), a, n);
          }
        }));
      }
      r.autoupdate({
        rootPath: i
      }, ((e, t) => {
        if (!t) {
          return;
        }
        if (t.tadaOutputLocation) {
          var r = e.multi ? e.multi[t.name] : e.current;
          if (!r) {
            return;
          }
          saveTadaIntrospection(r.introspection, T.resolve(i, t.tadaOutputLocation), a, n);
        }
      }));
    })();
    return r;
  })(e, t, logger);
  c.getSemanticDiagnostics = t => {
    var n = e.languageService.getSemanticDiagnostics(t);
    if (n.some((e => g.includes(e.code)))) {
      return n;
    }
    var r = m(t, l, e);
    return r ? [ ...r, ...n ] : n;
  };
  c.getCompletionsAtPosition = (t, n, r) => {
    var i = getGraphQLCompletions(t, n, l, e);
    if (i && i.entries.length) {
      return i;
    } else {
      return e.languageService.getCompletionsAtPosition(t, n, r) || {
        isGlobalCompletion: !1,
        isMemberCompletion: !1,
        isNewIdentifierLocation: !1,
        entries: []
      };
    }
  };
  c.getEditsForRefactor = (t, n, r, i, a, o, s) => {
    var u = e.languageService.getEditsForRefactor(t, n, r, i, a, o, s);
    var c = E(t, "number" == typeof r ? r : r.pos, e);
    if (!c) {
      return u;
    }
    return {
      edits: [ {
        fileName: t,
        textChanges: [ {
          newText: c.replacement,
          span: c.span
        } ]
      } ]
    };
  };
  c.getApplicableRefactors = (t, n, r, i, a, o) => {
    var s = e.languageService.getApplicableRefactors(t, n, r, i, a, o);
    if (E(t, "number" == typeof n ? n : n.pos, e)) {
      return [ {
        name: "GraphQL",
        description: "Operations specific to gql.tada!",
        actions: [ {
          name: "Insert document-id",
          description: "Generate a document-id for your persisted-operation, by default a SHA256 hash."
        } ],
        inlineable: !0
      }, ...s ];
    } else {
      return s;
    }
  };
  c.getQuickInfoAtPosition = (t, c) => {
    var v = function getGraphQLQuickInfo(e, t, c, l) {
      var v = l.config.templateIsCallExpression ?? !0;
      var p = l.languageService.getProgram()?.getTypeChecker();
      var g = r(l, e);
      if (!g) {
        return;
      }
      var m = i(g, t);
      if (!m) {
        return;
      }
      m = v ? a(m) : o(m);
      var E, h, T;
      if (v && s(m, p)) {
        var y = l.languageService.getProgram()?.getTypeChecker();
        var I = u(m, y);
        T = I && c.multi[I] ? c.multi[I]?.schema : c.current?.schema;
        var b = getToken(m.arguments[0], t);
        if (!T || !b) {
          return;
        }
        h = m.arguments[0].getText();
        E = new Cursor(b.line, b.start - 1);
      } else if (!v && d(m)) {
        var S = getToken(m.template, t);
        if (!S || !c.current) {
          return;
        }
        var {combinedText: _, resolvedSpans: D} = f(m, e, l);
        var N = D.filter((e => e.original.start < t && e.original.start + e.original.length < t)).reduce(((e, t) => e + (t.lines - 1)), 0);
        S.line = S.line + N;
        h = _;
        E = new Cursor(S.line, S.start - 1);
        T = c.current.schema;
      } else {
        return;
      }
      var A = getHoverInformation(T, h, E);
      return {
        kind: n.ScriptElementKind.label,
        textSpan: {
          start: t,
          length: 1
        },
        kindModifiers: "text",
        documentation: Array.isArray(A) ? A.map((e => ({
          kind: "text",
          text: e
        }))) : [ {
          kind: "text",
          text: A
        } ]
      };
    }(t, c, l, e);
    if (v) {
      return v;
    }
    return e.languageService.getQuickInfoAtPosition(t, c);
  };
  logger("proxy: " + JSON.stringify(c));
  return c;
}

var init = e => {
  v(e);
  return {
    create
  };
};

export { init as default };
//# sourceMappingURL=graphqlsp.mjs.map

Выполнить команду


Для локальной разработки. Не используйте в интернете!