diff --git a/languageserver/package.json b/languageserver/package.json index c72deec..66f33cd 100644 --- a/languageserver/package.json +++ b/languageserver/package.json @@ -43,6 +43,7 @@ "@github/actions-languageservice": "^0.1.167", "@github/actions-workflow-parser": "^0.1.167", "@octokit/rest": "^19.0.7", + "@octokit/types": "^9.0.0", "vscode-languageserver": "^8.0.2", "vscode-languageserver-textdocument": "^1.0.7", "yaml": "^2.1.3" @@ -62,4 +63,4 @@ "ts-jest": "^29.0.3", "typescript": "^4.8.4" } -} \ No newline at end of file +} diff --git a/languageserver/src/utils/error.ts b/languageserver/src/utils/error.ts new file mode 100644 index 0000000..843eaad --- /dev/null +++ b/languageserver/src/utils/error.ts @@ -0,0 +1,27 @@ +import {RequestError} from "@octokit/types"; + +export function errorMessage(error: unknown): string { + if (error instanceof Error) { + return error.message; + } + if (typeof error === "string") { + return error; + } + + if ("name" in (error as RequestError)) { + return (error as RequestError).name; + } + + const status = errorStatus(error); + if (status) { + return `HTTP ${status}`; + } + + return "Unknown error"; +} + +export function errorStatus(error: unknown): number | undefined { + if ("status" in (error as RequestError)) { + return (error as RequestError).status; + } +} diff --git a/package-lock.json b/package-lock.json index aea6511..097d222 100644 --- a/package-lock.json +++ b/package-lock.json @@ -157,6 +157,7 @@ "@github/actions-languageservice": "^0.1.167", "@github/actions-workflow-parser": "^0.1.167", "@octokit/rest": "^19.0.7", + "@octokit/types": "^9.0.0", "vscode-languageserver": "^8.0.2", "vscode-languageserver-textdocument": "^1.0.7", "yaml": "^2.1.3" @@ -174,6 +175,19 @@ "node": ">= 16.15" } }, + "languageserver/node_modules/@octokit/openapi-types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", + "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + }, + "languageserver/node_modules/@octokit/types": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", + "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "dependencies": { + "@octokit/openapi-types": "^16.0.0" + } + }, "languageservice": { "name": "@github/actions-languageservice", "version": "0.1.167", @@ -14830,6 +14844,7 @@ "@github/actions-languageservice": "^0.1.167", "@github/actions-workflow-parser": "^0.1.167", "@octokit/rest": "^19.0.7", + "@octokit/types": "*", "@types/jest": "^29.0.3", "fetch-mock": "^9.11.0", "jest": "^29.0.3", @@ -14840,6 +14855,21 @@ "vscode-languageserver": "^8.0.2", "vscode-languageserver-textdocument": "^1.0.7", "yaml": "^2.1.3" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", + "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + }, + "@octokit/types": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", + "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", + "requires": { + "@octokit/openapi-types": "^16.0.0" + } + } } }, "@github/actions-languageservice": {