@oneuptime/common 7.0.2513 → 7.0.2550

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 (821) hide show
  1. package/AnalyticsModels/BaseModel.ts +437 -443
  2. package/AnalyticsModels/CommonModel.ts +216 -226
  3. package/AnalyticsModels/NestedModel.ts +5 -5
  4. package/Models/AccessControlModel.ts +10 -10
  5. package/Models/BaseModel.ts +662 -670
  6. package/Models/FileModel.ts +102 -102
  7. package/Models/GlobalConfig.ts +5 -5
  8. package/Models/TenantModel.ts +8 -8
  9. package/Models/UserModel.ts +8 -8
  10. package/ServiceRoute.ts +17 -17
  11. package/Tests/MockType.ts +9 -0
  12. package/Tests/Spy.ts +11 -0
  13. package/Tests/Types/API/ErrorResponse.test.ts +14 -14
  14. package/Tests/Types/API/HTTPErrorResponse.test.ts +55 -55
  15. package/Tests/Types/API/HTTPMethod.test.ts +14 -14
  16. package/Tests/Types/API/Headers.test.ts +13 -13
  17. package/Tests/Types/API/Hostname.test.ts +20 -20
  18. package/Tests/Types/API/Protocal.test.ts +17 -17
  19. package/Tests/Types/API/Response.test.ts +19 -19
  20. package/Tests/Types/API/ResponseType.test.ts +11 -11
  21. package/Tests/Types/API/Route.test.ts +28 -28
  22. package/Tests/Types/API/StatusCode.test.ts +24 -24
  23. package/Tests/Types/API/URL.test.ts +39 -39
  24. package/Tests/Types/Alerts/AlertEventType.test.ts +46 -46
  25. package/Tests/Types/Alerts/AlertType.test.ts +17 -17
  26. package/Tests/Types/AppEnvironment.test.ts +11 -11
  27. package/Tests/Types/ApplicationLog/ApplicationLogType.test.ts +11 -11
  28. package/Tests/Types/ArrayUtil.test.ts +77 -77
  29. package/Tests/Types/Billing/SubscriptionPlan.test.ts +255 -270
  30. package/Tests/Types/BrandColors.test.ts +138 -138
  31. package/Tests/Types/Char.test.ts +81 -81
  32. package/Tests/Types/Code/CodeType.test.ts +11 -11
  33. package/Tests/Types/Color.test.ts +42 -42
  34. package/Tests/Types/Company/CompanySize.test.ts +17 -17
  35. package/Tests/Types/Company/JobRole.test.ts +20 -20
  36. package/Tests/Types/Countries.test.ts +287 -301
  37. package/Tests/Types/Database/ColumnLength.test.ts +41 -41
  38. package/Tests/Types/Database/ColumnType.test.ts +77 -77
  39. package/Tests/Types/Database/Columns.test.ts +18 -18
  40. package/Tests/Types/Database/CompareBase.test.ts +32 -32
  41. package/Tests/Types/Database/Date.test.ts +73 -75
  42. package/Tests/Types/Database/EqualToOrNull.test.ts +61 -61
  43. package/Tests/Types/Database/InBetween.test.ts +71 -71
  44. package/Tests/Types/Database/LimitMax.test.ts +14 -14
  45. package/Tests/Types/Database/NotEqual.test.ts +15 -15
  46. package/Tests/Types/Database/Search.test.ts +8 -8
  47. package/Tests/Types/DatabaseType.test.ts +5 -5
  48. package/Tests/Types/Date.test.ts +87 -93
  49. package/Tests/Types/Dictionary.test.ts +22 -22
  50. package/Tests/Types/Domain.test.ts +36 -36
  51. package/Tests/Types/Email/Email.test.ts +55 -55
  52. package/Tests/Types/EmailWithName.test.ts +46 -46
  53. package/Tests/Types/EncryptionAlgorithm.test.ts +5 -5
  54. package/Tests/Types/Exception/ApiException.test.ts +12 -13
  55. package/Tests/Types/Exception/BadDataException.test.ts +12 -12
  56. package/Tests/Types/Exception/BadOperationException.test.ts +12 -13
  57. package/Tests/Types/Exception/BadRequestException.test.ts +12 -12
  58. package/Tests/Types/Exception/DatabaseNotConnectedException.test.ts +10 -10
  59. package/Tests/Types/Exception/Exception.test.ts +15 -17
  60. package/Tests/Types/Exception/NotImplementedException.test.ts +10 -10
  61. package/Tests/Types/File.test.ts +20 -20
  62. package/Tests/Types/HashedString.test.ts +18 -18
  63. package/Tests/Types/Html.test.ts +6 -6
  64. package/Tests/Types/IP/IP.test.ts +65 -67
  65. package/Tests/Types/IP/IPType.test.ts +8 -8
  66. package/Tests/Types/IP/IPv4.test.ts +15 -15
  67. package/Tests/Types/IP/IPv6.test.ts +15 -15
  68. package/Tests/Types/JSON.test.ts +35 -35
  69. package/Tests/Types/JSONFunctions.test.ts +41 -44
  70. package/Tests/Types/ListData.test.ts +33 -33
  71. package/Tests/Types/Name.test.ts +24 -24
  72. package/Tests/Types/ObjectID.test.ts +10 -10
  73. package/Tests/Types/Permission.test.ts +8 -8
  74. package/Tests/Types/Phone.test.ts +35 -35
  75. package/Tests/Types/Port.test.ts +33 -33
  76. package/Tests/Types/PositiveNumber.test.ts +123 -123
  77. package/Tests/Types/SecuritySeverity.test.ts +14 -14
  78. package/Tests/Types/SerializableObject.test.ts +33 -34
  79. package/Tests/Types/Sleep.test.ts +16 -19
  80. package/Tests/Types/Text.test.ts +6 -8
  81. package/Tests/Types/Timezone.test.ts +644 -674
  82. package/Tests/Types/Typeof.test.ts +14 -14
  83. package/Tests/Types/UserType.test.ts +14 -14
  84. package/Tests/Types/Version.test.ts +33 -33
  85. package/Tests/Types/XML.test.ts +33 -33
  86. package/Tests/Utils/API.test.ts +339 -342
  87. package/Tests/Utils/Analytics.test.ts +65 -65
  88. package/Tests/Utils/CronTime.test.ts +26 -26
  89. package/Tests/Utils/Faker.test.ts +30 -32
  90. package/Tests/Utils/Slug.test.ts +20 -20
  91. package/Tests/Utils/UUID.test.ts +10 -10
  92. package/Types/API/EmptyResponse.ts +1 -1
  93. package/Types/API/HTTPErrorResponse.ts +18 -21
  94. package/Types/API/HTTPMethod.ts +5 -5
  95. package/Types/API/HTTPResponse.ts +108 -110
  96. package/Types/API/Headers.ts +1 -1
  97. package/Types/API/Hostname.ts +94 -94
  98. package/Types/API/Protocol.ts +6 -6
  99. package/Types/API/ResponseType.ts +3 -3
  100. package/Types/API/Route.ts +76 -76
  101. package/Types/API/StatusCode.ts +31 -34
  102. package/Types/API/URL.ts +217 -221
  103. package/Types/Alerts/AlertEventType.ts +10 -10
  104. package/Types/Alerts/AlertType.ts +5 -5
  105. package/Types/AnalyticsDatabase/AnalyticsTableEngine.ts +1 -1
  106. package/Types/AnalyticsDatabase/TableColumn.ts +157 -160
  107. package/Types/AnalyticsDatabase/TableColumnType.ts +12 -12
  108. package/Types/AppEnvironment.ts +3 -3
  109. package/Types/ApplicationLog/ApplicationLogType.ts +3 -3
  110. package/Types/ArrayUtil.ts +68 -70
  111. package/Types/BaseDatabase/AccessControl.ts +5 -5
  112. package/Types/BaseDatabase/ColumnBillingAccessControl.ts +4 -4
  113. package/Types/BaseDatabase/DatabaseCommonInteractionProps.ts +20 -20
  114. package/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.ts +75 -76
  115. package/Types/BaseDatabase/DatabaseType.ts +2 -2
  116. package/Types/BaseDatabase/EnableWorkflowOn.ts +4 -4
  117. package/Types/BaseDatabase/EqualToOrNull.ts +29 -29
  118. package/Types/BaseDatabase/GreaterThan.ts +18 -18
  119. package/Types/BaseDatabase/GreaterThanOrEqual.ts +18 -18
  120. package/Types/BaseDatabase/InBetween.ts +61 -61
  121. package/Types/BaseDatabase/Includes.ts +32 -34
  122. package/Types/BaseDatabase/IsNull.ts +21 -21
  123. package/Types/BaseDatabase/LessThan.ts +18 -18
  124. package/Types/BaseDatabase/LessThanOrEqual.ts +18 -18
  125. package/Types/BaseDatabase/ModelPermission.ts +31 -31
  126. package/Types/BaseDatabase/NotEqual.ts +29 -29
  127. package/Types/BaseDatabase/NotNull.ts +21 -21
  128. package/Types/BaseDatabase/Search.ts +34 -34
  129. package/Types/BaseDatabase/SortOrder.ts +2 -2
  130. package/Types/BaseDatabase/TableBillingAccessControl.ts +5 -5
  131. package/Types/Billing/MeteredPlan.ts +21 -21
  132. package/Types/Billing/SubscriptionPlan.ts +223 -228
  133. package/Types/Billing/SubscriptionStatus.ts +23 -23
  134. package/Types/BrandColors.ts +60 -60
  135. package/Types/BrowserType.ts +3 -3
  136. package/Types/Calendar/CalendarEvent.ts +9 -9
  137. package/Types/Call/CallRequest.ts +19 -19
  138. package/Types/Call/CallStatus.ts +5 -5
  139. package/Types/CallAndSMS/TwilioConfig.ts +4 -4
  140. package/Types/Char.ts +62 -62
  141. package/Types/Code/CodeType.ts +7 -7
  142. package/Types/CodeRepository/CodeRepositoryType.ts +6 -0
  143. package/Types/CodeRepository/PullRequest.ts +16 -0
  144. package/Types/CodeRepository/PullRequestState.ts +7 -0
  145. package/Types/Color.ts +88 -88
  146. package/Types/Company/CompanySize.ts +5 -5
  147. package/Types/Company/JobRole.ts +6 -6
  148. package/Types/Copilot/CopilotEventStatus.ts +6 -0
  149. package/Types/Copilot/CopilotEventType.ts +6 -0
  150. package/Types/Countries.ts +243 -243
  151. package/Types/Currency.ts +23 -23
  152. package/Types/CustomField/CustomFieldType.ts +3 -3
  153. package/Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid.ts +4 -4
  154. package/Types/Database/AccessControl/ColumnAccessControl.ts +33 -33
  155. package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +34 -36
  156. package/Types/Database/AccessControl/TableAccessControl.ts +16 -16
  157. package/Types/Database/AccessControl/TableBillingAccessControl.ts +16 -16
  158. package/Types/Database/AccessControlColumn.ts +4 -4
  159. package/Types/Database/AllowUserQueryWithoutTenant.ts +4 -4
  160. package/Types/Database/CanAccessIfCanReadOn.ts +6 -6
  161. package/Types/Database/ColumnLength.ts +61 -61
  162. package/Types/Database/ColumnType.ts +33 -33
  163. package/Types/Database/Columns.ts +16 -16
  164. package/Types/Database/CompareBase.ts +28 -28
  165. package/Types/Database/CrudApiEndpoint.ts +5 -5
  166. package/Types/Database/CurrentUserCanAccessRecordBy.ts +4 -4
  167. package/Types/Database/DatabaseProperty.ts +42 -42
  168. package/Types/Database/Date.ts +20 -20
  169. package/Types/Database/EnableDocumentation.ts +6 -7
  170. package/Types/Database/EnableWorkflow.ts +5 -5
  171. package/Types/Database/IsPermissionsIf.ts +12 -12
  172. package/Types/Database/LabelsColumn.ts +4 -4
  173. package/Types/Database/MultiTenentQueryAllowed.ts +4 -4
  174. package/Types/Database/PartialEntity.ts +1 -1
  175. package/Types/Database/SlugifyColumn.ts +5 -5
  176. package/Types/Database/TableColumn.ts +42 -42
  177. package/Types/Database/TableColumnType.ts +39 -39
  178. package/Types/Database/TableMetadata.ts +14 -14
  179. package/Types/Database/TenantColumn.ts +4 -4
  180. package/Types/Database/TotalItemsBy.ts +9 -9
  181. package/Types/Database/UniqueColumnBy.ts +27 -27
  182. package/Types/DatabaseType.ts +2 -2
  183. package/Types/Date.ts +965 -978
  184. package/Types/Day/DayOfWeek.ts +24 -24
  185. package/Types/Decimal.ts +57 -57
  186. package/Types/Dictionary.ts +1 -1
  187. package/Types/DiskSize.ts +32 -32
  188. package/Types/Domain.ts +74 -74
  189. package/Types/Email/EmailBody.ts +2 -2
  190. package/Types/Email/EmailMessage.ts +8 -8
  191. package/Types/Email/EmailServer.ts +12 -12
  192. package/Types/Email/EmailTemplate.ts +5 -5
  193. package/Types/Email/EmailTemplateType.ts +36 -36
  194. package/Types/Email.ts +99 -101
  195. package/Types/EmailWithName.ts +26 -26
  196. package/Types/EncryptionAlgorithm.ts +1 -1
  197. package/Types/Events/EventInterval.ts +5 -5
  198. package/Types/Events/Recurring.ts +90 -92
  199. package/Types/Exception/ApiException.ts +5 -5
  200. package/Types/Exception/BadDataException.ts +5 -5
  201. package/Types/Exception/BadOperationException.ts +5 -5
  202. package/Types/Exception/BadRequestException.ts +5 -5
  203. package/Types/Exception/DatabaseNotConnectedException.ts +8 -8
  204. package/Types/Exception/Exception.ts +15 -15
  205. package/Types/Exception/ExceptionCode.ts +17 -17
  206. package/Types/Exception/NotAuthenticatedException.ts +5 -5
  207. package/Types/Exception/NotAuthorizedException.ts +5 -5
  208. package/Types/Exception/NotFoundException.ts +5 -5
  209. package/Types/Exception/NotImplementedException.ts +8 -8
  210. package/Types/Exception/PaymentRequiredException.ts +5 -5
  211. package/Types/Exception/ServerException.ts +5 -5
  212. package/Types/Exception/SsoAuthorizationException.ts +12 -12
  213. package/Types/Exception/TenantNotFoundException.ts +5 -5
  214. package/Types/Exception/TimeoutException.ts +5 -5
  215. package/Types/Exception/UnableToReachServer.ts +5 -5
  216. package/Types/Exception/WebsiteRequestException.ts +5 -5
  217. package/Types/File/MimeType.ts +5 -5
  218. package/Types/File.ts +2 -2
  219. package/Types/Filter/FilterCondition.ts +2 -2
  220. package/Types/Filter/FilterType.ts +6 -6
  221. package/Types/HashCode.ts +8 -8
  222. package/Types/HashedString.ts +80 -82
  223. package/Types/Html.ts +13 -13
  224. package/Types/IP/IP.ts +93 -93
  225. package/Types/IP/IPType.ts +2 -2
  226. package/Types/IP/IPv4.ts +7 -7
  227. package/Types/IP/IPv6.ts +7 -7
  228. package/Types/Icon/IconProp.ts +122 -122
  229. package/Types/Infrastructure/BasicMetrics.ts +15 -15
  230. package/Types/Infrastructure/OSType.ts +4 -4
  231. package/Types/IsolatedVM/ReturnResult.ts +2 -2
  232. package/Types/JSON.ts +139 -139
  233. package/Types/JSONFunctions.ts +310 -320
  234. package/Types/JsonWebTokenData.ts +11 -11
  235. package/Types/Link.ts +5 -5
  236. package/Types/ListData.ts +26 -26
  237. package/Types/Mail/MailStatus.ts +2 -2
  238. package/Types/MeteredPlan/ProductType.ts +4 -4
  239. package/Types/Mixins.ts +1 -1
  240. package/Types/Monitor/CriteriaFilter.ts +107 -107
  241. package/Types/Monitor/CriteriaIncident.ts +7 -7
  242. package/Types/Monitor/CustomCodeMonitor/CustomCodeMonitorResponse.ts +5 -5
  243. package/Types/Monitor/IncomingMonitor/IncomingMonitorRequest.ts +10 -10
  244. package/Types/Monitor/MonitorCriteria.ts +151 -162
  245. package/Types/Monitor/MonitorCriteriaInstance.ts +622 -628
  246. package/Types/Monitor/MonitorStep.ts +314 -319
  247. package/Types/Monitor/MonitorSteps.ts +156 -161
  248. package/Types/Monitor/MonitorType.ts +164 -154
  249. package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +12 -12
  250. package/Types/Monitor/ServerMonitor/ServerMonitorResponse.ts +10 -10
  251. package/Types/Monitor/SyntheticMonitors/BrowserType.ts +1 -1
  252. package/Types/Monitor/SyntheticMonitors/ScreenSizeType.ts +1 -1
  253. package/Types/Monitor/SyntheticMonitors/Screenshot.ts +1 -1
  254. package/Types/Monitor/SyntheticMonitors/SyntheticMonitorResponse.ts +8 -8
  255. package/Types/Name.ts +65 -65
  256. package/Types/NotificationRule/NotificationRuleType.ts +3 -3
  257. package/Types/NotificationSetting/NotificationSettingEventType.ts +18 -18
  258. package/Types/ObjectID.ts +73 -73
  259. package/Types/OnCallDutyPolicy/Layer.ts +782 -824
  260. package/Types/OnCallDutyPolicy/OnCalDutyExecutionLogTimelineStatus.ts +6 -6
  261. package/Types/OnCallDutyPolicy/OnCallDutyPolicyAlertStatus.ts +3 -3
  262. package/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.ts +5 -5
  263. package/Types/OnCallDutyPolicy/RestrictionTimes.ts +177 -179
  264. package/Types/Operation/OperationResult.ts +2 -2
  265. package/Types/Operation/OperationStatus.ts +5 -5
  266. package/Types/Permission.ts +3373 -3412
  267. package/Types/Phone.ts +58 -59
  268. package/Types/Port.ts +73 -73
  269. package/Types/PositiveNumber.ts +53 -61
  270. package/Types/PricingPlan.ts +5 -5
  271. package/Types/Probe/ProbeApiIngestResponse.ts +6 -6
  272. package/Types/Probe/ProbeMonitorResponse.ts +25 -25
  273. package/Types/Probe/ProbeStatusReport.ts +4 -4
  274. package/Types/Reflection.ts +4 -4
  275. package/Types/SMS/SMS.ts +3 -3
  276. package/Types/SMS/SmsTemplateType.ts +9 -9
  277. package/Types/SSO/DigestMethod.ts +4 -4
  278. package/Types/SSO/SignatureMethod.ts +4 -4
  279. package/Types/ScheduledEvent/ScheduledEventState.ts +4 -4
  280. package/Types/ScreenSizeType.ts +3 -3
  281. package/Types/SecuritySeverity.ts +4 -4
  282. package/Types/SerializableObject.ts +12 -12
  283. package/Types/SerializableObjectDictionary.ts +58 -58
  284. package/Types/ServiceCatalog/ServiceLanguage.ts +20 -0
  285. package/Types/Sleep.ts +6 -6
  286. package/Types/SmsStatus.ts +3 -3
  287. package/Types/StatusPage/StatusPageChartType.ts +6 -6
  288. package/Types/Text.ts +126 -130
  289. package/Types/Time/StartAndEndTime.ts +2 -2
  290. package/Types/Timezone.ts +592 -592
  291. package/Types/TimezoneCode.ts +63 -0
  292. package/Types/Typeof.ts +4 -4
  293. package/Types/UserNotification/UserNotificationEventType.ts +1 -1
  294. package/Types/UserNotification/UserNotificationExecutionStatus.ts +5 -5
  295. package/Types/UserNotification/UserNotificationStatus.ts +5 -5
  296. package/Types/UserType.ts +4 -4
  297. package/Types/Version.ts +50 -50
  298. package/Types/WebsiteRequest.ts +55 -55
  299. package/Types/Workflow/Component.ts +72 -72
  300. package/Types/Workflow/ComponentID.ts +16 -16
  301. package/Types/Workflow/Components/API.ts +349 -357
  302. package/Types/Workflow/Components/BaseModel.ts +572 -573
  303. package/Types/Workflow/Components/Condition.ts +60 -60
  304. package/Types/Workflow/Components/Email.ts +102 -103
  305. package/Types/Workflow/Components/JSON.ts +151 -156
  306. package/Types/Workflow/Components/JavaScript.ts +61 -61
  307. package/Types/Workflow/Components/Log.ts +39 -39
  308. package/Types/Workflow/Components/Manual.ts +33 -34
  309. package/Types/Workflow/Components/MicrosoftTeams.ts +61 -62
  310. package/Types/Workflow/Components/Schedule.ts +32 -32
  311. package/Types/Workflow/Components/Slack.ts +63 -64
  312. package/Types/Workflow/Components/Webhook.ts +51 -51
  313. package/Types/Workflow/Components/Workflow.ts +38 -38
  314. package/Types/Workflow/Components.ts +76 -76
  315. package/Types/Workflow/WorkflowPlan.ts +4 -4
  316. package/Types/Workflow/WorkflowStatus.ts +6 -6
  317. package/Types/XML.ts +16 -16
  318. package/Typings/Index.d.ts +3 -3
  319. package/Utils/API.ts +355 -309
  320. package/Utils/Analytics.ts +31 -31
  321. package/Utils/CronTime.ts +7 -7
  322. package/Utils/Enum.ts +14 -0
  323. package/Utils/Faker.ts +25 -25
  324. package/Utils/ObjectUtil.ts +5 -5
  325. package/Utils/Realtime.ts +24 -24
  326. package/Utils/Slug.ts +15 -15
  327. package/Utils/UUID.ts +4 -4
  328. package/build/dist/AnalyticsModels/BaseModel.js +32 -32
  329. package/build/dist/AnalyticsModels/BaseModel.js.map +1 -1
  330. package/build/dist/AnalyticsModels/CommonModel.js +14 -17
  331. package/build/dist/AnalyticsModels/CommonModel.js.map +1 -1
  332. package/build/dist/AnalyticsModels/NestedModel.js +1 -1
  333. package/build/dist/AnalyticsModels/NestedModel.js.map +1 -1
  334. package/build/dist/Models/AccessControlModel.js +1 -1
  335. package/build/dist/Models/AccessControlModel.js.map +1 -1
  336. package/build/dist/Models/BaseModel.js +28 -28
  337. package/build/dist/Models/BaseModel.js.map +1 -1
  338. package/build/dist/Models/FileModel.js +14 -14
  339. package/build/dist/Models/FileModel.js.map +1 -1
  340. package/build/dist/Models/GlobalConfig.js +1 -1
  341. package/build/dist/Models/GlobalConfig.js.map +1 -1
  342. package/build/dist/Models/TenantModel.js +1 -1
  343. package/build/dist/Models/TenantModel.js.map +1 -1
  344. package/build/dist/Models/UserModel.js +1 -1
  345. package/build/dist/Models/UserModel.js.map +1 -1
  346. package/build/dist/ServiceRoute.js +17 -17
  347. package/build/dist/Tests/MockType.js +5 -0
  348. package/build/dist/Tests/MockType.js.map +1 -0
  349. package/build/dist/Tests/Spy.js +4 -0
  350. package/build/dist/Tests/Spy.js.map +1 -0
  351. package/build/dist/Tests/Types/API/ErrorResponse.test.js +5 -5
  352. package/build/dist/Tests/Types/API/ErrorResponse.test.js.map +1 -1
  353. package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js +18 -18
  354. package/build/dist/Tests/Types/API/HTTPErrorResponse.test.js.map +1 -1
  355. package/build/dist/Tests/Types/API/HTTPMethod.test.js +10 -10
  356. package/build/dist/Tests/Types/API/HTTPMethod.test.js.map +1 -1
  357. package/build/dist/Tests/Types/API/Headers.test.js +8 -8
  358. package/build/dist/Tests/Types/API/Headers.test.js.map +1 -1
  359. package/build/dist/Tests/Types/API/Hostname.test.js +11 -11
  360. package/build/dist/Tests/Types/API/Hostname.test.js.map +1 -1
  361. package/build/dist/Tests/Types/API/Protocal.test.js +12 -12
  362. package/build/dist/Tests/Types/API/Protocal.test.js.map +1 -1
  363. package/build/dist/Tests/Types/API/Response.test.js +7 -7
  364. package/build/dist/Tests/Types/API/Response.test.js.map +1 -1
  365. package/build/dist/Tests/Types/API/ResponseType.test.js +8 -8
  366. package/build/dist/Tests/Types/API/ResponseType.test.js.map +1 -1
  367. package/build/dist/Tests/Types/API/Route.test.js +15 -15
  368. package/build/dist/Tests/Types/API/Route.test.js.map +1 -1
  369. package/build/dist/Tests/Types/API/StatusCode.test.js +14 -14
  370. package/build/dist/Tests/Types/API/StatusCode.test.js.map +1 -1
  371. package/build/dist/Tests/Types/API/URL.test.js +20 -20
  372. package/build/dist/Tests/Types/API/URL.test.js.map +1 -1
  373. package/build/dist/Tests/Types/Alerts/AlertEventType.test.js +22 -22
  374. package/build/dist/Tests/Types/Alerts/AlertEventType.test.js.map +1 -1
  375. package/build/dist/Tests/Types/Alerts/AlertType.test.js +12 -12
  376. package/build/dist/Tests/Types/Alerts/AlertType.test.js.map +1 -1
  377. package/build/dist/Tests/Types/AppEnvironment.test.js +8 -8
  378. package/build/dist/Tests/Types/AppEnvironment.test.js.map +1 -1
  379. package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js +8 -8
  380. package/build/dist/Tests/Types/ApplicationLog/ApplicationLogType.test.js.map +1 -1
  381. package/build/dist/Tests/Types/ArrayUtil.test.js +9 -9
  382. package/build/dist/Tests/Types/ArrayUtil.test.js.map +1 -1
  383. package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js +75 -77
  384. package/build/dist/Tests/Types/Billing/SubscriptionPlan.test.js.map +1 -1
  385. package/build/dist/Tests/Types/BrandColors.test.js +55 -55
  386. package/build/dist/Tests/Types/BrandColors.test.js.map +1 -1
  387. package/build/dist/Tests/Types/Char.test.js +72 -72
  388. package/build/dist/Tests/Types/Char.test.js.map +1 -1
  389. package/build/dist/Tests/Types/Code/CodeType.test.js +8 -8
  390. package/build/dist/Tests/Types/Code/CodeType.test.js.map +1 -1
  391. package/build/dist/Tests/Types/Color.test.js +24 -24
  392. package/build/dist/Tests/Types/Color.test.js.map +1 -1
  393. package/build/dist/Tests/Types/Company/CompanySize.test.js +12 -12
  394. package/build/dist/Tests/Types/Company/CompanySize.test.js.map +1 -1
  395. package/build/dist/Tests/Types/Company/JobRole.test.js +14 -14
  396. package/build/dist/Tests/Types/Company/JobRole.test.js.map +1 -1
  397. package/build/dist/Tests/Types/Countries.test.js +244 -244
  398. package/build/dist/Tests/Types/Countries.test.js.map +1 -1
  399. package/build/dist/Tests/Types/Database/ColumnLength.test.js +15 -15
  400. package/build/dist/Tests/Types/Database/ColumnLength.test.js.map +1 -1
  401. package/build/dist/Tests/Types/Database/ColumnType.test.js +52 -52
  402. package/build/dist/Tests/Types/Database/ColumnType.test.js.map +1 -1
  403. package/build/dist/Tests/Types/Database/Columns.test.js +14 -14
  404. package/build/dist/Tests/Types/Database/Columns.test.js.map +1 -1
  405. package/build/dist/Tests/Types/Database/CompareBase.test.js +13 -13
  406. package/build/dist/Tests/Types/Database/CompareBase.test.js.map +1 -1
  407. package/build/dist/Tests/Types/Database/Date.test.js +32 -32
  408. package/build/dist/Tests/Types/Database/Date.test.js.map +1 -1
  409. package/build/dist/Tests/Types/Database/EqualToOrNull.test.js +30 -30
  410. package/build/dist/Tests/Types/Database/EqualToOrNull.test.js.map +1 -1
  411. package/build/dist/Tests/Types/Database/InBetween.test.js +20 -20
  412. package/build/dist/Tests/Types/Database/InBetween.test.js.map +1 -1
  413. package/build/dist/Tests/Types/Database/LimitMax.test.js +9 -9
  414. package/build/dist/Tests/Types/Database/LimitMax.test.js.map +1 -1
  415. package/build/dist/Tests/Types/Database/NotEqual.test.js +9 -9
  416. package/build/dist/Tests/Types/Database/NotEqual.test.js.map +1 -1
  417. package/build/dist/Tests/Types/Database/Search.test.js +6 -6
  418. package/build/dist/Tests/Types/Database/Search.test.js.map +1 -1
  419. package/build/dist/Tests/Types/DatabaseType.test.js +4 -4
  420. package/build/dist/Tests/Types/DatabaseType.test.js.map +1 -1
  421. package/build/dist/Tests/Types/Date.test.js +32 -32
  422. package/build/dist/Tests/Types/Date.test.js.map +1 -1
  423. package/build/dist/Tests/Types/Dictionary.test.js +10 -10
  424. package/build/dist/Tests/Types/Dictionary.test.js.map +1 -1
  425. package/build/dist/Tests/Types/Domain.test.js +23 -23
  426. package/build/dist/Tests/Types/Domain.test.js.map +1 -1
  427. package/build/dist/Tests/Types/Email/Email.test.js +31 -31
  428. package/build/dist/Tests/Types/Email/Email.test.js.map +1 -1
  429. package/build/dist/Tests/Types/EmailWithName.test.js +11 -11
  430. package/build/dist/Tests/Types/EmailWithName.test.js.map +1 -1
  431. package/build/dist/Tests/Types/EncryptionAlgorithm.test.js +4 -4
  432. package/build/dist/Tests/Types/EncryptionAlgorithm.test.js.map +1 -1
  433. package/build/dist/Tests/Types/Exception/ApiException.test.js +6 -7
  434. package/build/dist/Tests/Types/Exception/ApiException.test.js.map +1 -1
  435. package/build/dist/Tests/Types/Exception/BadDataException.test.js +7 -7
  436. package/build/dist/Tests/Types/Exception/BadDataException.test.js.map +1 -1
  437. package/build/dist/Tests/Types/Exception/BadOperationException.test.js +6 -7
  438. package/build/dist/Tests/Types/Exception/BadOperationException.test.js.map +1 -1
  439. package/build/dist/Tests/Types/Exception/BadRequestException.test.js +7 -7
  440. package/build/dist/Tests/Types/Exception/BadRequestException.test.js.map +1 -1
  441. package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js +5 -5
  442. package/build/dist/Tests/Types/Exception/DatabaseNotConnectedException.test.js.map +1 -1
  443. package/build/dist/Tests/Types/Exception/Exception.test.js +9 -9
  444. package/build/dist/Tests/Types/Exception/Exception.test.js.map +1 -1
  445. package/build/dist/Tests/Types/Exception/NotImplementedException.test.js +5 -5
  446. package/build/dist/Tests/Types/Exception/NotImplementedException.test.js.map +1 -1
  447. package/build/dist/Tests/Types/File.test.js +13 -13
  448. package/build/dist/Tests/Types/File.test.js.map +1 -1
  449. package/build/dist/Tests/Types/HashedString.test.js +8 -8
  450. package/build/dist/Tests/Types/HashedString.test.js.map +1 -1
  451. package/build/dist/Tests/Types/Html.test.js +5 -5
  452. package/build/dist/Tests/Types/Html.test.js.map +1 -1
  453. package/build/dist/Tests/Types/IP/IP.test.js +40 -40
  454. package/build/dist/Tests/Types/IP/IP.test.js.map +1 -1
  455. package/build/dist/Tests/Types/IP/IPType.test.js +6 -6
  456. package/build/dist/Tests/Types/IP/IPType.test.js.map +1 -1
  457. package/build/dist/Tests/Types/IP/IPv4.test.js +9 -9
  458. package/build/dist/Tests/Types/IP/IPv4.test.js.map +1 -1
  459. package/build/dist/Tests/Types/IP/IPv6.test.js +9 -9
  460. package/build/dist/Tests/Types/IP/IPv6.test.js.map +1 -1
  461. package/build/dist/Tests/Types/JSON.test.js +28 -28
  462. package/build/dist/Tests/Types/JSON.test.js.map +1 -1
  463. package/build/dist/Tests/Types/JSONFunctions.test.js +13 -13
  464. package/build/dist/Tests/Types/JSONFunctions.test.js.map +1 -1
  465. package/build/dist/Tests/Types/ListData.test.js +10 -10
  466. package/build/dist/Tests/Types/ListData.test.js.map +1 -1
  467. package/build/dist/Tests/Types/Name.test.js +17 -17
  468. package/build/dist/Tests/Types/Name.test.js.map +1 -1
  469. package/build/dist/Tests/Types/ObjectID.test.js +8 -8
  470. package/build/dist/Tests/Types/ObjectID.test.js.map +1 -1
  471. package/build/dist/Tests/Types/Permission.test.js +6 -6
  472. package/build/dist/Tests/Types/Permission.test.js.map +1 -1
  473. package/build/dist/Tests/Types/Phone.test.js +21 -21
  474. package/build/dist/Tests/Types/Phone.test.js.map +1 -1
  475. package/build/dist/Tests/Types/Port.test.js +13 -13
  476. package/build/dist/Tests/Types/Port.test.js.map +1 -1
  477. package/build/dist/Tests/Types/PositiveNumber.test.js +19 -19
  478. package/build/dist/Tests/Types/PositiveNumber.test.js.map +1 -1
  479. package/build/dist/Tests/Types/SecuritySeverity.test.js +10 -10
  480. package/build/dist/Tests/Types/SecuritySeverity.test.js.map +1 -1
  481. package/build/dist/Tests/Types/SerializableObject.test.js +14 -12
  482. package/build/dist/Tests/Types/SerializableObject.test.js.map +1 -1
  483. package/build/dist/Tests/Types/Sleep.test.js +4 -4
  484. package/build/dist/Tests/Types/Sleep.test.js.map +1 -1
  485. package/build/dist/Tests/Types/Text.test.js +5 -5
  486. package/build/dist/Tests/Types/Text.test.js.map +1 -1
  487. package/build/dist/Tests/Types/Timezone.test.js +593 -593
  488. package/build/dist/Tests/Types/Timezone.test.js.map +1 -1
  489. package/build/dist/Tests/Types/Typeof.test.js +10 -10
  490. package/build/dist/Tests/Types/Typeof.test.js.map +1 -1
  491. package/build/dist/Tests/Types/UserType.test.js +10 -10
  492. package/build/dist/Tests/Types/UserType.test.js.map +1 -1
  493. package/build/dist/Tests/Types/Version.test.js +21 -21
  494. package/build/dist/Tests/Types/Version.test.js.map +1 -1
  495. package/build/dist/Tests/Types/XML.test.js +17 -17
  496. package/build/dist/Tests/Types/XML.test.js.map +1 -1
  497. package/build/dist/Tests/Utils/API.test.js +83 -83
  498. package/build/dist/Tests/Utils/API.test.js.map +1 -1
  499. package/build/dist/Tests/Utils/Analytics.test.js +25 -25
  500. package/build/dist/Tests/Utils/Analytics.test.js.map +1 -1
  501. package/build/dist/Tests/Utils/CronTime.test.js +14 -14
  502. package/build/dist/Tests/Utils/CronTime.test.js.map +1 -1
  503. package/build/dist/Tests/Utils/Faker.test.js +10 -10
  504. package/build/dist/Tests/Utils/Faker.test.js.map +1 -1
  505. package/build/dist/Tests/Utils/Slug.test.js +12 -12
  506. package/build/dist/Tests/Utils/Slug.test.js.map +1 -1
  507. package/build/dist/Tests/Utils/UUID.test.js +3 -3
  508. package/build/dist/Tests/Utils/UUID.test.js.map +1 -1
  509. package/build/dist/Types/API/HTTPErrorResponse.js +10 -11
  510. package/build/dist/Types/API/HTTPErrorResponse.js.map +1 -1
  511. package/build/dist/Types/API/HTTPMethod.js.map +1 -1
  512. package/build/dist/Types/API/HTTPResponse.js +9 -9
  513. package/build/dist/Types/API/HTTPResponse.js.map +1 -1
  514. package/build/dist/Types/API/Hostname.js +14 -14
  515. package/build/dist/Types/API/Hostname.js.map +1 -1
  516. package/build/dist/Types/API/Protocol.js.map +1 -1
  517. package/build/dist/Types/API/ResponseType.js.map +1 -1
  518. package/build/dist/Types/API/Route.js +11 -11
  519. package/build/dist/Types/API/Route.js.map +1 -1
  520. package/build/dist/Types/API/StatusCode.js +3 -4
  521. package/build/dist/Types/API/StatusCode.js.map +1 -1
  522. package/build/dist/Types/API/URL.js +44 -44
  523. package/build/dist/Types/API/URL.js.map +1 -1
  524. package/build/dist/Types/Alerts/AlertEventType.js.map +1 -1
  525. package/build/dist/Types/Alerts/AlertType.js.map +1 -1
  526. package/build/dist/Types/AnalyticsDatabase/AnalyticsTableEngine.js.map +1 -1
  527. package/build/dist/Types/AnalyticsDatabase/TableColumn.js +6 -7
  528. package/build/dist/Types/AnalyticsDatabase/TableColumn.js.map +1 -1
  529. package/build/dist/Types/AnalyticsDatabase/TableColumnType.js.map +1 -1
  530. package/build/dist/Types/AppEnvironment.js.map +1 -1
  531. package/build/dist/Types/ApplicationLog/ApplicationLogType.js.map +1 -1
  532. package/build/dist/Types/ArrayUtil.js.map +1 -1
  533. package/build/dist/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.js +10 -11
  534. package/build/dist/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.js.map +1 -1
  535. package/build/dist/Types/BaseDatabase/DatabaseType.js.map +1 -1
  536. package/build/dist/Types/BaseDatabase/EqualToOrNull.js +6 -6
  537. package/build/dist/Types/BaseDatabase/EqualToOrNull.js.map +1 -1
  538. package/build/dist/Types/BaseDatabase/GreaterThan.js +6 -6
  539. package/build/dist/Types/BaseDatabase/GreaterThan.js.map +1 -1
  540. package/build/dist/Types/BaseDatabase/GreaterThanOrEqual.js +6 -6
  541. package/build/dist/Types/BaseDatabase/GreaterThanOrEqual.js.map +1 -1
  542. package/build/dist/Types/BaseDatabase/InBetween.js +8 -8
  543. package/build/dist/Types/BaseDatabase/InBetween.js.map +1 -1
  544. package/build/dist/Types/BaseDatabase/Includes.js +7 -7
  545. package/build/dist/Types/BaseDatabase/Includes.js.map +1 -1
  546. package/build/dist/Types/BaseDatabase/IsNull.js +6 -6
  547. package/build/dist/Types/BaseDatabase/IsNull.js.map +1 -1
  548. package/build/dist/Types/BaseDatabase/LessThan.js +6 -6
  549. package/build/dist/Types/BaseDatabase/LessThan.js.map +1 -1
  550. package/build/dist/Types/BaseDatabase/LessThanOrEqual.js +6 -6
  551. package/build/dist/Types/BaseDatabase/LessThanOrEqual.js.map +1 -1
  552. package/build/dist/Types/BaseDatabase/ModelPermission.js +1 -1
  553. package/build/dist/Types/BaseDatabase/ModelPermission.js.map +1 -1
  554. package/build/dist/Types/BaseDatabase/NotEqual.js +6 -6
  555. package/build/dist/Types/BaseDatabase/NotEqual.js.map +1 -1
  556. package/build/dist/Types/BaseDatabase/NotNull.js +6 -6
  557. package/build/dist/Types/BaseDatabase/NotNull.js.map +1 -1
  558. package/build/dist/Types/BaseDatabase/Search.js +6 -6
  559. package/build/dist/Types/BaseDatabase/Search.js.map +1 -1
  560. package/build/dist/Types/BaseDatabase/SortOrder.js.map +1 -1
  561. package/build/dist/Types/Billing/MeteredPlan.js.map +1 -1
  562. package/build/dist/Types/Billing/SubscriptionPlan.js +15 -16
  563. package/build/dist/Types/Billing/SubscriptionPlan.js.map +1 -1
  564. package/build/dist/Types/Billing/SubscriptionStatus.js.map +1 -1
  565. package/build/dist/Types/BrandColors.js +40 -40
  566. package/build/dist/Types/BrandColors.js.map +1 -1
  567. package/build/dist/Types/BrowserType.js.map +1 -1
  568. package/build/dist/Types/Call/CallRequest.js +1 -1
  569. package/build/dist/Types/Call/CallRequest.js.map +1 -1
  570. package/build/dist/Types/Call/CallStatus.js.map +1 -1
  571. package/build/dist/Types/Code/CodeType.js.map +1 -1
  572. package/build/dist/Types/CodeRepository/CodeRepositoryType.js +7 -0
  573. package/build/dist/Types/CodeRepository/CodeRepositoryType.js.map +1 -0
  574. package/build/dist/Types/CodeRepository/PullRequest.js +2 -0
  575. package/build/dist/Types/CodeRepository/PullRequest.js.map +1 -0
  576. package/build/dist/Types/CodeRepository/PullRequestState.js +8 -0
  577. package/build/dist/Types/CodeRepository/PullRequestState.js.map +1 -0
  578. package/build/dist/Types/Color.js +13 -13
  579. package/build/dist/Types/Color.js.map +1 -1
  580. package/build/dist/Types/Company/CompanySize.js.map +1 -1
  581. package/build/dist/Types/Company/JobRole.js.map +1 -1
  582. package/build/dist/Types/Copilot/CopilotEventStatus.js +7 -0
  583. package/build/dist/Types/Copilot/CopilotEventStatus.js.map +1 -0
  584. package/build/dist/Types/Copilot/CopilotEventType.js +7 -0
  585. package/build/dist/Types/Copilot/CopilotEventType.js.map +1 -0
  586. package/build/dist/Types/Countries.js.map +1 -1
  587. package/build/dist/Types/Currency.js +3 -3
  588. package/build/dist/Types/Currency.js.map +1 -1
  589. package/build/dist/Types/CustomField/CustomFieldType.js.map +1 -1
  590. package/build/dist/Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid.js.map +1 -1
  591. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +2 -2
  592. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
  593. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +2 -2
  594. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
  595. package/build/dist/Types/Database/AccessControl/TableAccessControl.js.map +1 -1
  596. package/build/dist/Types/Database/AccessControl/TableBillingAccessControl.js.map +1 -1
  597. package/build/dist/Types/Database/AccessControlColumn.js.map +1 -1
  598. package/build/dist/Types/Database/AllowUserQueryWithoutTenant.js.map +1 -1
  599. package/build/dist/Types/Database/CanAccessIfCanReadOn.js.map +1 -1
  600. package/build/dist/Types/Database/ColumnLength.js +1 -1
  601. package/build/dist/Types/Database/ColumnLength.js.map +1 -1
  602. package/build/dist/Types/Database/ColumnType.js.map +1 -1
  603. package/build/dist/Types/Database/Columns.js.map +1 -1
  604. package/build/dist/Types/Database/CompareBase.js +5 -5
  605. package/build/dist/Types/Database/CompareBase.js.map +1 -1
  606. package/build/dist/Types/Database/CrudApiEndpoint.js.map +1 -1
  607. package/build/dist/Types/Database/CurrentUserCanAccessRecordBy.js.map +1 -1
  608. package/build/dist/Types/Database/DatabaseProperty.js +3 -3
  609. package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
  610. package/build/dist/Types/Database/Date.js +2 -2
  611. package/build/dist/Types/Database/Date.js.map +1 -1
  612. package/build/dist/Types/Database/EnableDocumentation.js +1 -2
  613. package/build/dist/Types/Database/EnableDocumentation.js.map +1 -1
  614. package/build/dist/Types/Database/EnableWorkflow.js.map +1 -1
  615. package/build/dist/Types/Database/IsPermissionsIf.js.map +1 -1
  616. package/build/dist/Types/Database/LabelsColumn.js.map +1 -1
  617. package/build/dist/Types/Database/MultiTenentQueryAllowed.js.map +1 -1
  618. package/build/dist/Types/Database/SlugifyColumn.js.map +1 -1
  619. package/build/dist/Types/Database/TableColumn.js +2 -2
  620. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  621. package/build/dist/Types/Database/TableColumnType.js.map +1 -1
  622. package/build/dist/Types/Database/TableMetadata.js.map +1 -1
  623. package/build/dist/Types/Database/TenantColumn.js.map +1 -1
  624. package/build/dist/Types/Database/TotalItemsBy.js.map +1 -1
  625. package/build/dist/Types/Database/UniqueColumnBy.js +2 -2
  626. package/build/dist/Types/Database/UniqueColumnBy.js.map +1 -1
  627. package/build/dist/Types/DatabaseType.js.map +1 -1
  628. package/build/dist/Types/Date.js +132 -136
  629. package/build/dist/Types/Date.js.map +1 -1
  630. package/build/dist/Types/Day/DayOfWeek.js.map +1 -1
  631. package/build/dist/Types/Decimal.js +8 -8
  632. package/build/dist/Types/Decimal.js.map +1 -1
  633. package/build/dist/Types/DiskSize.js +3 -3
  634. package/build/dist/Types/DiskSize.js.map +1 -1
  635. package/build/dist/Types/Domain.js +13 -13
  636. package/build/dist/Types/Domain.js.map +1 -1
  637. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  638. package/build/dist/Types/Email.js +32 -32
  639. package/build/dist/Types/Email.js.map +1 -1
  640. package/build/dist/Types/EmailWithName.js +4 -4
  641. package/build/dist/Types/EmailWithName.js.map +1 -1
  642. package/build/dist/Types/EncryptionAlgorithm.js.map +1 -1
  643. package/build/dist/Types/Events/EventInterval.js.map +1 -1
  644. package/build/dist/Types/Events/Recurring.js +15 -15
  645. package/build/dist/Types/Events/Recurring.js.map +1 -1
  646. package/build/dist/Types/Exception/ApiException.js +2 -2
  647. package/build/dist/Types/Exception/ApiException.js.map +1 -1
  648. package/build/dist/Types/Exception/BadDataException.js +2 -2
  649. package/build/dist/Types/Exception/BadDataException.js.map +1 -1
  650. package/build/dist/Types/Exception/BadOperationException.js +2 -2
  651. package/build/dist/Types/Exception/BadOperationException.js.map +1 -1
  652. package/build/dist/Types/Exception/BadRequestException.js +2 -2
  653. package/build/dist/Types/Exception/BadRequestException.js.map +1 -1
  654. package/build/dist/Types/Exception/DatabaseNotConnectedException.js +3 -3
  655. package/build/dist/Types/Exception/DatabaseNotConnectedException.js.map +1 -1
  656. package/build/dist/Types/Exception/Exception.js +1 -1
  657. package/build/dist/Types/Exception/Exception.js.map +1 -1
  658. package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
  659. package/build/dist/Types/Exception/NotAuthenticatedException.js +2 -2
  660. package/build/dist/Types/Exception/NotAuthenticatedException.js.map +1 -1
  661. package/build/dist/Types/Exception/NotAuthorizedException.js +2 -2
  662. package/build/dist/Types/Exception/NotAuthorizedException.js.map +1 -1
  663. package/build/dist/Types/Exception/NotFoundException.js +2 -2
  664. package/build/dist/Types/Exception/NotFoundException.js.map +1 -1
  665. package/build/dist/Types/Exception/NotImplementedException.js +3 -3
  666. package/build/dist/Types/Exception/NotImplementedException.js.map +1 -1
  667. package/build/dist/Types/Exception/PaymentRequiredException.js +2 -2
  668. package/build/dist/Types/Exception/PaymentRequiredException.js.map +1 -1
  669. package/build/dist/Types/Exception/ServerException.js +3 -3
  670. package/build/dist/Types/Exception/ServerException.js.map +1 -1
  671. package/build/dist/Types/Exception/SsoAuthorizationException.js +3 -3
  672. package/build/dist/Types/Exception/SsoAuthorizationException.js.map +1 -1
  673. package/build/dist/Types/Exception/TenantNotFoundException.js +2 -2
  674. package/build/dist/Types/Exception/TenantNotFoundException.js.map +1 -1
  675. package/build/dist/Types/Exception/TimeoutException.js +2 -2
  676. package/build/dist/Types/Exception/TimeoutException.js.map +1 -1
  677. package/build/dist/Types/Exception/UnableToReachServer.js +2 -2
  678. package/build/dist/Types/Exception/UnableToReachServer.js.map +1 -1
  679. package/build/dist/Types/Exception/WebsiteRequestException.js +2 -2
  680. package/build/dist/Types/Exception/WebsiteRequestException.js.map +1 -1
  681. package/build/dist/Types/File/MimeType.js.map +1 -1
  682. package/build/dist/Types/Filter/FilterCondition.js.map +1 -1
  683. package/build/dist/Types/Filter/FilterType.js.map +1 -1
  684. package/build/dist/Types/HashCode.js.map +1 -1
  685. package/build/dist/Types/HashedString.js +14 -14
  686. package/build/dist/Types/HashedString.js.map +1 -1
  687. package/build/dist/Types/Html.js +1 -1
  688. package/build/dist/Types/Html.js.map +1 -1
  689. package/build/dist/Types/IP/IP.js +13 -13
  690. package/build/dist/Types/IP/IP.js.map +1 -1
  691. package/build/dist/Types/IP/IPType.js.map +1 -1
  692. package/build/dist/Types/IP/IPv4.js +3 -3
  693. package/build/dist/Types/IP/IPv4.js.map +1 -1
  694. package/build/dist/Types/IP/IPv6.js +3 -3
  695. package/build/dist/Types/IP/IPv6.js.map +1 -1
  696. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  697. package/build/dist/Types/Infrastructure/OSType.js.map +1 -1
  698. package/build/dist/Types/JSON.js.map +1 -1
  699. package/build/dist/Types/JSONFunctions.js +33 -35
  700. package/build/dist/Types/JSONFunctions.js.map +1 -1
  701. package/build/dist/Types/ListData.js.map +1 -1
  702. package/build/dist/Types/Mail/MailStatus.js.map +1 -1
  703. package/build/dist/Types/MeteredPlan/ProductType.js.map +1 -1
  704. package/build/dist/Types/Monitor/CriteriaFilter.js +1 -1
  705. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  706. package/build/dist/Types/Monitor/MonitorCriteria.js +17 -19
  707. package/build/dist/Types/Monitor/MonitorCriteria.js.map +1 -1
  708. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +54 -55
  709. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  710. package/build/dist/Types/Monitor/MonitorStep.js +48 -52
  711. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  712. package/build/dist/Types/Monitor/MonitorSteps.js +19 -19
  713. package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
  714. package/build/dist/Types/Monitor/MonitorType.js +37 -23
  715. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  716. package/build/dist/Types/Monitor/SyntheticMonitors/BrowserType.js +1 -1
  717. package/build/dist/Types/Monitor/SyntheticMonitors/ScreenSizeType.js +1 -1
  718. package/build/dist/Types/Name.js +16 -16
  719. package/build/dist/Types/Name.js.map +1 -1
  720. package/build/dist/Types/NotificationRule/NotificationRuleType.js.map +1 -1
  721. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  722. package/build/dist/Types/ObjectID.js +15 -15
  723. package/build/dist/Types/ObjectID.js.map +1 -1
  724. package/build/dist/Types/OnCallDutyPolicy/Layer.js +14 -18
  725. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  726. package/build/dist/Types/OnCallDutyPolicy/OnCalDutyExecutionLogTimelineStatus.js.map +1 -1
  727. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyAlertStatus.js.map +1 -1
  728. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js.map +1 -1
  729. package/build/dist/Types/OnCallDutyPolicy/RestrictionTimes.js +14 -14
  730. package/build/dist/Types/OnCallDutyPolicy/RestrictionTimes.js.map +1 -1
  731. package/build/dist/Types/Operation/OperationResult.js.map +1 -1
  732. package/build/dist/Types/Operation/OperationStatus.js.map +1 -1
  733. package/build/dist/Types/Permission.js +726 -686
  734. package/build/dist/Types/Permission.js.map +1 -1
  735. package/build/dist/Types/Phone.js +8 -8
  736. package/build/dist/Types/Phone.js.map +1 -1
  737. package/build/dist/Types/Port.js +11 -11
  738. package/build/dist/Types/Port.js.map +1 -1
  739. package/build/dist/Types/PositiveNumber.js +7 -8
  740. package/build/dist/Types/PositiveNumber.js.map +1 -1
  741. package/build/dist/Types/SMS/SmsTemplateType.js.map +1 -1
  742. package/build/dist/Types/SSO/DigestMethod.js.map +1 -1
  743. package/build/dist/Types/SSO/SignatureMethod.js.map +1 -1
  744. package/build/dist/Types/ScheduledEvent/ScheduledEventState.js.map +1 -1
  745. package/build/dist/Types/ScreenSizeType.js.map +1 -1
  746. package/build/dist/Types/SecuritySeverity.js.map +1 -1
  747. package/build/dist/Types/SerializableObject.js +1 -1
  748. package/build/dist/Types/SerializableObject.js.map +1 -1
  749. package/build/dist/Types/SerializableObjectDictionary.js +29 -29
  750. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  751. package/build/dist/Types/ServiceCatalog/ServiceLanguage.js +21 -0
  752. package/build/dist/Types/ServiceCatalog/ServiceLanguage.js.map +1 -0
  753. package/build/dist/Types/Sleep.js.map +1 -1
  754. package/build/dist/Types/SmsStatus.js.map +1 -1
  755. package/build/dist/Types/StatusPage/StatusPageChartType.js.map +1 -1
  756. package/build/dist/Types/Text.js +35 -35
  757. package/build/dist/Types/Text.js.map +1 -1
  758. package/build/dist/Types/Timezone.js.map +1 -1
  759. package/build/dist/Types/TimezoneCode.js +64 -0
  760. package/build/dist/Types/TimezoneCode.js.map +1 -0
  761. package/build/dist/Types/Typeof.js.map +1 -1
  762. package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
  763. package/build/dist/Types/UserNotification/UserNotificationExecutionStatus.js.map +1 -1
  764. package/build/dist/Types/UserNotification/UserNotificationStatus.js.map +1 -1
  765. package/build/dist/Types/UserType.js.map +1 -1
  766. package/build/dist/Types/Version.js +9 -9
  767. package/build/dist/Types/Version.js.map +1 -1
  768. package/build/dist/Types/WebsiteRequest.js +3 -3
  769. package/build/dist/Types/WebsiteRequest.js.map +1 -1
  770. package/build/dist/Types/Workflow/Component.js.map +1 -1
  771. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  772. package/build/dist/Types/Workflow/Components/API.js +139 -139
  773. package/build/dist/Types/Workflow/Components/API.js.map +1 -1
  774. package/build/dist/Types/Workflow/Components/BaseModel.js +139 -139
  775. package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
  776. package/build/dist/Types/Workflow/Components/Condition.js +27 -27
  777. package/build/dist/Types/Workflow/Components/Condition.js.map +1 -1
  778. package/build/dist/Types/Workflow/Components/Email.js +44 -44
  779. package/build/dist/Types/Workflow/Components/Email.js.map +1 -1
  780. package/build/dist/Types/Workflow/Components/JSON.js +60 -60
  781. package/build/dist/Types/Workflow/Components/JSON.js.map +1 -1
  782. package/build/dist/Types/Workflow/Components/JavaScript.js +26 -26
  783. package/build/dist/Types/Workflow/Components/JavaScript.js.map +1 -1
  784. package/build/dist/Types/Workflow/Components/Log.js +15 -15
  785. package/build/dist/Types/Workflow/Components/Log.js.map +1 -1
  786. package/build/dist/Types/Workflow/Components/Manual.js +12 -12
  787. package/build/dist/Types/Workflow/Components/Manual.js.map +1 -1
  788. package/build/dist/Types/Workflow/Components/MicrosoftTeams.js +26 -26
  789. package/build/dist/Types/Workflow/Components/MicrosoftTeams.js.map +1 -1
  790. package/build/dist/Types/Workflow/Components/Schedule.js +12 -12
  791. package/build/dist/Types/Workflow/Components/Schedule.js.map +1 -1
  792. package/build/dist/Types/Workflow/Components/Slack.js +26 -26
  793. package/build/dist/Types/Workflow/Components/Slack.js.map +1 -1
  794. package/build/dist/Types/Workflow/Components/Webhook.js +20 -20
  795. package/build/dist/Types/Workflow/Components/Webhook.js.map +1 -1
  796. package/build/dist/Types/Workflow/Components/Workflow.js +15 -15
  797. package/build/dist/Types/Workflow/Components/Workflow.js.map +1 -1
  798. package/build/dist/Types/Workflow/Components.js +33 -33
  799. package/build/dist/Types/Workflow/Components.js.map +1 -1
  800. package/build/dist/Types/Workflow/WorkflowPlan.js.map +1 -1
  801. package/build/dist/Types/Workflow/WorkflowStatus.js.map +1 -1
  802. package/build/dist/Types/XML.js +3 -3
  803. package/build/dist/Types/XML.js.map +1 -1
  804. package/build/dist/Utils/API.js +66 -16
  805. package/build/dist/Utils/API.js.map +1 -1
  806. package/build/dist/Utils/Analytics.js +1 -1
  807. package/build/dist/Utils/Analytics.js.map +1 -1
  808. package/build/dist/Utils/CronTime.js +7 -7
  809. package/build/dist/Utils/Enum.js +9 -0
  810. package/build/dist/Utils/Enum.js.map +1 -0
  811. package/build/dist/Utils/Faker.js +5 -5
  812. package/build/dist/Utils/Faker.js.map +1 -1
  813. package/build/dist/Utils/ObjectUtil.js.map +1 -1
  814. package/build/dist/Utils/Realtime.js +1 -1
  815. package/build/dist/Utils/Realtime.js.map +1 -1
  816. package/build/dist/Utils/Slug.js +3 -3
  817. package/build/dist/Utils/Slug.js.map +1 -1
  818. package/build/dist/Utils/UUID.js +1 -1
  819. package/build/dist/Utils/UUID.js.map +1 -1
  820. package/jest.config.json +6 -1
  821. package/package.json +3 -3
@@ -1,1018 +1,976 @@
1
- import UserModel from '../../Models/UserModel';
2
- import CalendarEvent from '../Calendar/CalendarEvent';
3
- import OneUptimeDate from '../Date';
4
- import DayOfWeek from '../Day/DayOfWeek';
5
- import EventInterval from '../Events/EventInterval';
6
- import Recurring from '../Events/Recurring';
7
- import StartAndEndTime from '../Time/StartAndEndTime';
8
- import Typeof from '../Typeof';
1
+ import UserModel from "../../Models/UserModel";
2
+ import CalendarEvent from "../Calendar/CalendarEvent";
3
+ import OneUptimeDate from "../Date";
4
+ import DayOfWeek from "../Day/DayOfWeek";
5
+ import EventInterval from "../Events/EventInterval";
6
+ import Recurring from "../Events/Recurring";
7
+ import StartAndEndTime from "../Time/StartAndEndTime";
8
+ import Typeof from "../Typeof";
9
9
  import RestrictionTimes, {
10
- RestrictionType,
11
- WeeklyResctriction,
12
- } from './RestrictionTimes';
10
+ RestrictionType,
11
+ WeeklyResctriction,
12
+ } from "./RestrictionTimes";
13
13
 
14
14
  export interface LayerProps {
15
- users: Array<UserModel>;
16
- startDateTimeOfLayer: Date;
17
- restrictionTimes: RestrictionTimes;
18
- handOffTime: Date;
19
- rotation: Recurring;
15
+ users: Array<UserModel>;
16
+ startDateTimeOfLayer: Date;
17
+ restrictionTimes: RestrictionTimes;
18
+ handOffTime: Date;
19
+ rotation: Recurring;
20
20
  }
21
21
 
22
22
  export interface EventProps extends LayerProps {
23
- calendarStartDate: Date;
24
- calendarEndDate: Date;
23
+ calendarStartDate: Date;
24
+ calendarEndDate: Date;
25
25
  }
26
26
 
27
27
  export interface MultiLayerProps {
28
- layers: Array<LayerProps>;
29
- calendarStartDate: Date;
30
- calendarEndDate: Date;
28
+ layers: Array<LayerProps>;
29
+ calendarStartDate: Date;
30
+ calendarEndDate: Date;
31
31
  }
32
32
 
33
33
  export interface PriorityCalendarEvents extends CalendarEvent {
34
- priority: number;
34
+ priority: number;
35
35
  }
36
36
 
37
37
  export default class LayerUtil {
38
- public static getEvents(data: EventProps): Array<CalendarEvent> {
39
- let events: Array<CalendarEvent> = [];
38
+ public static getEvents(data: EventProps): Array<CalendarEvent> {
39
+ let events: Array<CalendarEvent> = [];
40
40
 
41
- if (!LayerUtil.isDataValid(data)) {
42
- return [];
43
- }
41
+ if (!LayerUtil.isDataValid(data)) {
42
+ return [];
43
+ }
44
44
 
45
- data = LayerUtil.sanitizeData(data);
45
+ data = LayerUtil.sanitizeData(data);
46
46
 
47
- let start: Date = data.calendarStartDate;
48
- const end: Date = data.calendarEndDate;
47
+ let start: Date = data.calendarStartDate;
48
+ const end: Date = data.calendarEndDate;
49
49
 
50
- // start time of the layer is after the start time of the calendar, so we need to update the start time of the calendar
51
- if (OneUptimeDate.isAfter(data.startDateTimeOfLayer, start)) {
52
- start = data.startDateTimeOfLayer;
53
- }
50
+ // start time of the layer is after the start time of the calendar, so we need to update the start time of the calendar
51
+ if (OneUptimeDate.isAfter(data.startDateTimeOfLayer, start)) {
52
+ start = data.startDateTimeOfLayer;
53
+ }
54
54
 
55
- // split events by rotation.
55
+ // split events by rotation.
56
56
 
57
- const rotation: Recurring = data.rotation;
57
+ const rotation: Recurring = data.rotation;
58
58
 
59
- let hasReachedTheEndOfTheCalendar: boolean = false;
59
+ let hasReachedTheEndOfTheCalendar: boolean = false;
60
60
 
61
- let handOffTime: Date = data.handOffTime;
61
+ let handOffTime: Date = data.handOffTime;
62
62
 
63
- if (!handOffTime) {
64
- return [];
65
- }
63
+ if (!handOffTime) {
64
+ return [];
65
+ }
66
66
 
67
- // Looop vars
68
- let currentUserIndex: number = 0;
69
- let currentEventStartTime: Date = start;
67
+ // Looop vars
68
+ let currentUserIndex: number = 0;
69
+ let currentEventStartTime: Date = start;
70
70
 
71
- // bring handoff time to the same day as the currentStartTime.
71
+ // bring handoff time to the same day as the currentStartTime.
72
72
 
73
- // before we do this, we need to update the user index.
73
+ // before we do this, we need to update the user index.
74
74
 
75
- currentUserIndex = LayerUtil.getCurrentUserIndexBasedOnHandoffTime({
76
- rotation,
77
- handOffTime,
78
- currentUserIndex,
79
- startDateTimeOfLayer: data.startDateTimeOfLayer,
80
- users: data.users,
81
- currentEventStartTime,
82
- });
75
+ currentUserIndex = LayerUtil.getCurrentUserIndexBasedOnHandoffTime({
76
+ rotation,
77
+ handOffTime,
78
+ currentUserIndex,
79
+ startDateTimeOfLayer: data.startDateTimeOfLayer,
80
+ users: data.users,
81
+ currentEventStartTime,
82
+ });
83
83
 
84
- // update handoff time to the same day as current start time
84
+ // update handoff time to the same day as current start time
85
85
 
86
- handOffTime = LayerUtil.moveHandsOffTimeAfterCurrentEventStartTime({
87
- handOffTime,
88
- currentEventStartTime,
89
- rotation: data.rotation,
86
+ handOffTime = LayerUtil.moveHandsOffTimeAfterCurrentEventStartTime({
87
+ handOffTime,
88
+ currentEventStartTime,
89
+ rotation: data.rotation,
90
+ });
91
+
92
+ let currentEventEndTime: Date = OneUptimeDate.getCurrentDate(); // temporary set to current time to avoid typescript error
93
+
94
+ // check if calendar end is before the handoff time. if it is, then we need to return the event with the current user index as no handoff is needed.
95
+
96
+ if (OneUptimeDate.isBefore(end, handOffTime)) {
97
+ const trimmedStartAndEndTimes: Array<StartAndEndTime> =
98
+ LayerUtil.trimStartAndEndTimesBasedOnRestrictionTimes({
99
+ eventStartTime: currentEventStartTime,
100
+ eventEndTime: end,
101
+ restrictionTimes: data.restrictionTimes,
90
102
  });
91
103
 
92
- let currentEventEndTime: Date = OneUptimeDate.getCurrentDate(); // temporary set to current time to avoid typescript error
104
+ events = [
105
+ ...events,
106
+ ...LayerUtil.getCalendarEventsFromStartAndEndDates(
107
+ trimmedStartAndEndTimes,
108
+ data.users,
109
+ currentUserIndex,
110
+ ),
111
+ ];
93
112
 
94
- // check if calendar end is before the handoff time. if it is, then we need to return the event with the current user index as no handoff is needed.
113
+ return events;
114
+ }
95
115
 
96
- if (OneUptimeDate.isBefore(end, handOffTime)) {
97
- const trimmedStartAndEndTimes: Array<StartAndEndTime> =
98
- LayerUtil.trimStartAndEndTimesBasedOnRestrictionTimes({
99
- eventStartTime: currentEventStartTime,
100
- eventEndTime: end,
101
- restrictionTimes: data.restrictionTimes,
102
- });
116
+ while (!hasReachedTheEndOfTheCalendar) {
117
+ currentEventEndTime = handOffTime;
103
118
 
104
- events = [
105
- ...events,
106
- ...LayerUtil.getCalendarEventsFromStartAndEndDates(
107
- trimmedStartAndEndTimes,
108
- data.users,
109
- currentUserIndex
110
- ),
111
- ];
119
+ // if current event start time and end time is the same then increase current event start time by 1 second.
112
120
 
113
- return events;
114
- }
121
+ if (OneUptimeDate.isSame(currentEventStartTime, currentEventEndTime)) {
122
+ currentEventStartTime = OneUptimeDate.addRemoveSeconds(
123
+ currentEventEndTime,
124
+ 1,
125
+ );
126
+ handOffTime = LayerUtil.moveHandsOffTimeAfterCurrentEventStartTime({
127
+ handOffTime,
128
+ currentEventStartTime,
129
+ rotation: data.rotation,
130
+ });
115
131
 
116
- while (!hasReachedTheEndOfTheCalendar) {
117
- currentEventEndTime = handOffTime;
118
-
119
- // if current event start time and end time is the same then increase current event start time by 1 second.
120
-
121
- if (
122
- OneUptimeDate.isSame(currentEventStartTime, currentEventEndTime)
123
- ) {
124
- currentEventStartTime = OneUptimeDate.addRemoveSeconds(
125
- currentEventEndTime,
126
- 1
127
- );
128
- handOffTime =
129
- LayerUtil.moveHandsOffTimeAfterCurrentEventStartTime({
130
- handOffTime,
131
- currentEventStartTime,
132
- rotation: data.rotation,
133
- });
134
-
135
- continue;
136
- }
132
+ continue;
133
+ }
137
134
 
138
- // check calendar end time. if the end time of the event is after the end time of the calendar, we need to update the end time of the event
139
- if (OneUptimeDate.isAfter(currentEventEndTime, end)) {
140
- currentEventEndTime = end;
141
- hasReachedTheEndOfTheCalendar = true;
142
- }
135
+ // check calendar end time. if the end time of the event is after the end time of the calendar, we need to update the end time of the event
136
+ if (OneUptimeDate.isAfter(currentEventEndTime, end)) {
137
+ currentEventEndTime = end;
138
+ hasReachedTheEndOfTheCalendar = true;
139
+ }
143
140
 
144
- // check restriction times. if the end time of the event is after the end time of the restriction times, we need to update the end time of the event.
145
-
146
- const trimmedStartAndEndTimes: Array<StartAndEndTime> =
147
- LayerUtil.trimStartAndEndTimesBasedOnRestrictionTimes({
148
- eventStartTime: currentEventStartTime,
149
- eventEndTime: currentEventEndTime,
150
- restrictionTimes: data.restrictionTimes,
151
- });
152
-
153
- events = [
154
- ...events,
155
- ...LayerUtil.getCalendarEventsFromStartAndEndDates(
156
- trimmedStartAndEndTimes,
157
- data.users,
158
- currentUserIndex
159
- ),
160
- ];
161
-
162
- // update the current event start time
163
-
164
- currentEventStartTime = OneUptimeDate.addRemoveSeconds(
165
- currentEventEndTime,
166
- 1
167
- );
168
-
169
- // update the handoff time
170
-
171
- handOffTime = LayerUtil.moveHandsOffTimeAfterCurrentEventStartTime({
172
- handOffTime,
173
- currentEventStartTime,
174
- rotation: data.rotation,
175
- });
176
-
177
- // update the current user index
178
- currentUserIndex = LayerUtil.incrementUserIndex(
179
- currentUserIndex,
180
- data.users.length
181
- );
182
- }
141
+ // check restriction times. if the end time of the event is after the end time of the restriction times, we need to update the end time of the event.
142
+
143
+ const trimmedStartAndEndTimes: Array<StartAndEndTime> =
144
+ LayerUtil.trimStartAndEndTimesBasedOnRestrictionTimes({
145
+ eventStartTime: currentEventStartTime,
146
+ eventEndTime: currentEventEndTime,
147
+ restrictionTimes: data.restrictionTimes,
148
+ });
183
149
 
184
- // increment ids of all the events and return them, to make sure they are unique
150
+ events = [
151
+ ...events,
152
+ ...LayerUtil.getCalendarEventsFromStartAndEndDates(
153
+ trimmedStartAndEndTimes,
154
+ data.users,
155
+ currentUserIndex,
156
+ ),
157
+ ];
158
+
159
+ // update the current event start time
160
+
161
+ currentEventStartTime = OneUptimeDate.addRemoveSeconds(
162
+ currentEventEndTime,
163
+ 1,
164
+ );
165
+
166
+ // update the handoff time
167
+
168
+ handOffTime = LayerUtil.moveHandsOffTimeAfterCurrentEventStartTime({
169
+ handOffTime,
170
+ currentEventStartTime,
171
+ rotation: data.rotation,
172
+ });
173
+
174
+ // update the current user index
175
+ currentUserIndex = LayerUtil.incrementUserIndex(
176
+ currentUserIndex,
177
+ data.users.length,
178
+ );
179
+ }
185
180
 
186
- let id: number = 1;
181
+ // increment ids of all the events and return them, to make sure they are unique
187
182
 
188
- for (const event of events) {
189
- event.id = id;
190
- id++;
191
- }
183
+ let id: number = 1;
192
184
 
193
- return events;
185
+ for (const event of events) {
186
+ event.id = id;
187
+ id++;
194
188
  }
195
189
 
196
- private static sanitizeData(data: EventProps): EventProps {
197
- if (!(data.restrictionTimes instanceof RestrictionTimes)) {
198
- data.restrictionTimes = RestrictionTimes.fromJSON(
199
- data.restrictionTimes
200
- );
201
- }
190
+ return events;
191
+ }
202
192
 
203
- if (!(data.rotation instanceof Recurring)) {
204
- data.rotation = Recurring.fromJSON(data.rotation);
205
- }
193
+ private static sanitizeData(data: EventProps): EventProps {
194
+ if (!(data.restrictionTimes instanceof RestrictionTimes)) {
195
+ data.restrictionTimes = RestrictionTimes.fromJSON(data.restrictionTimes);
196
+ }
206
197
 
207
- if (typeof data.startDateTimeOfLayer === Typeof.String) {
208
- data.startDateTimeOfLayer = OneUptimeDate.fromString(
209
- data.startDateTimeOfLayer
210
- );
211
- }
198
+ if (!(data.rotation instanceof Recurring)) {
199
+ data.rotation = Recurring.fromJSON(data.rotation);
200
+ }
212
201
 
213
- if (typeof data.calendarStartDate === Typeof.String) {
214
- data.calendarStartDate = OneUptimeDate.fromString(
215
- data.calendarStartDate
216
- );
217
- }
202
+ if (typeof data.startDateTimeOfLayer === Typeof.String) {
203
+ data.startDateTimeOfLayer = OneUptimeDate.fromString(
204
+ data.startDateTimeOfLayer,
205
+ );
206
+ }
218
207
 
219
- if (typeof data.calendarEndDate === Typeof.String) {
220
- data.calendarEndDate = OneUptimeDate.fromString(
221
- data.calendarEndDate
222
- );
223
- }
208
+ if (typeof data.calendarStartDate === Typeof.String) {
209
+ data.calendarStartDate = OneUptimeDate.fromString(data.calendarStartDate);
210
+ }
224
211
 
225
- if (typeof data.handOffTime === Typeof.String) {
226
- data.handOffTime = OneUptimeDate.fromString(data.handOffTime);
227
- }
212
+ if (typeof data.calendarEndDate === Typeof.String) {
213
+ data.calendarEndDate = OneUptimeDate.fromString(data.calendarEndDate);
214
+ }
228
215
 
229
- return data;
216
+ if (typeof data.handOffTime === Typeof.String) {
217
+ data.handOffTime = OneUptimeDate.fromString(data.handOffTime);
230
218
  }
231
219
 
232
- private static isDataValid(data: EventProps): boolean {
233
- // if calendar end time is before the start time then return an empty array.
234
- if (
235
- OneUptimeDate.isBefore(data.calendarEndDate, data.calendarStartDate)
236
- ) {
237
- return false;
238
- }
220
+ return data;
221
+ }
239
222
 
240
- // end time of the layer is before the end time of the calendar, so, we dont have any events and we can return empty array
241
- if (
242
- OneUptimeDate.isAfter(
243
- data.startDateTimeOfLayer,
244
- data.calendarEndDate
245
- )
246
- ) {
247
- return false;
248
- }
223
+ private static isDataValid(data: EventProps): boolean {
224
+ // if calendar end time is before the start time then return an empty array.
225
+ if (OneUptimeDate.isBefore(data.calendarEndDate, data.calendarStartDate)) {
226
+ return false;
227
+ }
249
228
 
250
- // if users are empty, we dont have any events and we can return empty array
251
- if (data.users.length === 0) {
252
- return false;
253
- }
229
+ // end time of the layer is before the end time of the calendar, so, we dont have any events and we can return empty array
230
+ if (
231
+ OneUptimeDate.isAfter(data.startDateTimeOfLayer, data.calendarEndDate)
232
+ ) {
233
+ return false;
234
+ }
254
235
 
255
- return true;
236
+ // if users are empty, we dont have any events and we can return empty array
237
+ if (data.users.length === 0) {
238
+ return false;
256
239
  }
257
240
 
258
- private static moveHandsOffTimeAfterCurrentEventStartTime(data: {
259
- handOffTime: Date;
260
- currentEventStartTime: Date;
261
- rotation: Recurring;
262
- }): Date {
263
- // if handoff time is ahead of the current event start time, then we dont need to move and we can return it as is.
241
+ return true;
242
+ }
264
243
 
265
- if (
266
- OneUptimeDate.isAfter(data.handOffTime, data.currentEventStartTime)
267
- ) {
268
- return data.handOffTime;
269
- }
244
+ private static moveHandsOffTimeAfterCurrentEventStartTime(data: {
245
+ handOffTime: Date;
246
+ currentEventStartTime: Date;
247
+ rotation: Recurring;
248
+ }): Date {
249
+ // if handoff time is ahead of the current event start time, then we dont need to move and we can return it as is.
270
250
 
271
- let handOffTime: Date = data.handOffTime;
272
-
273
- let intervalBetweenStartTimeAndHandoffTime: number = 0;
274
- const rotationInterval: number = data.rotation.intervalCount.toNumber();
275
-
276
- if (data.rotation.intervalType === EventInterval.Day) {
277
- intervalBetweenStartTimeAndHandoffTime =
278
- OneUptimeDate.getDaysBetweenTwoDatesInclusive(
279
- handOffTime,
280
- data.currentEventStartTime
281
- );
282
-
283
- if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
284
- intervalBetweenStartTimeAndHandoffTime = rotationInterval;
285
- } else if (
286
- intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
287
- 0
288
- ) {
289
- intervalBetweenStartTimeAndHandoffTime += rotationInterval;
290
- }
251
+ if (OneUptimeDate.isAfter(data.handOffTime, data.currentEventStartTime)) {
252
+ return data.handOffTime;
253
+ }
291
254
 
292
- // add intervalBetweenStartTimeAndHandoffTime to handoff time
255
+ let handOffTime: Date = data.handOffTime;
293
256
 
294
- handOffTime = OneUptimeDate.addRemoveDays(
295
- handOffTime,
296
- intervalBetweenStartTimeAndHandoffTime
297
- );
257
+ let intervalBetweenStartTimeAndHandoffTime: number = 0;
258
+ const rotationInterval: number = data.rotation.intervalCount.toNumber();
298
259
 
299
- return handOffTime;
300
- }
260
+ if (data.rotation.intervalType === EventInterval.Day) {
261
+ intervalBetweenStartTimeAndHandoffTime =
262
+ OneUptimeDate.getDaysBetweenTwoDatesInclusive(
263
+ handOffTime,
264
+ data.currentEventStartTime,
265
+ );
301
266
 
302
- if (data.rotation.intervalType === EventInterval.Hour) {
303
- intervalBetweenStartTimeAndHandoffTime =
304
- OneUptimeDate.getHoursBetweenTwoDatesInclusive(
305
- handOffTime,
306
- data.currentEventStartTime
307
- );
308
-
309
- if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
310
- intervalBetweenStartTimeAndHandoffTime = rotationInterval;
311
- } else if (
312
- intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
313
- 0
314
- ) {
315
- intervalBetweenStartTimeAndHandoffTime += rotationInterval;
316
- }
267
+ if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
268
+ intervalBetweenStartTimeAndHandoffTime = rotationInterval;
269
+ } else if (
270
+ intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
271
+ 0
272
+ ) {
273
+ intervalBetweenStartTimeAndHandoffTime += rotationInterval;
274
+ }
317
275
 
318
- // add intervalBetweenStartTimeAndHandoffTime to handoff time
276
+ // add intervalBetweenStartTimeAndHandoffTime to handoff time
319
277
 
320
- handOffTime = OneUptimeDate.addRemoveHours(
321
- handOffTime,
322
- intervalBetweenStartTimeAndHandoffTime
323
- );
278
+ handOffTime = OneUptimeDate.addRemoveDays(
279
+ handOffTime,
280
+ intervalBetweenStartTimeAndHandoffTime,
281
+ );
324
282
 
325
- return handOffTime;
326
- }
283
+ return handOffTime;
284
+ }
327
285
 
328
- if (data.rotation.intervalType === EventInterval.Week) {
329
- intervalBetweenStartTimeAndHandoffTime =
330
- OneUptimeDate.getWeeksBetweenTwoDatesInclusive(
331
- handOffTime,
332
- data.currentEventStartTime
333
- );
334
-
335
- if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
336
- intervalBetweenStartTimeAndHandoffTime = rotationInterval;
337
- } else if (
338
- intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
339
- 0
340
- ) {
341
- intervalBetweenStartTimeAndHandoffTime += rotationInterval;
342
- }
286
+ if (data.rotation.intervalType === EventInterval.Hour) {
287
+ intervalBetweenStartTimeAndHandoffTime =
288
+ OneUptimeDate.getHoursBetweenTwoDatesInclusive(
289
+ handOffTime,
290
+ data.currentEventStartTime,
291
+ );
343
292
 
344
- // add intervalBetweenStartTimeAndHandoffTime to handoff time
293
+ if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
294
+ intervalBetweenStartTimeAndHandoffTime = rotationInterval;
295
+ } else if (
296
+ intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
297
+ 0
298
+ ) {
299
+ intervalBetweenStartTimeAndHandoffTime += rotationInterval;
300
+ }
345
301
 
346
- handOffTime = OneUptimeDate.addRemoveWeeks(
347
- handOffTime,
348
- intervalBetweenStartTimeAndHandoffTime
349
- );
302
+ // add intervalBetweenStartTimeAndHandoffTime to handoff time
350
303
 
351
- return handOffTime;
352
- }
304
+ handOffTime = OneUptimeDate.addRemoveHours(
305
+ handOffTime,
306
+ intervalBetweenStartTimeAndHandoffTime,
307
+ );
353
308
 
354
- if (data.rotation.intervalType === EventInterval.Month) {
355
- intervalBetweenStartTimeAndHandoffTime =
356
- OneUptimeDate.getMonthsBetweenTwoDatesInclusive(
357
- handOffTime,
358
- data.currentEventStartTime
359
- );
360
-
361
- if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
362
- intervalBetweenStartTimeAndHandoffTime = rotationInterval;
363
- } else if (
364
- intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
365
- 0
366
- ) {
367
- intervalBetweenStartTimeAndHandoffTime += rotationInterval;
368
- }
309
+ return handOffTime;
310
+ }
369
311
 
370
- // add intervalBetweenStartTimeAndHandoffTime to handoff time
312
+ if (data.rotation.intervalType === EventInterval.Week) {
313
+ intervalBetweenStartTimeAndHandoffTime =
314
+ OneUptimeDate.getWeeksBetweenTwoDatesInclusive(
315
+ handOffTime,
316
+ data.currentEventStartTime,
317
+ );
371
318
 
372
- handOffTime = OneUptimeDate.addRemoveMonths(
373
- handOffTime,
374
- intervalBetweenStartTimeAndHandoffTime
375
- );
319
+ if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
320
+ intervalBetweenStartTimeAndHandoffTime = rotationInterval;
321
+ } else if (
322
+ intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
323
+ 0
324
+ ) {
325
+ intervalBetweenStartTimeAndHandoffTime += rotationInterval;
326
+ }
376
327
 
377
- return handOffTime;
378
- }
328
+ // add intervalBetweenStartTimeAndHandoffTime to handoff time
379
329
 
380
- if (data.rotation.intervalType === EventInterval.Year) {
381
- intervalBetweenStartTimeAndHandoffTime =
382
- OneUptimeDate.getYearsBetweenTwoDatesInclusive(
383
- handOffTime,
384
- data.currentEventStartTime
385
- );
386
-
387
- if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
388
- intervalBetweenStartTimeAndHandoffTime = rotationInterval;
389
- } else if (
390
- intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
391
- 0
392
- ) {
393
- intervalBetweenStartTimeAndHandoffTime += rotationInterval;
394
- }
330
+ handOffTime = OneUptimeDate.addRemoveWeeks(
331
+ handOffTime,
332
+ intervalBetweenStartTimeAndHandoffTime,
333
+ );
334
+
335
+ return handOffTime;
336
+ }
395
337
 
396
- // add intervalBetweenStartTimeAndHandoffTime to handoff time
338
+ if (data.rotation.intervalType === EventInterval.Month) {
339
+ intervalBetweenStartTimeAndHandoffTime =
340
+ OneUptimeDate.getMonthsBetweenTwoDatesInclusive(
341
+ handOffTime,
342
+ data.currentEventStartTime,
343
+ );
397
344
 
398
- handOffTime = OneUptimeDate.addRemoveYears(
399
- handOffTime,
400
- intervalBetweenStartTimeAndHandoffTime
401
- );
345
+ if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
346
+ intervalBetweenStartTimeAndHandoffTime = rotationInterval;
347
+ } else if (
348
+ intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
349
+ 0
350
+ ) {
351
+ intervalBetweenStartTimeAndHandoffTime += rotationInterval;
352
+ }
402
353
 
403
- return handOffTime;
404
- }
354
+ // add intervalBetweenStartTimeAndHandoffTime to handoff time
405
355
 
406
- return handOffTime;
356
+ handOffTime = OneUptimeDate.addRemoveMonths(
357
+ handOffTime,
358
+ intervalBetweenStartTimeAndHandoffTime,
359
+ );
360
+
361
+ return handOffTime;
407
362
  }
408
363
 
409
- private static getCurrentUserIndexBasedOnHandoffTime(data: {
410
- rotation: Recurring;
411
- handOffTime: Date;
412
- currentUserIndex: number;
413
- startDateTimeOfLayer: Date;
414
- users: Array<UserModel>;
415
- currentEventStartTime: Date;
416
- }): number {
417
- let intervalBetweenStartTimeAndHandoffTime: number = 0;
418
- const rotation: Recurring = data.rotation;
419
- const handOffTime: Date = data.handOffTime;
420
- let currentUserIndex: number = data.currentUserIndex;
364
+ if (data.rotation.intervalType === EventInterval.Year) {
365
+ intervalBetweenStartTimeAndHandoffTime =
366
+ OneUptimeDate.getYearsBetweenTwoDatesInclusive(
367
+ handOffTime,
368
+ data.currentEventStartTime,
369
+ );
421
370
 
422
- // if current event start time if before the start time of the layer then return current Index
371
+ if (intervalBetweenStartTimeAndHandoffTime < rotationInterval) {
372
+ intervalBetweenStartTimeAndHandoffTime = rotationInterval;
373
+ } else if (
374
+ intervalBetweenStartTimeAndHandoffTime % rotationInterval !==
375
+ 0
376
+ ) {
377
+ intervalBetweenStartTimeAndHandoffTime += rotationInterval;
378
+ }
423
379
 
424
- if (
425
- OneUptimeDate.isBefore(
426
- data.currentEventStartTime,
427
- data.startDateTimeOfLayer
428
- )
429
- ) {
430
- return currentUserIndex;
431
- }
380
+ // add intervalBetweenStartTimeAndHandoffTime to handoff time
432
381
 
433
- // if handoff time is ahead of current event stat time then return current index
382
+ handOffTime = OneUptimeDate.addRemoveYears(
383
+ handOffTime,
384
+ intervalBetweenStartTimeAndHandoffTime,
385
+ );
434
386
 
435
- if (OneUptimeDate.isAfter(handOffTime, data.currentEventStartTime)) {
436
- return currentUserIndex;
437
- }
387
+ return handOffTime;
388
+ }
438
389
 
439
- if (rotation.intervalType === EventInterval.Day) {
440
- // calculate the number of days between the start time of the layer and the handoff time.
441
- intervalBetweenStartTimeAndHandoffTime =
442
- OneUptimeDate.getDaysBetweenTwoDatesInclusive(
443
- handOffTime,
444
- data.currentEventStartTime
445
- );
446
- }
390
+ return handOffTime;
391
+ }
447
392
 
448
- if (rotation.intervalType === EventInterval.Hour) {
449
- // calculate the number of hours between the start time of the layer and the handoff time.
450
- intervalBetweenStartTimeAndHandoffTime =
451
- OneUptimeDate.getHoursBetweenTwoDatesInclusive(
452
- handOffTime,
453
- data.currentEventStartTime
454
- );
455
- }
393
+ private static getCurrentUserIndexBasedOnHandoffTime(data: {
394
+ rotation: Recurring;
395
+ handOffTime: Date;
396
+ currentUserIndex: number;
397
+ startDateTimeOfLayer: Date;
398
+ users: Array<UserModel>;
399
+ currentEventStartTime: Date;
400
+ }): number {
401
+ let intervalBetweenStartTimeAndHandoffTime: number = 0;
402
+ const rotation: Recurring = data.rotation;
403
+ const handOffTime: Date = data.handOffTime;
404
+ let currentUserIndex: number = data.currentUserIndex;
405
+
406
+ // if current event start time if before the start time of the layer then return current Index
407
+
408
+ if (
409
+ OneUptimeDate.isBefore(
410
+ data.currentEventStartTime,
411
+ data.startDateTimeOfLayer,
412
+ )
413
+ ) {
414
+ return currentUserIndex;
415
+ }
456
416
 
457
- if (rotation.intervalType === EventInterval.Week) {
458
- // calculate the number of weeks between the start time of the layer and the handoff time.
459
- intervalBetweenStartTimeAndHandoffTime =
460
- OneUptimeDate.getWeeksBetweenTwoDatesInclusive(
461
- handOffTime,
462
- data.currentEventStartTime
463
- );
464
- }
417
+ // if handoff time is ahead of current event stat time then return current index
465
418
 
466
- if (rotation.intervalType === EventInterval.Month) {
467
- // calculate the number of months between the start time of the layer and the handoff time.
468
- intervalBetweenStartTimeAndHandoffTime =
469
- OneUptimeDate.getMonthsBetweenTwoDatesInclusive(
470
- handOffTime,
471
- data.currentEventStartTime
472
- );
473
- }
419
+ if (OneUptimeDate.isAfter(handOffTime, data.currentEventStartTime)) {
420
+ return currentUserIndex;
421
+ }
474
422
 
475
- if (rotation.intervalType === EventInterval.Year) {
476
- // calculate the number of years between the start time of the layer and the handoff time.
477
- intervalBetweenStartTimeAndHandoffTime =
478
- OneUptimeDate.getYearsBetweenTwoDatesInclusive(
479
- data.startDateTimeOfLayer,
480
- handOffTime
481
- );
482
- }
423
+ if (rotation.intervalType === EventInterval.Day) {
424
+ // calculate the number of days between the start time of the layer and the handoff time.
425
+ intervalBetweenStartTimeAndHandoffTime =
426
+ OneUptimeDate.getDaysBetweenTwoDatesInclusive(
427
+ handOffTime,
428
+ data.currentEventStartTime,
429
+ );
430
+ }
483
431
 
484
- // now divide the interval between start time and handoff time by the interval count.
432
+ if (rotation.intervalType === EventInterval.Hour) {
433
+ // calculate the number of hours between the start time of the layer and the handoff time.
434
+ intervalBetweenStartTimeAndHandoffTime =
435
+ OneUptimeDate.getHoursBetweenTwoDatesInclusive(
436
+ handOffTime,
437
+ data.currentEventStartTime,
438
+ );
439
+ }
485
440
 
486
- let numberOfIntervalsBetweenStartAndHandoffTime: number = Math.ceil(
487
- intervalBetweenStartTimeAndHandoffTime /
488
- rotation.intervalCount.toNumber()
441
+ if (rotation.intervalType === EventInterval.Week) {
442
+ // calculate the number of weeks between the start time of the layer and the handoff time.
443
+ intervalBetweenStartTimeAndHandoffTime =
444
+ OneUptimeDate.getWeeksBetweenTwoDatesInclusive(
445
+ handOffTime,
446
+ data.currentEventStartTime,
489
447
  );
448
+ }
490
449
 
491
- if (numberOfIntervalsBetweenStartAndHandoffTime < 0) {
492
- numberOfIntervalsBetweenStartAndHandoffTime =
493
- numberOfIntervalsBetweenStartAndHandoffTime * -1;
494
- }
450
+ if (rotation.intervalType === EventInterval.Month) {
451
+ // calculate the number of months between the start time of the layer and the handoff time.
452
+ intervalBetweenStartTimeAndHandoffTime =
453
+ OneUptimeDate.getMonthsBetweenTwoDatesInclusive(
454
+ handOffTime,
455
+ data.currentEventStartTime,
456
+ );
457
+ }
495
458
 
496
- currentUserIndex = LayerUtil.incrementUserIndex(
497
- currentUserIndex,
498
- data.users.length,
499
- numberOfIntervalsBetweenStartAndHandoffTime
459
+ if (rotation.intervalType === EventInterval.Year) {
460
+ // calculate the number of years between the start time of the layer and the handoff time.
461
+ intervalBetweenStartTimeAndHandoffTime =
462
+ OneUptimeDate.getYearsBetweenTwoDatesInclusive(
463
+ data.startDateTimeOfLayer,
464
+ handOffTime,
500
465
  );
466
+ }
467
+
468
+ // now divide the interval between start time and handoff time by the interval count.
469
+
470
+ let numberOfIntervalsBetweenStartAndHandoffTime: number = Math.ceil(
471
+ intervalBetweenStartTimeAndHandoffTime /
472
+ rotation.intervalCount.toNumber(),
473
+ );
501
474
 
502
- return currentUserIndex;
475
+ if (numberOfIntervalsBetweenStartAndHandoffTime < 0) {
476
+ numberOfIntervalsBetweenStartAndHandoffTime =
477
+ numberOfIntervalsBetweenStartAndHandoffTime * -1;
503
478
  }
504
479
 
505
- public static trimStartAndEndTimesBasedOnRestrictionTimes(data: {
506
- eventStartTime: Date;
507
- eventEndTime: Date;
508
- restrictionTimes: RestrictionTimes;
509
- }): Array<StartAndEndTime> {
510
- const restrictionTimes: RestrictionTimes = data.restrictionTimes;
480
+ currentUserIndex = LayerUtil.incrementUserIndex(
481
+ currentUserIndex,
482
+ data.users.length,
483
+ numberOfIntervalsBetweenStartAndHandoffTime,
484
+ );
511
485
 
512
- if (restrictionTimes.restictionType === RestrictionType.None) {
513
- return [
514
- {
515
- startTime: data.eventStartTime,
516
- endTime: data.eventEndTime,
517
- },
518
- ];
519
- }
486
+ return currentUserIndex;
487
+ }
520
488
 
521
- if (
522
- restrictionTimes.restictionType === RestrictionType.Daily &&
523
- restrictionTimes.dayRestrictionTimes
524
- ) {
525
- // before this we need to make sure restrciton times are moved to the day of the event.
526
- restrictionTimes.dayRestrictionTimes.startTime =
527
- OneUptimeDate.keepTimeButMoveDay(
528
- restrictionTimes.dayRestrictionTimes.startTime,
529
- data.eventStartTime
530
- );
531
-
532
- restrictionTimes.dayRestrictionTimes.endTime =
533
- OneUptimeDate.keepTimeButMoveDay(
534
- restrictionTimes.dayRestrictionTimes.endTime,
535
- data.eventStartTime
536
- );
537
-
538
- return LayerUtil.getEventsByDailyRestriction({
539
- eventStartTime: data.eventStartTime,
540
- eventEndTime: data.eventEndTime,
541
- restrictionStartAndEndTime:
542
- restrictionTimes.dayRestrictionTimes,
543
- props: {
544
- intervalType: EventInterval.Day,
545
- },
546
- });
547
- }
489
+ public static trimStartAndEndTimesBasedOnRestrictionTimes(data: {
490
+ eventStartTime: Date;
491
+ eventEndTime: Date;
492
+ restrictionTimes: RestrictionTimes;
493
+ }): Array<StartAndEndTime> {
494
+ const restrictionTimes: RestrictionTimes = data.restrictionTimes;
495
+
496
+ if (restrictionTimes.restictionType === RestrictionType.None) {
497
+ return [
498
+ {
499
+ startTime: data.eventStartTime,
500
+ endTime: data.eventEndTime,
501
+ },
502
+ ];
503
+ }
548
504
 
549
- if (restrictionTimes.restictionType === RestrictionType.Weekly) {
550
- return LayerUtil.getEventsByWeeklyRestriction(data);
551
- }
505
+ if (
506
+ restrictionTimes.restictionType === RestrictionType.Daily &&
507
+ restrictionTimes.dayRestrictionTimes
508
+ ) {
509
+ // before this we need to make sure restrciton times are moved to the day of the event.
510
+ restrictionTimes.dayRestrictionTimes.startTime =
511
+ OneUptimeDate.keepTimeButMoveDay(
512
+ restrictionTimes.dayRestrictionTimes.startTime,
513
+ data.eventStartTime,
514
+ );
552
515
 
553
- return [];
516
+ restrictionTimes.dayRestrictionTimes.endTime =
517
+ OneUptimeDate.keepTimeButMoveDay(
518
+ restrictionTimes.dayRestrictionTimes.endTime,
519
+ data.eventStartTime,
520
+ );
521
+
522
+ return LayerUtil.getEventsByDailyRestriction({
523
+ eventStartTime: data.eventStartTime,
524
+ eventEndTime: data.eventEndTime,
525
+ restrictionStartAndEndTime: restrictionTimes.dayRestrictionTimes,
526
+ props: {
527
+ intervalType: EventInterval.Day,
528
+ },
529
+ });
554
530
  }
555
531
 
556
- public static getEventsByWeeklyRestriction(data: {
557
- eventStartTime: Date;
558
- eventEndTime: Date;
559
- restrictionTimes: RestrictionTimes;
560
- }): Array<StartAndEndTime> {
561
- const weeklyRestrictionTimes: Array<WeeklyResctriction> =
562
- data.restrictionTimes.weeklyRestrictionTimes;
532
+ if (restrictionTimes.restictionType === RestrictionType.Weekly) {
533
+ return LayerUtil.getEventsByWeeklyRestriction(data);
534
+ }
563
535
 
564
- // if there are no weekly restriction times, we dont have any restrictions and we can return the event start and end times
536
+ return [];
537
+ }
565
538
 
566
- let trimmedStartAndEndTimes: Array<StartAndEndTime> = [];
539
+ public static getEventsByWeeklyRestriction(data: {
540
+ eventStartTime: Date;
541
+ eventEndTime: Date;
542
+ restrictionTimes: RestrictionTimes;
543
+ }): Array<StartAndEndTime> {
544
+ const weeklyRestrictionTimes: Array<WeeklyResctriction> =
545
+ data.restrictionTimes.weeklyRestrictionTimes;
567
546
 
568
- if (!weeklyRestrictionTimes || weeklyRestrictionTimes.length === 0) {
569
- return [
570
- {
571
- startTime: data.eventStartTime,
572
- endTime: data.eventEndTime,
573
- },
574
- ];
575
- }
547
+ // if there are no weekly restriction times, we dont have any restrictions and we can return the event start and end times
576
548
 
577
- const restrictionStartAndEndTimes: Array<StartAndEndTime> =
578
- LayerUtil.getWeeklyRestrictionTimesForWeek(data);
579
-
580
- for (const restrictionStartAndEndTime of restrictionStartAndEndTimes) {
581
- const trimmedStartAndEndTimesForRestriction: Array<StartAndEndTime> =
582
- LayerUtil.getEventsByDailyRestriction({
583
- eventStartTime: data.eventStartTime,
584
- eventEndTime: data.eventEndTime,
585
- restrictionStartAndEndTime: restrictionStartAndEndTime,
586
- props: {
587
- intervalType: EventInterval.Week,
588
- },
589
- });
590
-
591
- trimmedStartAndEndTimes = [
592
- ...trimmedStartAndEndTimes,
593
- ...trimmedStartAndEndTimesForRestriction,
594
- ];
595
- }
549
+ let trimmedStartAndEndTimes: Array<StartAndEndTime> = [];
596
550
 
597
- return trimmedStartAndEndTimes;
551
+ if (!weeklyRestrictionTimes || weeklyRestrictionTimes.length === 0) {
552
+ return [
553
+ {
554
+ startTime: data.eventStartTime,
555
+ endTime: data.eventEndTime,
556
+ },
557
+ ];
558
+ }
559
+
560
+ const restrictionStartAndEndTimes: Array<StartAndEndTime> =
561
+ LayerUtil.getWeeklyRestrictionTimesForWeek(data);
562
+
563
+ for (const restrictionStartAndEndTime of restrictionStartAndEndTimes) {
564
+ const trimmedStartAndEndTimesForRestriction: Array<StartAndEndTime> =
565
+ LayerUtil.getEventsByDailyRestriction({
566
+ eventStartTime: data.eventStartTime,
567
+ eventEndTime: data.eventEndTime,
568
+ restrictionStartAndEndTime: restrictionStartAndEndTime,
569
+ props: {
570
+ intervalType: EventInterval.Week,
571
+ },
572
+ });
573
+
574
+ trimmedStartAndEndTimes = [
575
+ ...trimmedStartAndEndTimes,
576
+ ...trimmedStartAndEndTimesForRestriction,
577
+ ];
598
578
  }
599
579
 
600
- public static getWeeklyRestrictionTimesForWeek(data: {
601
- eventStartTime: Date;
602
- eventEndTime: Date;
603
- restrictionTimes: RestrictionTimes;
604
- }): Array<StartAndEndTime> {
605
- const weeklyRestrictionTimes: Array<WeeklyResctriction> =
606
- data.restrictionTimes.weeklyRestrictionTimes;
580
+ return trimmedStartAndEndTimes;
581
+ }
607
582
 
608
- const eventStartTime: Date = data.eventStartTime;
583
+ public static getWeeklyRestrictionTimesForWeek(data: {
584
+ eventStartTime: Date;
585
+ eventEndTime: Date;
586
+ restrictionTimes: RestrictionTimes;
587
+ }): Array<StartAndEndTime> {
588
+ const weeklyRestrictionTimes: Array<WeeklyResctriction> =
589
+ data.restrictionTimes.weeklyRestrictionTimes;
609
590
 
610
- const startAndEndTimesOfWeeklyRestrictions: Array<StartAndEndTime> = [];
591
+ const eventStartTime: Date = data.eventStartTime;
611
592
 
612
- for (const weeklyRestriction of weeklyRestrictionTimes) {
613
- // move all of these to the week of the event start time
593
+ const startAndEndTimesOfWeeklyRestrictions: Array<StartAndEndTime> = [];
614
594
 
615
- const startDayOfWeek: DayOfWeek = weeklyRestriction.startDay;
616
- const endDayOfWeek: DayOfWeek = weeklyRestriction.endDay;
595
+ for (const weeklyRestriction of weeklyRestrictionTimes) {
596
+ // move all of these to the week of the event start time
617
597
 
618
- let startTime: Date = weeklyRestriction.startTime;
619
- let endTime: Date = weeklyRestriction.endTime;
598
+ const startDayOfWeek: DayOfWeek = weeklyRestriction.startDay;
599
+ const endDayOfWeek: DayOfWeek = weeklyRestriction.endDay;
620
600
 
621
- // move start and end times to the week of the event start time
601
+ let startTime: Date = weeklyRestriction.startTime;
602
+ let endTime: Date = weeklyRestriction.endTime;
622
603
 
623
- startTime = OneUptimeDate.moveDateToTheDayOfWeek(
624
- startTime,
625
- eventStartTime,
626
- startDayOfWeek
627
- );
628
- endTime = OneUptimeDate.moveDateToTheDayOfWeek(
629
- endTime,
630
- eventStartTime,
631
- endDayOfWeek
632
- );
604
+ // move start and end times to the week of the event start time
633
605
 
634
- // now we have true start and end times of the weekly restriction
606
+ startTime = OneUptimeDate.moveDateToTheDayOfWeek(
607
+ startTime,
608
+ eventStartTime,
609
+ startDayOfWeek,
610
+ );
611
+ endTime = OneUptimeDate.moveDateToTheDayOfWeek(
612
+ endTime,
613
+ eventStartTime,
614
+ endDayOfWeek,
615
+ );
635
616
 
636
- // if start time is after end time, we need to add one week to the end time
617
+ // now we have true start and end times of the weekly restriction
637
618
 
638
- if (OneUptimeDate.isAfter(startTime, endTime)) {
639
- endTime = OneUptimeDate.addRemoveWeeks(endTime, 1);
640
- }
619
+ // if start time is after end time, we need to add one week to the end time
641
620
 
642
- startAndEndTimesOfWeeklyRestrictions.push({
643
- startTime,
644
- endTime,
645
- });
646
- }
621
+ if (OneUptimeDate.isAfter(startTime, endTime)) {
622
+ endTime = OneUptimeDate.addRemoveWeeks(endTime, 1);
623
+ }
647
624
 
648
- return startAndEndTimesOfWeeklyRestrictions;
625
+ startAndEndTimesOfWeeklyRestrictions.push({
626
+ startTime,
627
+ endTime,
628
+ });
649
629
  }
650
630
 
651
- public static getEventsByDailyRestriction(data: {
652
- eventStartTime: Date;
653
- eventEndTime: Date;
654
- restrictionStartAndEndTime: StartAndEndTime;
655
- props: {
656
- intervalType: EventInterval;
657
- };
658
- }): Array<StartAndEndTime> {
659
- const dayRestrictionTimes: StartAndEndTime | null =
660
- data.restrictionStartAndEndTime;
661
-
662
- // if there are no day restriction times, we dont have any restrictions and we can return the event start and end times
663
-
664
- if (!dayRestrictionTimes) {
665
- return [
666
- {
667
- startTime: data.eventStartTime,
668
- endTime: data.eventEndTime,
669
- },
670
- ];
671
- }
631
+ return startAndEndTimesOfWeeklyRestrictions;
632
+ }
633
+
634
+ public static getEventsByDailyRestriction(data: {
635
+ eventStartTime: Date;
636
+ eventEndTime: Date;
637
+ restrictionStartAndEndTime: StartAndEndTime;
638
+ props: {
639
+ intervalType: EventInterval;
640
+ };
641
+ }): Array<StartAndEndTime> {
642
+ const dayRestrictionTimes: StartAndEndTime | null =
643
+ data.restrictionStartAndEndTime;
644
+
645
+ // if there are no day restriction times, we dont have any restrictions and we can return the event start and end times
646
+
647
+ if (!dayRestrictionTimes) {
648
+ return [
649
+ {
650
+ startTime: data.eventStartTime,
651
+ endTime: data.eventEndTime,
652
+ },
653
+ ];
654
+ }
672
655
 
673
- //
656
+ //
674
657
 
675
- let restrictionStartTime: Date = dayRestrictionTimes.startTime;
676
- let restrictionEndTime: Date = dayRestrictionTimes.endTime;
658
+ let restrictionStartTime: Date = dayRestrictionTimes.startTime;
659
+ let restrictionEndTime: Date = dayRestrictionTimes.endTime;
677
660
 
678
- let currentStartTime: Date = data.eventStartTime;
679
- const currentEndTime: Date = data.eventEndTime;
661
+ let currentStartTime: Date = data.eventStartTime;
662
+ const currentEndTime: Date = data.eventEndTime;
680
663
 
681
- const trimmedStartAndEndTimes: Array<StartAndEndTime> = [];
664
+ const trimmedStartAndEndTimes: Array<StartAndEndTime> = [];
682
665
 
683
- let reachedTheEndOfTheCurrentEvent: boolean = false;
666
+ let reachedTheEndOfTheCurrentEvent: boolean = false;
684
667
 
685
- while (!reachedTheEndOfTheCurrentEvent) {
686
- // if current end time is equalto or before than the current start time, we need to return the current event and exit the loop
668
+ while (!reachedTheEndOfTheCurrentEvent) {
669
+ // if current end time is equalto or before than the current start time, we need to return the current event and exit the loop
687
670
 
688
- if (OneUptimeDate.isBefore(currentEndTime, currentStartTime)) {
689
- reachedTheEndOfTheCurrentEvent = true;
690
- }
671
+ if (OneUptimeDate.isBefore(currentEndTime, currentStartTime)) {
672
+ reachedTheEndOfTheCurrentEvent = true;
673
+ }
691
674
 
692
- // if the event is ourside the restriction times, we need to return the trimmed array
675
+ // if the event is ourside the restriction times, we need to return the trimmed array
693
676
 
694
- if (OneUptimeDate.isAfter(restrictionStartTime, currentEndTime)) {
695
- return trimmedStartAndEndTimes;
696
- }
677
+ if (OneUptimeDate.isAfter(restrictionStartTime, currentEndTime)) {
678
+ return trimmedStartAndEndTimes;
679
+ }
697
680
 
698
- // if current event start time is after the restriction end time then we need to return empty array as there is no event.
681
+ // if current event start time is after the restriction end time then we need to return empty array as there is no event.
699
682
 
700
- if (OneUptimeDate.isAfter(currentStartTime, restrictionEndTime)) {
701
- return trimmedStartAndEndTimes;
702
- }
683
+ if (OneUptimeDate.isAfter(currentStartTime, restrictionEndTime)) {
684
+ return trimmedStartAndEndTimes;
685
+ }
703
686
 
704
- // if the restriction end time is before the restriction start time, we need to add one day to the restriction end time
705
- if (
706
- OneUptimeDate.isAfter(restrictionStartTime, restrictionEndTime)
707
- ) {
708
- restrictionEndTime = OneUptimeDate.addRemoveDays(
709
- restrictionEndTime,
710
- data.props.intervalType === EventInterval.Day ? 1 : 7 // daily or weekly
711
- );
712
- }
687
+ // if the restriction end time is before the restriction start time, we need to add one day to the restriction end time
688
+ if (OneUptimeDate.isAfter(restrictionStartTime, restrictionEndTime)) {
689
+ restrictionEndTime = OneUptimeDate.addRemoveDays(
690
+ restrictionEndTime,
691
+ data.props.intervalType === EventInterval.Day ? 1 : 7, // daily or weekly
692
+ );
693
+ }
713
694
 
714
- // 1 - if the current event falls within the restriction times, we need to return the current event.
715
-
716
- if (
717
- OneUptimeDate.isOnOrAfter(
718
- currentStartTime,
719
- restrictionStartTime
720
- ) &&
721
- OneUptimeDate.isOnOrAfter(restrictionEndTime, currentEndTime)
722
- ) {
723
- trimmedStartAndEndTimes.push({
724
- startTime: currentStartTime,
725
- endTime: currentEndTime,
726
- });
727
- reachedTheEndOfTheCurrentEvent = true;
728
- }
695
+ // 1 - if the current event falls within the restriction times, we need to return the current event.
729
696
 
730
- // 2 - Start Restriction: If the current event starts after the restriction start time and ends after the restriction end time, we need to return the current event with the start time of the current event and end time of the restriction
731
-
732
- if (
733
- OneUptimeDate.isOnOrAfter(
734
- currentStartTime,
735
- restrictionStartTime
736
- ) &&
737
- OneUptimeDate.isOnOrAfter(currentEndTime, restrictionEndTime)
738
- ) {
739
- trimmedStartAndEndTimes.push({
740
- startTime: currentStartTime,
741
- endTime: restrictionEndTime,
742
- });
743
- reachedTheEndOfTheCurrentEvent = true;
744
- }
697
+ if (
698
+ OneUptimeDate.isOnOrAfter(currentStartTime, restrictionStartTime) &&
699
+ OneUptimeDate.isOnOrAfter(restrictionEndTime, currentEndTime)
700
+ ) {
701
+ trimmedStartAndEndTimes.push({
702
+ startTime: currentStartTime,
703
+ endTime: currentEndTime,
704
+ });
705
+ reachedTheEndOfTheCurrentEvent = true;
706
+ }
707
+
708
+ // 2 - Start Restriction: If the current event starts after the restriction start time and ends after the restriction end time, we need to return the current event with the start time of the current event and end time of the restriction
709
+
710
+ if (
711
+ OneUptimeDate.isOnOrAfter(currentStartTime, restrictionStartTime) &&
712
+ OneUptimeDate.isOnOrAfter(currentEndTime, restrictionEndTime)
713
+ ) {
714
+ trimmedStartAndEndTimes.push({
715
+ startTime: currentStartTime,
716
+ endTime: restrictionEndTime,
717
+ });
718
+ reachedTheEndOfTheCurrentEvent = true;
719
+ }
720
+
721
+ // 3 - End Restriction - If the current event starts before the restriction start time and ends before the restriction end time, we need to return the current event with the start time of the restriction and end time of the current event.
722
+
723
+ if (
724
+ OneUptimeDate.isBefore(currentStartTime, restrictionStartTime) &&
725
+ OneUptimeDate.isBefore(currentEndTime, restrictionEndTime) &&
726
+ OneUptimeDate.isAfter(currentEndTime, restrictionStartTime)
727
+ ) {
728
+ trimmedStartAndEndTimes.push({
729
+ startTime: restrictionStartTime,
730
+ endTime: currentEndTime,
731
+ });
732
+ reachedTheEndOfTheCurrentEvent = true;
733
+ }
734
+
735
+ // 4 - If the current event starts before the restriction start time and ends after the restriction end time, we need to return the current event with the start time of the restriction and end time of the restriction.
736
+
737
+ if (
738
+ OneUptimeDate.isBefore(currentStartTime, restrictionStartTime) &&
739
+ OneUptimeDate.isOnOrAfter(currentEndTime, restrictionEndTime)
740
+ ) {
741
+ trimmedStartAndEndTimes.push({
742
+ startTime: restrictionStartTime,
743
+ endTime: restrictionEndTime,
744
+ });
745
745
 
746
- // 3 - End Restriction - If the current event starts before the restriction start time and ends before the restriction end time, we need to return the current event with the start time of the restriction and end time of the current event.
747
-
748
- if (
749
- OneUptimeDate.isBefore(
750
- currentStartTime,
751
- restrictionStartTime
752
- ) &&
753
- OneUptimeDate.isBefore(currentEndTime, restrictionEndTime) &&
754
- OneUptimeDate.isAfter(currentEndTime, restrictionStartTime)
755
- ) {
756
- trimmedStartAndEndTimes.push({
757
- startTime: restrictionStartTime,
758
- endTime: currentEndTime,
759
- });
760
- reachedTheEndOfTheCurrentEvent = true;
761
- }
746
+ currentStartTime = OneUptimeDate.addRemoveSeconds(
747
+ restrictionEndTime,
748
+ 1,
749
+ );
762
750
 
763
- // 4 - If the current event starts before the restriction start time and ends after the restriction end time, we need to return the current event with the start time of the restriction and end time of the restriction.
764
-
765
- if (
766
- OneUptimeDate.isBefore(
767
- currentStartTime,
768
- restrictionStartTime
769
- ) &&
770
- OneUptimeDate.isOnOrAfter(currentEndTime, restrictionEndTime)
771
- ) {
772
- trimmedStartAndEndTimes.push({
773
- startTime: restrictionStartTime,
774
- endTime: restrictionEndTime,
775
- });
776
-
777
- currentStartTime = OneUptimeDate.addRemoveSeconds(
778
- restrictionEndTime,
779
- 1
780
- );
781
-
782
- // add day to restriction start and end times.
783
-
784
- restrictionStartTime = OneUptimeDate.addRemoveDays(
785
- restrictionStartTime,
786
- data.props.intervalType === EventInterval.Day ? 1 : 7 // daily or weekly
787
- );
788
- restrictionEndTime = OneUptimeDate.addRemoveDays(
789
- restrictionEndTime,
790
- data.props.intervalType === EventInterval.Day ? 1 : 7 // daily or weekly
791
- );
792
- }
793
- }
751
+ // add day to restriction start and end times.
794
752
 
795
- return trimmedStartAndEndTimes;
753
+ restrictionStartTime = OneUptimeDate.addRemoveDays(
754
+ restrictionStartTime,
755
+ data.props.intervalType === EventInterval.Day ? 1 : 7, // daily or weekly
756
+ );
757
+ restrictionEndTime = OneUptimeDate.addRemoveDays(
758
+ restrictionEndTime,
759
+ data.props.intervalType === EventInterval.Day ? 1 : 7, // daily or weekly
760
+ );
761
+ }
796
762
  }
797
763
 
798
- // helper functions.
764
+ return trimmedStartAndEndTimes;
765
+ }
799
766
 
800
- private static incrementUserIndex(
801
- currentIndex: number,
802
- userArrayLength: number,
803
- incrementBy?: number
804
- ): number {
805
- // update the current user index
767
+ // helper functions.
806
768
 
807
- if (incrementBy === undefined) {
808
- incrementBy = 1;
809
- }
769
+ private static incrementUserIndex(
770
+ currentIndex: number,
771
+ userArrayLength: number,
772
+ incrementBy?: number,
773
+ ): number {
774
+ // update the current user index
810
775
 
811
- currentIndex = currentIndex + incrementBy;
776
+ if (incrementBy === undefined) {
777
+ incrementBy = 1;
778
+ }
812
779
 
813
- // if the current user index is greater than the length of the users array, we need to reset the current user index to 0
814
- if (currentIndex >= userArrayLength) {
815
- // then modulo the current user index by the length of the users array
816
- currentIndex = currentIndex % userArrayLength; // so this rotates the users.
817
- }
780
+ currentIndex = currentIndex + incrementBy;
818
781
 
819
- return currentIndex;
782
+ // if the current user index is greater than the length of the users array, we need to reset the current user index to 0
783
+ if (currentIndex >= userArrayLength) {
784
+ // then modulo the current user index by the length of the users array
785
+ currentIndex = currentIndex % userArrayLength; // so this rotates the users.
820
786
  }
821
787
 
822
- private static getCalendarEventsFromStartAndEndDates(
823
- trimmedStartAndEndTimes: Array<StartAndEndTime>,
824
- users: Array<UserModel>,
825
- currentUserIndex: number
826
- ): Array<CalendarEvent> {
827
- const events: Array<CalendarEvent> = [];
788
+ return currentIndex;
789
+ }
828
790
 
829
- const userId: string = users[currentUserIndex]?.id?.toString() || '';
791
+ private static getCalendarEventsFromStartAndEndDates(
792
+ trimmedStartAndEndTimes: Array<StartAndEndTime>,
793
+ users: Array<UserModel>,
794
+ currentUserIndex: number,
795
+ ): Array<CalendarEvent> {
796
+ const events: Array<CalendarEvent> = [];
830
797
 
831
- for (const trimmedStartAndEndTime of trimmedStartAndEndTimes) {
832
- const event: CalendarEvent = {
833
- id: 0,
834
- title: userId, // This will be changed to username in the UI or will bve kept the same if used on the server.
835
- allDay: false,
836
- start: trimmedStartAndEndTime.startTime,
837
- end: trimmedStartAndEndTime.endTime,
838
- };
798
+ const userId: string = users[currentUserIndex]?.id?.toString() || "";
839
799
 
840
- events.push(event);
841
- }
800
+ for (const trimmedStartAndEndTime of trimmedStartAndEndTimes) {
801
+ const event: CalendarEvent = {
802
+ id: 0,
803
+ title: userId, // This will be changed to username in the UI or will bve kept the same if used on the server.
804
+ allDay: false,
805
+ start: trimmedStartAndEndTime.startTime,
806
+ end: trimmedStartAndEndTime.endTime,
807
+ };
842
808
 
843
- return events;
809
+ events.push(event);
844
810
  }
845
811
 
846
- public static getMultiLayerEvents(
847
- data: MultiLayerProps
848
- ): Array<CalendarEvent> {
849
- const events: Array<PriorityCalendarEvents> = [];
850
- let layerPriority: number = 1;
812
+ return events;
813
+ }
814
+
815
+ public static getMultiLayerEvents(
816
+ data: MultiLayerProps,
817
+ ): Array<CalendarEvent> {
818
+ const events: Array<PriorityCalendarEvents> = [];
819
+ let layerPriority: number = 1;
820
+
821
+ for (const layer of data.layers) {
822
+ const layerEvents: Array<CalendarEvent> = LayerUtil.getEvents({
823
+ users: layer.users,
824
+ startDateTimeOfLayer: layer.startDateTimeOfLayer,
825
+ restrictionTimes: layer.restrictionTimes,
826
+ handOffTime: layer.handOffTime,
827
+ rotation: layer.rotation,
828
+ calendarStartDate: data.calendarStartDate,
829
+ calendarEndDate: data.calendarEndDate,
830
+ });
831
+
832
+ // add priority to each event
833
+
834
+ for (const layerEvent of layerEvents) {
835
+ const priorityEvent: PriorityCalendarEvents = {
836
+ ...layerEvent,
837
+ priority: layerPriority,
838
+ };
851
839
 
852
- for (const layer of data.layers) {
853
- const layerEvents: Array<CalendarEvent> = LayerUtil.getEvents({
854
- users: layer.users,
855
- startDateTimeOfLayer: layer.startDateTimeOfLayer,
856
- restrictionTimes: layer.restrictionTimes,
857
- handOffTime: layer.handOffTime,
858
- rotation: layer.rotation,
859
- calendarStartDate: data.calendarStartDate,
860
- calendarEndDate: data.calendarEndDate,
861
- });
840
+ events.push(priorityEvent);
841
+ }
862
842
 
863
- // add priority to each event
843
+ // increment layer priority
844
+ layerPriority++;
845
+ }
864
846
 
865
- for (const layerEvent of layerEvents) {
866
- const priorityEvent: PriorityCalendarEvents = {
867
- ...layerEvent,
868
- priority: layerPriority,
869
- };
847
+ // now remove the overlapping events
870
848
 
871
- events.push(priorityEvent);
872
- }
849
+ const nonOverlappingEvents: Array<CalendarEvent> =
850
+ LayerUtil.removeOverlappingEvents(events);
873
851
 
874
- // increment layer priority
875
- layerPriority++;
876
- }
852
+ return nonOverlappingEvents;
853
+ }
877
854
 
878
- // now remove the overlapping events
855
+ public static removeOverlappingEvents(
856
+ events: PriorityCalendarEvents[],
857
+ ): CalendarEvent[] {
858
+ // now remove overlapping events by priority and trim them by priority. Lower priority number will be kept and higher priority number will be trimmed.
859
+ // so if there are two events with the same start and end time, we will keep the one with the lower priority number and remove the one with the higher priority number.
860
+ // if there are overlapping events, we will trim the one with the higher priority number.
879
861
 
880
- const nonOverlappingEvents: Array<CalendarEvent> =
881
- LayerUtil.removeOverlappingEvents(events);
862
+ // sort the events by priority
882
863
 
883
- return nonOverlappingEvents;
884
- }
864
+ // now remove the overlapping events
885
865
 
886
- public static removeOverlappingEvents(
887
- events: PriorityCalendarEvents[]
888
- ): CalendarEvent[] {
889
- // now remove overlapping events by priority and trim them by priority. Lower priority number will be kept and higher priority number will be trimmed.
890
- // so if there are two events with the same start and end time, we will keep the one with the lower priority number and remove the one with the higher priority number.
891
- // if there are overlapping events, we will trim the one with the higher priority number.
866
+ const finalEvents: PriorityCalendarEvents[] = [];
892
867
 
893
- // sort the events by priority
868
+ // sort events by start time
894
869
 
895
- // now remove the overlapping events
870
+ events.sort((a: CalendarEvent, b: CalendarEvent) => {
871
+ if (OneUptimeDate.isBefore(a.start, b.start)) {
872
+ return -1;
873
+ }
896
874
 
897
- const finalEvents: PriorityCalendarEvents[] = [];
875
+ if (OneUptimeDate.isAfter(a.start, b.start)) {
876
+ return 1;
877
+ }
898
878
 
899
- // sort events by start time
879
+ return 0;
880
+ });
900
881
 
901
- events.sort((a: CalendarEvent, b: CalendarEvent) => {
902
- if (OneUptimeDate.isBefore(a.start, b.start)) {
903
- return -1;
904
- }
882
+ for (const event of events) {
883
+ // trim the trimmed events by the current event based on priority
905
884
 
906
- if (OneUptimeDate.isAfter(a.start, b.start)) {
907
- return 1;
908
- }
885
+ for (const finalEvent of finalEvents) {
886
+ // check if this final event overlaps with the current event
909
887
 
910
- return 0;
911
- });
888
+ if (
889
+ OneUptimeDate.isOverlapping(
890
+ finalEvent.start,
891
+ finalEvent.end,
892
+ event.start,
893
+ event.end,
894
+ )
895
+ ) {
896
+ // if the current event has a higher priority than the final event, we need to trim the final event
912
897
 
913
- for (const event of events) {
914
- // trim the trimmed events by the current event based on priority
915
-
916
- for (const finalEvent of finalEvents) {
917
- // check if this final event overlaps with the current event
918
-
919
- if (
920
- OneUptimeDate.isOverlapping(
921
- finalEvent.start,
922
- finalEvent.end,
923
- event.start,
924
- event.end
925
- )
926
- ) {
927
- // if the current event has a higher priority than the final event, we need to trim the final event
928
-
929
- if (event.priority < finalEvent.priority) {
930
- // trim the final event based on the current event
931
- // end time of the final event will be the start time of the current event - 1 second
932
-
933
- const tempFinalEventEnd: Date = finalEvent.end;
934
-
935
- finalEvent.end = OneUptimeDate.addRemoveSeconds(
936
- event.start,
937
- -1
938
- );
939
-
940
- // final event was originally ending after the current event, so we need to add the trimmed event to the final events array
941
-
942
- if (
943
- OneUptimeDate.isAfter(tempFinalEventEnd, event.end)
944
- ) {
945
- // add the trimmed event to the final events array
946
-
947
- const trimmedEvent: PriorityCalendarEvents = {
948
- ...finalEvent,
949
- priority: finalEvent.priority,
950
- start: OneUptimeDate.addRemoveSeconds(
951
- event.end,
952
- 1
953
- ),
954
- end: tempFinalEventEnd,
955
- };
956
-
957
- finalEvents.push(trimmedEvent);
958
- }
959
- } else {
960
- // trim the current event based on the final event
961
- // start time of the current event will be the end time of the final event + 1 second
962
- event.start = OneUptimeDate.addRemoveSeconds(
963
- finalEvent.end,
964
- 1
965
- );
966
- }
967
- }
968
- }
898
+ if (event.priority < finalEvent.priority) {
899
+ // trim the final event based on the current event
900
+ // end time of the final event will be the start time of the current event - 1 second
969
901
 
970
- finalEvents.push(event);
902
+ const tempFinalEventEnd: Date = finalEvent.end;
971
903
 
972
- // sort by start times
904
+ finalEvent.end = OneUptimeDate.addRemoveSeconds(event.start, -1);
973
905
 
974
- finalEvents.sort((a: CalendarEvent, b: CalendarEvent) => {
975
- if (OneUptimeDate.isBefore(a.start, b.start)) {
976
- return -1;
977
- }
906
+ // final event was originally ending after the current event, so we need to add the trimmed event to the final events array
978
907
 
979
- if (OneUptimeDate.isAfter(a.start, b.start)) {
980
- return 1;
981
- }
908
+ if (OneUptimeDate.isAfter(tempFinalEventEnd, event.end)) {
909
+ // add the trimmed event to the final events array
982
910
 
983
- return 0;
984
- });
911
+ const trimmedEvent: PriorityCalendarEvents = {
912
+ ...finalEvent,
913
+ priority: finalEvent.priority,
914
+ start: OneUptimeDate.addRemoveSeconds(event.end, 1),
915
+ end: tempFinalEventEnd,
916
+ };
985
917
 
986
- // if an event starts and end at the same time, we need to remove it
918
+ finalEvents.push(trimmedEvent);
919
+ }
920
+ } else {
921
+ // trim the current event based on the final event
922
+ // start time of the current event will be the end time of the final event + 1 second
923
+ event.start = OneUptimeDate.addRemoveSeconds(finalEvent.end, 1);
924
+ }
925
+ }
926
+ }
927
+
928
+ finalEvents.push(event);
987
929
 
988
- finalEvents.forEach((finalEvent: CalendarEvent, index: number) => {
989
- if (OneUptimeDate.isSame(finalEvent.start, finalEvent.end)) {
990
- finalEvents.splice(index, 1);
991
- }
930
+ // sort by start times
992
931
 
993
- // if any event ends before it starts, we need to remove it
932
+ finalEvents.sort((a: CalendarEvent, b: CalendarEvent) => {
933
+ if (OneUptimeDate.isBefore(a.start, b.start)) {
934
+ return -1;
935
+ }
994
936
 
995
- if (OneUptimeDate.isBefore(finalEvent.end, finalEvent.start)) {
996
- finalEvents.splice(index, 1);
997
- }
998
- });
937
+ if (OneUptimeDate.isAfter(a.start, b.start)) {
938
+ return 1;
999
939
  }
1000
940
 
1001
- // convert PriorityCalendarEvents to CalendarEvents
941
+ return 0;
942
+ });
1002
943
 
1003
- const calendarEvents: CalendarEvent[] = [];
1004
- let id: number = 1;
944
+ // if an event starts and end at the same time, we need to remove it
945
+
946
+ finalEvents.forEach((finalEvent: CalendarEvent, index: number) => {
947
+ if (OneUptimeDate.isSame(finalEvent.start, finalEvent.end)) {
948
+ finalEvents.splice(index, 1);
949
+ }
1005
950
 
1006
- for (const event of finalEvents) {
1007
- const calendarEvent: CalendarEvent = {
1008
- ...event,
1009
- id: id,
1010
- };
951
+ // if any event ends before it starts, we need to remove it
1011
952
 
1012
- calendarEvents.push(calendarEvent);
1013
- id++;
953
+ if (OneUptimeDate.isBefore(finalEvent.end, finalEvent.start)) {
954
+ finalEvents.splice(index, 1);
1014
955
  }
956
+ });
957
+ }
958
+
959
+ // convert PriorityCalendarEvents to CalendarEvents
960
+
961
+ const calendarEvents: CalendarEvent[] = [];
962
+ let id: number = 1;
1015
963
 
1016
- return calendarEvents;
964
+ for (const event of finalEvents) {
965
+ const calendarEvent: CalendarEvent = {
966
+ ...event,
967
+ id: id,
968
+ };
969
+
970
+ calendarEvents.push(calendarEvent);
971
+ id++;
1017
972
  }
973
+
974
+ return calendarEvents;
975
+ }
1018
976
  }