@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNext.js","names":["
|
|
1
|
+
{"version":3,"file":"getNext.js","names":["_momentTimezone","_interopRequireDefault","require","_scheduling","getNext","end","isInitial","options","start","timezone","type","duration","frequency","unit","durationUnit","value","durationValue","frequencyUnit","frequencyValue","initial","dateCursor","moment","tz","valueOf","add","Unit","Millisecond","nextOccurrenceStart","nextOccurrenceEnd","StrategyTypes","Stopwatch","nextOccurrenceStartByBackCalculation","subtract","earliestNextOccurrenceStart","max","nextOccurrence"],"sources":["../../../src/scheduling/strategies/getNext.ts"],"sourcesContent":["import moment from 'moment-timezone'\r\n\r\nimport { GetNext, Interval, StrategyTypes, Unit } from '../scheduling.types'\r\n\r\n/**\r\n * Generates next occurrence interval for stopwatch and window strategy\r\n */\r\nexport function* getNext({\r\n end,\r\n isInitial,\r\n options,\r\n start,\r\n timezone,\r\n type,\r\n}: GetNext): IterableIterator<Interval> {\r\n const { duration, frequency } = 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.tz(start, timezone).valueOf()\r\n : moment\r\n .tz(start, timezone)\r\n .add(1, Unit.Millisecond)\r\n .valueOf()\r\n\r\n while (dateCursor < end) {\r\n let nextOccurrenceStart: number\r\n let nextOccurrenceEnd: number\r\n\r\n if (type === StrategyTypes.Stopwatch) {\r\n nextOccurrenceStart = dateCursor\r\n nextOccurrenceEnd = moment\r\n .tz(dateCursor, timezone)\r\n .add(durationValue, durationUnit)\r\n .valueOf()\r\n\r\n } else {\r\n nextOccurrenceEnd = moment\r\n .tz(dateCursor, timezone)\r\n .add(frequencyValue, frequencyUnit)\r\n .valueOf()\r\n\r\n const nextOccurrenceStartByBackCalculation = moment\r\n .tz(nextOccurrenceEnd, timezone)\r\n .subtract(durationValue, durationUnit)\r\n\r\n const earliestNextOccurrenceStart = moment\r\n .tz(dateCursor, timezone)\r\n\r\n // NOTE: this is to ensure that the next occurrence start is always\r\n // greater than or equal to the date cursor. Moment js handles month addition and subtraction\r\n // with estimations (Dec 31st + 2 months gives Feb 28th/29th). This can lead to inaccurate start times when calculating forwards then backwards at the end of the month.\r\n nextOccurrenceStart =\r\n moment.max(\r\n earliestNextOccurrenceStart,\r\n nextOccurrenceStartByBackCalculation\r\n ).valueOf()\r\n }\r\n\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 = [nextOccurrenceStart, nextOccurrenceEnd - 1]\r\n\r\n yield nextOccurrence\r\n }\r\n\r\n dateCursor = nextOccurrenceEnd\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACO,UAAUE,OAAOA,CAAC;EACvBC,GAAG;EACHC,SAAS;EACTC,OAAO;EACPC,KAAK;EACLC,QAAQ;EACRC;AACO,CAAC,EAA8B;EACtC,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGL,OAAO;EACvC,MAAM;IAAEM,IAAI,EAAEC,YAAY;IAAEC,KAAK,EAAEC;EAAc,CAAC,GAAGL,QAAQ;EAC7D,MAAM;IAAEE,IAAI,EAAEI,aAAa;IAAEF,KAAK,EAAEG;EAAe,CAAC,GAAGN,SAAS;EAEhE,IAAIO,OAAgB,GAAGb,SAAS;EAEhC,IAAIc,UAAkB,GAAGD,OAAO,GAC5BE,uBAAM,CAACC,EAAE,CAACd,KAAK,EAAEC,QAAQ,CAAC,CAACc,OAAO,CAAC,CAAC,GACpCF,uBAAM,CACHC,EAAE,CAACd,KAAK,EAAEC,QAAQ,CAAC,CACnBe,GAAG,CAAC,CAAC,EAAEC,gBAAI,CAACC,WAAW,CAAC,CACxBH,OAAO,CAAC,CAAC;EAEhB,OAAOH,UAAU,GAAGf,GAAG,EAAE;IACvB,IAAIsB,mBAA2B;IAC/B,IAAIC,iBAAyB;IAE7B,IAAIlB,IAAI,KAAKmB,yBAAa,CAACC,SAAS,EAAE;MACpCH,mBAAmB,GAAGP,UAAU;MAChCQ,iBAAiB,GAAGP,uBAAM,CACvBC,EAAE,CAACF,UAAU,EAAEX,QAAQ,CAAC,CACxBe,GAAG,CAACR,aAAa,EAAEF,YAAY,CAAC,CAChCS,OAAO,CAAC,CAAC;IAEd,CAAC,MAAM;MACLK,iBAAiB,GAAGP,uBAAM,CACvBC,EAAE,CAACF,UAAU,EAAEX,QAAQ,CAAC,CACxBe,GAAG,CAACN,cAAc,EAAED,aAAa,CAAC,CAClCM,OAAO,CAAC,CAAC;MAEZ,MAAMQ,oCAAoC,GAAGV,uBAAM,CAChDC,EAAE,CAACM,iBAAiB,EAAEnB,QAAQ,CAAC,CAC/BuB,QAAQ,CAAChB,aAAa,EAAEF,YAAY,CAAC;MAExC,MAAMmB,2BAA2B,GAAGZ,uBAAM,CACvCC,EAAE,CAACF,UAAU,EAAEX,QAAQ,CAAC;;MAEzB;MACA;MACA;MACFkB,mBAAmB,GACjBN,uBAAM,CAACa,GAAG,CACVD,2BAA2B,EAC3BF,oCACF,CAAC,CAACR,OAAO,CAAC,CAAC;IACb;IAGA,IAAIK,iBAAiB,IAAID,mBAAmB,IAAIC,iBAAiB,GAAGvB,GAAG,EAAE;MACvE;IACF;IAEA,IAAIsB,mBAAmB,IAAInB,KAAK,EAAE;MAChC,MAAM2B,cAAc,GAAG,CAACR,mBAAmB,EAAEC,iBAAiB,GAAG,CAAC,CAAC;MAEnE,MAAMO,cAAc;IACtB;IAEAf,UAAU,GAAGQ,iBAAiB;EAChC;AACF","ignoreList":[]}
|
|
@@ -1,61 +1,52 @@
|
|
|
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.getNextExactDateOfMonth = getNextExactDateOfMonth;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
var _scheduling = require("../scheduling.types");
|
|
10
|
+
/**
|
|
11
|
+
* Generates next occurrence interval for exact date 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
|
-
_context.next = 2;
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
return _context.abrupt("return");
|
|
41
|
-
case 2:
|
|
42
|
-
if (!(nextOccurrenceStart >= start)) {
|
|
43
|
-
_context.next = 3;
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
47
|
-
_context.next = 3;
|
|
48
|
-
return nextOccurrence;
|
|
49
|
-
case 3:
|
|
50
|
-
nextDateCursor = moment.tz(dateCursor, timezone).add(1, Unit.Month).valueOf();
|
|
51
|
-
dateCursor = nextDateCursor;
|
|
52
|
-
_context.next = 1;
|
|
53
|
-
break;
|
|
54
|
-
case 4:
|
|
55
|
-
case "end":
|
|
56
|
-
return _context.stop();
|
|
13
|
+
function* getNextExactDateOfMonth({
|
|
14
|
+
end,
|
|
15
|
+
isInitial,
|
|
16
|
+
options,
|
|
17
|
+
start,
|
|
18
|
+
timezone
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
date,
|
|
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 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();
|
|
34
|
+
while (dateCursor < end) {
|
|
35
|
+
const monthDate = _momentTimezone.default.tz(dateCursor, timezone).date(date).date();
|
|
36
|
+
const hasExactDate = monthDate === date;
|
|
37
|
+
if (hasExactDate) {
|
|
38
|
+
const nextOccurrenceEnd = _momentTimezone.default.tz(dateCursor, timezone).date(date).add(1, _scheduling.Unit.Day).valueOf();
|
|
39
|
+
const nextOccurrenceStart = _momentTimezone.default.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
40
|
+
if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {
|
|
41
|
+
return;
|
|
57
42
|
}
|
|
58
|
-
|
|
59
|
-
|
|
43
|
+
if (nextOccurrenceStart >= start) {
|
|
44
|
+
const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
45
|
+
yield nextOccurrence;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const nextDateCursor = _momentTimezone.default.tz(dateCursor, timezone).add(1, _scheduling.Unit.Month).valueOf();
|
|
49
|
+
dateCursor = nextDateCursor;
|
|
50
|
+
}
|
|
60
51
|
}
|
|
61
52
|
//# sourceMappingURL=getNextExactDateOfMonth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNextExactDateOfMonth.js","names":["
|
|
1
|
+
{"version":3,"file":"getNextExactDateOfMonth.js","names":["_momentTimezone","_interopRequireDefault","require","_scheduling","getNextExactDateOfMonth","end","isInitial","options","start","timezone","date","duration","frequency","unit","durationUnit","value","durationValue","frequencyUnit","frequencyValue","dateCursor","moment","tz","startOf","Unit","Month","valueOf","add","monthDate","hasExactDate","nextOccurrenceEnd","Day","nextOccurrenceStart","subtract","nextOccurrence","nextDateCursor"],"sources":["../../../src/scheduling/strategies/getNextExactDateOfMonth.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 exact date of month strategy\r\n */\r\nexport function* getNextExactDateOfMonth({\r\n end,\r\n isInitial,\r\n options,\r\n start,\r\n timezone,\r\n}: GetNext): IterableIterator<Interval> {\r\n const { date, duration, frequency } = 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 monthDate = moment\r\n .tz(dateCursor, timezone)\r\n .date(date)\r\n .date()\r\n\r\n const hasExactDate = monthDate === date\r\n\r\n if (hasExactDate) {\r\n const nextOccurrenceEnd: number = moment\r\n .tz(dateCursor, timezone)\r\n .date(date)\r\n .add(1, 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\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,uBAAuBA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC,OAAO;EACPC,KAAK;EACLC;AACO,CAAC,EAA8B;EACtC,MAAM;IAAEC,IAAI;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGL,OAAO;EAC7C,MAAM;IAAEM,IAAI,EAAEC,YAAY;IAAEC,KAAK,EAAEC;EAAc,CAAC,GAAGL,QAAQ;EAC7D,MAAM;IAAEE,IAAI,EAAEI,aAAa;IAAEF,KAAK,EAAEG;EAAe,CAAC,GAAGN,SAAS;EAEhE,IAAIO,UAAkB,GAAGb,SAAS,GAC9Bc,uBAAM,CACHC,EAAE,CAACb,KAAK,EAAEC,QAAQ,CAAC,CACnBa,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC,GACZL,uBAAM,CACHC,EAAE,CAACb,KAAK,EAAEC,QAAQ,CAAC,CACnBiB,GAAG,CAACR,cAAc,EAAED,aAAa,CAAC,CAClCK,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC;EAEhB,OAAON,UAAU,GAAGd,GAAG,EAAE;IACvB,MAAMsB,SAAS,GAAGP,uBAAM,CACrBC,EAAE,CAACF,UAAU,EAAEV,QAAQ,CAAC,CACxBC,IAAI,CAACA,IAAI,CAAC,CACVA,IAAI,CAAC,CAAC;IAET,MAAMkB,YAAY,GAAGD,SAAS,KAAKjB,IAAI;IAEvC,IAAIkB,YAAY,EAAE;MAChB,MAAMC,iBAAyB,GAAGT,uBAAM,CACrCC,EAAE,CAACF,UAAU,EAAEV,QAAQ,CAAC,CACxBC,IAAI,CAACA,IAAI,CAAC,CACVgB,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACO,GAAG,CAAC,CAChBL,OAAO,CAAC,CAAC;MAEZ,MAAMM,mBAA2B,GAAGX,uBAAM,CACvCC,EAAE,CAACQ,iBAAiB,EAAEpB,QAAQ,CAAC,CAC/BuB,QAAQ,CAAChB,aAAa,EAAEF,YAAY,CAAC,CACrCW,OAAO,CAAC,CAAC;MAEZ,IAAII,iBAAiB,IAAIE,mBAAmB,IAAIF,iBAAiB,GAAGxB,GAAG,EAAE;QACvE;MACF;MAEA,IAAI0B,mBAAmB,IAAIvB,KAAK,EAAE;QAChC,MAAMyB,cAAwB,GAAG,CAC/BF,mBAAmB,EACnBF,iBAAiB,GAAG,CAAC,CACtB;QAED,MAAMI,cAAc;MACtB;IACF;IAEA,MAAMC,cAAsB,GAAGd,uBAAM,CAClCC,EAAE,CAACF,UAAU,EAAEV,QAAQ,CAAC,CACxBiB,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACC,KAAK,CAAC,CAClBC,OAAO,CAAC,CAAC;IAEZN,UAAU,GAAGe,cAAc;EAC7B;AACF","ignoreList":[]}
|
|
@@ -1,55 +1,47 @@
|
|
|
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.getNextLastDayOfMonth = getNextLastDayOfMonth;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
var _scheduling = require("../scheduling.types");
|
|
10
|
+
/**
|
|
11
|
+
* Generates next occurrence interval for last day 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
|
-
_context.next = 3;
|
|
42
|
-
return nextOccurrence;
|
|
43
|
-
case 3:
|
|
44
|
-
nextDateCursor = moment.tz(dateCursor, timezone).add(1, Unit.Month).valueOf();
|
|
45
|
-
dateCursor = nextDateCursor;
|
|
46
|
-
_context.next = 1;
|
|
47
|
-
break;
|
|
48
|
-
case 4:
|
|
49
|
-
case "end":
|
|
50
|
-
return _context.stop();
|
|
51
|
-
}
|
|
52
|
-
}, _callee);
|
|
53
|
-
})();
|
|
13
|
+
function* getNextLastDayOfMonth({
|
|
14
|
+
end,
|
|
15
|
+
isInitial,
|
|
16
|
+
options,
|
|
17
|
+
start,
|
|
18
|
+
timezone
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
duration,
|
|
22
|
+
frequency
|
|
23
|
+
} = options;
|
|
24
|
+
const {
|
|
25
|
+
unit: durationUnit,
|
|
26
|
+
value: durationValue
|
|
27
|
+
} = duration;
|
|
28
|
+
const {
|
|
29
|
+
unit: frequencyUnit,
|
|
30
|
+
value: frequencyValue
|
|
31
|
+
} = frequency;
|
|
32
|
+
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();
|
|
33
|
+
while (dateCursor < end) {
|
|
34
|
+
const nextOccurrenceEnd = _momentTimezone.default.tz(dateCursor, timezone).endOf(_scheduling.Unit.Month).add(1, _scheduling.Unit.Day).startOf(_scheduling.Unit.Day).valueOf();
|
|
35
|
+
const nextOccurrenceStart = _momentTimezone.default.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
36
|
+
if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (nextOccurrenceStart >= start) {
|
|
40
|
+
const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
41
|
+
yield nextOccurrence;
|
|
42
|
+
}
|
|
43
|
+
const nextDateCursor = _momentTimezone.default.tz(dateCursor, timezone).add(1, _scheduling.Unit.Month).valueOf();
|
|
44
|
+
dateCursor = nextDateCursor;
|
|
45
|
+
}
|
|
54
46
|
}
|
|
55
47
|
//# sourceMappingURL=getNextLastDayOfMonth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNextLastDayOfMonth.js","names":["
|
|
1
|
+
{"version":3,"file":"getNextLastDayOfMonth.js","names":["_momentTimezone","_interopRequireDefault","require","_scheduling","getNextLastDayOfMonth","end","isInitial","options","start","timezone","duration","frequency","unit","durationUnit","value","durationValue","frequencyUnit","frequencyValue","dateCursor","moment","tz","startOf","Unit","Month","valueOf","add","nextOccurrenceEnd","endOf","Day","nextOccurrenceStart","subtract","nextOccurrence","nextDateCursor"],"sources":["../../../src/scheduling/strategies/getNextLastDayOfMonth.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 last day of month strategy\r\n */\r\nexport function* getNextLastDayOfMonth({\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 } = 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 nextOccurrenceEnd: number = moment\r\n .tz(dateCursor, timezone)\r\n .endOf(Unit.Month)\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,qBAAqBA,CAAC;EACrCC,GAAG;EACHC,SAAS;EACTC,OAAO;EACPC,KAAK;EACLC;AACO,CAAC,EAA8B;EACtC,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGJ,OAAO;EACvC,MAAM;IAAEK,IAAI,EAAEC,YAAY;IAAEC,KAAK,EAAEC;EAAc,CAAC,GAAGL,QAAQ;EAC7D,MAAM;IAAEE,IAAI,EAAEI,aAAa;IAAEF,KAAK,EAAEG;EAAe,CAAC,GAAGN,SAAS;EAEhE,IAAIO,UAAkB,GAAGZ,SAAS,GAC9Ba,uBAAM,CACHC,EAAE,CAACZ,KAAK,EAAEC,QAAQ,CAAC,CACnBY,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC,GACZL,uBAAM,CACHC,EAAE,CAACZ,KAAK,EAAEC,QAAQ,CAAC,CACnBgB,GAAG,CAACR,cAAc,EAAED,aAAa,CAAC,CAClCK,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC;EAEhB,OAAON,UAAU,GAAGb,GAAG,EAAE;IACvB,MAAMqB,iBAAyB,GAAGP,uBAAM,CACrCC,EAAE,CAACF,UAAU,EAAET,QAAQ,CAAC,CACxBkB,KAAK,CAACL,gBAAI,CAACC,KAAK,CAAC,CACjBE,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACM,GAAG,CAAC,CAChBP,OAAO,CAACC,gBAAI,CAACM,GAAG,CAAC,CACjBJ,OAAO,CAAC,CAAC;IAEZ,MAAMK,mBAA2B,GAAGV,uBAAM,CACvCC,EAAE,CAACM,iBAAiB,EAAEjB,QAAQ,CAAC,CAC/BqB,QAAQ,CAACf,aAAa,EAAEF,YAAY,CAAC,CACrCW,OAAO,CAAC,CAAC;IAEZ,IAAIE,iBAAiB,IAAIG,mBAAmB,IAAIH,iBAAiB,GAAGrB,GAAG,EAAE;MACvE;IACF;IAEA,IAAIwB,mBAAmB,IAAIrB,KAAK,EAAE;MAChC,MAAMuB,cAAwB,GAAG,CAC/BF,mBAAmB,EACnBH,iBAAiB,GAAG,CAAC,CACtB;MAED,MAAMK,cAAc;IACtB;IAEA,MAAMC,cAAsB,GAAGb,uBAAM,CAClCC,EAAE,CAACF,UAAU,EAAET,QAAQ,CAAC,CACxBgB,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACC,KAAK,CAAC,CAClBC,OAAO,CAAC,CAAC;IAEZN,UAAU,GAAGc,cAAc;EAC7B;AACF","ignoreList":[]}
|
|
@@ -1,60 +1,53 @@
|
|
|
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.getNextLastWeekdayOfMonth = getNextLastWeekdayOfMonth;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
var _scheduling = require("../scheduling.types");
|
|
10
|
+
/**
|
|
11
|
+
* Generates next occurrence interval for last weekday 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
|
-
return nextOccurrence;
|
|
48
|
-
case 3:
|
|
49
|
-
nextDateCursor = mStartOfMonth.valueOf();
|
|
50
|
-
dateCursor = nextDateCursor;
|
|
51
|
-
_context.next = 1;
|
|
52
|
-
break;
|
|
53
|
-
case 4:
|
|
54
|
-
case "end":
|
|
55
|
-
return _context.stop();
|
|
56
|
-
}
|
|
57
|
-
}, _callee);
|
|
58
|
-
})();
|
|
13
|
+
function* getNextLastWeekdayOfMonth({
|
|
14
|
+
end,
|
|
15
|
+
isInitial,
|
|
16
|
+
options,
|
|
17
|
+
start,
|
|
18
|
+
timezone
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
duration,
|
|
22
|
+
frequency,
|
|
23
|
+
weekday
|
|
24
|
+
} = options;
|
|
25
|
+
const {
|
|
26
|
+
unit: durationUnit,
|
|
27
|
+
value: durationValue
|
|
28
|
+
} = duration;
|
|
29
|
+
const {
|
|
30
|
+
unit: frequencyUnit,
|
|
31
|
+
value: frequencyValue
|
|
32
|
+
} = frequency;
|
|
33
|
+
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();
|
|
34
|
+
while (dateCursor < end) {
|
|
35
|
+
const mStartOfMonth = _momentTimezone.default.tz(dateCursor, timezone).add(1, _scheduling.Unit.Month);
|
|
36
|
+
const year = mStartOfMonth.year();
|
|
37
|
+
const month = mStartOfMonth.month();
|
|
38
|
+
const startDay = mStartOfMonth.isoWeekday();
|
|
39
|
+
const date = startDay > weekday ? weekday - startDay + 8 : weekday - startDay + 1;
|
|
40
|
+
const nextOccurrenceEnd = _momentTimezone.default.tz(timezone).year(year).month(month).date(date).add(1, _scheduling.Unit.Day).startOf(_scheduling.Unit.Day).subtract(1, _scheduling.Unit.Week).valueOf();
|
|
41
|
+
const nextOccurrenceStart = _momentTimezone.default.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit).valueOf();
|
|
42
|
+
if (nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (nextOccurrenceStart >= start) {
|
|
46
|
+
const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
|
|
47
|
+
yield nextOccurrence;
|
|
48
|
+
}
|
|
49
|
+
const nextDateCursor = mStartOfMonth.valueOf();
|
|
50
|
+
dateCursor = nextDateCursor;
|
|
51
|
+
}
|
|
59
52
|
}
|
|
60
53
|
//# sourceMappingURL=getNextLastWeekdayOfMonth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNextLastWeekdayOfMonth.js","names":["
|
|
1
|
+
{"version":3,"file":"getNextLastWeekdayOfMonth.js","names":["_momentTimezone","_interopRequireDefault","require","_scheduling","getNextLastWeekdayOfMonth","end","isInitial","options","start","timezone","duration","frequency","weekday","unit","durationUnit","value","durationValue","frequencyUnit","frequencyValue","dateCursor","moment","tz","startOf","Unit","Month","valueOf","add","mStartOfMonth","year","month","startDay","isoWeekday","date","nextOccurrenceEnd","Day","subtract","Week","nextOccurrenceStart","nextOccurrence","nextDateCursor"],"sources":["../../../src/scheduling/strategies/getNextLastWeekdayOfMonth.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 last weekday of month strategy\r\n */\r\nexport function* getNextLastWeekdayOfMonth({\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, weekday } = 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).add(1, Unit.Month)\r\n\r\n const year: number = mStartOfMonth.year()\r\n const month: number = mStartOfMonth.month()\r\n const startDay: number = mStartOfMonth.isoWeekday()\r\n const date: number =\r\n startDay > weekday ? weekday - startDay + 8 : weekday - startDay + 1\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 .subtract(1, Unit.Week)\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 = mStartOfMonth.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,QAAQ;IAAEC,SAAS;IAAEC;EAAQ,CAAC,GAAGL,OAAO;EAChD,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,UAAkB,GAAGb,SAAS,GAC9Bc,uBAAM,CACHC,EAAE,CAACb,KAAK,EAAEC,QAAQ,CAAC,CACnBa,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC,GACZL,uBAAM,CACHC,EAAE,CAACb,KAAK,EAAEC,QAAQ,CAAC,CACnBiB,GAAG,CAACR,cAAc,EAAED,aAAa,CAAC,CAClCK,OAAO,CAACC,gBAAI,CAACC,KAAK,CAAC,CACnBC,OAAO,CAAC,CAAC;EAEhB,OAAON,UAAU,GAAGd,GAAG,EAAE;IACvB,MAAMsB,aAAa,GAAGP,uBAAM,CAACC,EAAE,CAACF,UAAU,EAAEV,QAAQ,CAAC,CAACiB,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACC,KAAK,CAAC;IAExE,MAAMI,IAAY,GAAGD,aAAa,CAACC,IAAI,CAAC,CAAC;IACzC,MAAMC,KAAa,GAAGF,aAAa,CAACE,KAAK,CAAC,CAAC;IAC3C,MAAMC,QAAgB,GAAGH,aAAa,CAACI,UAAU,CAAC,CAAC;IACnD,MAAMC,IAAY,GAChBF,QAAQ,GAAGlB,OAAO,GAAGA,OAAO,GAAGkB,QAAQ,GAAG,CAAC,GAAGlB,OAAO,GAAGkB,QAAQ,GAAG,CAAC;IAEtE,MAAMG,iBAAyB,GAAGb,uBAAM,CACrCC,EAAE,CAACZ,QAAQ,CAAC,CACZmB,IAAI,CAACA,IAAI,CAAC,CACVC,KAAK,CAACA,KAAK,CAAC,CACZG,IAAI,CAACA,IAAI,CAAC,CACVN,GAAG,CAAC,CAAC,EAAEH,gBAAI,CAACW,GAAG,CAAC,CAChBZ,OAAO,CAACC,gBAAI,CAACW,GAAG,CAAC,CACjBC,QAAQ,CAAC,CAAC,EAAEZ,gBAAI,CAACa,IAAI,CAAC,CACtBX,OAAO,CAAC,CAAC;IAEZ,MAAMY,mBAA2B,GAAGjB,uBAAM,CACvCC,EAAE,CAACY,iBAAiB,EAAExB,QAAQ,CAAC,CAC/B0B,QAAQ,CAACnB,aAAa,EAAEF,YAAY,CAAC,CACrCW,OAAO,CAAC,CAAC;IAEZ,IAAIQ,iBAAiB,IAAII,mBAAmB,IAAIJ,iBAAiB,GAAG5B,GAAG,EAAE;MACvE;IACF;IAEA,IAAIgC,mBAAmB,IAAI7B,KAAK,EAAE;MAChC,MAAM8B,cAAwB,GAAG,CAC/BD,mBAAmB,EACnBJ,iBAAiB,GAAG,CAAC,CACtB;MAED,MAAMK,cAAc;IACtB;IAEA,MAAMC,cAAc,GAAGZ,aAAa,CAACF,OAAO,CAAC,CAAC;IAE9CN,UAAU,GAAGoB,cAAc;EAC7B;AACF","ignoreList":[]}
|
|
@@ -1,39 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getNextNoRepeat = getNextNoRepeat;
|
|
8
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
9
|
+
/**
|
|
10
|
+
* Generates next occurrence interval for non repeat strategy
|
|
5
11
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return _context.abrupt("return");
|
|
22
|
-
case 1:
|
|
23
|
-
if (!(nextOccurrenceEnd <= nextOccurrenceStart)) {
|
|
24
|
-
_context.next = 2;
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
return _context.abrupt("return");
|
|
28
|
-
case 2:
|
|
29
|
-
nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd];
|
|
30
|
-
_context.next = 3;
|
|
31
|
-
return nextOccurrence;
|
|
32
|
-
case 3:
|
|
33
|
-
case "end":
|
|
34
|
-
return _context.stop();
|
|
35
|
-
}
|
|
36
|
-
}, _callee);
|
|
37
|
-
})();
|
|
12
|
+
function* getNextNoRepeat({
|
|
13
|
+
start,
|
|
14
|
+
end,
|
|
15
|
+
timezone
|
|
16
|
+
}) {
|
|
17
|
+
const nextOccurrenceStart = _momentTimezone.default.tz(start, timezone).valueOf();
|
|
18
|
+
const nextOccurrenceEnd = _momentTimezone.default.tz(end, timezone).valueOf() - 1;
|
|
19
|
+
if (nextOccurrenceStart < start) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (nextOccurrenceEnd <= nextOccurrenceStart) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd];
|
|
26
|
+
yield nextOccurrence;
|
|
38
27
|
}
|
|
39
28
|
//# sourceMappingURL=getNextNoRepeat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNextNoRepeat.js","names":["
|
|
1
|
+
{"version":3,"file":"getNextNoRepeat.js","names":["_momentTimezone","_interopRequireDefault","require","getNextNoRepeat","start","end","timezone","nextOccurrenceStart","moment","tz","valueOf","nextOccurrenceEnd","nextOccurrence"],"sources":["../../../src/scheduling/strategies/getNextNoRepeat.ts"],"sourcesContent":["import moment from 'moment-timezone'\r\n\r\nimport { GetNext, Interval } from '../scheduling.types'\r\n\r\n/**\r\n * Generates next occurrence interval for non repeat strategy\r\n */\r\nexport function* getNextNoRepeat({\r\n start,\r\n end,\r\n timezone,\r\n}: GetNext): IterableIterator<Interval> {\r\n const nextOccurrenceStart: number = moment.tz(start, timezone).valueOf()\r\n const nextOccurrenceEnd: number = moment.tz(end, timezone).valueOf() - 1\r\n\r\n if (nextOccurrenceStart < start) {\r\n return\r\n }\r\n\r\n if (nextOccurrenceEnd <= nextOccurrenceStart) {\r\n return\r\n }\r\n\r\n const nextOccurrence: Interval = [nextOccurrenceStart, nextOccurrenceEnd]\r\n\r\n yield nextOccurrence\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA;AACA;AACA;AACO,UAAUC,eAAeA,CAAC;EAC/BC,KAAK;EACLC,GAAG;EACHC;AACO,CAAC,EAA8B;EACtC,MAAMC,mBAA2B,GAAGC,uBAAM,CAACC,EAAE,CAACL,KAAK,EAAEE,QAAQ,CAAC,CAACI,OAAO,CAAC,CAAC;EACxE,MAAMC,iBAAyB,GAAGH,uBAAM,CAACC,EAAE,CAACJ,GAAG,EAAEC,QAAQ,CAAC,CAACI,OAAO,CAAC,CAAC,GAAG,CAAC;EAExE,IAAIH,mBAAmB,GAAGH,KAAK,EAAE;IAC/B;EACF;EAEA,IAAIO,iBAAiB,IAAIJ,mBAAmB,EAAE;IAC5C;EACF;EAEA,MAAMK,cAAwB,GAAG,CAACL,mBAAmB,EAAEI,iBAAiB,CAAC;EAEzE,MAAMC,cAAc;AACtB","ignoreList":[]}
|