@clickview/ship-it 0.0.48 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/config.json +5 -0
  3. package/dist/W2/W2 Notes Audit.csv +57 -0
  4. package/lib/config.json +5 -0
  5. package/lib/src/api-clients/git-lab/GitLabApiClient.js +1 -1
  6. package/lib/src/api-clients/index.js +1 -0
  7. package/lib/src/api-clients/jira/JiraApiClient.js +105 -0
  8. package/lib/src/api-clients/slack/SlackApiClient.js +27 -25
  9. package/lib/src/api-clients/team-city/TeamCityApiClient.js +1 -1
  10. package/lib/src/api-clients/trello/TrelloApiClient.js +1 -1
  11. package/lib/src/commands/BumpPackagesCommand.js +1 -1
  12. package/lib/src/commands/CheckReleaseReadyCommand.js +1 -1
  13. package/lib/src/commands/ConfigureProjectsCommand.js +1 -1
  14. package/lib/src/commands/CreateBranchCommand.js +1 -1
  15. package/lib/src/commands/CreateHotfixCommand.js +1 -1
  16. package/lib/src/commands/CreateMergeRequestCommand.js +1 -1
  17. package/lib/src/commands/CreateNotesAuditCommand.js +1 -1
  18. package/lib/src/commands/CreateReleaseNotesCommand.js +1 -1
  19. package/lib/src/commands/CreateTrelloCardsCommand.js +1 -1
  20. package/lib/src/commands/InstallPackagesCommand.js +1 -1
  21. package/lib/src/commands/JiraTicketsStatusCommand.js +33 -0
  22. package/lib/src/commands/ListProjectsCommand.js +1 -1
  23. package/lib/src/commands/ReleaseCommand.js +11 -9
  24. package/lib/src/commands/StartProjectBuildsCommand.js +1 -1
  25. package/lib/src/commands/StatusCommand.js +1 -1
  26. package/lib/src/commands/TagMasterCommand.js +1 -1
  27. package/lib/src/commands/ToolingReleaseCommand.js +1 -1
  28. package/lib/src/commands/UpdateDescriptionCommand.js +1 -1
  29. package/lib/src/commands/ValidateMergeRequestCommand.js +1 -1
  30. package/lib/src/commands/VersionCommand.js +1 -1
  31. package/lib/src/commands/index.js +2 -0
  32. package/lib/src/constants/CommandTypeMapping.js +2 -0
  33. package/lib/src/constants/SlackUserEmailList.js +8 -0
  34. package/lib/src/inversify.config.js +7 -0
  35. package/lib/src/services/GitLabService.js +9 -4
  36. package/lib/src/services/JiraService.js +34 -0
  37. package/lib/src/services/SlackService.js +3 -7
  38. package/lib/src/services/TrelloService.js +1 -1
  39. package/lib/src/services/index.js +1 -0
  40. package/lib/src/startup/AddMilestoneCommand.js +1 -1
  41. package/lib/src/startup/GetAction.js +1 -1
  42. package/lib/src/startup/SetupCommands.js +3 -1
  43. package/lib/src/tasks/BumpPackagesTask.js +1 -1
  44. package/lib/src/tasks/BumpVersionTxtTask.js +1 -1
  45. package/lib/src/tasks/ChangeMilestoneTask.js +1 -1
  46. package/lib/src/tasks/CheckReleaseReadyTask.js +72 -123
  47. package/lib/src/tasks/CreateBranchTask.js +1 -1
  48. package/lib/src/tasks/CreateHotfixTask.js +1 -1
  49. package/lib/src/tasks/CreateMergeRequestTask.js +1 -1
  50. package/lib/src/tasks/CreateNotesAuditTask.js +40 -16
  51. package/lib/src/tasks/CreateReleaseNotesTask.js +1 -1
  52. package/lib/src/tasks/InstallPackagesTask.js +1 -1
  53. package/lib/src/tasks/JiraTicketsStatusTask.js +180 -0
  54. package/lib/src/tasks/ListProjectsTask.js +1 -1
  55. package/lib/src/tasks/PopulateTrelloBoardTask.js +1 -1
  56. package/lib/src/tasks/StartMonorepoBuildTask.js +1 -1
  57. package/lib/src/tasks/StartProjectBuildsTask.js +1 -1
  58. package/lib/src/tasks/TagMasterTask.js +1 -1
  59. package/lib/src/tasks/UpdateMergeRequestDescriptionTask.js +1 -1
  60. package/lib/src/tasks/ValidateCommitsTask.js +1 -1
  61. package/lib/src/tasks/ValidateDescriptionsTask.js +1 -1
  62. package/lib/src/tasks/ValidateMergeRequestTask.js +1 -1
  63. package/lib/src/tasks/ValidateTask.js +23 -20
  64. package/lib/src/tasks/VersionTask.js +1 -1
  65. package/lib/src/tasks/configure-projects/AddApprovalRulesTask.js +1 -1
  66. package/lib/src/tasks/configure-projects/CreateToolingBranchTask.js +1 -1
  67. package/lib/src/tasks/configure-projects/EnsureApprovalRulesTask.js +1 -1
  68. package/lib/src/tasks/configure-projects/primitives/BaseConfigureProjectsTask.js +2 -2
  69. package/lib/src/tasks/index.js +2 -0
  70. package/lib/src/types.js +7 -0
  71. package/lib/src/utils/Descriptions.js +38 -10
  72. package/package.json +6 -5
@@ -0,0 +1,10 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(grep -r release /Users/varun.singh/Desktop/cv-projects/ship-it --include=*.ts --include=*.js)",
5
+ "Bash(ls /Users/varun.singh/Desktop/cv-projects/ship-it/config*)",
6
+ "Bash(ls /Users/varun.singh/Desktop/cv-projects/ship-it/*.json)",
7
+ "Bash(grep -E \"^\\(axios|node-fetch|got|undici\\)$\")"
8
+ ]
9
+ }
10
+ }
package/config.json CHANGED
@@ -16,5 +16,10 @@
16
16
  "apiKey": "6e887685d44e94ae9a680c010c4b622d",
17
17
  "apiToken": "ATTA558c8969ce04b46fb9c9d6f645aa51be7f1c9dbb9b6f5f6f85ae6da2a209c1f39AAC612F",
18
18
  "boardId": "3edi3xiO"
19
+ },
20
+ "jira": {
21
+ "url": "https://clickview.atlassian.net",
22
+ "email": "zoomroomadmin@clickview.com.au",
23
+ "apiToken": "ATATT3xFfGF0BZem0LYP2b557qk190iNVjwJnFSHfW8lnTHMKwrrqWo3t2O3tXG6UUh7U4IYpoIdGhcU_mGmzD1ku8_pzKExw18JgNJpuF15bYBZX8opwnSnpEtwXSgnP5DA2I1idIYIslSwCQh5yOvGww6Po_l0BnnFEnkxBXnYZa5LjEvVEhs=DD045334"
19
24
  }
20
25
  }
@@ -0,0 +1,57 @@
1
+ projectName,mrTitle,mrAuthor,mrAssignee,mrUrl,notes
2
+ clickview,Lite: Fix classroom avatars in the insights heatmap,Shale Kuzmanovski,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6273,"# Lite
3
+ - Fix classroom avatars in the insights heatmap. Partially addresses INBOX-11438."
4
+ clickview,Player: Fix missing qualities,Shale Kuzmanovski,Cameron Hill,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6271,"# Player
5
+ - Fixed a bug that was preventing the last quality level from showing. Fixes TEST-357."
6
+ clickview,Lite - Temporary use hardcoded presentation cover,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6262,"# Lite
7
+ - Update cover for US High presentation to use photo-style cover when the customer has the preferred theme set to be `photo`.
8
+ - ![Screenshot_2026-04-29_at_3.31.50_PM](/uploads/4811491aea5423b3ae1528ee8d81a759/Screenshot_2026-04-29_at_3.31.50_PM.png)
9
+ - ![image](/uploads/8ef383f6aebef326f323a2fc4fa1c630/image.png)"
10
+ clickview,Curator: Displays presentation last updated information,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6258,"# Curator
11
+ * Displays the last updated time for presentations in the list view, providing users with a clear indicator of a presentation's freshness. Hovering over the time will show the exact date. Implements CC-1351."
12
+ clickview,Fix - Update video status OGQL when fetching playlist,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6256,"# Lite
13
+ * Fix an issue when the count on the playlist tile on `/playlists` does not match the number of videos on the playlist page. Fixes INBOX-11120"
14
+ clickview,Lite: Search - Fixes search-in tags flakey visibility,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6244,"# Lite
15
+ * Users will experience more reliable display of the ""Search in X"" tag when navigating to scoped search results, preventing instances where the tag might incorrectly disappear."
16
+ clickview,Curator - Support remove video banner for a content partner,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6240,"# Curator
17
+ - Now you can remove the video banner for a content partner. And the Replace video button icon is replaced with an upload icon.
18
+ - ![ScreenRecording2026-04-22at3.56.26PM-ezgif.com-video-to-gif-converter](/uploads/5ac25bebeed4639d5c34e593c90bad25/ScreenRecording2026-04-22at3.56.26PM-ezgif.com-video-to-gif-converter.gif)"
19
+ clickview,Curator: Channels - Videos view,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6238,"# Curator
20
+ * Add a tab in manage channels where users can view all videos for that channel. Implements CC-1358.
21
+ * Ability to add new videos to the channel
22
+ * Ability to delete video(s) in the channel"
23
+ clickview,Lite: Tutorial Videos,Vincent Sit,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6237,"# Lite
24
+ This change should only be visible to users who are new to ClickView (accounts created less than 14 days ago). They will see an additional bar in the dashboard page that features a series of tutorial videos from ClickView. Implements LTE-3240
25
+ Before: ![image](/uploads/d1def3f01d43d9296f45f423d2985db2/image.png)
26
+ After: ↵ ↵ ![image.png](/uploads/6e392e736c60d26a59aaa953e03b68ef/image.png)
27
+ The user can dismiss the tutorial video panel through the 'Hide' text button on the top right hand corner. Otherwise, once 14 days have lapsed since account creation, the panel will not be displayed."
28
+ clickview,Shared - Fix visible svg icon id collision issue,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6229,"# Curator
29
+ - Fixed the visible-on and visible-off icons are not being shown correctly. Fixes INBOX-11338"
30
+ clickview,Lite - Fix playlist member count not matching issue,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6228,"# Lite
31
+ - Fix an issue when the count on the playlist tile on `/playlists` does not match the number of videos on the playlist page. Fixes INBOX-11120"
32
+ clickview,Improve the names generated from the anonymise name function,Cameron Hill,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6227,"# Shared
33
+ - Improve the names used for ""anonymise names"". Closes INBOX-10122"
34
+ clickview,Player - Extend volume slider hit area to cover the full hover zone,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6226,"# Player
35
+ - Increase the hit area for the player volume bar."
36
+ clickview,Lite: aligns classroom staff role pill design,Nischal Shrestha,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6224,"# Lite
37
+ * Updates the visual design of the ""Admin"" and ""Owner"" role pills displayed next to teacher names in the classroom management view. Fixes INBOX-9615.
38
+ | Before | After |
39
+ |--------|-------|
40
+ | ![image.png](/uploads/22e2f2dac34fc34d5b5d1188b5ee303a/image.png){width=1113 height=368} | ![image.png](/uploads/d4da6b2e47cbcf734168043b59001b19/image.png){width=1142 height=367} |"
41
+ clickview,Lite - Add theme setting,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6219,"# Lite
42
+ - Added new Appearance setting for admin and it's only for customer who has US high presentation.
43
+ - ![Screenshot 2026-04-15 at 3.49.28 PM.png](/uploads/e4b66779feb57ad252fcdc59de0710b8/Screenshot_2026-04-15_at_3.49.28_PM.png)
44
+ - Admin can toggle theme for topic assets in the Appearance setting page:
45
+ - ![Screenshot_2026-04-15_at_10.31.20_AM](/uploads/d677edda97011e72a2cb61b0b8f08900/Screenshot_2026-04-15_at_10.31.20_AM.png)"
46
+ clickview,Curator: Channels - Enables delete for read-only 'all videos' widget,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6218,"# Curator
47
+ * Users can now delete specific read-only widgets, such as 'all videos' widgets in channels, from their dashboards. Implements CC-1357."
48
+ clickview,Crm studio - IDP form update,Nan Chen,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6216,"# Curator
49
+ - Now in the IDP details section in the create IDP form, only the IDP name is required:
50
+ - ![image](/uploads/6f6b63caa5359e3be5d01cc3cd85352a/image.png)
51
+ - Removed the default value for the displayed name for Microsoft.
52
+ - ![image](/uploads/d17c0eee9dbcee01ae8c3cb47616fd6e/image.png)"
53
+ clickview,Lite - Fix player is rendered in hover mode on play page,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6214,"# Lite
54
+ * Fixes an issue when hovering on a pop-up video to preview the video, then clicking on the title in the pop-up card to go to the video play page. The play page is showing a non-interactive player. (no control bar)."
55
+ clickview,Lite: Channels - Enables parent editing for channels,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6211,"# Curator
56
+ * Users can now update the parent of an existing content partner, as the selection field is no longer disabled during the editing process. Implements CC-1356."
57
+ Master.Auth,Legacy saml check fixes,Cameron Hill,Kevin Wellalagodage,https://gitlab.cvinternal.net/clickview/back-end/Master.Auth/-/merge_requests/842,- Fix some SSO setups redirecting to the wrong SAML IDP on login. Fixes INBOX-11324
package/lib/config.json CHANGED
@@ -16,5 +16,10 @@
16
16
  "apiKey": "6e887685d44e94ae9a680c010c4b622d",
17
17
  "apiToken": "ATTA558c8969ce04b46fb9c9d6f645aa51be7f1c9dbb9b6f5f6f85ae6da2a209c1f39AAC612F",
18
18
  "boardId": "3edi3xiO"
19
+ },
20
+ "jira": {
21
+ "url": "https://clickview.atlassian.net",
22
+ "email": "zoomroomadmin@clickview.com.au",
23
+ "apiToken": "ATATT3xFfGF0BZem0LYP2b557qk190iNVjwJnFSHfW8lnTHMKwrrqWo3t2O3tXG6UUh7U4IYpoIdGhcU_mGmzD1ku8_pzKExw18JgNJpuF15bYBZX8opwnSnpEtwXSgnP5DA2I1idIYIslSwCQh5yOvGww6Po_l0BnnFEnkxBXnYZa5LjEvVEhs=DD045334"
19
24
  }
20
25
  }
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./git-lab/GitLabApiClient"), exports);
18
+ __exportStar(require("./jira/JiraApiClient"), exports);
18
19
  __exportStar(require("./team-city/TeamCityApiClient"), exports);
19
20
  __exportStar(require("./slack/SlackApiClient"), exports);
20
21
  __exportStar(require("./trello/TrelloApiClient"), exports);
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var __generator = (this && this.__generator) || function (thisArg, body) {
24
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
25
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
26
+ function verb(n) { return function (v) { return step([n, v]); }; }
27
+ function step(op) {
28
+ if (f) throw new TypeError("Generator is already executing.");
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
+ if (y = 0, t) op = [op[0] & 2, t.value];
32
+ switch (op[0]) {
33
+ case 0: case 1: t = op; break;
34
+ case 4: _.label++; return { value: op[1], done: false };
35
+ case 5: _.label++; y = op[1]; op = [0]; continue;
36
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
37
+ default:
38
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
39
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
40
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
41
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
42
+ if (t[2]) _.ops.pop();
43
+ _.trys.pop(); continue;
44
+ }
45
+ op = body.call(thisArg, _);
46
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
47
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
48
+ }
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.JiraApiClient = void 0;
52
+ require("reflect-metadata");
53
+ var inversify_1 = require("inversify");
54
+ var jira_js_1 = require("jira.js");
55
+ var types_1 = require("../../types");
56
+ var JiraApiClient = /** @class */ (function () {
57
+ function JiraApiClient(config) {
58
+ this.config = config;
59
+ this.client = new jira_js_1.Version3Client({
60
+ host: config.url,
61
+ authentication: {
62
+ basic: {
63
+ email: config.email,
64
+ apiToken: config.apiToken
65
+ }
66
+ }
67
+ });
68
+ }
69
+ JiraApiClient.prototype.searchIssues = function (jql) {
70
+ var _a;
71
+ return __awaiter(this, void 0, void 0, function () {
72
+ var result;
73
+ var _this = this;
74
+ return __generator(this, function (_b) {
75
+ switch (_b.label) {
76
+ case 0: return [4 /*yield*/, this.client.issueSearch.searchForIssuesUsingJqlEnhancedSearchPost({
77
+ jql: jql,
78
+ fields: ['summary', 'status', 'assignee'],
79
+ maxResults: 100
80
+ })];
81
+ case 1:
82
+ result = _b.sent();
83
+ return [2 /*return*/, ((_a = result.issues) !== null && _a !== void 0 ? _a : []).map(function (issue) {
84
+ var _a, _b, _c, _d, _e, _f;
85
+ return ({
86
+ key: issue.key,
87
+ summary: issue.fields.summary,
88
+ status: (_b = (_a = issue.fields.status) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'Unknown',
89
+ assigneeDisplayName: (_d = (_c = issue.fields.assignee) === null || _c === void 0 ? void 0 : _c.displayName) !== null && _d !== void 0 ? _d : null,
90
+ assigneeEmail: (_f = (_e = issue.fields.assignee) === null || _e === void 0 ? void 0 : _e.emailAddress) !== null && _f !== void 0 ? _f : null,
91
+ url: "".concat(_this.config.url, "/browse/").concat(issue.key)
92
+ });
93
+ })];
94
+ }
95
+ });
96
+ });
97
+ };
98
+ JiraApiClient = __decorate([
99
+ (0, inversify_1.injectable)(),
100
+ __param(0, (0, inversify_1.inject)(types_1.MISC.JiraConfig)),
101
+ __metadata("design:paramtypes", [Object])
102
+ ], JiraApiClient);
103
+ return JiraApiClient;
104
+ }());
105
+ exports.JiraApiClient = JiraApiClient;
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -108,17 +108,18 @@ var SlackApiClient = /** @class */ (function () {
108
108
  });
109
109
  });
110
110
  };
111
- SlackApiClient.prototype.replyInThread = function (message, threadTs) {
111
+ SlackApiClient.prototype.replyInThread = function (message, threadTs, sendAsFile) {
112
112
  return __awaiter(this, void 0, void 0, function () {
113
- var response, uploadResponse, error_3;
113
+ var formatedMessage, response, uploadResponse, error_3;
114
114
  return __generator(this, function (_a) {
115
115
  switch (_a.label) {
116
116
  case 0:
117
117
  _a.trys.push([0, 4, , 5]);
118
- if (!(message.length <= MAX_MESSAGE_LENGTH)) return [3 /*break*/, 2];
118
+ if (!(message.length <= MAX_MESSAGE_LENGTH && !sendAsFile)) return [3 /*break*/, 2];
119
+ formatedMessage = this.createTextFileMessage(message);
119
120
  return [4 /*yield*/, this.client.chat.postMessage({
120
121
  channel: this.config.channelId,
121
- text: message,
122
+ text: formatedMessage,
122
123
  thread_ts: threadTs,
123
124
  })];
124
125
  case 1:
@@ -127,7 +128,7 @@ var SlackApiClient = /** @class */ (function () {
127
128
  case 2: return [4 /*yield*/, this.client.files.uploadV2({
128
129
  channel_id: this.config.channelId,
129
130
  content: message,
130
- filename: 'statusData.txt',
131
+ filename: 'releaseData.md',
131
132
  thread_ts: threadTs,
132
133
  })];
133
134
  case 3:
@@ -170,32 +171,33 @@ var SlackApiClient = /** @class */ (function () {
170
171
  });
171
172
  };
172
173
  SlackApiClient.prototype.getUsersList = function (emailIds) {
174
+ var _a, _b, _c;
173
175
  return __awaiter(this, void 0, void 0, function () {
174
- var promises, results, error_5;
176
+ var results, userIds, i, result;
175
177
  var _this = this;
176
- return __generator(this, function (_a) {
177
- switch (_a.label) {
178
- case 0:
179
- _a.trys.push([0, 2, , 3]);
180
- promises = emailIds.map(function (email) { return _this.client.users.lookupByEmail({ email: email }); });
181
- return [4 /*yield*/, Promise.all(promises)];
178
+ return __generator(this, function (_d) {
179
+ switch (_d.label) {
180
+ case 0: return [4 /*yield*/, Promise.allSettled(emailIds.map(function (email) { return _this.client.users.lookupByEmail({ email: email }); }))];
182
181
  case 1:
183
- results = _a.sent();
184
- return [2 /*return*/, results.map(function (result) {
185
- var _a, _b;
186
- if (!result.ok || !((_a = result.user) === null || _a === void 0 ? void 0 : _a.id))
187
- throw new Error("Failed to fetch usernames. Slack error message: ".concat(result.error));
188
- return (_b = result.user) === null || _b === void 0 ? void 0 : _b.id;
189
- })];
190
- case 2:
191
- error_5 = _a.sent();
192
- utils_1.Logger.logError('Error:', error_5.message);
193
- throw error_5;
194
- case 3: return [2 /*return*/];
182
+ results = _d.sent();
183
+ userIds = [];
184
+ for (i = 0; i < results.length; i++) {
185
+ result = results[i];
186
+ if (result.status === 'rejected') {
187
+ utils_1.Logger.logError("Error looking up Slack user for ".concat(emailIds[i], ":"), (_b = (_a = result.reason) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : result.reason);
188
+ continue;
189
+ }
190
+ if (result.value.ok && ((_c = result.value.user) === null || _c === void 0 ? void 0 : _c.id))
191
+ userIds.push(result.value.user.id);
192
+ }
193
+ return [2 /*return*/, userIds];
195
194
  }
196
195
  });
197
196
  });
198
197
  };
198
+ SlackApiClient.prototype.createTextFileMessage = function (fileContent) {
199
+ return "```\n".concat(fileContent, "\n```");
200
+ };
199
201
  SlackApiClient = __decorate([
200
202
  (0, inversify_1.injectable)(),
201
203
  __param(0, (0, inversify_1.inject)(types_1.MISC.SlackConfig)),
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
40
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
42
  if (y = 0, t) op = [op[0] & 2, t.value];
43
43
  switch (op[0]) {
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
40
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
42
  if (y = 0, t) op = [op[0] & 2, t.value];
43
43
  switch (op[0]) {
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
40
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
42
  if (y = 0, t) op = [op[0] & 2, t.value];
43
43
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.JiraTicketsStatusCommand = void 0;
16
+ require("reflect-metadata");
17
+ var inversify_1 = require("inversify");
18
+ var types_1 = require("../types");
19
+ var JiraTicketsStatusCommand = /** @class */ (function () {
20
+ function JiraTicketsStatusCommand(jiraTicketsStatusTask) {
21
+ this.jiraTicketsStatusTask = jiraTicketsStatusTask;
22
+ }
23
+ JiraTicketsStatusCommand.prototype.run = function (options) {
24
+ return this.jiraTicketsStatusTask.run(options);
25
+ };
26
+ JiraTicketsStatusCommand = __decorate([
27
+ (0, inversify_1.injectable)(),
28
+ __param(0, (0, inversify_1.inject)(types_1.TASKS.JiraTicketsStatusTask)),
29
+ __metadata("design:paramtypes", [Object])
30
+ ], JiraTicketsStatusCommand);
31
+ return JiraTicketsStatusCommand;
32
+ }());
33
+ exports.JiraTicketsStatusCommand = JiraTicketsStatusCommand;
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
40
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
42
  if (y = 0, t) op = [op[0] & 2, t.value];
43
43
  switch (op[0]) {
@@ -96,33 +96,35 @@ var ReleaseCommand = /** @class */ (function () {
96
96
  cont = _a.sent();
97
97
  if (!cont)
98
98
  return [2 /*return*/, false];
99
- return [4 /*yield*/, this.ensureApprovalRulesTask.run(options)];
99
+ return [4 /*yield*/, this.validateCommitsTask.run(options)];
100
100
  case 4:
101
- // cont = await this.validateCommitsTask.run(options);
102
- // if (!cont)
103
- // return false;
104
101
  cont = _a.sent();
105
102
  if (!cont)
106
103
  return [2 /*return*/, false];
107
- return [4 /*yield*/, this.createBranchTask.run(options)];
104
+ return [4 /*yield*/, this.ensureApprovalRulesTask.run(options)];
108
105
  case 5:
109
106
  cont = _a.sent();
110
107
  if (!cont)
111
108
  return [2 /*return*/, false];
112
- return [4 /*yield*/, this.bumpVersionTxtTask.run(options)];
109
+ return [4 /*yield*/, this.createBranchTask.run(options)];
113
110
  case 6:
114
111
  cont = _a.sent();
115
112
  if (!cont)
116
113
  return [2 /*return*/, false];
117
- return [4 /*yield*/, this.createMergeRequestTask.run(options)];
114
+ return [4 /*yield*/, this.bumpVersionTxtTask.run(options)];
118
115
  case 7:
116
+ cont = _a.sent();
117
+ if (!cont)
118
+ return [2 /*return*/, false];
119
+ return [4 /*yield*/, this.createMergeRequestTask.run(options)];
120
+ case 8:
119
121
  cont = _a.sent();
120
122
  if (!cont)
121
123
  return [2 /*return*/, false];
122
124
  if (!options.triggerMonorepoBuild)
123
125
  return [2 /*return*/, true];
124
126
  return [4 /*yield*/, this.startMonorepoBuildTask.run(options)];
125
- case 8: return [2 /*return*/, _a.sent()];
127
+ case 9: return [2 /*return*/, _a.sent()];
126
128
  }
127
129
  });
128
130
  });
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
40
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
42
  if (y = 0, t) op = [op[0] & 2, t.value];
43
43
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
40
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
42
  if (y = 0, t) op = [op[0] & 2, t.value];
43
43
  switch (op[0]) {
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  function verb(n) { return function (v) { return step([n, v]); }; }
38
38
  function step(op) {
39
39
  if (f) throw new TypeError("Generator is already executing.");
40
- while (_) try {
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
41
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
42
  if (y = 0, t) op = [op[0] & 2, t.value];
43
43
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {
@@ -26,7 +26,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
26
26
  function verb(n) { return function (v) { return step([n, v]); }; }
27
27
  function step(op) {
28
28
  if (f) throw new TypeError("Generator is already executing.");
29
- while (_) try {
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
30
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
31
  if (y = 0, t) op = [op[0] & 2, t.value];
32
32
  switch (op[0]) {