Unverified Commit 0a5daa28 authored by marshall007's avatar marshall007
Browse files

feat: integrate language server

Fixes #803
parent d31b20fc
Loading
Loading
Loading
Loading

.npmrc

0 → 100644
+1 −0
Original line number Diff line number Diff line
@gitlab-org:registry=https://gitlab.com/api/v4/projects/46519181/packages/npm/
+251 −27
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@
      "hasInstallScript": true,
      "license": "MIT",
      "dependencies": {
        "@gitlab-org/gitlab-lsp": "^1.0.0",
        "@snowplow/tracker-core": "3.15.0",
        "cross-fetch": "^3.1.8",
        "dayjs": "^1.10.7",
@@ -21,7 +22,8 @@
        "source-map-support": "^0.5.20",
        "temp": "^0.9.4",
        "url": "^0.11.0",
        "uuid": "^9.0.0"
        "uuid": "^9.0.0",
        "vscode-languageclient": "^8.1.0"
      },
      "devDependencies": {
        "@jest/globals": "^29.5.0",
@@ -48,6 +50,7 @@
        "fs-extra": "^11.1.1",
        "jest": "^29.7.0",
        "jest-junit": "^16.0.0",
        "jest-mock-vscode": "^1.4.0",
        "mocha": "^10.2.0",
        "mocha-junit-reporter": "^2.2.1",
        "msw": "^1.3.1",
@@ -1052,6 +1055,17 @@
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
      }
    },
    "node_modules/@gitlab-org/gitlab-lsp": {
      "version": "1.0.0",
      "resolved": "https://gitlab.com/api/v4/projects/46519181/packages/npm/@gitlab-org/gitlab-lsp/-/@gitlab-org/gitlab-lsp-1.0.0.tgz",
      "integrity": "sha1-xiv8f20W4cUo7tOWUo5sgDT4EQo=",
      "dependencies": {
        "cross-fetch": "^3.1.6",
        "semver": "^7.5.4",
        "vscode-languageserver": "^8.1.0",
        "vscode-languageserver-textdocument": "^1.0.8"
      }
    },
    "node_modules/@graphql-typed-document-node/core": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
@@ -4041,21 +4055,6 @@
        "node": ">=8"
      }
    },
    "node_modules/cross-spawn/node_modules/which": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
      "dev": true,
      "dependencies": {
        "isexe": "^2.0.0"
      },
      "bin": {
        "node-which": "bin/node-which"
      },
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/crypt": {
      "version": "0.0.2",
      "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
@@ -4468,6 +4467,29 @@
        "node": ">= 0.8"
      }
    },
    "node_modules/encoding": {
      "version": "0.1.13",
      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
      "optional": true,
      "peer": true,
      "dependencies": {
        "iconv-lite": "^0.6.2"
      }
    },
    "node_modules/encoding/node_modules/iconv-lite": {
      "version": "0.6.3",
      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
      "optional": true,
      "peer": true,
      "dependencies": {
        "safer-buffer": ">= 2.1.2 < 3.0.0"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/end-of-stream": {
      "version": "1.4.4",
      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -7646,6 +7668,21 @@
        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
      }
    },
    "node_modules/jest-mock-vscode": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/jest-mock-vscode/-/jest-mock-vscode-1.4.0.tgz",
      "integrity": "sha512-Z9PLp+TFLoYDeaYYKHs2OTOJ85+QjOF1daaxGIoa4hd6l49kdtJ0Q38y+iPx9BAT7KowLh3mfRxk4mUyL6E+YA==",
      "dev": true,
      "dependencies": {
        "vscode-uri": "^3.0.7"
      },
      "engines": {
        "node": ">16.0.0"
      },
      "peerDependencies": {
        "jest": "^29.5.0"
      }
    },
    "node_modules/jest-pnp-resolver": {
      "version": "1.2.3",
      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
@@ -10974,7 +11011,7 @@
      "version": "2.1.2",
      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
      "dev": true
      "devOptional": true
    },
    "node_modules/sax": {
      "version": "1.2.4",
@@ -12232,6 +12269,76 @@
        "semver": "bin/semver"
      }
    },
    "node_modules/vscode-jsonrpc": {
      "version": "8.1.0",
      "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz",
      "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==",
      "engines": {
        "node": ">=14.0.0"
      }
    },
    "node_modules/vscode-languageclient": {
      "version": "8.1.0",
      "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz",
      "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==",
      "dependencies": {
        "minimatch": "^5.1.0",
        "semver": "^7.3.7",
        "vscode-languageserver-protocol": "3.17.3"
      },
      "engines": {
        "vscode": "^1.67.0"
      }
    },
    "node_modules/vscode-languageclient/node_modules/brace-expansion": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
      "dependencies": {
        "balanced-match": "^1.0.0"
      }
    },
    "node_modules/vscode-languageclient/node_modules/minimatch": {
      "version": "5.1.6",
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
      "dependencies": {
        "brace-expansion": "^2.0.1"
      },
      "engines": {
        "node": ">=10"
      }
    },
    "node_modules/vscode-languageserver": {
      "version": "8.1.0",
      "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz",
      "integrity": "sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==",
      "dependencies": {
        "vscode-languageserver-protocol": "3.17.3"
      },
      "bin": {
        "installServerIntoExtension": "bin/installServerIntoExtension"
      }
    },
    "node_modules/vscode-languageserver-protocol": {
      "version": "3.17.3",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz",
      "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==",
      "dependencies": {
        "vscode-jsonrpc": "8.1.0",
        "vscode-languageserver-types": "3.17.3"
      }
    },
    "node_modules/vscode-languageserver-textdocument": {
      "version": "1.0.8",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
      "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q=="
    },
    "node_modules/vscode-languageserver-types": {
      "version": "3.17.3",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
      "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA=="
    },
    "node_modules/vscode-test": {
      "version": "1.6.1",
      "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz",
@@ -12499,6 +12606,21 @@
        "webidl-conversions": "^3.0.0"
      }
    },
    "node_modules/which": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
      "dev": true,
      "dependencies": {
        "isexe": "^2.0.0"
      },
      "bin": {
        "node-which": "bin/node-which"
      },
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/which-boxed-primitive": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
@@ -13415,6 +13537,17 @@
      "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
      "dev": true
    },
    "@gitlab-org/gitlab-lsp": {
      "version": "1.0.0",
      "resolved": "https://gitlab.com/api/v4/projects/46519181/packages/npm/@gitlab-org/gitlab-lsp/-/@gitlab-org/gitlab-lsp-1.0.0.tgz",
      "integrity": "sha1-xiv8f20W4cUo7tOWUo5sgDT4EQo=",
      "requires": {
        "cross-fetch": "^3.1.6",
        "semver": "^7.5.4",
        "vscode-languageserver": "^8.1.0",
        "vscode-languageserver-textdocument": "^1.0.8"
      }
    },
    "@graphql-typed-document-node/core": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
@@ -15736,15 +15869,6 @@
          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
          "dev": true
        },
        "which": {
          "version": "2.0.2",
          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
          "dev": true,
          "requires": {
            "isexe": "^2.0.0"
          }
        }
      }
    },
@@ -16044,6 +16168,28 @@
      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
      "dev": true
    },
    "encoding": {
      "version": "0.1.13",
      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
      "optional": true,
      "peer": true,
      "requires": {
        "iconv-lite": "^0.6.2"
      },
      "dependencies": {
        "iconv-lite": {
          "version": "0.6.3",
          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
          "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
          "optional": true,
          "peer": true,
          "requires": {
            "safer-buffer": ">= 2.1.2 < 3.0.0"
          }
        }
      }
    },
    "end-of-stream": {
      "version": "1.4.4",
      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -18372,6 +18518,15 @@
        "jest-util": "^29.7.0"
      }
    },
    "jest-mock-vscode": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/jest-mock-vscode/-/jest-mock-vscode-1.4.0.tgz",
      "integrity": "sha512-Z9PLp+TFLoYDeaYYKHs2OTOJ85+QjOF1daaxGIoa4hd6l49kdtJ0Q38y+iPx9BAT7KowLh3mfRxk4mUyL6E+YA==",
      "dev": true,
      "requires": {
        "vscode-uri": "^3.0.7"
      }
    },
    "jest-pnp-resolver": {
      "version": "1.2.3",
      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
@@ -20868,7 +21023,7 @@
      "version": "2.1.2",
      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
      "dev": true
      "devOptional": true
    },
    "sax": {
      "version": "1.2.4",
@@ -21860,6 +22015,66 @@
        }
      }
    },
    "vscode-jsonrpc": {
      "version": "8.1.0",
      "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz",
      "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw=="
    },
    "vscode-languageclient": {
      "version": "8.1.0",
      "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz",
      "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==",
      "requires": {
        "minimatch": "^5.1.0",
        "semver": "^7.3.7",
        "vscode-languageserver-protocol": "3.17.3"
      },
      "dependencies": {
        "brace-expansion": {
          "version": "2.0.1",
          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
          "requires": {
            "balanced-match": "^1.0.0"
          }
        },
        "minimatch": {
          "version": "5.1.6",
          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
          "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
          "requires": {
            "brace-expansion": "^2.0.1"
          }
        }
      }
    },
    "vscode-languageserver": {
      "version": "8.1.0",
      "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz",
      "integrity": "sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==",
      "requires": {
        "vscode-languageserver-protocol": "3.17.3"
      }
    },
    "vscode-languageserver-protocol": {
      "version": "3.17.3",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz",
      "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==",
      "requires": {
        "vscode-jsonrpc": "8.1.0",
        "vscode-languageserver-types": "3.17.3"
      }
    },
    "vscode-languageserver-textdocument": {
      "version": "1.0.8",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
      "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q=="
    },
    "vscode-languageserver-types": {
      "version": "3.17.3",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
      "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA=="
    },
    "vscode-test": {
      "version": "1.6.1",
      "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz",
@@ -22076,6 +22291,15 @@
        "webidl-conversions": "^3.0.0"
      }
    },
    "which": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
      "dev": true,
      "requires": {
        "isexe": "^2.0.0"
      }
    },
    "which-boxed-primitive": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+4 −1
Original line number Diff line number Diff line
@@ -229,6 +229,7 @@
    "fs-extra": "^11.1.1",
    "jest": "^29.7.0",
    "jest-junit": "^16.0.0",
    "jest-mock-vscode": "^1.4.0",
    "mocha": "^10.2.0",
    "mocha-junit-reporter": "^2.2.1",
    "msw": "^1.3.1",
@@ -242,6 +243,7 @@
    "webfont": "^11.2.26"
  },
  "dependencies": {
    "@gitlab-org/gitlab-lsp": "^1.0.0",
    "@snowplow/tracker-core": "3.15.0",
    "cross-fetch": "^3.1.8",
    "dayjs": "^1.10.7",
@@ -253,6 +255,7 @@
    "source-map-support": "^0.5.20",
    "temp": "^0.9.4",
    "url": "^0.11.0",
    "uuid": "^9.0.0"
    "uuid": "^9.0.0",
    "vscode-languageclient": "^8.1.0"
  }
}
+4 −0
Original line number Diff line number Diff line
@@ -34,6 +34,10 @@ export async function prepareWebviews(webviews, env) {
export async function generateAssets(packageJson, env) {
  return Promise.all([
    copy(path.join(root, 'src/assets'), path.join(root, `dist-${env}/assets`)),
    copy(
      path.join(root, 'node_modules/@gitlab-org/gitlab-lsp/out'),
      path.join(root, `dist-${env}/assets/language-server`),
    ),
    generateFont(packageJson, `dist-${env}`),
  ]);
}
+4 −0
Original line number Diff line number Diff line
// eslint-disable-next-line import/no-extraneous-dependencies
const jestMockVSCode = require('jest-mock-vscode');

const { Uri } = require('../desktop/test_utils/uri');
const { EventEmitter } = require('../desktop/test_utils/event_emitter');
const { FileType } = require('../desktop/test_utils/file_type');
const { FileSystemError } = require('../desktop/test_utils/file_system_error');

module.exports = {
  ...jestMockVSCode,
  TreeItem: function TreeItem(labelOrUri, collapsibleState) {
    this.collapsibleState = collapsibleState;
    if (typeof labelOrUri === 'string') {
Loading