@lighthouse/common 6.10.0 → 6.10.1-canary.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 (229) hide show
  1. package/.mise.toml +6 -6
  2. package/CHANGELOG.md +758 -758
  3. package/README.md +1 -1
  4. package/dist/errors/FetchImageError.js +3 -3
  5. package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -7
  6. package/dist/helpers/floatify/index.js +6 -6
  7. package/dist/helpers/get-audit-items-data/index.js +47 -36
  8. package/dist/helpers/validate-url/index.js +4 -4
  9. package/dist/pdf/activity-report/index.js +32 -32
  10. package/dist/pdf/audit/index.js +23 -23
  11. package/dist/pdf/helpers/fields/index.js +47 -27
  12. package/dist/pdf/issue/index.js +23 -23
  13. package/dist/pdf/job/index.js +22 -22
  14. package/dist/pdf/shift-report/index.js +28 -28
  15. package/dist/pdf/task/index.js +23 -23
  16. package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +2 -2
  17. package/dist/scheduling/generators/scheduleIntervalsGenerator.js +2 -2
  18. package/dist/scheduling/generators/serviceIntervalsGenerator.js +2 -2
  19. package/dist/scheduling/helpers/convertToTimezone.js +6 -6
  20. package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +2 -2
  21. package/dist/scheduling/helpers/generateRepeatingSchedule.js +2 -2
  22. package/dist/scheduling/helpers/generateScheduleEnd.js +2 -2
  23. package/dist/scheduling/helpers/hasValidStartAndEnd.js +5 -5
  24. package/dist/scheduling/helpers/intervalCovers.js +6 -6
  25. package/dist/scheduling/helpers/intervalIntersectsEnd.js +6 -6
  26. package/dist/scheduling/helpers/intervalIntersectsStart.js +6 -6
  27. package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +6 -6
  28. package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +6 -6
  29. package/dist/scheduling/helpers/intervalOutside.js +6 -6
  30. package/dist/scheduling/helpers/intervalWithin.js +6 -6
  31. package/dist/scheduling/helpers/mergeIntervals.js +6 -6
  32. package/dist/scheduling/helpers/splitIntervals.js +6 -6
  33. package/dist/scheduling/strategies/getNext.js +2 -2
  34. package/dist/scheduling/strategies/getNextExactDateOfMonth.js +2 -2
  35. package/dist/scheduling/strategies/getNextLastDayOfMonth.js +2 -2
  36. package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +2 -2
  37. package/dist/scheduling/strategies/getNextNoRepeat.js +2 -2
  38. package/dist/scheduling/strategies/getNextWeekday.js +2 -2
  39. package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +2 -2
  40. package/dist/service-hours/__helpers__/calculate-hours.js +4 -4
  41. package/dist/service-hours/__helpers__/isOpen.js +2 -2
  42. package/dist/service-hours/schema.js +4 -4
  43. package/lib/constants.js +12 -6
  44. package/lib/constants.js.map +1 -1
  45. package/lib/errors/DomainError.js +14 -21
  46. package/lib/errors/DomainError.js.map +1 -1
  47. package/lib/errors/FetchImageError.js +17 -24
  48. package/lib/errors/FetchImageError.js.map +1 -1
  49. package/lib/errors/ValidationError.js +30 -36
  50. package/lib/errors/ValidationError.js.map +1 -1
  51. package/lib/errors/index.js +23 -5
  52. package/lib/errors/index.js.map +1 -1
  53. package/lib/helpers/build-fetch-url/index.js +43 -47
  54. package/lib/helpers/build-fetch-url/index.js.map +1 -1
  55. package/lib/helpers/fetch-image/index.js +83 -82
  56. package/lib/helpers/fetch-image/index.js.map +1 -1
  57. package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +168 -243
  58. package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
  59. package/lib/helpers/fetch-image-for-web/index.js +71 -94
  60. package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
  61. package/lib/helpers/fetch-lighthouse-logo/index.js +36 -61
  62. package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
  63. package/lib/helpers/floatify/index.js +13 -7
  64. package/lib/helpers/floatify/index.js.map +1 -1
  65. package/lib/helpers/get-assignees-full-names/index.js +11 -7
  66. package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
  67. package/lib/helpers/get-audit-entry-details/index.js +42 -32
  68. package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
  69. package/lib/helpers/get-audit-items-data/index.js +104 -83
  70. package/lib/helpers/get-audit-items-data/index.js.map +1 -1
  71. package/lib/helpers/get-geometry-geocoded-string/index.js +10 -5
  72. package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
  73. package/lib/helpers/get-issue-details/index.js +53 -43
  74. package/lib/helpers/get-issue-details/index.js.map +1 -1
  75. package/lib/helpers/get-job-details/index.js +49 -41
  76. package/lib/helpers/get-job-details/index.js.map +1 -1
  77. package/lib/helpers/get-location-reference/index.js +32 -34
  78. package/lib/helpers/get-location-reference/index.js.map +1 -1
  79. package/lib/helpers/get-pretty-duration/index.js +16 -10
  80. package/lib/helpers/get-pretty-duration/index.js.map +1 -1
  81. package/lib/helpers/get-reference-details/index.js +20 -10
  82. package/lib/helpers/get-reference-details/index.js.map +1 -1
  83. package/lib/helpers/get-status-details/index.js +8 -2
  84. package/lib/helpers/get-status-details/index.js.map +1 -1
  85. package/lib/helpers/get-task-entry-details/index.js +32 -23
  86. package/lib/helpers/get-task-entry-details/index.js.map +1 -1
  87. package/lib/helpers/get-timezone-abbr/index.js +11 -4
  88. package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
  89. package/lib/helpers/get-timezone-datetime/index.js +20 -13
  90. package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
  91. package/lib/helpers/get-user-full-name/index.js +9 -3
  92. package/lib/helpers/get-user-full-name/index.js.map +1 -1
  93. package/lib/helpers/get-value-as-percentage/index.js +9 -4
  94. package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
  95. package/lib/helpers/image-validators/index.js +18 -12
  96. package/lib/helpers/image-validators/index.js.map +1 -1
  97. package/lib/helpers/index.js +130 -18
  98. package/lib/helpers/index.js.map +1 -1
  99. package/lib/helpers/validate-url/index.js +11 -5
  100. package/lib/helpers/validate-url/index.js.map +1 -1
  101. package/lib/images/index.js +10 -4
  102. package/lib/images/index.js.map +1 -1
  103. package/lib/index.js +66 -10
  104. package/lib/index.js.map +1 -1
  105. package/lib/pdf/activity-report/index.js +407 -537
  106. package/lib/pdf/activity-report/index.js.map +1 -1
  107. package/lib/pdf/audit/index.js +137 -134
  108. package/lib/pdf/audit/index.js.map +1 -1
  109. package/lib/pdf/fonts/index.js +4 -2
  110. package/lib/pdf/fonts/index.js.map +1 -1
  111. package/lib/pdf/helpers/build-audit-content/index.js +57 -51
  112. package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
  113. package/lib/pdf/helpers/build-audit-follow-ups/index.js +52 -50
  114. package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
  115. package/lib/pdf/helpers/build-location-scans-content/index.js +22 -16
  116. package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
  117. package/lib/pdf/helpers/build-template-content/index.js +52 -51
  118. package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
  119. package/lib/pdf/helpers/default-footer/index.js +38 -35
  120. package/lib/pdf/helpers/default-footer/index.js.map +1 -1
  121. package/lib/pdf/helpers/default-header/index.js +40 -35
  122. package/lib/pdf/helpers/default-header/index.js.map +1 -1
  123. package/lib/pdf/helpers/default-styles/index.js +7 -1
  124. package/lib/pdf/helpers/default-styles/index.js.map +1 -1
  125. package/lib/pdf/helpers/fields/index.js +225 -214
  126. package/lib/pdf/helpers/fields/index.js.map +1 -1
  127. package/lib/pdf/helpers/format-location-address/index.js +14 -8
  128. package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
  129. package/lib/pdf/helpers/generate-definition/index.js +60 -65
  130. package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
  131. package/lib/pdf/helpers/horizontal-line/index.js +14 -14
  132. package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
  133. package/lib/pdf/helpers/html-transformer/index.js +45 -35
  134. package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
  135. package/lib/pdf/helpers/index.js +194 -15
  136. package/lib/pdf/helpers/index.js.map +1 -1
  137. package/lib/pdf/helpers/parse-value/index.js +10 -4
  138. package/lib/pdf/helpers/parse-value/index.js.map +1 -1
  139. package/lib/pdf/helpers/table/index.js +136 -205
  140. package/lib/pdf/helpers/table/index.js.map +1 -1
  141. package/lib/pdf/helpers/text/index.js +11 -8
  142. package/lib/pdf/helpers/text/index.js.map +1 -1
  143. package/lib/pdf/icons/index.js +8 -2
  144. package/lib/pdf/icons/index.js.map +1 -1
  145. package/lib/pdf/index.js +47 -6
  146. package/lib/pdf/index.js.map +1 -1
  147. package/lib/pdf/issue/index.js +141 -135
  148. package/lib/pdf/issue/index.js.map +1 -1
  149. package/lib/pdf/job/index.js +95 -81
  150. package/lib/pdf/job/index.js.map +1 -1
  151. package/lib/pdf/shift-report/emptyFixtures.js +8 -2
  152. package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
  153. package/lib/pdf/shift-report/index.js +399 -521
  154. package/lib/pdf/shift-report/index.js.map +1 -1
  155. package/lib/pdf/task/index.js +89 -83
  156. package/lib/pdf/task/index.js.map +1 -1
  157. package/lib/scheduling/generators/index.js +38 -3
  158. package/lib/scheduling/generators/index.js.map +1 -1
  159. package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +44 -37
  160. package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
  161. package/lib/scheduling/generators/scheduleIntervalsGenerator.js +20 -28
  162. package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
  163. package/lib/scheduling/generators/serviceIntervalsGenerator.js +120 -150
  164. package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
  165. package/lib/scheduling/helpers/convertToTimezone.js +18 -11
  166. package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
  167. package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +57 -95
  168. package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
  169. package/lib/scheduling/helpers/generateRepeatingSchedule.js +80 -119
  170. package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
  171. package/lib/scheduling/helpers/generateScheduleEnd.js +24 -14
  172. package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
  173. package/lib/scheduling/helpers/hasValidStartAndEnd.js +19 -11
  174. package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
  175. package/lib/scheduling/helpers/index.js +159 -14
  176. package/lib/scheduling/helpers/index.js.map +1 -1
  177. package/lib/scheduling/helpers/intervalCovers.js +13 -7
  178. package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
  179. package/lib/scheduling/helpers/intervalIntersectsEnd.js +13 -7
  180. package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
  181. package/lib/scheduling/helpers/intervalIntersectsStart.js +13 -7
  182. package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
  183. package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +15 -10
  184. package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
  185. package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +15 -10
  186. package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
  187. package/lib/scheduling/helpers/intervalOutside.js +15 -9
  188. package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
  189. package/lib/scheduling/helpers/intervalWithin.js +13 -7
  190. package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
  191. package/lib/scheduling/helpers/mergeIntervals.js +21 -17
  192. package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
  193. package/lib/scheduling/helpers/splitIntervals.js +24 -23
  194. package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
  195. package/lib/scheduling/index.js +38 -3
  196. package/lib/scheduling/index.js.map +1 -1
  197. package/lib/scheduling/scheduling.types.js +9 -3
  198. package/lib/scheduling/scheduling.types.js.map +1 -1
  199. package/lib/scheduling/strategies/getNext.js +57 -63
  200. package/lib/scheduling/strategies/getNext.js.map +1 -1
  201. package/lib/scheduling/strategies/getNextExactDateOfMonth.js +47 -56
  202. package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
  203. package/lib/scheduling/strategies/getNextLastDayOfMonth.js +43 -51
  204. package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
  205. package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +49 -56
  206. package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
  207. package/lib/scheduling/strategies/getNextNoRepeat.js +25 -36
  208. package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
  209. package/lib/scheduling/strategies/getNextWeekday.js +47 -79
  210. package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
  211. package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +52 -58
  212. package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
  213. package/lib/scheduling/strategies/index.js +82 -7
  214. package/lib/scheduling/strategies/index.js.map +1 -1
  215. package/lib/schema/index.js +16 -1
  216. package/lib/schema/index.js.map +1 -1
  217. package/lib/schema/schema.js +28 -34
  218. package/lib/schema/schema.js.map +1 -1
  219. package/lib/service-hours/__helpers__/calculate-hours.js +24 -22
  220. package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
  221. package/lib/service-hours/__helpers__/isOpen.js +25 -24
  222. package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
  223. package/lib/service-hours/index.js +27 -2
  224. package/lib/service-hours/index.js.map +1 -1
  225. package/lib/service-hours/schema.js +68 -55
  226. package/lib/service-hours/schema.js.map +1 -1
  227. package/package.json +86 -86
  228. package/vitest.config.ts +23 -23
  229. package/vitest.setup.js +7 -7
@@ -1,61 +1,65 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import { flatten, isEmpty, round } from 'lodash';
3
- import Promise from 'bluebird';
4
- import { fetchImage } from '../../../helpers';
5
- import { fourColumnTable, horizontalLine, imageTables, table, text } from '../';
6
- import { LIGHT_BLUE, WHITE } from '../table';
7
- export var buildAuditContent = Promise.method(function (items) {
8
- var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
9
- return Promise.map(items, function (group) {
10
- return Promise.map(group.items, function (item, index) {
11
- return Promise.map(item.assets, function (_ref) {
12
- var assetUrl = _ref.assetUrl,
13
- link = _ref.link;
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.buildAuditContent = void 0;
8
+ var _lodash = require("lodash");
9
+ var _bluebird = _interopRequireDefault(require("bluebird"));
10
+ var _helpers = require("../../../helpers");
11
+ var _ = require("../");
12
+ var _table = require("../table");
13
+ const buildAuditContent = exports.buildAuditContent = _bluebird.default.method((items, settings = {}) => {
14
+ return _bluebird.default.map(items, group => {
15
+ return _bluebird.default.map(group.items, (item, index) => {
16
+ return _bluebird.default.map(item.assets, ({
17
+ assetUrl,
18
+ link
19
+ }) => {
14
20
  // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
15
- return fetchImage(assetUrl, settings).then(function (base64String) {
16
- return {
17
- alignment: 'center',
18
- fit: [210, 210],
19
- image: base64String,
20
- link: link
21
- };
22
- });
23
- }).then(function (rowImages) {
24
- var rows = [];
25
- var fillColor = index % 2 === 0 ? WHITE : LIGHT_BLUE;
26
- var hasImages = !isEmpty(rowImages);
27
- var hasComments = !isEmpty(item.comments);
21
+ return (0, _helpers.fetchImage)(assetUrl, settings).then(base64String => ({
22
+ alignment: 'center',
23
+ fit: [210, 210],
24
+ image: base64String,
25
+ link
26
+ }));
27
+ }).then(rowImages => {
28
+ const rows = [];
29
+ const fillColor = index % 2 === 0 ? _table.WHITE : _table.LIGHT_BLUE;
30
+ const hasImages = !(0, _lodash.isEmpty)(rowImages);
31
+ const hasComments = !(0, _lodash.isEmpty)(item.comments);
28
32
 
29
33
  // Some audits use questionId to link a follow-up issue and its question
30
- var label = {
34
+ const label = {
31
35
  text: item.label,
32
- fillColor: fillColor,
36
+ fillColor,
33
37
  id: item.questionId
34
38
  };
35
39
  rows.push([label, {
36
40
  text: item.scoreLabel,
37
- fillColor: fillColor
41
+ fillColor
38
42
  }, {
39
43
  alignment: 'center',
40
44
  text: item.weight,
41
- fillColor: fillColor
45
+ fillColor
42
46
  }, {
43
47
  alignment: 'right',
44
48
  text: item.scoreWeight,
45
- fillColor: fillColor
49
+ fillColor
46
50
  }]);
47
51
  if (hasImages) {
48
- var imageRow = [{
52
+ const imageRow = [{
49
53
  colSpan: 4,
50
- fillColor: fillColor,
51
- stack: imageTables(rowImages)
54
+ fillColor,
55
+ stack: (0, _.imageTables)(rowImages)
52
56
  }];
53
57
  rows.push(imageRow);
54
58
  }
55
59
  if (hasComments) {
56
- var commentsRow = [{
60
+ const commentsRow = [{
57
61
  colSpan: 4,
58
- fillColor: fillColor,
62
+ fillColor,
59
63
  margin: [0, -10, 0, 0],
60
64
  stack: [{
61
65
  text: 'Comments:',
@@ -68,40 +72,42 @@ export var buildAuditContent = Promise.method(function (items) {
68
72
  }
69
73
  return rows;
70
74
  });
71
- }).then(function (groupTableRows) {
72
- var actual = round(group.groupActualScore, 2);
73
- var max = round(group.groupMaximumScore, 2);
74
- var resultText = "".concat(group.groupPercentageResultScore, "%");
75
- var skipped = group.skipped;
76
- var groupScoreText = skipped ? null : text("".concat(actual, " / ").concat(max, " (").concat(resultText, ")"), {
75
+ }).then(groupTableRows => {
76
+ const actual = (0, _lodash.round)(group.groupActualScore, 2);
77
+ const max = (0, _lodash.round)(group.groupMaximumScore, 2);
78
+ const resultText = `${group.groupPercentageResultScore}%`;
79
+ const {
80
+ skipped
81
+ } = group;
82
+ const groupScoreText = skipped ? null : (0, _.text)(`${actual} / ${max} (${resultText})`, {
77
83
  alignment: 'right',
78
84
  bold: true
79
85
  });
80
- var headerText = text(group.title);
81
- var groupHeaderTable = table({
86
+ const headerText = (0, _.text)(group.title);
87
+ const groupHeaderTable = (0, _.table)({
82
88
  body: [[headerText, groupScoreText]],
83
89
  layout: 'noBorders',
84
90
  style: 'groupHeaderTable',
85
91
  widths: ['*', '*']
86
92
  });
87
- var groupTableHeader = [text('Question', {
93
+ const groupTableHeader = [(0, _.text)('Question', {
88
94
  bold: true
89
- }), text('Answer', {
95
+ }), (0, _.text)('Answer', {
90
96
  bold: true
91
- }), text('Weight', {
97
+ }), (0, _.text)('Weight', {
92
98
  alignment: 'center',
93
99
  bold: true
94
- }), text('Score', {
100
+ }), (0, _.text)('Score', {
95
101
  alignment: 'right',
96
102
  bold: true
97
103
  })];
98
- var groupTable = fourColumnTable({
104
+ const groupTable = (0, _.fourColumnTable)({
99
105
  headerRows: 0,
100
106
  // NOTE: must flatten here as we have arrays of rows
101
- body: [groupTableHeader].concat(_toConsumableArray(flatten(groupTableRows))),
107
+ body: [groupTableHeader, ...(0, _lodash.flatten)(groupTableRows)],
102
108
  widths: ['60%', '24%', '8%', '8%']
103
109
  });
104
- var hLine = horizontalLine();
110
+ const hLine = (0, _.horizontalLine)();
105
111
  return [groupHeaderTable, hLine, groupTable];
106
112
  });
107
113
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["flatten","isEmpty","round","Promise","fetchImage","fourColumnTable","horizontalLine","imageTables","table","text","LIGHT_BLUE","WHITE","buildAuditContent","method","items","settings","arguments","length","undefined","map","group","item","index","assets","_ref","assetUrl","link","then","base64String","alignment","fit","image","rowImages","rows","fillColor","hasImages","hasComments","comments","label","id","questionId","push","scoreLabel","weight","scoreWeight","imageRow","colSpan","stack","commentsRow","margin","style","groupTableRows","actual","groupActualScore","max","groupMaximumScore","resultText","concat","groupPercentageResultScore","skipped","groupScoreText","bold","headerText","title","groupHeaderTable","body","layout","widths","groupTableHeader","groupTable","headerRows","_toConsumableArray","hLine"],"sources":["../../../../src/pdf/helpers/build-audit-content/index.js"],"sourcesContent":["import { flatten, isEmpty, round } from 'lodash'\nimport Promise from 'bluebird'\n\nimport { fetchImage } from '../../../helpers'\nimport { fourColumnTable, horizontalLine, imageTables, table, text } from '../'\nimport { LIGHT_BLUE, WHITE } from '../table'\n\nexport const buildAuditContent = Promise.method((items, settings = {}) => {\n return Promise.map(items, group => {\n return Promise.map(group.items, (item, index) => {\n return Promise.map(item.assets, ({ assetUrl, link }) => {\n // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context\n return fetchImage(assetUrl, settings).then(base64String => ({\n alignment: 'center',\n fit: [210, 210],\n image: base64String,\n link,\n }))\n }).then(rowImages => {\n const rows = []\n\n const fillColor = index % 2 === 0 ? WHITE : LIGHT_BLUE\n const hasImages = !isEmpty(rowImages)\n const hasComments = !isEmpty(item.comments)\n\n // Some audits use questionId to link a follow-up issue and its question\n const label = { text: item.label, fillColor, id: item.questionId }\n\n rows.push([\n label,\n { text: item.scoreLabel, fillColor },\n { alignment: 'center', text: item.weight, fillColor },\n { alignment: 'right', text: item.scoreWeight, fillColor },\n ])\n\n if (hasImages) {\n const imageRow = [\n {\n colSpan: 4,\n fillColor,\n stack: imageTables(rowImages),\n },\n ]\n\n rows.push(imageRow)\n }\n\n if (hasComments) {\n const commentsRow = [\n {\n colSpan: 4,\n fillColor,\n margin: [0, -10, 0, 0],\n stack: [\n { text: 'Comments:', style: 'commentsHeader' },\n { text: item.comments },\n ],\n },\n ]\n\n rows.push(commentsRow)\n }\n\n return rows\n })\n }).then(groupTableRows => {\n const actual = round(group.groupActualScore, 2)\n const max = round(group.groupMaximumScore, 2)\n const resultText = `${group.groupPercentageResultScore}%`\n\n const { skipped } = group\n\n const groupScoreText = skipped\n ? null\n : text(`${actual} / ${max} (${resultText})`, {\n alignment: 'right',\n bold: true,\n })\n const headerText = text(group.title)\n\n const groupHeaderTable = table({\n body: [[headerText, groupScoreText]],\n layout: 'noBorders',\n style: 'groupHeaderTable',\n widths: ['*', '*'],\n })\n\n const groupTableHeader = [\n text('Question', { bold: true }),\n text('Answer', { bold: true }),\n text('Weight', { alignment: 'center', bold: true }),\n text('Score', { alignment: 'right', bold: true }),\n ]\n\n const groupTable = fourColumnTable({\n headerRows: 0,\n // NOTE: must flatten here as we have arrays of rows\n body: [groupTableHeader, ...flatten(groupTableRows)],\n widths: ['60%', '24%', '8%', '8%'],\n })\n\n const hLine = horizontalLine()\n\n return [groupHeaderTable, hLine, groupTable]\n })\n })\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_lodash","require","_bluebird","_interopRequireDefault","_helpers","_","_table","buildAuditContent","exports","Promise","method","items","settings","map","group","item","index","assets","assetUrl","link","fetchImage","then","base64String","alignment","fit","image","rowImages","rows","fillColor","WHITE","LIGHT_BLUE","hasImages","isEmpty","hasComments","comments","label","text","id","questionId","push","scoreLabel","weight","scoreWeight","imageRow","colSpan","stack","imageTables","commentsRow","margin","style","groupTableRows","actual","round","groupActualScore","max","groupMaximumScore","resultText","groupPercentageResultScore","skipped","groupScoreText","bold","headerText","title","groupHeaderTable","table","body","layout","widths","groupTableHeader","groupTable","fourColumnTable","headerRows","flatten","hLine","horizontalLine"],"sources":["../../../../src/pdf/helpers/build-audit-content/index.js"],"sourcesContent":["import { flatten, isEmpty, round } from 'lodash'\r\nimport Promise from 'bluebird'\r\n\r\nimport { fetchImage } from '../../../helpers'\r\nimport { fourColumnTable, horizontalLine, imageTables, table, text } from '../'\r\nimport { LIGHT_BLUE, WHITE } from '../table'\r\n\r\nexport const buildAuditContent = Promise.method((items, settings = {}) => {\r\n return Promise.map(items, group => {\r\n return Promise.map(group.items, (item, index) => {\r\n return Promise.map(item.assets, ({ assetUrl, link }) => {\r\n // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context\r\n return fetchImage(assetUrl, settings).then(base64String => ({\r\n alignment: 'center',\r\n fit: [210, 210],\r\n image: base64String,\r\n link,\r\n }))\r\n }).then(rowImages => {\r\n const rows = []\r\n\r\n const fillColor = index % 2 === 0 ? WHITE : LIGHT_BLUE\r\n const hasImages = !isEmpty(rowImages)\r\n const hasComments = !isEmpty(item.comments)\r\n\r\n // Some audits use questionId to link a follow-up issue and its question\r\n const label = { text: item.label, fillColor, id: item.questionId }\r\n\r\n rows.push([\r\n label,\r\n { text: item.scoreLabel, fillColor },\r\n { alignment: 'center', text: item.weight, fillColor },\r\n { alignment: 'right', text: item.scoreWeight, fillColor },\r\n ])\r\n\r\n if (hasImages) {\r\n const imageRow = [\r\n {\r\n colSpan: 4,\r\n fillColor,\r\n stack: imageTables(rowImages),\r\n },\r\n ]\r\n\r\n rows.push(imageRow)\r\n }\r\n\r\n if (hasComments) {\r\n const commentsRow = [\r\n {\r\n colSpan: 4,\r\n fillColor,\r\n margin: [0, -10, 0, 0],\r\n stack: [\r\n { text: 'Comments:', style: 'commentsHeader' },\r\n { text: item.comments },\r\n ],\r\n },\r\n ]\r\n\r\n rows.push(commentsRow)\r\n }\r\n\r\n return rows\r\n })\r\n }).then(groupTableRows => {\r\n const actual = round(group.groupActualScore, 2)\r\n const max = round(group.groupMaximumScore, 2)\r\n const resultText = `${group.groupPercentageResultScore}%`\r\n\r\n const { skipped } = group\r\n\r\n const groupScoreText = skipped\r\n ? null\r\n : text(`${actual} / ${max} (${resultText})`, {\r\n alignment: 'right',\r\n bold: true,\r\n })\r\n const headerText = text(group.title)\r\n\r\n const groupHeaderTable = table({\r\n body: [[headerText, groupScoreText]],\r\n layout: 'noBorders',\r\n style: 'groupHeaderTable',\r\n widths: ['*', '*'],\r\n })\r\n\r\n const groupTableHeader = [\r\n text('Question', { bold: true }),\r\n text('Answer', { bold: true }),\r\n text('Weight', { alignment: 'center', bold: true }),\r\n text('Score', { alignment: 'right', bold: true }),\r\n ]\r\n\r\n const groupTable = fourColumnTable({\r\n headerRows: 0,\r\n // NOTE: must flatten here as we have arrays of rows\r\n body: [groupTableHeader, ...flatten(groupTableRows)],\r\n widths: ['60%', '24%', '8%', '8%'],\r\n })\r\n\r\n const hLine = horizontalLine()\r\n\r\n return [groupHeaderTable, hLine, groupTable]\r\n })\r\n })\r\n})\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,15 +1,17 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- import moment from 'moment-timezone';
5
- import { getStatusDetails, getUserFullName } from '../../../helpers';
6
- import { defaultStyles, horizontalLine, sixColumnTable } from '../';
7
- import { launchIcon, internalLinkIcon } from '../../../images';
8
- var LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io';
9
- export function buildAuditFollowUps() {
10
- var rawFollowUpIssues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
11
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12
- var sectionTitle = [{
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.buildAuditFollowUps = buildAuditFollowUps;
8
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
9
+ var _helpers = require("../../../helpers");
10
+ var _ = require("../");
11
+ var _images = require("../../../images");
12
+ const LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io';
13
+ function buildAuditFollowUps(rawFollowUpIssues = [], options = {}) {
14
+ const sectionTitle = [{
13
15
  text: 'Follow-up Issues',
14
16
  style: {
15
17
  font: 'Gotham',
@@ -17,98 +19,98 @@ export function buildAuditFollowUps() {
17
19
  margin: [0, 0, 0, 50]
18
20
  }
19
21
  }];
20
- var sectionDivider = horizontalLine({
22
+ const sectionDivider = (0, _.horizontalLine)({
21
23
  margin: [0, 0, 0, 0]
22
24
  });
23
- var followUpIssues = rawFollowUpIssues.filter(function (item) {
24
- return !item.errorMessage;
25
- });
25
+ const followUpIssues = rawFollowUpIssues.filter(item => !item.errorMessage);
26
26
  if (!followUpIssues.length) {
27
27
  // Show a `no follow-up issues` message if there are no follow up issues
28
28
  return [sectionTitle, sectionDivider, {
29
29
  text: 'No follow-up issues exist for this audit',
30
- style: defaultStyles.subTitle,
30
+ style: _.defaultStyles.subTitle,
31
31
  margin: [0, 5, 0, 50]
32
32
  }];
33
33
  }
34
- var _options$timezone = options.timezone,
35
- timezone = _options$timezone === void 0 ? 'America/New_York' : _options$timezone;
36
- var tableBody = [];
37
- followUpIssues.forEach(function (item) {
38
- var mappedStatus = getStatusDetails(item.status);
39
- var status = {
34
+ const {
35
+ timezone = 'America/New_York'
36
+ } = options;
37
+ const tableBody = [];
38
+ followUpIssues.forEach(item => {
39
+ const mappedStatus = (0, _helpers.getStatusDetails)(item.status);
40
+ const status = {
40
41
  text: mappedStatus.text.toUpperCase(),
41
- style: _objectSpread(_objectSpread({}, defaultStyles.small), {}, {
42
+ style: {
43
+ ..._.defaultStyles.small,
42
44
  color: mappedStatus.style.color,
43
45
  alignment: 'center'
44
- })
46
+ }
45
47
  };
46
- var updatedAt = '';
48
+ let updatedAt = '';
47
49
  if (item.updatedAt) {
48
- var format = 'MMM D h:mma'; // e.g. Jan 21 12:59am in the Audit timezone
49
- updatedAt = moment.tz(item.updatedAt, timezone).format(format);
50
+ const format = 'MMM D h:mma'; // e.g. Jan 21 12:59am in the Audit timezone
51
+ updatedAt = _momentTimezone.default.tz(item.updatedAt, timezone).format(format);
50
52
  }
51
- var link = "".concat(LIGHTHOUSE_BASE_URL, "/reports/issues/").concat(item.issueId);
52
- var iconLinkCell = launchIcon ? {
53
+ const link = `${LIGHTHOUSE_BASE_URL}/reports/issues/${item.issueId}`;
54
+ const iconLinkCell = _images.launchIcon ? {
53
55
  alignment: 'center',
54
56
  fit: [8, 8],
55
- image: launchIcon,
56
- link: link
57
+ image: _images.launchIcon,
58
+ link
57
59
  } : {
58
60
  text: ''
59
61
  };
60
- var linkToDestination = item.questionId;
61
- var iconJumpCell = launchIcon ? {
62
+ const linkToDestination = item.questionId;
63
+ const iconJumpCell = _images.launchIcon ? {
62
64
  alignment: 'center',
63
65
  fit: [8, 8],
64
- image: internalLinkIcon,
65
- linkToDestination: linkToDestination
66
+ image: _images.internalLinkIcon,
67
+ linkToDestination
66
68
  } : {
67
69
  text: ''
68
70
  };
69
- var assignees = item.assignees || [];
70
- var assigneeUsername = assignees.length === 0 ? 'Unassigned' : assignees.length === 1 ?
71
+ const assignees = item.assignees || [];
72
+ const assigneeUsername = assignees.length === 0 ? 'Unassigned' : assignees.length === 1 ?
71
73
  // TODO Currently this gives `first last`, I don't think it can fall back to 'Unknown User' here
72
- getUserFullName(assignees, 0) : "".concat(assignees.length, " users");
74
+ (0, _helpers.getUserFullName)(assignees, 0) : `${assignees.length} users`;
73
75
  tableBody.push([iconLinkCell, {
74
76
  text: item.issueTitle || '',
75
- link: link,
77
+ link,
76
78
  style: 'small',
77
- image: launchIcon
79
+ image: _images.launchIcon
78
80
  }, status, {
79
81
  text: assigneeUsername,
80
82
  style: 'small'
81
83
  }, iconJumpCell, {
82
84
  text: item.questionLabel || '',
83
85
  style: 'small',
84
- linkToDestination: linkToDestination
86
+ linkToDestination
85
87
  }, {
86
88
  text: updatedAt || '',
87
89
  style: 'small',
88
90
  alignment: 'right'
89
91
  }]);
90
92
  });
91
- var headerLinkIconCell = launchIcon ? {
93
+ const headerLinkIconCell = _images.launchIcon ? {
92
94
  alignment: 'center',
93
95
  fit: [8, 8],
94
- image: launchIcon
96
+ image: _images.launchIcon
95
97
  } : {
96
98
  text: ''
97
99
  };
98
- var headerJumpIconCell = launchIcon ? {
100
+ const headerJumpIconCell = _images.launchIcon ? {
99
101
  alignment: 'center',
100
102
  fit: [8, 8],
101
- image: internalLinkIcon
103
+ image: _images.internalLinkIcon
102
104
  } : {
103
105
  text: ''
104
106
  };
105
- var headerStyle = {
107
+ const headerStyle = {
106
108
  bold: true,
107
109
  font: 'Gotham',
108
110
  fontSize: 8,
109
111
  alignment: 'left'
110
112
  };
111
- var headerRow = [headerLinkIconCell, {
113
+ const headerRow = [headerLinkIconCell, {
112
114
  text: 'Issue Title',
113
115
  style: headerStyle
114
116
  }, {
@@ -126,8 +128,8 @@ export function buildAuditFollowUps() {
126
128
  style: headerStyle,
127
129
  alignment: 'right'
128
130
  }];
129
- var followUpsTable = sixColumnTable({
130
- body: [headerRow].concat(tableBody),
131
+ const followUpsTable = (0, _.sixColumnTable)({
132
+ body: [headerRow, ...tableBody],
131
133
  style: 'titleTable',
132
134
  widths: [6, '*', 55, 55, 6, '*', '16%'],
133
135
  margin: [0, 0, 0, 30]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["moment","getStatusDetails","getUserFullName","defaultStyles","horizontalLine","sixColumnTable","launchIcon","internalLinkIcon","LIGHTHOUSE_BASE_URL","buildAuditFollowUps","rawFollowUpIssues","arguments","length","undefined","options","sectionTitle","text","style","font","lineHeight","margin","sectionDivider","followUpIssues","filter","item","errorMessage","subTitle","_options$timezone","timezone","tableBody","forEach","mappedStatus","status","toUpperCase","_objectSpread","small","color","alignment","updatedAt","format","tz","link","concat","issueId","iconLinkCell","fit","image","linkToDestination","questionId","iconJumpCell","assignees","assigneeUsername","push","issueTitle","questionLabel","headerLinkIconCell","headerJumpIconCell","headerStyle","bold","fontSize","headerRow","followUpsTable","body","widths"],"sources":["../../../../src/pdf/helpers/build-audit-follow-ups/index.js"],"sourcesContent":["import moment from 'moment-timezone'\nimport { getStatusDetails, getUserFullName } from '../../../helpers'\nimport { defaultStyles, horizontalLine, sixColumnTable } from '../'\nimport { launchIcon, internalLinkIcon } from '../../../images'\n\nconst LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io'\n\nexport function buildAuditFollowUps(rawFollowUpIssues = [], options = {}) {\n const sectionTitle = [\n {\n text: 'Follow-up Issues',\n style: {\n font: 'Gotham',\n lineHeight: 1.1,\n margin: [0, 0, 0, 50],\n },\n },\n ]\n const sectionDivider = horizontalLine({ margin: [0, 0, 0, 0] })\n\n const followUpIssues = rawFollowUpIssues.filter(item => !item.errorMessage)\n if (!followUpIssues.length) {\n // Show a `no follow-up issues` message if there are no follow up issues\n return [\n sectionTitle,\n sectionDivider,\n {\n text: 'No follow-up issues exist for this audit',\n style: defaultStyles.subTitle,\n margin: [0, 5, 0, 50],\n },\n ]\n }\n\n const { timezone = 'America/New_York' } = options\n const tableBody = []\n followUpIssues.forEach(item => {\n const mappedStatus = getStatusDetails(item.status)\n const status = {\n text: mappedStatus.text.toUpperCase(),\n style: {\n ...defaultStyles.small,\n color: mappedStatus.style.color,\n alignment: 'center',\n },\n }\n\n let updatedAt = ''\n if (item.updatedAt) {\n const format = 'MMM D h:mma' // e.g. Jan 21 12:59am in the Audit timezone\n updatedAt = moment.tz(item.updatedAt, timezone).format(format)\n }\n\n const link = `${LIGHTHOUSE_BASE_URL}/reports/issues/${item.issueId}`\n const iconLinkCell = launchIcon\n ? { alignment: 'center', fit: [8, 8], image: launchIcon, link }\n : { text: '' }\n\n const linkToDestination = item.questionId\n const iconJumpCell = launchIcon\n ? {\n alignment: 'center',\n fit: [8, 8],\n image: internalLinkIcon,\n linkToDestination,\n }\n : { text: '' }\n\n const assignees = item.assignees || []\n const assigneeUsername =\n assignees.length === 0\n ? 'Unassigned'\n : assignees.length === 1\n ? // TODO Currently this gives `first last`, I don't think it can fall back to 'Unknown User' here\n getUserFullName(assignees, 0)\n : `${assignees.length} users`\n\n tableBody.push([\n iconLinkCell,\n { text: item.issueTitle || '', link, style: 'small', image: launchIcon },\n status,\n { text: assigneeUsername, style: 'small' },\n iconJumpCell,\n { text: item.questionLabel || '', style: 'small', linkToDestination },\n { text: updatedAt || '', style: 'small', alignment: 'right' },\n ])\n })\n\n const headerLinkIconCell = launchIcon\n ? { alignment: 'center', fit: [8, 8], image: launchIcon }\n : { text: '' }\n\n const headerJumpIconCell = launchIcon\n ? { alignment: 'center', fit: [8, 8], image: internalLinkIcon }\n : { text: '' }\n\n const headerStyle = {\n bold: true,\n font: 'Gotham',\n fontSize: 8,\n alignment: 'left',\n }\n\n const headerRow = [\n headerLinkIconCell,\n { text: 'Issue Title', style: headerStyle },\n { text: 'Status', style: headerStyle, alignment: 'center' },\n { text: 'Assignees', style: headerStyle },\n headerJumpIconCell,\n { text: 'Audit Question', style: headerStyle },\n { text: 'Last Updated', style: headerStyle, alignment: 'right' },\n ]\n\n const followUpsTable = sixColumnTable({\n body: [headerRow, ...tableBody],\n style: 'titleTable',\n widths: [6, '*', 55, 55, 6, '*', '16%'],\n margin: [0, 0, 0, 30],\n })\n\n return [sectionTitle, sectionDivider, followUpsTable]\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_momentTimezone","_interopRequireDefault","require","_helpers","_","_images","LIGHTHOUSE_BASE_URL","buildAuditFollowUps","rawFollowUpIssues","options","sectionTitle","text","style","font","lineHeight","margin","sectionDivider","horizontalLine","followUpIssues","filter","item","errorMessage","length","defaultStyles","subTitle","timezone","tableBody","forEach","mappedStatus","getStatusDetails","status","toUpperCase","small","color","alignment","updatedAt","format","moment","tz","link","issueId","iconLinkCell","launchIcon","fit","image","linkToDestination","questionId","iconJumpCell","internalLinkIcon","assignees","assigneeUsername","getUserFullName","push","issueTitle","questionLabel","headerLinkIconCell","headerJumpIconCell","headerStyle","bold","fontSize","headerRow","followUpsTable","sixColumnTable","body","widths"],"sources":["../../../../src/pdf/helpers/build-audit-follow-ups/index.js"],"sourcesContent":["import moment from 'moment-timezone'\r\nimport { getStatusDetails, getUserFullName } from '../../../helpers'\r\nimport { defaultStyles, horizontalLine, sixColumnTable } from '../'\r\nimport { launchIcon, internalLinkIcon } from '../../../images'\r\n\r\nconst LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io'\r\n\r\nexport function buildAuditFollowUps(rawFollowUpIssues = [], options = {}) {\r\n const sectionTitle = [\r\n {\r\n text: 'Follow-up Issues',\r\n style: {\r\n font: 'Gotham',\r\n lineHeight: 1.1,\r\n margin: [0, 0, 0, 50],\r\n },\r\n },\r\n ]\r\n const sectionDivider = horizontalLine({ margin: [0, 0, 0, 0] })\r\n\r\n const followUpIssues = rawFollowUpIssues.filter(item => !item.errorMessage)\r\n if (!followUpIssues.length) {\r\n // Show a `no follow-up issues` message if there are no follow up issues\r\n return [\r\n sectionTitle,\r\n sectionDivider,\r\n {\r\n text: 'No follow-up issues exist for this audit',\r\n style: defaultStyles.subTitle,\r\n margin: [0, 5, 0, 50],\r\n },\r\n ]\r\n }\r\n\r\n const { timezone = 'America/New_York' } = options\r\n const tableBody = []\r\n followUpIssues.forEach(item => {\r\n const mappedStatus = getStatusDetails(item.status)\r\n const status = {\r\n text: mappedStatus.text.toUpperCase(),\r\n style: {\r\n ...defaultStyles.small,\r\n color: mappedStatus.style.color,\r\n alignment: 'center',\r\n },\r\n }\r\n\r\n let updatedAt = ''\r\n if (item.updatedAt) {\r\n const format = 'MMM D h:mma' // e.g. Jan 21 12:59am in the Audit timezone\r\n updatedAt = moment.tz(item.updatedAt, timezone).format(format)\r\n }\r\n\r\n const link = `${LIGHTHOUSE_BASE_URL}/reports/issues/${item.issueId}`\r\n const iconLinkCell = launchIcon\r\n ? { alignment: 'center', fit: [8, 8], image: launchIcon, link }\r\n : { text: '' }\r\n\r\n const linkToDestination = item.questionId\r\n const iconJumpCell = launchIcon\r\n ? {\r\n alignment: 'center',\r\n fit: [8, 8],\r\n image: internalLinkIcon,\r\n linkToDestination,\r\n }\r\n : { text: '' }\r\n\r\n const assignees = item.assignees || []\r\n const assigneeUsername =\r\n assignees.length === 0\r\n ? 'Unassigned'\r\n : assignees.length === 1\r\n ? // TODO Currently this gives `first last`, I don't think it can fall back to 'Unknown User' here\r\n getUserFullName(assignees, 0)\r\n : `${assignees.length} users`\r\n\r\n tableBody.push([\r\n iconLinkCell,\r\n { text: item.issueTitle || '', link, style: 'small', image: launchIcon },\r\n status,\r\n { text: assigneeUsername, style: 'small' },\r\n iconJumpCell,\r\n { text: item.questionLabel || '', style: 'small', linkToDestination },\r\n { text: updatedAt || '', style: 'small', alignment: 'right' },\r\n ])\r\n })\r\n\r\n const headerLinkIconCell = launchIcon\r\n ? { alignment: 'center', fit: [8, 8], image: launchIcon }\r\n : { text: '' }\r\n\r\n const headerJumpIconCell = launchIcon\r\n ? { alignment: 'center', fit: [8, 8], image: internalLinkIcon }\r\n : { text: '' }\r\n\r\n const headerStyle = {\r\n bold: true,\r\n font: 'Gotham',\r\n fontSize: 8,\r\n alignment: 'left',\r\n }\r\n\r\n const headerRow = [\r\n headerLinkIconCell,\r\n { text: 'Issue Title', style: headerStyle },\r\n { text: 'Status', style: headerStyle, alignment: 'center' },\r\n { text: 'Assignees', style: headerStyle },\r\n headerJumpIconCell,\r\n { text: 'Audit Question', style: headerStyle },\r\n { text: 'Last Updated', style: headerStyle, alignment: 'right' },\r\n ]\r\n\r\n const followUpsTable = sixColumnTable({\r\n body: [headerRow, ...tableBody],\r\n style: 'titleTable',\r\n widths: [6, '*', 55, 55, 6, '*', '16%'],\r\n margin: [0, 0, 0, 30],\r\n })\r\n\r\n return [sectionTitle, sectionDivider, followUpsTable]\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,36 +1,42 @@
1
- import { filter } from 'lodash';
2
- import moment from 'moment-timezone';
3
- export var buildLocationScansBoundaries = function buildLocationScansBoundaries(start, timezone) {
4
- var firstBoundary = moment.tz(start, timezone);
5
- var boundaries = [];
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.buildLocationScansContent = exports.buildLocationScansBoundaries = void 0;
8
+ var _lodash = require("lodash");
9
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
10
+ const buildLocationScansBoundaries = (start, timezone) => {
11
+ const firstBoundary = _momentTimezone.default.tz(start, timezone);
12
+ const boundaries = [];
6
13
  // add 9 boundaries (3 hours apart) to an array
7
14
  // these will mark the edges of 8 3-hour buckets of scan events
8
15
  // ex: [start, start+3hrs, start+6hrs, ..., start+24hrs]
9
16
  boundaries.push(firstBoundary);
10
- for (var i = 1; i < 9; i++) {
11
- var intervalSize = 3 * i;
12
- var nextBoundary = moment(firstBoundary).add(intervalSize, 'hours');
17
+ for (let i = 1; i < 9; i++) {
18
+ const intervalSize = 3 * i;
19
+ const nextBoundary = (0, _momentTimezone.default)(firstBoundary).add(intervalSize, 'hours');
13
20
  boundaries.push(nextBoundary);
14
21
  }
15
22
  return boundaries;
16
23
  };
17
- export var buildLocationScansContent = function buildLocationScansContent(boundaries, events, timezone) {
24
+ exports.buildLocationScansBoundaries = buildLocationScansBoundaries;
25
+ const buildLocationScansContent = (boundaries, events, timezone) => {
18
26
  // loop through boundaries filtering for events between the current boundary and the next one
19
27
  // skip the last one as it's the end and has no "next one"
20
28
  // ex: [interval1Events, interval2Events, ..., interval8Events] where interval1Events is an array
21
29
  // of events that start on or after boundary 1 and before boundary 2
22
- var eventsArray = [];
23
- var _loop = function _loop(i) {
24
- var eventsInThisInterval = filter(events, function (event) {
25
- var eventMoment = moment.tz(event.timestamp, timezone);
30
+ const eventsArray = [];
31
+ for (let i = 0; i < boundaries.length - 1; i++) {
32
+ const eventsInThisInterval = (0, _lodash.filter)(events, function (event) {
33
+ const eventMoment = _momentTimezone.default.tz(event.timestamp, timezone);
26
34
  return eventMoment.isSameOrAfter(boundaries[i]) && eventMoment.isBefore(boundaries[i + 1]);
27
35
  });
28
36
  // add events to interval
29
37
  eventsArray.push(eventsInThisInterval);
30
- };
31
- for (var i = 0; i < boundaries.length - 1; i++) {
32
- _loop(i);
33
38
  }
34
39
  return eventsArray;
35
40
  };
41
+ exports.buildLocationScansContent = buildLocationScansContent;
36
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["filter","moment","buildLocationScansBoundaries","start","timezone","firstBoundary","tz","boundaries","push","i","intervalSize","nextBoundary","add","buildLocationScansContent","events","eventsArray","_loop","eventsInThisInterval","event","eventMoment","timestamp","isSameOrAfter","isBefore","length"],"sources":["../../../../src/pdf/helpers/build-location-scans-content/index.js"],"sourcesContent":["import { filter } from 'lodash'\nimport moment from 'moment-timezone'\n\nexport const buildLocationScansBoundaries = (start, timezone) => {\n const firstBoundary = moment.tz(start, timezone)\n const boundaries = []\n // add 9 boundaries (3 hours apart) to an array\n // these will mark the edges of 8 3-hour buckets of scan events\n // ex: [start, start+3hrs, start+6hrs, ..., start+24hrs]\n boundaries.push(firstBoundary)\n for (let i = 1; i < 9; i++) {\n const intervalSize = 3 * i\n const nextBoundary = moment(firstBoundary).add(intervalSize, 'hours')\n boundaries.push(nextBoundary)\n }\n return boundaries\n}\n\nexport const buildLocationScansContent = (boundaries, events, timezone) => {\n // loop through boundaries filtering for events between the current boundary and the next one\n // skip the last one as it's the end and has no \"next one\"\n // ex: [interval1Events, interval2Events, ..., interval8Events] where interval1Events is an array\n // of events that start on or after boundary 1 and before boundary 2\n const eventsArray = []\n for (let i = 0; i < boundaries.length - 1; i++) {\n const eventsInThisInterval = filter(events, function(event) {\n const eventMoment = moment.tz(event.timestamp, timezone)\n return (\n eventMoment.isSameOrAfter(boundaries[i]) &&\n eventMoment.isBefore(boundaries[i + 1])\n )\n })\n // add events to interval\n eventsArray.push(eventsInThisInterval)\n }\n return eventsArray\n}\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,QAAQ;AAC/B,OAAOC,MAAM,MAAM,iBAAiB;AAEpC,OAAO,IAAMC,4BAA4B,GAAG,SAA/BA,4BAA4BA,CAAIC,KAAK,EAAEC,QAAQ,EAAK;EAC/D,IAAMC,aAAa,GAAGJ,MAAM,CAACK,EAAE,CAACH,KAAK,EAAEC,QAAQ,CAAC;EAChD,IAAMG,UAAU,GAAG,EAAE;EACrB;EACA;EACA;EACAA,UAAU,CAACC,IAAI,CAACH,aAAa,CAAC;EAC9B,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC1B,IAAMC,YAAY,GAAG,CAAC,GAAGD,CAAC;IAC1B,IAAME,YAAY,GAAGV,MAAM,CAACI,aAAa,CAAC,CAACO,GAAG,CAACF,YAAY,EAAE,OAAO,CAAC;IACrEH,UAAU,CAACC,IAAI,CAACG,YAAY,CAAC;EAC/B;EACA,OAAOJ,UAAU;AACnB,CAAC;AAED,OAAO,IAAMM,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAIN,UAAU,EAAEO,MAAM,EAAEV,QAAQ,EAAK;EACzE;EACA;EACA;EACA;EACA,IAAMW,WAAW,GAAG,EAAE;EAAA,IAAAC,KAAA,YAAAA,MAAAP,CAAA,EAC0B;IAC9C,IAAMQ,oBAAoB,GAAGjB,MAAM,CAACc,MAAM,EAAE,UAASI,KAAK,EAAE;MAC1D,IAAMC,WAAW,GAAGlB,MAAM,CAACK,EAAE,CAACY,KAAK,CAACE,SAAS,EAAEhB,QAAQ,CAAC;MACxD,OACEe,WAAW,CAACE,aAAa,CAACd,UAAU,CAACE,CAAC,CAAC,CAAC,IACxCU,WAAW,CAACG,QAAQ,CAACf,UAAU,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,CAAC,CAAC;IACF;IACAM,WAAW,CAACP,IAAI,CAACS,oBAAoB,CAAC;EACxC,CAAC;EAVD,KAAK,IAAIR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,UAAU,CAACgB,MAAM,GAAG,CAAC,EAAEd,CAAC,EAAE;IAAAO,KAAA,CAAAP,CAAA;EAAA;EAW9C,OAAOM,WAAW;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_lodash","require","_momentTimezone","_interopRequireDefault","buildLocationScansBoundaries","start","timezone","firstBoundary","moment","tz","boundaries","push","i","intervalSize","nextBoundary","add","exports","buildLocationScansContent","events","eventsArray","length","eventsInThisInterval","filter","event","eventMoment","timestamp","isSameOrAfter","isBefore"],"sources":["../../../../src/pdf/helpers/build-location-scans-content/index.js"],"sourcesContent":["import { filter } from 'lodash'\r\nimport moment from 'moment-timezone'\r\n\r\nexport const buildLocationScansBoundaries = (start, timezone) => {\r\n const firstBoundary = moment.tz(start, timezone)\r\n const boundaries = []\r\n // add 9 boundaries (3 hours apart) to an array\r\n // these will mark the edges of 8 3-hour buckets of scan events\r\n // ex: [start, start+3hrs, start+6hrs, ..., start+24hrs]\r\n boundaries.push(firstBoundary)\r\n for (let i = 1; i < 9; i++) {\r\n const intervalSize = 3 * i\r\n const nextBoundary = moment(firstBoundary).add(intervalSize, 'hours')\r\n boundaries.push(nextBoundary)\r\n }\r\n return boundaries\r\n}\r\n\r\nexport const buildLocationScansContent = (boundaries, events, timezone) => {\r\n // loop through boundaries filtering for events between the current boundary and the next one\r\n // skip the last one as it's the end and has no \"next one\"\r\n // ex: [interval1Events, interval2Events, ..., interval8Events] where interval1Events is an array\r\n // of events that start on or after boundary 1 and before boundary 2\r\n const eventsArray = []\r\n for (let i = 0; i < boundaries.length - 1; i++) {\r\n const eventsInThisInterval = filter(events, function(event) {\r\n const eventMoment = moment.tz(event.timestamp, timezone)\r\n return (\r\n eventMoment.isSameOrAfter(boundaries[i]) &&\r\n eventMoment.isBefore(boundaries[i + 1])\r\n )\r\n })\r\n // add events to interval\r\n eventsArray.push(eventsInThisInterval)\r\n }\r\n return eventsArray\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEO,MAAMG,4BAA4B,GAAGA,CAACC,KAAK,EAAEC,QAAQ,KAAK;EAC/D,MAAMC,aAAa,GAAGC,uBAAM,CAACC,EAAE,CAACJ,KAAK,EAAEC,QAAQ,CAAC;EAChD,MAAMI,UAAU,GAAG,EAAE;EACrB;EACA;EACA;EACAA,UAAU,CAACC,IAAI,CAACJ,aAAa,CAAC;EAC9B,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC1B,MAAMC,YAAY,GAAG,CAAC,GAAGD,CAAC;IAC1B,MAAME,YAAY,GAAG,IAAAN,uBAAM,EAACD,aAAa,CAAC,CAACQ,GAAG,CAACF,YAAY,EAAE,OAAO,CAAC;IACrEH,UAAU,CAACC,IAAI,CAACG,YAAY,CAAC;EAC/B;EACA,OAAOJ,UAAU;AACnB,CAAC;AAAAM,OAAA,CAAAZ,4BAAA,GAAAA,4BAAA;AAEM,MAAMa,yBAAyB,GAAGA,CAACP,UAAU,EAAEQ,MAAM,EAAEZ,QAAQ,KAAK;EACzE;EACA;EACA;EACA;EACA,MAAMa,WAAW,GAAG,EAAE;EACtB,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,UAAU,CAACU,MAAM,GAAG,CAAC,EAAER,CAAC,EAAE,EAAE;IAC9C,MAAMS,oBAAoB,GAAG,IAAAC,cAAM,EAACJ,MAAM,EAAE,UAASK,KAAK,EAAE;MAC1D,MAAMC,WAAW,GAAGhB,uBAAM,CAACC,EAAE,CAACc,KAAK,CAACE,SAAS,EAAEnB,QAAQ,CAAC;MACxD,OACEkB,WAAW,CAACE,aAAa,CAAChB,UAAU,CAACE,CAAC,CAAC,CAAC,IACxCY,WAAW,CAACG,QAAQ,CAACjB,UAAU,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,CAAC,CAAC;IACF;IACAO,WAAW,CAACR,IAAI,CAACU,oBAAoB,CAAC;EACxC;EACA,OAAOF,WAAW;AACpB,CAAC;AAAAH,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}