@lighthouse/common 5.0.0-canary-10 → 5.0.0-canary-11

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.
@@ -36,36 +36,21 @@ const defaultOptions = {
36
36
  cache: 'no-cache'
37
37
  };
38
38
  function fetchImage(url, options = {}) {
39
- const isWebContext = typeof window === 'object';
40
- const {
41
- isHeader = false
42
- } = options;
43
39
  const shouldUseCloudfront = url && url.includes('.cloudfront.net');
44
- if (shouldUseCloudfront && isWebContext) {
45
- // NOTE: Instead of passing in options directly
46
- // we expose the used variables for readability
47
- const {
48
- Signature,
49
- Policy,
50
- KeyPairId
51
- } = options;
52
- return (0, _fetchImageForWeb.fetchImageForWeb)(url, {
53
- isHeader,
54
- Signature,
55
- Policy,
56
- KeyPairId
57
- });
58
- } else if (shouldUseCloudfront && !isWebContext) {
59
- return (0, _fetchImageForPdfGeneratorService.fetchImageForPdfGeneratorService)(url);
40
+ if (shouldUseCloudfront) {
41
+ const isWebContext = typeof window === 'object';
42
+ return isWebContext ?
43
+ // Values used from options: isHeader, Signature, Policy, KeyPairId
44
+ (0, _fetchImageForWeb.fetchImageForWeb)(url, options) : (0, _fetchImageForPdfGeneratorService.fetchImageForPdfGeneratorService)(url);
60
45
  }
61
46
  const encodedUrl = encodeURI(url);
62
47
  const fetchOptions = {
63
48
  ...defaultOptions,
64
- ...options,
65
- headers: {
66
- ...(options.headers || {})
67
- }
49
+ ...options
68
50
  };
51
+ const {
52
+ isHeader = false
53
+ } = options;
69
54
  return fetch(encodedUrl, fetchOptions).then(response => {
70
55
  const contentHeader = response.headers.get('content-length');
71
56
  const contentType = response.headers.get('content-type');
@@ -133,7 +118,7 @@ function validateJpegImage(base64string) {
133
118
  function validatePngImage(base64string) {
134
119
  const src = base64string;
135
120
  const imageData = Uint8Array.from((0, _abab.atob)(src.replace('data:image/png;base64,', '')), c => c.charCodeAt(0));
136
- const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]; // in hex:
121
+ const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130];
137
122
 
138
123
  //check last 12 elements of array so they contains needed values
139
124
  for (let i = 12; i > 0; i--) {
@@ -29,7 +29,7 @@ const fetchImageForWeb = async function (url, options) {
29
29
  KeyPairId
30
30
  } = options;
31
31
  try {
32
- const firstParamConnector = new URL(url).searchParams.size > 0 ? '&' : '?';
32
+ const firstParamConnector = url.indexOf('?') > -1 ? '&' : '?';
33
33
  const urlToEncode = `${url}${firstParamConnector}Signature=${Signature}&Policy=${Policy}&Key-Pair-Id=${KeyPairId}`;
34
34
  const encodedUrl = encodeURI(urlToEncode);
35
35
  console.info('Fetching image via CloudFront For Web');
@@ -28,7 +28,7 @@ function validatePngImage(base64string) {
28
28
  const src = base64string;
29
29
  const base64Data = src.replace('data:image/png;base64,', '');
30
30
  const imageData = new Uint8Array(Buffer.from(base64Data, 'base64'));
31
- const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]; // in hex:
31
+ const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130];
32
32
 
33
33
  //check last 12 elements of array so they contains needed values
34
34
  for (let i = 12; i > 0; i--) {
@@ -17,11 +17,8 @@ const buildAuditContent = exports.buildAuditContent = _bluebird.default.method((
17
17
  assetUrl,
18
18
  link
19
19
  }) => {
20
- return (0, _helpers.fetchImage)(assetUrl, {
21
- Signature: settings.Signature,
22
- Policy: settings.Policy,
23
- KeyPairId: settings.KeyPairId
24
- }).then(base64String => ({
20
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
21
+ return (0, _helpers.fetchImage)(assetUrl, settings).then(base64String => ({
25
22
  alignment: 'center',
26
23
  fit: [210, 210],
27
24
  image: base64String,
@@ -42,10 +42,7 @@ function buildImage(options) {
42
42
  const {
43
43
  awsS3BaseUrl,
44
44
  cloudinaryBaseUrl,
45
- cloudfrontBaseUrl,
46
- Signature,
47
- Policy,
48
- KeyPairId
45
+ cloudfrontBaseUrl
49
46
  } = settings || {};
50
47
  const isVideoType = new RegExp('.mp4$').test(filepath);
51
48
  const link = `${awsS3BaseUrl}/${filepath}`;
@@ -66,11 +63,9 @@ function buildImage(options) {
66
63
  width: 600,
67
64
  quality: 50
68
65
  });
69
- return (0, _helpers.fetchImage)(url, {
70
- Signature,
71
- Policy,
72
- KeyPairId
73
- }).then(base64String => ({
66
+
67
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
68
+ return (0, _helpers.fetchImage)(url, settings).then(base64String => ({
74
69
  alignment,
75
70
  fit: [width, height],
76
71
  image: base64String,
@@ -118,7 +113,8 @@ function buildSummaryField({
118
113
  width: 140
119
114
  };
120
115
  }
121
- return (0, _helpers.fetchImage)(value).then(base64String => {
116
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
117
+ return (0, _helpers.fetchImage)(value, settings).then(base64String => {
122
118
  return {
123
119
  alignment: 'left',
124
120
  image: base64String,
@@ -239,11 +235,9 @@ function buildTemplateFieldRow({
239
235
  }
240
236
  if (isSignatureField) {
241
237
  if (!value) return [labelText, ''];
242
- return (0, _helpers.fetchImage)(value, {
243
- Signature: settings.Signature,
244
- Policy: settings.Policy,
245
- KeyPairId: settings.KeyPairId
246
- }).then(base64String => {
238
+
239
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
240
+ return (0, _helpers.fetchImage)(value, settings).then(base64String => {
247
241
  const values = {
248
242
  alignment: 'left',
249
243
  image: base64String,
@@ -32,29 +32,17 @@ var defaultOptions = {
32
32
  };
33
33
  export function fetchImage(url) {
34
34
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
35
- var isWebContext = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object';
36
- var _options$isHeader = options.isHeader,
37
- isHeader = _options$isHeader === void 0 ? false : _options$isHeader;
38
35
  var shouldUseCloudfront = url && url.includes('.cloudfront.net');
39
- if (shouldUseCloudfront && isWebContext) {
40
- // NOTE: Instead of passing in options directly
41
- // we expose the used variables for readability
42
- var Signature = options.Signature,
43
- Policy = options.Policy,
44
- KeyPairId = options.KeyPairId;
45
- return fetchImageForWeb(url, {
46
- isHeader: isHeader,
47
- Signature: Signature,
48
- Policy: Policy,
49
- KeyPairId: KeyPairId
50
- });
51
- } else if (shouldUseCloudfront && !isWebContext) {
52
- return fetchImageForPdfGeneratorService(url);
36
+ if (shouldUseCloudfront) {
37
+ var isWebContext = (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object';
38
+ return isWebContext ?
39
+ // Values used from options: isHeader, Signature, Policy, KeyPairId
40
+ fetchImageForWeb(url, options) : fetchImageForPdfGeneratorService(url);
53
41
  }
54
42
  var encodedUrl = encodeURI(url);
55
- var fetchOptions = _objectSpread(_objectSpread(_objectSpread({}, defaultOptions), options), {}, {
56
- headers: _objectSpread({}, options.headers || {})
57
- });
43
+ var fetchOptions = _objectSpread(_objectSpread({}, defaultOptions), options);
44
+ var _options$isHeader = options.isHeader,
45
+ isHeader = _options$isHeader === void 0 ? false : _options$isHeader;
58
46
  return fetch(encodedUrl, fetchOptions).then(function (response) {
59
47
  var contentHeader = response.headers.get('content-length');
60
48
  var contentType = response.headers.get('content-type');
@@ -129,7 +117,7 @@ export function validatePngImage(base64string) {
129
117
  var imageData = Uint8Array.from(atob(src.replace('data:image/png;base64,', '')), function (c) {
130
118
  return c.charCodeAt(0);
131
119
  });
132
- var sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]; // in hex:
120
+ var sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130];
133
121
 
134
122
  //check last 12 elements of array so they contains needed values
135
123
  for (var i = 12; i > 0; i--) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["atob","btoa","fetchPonyfill","Promise","LIGHTHOUSE_LOGO_URL","imageNotFound","fetchImageForPdfGeneratorService","fetchImageForWeb","fetch","self","_typeof","contentTypes","defaultOptions","cache","fetchImage","url","options","arguments","length","undefined","isWebContext","window","_options$isHeader","isHeader","shouldUseCloudfront","includes","Signature","Policy","KeyPairId","encodedUrl","encodeURI","fetchOptions","_objectSpread","headers","then","response","contentHeader","get","contentType","reject","Error","concat","ok","imageType","arrayBuffer","buffer","_ref","base64Flag","imageStr","arrayBufferToBase64","base64","isValid","validateBase64Image","catch","error","console","binary","bytes","slice","call","Uint8Array","forEach","b","String","fromCharCode","base64String","isJpeg","startsWith","validateJpegImage","isPng","validatePngImage","base64string","src","imageData","from","replace","c","charCodeAt","imageCorrupted","sequence","i"],"sources":["../../../src/helpers/fetch-image/index.js"],"sourcesContent":["import { atob, btoa } from '@lighthouse/abab'\nimport fetchPonyfill from 'fetch-ponyfill'\nimport Promise from 'bluebird'\nimport { LIGHTHOUSE_LOGO_URL } from '../../constants'\nimport { imageNotFound } from '../../images'\nimport { fetchImageForPdfGeneratorService } from '../fetch-image-for-pdf-generator-service'\nimport { fetchImageForWeb } from '../fetch-image-for-web'\n\n// NOTE use the native fetch if it's available in the browser, because the\n// ponyfill (which actually uses the github polyfill) does not support all the\n// same options as native fetch\nconst fetch =\n (typeof self === 'object' && self.fetch) || fetchPonyfill({ Promise }).fetch\n\nconst contentTypes = {\n 'image/png': 'png',\n 'image/jpeg': 'jpeg',\n}\n\nconst defaultOptions = {\n // NOTE The cache: no-cache option is important to avoid an issue with CORS\n // and caching on Chrome. Here's a good explanation of the issue:\n // https://stackoverflow.com/a/37455118\n // In our case, when loading the web version of a form, the signature image is\n // cached without the correct CORS headers. If the pdf is then generated,\n // there's a mismatch between the cached image headers and the CORS headers\n // sent from the fetch request, causing an error\n cache: 'no-cache',\n}\n\nexport function fetchImage(url, options = {}) {\n const isWebContext = typeof window === 'object'\n\n const { isHeader = false } = options\n\n const shouldUseCloudfront = url && url.includes('.cloudfront.net')\n\n if (shouldUseCloudfront && isWebContext) {\n // NOTE: Instead of passing in options directly\n // we expose the used variables for readability\n const { Signature, Policy, KeyPairId } = options\n\n return fetchImageForWeb(url, {\n isHeader,\n Signature,\n Policy,\n KeyPairId,\n })\n } else if (shouldUseCloudfront && !isWebContext) {\n return fetchImageForPdfGeneratorService(url)\n }\n\n const encodedUrl = encodeURI(url)\n\n const fetchOptions = {\n ...defaultOptions,\n ...options,\n headers: {\n ...(options.headers || {}),\n },\n }\n\n return fetch(encodedUrl, fetchOptions)\n .then(response => {\n const contentHeader = response.headers.get('content-length')\n const contentType = response.headers.get('content-type')\n\n // NOTE: the response will be ok but we won't be able to render any\n // image meaning pdfmake will error. Raise error here and return early.\n if (contentHeader === '0') {\n return Promise.reject(\n new Error(`Failed to fetch image as no content length: ${encodedUrl}`)\n )\n }\n\n if (!response.ok) {\n return Promise.reject(new Error(`Failed to fetch image: ${encodedUrl}`))\n }\n\n const imageType = contentTypes[contentType]\n\n return response.arrayBuffer().then(buffer => ({\n buffer,\n imageType,\n }))\n })\n .then(({ buffer, imageType }) => {\n const base64Flag = `data:image/${imageType};base64,`\n const imageStr = arrayBufferToBase64(buffer)\n\n const base64 = `${base64Flag}${imageStr}`\n const isValid = validateBase64Image(base64)\n\n if (!isValid) {\n return Promise.reject(new Error('InvalidImageError'))\n }\n\n return base64\n })\n .catch(error => {\n if (isHeader) {\n // NOTE: Replace failed headers with LH logo\n console.error('FetchImageHeaderError', error)\n return fetchImage(LIGHTHOUSE_LOGO_URL, defaultOptions)\n }\n\n console.error(error)\n return imageNotFound\n })\n}\n\nfunction arrayBufferToBase64(buffer) {\n let binary = ''\n const bytes = [].slice.call(new Uint8Array(buffer))\n\n bytes.forEach(b => (binary += String.fromCharCode(b)))\n\n return btoa(binary)\n}\n\nexport function validateBase64Image(base64String) {\n const isJpeg = base64String.startsWith('data:image/jpeg;base64,')\n\n if (isJpeg) return validateJpegImage(base64String)\n\n const isPng = base64String.startsWith('data:image/png;base64,')\n\n if (isPng) return validatePngImage(base64String)\n\n return false\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nexport function validateJpegImage(base64string) {\n const src = base64string\n const imageData = Uint8Array.from(\n atob(src.replace('data:image/jpeg;base64,', '')),\n c => c.charCodeAt(0)\n )\n const imageCorrupted =\n imageData[imageData.length - 1] === 217 &&\n imageData[imageData.length - 2] === 255\n\n return imageCorrupted\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nexport function validatePngImage(base64string) {\n const src = base64string\n const imageData = Uint8Array.from(\n atob(src.replace('data:image/png;base64,', '')),\n c => c.charCodeAt(0)\n )\n const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130] // in hex:\n\n //check last 12 elements of array so they contains needed values\n for (let i = 12; i > 0; i--) {\n if (imageData[imageData.length - i] !== sequence[12 - i]) {\n return false\n }\n }\n\n return true\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["atob","btoa","fetchPonyfill","Promise","LIGHTHOUSE_LOGO_URL","imageNotFound","fetchImageForPdfGeneratorService","fetchImageForWeb","fetch","self","_typeof","contentTypes","defaultOptions","cache","fetchImage","url","options","arguments","length","undefined","shouldUseCloudfront","includes","isWebContext","window","encodedUrl","encodeURI","fetchOptions","_objectSpread","_options$isHeader","isHeader","then","response","contentHeader","headers","get","contentType","reject","Error","concat","ok","imageType","arrayBuffer","buffer","_ref","base64Flag","imageStr","arrayBufferToBase64","base64","isValid","validateBase64Image","catch","error","console","binary","bytes","slice","call","Uint8Array","forEach","b","String","fromCharCode","base64String","isJpeg","startsWith","validateJpegImage","isPng","validatePngImage","base64string","src","imageData","from","replace","c","charCodeAt","imageCorrupted","sequence","i"],"sources":["../../../src/helpers/fetch-image/index.js"],"sourcesContent":["import { atob, btoa } from '@lighthouse/abab'\nimport fetchPonyfill from 'fetch-ponyfill'\nimport Promise from 'bluebird'\nimport { LIGHTHOUSE_LOGO_URL } from '../../constants'\nimport { imageNotFound } from '../../images'\nimport { fetchImageForPdfGeneratorService } from '../fetch-image-for-pdf-generator-service'\nimport { fetchImageForWeb } from '../fetch-image-for-web'\n\n// NOTE use the native fetch if it's available in the browser, because the\n// ponyfill (which actually uses the github polyfill) does not support all the\n// same options as native fetch\nconst fetch =\n (typeof self === 'object' && self.fetch) || fetchPonyfill({ Promise }).fetch\n\nconst contentTypes = {\n 'image/png': 'png',\n 'image/jpeg': 'jpeg',\n}\n\nconst defaultOptions = {\n // NOTE The cache: no-cache option is important to avoid an issue with CORS\n // and caching on Chrome. Here's a good explanation of the issue:\n // https://stackoverflow.com/a/37455118\n // In our case, when loading the web version of a form, the signature image is\n // cached without the correct CORS headers. If the pdf is then generated,\n // there's a mismatch between the cached image headers and the CORS headers\n // sent from the fetch request, causing an error\n cache: 'no-cache',\n}\n\nexport function fetchImage(url, options = {}) {\n const shouldUseCloudfront = url && url.includes('.cloudfront.net')\n\n if (shouldUseCloudfront) {\n const isWebContext = typeof window === 'object'\n\n return isWebContext\n ? // Values used from options: isHeader, Signature, Policy, KeyPairId\n fetchImageForWeb(url, options)\n : fetchImageForPdfGeneratorService(url)\n }\n\n const encodedUrl = encodeURI(url)\n\n const fetchOptions = {\n ...defaultOptions,\n ...options,\n }\n const { isHeader = false } = options\n\n return fetch(encodedUrl, fetchOptions)\n .then(response => {\n const contentHeader = response.headers.get('content-length')\n const contentType = response.headers.get('content-type')\n\n // NOTE: the response will be ok but we won't be able to render any\n // image meaning pdfmake will error. Raise error here and return early.\n if (contentHeader === '0') {\n return Promise.reject(\n new Error(`Failed to fetch image as no content length: ${encodedUrl}`)\n )\n }\n\n if (!response.ok) {\n return Promise.reject(new Error(`Failed to fetch image: ${encodedUrl}`))\n }\n\n const imageType = contentTypes[contentType]\n\n return response.arrayBuffer().then(buffer => ({\n buffer,\n imageType,\n }))\n })\n .then(({ buffer, imageType }) => {\n const base64Flag = `data:image/${imageType};base64,`\n const imageStr = arrayBufferToBase64(buffer)\n\n const base64 = `${base64Flag}${imageStr}`\n const isValid = validateBase64Image(base64)\n\n if (!isValid) {\n return Promise.reject(new Error('InvalidImageError'))\n }\n\n return base64\n })\n .catch(error => {\n if (isHeader) {\n // NOTE: Replace failed headers with LH logo\n console.error('FetchImageHeaderError', error)\n return fetchImage(LIGHTHOUSE_LOGO_URL, defaultOptions)\n }\n\n console.error(error)\n return imageNotFound\n })\n}\n\nfunction arrayBufferToBase64(buffer) {\n let binary = ''\n const bytes = [].slice.call(new Uint8Array(buffer))\n\n bytes.forEach(b => (binary += String.fromCharCode(b)))\n\n return btoa(binary)\n}\n\nexport function validateBase64Image(base64String) {\n const isJpeg = base64String.startsWith('data:image/jpeg;base64,')\n\n if (isJpeg) return validateJpegImage(base64String)\n\n const isPng = base64String.startsWith('data:image/png;base64,')\n\n if (isPng) return validatePngImage(base64String)\n\n return false\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nexport function validateJpegImage(base64string) {\n const src = base64string\n const imageData = Uint8Array.from(\n atob(src.replace('data:image/jpeg;base64,', '')),\n c => c.charCodeAt(0)\n )\n const imageCorrupted =\n imageData[imageData.length - 1] === 217 &&\n imageData[imageData.length - 2] === 255\n\n return imageCorrupted\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nexport function validatePngImage(base64string) {\n const src = base64string\n const imageData = Uint8Array.from(\n atob(src.replace('data:image/png;base64,', '')),\n c => c.charCodeAt(0)\n )\n const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]\n\n //check last 12 elements of array so they contains needed values\n for (let i = 12; i > 0; i--) {\n if (imageData[imageData.length - i] !== sequence[12 - i]) {\n return false\n }\n }\n\n return true\n}\n"],"mappings":"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","ignoreList":[]}
@@ -26,7 +26,7 @@ export var fetchImageForWeb = /*#__PURE__*/function () {
26
26
  case 0:
27
27
  _options$isHeader = options.isHeader, isHeader = _options$isHeader === void 0 ? false : _options$isHeader, Signature = options.Signature, Policy = options.Policy, KeyPairId = options.KeyPairId;
28
28
  _context.prev = 1;
29
- firstParamConnector = new URL(url).searchParams.size > 0 ? '&' : '?';
29
+ firstParamConnector = url.indexOf('?') > -1 ? '&' : '?';
30
30
  urlToEncode = "".concat(url).concat(firstParamConnector, "Signature=").concat(Signature, "&Policy=").concat(Policy, "&Key-Pair-Id=").concat(KeyPairId);
31
31
  encodedUrl = encodeURI(urlToEncode);
32
32
  console.info('Fetching image via CloudFront For Web');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["imageNotFound","fetchLighthouseLogo","arrayBufferToBase64","validateBase64Image","fetchPonyfill","contentTypes","fetch","self","_typeof","Promise","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","wrap","_callee$","_context","prev","next","URL","searchParams","size","concat","encodeURI","console","info","sent","headers","get","abrupt","reject","Error","ok","arrayBuffer","t0","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 '../array-buffer-to-base-64'\nimport { validateBase64Image } from '../image-validators'\nimport fetchPonyfill from 'fetch-ponyfill'\nconst contentTypes = {\n 'image/png': 'png',\n 'image/jpeg': 'jpeg',\n}\n\n// NOTE use the native fetch if it's available in the browser, because the\n// ponyfill (which actually uses the github polyfill) does not support all the\n// same options as native fetch\nconst fetch =\n (typeof self === 'object' && self.fetch) || fetchPonyfill({ Promise }).fetch\n\nexport const fetchImageForWeb = async function(url, options) {\n const { isHeader = false, Signature, Policy, KeyPairId } = options\n\n try {\n const firstParamConnector = new URL(url).searchParams.size > 0 ? '&' : '?'\n const urlToEncode = `${url}${firstParamConnector}Signature=${Signature}&Policy=${Policy}&Key-Pair-Id=${KeyPairId}`\n\n const encodedUrl = encodeURI(urlToEncode)\n\n console.info('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) {\n return base64\n }\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 return Promise.reject(new Error('InvalidImageError'))\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["imageNotFound","fetchLighthouseLogo","arrayBufferToBase64","validateBase64Image","fetchPonyfill","contentTypes","fetch","self","_typeof","Promise","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","wrap","_callee$","_context","prev","next","indexOf","concat","encodeURI","console","info","sent","headers","get","abrupt","reject","Error","ok","arrayBuffer","t0","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 '../array-buffer-to-base-64'\nimport { validateBase64Image } from '../image-validators'\nimport fetchPonyfill from 'fetch-ponyfill'\nconst contentTypes = {\n 'image/png': 'png',\n 'image/jpeg': 'jpeg',\n}\n\n// NOTE use the native fetch if it's available in the browser, because the\n// ponyfill (which actually uses the github polyfill) does not support all the\n// same options as native fetch\nconst fetch =\n (typeof self === 'object' && self.fetch) || fetchPonyfill({ Promise }).fetch\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.info('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) {\n return base64\n }\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 return Promise.reject(new Error('InvalidImageError'))\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,7 +22,7 @@ function validatePngImage(base64string) {
22
22
  var src = base64string;
23
23
  var base64Data = src.replace('data:image/png;base64,', '');
24
24
  var imageData = new Uint8Array(Buffer.from(base64Data, 'base64'));
25
- var sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]; // in hex:
25
+ var sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130];
26
26
 
27
27
  //check last 12 elements of array so they contains needed values
28
28
  for (var i = 12; i > 0; i--) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["validateBase64Image","base64String","isJpeg","startsWith","validateJpegImage","isPng","validatePngImage","base64string","src","base64Data","replace","imageData","Uint8Array","Buffer","from","imageCorrupted","length","sequence","i"],"sources":["../../../src/helpers/image-validators/index.js"],"sourcesContent":["export function validateBase64Image(base64String) {\n const isJpeg = base64String.startsWith('data:image/jpeg;base64,')\n\n if (isJpeg) return validateJpegImage(base64String)\n\n const isPng = base64String.startsWith('data:image/png;base64,')\n\n if (isPng) return validatePngImage(base64String)\n\n return false\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nfunction validateJpegImage(base64string) {\n const src = base64string\n const base64Data = src.replace('data:image/jpeg;base64,', '')\n const imageData = new Uint8Array(Buffer.from(base64Data, 'base64'))\n const imageCorrupted =\n imageData[imageData.length - 1] === 217 &&\n imageData[imageData.length - 2] === 255\n\n return imageCorrupted\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nfunction validatePngImage(base64string) {\n const src = base64string\n const base64Data = src.replace('data:image/png;base64,', '')\n const imageData = new Uint8Array(Buffer.from(base64Data, 'base64'))\n const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130] // in hex:\n\n //check last 12 elements of array so they contains needed values\n for (let i = 12; i > 0; i--) {\n if (imageData[imageData.length - i] !== sequence[12 - i]) {\n return false\n }\n }\n\n return true\n}\n"],"mappings":"AAAA,OAAO,SAASA,mBAAmBA,CAACC,YAAY,EAAE;EAChD,IAAMC,MAAM,GAAGD,YAAY,CAACE,UAAU,CAAC,yBAAyB,CAAC;EAEjE,IAAID,MAAM,EAAE,OAAOE,iBAAiB,CAACH,YAAY,CAAC;EAElD,IAAMI,KAAK,GAAGJ,YAAY,CAACE,UAAU,CAAC,wBAAwB,CAAC;EAE/D,IAAIE,KAAK,EAAE,OAAOC,gBAAgB,CAACL,YAAY,CAAC;EAEhD,OAAO,KAAK;AACd;;AAEA;AACA;AACA,SAASG,iBAAiBA,CAACG,YAAY,EAAE;EACvC,IAAMC,GAAG,GAAGD,YAAY;EACxB,IAAME,UAAU,GAAGD,GAAG,CAACE,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;EAC7D,IAAMC,SAAS,GAAG,IAAIC,UAAU,CAACC,MAAM,CAACC,IAAI,CAACL,UAAU,EAAE,QAAQ,CAAC,CAAC;EACnE,IAAMM,cAAc,GAClBJ,SAAS,CAACA,SAAS,CAACK,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IACvCL,SAAS,CAACA,SAAS,CAACK,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;EAEzC,OAAOD,cAAc;AACvB;;AAEA;AACA;AACA,SAAST,gBAAgBA,CAACC,YAAY,EAAE;EACtC,IAAMC,GAAG,GAAGD,YAAY;EACxB,IAAME,UAAU,GAAGD,GAAG,CAACE,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;EAC5D,IAAMC,SAAS,GAAG,IAAIC,UAAU,CAACC,MAAM,CAACC,IAAI,CAACL,UAAU,EAAE,QAAQ,CAAC,CAAC;EACnE,IAAMQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAC;;EAEhE;EACA,KAAK,IAAIC,CAAC,GAAG,EAAE,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC3B,IAAIP,SAAS,CAACA,SAAS,CAACK,MAAM,GAAGE,CAAC,CAAC,KAAKD,QAAQ,CAAC,EAAE,GAAGC,CAAC,CAAC,EAAE;MACxD,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["validateBase64Image","base64String","isJpeg","startsWith","validateJpegImage","isPng","validatePngImage","base64string","src","base64Data","replace","imageData","Uint8Array","Buffer","from","imageCorrupted","length","sequence","i"],"sources":["../../../src/helpers/image-validators/index.js"],"sourcesContent":["export function validateBase64Image(base64String) {\n const isJpeg = base64String.startsWith('data:image/jpeg;base64,')\n\n if (isJpeg) return validateJpegImage(base64String)\n\n const isPng = base64String.startsWith('data:image/png;base64,')\n\n if (isPng) return validatePngImage(base64String)\n\n return false\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nfunction validateJpegImage(base64string) {\n const src = base64string\n const base64Data = src.replace('data:image/jpeg;base64,', '')\n const imageData = new Uint8Array(Buffer.from(base64Data, 'base64'))\n const imageCorrupted =\n imageData[imageData.length - 1] === 217 &&\n imageData[imageData.length - 2] === 255\n\n return imageCorrupted\n}\n\n// See SO for more info: https://stackoverflow.com/a/41635312\n// Fiddle: https://jsfiddle.net/Lnyxuchw/\nfunction validatePngImage(base64string) {\n const src = base64string\n const base64Data = src.replace('data:image/png;base64,', '')\n const imageData = new Uint8Array(Buffer.from(base64Data, 'base64'))\n const sequence = [0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130]\n\n //check last 12 elements of array so they contains needed values\n for (let i = 12; i > 0; i--) {\n if (imageData[imageData.length - i] !== sequence[12 - i]) {\n return false\n }\n }\n\n return true\n}\n"],"mappings":"AAAA,OAAO,SAASA,mBAAmBA,CAACC,YAAY,EAAE;EAChD,IAAMC,MAAM,GAAGD,YAAY,CAACE,UAAU,CAAC,yBAAyB,CAAC;EAEjE,IAAID,MAAM,EAAE,OAAOE,iBAAiB,CAACH,YAAY,CAAC;EAElD,IAAMI,KAAK,GAAGJ,YAAY,CAACE,UAAU,CAAC,wBAAwB,CAAC;EAE/D,IAAIE,KAAK,EAAE,OAAOC,gBAAgB,CAACL,YAAY,CAAC;EAEhD,OAAO,KAAK;AACd;;AAEA;AACA;AACA,SAASG,iBAAiBA,CAACG,YAAY,EAAE;EACvC,IAAMC,GAAG,GAAGD,YAAY;EACxB,IAAME,UAAU,GAAGD,GAAG,CAACE,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;EAC7D,IAAMC,SAAS,GAAG,IAAIC,UAAU,CAACC,MAAM,CAACC,IAAI,CAACL,UAAU,EAAE,QAAQ,CAAC,CAAC;EACnE,IAAMM,cAAc,GAClBJ,SAAS,CAACA,SAAS,CAACK,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IACvCL,SAAS,CAACA,SAAS,CAACK,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;EAEzC,OAAOD,cAAc;AACvB;;AAEA;AACA;AACA,SAAST,gBAAgBA,CAACC,YAAY,EAAE;EACtC,IAAMC,GAAG,GAAGD,YAAY;EACxB,IAAME,UAAU,GAAGD,GAAG,CAACE,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;EAC5D,IAAMC,SAAS,GAAG,IAAIC,UAAU,CAACC,MAAM,CAACC,IAAI,CAACL,UAAU,EAAE,QAAQ,CAAC,CAAC;EACnE,IAAMQ,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;;EAE/D;EACA,KAAK,IAAIC,CAAC,GAAG,EAAE,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC3B,IAAIP,SAAS,CAACA,SAAS,CAACK,MAAM,GAAGE,CAAC,CAAC,KAAKD,QAAQ,CAAC,EAAE,GAAGC,CAAC,CAAC,EAAE;MACxD,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
@@ -11,11 +11,8 @@ export var buildAuditContent = Promise.method(function (items) {
11
11
  return Promise.map(item.assets, function (_ref) {
12
12
  var assetUrl = _ref.assetUrl,
13
13
  link = _ref.link;
14
- return fetchImage(assetUrl, {
15
- Signature: settings.Signature,
16
- Policy: settings.Policy,
17
- KeyPairId: settings.KeyPairId
18
- }).then(function (base64String) {
14
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
15
+ return fetchImage(assetUrl, settings).then(function (base64String) {
19
16
  return {
20
17
  alignment: 'center',
21
18
  fit: [210, 210],
@@ -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","Signature","Policy","KeyPairId","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 return fetchImage(assetUrl, {\n Signature: settings.Signature,\n Policy: settings.Policy,\n KeyPairId: settings.KeyPairId,\n }).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":["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":[]}
@@ -30,10 +30,7 @@ function buildImage(options) {
30
30
  var _ref2 = settings || {},
31
31
  awsS3BaseUrl = _ref2.awsS3BaseUrl,
32
32
  cloudinaryBaseUrl = _ref2.cloudinaryBaseUrl,
33
- cloudfrontBaseUrl = _ref2.cloudfrontBaseUrl,
34
- Signature = _ref2.Signature,
35
- Policy = _ref2.Policy,
36
- KeyPairId = _ref2.KeyPairId;
33
+ cloudfrontBaseUrl = _ref2.cloudfrontBaseUrl;
37
34
  var isVideoType = new RegExp('.mp4$').test(filepath);
38
35
  var link = "".concat(awsS3BaseUrl, "/").concat(filepath);
39
36
  if (isVideoType) {
@@ -53,11 +50,9 @@ function buildImage(options) {
53
50
  width: 600,
54
51
  quality: 50
55
52
  });
56
- return fetchImage(url, {
57
- Signature: Signature,
58
- Policy: Policy,
59
- KeyPairId: KeyPairId
60
- }).then(function (base64String) {
53
+
54
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
55
+ return fetchImage(url, settings).then(function (base64String) {
61
56
  return {
62
57
  alignment: alignment,
63
58
  fit: [width, height],
@@ -105,7 +100,8 @@ export function buildSummaryField(_ref3) {
105
100
  width: 140
106
101
  };
107
102
  }
108
- return fetchImage(value).then(function (base64String) {
103
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
104
+ return fetchImage(value, settings).then(function (base64String) {
109
105
  return {
110
106
  alignment: 'left',
111
107
  image: base64String,
@@ -229,11 +225,9 @@ export function buildTemplateFieldRow(_ref4) {
229
225
  }
230
226
  if (isSignatureField) {
231
227
  if (!value) return [labelText, ''];
232
- return fetchImage(value, {
233
- Signature: settings.Signature,
234
- Policy: settings.Policy,
235
- KeyPairId: settings.KeyPairId
236
- }).then(function (base64String) {
228
+
229
+ // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context
230
+ return fetchImage(value, settings).then(function (base64String) {
237
231
  var values = {
238
232
  alignment: 'left',
239
233
  image: base64String,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isArray","isEmpty","join","first","map","startsWith","Promise","moment","buildFetchUrl","fetchImage","videoIcon","imageTables","parseValue","text","toPdf","buildFile","_ref","file","settings","extension","name","path","awsS3BaseUrl","link","concat","margin","buildImage","options","_options$alignment","alignment","filepath","_options$height","height","_options$width","width","_ref2","cloudinaryBaseUrl","cloudfrontBaseUrl","Signature","Policy","KeyPairId","isVideoType","RegExp","test","fit","image","url","quality","then","base64String","buildSummaryField","_ref3","field","timezone","fieldtype","_field$options","value","isDayFirstDateField","format","isMonthFirstDateField","isFileField","isHtmlField","type","isNumberField","isPhotoField","isReferenceField","isSelectField","isSignatureField","isStarField","isSwitchField","isTextField","is12HourTimeField","is24HourTimeField","isDataImage","fileList","ol","parsedValue","displayValue","fontSize","filter","val","label","tz","buildTemplateFieldRow","_ref4","skipped","_field$options2","_options$showOnRead","showOnRead","isDisplayImageField","labelText","parsed","replace","values","fieldImages","tables","imagesRow","colSpan","layout","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","table","body","_toConsumableArray","widths","string"],"sources":["../../../../src/pdf/helpers/fields/index.js"],"sourcesContent":["import { isArray, isEmpty, join, first, map, startsWith } from 'lodash'\nimport Promise from 'bluebird'\nimport moment from 'moment-timezone'\n\nimport { buildFetchUrl, fetchImage } from '../../../helpers'\nimport { videoIcon } from '../../../images'\nimport { imageTables, parseValue, text, toPdf } from '../'\n\nexport function buildFile({ file, settings }) {\n const { extension, name, path } = file\n const { awsS3BaseUrl } = settings\n\n const link = `${awsS3BaseUrl}/${path}`\n return text(`${name}.${extension}`, { link, margin: [0, 0, 0, 10] })\n}\n\nfunction buildImage(options) {\n const {\n alignment = 'center',\n filepath,\n height = 210,\n settings,\n width = 210,\n } = options\n const {\n awsS3BaseUrl,\n cloudinaryBaseUrl,\n cloudfrontBaseUrl,\n Signature,\n Policy,\n KeyPairId,\n } = settings || {}\n\n const isVideoType = new RegExp('.mp4$').test(filepath)\n const link = `${awsS3BaseUrl}/${filepath}`\n\n if (isVideoType) {\n return {\n alignment,\n fit: [width, height],\n image: videoIcon,\n link,\n }\n }\n\n const url = buildFetchUrl(filepath, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n fit: true,\n height: 400,\n width: 600,\n quality: 50,\n })\n\n return fetchImage(url, {\n Signature,\n Policy,\n KeyPairId,\n }).then(base64String => ({\n alignment,\n fit: [width, height],\n image: base64String,\n link,\n }))\n}\n\nexport function buildSummaryField({ field, settings, timezone }) {\n const { fieldtype, options = {}, value } = field\n\n const isDayFirstDateField =\n fieldtype === 'date' && options.format === 'DD/MM/YY'\n const isMonthFirstDateField =\n fieldtype === 'date' && options.format === 'MM/DD/YY'\n const isFileField = fieldtype === 'file'\n const isHtmlField = fieldtype === 'text' && options.type === 'html'\n const isNumberField = fieldtype === 'number'\n const isPhotoField = fieldtype === 'list' && options.type === 'media'\n const isReferenceField = fieldtype === 'reference'\n const isSelectField = fieldtype === 'select' && options.type !== 'stars'\n const isSignatureField = fieldtype === 'text' && options.type === 'signature'\n const isStarField = fieldtype === 'select' && options.type === 'stars'\n const isSwitchField = fieldtype === 'switch'\n const isTextField = fieldtype === 'text'\n const is12HourTimeField = fieldtype === 'time' && options.format === 'h:mm a'\n const is24HourTimeField = fieldtype === 'time' && options.format === 'HH:mm'\n\n // NOTE: html field is not supported for the summary fields but adding\n // logic to catch this and return empty text for completeness\n if (isHtmlField) {\n return { text: '' }\n }\n\n if (isSignatureField) {\n if (!value) return ''\n\n if (isDataImage(value)) {\n return { alignment: 'left', image: value, width: 140 }\n }\n\n return fetchImage(value).then(base64String => {\n return {\n alignment: 'left',\n image: base64String,\n width: 140,\n }\n })\n }\n\n if (isPhotoField) {\n const filepath = first(value)\n\n // NOTE: if no filepath return empty text as user has not uploaded an image\n // for this field\n if (!filepath) {\n return { text: '' }\n }\n\n const image = buildImage({\n alignment: 'left',\n filepath,\n height: 140,\n width: 140,\n settings,\n })\n\n return image\n }\n\n if (isFileField) {\n const fileList = map(value, file => buildFile({ file, settings }))\n return { ol: fileList }\n }\n\n if (isNumberField || isSelectField || isSwitchField || isTextField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? { text: join(parsedValue, ', '), fontSize: 7 }\n : { text: parsedValue, fontSize: 7 }\n\n return displayValue\n }\n\n if (isReferenceField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? {\n text: parsedValue\n .filter(val => val && val.label)\n .map(val => val.label)\n .join(', '),\n fontSize: 7,\n }\n : { text: parsedValue.label, fontSize: 7 }\n\n return displayValue\n }\n\n if (isStarField) {\n if (!value) return ''\n const displayValue = value === '1' ? `${value} star` : `${value} stars`\n return displayValue\n }\n\n if (\n isDayFirstDateField ||\n isMonthFirstDateField ||\n is12HourTimeField ||\n is24HourTimeField\n ) {\n const format = options.format\n const displayValue = moment(value)\n .tz(timezone)\n .format(format)\n\n return displayValue\n }\n\n // NOTE: return empty text fallback value when no match\n return { text: '' }\n}\n\nexport function buildTemplateFieldRow({ field, settings, timezone, skipped }) {\n const { fieldtype, label, options = {}, value } = field\n const { showOnRead = true } = options\n\n const isDayFirstDateField =\n fieldtype === 'date' && options.format === 'DD/MM/YY'\n const isMonthFirstDateField =\n fieldtype === 'date' && options.format === 'MM/DD/YY'\n const isFileField = fieldtype === 'file'\n const isHtmlField = fieldtype === 'text' && options.type === 'html'\n const isNumberField = fieldtype === 'number'\n const isPhotoField = fieldtype === 'list' && options.type === 'media'\n const isSelectField = fieldtype === 'select' && options.type !== 'stars'\n const isSignatureField = fieldtype === 'text' && options.type === 'signature'\n const isStarField = fieldtype === 'select' && options.type === 'stars'\n const isSwitchField = fieldtype === 'switch'\n const isTextField = fieldtype === 'text'\n const is12HourTimeField = fieldtype === 'time' && options.format === 'h:mm a'\n const is24HourTimeField = fieldtype === 'time' && options.format === 'HH:mm'\n const isDisplayImageField = fieldtype === 'image-display' && showOnRead\n const isReferenceField = fieldtype === 'reference'\n\n // NOTE: only show field when show on read is true\n if (!showOnRead) return null\n\n const labelText = [{ text: label }]\n\n if (skipped) {\n return [labelText, [{ text: '-' }]]\n }\n\n if (isHtmlField) {\n const parsed = value.replace(/<p><\\/p>/g, '')\n return [labelText, toPdf(parsed)]\n }\n\n if (isSignatureField) {\n if (!value) return [labelText, '']\n\n return fetchImage(value, {\n Signature: settings.Signature,\n Policy: settings.Policy,\n KeyPairId: settings.KeyPairId,\n }).then(base64String => {\n const values = {\n alignment: 'left',\n image: base64String,\n width: 140,\n }\n return [labelText, values]\n })\n }\n\n if (isDisplayImageField) {\n return Promise.map([value], filepath =>\n buildImage({ filepath, settings })\n ).then(fieldImages => [fieldImages, {}])\n }\n\n if (isPhotoField) {\n return Promise.map(value, filepath =>\n buildImage({ filepath, settings })\n ).then(fieldImages => {\n const tables = !isEmpty(fieldImages) ? imageTables(fieldImages) : []\n\n const imagesRow = {\n colSpan: 2,\n layout: {\n hLineWidth: () => 0,\n paddingLeft: () => 0,\n paddingRight: () => 0,\n paddingTop: () => 0,\n paddingBottom: () => 0,\n vLineWidth: () => 0,\n },\n table: {\n body: [labelText, ...tables],\n widths: ['*'],\n },\n }\n\n // NOTE: pass empty value here as otherwise\n // we can accidentally hide content below\n // this row. Please see the following issue:\n // https://github.com/bpampuch/pdfmake/issues/1598\n return [imagesRow, {}]\n })\n }\n\n if (isFileField) {\n const fileList = map(value, file => buildFile({ file, settings }))\n return [labelText, { ol: fileList }]\n }\n\n if (isNumberField || isSelectField || isSwitchField || isTextField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? { text: join(parsedValue, ', ') }\n : { text: parsedValue }\n\n return [labelText, displayValue]\n }\n\n if (isReferenceField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? {\n text: parsedValue\n .filter(val => val && val.label)\n .map(val => val.label)\n .join(', '),\n fontSize: 7,\n }\n : { text: parsedValue.label, fontSize: 7 }\n\n return [labelText, displayValue]\n }\n\n if (isStarField) {\n if (!value) return [labelText, '']\n const displayValue = value === '1' ? `${value} star` : `${value} stars`\n return [labelText, displayValue]\n }\n\n if (\n isDayFirstDateField ||\n isMonthFirstDateField ||\n is12HourTimeField ||\n is24HourTimeField\n ) {\n const format = options.format\n const displayValue = value\n ? moment(value)\n .tz(timezone)\n .format(format)\n : ''\n\n return [labelText, displayValue]\n }\n\n // NOTE: if no match above null values will be stripped within calling fn\n return null\n}\n\nfunction isDataImage(string) {\n return startsWith(string, 'data:image/png;')\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["isArray","isEmpty","join","first","map","startsWith","Promise","moment","buildFetchUrl","fetchImage","videoIcon","imageTables","parseValue","text","toPdf","buildFile","_ref","file","settings","extension","name","path","awsS3BaseUrl","link","concat","margin","buildImage","options","_options$alignment","alignment","filepath","_options$height","height","_options$width","width","_ref2","cloudinaryBaseUrl","cloudfrontBaseUrl","isVideoType","RegExp","test","fit","image","url","quality","then","base64String","buildSummaryField","_ref3","field","timezone","fieldtype","_field$options","value","isDayFirstDateField","format","isMonthFirstDateField","isFileField","isHtmlField","type","isNumberField","isPhotoField","isReferenceField","isSelectField","isSignatureField","isStarField","isSwitchField","isTextField","is12HourTimeField","is24HourTimeField","isDataImage","fileList","ol","parsedValue","displayValue","fontSize","filter","val","label","tz","buildTemplateFieldRow","_ref4","skipped","_field$options2","_options$showOnRead","showOnRead","isDisplayImageField","labelText","parsed","replace","values","fieldImages","tables","imagesRow","colSpan","layout","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","table","body","_toConsumableArray","widths","string"],"sources":["../../../../src/pdf/helpers/fields/index.js"],"sourcesContent":["import { isArray, isEmpty, join, first, map, startsWith } from 'lodash'\nimport Promise from 'bluebird'\nimport moment from 'moment-timezone'\n\nimport { buildFetchUrl, fetchImage } from '../../../helpers'\nimport { videoIcon } from '../../../images'\nimport { imageTables, parseValue, text, toPdf } from '../'\n\nexport function buildFile({ file, settings }) {\n const { extension, name, path } = file\n const { awsS3BaseUrl } = settings\n\n const link = `${awsS3BaseUrl}/${path}`\n return text(`${name}.${extension}`, { link, margin: [0, 0, 0, 10] })\n}\n\nfunction buildImage(options) {\n const {\n alignment = 'center',\n filepath,\n height = 210,\n settings,\n width = 210,\n } = options\n const { awsS3BaseUrl, cloudinaryBaseUrl, cloudfrontBaseUrl } = settings || {}\n\n const isVideoType = new RegExp('.mp4$').test(filepath)\n const link = `${awsS3BaseUrl}/${filepath}`\n\n if (isVideoType) {\n return {\n alignment,\n fit: [width, height],\n image: videoIcon,\n link,\n }\n }\n\n const url = buildFetchUrl(filepath, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n fit: true,\n height: 400,\n width: 600,\n quality: 50,\n })\n\n // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context\n return fetchImage(url, settings).then(base64String => ({\n alignment,\n fit: [width, height],\n image: base64String,\n link,\n }))\n}\n\nexport function buildSummaryField({ field, settings, timezone }) {\n const { fieldtype, options = {}, value } = field\n\n const isDayFirstDateField =\n fieldtype === 'date' && options.format === 'DD/MM/YY'\n const isMonthFirstDateField =\n fieldtype === 'date' && options.format === 'MM/DD/YY'\n const isFileField = fieldtype === 'file'\n const isHtmlField = fieldtype === 'text' && options.type === 'html'\n const isNumberField = fieldtype === 'number'\n const isPhotoField = fieldtype === 'list' && options.type === 'media'\n const isReferenceField = fieldtype === 'reference'\n const isSelectField = fieldtype === 'select' && options.type !== 'stars'\n const isSignatureField = fieldtype === 'text' && options.type === 'signature'\n const isStarField = fieldtype === 'select' && options.type === 'stars'\n const isSwitchField = fieldtype === 'switch'\n const isTextField = fieldtype === 'text'\n const is12HourTimeField = fieldtype === 'time' && options.format === 'h:mm a'\n const is24HourTimeField = fieldtype === 'time' && options.format === 'HH:mm'\n\n // NOTE: html field is not supported for the summary fields but adding\n // logic to catch this and return empty text for completeness\n if (isHtmlField) {\n return { text: '' }\n }\n\n if (isSignatureField) {\n if (!value) return ''\n\n if (isDataImage(value)) {\n return { alignment: 'left', image: value, width: 140 }\n }\n // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context\n return fetchImage(value, settings).then(base64String => {\n return {\n alignment: 'left',\n image: base64String,\n width: 140,\n }\n })\n }\n\n if (isPhotoField) {\n const filepath = first(value)\n\n // NOTE: if no filepath return empty text as user has not uploaded an image\n // for this field\n if (!filepath) {\n return { text: '' }\n }\n\n const image = buildImage({\n alignment: 'left',\n filepath,\n height: 140,\n width: 140,\n settings,\n })\n\n return image\n }\n\n if (isFileField) {\n const fileList = map(value, file => buildFile({ file, settings }))\n return { ol: fileList }\n }\n\n if (isNumberField || isSelectField || isSwitchField || isTextField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? { text: join(parsedValue, ', '), fontSize: 7 }\n : { text: parsedValue, fontSize: 7 }\n\n return displayValue\n }\n\n if (isReferenceField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? {\n text: parsedValue\n .filter(val => val && val.label)\n .map(val => val.label)\n .join(', '),\n fontSize: 7,\n }\n : { text: parsedValue.label, fontSize: 7 }\n\n return displayValue\n }\n\n if (isStarField) {\n if (!value) return ''\n const displayValue = value === '1' ? `${value} star` : `${value} stars`\n return displayValue\n }\n\n if (\n isDayFirstDateField ||\n isMonthFirstDateField ||\n is12HourTimeField ||\n is24HourTimeField\n ) {\n const format = options.format\n const displayValue = moment(value)\n .tz(timezone)\n .format(format)\n\n return displayValue\n }\n\n // NOTE: return empty text fallback value when no match\n return { text: '' }\n}\n\nexport function buildTemplateFieldRow({ field, settings, timezone, skipped }) {\n const { fieldtype, label, options = {}, value } = field\n const { showOnRead = true } = options\n\n const isDayFirstDateField =\n fieldtype === 'date' && options.format === 'DD/MM/YY'\n const isMonthFirstDateField =\n fieldtype === 'date' && options.format === 'MM/DD/YY'\n const isFileField = fieldtype === 'file'\n const isHtmlField = fieldtype === 'text' && options.type === 'html'\n const isNumberField = fieldtype === 'number'\n const isPhotoField = fieldtype === 'list' && options.type === 'media'\n const isSelectField = fieldtype === 'select' && options.type !== 'stars'\n const isSignatureField = fieldtype === 'text' && options.type === 'signature'\n const isStarField = fieldtype === 'select' && options.type === 'stars'\n const isSwitchField = fieldtype === 'switch'\n const isTextField = fieldtype === 'text'\n const is12HourTimeField = fieldtype === 'time' && options.format === 'h:mm a'\n const is24HourTimeField = fieldtype === 'time' && options.format === 'HH:mm'\n const isDisplayImageField = fieldtype === 'image-display' && showOnRead\n const isReferenceField = fieldtype === 'reference'\n\n // NOTE: only show field when show on read is true\n if (!showOnRead) return null\n\n const labelText = [{ text: label }]\n\n if (skipped) {\n return [labelText, [{ text: '-' }]]\n }\n\n if (isHtmlField) {\n const parsed = value.replace(/<p><\\/p>/g, '')\n return [labelText, toPdf(parsed)]\n }\n\n if (isSignatureField) {\n if (!value) return [labelText, '']\n\n // NOTE: Signature, Policy and KeyPairId are the only used values from settings in this context\n return fetchImage(value, settings).then(base64String => {\n const values = {\n alignment: 'left',\n image: base64String,\n width: 140,\n }\n return [labelText, values]\n })\n }\n\n if (isDisplayImageField) {\n return Promise.map([value], filepath =>\n buildImage({ filepath, settings })\n ).then(fieldImages => [fieldImages, {}])\n }\n\n if (isPhotoField) {\n return Promise.map(value, filepath =>\n buildImage({ filepath, settings })\n ).then(fieldImages => {\n const tables = !isEmpty(fieldImages) ? imageTables(fieldImages) : []\n\n const imagesRow = {\n colSpan: 2,\n layout: {\n hLineWidth: () => 0,\n paddingLeft: () => 0,\n paddingRight: () => 0,\n paddingTop: () => 0,\n paddingBottom: () => 0,\n vLineWidth: () => 0,\n },\n table: {\n body: [labelText, ...tables],\n widths: ['*'],\n },\n }\n\n // NOTE: pass empty value here as otherwise\n // we can accidentally hide content below\n // this row. Please see the following issue:\n // https://github.com/bpampuch/pdfmake/issues/1598\n return [imagesRow, {}]\n })\n }\n\n if (isFileField) {\n const fileList = map(value, file => buildFile({ file, settings }))\n return [labelText, { ol: fileList }]\n }\n\n if (isNumberField || isSelectField || isSwitchField || isTextField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? { text: join(parsedValue, ', ') }\n : { text: parsedValue }\n\n return [labelText, displayValue]\n }\n\n if (isReferenceField) {\n const parsedValue = parseValue(value)\n const displayValue = isArray(parsedValue)\n ? {\n text: parsedValue\n .filter(val => val && val.label)\n .map(val => val.label)\n .join(', '),\n fontSize: 7,\n }\n : { text: parsedValue.label, fontSize: 7 }\n\n return [labelText, displayValue]\n }\n\n if (isStarField) {\n if (!value) return [labelText, '']\n const displayValue = value === '1' ? `${value} star` : `${value} stars`\n return [labelText, displayValue]\n }\n\n if (\n isDayFirstDateField ||\n isMonthFirstDateField ||\n is12HourTimeField ||\n is24HourTimeField\n ) {\n const format = options.format\n const displayValue = value\n ? moment(value)\n .tz(timezone)\n .format(format)\n : ''\n\n return [labelText, displayValue]\n }\n\n // NOTE: if no match above null values will be stripped within calling fn\n return null\n}\n\nfunction isDataImage(string) {\n return startsWith(string, 'data:image/png;')\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": "5.0.0-canary-10",
3
+ "version": "5.0.0-canary-11",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "lib/index.js",