@lighthouse/common 6.5.0 → 6.6.0-canary.1
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/constants.js +7 -13
- package/dist/errors/DomainError.js +2 -4
- package/dist/errors/ValidationError.js +0 -8
- package/dist/errors/index.js +1 -5
- package/dist/helpers/build-fetch-url/index.js +0 -5
- package/dist/helpers/fetch-image/index.js +16 -32
- package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -40
- package/dist/helpers/fetch-image-for-web/index.js +0 -9
- package/dist/helpers/fetch-lighthouse-logo/index.js +2 -13
- package/dist/helpers/floatify/index.js +0 -1
- package/dist/helpers/get-assignees-full-names/index.js +0 -4
- package/dist/helpers/get-audit-entry-details/index.js +0 -3
- package/dist/helpers/get-audit-items-data/index.js +2 -6
- package/dist/helpers/get-geometry-geocoded-string/index.js +0 -3
- package/dist/helpers/get-issue-details/index.js +0 -7
- package/dist/helpers/get-job-details/index.js +0 -7
- package/dist/helpers/get-location-reference/index.js +18 -21
- package/dist/helpers/get-pretty-duration/index.js +0 -5
- package/dist/helpers/get-reference-details/index.js +0 -4
- package/dist/helpers/get-status-details/index.js +2 -9
- package/dist/helpers/get-task-entry-details/index.js +0 -3
- package/dist/helpers/get-timezone-abbr/index.js +0 -4
- package/dist/helpers/get-timezone-datetime/index.js +0 -5
- package/dist/helpers/get-user-full-name/index.js +0 -1
- package/dist/helpers/get-value-as-percentage/index.js +0 -1
- package/dist/helpers/image-validators/index.js +8 -9
- package/dist/helpers/index.js +16 -33
- package/dist/images/index.js +5 -9
- package/dist/index.js +4 -20
- package/dist/pdf/activity-report/index.js +41 -62
- package/dist/pdf/audit/index.js +0 -14
- package/dist/pdf/helpers/build-audit-content/index.js +4 -15
- package/dist/pdf/helpers/build-audit-follow-ups/index.js +4 -14
- package/dist/pdf/helpers/build-location-scans-content/index.js +4 -17
- package/dist/pdf/helpers/build-template-content/index.js +5 -14
- package/dist/pdf/helpers/default-footer/index.js +2 -3
- package/dist/pdf/helpers/default-header/index.js +0 -2
- package/dist/pdf/helpers/default-styles/index.js +2 -3
- package/dist/pdf/helpers/fields/index.js +21 -51
- package/dist/pdf/helpers/format-location-address/index.js +0 -3
- package/dist/pdf/helpers/generate-definition/index.js +0 -12
- package/dist/pdf/helpers/horizontal-line/index.js +0 -1
- package/dist/pdf/helpers/html-transformer/index.js +11 -23
- package/dist/pdf/helpers/index.js +40 -55
- package/dist/pdf/helpers/parse-value/index.js +2 -6
- package/dist/pdf/helpers/table/index.js +13 -31
- package/dist/pdf/helpers/text/index.js +0 -1
- package/dist/pdf/icons/index.js +3 -5
- package/dist/pdf/index.js +4 -10
- package/dist/pdf/issue/index.js +17 -16
- package/dist/pdf/job/index.js +1 -13
- package/dist/pdf/shift-report/emptyFixtures.js +4 -6
- package/dist/pdf/shift-report/index.js +2 -25
- package/dist/pdf/task/index.js +0 -13
- package/dist/scheduling/generators/index.js +0 -6
- package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +1 -6
- package/dist/scheduling/generators/scheduleIntervalsGenerator.js +0 -5
- package/dist/scheduling/generators/serviceIntervalsGenerator.js +13 -27
- package/dist/scheduling/helpers/convertToTimezone.js +1 -6
- package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +3 -9
- package/dist/scheduling/helpers/generateRepeatingSchedule.js +11 -18
- package/dist/scheduling/helpers/generateScheduleEnd.js +2 -8
- package/dist/scheduling/helpers/hasValidStartAndEnd.js +0 -6
- package/dist/scheduling/helpers/index.js +0 -28
- package/dist/scheduling/helpers/intervalCovers.js +0 -1
- package/dist/scheduling/helpers/intervalIntersectsEnd.js +0 -1
- package/dist/scheduling/helpers/intervalIntersectsStart.js +0 -1
- package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +1 -3
- package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +0 -3
- package/dist/scheduling/helpers/intervalOutside.js +0 -1
- package/dist/scheduling/helpers/intervalWithin.js +0 -1
- package/dist/scheduling/helpers/mergeIntervals.js +0 -4
- package/dist/scheduling/helpers/splitIntervals.js +0 -3
- package/dist/scheduling/index.js +0 -6
- package/dist/scheduling/scheduling.types.js +10 -18
- package/dist/scheduling/strategies/getNext.js +2 -13
- package/dist/scheduling/strategies/getNextExactDateOfMonth.js +0 -12
- package/dist/scheduling/strategies/getNextLastDayOfMonth.js +0 -10
- package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +0 -11
- package/dist/scheduling/strategies/getNextNoRepeat.js +0 -7
- package/dist/scheduling/strategies/getNextWeekday.js +0 -10
- package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +0 -12
- package/dist/scheduling/strategies/index.js +0 -14
- package/dist/schema/index.js +0 -2
- package/dist/schema/schema.js +2 -7
- package/dist/service-hours/__helpers__/calculate-hours.js +4 -13
- package/dist/service-hours/__helpers__/isOpen.js +0 -9
- package/dist/service-hours/index.js +0 -4
- package/dist/service-hours/schema.js +20 -43
- package/lib/constants.js.map +1 -1
- package/lib/errors/DomainError.js +11 -47
- package/lib/errors/DomainError.js.map +1 -1
- package/lib/errors/ValidationError.js +15 -52
- package/lib/errors/ValidationError.js.map +1 -1
- package/lib/errors/index.js.map +1 -1
- package/lib/helpers/build-fetch-url/index.js +14 -20
- package/lib/helpers/build-fetch-url/index.js.map +1 -1
- package/lib/helpers/fetch-image/index.js +20 -27
- package/lib/helpers/fetch-image/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +187 -239
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-web/index.js +50 -66
- package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
- package/lib/helpers/fetch-lighthouse-logo/index.js +47 -59
- package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
- package/lib/helpers/floatify/index.js.map +1 -1
- package/lib/helpers/get-assignees-full-names/index.js +0 -1
- package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
- package/lib/helpers/get-audit-entry-details/index.js +8 -8
- package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
- package/lib/helpers/get-audit-items-data/index.js +16 -19
- package/lib/helpers/get-audit-items-data/index.js.map +1 -1
- package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
- package/lib/helpers/get-issue-details/index.js +11 -11
- package/lib/helpers/get-issue-details/index.js.map +1 -1
- package/lib/helpers/get-job-details/index.js +12 -12
- package/lib/helpers/get-job-details/index.js.map +1 -1
- package/lib/helpers/get-location-reference/index.js +32 -36
- package/lib/helpers/get-location-reference/index.js.map +1 -1
- package/lib/helpers/get-pretty-duration/index.js +0 -4
- package/lib/helpers/get-pretty-duration/index.js.map +1 -1
- package/lib/helpers/get-reference-details/index.js +1 -3
- package/lib/helpers/get-reference-details/index.js.map +1 -1
- package/lib/helpers/get-status-details/index.js +0 -4
- package/lib/helpers/get-status-details/index.js.map +1 -1
- package/lib/helpers/get-task-entry-details/index.js +5 -5
- package/lib/helpers/get-task-entry-details/index.js.map +1 -1
- package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
- package/lib/helpers/get-timezone-datetime/index.js +6 -6
- package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
- package/lib/helpers/get-user-full-name/index.js.map +1 -1
- package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
- package/lib/helpers/image-validators/index.js +8 -7
- package/lib/helpers/image-validators/index.js.map +1 -1
- package/lib/helpers/index.js.map +1 -1
- package/lib/images/index.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/pdf/activity-report/index.js +360 -416
- package/lib/pdf/activity-report/index.js.map +1 -1
- package/lib/pdf/audit/index.js +25 -36
- package/lib/pdf/audit/index.js.map +1 -1
- package/lib/pdf/fonts/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-content/index.js +3 -5
- package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-follow-ups/index.js +5 -12
- package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
- package/lib/pdf/helpers/build-location-scans-content/index.js +4 -9
- package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-template-content/index.js +7 -9
- package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
- package/lib/pdf/helpers/default-footer/index.js +9 -8
- package/lib/pdf/helpers/default-footer/index.js.map +1 -1
- package/lib/pdf/helpers/default-header/index.js +5 -5
- package/lib/pdf/helpers/default-header/index.js.map +1 -1
- package/lib/pdf/helpers/default-styles/index.js.map +1 -1
- package/lib/pdf/helpers/fields/index.js +48 -81
- package/lib/pdf/helpers/fields/index.js.map +1 -1
- package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
- package/lib/pdf/helpers/generate-definition/index.js +22 -29
- package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
- package/lib/pdf/helpers/horizontal-line/index.js +1 -1
- package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
- package/lib/pdf/helpers/html-transformer/index.js +19 -30
- package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
- package/lib/pdf/helpers/index.js.map +1 -1
- package/lib/pdf/helpers/parse-value/index.js +2 -4
- package/lib/pdf/helpers/parse-value/index.js.map +1 -1
- package/lib/pdf/helpers/table/index.js +78 -84
- package/lib/pdf/helpers/table/index.js.map +1 -1
- package/lib/pdf/helpers/text/index.js +2 -5
- package/lib/pdf/helpers/text/index.js.map +1 -1
- package/lib/pdf/icons/index.js.map +1 -1
- package/lib/pdf/index.js.map +1 -1
- package/lib/pdf/issue/index.js +36 -30
- package/lib/pdf/issue/index.js.map +1 -1
- package/lib/pdf/job/index.js +12 -19
- package/lib/pdf/job/index.js.map +1 -1
- package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
- package/lib/pdf/shift-report/index.js +308 -374
- package/lib/pdf/shift-report/index.js.map +1 -1
- package/lib/pdf/task/index.js +11 -19
- package/lib/pdf/task/index.js.map +1 -1
- package/lib/scheduling/generators/index.js.map +1 -1
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +27 -38
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js +19 -30
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/serviceIntervalsGenerator.js +139 -181
- package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/helpers/convertToTimezone.js +1 -1
- package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +84 -124
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateRepeatingSchedule.js +107 -175
- package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateScheduleEnd.js +6 -6
- package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
- package/lib/scheduling/helpers/hasValidStartAndEnd.js +1 -2
- package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
- package/lib/scheduling/helpers/index.js.map +1 -1
- package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +1 -0
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
- package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
- package/lib/scheduling/helpers/mergeIntervals.js +0 -3
- package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
- package/lib/scheduling/helpers/splitIntervals.js +1 -1
- package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
- package/lib/scheduling/index.js.map +1 -1
- package/lib/scheduling/scheduling.types.js +9 -14
- package/lib/scheduling/scheduling.types.js.map +1 -1
- package/lib/scheduling/strategies/getNext.js +22 -30
- package/lib/scheduling/strategies/getNext.js.map +1 -1
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js +22 -31
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js +21 -28
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +21 -28
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextNoRepeat.js +15 -23
- package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
- package/lib/scheduling/strategies/getNextWeekday.js +43 -78
- package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +21 -28
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/index.js.map +1 -1
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/schema.js +22 -30
- package/lib/schema/schema.js.map +1 -1
- package/lib/service-hours/__helpers__/calculate-hours.js +4 -13
- package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
- package/lib/service-hours/__helpers__/isOpen.js +3 -7
- package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
- package/lib/service-hours/index.js.map +1 -1
- package/lib/service-hours/schema.js +21 -36
- package/lib/service-hours/schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import moment from 'moment-timezone';
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* Checks if start and end are valid datetimes
|
|
5
4
|
*
|
|
@@ -8,7 +7,7 @@ import moment from 'moment-timezone';
|
|
|
8
7
|
*/
|
|
9
8
|
export function hasValidStartAndEnd(_ref) {
|
|
10
9
|
var start = _ref.start,
|
|
11
|
-
|
|
10
|
+
end = _ref.end;
|
|
12
11
|
if (!start || !end) return false;
|
|
13
12
|
if (end <= start) return false;
|
|
14
13
|
var hasValidEnd = moment.utc(end).isValid();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"hasValidStartAndEnd.js","names":["moment","hasValidStartAndEnd","_ref","start","end","hasValidEnd","utc","isValid","hasValidStart"],"sources":["../../../src/scheduling/helpers/hasValidStartAndEnd.ts"],"sourcesContent":["import moment from 'moment-timezone'\n\ninterface HasValidStartAndEnd {\n readonly end: number\n readonly start: number\n}\n\n/**\n * Checks if start and end are valid datetimes\n *\n * hasValidStartAndEnd({ end: 1566970473988, start: 1566970464839 })\n * returns true\n */\nexport function hasValidStartAndEnd({\n start,\n end,\n}: HasValidStartAndEnd): Boolean {\n if (!start || !end) return false\n if (end <= start) return false\n\n const hasValidEnd: boolean = moment.utc(end).isValid()\n const hasValidStart: boolean = moment.utc(start).isValid()\n\n if (!hasValidEnd || !hasValidStart) return false\n\n return true\n}\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,iBAAiB;AAOpC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAAC,IAAA,EAGF;EAAA,IAF/BC,KAAK,GAAAD,IAAA,CAALC,KAAK;IACLC,GAAG,GAAAF,IAAA,CAAHE,GAAG;EAEH,IAAI,CAACD,KAAK,IAAI,CAACC,GAAG,EAAE,OAAO,KAAK;EAChC,IAAIA,GAAG,IAAID,KAAK,EAAE,OAAO,KAAK;EAE9B,IAAME,WAAoB,GAAGL,MAAM,CAACM,GAAG,CAACF,GAAG,CAAC,CAACG,OAAO,CAAC,CAAC;EACtD,IAAMC,aAAsB,GAAGR,MAAM,CAACM,GAAG,CAACH,KAAK,CAAC,CAACI,OAAO,CAAC,CAAC;EAE1D,IAAI,CAACF,WAAW,IAAI,CAACG,aAAa,EAAE,OAAO,KAAK;EAEhD,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/scheduling/helpers/index.ts"],"sourcesContent":["export * from './convertToTimezone'\nexport * from './generateNonRepeatingSchedule'\nexport * from './generateRepeatingSchedule'\nexport * from './generateScheduleEnd'\nexport * from './hasValidStartAndEnd'\nexport * from './intervalCovers'\nexport * from './intervalIntersectsEnd'\nexport * from './intervalIntersectsStart'\nexport * from './intervalOnlyIntersectsEnd'\nexport * from './intervalOnlyIntersectsStart'\nexport * from './intervalOutside'\nexport * from './intervalWithin'\nexport * from './mergeIntervals'\nexport * from './splitIntervals'\n"],"mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,gCAAgC;AAC9C,cAAc,6BAA6B;AAC3C,cAAc,uBAAuB;AACrC,cAAc,uBAAuB;AACrC,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,2BAA2B;AACzC,cAAc,6BAA6B;AAC3C,cAAc,+BAA+B;AAC7C,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"intervalCovers.js","names":["intervalCovers","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalCovers.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\n/**\n * Checks if interval covers another\n * Accepts two intervals and checks whether the first covers the second\n *\n * intervalCovers([0,20], [5,15])\n * returns true\n */\nexport function intervalCovers(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n firstInterval[0] <= secondInterval[0] && firstInterval[1] >= secondInterval[1]\n )\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,cAAcA,CAC5BC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACED,aAAa,CAAC,CAAC,CAAC,IAAIC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,IAAIC,cAAc,CAAC,CAAC,CAAC;AAElF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"intervalIntersectsEnd.js","names":["intervalIntersectsEnd","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalIntersectsEnd.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\n/**\n * Check if interval intersects another interval's end\n * Accepts two intervals and checks whether the first intersects the second's end\n *\n * intervalIntersectsEnd([12,20], [5,15]))\n * returns true\n */\nexport function intervalIntersectsEnd(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n firstInterval[1] >= secondInterval[1] &&\n firstInterval[0] < secondInterval[1]\n )\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqBA,CACnCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACED,aAAa,CAAC,CAAC,CAAC,IAAIC,cAAc,CAAC,CAAC,CAAC,IACrCD,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;AAExC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"intervalIntersectsStart.js","names":["intervalIntersectsStart","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalIntersectsStart.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\n/**\n * Check if interval intersects another interval's start\n * Accepts two intervals and checks whether the first intersects the second's start\n *\n * intervalIntersectsStart([2,10], [5,15])\n * returns true\n */\nexport function intervalIntersectsStart(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n firstInterval[0] <= secondInterval[0] &&\n firstInterval[1] > secondInterval[0]\n )\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,uBAAuBA,CACrCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACED,aAAa,CAAC,CAAC,CAAC,IAAIC,cAAc,CAAC,CAAC,CAAC,IACrCD,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;AAExC","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { intervalIntersectsEnd } from './intervalIntersectsEnd';
|
|
2
2
|
import { intervalIntersectsStart } from './intervalIntersectsStart';
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* Check if interval only intersects another interval's end
|
|
5
6
|
* Accepts two intervals and checks whether the first only intersects the second's end
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"intervalOnlyIntersectsEnd.js","names":["intervalIntersectsEnd","intervalIntersectsStart","intervalOnlyIntersectsEnd","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalOnlyIntersectsEnd.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\nimport { intervalIntersectsEnd } from './intervalIntersectsEnd'\nimport { intervalIntersectsStart } from './intervalIntersectsStart'\n\n/**\n * Check if interval only intersects another interval's end\n * Accepts two intervals and checks whether the first only intersects the second's end\n *\n * intervalIntersectsEnd([12,20], [5,15]))\n * returns true\n */\n\nexport function intervalOnlyIntersectsEnd(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n !intervalIntersectsStart(firstInterval, secondInterval) &&\n intervalIntersectsEnd(firstInterval, secondInterval)\n )\n}\n"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,uBAAuB,QAAQ,2BAA2B;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASC,yBAAyBA,CACvCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACE,CAACH,uBAAuB,CAACE,aAAa,EAAEC,cAAc,CAAC,IACvDJ,qBAAqB,CAACG,aAAa,EAAEC,cAAc,CAAC;AAExD","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { intervalIntersectsEnd } from './intervalIntersectsEnd';
|
|
2
2
|
import { intervalIntersectsStart } from './intervalIntersectsStart';
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* Check if interval only intersects another interval's start
|
|
5
6
|
* Accepts two intervals and checks whether the first only intersects the second's start
|
|
@@ -7,7 +8,6 @@ import { intervalIntersectsStart } from './intervalIntersectsStart';
|
|
|
7
8
|
* intervalOnlyIntersectsStart([2,10], [5,15])
|
|
8
9
|
* returns true
|
|
9
10
|
*/
|
|
10
|
-
|
|
11
11
|
export function intervalOnlyIntersectsStart(firstInterval, secondInterval) {
|
|
12
12
|
return intervalIntersectsStart(firstInterval, secondInterval) && !intervalIntersectsEnd(firstInterval, secondInterval);
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"intervalOnlyIntersectsStart.js","names":["intervalIntersectsEnd","intervalIntersectsStart","intervalOnlyIntersectsStart","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalOnlyIntersectsStart.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\nimport { intervalIntersectsEnd } from './intervalIntersectsEnd'\nimport { intervalIntersectsStart } from './intervalIntersectsStart'\n\n/**\n * Check if interval only intersects another interval's start\n * Accepts two intervals and checks whether the first only intersects the second's start\n *\n * intervalOnlyIntersectsStart([2,10], [5,15])\n * returns true\n */\nexport function intervalOnlyIntersectsStart(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n intervalIntersectsStart(firstInterval, secondInterval) &&\n !intervalIntersectsEnd(firstInterval, secondInterval)\n )\n}\n"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,uBAAuB,QAAQ,2BAA2B;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CACzCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACEH,uBAAuB,CAACE,aAAa,EAAEC,cAAc,CAAC,IACtD,CAACJ,qBAAqB,CAACG,aAAa,EAAEC,cAAc,CAAC;AAEzD","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"intervalOutside.js","names":["intervalOutside","firstInterval","secondInterval","future","past"],"sources":["../../../src/scheduling/helpers/intervalOutside.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\n/**\n * Check if interval outside another interval\n * Accepts two intervals and checks whether other interval is in the past or future\n *\n * intervalOutside([1, 4], [5,15])\n * returns true\n */\nexport function intervalOutside(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n const future =\n firstInterval[0] > secondInterval[1] && firstInterval[1] > secondInterval[1]\n const past =\n firstInterval[0] < secondInterval[0] && firstInterval[1] < secondInterval[0]\n\n return future || past\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,eAAeA,CAC7BC,aAAuB,EACvBC,cAAwB,EACf;EACT,IAAMC,MAAM,GACVF,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;EAC9E,IAAME,IAAI,GACRH,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;EAE9E,OAAOC,MAAM,IAAIC,IAAI;AACvB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"intervalWithin.js","names":["intervalWithin","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalWithin.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\n/**\n * Checks if interval within another interval\n * Accepts two intervals and checks whether within other interval\n *\n * intervalWithin([7,12], [5,15])\n * returns true\n */\nexport function intervalWithin(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n firstInterval[0] > secondInterval[0] && firstInterval[1] < secondInterval[1]\n )\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,cAAcA,CAC5BC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACED,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;AAEhF","ignoreList":[]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { first, isEmpty, reduce } from 'lodash/fp';
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* Merges overlapping intervals
|
|
5
4
|
* Accepts arrays of intervals and returns a flattened result of overlapping intervals
|
|
@@ -17,14 +16,12 @@ export function mergeIntervals(intervals) {
|
|
|
17
16
|
var top = accum[accum.length - 1];
|
|
18
17
|
var topBeforeInterval = top[1] < interval[0];
|
|
19
18
|
var topOverlapsInterval = top[1] < interval[1];
|
|
20
|
-
|
|
21
19
|
if (topBeforeInterval) {
|
|
22
20
|
accum.push(interval);
|
|
23
21
|
} else if (topOverlapsInterval) {
|
|
24
22
|
accum.pop();
|
|
25
23
|
accum.push([top[0], interval[1]]);
|
|
26
24
|
}
|
|
27
|
-
|
|
28
25
|
return accum;
|
|
29
26
|
}, [firstInterval], sortedIntervals);
|
|
30
27
|
return stack;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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,5 +1,6 @@
|
|
|
1
1
|
import { forEach, isEmpty, reduce, sortBy } from 'lodash/fp';
|
|
2
2
|
import { intervalCovers, intervalIntersectsEnd, intervalIntersectsStart, intervalOutside, intervalWithin } from '.';
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* Applies closed intervals to intervals
|
|
5
6
|
* Accepts two sets of intervals and splits the first set by the second set
|
|
@@ -7,7 +8,6 @@ import { intervalCovers, intervalIntersectsEnd, intervalIntersectsStart, interva
|
|
|
7
8
|
* splitIntervals([[1,10], [11,20], [21,29]], [[8,13]])
|
|
8
9
|
* returns [[1,8], [13,20], [21,29]]
|
|
9
10
|
*/
|
|
10
|
-
|
|
11
11
|
export function splitIntervals() {
|
|
12
12
|
var intervals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
13
13
|
var closeIntervals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"splitIntervals.js","names":["forEach","isEmpty","reduce","sortBy","intervalCovers","intervalIntersectsEnd","intervalIntersectsStart","intervalOutside","intervalWithin","splitIntervals","intervals","arguments","length","undefined","closeIntervals","sortedIntervals","a","stack","accum","openInterval","push","closeInterval","topInterval","closeCoversInterval","closeIntersectsIntervalEnd","closeIntersectsIntervalStart","closeOutsideInterval","closeWithinInterval","pop"],"sources":["../../../src/scheduling/helpers/splitIntervals.ts"],"sourcesContent":["import { forEach, isEmpty, reduce, sortBy } from 'lodash/fp'\n\nimport { Interval } from '../scheduling.types'\nimport {\n intervalCovers,\n intervalIntersectsEnd,\n intervalIntersectsStart,\n intervalOutside,\n intervalWithin,\n} from '.'\n\n/**\n * Applies closed intervals to intervals\n * Accepts two sets of intervals and splits the first set by the second set\n *\n * splitIntervals([[1,10], [11,20], [21,29]], [[8,13]])\n * returns [[1,8], [13,20], [21,29]]\n */\nexport function splitIntervals(\n intervals: Array<Interval> = [],\n closeIntervals: Array<Interval> = []\n): Array<Interval> {\n if (isEmpty(closeIntervals)) return intervals\n\n const sortedIntervals = sortBy(a => a[0])(intervals)\n\n const stack = reduce(\n (accum, openInterval) => {\n accum.push(openInterval)\n\n forEach(\n (closeInterval: Interval): void => {\n const topInterval = accum[accum.length - 1]\n\n const closeCoversInterval = intervalCovers(closeInterval, topInterval)\n const closeIntersectsIntervalEnd = intervalIntersectsEnd(\n closeInterval,\n topInterval\n )\n const closeIntersectsIntervalStart = intervalIntersectsStart(\n closeInterval,\n topInterval\n )\n const closeOutsideInterval = intervalOutside(\n closeInterval,\n topInterval\n )\n const closeWithinInterval = intervalWithin(closeInterval, topInterval)\n\n if (closeOutsideInterval) return\n\n accum.pop()\n\n if (closeCoversInterval) return\n if (closeWithinInterval)\n accum.push(\n [topInterval[0], closeInterval[0]],\n [closeInterval[1], topInterval[1]]\n )\n if (closeIntersectsIntervalStart)\n accum.push([closeInterval[1], topInterval[1]])\n if (closeIntersectsIntervalEnd)\n accum.push([topInterval[0], closeInterval[0]])\n }\n )(closeIntervals)\n\n return accum\n },\n [],\n sortedIntervals\n )\n\n return stack\n}\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAEC,MAAM,QAAQ,WAAW;AAG5D,SACEC,cAAc,EACdC,qBAAqB,EACrBC,uBAAuB,EACvBC,eAAe,EACfC,cAAc,QACT,GAAG;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAGX;EAAA,IAFjBC,SAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IAC/BG,cAA+B,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEpC,IAAIV,OAAO,CAACa,cAAc,CAAC,EAAE,OAAOJ,SAAS;EAE7C,IAAMK,eAAe,GAAGZ,MAAM,CAAC,UAAAa,CAAC;IAAA,OAAIA,CAAC,CAAC,CAAC,CAAC;EAAA,EAAC,CAACN,SAAS,CAAC;EAEpD,IAAMO,KAAK,GAAGf,MAAM,CAClB,UAACgB,KAAK,EAAEC,YAAY,EAAK;IACvBD,KAAK,CAACE,IAAI,CAACD,YAAY,CAAC;IAExBnB,OAAO,CACL,UAACqB,aAAuB,EAAW;MACjC,IAAMC,WAAW,GAAGJ,KAAK,CAACA,KAAK,CAACN,MAAM,GAAG,CAAC,CAAC;MAE3C,IAAMW,mBAAmB,GAAGnB,cAAc,CAACiB,aAAa,EAAEC,WAAW,CAAC;MACtE,IAAME,0BAA0B,GAAGnB,qBAAqB,CACtDgB,aAAa,EACbC,WACF,CAAC;MACD,IAAMG,4BAA4B,GAAGnB,uBAAuB,CAC1De,aAAa,EACbC,WACF,CAAC;MACD,IAAMI,oBAAoB,GAAGnB,eAAe,CAC1Cc,aAAa,EACbC,WACF,CAAC;MACD,IAAMK,mBAAmB,GAAGnB,cAAc,CAACa,aAAa,EAAEC,WAAW,CAAC;MAEtE,IAAII,oBAAoB,EAAE;MAE1BR,KAAK,CAACU,GAAG,CAAC,CAAC;MAEX,IAAIL,mBAAmB,EAAE;MACzB,IAAII,mBAAmB,EACrBT,KAAK,CAACE,IAAI,CACR,CAACE,WAAW,CAAC,CAAC,CAAC,EAAED,aAAa,CAAC,CAAC,CAAC,CAAC,EAClC,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,CAAC,CACnC,CAAC;MACH,IAAIG,4BAA4B,EAC9BP,KAAK,CAACE,IAAI,CAAC,CAACC,aAAa,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD,IAAIE,0BAA0B,EAC5BN,KAAK,CAACE,IAAI,CAAC,CAACE,WAAW,CAAC,CAAC,CAAC,EAAED,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CACF,CAAC,CAACP,cAAc,CAAC;IAEjB,OAAOI,KAAK;EACd,CAAC,EACD,EAAE,EACFH,eACF,CAAC;EAED,OAAOE,KAAK;AACd","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/scheduling/index.ts"],"sourcesContent":["export * from './generators'\nexport * from './scheduling.types'\nexport * from './helpers'"],"mappings":"AAAA,cAAc,cAAc;AAC5B,cAAc,oBAAoB;AAClC,cAAc,WAAW","ignoreList":[]}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
export var IntervalTypes
|
|
2
|
-
|
|
3
|
-
(function (IntervalTypes) {
|
|
1
|
+
export var IntervalTypes = /*#__PURE__*/function (IntervalTypes) {
|
|
4
2
|
IntervalTypes["Occurrence"] = "occurrence";
|
|
5
3
|
IntervalTypes["Service"] = "service";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export var Unit
|
|
9
|
-
|
|
10
|
-
(function (Unit) {
|
|
4
|
+
return IntervalTypes;
|
|
5
|
+
}({});
|
|
6
|
+
export var Unit = /*#__PURE__*/function (Unit) {
|
|
11
7
|
Unit["Millisecond"] = "millisecond";
|
|
12
8
|
Unit["Second"] = "second";
|
|
13
9
|
Unit["Minute"] = "minute";
|
|
@@ -16,11 +12,9 @@ export var Unit;
|
|
|
16
12
|
Unit["Week"] = "isoWeek";
|
|
17
13
|
Unit["Month"] = "month";
|
|
18
14
|
Unit["Year"] = "year";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export var StrategyTypes
|
|
22
|
-
|
|
23
|
-
(function (StrategyTypes) {
|
|
15
|
+
return Unit;
|
|
16
|
+
}({});
|
|
17
|
+
export var StrategyTypes = /*#__PURE__*/function (StrategyTypes) {
|
|
24
18
|
StrategyTypes["ExactDateOfMonth"] = "exactDateOfMonth";
|
|
25
19
|
StrategyTypes["LastDayOfMonth"] = "lastDayOfMonth";
|
|
26
20
|
StrategyTypes["LastWeekdayOfMonth"] = "lastWeekdayOfMonth";
|
|
@@ -29,5 +23,6 @@ export var StrategyTypes;
|
|
|
29
23
|
StrategyTypes["Weekdays"] = "weekdays";
|
|
30
24
|
StrategyTypes["Window"] = "window";
|
|
31
25
|
StrategyTypes["XDayOfXWeekOfMonth"] = "xDayOfxWeekOfMonth";
|
|
32
|
-
|
|
26
|
+
return StrategyTypes;
|
|
27
|
+
}({});
|
|
33
28
|
//# sourceMappingURL=scheduling.types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"scheduling.types.js","names":["IntervalTypes","Unit","StrategyTypes"],"sources":["../../src/scheduling/scheduling.types.ts"],"sourcesContent":["import { Schema as ServiceHoursSchema } from '../service-hours'\n\nexport enum IntervalTypes {\n Occurrence = 'occurrence',\n Service = 'service',\n}\n\nexport enum Unit {\n Millisecond = 'millisecond',\n Second = 'second',\n Minute = 'minute',\n Hour = 'hour',\n Day = 'day',\n Week = 'isoWeek',\n Month = 'month',\n Year = 'year',\n}\n\nexport enum StrategyTypes {\n ExactDateOfMonth = 'exactDateOfMonth',\n LastDayOfMonth = 'lastDayOfMonth',\n LastWeekdayOfMonth = 'lastWeekdayOfMonth',\n NoRepeat = 'noRepeat',\n Stopwatch = 'stopwatch',\n Weekdays = 'weekdays',\n Window = 'window',\n XDayOfXWeekOfMonth = 'xDayOfxWeekOfMonth',\n}\n\nexport interface Options {\n date?: number\n dayOfWeek?: number\n duration: Period\n frequency: Period\n weekday?: number\n weekdays?: number[]\n weekOfMonth?: number\n}\n\nexport interface GetNext {\n readonly end: number\n readonly isInitial?: boolean\n readonly options?: Options\n readonly start: number\n readonly timezone: string\n readonly type: StrategyTypes\n}\n\nexport interface Interval {\n readonly [index: number]: number\n}\n\nexport interface Period {\n readonly unit: Unit\n readonly value: number\n}\n\nexport interface ScheduleIntervalsGenerator {\n readonly end: number\n readonly isInitial: boolean\n readonly strategy: Strategy\n readonly serviceHours: ServiceHoursSchema\n readonly start: number\n}\n\nexport interface Strategy {\n readonly options: Options\n readonly type: StrategyTypes\n}\n"],"mappings":"AAEA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAKzB,WAAYC,IAAI,0BAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;AAWhB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA","ignoreList":[]}
|
|
@@ -1,35 +1,34 @@
|
|
|
1
1
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
2
|
-
|
|
3
|
-
var _marked = /*#__PURE__*/_regeneratorRuntime.mark(getNext);
|
|
4
|
-
|
|
5
2
|
import moment from 'moment-timezone';
|
|
6
3
|
import { StrategyTypes, Unit } from '../scheduling.types';
|
|
4
|
+
|
|
7
5
|
/**
|
|
8
6
|
* Generates next occurrence interval for stopwatch and window strategy
|
|
9
7
|
*/
|
|
10
|
-
|
|
11
8
|
export function getNext(_ref) {
|
|
12
|
-
var end
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
var end = _ref.end,
|
|
10
|
+
isInitial = _ref.isInitial,
|
|
11
|
+
options = _ref.options,
|
|
12
|
+
start = _ref.start,
|
|
13
|
+
timezone = _ref.timezone,
|
|
14
|
+
type = _ref.type;
|
|
15
|
+
return /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
16
|
+
var duration, frequency, durationUnit, durationValue, frequencyUnit, frequencyValue, initial, dateCursor, nextOccurrenceStart, nextOccurrenceEnd, nextOccurrenceStartByBackCalculation, earliestNextOccurrenceStart, nextOccurrence;
|
|
17
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
18
|
+
while (1) switch (_context.prev = _context.next) {
|
|
16
19
|
case 0:
|
|
17
|
-
end = _ref.end, isInitial = _ref.isInitial, options = _ref.options, start = _ref.start, timezone = _ref.timezone, type = _ref.type;
|
|
18
20
|
duration = options.duration, frequency = options.frequency;
|
|
19
21
|
durationUnit = duration.unit, durationValue = duration.value;
|
|
20
22
|
frequencyUnit = frequency.unit, frequencyValue = frequency.value;
|
|
21
23
|
initial = isInitial;
|
|
22
24
|
dateCursor = initial ? moment.tz(start, timezone).valueOf() : moment.tz(start, timezone).add(1, Unit.Millisecond).valueOf();
|
|
23
|
-
|
|
24
|
-
case 6:
|
|
25
|
+
case 1:
|
|
25
26
|
if (!(dateCursor < end)) {
|
|
26
|
-
_context.next =
|
|
27
|
+
_context.next = 4;
|
|
27
28
|
break;
|
|
28
29
|
}
|
|
29
|
-
|
|
30
30
|
nextOccurrenceStart = void 0;
|
|
31
31
|
nextOccurrenceEnd = void 0;
|
|
32
|
-
|
|
33
32
|
if (type === StrategyTypes.Stopwatch) {
|
|
34
33
|
nextOccurrenceStart = dateCursor;
|
|
35
34
|
nextOccurrenceEnd = moment.tz(dateCursor, timezone).add(durationValue, durationUnit).valueOf();
|
|
@@ -39,37 +38,30 @@ export function getNext(_ref) {
|
|
|
39
38
|
earliestNextOccurrenceStart = moment.tz(dateCursor, timezone); // NOTE: this is to ensure that the next occurrence start is always
|
|
40
39
|
// greater than or equal to the date cursor. Moment js handles month addition and subtraction
|
|
41
40
|
// with estimations (Dec 31st + 2 months gives Feb 28th/29th). This can lead to inaccurate start times when calculating forwards then backwards at the end of the month.
|
|
42
|
-
|
|
43
41
|
nextOccurrenceStart = moment.max(earliestNextOccurrenceStart, nextOccurrenceStartByBackCalculation).valueOf();
|
|
44
42
|
}
|
|
45
|
-
|
|
46
43
|
if (!(nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end)) {
|
|
47
|
-
_context.next =
|
|
44
|
+
_context.next = 2;
|
|
48
45
|
break;
|
|
49
46
|
}
|
|
50
|
-
|
|
51
47
|
return _context.abrupt("return");
|
|
52
|
-
|
|
53
|
-
case 12:
|
|
48
|
+
case 2:
|
|
54
49
|
if (!(nextOccurrenceStart >= start)) {
|
|
55
|
-
_context.next =
|
|
50
|
+
_context.next = 3;
|
|
56
51
|
break;
|
|
57
52
|
}
|
|
58
|
-
|
|
59
53
|
nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
60
|
-
_context.next =
|
|
54
|
+
_context.next = 3;
|
|
61
55
|
return nextOccurrence;
|
|
62
|
-
|
|
63
|
-
case 16:
|
|
56
|
+
case 3:
|
|
64
57
|
dateCursor = nextOccurrenceEnd;
|
|
65
|
-
_context.next =
|
|
58
|
+
_context.next = 1;
|
|
66
59
|
break;
|
|
67
|
-
|
|
68
|
-
case 19:
|
|
60
|
+
case 4:
|
|
69
61
|
case "end":
|
|
70
62
|
return _context.stop();
|
|
71
63
|
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
64
|
+
}, _callee);
|
|
65
|
+
})();
|
|
74
66
|
}
|
|
75
67
|
//# sourceMappingURL=getNext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"getNext.js","names":["moment","StrategyTypes","Unit","getNext","_ref","end","isInitial","options","start","timezone","type","_regeneratorRuntime","mark","_callee","duration","frequency","durationUnit","durationValue","frequencyUnit","frequencyValue","initial","dateCursor","nextOccurrenceStart","nextOccurrenceEnd","nextOccurrenceStartByBackCalculation","earliestNextOccurrenceStart","nextOccurrence","wrap","_context","prev","next","unit","value","tz","valueOf","add","Millisecond","Stopwatch","subtract","max","abrupt","stop"],"sources":["../../../src/scheduling/strategies/getNext.ts"],"sourcesContent":["import moment from 'moment-timezone'\n\nimport { GetNext, Interval, StrategyTypes, Unit } from '../scheduling.types'\n\n/**\n * Generates next occurrence interval for stopwatch and window strategy\n */\nexport function* getNext({\n end,\n isInitial,\n options,\n start,\n timezone,\n type,\n}: GetNext): IterableIterator<Interval> {\n const { duration, frequency } = options\n const { unit: durationUnit, value: durationValue } = duration\n const { unit: frequencyUnit, value: frequencyValue } = frequency\n\n let initial: boolean = isInitial\n\n let dateCursor: number = initial\n ? moment.tz(start, timezone).valueOf()\n : moment\n .tz(start, timezone)\n .add(1, Unit.Millisecond)\n .valueOf()\n\n while (dateCursor < end) {\n let nextOccurrenceStart: number\n let nextOccurrenceEnd: number\n\n if (type === StrategyTypes.Stopwatch) {\n nextOccurrenceStart = dateCursor\n nextOccurrenceEnd = moment\n .tz(dateCursor, timezone)\n .add(durationValue, durationUnit)\n .valueOf()\n\n } else {\n nextOccurrenceEnd = moment\n .tz(dateCursor, timezone)\n .add(frequencyValue, frequencyUnit)\n .valueOf()\n\n const nextOccurrenceStartByBackCalculation = moment\n .tz(nextOccurrenceEnd, timezone)\n .subtract(durationValue, durationUnit)\n\n const earliestNextOccurrenceStart = moment\n .tz(dateCursor, timezone)\n\n // NOTE: this is to ensure that the next occurrence start is always\n // greater than or equal to the date cursor. Moment js handles month addition and subtraction\n // with estimations (Dec 31st + 2 months gives Feb 28th/29th). This can lead to inaccurate start times when calculating forwards then backwards at the end of the month.\n nextOccurrenceStart =\n moment.max(\n earliestNextOccurrenceStart,\n nextOccurrenceStartByBackCalculation\n ).valueOf()\n }\n\n\n if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {\n return\n }\n\n if (nextOccurrenceStart >= start) {\n const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1]\n\n yield nextOccurrence\n }\n\n dateCursor = nextOccurrenceEnd\n }\n}\n"],"mappings":";AAAA,OAAOA,MAAM,MAAM,iBAAiB;AAEpC,SAA4BC,aAAa,EAAEC,IAAI,QAAQ,qBAAqB;;AAE5E;AACA;AACA;AACA,OAAO,SAAUC,OAAOA,CAAAC,IAAA;EAAA,IACtBC,GAAG,GAAAD,IAAA,CAAHC,GAAG;IACHC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,OAAO,GAAAH,IAAA,CAAPG,OAAO;IACPC,KAAK,GAAAJ,IAAA,CAALI,KAAK;IACLC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACRC,IAAI,GAAAN,IAAA,CAAJM,IAAI;EAAA,oBAAAC,mBAAA,CAAAC,IAAA,UAAAC,QAAA;IAAA,IAAAC,QAAA,EAAAC,SAAA,EAAAC,YAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,cAAA,EAAAC,OAAA,EAAAC,UAAA,EAAAC,mBAAA,EAAAC,iBAAA,EAAAC,oCAAA,EAAAC,2BAAA,EAAAC,cAAA;IAAA,OAAAf,mBAAA,CAAAgB,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAEIhB,QAAQ,GAAgBP,OAAO,CAA/BO,QAAQ,EAAEC,SAAS,GAAKR,OAAO,CAArBQ,SAAS;UACbC,YAAY,GAA2BF,QAAQ,CAArDiB,IAAI,EAAuBd,aAAa,GAAKH,QAAQ,CAAjCkB,KAAK;UACnBd,aAAa,GAA4BH,SAAS,CAAxDgB,IAAI,EAAwBZ,cAAc,GAAKJ,SAAS,CAAnCiB,KAAK;UAE9BZ,OAAgB,GAAGd,SAAS;UAE5Be,UAAkB,GAAGD,OAAO,GAC5BpB,MAAM,CAACiC,EAAE,CAACzB,KAAK,EAAEC,QAAQ,CAAC,CAACyB,OAAO,CAAC,CAAC,GACpClC,MAAM,CACHiC,EAAE,CAACzB,KAAK,EAAEC,QAAQ,CAAC,CACnB0B,GAAG,CAAC,CAAC,EAAEjC,IAAI,CAACkC,WAAW,CAAC,CACxBF,OAAO,CAAC,CAAC;QAAA;UAAA,MAETb,UAAU,GAAGhB,GAAG;YAAAuB,QAAA,CAAAE,IAAA;YAAA;UAAA;UACjBR,mBAA2B;UAC3BC,iBAAyB;UAE7B,IAAIb,IAAI,KAAKT,aAAa,CAACoC,SAAS,EAAE;YACpCf,mBAAmB,GAAGD,UAAU;YAChCE,iBAAiB,GAAGvB,MAAM,CACvBiC,EAAE,CAACZ,UAAU,EAAEZ,QAAQ,CAAC,CACxB0B,GAAG,CAAClB,aAAa,EAAED,YAAY,CAAC,CAChCkB,OAAO,CAAC,CAAC;UAEd,CAAC,MAAM;YACLX,iBAAiB,GAAGvB,MAAM,CACvBiC,EAAE,CAACZ,UAAU,EAAEZ,QAAQ,CAAC,CACxB0B,GAAG,CAAChB,cAAc,EAAED,aAAa,CAAC,CAClCgB,OAAO,CAAC,CAAC;YAENV,oCAAoC,GAAGxB,MAAM,CAChDiC,EAAE,CAACV,iBAAiB,EAAEd,QAAQ,CAAC,CAC/B6B,QAAQ,CAACrB,aAAa,EAAED,YAAY,CAAC;YAElCS,2BAA2B,GAAGzB,MAAM,CACvCiC,EAAE,CAACZ,UAAU,EAAEZ,QAAQ,CAAC,EAEzB;YACA;YACA;YACFa,mBAAmB,GACjBtB,MAAM,CAACuC,GAAG,CACVd,2BAA2B,EAC3BD,oCACF,CAAC,CAACU,OAAO,CAAC,CAAC;UACb;UAAC,MAGGX,iBAAiB,IAAID,mBAAmB,IAAIC,iBAAiB,GAAGlB,GAAG;YAAAuB,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,OAAAF,QAAA,CAAAY,MAAA;QAAA;UAAA,MAInElB,mBAAmB,IAAId,KAAK;YAAAoB,QAAA,CAAAE,IAAA;YAAA;UAAA;UACxBJ,cAAc,GAAG,CAACJ,mBAAmB,EAAEC,iBAAiB,GAAG,CAAC,CAAC;UAAAK,QAAA,CAAAE,IAAA;UAEnE,OAAMJ,cAAc;QAAA;UAGtBL,UAAU,GAAGE,iBAAiB;UAAAK,QAAA,CAAAE,IAAA;UAAA;QAAA;QAAA;UAAA,OAAAF,QAAA,CAAAa,IAAA;MAAA;IAAA,GAAA5B,OAAA;EAAA;AAAA","ignoreList":[]}
|
|
@@ -1,70 +1,61 @@
|
|
|
1
1
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
2
|
-
|
|
3
|
-
var _marked = /*#__PURE__*/_regeneratorRuntime.mark(getNextExactDateOfMonth);
|
|
4
|
-
|
|
5
2
|
import moment from 'moment-timezone';
|
|
6
3
|
import { Unit } from '../scheduling.types';
|
|
4
|
+
|
|
7
5
|
/**
|
|
8
6
|
* Generates next occurrence interval for exact date of month strategy
|
|
9
7
|
*/
|
|
10
|
-
|
|
11
8
|
export function getNextExactDateOfMonth(_ref) {
|
|
12
|
-
var end
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
var end = _ref.end,
|
|
10
|
+
isInitial = _ref.isInitial,
|
|
11
|
+
options = _ref.options,
|
|
12
|
+
start = _ref.start,
|
|
13
|
+
timezone = _ref.timezone;
|
|
14
|
+
return /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
15
|
+
var date, duration, frequency, durationUnit, durationValue, frequencyUnit, frequencyValue, dateCursor, monthDate, hasExactDate, nextOccurrenceEnd, nextOccurrenceStart, nextOccurrence, nextDateCursor;
|
|
16
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
17
|
+
while (1) switch (_context.prev = _context.next) {
|
|
16
18
|
case 0:
|
|
17
|
-
end = _ref.end, isInitial = _ref.isInitial, options = _ref.options, start = _ref.start, timezone = _ref.timezone;
|
|
18
19
|
date = options.date, duration = options.duration, frequency = options.frequency;
|
|
19
20
|
durationUnit = duration.unit, durationValue = duration.value;
|
|
20
21
|
frequencyUnit = frequency.unit, frequencyValue = frequency.value;
|
|
21
22
|
dateCursor = isInitial ? moment.tz(start, timezone).startOf(Unit.Month).valueOf() : moment.tz(start, timezone).add(frequencyValue, frequencyUnit).startOf(Unit.Month).valueOf();
|
|
22
|
-
|
|
23
|
-
case 5:
|
|
23
|
+
case 1:
|
|
24
24
|
if (!(dateCursor < end)) {
|
|
25
|
-
_context.next =
|
|
25
|
+
_context.next = 4;
|
|
26
26
|
break;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
28
|
monthDate = moment.tz(dateCursor, timezone).date(date).date();
|
|
30
29
|
hasExactDate = monthDate === date;
|
|
31
|
-
|
|
32
30
|
if (!hasExactDate) {
|
|
33
|
-
_context.next =
|
|
31
|
+
_context.next = 3;
|
|
34
32
|
break;
|
|
35
33
|
}
|
|
36
|
-
|
|
37
34
|
nextOccurrenceEnd = moment.tz(dateCursor, timezone).date(date).add(1, Unit.Day).valueOf();
|
|
38
35
|
nextOccurrenceStart = moment.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
39
|
-
|
|
40
36
|
if (!(nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end)) {
|
|
41
|
-
_context.next =
|
|
37
|
+
_context.next = 2;
|
|
42
38
|
break;
|
|
43
39
|
}
|
|
44
|
-
|
|
45
40
|
return _context.abrupt("return");
|
|
46
|
-
|
|
47
|
-
case 13:
|
|
41
|
+
case 2:
|
|
48
42
|
if (!(nextOccurrenceStart >= start)) {
|
|
49
|
-
_context.next =
|
|
43
|
+
_context.next = 3;
|
|
50
44
|
break;
|
|
51
45
|
}
|
|
52
|
-
|
|
53
46
|
nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
54
|
-
_context.next =
|
|
47
|
+
_context.next = 3;
|
|
55
48
|
return nextOccurrence;
|
|
56
|
-
|
|
57
|
-
case 17:
|
|
49
|
+
case 3:
|
|
58
50
|
nextDateCursor = moment.tz(dateCursor, timezone).add(1, Unit.Month).valueOf();
|
|
59
51
|
dateCursor = nextDateCursor;
|
|
60
|
-
_context.next =
|
|
52
|
+
_context.next = 1;
|
|
61
53
|
break;
|
|
62
|
-
|
|
63
|
-
case 21:
|
|
54
|
+
case 4:
|
|
64
55
|
case "end":
|
|
65
56
|
return _context.stop();
|
|
66
57
|
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
58
|
+
}, _callee);
|
|
59
|
+
})();
|
|
69
60
|
}
|
|
70
61
|
//# sourceMappingURL=getNextExactDateOfMonth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"getNextExactDateOfMonth.js","names":["moment","Unit","getNextExactDateOfMonth","_ref","end","isInitial","options","start","timezone","_regeneratorRuntime","mark","_callee","date","duration","frequency","durationUnit","durationValue","frequencyUnit","frequencyValue","dateCursor","monthDate","hasExactDate","nextOccurrenceEnd","nextOccurrenceStart","nextOccurrence","nextDateCursor","wrap","_context","prev","next","unit","value","tz","startOf","Month","valueOf","add","Day","subtract","abrupt","stop"],"sources":["../../../src/scheduling/strategies/getNextExactDateOfMonth.ts"],"sourcesContent":["import moment from 'moment-timezone'\n\nimport { GetNext, Interval, Unit } from '../scheduling.types'\n\n/**\n * Generates next occurrence interval for exact date of month strategy\n */\nexport function* getNextExactDateOfMonth({\n end,\n isInitial,\n options,\n start,\n timezone,\n}: GetNext): IterableIterator<Interval> {\n const { date, duration, frequency } = options\n const { unit: durationUnit, value: durationValue } = duration\n const { unit: frequencyUnit, value: frequencyValue } = frequency\n\n let dateCursor: number = isInitial\n ? moment\n .tz(start, timezone)\n .startOf(Unit.Month)\n .valueOf()\n : moment\n .tz(start, timezone)\n .add(frequencyValue, frequencyUnit)\n .startOf(Unit.Month)\n .valueOf()\n\n while (dateCursor < end) {\n const monthDate = moment\n .tz(dateCursor, timezone)\n .date(date)\n .date()\n\n const hasExactDate = monthDate === date\n\n if (hasExactDate) {\n const nextOccurrenceEnd: number = moment\n .tz(dateCursor, timezone)\n .date(date)\n .add(1, Unit.Day)\n .valueOf()\n\n const nextOccurrenceStart: number = moment\n .tz(nextOccurrenceEnd, timezone)\n .subtract(durationValue, durationUnit)\n .valueOf()\n\n if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {\n return\n }\n\n if (nextOccurrenceStart >= start) {\n const nextOccurrence: Interval = [\n nextOccurrenceStart,\n nextOccurrenceEnd - 1,\n ]\n\n yield nextOccurrence\n }\n }\n\n const nextDateCursor: number = moment\n .tz(dateCursor, timezone)\n .add(1, Unit.Month)\n .valueOf()\n\n dateCursor = nextDateCursor\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,62 +1,55 @@
|
|
|
1
1
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
2
|
-
|
|
3
|
-
var _marked = /*#__PURE__*/_regeneratorRuntime.mark(getNextLastDayOfMonth);
|
|
4
|
-
|
|
5
2
|
import moment from 'moment-timezone';
|
|
6
3
|
import { Unit } from '../scheduling.types';
|
|
4
|
+
|
|
7
5
|
/**
|
|
8
6
|
* Generates next occurrence interval for last day of month strategy
|
|
9
7
|
*/
|
|
10
|
-
|
|
11
8
|
export function getNextLastDayOfMonth(_ref) {
|
|
12
|
-
var end
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
var end = _ref.end,
|
|
10
|
+
isInitial = _ref.isInitial,
|
|
11
|
+
options = _ref.options,
|
|
12
|
+
start = _ref.start,
|
|
13
|
+
timezone = _ref.timezone;
|
|
14
|
+
return /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
15
|
+
var duration, frequency, durationUnit, durationValue, frequencyUnit, frequencyValue, dateCursor, nextOccurrenceEnd, nextOccurrenceStart, nextOccurrence, nextDateCursor;
|
|
16
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
17
|
+
while (1) switch (_context.prev = _context.next) {
|
|
16
18
|
case 0:
|
|
17
|
-
end = _ref.end, isInitial = _ref.isInitial, options = _ref.options, start = _ref.start, timezone = _ref.timezone;
|
|
18
19
|
duration = options.duration, frequency = options.frequency;
|
|
19
20
|
durationUnit = duration.unit, durationValue = duration.value;
|
|
20
21
|
frequencyUnit = frequency.unit, frequencyValue = frequency.value;
|
|
21
22
|
dateCursor = isInitial ? moment.tz(start, timezone).startOf(Unit.Month).valueOf() : moment.tz(start, timezone).add(frequencyValue, frequencyUnit).startOf(Unit.Month).valueOf();
|
|
22
|
-
|
|
23
|
-
case 5:
|
|
23
|
+
case 1:
|
|
24
24
|
if (!(dateCursor < end)) {
|
|
25
|
-
_context.next =
|
|
25
|
+
_context.next = 4;
|
|
26
26
|
break;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
28
|
nextOccurrenceEnd = moment.tz(dateCursor, timezone).endOf(Unit.Month).add(1, Unit.Day).startOf(Unit.Day).valueOf();
|
|
30
29
|
nextOccurrenceStart = moment.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
31
|
-
|
|
32
30
|
if (!(nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end)) {
|
|
33
|
-
_context.next =
|
|
31
|
+
_context.next = 2;
|
|
34
32
|
break;
|
|
35
33
|
}
|
|
36
|
-
|
|
37
34
|
return _context.abrupt("return");
|
|
38
|
-
|
|
39
|
-
case 10:
|
|
35
|
+
case 2:
|
|
40
36
|
if (!(nextOccurrenceStart >= start)) {
|
|
41
|
-
_context.next =
|
|
37
|
+
_context.next = 3;
|
|
42
38
|
break;
|
|
43
39
|
}
|
|
44
|
-
|
|
45
40
|
nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
46
|
-
_context.next =
|
|
41
|
+
_context.next = 3;
|
|
47
42
|
return nextOccurrence;
|
|
48
|
-
|
|
49
|
-
case 14:
|
|
43
|
+
case 3:
|
|
50
44
|
nextDateCursor = moment.tz(dateCursor, timezone).add(1, Unit.Month).valueOf();
|
|
51
45
|
dateCursor = nextDateCursor;
|
|
52
|
-
_context.next =
|
|
46
|
+
_context.next = 1;
|
|
53
47
|
break;
|
|
54
|
-
|
|
55
|
-
case 18:
|
|
48
|
+
case 4:
|
|
56
49
|
case "end":
|
|
57
50
|
return _context.stop();
|
|
58
51
|
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
52
|
+
}, _callee);
|
|
53
|
+
})();
|
|
61
54
|
}
|
|
62
55
|
//# sourceMappingURL=getNextLastDayOfMonth.js.map
|