@lighthouse/common 6.2.0-canary.8 → 6.2.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.
@@ -13,17 +13,27 @@ function buildFetchUrl(url, options) {
13
13
  height,
14
14
  width,
15
15
  quality,
16
- shouldUseCloudfront
16
+ shouldUseCloudfront,
17
+ Policy,
18
+ KeyPairId,
19
+ Signature
17
20
  } = options;
18
21
  if (shouldUseCloudfront) {
19
- const transformations = [];
20
- if (width) transformations.push(`width=${width.toString()}`);
21
- if (height) transformations.push(`height=${height.toString()}`);
22
- if (quality) transformations.push(`quality=${quality.toString()}`);
23
- transformations.push(`fit=contain`);
24
- const transformationsString = transformations.join('&');
25
- const fetchUrl = `${cloudfrontBaseUrl}/${url}?${transformationsString}`;
26
- return fetchUrl;
22
+ const isWebContext = shouldUseCloudfront && typeof window === 'object';
23
+ const paramMap = {
24
+ width,
25
+ height,
26
+ quality,
27
+ fit: 'contain'
28
+ };
29
+ if (isWebContext) {
30
+ paramMap.Policy = Policy;
31
+ paramMap['Key-Pair-Id'] = KeyPairId;
32
+ paramMap.Signature = Signature;
33
+ }
34
+ const params = Object.entries(paramMap).filter(([, value]) => value != null).map(([key, value]) => `${key}=${String(value)}`);
35
+ const paramsString = params.join('&');
36
+ return `${cloudfrontBaseUrl}/${url}?${paramsString}`;
27
37
  }
28
38
  const transformations = [];
29
39
  let transformationsString = '';
@@ -27,22 +27,20 @@ const fetchImageForPdfGeneratorService = async function (url) {
27
27
  if (!applicationId) {
28
28
  throw new Error('Requestor has insufficient permissions');
29
29
  }
30
- const {
31
- path,
32
- queryParams
33
- } = parseUrlString(url);
30
+ const keyWithTransformations = url.substring(url.indexOf(applicationId));
34
31
  const alreadyTransformedImage = await fetchResourceFromS3({
35
32
  bucketName: `${process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE}`,
36
- key: `${path}/${queryParams}`
33
+ key: keyWithTransformations
37
34
  });
38
35
  if (alreadyTransformedImage?.body) {
39
36
  const fullDataUrl = formatBase64Image({
40
37
  base64String: alreadyTransformedImage.body.toString('base64'),
41
- key: url
38
+ key: keyWithTransformations
42
39
  });
43
40
  return fullDataUrl;
44
41
  }
45
- const transformerResponse = await requestImageTransformation(url);
42
+ const keyWithoutTransformations = `/${keyWithTransformations.split('?')[0]}`;
43
+ const transformerResponse = await requestImageTransformation(keyWithoutTransformations);
46
44
  const statusCode = transformerResponse.statusCode;
47
45
  switch (statusCode) {
48
46
  case 200:
@@ -50,7 +48,7 @@ const fetchImageForPdfGeneratorService = async function (url) {
50
48
  console.debug('Image transformation successful');
51
49
  const fullDataUrl = formatBase64Image({
52
50
  base64String: transformerResponse.body.toString('base64'),
53
- key: url
51
+ key: keyWithTransformations
54
52
  });
55
53
  return fullDataUrl;
56
54
  }
@@ -103,9 +101,6 @@ async function requestImageTransformation(key) {
103
101
  InvocationType: 'RequestResponse',
104
102
  Payload: JSON.stringify(lambdaEvent)
105
103
  };
106
- console.log({
107
- params
108
- });
109
104
  try {
110
105
  const result = await lambda.invoke(params).promise();
111
106
  const response = JSON.parse(result.Payload);
@@ -165,32 +160,4 @@ function formatBase64Image({
165
160
  throw new Error('InvalidImageError');
166
161
  }
167
162
  return fullDataUrl;
168
- }
169
-
170
- /**
171
- * Parses a URL-like string into path and query parameters
172
- * @param {string} urlString - String like "<applicationId>/<path>/filename.jpeg?width=100&height=100"
173
- * @returns {Object} - Object with { path: string, queryParams: string }
174
- * @example
175
- * parseUrlString("abc123/folder/image.jpeg?width=100&height=100")
176
- * // Returns: { path: "abc123/folder/image.jpeg", queryParams: "width=100,height=100" }
177
- */
178
- function parseUrlString(urlString) {
179
- if (!urlString || typeof urlString !== 'string') {
180
- throw new Error('URL string is required and must be a string');
181
- }
182
- const [path, queryString] = urlString.split('?');
183
- if (!path) {
184
- throw new Error('Invalid URL string: missing path component');
185
- }
186
- if (!queryString) {
187
- return `${path}`;
188
- }
189
-
190
- // Parse query parameters and convert to comma-separated format
191
- const queryParams = queryString.split('&').join(',');
192
- return {
193
- path,
194
- queryParams
195
- };
196
163
  }
@@ -6,12 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.fetchImageForWeb = void 0;
7
7
  var _images = require("../../images");
8
8
  var _fetchLighthouseLogo = require("../fetch-lighthouse-logo");
9
- var _fetchImage = require("../fetch-image");
10
- var _imageValidators = require("../image-validators");
11
- const contentTypes = {
12
- 'image/png': 'png',
13
- 'image/jpeg': 'jpeg'
14
- };
15
9
  const fetchImageForWeb = async function (url, options) {
16
10
  const {
17
11
  isHeader = false,
@@ -21,26 +15,18 @@ const fetchImageForWeb = async function (url, options) {
21
15
  } = options;
22
16
  try {
23
17
  const firstParamConnector = url.indexOf('?') > -1 ? '&' : '?';
24
- const urlToEncode = `${url}${firstParamConnector}Signature=${Signature}&Policy=${Policy}&Key-Pair-Id=${KeyPairId}`;
25
- const encodedUrl = encodeURI(urlToEncode);
18
+ const hasSignatureParams = url.includes('Signature=') && url.includes('Policy=') && url.includes('Key-Pair-Id=');
19
+ const constructedUrl = !hasSignatureParams ? `${url}${firstParamConnector}Signature=${Signature}&Policy=${Policy}&Key-Pair-Id=${KeyPairId}` : url;
26
20
  console.debug('Fetching image via CloudFront For Web');
27
- const imageResponse = await fetch(encodedUrl);
21
+ const imageResponse = await fetch(constructedUrl);
28
22
  const contentLengthHeader = imageResponse.headers.get('content-length');
29
- const contentType = imageResponse.headers.get('content-type');
30
23
  if (contentLengthHeader === '0') {
31
24
  return Promise.reject(new Error(`Failed to fetch image as no content length: ${encodedUrl}`));
32
25
  }
33
26
  if (!imageResponse.ok) {
34
27
  return Promise.reject(new Error(`Failed to fetch image: ${encodedUrl}`));
35
28
  }
36
- const imageType = contentTypes[contentType];
37
- const logoArrayBuffer = await imageResponse.arrayBuffer();
38
- const base64Flag = `data:image/${imageType};base64,`;
39
- const imageStr = (0, _fetchImage.arrayBufferToBase64)(logoArrayBuffer);
40
- const base64 = `${base64Flag}${imageStr}`;
41
- const isValid = (0, _imageValidators.validateBase64Image)(base64);
42
- if (!isValid) throw new Error('InvalidImageError');
43
- return base64;
29
+ return await imageResponse.arrayBuffer();
44
30
  } catch (error) {
45
31
  if (isHeader) {
46
32
  // NOTE: Replace failed headers with LH logo
@@ -12,6 +12,9 @@ function getAuditItemsData(items, data) {
12
12
  awsS3BaseUrl,
13
13
  cloudinaryBaseUrl,
14
14
  cloudfrontBaseUrl,
15
+ Policy,
16
+ KeyPairId,
17
+ Signature,
15
18
  shouldUseCloudfront
16
19
  } = {},
17
20
  entity: {
@@ -55,11 +58,14 @@ function getAuditItemsData(items, data) {
55
58
  awsS3BaseUrl,
56
59
  cloudfrontBaseUrl,
57
60
  cloudinaryBaseUrl,
58
- shouldUseCloudfront,
59
- fit: true,
60
61
  height: 400,
61
62
  width: 600,
62
- quality: 50
63
+ quality: 50,
64
+ fit: true,
65
+ shouldUseCloudfront,
66
+ Policy,
67
+ KeyPairId,
68
+ Signature
63
69
  });
64
70
  const link = `${awsS3BaseUrl}/${asset}`;
65
71
  const thumbnailUrl = (0, _.buildFetchUrl)(asset, {
@@ -68,7 +74,12 @@ function getAuditItemsData(items, data) {
68
74
  cloudinaryBaseUrl,
69
75
  shouldUseCloudfront,
70
76
  width: 100,
71
- quality: 50
77
+ quality: 50,
78
+ fit: true,
79
+ shouldUseCloudfront,
80
+ Policy,
81
+ KeyPairId,
82
+ Signature
72
83
  });
73
84
  const key = `${groupIndex}-item-asset-${assetIndex}`;
74
85
  return {
@@ -196,7 +196,7 @@ function generateContent(data) {
196
196
  timezone
197
197
  });
198
198
  const promises = {
199
- entry: (0, _helpers.buildAuditContent)(groupedData.items),
199
+ entry: (0, _helpers.buildAuditContent)(groupedData.items, data.settings),
200
200
  footerTemplate: (0, _helpers.buildTemplateContent)(footerFields.formGroups, data),
201
201
  headerTemplate: (0, _helpers.buildTemplateContent)(headerFields.formGroups, data)
202
202
  };
@@ -1,3 +1,5 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _typeof from "@babel/runtime/helpers/typeof";
1
3
  export function buildFetchUrl(url, options) {
2
4
  var awsS3BaseUrl = options.awsS3BaseUrl,
3
5
  _options$cloudfrontBa = options.cloudfrontBaseUrl,
@@ -7,16 +9,35 @@ export function buildFetchUrl(url, options) {
7
9
  height = options.height,
8
10
  width = options.width,
9
11
  quality = options.quality,
10
- shouldUseCloudfront = options.shouldUseCloudfront;
12
+ shouldUseCloudfront = options.shouldUseCloudfront,
13
+ Policy = options.Policy,
14
+ KeyPairId = options.KeyPairId,
15
+ Signature = options.Signature;
11
16
  if (shouldUseCloudfront) {
12
- var _transformations = [];
13
- if (width) _transformations.push("width=".concat(width.toString()));
14
- if (height) _transformations.push("height=".concat(height.toString()));
15
- if (quality) _transformations.push("quality=".concat(quality.toString()));
16
- _transformations.push("fit=contain");
17
- var _transformationsString = _transformations.join('&');
18
- var _fetchUrl = "".concat(cloudfrontBaseUrl, "/").concat(url, "?").concat(_transformationsString);
19
- return _fetchUrl;
17
+ var isWebContext = shouldUseCloudfront && (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object';
18
+ var paramMap = {
19
+ width: width,
20
+ height: height,
21
+ quality: quality,
22
+ fit: 'contain'
23
+ };
24
+ if (isWebContext) {
25
+ paramMap.Policy = Policy;
26
+ paramMap['Key-Pair-Id'] = KeyPairId;
27
+ paramMap.Signature = Signature;
28
+ }
29
+ var params = Object.entries(paramMap).filter(function (_ref) {
30
+ var _ref2 = _slicedToArray(_ref, 2),
31
+ value = _ref2[1];
32
+ return value != null;
33
+ }).map(function (_ref3) {
34
+ var _ref4 = _slicedToArray(_ref3, 2),
35
+ key = _ref4[0],
36
+ value = _ref4[1];
37
+ return "".concat(key, "=").concat(String(value));
38
+ });
39
+ var paramsString = params.join('&');
40
+ return "".concat(cloudfrontBaseUrl, "/").concat(url, "?").concat(paramsString);
20
41
  }
21
42
  var transformations = [];
22
43
  var transformationsString = '';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["buildFetchUrl","url","options","awsS3BaseUrl","_options$cloudfrontBa","cloudfrontBaseUrl","cloudinaryBaseUrl","fit","height","width","quality","shouldUseCloudfront","transformations","push","concat","toString","transformationsString","join","fetchUrl"],"sources":["../../../src/helpers/build-fetch-url/index.js"],"sourcesContent":["export function buildFetchUrl(url, options) {\n const {\n awsS3BaseUrl,\n cloudfrontBaseUrl = '',\n cloudinaryBaseUrl,\n fit,\n height,\n width,\n quality,\n shouldUseCloudfront,\n } = options\n\n if (shouldUseCloudfront) {\n const transformations = []\n\n if (width) transformations.push(`width=${width.toString()}`)\n if (height) transformations.push(`height=${height.toString()}`)\n if (quality) transformations.push(`quality=${quality.toString()}`)\n transformations.push(`fit=contain`)\n\n const transformationsString = transformations.join('&')\n\n const fetchUrl = `${cloudfrontBaseUrl}/${url}?${transformationsString}`\n return fetchUrl\n }\n\n const transformations = []\n let transformationsString = ''\n\n if (width) transformations.push(`w_${width.toString()}`)\n if (height) transformations.push(`h_${height.toString()}`)\n if (quality) transformations.push(`q_${quality.toString()}`)\n if (fit) transformations.push('c_fit')\n\n transformationsString = `${transformations.join(',')}/`\n\n const fetchUrl = `${cloudinaryBaseUrl}/${transformationsString}${awsS3BaseUrl}/${url}`\n\n return fetchUrl\n}\n"],"mappings":"AAAA,OAAO,SAASA,aAAaA,CAACC,GAAG,EAAEC,OAAO,EAAE;EAC1C,IACEC,YAAY,GAQVD,OAAO,CARTC,YAAY;IAAAC,qBAAA,GAQVF,OAAO,CAPTG,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;IACtBE,iBAAiB,GAMfJ,OAAO,CANTI,iBAAiB;IACjBC,GAAG,GAKDL,OAAO,CALTK,GAAG;IACHC,MAAM,GAIJN,OAAO,CAJTM,MAAM;IACNC,KAAK,GAGHP,OAAO,CAHTO,KAAK;IACLC,OAAO,GAELR,OAAO,CAFTQ,OAAO;IACPC,mBAAmB,GACjBT,OAAO,CADTS,mBAAmB;EAGrB,IAAIA,mBAAmB,EAAE;IACvB,IAAMC,gBAAe,GAAG,EAAE;IAE1B,IAAIH,KAAK,EAAEG,gBAAe,CAACC,IAAI,UAAAC,MAAA,CAAUL,KAAK,CAACM,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC5D,IAAIP,MAAM,EAAEI,gBAAe,CAACC,IAAI,WAAAC,MAAA,CAAWN,MAAM,CAACO,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC/D,IAAIL,OAAO,EAAEE,gBAAe,CAACC,IAAI,YAAAC,MAAA,CAAYJ,OAAO,CAACK,QAAQ,CAAC,CAAC,CAAE,CAAC;IAClEH,gBAAe,CAACC,IAAI,cAAc,CAAC;IAEnC,IAAMG,sBAAqB,GAAGJ,gBAAe,CAACK,IAAI,CAAC,GAAG,CAAC;IAEvD,IAAMC,SAAQ,MAAAJ,MAAA,CAAMT,iBAAiB,OAAAS,MAAA,CAAIb,GAAG,OAAAa,MAAA,CAAIE,sBAAqB,CAAE;IACvE,OAAOE,SAAQ;EACjB;EAEA,IAAMN,eAAe,GAAG,EAAE;EAC1B,IAAII,qBAAqB,GAAG,EAAE;EAE9B,IAAIP,KAAK,EAAEG,eAAe,CAACC,IAAI,MAAAC,MAAA,CAAML,KAAK,CAACM,QAAQ,CAAC,CAAC,CAAE,CAAC;EACxD,IAAIP,MAAM,EAAEI,eAAe,CAACC,IAAI,MAAAC,MAAA,CAAMN,MAAM,CAACO,QAAQ,CAAC,CAAC,CAAE,CAAC;EAC1D,IAAIL,OAAO,EAAEE,eAAe,CAACC,IAAI,MAAAC,MAAA,CAAMJ,OAAO,CAACK,QAAQ,CAAC,CAAC,CAAE,CAAC;EAC5D,IAAIR,GAAG,EAAEK,eAAe,CAACC,IAAI,CAAC,OAAO,CAAC;EAEtCG,qBAAqB,MAAAF,MAAA,CAAMF,eAAe,CAACK,IAAI,CAAC,GAAG,CAAC,MAAG;EAEvD,IAAMC,QAAQ,MAAAJ,MAAA,CAAMR,iBAAiB,OAAAQ,MAAA,CAAIE,qBAAqB,EAAAF,MAAA,CAAGX,YAAY,OAAAW,MAAA,CAAIb,GAAG,CAAE;EAEtF,OAAOiB,QAAQ;AACjB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["buildFetchUrl","url","options","awsS3BaseUrl","_options$cloudfrontBa","cloudfrontBaseUrl","cloudinaryBaseUrl","fit","height","width","quality","shouldUseCloudfront","Policy","KeyPairId","Signature","isWebContext","window","_typeof","paramMap","params","Object","entries","filter","_ref","_ref2","_slicedToArray","value","map","_ref3","_ref4","key","concat","String","paramsString","join","transformations","transformationsString","push","toString","fetchUrl"],"sources":["../../../src/helpers/build-fetch-url/index.js"],"sourcesContent":["export function buildFetchUrl(url, options) {\n const {\n awsS3BaseUrl,\n cloudfrontBaseUrl = '',\n cloudinaryBaseUrl,\n fit,\n height,\n width,\n quality,\n shouldUseCloudfront,\n Policy,\n KeyPairId,\n Signature,\n } = options\n\n if (shouldUseCloudfront) {\n const isWebContext = shouldUseCloudfront && typeof window === 'object'\n\n const paramMap = {\n width,\n height,\n quality,\n fit: 'contain',\n }\n\n if (isWebContext) {\n paramMap.Policy = Policy\n paramMap['Key-Pair-Id'] = KeyPairId\n paramMap.Signature = Signature\n }\n const params = Object.entries(paramMap)\n .filter(([, value]) => value != null)\n .map(([key, value]) => `${key}=${String(value)}`)\n\n const paramsString = params.join('&')\n return `${cloudfrontBaseUrl}/${url}?${paramsString}`\n }\n\n const transformations = []\n let transformationsString = ''\n\n if (width) transformations.push(`w_${width.toString()}`)\n if (height) transformations.push(`h_${height.toString()}`)\n if (quality) transformations.push(`q_${quality.toString()}`)\n if (fit) transformations.push('c_fit')\n\n transformationsString = `${transformations.join(',')}/`\n\n const fetchUrl = `${cloudinaryBaseUrl}/${transformationsString}${awsS3BaseUrl}/${url}`\n\n return fetchUrl\n}\n"],"mappings":";;AAAA,OAAO,SAASA,aAAaA,CAACC,GAAG,EAAEC,OAAO,EAAE;EAC1C,IACEC,YAAY,GAWVD,OAAO,CAXTC,YAAY;IAAAC,qBAAA,GAWVF,OAAO,CAVTG,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;IACtBE,iBAAiB,GASfJ,OAAO,CATTI,iBAAiB;IACjBC,GAAG,GAQDL,OAAO,CARTK,GAAG;IACHC,MAAM,GAOJN,OAAO,CAPTM,MAAM;IACNC,KAAK,GAMHP,OAAO,CANTO,KAAK;IACLC,OAAO,GAKLR,OAAO,CALTQ,OAAO;IACPC,mBAAmB,GAIjBT,OAAO,CAJTS,mBAAmB;IACnBC,MAAM,GAGJV,OAAO,CAHTU,MAAM;IACNC,SAAS,GAEPX,OAAO,CAFTW,SAAS;IACTC,SAAS,GACPZ,OAAO,CADTY,SAAS;EAGX,IAAIH,mBAAmB,EAAE;IACvB,IAAMI,YAAY,GAAGJ,mBAAmB,IAAI,QAAOK,MAAM,iCAAAC,OAAA,CAAND,MAAM,OAAK,QAAQ;IAEtE,IAAME,QAAQ,GAAG;MACfT,KAAK,EAALA,KAAK;MACLD,MAAM,EAANA,MAAM;MACNE,OAAO,EAAPA,OAAO;MACPH,GAAG,EAAE;IACP,CAAC;IAED,IAAIQ,YAAY,EAAE;MAChBG,QAAQ,CAACN,MAAM,GAAGA,MAAM;MACxBM,QAAQ,CAAC,aAAa,CAAC,GAAGL,SAAS;MACnCK,QAAQ,CAACJ,SAAS,GAAGA,SAAS;IAChC;IACA,IAAMK,MAAM,GAAGC,MAAM,CAACC,OAAO,CAACH,QAAQ,CAAC,CACpCI,MAAM,CAAC,UAAAC,IAAA;MAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,IAAA;QAAIG,KAAK,GAAAF,KAAA;MAAA,OAAME,KAAK,IAAI,IAAI;IAAA,EAAC,CACpCC,GAAG,CAAC,UAAAC,KAAA;MAAA,IAAAC,KAAA,GAAAJ,cAAA,CAAAG,KAAA;QAAEE,GAAG,GAAAD,KAAA;QAAEH,KAAK,GAAAG,KAAA;MAAA,UAAAE,MAAA,CAASD,GAAG,OAAAC,MAAA,CAAIC,MAAM,CAACN,KAAK,CAAC;IAAA,CAAE,CAAC;IAEnD,IAAMO,YAAY,GAAGd,MAAM,CAACe,IAAI,CAAC,GAAG,CAAC;IACrC,UAAAH,MAAA,CAAU1B,iBAAiB,OAAA0B,MAAA,CAAI9B,GAAG,OAAA8B,MAAA,CAAIE,YAAY;EACpD;EAEA,IAAME,eAAe,GAAG,EAAE;EAC1B,IAAIC,qBAAqB,GAAG,EAAE;EAE9B,IAAI3B,KAAK,EAAE0B,eAAe,CAACE,IAAI,MAAAN,MAAA,CAAMtB,KAAK,CAAC6B,QAAQ,CAAC,CAAC,CAAE,CAAC;EACxD,IAAI9B,MAAM,EAAE2B,eAAe,CAACE,IAAI,MAAAN,MAAA,CAAMvB,MAAM,CAAC8B,QAAQ,CAAC,CAAC,CAAE,CAAC;EAC1D,IAAI5B,OAAO,EAAEyB,eAAe,CAACE,IAAI,MAAAN,MAAA,CAAMrB,OAAO,CAAC4B,QAAQ,CAAC,CAAC,CAAE,CAAC;EAC5D,IAAI/B,GAAG,EAAE4B,eAAe,CAACE,IAAI,CAAC,OAAO,CAAC;EAEtCD,qBAAqB,MAAAL,MAAA,CAAMI,eAAe,CAACD,IAAI,CAAC,GAAG,CAAC,MAAG;EAEvD,IAAMK,QAAQ,MAAAR,MAAA,CAAMzB,iBAAiB,OAAAyB,MAAA,CAAIK,qBAAqB,EAAAL,MAAA,CAAG5B,YAAY,OAAA4B,MAAA,CAAI9B,GAAG,CAAE;EAEtF,OAAOsC,QAAQ;AACjB","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
3
  import { validateBase64Image } from '../image-validators';
@@ -12,7 +11,7 @@ var s3 = new AWS.S3({
12
11
  });
13
12
  export var fetchImageForPdfGeneratorService = /*#__PURE__*/function () {
14
13
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(url) {
15
- var urlMatch, applicationId, _parseUrlString, path, queryParams, alreadyTransformedImage, fullDataUrl, transformerResponse, statusCode, _fullDataUrl, _transformerResponse$, redirectLocation, newlyTransformedImage, _fullDataUrl2, _t;
14
+ var urlMatch, applicationId, keyWithTransformations, alreadyTransformedImage, fullDataUrl, keyWithoutTransformations, transformerResponse, statusCode, _fullDataUrl, _transformerResponse$, redirectLocation, newlyTransformedImage, _fullDataUrl2, _t;
16
15
  return _regeneratorRuntime.wrap(function (_context) {
17
16
  while (1) switch (_context.prev = _context.next) {
18
17
  case 0:
@@ -31,11 +30,11 @@ export var fetchImageForPdfGeneratorService = /*#__PURE__*/function () {
31
30
  }
32
31
  throw new Error('Requestor has insufficient permissions');
33
32
  case 2:
34
- _parseUrlString = parseUrlString(url), path = _parseUrlString.path, queryParams = _parseUrlString.queryParams;
33
+ keyWithTransformations = url.substring(url.indexOf(applicationId));
35
34
  _context.next = 3;
36
35
  return fetchResourceFromS3({
37
36
  bucketName: "".concat(process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE),
38
- key: "".concat(path, "/").concat(queryParams)
37
+ key: keyWithTransformations
39
38
  });
40
39
  case 3:
41
40
  alreadyTransformedImage = _context.sent;
@@ -45,12 +44,13 @@ export var fetchImageForPdfGeneratorService = /*#__PURE__*/function () {
45
44
  }
46
45
  fullDataUrl = formatBase64Image({
47
46
  base64String: alreadyTransformedImage.body.toString('base64'),
48
- key: url
47
+ key: keyWithTransformations
49
48
  });
50
49
  return _context.abrupt("return", fullDataUrl);
51
50
  case 4:
51
+ keyWithoutTransformations = "/".concat(keyWithTransformations.split('?')[0]);
52
52
  _context.next = 5;
53
- return requestImageTransformation(url);
53
+ return requestImageTransformation(keyWithoutTransformations);
54
54
  case 5:
55
55
  transformerResponse = _context.sent;
56
56
  statusCode = transformerResponse.statusCode;
@@ -61,7 +61,7 @@ export var fetchImageForPdfGeneratorService = /*#__PURE__*/function () {
61
61
  console.debug('Image transformation successful');
62
62
  _fullDataUrl = formatBase64Image({
63
63
  base64String: transformerResponse.body.toString('base64'),
64
- key: url
64
+ key: keyWithTransformations
65
65
  });
66
66
  return _context.abrupt("return", _fullDataUrl);
67
67
  case 7:
@@ -135,9 +135,6 @@ function _requestImageTransformation() {
135
135
  InvocationType: 'RequestResponse',
136
136
  Payload: JSON.stringify(lambdaEvent)
137
137
  };
138
- console.log({
139
- params: params
140
- });
141
138
  _context2.prev = 2;
142
139
  _context2.next = 3;
143
140
  return lambda.invoke(params).promise();
@@ -231,35 +228,4 @@ export function formatBase64Image(_ref3) {
231
228
  }
232
229
  return fullDataUrl;
233
230
  }
234
-
235
- /**
236
- * Parses a URL-like string into path and query parameters
237
- * @param {string} urlString - String like "<applicationId>/<path>/filename.jpeg?width=100&height=100"
238
- * @returns {Object} - Object with { path: string, queryParams: string }
239
- * @example
240
- * parseUrlString("abc123/folder/image.jpeg?width=100&height=100")
241
- * // Returns: { path: "abc123/folder/image.jpeg", queryParams: "width=100,height=100" }
242
- */
243
- function parseUrlString(urlString) {
244
- if (!urlString || typeof urlString !== 'string') {
245
- throw new Error('URL string is required and must be a string');
246
- }
247
- var _urlString$split = urlString.split('?'),
248
- _urlString$split2 = _slicedToArray(_urlString$split, 2),
249
- path = _urlString$split2[0],
250
- queryString = _urlString$split2[1];
251
- if (!path) {
252
- throw new Error('Invalid URL string: missing path component');
253
- }
254
- if (!queryString) {
255
- return "".concat(path);
256
- }
257
-
258
- // Parse query parameters and convert to comma-separated format
259
- var queryParams = queryString.split('&').join(',');
260
- return {
261
- path: path,
262
- queryParams: queryParams
263
- };
264
- }
265
231
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["validateBase64Image","AWS","REGION","process","env","AWS_REGION","lambda","Lambda","region","s3","S3","fetchImageForPdfGeneratorService","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","urlMatch","applicationId","_parseUrlString","path","queryParams","alreadyTransformedImage","fullDataUrl","transformerResponse","statusCode","_fullDataUrl","_transformerResponse$","redirectLocation","newlyTransformedImage","_fullDataUrl2","_t","wrap","_context","prev","next","console","debug","Error","match","parseUrlString","fetchResourceFromS3","bucketName","concat","S3_BUCKET_IMAGE_TRANSFORMER_CACHE","key","sent","body","formatBase64Image","base64String","toString","abrupt","requestImageTransformation","headers","Location","keyWithTransformations","stop","_x","apply","arguments","_x2","_requestImageTransformation","_callee2","lambdaEvent","params","result","response","errorMessage","_t2","_context2","requestContext","http","method","FunctionName","IMAGE_TRANSFORMER_ARN","InvocationType","Payload","JSON","stringify","log","invoke","promise","parse","message","error","_x3","_fetchResourceFromS","_callee3","_ref2","_t3","_context3","Bucket","Key","getObject","Body","contentType","ContentType","contentLength","ContentLength","lastModified","LastModified","etag","ETag","code","_ref3","imageType","toLowerCase","includes","base64Flag","isValid","urlString","_urlString$split","split","_urlString$split2","_slicedToArray","queryString","join"],"sources":["../../../src/helpers/fetch-image-for-pdf-generator-service/index.js"],"sourcesContent":["import { validateBase64Image } from '../image-validators'\nimport AWS from 'aws-sdk'\nconst REGION = process.env.AWS_REGION\n\nconst lambda = new AWS.Lambda({\n region: REGION,\n})\nconst s3 = new AWS.S3({\n region: REGION,\n})\n\nexport const fetchImageForPdfGeneratorService = async function (url) {\n console.debug(\n 'Fetching image via CloudFront For Serverless Pdf Generator Service'\n )\n\n if (!url) {\n throw new Error('URL is required to fetch image for PDF generator service')\n }\n\n const urlMatch = url && url.match(/([a-f0-9]{24})\\//)\n const applicationId = urlMatch && urlMatch[1]\n\n if (!applicationId) {\n throw new Error('Requestor has insufficient permissions')\n }\n\n const { path, queryParams } = parseUrlString(url)\n\n const alreadyTransformedImage = await fetchResourceFromS3({\n bucketName: `${process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE}`,\n key: `${path}/${queryParams}`,\n })\n\n if (alreadyTransformedImage?.body) {\n const fullDataUrl = formatBase64Image({\n base64String: alreadyTransformedImage.body.toString('base64'),\n key: url,\n })\n return fullDataUrl\n }\n\n const transformerResponse = await requestImageTransformation(url)\n\n const statusCode = transformerResponse.statusCode\n\n switch (statusCode) {\n case 200: {\n console.debug('Image transformation successful')\n\n const fullDataUrl = formatBase64Image({\n base64String: transformerResponse.body.toString('base64'),\n key: url,\n })\n\n return fullDataUrl\n }\n case 302: {\n console.debug(\n 'Image transformation successful but image is too big for lambda delivery, fetching directly from S3'\n )\n const redirectLocation = transformerResponse.headers?.Location\n if (redirectLocation) {\n const newlyTransformedImage = await fetchResourceFromS3({\n bucketName: `${process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE}`,\n key: keyWithTransformations,\n })\n console.debug(\n 'Image successfully fetched from S3 at:',\n redirectLocation\n )\n\n const fullDataUrl = formatBase64Image({\n base64String: newlyTransformedImage.body.toString('base64'),\n key: keyWithTransformations,\n })\n\n return fullDataUrl\n }\n throw new Error('Redirect response received but no location provided')\n }\n case 400:\n throw new Error(\n `Bad request to image transformer: ${transformerResponse.body}`\n )\n case 403:\n throw new Error('Requested transformed image is too big')\n case 404:\n throw new Error('The requested image does not exist')\n case 500:\n throw new Error(\n `Image transformation failed: ${transformerResponse.body}`\n )\n default:\n throw new Error(\n `Unexpected response from image transformer: ${statusCode} - ${transformerResponse.body}`\n )\n }\n}\n\nexport async function requestImageTransformation(key) {\n if (!key) {\n throw new Error('Image Path is required for image transformation')\n }\n\n console.debug(\n 'ImageTransformation: Invoking image transformer lambda for path:',\n key\n )\n\n const lambdaEvent = {\n requestContext: {\n http: {\n method: 'GET',\n path: key,\n },\n },\n }\n\n const params = {\n FunctionName: process.env.IMAGE_TRANSFORMER_ARN,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify(lambdaEvent),\n }\n\n console.log({ params })\n try {\n const result = await lambda.invoke(params).promise()\n\n const response = JSON.parse(result.Payload)\n\n return response\n } catch (error) {\n const errorMessage = `Failed to invoke image transformer lambda: ${error.message}`\n console.error(errorMessage, error)\n throw new Error(errorMessage)\n }\n}\n\nexport async function fetchResourceFromS3({ bucketName, key }) {\n console.debug(\n `Fetching resource from S3 Bucket: '${bucketName}' at path: '${key}'`\n )\n if (!bucketName || !key) {\n throw new Error(\n 'bucketName and key are required for S3 resource fetch ' +\n JSON.stringify({ bucketName, key })\n )\n }\n\n const params = {\n Bucket: bucketName,\n Key: key,\n }\n\n try {\n const result = await s3.getObject(params).promise()\n\n return {\n body: result.Body,\n contentType: result.ContentType,\n contentLength: result.ContentLength,\n lastModified: result.LastModified,\n etag: result.ETag,\n }\n } catch (error) {\n if (error.code !== 'NoSuchKey') {\n console.error('Failed to fetch image:', error)\n throw new Error(`Failed to fetch image: ${bucketName}/${key}`)\n }\n\n console.debug('Image not found in transformed bucket, invoking transformer')\n }\n}\n\nexport function formatBase64Image({ base64String, key }) {\n if (!key) {\n throw new Error('Key is required for image formatting')\n }\n\n const imageType = key.toLowerCase().includes('.png') ? 'png' : 'jpeg'\n const base64Flag = `data:image/${imageType};base64,`\n const fullDataUrl = `${base64Flag}${base64String}`\n\n // Validate the formatted data URL\n const isValid = validateBase64Image(fullDataUrl)\n if (!isValid) {\n throw new Error('InvalidImageError')\n }\n\n return fullDataUrl\n}\n\n/**\n * Parses a URL-like string into path and query parameters\n * @param {string} urlString - String like \"<applicationId>/<path>/filename.jpeg?width=100&height=100\"\n * @returns {Object} - Object with { path: string, queryParams: string }\n * @example\n * parseUrlString(\"abc123/folder/image.jpeg?width=100&height=100\")\n * // Returns: { path: \"abc123/folder/image.jpeg\", queryParams: \"width=100,height=100\" }\n */\nfunction parseUrlString(urlString) {\n if (!urlString || typeof urlString !== 'string') {\n throw new Error('URL string is required and must be a string')\n }\n\n const [path, queryString] = urlString.split('?')\n\n if (!path) {\n throw new Error('Invalid URL string: missing path component')\n }\n\n if (!queryString) {\n return `${path}`\n }\n\n // Parse query parameters and convert to comma-separated format\n const queryParams = queryString.split('&').join(',')\n\n return {\n path,\n queryParams,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["validateBase64Image","AWS","REGION","process","env","AWS_REGION","lambda","Lambda","region","s3","S3","fetchImageForPdfGeneratorService","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","urlMatch","applicationId","keyWithTransformations","alreadyTransformedImage","fullDataUrl","keyWithoutTransformations","transformerResponse","statusCode","_fullDataUrl","_transformerResponse$","redirectLocation","newlyTransformedImage","_fullDataUrl2","_t","wrap","_context","prev","next","console","debug","Error","match","substring","indexOf","fetchResourceFromS3","bucketName","concat","S3_BUCKET_IMAGE_TRANSFORMER_CACHE","key","sent","body","formatBase64Image","base64String","toString","abrupt","split","requestImageTransformation","headers","Location","stop","_x","apply","arguments","_x2","_requestImageTransformation","_callee2","lambdaEvent","params","result","response","errorMessage","_t2","_context2","requestContext","http","method","path","FunctionName","IMAGE_TRANSFORMER_ARN","InvocationType","Payload","JSON","stringify","invoke","promise","parse","message","error","_x3","_fetchResourceFromS","_callee3","_ref2","_t3","_context3","Bucket","Key","getObject","Body","contentType","ContentType","contentLength","ContentLength","lastModified","LastModified","etag","ETag","code","_ref3","imageType","toLowerCase","includes","base64Flag","isValid"],"sources":["../../../src/helpers/fetch-image-for-pdf-generator-service/index.js"],"sourcesContent":["import { validateBase64Image } from '../image-validators'\nimport AWS from 'aws-sdk'\nconst REGION = process.env.AWS_REGION\n\nconst lambda = new AWS.Lambda({\n region: REGION,\n})\nconst s3 = new AWS.S3({\n region: REGION,\n})\n\nexport const fetchImageForPdfGeneratorService = async function(url) {\n console.debug(\n 'Fetching image via CloudFront For Serverless Pdf Generator Service'\n )\n\n if (!url) {\n throw new Error('URL is required to fetch image for PDF generator service')\n }\n\n const urlMatch = url && url.match(/([a-f0-9]{24})\\//)\n const applicationId = urlMatch && urlMatch[1]\n\n if (!applicationId) {\n throw new Error('Requestor has insufficient permissions')\n }\n\n const keyWithTransformations = url.substring(url.indexOf(applicationId))\n\n const alreadyTransformedImage = await fetchResourceFromS3({\n bucketName: `${process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE}`,\n key: keyWithTransformations,\n })\n\n if (alreadyTransformedImage?.body) {\n const fullDataUrl = formatBase64Image({\n base64String: alreadyTransformedImage.body.toString('base64'),\n key: keyWithTransformations,\n })\n return fullDataUrl\n }\n\n const keyWithoutTransformations = `/${keyWithTransformations.split('?')[0]}`\n\n const transformerResponse = await requestImageTransformation(\n keyWithoutTransformations\n )\n\n const statusCode = transformerResponse.statusCode\n\n switch (statusCode) {\n case 200: {\n console.debug('Image transformation successful')\n\n const fullDataUrl = formatBase64Image({\n base64String: transformerResponse.body.toString('base64'),\n key: keyWithTransformations,\n })\n\n return fullDataUrl\n }\n case 302: {\n console.debug(\n 'Image transformation successful but image is too big for lambda delivery, fetching directly from S3'\n )\n const redirectLocation = transformerResponse.headers?.Location\n if (redirectLocation) {\n const newlyTransformedImage = await fetchResourceFromS3({\n bucketName: `${process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE}`,\n key: keyWithTransformations,\n })\n console.debug(\n 'Image successfully fetched from S3 at:',\n redirectLocation\n )\n\n const fullDataUrl = formatBase64Image({\n base64String: newlyTransformedImage.body.toString('base64'),\n key: keyWithTransformations,\n })\n\n return fullDataUrl\n }\n throw new Error('Redirect response received but no location provided')\n }\n case 400:\n throw new Error(\n `Bad request to image transformer: ${transformerResponse.body}`\n )\n case 403:\n throw new Error('Requested transformed image is too big')\n case 404:\n throw new Error('The requested image does not exist')\n case 500:\n throw new Error(\n `Image transformation failed: ${transformerResponse.body}`\n )\n default:\n throw new Error(\n `Unexpected response from image transformer: ${statusCode} - ${transformerResponse.body}`\n )\n }\n}\n\nexport async function requestImageTransformation(key) {\n if (!key) {\n throw new Error('Image Path is required for image transformation')\n }\n\n console.debug(\n 'ImageTransformation: Invoking image transformer lambda for path:',\n key\n )\n\n const lambdaEvent = {\n requestContext: {\n http: {\n method: 'GET',\n path: key,\n },\n },\n }\n\n const params = {\n FunctionName: process.env.IMAGE_TRANSFORMER_ARN,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify(lambdaEvent),\n }\n\n try {\n const result = await lambda.invoke(params).promise()\n\n const response = JSON.parse(result.Payload)\n\n return response\n } catch (error) {\n const errorMessage = `Failed to invoke image transformer lambda: ${error.message}`\n console.error(errorMessage, error)\n throw new Error(errorMessage)\n }\n}\n\nexport async function fetchResourceFromS3({ bucketName, key }) {\n console.debug(\n `Fetching resource from S3 Bucket: '${bucketName}' at path: '${key}'`\n )\n if (!bucketName || !key) {\n throw new Error(\n 'bucketName and key are required for S3 resource fetch ' +\n JSON.stringify({ bucketName, key })\n )\n }\n\n const params = {\n Bucket: bucketName,\n Key: key,\n }\n\n try {\n const result = await s3.getObject(params).promise()\n\n return {\n body: result.Body,\n contentType: result.ContentType,\n contentLength: result.ContentLength,\n lastModified: result.LastModified,\n etag: result.ETag,\n }\n } catch (error) {\n if (error.code !== 'NoSuchKey') {\n console.error('Failed to fetch image:', error)\n throw new Error(`Failed to fetch image: ${bucketName}/${key}`)\n }\n\n console.debug('Image not found in transformed bucket, invoking transformer')\n }\n}\n\nexport function formatBase64Image({ base64String, key }) {\n if (!key) {\n throw new Error('Key is required for image formatting')\n }\n\n const imageType = key.toLowerCase().includes('.png') ? 'png' : 'jpeg'\n const base64Flag = `data:image/${imageType};base64,`\n const fullDataUrl = `${base64Flag}${base64String}`\n\n // Validate the formatted data URL\n const isValid = validateBase64Image(fullDataUrl)\n if (!isValid) {\n throw new Error('InvalidImageError')\n }\n\n return fullDataUrl\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,30 +2,23 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { imageNotFound } from '../../images';
4
4
  import { fetchLighthouseLogo } from '../fetch-lighthouse-logo';
5
- import { arrayBufferToBase64 } from '../fetch-image';
6
- import { validateBase64Image } from '../image-validators';
7
- var contentTypes = {
8
- 'image/png': 'png',
9
- 'image/jpeg': 'jpeg'
10
- };
11
5
  export var fetchImageForWeb = /*#__PURE__*/function () {
12
6
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, options) {
13
- var _options$isHeader, isHeader, Signature, Policy, KeyPairId, firstParamConnector, urlToEncode, encodedUrl, imageResponse, contentLengthHeader, contentType, imageType, logoArrayBuffer, base64Flag, imageStr, base64, isValid, _t;
7
+ var _options$isHeader, isHeader, Signature, Policy, KeyPairId, firstParamConnector, hasSignatureParams, constructedUrl, imageResponse, contentLengthHeader, _t;
14
8
  return _regeneratorRuntime.wrap(function (_context) {
15
9
  while (1) switch (_context.prev = _context.next) {
16
10
  case 0:
17
11
  _options$isHeader = options.isHeader, isHeader = _options$isHeader === void 0 ? false : _options$isHeader, Signature = options.Signature, Policy = options.Policy, KeyPairId = options.KeyPairId;
18
12
  _context.prev = 1;
19
13
  firstParamConnector = url.indexOf('?') > -1 ? '&' : '?';
20
- urlToEncode = "".concat(url).concat(firstParamConnector, "Signature=").concat(Signature, "&Policy=").concat(Policy, "&Key-Pair-Id=").concat(KeyPairId);
21
- encodedUrl = encodeURI(urlToEncode);
14
+ hasSignatureParams = url.includes('Signature=') && url.includes('Policy=') && url.includes('Key-Pair-Id=');
15
+ constructedUrl = !hasSignatureParams ? "".concat(url).concat(firstParamConnector, "Signature=").concat(Signature, "&Policy=").concat(Policy, "&Key-Pair-Id=").concat(KeyPairId) : url;
22
16
  console.debug('Fetching image via CloudFront For Web');
23
17
  _context.next = 2;
24
- return fetch(encodedUrl);
18
+ return fetch(constructedUrl);
25
19
  case 2:
26
20
  imageResponse = _context.sent;
27
21
  contentLengthHeader = imageResponse.headers.get('content-length');
28
- contentType = imageResponse.headers.get('content-type');
29
22
  if (!(contentLengthHeader === '0')) {
30
23
  _context.next = 3;
31
24
  break;
@@ -38,40 +31,28 @@ export var fetchImageForWeb = /*#__PURE__*/function () {
38
31
  }
39
32
  return _context.abrupt("return", Promise.reject(new Error("Failed to fetch image: ".concat(encodedUrl))));
40
33
  case 4:
41
- imageType = contentTypes[contentType];
42
34
  _context.next = 5;
43
35
  return imageResponse.arrayBuffer();
44
36
  case 5:
45
- logoArrayBuffer = _context.sent;
46
- base64Flag = "data:image/".concat(imageType, ";base64,");
47
- imageStr = arrayBufferToBase64(logoArrayBuffer);
48
- base64 = "".concat(base64Flag).concat(imageStr);
49
- isValid = validateBase64Image(base64);
50
- if (isValid) {
51
- _context.next = 6;
52
- break;
53
- }
54
- throw new Error('InvalidImageError');
37
+ return _context.abrupt("return", _context.sent);
55
38
  case 6:
56
- return _context.abrupt("return", base64);
57
- case 7:
58
- _context.prev = 7;
39
+ _context.prev = 6;
59
40
  _t = _context["catch"](1);
60
41
  if (!isHeader) {
61
- _context.next = 8;
42
+ _context.next = 7;
62
43
  break;
63
44
  }
64
45
  // NOTE: Replace failed headers with LH logo
65
46
  console.error('FetchImageHeaderError', _t);
66
47
  return _context.abrupt("return", fetchLighthouseLogo());
67
- case 8:
48
+ case 7:
68
49
  console.error(_t);
69
50
  return _context.abrupt("return", imageNotFound);
70
- case 9:
51
+ case 8:
71
52
  case "end":
72
53
  return _context.stop();
73
54
  }
74
- }, _callee, null, [[1, 7]]);
55
+ }, _callee, null, [[1, 6]]);
75
56
  }));
76
57
  return function fetchImageForWeb(_x, _x2) {
77
58
  return _ref.apply(this, arguments);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["imageNotFound","fetchLighthouseLogo","arrayBufferToBase64","validateBase64Image","contentTypes","fetchImageForWeb","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","options","_options$isHeader","isHeader","Signature","Policy","KeyPairId","firstParamConnector","urlToEncode","encodedUrl","imageResponse","contentLengthHeader","contentType","imageType","logoArrayBuffer","base64Flag","imageStr","base64","isValid","_t","wrap","_context","prev","next","indexOf","concat","encodeURI","console","debug","fetch","sent","headers","get","abrupt","Promise","reject","Error","ok","arrayBuffer","error","stop","_x","_x2","apply","arguments"],"sources":["../../../src/helpers/fetch-image-for-web/index.js"],"sourcesContent":["import { imageNotFound } from '../../images'\nimport { fetchLighthouseLogo } from '../fetch-lighthouse-logo'\nimport { arrayBufferToBase64 } from '../fetch-image'\nimport { validateBase64Image } from '../image-validators'\nconst contentTypes = {\n 'image/png': 'png',\n 'image/jpeg': 'jpeg',\n}\n\nexport const fetchImageForWeb = async function(url, options) {\n const { isHeader = false, Signature, Policy, KeyPairId } = options\n\n try {\n const firstParamConnector = url.indexOf('?') > -1 ? '&' : '?'\n const urlToEncode = `${url}${firstParamConnector}Signature=${Signature}&Policy=${Policy}&Key-Pair-Id=${KeyPairId}`\n\n const encodedUrl = encodeURI(urlToEncode)\n\n console.debug('Fetching image via CloudFront For Web')\n\n const imageResponse = await fetch(encodedUrl)\n\n const contentLengthHeader = imageResponse.headers.get('content-length')\n const contentType = imageResponse.headers.get('content-type')\n\n if (contentLengthHeader === '0') {\n return Promise.reject(\n new Error(`Failed to fetch image as no content length: ${encodedUrl}`)\n )\n }\n\n if (!imageResponse.ok) {\n return Promise.reject(new Error(`Failed to fetch image: ${encodedUrl}`))\n }\n\n const imageType = contentTypes[contentType]\n\n const logoArrayBuffer = await imageResponse.arrayBuffer()\n\n const base64Flag = `data:image/${imageType};base64,`\n const imageStr = arrayBufferToBase64(logoArrayBuffer)\n\n const base64 = `${base64Flag}${imageStr}`\n const isValid = validateBase64Image(base64)\n\n if (!isValid) throw new Error('InvalidImageError')\n\n return base64\n } catch (error) {\n if (isHeader) {\n // NOTE: Replace failed headers with LH logo\n console.error('FetchImageHeaderError', error)\n return fetchLighthouseLogo()\n }\n\n console.error(error)\n return imageNotFound\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["imageNotFound","fetchLighthouseLogo","fetchImageForWeb","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","options","_options$isHeader","isHeader","Signature","Policy","KeyPairId","firstParamConnector","hasSignatureParams","constructedUrl","imageResponse","contentLengthHeader","_t","wrap","_context","prev","next","indexOf","includes","concat","console","debug","fetch","sent","headers","get","abrupt","Promise","reject","Error","encodedUrl","ok","arrayBuffer","error","stop","_x","_x2","apply","arguments"],"sources":["../../../src/helpers/fetch-image-for-web/index.js"],"sourcesContent":["import { imageNotFound } from '../../images'\nimport { fetchLighthouseLogo } from '../fetch-lighthouse-logo'\nexport const fetchImageForWeb = async function (url, options) {\n const { isHeader = false, Signature, Policy, KeyPairId } = options\n\n try {\n const firstParamConnector = url.indexOf('?') > -1 ? '&' : '?'\n\n const hasSignatureParams =\n url.includes('Signature=') &&\n url.includes('Policy=') &&\n url.includes('Key-Pair-Id=')\n\n const constructedUrl = !hasSignatureParams\n ? `${url}${firstParamConnector}Signature=${Signature}&Policy=${Policy}&Key-Pair-Id=${KeyPairId}`\n : url\n\n console.debug('Fetching image via CloudFront For Web')\n\n const imageResponse = await fetch(constructedUrl)\n\n const contentLengthHeader = imageResponse.headers.get('content-length')\n\n if (contentLengthHeader === '0') {\n return Promise.reject(\n new Error(`Failed to fetch image as no content length: ${encodedUrl}`)\n )\n }\n\n if (!imageResponse.ok) {\n return Promise.reject(new Error(`Failed to fetch image: ${encodedUrl}`))\n }\n\n return await imageResponse.arrayBuffer()\n } catch (error) {\n if (isHeader) {\n // NOTE: Replace failed headers with LH logo\n console.error('FetchImageHeaderError', error)\n return fetchLighthouseLogo()\n }\n\n console.error(error)\n return imageNotFound\n }\n}\n"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,OAAO,IAAMC,gBAAgB;EAAA,IAAAC,IAAA,GAAAC,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAG,SAAAC,QAAgBC,GAAG,EAAEC,OAAO;IAAA,IAAAC,iBAAA,EAAAC,QAAA,EAAAC,SAAA,EAAAC,MAAA,EAAAC,SAAA,EAAAC,mBAAA,EAAAC,kBAAA,EAAAC,cAAA,EAAAC,aAAA,EAAAC,mBAAA,EAAAC,EAAA;IAAA,OAAAf,mBAAA,CAAAgB,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAd,iBAAA,GACCD,OAAO,CAA1DE,QAAQ,EAARA,QAAQ,GAAAD,iBAAA,cAAG,KAAK,GAAAA,iBAAA,EAAEE,SAAS,GAAwBH,OAAO,CAAxCG,SAAS,EAAEC,MAAM,GAAgBJ,OAAO,CAA7BI,MAAM,EAAEC,SAAS,GAAKL,OAAO,CAArBK,SAAS;UAAAQ,QAAA,CAAAC,IAAA;UAG9CR,mBAAmB,GAAGP,GAAG,CAACiB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG;UAEvDT,kBAAkB,GACtBR,GAAG,CAACkB,QAAQ,CAAC,YAAY,CAAC,IAC1BlB,GAAG,CAACkB,QAAQ,CAAC,SAAS,CAAC,IACvBlB,GAAG,CAACkB,QAAQ,CAAC,cAAc,CAAC;UAExBT,cAAc,GAAG,CAACD,kBAAkB,MAAAW,MAAA,CACnCnB,GAAG,EAAAmB,MAAA,CAAGZ,mBAAmB,gBAAAY,MAAA,CAAaf,SAAS,cAAAe,MAAA,CAAWd,MAAM,mBAAAc,MAAA,CAAgBb,SAAS,IAC5FN,GAAG;UAEPoB,OAAO,CAACC,KAAK,CAAC,uCAAuC,CAAC;UAAAP,QAAA,CAAAE,IAAA;UAAA,OAE1BM,KAAK,CAACb,cAAc,CAAC;QAAA;UAA3CC,aAAa,GAAAI,QAAA,CAAAS,IAAA;UAEbZ,mBAAmB,GAAGD,aAAa,CAACc,OAAO,CAACC,GAAG,CAAC,gBAAgB,CAAC;UAAA,MAEnEd,mBAAmB,KAAK,GAAG;YAAAG,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,OAAAF,QAAA,CAAAY,MAAA,WACtBC,OAAO,CAACC,MAAM,CACnB,IAAIC,KAAK,gDAAAV,MAAA,CAAgDW,UAAU,CAAE,CACvE,CAAC;QAAA;UAAA,IAGEpB,aAAa,CAACqB,EAAE;YAAAjB,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,OAAAF,QAAA,CAAAY,MAAA,WACZC,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,2BAAAV,MAAA,CAA2BW,UAAU,CAAE,CAAC,CAAC;QAAA;UAAAhB,QAAA,CAAAE,IAAA;UAAA,OAG7DN,aAAa,CAACsB,WAAW,CAAC,CAAC;QAAA;UAAA,OAAAlB,QAAA,CAAAY,MAAA,WAAAZ,QAAA,CAAAS,IAAA;QAAA;UAAAT,QAAA,CAAAC,IAAA;UAAAH,EAAA,GAAAE,QAAA;UAAA,KAEpCX,QAAQ;YAAAW,QAAA,CAAAE,IAAA;YAAA;UAAA;UACV;UACAI,OAAO,CAACa,KAAK,CAAC,uBAAuB,EAAArB,EAAO,CAAC;UAAA,OAAAE,QAAA,CAAAY,MAAA,WACtCjC,mBAAmB,CAAC,CAAC;QAAA;UAG9B2B,OAAO,CAACa,KAAK,CAAArB,EAAM,CAAC;UAAA,OAAAE,QAAA,CAAAY,MAAA,WACblC,aAAa;QAAA;QAAA;UAAA,OAAAsB,QAAA,CAAAoB,IAAA;MAAA;IAAA,GAAAnC,OAAA;EAAA,CAEvB;EAAA,gBA1CYL,gBAAgBA,CAAAyC,EAAA,EAAAC,GAAA;IAAA,OAAAzC,IAAA,CAAA0C,KAAA,OAAAC,SAAA;EAAA;AAAA,GA0C5B","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import { find, groupBy, map, get, round } from 'lodash';
2
3
  import { buildFetchUrl } from '../';
3
4
  export function getAuditItemsData(items, data) {
@@ -6,6 +7,9 @@ export function getAuditItemsData(items, data) {
6
7
  awsS3BaseUrl = _data$settings2.awsS3BaseUrl,
7
8
  cloudinaryBaseUrl = _data$settings2.cloudinaryBaseUrl,
8
9
  cloudfrontBaseUrl = _data$settings2.cloudfrontBaseUrl,
10
+ Policy = _data$settings2.Policy,
11
+ KeyPairId = _data$settings2.KeyPairId,
12
+ Signature = _data$settings2.Signature,
9
13
  shouldUseCloudfront = _data$settings2.shouldUseCloudfront,
10
14
  _data$entity = data.entity,
11
15
  _data$entity2 = _data$entity === void 0 ? {} : _data$entity,
@@ -47,21 +51,25 @@ export function getAuditItemsData(items, data) {
47
51
  awsS3BaseUrl: awsS3BaseUrl,
48
52
  cloudfrontBaseUrl: cloudfrontBaseUrl,
49
53
  cloudinaryBaseUrl: cloudinaryBaseUrl,
50
- shouldUseCloudfront: shouldUseCloudfront,
51
- fit: true,
52
54
  height: 400,
53
55
  width: 600,
54
- quality: 50
56
+ quality: 50,
57
+ fit: true,
58
+ shouldUseCloudfront: shouldUseCloudfront,
59
+ Policy: Policy,
60
+ KeyPairId: KeyPairId,
61
+ Signature: Signature
55
62
  });
56
63
  var link = "".concat(awsS3BaseUrl, "/").concat(asset);
57
- var thumbnailUrl = buildFetchUrl(asset, {
64
+ var thumbnailUrl = buildFetchUrl(asset, _defineProperty(_defineProperty(_defineProperty(_defineProperty({
58
65
  awsS3BaseUrl: awsS3BaseUrl,
59
66
  cloudfrontBaseUrl: cloudfrontBaseUrl,
60
67
  cloudinaryBaseUrl: cloudinaryBaseUrl,
61
68
  shouldUseCloudfront: shouldUseCloudfront,
62
69
  width: 100,
63
- quality: 50
64
- });
70
+ quality: 50,
71
+ fit: true
72
+ }, "shouldUseCloudfront", shouldUseCloudfront), "Policy", Policy), "KeyPairId", KeyPairId), "Signature", Signature));
65
73
  var key = "".concat(groupIndex, "-item-asset-").concat(assetIndex);
66
74
  return {
67
75
  assetUrl: assetUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["find","groupBy","map","get","round","buildFetchUrl","getAuditItemsData","items","data","_data$settings","settings","_data$settings2","awsS3BaseUrl","cloudinaryBaseUrl","cloudfrontBaseUrl","shouldUseCloudfront","_data$entity","entity","_data$entity2","groupScores","groupedItems","auditData","overallActualScore","overallMaximumScore","groupIndex","key","skipped","group","title","label","groupData","groupMaximumScore","groupActualScore","groupResultScore","groupPercentageResultScore","currentGroupScores","max","actual","result","percentageResult","item","itemIndex","hasScore","score","rawAssets","assets","assetCount","length","asset","assetIndex","assetUrl","fit","height","width","quality","link","concat","thumbnailUrl","comments","matchingScore","scores","value","scoreLabel","scoreWeight","weight","questionId","_id"],"sources":["../../../src/helpers/get-audit-items-data/index.js"],"sourcesContent":["import { find, groupBy, map, get, round } from 'lodash'\n\nimport { buildFetchUrl } from '../'\n\nexport function getAuditItemsData(items, data) {\n const {\n settings: {\n awsS3BaseUrl,\n cloudinaryBaseUrl,\n cloudfrontBaseUrl,\n shouldUseCloudfront,\n } = {},\n entity: { groupScores } = {},\n } = data\n\n const groupedItems = groupBy(items, 'group.id')\n\n const auditData = {\n overallActualScore: 0,\n overallMaximumScore: 0,\n }\n\n auditData.items = map(groupedItems, (items, groupIndex) => {\n const key = groupIndex\n const skipped = !!items[0].group.skipped\n const title = items[0].group.label\n\n const groupData = {\n key,\n groupMaximumScore: 0,\n groupActualScore: 0,\n groupResultScore: 0,\n groupPercentageResultScore: 0,\n skipped,\n title,\n }\n\n const currentGroupScores = get(groupScores, key)\n\n if (currentGroupScores) {\n groupData.groupMaximumScore = round(currentGroupScores.max, 2)\n groupData.groupActualScore = round(currentGroupScores.actual, 2)\n groupData.groupResultScore = currentGroupScores.result\n groupData.groupPercentageResultScore = currentGroupScores.percentageResult\n }\n\n groupData.items = items.map((item, itemIndex) => {\n // NOTE: we handle scores of -1, 0 and 1\n // -1 scores are skipped from group max and actual score\n // 0 and 1 must be included in the final scores\n const hasScore = item.score !== null && item.score !== -1\n const rawAssets = item.assets || []\n const assetCount = rawAssets.length\n\n const assets = rawAssets.map((asset, assetIndex) => {\n const assetUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n shouldUseCloudfront,\n fit: true,\n height: 400,\n width: 600,\n quality: 50,\n })\n\n const link = `${awsS3BaseUrl}/${asset}`\n\n const thumbnailUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n shouldUseCloudfront,\n width: 100,\n quality: 50,\n })\n\n const key = `${groupIndex}-item-asset-${assetIndex}`\n\n return {\n assetUrl,\n key,\n link,\n thumbnailUrl,\n }\n })\n\n const comments = item.comments\n const label = item.label\n const score = item.score\n const key = `${groupIndex}-item-${itemIndex}`\n const matchingScore = find(item.scores, { value: score })\n\n // NOTE: ensure we have a score otherwise fallback to - value\n const scoreLabel =\n hasScore && matchingScore && !skipped ? matchingScore.label : '-'\n const scoreWeight = hasScore && !skipped ? item.scoreWeight : '-'\n const weight = hasScore ? item.weight : '-'\n\n return {\n assetCount,\n assets,\n comments,\n key,\n label,\n questionId: item._id,\n score,\n scoreLabel,\n scoreWeight,\n weight,\n }\n })\n\n return groupData\n })\n\n return auditData\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["find","groupBy","map","get","round","buildFetchUrl","getAuditItemsData","items","data","_data$settings","settings","_data$settings2","awsS3BaseUrl","cloudinaryBaseUrl","cloudfrontBaseUrl","Policy","KeyPairId","Signature","shouldUseCloudfront","_data$entity","entity","_data$entity2","groupScores","groupedItems","auditData","overallActualScore","overallMaximumScore","groupIndex","key","skipped","group","title","label","groupData","groupMaximumScore","groupActualScore","groupResultScore","groupPercentageResultScore","currentGroupScores","max","actual","result","percentageResult","item","itemIndex","hasScore","score","rawAssets","assets","assetCount","length","asset","assetIndex","assetUrl","height","width","quality","fit","link","concat","thumbnailUrl","_defineProperty","comments","matchingScore","scores","value","scoreLabel","scoreWeight","weight","questionId","_id"],"sources":["../../../src/helpers/get-audit-items-data/index.js"],"sourcesContent":["import { find, groupBy, map, get, round } from 'lodash'\n\nimport { buildFetchUrl } from '../'\n\nexport function getAuditItemsData(items, data) {\n const {\n settings: {\n awsS3BaseUrl,\n cloudinaryBaseUrl,\n cloudfrontBaseUrl,\n Policy,\n KeyPairId,\n Signature,\n shouldUseCloudfront,\n } = {},\n entity: { groupScores } = {},\n } = data\n\n const groupedItems = groupBy(items, 'group.id')\n\n const auditData = {\n overallActualScore: 0,\n overallMaximumScore: 0,\n }\n\n auditData.items = map(groupedItems, (items, groupIndex) => {\n const key = groupIndex\n const skipped = !!items[0].group.skipped\n const title = items[0].group.label\n\n const groupData = {\n key,\n groupMaximumScore: 0,\n groupActualScore: 0,\n groupResultScore: 0,\n groupPercentageResultScore: 0,\n skipped,\n title,\n }\n\n const currentGroupScores = get(groupScores, key)\n\n if (currentGroupScores) {\n groupData.groupMaximumScore = round(currentGroupScores.max, 2)\n groupData.groupActualScore = round(currentGroupScores.actual, 2)\n groupData.groupResultScore = currentGroupScores.result\n groupData.groupPercentageResultScore = currentGroupScores.percentageResult\n }\n\n groupData.items = items.map((item, itemIndex) => {\n // NOTE: we handle scores of -1, 0 and 1\n // -1 scores are skipped from group max and actual score\n // 0 and 1 must be included in the final scores\n const hasScore = item.score !== null && item.score !== -1\n const rawAssets = item.assets || []\n const assetCount = rawAssets.length\n\n const assets = rawAssets.map((asset, assetIndex) => {\n const assetUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n height: 400,\n width: 600,\n quality: 50,\n fit: true,\n shouldUseCloudfront,\n Policy,\n KeyPairId,\n Signature,\n })\n\n const link = `${awsS3BaseUrl}/${asset}`\n\n const thumbnailUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n shouldUseCloudfront,\n width: 100,\n quality: 50,\n fit: true,\n shouldUseCloudfront,\n Policy,\n KeyPairId,\n Signature,\n })\n\n const key = `${groupIndex}-item-asset-${assetIndex}`\n\n return {\n assetUrl,\n key,\n link,\n thumbnailUrl,\n }\n })\n\n const comments = item.comments\n const label = item.label\n const score = item.score\n const key = `${groupIndex}-item-${itemIndex}`\n const matchingScore = find(item.scores, { value: score })\n\n // NOTE: ensure we have a score otherwise fallback to - value\n const scoreLabel =\n hasScore && matchingScore && !skipped ? matchingScore.label : '-'\n const scoreWeight = hasScore && !skipped ? item.scoreWeight : '-'\n const weight = hasScore ? item.weight : '-'\n\n return {\n assetCount,\n assets,\n comments,\n key,\n label,\n questionId: item._id,\n score,\n scoreLabel,\n scoreWeight,\n weight,\n }\n })\n\n return groupData\n })\n\n return auditData\n}\n"],"mappings":";AAAA,SAASA,IAAI,EAAEC,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,KAAK,QAAQ,QAAQ;AAEvD,SAASC,aAAa,QAAQ,KAAK;AAEnC,OAAO,SAASC,iBAAiBA,CAACC,KAAK,EAAEC,IAAI,EAAE;EAC7C,IAAAC,cAAA,GAWID,IAAI,CAVNE,QAAQ;IAAAC,eAAA,GAAAF,cAAA,cAQJ,CAAC,CAAC,GAAAA,cAAA;IAPJG,YAAY,GAAAD,eAAA,CAAZC,YAAY;IACZC,iBAAiB,GAAAF,eAAA,CAAjBE,iBAAiB;IACjBC,iBAAiB,GAAAH,eAAA,CAAjBG,iBAAiB;IACjBC,MAAM,GAAAJ,eAAA,CAANI,MAAM;IACNC,SAAS,GAAAL,eAAA,CAATK,SAAS;IACTC,SAAS,GAAAN,eAAA,CAATM,SAAS;IACTC,mBAAmB,GAAAP,eAAA,CAAnBO,mBAAmB;IAAAC,YAAA,GAGnBX,IAAI,CADNY,MAAM;IAAAC,aAAA,GAAAF,YAAA,cAAoB,CAAC,CAAC,GAAAA,YAAA;IAAlBG,WAAW,GAAAD,aAAA,CAAXC,WAAW;EAGvB,IAAMC,YAAY,GAAGtB,OAAO,CAACM,KAAK,EAAE,UAAU,CAAC;EAE/C,IAAMiB,SAAS,GAAG;IAChBC,kBAAkB,EAAE,CAAC;IACrBC,mBAAmB,EAAE;EACvB,CAAC;EAEDF,SAAS,CAACjB,KAAK,GAAGL,GAAG,CAACqB,YAAY,EAAE,UAAChB,KAAK,EAAEoB,UAAU,EAAK;IACzD,IAAMC,GAAG,GAAGD,UAAU;IACtB,IAAME,OAAO,GAAG,CAAC,CAACtB,KAAK,CAAC,CAAC,CAAC,CAACuB,KAAK,CAACD,OAAO;IACxC,IAAME,KAAK,GAAGxB,KAAK,CAAC,CAAC,CAAC,CAACuB,KAAK,CAACE,KAAK;IAElC,IAAMC,SAAS,GAAG;MAChBL,GAAG,EAAHA,GAAG;MACHM,iBAAiB,EAAE,CAAC;MACpBC,gBAAgB,EAAE,CAAC;MACnBC,gBAAgB,EAAE,CAAC;MACnBC,0BAA0B,EAAE,CAAC;MAC7BR,OAAO,EAAPA,OAAO;MACPE,KAAK,EAALA;IACF,CAAC;IAED,IAAMO,kBAAkB,GAAGnC,GAAG,CAACmB,WAAW,EAAEM,GAAG,CAAC;IAEhD,IAAIU,kBAAkB,EAAE;MACtBL,SAAS,CAACC,iBAAiB,GAAG9B,KAAK,CAACkC,kBAAkB,CAACC,GAAG,EAAE,CAAC,CAAC;MAC9DN,SAAS,CAACE,gBAAgB,GAAG/B,KAAK,CAACkC,kBAAkB,CAACE,MAAM,EAAE,CAAC,CAAC;MAChEP,SAAS,CAACG,gBAAgB,GAAGE,kBAAkB,CAACG,MAAM;MACtDR,SAAS,CAACI,0BAA0B,GAAGC,kBAAkB,CAACI,gBAAgB;IAC5E;IAEAT,SAAS,CAAC1B,KAAK,GAAGA,KAAK,CAACL,GAAG,CAAC,UAACyC,IAAI,EAAEC,SAAS,EAAK;MAC/C;MACA;MACA;MACA,IAAMC,QAAQ,GAAGF,IAAI,CAACG,KAAK,KAAK,IAAI,IAAIH,IAAI,CAACG,KAAK,KAAK,CAAC,CAAC;MACzD,IAAMC,SAAS,GAAGJ,IAAI,CAACK,MAAM,IAAI,EAAE;MACnC,IAAMC,UAAU,GAAGF,SAAS,CAACG,MAAM;MAEnC,IAAMF,MAAM,GAAGD,SAAS,CAAC7C,GAAG,CAAC,UAACiD,KAAK,EAAEC,UAAU,EAAK;QAClD,IAAMC,QAAQ,GAAGhD,aAAa,CAAC8C,KAAK,EAAE;UACpCvC,YAAY,EAAZA,YAAY;UACZE,iBAAiB,EAAjBA,iBAAiB;UACjBD,iBAAiB,EAAjBA,iBAAiB;UACjByC,MAAM,EAAE,GAAG;UACXC,KAAK,EAAE,GAAG;UACVC,OAAO,EAAE,EAAE;UACXC,GAAG,EAAE,IAAI;UACTvC,mBAAmB,EAAnBA,mBAAmB;UACnBH,MAAM,EAANA,MAAM;UACNC,SAAS,EAATA,SAAS;UACTC,SAAS,EAATA;QACF,CAAC,CAAC;QAEF,IAAMyC,IAAI,MAAAC,MAAA,CAAM/C,YAAY,OAAA+C,MAAA,CAAIR,KAAK,CAAE;QAEvC,IAAMS,YAAY,GAAGvD,aAAa,CAAC8C,KAAK,EAAAU,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA;UACtCjD,YAAY,EAAZA,YAAY;UACZE,iBAAiB,EAAjBA,iBAAiB;UACjBD,iBAAiB,EAAjBA,iBAAiB;UACjBK,mBAAmB,EAAnBA,mBAAmB;UACnBqC,KAAK,EAAE,GAAG;UACVC,OAAO,EAAE,EAAE;UACXC,GAAG,EAAE;QAAI,0BACTvC,mBAAmB,aACnBH,MAAM,gBACNC,SAAS,gBACTC,SAAS,CACV,CAAC;QAEF,IAAMW,GAAG,MAAA+B,MAAA,CAAMhC,UAAU,kBAAAgC,MAAA,CAAeP,UAAU,CAAE;QAEpD,OAAO;UACLC,QAAQ,EAARA,QAAQ;UACRzB,GAAG,EAAHA,GAAG;UACH8B,IAAI,EAAJA,IAAI;UACJE,YAAY,EAAZA;QACF,CAAC;MACH,CAAC,CAAC;MAEF,IAAME,QAAQ,GAAGnB,IAAI,CAACmB,QAAQ;MAC9B,IAAM9B,KAAK,GAAGW,IAAI,CAACX,KAAK;MACxB,IAAMc,KAAK,GAAGH,IAAI,CAACG,KAAK;MACxB,IAAMlB,GAAG,MAAA+B,MAAA,CAAMhC,UAAU,YAAAgC,MAAA,CAASf,SAAS,CAAE;MAC7C,IAAMmB,aAAa,GAAG/D,IAAI,CAAC2C,IAAI,CAACqB,MAAM,EAAE;QAAEC,KAAK,EAAEnB;MAAM,CAAC,CAAC;;MAEzD;MACA,IAAMoB,UAAU,GACdrB,QAAQ,IAAIkB,aAAa,IAAI,CAAClC,OAAO,GAAGkC,aAAa,CAAC/B,KAAK,GAAG,GAAG;MACnE,IAAMmC,WAAW,GAAGtB,QAAQ,IAAI,CAAChB,OAAO,GAAGc,IAAI,CAACwB,WAAW,GAAG,GAAG;MACjE,IAAMC,MAAM,GAAGvB,QAAQ,GAAGF,IAAI,CAACyB,MAAM,GAAG,GAAG;MAE3C,OAAO;QACLnB,UAAU,EAAVA,UAAU;QACVD,MAAM,EAANA,MAAM;QACNc,QAAQ,EAARA,QAAQ;QACRlC,GAAG,EAAHA,GAAG;QACHI,KAAK,EAALA,KAAK;QACLqC,UAAU,EAAE1B,IAAI,CAAC2B,GAAG;QACpBxB,KAAK,EAALA,KAAK;QACLoB,UAAU,EAAVA,UAAU;QACVC,WAAW,EAAXA,WAAW;QACXC,MAAM,EAANA;MACF,CAAC;IACH,CAAC,CAAC;IAEF,OAAOnC,SAAS;EAClB,CAAC,CAAC;EAEF,OAAOT,SAAS;AAClB","ignoreList":[]}
@@ -192,7 +192,7 @@ function generateContent(data) {
192
192
  timezone: timezone
193
193
  });
194
194
  var promises = {
195
- entry: buildAuditContent(groupedData.items),
195
+ entry: buildAuditContent(groupedData.items, data.settings),
196
196
  footerTemplate: buildTemplateContent(footerFields.formGroups, data),
197
197
  headerTemplate: buildTemplateContent(headerFields.formGroups, data)
198
198
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Promise","isEmpty","round","moment","buildAuditContent","buildAuditFollowUps","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","_pdfOptions$flags","flags","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","catch","err","Error","message","_entity$followUps","followUps","_entity$footerFields","footerFields","_entity$gps","gps","_entity$headerFields","headerFields","_entity$score","score","_entity$title","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","widths","margin","totalScoreTable","hLineTop","hLineBottom","followUpItems","promises","entry","items","footerTemplate","formGroups","headerTemplate","auditItemsTitle","font","lineHeight","props","_ref","_toConsumableArray"],"sources":["../../../src/pdf/audit/index.js"],"sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildAuditContent,\n buildAuditFollowUps,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch(err => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data) {\n const { entity } = data\n\n const {\n followUps = [],\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n title = 'Unknown',\n } = entity\n\n const timezone = entity?.timezone || data?.timezone || 'UTC'\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!targetServiceLevel\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n headerAddress = text(address, { style: 'small' })\n\n const truncatedTargetPercent = round(target, 2)\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt, dummyColumn])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays())\n .toString()\n .padStart(2, '0')\n const hours = Math.floor(momentDuration.hours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n colSpan: 2,\n style: 'small',\n }\n )\n\n body.push([startedAt, dummyColumn])\n body.push([submittedAt, dummyColumn])\n body.push([formDuration, dummyColumn])\n }\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n margin: [0, 0, 0, 30],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const followUpItems = buildAuditFollowUps(followUps, { timezone })\n\n const promises = {\n entry: buildAuditContent(groupedData.items),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n const auditItemsTitle = [\n {\n text: 'Audit Items',\n style: {\n font: 'Gotham',\n lineHeight: 1.1,\n },\n },\n hLineTop,\n ]\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => [\n titleTable,\n followUpItems,\n ...auditItemsTitle,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ])\n .catch(err => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"mappings":";;;;AAAA,OAAOA,OAAO,MAAM,UAAU;AAC9B,SAASC,OAAO,EAAEC,KAAK,QAAQ,QAAQ;AACvC,OAAOC,MAAM,MAAM,iBAAiB;AAEpC,SACEC,iBAAiB,EACjBC,mBAAmB,EACnBC,oBAAoB,EACpBC,kBAAkB,EAClBC,mBAAmB,EACnBC,cAAc,EACdC,IAAI,EACJC,cAAc,QACT,YAAY;AACnB,SAASC,oBAAoB,QAAQ,eAAe;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,UAAU,EAAEC,IAAI,EAAE;EAC9C,IAAQC,MAAM,GAAeD,IAAI,CAAzBC,MAAM;IAAEC,QAAQ,GAAKF,IAAI,CAAjBE,QAAQ;EACxB,IAAAC,iBAAA,GAAuBJ,UAAU,CAAzBK,KAAK;IAALA,KAAK,GAAAD,iBAAA,cAAG,CAAC,CAAC,GAAAA,iBAAA;EAElB,IAAME,UAAU,GAAGJ,MAAM,CAACI,UAAU;EACpC,IAAMC,SAAS,GAAGL,MAAM,CAACM,SAAS;EAClC,IAAMC,KAAK,GAAGP,MAAM,CAACO,KAAK,IAAI,SAAS;EACvC,IAAMC,SAAS,qBAAAC,MAAA,CAAqBF,KAAK,CAAE;EAE3C,OAAOG,eAAe,CAACX,IAAI,EAAEI,KAAK,CAAC,CAChCQ,IAAI,CAAC,UAAAC,OAAO;IAAA,OACXrB,kBAAkB,CAAAsB,aAAA;MAChBD,OAAO,EAAPA,OAAO;MACPJ,SAAS,EAATA,SAAS;MACTJ,UAAU,EAAVA,UAAU;MACVC,SAAS,EAATA,SAAS;MACTJ,QAAQ,EAARA,QAAQ;MACRa,IAAI,EAAE;IAAO,GACVhB,UAAU,CACd,CAAC;EAAA,CACJ,CAAC,CACAiB,KAAK,CAAC,UAAAC,GAAG,EAAI;IACZ,MAAM,IAAIC,KAAK,wBAAAR,MAAA,CAAwBO,GAAG,CAACE,OAAO,CAAE,CAAC;EACvD,CAAC,CAAC;AACN;AAEA,SAASR,eAAeA,CAACX,IAAI,EAAE;EAC7B,IAAQC,MAAM,GAAKD,IAAI,CAAfC,MAAM;EAEd,IAAAmB,iBAAA,GAOInB,MAAM,CANRoB,SAAS;IAATA,SAAS,GAAAD,iBAAA,cAAG,EAAE,GAAAA,iBAAA;IAAAE,oBAAA,GAMZrB,MAAM,CALRsB,YAAY;IAAZA,YAAY,GAAAD,oBAAA,cAAG,CAAC,CAAC,GAAAA,oBAAA;IAAAE,WAAA,GAKfvB,MAAM,CAJRwB,GAAG;IAAHA,GAAG,GAAAD,WAAA,cAAG,CAAC,CAAC,GAAAA,WAAA;IAAAE,oBAAA,GAINzB,MAAM,CAHR0B,YAAY;IAAZA,YAAY,GAAAD,oBAAA,cAAG,CAAC,CAAC,GAAAA,oBAAA;IAAAE,aAAA,GAGf3B,MAAM,CAFR4B,KAAK;IAALA,KAAK,GAAAD,aAAA,cAAG,CAAC,CAAC,GAAAA,aAAA;IAAAE,aAAA,GAER7B,MAAM,CADRO,KAAK;IAALA,KAAK,GAAAsB,aAAA,cAAG,SAAS,GAAAA,aAAA;EAGnB,IAAM5B,QAAQ,GAAG,CAAAD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,QAAQ,MAAIF,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,QAAQ,KAAI,KAAK;EAC5D,IAAM6B,aAAa,GAAGlC,oBAAoB,CAACG,IAAI,CAAC;EAEhD,IACEgC,OAAO,GAQLD,aAAa,CARfC,OAAO;IACPC,WAAW,GAOTF,aAAa,CAPfE,WAAW;IACXC,YAAY,GAMVH,aAAa,CANfG,YAAY;IACZC,cAAc,GAKZJ,aAAa,CALfI,cAAc;IACdC,gBAAgB,GAIdL,aAAa,CAJfK,gBAAgB;IAChBC,SAAS,GAGPN,aAAa,CAHfM,SAAS;IACTC,MAAM,GAEJP,aAAa,CAFfO,MAAM;IACNC,kBAAkB,GAChBR,aAAa,CADfQ,kBAAkB;EAGpB,IAAMC,kBAAkB,GAAG,CAAC,CAACD,kBAAkB;EAC/C,IAAME,WAAW,GAAG9C,IAAI,CAACa,KAAK,EAAE;IAAEkC,KAAK,EAAE;EAAQ,CAAC,CAAC;EACnD,IAAMC,WAAW,GAAGhD,IAAI,CAAC0C,SAAS,EAAE;IAAEO,SAAS,EAAE,OAAO;IAAEF,KAAK,EAAE;EAAQ,CAAC,CAAC;EAC3E,IAAMG,QAAQ,GAAG,CAACJ,WAAW,EAAEE,WAAW,CAAC;EAC3C,IAAMG,QAAQ,MAAApC,MAAA,CAAMwB,YAAY,IAC9BF,OAAO,SAAAtB,MAAA,CAAM0B,gBAAgB,UAAA1B,MAAA,CAAOyB,cAAc,CAAE;EAEtD,IAAIY,cAAc,GAAGpD,IAAI,CAACmD,QAAQ,EAAE;IAAEE,OAAO,EAAE,CAAC;IAAEN,KAAK,EAAE;EAAW,CAAC,CAAC;EACtE,IAAIO,SAAS,GAAG,CAACF,cAAc,CAAC;EAEhC,IAAMG,eAAe,GAAGzB,GAAG,CAACyB,eAAe;EAC3C,IAAMC,OAAO,GAAG,CAACjE,OAAO,CAACgE,eAAe,CAAC,GACrCzD,mBAAmB,CAACyD,eAAe,CAAC,GACpC,EAAE;EACN,IAAME,mBAAmB,GAAG,CAAClE,OAAO,CAACgE,eAAe,CAAC;EACrD,IAAMG,WAAW,GAAG1D,IAAI,CAAC,GAAG,EAAE;IAAE+C,KAAK,EAAE;EAAQ,CAAC,CAAC;EAEjD,IAAIY,aAAa,GAAG3D,IAAI,CAACwD,OAAO,EAAE;IAAEH,OAAO,EAAE,CAAC;IAAEN,KAAK,EAAE;EAAQ,CAAC,CAAC;EACjE,IAAMa,cAAc,GAAGH,mBAAmB,IAAIZ,kBAAkB;EAChE,IAAIgB,QAAQ,GAAGJ,mBAAmB,GAAG,CAACE,aAAa,CAAC,GAAG,EAAE;EAEzD,IAAId,kBAAkB,EAAE;IACtBO,cAAc,GAAGpD,IAAI,CAACmD,QAAQ,EAAE;MAAEJ,KAAK,EAAE;IAAW,CAAC,CAAC;IAEtD,IAAMe,iBAAiB,GAAGlB,kBAAkB,KAAK,OAAO;IACxD,IAAMmB,gBAAgB,GACpBnB,kBAAkB,KAAK,OAAO,GAC1B,cAAc,GACdA,kBAAkB,KAAK,IAAI,GAC3B,WAAW,GACXA,kBAAkB,KAAK,OAAO,GAC9B,cAAc,GACd,EAAE;IAER,IAAMoB,yBAAyB,GAAGhE,IAAI,CAAC+D,gBAAgB,EAAE;MACvDd,SAAS,EAAE,OAAO;MAClBF,KAAK,EAAEe,iBAAiB,GAAG,mBAAmB,GAAG;IACnD,CAAC,CAAC;IAEFR,SAAS,GAAG,CAACF,cAAc,EAAEY,yBAAyB,CAAC;IACvDL,aAAa,GAAG3D,IAAI,CAACwD,OAAO,EAAE;MAAET,KAAK,EAAE;IAAQ,CAAC,CAAC;IAEjD,IAAMkB,sBAAsB,GAAGzE,KAAK,CAACmD,MAAM,EAAE,CAAC,CAAC;IAC/C,IAAMuB,eAAe,gBAAAnD,MAAA,CAAgBkD,sBAAsB,OAAI;IAC/D,IAAME,mBAAmB,GAAGnE,IAAI,CAACkE,eAAe,EAAE;MAChDjB,SAAS,EAAE,OAAO;MAClBF,KAAK,EAAE;IACT,CAAC,CAAC;IAEFc,QAAQ,GAAGJ,mBAAmB,GAC1B,CAACE,aAAa,EAAEQ,mBAAmB,CAAC,GACpC,CAACT,WAAW,EAAES,mBAAmB,CAAC;EACxC;EAEA,IAAMC,cAAc,GAAGpE,IAAI,IAAAe,MAAA,CACtBvB,KAAK,CAAC0C,KAAK,CAACmC,MAAM,EAAE,CAAC,CAAC,SAAAtD,MAAA,CAAMvB,KAAK,CAAC0C,KAAK,CAACoC,GAAG,EAAE,CAAC,CAAC,GAClD;IACErB,SAAS,EAAE,OAAO;IAClBF,KAAK,EAAE;EACT,CACF,CAAC;EACD,IAAMwB,eAAe,GAAGvE,IAAI,CAAC0C,SAAS,EAAE;IACtCO,SAAS,EAAE,OAAO;IAClBI,OAAO,EAAE,CAAC;IACVN,KAAK,EAAE;EACT,CAAC,CAAC;EACF,IAAMyB,UAAU,GAAGxE,IAAI,CAAC,aAAa,EAAE;IAAE+C,KAAK,EAAE;EAAa,CAAC,CAAC;EAE/D,IAAM0B,IAAI,GAAGb,cAAc,GACvB,CAACV,QAAQ,EAAEI,SAAS,EAAEO,QAAQ,CAAC,GAC/B,CAACX,QAAQ,EAAEI,SAAS,CAAC;EAEzB,IAAMoB,qBAAqB,GAAGpE,MAAM,CAACqE,WAAW,GAC5ClF,MAAM,CAACa,MAAM,CAACqE,WAAW,CAAC,CACvBC,EAAE,CAACrE,QAAQ,CAAC,CACZsE,MAAM,CAAC,uBAAuB,CAAC,GAClC,cAAc;EAClB,IAAMF,WAAW,GAAG3E,IAAI,eAAAe,MAAA,CAAe2D,qBAAqB,GAAI;IAC9DrB,OAAO,EAAE,CAAC;IACVN,KAAK,EAAE;EACT,CAAC,CAAC;EAEF,IAAIzC,MAAM,CAACwE,sBAAsB,EAAE;IACjCL,IAAI,CAACM,IAAI,CAAC,CAACJ,WAAW,EAAEjB,WAAW,CAAC,CAAC;EACvC,CAAC,MAAM;IACL,IAAMsB,mBAAmB,GAAG1E,MAAM,CAAC2E,SAAS,GACxCxF,MAAM,CAACa,MAAM,CAAC2E,SAAS,CAAC,CACrBL,EAAE,CAACrE,QAAQ,CAAC,CACZsE,MAAM,CAAC,uBAAuB,CAAC,GAClC,cAAc;IAClB,IAAMI,SAAS,GAAGjF,IAAI,aAAAe,MAAA,CAAaiE,mBAAmB,GAAI;MACxD3B,OAAO,EAAE,CAAC;MACVN,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAM2B,sBAAqB,GAAGpE,MAAM,CAACqE,WAAW,GAC5ClF,MAAM,CAACa,MAAM,CAACqE,WAAW,CAAC,CACvBC,EAAE,CAACrE,QAAQ,CAAC,CACZsE,MAAM,CAAC,uBAAuB,CAAC,GAClC,cAAc;IAClB,IAAMF,YAAW,GAAG3E,IAAI,eAAAe,MAAA,CAAe2D,sBAAqB,GAAI;MAC9DrB,OAAO,EAAE,CAAC;MACVN,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAMmC,cAAc,GAAGzF,MAAM,CAAC0F,QAAQ,CAACC,IAAI,CAACC,GAAG,CAAC/E,MAAM,CAACgF,YAAY,CAAC,CAAC;IACrE,IAAMC,IAAI,GAAGH,IAAI,CAACI,KAAK,CAACN,cAAc,CAACO,MAAM,CAAC,CAAC,CAAC,CAC7CC,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACnB,IAAMC,KAAK,GAAGR,IAAI,CAACI,KAAK,CAACN,cAAc,CAACU,KAAK,CAAC,CAAC,CAAC,CAC7CF,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACnB,IAAME,OAAO,GAAGX,cAAc,CAC3BW,OAAO,CAAC,CAAC,CACTH,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACnB,IAAMG,OAAO,GAAGZ,cAAc,CAC3BY,OAAO,CAAC,CAAC,CACTJ,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACnB,IAAMI,qBAAqB,GAAGzF,MAAM,CAACgF,YAAY,MAAAvE,MAAA,CAE3CT,MAAM,CAACgF,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,EAAAvE,MAAA,CACjCwE,IAAI,OAAAxE,MAAA,CAAI6E,KAAK,OAAA7E,MAAA,CAAI8E,OAAO,OAAA9E,MAAA,CAAI+E,OAAO,IACtC,cAAc;IAClB,IAAMR,YAAY,GAAGtF,IAAI,iCAAAe,MAAA,CACSgF,qBAAqB,GACrD;MACE1C,OAAO,EAAE,CAAC;MACVN,KAAK,EAAE;IACT,CACF,CAAC;IAED0B,IAAI,CAACM,IAAI,CAAC,CAACE,SAAS,EAAEvB,WAAW,CAAC,CAAC;IACnCe,IAAI,CAACM,IAAI,CAAC,CAACJ,YAAW,EAAEjB,WAAW,CAAC,CAAC;IACrCe,IAAI,CAACM,IAAI,CAAC,CAACO,YAAY,EAAE5B,WAAW,CAAC,CAAC;EACxC;EAEA,IAAMsC,UAAU,GAAG/F,cAAc,CAAC;IAChCwE,IAAI,EAAJA,IAAI;IACJwB,MAAM,EAAE,WAAW;IACnBlD,KAAK,EAAE,YAAY;IACnBmD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAClBC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtB,CAAC,CAAC;EAEF,IAAMC,eAAe,GAAGnG,cAAc,CAAC;IACrCwE,IAAI,EAAE,CAAC,CAACD,UAAU,EAAEJ,cAAc,CAAC,EAAE,CAACG,eAAe,CAAC,CAAC;IACvD0B,MAAM,EAAE,WAAW;IACnBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG;EACnB,CAAC,CAAC;EAEF,IAAMG,QAAQ,GAAGtG,cAAc,CAAC;IAAEoG,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EAAE,CAAC,CAAC;EAC1D,IAAMG,WAAW,GAAGvG,cAAc,CAAC,CAAC;EAEpC,IAAMwG,aAAa,GAAG5G,mBAAmB,CAAC+B,SAAS,EAAE;IAAEnB,QAAQ,EAARA;EAAS,CAAC,CAAC;EAElE,IAAMiG,QAAQ,GAAG;IACfC,KAAK,EAAE/G,iBAAiB,CAAC4C,WAAW,CAACoE,KAAK,CAAC;IAC3CC,cAAc,EAAE/G,oBAAoB,CAACgC,YAAY,CAACgF,UAAU,EAAEvG,IAAI,CAAC;IACnEwG,cAAc,EAAEjH,oBAAoB,CAACoC,YAAY,CAAC4E,UAAU,EAAEvG,IAAI;EACpE,CAAC;EAED,IAAMyG,eAAe,GAAG,CACtB;IACE9G,IAAI,EAAE,aAAa;IACnB+C,KAAK,EAAE;MACLgE,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE;IACd;EACF,CAAC,EACDX,QAAQ,CACT;EAED,OAAO/G,OAAO,CAAC2H,KAAK,CAACT,QAAQ,CAAC,CAC3BvF,IAAI,CAAC,UAAAiG,IAAA;IAAA,IAAGT,KAAK,GAAAS,IAAA,CAALT,KAAK;MAAEE,cAAc,GAAAO,IAAA,CAAdP,cAAc;MAAEE,cAAc,GAAAK,IAAA,CAAdL,cAAc;IAAA,QAC5Cb,UAAU,EACVO,aAAa,EAAAxF,MAAA,CACV+F,eAAe,EAAAK,kBAAA,CACfN,cAAc,GAAAM,kBAAA,CACdV,KAAK,IACRJ,QAAQ,EACRD,eAAe,EACfE,WAAW,GAAAa,kBAAA,CACRR,cAAc;EAAA,CAClB,CAAC,CACDtF,KAAK,CAAC,UAAAC,GAAG,EAAI;IACZ,MAAM,IAAIC,KAAK,0BAAAR,MAAA,CAA0BO,GAAG,CAACE,OAAO,CAAE,CAAC;EACzD,CAAC,CAAC;AACN","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Promise","isEmpty","round","moment","buildAuditContent","buildAuditFollowUps","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","_pdfOptions$flags","flags","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","catch","err","Error","message","_entity$followUps","followUps","_entity$footerFields","footerFields","_entity$gps","gps","_entity$headerFields","headerFields","_entity$score","score","_entity$title","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","widths","margin","totalScoreTable","hLineTop","hLineBottom","followUpItems","promises","entry","items","settings","footerTemplate","formGroups","headerTemplate","auditItemsTitle","font","lineHeight","props","_ref","_toConsumableArray"],"sources":["../../../src/pdf/audit/index.js"],"sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildAuditContent,\n buildAuditFollowUps,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch(err => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data) {\n const { entity } = data\n\n const {\n followUps = [],\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n title = 'Unknown',\n } = entity\n\n const timezone = entity?.timezone || data?.timezone || 'UTC'\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!targetServiceLevel\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n headerAddress = text(address, { style: 'small' })\n\n const truncatedTargetPercent = round(target, 2)\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt, dummyColumn])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays())\n .toString()\n .padStart(2, '0')\n const hours = Math.floor(momentDuration.hours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n colSpan: 2,\n style: 'small',\n }\n )\n\n body.push([startedAt, dummyColumn])\n body.push([submittedAt, dummyColumn])\n body.push([formDuration, dummyColumn])\n }\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n margin: [0, 0, 0, 30],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const followUpItems = buildAuditFollowUps(followUps, { timezone })\n\n const promises = {\n entry: buildAuditContent(groupedData.items, data.settings),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n const auditItemsTitle = [\n {\n text: 'Audit Items',\n style: {\n font: 'Gotham',\n lineHeight: 1.1,\n },\n },\n hLineTop,\n ]\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => [\n titleTable,\n followUpItems,\n ...auditItemsTitle,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ])\n .catch(err => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lighthouse/common",
3
- "version": "6.2.0-canary.8",
3
+ "version": "6.2.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "lib/index.js",
@@ -17,16 +17,16 @@
17
17
  "precommit": "lint-staged",
18
18
  "prepublishOnly": "yarn build",
19
19
  "preversion": "yarn test",
20
- "storybook:html": "start-storybook -p 9001 -c .storybook-html -s ./src",
21
- "storybook:react": "start-storybook -p 9002 -c .storybook-react -s ./src",
20
+ "storybook:html": "sb dev -p 9001 -c .storybook-html",
21
+ "storybook:react": "sb dev -p 9002 -c .storybook-react",
22
+ "build-storybook:html": "sb build -c .storybook-html",
23
+ "build-storybook:react": "sb build -c .storybook-react",
22
24
  "test": "TZ=UTC vitest run",
23
25
  "test:ci": "yarn lint && yarn type-check && yarn test --coverage",
24
26
  "type-check": "tsc --noEmit",
25
27
  "type-check:watch": "yarn type-check --watch",
26
28
  "validate:circleci": "circleci config validate -c .circleci/config.yml",
27
- "version": "yarn build",
28
- "watch:es": "nodemon --watch src --ext js,ts --exec \"yarn build:es\"",
29
- "watch:node": "nodemon --watch src --ext js,ts --exec \"yarn build:node\""
29
+ "version": "yarn build"
30
30
  },
31
31
  "repository": {
32
32
  "type": "git",
@@ -55,11 +55,13 @@
55
55
  "@babel/preset-env": "^7.12.1",
56
56
  "@babel/preset-react": "^7.8.3",
57
57
  "@babel/preset-typescript": "^7.8.3",
58
- "@storybook/addon-actions": "^5.3.14",
59
- "@storybook/addon-knobs": "^5.3.14",
60
- "@storybook/addon-notes": "^5.3.14",
61
- "@storybook/html": "^5.3.14",
62
- "@storybook/react": "^5.3.14",
58
+ "@storybook/addon-actions": "^7.6.20",
59
+ "@storybook/addon-essentials": "^7.6.20",
60
+ "@storybook/cli": "^7.6.20",
61
+ "@storybook/html": "^7.6.20",
62
+ "@storybook/html-webpack5": "^7.6.20",
63
+ "@storybook/react": "^7.6.20",
64
+ "@storybook/react-webpack5": "^7.6.20",
63
65
  "@types/lodash": "^4.14.149",
64
66
  "@types/node": "^12.7.5",
65
67
  "@types/yup": "^0.26.32",
@@ -72,8 +74,9 @@
72
74
  "lint-staged": "^15.2.0",
73
75
  "mockdate": "^2.0.2",
74
76
  "nock": "^12.0.2",
75
- "nodemon": "^3.0.0",
76
77
  "prettier": "^3.3.0",
78
+ "react": "^18.3.1",
79
+ "react-dom": "^18.3.1",
77
80
  "react-visjs-timeline": "^1.6.0",
78
81
  "rimraf": "^2.6.3",
79
82
  "typescript": "^3.8.3",