@lighthouse/common 5.0.0-canary-12 → 5.0.0-canary-13
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/build-fetch-url/index.js +2 -2
- package/dist/helpers/fetch-image/index.js +1 -1
- package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +9 -9
- package/dist/helpers/fetch-image-for-web/index.js +3 -5
- package/dist/helpers/get-audit-entry-details/index.js +2 -0
- package/dist/helpers/get-issue-details/index.js +2 -0
- package/dist/helpers/get-task-entry-details/index.js +3 -1
- package/dist/pdf/helpers/fields/index.js +2 -2
- package/lib/helpers/build-fetch-url/index.js +2 -2
- package/lib/helpers/build-fetch-url/index.js.map +1 -1
- package/lib/helpers/fetch-image/index.js +1 -1
- package/lib/helpers/fetch-image/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +9 -9
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-web/index.js +4 -7
- package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
- package/lib/helpers/get-audit-entry-details/index.js +2 -0
- package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
- package/lib/helpers/get-issue-details/index.js +2 -0
- package/lib/helpers/get-issue-details/index.js.map +1 -1
- package/lib/helpers/get-task-entry-details/index.js +3 -1
- package/lib/helpers/get-task-entry-details/index.js.map +1 -1
- package/lib/pdf/helpers/fields/index.js +14 -14
- package/lib/pdf/helpers/fields/index.js.map +1 -1
- package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
- package/lib/service-hours/schema.js.map +1 -1
- package/package.json +2 -2
- package/package-lock.json +0 -25484
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["get","getLocationReference","getReferenceDetails","getTimezoneDatetime","getTaskEntryDetails","data","_data$entity","entity","timezone","createdAt","gps","sequenceId","gpsText","locationText","referenceDetails","timezoneHourTime","format","timestamp","timezoneDatetime","referenceLabel","label","referenceValue","value"],"sources":["../../../src/helpers/get-task-entry-details/index.js"],"sourcesContent":["import { get } from 'lodash'\n\nimport {\n getLocationReference,\n getReferenceDetails,\n getTimezoneDatetime,\n} from '../'\n\nexport function getTaskEntryDetails(data) {\n const { entity = {}, timezone } = data\n\n const { createdAt, gps, sequenceId } = entity\n\n const gpsText = get(gps, 'reverseGeocoded.label', 'Unknown Location')\n const locationText = getLocationReference(data)\n const referenceDetails = getReferenceDetails(data)\n const timezoneHourTime = getTimezoneDatetime({\n format: 'h:mm a',\n timestamp: createdAt,\n timezone,\n })\n const timezoneDatetime = getTimezoneDatetime({\n timestamp: createdAt,\n timezone,\n })\n\n return {\n locationText,\n gpsText,\n referenceLabel: referenceDetails.label,\n referenceValue: referenceDetails.value,\n sequenceId,\n timezoneHourTime,\n timezoneDatetime,\n }\n}\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,QAAQ;AAE5B,SACEC,oBAAoB,EACpBC,mBAAmB,EACnBC,mBAAmB,QACd,KAAK;AAEZ,OAAO,SAASC,mBAAmBA,CAACC,IAAI,EAAE;EACxC,IAAAC,YAAA,GAAkCD,IAAI,CAA9BE,MAAM;IAANA,MAAM,GAAAD,YAAA,cAAG,CAAC,CAAC,GAAAA,YAAA;IAAEE,QAAQ,GAAKH,IAAI,CAAjBG,QAAQ;EAE7B,IAAQC,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","names":["get","getLocationReference","getReferenceDetails","getTimezoneDatetime","getTaskEntryDetails","data","_data$entity","entity","timezone","createdAt","gps","sequenceId","templateRevision","gpsText","locationText","referenceDetails","timezoneHourTime","format","timestamp","timezoneDatetime","referenceLabel","label","referenceValue","value"],"sources":["../../../src/helpers/get-task-entry-details/index.js"],"sourcesContent":["import { get } from 'lodash'\n\nimport {\n getLocationReference,\n getReferenceDetails,\n getTimezoneDatetime,\n} from '../'\n\nexport function getTaskEntryDetails(data) {\n const { entity = {}, timezone } = data\n\n const { createdAt, gps, sequenceId, templateRevision } = entity\n\n const gpsText = get(gps, 'reverseGeocoded.label', 'Unknown Location')\n const locationText = getLocationReference(data)\n const referenceDetails = getReferenceDetails(data)\n const timezoneHourTime = getTimezoneDatetime({\n format: 'h:mm a',\n timestamp: createdAt,\n timezone,\n })\n const timezoneDatetime = getTimezoneDatetime({\n timestamp: createdAt,\n timezone,\n })\n\n return {\n locationText,\n gpsText,\n referenceLabel: referenceDetails.label,\n referenceValue: referenceDetails.value,\n sequenceId,\n templateRevision,\n timezoneHourTime,\n timezoneDatetime,\n }\n}\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,QAAQ;AAE5B,SACEC,oBAAoB,EACpBC,mBAAmB,EACnBC,mBAAmB,QACd,KAAK;AAEZ,OAAO,SAASC,mBAAmBA,CAACC,IAAI,EAAE;EACxC,IAAAC,YAAA,GAAkCD,IAAI,CAA9BE,MAAM;IAANA,MAAM,GAAAD,YAAA,cAAG,CAAC,CAAC,GAAAA,YAAA;IAAEE,QAAQ,GAAKH,IAAI,CAAjBG,QAAQ;EAE7B,IAAQC,SAAS,GAAwCF,MAAM,CAAvDE,SAAS;IAAEC,GAAG,GAAmCH,MAAM,CAA5CG,GAAG;IAAEC,UAAU,GAAuBJ,MAAM,CAAvCI,UAAU;IAAEC,gBAAgB,GAAKL,MAAM,CAA3BK,gBAAgB;EAEpD,IAAMC,OAAO,GAAGb,GAAG,CAACU,GAAG,EAAE,uBAAuB,EAAE,kBAAkB,CAAC;EACrE,IAAMI,YAAY,GAAGb,oBAAoB,CAACI,IAAI,CAAC;EAC/C,IAAMU,gBAAgB,GAAGb,mBAAmB,CAACG,IAAI,CAAC;EAClD,IAAMW,gBAAgB,GAAGb,mBAAmB,CAAC;IAC3Cc,MAAM,EAAE,QAAQ;IAChBC,SAAS,EAAET,SAAS;IACpBD,QAAQ,EAARA;EACF,CAAC,CAAC;EACF,IAAMW,gBAAgB,GAAGhB,mBAAmB,CAAC;IAC3Ce,SAAS,EAAET,SAAS;IACpBD,QAAQ,EAARA;EACF,CAAC,CAAC;EAEF,OAAO;IACLM,YAAY,EAAZA,YAAY;IACZD,OAAO,EAAPA,OAAO;IACPO,cAAc,EAAEL,gBAAgB,CAACM,KAAK;IACtCC,cAAc,EAAEP,gBAAgB,CAACQ,KAAK;IACtCZ,UAAU,EAAVA,UAAU;IACVC,gBAAgB,EAAhBA,gBAAgB;IAChBI,gBAAgB,EAAhBA,gBAAgB;IAChBG,gBAAgB,EAAhBA;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -24,13 +24,13 @@ function buildImage(options) {
|
|
|
24
24
|
filepath = options.filepath,
|
|
25
25
|
_options$height = options.height,
|
|
26
26
|
height = _options$height === void 0 ? 210 : _options$height,
|
|
27
|
-
settings = options.settings,
|
|
27
|
+
_options$settings = options.settings,
|
|
28
|
+
settings = _options$settings === void 0 ? {} : _options$settings,
|
|
28
29
|
_options$width = options.width,
|
|
29
30
|
width = _options$width === void 0 ? 210 : _options$width;
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
cloudfrontBaseUrl = _ref2.cloudfrontBaseUrl;
|
|
31
|
+
var awsS3BaseUrl = settings.awsS3BaseUrl,
|
|
32
|
+
cloudinaryBaseUrl = settings.cloudinaryBaseUrl,
|
|
33
|
+
cloudfrontBaseUrl = settings.cloudfrontBaseUrl;
|
|
34
34
|
var isVideoType = new RegExp('.mp4$').test(filepath);
|
|
35
35
|
var link = "".concat(awsS3BaseUrl, "/").concat(filepath);
|
|
36
36
|
if (isVideoType) {
|
|
@@ -61,10 +61,10 @@ function buildImage(options) {
|
|
|
61
61
|
};
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
|
-
export function buildSummaryField(
|
|
65
|
-
var field =
|
|
66
|
-
settings =
|
|
67
|
-
timezone =
|
|
64
|
+
export function buildSummaryField(_ref2) {
|
|
65
|
+
var field = _ref2.field,
|
|
66
|
+
settings = _ref2.settings,
|
|
67
|
+
timezone = _ref2.timezone;
|
|
68
68
|
var fieldtype = field.fieldtype,
|
|
69
69
|
_field$options = field.options,
|
|
70
70
|
options = _field$options === void 0 ? {} : _field$options,
|
|
@@ -181,11 +181,11 @@ export function buildSummaryField(_ref3) {
|
|
|
181
181
|
text: ''
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
|
-
export function buildTemplateFieldRow(
|
|
185
|
-
var field =
|
|
186
|
-
settings =
|
|
187
|
-
timezone =
|
|
188
|
-
skipped =
|
|
184
|
+
export function buildTemplateFieldRow(_ref3) {
|
|
185
|
+
var field = _ref3.field,
|
|
186
|
+
settings = _ref3.settings,
|
|
187
|
+
timezone = _ref3.timezone,
|
|
188
|
+
skipped = _ref3.skipped;
|
|
189
189
|
var fieldtype = field.fieldtype,
|
|
190
190
|
label = field.label,
|
|
191
191
|
_field$options2 = field.options,
|
|
@@ -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","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":[]}
|
|
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$settings","_options$width","width","cloudinaryBaseUrl","cloudfrontBaseUrl","isVideoType","RegExp","test","fit","image","url","quality","then","base64String","buildSummaryField","_ref2","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","_ref3","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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceIntervalsGenerator.js","names":["serviceIntervalsGenerator","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","filter","flow","forEach","map","reduce","moment","Behaviours","Durations","Types","Unit","convertToTimezone","intervalCovers","intervalOnlyIntersectsEnd","intervalOnlyIntersectsStart","intervalWithin","mergeIntervals","splitIntervals","props","end","serviceHours","start","timezone","hasValidStartAndEnd","mStart","mEnd","mStartValid","mEndValid","hours","rangeInterval","closeOverrideHours","defaultHours","openOverrideHours","closeIntervals","openIntervals","weekStart","defaultIntervals","getOverrideIntervalsForRange","rangeOpenIntervals","rangeCloseIntervals","mergedIntervals","serviceIntervals","_iterator","_step","interval","_t","_regeneratorRuntime","wrap","_context","prev","abrupt","tz","isValid","behaviour","Close","type","Override","Default","Open","memo","override","mIntervalStart","mIntervalEnd","isInPast","isBefore","isInFuture","isAfter","push","startOf","Week","valueOf","hour","endOffset","startOffset","hourStart","hourEnd","isIntervalIntersectingRangeEnd","isIntervalIntersectingRangeStart","isIntervalInsideRange","isRangeInsideInterval","shouldSkip","nextStart","nextEnd","intervalCoversRange","intervalIntersectsRangeEnd","intervalIntersectsRangeStart","intervalStart","intervalEnd","concat","_toConsumableArray","finish","stop","_marked"],"sources":["../../../src/scheduling/generators/serviceIntervalsGenerator.ts"],"sourcesContent":["import { filter, flow, forEach, map, reduce } from 'lodash/fp'\nimport moment from 'moment-timezone'\n\nimport {\n Behaviours,\n Durations,\n Schema as ServiceHoursSchema,\n Types,\n} from '../../service-hours'\nimport { Interval, Unit } from '../scheduling.types'\nimport {\n convertToTimezone,\n intervalCovers,\n intervalOnlyIntersectsEnd,\n intervalOnlyIntersectsStart,\n intervalWithin,\n mergeIntervals,\n splitIntervals,\n} from '../helpers'\n\ninterface ServiceIntervalsGenerator {\n readonly end: number\n readonly serviceHours: ServiceHoursSchema\n readonly start: number\n}\n\n/**\n * Generates service intervals between start and end range for service hours\n */\nexport function* serviceIntervalsGenerator(props: ServiceIntervalsGenerator) {\n const { end, serviceHours, start } = props\n const { timezone } = serviceHours\n\n const hasValidStartAndEnd = end > start && start < end\n\n if (!hasValidStartAndEnd) return []\n\n const mStart = moment.tz(start, timezone)\n const mEnd = moment.tz(end, timezone)\n const mStartValid = mStart.isValid()\n const mEndValid = mEnd.isValid()\n\n if (!mStartValid || !mEndValid) return []\n\n const { hours } = serviceHours\n const rangeInterval = [start, end]\n\n const closeOverrideHours = filter(\n { behaviour: Behaviours.Close, type: Types.Override },\n hours\n )\n const defaultHours = filter({ type: Types.Default }, hours)\n const openOverrideHours = filter(\n { behaviour: Behaviours.Open, type: Types.Override },\n hours\n )\n\n // NOTE: we must apply the timezone to overrides as they are stored in UTC\n // and must be converted to timestamps in the timezone before processing\n const closeIntervals = reduce(\n (memo, override) => {\n const mIntervalStart = moment.tz(override.start, timezone)\n const mIntervalEnd = moment.tz(override.end, timezone)\n\n const isInPast = mIntervalEnd.isBefore(mStart)\n const isInFuture = mIntervalStart.isAfter(mEnd)\n\n // NOTE: filter out any interval not relevant\n if (isInPast || isInFuture) {\n return memo\n }\n\n const start = convertToTimezone(override.start, timezone)\n const end = convertToTimezone(override.end, timezone)\n\n memo.push([start, end])\n\n return memo\n },\n [],\n closeOverrideHours\n )\n\n const openIntervals = reduce(\n (memo, override) => {\n const mIntervalStart = moment.tz(override.start, timezone)\n const mIntervalEnd = moment.tz(override.end, timezone)\n\n const isInPast = mIntervalEnd.isBefore(mStart)\n const isInFuture = mIntervalStart.isAfter(mEnd)\n\n // NOTE: filter out any interval not relevant\n if (isInPast || isInFuture) {\n return memo\n }\n\n const start = convertToTimezone(override.start, timezone)\n const end = convertToTimezone(override.end, timezone)\n\n memo.push([start, end])\n\n return memo\n },\n [],\n openOverrideHours\n )\n\n let weekStart = mStart.startOf(Unit.Week).valueOf()\n\n const defaultIntervals = []\n\n while (weekStart < end) {\n forEach(hour => {\n // NOTE: hour start and end values are the number of minutes from the\n // start of the week so are simply offsets\n const { end: endOffset, start: startOffset } = hour\n const hourStart = weekStart + startOffset\n const hourEnd = weekStart + endOffset\n\n const interval = [hourStart, hourEnd]\n\n const isIntervalIntersectingRangeEnd = intervalOnlyIntersectsEnd(\n interval,\n rangeInterval\n )\n const isIntervalIntersectingRangeStart = intervalOnlyIntersectsStart(\n interval,\n rangeInterval\n )\n const isIntervalInsideRange = intervalWithin(interval, rangeInterval)\n const isRangeInsideInterval = intervalWithin(rangeInterval, interval)\n\n const shouldSkip =\n !isIntervalInsideRange &&\n !isRangeInsideInterval &&\n !isIntervalIntersectingRangeStart &&\n !isIntervalIntersectingRangeEnd\n\n if (shouldSkip) return\n\n const nextStart =\n isRangeInsideInterval || isIntervalIntersectingRangeStart\n ? start\n : hourStart\n\n const nextEnd =\n isRangeInsideInterval || isIntervalIntersectingRangeEnd ? end : hourEnd\n\n defaultIntervals.push([nextStart, nextEnd])\n }, defaultHours)\n\n weekStart = weekStart + Durations.Week\n }\n\n // NOTE: only include intervals which intersect our range and then map to\n // ensure the intervals conform to the range interval\n const getOverrideIntervalsForRange = flow(\n filter(\n (interval: Interval): boolean =>\n interval[0] >= rangeInterval[0] || interval[0] <= rangeInterval[1]\n ),\n map(\n (interval: Interval): Interval => {\n const intervalCoversRange = intervalCovers(interval, rangeInterval)\n const intervalIntersectsRangeEnd = intervalOnlyIntersectsEnd(\n interval,\n rangeInterval\n )\n const intervalIntersectsRangeStart = intervalOnlyIntersectsStart(\n interval,\n rangeInterval\n )\n\n const intervalStart = intervalIntersectsRangeStart\n ? rangeInterval[0]\n : interval[0]\n const intervalEnd = intervalIntersectsRangeEnd\n ? rangeInterval[1]\n : interval[1]\n\n return intervalCoversRange\n ? rangeInterval\n : [intervalStart, intervalEnd]\n }\n )\n )\n\n // NOTE: for simplicity we calculate all default service intervals and then\n // apply the open and closed overrides, we can't do this as we iterate\n // through the weeks as open and close overrides can potentially intersect\n // across weeks\n const rangeOpenIntervals = getOverrideIntervalsForRange(openIntervals)\n const rangeCloseIntervals = getOverrideIntervalsForRange(closeIntervals)\n\n const mergedIntervals = mergeIntervals([\n ...defaultIntervals,\n ...rangeOpenIntervals,\n ])\n const serviceIntervals = splitIntervals(mergedIntervals, rangeCloseIntervals)\n\n for (let interval of serviceIntervals) yield interval\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"serviceIntervalsGenerator.js","names":["serviceIntervalsGenerator","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","filter","flow","forEach","map","reduce","moment","Behaviours","Durations","Types","Unit","convertToTimezone","intervalCovers","intervalOnlyIntersectsEnd","intervalOnlyIntersectsStart","intervalWithin","mergeIntervals","splitIntervals","props","end","serviceHours","start","timezone","hasValidStartAndEnd","mStart","mEnd","mStartValid","mEndValid","hours","rangeInterval","closeOverrideHours","defaultHours","openOverrideHours","closeIntervals","openIntervals","weekStart","defaultIntervals","getOverrideIntervalsForRange","rangeOpenIntervals","rangeCloseIntervals","mergedIntervals","serviceIntervals","_iterator","_step","interval","_t","_regeneratorRuntime","wrap","_context","prev","abrupt","tz","isValid","behaviour","Close","type","Override","Default","Open","memo","override","mIntervalStart","mIntervalEnd","isInPast","isBefore","isInFuture","isAfter","push","startOf","Week","valueOf","hour","endOffset","startOffset","hourStart","hourEnd","isIntervalIntersectingRangeEnd","isIntervalIntersectingRangeStart","isIntervalInsideRange","isRangeInsideInterval","shouldSkip","nextStart","nextEnd","intervalCoversRange","intervalIntersectsRangeEnd","intervalIntersectsRangeStart","intervalStart","intervalEnd","concat","_toConsumableArray","finish","stop","_marked"],"sources":["../../../src/scheduling/generators/serviceIntervalsGenerator.ts"],"sourcesContent":["import { filter, flow, forEach, map, reduce } from 'lodash/fp'\nimport moment from 'moment-timezone'\n\nimport {\n Behaviours,\n Durations,\n HoursSchema,\n Schema as ServiceHoursSchema,\n Types,\n} from '../../service-hours'\nimport { Interval, Unit } from '../scheduling.types'\nimport {\n convertToTimezone,\n intervalCovers,\n intervalOnlyIntersectsEnd,\n intervalOnlyIntersectsStart,\n intervalWithin,\n mergeIntervals,\n splitIntervals,\n} from '../helpers'\n\ninterface ServiceIntervalsGenerator {\n readonly end: number\n readonly serviceHours: ServiceHoursSchema\n readonly start: number\n}\n\n/**\n * Generates service intervals between start and end range for service hours\n */\nexport function* serviceIntervalsGenerator(props: ServiceIntervalsGenerator) {\n const { end, serviceHours, start } = props\n const { timezone } = serviceHours\n\n const hasValidStartAndEnd = end > start && start < end\n\n if (!hasValidStartAndEnd) return []\n\n const mStart = moment.tz(start, timezone)\n const mEnd = moment.tz(end, timezone)\n const mStartValid = mStart.isValid()\n const mEndValid = mEnd.isValid()\n\n if (!mStartValid || !mEndValid) return []\n\n const { hours } = serviceHours\n const rangeInterval = [start, end]\n\n const closeOverrideHours: HoursSchema[] = filter(\n { behaviour: Behaviours.Close, type: Types.Override },\n hours\n )\n const defaultHours: HoursSchema[] = filter({ type: Types.Default }, hours)\n const openOverrideHours: HoursSchema[] = filter(\n { behaviour: Behaviours.Open, type: Types.Override },\n hours\n )\n\n // NOTE: we must apply the timezone to overrides as they are stored in UTC\n // and must be converted to timestamps in the timezone before processing\n const closeIntervals = reduce(\n (memo, override) => {\n const mIntervalStart = moment.tz(override.start, timezone)\n const mIntervalEnd = moment.tz(override.end, timezone)\n\n const isInPast = mIntervalEnd.isBefore(mStart)\n const isInFuture = mIntervalStart.isAfter(mEnd)\n\n // NOTE: filter out any interval not relevant\n if (isInPast || isInFuture) {\n return memo\n }\n\n const start = convertToTimezone(override.start, timezone)\n const end = convertToTimezone(override.end, timezone)\n\n memo.push([start, end])\n\n return memo\n },\n [],\n closeOverrideHours\n )\n\n const openIntervals = reduce(\n (memo, override) => {\n const mIntervalStart = moment.tz(override.start, timezone)\n const mIntervalEnd = moment.tz(override.end, timezone)\n\n const isInPast = mIntervalEnd.isBefore(mStart)\n const isInFuture = mIntervalStart.isAfter(mEnd)\n\n // NOTE: filter out any interval not relevant\n if (isInPast || isInFuture) {\n return memo\n }\n\n const start = convertToTimezone(override.start, timezone)\n const end = convertToTimezone(override.end, timezone)\n\n memo.push([start, end])\n\n return memo\n },\n [],\n openOverrideHours\n )\n\n let weekStart = mStart.startOf(Unit.Week).valueOf()\n\n const defaultIntervals = []\n\n while (weekStart < end) {\n forEach(hour => {\n // NOTE: hour start and end values are the number of minutes from the\n // start of the week so are simply offsets\n const { end: endOffset, start: startOffset } = hour\n const hourStart = weekStart + startOffset\n const hourEnd = weekStart + endOffset\n\n const interval = [hourStart, hourEnd]\n\n const isIntervalIntersectingRangeEnd = intervalOnlyIntersectsEnd(\n interval,\n rangeInterval\n )\n const isIntervalIntersectingRangeStart = intervalOnlyIntersectsStart(\n interval,\n rangeInterval\n )\n const isIntervalInsideRange = intervalWithin(interval, rangeInterval)\n const isRangeInsideInterval = intervalWithin(rangeInterval, interval)\n\n const shouldSkip =\n !isIntervalInsideRange &&\n !isRangeInsideInterval &&\n !isIntervalIntersectingRangeStart &&\n !isIntervalIntersectingRangeEnd\n\n if (shouldSkip) return\n\n const nextStart =\n isRangeInsideInterval || isIntervalIntersectingRangeStart\n ? start\n : hourStart\n\n const nextEnd =\n isRangeInsideInterval || isIntervalIntersectingRangeEnd ? end : hourEnd\n\n defaultIntervals.push([nextStart, nextEnd])\n }, defaultHours)\n\n weekStart = weekStart + Durations.Week\n }\n\n // NOTE: only include intervals which intersect our range and then map to\n // ensure the intervals conform to the range interval\n const getOverrideIntervalsForRange = flow(\n filter(\n (interval: Interval): boolean =>\n interval[0] >= rangeInterval[0] || interval[0] <= rangeInterval[1]\n ),\n map(\n (interval: Interval): Interval => {\n const intervalCoversRange = intervalCovers(interval, rangeInterval)\n const intervalIntersectsRangeEnd = intervalOnlyIntersectsEnd(\n interval,\n rangeInterval\n )\n const intervalIntersectsRangeStart = intervalOnlyIntersectsStart(\n interval,\n rangeInterval\n )\n\n const intervalStart = intervalIntersectsRangeStart\n ? rangeInterval[0]\n : interval[0]\n const intervalEnd = intervalIntersectsRangeEnd\n ? rangeInterval[1]\n : interval[1]\n\n return intervalCoversRange\n ? rangeInterval\n : [intervalStart, intervalEnd]\n }\n )\n )\n\n // NOTE: for simplicity we calculate all default service intervals and then\n // apply the open and closed overrides, we can't do this as we iterate\n // through the weeks as open and close overrides can potentially intersect\n // across weeks\n const rangeOpenIntervals = getOverrideIntervalsForRange(openIntervals)\n const rangeCloseIntervals = getOverrideIntervalsForRange(closeIntervals)\n\n const mergedIntervals = mergeIntervals([\n ...defaultIntervals,\n ...rangeOpenIntervals,\n ])\n const serviceIntervals = splitIntervals(mergedIntervals, rangeCloseIntervals)\n\n for (let interval of serviceIntervals) yield interval\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeIntervals.js","names":["first","isEmpty","reduce","mergeIntervals","intervals","sortedIntervals","sort","a","b","firstInterval","stack","accum","interval","top","length","topBeforeInterval","topOverlapsInterval","push","pop"],"sources":["../../../src/scheduling/helpers/mergeIntervals.ts"],"sourcesContent":["import { first, isEmpty, reduce } from 'lodash/fp'\n\nimport { Interval } from '../scheduling.types'\n\n/**\n * Merges overlapping intervals\n * Accepts arrays of intervals and returns a flattened result of overlapping intervals\n *\n * mergeIntervals([[1,15], [11,25], [21,29], [40,1000]])\n * returns [[1,29], [40,1000]]\n */\nexport function mergeIntervals(intervals:
|
|
1
|
+
{"version":3,"file":"mergeIntervals.js","names":["first","isEmpty","reduce","mergeIntervals","intervals","sortedIntervals","sort","a","b","firstInterval","stack","accum","interval","top","length","topBeforeInterval","topOverlapsInterval","push","pop"],"sources":["../../../src/scheduling/helpers/mergeIntervals.ts"],"sourcesContent":["import { first, isEmpty, reduce } from 'lodash/fp'\n\nimport { Interval } from '../scheduling.types'\n\n/**\n * Merges overlapping intervals\n * Accepts arrays of intervals and returns a flattened result of overlapping intervals\n *\n * mergeIntervals([[1,15], [11,25], [21,29], [40,1000]])\n * returns [[1,29], [40,1000]]\n */\nexport function mergeIntervals(intervals: Interval[]): Interval[] {\n if (isEmpty(intervals)) return intervals\n\n const sortedIntervals = intervals.sort((a, b) => a[0] - b[0])\n const firstInterval: Interval = first(sortedIntervals)\n\n const stack: Interval[] = reduce(\n (accum, interval: Interval) => {\n const top = accum[accum.length - 1]\n const topBeforeInterval = top[1] < interval[0]\n const topOverlapsInterval = top[1] < interval[1]\n\n if (topBeforeInterval) {\n accum.push(interval)\n } else if (topOverlapsInterval) {\n accum.pop()\n accum.push([top[0], interval[1]])\n }\n\n return accum\n },\n [firstInterval],\n sortedIntervals\n )\n\n return stack\n}\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,OAAO,EAAEC,MAAM,QAAQ,WAAW;AAIlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAACC,SAAqB,EAAc;EAChE,IAAIH,OAAO,CAACG,SAAS,CAAC,EAAE,OAAOA,SAAS;EAExC,IAAMC,eAAe,GAAGD,SAAS,CAACE,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC;IAAA,OAAKD,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC;EAAA,EAAC;EAC7D,IAAMC,aAAuB,GAAGT,KAAK,CAACK,eAAe,CAAC;EAEtD,IAAMK,KAAiB,GAAGR,MAAM,CAC9B,UAACS,KAAK,EAAEC,QAAkB,EAAK;IAC7B,IAAMC,GAAG,GAAGF,KAAK,CAACA,KAAK,CAACG,MAAM,GAAG,CAAC,CAAC;IACnC,IAAMC,iBAAiB,GAAGF,GAAG,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAC9C,IAAMI,mBAAmB,GAAGH,GAAG,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAEhD,IAAIG,iBAAiB,EAAE;MACrBJ,KAAK,CAACM,IAAI,CAACL,QAAQ,CAAC;IACtB,CAAC,MAAM,IAAII,mBAAmB,EAAE;MAC9BL,KAAK,CAACO,GAAG,CAAC,CAAC;MACXP,KAAK,CAACM,IAAI,CAAC,CAACJ,GAAG,CAAC,CAAC,CAAC,EAAED,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC;IAEA,OAAOD,KAAK;EACd,CAAC,EACD,CAACF,aAAa,CAAC,EACfJ,eACF,CAAC;EAED,OAAOK,KAAK;AACd","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":["array","number","object","string","filter","first","isEmpty","isNil","last","orderBy","values","some","MAX_OFFSET_MS","Behaviours","Durations","Types","Weekdays","hoursSchema","type","oneOf","Default","Override","required","start","min","end","when","endSchema","duration","integer","durationSchema","expectedDuration","message","max","description","behaviour","Open","Close","behaviourSchema","strip","schema","timezone","options","startWeekday","hours","of","test","value","defaultHours","hasOverlappingHours","validateOverlappingHours","hoursArr","overrideHours","isUnix","failingIndex","sortedHoursArr","_first","firstStart","_last","lastEnd","isRangeWithinWeek","thisHours","thisIndex","overlap","otherHours","otherIndex","thisStart","thisEnd","otherStart","otherEnd","isMatching","isWithin","overlappingStart","overlappingEnd"],"sources":["../../src/service-hours/schema.ts"],"sourcesContent":["import {\n array,\n number,\n object,\n string,\n NumberSchema,\n StringSchema,\n} from 'yup'\n\nimport { filter, first, isEmpty, isNil, last, orderBy, values } from 'lodash/fp'\nimport { some } from 'lodash'\n\nconst MAX_OFFSET_MS = 604800000\n\nexport enum Behaviours {\n Open = 'OPEN',\n Close = 'CLOSE',\n}\n\nexport enum Durations {\n Second = 1000,\n Minute = 60000,\n Hour = 3600000,\n Day = 86400000,\n Week = 604800000,\n}\n\nexport enum Types {\n Default = 'DEFAULT',\n Override = 'OVERRIDE',\n}\n\nexport enum Weekdays {\n Monday = 'MONDAY',\n Tuesday = 'TUESDAY',\n Wednesday = 'WEDNESDAY',\n Thursday = 'THURSDAY',\n Friday = 'FRIDAY',\n Saturday = 'SATURDAY',\n Sunday = 'SUNDAY',\n}\n\nexport interface DefaultHoursSchema {\n description?: string\n duration?: number\n end: number\n start: number\n type: Types\n}\n\nexport interface OverrideHoursSchema extends DefaultHoursSchema {\n behaviour: Behaviours\n}\n\nexport type HoursSchema = DefaultHoursSchema | OverrideHoursSchema\n\nexport interface Schema {\n hours: Array<HoursSchema>\n options?: object\n timezone: string\n}\n\nconst hoursSchema = object({\n type: string()\n .oneOf([Types.Default, Types.Override])\n .required(),\n start: number()\n .min(0)\n .required(),\n end: number()\n .min(0)\n .required()\n .when('start', (start: number, endSchema: NumberSchema) => {\n return endSchema.min(start)\n }),\n duration: number()\n .integer()\n .when(['start', 'end'], (start: number, end: number, durationSchema: NumberSchema) => {\n // NOTE This is a bit of a hack to check the exact value, but I can't find\n // an API to check the exact value of a number\n const expectedDuration = end - start\n const message = '${path} must be equal to ' + expectedDuration\n return durationSchema\n .min(expectedDuration, message)\n .max(expectedDuration, message)\n }),\n description: string(),\n behaviour: string()\n .oneOf([Behaviours.Open, Behaviours.Close])\n .when('type', (type: Types, behaviourSchema: StringSchema) => {\n return type === Types.Override ? behaviourSchema.required() : behaviourSchema.strip(true)\n }),\n})\n\nexport const schema = object({\n timezone: string()\n .required(),\n options: object({\n startWeekday: string()\n .oneOf(values(Weekdays))\n }),\n hours: array()\n .of(hoursSchema)\n .test('hasUndefinedHours', 'hours is a required field', value => !isNil(value))\n .test(\n 'hasOverlappingDefaultHours',\n 'default hours must not overlap',\n value => {\n const defaultHours = filter({ type: Types.Default }, value)\n const hasOverlappingHours = validateOverlappingHours({\n hoursArr: defaultHours,\n }) !== -1\n\n if (hasOverlappingHours) return false\n\n return true\n }\n )\n .test(\n 'hasOverlappingOverrideHours',\n 'override hours must not overlap',\n value => {\n const overrideHours = filter({ type: Types.Override }, value)\n const hasOverlappingHours = validateOverlappingHours({\n hoursArr: overrideHours,\n isUnix: true,\n }) !== -1\n\n if (hasOverlappingHours) return false\n\n return true\n }\n ),\n})\n\ninterface ValidateOverlappingHours {\n hoursArr: Array<HoursSchema>\n isUnix?: Boolean\n}\n\n/**\n * validateOverlappingHours\n * Validates that any hours do not overlap each other \n * Validates default hours are within a week range\n */\nexport function validateOverlappingHours(options: ValidateOverlappingHours): Number {\n const { hoursArr, isUnix } = options\n let failingIndex = -1\n\n if (isEmpty(hoursArr)) {\n return failingIndex\n }\n\n // NOTE: when default hours and not override hours\n if (!isUnix) {\n const sortedHoursArr = orderBy(['start', 'end'], ['asc', 'asc'], hoursArr)\n\n const { start: firstStart } = first(sortedHoursArr)\n const { end: lastEnd } = last(sortedHoursArr)\n\n // NOTE: default service hour values are invalid if the first start and\n // last end exceed the MAX_OFFSET_MS which is a week\n const isRangeWithinWeek = (lastEnd - firstStart) <= MAX_OFFSET_MS\n\n if (!isRangeWithinWeek) {\n failingIndex = 1\n return failingIndex\n }\n }\n\n some(hoursArr, (thisHours, thisIndex) => {\n const overlap = some(hoursArr, (otherHours, otherIndex) => {\n if (otherIndex === thisIndex) return false\n\n const { start: thisStart, end: thisEnd } = thisHours\n const { start: otherStart, end: otherEnd } = otherHours\n\n const isMatching = otherStart === thisStart && otherEnd === thisEnd\n const isWithin = thisStart > otherStart && thisEnd < otherEnd\n const overlappingStart = thisStart < otherStart && thisEnd > otherStart\n const overlappingEnd = thisStart < otherEnd && thisEnd > otherEnd\n\n return isMatching || isWithin || overlappingStart || overlappingEnd\n })\n\n if (overlap) {\n failingIndex = thisIndex\n return true\n }\n })\n\n return failingIndex\n}\n\nexport default schema\n"],"mappings":"AAAA,SACEA,KAAK,EACLC,MAAM,EACNC,MAAM,EACNC,MAAM,QAGD,KAAK;AAEZ,SAASC,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAEC,OAAO,EAAEC,MAAM,QAAQ,WAAW;AAChF,SAASC,IAAI,QAAQ,QAAQ;AAE7B,IAAMC,aAAa,GAAG,SAAS;AAE/B,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAQrB,WAAYC,KAAK,0BAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAAA,OAALA,KAAK;AAAA;AAKjB,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AA8BpB,IAAMC,WAAW,GAAGf,MAAM,CAAC;EACzBgB,IAAI,EAAEf,MAAM,CAAC,CAAC,CACXgB,KAAK,CAAC,CAACJ,KAAK,CAACK,OAAO,EAAEL,KAAK,CAACM,QAAQ,CAAC,CAAC,CACtCC,QAAQ,CAAC,CAAC;EACbC,KAAK,EAAEtB,MAAM,CAAC,CAAC,CACZuB,GAAG,CAAC,CAAC,CAAC,CACNF,QAAQ,CAAC,CAAC;EACbG,GAAG,EAAExB,MAAM,CAAC,CAAC,CACVuB,GAAG,CAAC,CAAC,CAAC,CACNF,QAAQ,CAAC,CAAC,CACVI,IAAI,CAAC,OAAO,EAAE,UAACH,KAAa,EAAEI,SAAuB,EAAK;IACzD,OAAOA,SAAS,CAACH,GAAG,CAACD,KAAK,CAAC;EAC7B,CAAC,CAAC;EACJK,QAAQ,EAAE3B,MAAM,CAAC,CAAC,CACf4B,OAAO,CAAC,CAAC,CACTH,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,UAACH,KAAa,EAAEE,GAAW,EAAEK,cAA4B,EAAK;IACpF;IACA;IACA,IAAMC,gBAAgB,GAAGN,GAAG,GAAGF,KAAK;IACpC,IAAMS,OAAO,GAAG,2BAA2B,GAAGD,gBAAgB;IAC9D,OAAOD,cAAc,CAClBN,GAAG,CAACO,gBAAgB,EAAEC,OAAO,CAAC,CAC9BC,GAAG,CAACF,gBAAgB,EAAEC,OAAO,CAAC;EACnC,CAAC,CAAC;EACJE,WAAW,EAAE/B,MAAM,CAAC,CAAC;EACrBgC,SAAS,EAAEhC,MAAM,CAAC,CAAC,CAChBgB,KAAK,CAAC,CAACN,UAAU,CAACuB,IAAI,EAAEvB,UAAU,CAACwB,KAAK,CAAC,CAAC,CAC1CX,IAAI,CAAC,MAAM,EAAE,UAACR,IAAW,EAAEoB,eAA6B,EAAK;IAC5D,OAAOpB,IAAI,KAAKH,KAAK,CAACM,QAAQ,GAAGiB,eAAe,CAAChB,QAAQ,CAAC,CAAC,GAAGgB,eAAe,CAACC,KAAK,CAAC,IAAI,CAAC;EAC3F,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,IAAMC,MAAM,GAAGtC,MAAM,CAAC;EAC3BuC,QAAQ,EAAEtC,MAAM,CAAC,CAAC,CACfmB,QAAQ,CAAC,CAAC;EACboB,OAAO,EAAExC,MAAM,CAAC;IACdyC,YAAY,EAAExC,MAAM,CAAC,CAAC,CACnBgB,KAAK,CAACT,MAAM,CAACM,QAAQ,CAAC;EAC3B,CAAC,CAAC;EACF4B,KAAK,EAAE5C,KAAK,CAAC,CAAC,CACX6C,EAAE,CAAC5B,WAAW,CAAC,CACf6B,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,UAAAC,KAAK;IAAA,OAAI,CAACxC,KAAK,CAACwC,KAAK,CAAC;EAAA,EAAC,CAC9ED,IAAI,CACH,4BAA4B,EAC5B,gCAAgC,EAChC,UAAAC,KAAK,EAAI;IACP,IAAMC,YAAY,GAAG5C,MAAM,CAAC;MAAEc,IAAI,EAAEH,KAAK,CAACK;IAAQ,CAAC,EAAE2B,KAAK,CAAC;IAC3D,IAAME,mBAAmB,GAAGC,wBAAwB,CAAC;MACnDC,QAAQ,EAAEH;IACZ,CAAC,CAAC,KAAK,CAAC,CAAC;IAET,IAAIC,mBAAmB,EAAE,OAAO,KAAK;IAErC,OAAO,IAAI;EACb,CACF,CAAC,CACAH,IAAI,CACH,6BAA6B,EAC7B,iCAAiC,EACjC,UAAAC,KAAK,EAAI;IACP,IAAMK,aAAa,GAAGhD,MAAM,CAAC;MAAEc,IAAI,EAAEH,KAAK,CAACM;IAAS,CAAC,EAAE0B,KAAK,CAAC;IAC7D,IAAME,mBAAmB,GAAGC,wBAAwB,CAAC;MACnDC,QAAQ,EAAEC,aAAa;MACvBC,MAAM,EAAE;IACV,CAAC,CAAC,KAAK,CAAC,CAAC;IAET,IAAIJ,mBAAmB,EAAE,OAAO,KAAK;IAErC,OAAO,IAAI;EACb,CACF;AACJ,CAAC,CAAC;AAOF;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACR,OAAiC,EAAU;EAClF,IAAQS,QAAQ,GAAaT,OAAO,CAA5BS,QAAQ;IAAEE,MAAM,GAAKX,OAAO,CAAlBW,MAAM;EACxB,IAAIC,YAAY,GAAG,CAAC,CAAC;EAErB,IAAIhD,OAAO,CAAC6C,QAAQ,CAAC,EAAE;IACrB,OAAOG,YAAY;EACrB;;EAEA;EACA,IAAI,CAACD,MAAM,EAAE;IACX,IAAME,cAAc,GAAG9C,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE0C,QAAQ,CAAC;IAE1E,IAAAK,MAAA,GAA8BnD,KAAK,CAACkD,cAAc,CAAC;MAApCE,UAAU,GAAAD,MAAA,CAAjBjC,KAAK;IACb,IAAAmC,KAAA,GAAyBlD,IAAI,CAAC+C,cAAc,CAAC;MAAhCI,OAAO,GAAAD,KAAA,CAAZjC,GAAG;;IAEX;IACA;IACA,IAAMmC,iBAAiB,GAAID,OAAO,GAAGF,UAAU,IAAK7C,aAAa;IAEjE,IAAI,CAACgD,iBAAiB,EAAE;MACtBN,YAAY,GAAG,CAAC;MAChB,OAAOA,YAAY;IACrB;EACF;EAEA3C,IAAI,CAACwC,QAAQ,EAAE,UAACU,SAAS,EAAEC,SAAS,EAAK;IACvC,IAAMC,OAAO,GAAGpD,IAAI,CAACwC,QAAQ,EAAE,UAACa,UAAU,EAAEC,UAAU,EAAK;MACzD,IAAIA,UAAU,KAAKH,SAAS,EAAE,OAAO,KAAK;MAE1C,IAAeI,SAAS,GAAmBL,SAAS,CAA5CtC,KAAK;QAAkB4C,OAAO,GAAKN,SAAS,CAA1BpC,GAAG;MAC7B,IAAe2C,UAAU,GAAoBJ,UAAU,CAA/CzC,KAAK;QAAmB8C,QAAQ,GAAKL,UAAU,CAA5BvC,GAAG;MAE9B,IAAM6C,UAAU,GAAGF,UAAU,KAAKF,SAAS,IAAIG,QAAQ,KAAKF,OAAO;MACnE,IAAMI,QAAQ,GAAGL,SAAS,GAAGE,UAAU,IAAID,OAAO,GAAGE,QAAQ;MAC7D,IAAMG,gBAAgB,GAAGN,SAAS,GAAGE,UAAU,IAAID,OAAO,GAAGC,UAAU;MACvE,IAAMK,cAAc,GAAGP,SAAS,GAAGG,QAAQ,IAAIF,OAAO,GAAGE,QAAQ;MAEjE,OAAOC,UAAU,IAAIC,QAAQ,IAAIC,gBAAgB,IAAIC,cAAc;IACrE,CAAC,CAAC;IAEF,IAAIV,OAAO,EAAE;MACXT,YAAY,GAAGQ,SAAS;MACxB,OAAO,IAAI;IACb;EACF,CAAC,CAAC;EAEF,OAAOR,YAAY;AACrB;AAEA,eAAed,MAAM","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"schema.js","names":["array","number","object","string","filter","first","isEmpty","isNil","last","orderBy","values","some","MAX_OFFSET_MS","Behaviours","Durations","Types","Weekdays","hoursSchema","type","oneOf","Default","Override","required","start","min","end","when","endSchema","duration","integer","durationSchema","expectedDuration","message","max","description","behaviour","Open","Close","behaviourSchema","strip","schema","timezone","options","startWeekday","hours","of","test","value","defaultHours","hasOverlappingHours","validateOverlappingHours","hoursArr","overrideHours","isUnix","failingIndex","sortedHoursArr","_first","firstStart","_last","lastEnd","isRangeWithinWeek","thisHours","thisIndex","overlap","otherHours","otherIndex","thisStart","thisEnd","otherStart","otherEnd","isMatching","isWithin","overlappingStart","overlappingEnd"],"sources":["../../src/service-hours/schema.ts"],"sourcesContent":["import {\n array,\n number,\n object,\n string,\n NumberSchema,\n StringSchema,\n} from 'yup'\n\nimport { filter, first, isEmpty, isNil, last, orderBy, values } from 'lodash/fp'\nimport { some } from 'lodash'\n\nconst MAX_OFFSET_MS = 604800000\n\nexport enum Behaviours {\n Open = 'OPEN',\n Close = 'CLOSE',\n}\n\nexport enum Durations {\n Second = 1000,\n Minute = 60000,\n Hour = 3600000,\n Day = 86400000,\n Week = 604800000,\n}\n\nexport enum Types {\n Default = 'DEFAULT',\n Override = 'OVERRIDE',\n}\n\nexport enum Weekdays {\n Monday = 'MONDAY',\n Tuesday = 'TUESDAY',\n Wednesday = 'WEDNESDAY',\n Thursday = 'THURSDAY',\n Friday = 'FRIDAY',\n Saturday = 'SATURDAY',\n Sunday = 'SUNDAY',\n}\n\nexport interface DefaultHoursSchema {\n description?: string\n duration?: number\n end: number\n start: number\n type: Types\n}\n\nexport interface OverrideHoursSchema extends DefaultHoursSchema {\n behaviour: Behaviours\n}\n\nexport type HoursSchema = DefaultHoursSchema | OverrideHoursSchema\n\nexport interface Schema {\n hours: Array<HoursSchema>\n options?: object\n timezone: string\n}\n\nconst hoursSchema = object({\n type: string()\n .oneOf([Types.Default, Types.Override])\n .required(),\n start: number()\n .min(0)\n .required(),\n end: number()\n .min(0)\n .required()\n .when('start', (start: number, endSchema: NumberSchema) => {\n return endSchema.min(start)\n }),\n duration: number()\n .integer()\n .when(['start', 'end'], (start: number, end: number, durationSchema: NumberSchema) => {\n // NOTE This is a bit of a hack to check the exact value, but I can't find\n // an API to check the exact value of a number\n const expectedDuration = end - start\n const message = '${path} must be equal to ' + expectedDuration\n return durationSchema\n .min(expectedDuration, message)\n .max(expectedDuration, message)\n }),\n description: string(),\n behaviour: string()\n .oneOf([Behaviours.Open, Behaviours.Close])\n .when('type', (type: Types, behaviourSchema: StringSchema) => {\n return type === Types.Override ? behaviourSchema.required() : behaviourSchema.strip(true)\n }),\n})\n\nexport const schema = object({\n timezone: string()\n .required(),\n options: object({\n startWeekday: string()\n .oneOf(values(Weekdays))\n }),\n hours: array()\n .of(hoursSchema)\n .test('hasUndefinedHours', 'hours is a required field', value => !isNil(value))\n .test(\n 'hasOverlappingDefaultHours',\n 'default hours must not overlap',\n value => {\n const defaultHours: HoursSchema[] = filter({ type: Types.Default }, value)\n const hasOverlappingHours = validateOverlappingHours({\n hoursArr: defaultHours,\n }) !== -1\n\n if (hasOverlappingHours) return false\n\n return true\n }\n )\n .test(\n 'hasOverlappingOverrideHours',\n 'override hours must not overlap',\n value => {\n const overrideHours: HoursSchema[] = filter({ type: Types.Override }, value)\n const hasOverlappingHours = validateOverlappingHours({\n hoursArr: overrideHours,\n isUnix: true,\n }) !== -1\n\n if (hasOverlappingHours) return false\n\n return true\n }\n ),\n})\n\ninterface ValidateOverlappingHours {\n hoursArr: Array<HoursSchema>\n isUnix?: Boolean\n}\n\n/**\n * validateOverlappingHours\n * Validates that any hours do not overlap each other \n * Validates default hours are within a week range\n */\nexport function validateOverlappingHours(options: ValidateOverlappingHours): Number {\n const { hoursArr, isUnix } = options\n let failingIndex = -1\n\n if (isEmpty(hoursArr)) {\n return failingIndex\n }\n\n // NOTE: when default hours and not override hours\n if (!isUnix) {\n const sortedHoursArr = orderBy(['start', 'end'], ['asc', 'asc'], hoursArr)\n\n const { start: firstStart } = first(sortedHoursArr)\n const { end: lastEnd } = last(sortedHoursArr)\n\n // NOTE: default service hour values are invalid if the first start and\n // last end exceed the MAX_OFFSET_MS which is a week\n const isRangeWithinWeek = (lastEnd - firstStart) <= MAX_OFFSET_MS\n\n if (!isRangeWithinWeek) {\n failingIndex = 1\n return failingIndex\n }\n }\n\n some(hoursArr, (thisHours, thisIndex) => {\n const overlap = some(hoursArr, (otherHours, otherIndex) => {\n if (otherIndex === thisIndex) return false\n\n const { start: thisStart, end: thisEnd } = thisHours\n const { start: otherStart, end: otherEnd } = otherHours\n\n const isMatching = otherStart === thisStart && otherEnd === thisEnd\n const isWithin = thisStart > otherStart && thisEnd < otherEnd\n const overlappingStart = thisStart < otherStart && thisEnd > otherStart\n const overlappingEnd = thisStart < otherEnd && thisEnd > otherEnd\n\n return isMatching || isWithin || overlappingStart || overlappingEnd\n })\n\n if (overlap) {\n failingIndex = thisIndex\n return true\n }\n })\n\n return failingIndex\n}\n\nexport default schema\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-
|
|
3
|
+
"version": "5.0.0-canary-13",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"bluebird": "^3.7.2",
|
|
44
44
|
"fetch-ponyfill": "^6.1.0",
|
|
45
45
|
"lodash": "^4.17.15",
|
|
46
|
-
"moment-timezone": "
|
|
46
|
+
"moment-timezone": "0.5.28",
|
|
47
47
|
"react-html-parser": "^2.0.2",
|
|
48
48
|
"yup": "^0.27.0"
|
|
49
49
|
},
|