From 8f9887ccd4ae5a81019fe4f0f307358bf4a95ceb Mon Sep 17 00:00:00 2001 From: violine1101 Date: Thu, 6 Aug 2020 12:40:58 +0200 Subject: [PATCH 1/8] Use jira.js instead of jira-connector --- README.md | 2 +- package-lock.json | 444 +++++++++----------------------- package.json | 5 +- src/MojiraBot.ts | 5 + src/commands/MentionCommand.ts | 9 +- src/mentions/MultipleMention.ts | 11 +- src/mentions/SingleMention.ts | 42 ++- src/tasks/FilterFeedTask.ts | 10 +- src/tasks/VersionFeedTask.ts | 26 +- tsconfig.json | 1 + 10 files changed, 177 insertions(+), 378 deletions(-) diff --git a/README.md b/README.md index 91622830..f1c819ac 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ This project depends on the following projects, thanks to every developer who ma - [discord.js](https://github.com/discordjs/discord.js/) - [ESLint](https://github.com/eslint/eslint) -- [jira-connector](https://github.com/floralvikings/jira-connector) +- [jira.js](https://github.com/MrRefactoring/jira.js) - [JS-YAML](https://github.com/nodeca/js-yaml) - [log4js](https://github.com/log4js-node/log4js-node) - [moment](https://github.com/moment/moment) diff --git a/package-lock.json b/package-lock.json index c2662252..61ef2f18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,15 @@ "js-tokens": "^4.0.0" } }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -42,6 +51,14 @@ "integrity": "sha512-EoAeT1MyFWh2BJvBDEFInY714bQBbHOAucqxqqhprhbBFqr+B7fuN5T9CJqUIGDzvwubnKKRqmSo6yPo0aSpNw==", "dev": true }, + "@types/connect": { + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "requires": { + "@types/node": "*" + } + }, "@types/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@types/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -54,17 +71,42 @@ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, + "@types/express": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", + "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", + "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, "@types/json-schema": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", "dev": true }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + }, "@types/node": { "version": "12.12.35", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz", - "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==", - "dev": true + "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==" }, "@types/node-fetch": { "version": "2.5.7", @@ -89,6 +131,25 @@ } } }, + "@types/qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", + "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, "@typescript-eslint/eslint-plugin": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.27.0.tgz", @@ -156,6 +217,7 @@ "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -203,19 +265,6 @@ "sprintf-js": "~1.0.2" } }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -230,48 +279,23 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, - "atlassian-jwt": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/atlassian-jwt/-/atlassian-jwt-1.0.3.tgz", - "integrity": "sha512-x5+tZVhR0Rpy8QvaEFQmJdKgjO0MJSDANj69E2yJYhoik8ufvBDJ7rxiZ98tjcUYDAiF2u6aKs5kk/akS0j6HQ==", + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { - "jsuri": "^1.3.1", - "lodash": "^4.17.11" + "follow-redirects": "1.5.10" } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -288,11 +312,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -344,6 +363,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -362,11 +382,6 @@ "json5": "^2.1.1" } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -388,14 +403,6 @@ } } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "date-format": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", @@ -409,11 +416,6 @@ "ms": "^2.1.1" } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -423,7 +425,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "discord.js": { "version": "11.6.4", @@ -446,15 +449,6 @@ "esutils": "^2.0.2" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -608,11 +602,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -624,20 +613,17 @@ "tmp": "^0.0.33" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -679,19 +665,27 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "fs-extra": { @@ -716,14 +710,6 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -761,36 +747,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -947,32 +909,29 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jira-connector": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jira-connector/-/jira-connector-3.1.0.tgz", - "integrity": "sha512-eMpkYx/s+XREWC/d/dP9lXLbYQh43C0i8q+RJJFP3sMPq/Dq2NLHrymgCIb2tFrxxwvfZ/yHBBv+rU3MD66OrQ==", + "jira.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jira.js/-/jira.js-1.6.0.tgz", + "integrity": "sha512-7GFqmZveBWbFgN5N+/7uFJBOTe44Md59YKGWHte6pnA83rnGnEnU2kVOEnOwupr1Uauwh72gFmeMHlIP0M82BQ==", "requires": { - "atlassian-jwt": "^1.0.2", - "mime-types": "^2.1.25", - "oauth": "^0.9.15", - "query-string": "^6.9.0", - "request": "^2.88.0" + "atlassian-jwt": "git+https://github.com/MrRefactoring/atlassian-jwt.git#dist", + "axios": "^0.19.2" + }, + "dependencies": { + "atlassian-jwt": { + "version": "git+https://github.com/MrRefactoring/atlassian-jwt.git#2653d31d97559f25b23e6e77f7ea817af8aa58c4", + "from": "git+https://github.com/MrRefactoring/atlassian-jwt.git#dist", + "requires": { + "@types/express": "^4.17.2", + "jsuri": "^1.3.1" + } + } } }, "js-tokens": { @@ -990,20 +949,11 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -1011,11 +961,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, "json5": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", @@ -1032,17 +977,6 @@ "graceful-fs": "^4.1.6" } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, "jsuri": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsuri/-/jsuri-1.3.1.tgz", @@ -1061,7 +995,8 @@ "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true }, "log4js": { "version": "6.1.2", @@ -1083,12 +1018,14 @@ "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, "requires": { "mime-db": "1.44.0" } @@ -1155,16 +1092,6 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, - "oauth": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", - "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1224,11 +1151,6 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -1246,30 +1168,11 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "query-string": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.1.tgz", - "integrity": "sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA==", - "requires": { - "decode-uri-component": "^0.2.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "regexpp": { "version": "3.1.0", @@ -1277,33 +1180,6 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -1352,15 +1228,11 @@ "tslib": "^1.9.0" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "6.3.0", @@ -1413,39 +1285,11 @@ "resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz", "integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw==" }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - } - } - }, "streamroller": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.3.tgz", @@ -1463,11 +1307,6 @@ } } }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" - }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -1580,15 +1419,6 @@ "os-tmpdir": "~1.0.2" } }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "tslib": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", @@ -1604,14 +1434,6 @@ "tslib": "^1.8.1" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, "tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", @@ -1646,31 +1468,17 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, "v8-compile-cache": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index fad2bc8a..8aac312f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "author": "violine1101", "contributors": [ "NeunEinser", - "SPGoding" + "SPGoding", + "urielsalis" ], "repository": "https://github.com/mojira/mojira-discord-bot", "scripts": { @@ -19,7 +20,7 @@ "dependencies": { "config": "^3.3.1", "discord.js": "^11.6.4", - "jira-connector": "^3.1.0", + "jira.js": "^1.6.0", "js-yaml": "^3.14.0", "log4js": "^6.1.2", "moment": "^2.24.0", diff --git a/src/MojiraBot.ts b/src/MojiraBot.ts index b6f29327..a773c06e 100644 --- a/src/MojiraBot.ts +++ b/src/MojiraBot.ts @@ -1,5 +1,6 @@ import { Client, TextChannel, ChannelLogsQueryOptions, Message } from 'discord.js'; import * as log4js from 'log4js'; +import { Client as JiraClient } from 'jira.js'; import BotConfig from './BotConfig'; import TaskScheduler from './tasks/TaskScheduler'; import EventRegistry from './events/EventRegistry'; @@ -26,6 +27,10 @@ export default class MojiraBot { public static client: Client = new Client(); private static running = false; + public static jira = new JiraClient( { + host: 'https://bugs.mojang.com', + } ); + public static async start(): Promise { if ( this.running ) { this.logger.error( 'MojiraBot is still running. You can only start a bot that is not currently running.' ); diff --git a/src/commands/MentionCommand.ts b/src/commands/MentionCommand.ts index 32e83cb3..6305ef72 100644 --- a/src/commands/MentionCommand.ts +++ b/src/commands/MentionCommand.ts @@ -43,11 +43,12 @@ export default class MentionCommand extends Command { let embed: RichEmbed; try { embed = await mention.getEmbed(); - } catch ( err ) { + } catch ( jiraError ) { try { - message.channel.send( err ); - } catch ( err ) { - Command.logger.log( err ); + Command.logger.error( jiraError ); + await message.channel.send( jiraError.message ); + } catch ( discordError ) { + Command.logger.error( discordError ); } return false; } diff --git a/src/mentions/MultipleMention.ts b/src/mentions/MultipleMention.ts index 9918a379..8199fa61 100644 --- a/src/mentions/MultipleMention.ts +++ b/src/mentions/MultipleMention.ts @@ -1,21 +1,14 @@ import { RichEmbed } from 'discord.js'; import { Mention } from './Mention'; -import JiraClient from 'jira-connector'; +import MojiraBot from '../MojiraBot'; export class MultipleMention extends Mention { - private jira: JiraClient; - private tickets: string[]; constructor( tickets: string[] ) { super(); this.tickets = tickets; - - this.jira = new JiraClient( { - host: 'bugs.mojang.com', - strictSSL: true, - } ); } public async getEmbed(): Promise { @@ -26,7 +19,7 @@ export class MultipleMention extends Mention { let searchResults: any; try { - searchResults = await this.jira.search.search( { + searchResults = await MojiraBot.jira.issueSearch.searchForIssuesUsingJqlGet( { jql: `id IN (${ this.tickets.join( ',' ) }) ORDER BY key ASC`, maxResults: 10, fields: [ 'key', 'summary' ], diff --git a/src/mentions/SingleMention.ts b/src/mentions/SingleMention.ts index 64b90171..5f7c8bd0 100644 --- a/src/mentions/SingleMention.ts +++ b/src/mentions/SingleMention.ts @@ -1,50 +1,40 @@ import { RichEmbed } from 'discord.js'; import { Mention } from './Mention'; -import JiraClient from 'jira-connector'; import moment from 'moment'; +import MojiraBot from '../MojiraBot'; export class SingleMention extends Mention { - private jira: JiraClient; - private ticket: string; constructor( ticket: string ) { super(); this.ticket = ticket; - - this.jira = new JiraClient( { - host: 'bugs.mojang.com', - strictSSL: true, - } ); } public async getEmbed(): Promise { let ticketResult: any; try { - ticketResult = await this.jira.issue.getIssue( { - issueId: this.ticket, + ticketResult = await MojiraBot.jira.issues.getIssue( { + issueIdOrKey: this.ticket, } ); } catch ( err ) { - const exception = JSON.parse( err ); - if ( !exception ) { - Mention.logger.error( err ); - return; - } - - Mention.logger.error( 'Error: status code ' + exception.statusCode ); - - // TODO clean up - let errorMessage = `An error occurred while retrieving this ticket: ${ exception.body.errorMessages[0] }`; - - if ( exception.statusCode === 404 ) { - errorMessage = 'This ticket doesn\'t seem to exist.'; - } else if ( exception.statusCode === 401 ) { - errorMessage = 'This ticket is private or has been deleted.'; + let errorMessage = `An error occurred while retrieving ticket ${ this.ticket }: ${ err.message }`; + + if ( err.response ) { + const exception = err.response; + + if ( exception.status === 404 ) { + errorMessage = `${ this.ticket } doesn't seem to exist. (error code ${ exception.status })`; + } else if ( exception.status === 401 ) { + errorMessage = `${ this.ticket } is private or has been deleted. (error code ${ exception.status })`; + } else { + errorMessage += ` (error code ${ exception.status })`; + } } - throw errorMessage; + throw new Error( errorMessage ); } if ( !ticketResult.fields ) { diff --git a/src/tasks/FilterFeedTask.ts b/src/tasks/FilterFeedTask.ts index c18b8092..ca341a30 100644 --- a/src/tasks/FilterFeedTask.ts +++ b/src/tasks/FilterFeedTask.ts @@ -3,8 +3,9 @@ import { FilterFeedConfig } from '../BotConfig'; import { Client, TextChannel, Channel } from 'discord.js'; import * as log4js from 'log4js'; import Task from './Task'; -import JiraClient from 'jira-connector'; +import { Client as JiraClient } from 'jira.js'; import { NewsUtil } from '../util/NewsUtil'; +import MojiraBot from '../MojiraBot'; export default class FilterFeedTask extends Task { public static logger = log4js.getLogger( 'FilterFeed' ); @@ -25,18 +26,13 @@ export default class FilterFeedTask extends Task { this.jql = jql; this.title = title; this.titleSingle = titleSingle || title.replace( /\{\{num\}\}/g, '1' ); - - this.jira = new JiraClient( { - host: 'bugs.mojang.com', - strictSSL: true, - } ); } public async run(): Promise { let upcomingTickets: string[]; try { - const searchResults = await this.jira.search.search( { + const searchResults = await MojiraBot.jira.issueSearch.searchForIssuesUsingJqlGet( { jql: this.jql, fields: ['key'], } ); diff --git a/src/tasks/VersionFeedTask.ts b/src/tasks/VersionFeedTask.ts index 08831583..db1c3bdd 100644 --- a/src/tasks/VersionFeedTask.ts +++ b/src/tasks/VersionFeedTask.ts @@ -2,8 +2,8 @@ import * as log4js from 'log4js'; import Task from './Task'; import { Channel, TextChannel, RichEmbed } from 'discord.js'; import { VersionFeedConfig } from '../BotConfig'; -import JiraClient from 'jira-connector'; import { NewsUtil } from '../util/NewsUtil'; +import MojiraBot from '../MojiraBot'; interface JiraVersion { id: string; @@ -21,8 +21,6 @@ interface JiraVersionChange { export default class VersionFeedTask extends Task { public static logger = log4js.getLogger( 'Version' ); - private jira: JiraClient; - private channel: Channel; private project: string; private scope: number; @@ -38,14 +36,16 @@ export default class VersionFeedTask extends Task { this.project = project; this.scope = scope; - this.jira = new JiraClient( { - host: 'bugs.mojang.com', - strictSSL: true, - } ); - this.getVersions().then( versions => { this.cachedVersions = versions; + this.cachedVersions = [ + { id: '19578', name: 'Future Version - 1.16', archived: false, released: false, releaseDate: undefined }, + { id: '19576', name: '1.16.2 Pre-release -2', archived: false, released: false, releaseDate: '2020-08-05' }, + { id: '19574', name: '1.16.2 Pre-release -999', archived: false, released: true, releaseDate: '2020-07-29' }, + { id: '19570', name: '20w30a', archived: true, released: true, releaseDate: '2020-07-22' }, + { id: '19559', name: '20w29a', archived: true, released: true, releaseDate: '2020-07-15' }, + ]; this.initialized = true; } ).catch( @@ -57,7 +57,9 @@ export default class VersionFeedTask extends Task { } public async run(): Promise { + VersionFeedTask.logger.debug( 'run versionfeedtask' ); if ( !this.initialized ) return; + VersionFeedTask.logger.debug( 'run versionfeedtask 2' ); if ( !( this.channel instanceof TextChannel ) ) { VersionFeedTask.logger.error( `Expected ${ this.channel } to be a TextChannel` ); @@ -76,7 +78,7 @@ export default class VersionFeedTask extends Task { } private async getVersions(): Promise { - const results = await this.jira.project.getVersionsPaginated( { + const results = await MojiraBot.jira.projectVersions.getProjectVersionsPaginated( { projectIdOrKey: this.project, maxResults: this.scope, orderBy: '-sequence', @@ -108,6 +110,8 @@ export default class VersionFeedTask extends Task { private async getVersionChanges( previous: JiraVersion[], current: JiraVersion[] ): Promise { const changes: JiraVersionChange[] = []; + VersionFeedTask.logger.debug( 'Getting version changes' ); + for ( const version of current ) { const previousVersion = previous.find( it => it.id === version.id ); @@ -147,8 +151,8 @@ export default class VersionFeedTask extends Task { }; try { - versionIssueCounts = await this.jira.version.getRelatedIssueCounts( { - versionId: version.id, + versionIssueCounts = await MojiraBot.jira.projectVersions.getVersionsRelatedIssuesCount( { + id: version.id, } ); } catch ( error ) { VersionFeedTask.logger.error( error ); diff --git a/tsconfig.json b/tsconfig.json index 58afe590..c51f622f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,6 +4,7 @@ "module": "commonjs", "lib": ["es2016"], "outDir": "./bin", + "sourceMap": true, "esModuleInterop": true }, "exclude": [ From 1317ecad099ed5a913b2c29db20090d30a370af7 Mon Sep 17 00:00:00 2001 From: violine1101 Date: Thu, 6 Aug 2020 15:00:50 +0200 Subject: [PATCH 2/8] Remove temp debug code --- src/tasks/VersionFeedTask.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/tasks/VersionFeedTask.ts b/src/tasks/VersionFeedTask.ts index db1c3bdd..f20313c5 100644 --- a/src/tasks/VersionFeedTask.ts +++ b/src/tasks/VersionFeedTask.ts @@ -39,13 +39,6 @@ export default class VersionFeedTask extends Task { this.getVersions().then( versions => { this.cachedVersions = versions; - this.cachedVersions = [ - { id: '19578', name: 'Future Version - 1.16', archived: false, released: false, releaseDate: undefined }, - { id: '19576', name: '1.16.2 Pre-release -2', archived: false, released: false, releaseDate: '2020-08-05' }, - { id: '19574', name: '1.16.2 Pre-release -999', archived: false, released: true, releaseDate: '2020-07-29' }, - { id: '19570', name: '20w30a', archived: true, released: true, releaseDate: '2020-07-22' }, - { id: '19559', name: '20w29a', archived: true, released: true, releaseDate: '2020-07-15' }, - ]; this.initialized = true; } ).catch( @@ -57,9 +50,7 @@ export default class VersionFeedTask extends Task { } public async run(): Promise { - VersionFeedTask.logger.debug( 'run versionfeedtask' ); if ( !this.initialized ) return; - VersionFeedTask.logger.debug( 'run versionfeedtask 2' ); if ( !( this.channel instanceof TextChannel ) ) { VersionFeedTask.logger.error( `Expected ${ this.channel } to be a TextChannel` ); @@ -110,8 +101,6 @@ export default class VersionFeedTask extends Task { private async getVersionChanges( previous: JiraVersion[], current: JiraVersion[] ): Promise { const changes: JiraVersionChange[] = []; - VersionFeedTask.logger.debug( 'Getting version changes' ); - for ( const version of current ) { const previousVersion = previous.find( it => it.id === version.id ); From 18dcbec1c1bf698ed90c810ba919f4fc0549bd28 Mon Sep 17 00:00:00 2001 From: violine1101 Date: Thu, 6 Aug 2020 15:22:40 +0200 Subject: [PATCH 3/8] Improve error handling --- src/commands/MentionCommand.ts | 2 +- src/mentions/MultipleMention.ts | 27 ++++++++++----------------- src/mentions/SingleMention.ts | 14 +++++++------- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/commands/MentionCommand.ts b/src/commands/MentionCommand.ts index 6305ef72..758a0968 100644 --- a/src/commands/MentionCommand.ts +++ b/src/commands/MentionCommand.ts @@ -46,7 +46,7 @@ export default class MentionCommand extends Command { } catch ( jiraError ) { try { Command.logger.error( jiraError ); - await message.channel.send( jiraError.message ); + await message.channel.send( '❌ ' + jiraError.message ); } catch ( discordError ) { Command.logger.error( discordError ); } diff --git a/src/mentions/MultipleMention.ts b/src/mentions/MultipleMention.ts index 8199fa61..cebbf9f8 100644 --- a/src/mentions/MultipleMention.ts +++ b/src/mentions/MultipleMention.ts @@ -25,30 +25,23 @@ export class MultipleMention extends Mention { fields: [ 'key', 'summary' ], } ); } catch ( err ) { - const exception = JSON.parse( err ); - if ( !exception ) { - Mention.logger.error( err ); - return; - } - - Mention.logger.error( 'Error: status code ' + exception.statusCode ); + let ticketList = this.tickets.join( ', ' ); + const lastSeparatorPos = ticketList.lastIndexOf( ', ' ); + ticketList = `${ ticketList.substring( 0, lastSeparatorPos ) } and ${ ticketList.substring( lastSeparatorPos + 2, ticketList.length ) }`; - // TODO clean up - let errorMessage = `An error occurred while retrieving this ticket: ${ exception.body.errorMessages[0] }`; + let errorMessage = `An error occurred while retrieving tickets ${ ticketList }: ${ err.message }`; - if ( exception.statusCode === 404 ) { - errorMessage = 'This ticket doesn\'t seem to exist.'; - } else if ( exception.statusCode === 401 ) { - errorMessage = 'This ticket is private or has been deleted.'; + if ( err.response?.data?.errorMessages ) { + for ( const msg of err.response.data.errorMessages ) { + errorMessage += `\n${ msg }`; + } } - throw errorMessage; + throw new Error( errorMessage ); } if ( !searchResults.issues ) { - Mention.logger.error( 'Error: no issues returned by JIRA' ); - - throw 'An error occurred while retrieving this ticket: No issues were returned by the JIRA API.'; + throw new Error( 'No issues were returned by the JIRA API.' ); } for ( const issue of searchResults.issues ) { diff --git a/src/mentions/SingleMention.ts b/src/mentions/SingleMention.ts index 5f7c8bd0..9e8902d4 100644 --- a/src/mentions/SingleMention.ts +++ b/src/mentions/SingleMention.ts @@ -26,11 +26,13 @@ export class SingleMention extends Mention { const exception = err.response; if ( exception.status === 404 ) { - errorMessage = `${ this.ticket } doesn't seem to exist. (error code ${ exception.status })`; + errorMessage = `${ this.ticket } doesn't seem to exist.`; } else if ( exception.status === 401 ) { - errorMessage = `${ this.ticket } is private or has been deleted. (error code ${ exception.status })`; - } else { - errorMessage += ` (error code ${ exception.status })`; + errorMessage = `${ this.ticket } is private or has been deleted.`; + } else if ( exception?.data?.errorMessages ) { + for ( const msg of exception.data.errorMessages ) { + errorMessage += `\n${ msg }`; + } } } @@ -38,9 +40,7 @@ export class SingleMention extends Mention { } if ( !ticketResult.fields ) { - Mention.logger.error( 'Error: no fields returned by JIRA' ); - - throw 'An error occurred while retrieving this ticket: No fields were returned by the JIRA API.'; + throw new Error( 'No fields were returned by the JIRA API.' ); } let status = ticketResult.fields.status.name; From 08bccffbc06c6e261bd6e8aa706fea9345e45312 Mon Sep 17 00:00:00 2001 From: violine1101 Date: Thu, 6 Aug 2020 15:26:43 +0200 Subject: [PATCH 4/8] Change log level for errors triggered by mentions --- src/commands/MentionCommand.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/MentionCommand.ts b/src/commands/MentionCommand.ts index 758a0968..fbdbc16e 100644 --- a/src/commands/MentionCommand.ts +++ b/src/commands/MentionCommand.ts @@ -45,7 +45,7 @@ export default class MentionCommand extends Command { embed = await mention.getEmbed(); } catch ( jiraError ) { try { - Command.logger.error( jiraError ); + Command.logger.warn( jiraError.message ); await message.channel.send( '❌ ' + jiraError.message ); } catch ( discordError ) { Command.logger.error( discordError ); From 617ef0c433ba694279b17fadee30edb20947d736 Mon Sep 17 00:00:00 2001 From: violine1101 Date: Fri, 7 Aug 2020 21:57:46 +0200 Subject: [PATCH 5/8] Update dependencies --- package-lock.json | 116 ++++++++++++++++++++++++---------------------- package.json | 12 ++--- 2 files changed, 67 insertions(+), 61 deletions(-) diff --git a/package-lock.json b/package-lock.json index 61ef2f18..8a46b12d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,9 +93,9 @@ } }, "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, "@types/mime": { @@ -104,9 +104,9 @@ "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" }, "@types/node": { - "version": "12.12.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz", - "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==" + "version": "12.12.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.54.tgz", + "integrity": "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==" }, "@types/node-fetch": { "version": "2.5.7", @@ -151,45 +151,45 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.27.0.tgz", - "integrity": "sha512-/my+vVHRN7zYgcp0n4z5A6HAK7bvKGBiswaM5zIlOQczsxj/aiD7RcgD+dvVFuwFaGh5+kM7XA6Q6PN0bvb1tw==", + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.27.0", + "@typescript-eslint/experimental-utils": "2.34.0", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", "tsutils": "^3.17.1" } }, "@typescript-eslint/experimental-utils": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz", - "integrity": "sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw==", + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.27.0", + "@typescript-eslint/typescript-estree": "2.34.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.27.0.tgz", - "integrity": "sha512-HFUXZY+EdwrJXZo31DW4IS1ujQW3krzlRjBrFRrJcMDh0zCu107/nRfhk/uBasO8m0NVDbBF5WZKcIUMRO7vPg==", + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.27.0", - "@typescript-eslint/typescript-estree": "2.27.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz", - "integrity": "sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg==", + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -197,8 +197,16 @@ "glob": "^7.1.6", "is-glob": "^4.0.1", "lodash": "^4.17.15", - "semver": "^6.3.0", + "semver": "^7.3.2", "tsutils": "^3.17.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } } }, "acorn": { @@ -282,6 +290,14 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atlassian-jwt": { + "version": "git+https://github.com/MrRefactoring/atlassian-jwt.git#2653d31d97559f25b23e6e77f7ea817af8aa58c4", + "from": "git+https://github.com/MrRefactoring/atlassian-jwt.git#dist", + "requires": { + "@types/express": "^4.17.2", + "jsuri": "^1.3.1" + } + }, "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", @@ -534,9 +550,9 @@ } }, "eslint-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", - "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -743,9 +759,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "has-flag": { "version": "3.0.0", @@ -916,22 +932,12 @@ "dev": true }, "jira.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jira.js/-/jira.js-1.6.0.tgz", - "integrity": "sha512-7GFqmZveBWbFgN5N+/7uFJBOTe44Md59YKGWHte6pnA83rnGnEnU2kVOEnOwupr1Uauwh72gFmeMHlIP0M82BQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/jira.js/-/jira.js-1.6.1.tgz", + "integrity": "sha512-hLwbVVpJ/WJuaN9qH96WE4L7NaZVLHEQJBA/M/3iFzI82MGjMYRZIjjRpzjtlCSPoOWGDanjOqkOJzhrnFiX2Q==", "requires": { "atlassian-jwt": "git+https://github.com/MrRefactoring/atlassian-jwt.git#dist", "axios": "^0.19.2" - }, - "dependencies": { - "atlassian-jwt": { - "version": "git+https://github.com/MrRefactoring/atlassian-jwt.git#2653d31d97559f25b23e6e77f7ea817af8aa58c4", - "from": "git+https://github.com/MrRefactoring/atlassian-jwt.git#dist", - "requires": { - "@types/express": "^4.17.2", - "jsuri": "^1.3.1" - } - } } }, "js-tokens": { @@ -999,15 +1005,15 @@ "dev": true }, "log4js": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.1.2.tgz", - "integrity": "sha512-knS4Y30pC1e0n7rfx3VxcLOdBCsEo0o6/C7PVTGxdVK+5b1TYOSGQPn9FDcrhkoQBV29qwmA2mtkznPAQKnxQg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", "requires": { "date-format": "^3.0.0", "debug": "^4.1.1", "flatted": "^2.0.1", "rfdc": "^1.1.4", - "streamroller": "^2.2.3" + "streamroller": "^2.2.4" } }, "long": { @@ -1060,9 +1066,9 @@ } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" }, "ms": { "version": "2.1.2", @@ -1291,9 +1297,9 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "streamroller": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.3.tgz", - "integrity": "sha512-AegmvQsscTRhHVO46PhCDerjIpxi7E+d2GxgUDu+nzw/HuLnUdxHWr6WQ+mVn/4iJgMKKFFdiUwFcFRDvcjCtw==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", "requires": { "date-format": "^2.1.0", "debug": "^4.1.1", @@ -1455,9 +1461,9 @@ "dev": true }, "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==" + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" }, "universalify": { "version": "0.1.2", diff --git a/package.json b/package.json index 8aac312f..adf0f2ec 100644 --- a/package.json +++ b/package.json @@ -22,18 +22,18 @@ "discord.js": "^11.6.4", "jira.js": "^1.6.0", "js-yaml": "^3.14.0", - "log4js": "^6.1.2", - "moment": "^2.24.0", + "log4js": "^6.3.0", + "moment": "^2.27.0", "node-fetch": "^2.6.0", - "typescript": "^3.8.3" + "typescript": "^3.9.7" }, "devDependencies": { "@types/config": "0.0.36", "@types/emoji-regex": "^8.0.0", - "@types/node": "^12.12.35", + "@types/node": "^12.12.54", "@types/node-fetch": "^2.5.7", - "@typescript-eslint/eslint-plugin": "^2.27.0", - "@typescript-eslint/parser": "^2.27.0", + "@typescript-eslint/eslint-plugin": "^2.34.0", + "@typescript-eslint/parser": "^2.34.0", "eslint": "^6.8.0" } } From bf9f4172595e14bc6be09e890e298473b1a09b54 Mon Sep 17 00:00:00 2001 From: violine1101 Date: Sun, 10 Jan 2021 18:32:25 +0100 Subject: [PATCH 6/8] Update JIRA client in RequestEventHandler --- src/events/request/RequestEventHandler.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/events/request/RequestEventHandler.ts b/src/events/request/RequestEventHandler.ts index 7006e2a1..268382f8 100644 --- a/src/events/request/RequestEventHandler.ts +++ b/src/events/request/RequestEventHandler.ts @@ -2,15 +2,14 @@ import { Message, MessageEmbed, TextChannel } from 'discord.js'; import * as log4js from 'log4js'; import BotConfig, { PrependResponseMessageType } from '../../BotConfig'; import MentionCommand from '../../commands/MentionCommand'; +import MojiraBot from '../../MojiraBot'; import DiscordUtil from '../../util/DiscordUtil'; import { ReactionsUtil } from '../../util/ReactionsUtil'; import { RequestsUtil } from '../../util/RequestsUtil'; import EventHandler from '../EventHandler'; -import JiraClient from 'jira-connector'; export default class RequestEventHandler implements EventHandler<'message'> { public readonly eventName = 'message'; - private jira: JiraClient; private logger = log4js.getLogger( 'RequestEventHandler' ); @@ -21,11 +20,6 @@ export default class RequestEventHandler implements EventHandler<'message'> { constructor( internalChannels: Map ) { this.internalChannels = internalChannels; - - this.jira = new JiraClient( { - host: 'bugs.mojang.com', - strictSSL: true, - } ); } // This syntax is used to ensure that `this` refers to the `RequestEventHandler` object @@ -67,7 +61,7 @@ export default class RequestEventHandler implements EventHandler<'message'> { if ( BotConfig.request.invalidRequestJql ) { const tickets = this.getTickets( origin.content ); - const searchResults = await this.jira.search.search( { + const searchResults = await MojiraBot.jira.issueSearch.searchForIssuesUsingJqlGet( { jql: `(${ BotConfig.request.invalidRequestJql }) AND key in (${ tickets.join( ',' ) })`, fields: ['key'], } ); From 5bd5a9a241b8576c95ac50e91db3131b792bdd85 Mon Sep 17 00:00:00 2001 From: violine1101 Date: Sun, 10 Jan 2021 18:32:53 +0100 Subject: [PATCH 7/8] Ping user if JIRA returns an error --- src/commands/MentionCommand.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/MentionCommand.ts b/src/commands/MentionCommand.ts index 9987647c..382ca739 100644 --- a/src/commands/MentionCommand.ts +++ b/src/commands/MentionCommand.ts @@ -51,8 +51,8 @@ export default class MentionCommand extends Command { embed = await mention.getEmbed(); } catch ( jiraError ) { try { - Command.logger.warn( jiraError.message ); - await message.channel.send( '❌ ' + jiraError.message ); + Command.logger.info( `Error when retreiving issue information: ${ jiraError.message }` ); + await message.channel.send( `${ message.author } ${ jiraError.message }` ); } catch ( discordError ) { Command.logger.error( discordError ); } From 8525f85b00fee5b1c308c4b3043e285e14384a74 Mon Sep 17 00:00:00 2001 From: violine1101 Date: Sun, 10 Jan 2021 18:35:52 +0100 Subject: [PATCH 8/8] Disable sourceMap --- tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index c51f622f..58afe590 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,6 @@ "module": "commonjs", "lib": ["es2016"], "outDir": "./bin", - "sourceMap": true, "esModuleInterop": true }, "exclude": [