@lighthouse/common 4.28.1 → 4.29.1-canary-A

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.
@@ -0,0 +1,3 @@
1
+ {
2
+ "debug.javascript.usePreview": false
3
+ }
@@ -86,7 +86,7 @@ function generateContent(data, flags) {
86
86
  target,
87
87
  targetServiceLevel
88
88
  } = entityDetails;
89
- const renderTargetFields = !!(flags.showAuditTargetOnPdf && targetServiceLevel);
89
+ const renderTargetFields = !!targetServiceLevel;
90
90
  const headerTitle = (0, _helpers.text)(title, {
91
91
  style: 'title'
92
92
  });
@@ -28,9 +28,10 @@ function generateScheduleEnd({
28
28
  const isFrequencyLessThanWeek = (0, _fp.includes)(frequencyUnit, [_scheduling.Unit.Millisecond, _scheduling.Unit.Second, _scheduling.Unit.Minute, _scheduling.Unit.Hour, _scheduling.Unit.Day]);
29
29
 
30
30
  const mStart = _momentTimezone.default.tz(start, timezone); // NOTE: if frequency unit less than a week we must set end to jump a week
31
+ // plus the interval length of the schedule frequency
31
32
  // so that we can ensure that we are within a service interval
32
33
 
33
34
 
34
- const end = isFrequencyLessThanWeek ? mStart.add(1, _scheduling.Unit.Week).valueOf() : mStart.add(frequencyValue * 2, frequencyUnit).valueOf();
35
+ const end = isFrequencyLessThanWeek ? mStart.add(1, _scheduling.Unit.Week).add(frequencyValue, frequencyUnit).valueOf() : mStart.add(frequencyValue * 2, frequencyUnit).valueOf();
35
36
  return end;
36
37
  }
@@ -78,7 +78,7 @@ function generateContent(data, flags) {
78
78
  scoreText = entityDetails.scoreText,
79
79
  target = entityDetails.target,
80
80
  targetServiceLevel = entityDetails.targetServiceLevel;
81
- var renderTargetFields = !!(flags.showAuditTargetOnPdf && targetServiceLevel);
81
+ var renderTargetFields = !!targetServiceLevel;
82
82
  var headerTitle = text(title, {
83
83
  style: 'title'
84
84
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pdf/audit/index.js"],"names":["Promise","isEmpty","round","buildAuditContent","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","flags","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","catch","err","Error","message","footerFields","gps","headerFields","score","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","showAuditTargetOnPdf","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","titleTable","layout","widths","totalScoreTable","hLineTop","margin","hLineBottom","promises","entry","items","footerTemplate","formGroups","headerTemplate","props"],"mappings":"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","sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\n\nimport {\n buildAuditContent,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\n\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch(err => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data, flags) {\n const { entity } = data\n\n const {\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n title = 'Unknown',\n } = entity\n\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!(\n flags.showAuditTargetOnPdf && targetServiceLevel\n )\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n\n headerAddress = text(address, { style: 'small' })\n\n // TODO: Determine if we always want 2 decimal places or not\n // If so apply `.toFixed(2)`\n const truncatedTargetPercent = round(target, 2)\n\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const promises = {\n entry: buildAuditContent(groupedData.items),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => {\n return [\n titleTable,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ]\n })\n .catch(err => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/pdf/audit/index.js"],"names":["Promise","isEmpty","round","buildAuditContent","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","flags","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","catch","err","Error","message","footerFields","gps","headerFields","score","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","titleTable","layout","widths","totalScoreTable","hLineTop","margin","hLineBottom","promises","entry","items","footerTemplate","formGroups","headerTemplate","props"],"mappings":"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","sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\n\nimport {\n buildAuditContent,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\n\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch(err => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data, flags) {\n const { entity } = data\n\n const {\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n title = 'Unknown',\n } = entity\n\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!targetServiceLevel\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n\n headerAddress = text(address, { style: 'small' })\n\n // TODO: Determine if we always want 2 decimal places or not\n // If so apply `.toFixed(2)`\n const truncatedTargetPercent = round(target, 2)\n\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const promises = {\n entry: buildAuditContent(groupedData.items),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => {\n return [\n titleTable,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ]\n })\n .catch(err => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"file":"index.js"}
@@ -13,9 +13,10 @@ export function generateScheduleEnd(_ref) {
13
13
  frequencyValue = frequency.value;
14
14
  var isFrequencyLessThanWeek = includes(frequencyUnit, [Unit.Millisecond, Unit.Second, Unit.Minute, Unit.Hour, Unit.Day]);
15
15
  var mStart = moment.tz(start, timezone); // NOTE: if frequency unit less than a week we must set end to jump a week
16
+ // plus the interval length of the schedule frequency
16
17
  // so that we can ensure that we are within a service interval
17
18
 
18
- var end = isFrequencyLessThanWeek ? mStart.add(1, Unit.Week).valueOf() : mStart.add(frequencyValue * 2, frequencyUnit).valueOf();
19
+ var end = isFrequencyLessThanWeek ? mStart.add(1, Unit.Week).add(frequencyValue, frequencyUnit).valueOf() : mStart.add(frequencyValue * 2, frequencyUnit).valueOf();
19
20
  return end;
20
21
  }
21
22
  //# sourceMappingURL=generateScheduleEnd.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/scheduling/helpers/generateScheduleEnd.ts"],"names":["includes","moment","Unit","generateScheduleEnd","frequency","start","timezone","frequencyUnit","unit","frequencyValue","value","isFrequencyLessThanWeek","Millisecond","Second","Minute","Hour","Day","mStart","tz","end","add","Week","valueOf"],"mappings":"AAAA,SAASA,QAAT,QAAyB,WAAzB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AAEA,SAAiBC,IAAjB,QAA6B,qBAA7B;;AAQA;;;AAGA,OAAO,SAASC,mBAAT,OAIyB;AAAA,MAH9BC,SAG8B,QAH9BA,SAG8B;AAAA,MAF9BC,KAE8B,QAF9BA,KAE8B;AAAA,MAD9BC,QAC8B,QAD9BA,QAC8B;AAAA,MAChBC,aADgB,GACyBH,SADzB,CACtBI,IADsB;AAAA,MACMC,cADN,GACyBL,SADzB,CACDM,KADC;AAG9B,MAAMC,uBAAuB,GAAGX,QAAQ,CAACO,aAAD,EAAgB,CACtDL,IAAI,CAACU,WADiD,EAEtDV,IAAI,CAACW,MAFiD,EAGtDX,IAAI,CAACY,MAHiD,EAItDZ,IAAI,CAACa,IAJiD,EAKtDb,IAAI,CAACc,GALiD,CAAhB,CAAxC;AAQA,MAAMC,MAAM,GAAGhB,MAAM,CAACiB,EAAP,CAAUb,KAAV,EAAiBC,QAAjB,CAAf,CAX8B,CAa9B;AACA;;AACA,MAAMa,GAAG,GAAGR,uBAAuB,GAC/BM,MAAM,CAACG,GAAP,CAAW,CAAX,EAAclB,IAAI,CAACmB,IAAnB,EAAyBC,OAAzB,EAD+B,GAE/BL,MAAM,CAACG,GAAP,CAAWX,cAAc,GAAG,CAA5B,EAA+BF,aAA/B,EAA8Ce,OAA9C,EAFJ;AAIA,SAAOH,GAAP;AACD","sourcesContent":["import { includes } from 'lodash/fp'\nimport moment from 'moment-timezone'\n\nimport { Period, Unit } from '../scheduling.types'\n\ninterface GenerateScheduleEnd {\n readonly frequency: Period\n readonly start: number\n readonly timezone: string\n}\n\n/**\n * Generates a schedule end datetime based on the start and frequency\n */\nexport function generateScheduleEnd({\n frequency,\n start,\n timezone,\n}: GenerateScheduleEnd): number {\n const { unit: frequencyUnit, value: frequencyValue } = frequency\n\n const isFrequencyLessThanWeek = includes(frequencyUnit, [\n Unit.Millisecond,\n Unit.Second,\n Unit.Minute,\n Unit.Hour,\n Unit.Day,\n ])\n\n const mStart = moment.tz(start, timezone)\n\n // NOTE: if frequency unit less than a week we must set end to jump a week\n // so that we can ensure that we are within a service interval\n const end = isFrequencyLessThanWeek\n ? mStart.add(1, Unit.Week).valueOf()\n : mStart.add(frequencyValue * 2, frequencyUnit).valueOf()\n\n return end\n}\n"],"file":"generateScheduleEnd.js"}
1
+ {"version":3,"sources":["../../../src/scheduling/helpers/generateScheduleEnd.ts"],"names":["includes","moment","Unit","generateScheduleEnd","frequency","start","timezone","frequencyUnit","unit","frequencyValue","value","isFrequencyLessThanWeek","Millisecond","Second","Minute","Hour","Day","mStart","tz","end","add","Week","valueOf"],"mappings":"AAAA,SAASA,QAAT,QAAyB,WAAzB;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AAEA,SAAiBC,IAAjB,QAA6B,qBAA7B;;AAQA;;;AAGA,OAAO,SAASC,mBAAT,OAIyB;AAAA,MAH9BC,SAG8B,QAH9BA,SAG8B;AAAA,MAF9BC,KAE8B,QAF9BA,KAE8B;AAAA,MAD9BC,QAC8B,QAD9BA,QAC8B;AAAA,MAChBC,aADgB,GACyBH,SADzB,CACtBI,IADsB;AAAA,MACMC,cADN,GACyBL,SADzB,CACDM,KADC;AAG9B,MAAMC,uBAAuB,GAAGX,QAAQ,CAACO,aAAD,EAAgB,CACtDL,IAAI,CAACU,WADiD,EAEtDV,IAAI,CAACW,MAFiD,EAGtDX,IAAI,CAACY,MAHiD,EAItDZ,IAAI,CAACa,IAJiD,EAKtDb,IAAI,CAACc,GALiD,CAAhB,CAAxC;AAQA,MAAMC,MAAM,GAAGhB,MAAM,CAACiB,EAAP,CAAUb,KAAV,EAAiBC,QAAjB,CAAf,CAX8B,CAa9B;AACA;AACA;;AACA,MAAMa,GAAG,GAAGR,uBAAuB,GAC/BM,MAAM,CAACG,GAAP,CAAW,CAAX,EAAclB,IAAI,CAACmB,IAAnB,EAAyBD,GAAzB,CAA6BX,cAA7B,EAA6CF,aAA7C,EAA4De,OAA5D,EAD+B,GAE/BL,MAAM,CAACG,GAAP,CAAWX,cAAc,GAAG,CAA5B,EAA+BF,aAA/B,EAA8Ce,OAA9C,EAFJ;AAIA,SAAOH,GAAP;AACD","sourcesContent":["import { includes } from 'lodash/fp'\nimport moment from 'moment-timezone'\n\nimport { Period, Unit } from '../scheduling.types'\n\ninterface GenerateScheduleEnd {\n readonly frequency: Period\n readonly start: number\n readonly timezone: string\n}\n\n/**\n * Generates a schedule end datetime based on the start and frequency\n */\nexport function generateScheduleEnd({\n frequency,\n start,\n timezone,\n}: GenerateScheduleEnd): number {\n const { unit: frequencyUnit, value: frequencyValue } = frequency\n\n const isFrequencyLessThanWeek = includes(frequencyUnit, [\n Unit.Millisecond,\n Unit.Second,\n Unit.Minute,\n Unit.Hour,\n Unit.Day,\n ])\n\n const mStart = moment.tz(start, timezone)\n\n // NOTE: if frequency unit less than a week we must set end to jump a week\n // plus the interval length of the schedule frequency\n // so that we can ensure that we are within a service interval\n const end = isFrequencyLessThanWeek\n ? mStart.add(1, Unit.Week).add(frequencyValue, frequencyUnit).valueOf()\n : mStart.add(frequencyValue * 2, frequencyUnit).valueOf()\n\n return end\n}\n"],"file":"generateScheduleEnd.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lighthouse/common",
3
- "version": "4.28.1",
3
+ "version": "4.29.1-canary-A",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "lib/index.js",