@oneuptime/common 1.0.0

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