@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,84 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
-
import moment from 'moment-timezone';
|
|
6
|
-
import { Unit } from '../scheduling.types';
|
|
1
|
+
"use strict";
|
|
7
2
|
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getNextWeekday = getNextWeekday;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
var _scheduling = require("../scheduling.types");
|
|
10
|
+
/**
|
|
11
|
+
* Generates next occurrence interval for weekdays strategy
|
|
10
12
|
*/
|
|
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
|
-
weekday = _step.value;
|
|
41
|
-
nextOccurrenceEnd = moment.tz(dateCursor, timezone).isoWeekday(weekday).add(1, Unit.Day).startOf(Unit.Day).valueOf();
|
|
42
|
-
nextOccurrenceStart = moment.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
43
|
-
if (!(nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end)) {
|
|
44
|
-
_context.next = 4;
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
return _context.abrupt("return");
|
|
48
|
-
case 4:
|
|
49
|
-
if (!(nextOccurrenceStart >= start)) {
|
|
50
|
-
_context.next = 6;
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
54
|
-
_context.next = 5;
|
|
55
|
-
return nextOccurrence;
|
|
56
|
-
case 5:
|
|
57
|
-
initial = false;
|
|
58
|
-
case 6:
|
|
59
|
-
_context.next = 3;
|
|
60
|
-
break;
|
|
61
|
-
case 7:
|
|
62
|
-
_context.next = 9;
|
|
63
|
-
break;
|
|
64
|
-
case 8:
|
|
65
|
-
_context.prev = 8;
|
|
66
|
-
_t = _context["catch"](2);
|
|
67
|
-
_iterator.e(_t);
|
|
68
|
-
case 9:
|
|
69
|
-
_context.prev = 9;
|
|
70
|
-
_iterator.f();
|
|
71
|
-
return _context.finish(9);
|
|
72
|
-
case 10:
|
|
73
|
-
nextDateCursor = moment.tz(dateCursor, timezone).add(1, Unit.Week).valueOf();
|
|
74
|
-
dateCursor = nextDateCursor;
|
|
75
|
-
_context.next = 1;
|
|
76
|
-
break;
|
|
77
|
-
case 11:
|
|
78
|
-
case "end":
|
|
79
|
-
return _context.stop();
|
|
13
|
+
function* getNextWeekday({
|
|
14
|
+
end,
|
|
15
|
+
isInitial,
|
|
16
|
+
options,
|
|
17
|
+
start,
|
|
18
|
+
timezone
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
duration,
|
|
22
|
+
frequency,
|
|
23
|
+
weekdays
|
|
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).startOf(_scheduling.Unit.Week).valueOf() : _momentTimezone.default.tz(start, timezone).add(frequencyValue, frequencyUnit).startOf(_scheduling.Unit.Week).valueOf();
|
|
35
|
+
while (dateCursor < end) {
|
|
36
|
+
for (const weekday of weekdays) {
|
|
37
|
+
const nextOccurrenceEnd = _momentTimezone.default.tz(dateCursor, timezone).isoWeekday(weekday).add(1, _scheduling.Unit.Day).startOf(_scheduling.Unit.Day).valueOf();
|
|
38
|
+
const nextOccurrenceStart = _momentTimezone.default.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
39
|
+
if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {
|
|
40
|
+
return;
|
|
80
41
|
}
|
|
81
|
-
|
|
82
|
-
|
|
42
|
+
if (nextOccurrenceStart >= start) {
|
|
43
|
+
const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
44
|
+
yield nextOccurrence;
|
|
45
|
+
initial = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const nextDateCursor = _momentTimezone.default.tz(dateCursor, timezone).add(1, _scheduling.Unit.Week).valueOf();
|
|
49
|
+
dateCursor = nextDateCursor;
|
|
50
|
+
}
|
|
83
51
|
}
|
|
84
52
|
//# sourceMappingURL=getNextWeekday.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNextWeekday.js","names":["
|
|
1
|
+
{"version":3,"file":"getNextWeekday.js","names":["_momentTimezone","_interopRequireDefault","require","_scheduling","getNextWeekday","end","isInitial","options","start","timezone","duration","frequency","weekdays","unit","durationUnit","value","durationValue","frequencyUnit","frequencyValue","initial","dateCursor","moment","tz","startOf","Unit","Week","valueOf","add","weekday","nextOccurrenceEnd","isoWeekday","Day","nextOccurrenceStart","subtract","nextOccurrence","nextDateCursor"],"sources":["../../../src/scheduling/strategies/getNextWeekday.ts"],"sourcesContent":["import moment from 'moment-timezone'\r\n\r\nimport { GetNext, Interval, Unit } from '../scheduling.types'\r\n\r\n/**\r\n * Generates next occurrence interval for weekdays strategy\r\n */\r\nexport function* getNextWeekday({\r\n end,\r\n isInitial,\r\n options,\r\n start,\r\n timezone,\r\n}: GetNext): IterableIterator<Interval> {\r\n const { duration, frequency, weekdays } = options\r\n const { unit: durationUnit, value: durationValue } = duration\r\n const { unit: frequencyUnit, value: frequencyValue } = frequency\r\n\r\n let initial: boolean = isInitial\r\n\r\n let dateCursor: number = initial\r\n ? moment\r\n .tz(start, timezone)\r\n .startOf(Unit.Week)\r\n .valueOf()\r\n : moment\r\n .tz(start, timezone)\r\n .add(frequencyValue, frequencyUnit)\r\n .startOf(Unit.Week)\r\n .valueOf()\r\n\r\n while (dateCursor < end) {\r\n for (const weekday of weekdays) {\r\n const nextOccurrenceEnd: number = moment\r\n .tz(dateCursor, timezone)\r\n .isoWeekday(weekday)\r\n .add(1, Unit.Day)\r\n .startOf(Unit.Day)\r\n .valueOf()\r\n\r\n const nextOccurrenceStart: number = moment\r\n .tz(nextOccurrenceEnd, timezone)\r\n .subtract(durationValue, durationUnit)\r\n .valueOf()\r\n\r\n if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {\r\n return\r\n }\r\n\r\n if (nextOccurrenceStart >= start) {\r\n const nextOccurrence: Interval = [\r\n nextOccurrenceStart,\r\n nextOccurrenceEnd - 1,\r\n ]\r\n\r\n yield nextOccurrence\r\n\r\n initial = false\r\n }\r\n }\r\n\r\n const nextDateCursor: number = moment\r\n .tz(dateCursor, timezone)\r\n .add(1, Unit.Week)\r\n .valueOf()\r\n\r\n dateCursor = nextDateCursor\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACO,UAAUE,cAAcA,CAAC;EAC9BC,GAAG;EACHC,SAAS;EACTC,OAAO;EACPC,KAAK;EACLC;AACO,CAAC,EAA8B;EACtC,MAAM;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAS,CAAC,GAAGL,OAAO;EACjD,MAAM;IAAEM,IAAI,EAAEC,YAAY;IAAEC,KAAK,EAAEC;EAAc,CAAC,GAAGN,QAAQ;EAC7D,MAAM;IAAEG,IAAI,EAAEI,aAAa;IAAEF,KAAK,EAAEG;EAAe,CAAC,GAAGP,SAAS;EAEhE,IAAIQ,OAAgB,GAAGb,SAAS;EAEhC,IAAIc,UAAkB,GAAGD,OAAO,GAC5BE,uBAAM,CACHC,EAAE,CAACd,KAAK,EAAEC,QAAQ,CAAC,CACnBc,OAAO,CAACC,gBAAI,CAACC,IAAI,CAAC,CAClBC,OAAO,CAAC,CAAC,GACZL,uBAAM,CACHC,EAAE,CAACd,KAAK,EAAEC,QAAQ,CAAC,CACnBkB,GAAG,CAACT,cAAc,EAAED,aAAa,CAAC,CAClCM,OAAO,CAACC,gBAAI,CAACC,IAAI,CAAC,CAClBC,OAAO,CAAC,CAAC;EAEhB,OAAON,UAAU,GAAGf,GAAG,EAAE;IACvB,KAAK,MAAMuB,OAAO,IAAIhB,QAAQ,EAAE;MAC9B,MAAMiB,iBAAyB,GAAGR,uBAAM,CACrCC,EAAE,CAACF,UAAU,EAAEX,QAAQ,CAAC,CACxBqB,UAAU,CAACF,OAAO,CAAC,CACnBD,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACO,GAAG,CAAC,CAChBR,OAAO,CAACC,gBAAI,CAACO,GAAG,CAAC,CACjBL,OAAO,CAAC,CAAC;MAEZ,MAAMM,mBAA2B,GAAGX,uBAAM,CACvCC,EAAE,CAACO,iBAAiB,EAAEpB,QAAQ,CAAC,CAC/BwB,QAAQ,CAACjB,aAAa,EAAEF,YAAY,CAAC,CACrCY,OAAO,CAAC,CAAC;MAEZ,IAAIG,iBAAiB,IAAIG,mBAAmB,IAAIH,iBAAiB,GAAGxB,GAAG,EAAE;QACvE;MACF;MAEA,IAAI2B,mBAAmB,IAAIxB,KAAK,EAAE;QAChC,MAAM0B,cAAwB,GAAG,CAC/BF,mBAAmB,EACnBH,iBAAiB,GAAG,CAAC,CACtB;QAED,MAAMK,cAAc;QAEpBf,OAAO,GAAG,KAAK;MACjB;IACF;IAEA,MAAMgB,cAAsB,GAAGd,uBAAM,CAClCC,EAAE,CAACF,UAAU,EAAEX,QAAQ,CAAC,CACxBkB,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACC,IAAI,CAAC,CACjBC,OAAO,CAAC,CAAC;IAEZN,UAAU,GAAGe,cAAc;EAC7B;AACF","ignoreList":[]}
|
|
@@ -1,62 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
import moment from 'moment-timezone';
|
|
3
|
-
import { 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.getNextXDayOfXWeekOfMonth = getNextXDayOfXWeekOfMonth;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
var _scheduling = require("../scheduling.types");
|
|
10
|
+
/**
|
|
11
|
+
* Generates next occurrence interval for x day of x week of month 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
|
-
case 3:
|
|
51
|
-
nextDateCursor = moment.tz(dateCursor, timezone).add(1, Unit.Month).valueOf();
|
|
52
|
-
dateCursor = nextDateCursor;
|
|
53
|
-
_context.next = 1;
|
|
54
|
-
break;
|
|
55
|
-
case 4:
|
|
56
|
-
case "end":
|
|
57
|
-
return _context.stop();
|
|
58
|
-
}
|
|
59
|
-
}, _callee);
|
|
60
|
-
})();
|
|
13
|
+
function* getNextXDayOfXWeekOfMonth({
|
|
14
|
+
end,
|
|
15
|
+
isInitial,
|
|
16
|
+
options,
|
|
17
|
+
start,
|
|
18
|
+
timezone
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
dayOfWeek,
|
|
22
|
+
duration,
|
|
23
|
+
frequency,
|
|
24
|
+
weekOfMonth
|
|
25
|
+
} = options;
|
|
26
|
+
const {
|
|
27
|
+
unit: durationUnit,
|
|
28
|
+
value: durationValue
|
|
29
|
+
} = duration;
|
|
30
|
+
const {
|
|
31
|
+
unit: frequencyUnit,
|
|
32
|
+
value: frequencyValue
|
|
33
|
+
} = frequency;
|
|
34
|
+
let dateCursor = isInitial ? _momentTimezone.default.tz(start, timezone).startOf(_scheduling.Unit.Month).valueOf() : _momentTimezone.default.tz(start, timezone).add(frequencyValue, frequencyUnit).startOf(_scheduling.Unit.Month).valueOf();
|
|
35
|
+
while (dateCursor < end) {
|
|
36
|
+
const mStartOfMonth = _momentTimezone.default.tz(dateCursor, timezone);
|
|
37
|
+
const year = mStartOfMonth.year();
|
|
38
|
+
const month = mStartOfMonth.month();
|
|
39
|
+
const startDayOfMonth = mStartOfMonth.isoWeekday();
|
|
40
|
+
const weekOffset = (weekOfMonth - 1) * 7;
|
|
41
|
+
const day = startDayOfMonth > dayOfWeek ? dayOfWeek - startDayOfMonth + 8 : dayOfWeek - startDayOfMonth + 1;
|
|
42
|
+
const date = weekOffset + day;
|
|
43
|
+
const nextOccurrenceEnd = _momentTimezone.default.tz(timezone).year(year).month(month).date(date).add(1, _scheduling.Unit.Day).startOf(_scheduling.Unit.Day).valueOf();
|
|
44
|
+
const nextOccurrenceStart = _momentTimezone.default.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
45
|
+
if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (nextOccurrenceStart >= start) {
|
|
49
|
+
const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
50
|
+
yield nextOccurrence;
|
|
51
|
+
}
|
|
52
|
+
const nextDateCursor = _momentTimezone.default.tz(dateCursor, timezone).add(1, _scheduling.Unit.Month).valueOf();
|
|
53
|
+
dateCursor = nextDateCursor;
|
|
54
|
+
}
|
|
61
55
|
}
|
|
62
56
|
//# sourceMappingURL=getNextXDayOfXWeekOfMonth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNextXDayOfXWeekOfMonth.js","names":["
|
|
1
|
+
{"version":3,"file":"getNextXDayOfXWeekOfMonth.js","names":["_momentTimezone","_interopRequireDefault","require","_scheduling","getNextXDayOfXWeekOfMonth","end","isInitial","options","start","timezone","dayOfWeek","duration","frequency","weekOfMonth","unit","durationUnit","value","durationValue","frequencyUnit","frequencyValue","dateCursor","moment","tz","startOf","Unit","Month","valueOf","add","mStartOfMonth","year","month","startDayOfMonth","isoWeekday","weekOffset","day","date","nextOccurrenceEnd","Day","nextOccurrenceStart","subtract","nextOccurrence","nextDateCursor"],"sources":["../../../src/scheduling/strategies/getNextXDayOfXWeekOfMonth.ts"],"sourcesContent":["import moment from 'moment-timezone'\r\n\r\nimport { GetNext, Interval, Unit } from '../scheduling.types'\r\n\r\n/**\r\n * Generates next occurrence interval for x day of x week of month strategy\r\n */\r\nexport function* getNextXDayOfXWeekOfMonth({\r\n end,\r\n isInitial,\r\n options,\r\n start,\r\n timezone,\r\n}: GetNext): IterableIterator<Interval> {\r\n const { dayOfWeek, duration, frequency, weekOfMonth } = options\r\n const { unit: durationUnit, value: durationValue } = duration\r\n const { unit: frequencyUnit, value: frequencyValue } = frequency\r\n\r\n let dateCursor: number = isInitial\r\n ? moment\r\n .tz(start, timezone)\r\n .startOf(Unit.Month)\r\n .valueOf()\r\n : moment\r\n .tz(start, timezone)\r\n .add(frequencyValue, frequencyUnit)\r\n .startOf(Unit.Month)\r\n .valueOf()\r\n\r\n while (dateCursor < end) {\r\n const mStartOfMonth = moment.tz(dateCursor, timezone)\r\n const year: number = mStartOfMonth.year()\r\n const month: number = mStartOfMonth.month()\r\n const startDayOfMonth: number = mStartOfMonth.isoWeekday()\r\n\r\n const weekOffset: number = (weekOfMonth - 1) * 7\r\n const day: number =\r\n startDayOfMonth > dayOfWeek\r\n ? dayOfWeek - startDayOfMonth + 8\r\n : dayOfWeek - startDayOfMonth + 1\r\n const date: number = weekOffset + day\r\n\r\n const nextOccurrenceEnd: number = moment\r\n .tz(timezone)\r\n .year(year)\r\n .month(month)\r\n .date(date)\r\n .add(1, Unit.Day)\r\n .startOf(Unit.Day)\r\n .valueOf()\r\n\r\n const nextOccurrenceStart: number = moment\r\n .tz(nextOccurrenceEnd, timezone)\r\n .subtract(durationValue, durationUnit)\r\n .valueOf()\r\n\r\n if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {\r\n return\r\n }\r\n\r\n if (nextOccurrenceStart >= start) {\r\n const nextOccurrence: Interval = [\r\n nextOccurrenceStart,\r\n nextOccurrenceEnd - 1,\r\n ]\r\n\r\n yield nextOccurrence\r\n }\r\n\r\n const nextDateCursor: number = moment\r\n .tz(dateCursor, timezone)\r\n .add(1, Unit.Month)\r\n .valueOf()\r\n\r\n dateCursor = nextDateCursor\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACO,UAAUE,yBAAyBA,CAAC;EACzCC,GAAG;EACHC,SAAS;EACTC,OAAO;EACPC,KAAK;EACLC;AACO,CAAC,EAA8B;EACtC,MAAM;IAAEC,SAAS;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAY,CAAC,GAAGN,OAAO;EAC/D,MAAM;IAAEO,IAAI,EAAEC,YAAY;IAAEC,KAAK,EAAEC;EAAc,CAAC,GAAGN,QAAQ;EAC7D,MAAM;IAAEG,IAAI,EAAEI,aAAa;IAAEF,KAAK,EAAEG;EAAe,CAAC,GAAGP,SAAS;EAEhE,IAAIQ,UAAkB,GAAGd,SAAS,GAC9Be,uBAAM,CACHC,EAAE,CAACd,KAAK,EAAEC,QAAQ,CAAC,CACnBc,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC,GACZL,uBAAM,CACHC,EAAE,CAACd,KAAK,EAAEC,QAAQ,CAAC,CACnBkB,GAAG,CAACR,cAAc,EAAED,aAAa,CAAC,CAClCK,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC;EAEhB,OAAON,UAAU,GAAGf,GAAG,EAAE;IACvB,MAAMuB,aAAa,GAAGP,uBAAM,CAACC,EAAE,CAACF,UAAU,EAAEX,QAAQ,CAAC;IACrD,MAAMoB,IAAY,GAAGD,aAAa,CAACC,IAAI,CAAC,CAAC;IACzC,MAAMC,KAAa,GAAGF,aAAa,CAACE,KAAK,CAAC,CAAC;IAC3C,MAAMC,eAAuB,GAAGH,aAAa,CAACI,UAAU,CAAC,CAAC;IAE1D,MAAMC,UAAkB,GAAG,CAACpB,WAAW,GAAG,CAAC,IAAI,CAAC;IAChD,MAAMqB,GAAW,GACfH,eAAe,GAAGrB,SAAS,GACvBA,SAAS,GAAGqB,eAAe,GAAG,CAAC,GAC/BrB,SAAS,GAAGqB,eAAe,GAAG,CAAC;IACrC,MAAMI,IAAY,GAAGF,UAAU,GAAGC,GAAG;IAErC,MAAME,iBAAyB,GAAGf,uBAAM,CACrCC,EAAE,CAACb,QAAQ,CAAC,CACZoB,IAAI,CAACA,IAAI,CAAC,CACVC,KAAK,CAACA,KAAK,CAAC,CACZK,IAAI,CAACA,IAAI,CAAC,CACVR,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACa,GAAG,CAAC,CAChBd,OAAO,CAACC,gBAAI,CAACa,GAAG,CAAC,CACjBX,OAAO,CAAC,CAAC;IAEZ,MAAMY,mBAA2B,GAAGjB,uBAAM,CACvCC,EAAE,CAACc,iBAAiB,EAAE3B,QAAQ,CAAC,CAC/B8B,QAAQ,CAACtB,aAAa,EAAEF,YAAY,CAAC,CACrCW,OAAO,CAAC,CAAC;IAEZ,IAAIU,iBAAiB,IAAIE,mBAAmB,IAAIF,iBAAiB,GAAG/B,GAAG,EAAE;MACvE;IACF;IAEA,IAAIiC,mBAAmB,IAAI9B,KAAK,EAAE;MAChC,MAAMgC,cAAwB,GAAG,CAC/BF,mBAAmB,EACnBF,iBAAiB,GAAG,CAAC,CACtB;MAED,MAAMI,cAAc;IACtB;IAEA,MAAMC,cAAsB,GAAGpB,uBAAM,CAClCC,EAAE,CAACF,UAAU,EAAEX,QAAQ,CAAC,CACxBkB,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACC,KAAK,CAAC,CAClBC,OAAO,CAAC,CAAC;IAEZN,UAAU,GAAGqB,cAAc;EAC7B;AACF","ignoreList":[]}
|
|
@@ -1,8 +1,83 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _getNext = require("./getNext");
|
|
7
|
+
Object.keys(_getNext).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _getNext[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _getNext[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _getNextExactDateOfMonth = require("./getNextExactDateOfMonth");
|
|
18
|
+
Object.keys(_getNextExactDateOfMonth).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _getNextExactDateOfMonth[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _getNextExactDateOfMonth[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _getNextLastDayOfMonth = require("./getNextLastDayOfMonth");
|
|
29
|
+
Object.keys(_getNextLastDayOfMonth).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _getNextLastDayOfMonth[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _getNextLastDayOfMonth[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
var _getNextLastWeekdayOfMonth = require("./getNextLastWeekdayOfMonth");
|
|
40
|
+
Object.keys(_getNextLastWeekdayOfMonth).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _getNextLastWeekdayOfMonth[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _getNextLastWeekdayOfMonth[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
var _getNextNoRepeat = require("./getNextNoRepeat");
|
|
51
|
+
Object.keys(_getNextNoRepeat).forEach(function (key) {
|
|
52
|
+
if (key === "default" || key === "__esModule") return;
|
|
53
|
+
if (key in exports && exports[key] === _getNextNoRepeat[key]) return;
|
|
54
|
+
Object.defineProperty(exports, key, {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _getNextNoRepeat[key];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
var _getNextWeekday = require("./getNextWeekday");
|
|
62
|
+
Object.keys(_getNextWeekday).forEach(function (key) {
|
|
63
|
+
if (key === "default" || key === "__esModule") return;
|
|
64
|
+
if (key in exports && exports[key] === _getNextWeekday[key]) return;
|
|
65
|
+
Object.defineProperty(exports, key, {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function () {
|
|
68
|
+
return _getNextWeekday[key];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
var _getNextXDayOfXWeekOfMonth = require("./getNextXDayOfXWeekOfMonth");
|
|
73
|
+
Object.keys(_getNextXDayOfXWeekOfMonth).forEach(function (key) {
|
|
74
|
+
if (key === "default" || key === "__esModule") return;
|
|
75
|
+
if (key in exports && exports[key] === _getNextXDayOfXWeekOfMonth[key]) return;
|
|
76
|
+
Object.defineProperty(exports, key, {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function () {
|
|
79
|
+
return _getNextXDayOfXWeekOfMonth[key];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
8
83
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/scheduling/strategies/index.ts"],"sourcesContent":["export * from './getNext'\nexport * from './getNextExactDateOfMonth'\nexport * from './getNextLastDayOfMonth'\nexport * from './getNextLastWeekdayOfMonth'\nexport * from './getNextNoRepeat'\nexport * from './getNextWeekday'\nexport * from './getNextXDayOfXWeekOfMonth'\n"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_getNext","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_getNextExactDateOfMonth","_getNextLastDayOfMonth","_getNextLastWeekdayOfMonth","_getNextNoRepeat","_getNextWeekday","_getNextXDayOfXWeekOfMonth"],"sources":["../../../src/scheduling/strategies/index.ts"],"sourcesContent":["export * from './getNext'\r\nexport * from './getNextExactDateOfMonth'\r\nexport * from './getNextLastDayOfMonth'\r\nexport * from './getNextLastWeekdayOfMonth'\r\nexport * from './getNextNoRepeat'\r\nexport * from './getNextWeekday'\r\nexport * from './getNextXDayOfXWeekOfMonth'\r\n"],"mappings":"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","ignoreList":[]}
|
package/lib/schema/index.js
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _schema = require("./schema");
|
|
7
|
+
Object.keys(_schema).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _schema[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _schema[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
2
17
|
//# sourceMappingURL=index.js.map
|
package/lib/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/schema/index.ts"],"sourcesContent":["export * from './schema'\n"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_schema","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../../src/schema/index.ts"],"sourcesContent":["export * from './schema'\r\n"],"mappings":";;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
package/lib/schema/schema.js
CHANGED
|
@@ -1,39 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ValidationError", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _errors.ValidationError;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.default = void 0;
|
|
13
|
+
exports.validate = validate;
|
|
14
|
+
var _errors = require("../errors");
|
|
15
|
+
const defaultValidateOptions = {
|
|
6
16
|
strict: true,
|
|
7
17
|
stripUnknown: true
|
|
8
18
|
};
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
async function validate({
|
|
20
|
+
schema,
|
|
21
|
+
data,
|
|
22
|
+
options = defaultValidateOptions
|
|
23
|
+
}) {
|
|
24
|
+
try {
|
|
25
|
+
return await schema.validate(data, options);
|
|
26
|
+
} catch (err) {
|
|
27
|
+
throw new _errors.ValidationError({
|
|
28
|
+
data: err
|
|
29
|
+
});
|
|
30
|
+
}
|
|
11
31
|
}
|
|
12
|
-
|
|
13
|
-
_validate = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
14
|
-
var schema, data, _ref$options, options, _t;
|
|
15
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
16
|
-
while (1) switch (_context.prev = _context.next) {
|
|
17
|
-
case 0:
|
|
18
|
-
schema = _ref.schema, data = _ref.data, _ref$options = _ref.options, options = _ref$options === void 0 ? defaultValidateOptions : _ref$options;
|
|
19
|
-
_context.prev = 1;
|
|
20
|
-
_context.next = 2;
|
|
21
|
-
return schema.validate(data, options);
|
|
22
|
-
case 2:
|
|
23
|
-
return _context.abrupt("return", _context.sent);
|
|
24
|
-
case 3:
|
|
25
|
-
_context.prev = 3;
|
|
26
|
-
_t = _context["catch"](1);
|
|
27
|
-
throw new ValidationError({
|
|
28
|
-
data: _t
|
|
29
|
-
});
|
|
30
|
-
case 4:
|
|
31
|
-
case "end":
|
|
32
|
-
return _context.stop();
|
|
33
|
-
}
|
|
34
|
-
}, _callee, null, [[1, 3]]);
|
|
35
|
-
}));
|
|
36
|
-
return _validate.apply(this, arguments);
|
|
37
|
-
}
|
|
38
|
-
export default validate;
|
|
32
|
+
var _default = exports.default = validate;
|
|
39
33
|
//# sourceMappingURL=schema.js.map
|
package/lib/schema/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":["
|
|
1
|
+
{"version":3,"file":"schema.js","names":["_errors","require","defaultValidateOptions","strict","stripUnknown","validate","schema","data","options","err","ValidationError","_default","exports","default"],"sources":["../../src/schema/schema.ts"],"sourcesContent":["import { Schema, ValidateOptions } from 'yup'\r\nimport { ValidationError } from '../errors'\r\n\r\nexport { ValidationError }\r\n\r\ninterface Validate {\r\n data: object\r\n options?: ValidateOptions\r\n schema: Schema<any>\r\n}\r\n\r\nconst defaultValidateOptions = {\r\n strict: true,\r\n stripUnknown: true,\r\n}\r\n\r\nexport async function validate({\r\n schema,\r\n data,\r\n options = defaultValidateOptions,\r\n}: Validate) {\r\n try {\r\n return await schema.validate(data, options)\r\n } catch (err) {\r\n throw new ValidationError({\r\n data: err,\r\n })\r\n }\r\n}\r\n\r\nexport default validate\r\n"],"mappings":";;;;;;;;;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAUA,MAAMC,sBAAsB,GAAG;EAC7BC,MAAM,EAAE,IAAI;EACZC,YAAY,EAAE;AAChB,CAAC;AAEM,eAAeC,QAAQA,CAAC;EAC7BC,MAAM;EACNC,IAAI;EACJC,OAAO,GAAGN;AACF,CAAC,EAAE;EACX,IAAI;IACF,OAAO,MAAMI,MAAM,CAACD,QAAQ,CAACE,IAAI,EAAEC,OAAO,CAAC;EAC7C,CAAC,CAAC,OAAOC,GAAG,EAAE;IACZ,MAAM,IAAIC,uBAAe,CAAC;MACxBH,IAAI,EAAEE;IACR,CAAC,CAAC;EACJ;AACF;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,QAAQ","ignoreList":[]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Script to generate service hour definitions which is otherwise tedious to
|
|
5
|
+
* calculate as we store them in millisecond offsets
|
|
6
|
+
* Example Input: TUE 08:00 - TUE 17:00
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
const days = {
|
|
8
10
|
MON: 0,
|
|
9
11
|
TUE: 1,
|
|
10
12
|
WED: 2,
|
|
@@ -15,50 +17,50 @@ var days = {
|
|
|
15
17
|
MON2: 7,
|
|
16
18
|
TUE2: 8
|
|
17
19
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const MINUTES = 60000;
|
|
21
|
+
const HOURS = 60 * MINUTES;
|
|
22
|
+
const DAYS = 24 * HOURS;
|
|
23
|
+
const input = process.argv[2];
|
|
22
24
|
if (!input) {
|
|
23
25
|
throw new Error('invalid input');
|
|
24
26
|
}
|
|
25
|
-
|
|
27
|
+
const parts = input.split(' - ');
|
|
26
28
|
if (parts.length < 2) {
|
|
27
29
|
throw new Error('invalid input');
|
|
28
30
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
const startOffset = parse(parts[0]);
|
|
32
|
+
const endOffset = parse(parts[1]);
|
|
33
|
+
const duration = endOffset - startOffset;
|
|
34
|
+
const output = {
|
|
33
35
|
type: 'DEFAULT',
|
|
34
36
|
start: startOffset,
|
|
35
37
|
end: endOffset,
|
|
36
|
-
duration
|
|
38
|
+
duration,
|
|
37
39
|
description: input
|
|
38
40
|
};
|
|
39
41
|
console.dir(output, {
|
|
40
42
|
depth: null
|
|
41
43
|
});
|
|
42
44
|
function parse(def) {
|
|
43
|
-
|
|
45
|
+
const parts = def.split(' ');
|
|
44
46
|
if (parts.length < 2) {
|
|
45
47
|
throw new Error('invalid parts');
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
const day = days[parts[0]];
|
|
50
|
+
const time = parts[1];
|
|
49
51
|
if (day === undefined || day === null || !time) {
|
|
50
52
|
throw new Error('invalid date/time');
|
|
51
53
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
const timeParts = time.split(':');
|
|
55
|
+
const hour = timeParts[0];
|
|
56
|
+
const minute = timeParts[1];
|
|
55
57
|
if (!hour || !minute) {
|
|
56
58
|
throw new Error('invalid end time');
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
// NOTE this isn't taking into account actual end of time if you target the
|
|
60
62
|
// end of a minute, e.g. 23:59
|
|
61
|
-
|
|
63
|
+
const offset = day * DAYS + hour * HOURS + minute * MINUTES;
|
|
62
64
|
return offset;
|
|
63
65
|
}
|
|
64
66
|
//# sourceMappingURL=calculate-hours.js.map
|