@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.
- package/dist/helpers/fetch-image/index.js +10 -25
- package/dist/helpers/fetch-image-for-web/index.js +1 -1
- package/dist/helpers/image-validators/index.js +1 -1
- package/dist/pdf/helpers/build-audit-content/index.js +2 -5
- package/dist/pdf/helpers/fields/index.js +9 -15
- package/lib/helpers/fetch-image/index.js +9 -21
- package/lib/helpers/fetch-image/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-web/index.js +1 -1
- package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
- package/lib/helpers/image-validators/index.js +1 -1
- package/lib/helpers/image-validators/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-content/index.js +2 -5
- package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
- package/lib/pdf/helpers/fields/index.js +9 -15
- package/lib/pdf/helpers/fields/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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];
|
|
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 =
|
|
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];
|
|
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
|
-
|
|
21
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
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
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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(
|
|
56
|
-
|
|
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];
|
|
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 =
|
|
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","
|
|
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];
|
|
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]
|
|
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
|
-
|
|
15
|
-
|
|
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","
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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":[]}
|