@lighthouse/common 6.10.0 → 6.10.1-canary.0
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/.mise.toml +6 -6
- package/CHANGELOG.md +758 -758
- package/README.md +1 -1
- package/dist/errors/FetchImageError.js +3 -3
- package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -7
- package/dist/helpers/floatify/index.js +6 -6
- package/dist/helpers/get-audit-items-data/index.js +47 -36
- package/dist/helpers/validate-url/index.js +4 -4
- package/dist/pdf/activity-report/index.js +32 -32
- package/dist/pdf/audit/index.js +23 -23
- package/dist/pdf/helpers/fields/index.js +47 -27
- package/dist/pdf/issue/index.js +23 -23
- package/dist/pdf/job/index.js +22 -22
- package/dist/pdf/shift-report/index.js +28 -28
- package/dist/pdf/task/index.js +23 -23
- package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/scheduleIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/serviceIntervalsGenerator.js +2 -2
- package/dist/scheduling/helpers/convertToTimezone.js +6 -6
- package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateScheduleEnd.js +2 -2
- package/dist/scheduling/helpers/hasValidStartAndEnd.js +5 -5
- package/dist/scheduling/helpers/intervalCovers.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOutside.js +6 -6
- package/dist/scheduling/helpers/intervalWithin.js +6 -6
- package/dist/scheduling/helpers/mergeIntervals.js +6 -6
- package/dist/scheduling/helpers/splitIntervals.js +6 -6
- package/dist/scheduling/strategies/getNext.js +2 -2
- package/dist/scheduling/strategies/getNextExactDateOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastDayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextNoRepeat.js +2 -2
- package/dist/scheduling/strategies/getNextWeekday.js +2 -2
- package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +2 -2
- package/dist/service-hours/__helpers__/calculate-hours.js +4 -4
- package/dist/service-hours/__helpers__/isOpen.js +2 -2
- package/dist/service-hours/schema.js +4 -4
- package/lib/constants.js +12 -6
- package/lib/constants.js.map +1 -1
- package/lib/errors/DomainError.js +14 -21
- package/lib/errors/DomainError.js.map +1 -1
- package/lib/errors/FetchImageError.js +17 -24
- package/lib/errors/FetchImageError.js.map +1 -1
- package/lib/errors/ValidationError.js +30 -36
- package/lib/errors/ValidationError.js.map +1 -1
- package/lib/errors/index.js +23 -5
- package/lib/errors/index.js.map +1 -1
- package/lib/helpers/build-fetch-url/index.js +43 -47
- package/lib/helpers/build-fetch-url/index.js.map +1 -1
- package/lib/helpers/fetch-image/index.js +83 -82
- package/lib/helpers/fetch-image/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +168 -243
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-web/index.js +71 -94
- package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
- package/lib/helpers/fetch-lighthouse-logo/index.js +36 -61
- package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
- package/lib/helpers/floatify/index.js +13 -7
- package/lib/helpers/floatify/index.js.map +1 -1
- package/lib/helpers/get-assignees-full-names/index.js +11 -7
- package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
- package/lib/helpers/get-audit-entry-details/index.js +42 -32
- package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
- package/lib/helpers/get-audit-items-data/index.js +104 -83
- package/lib/helpers/get-audit-items-data/index.js.map +1 -1
- package/lib/helpers/get-geometry-geocoded-string/index.js +10 -5
- package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
- package/lib/helpers/get-issue-details/index.js +53 -43
- package/lib/helpers/get-issue-details/index.js.map +1 -1
- package/lib/helpers/get-job-details/index.js +49 -41
- package/lib/helpers/get-job-details/index.js.map +1 -1
- package/lib/helpers/get-location-reference/index.js +32 -34
- package/lib/helpers/get-location-reference/index.js.map +1 -1
- package/lib/helpers/get-pretty-duration/index.js +16 -10
- package/lib/helpers/get-pretty-duration/index.js.map +1 -1
- package/lib/helpers/get-reference-details/index.js +20 -10
- package/lib/helpers/get-reference-details/index.js.map +1 -1
- package/lib/helpers/get-status-details/index.js +8 -2
- package/lib/helpers/get-status-details/index.js.map +1 -1
- package/lib/helpers/get-task-entry-details/index.js +32 -23
- package/lib/helpers/get-task-entry-details/index.js.map +1 -1
- package/lib/helpers/get-timezone-abbr/index.js +11 -4
- package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
- package/lib/helpers/get-timezone-datetime/index.js +20 -13
- package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
- package/lib/helpers/get-user-full-name/index.js +9 -3
- package/lib/helpers/get-user-full-name/index.js.map +1 -1
- package/lib/helpers/get-value-as-percentage/index.js +9 -4
- package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
- package/lib/helpers/image-validators/index.js +18 -12
- package/lib/helpers/image-validators/index.js.map +1 -1
- package/lib/helpers/index.js +130 -18
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/validate-url/index.js +11 -5
- package/lib/helpers/validate-url/index.js.map +1 -1
- package/lib/images/index.js +10 -4
- package/lib/images/index.js.map +1 -1
- package/lib/index.js +66 -10
- package/lib/index.js.map +1 -1
- package/lib/pdf/activity-report/index.js +407 -537
- package/lib/pdf/activity-report/index.js.map +1 -1
- package/lib/pdf/audit/index.js +137 -134
- package/lib/pdf/audit/index.js.map +1 -1
- package/lib/pdf/fonts/index.js +4 -2
- package/lib/pdf/fonts/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-content/index.js +57 -51
- package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-follow-ups/index.js +52 -50
- package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
- package/lib/pdf/helpers/build-location-scans-content/index.js +22 -16
- package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-template-content/index.js +52 -51
- package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
- package/lib/pdf/helpers/default-footer/index.js +38 -35
- package/lib/pdf/helpers/default-footer/index.js.map +1 -1
- package/lib/pdf/helpers/default-header/index.js +40 -35
- package/lib/pdf/helpers/default-header/index.js.map +1 -1
- package/lib/pdf/helpers/default-styles/index.js +7 -1
- package/lib/pdf/helpers/default-styles/index.js.map +1 -1
- package/lib/pdf/helpers/fields/index.js +225 -214
- package/lib/pdf/helpers/fields/index.js.map +1 -1
- package/lib/pdf/helpers/format-location-address/index.js +14 -8
- package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
- package/lib/pdf/helpers/generate-definition/index.js +60 -65
- package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
- package/lib/pdf/helpers/horizontal-line/index.js +14 -14
- package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
- package/lib/pdf/helpers/html-transformer/index.js +45 -35
- package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
- package/lib/pdf/helpers/index.js +194 -15
- package/lib/pdf/helpers/index.js.map +1 -1
- package/lib/pdf/helpers/parse-value/index.js +10 -4
- package/lib/pdf/helpers/parse-value/index.js.map +1 -1
- package/lib/pdf/helpers/table/index.js +136 -205
- package/lib/pdf/helpers/table/index.js.map +1 -1
- package/lib/pdf/helpers/text/index.js +11 -8
- package/lib/pdf/helpers/text/index.js.map +1 -1
- package/lib/pdf/icons/index.js +8 -2
- package/lib/pdf/icons/index.js.map +1 -1
- package/lib/pdf/index.js +47 -6
- package/lib/pdf/index.js.map +1 -1
- package/lib/pdf/issue/index.js +141 -135
- package/lib/pdf/issue/index.js.map +1 -1
- package/lib/pdf/job/index.js +95 -81
- package/lib/pdf/job/index.js.map +1 -1
- package/lib/pdf/shift-report/emptyFixtures.js +8 -2
- package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
- package/lib/pdf/shift-report/index.js +399 -521
- package/lib/pdf/shift-report/index.js.map +1 -1
- package/lib/pdf/task/index.js +89 -83
- package/lib/pdf/task/index.js.map +1 -1
- package/lib/scheduling/generators/index.js +38 -3
- package/lib/scheduling/generators/index.js.map +1 -1
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +44 -37
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js +20 -28
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/serviceIntervalsGenerator.js +120 -150
- package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/helpers/convertToTimezone.js +18 -11
- package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +57 -95
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateRepeatingSchedule.js +80 -119
- package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateScheduleEnd.js +24 -14
- package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
- package/lib/scheduling/helpers/hasValidStartAndEnd.js +19 -11
- package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
- package/lib/scheduling/helpers/index.js +159 -14
- package/lib/scheduling/helpers/index.js.map +1 -1
- package/lib/scheduling/helpers/intervalCovers.js +13 -7
- package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsEnd.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsStart.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOutside.js +15 -9
- package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
- package/lib/scheduling/helpers/intervalWithin.js +13 -7
- package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
- package/lib/scheduling/helpers/mergeIntervals.js +21 -17
- package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
- package/lib/scheduling/helpers/splitIntervals.js +24 -23
- package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
- package/lib/scheduling/index.js +38 -3
- package/lib/scheduling/index.js.map +1 -1
- package/lib/scheduling/scheduling.types.js +9 -3
- package/lib/scheduling/scheduling.types.js.map +1 -1
- package/lib/scheduling/strategies/getNext.js +57 -63
- package/lib/scheduling/strategies/getNext.js.map +1 -1
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js +47 -56
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js +43 -51
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +49 -56
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextNoRepeat.js +25 -36
- package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
- package/lib/scheduling/strategies/getNextWeekday.js +47 -79
- package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +52 -58
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/index.js +82 -7
- package/lib/scheduling/strategies/index.js.map +1 -1
- package/lib/schema/index.js +16 -1
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/schema.js +28 -34
- package/lib/schema/schema.js.map +1 -1
- package/lib/service-hours/__helpers__/calculate-hours.js +24 -22
- package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
- package/lib/service-hours/__helpers__/isOpen.js +25 -24
- package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
- package/lib/service-hours/index.js +27 -2
- package/lib/service-hours/index.js.map +1 -1
- package/lib/service-hours/schema.js +68 -55
- package/lib/service-hours/schema.js.map +1 -1
- package/package.json +86 -86
- package/vitest.config.ts +23 -23
- package/vitest.setup.js +7 -7
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.intervalIntersectsEnd = intervalIntersectsEnd;
|
|
7
|
+
/**
|
|
8
|
+
* Check if interval intersects another interval's end
|
|
9
|
+
* Accepts two intervals and checks whether the first intersects the second's end
|
|
10
|
+
*
|
|
11
|
+
* intervalIntersectsEnd([12,20], [5,15]))
|
|
12
|
+
* returns true
|
|
7
13
|
*/
|
|
8
|
-
|
|
14
|
+
function intervalIntersectsEnd(firstInterval, secondInterval) {
|
|
9
15
|
return firstInterval[1] >= secondInterval[1] && firstInterval[0] < secondInterval[1];
|
|
10
16
|
}
|
|
11
17
|
//# sourceMappingURL=intervalIntersectsEnd.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"intervalIntersectsEnd.js","names":["intervalIntersectsEnd","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalIntersectsEnd.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\r\n\r\n/**\r\n * Check if interval intersects another interval's end\r\n * Accepts two intervals and checks whether the first intersects the second's end\r\n *\r\n * intervalIntersectsEnd([12,20], [5,15]))\r\n * returns true\r\n */\r\nexport function intervalIntersectsEnd(\r\n firstInterval: Interval,\r\n secondInterval: Interval\r\n): Boolean {\r\n return (\r\n firstInterval[1] >= secondInterval[1] &&\r\n firstInterval[0] < secondInterval[1]\r\n )\r\n}\r\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,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,11 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.intervalIntersectsStart = intervalIntersectsStart;
|
|
7
|
+
/**
|
|
8
|
+
* Check if interval intersects another interval's start
|
|
9
|
+
* Accepts two intervals and checks whether the first intersects the second's start
|
|
10
|
+
*
|
|
11
|
+
* intervalIntersectsStart([2,10], [5,15])
|
|
12
|
+
* returns true
|
|
7
13
|
*/
|
|
8
|
-
|
|
14
|
+
function intervalIntersectsStart(firstInterval, secondInterval) {
|
|
9
15
|
return firstInterval[0] <= secondInterval[0] && firstInterval[1] > secondInterval[0];
|
|
10
16
|
}
|
|
11
17
|
//# sourceMappingURL=intervalIntersectsStart.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"intervalIntersectsStart.js","names":["intervalIntersectsStart","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalIntersectsStart.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\r\n\r\n/**\r\n * Check if interval intersects another interval's start\r\n * Accepts two intervals and checks whether the first intersects the second's start\r\n *\r\n * intervalIntersectsStart([2,10], [5,15])\r\n * returns true\r\n */\r\nexport function intervalIntersectsStart(\r\n firstInterval: Interval,\r\n secondInterval: Interval\r\n): Boolean {\r\n return (\r\n firstInterval[0] <= secondInterval[0] &&\r\n firstInterval[1] > secondInterval[0]\r\n )\r\n}\r\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,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,15 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
import { intervalIntersectsStart } from './intervalIntersectsStart';
|
|
1
|
+
"use strict";
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.intervalOnlyIntersectsEnd = intervalOnlyIntersectsEnd;
|
|
7
|
+
var _intervalIntersectsEnd = require("./intervalIntersectsEnd");
|
|
8
|
+
var _intervalIntersectsStart = require("./intervalIntersectsStart");
|
|
9
|
+
/**
|
|
10
|
+
* Check if interval only intersects another interval's end
|
|
11
|
+
* Accepts two intervals and checks whether the first only intersects the second's end
|
|
12
|
+
*
|
|
13
|
+
* intervalIntersectsEnd([12,20], [5,15]))
|
|
14
|
+
* returns true
|
|
10
15
|
*/
|
|
11
16
|
|
|
12
|
-
|
|
13
|
-
return !intervalIntersectsStart(firstInterval, secondInterval) && intervalIntersectsEnd(firstInterval, secondInterval);
|
|
17
|
+
function intervalOnlyIntersectsEnd(firstInterval, secondInterval) {
|
|
18
|
+
return !(0, _intervalIntersectsStart.intervalIntersectsStart)(firstInterval, secondInterval) && (0, _intervalIntersectsEnd.intervalIntersectsEnd)(firstInterval, secondInterval);
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=intervalOnlyIntersectsEnd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intervalOnlyIntersectsEnd.js","names":["
|
|
1
|
+
{"version":3,"file":"intervalOnlyIntersectsEnd.js","names":["_intervalIntersectsEnd","require","_intervalIntersectsStart","intervalOnlyIntersectsEnd","firstInterval","secondInterval","intervalIntersectsStart","intervalIntersectsEnd"],"sources":["../../../src/scheduling/helpers/intervalOnlyIntersectsEnd.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\r\n\r\nimport { intervalIntersectsEnd } from './intervalIntersectsEnd'\r\nimport { intervalIntersectsStart } from './intervalIntersectsStart'\r\n\r\n/**\r\n * Check if interval only intersects another interval's end\r\n * Accepts two intervals and checks whether the first only intersects the second's end\r\n *\r\n * intervalIntersectsEnd([12,20], [5,15]))\r\n * returns true\r\n */\r\n\r\nexport function intervalOnlyIntersectsEnd(\r\n firstInterval: Interval,\r\n secondInterval: Interval\r\n): Boolean {\r\n return (\r\n !intervalIntersectsStart(firstInterval, secondInterval) &&\r\n intervalIntersectsEnd(firstInterval, secondInterval)\r\n )\r\n}\r\n"],"mappings":";;;;;;AAEA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASE,yBAAyBA,CACvCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACE,CAAC,IAAAC,gDAAuB,EAACF,aAAa,EAAEC,cAAc,CAAC,IACvD,IAAAE,4CAAqB,EAACH,aAAa,EAAEC,cAAc,CAAC;AAExD","ignoreList":[]}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
import { intervalIntersectsStart } from './intervalIntersectsStart';
|
|
1
|
+
"use strict";
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.intervalOnlyIntersectsStart = intervalOnlyIntersectsStart;
|
|
7
|
+
var _intervalIntersectsEnd = require("./intervalIntersectsEnd");
|
|
8
|
+
var _intervalIntersectsStart = require("./intervalIntersectsStart");
|
|
9
|
+
/**
|
|
10
|
+
* Check if interval only intersects another interval's start
|
|
11
|
+
* Accepts two intervals and checks whether the first only intersects the second's start
|
|
12
|
+
*
|
|
13
|
+
* intervalOnlyIntersectsStart([2,10], [5,15])
|
|
14
|
+
* returns true
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
|
-
return intervalIntersectsStart(firstInterval, secondInterval) && !intervalIntersectsEnd(firstInterval, secondInterval);
|
|
16
|
+
function intervalOnlyIntersectsStart(firstInterval, secondInterval) {
|
|
17
|
+
return (0, _intervalIntersectsStart.intervalIntersectsStart)(firstInterval, secondInterval) && !(0, _intervalIntersectsEnd.intervalIntersectsEnd)(firstInterval, secondInterval);
|
|
13
18
|
}
|
|
14
19
|
//# sourceMappingURL=intervalOnlyIntersectsStart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intervalOnlyIntersectsStart.js","names":["
|
|
1
|
+
{"version":3,"file":"intervalOnlyIntersectsStart.js","names":["_intervalIntersectsEnd","require","_intervalIntersectsStart","intervalOnlyIntersectsStart","firstInterval","secondInterval","intervalIntersectsStart","intervalIntersectsEnd"],"sources":["../../../src/scheduling/helpers/intervalOnlyIntersectsStart.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\r\n\r\nimport { intervalIntersectsEnd } from './intervalIntersectsEnd'\r\nimport { intervalIntersectsStart } from './intervalIntersectsStart'\r\n\r\n/**\r\n * Check if interval only intersects another interval's start\r\n * Accepts two intervals and checks whether the first only intersects the second's start\r\n *\r\n * intervalOnlyIntersectsStart([2,10], [5,15])\r\n * returns true\r\n */\r\nexport function intervalOnlyIntersectsStart(\r\n firstInterval: Interval,\r\n secondInterval: Interval\r\n): Boolean {\r\n return (\r\n intervalIntersectsStart(firstInterval, secondInterval) &&\r\n !intervalIntersectsEnd(firstInterval, secondInterval)\r\n )\r\n}\r\n"],"mappings":";;;;;;AAEA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,2BAA2BA,CACzCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACE,IAAAC,gDAAuB,EAACF,aAAa,EAAEC,cAAc,CAAC,IACtD,CAAC,IAAAE,4CAAqB,EAACH,aAAa,EAAEC,cAAc,CAAC;AAEzD","ignoreList":[]}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.intervalOutside = intervalOutside;
|
|
7
|
+
/**
|
|
8
|
+
* Check if interval outside another interval
|
|
9
|
+
* Accepts two intervals and checks whether other interval is in the past or future
|
|
10
|
+
*
|
|
11
|
+
* intervalOutside([1, 4], [5,15])
|
|
12
|
+
* returns true
|
|
7
13
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
function intervalOutside(firstInterval, secondInterval) {
|
|
15
|
+
const future = firstInterval[0] > secondInterval[1] && firstInterval[1] > secondInterval[1];
|
|
16
|
+
const past = firstInterval[0] < secondInterval[0] && firstInterval[1] < secondInterval[0];
|
|
11
17
|
return future || past;
|
|
12
18
|
}
|
|
13
19
|
//# sourceMappingURL=intervalOutside.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"intervalOutside.js","names":["intervalOutside","firstInterval","secondInterval","future","past"],"sources":["../../../src/scheduling/helpers/intervalOutside.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\r\n\r\n/**\r\n * Check if interval outside another interval\r\n * Accepts two intervals and checks whether other interval is in the past or future\r\n *\r\n * intervalOutside([1, 4], [5,15])\r\n * returns true\r\n */\r\nexport function intervalOutside(\r\n firstInterval: Interval,\r\n secondInterval: Interval\r\n): Boolean {\r\n const future =\r\n firstInterval[0] > secondInterval[1] && firstInterval[1] > secondInterval[1]\r\n const past =\r\n firstInterval[0] < secondInterval[0] && firstInterval[1] < secondInterval[0]\r\n\r\n return future || past\r\n}\r\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,eAAeA,CAC7BC,aAAuB,EACvBC,cAAwB,EACf;EACT,MAAMC,MAAM,GACVF,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;EAC9E,MAAME,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,11 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.intervalWithin = intervalWithin;
|
|
7
|
+
/**
|
|
8
|
+
* Checks if interval within another interval
|
|
9
|
+
* Accepts two intervals and checks whether within other interval
|
|
10
|
+
*
|
|
11
|
+
* intervalWithin([7,12], [5,15])
|
|
12
|
+
* returns true
|
|
7
13
|
*/
|
|
8
|
-
|
|
14
|
+
function intervalWithin(firstInterval, secondInterval) {
|
|
9
15
|
return firstInterval[0] > secondInterval[0] && firstInterval[1] < secondInterval[1];
|
|
10
16
|
}
|
|
11
17
|
//# sourceMappingURL=intervalWithin.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"intervalWithin.js","names":["intervalWithin","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalWithin.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\r\n\r\n/**\r\n * Checks if interval within another interval\r\n * Accepts two intervals and checks whether within other interval\r\n *\r\n * intervalWithin([7,12], [5,15])\r\n * returns true\r\n */\r\nexport function intervalWithin(\r\n firstInterval: Interval,\r\n secondInterval: Interval\r\n): Boolean {\r\n return (\r\n firstInterval[0] > secondInterval[0] && firstInterval[1] < secondInterval[1]\r\n )\r\n}\r\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,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,21 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mergeIntervals = mergeIntervals;
|
|
7
|
+
var _fp = require("lodash/fp");
|
|
8
|
+
/**
|
|
9
|
+
* Merges overlapping intervals
|
|
10
|
+
* Accepts arrays of intervals and returns a flattened result of overlapping intervals
|
|
11
|
+
*
|
|
12
|
+
* mergeIntervals([[1,15], [11,25], [21,29], [40,1000]])
|
|
13
|
+
* returns [[1,29], [40,1000]]
|
|
8
14
|
*/
|
|
9
|
-
|
|
10
|
-
if (isEmpty(intervals)) return intervals;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var topBeforeInterval = top[1] < interval[0];
|
|
18
|
-
var topOverlapsInterval = top[1] < interval[1];
|
|
15
|
+
function mergeIntervals(intervals) {
|
|
16
|
+
if ((0, _fp.isEmpty)(intervals)) return intervals;
|
|
17
|
+
const sortedIntervals = intervals.sort((a, b) => a[0] - b[0]);
|
|
18
|
+
const firstInterval = (0, _fp.first)(sortedIntervals);
|
|
19
|
+
const stack = (0, _fp.reduce)((accum, interval) => {
|
|
20
|
+
const top = accum[accum.length - 1];
|
|
21
|
+
const topBeforeInterval = top[1] < interval[0];
|
|
22
|
+
const topOverlapsInterval = top[1] < interval[1];
|
|
19
23
|
if (topBeforeInterval) {
|
|
20
24
|
accum.push(interval);
|
|
21
25
|
} else if (topOverlapsInterval) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeIntervals.js","names":["
|
|
1
|
+
{"version":3,"file":"mergeIntervals.js","names":["_fp","require","mergeIntervals","intervals","isEmpty","sortedIntervals","sort","a","b","firstInterval","first","stack","reduce","accum","interval","top","length","topBeforeInterval","topOverlapsInterval","push","pop"],"sources":["../../../src/scheduling/helpers/mergeIntervals.ts"],"sourcesContent":["import { first, isEmpty, reduce } from 'lodash/fp'\r\n\r\nimport { Interval } from '../scheduling.types'\r\n\r\n/**\r\n * Merges overlapping intervals\r\n * Accepts arrays of intervals and returns a flattened result of overlapping intervals\r\n *\r\n * mergeIntervals([[1,15], [11,25], [21,29], [40,1000]])\r\n * returns [[1,29], [40,1000]]\r\n */\r\nexport function mergeIntervals(intervals: Interval[]): Interval[] {\r\n if (isEmpty(intervals)) return intervals\r\n\r\n const sortedIntervals = intervals.sort((a, b) => a[0] - b[0])\r\n const firstInterval: Interval = first(sortedIntervals)\r\n\r\n const stack: Interval[] = reduce(\r\n (accum, interval: Interval) => {\r\n const top = accum[accum.length - 1]\r\n const topBeforeInterval = top[1] < interval[0]\r\n const topOverlapsInterval = top[1] < interval[1]\r\n\r\n if (topBeforeInterval) {\r\n accum.push(interval)\r\n } else if (topOverlapsInterval) {\r\n accum.pop()\r\n accum.push([top[0], interval[1]])\r\n }\r\n\r\n return accum\r\n },\r\n [firstInterval],\r\n sortedIntervals\r\n )\r\n\r\n return stack\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAACC,SAAqB,EAAc;EAChE,IAAI,IAAAC,WAAO,EAACD,SAAS,CAAC,EAAE,OAAOA,SAAS;EAExC,MAAME,eAAe,GAAGF,SAAS,CAACG,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D,MAAMC,aAAuB,GAAG,IAAAC,SAAK,EAACL,eAAe,CAAC;EAEtD,MAAMM,KAAiB,GAAG,IAAAC,UAAM,EAC9B,CAACC,KAAK,EAAEC,QAAkB,KAAK;IAC7B,MAAMC,GAAG,GAAGF,KAAK,CAACA,KAAK,CAACG,MAAM,GAAG,CAAC,CAAC;IACnC,MAAMC,iBAAiB,GAAGF,GAAG,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAC9C,MAAMI,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,CAACJ,aAAa,CAAC,EACfJ,eACF,CAAC;EAED,OAAOM,KAAK;AACd","ignoreList":[]}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
import { intervalCovers, intervalIntersectsEnd, intervalIntersectsStart, intervalOutside, intervalWithin } from '.';
|
|
1
|
+
"use strict";
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.splitIntervals = splitIntervals;
|
|
7
|
+
var _fp = require("lodash/fp");
|
|
8
|
+
var _ = require(".");
|
|
9
|
+
/**
|
|
10
|
+
* Applies closed intervals to intervals
|
|
11
|
+
* Accepts two sets of intervals and splits the first set by the second set
|
|
12
|
+
*
|
|
13
|
+
* splitIntervals([[1,10], [11,20], [21,29]], [[8,13]])
|
|
14
|
+
* returns [[1,8], [13,20], [21,29]]
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var sortedIntervals = sortBy(function (a) {
|
|
16
|
-
return a[0];
|
|
17
|
-
})(intervals);
|
|
18
|
-
var stack = reduce(function (accum, openInterval) {
|
|
16
|
+
function splitIntervals(intervals = [], closeIntervals = []) {
|
|
17
|
+
if ((0, _fp.isEmpty)(closeIntervals)) return intervals;
|
|
18
|
+
const sortedIntervals = (0, _fp.sortBy)(a => a[0])(intervals);
|
|
19
|
+
const stack = (0, _fp.reduce)((accum, openInterval) => {
|
|
19
20
|
accum.push(openInterval);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
(0, _fp.forEach)(closeInterval => {
|
|
22
|
+
const topInterval = accum[accum.length - 1];
|
|
23
|
+
const closeCoversInterval = (0, _.intervalCovers)(closeInterval, topInterval);
|
|
24
|
+
const closeIntersectsIntervalEnd = (0, _.intervalIntersectsEnd)(closeInterval, topInterval);
|
|
25
|
+
const closeIntersectsIntervalStart = (0, _.intervalIntersectsStart)(closeInterval, topInterval);
|
|
26
|
+
const closeOutsideInterval = (0, _.intervalOutside)(closeInterval, topInterval);
|
|
27
|
+
const closeWithinInterval = (0, _.intervalWithin)(closeInterval, topInterval);
|
|
27
28
|
if (closeOutsideInterval) return;
|
|
28
29
|
accum.pop();
|
|
29
30
|
if (closeCoversInterval) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitIntervals.js","names":["
|
|
1
|
+
{"version":3,"file":"splitIntervals.js","names":["_fp","require","_","splitIntervals","intervals","closeIntervals","isEmpty","sortedIntervals","sortBy","a","stack","reduce","accum","openInterval","push","forEach","closeInterval","topInterval","length","closeCoversInterval","intervalCovers","closeIntersectsIntervalEnd","intervalIntersectsEnd","closeIntersectsIntervalStart","intervalIntersectsStart","closeOutsideInterval","intervalOutside","closeWithinInterval","intervalWithin","pop"],"sources":["../../../src/scheduling/helpers/splitIntervals.ts"],"sourcesContent":["import { forEach, isEmpty, reduce, sortBy } from 'lodash/fp'\r\n\r\nimport { Interval } from '../scheduling.types'\r\nimport {\r\n intervalCovers,\r\n intervalIntersectsEnd,\r\n intervalIntersectsStart,\r\n intervalOutside,\r\n intervalWithin,\r\n} from '.'\r\n\r\n/**\r\n * Applies closed intervals to intervals\r\n * Accepts two sets of intervals and splits the first set by the second set\r\n *\r\n * splitIntervals([[1,10], [11,20], [21,29]], [[8,13]])\r\n * returns [[1,8], [13,20], [21,29]]\r\n */\r\nexport function splitIntervals(\r\n intervals: Array<Interval> = [],\r\n closeIntervals: Array<Interval> = []\r\n): Array<Interval> {\r\n if (isEmpty(closeIntervals)) return intervals\r\n\r\n const sortedIntervals = sortBy(a => a[0])(intervals)\r\n\r\n const stack = reduce(\r\n (accum, openInterval) => {\r\n accum.push(openInterval)\r\n\r\n forEach(\r\n (closeInterval: Interval): void => {\r\n const topInterval = accum[accum.length - 1]\r\n\r\n const closeCoversInterval = intervalCovers(closeInterval, topInterval)\r\n const closeIntersectsIntervalEnd = intervalIntersectsEnd(\r\n closeInterval,\r\n topInterval\r\n )\r\n const closeIntersectsIntervalStart = intervalIntersectsStart(\r\n closeInterval,\r\n topInterval\r\n )\r\n const closeOutsideInterval = intervalOutside(\r\n closeInterval,\r\n topInterval\r\n )\r\n const closeWithinInterval = intervalWithin(closeInterval, topInterval)\r\n\r\n if (closeOutsideInterval) return\r\n\r\n accum.pop()\r\n\r\n if (closeCoversInterval) return\r\n if (closeWithinInterval)\r\n accum.push(\r\n [topInterval[0], closeInterval[0]],\r\n [closeInterval[1], topInterval[1]]\r\n )\r\n if (closeIntersectsIntervalStart)\r\n accum.push([closeInterval[1], topInterval[1]])\r\n if (closeIntersectsIntervalEnd)\r\n accum.push([topInterval[0], closeInterval[0]])\r\n }\r\n )(closeIntervals)\r\n\r\n return accum\r\n },\r\n [],\r\n sortedIntervals\r\n )\r\n\r\n return stack\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AAGA,IAAAC,CAAA,GAAAD,OAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,cAAcA,CAC5BC,SAA0B,GAAG,EAAE,EAC/BC,cAA+B,GAAG,EAAE,EACnB;EACjB,IAAI,IAAAC,WAAO,EAACD,cAAc,CAAC,EAAE,OAAOD,SAAS;EAE7C,MAAMG,eAAe,GAAG,IAAAC,UAAM,EAACC,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,CAAC,CAACL,SAAS,CAAC;EAEpD,MAAMM,KAAK,GAAG,IAAAC,UAAM,EAClB,CAACC,KAAK,EAAEC,YAAY,KAAK;IACvBD,KAAK,CAACE,IAAI,CAACD,YAAY,CAAC;IAExB,IAAAE,WAAO,EACJC,aAAuB,IAAW;MACjC,MAAMC,WAAW,GAAGL,KAAK,CAACA,KAAK,CAACM,MAAM,GAAG,CAAC,CAAC;MAE3C,MAAMC,mBAAmB,GAAG,IAAAC,gBAAc,EAACJ,aAAa,EAAEC,WAAW,CAAC;MACtE,MAAMI,0BAA0B,GAAG,IAAAC,uBAAqB,EACtDN,aAAa,EACbC,WACF,CAAC;MACD,MAAMM,4BAA4B,GAAG,IAAAC,yBAAuB,EAC1DR,aAAa,EACbC,WACF,CAAC;MACD,MAAMQ,oBAAoB,GAAG,IAAAC,iBAAe,EAC1CV,aAAa,EACbC,WACF,CAAC;MACD,MAAMU,mBAAmB,GAAG,IAAAC,gBAAc,EAACZ,aAAa,EAAEC,WAAW,CAAC;MAEtE,IAAIQ,oBAAoB,EAAE;MAE1Bb,KAAK,CAACiB,GAAG,CAAC,CAAC;MAEX,IAAIV,mBAAmB,EAAE;MACzB,IAAIQ,mBAAmB,EACrBf,KAAK,CAACE,IAAI,CACR,CAACG,WAAW,CAAC,CAAC,CAAC,EAAED,aAAa,CAAC,CAAC,CAAC,CAAC,EAClC,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,CAAC,CACnC,CAAC;MACH,IAAIM,4BAA4B,EAC9BX,KAAK,CAACE,IAAI,CAAC,CAACE,aAAa,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD,IAAII,0BAA0B,EAC5BT,KAAK,CAACE,IAAI,CAAC,CAACG,WAAW,CAAC,CAAC,CAAC,EAAED,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CACF,CAAC,CAACX,cAAc,CAAC;IAEjB,OAAOO,KAAK;EACd,CAAC,EACD,EAAE,EACFL,eACF,CAAC;EAED,OAAOG,KAAK;AACd","ignoreList":[]}
|
package/lib/scheduling/index.js
CHANGED
|
@@ -1,4 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _generators = require("./generators");
|
|
7
|
+
Object.keys(_generators).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _generators[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _generators[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _scheduling = require("./scheduling.types");
|
|
18
|
+
Object.keys(_scheduling).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _scheduling[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _scheduling[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _helpers = require("./helpers");
|
|
29
|
+
Object.keys(_helpers).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _helpers[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _helpers[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
4
39
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_generators","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_scheduling","_helpers"],"sources":["../../src/scheduling/index.ts"],"sourcesContent":["export * from './generators'\r\nexport * from './scheduling.types'\r\nexport * from './helpers'"],"mappings":";;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,WAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,WAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,WAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,WAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,QAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,QAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,QAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,QAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Unit = exports.StrategyTypes = exports.IntervalTypes = void 0;
|
|
7
|
+
let IntervalTypes = exports.IntervalTypes = /*#__PURE__*/function (IntervalTypes) {
|
|
2
8
|
IntervalTypes["Occurrence"] = "occurrence";
|
|
3
9
|
IntervalTypes["Service"] = "service";
|
|
4
10
|
return IntervalTypes;
|
|
5
11
|
}({});
|
|
6
|
-
|
|
12
|
+
let Unit = exports.Unit = /*#__PURE__*/function (Unit) {
|
|
7
13
|
Unit["Millisecond"] = "millisecond";
|
|
8
14
|
Unit["Second"] = "second";
|
|
9
15
|
Unit["Minute"] = "minute";
|
|
@@ -14,7 +20,7 @@ export var Unit = /*#__PURE__*/function (Unit) {
|
|
|
14
20
|
Unit["Year"] = "year";
|
|
15
21
|
return Unit;
|
|
16
22
|
}({});
|
|
17
|
-
|
|
23
|
+
let StrategyTypes = exports.StrategyTypes = /*#__PURE__*/function (StrategyTypes) {
|
|
18
24
|
StrategyTypes["ExactDateOfMonth"] = "exactDateOfMonth";
|
|
19
25
|
StrategyTypes["LastDayOfMonth"] = "lastDayOfMonth";
|
|
20
26
|
StrategyTypes["LastWeekdayOfMonth"] = "lastWeekdayOfMonth";
|
|
@@ -1 +1 @@
|
|
|
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":"
|
|
1
|
+
{"version":3,"file":"scheduling.types.js","names":["IntervalTypes","exports","Unit","StrategyTypes"],"sources":["../../src/scheduling/scheduling.types.ts"],"sourcesContent":["import { Schema as ServiceHoursSchema } from '../service-hours'\r\n\r\nexport enum IntervalTypes {\r\n Occurrence = 'occurrence',\r\n Service = 'service',\r\n}\r\n\r\nexport enum Unit {\r\n Millisecond = 'millisecond',\r\n Second = 'second',\r\n Minute = 'minute',\r\n Hour = 'hour',\r\n Day = 'day',\r\n Week = 'isoWeek',\r\n Month = 'month',\r\n Year = 'year',\r\n}\r\n\r\nexport enum StrategyTypes {\r\n ExactDateOfMonth = 'exactDateOfMonth',\r\n LastDayOfMonth = 'lastDayOfMonth',\r\n LastWeekdayOfMonth = 'lastWeekdayOfMonth',\r\n NoRepeat = 'noRepeat',\r\n Stopwatch = 'stopwatch',\r\n Weekdays = 'weekdays',\r\n Window = 'window',\r\n XDayOfXWeekOfMonth = 'xDayOfxWeekOfMonth',\r\n}\r\n\r\nexport interface Options {\r\n date?: number\r\n dayOfWeek?: number\r\n duration: Period\r\n frequency: Period\r\n weekday?: number\r\n weekdays?: number[]\r\n weekOfMonth?: number\r\n}\r\n\r\nexport interface GetNext {\r\n readonly end: number\r\n readonly isInitial?: boolean\r\n readonly options?: Options\r\n readonly start: number\r\n readonly timezone: string\r\n readonly type: StrategyTypes\r\n}\r\n\r\nexport interface Interval {\r\n readonly [index: number]: number\r\n}\r\n\r\nexport interface Period {\r\n readonly unit: Unit\r\n readonly value: number\r\n}\r\n\r\nexport interface ScheduleIntervalsGenerator {\r\n readonly end: number\r\n readonly isInitial: boolean\r\n readonly strategy: Strategy\r\n readonly serviceHours: ServiceHoursSchema\r\n readonly start: number\r\n}\r\n\r\nexport interface Strategy {\r\n readonly options: Options\r\n readonly type: StrategyTypes\r\n}\r\n"],"mappings":";;;;;;IAEYA,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAKbE,IAAI,GAAAD,OAAA,CAAAC,IAAA,0BAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;AAAA,IAWJC,aAAa,GAAAF,OAAA,CAAAE,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,67 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
import moment from 'moment-timezone';
|
|
3
|
-
import { StrategyTypes, Unit } from '../scheduling.types';
|
|
1
|
+
"use strict";
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getNext = getNext;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
var _scheduling = require("../scheduling.types");
|
|
10
|
+
/**
|
|
11
|
+
* Generates next occurrence interval for stopwatch and window strategy
|
|
7
12
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return nextOccurrence;
|
|
56
|
-
case 3:
|
|
57
|
-
dateCursor = nextOccurrenceEnd;
|
|
58
|
-
_context.next = 1;
|
|
59
|
-
break;
|
|
60
|
-
case 4:
|
|
61
|
-
case "end":
|
|
62
|
-
return _context.stop();
|
|
63
|
-
}
|
|
64
|
-
}, _callee);
|
|
65
|
-
})();
|
|
13
|
+
function* getNext({
|
|
14
|
+
end,
|
|
15
|
+
isInitial,
|
|
16
|
+
options,
|
|
17
|
+
start,
|
|
18
|
+
timezone,
|
|
19
|
+
type
|
|
20
|
+
}) {
|
|
21
|
+
const {
|
|
22
|
+
duration,
|
|
23
|
+
frequency
|
|
24
|
+
} = options;
|
|
25
|
+
const {
|
|
26
|
+
unit: durationUnit,
|
|
27
|
+
value: durationValue
|
|
28
|
+
} = duration;
|
|
29
|
+
const {
|
|
30
|
+
unit: frequencyUnit,
|
|
31
|
+
value: frequencyValue
|
|
32
|
+
} = frequency;
|
|
33
|
+
let initial = isInitial;
|
|
34
|
+
let dateCursor = initial ? _momentTimezone.default.tz(start, timezone).valueOf() : _momentTimezone.default.tz(start, timezone).add(1, _scheduling.Unit.Millisecond).valueOf();
|
|
35
|
+
while (dateCursor < end) {
|
|
36
|
+
let nextOccurrenceStart;
|
|
37
|
+
let nextOccurrenceEnd;
|
|
38
|
+
if (type === _scheduling.StrategyTypes.Stopwatch) {
|
|
39
|
+
nextOccurrenceStart = dateCursor;
|
|
40
|
+
nextOccurrenceEnd = _momentTimezone.default.tz(dateCursor, timezone).add(durationValue, durationUnit).valueOf();
|
|
41
|
+
} else {
|
|
42
|
+
nextOccurrenceEnd = _momentTimezone.default.tz(dateCursor, timezone).add(frequencyValue, frequencyUnit).valueOf();
|
|
43
|
+
const nextOccurrenceStartByBackCalculation = _momentTimezone.default.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit);
|
|
44
|
+
const earliestNextOccurrenceStart = _momentTimezone.default.tz(dateCursor, timezone);
|
|
45
|
+
|
|
46
|
+
// NOTE: this is to ensure that the next occurrence start is always
|
|
47
|
+
// greater than or equal to the date cursor. Moment js handles month addition and subtraction
|
|
48
|
+
// 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.
|
|
49
|
+
nextOccurrenceStart = _momentTimezone.default.max(earliestNextOccurrenceStart, nextOccurrenceStartByBackCalculation).valueOf();
|
|
50
|
+
}
|
|
51
|
+
if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (nextOccurrenceStart >= start) {
|
|
55
|
+
const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
56
|
+
yield nextOccurrence;
|
|
57
|
+
}
|
|
58
|
+
dateCursor = nextOccurrenceEnd;
|
|
59
|
+
}
|
|
66
60
|
}
|
|
67
61
|
//# sourceMappingURL=getNext.js.map
|