@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.
Files changed (229) hide show
  1. package/.mise.toml +6 -6
  2. package/CHANGELOG.md +758 -758
  3. package/README.md +1 -1
  4. package/dist/errors/FetchImageError.js +3 -3
  5. package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -7
  6. package/dist/helpers/floatify/index.js +6 -6
  7. package/dist/helpers/get-audit-items-data/index.js +47 -36
  8. package/dist/helpers/validate-url/index.js +4 -4
  9. package/dist/pdf/activity-report/index.js +32 -32
  10. package/dist/pdf/audit/index.js +23 -23
  11. package/dist/pdf/helpers/fields/index.js +47 -27
  12. package/dist/pdf/issue/index.js +23 -23
  13. package/dist/pdf/job/index.js +22 -22
  14. package/dist/pdf/shift-report/index.js +28 -28
  15. package/dist/pdf/task/index.js +23 -23
  16. package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +2 -2
  17. package/dist/scheduling/generators/scheduleIntervalsGenerator.js +2 -2
  18. package/dist/scheduling/generators/serviceIntervalsGenerator.js +2 -2
  19. package/dist/scheduling/helpers/convertToTimezone.js +6 -6
  20. package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +2 -2
  21. package/dist/scheduling/helpers/generateRepeatingSchedule.js +2 -2
  22. package/dist/scheduling/helpers/generateScheduleEnd.js +2 -2
  23. package/dist/scheduling/helpers/hasValidStartAndEnd.js +5 -5
  24. package/dist/scheduling/helpers/intervalCovers.js +6 -6
  25. package/dist/scheduling/helpers/intervalIntersectsEnd.js +6 -6
  26. package/dist/scheduling/helpers/intervalIntersectsStart.js +6 -6
  27. package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +6 -6
  28. package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +6 -6
  29. package/dist/scheduling/helpers/intervalOutside.js +6 -6
  30. package/dist/scheduling/helpers/intervalWithin.js +6 -6
  31. package/dist/scheduling/helpers/mergeIntervals.js +6 -6
  32. package/dist/scheduling/helpers/splitIntervals.js +6 -6
  33. package/dist/scheduling/strategies/getNext.js +2 -2
  34. package/dist/scheduling/strategies/getNextExactDateOfMonth.js +2 -2
  35. package/dist/scheduling/strategies/getNextLastDayOfMonth.js +2 -2
  36. package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +2 -2
  37. package/dist/scheduling/strategies/getNextNoRepeat.js +2 -2
  38. package/dist/scheduling/strategies/getNextWeekday.js +2 -2
  39. package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +2 -2
  40. package/dist/service-hours/__helpers__/calculate-hours.js +4 -4
  41. package/dist/service-hours/__helpers__/isOpen.js +2 -2
  42. package/dist/service-hours/schema.js +4 -4
  43. package/lib/constants.js +12 -6
  44. package/lib/constants.js.map +1 -1
  45. package/lib/errors/DomainError.js +14 -21
  46. package/lib/errors/DomainError.js.map +1 -1
  47. package/lib/errors/FetchImageError.js +17 -24
  48. package/lib/errors/FetchImageError.js.map +1 -1
  49. package/lib/errors/ValidationError.js +30 -36
  50. package/lib/errors/ValidationError.js.map +1 -1
  51. package/lib/errors/index.js +23 -5
  52. package/lib/errors/index.js.map +1 -1
  53. package/lib/helpers/build-fetch-url/index.js +43 -47
  54. package/lib/helpers/build-fetch-url/index.js.map +1 -1
  55. package/lib/helpers/fetch-image/index.js +83 -82
  56. package/lib/helpers/fetch-image/index.js.map +1 -1
  57. package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +168 -243
  58. package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
  59. package/lib/helpers/fetch-image-for-web/index.js +71 -94
  60. package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
  61. package/lib/helpers/fetch-lighthouse-logo/index.js +36 -61
  62. package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
  63. package/lib/helpers/floatify/index.js +13 -7
  64. package/lib/helpers/floatify/index.js.map +1 -1
  65. package/lib/helpers/get-assignees-full-names/index.js +11 -7
  66. package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
  67. package/lib/helpers/get-audit-entry-details/index.js +42 -32
  68. package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
  69. package/lib/helpers/get-audit-items-data/index.js +104 -83
  70. package/lib/helpers/get-audit-items-data/index.js.map +1 -1
  71. package/lib/helpers/get-geometry-geocoded-string/index.js +10 -5
  72. package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
  73. package/lib/helpers/get-issue-details/index.js +53 -43
  74. package/lib/helpers/get-issue-details/index.js.map +1 -1
  75. package/lib/helpers/get-job-details/index.js +49 -41
  76. package/lib/helpers/get-job-details/index.js.map +1 -1
  77. package/lib/helpers/get-location-reference/index.js +32 -34
  78. package/lib/helpers/get-location-reference/index.js.map +1 -1
  79. package/lib/helpers/get-pretty-duration/index.js +16 -10
  80. package/lib/helpers/get-pretty-duration/index.js.map +1 -1
  81. package/lib/helpers/get-reference-details/index.js +20 -10
  82. package/lib/helpers/get-reference-details/index.js.map +1 -1
  83. package/lib/helpers/get-status-details/index.js +8 -2
  84. package/lib/helpers/get-status-details/index.js.map +1 -1
  85. package/lib/helpers/get-task-entry-details/index.js +32 -23
  86. package/lib/helpers/get-task-entry-details/index.js.map +1 -1
  87. package/lib/helpers/get-timezone-abbr/index.js +11 -4
  88. package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
  89. package/lib/helpers/get-timezone-datetime/index.js +20 -13
  90. package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
  91. package/lib/helpers/get-user-full-name/index.js +9 -3
  92. package/lib/helpers/get-user-full-name/index.js.map +1 -1
  93. package/lib/helpers/get-value-as-percentage/index.js +9 -4
  94. package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
  95. package/lib/helpers/image-validators/index.js +18 -12
  96. package/lib/helpers/image-validators/index.js.map +1 -1
  97. package/lib/helpers/index.js +130 -18
  98. package/lib/helpers/index.js.map +1 -1
  99. package/lib/helpers/validate-url/index.js +11 -5
  100. package/lib/helpers/validate-url/index.js.map +1 -1
  101. package/lib/images/index.js +10 -4
  102. package/lib/images/index.js.map +1 -1
  103. package/lib/index.js +66 -10
  104. package/lib/index.js.map +1 -1
  105. package/lib/pdf/activity-report/index.js +407 -537
  106. package/lib/pdf/activity-report/index.js.map +1 -1
  107. package/lib/pdf/audit/index.js +137 -134
  108. package/lib/pdf/audit/index.js.map +1 -1
  109. package/lib/pdf/fonts/index.js +4 -2
  110. package/lib/pdf/fonts/index.js.map +1 -1
  111. package/lib/pdf/helpers/build-audit-content/index.js +57 -51
  112. package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
  113. package/lib/pdf/helpers/build-audit-follow-ups/index.js +52 -50
  114. package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
  115. package/lib/pdf/helpers/build-location-scans-content/index.js +22 -16
  116. package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
  117. package/lib/pdf/helpers/build-template-content/index.js +52 -51
  118. package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
  119. package/lib/pdf/helpers/default-footer/index.js +38 -35
  120. package/lib/pdf/helpers/default-footer/index.js.map +1 -1
  121. package/lib/pdf/helpers/default-header/index.js +40 -35
  122. package/lib/pdf/helpers/default-header/index.js.map +1 -1
  123. package/lib/pdf/helpers/default-styles/index.js +7 -1
  124. package/lib/pdf/helpers/default-styles/index.js.map +1 -1
  125. package/lib/pdf/helpers/fields/index.js +225 -214
  126. package/lib/pdf/helpers/fields/index.js.map +1 -1
  127. package/lib/pdf/helpers/format-location-address/index.js +14 -8
  128. package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
  129. package/lib/pdf/helpers/generate-definition/index.js +60 -65
  130. package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
  131. package/lib/pdf/helpers/horizontal-line/index.js +14 -14
  132. package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
  133. package/lib/pdf/helpers/html-transformer/index.js +45 -35
  134. package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
  135. package/lib/pdf/helpers/index.js +194 -15
  136. package/lib/pdf/helpers/index.js.map +1 -1
  137. package/lib/pdf/helpers/parse-value/index.js +10 -4
  138. package/lib/pdf/helpers/parse-value/index.js.map +1 -1
  139. package/lib/pdf/helpers/table/index.js +136 -205
  140. package/lib/pdf/helpers/table/index.js.map +1 -1
  141. package/lib/pdf/helpers/text/index.js +11 -8
  142. package/lib/pdf/helpers/text/index.js.map +1 -1
  143. package/lib/pdf/icons/index.js +8 -2
  144. package/lib/pdf/icons/index.js.map +1 -1
  145. package/lib/pdf/index.js +47 -6
  146. package/lib/pdf/index.js.map +1 -1
  147. package/lib/pdf/issue/index.js +141 -135
  148. package/lib/pdf/issue/index.js.map +1 -1
  149. package/lib/pdf/job/index.js +95 -81
  150. package/lib/pdf/job/index.js.map +1 -1
  151. package/lib/pdf/shift-report/emptyFixtures.js +8 -2
  152. package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
  153. package/lib/pdf/shift-report/index.js +399 -521
  154. package/lib/pdf/shift-report/index.js.map +1 -1
  155. package/lib/pdf/task/index.js +89 -83
  156. package/lib/pdf/task/index.js.map +1 -1
  157. package/lib/scheduling/generators/index.js +38 -3
  158. package/lib/scheduling/generators/index.js.map +1 -1
  159. package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +44 -37
  160. package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
  161. package/lib/scheduling/generators/scheduleIntervalsGenerator.js +20 -28
  162. package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
  163. package/lib/scheduling/generators/serviceIntervalsGenerator.js +120 -150
  164. package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
  165. package/lib/scheduling/helpers/convertToTimezone.js +18 -11
  166. package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
  167. package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +57 -95
  168. package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
  169. package/lib/scheduling/helpers/generateRepeatingSchedule.js +80 -119
  170. package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
  171. package/lib/scheduling/helpers/generateScheduleEnd.js +24 -14
  172. package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
  173. package/lib/scheduling/helpers/hasValidStartAndEnd.js +19 -11
  174. package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
  175. package/lib/scheduling/helpers/index.js +159 -14
  176. package/lib/scheduling/helpers/index.js.map +1 -1
  177. package/lib/scheduling/helpers/intervalCovers.js +13 -7
  178. package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
  179. package/lib/scheduling/helpers/intervalIntersectsEnd.js +13 -7
  180. package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
  181. package/lib/scheduling/helpers/intervalIntersectsStart.js +13 -7
  182. package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
  183. package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +15 -10
  184. package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
  185. package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +15 -10
  186. package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
  187. package/lib/scheduling/helpers/intervalOutside.js +15 -9
  188. package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
  189. package/lib/scheduling/helpers/intervalWithin.js +13 -7
  190. package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
  191. package/lib/scheduling/helpers/mergeIntervals.js +21 -17
  192. package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
  193. package/lib/scheduling/helpers/splitIntervals.js +24 -23
  194. package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
  195. package/lib/scheduling/index.js +38 -3
  196. package/lib/scheduling/index.js.map +1 -1
  197. package/lib/scheduling/scheduling.types.js +9 -3
  198. package/lib/scheduling/scheduling.types.js.map +1 -1
  199. package/lib/scheduling/strategies/getNext.js +57 -63
  200. package/lib/scheduling/strategies/getNext.js.map +1 -1
  201. package/lib/scheduling/strategies/getNextExactDateOfMonth.js +47 -56
  202. package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
  203. package/lib/scheduling/strategies/getNextLastDayOfMonth.js +43 -51
  204. package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
  205. package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +49 -56
  206. package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
  207. package/lib/scheduling/strategies/getNextNoRepeat.js +25 -36
  208. package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
  209. package/lib/scheduling/strategies/getNextWeekday.js +47 -79
  210. package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
  211. package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +52 -58
  212. package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
  213. package/lib/scheduling/strategies/index.js +82 -7
  214. package/lib/scheduling/strategies/index.js.map +1 -1
  215. package/lib/schema/index.js +16 -1
  216. package/lib/schema/index.js.map +1 -1
  217. package/lib/schema/schema.js +28 -34
  218. package/lib/schema/schema.js.map +1 -1
  219. package/lib/service-hours/__helpers__/calculate-hours.js +24 -22
  220. package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
  221. package/lib/service-hours/__helpers__/isOpen.js +25 -24
  222. package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
  223. package/lib/service-hours/index.js +27 -2
  224. package/lib/service-hours/index.js.map +1 -1
  225. package/lib/service-hours/schema.js +68 -55
  226. package/lib/service-hours/schema.js.map +1 -1
  227. package/package.json +86 -86
  228. package/vitest.config.ts +23 -23
  229. package/vitest.setup.js +7 -7
@@ -1,11 +1,17 @@
1
- /**
2
- * Check if interval intersects another interval's end
3
- * Accepts two intervals and checks whether the first intersects the second's end
4
- *
5
- * intervalIntersectsEnd([12,20], [5,15]))
6
- * returns true
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
- export function intervalIntersectsEnd(firstInterval, secondInterval) {
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;AACA,OAAO,SAASA,qBAAqBA,CACnCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACED,aAAa,CAAC,CAAC,CAAC,IAAIC,cAAc,CAAC,CAAC,CAAC,IACrCD,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;AAExC","ignoreList":[]}
1
+ {"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
- * Check if interval intersects another interval's start
3
- * Accepts two intervals and checks whether the first intersects the second's start
4
- *
5
- * intervalIntersectsStart([2,10], [5,15])
6
- * returns true
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
- export function intervalIntersectsStart(firstInterval, secondInterval) {
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;AACA,OAAO,SAASA,uBAAuBA,CACrCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACED,aAAa,CAAC,CAAC,CAAC,IAAIC,cAAc,CAAC,CAAC,CAAC,IACrCD,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;AAExC","ignoreList":[]}
1
+ {"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
- import { intervalIntersectsEnd } from './intervalIntersectsEnd';
2
- import { intervalIntersectsStart } from './intervalIntersectsStart';
1
+ "use strict";
3
2
 
4
- /**
5
- * Check if interval only intersects another interval's end
6
- * Accepts two intervals and checks whether the first only intersects the second's end
7
- *
8
- * intervalIntersectsEnd([12,20], [5,15]))
9
- * returns true
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
- export function intervalOnlyIntersectsEnd(firstInterval, secondInterval) {
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":["intervalIntersectsEnd","intervalIntersectsStart","intervalOnlyIntersectsEnd","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalOnlyIntersectsEnd.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\nimport { intervalIntersectsEnd } from './intervalIntersectsEnd'\nimport { intervalIntersectsStart } from './intervalIntersectsStart'\n\n/**\n * Check if interval only intersects another interval's end\n * Accepts two intervals and checks whether the first only intersects the second's end\n *\n * intervalIntersectsEnd([12,20], [5,15]))\n * returns true\n */\n\nexport function intervalOnlyIntersectsEnd(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n !intervalIntersectsStart(firstInterval, secondInterval) &&\n intervalIntersectsEnd(firstInterval, secondInterval)\n )\n}\n"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,uBAAuB,QAAQ,2BAA2B;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,SAASC,yBAAyBA,CACvCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACE,CAACH,uBAAuB,CAACE,aAAa,EAAEC,cAAc,CAAC,IACvDJ,qBAAqB,CAACG,aAAa,EAAEC,cAAc,CAAC;AAExD","ignoreList":[]}
1
+ {"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
- import { intervalIntersectsEnd } from './intervalIntersectsEnd';
2
- import { intervalIntersectsStart } from './intervalIntersectsStart';
1
+ "use strict";
3
2
 
4
- /**
5
- * Check if interval only intersects another interval's start
6
- * Accepts two intervals and checks whether the first only intersects the second's start
7
- *
8
- * intervalOnlyIntersectsStart([2,10], [5,15])
9
- * returns true
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
- export function intervalOnlyIntersectsStart(firstInterval, secondInterval) {
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":["intervalIntersectsEnd","intervalIntersectsStart","intervalOnlyIntersectsStart","firstInterval","secondInterval"],"sources":["../../../src/scheduling/helpers/intervalOnlyIntersectsStart.ts"],"sourcesContent":["import { Interval } from '../scheduling.types'\n\nimport { intervalIntersectsEnd } from './intervalIntersectsEnd'\nimport { intervalIntersectsStart } from './intervalIntersectsStart'\n\n/**\n * Check if interval only intersects another interval's start\n * Accepts two intervals and checks whether the first only intersects the second's start\n *\n * intervalOnlyIntersectsStart([2,10], [5,15])\n * returns true\n */\nexport function intervalOnlyIntersectsStart(\n firstInterval: Interval,\n secondInterval: Interval\n): Boolean {\n return (\n intervalIntersectsStart(firstInterval, secondInterval) &&\n !intervalIntersectsEnd(firstInterval, secondInterval)\n )\n}\n"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,uBAAuB,QAAQ,2BAA2B;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CACzCC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACEH,uBAAuB,CAACE,aAAa,EAAEC,cAAc,CAAC,IACtD,CAACJ,qBAAqB,CAACG,aAAa,EAAEC,cAAc,CAAC;AAEzD","ignoreList":[]}
1
+ {"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
- * Check if interval outside another interval
3
- * Accepts two intervals and checks whether other interval is in the past or future
4
- *
5
- * intervalOutside([1, 4], [5,15])
6
- * returns true
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
- export function intervalOutside(firstInterval, secondInterval) {
9
- var future = firstInterval[0] > secondInterval[1] && firstInterval[1] > secondInterval[1];
10
- var past = firstInterval[0] < secondInterval[0] && firstInterval[1] < secondInterval[0];
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;AACA,OAAO,SAASA,eAAeA,CAC7BC,aAAuB,EACvBC,cAAwB,EACf;EACT,IAAMC,MAAM,GACVF,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;EAC9E,IAAME,IAAI,GACRH,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;EAE9E,OAAOC,MAAM,IAAIC,IAAI;AACvB","ignoreList":[]}
1
+ {"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
- * Checks if interval within another interval
3
- * Accepts two intervals and checks whether within other interval
4
- *
5
- * intervalWithin([7,12], [5,15])
6
- * returns true
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
- export function intervalWithin(firstInterval, secondInterval) {
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;AACA,OAAO,SAASA,cAAcA,CAC5BC,aAAuB,EACvBC,cAAwB,EACf;EACT,OACED,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC,IAAID,aAAa,CAAC,CAAC,CAAC,GAAGC,cAAc,CAAC,CAAC,CAAC;AAEhF","ignoreList":[]}
1
+ {"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
- import { first, isEmpty, reduce } from 'lodash/fp';
2
- /**
3
- * Merges overlapping intervals
4
- * Accepts arrays of intervals and returns a flattened result of overlapping intervals
5
- *
6
- * mergeIntervals([[1,15], [11,25], [21,29], [40,1000]])
7
- * returns [[1,29], [40,1000]]
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
- export function mergeIntervals(intervals) {
10
- if (isEmpty(intervals)) return intervals;
11
- var sortedIntervals = intervals.sort(function (a, b) {
12
- return a[0] - b[0];
13
- });
14
- var firstInterval = first(sortedIntervals);
15
- var stack = reduce(function (accum, interval) {
16
- var top = accum[accum.length - 1];
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":["first","isEmpty","reduce","mergeIntervals","intervals","sortedIntervals","sort","a","b","firstInterval","stack","accum","interval","top","length","topBeforeInterval","topOverlapsInterval","push","pop"],"sources":["../../../src/scheduling/helpers/mergeIntervals.ts"],"sourcesContent":["import { first, isEmpty, reduce } from 'lodash/fp'\n\nimport { Interval } from '../scheduling.types'\n\n/**\n * Merges overlapping intervals\n * Accepts arrays of intervals and returns a flattened result of overlapping intervals\n *\n * mergeIntervals([[1,15], [11,25], [21,29], [40,1000]])\n * returns [[1,29], [40,1000]]\n */\nexport function mergeIntervals(intervals: Interval[]): Interval[] {\n if (isEmpty(intervals)) return intervals\n\n const sortedIntervals = intervals.sort((a, b) => a[0] - b[0])\n const firstInterval: Interval = first(sortedIntervals)\n\n const stack: Interval[] = reduce(\n (accum, interval: Interval) => {\n const top = accum[accum.length - 1]\n const topBeforeInterval = top[1] < interval[0]\n const topOverlapsInterval = top[1] < interval[1]\n\n if (topBeforeInterval) {\n accum.push(interval)\n } else if (topOverlapsInterval) {\n accum.pop()\n accum.push([top[0], interval[1]])\n }\n\n return accum\n },\n [firstInterval],\n sortedIntervals\n )\n\n return stack\n}\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,OAAO,EAAEC,MAAM,QAAQ,WAAW;AAIlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAACC,SAAqB,EAAc;EAChE,IAAIH,OAAO,CAACG,SAAS,CAAC,EAAE,OAAOA,SAAS;EAExC,IAAMC,eAAe,GAAGD,SAAS,CAACE,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC;IAAA,OAAKD,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC;EAAA,EAAC;EAC7D,IAAMC,aAAuB,GAAGT,KAAK,CAACK,eAAe,CAAC;EAEtD,IAAMK,KAAiB,GAAGR,MAAM,CAC9B,UAACS,KAAK,EAAEC,QAAkB,EAAK;IAC7B,IAAMC,GAAG,GAAGF,KAAK,CAACA,KAAK,CAACG,MAAM,GAAG,CAAC,CAAC;IACnC,IAAMC,iBAAiB,GAAGF,GAAG,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAC9C,IAAMI,mBAAmB,GAAGH,GAAG,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAEhD,IAAIG,iBAAiB,EAAE;MACrBJ,KAAK,CAACM,IAAI,CAACL,QAAQ,CAAC;IACtB,CAAC,MAAM,IAAII,mBAAmB,EAAE;MAC9BL,KAAK,CAACO,GAAG,CAAC,CAAC;MACXP,KAAK,CAACM,IAAI,CAAC,CAACJ,GAAG,CAAC,CAAC,CAAC,EAAED,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC;IAEA,OAAOD,KAAK;EACd,CAAC,EACD,CAACF,aAAa,CAAC,EACfJ,eACF,CAAC;EAED,OAAOK,KAAK;AACd","ignoreList":[]}
1
+ {"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
- import { forEach, isEmpty, reduce, sortBy } from 'lodash/fp';
2
- import { intervalCovers, intervalIntersectsEnd, intervalIntersectsStart, intervalOutside, intervalWithin } from '.';
1
+ "use strict";
3
2
 
4
- /**
5
- * Applies closed intervals to intervals
6
- * Accepts two sets of intervals and splits the first set by the second set
7
- *
8
- * splitIntervals([[1,10], [11,20], [21,29]], [[8,13]])
9
- * returns [[1,8], [13,20], [21,29]]
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
- export function splitIntervals() {
12
- var intervals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
13
- var closeIntervals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
14
- if (isEmpty(closeIntervals)) return intervals;
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
- forEach(function (closeInterval) {
21
- var topInterval = accum[accum.length - 1];
22
- var closeCoversInterval = intervalCovers(closeInterval, topInterval);
23
- var closeIntersectsIntervalEnd = intervalIntersectsEnd(closeInterval, topInterval);
24
- var closeIntersectsIntervalStart = intervalIntersectsStart(closeInterval, topInterval);
25
- var closeOutsideInterval = intervalOutside(closeInterval, topInterval);
26
- var closeWithinInterval = intervalWithin(closeInterval, topInterval);
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":["forEach","isEmpty","reduce","sortBy","intervalCovers","intervalIntersectsEnd","intervalIntersectsStart","intervalOutside","intervalWithin","splitIntervals","intervals","arguments","length","undefined","closeIntervals","sortedIntervals","a","stack","accum","openInterval","push","closeInterval","topInterval","closeCoversInterval","closeIntersectsIntervalEnd","closeIntersectsIntervalStart","closeOutsideInterval","closeWithinInterval","pop"],"sources":["../../../src/scheduling/helpers/splitIntervals.ts"],"sourcesContent":["import { forEach, isEmpty, reduce, sortBy } from 'lodash/fp'\n\nimport { Interval } from '../scheduling.types'\nimport {\n intervalCovers,\n intervalIntersectsEnd,\n intervalIntersectsStart,\n intervalOutside,\n intervalWithin,\n} from '.'\n\n/**\n * Applies closed intervals to intervals\n * Accepts two sets of intervals and splits the first set by the second set\n *\n * splitIntervals([[1,10], [11,20], [21,29]], [[8,13]])\n * returns [[1,8], [13,20], [21,29]]\n */\nexport function splitIntervals(\n intervals: Array<Interval> = [],\n closeIntervals: Array<Interval> = []\n): Array<Interval> {\n if (isEmpty(closeIntervals)) return intervals\n\n const sortedIntervals = sortBy(a => a[0])(intervals)\n\n const stack = reduce(\n (accum, openInterval) => {\n accum.push(openInterval)\n\n forEach(\n (closeInterval: Interval): void => {\n const topInterval = accum[accum.length - 1]\n\n const closeCoversInterval = intervalCovers(closeInterval, topInterval)\n const closeIntersectsIntervalEnd = intervalIntersectsEnd(\n closeInterval,\n topInterval\n )\n const closeIntersectsIntervalStart = intervalIntersectsStart(\n closeInterval,\n topInterval\n )\n const closeOutsideInterval = intervalOutside(\n closeInterval,\n topInterval\n )\n const closeWithinInterval = intervalWithin(closeInterval, topInterval)\n\n if (closeOutsideInterval) return\n\n accum.pop()\n\n if (closeCoversInterval) return\n if (closeWithinInterval)\n accum.push(\n [topInterval[0], closeInterval[0]],\n [closeInterval[1], topInterval[1]]\n )\n if (closeIntersectsIntervalStart)\n accum.push([closeInterval[1], topInterval[1]])\n if (closeIntersectsIntervalEnd)\n accum.push([topInterval[0], closeInterval[0]])\n }\n )(closeIntervals)\n\n return accum\n },\n [],\n sortedIntervals\n )\n\n return stack\n}\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAEC,MAAM,QAAQ,WAAW;AAG5D,SACEC,cAAc,EACdC,qBAAqB,EACrBC,uBAAuB,EACvBC,eAAe,EACfC,cAAc,QACT,GAAG;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAGX;EAAA,IAFjBC,SAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IAC/BG,cAA+B,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEpC,IAAIV,OAAO,CAACa,cAAc,CAAC,EAAE,OAAOJ,SAAS;EAE7C,IAAMK,eAAe,GAAGZ,MAAM,CAAC,UAAAa,CAAC;IAAA,OAAIA,CAAC,CAAC,CAAC,CAAC;EAAA,EAAC,CAACN,SAAS,CAAC;EAEpD,IAAMO,KAAK,GAAGf,MAAM,CAClB,UAACgB,KAAK,EAAEC,YAAY,EAAK;IACvBD,KAAK,CAACE,IAAI,CAACD,YAAY,CAAC;IAExBnB,OAAO,CACL,UAACqB,aAAuB,EAAW;MACjC,IAAMC,WAAW,GAAGJ,KAAK,CAACA,KAAK,CAACN,MAAM,GAAG,CAAC,CAAC;MAE3C,IAAMW,mBAAmB,GAAGnB,cAAc,CAACiB,aAAa,EAAEC,WAAW,CAAC;MACtE,IAAME,0BAA0B,GAAGnB,qBAAqB,CACtDgB,aAAa,EACbC,WACF,CAAC;MACD,IAAMG,4BAA4B,GAAGnB,uBAAuB,CAC1De,aAAa,EACbC,WACF,CAAC;MACD,IAAMI,oBAAoB,GAAGnB,eAAe,CAC1Cc,aAAa,EACbC,WACF,CAAC;MACD,IAAMK,mBAAmB,GAAGnB,cAAc,CAACa,aAAa,EAAEC,WAAW,CAAC;MAEtE,IAAII,oBAAoB,EAAE;MAE1BR,KAAK,CAACU,GAAG,CAAC,CAAC;MAEX,IAAIL,mBAAmB,EAAE;MACzB,IAAII,mBAAmB,EACrBT,KAAK,CAACE,IAAI,CACR,CAACE,WAAW,CAAC,CAAC,CAAC,EAAED,aAAa,CAAC,CAAC,CAAC,CAAC,EAClC,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,CAAC,CACnC,CAAC;MACH,IAAIG,4BAA4B,EAC9BP,KAAK,CAACE,IAAI,CAAC,CAACC,aAAa,CAAC,CAAC,CAAC,EAAEC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD,IAAIE,0BAA0B,EAC5BN,KAAK,CAACE,IAAI,CAAC,CAACE,WAAW,CAAC,CAAC,CAAC,EAAED,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CACF,CAAC,CAACP,cAAc,CAAC;IAEjB,OAAOI,KAAK;EACd,CAAC,EACD,EAAE,EACFH,eACF,CAAC;EAED,OAAOE,KAAK;AACd","ignoreList":[]}
1
+ {"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":[]}
@@ -1,4 +1,39 @@
1
- export * from './generators';
2
- export * from './scheduling.types';
3
- export * from './helpers';
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,cAAc,cAAc;AAC5B,cAAc,oBAAoB;AAClC,cAAc,WAAW","ignoreList":[]}
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
- export var IntervalTypes = /*#__PURE__*/function (IntervalTypes) {
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
- export var Unit = /*#__PURE__*/function (Unit) {
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
- export var StrategyTypes = /*#__PURE__*/function (StrategyTypes) {
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":"AAEA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAKzB,WAAYC,IAAI,0BAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;AAWhB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA","ignoreList":[]}
1
+ {"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
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
- import moment from 'moment-timezone';
3
- import { StrategyTypes, Unit } from '../scheduling.types';
1
+ "use strict";
4
2
 
5
- /**
6
- * Generates next occurrence interval for stopwatch and window strategy
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
- export function getNext(_ref) {
9
- var end = _ref.end,
10
- isInitial = _ref.isInitial,
11
- options = _ref.options,
12
- start = _ref.start,
13
- timezone = _ref.timezone,
14
- type = _ref.type;
15
- return /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
16
- var duration, frequency, durationUnit, durationValue, frequencyUnit, frequencyValue, initial, dateCursor, nextOccurrenceStart, nextOccurrenceEnd, nextOccurrenceStartByBackCalculation, earliestNextOccurrenceStart, nextOccurrence;
17
- return _regeneratorRuntime.wrap(function (_context) {
18
- while (1) switch (_context.prev = _context.next) {
19
- case 0:
20
- duration = options.duration, frequency = options.frequency;
21
- durationUnit = duration.unit, durationValue = duration.value;
22
- frequencyUnit = frequency.unit, frequencyValue = frequency.value;
23
- initial = isInitial;
24
- dateCursor = initial ? moment.tz(start, timezone).valueOf() : moment.tz(start, timezone).add(1, Unit.Millisecond).valueOf();
25
- case 1:
26
- if (!(dateCursor < end)) {
27
- _context.next = 4;
28
- break;
29
- }
30
- nextOccurrenceStart = void 0;
31
- nextOccurrenceEnd = void 0;
32
- if (type === StrategyTypes.Stopwatch) {
33
- nextOccurrenceStart = dateCursor;
34
- nextOccurrenceEnd = moment.tz(dateCursor, timezone).add(durationValue, durationUnit).valueOf();
35
- } else {
36
- nextOccurrenceEnd = moment.tz(dateCursor, timezone).add(frequencyValue, frequencyUnit).valueOf();
37
- nextOccurrenceStartByBackCalculation = moment.tz(nextOccurrenceEnd, timezone).subtract(durationValue, durationUnit);
38
- earliestNextOccurrenceStart = moment.tz(dateCursor, timezone); // NOTE: this is to ensure that the next occurrence start is always
39
- // greater than or equal to the date cursor. Moment js handles month addition and subtraction
40
- // with estimations (Dec 31st + 2 months gives Feb 28th/29th). This can lead to inaccurate start times when calculating forwards then backwards at the end of the month.
41
- nextOccurrenceStart = moment.max(earliestNextOccurrenceStart, nextOccurrenceStartByBackCalculation).valueOf();
42
- }
43
- if (!(nextOccurrenceEnd <= nextOccurrenceStart || nextOccurrenceEnd > end)) {
44
- _context.next = 2;
45
- break;
46
- }
47
- return _context.abrupt("return");
48
- case 2:
49
- if (!(nextOccurrenceStart >= start)) {
50
- _context.next = 3;
51
- break;
52
- }
53
- nextOccurrence = [nextOccurrenceStart, nextOccurrenceEnd - 1];
54
- _context.next = 3;
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