@clickview/ship-it 0.0.25 → 0.0.27-dev.0

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 (172) hide show
  1. package/Dockerfile +33 -0
  2. package/README.md +48 -48
  3. package/config.json +19 -10
  4. package/dist/F1/Analytics Web.md +8 -0
  5. package/dist/F1/AutoCaptions.md +30 -0
  6. package/dist/F1/Classroom.Api.md +23 -0
  7. package/dist/F1/ClickView Online.md +17 -0
  8. package/dist/F1/ClickView.Curator.md +100 -0
  9. package/dist/F1/ClickView.EmailService.md +53 -0
  10. package/dist/F1/ClickView.OnlineApi.md +13 -0
  11. package/dist/F1/Clients.md +19 -0
  12. package/dist/F1/Domain.Api.md +23 -0
  13. package/dist/F1/Exchange.Web.md +8 -0
  14. package/dist/F1/Image.Api.md +8 -0
  15. package/dist/F1/Integrations.Api.md +23 -0
  16. package/dist/F1/Krakend.md +8 -0
  17. package/dist/F1/Library Editor.md +0 -0
  18. package/dist/F1/Lite.md +60 -0
  19. package/dist/F1/Master.Api.md +58 -0
  20. package/dist/F1/Master.Auth.md +22 -0
  21. package/dist/F1/Objects.Api.md +12 -0
  22. package/dist/F1/Permissions.Api.md +12 -0
  23. package/dist/F1/RealtimeSalesforceSync.md +14 -0
  24. package/dist/F1/Release Notes.md +990 -0
  25. package/dist/F1/Search.Api.md +12 -0
  26. package/dist/F1/StreamableLearning.Web.md +35 -0
  27. package/dist/F1/Users.Api.md +13 -0
  28. package/dist/F1/VideoProcessorService.md +23 -0
  29. package/dist/F1/clickview.md +321 -0
  30. package/dist/F2/Analytics Web.md +7 -0
  31. package/dist/F2/Batch.Api.md +27 -0
  32. package/dist/F2/ClickView Online.md +12 -0
  33. package/dist/F2/ClickView.Curator.md +166 -0
  34. package/dist/F2/Clients.md +14 -0
  35. package/dist/F2/CurriculumIngestion.Api.md +13 -0
  36. package/dist/F2/Discover.Api.md +64 -0
  37. package/dist/F2/Domain.Api.md +16 -0
  38. package/dist/F2/Exchange.Web.md +7 -0
  39. package/dist/F2/Krakend.md +12 -0
  40. package/dist/F2/Library Editor.md +11 -0
  41. package/dist/F2/Lite.md +30 -0
  42. package/dist/F2/Objects.Api.md +12 -0
  43. package/dist/F2/Release Notes.md +759 -0
  44. package/dist/F2/Search.Api.md +30 -0
  45. package/dist/F2/Share.Api.md +12 -0
  46. package/dist/F2/StreamableLearning.Web.md +14 -0
  47. package/dist/F2/Subjects.API.md +12 -0
  48. package/dist/F2/Tv.Web.md +8 -0
  49. package/dist/F2/Users.Api.md +21 -0
  50. package/dist/F2/clickview.md +200 -0
  51. package/dist/F2/shortcode-api.md +8 -0
  52. package/dist/F3.1/Analytics Web.md +8 -0
  53. package/dist/F3.1/ClickView.Curator.md +14 -0
  54. package/dist/F3.1/Discover.Api.md +14 -0
  55. package/dist/F3.1/Domain.Api.md +7 -0
  56. package/dist/F3.1/Exchange.Web.md +8 -0
  57. package/dist/F3.1/Library Editor.md +8 -0
  58. package/dist/F3.1/Lite.md +8 -0
  59. package/dist/F3.1/Objects.Api.md +7 -0
  60. package/dist/F3.1/Release Notes.md +207 -0
  61. package/dist/F3.1/Search.Api.md +14 -0
  62. package/dist/F3.1/Share.Api.md +10 -0
  63. package/dist/F3.1/Subjects.API.md +35 -0
  64. package/dist/F3.1/VideoViews.Api.md +7 -0
  65. package/dist/F3.1/clickview.md +28 -0
  66. package/lib/config.json +20 -11
  67. package/lib/src/api-clients/git-lab/GitLabApiClient.js +423 -404
  68. package/lib/src/api-clients/git-lab/GitLabMapper.js +82 -81
  69. package/lib/src/api-clients/index.js +20 -18
  70. package/lib/src/api-clients/slack/SlackApiClient.js +206 -0
  71. package/lib/src/api-clients/team-city/TeamCityApiClient.js +100 -100
  72. package/lib/src/api-clients/trello/TrelloApiClient.js +145 -0
  73. package/lib/src/commands/BumpPackagesCommand.js +84 -84
  74. package/lib/src/commands/CreateBranchCommand.js +100 -100
  75. package/lib/src/commands/CreateMergeRequestCommand.js +107 -107
  76. package/lib/src/commands/CreateReleaseNotesCommand.js +95 -84
  77. package/lib/src/commands/CreateTestingNotesCommand.js +84 -84
  78. package/lib/src/commands/CreateTrelloCardsCommand.js +77 -0
  79. package/lib/src/commands/InstallPackagesCommand.js +76 -76
  80. package/lib/src/commands/ListProjectsCommand.js +76 -76
  81. package/lib/src/commands/ReleaseCommand.js +117 -129
  82. package/lib/src/commands/StartConsumingProjectBuildsCommand.js +76 -76
  83. package/lib/src/commands/StartProjectBuildsCommand.js +76 -76
  84. package/lib/src/commands/StatusCommand.js +88 -88
  85. package/lib/src/commands/TagMasterCommand.js +76 -76
  86. package/lib/src/commands/ValidateMergeRequestCommand.js +76 -76
  87. package/lib/src/commands/VersionCommand.js +76 -76
  88. package/lib/src/commands/index.js +30 -29
  89. package/lib/src/constants/CommandTypeMapping.js +20 -19
  90. package/lib/src/constants/GitLabMemberIds.js +6 -6
  91. package/lib/src/constants/MonorepoPackageJsonFiles.js +17 -17
  92. package/lib/src/constants/MonorepoProjectNames.js +16 -16
  93. package/lib/src/constants/ProjectNames.js +68 -67
  94. package/lib/src/constants/SlackUserEmailList.js +13 -0
  95. package/lib/src/constants/TeamCityBuildIDs.js +45 -44
  96. package/lib/src/constants/index.js +19 -19
  97. package/lib/src/errors/ShipItError.js +32 -32
  98. package/lib/src/errors/index.js +17 -17
  99. package/lib/src/index.js +18 -18
  100. package/lib/src/interfaces/Config.js +2 -2
  101. package/lib/src/interfaces/MergeRequestState.js +2 -2
  102. package/lib/src/interfaces/ProjectNames.js +2 -2
  103. package/lib/src/interfaces/ShipItCommand.js +2 -2
  104. package/lib/src/interfaces/ShipItTask.js +2 -2
  105. package/lib/src/interfaces/VersionType.js +2 -2
  106. package/lib/src/interfaces/command-cli-options/MilestoneCommandCliOptions.js +2 -2
  107. package/lib/src/interfaces/command-cli-options/ReleaseCommandCliOptions.js +2 -2
  108. package/lib/src/interfaces/command-cli-options/StatusCommandCliOptions.js +2 -0
  109. package/lib/src/interfaces/command-cli-options/index.js +19 -18
  110. package/lib/src/interfaces/command-options/BaseCommandOptions.js +2 -2
  111. package/lib/src/interfaces/command-options/BumpPackagesCommandOptions.js +2 -2
  112. package/lib/src/interfaces/command-options/DockerMilestoneCommandOptions.js +2 -2
  113. package/lib/src/interfaces/command-options/MilestoneCommandOptions.js +2 -2
  114. package/lib/src/interfaces/command-options/ReleaseCommandOptions.js +2 -2
  115. package/lib/src/interfaces/command-options/StatusCommandOptions.js +2 -0
  116. package/lib/src/interfaces/command-options/ValidateMRCommandOptions.js +2 -2
  117. package/lib/src/interfaces/command-options/index.js +22 -21
  118. package/lib/src/interfaces/index.js +26 -26
  119. package/lib/src/interfaces/models/Branch.js +2 -2
  120. package/lib/src/interfaces/models/Commit.js +2 -2
  121. package/lib/src/interfaces/models/CommitFile.js +2 -2
  122. package/lib/src/interfaces/models/File.js +2 -2
  123. package/lib/src/interfaces/models/Label.js +2 -2
  124. package/lib/src/interfaces/models/MergeRequest.js +2 -2
  125. package/lib/src/interfaces/models/Milestone.js +2 -2
  126. package/lib/src/interfaces/models/Project.js +2 -2
  127. package/lib/src/interfaces/models/ProjectConfig.js +9 -9
  128. package/lib/src/interfaces/models/Release.js +2 -2
  129. package/lib/src/interfaces/models/Tag.js +2 -2
  130. package/lib/src/interfaces/models/index.js +26 -26
  131. package/lib/src/interfaces/view-models/MilestoneProject.js +2 -2
  132. package/lib/src/interfaces/view-models/index.js +17 -17
  133. package/lib/src/inversify.config.js +75 -67
  134. package/lib/src/services/GitLabService.js +505 -498
  135. package/lib/src/services/SlackService.js +139 -0
  136. package/lib/src/services/TeamCityService.js +37 -37
  137. package/lib/src/services/TrelloService.js +84 -0
  138. package/lib/src/services/index.js +20 -18
  139. package/lib/src/startup/AddMilestoneCommand.js +95 -95
  140. package/lib/src/startup/GetAction.js +68 -68
  141. package/lib/src/startup/SetupCommands.js +169 -128
  142. package/lib/src/tasks/BumpPackagesTask.js +229 -229
  143. package/lib/src/tasks/BumpVersionTxtTask.js +110 -110
  144. package/lib/src/tasks/CommitPackageVersionsTask.js +116 -116
  145. package/lib/src/tasks/CreateBranchTask.js +104 -104
  146. package/lib/src/tasks/CreateMergeRequestTask.js +118 -118
  147. package/lib/src/tasks/CreateReleaseNotesTask.js +144 -122
  148. package/lib/src/tasks/CreateTestingNotesTask.js +135 -135
  149. package/lib/src/tasks/InstallPackagesTask.js +407 -407
  150. package/lib/src/tasks/ListProjectsTask.js +87 -87
  151. package/lib/src/tasks/PopulateTrelloBoardTask.js +140 -0
  152. package/lib/src/tasks/StartConsumingProjectBuildsTask.js +149 -149
  153. package/lib/src/tasks/StartMonorepoBuildTask.js +109 -109
  154. package/lib/src/tasks/StartProjectBuildsTask.js +170 -149
  155. package/lib/src/tasks/TagMasterTask.js +121 -121
  156. package/lib/src/tasks/ValidateCommitsTask.js +143 -119
  157. package/lib/src/tasks/ValidateDescriptionsTask.js +178 -151
  158. package/lib/src/tasks/ValidateMergeRequestTask.js +115 -115
  159. package/lib/src/tasks/ValidateTask.js +419 -240
  160. package/lib/src/tasks/VersionTask.js +98 -98
  161. package/lib/src/tasks/index.js +34 -33
  162. package/lib/src/types.js +57 -49
  163. package/lib/src/utils/BranchNames.js +11 -11
  164. package/lib/src/utils/Commits.js +55 -55
  165. package/lib/src/utils/Csv.js +54 -54
  166. package/lib/src/utils/Descriptions.js +237 -237
  167. package/lib/src/utils/GroupIds.js +6 -6
  168. package/lib/src/utils/Logger.js +62 -62
  169. package/lib/src/utils/ProjectIds.js +47 -47
  170. package/lib/src/utils/Versions.js +20 -20
  171. package/lib/src/utils/index.js +22 -22
  172. package/package.json +50 -47
@@ -1,237 +1,237 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Descriptions = void 0;
4
- var Headings = {
5
- BeforeRelease: 'Before release',
6
- Dependencies: 'Dependencies',
7
- CodeChanges: 'Code changes',
8
- CustomerChanges: 'Customer changes',
9
- Testing: 'Testing',
10
- Notes: 'Notes'
11
- };
12
- var BASE_VALID_HEADINGS = [
13
- Headings.BeforeRelease,
14
- Headings.Dependencies,
15
- Headings.Testing,
16
- Headings.Notes
17
- ];
18
- var PROJECT_VALID_HEADINGS = BASE_VALID_HEADINGS.concat([
19
- Headings.CustomerChanges,
20
- Headings.CodeChanges
21
- ]);
22
- var PROJECT_REQUIRED_HEADINGS = [
23
- Headings.Testing
24
- ];
25
- var HEADING_ORDER = [
26
- Headings.BeforeRelease,
27
- Headings.Dependencies,
28
- Headings.CustomerChanges,
29
- Headings.CodeChanges,
30
- '*',
31
- Headings.Testing,
32
- Headings.Notes,
33
- ];
34
- function headingTransformer(heading) {
35
- // Fix casing of known headings
36
- var lowerHeading = heading.toLowerCase();
37
- for (var i = 0; i < PROJECT_VALID_HEADINGS.length; i++) {
38
- if (PROJECT_VALID_HEADINGS[i].toLowerCase() === lowerHeading)
39
- return PROJECT_VALID_HEADINGS[i];
40
- }
41
- // No transform
42
- return heading;
43
- }
44
- function toObject(lines, headingPrefix) {
45
- var obj = {};
46
- var currentHeading = 'other';
47
- for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) {
48
- var line = lines_1[_i];
49
- // Skip empty lines
50
- if (!line.trim() || line === '/n')
51
- continue;
52
- if (line.startsWith(headingPrefix + ' ')) {
53
- // TODO: Potentially add heading transforms to capture multiple variants
54
- currentHeading = headingTransformer(line.replace(headingPrefix, '').trim());
55
- continue;
56
- }
57
- if (!obj[currentHeading])
58
- obj[currentHeading] = '';
59
- /**
60
- * Our images need an extra line return so they don't get squished against our dot points
61
- */
62
- if (line.startsWith('!'))
63
- obj[currentHeading] += '\n';
64
- /**
65
- * Skip the line if the dev is opting out by adding n/a
66
- */
67
- if (line.toLowerCase().trim() !== 'n/a')
68
- obj[currentHeading] += line + '\n';
69
- }
70
- return obj;
71
- }
72
- /**
73
- * I can't read this code but it came from here and it works: https://stackoverflow.com/a/63457487/14258157
74
- * - Josh
75
- */
76
- function orderDescriptionHeadings(headings) {
77
- // Get the index of our wildcard where we put all the other headings into
78
- var starIndex = HEADING_ORDER.indexOf('*');
79
- if (starIndex === -1)
80
- starIndex = HEADING_ORDER.length;
81
- return headings.sort(function (a, b) {
82
- var aIndex = HEADING_ORDER.indexOf(a);
83
- var bIndex = HEADING_ORDER.indexOf(b);
84
- // Do normal sort logic if both are missing from heading order
85
- if (aIndex === -1 && bIndex === -1) {
86
- if (a < b)
87
- return -1;
88
- if (a > b)
89
- return 1;
90
- return 0;
91
- }
92
- if (aIndex === -1)
93
- aIndex = starIndex;
94
- if (bIndex === -1)
95
- bIndex = starIndex;
96
- return aIndex - bIndex;
97
- });
98
- }
99
- exports.Descriptions = {
100
- validate: function (description, projectConfig) {
101
- var validHeadings;
102
- // If we are a monorepo, add in the valid sub project headings
103
- if (projectConfig.monorepo.enabled) {
104
- var subProjects = projectConfig.monorepo.validSubProjects;
105
- validHeadings = BASE_VALID_HEADINGS.concat(subProjects);
106
- }
107
- else {
108
- validHeadings = PROJECT_VALID_HEADINGS;
109
- }
110
- // Parse description
111
- var obj = toObject(description.split('\n'), '#');
112
- var errors = this.validateProject(obj, {
113
- validSections: validHeadings,
114
- requiredSections: PROJECT_REQUIRED_HEADINGS
115
- });
116
- if (!projectConfig.monorepo.enabled)
117
- return errors;
118
- var _loop_1 = function (subProject) {
119
- // Ignore known headings
120
- if (PROJECT_VALID_HEADINGS.indexOf(subProject) !== -1)
121
- return "continue";
122
- var subObj = toObject(obj[subProject].split('\n'), '##');
123
- var subErrors = this_1.validateProject(subObj, {
124
- validSections: PROJECT_VALID_HEADINGS,
125
- requiredSections: []
126
- });
127
- errors = errors.concat(subErrors.map(function (x) { return "[".concat(subProject, "] ") + x; }));
128
- };
129
- var this_1 = this;
130
- // If monorepo we need to check the sub projects are valid
131
- for (var subProject in obj) {
132
- _loop_1(subProject);
133
- }
134
- return errors;
135
- },
136
- validateProject: function (parsedDescription, options) {
137
- // Parse description
138
- var headings = Object.keys(parsedDescription);
139
- // Must have at least one heading
140
- if (headings.length < 1)
141
- return ['Must have at least one section'];
142
- var errors = [];
143
- // Ensure all the headings are valid
144
- for (var _i = 0, headings_1 = headings; _i < headings_1.length; _i++) {
145
- var heading = headings_1[_i];
146
- if (options.validSections.indexOf(heading) === -1)
147
- errors.push("Invalid section: ".concat(heading));
148
- }
149
- // Ensure we have all required headings
150
- for (var _a = 0, _b = options.requiredSections; _a < _b.length; _a++) {
151
- var requiredSection = _b[_a];
152
- if (parsedDescription[requiredSection] === undefined)
153
- errors.push("Missing section: ".concat(requiredSection));
154
- }
155
- return errors;
156
- },
157
- getCombinedDescription: function (mergeRequests, headingPrefix) {
158
- if (headingPrefix === void 0) { headingPrefix = '#'; }
159
- var descriptionObjs = mergeRequests
160
- .filter(function (mr) { return mr.status === 'merged'; })
161
- .map(function (mr) { return toObject(mr.description.split('\n'), headingPrefix); });
162
- var obj = {};
163
- var _loop_2 = function (descriptionObj) {
164
- Object.keys(descriptionObj).forEach(function (key) {
165
- if (!obj[key])
166
- obj[key] = '';
167
- obj[key] += descriptionObj[key] + '\n';
168
- });
169
- };
170
- for (var _i = 0, descriptionObjs_1 = descriptionObjs; _i < descriptionObjs_1.length; _i++) {
171
- var descriptionObj = descriptionObjs_1[_i];
172
- _loop_2(descriptionObj);
173
- }
174
- var description = '';
175
- var orderedHeadings = orderDescriptionHeadings(Object.keys(obj));
176
- orderedHeadings.forEach(function (key) {
177
- if (key === Headings.Notes)
178
- return;
179
- if (!obj[key])
180
- return;
181
- description += '\n' + headingPrefix + ' ' + key + '\n';
182
- description += obj[key];
183
- });
184
- return description;
185
- },
186
- // TODO: This isn't readable, it needs to be refactored
187
- getMonorepoCombinedDescription: function (mergeRequests) {
188
- // Get an object where H1s are properties
189
- var descriptionObjs = mergeRequests
190
- .filter(function (mr) { return mr.status === 'merged'; })
191
- .map(function (mr) { return toObject(mr.description.split('\n'), '#'); });
192
- var combinedObj = {};
193
- var _loop_3 = function (descriptionObj) {
194
- Object.keys(descriptionObj).forEach(function (key) {
195
- if (!combinedObj[key])
196
- combinedObj[key] = {};
197
- var combinedSubObj = toObject(descriptionObj[key].split('\n'), '##');
198
- var orderedHeadings = orderDescriptionHeadings(Object.keys(combinedSubObj));
199
- orderedHeadings.forEach(function (subKey) {
200
- if (!combinedObj[key][subKey])
201
- combinedObj[key][subKey] = '';
202
- combinedObj[key][subKey] += combinedSubObj[subKey];
203
- });
204
- });
205
- };
206
- // For each property in each MR object, calculate it's H2 heading objects
207
- for (var _i = 0, descriptionObjs_2 = descriptionObjs; _i < descriptionObjs_2.length; _i++) {
208
- var descriptionObj = descriptionObjs_2[_i];
209
- _loop_3(descriptionObj);
210
- }
211
- var orderedHeadings = orderDescriptionHeadings(Object.keys(combinedObj));
212
- // Build our description
213
- var description = '';
214
- orderedHeadings.forEach(function (key) {
215
- if (key === Headings.Notes)
216
- return;
217
- description += '\n# ' + key + '\n';
218
- Object.keys(combinedObj[key]).forEach(function (subKey) {
219
- if (key !== Headings.Dependencies && key !== Headings.Testing)
220
- description += '\n## ' + subKey + '\n';
221
- description += combinedObj[key][subKey];
222
- });
223
- });
224
- return description;
225
- },
226
- bumpHeadings: function (description) {
227
- var lines = description.split('\n');
228
- var bumpedDescription = '';
229
- lines.forEach(function (line) {
230
- if (line.startsWith('#'))
231
- bumpedDescription += '#' + line + '\n';
232
- else
233
- bumpedDescription += line + '\n';
234
- });
235
- return bumpedDescription;
236
- }
237
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Descriptions = void 0;
4
+ var Headings = {
5
+ BeforeRelease: 'Before release',
6
+ Dependencies: 'Dependencies',
7
+ CodeChanges: 'Code changes',
8
+ CustomerChanges: 'Customer changes',
9
+ Testing: 'Testing',
10
+ Notes: 'Notes'
11
+ };
12
+ var BASE_VALID_HEADINGS = [
13
+ Headings.BeforeRelease,
14
+ Headings.Dependencies,
15
+ Headings.Testing,
16
+ Headings.Notes
17
+ ];
18
+ var PROJECT_VALID_HEADINGS = BASE_VALID_HEADINGS.concat([
19
+ Headings.CustomerChanges,
20
+ Headings.CodeChanges
21
+ ]);
22
+ var PROJECT_REQUIRED_HEADINGS = [
23
+ Headings.Testing
24
+ ];
25
+ var HEADING_ORDER = [
26
+ Headings.BeforeRelease,
27
+ Headings.Dependencies,
28
+ Headings.CustomerChanges,
29
+ Headings.CodeChanges,
30
+ '*',
31
+ Headings.Testing,
32
+ Headings.Notes,
33
+ ];
34
+ function headingTransformer(heading) {
35
+ // Fix casing of known headings
36
+ var lowerHeading = heading.toLowerCase();
37
+ for (var i = 0; i < PROJECT_VALID_HEADINGS.length; i++) {
38
+ if (PROJECT_VALID_HEADINGS[i].toLowerCase() === lowerHeading)
39
+ return PROJECT_VALID_HEADINGS[i];
40
+ }
41
+ // No transform
42
+ return heading;
43
+ }
44
+ function toObject(lines, headingPrefix) {
45
+ var obj = {};
46
+ var currentHeading = 'other';
47
+ for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) {
48
+ var line = lines_1[_i];
49
+ // Skip empty lines
50
+ if (!line.trim() || line === '/n')
51
+ continue;
52
+ if (line.startsWith(headingPrefix + ' ')) {
53
+ // TODO: Potentially add heading transforms to capture multiple variants
54
+ currentHeading = headingTransformer(line.replace(headingPrefix, '').trim());
55
+ continue;
56
+ }
57
+ if (!obj[currentHeading])
58
+ obj[currentHeading] = '';
59
+ /**
60
+ * Our images need an extra line return so they don't get squished against our dot points
61
+ */
62
+ if (line.startsWith('!'))
63
+ obj[currentHeading] += '\n';
64
+ /**
65
+ * Skip the line if the dev is opting out by adding n/a
66
+ */
67
+ if (line.toLowerCase().trim() !== 'n/a')
68
+ obj[currentHeading] += line + '\n';
69
+ }
70
+ return obj;
71
+ }
72
+ /**
73
+ * I can't read this code but it came from here and it works: https://stackoverflow.com/a/63457487/14258157
74
+ * - Josh
75
+ */
76
+ function orderDescriptionHeadings(headings) {
77
+ // Get the index of our wildcard where we put all the other headings into
78
+ var starIndex = HEADING_ORDER.indexOf('*');
79
+ if (starIndex === -1)
80
+ starIndex = HEADING_ORDER.length;
81
+ return headings.sort(function (a, b) {
82
+ var aIndex = HEADING_ORDER.indexOf(a);
83
+ var bIndex = HEADING_ORDER.indexOf(b);
84
+ // Do normal sort logic if both are missing from heading order
85
+ if (aIndex === -1 && bIndex === -1) {
86
+ if (a < b)
87
+ return -1;
88
+ if (a > b)
89
+ return 1;
90
+ return 0;
91
+ }
92
+ if (aIndex === -1)
93
+ aIndex = starIndex;
94
+ if (bIndex === -1)
95
+ bIndex = starIndex;
96
+ return aIndex - bIndex;
97
+ });
98
+ }
99
+ exports.Descriptions = {
100
+ validate: function (description, projectConfig) {
101
+ var validHeadings;
102
+ // If we are a monorepo, add in the valid sub project headings
103
+ if (projectConfig.monorepo.enabled) {
104
+ var subProjects = projectConfig.monorepo.validSubProjects;
105
+ validHeadings = BASE_VALID_HEADINGS.concat(subProjects);
106
+ }
107
+ else {
108
+ validHeadings = PROJECT_VALID_HEADINGS;
109
+ }
110
+ // Parse description
111
+ var obj = toObject(description.split('\n'), '#');
112
+ var errors = this.validateProject(obj, {
113
+ validSections: validHeadings,
114
+ requiredSections: PROJECT_REQUIRED_HEADINGS
115
+ });
116
+ if (!projectConfig.monorepo.enabled)
117
+ return errors;
118
+ var _loop_1 = function (subProject) {
119
+ // Ignore known headings
120
+ if (PROJECT_VALID_HEADINGS.indexOf(subProject) !== -1)
121
+ return "continue";
122
+ var subObj = toObject(obj[subProject].split('\n'), '##');
123
+ var subErrors = this_1.validateProject(subObj, {
124
+ validSections: PROJECT_VALID_HEADINGS,
125
+ requiredSections: []
126
+ });
127
+ errors = errors.concat(subErrors.map(function (x) { return "[".concat(subProject, "] ") + x; }));
128
+ };
129
+ var this_1 = this;
130
+ // If monorepo we need to check the sub projects are valid
131
+ for (var subProject in obj) {
132
+ _loop_1(subProject);
133
+ }
134
+ return errors;
135
+ },
136
+ validateProject: function (parsedDescription, options) {
137
+ // Parse description
138
+ var headings = Object.keys(parsedDescription);
139
+ // Must have at least one heading
140
+ if (headings.length < 1)
141
+ return ['Must have at least one section'];
142
+ var errors = [];
143
+ // Ensure all the headings are valid
144
+ for (var _i = 0, headings_1 = headings; _i < headings_1.length; _i++) {
145
+ var heading = headings_1[_i];
146
+ if (options.validSections.indexOf(heading) === -1)
147
+ errors.push("Invalid section: ".concat(heading));
148
+ }
149
+ // Ensure we have all required headings
150
+ for (var _a = 0, _b = options.requiredSections; _a < _b.length; _a++) {
151
+ var requiredSection = _b[_a];
152
+ if (parsedDescription[requiredSection] === undefined)
153
+ errors.push("Missing section: ".concat(requiredSection));
154
+ }
155
+ return errors;
156
+ },
157
+ getCombinedDescription: function (mergeRequests, headingPrefix) {
158
+ if (headingPrefix === void 0) { headingPrefix = '#'; }
159
+ var descriptionObjs = mergeRequests
160
+ .filter(function (mr) { return mr.status === 'merged'; })
161
+ .map(function (mr) { return toObject(mr.description.split('\n'), headingPrefix); });
162
+ var obj = {};
163
+ var _loop_2 = function (descriptionObj) {
164
+ Object.keys(descriptionObj).forEach(function (key) {
165
+ if (!obj[key])
166
+ obj[key] = '';
167
+ obj[key] += descriptionObj[key] + '\n';
168
+ });
169
+ };
170
+ for (var _i = 0, descriptionObjs_1 = descriptionObjs; _i < descriptionObjs_1.length; _i++) {
171
+ var descriptionObj = descriptionObjs_1[_i];
172
+ _loop_2(descriptionObj);
173
+ }
174
+ var description = '';
175
+ var orderedHeadings = orderDescriptionHeadings(Object.keys(obj));
176
+ orderedHeadings.forEach(function (key) {
177
+ if (key === Headings.Notes)
178
+ return;
179
+ if (!obj[key])
180
+ return;
181
+ description += '\n' + headingPrefix + ' ' + key + '\n';
182
+ description += obj[key];
183
+ });
184
+ return description;
185
+ },
186
+ // TODO: This isn't readable, it needs to be refactored
187
+ getMonorepoCombinedDescription: function (mergeRequests) {
188
+ // Get an object where H1s are properties
189
+ var descriptionObjs = mergeRequests
190
+ .filter(function (mr) { return mr.status === 'merged'; })
191
+ .map(function (mr) { return toObject(mr.description.split('\n'), '#'); });
192
+ var combinedObj = {};
193
+ var _loop_3 = function (descriptionObj) {
194
+ Object.keys(descriptionObj).forEach(function (key) {
195
+ if (!combinedObj[key])
196
+ combinedObj[key] = {};
197
+ var combinedSubObj = toObject(descriptionObj[key].split('\n'), '##');
198
+ var orderedHeadings = orderDescriptionHeadings(Object.keys(combinedSubObj));
199
+ orderedHeadings.forEach(function (subKey) {
200
+ if (!combinedObj[key][subKey])
201
+ combinedObj[key][subKey] = '';
202
+ combinedObj[key][subKey] += combinedSubObj[subKey];
203
+ });
204
+ });
205
+ };
206
+ // For each property in each MR object, calculate it's H2 heading objects
207
+ for (var _i = 0, descriptionObjs_2 = descriptionObjs; _i < descriptionObjs_2.length; _i++) {
208
+ var descriptionObj = descriptionObjs_2[_i];
209
+ _loop_3(descriptionObj);
210
+ }
211
+ var orderedHeadings = orderDescriptionHeadings(Object.keys(combinedObj));
212
+ // Build our description
213
+ var description = '';
214
+ orderedHeadings.forEach(function (key) {
215
+ if (key === Headings.Notes)
216
+ return;
217
+ description += '\n# ' + key + '\n';
218
+ Object.keys(combinedObj[key]).forEach(function (subKey) {
219
+ if (key !== Headings.Dependencies && key !== Headings.Testing)
220
+ description += '\n## ' + subKey + '\n';
221
+ description += combinedObj[key][subKey];
222
+ });
223
+ });
224
+ return description;
225
+ },
226
+ bumpHeadings: function (description) {
227
+ var lines = description.split('\n');
228
+ var bumpedDescription = '';
229
+ lines.forEach(function (line) {
230
+ if (line.startsWith('#'))
231
+ bumpedDescription += '#' + line + '\n';
232
+ else
233
+ bumpedDescription += line + '\n';
234
+ });
235
+ return bumpedDescription;
236
+ }
237
+ };
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GroupIds = void 0;
4
- exports.GroupIds = {
5
- CLICKVIEW: 1069
6
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupIds = void 0;
4
+ exports.GroupIds = {
5
+ CLICKVIEW: 1069
6
+ };
@@ -1,62 +1,62 @@
1
- "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
7
- }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.Logger = void 0;
16
- require("reflect-metadata");
17
- var chalk_1 = __importDefault(require("chalk"));
18
- exports.Logger = {
19
- logSuccess: function (message) {
20
- var optionalParams = [];
21
- for (var _i = 1; _i < arguments.length; _i++) {
22
- optionalParams[_i - 1] = arguments[_i];
23
- }
24
- console.log(chalk_1.default.green.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
25
- },
26
- logInfo: function (message) {
27
- var optionalParams = [];
28
- for (var _i = 1; _i < arguments.length; _i++) {
29
- optionalParams[_i - 1] = arguments[_i];
30
- }
31
- console.log(chalk_1.default.grey.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
32
- },
33
- logMessage: function (message) {
34
- var optionalParams = [];
35
- for (var _i = 1; _i < arguments.length; _i++) {
36
- optionalParams[_i - 1] = arguments[_i];
37
- }
38
- console.log(chalk_1.default.white.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
39
- },
40
- logWarning: function (message) {
41
- var optionalParams = [];
42
- for (var _i = 1; _i < arguments.length; _i++) {
43
- optionalParams[_i - 1] = arguments[_i];
44
- }
45
- console.log(chalk_1.default.yellow.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
46
- },
47
- logError: function (message) {
48
- var optionalParams = [];
49
- for (var _i = 1; _i < arguments.length; _i++) {
50
- optionalParams[_i - 1] = arguments[_i];
51
- }
52
- console.log(chalk_1.default.red.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
53
- },
54
- logJson: function (json) {
55
- console.log(json);
56
- },
57
- logTask: function (title) {
58
- exports.Logger.logInfo('\n-------------------------------------');
59
- exports.Logger.logInfo(title);
60
- exports.Logger.logInfo('-------------------------------------\n');
61
- }
62
- };
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Logger = void 0;
16
+ require("reflect-metadata");
17
+ var chalk_1 = __importDefault(require("chalk"));
18
+ exports.Logger = {
19
+ logSuccess: function (message) {
20
+ var optionalParams = [];
21
+ for (var _i = 1; _i < arguments.length; _i++) {
22
+ optionalParams[_i - 1] = arguments[_i];
23
+ }
24
+ console.log(chalk_1.default.green.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
25
+ },
26
+ logInfo: function (message) {
27
+ var optionalParams = [];
28
+ for (var _i = 1; _i < arguments.length; _i++) {
29
+ optionalParams[_i - 1] = arguments[_i];
30
+ }
31
+ console.log(chalk_1.default.grey.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
32
+ },
33
+ logMessage: function (message) {
34
+ var optionalParams = [];
35
+ for (var _i = 1; _i < arguments.length; _i++) {
36
+ optionalParams[_i - 1] = arguments[_i];
37
+ }
38
+ console.log(chalk_1.default.white.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
39
+ },
40
+ logWarning: function (message) {
41
+ var optionalParams = [];
42
+ for (var _i = 1; _i < arguments.length; _i++) {
43
+ optionalParams[_i - 1] = arguments[_i];
44
+ }
45
+ console.log(chalk_1.default.yellow.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
46
+ },
47
+ logError: function (message) {
48
+ var optionalParams = [];
49
+ for (var _i = 1; _i < arguments.length; _i++) {
50
+ optionalParams[_i - 1] = arguments[_i];
51
+ }
52
+ console.log(chalk_1.default.red.apply(chalk_1.default, __spreadArray([message], optionalParams, false)));
53
+ },
54
+ logJson: function (json) {
55
+ console.log(json);
56
+ },
57
+ logTask: function (title) {
58
+ exports.Logger.logInfo('\n-------------------------------------');
59
+ exports.Logger.logInfo(title);
60
+ exports.Logger.logInfo('-------------------------------------\n');
61
+ }
62
+ };