@oneuptime/common 7.0.2525 → 7.0.2570

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 (819) 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/CookieName.ts +11 -0
  149. package/Types/Copilot/CopilotEventStatus.ts +6 -0
  150. package/Types/Copilot/CopilotEventType.ts +2 -2
  151. package/Types/Countries.ts +243 -243
  152. package/Types/Currency.ts +23 -23
  153. package/Types/CustomField/CustomFieldType.ts +3 -3
  154. package/Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid.ts +4 -4
  155. package/Types/Database/AccessControl/ColumnAccessControl.ts +33 -33
  156. package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +34 -36
  157. package/Types/Database/AccessControl/TableAccessControl.ts +16 -16
  158. package/Types/Database/AccessControl/TableBillingAccessControl.ts +16 -16
  159. package/Types/Database/AccessControlColumn.ts +4 -4
  160. package/Types/Database/AllowUserQueryWithoutTenant.ts +4 -4
  161. package/Types/Database/CanAccessIfCanReadOn.ts +6 -6
  162. package/Types/Database/ColumnLength.ts +61 -61
  163. package/Types/Database/ColumnType.ts +33 -33
  164. package/Types/Database/Columns.ts +16 -16
  165. package/Types/Database/CompareBase.ts +28 -28
  166. package/Types/Database/CrudApiEndpoint.ts +5 -5
  167. package/Types/Database/CurrentUserCanAccessRecordBy.ts +4 -4
  168. package/Types/Database/DatabaseProperty.ts +42 -42
  169. package/Types/Database/Date.ts +20 -20
  170. package/Types/Database/EnableDocumentation.ts +6 -7
  171. package/Types/Database/EnableWorkflow.ts +5 -5
  172. package/Types/Database/IsPermissionsIf.ts +12 -12
  173. package/Types/Database/LabelsColumn.ts +4 -4
  174. package/Types/Database/MultiTenentQueryAllowed.ts +4 -4
  175. package/Types/Database/PartialEntity.ts +1 -1
  176. package/Types/Database/SlugifyColumn.ts +5 -5
  177. package/Types/Database/TableColumn.ts +42 -42
  178. package/Types/Database/TableColumnType.ts +39 -39
  179. package/Types/Database/TableMetadata.ts +14 -14
  180. package/Types/Database/TenantColumn.ts +4 -4
  181. package/Types/Database/TotalItemsBy.ts +9 -9
  182. package/Types/Database/UniqueColumnBy.ts +27 -27
  183. package/Types/DatabaseType.ts +2 -2
  184. package/Types/Date.ts +969 -921
  185. package/Types/Day/DayOfWeek.ts +24 -24
  186. package/Types/Decimal.ts +57 -57
  187. package/Types/Dictionary.ts +1 -1
  188. package/Types/DiskSize.ts +32 -32
  189. package/Types/Domain.ts +74 -74
  190. package/Types/Email/EmailBody.ts +2 -2
  191. package/Types/Email/EmailMessage.ts +8 -8
  192. package/Types/Email/EmailServer.ts +12 -12
  193. package/Types/Email/EmailTemplate.ts +5 -5
  194. package/Types/Email/EmailTemplateType.ts +36 -36
  195. package/Types/Email.ts +99 -101
  196. package/Types/EmailWithName.ts +26 -26
  197. package/Types/EncryptionAlgorithm.ts +1 -1
  198. package/Types/Events/EventInterval.ts +5 -5
  199. package/Types/Events/Recurring.ts +90 -92
  200. package/Types/Exception/ApiException.ts +5 -5
  201. package/Types/Exception/BadDataException.ts +5 -5
  202. package/Types/Exception/BadOperationException.ts +5 -5
  203. package/Types/Exception/BadRequestException.ts +5 -5
  204. package/Types/Exception/DatabaseNotConnectedException.ts +8 -8
  205. package/Types/Exception/Exception.ts +15 -15
  206. package/Types/Exception/ExceptionCode.ts +17 -17
  207. package/Types/Exception/NotAuthenticatedException.ts +5 -5
  208. package/Types/Exception/NotAuthorizedException.ts +5 -5
  209. package/Types/Exception/NotFoundException.ts +5 -5
  210. package/Types/Exception/NotImplementedException.ts +8 -8
  211. package/Types/Exception/PaymentRequiredException.ts +5 -5
  212. package/Types/Exception/ServerException.ts +5 -5
  213. package/Types/Exception/SsoAuthorizationException.ts +12 -12
  214. package/Types/Exception/TenantNotFoundException.ts +5 -5
  215. package/Types/Exception/TimeoutException.ts +5 -5
  216. package/Types/Exception/UnableToReachServer.ts +5 -5
  217. package/Types/Exception/WebsiteRequestException.ts +5 -5
  218. package/Types/File/MimeType.ts +5 -5
  219. package/Types/File.ts +2 -2
  220. package/Types/Filter/FilterCondition.ts +2 -2
  221. package/Types/Filter/FilterType.ts +6 -6
  222. package/Types/HashCode.ts +8 -8
  223. package/Types/HashedString.ts +80 -82
  224. package/Types/Html.ts +13 -13
  225. package/Types/IP/IP.ts +93 -93
  226. package/Types/IP/IPType.ts +2 -2
  227. package/Types/IP/IPv4.ts +7 -7
  228. package/Types/IP/IPv6.ts +7 -7
  229. package/Types/Icon/IconProp.ts +122 -122
  230. package/Types/Infrastructure/BasicMetrics.ts +15 -15
  231. package/Types/Infrastructure/OSType.ts +4 -4
  232. package/Types/IsolatedVM/ReturnResult.ts +2 -2
  233. package/Types/JSON.ts +139 -139
  234. package/Types/JSONFunctions.ts +310 -320
  235. package/Types/JsonWebTokenData.ts +11 -11
  236. package/Types/Link.ts +5 -5
  237. package/Types/ListData.ts +26 -26
  238. package/Types/Mail/MailStatus.ts +2 -2
  239. package/Types/MeteredPlan/ProductType.ts +4 -4
  240. package/Types/Mixins.ts +1 -1
  241. package/Types/Monitor/CriteriaFilter.ts +107 -107
  242. package/Types/Monitor/CriteriaIncident.ts +8 -7
  243. package/Types/Monitor/CustomCodeMonitor/CustomCodeMonitorResponse.ts +5 -5
  244. package/Types/Monitor/IncomingMonitor/IncomingMonitorRequest.ts +10 -10
  245. package/Types/Monitor/MonitorCriteria.ts +151 -162
  246. package/Types/Monitor/MonitorCriteriaInstance.ts +622 -628
  247. package/Types/Monitor/MonitorStep.ts +314 -319
  248. package/Types/Monitor/MonitorSteps.ts +156 -161
  249. package/Types/Monitor/MonitorType.ts +164 -169
  250. package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +12 -12
  251. package/Types/Monitor/ServerMonitor/ServerMonitorResponse.ts +10 -10
  252. package/Types/Monitor/SyntheticMonitors/BrowserType.ts +1 -1
  253. package/Types/Monitor/SyntheticMonitors/ScreenSizeType.ts +1 -1
  254. package/Types/Monitor/SyntheticMonitors/Screenshot.ts +1 -1
  255. package/Types/Monitor/SyntheticMonitors/SyntheticMonitorResponse.ts +8 -8
  256. package/Types/Name.ts +65 -65
  257. package/Types/NotificationRule/NotificationRuleType.ts +3 -3
  258. package/Types/NotificationSetting/NotificationSettingEventType.ts +18 -18
  259. package/Types/ObjectID.ts +73 -73
  260. package/Types/OnCallDutyPolicy/Layer.ts +782 -824
  261. package/Types/OnCallDutyPolicy/OnCalDutyExecutionLogTimelineStatus.ts +6 -6
  262. package/Types/OnCallDutyPolicy/OnCallDutyPolicyAlertStatus.ts +3 -3
  263. package/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.ts +5 -5
  264. package/Types/OnCallDutyPolicy/RestrictionTimes.ts +177 -179
  265. package/Types/Operation/OperationResult.ts +2 -2
  266. package/Types/Operation/OperationStatus.ts +5 -5
  267. package/Types/Permission.ts +3373 -3461
  268. package/Types/Phone.ts +58 -59
  269. package/Types/Port.ts +73 -73
  270. package/Types/PositiveNumber.ts +53 -61
  271. package/Types/PricingPlan.ts +5 -5
  272. package/Types/Probe/ProbeApiIngestResponse.ts +6 -6
  273. package/Types/Probe/ProbeMonitorResponse.ts +25 -25
  274. package/Types/Probe/ProbeStatusReport.ts +4 -4
  275. package/Types/Reflection.ts +4 -4
  276. package/Types/SMS/SMS.ts +3 -3
  277. package/Types/SMS/SmsTemplateType.ts +9 -9
  278. package/Types/SSO/DigestMethod.ts +4 -4
  279. package/Types/SSO/SignatureMethod.ts +4 -4
  280. package/Types/ScheduledEvent/ScheduledEventState.ts +4 -4
  281. package/Types/ScreenSizeType.ts +3 -3
  282. package/Types/SecuritySeverity.ts +4 -4
  283. package/Types/SerializableObject.ts +12 -12
  284. package/Types/SerializableObjectDictionary.ts +58 -58
  285. package/Types/ServiceCatalog/ServiceLanguage.ts +20 -0
  286. package/Types/Sleep.ts +6 -6
  287. package/Types/SmsStatus.ts +3 -3
  288. package/Types/StatusPage/StatusPageChartType.ts +6 -6
  289. package/Types/Text.ts +126 -130
  290. package/Types/Time/StartAndEndTime.ts +2 -2
  291. package/Types/Timezone.ts +592 -592
  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/CookieName.js +12 -0
  583. package/build/dist/Types/CookieName.js.map +1 -0
  584. package/build/dist/Types/Copilot/CopilotEventStatus.js +7 -0
  585. package/build/dist/Types/Copilot/CopilotEventStatus.js.map +1 -0
  586. package/build/dist/Types/Copilot/CopilotEventType.js.map +1 -1
  587. package/build/dist/Types/Countries.js.map +1 -1
  588. package/build/dist/Types/Currency.js +3 -3
  589. package/build/dist/Types/Currency.js.map +1 -1
  590. package/build/dist/Types/CustomField/CustomFieldType.js.map +1 -1
  591. package/build/dist/Types/Database/AccessControl/AllowAccessIfSubscriptionIsUnpaid.js.map +1 -1
  592. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +2 -2
  593. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
  594. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +2 -2
  595. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
  596. package/build/dist/Types/Database/AccessControl/TableAccessControl.js.map +1 -1
  597. package/build/dist/Types/Database/AccessControl/TableBillingAccessControl.js.map +1 -1
  598. package/build/dist/Types/Database/AccessControlColumn.js.map +1 -1
  599. package/build/dist/Types/Database/AllowUserQueryWithoutTenant.js.map +1 -1
  600. package/build/dist/Types/Database/CanAccessIfCanReadOn.js.map +1 -1
  601. package/build/dist/Types/Database/ColumnLength.js +1 -1
  602. package/build/dist/Types/Database/ColumnLength.js.map +1 -1
  603. package/build/dist/Types/Database/ColumnType.js.map +1 -1
  604. package/build/dist/Types/Database/Columns.js.map +1 -1
  605. package/build/dist/Types/Database/CompareBase.js +5 -5
  606. package/build/dist/Types/Database/CompareBase.js.map +1 -1
  607. package/build/dist/Types/Database/CrudApiEndpoint.js.map +1 -1
  608. package/build/dist/Types/Database/CurrentUserCanAccessRecordBy.js.map +1 -1
  609. package/build/dist/Types/Database/DatabaseProperty.js +3 -3
  610. package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
  611. package/build/dist/Types/Database/Date.js +2 -2
  612. package/build/dist/Types/Database/Date.js.map +1 -1
  613. package/build/dist/Types/Database/EnableDocumentation.js +1 -2
  614. package/build/dist/Types/Database/EnableDocumentation.js.map +1 -1
  615. package/build/dist/Types/Database/EnableWorkflow.js.map +1 -1
  616. package/build/dist/Types/Database/IsPermissionsIf.js.map +1 -1
  617. package/build/dist/Types/Database/LabelsColumn.js.map +1 -1
  618. package/build/dist/Types/Database/MultiTenentQueryAllowed.js.map +1 -1
  619. package/build/dist/Types/Database/SlugifyColumn.js.map +1 -1
  620. package/build/dist/Types/Database/TableColumn.js +2 -2
  621. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  622. package/build/dist/Types/Database/TableColumnType.js.map +1 -1
  623. package/build/dist/Types/Database/TableMetadata.js.map +1 -1
  624. package/build/dist/Types/Database/TenantColumn.js.map +1 -1
  625. package/build/dist/Types/Database/TotalItemsBy.js.map +1 -1
  626. package/build/dist/Types/Database/UniqueColumnBy.js +2 -2
  627. package/build/dist/Types/Database/UniqueColumnBy.js.map +1 -1
  628. package/build/dist/Types/DatabaseType.js.map +1 -1
  629. package/build/dist/Types/Date.js +192 -141
  630. package/build/dist/Types/Date.js.map +1 -1
  631. package/build/dist/Types/Day/DayOfWeek.js.map +1 -1
  632. package/build/dist/Types/Decimal.js +8 -8
  633. package/build/dist/Types/Decimal.js.map +1 -1
  634. package/build/dist/Types/DiskSize.js +3 -3
  635. package/build/dist/Types/DiskSize.js.map +1 -1
  636. package/build/dist/Types/Domain.js +13 -13
  637. package/build/dist/Types/Domain.js.map +1 -1
  638. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  639. package/build/dist/Types/Email.js +32 -32
  640. package/build/dist/Types/Email.js.map +1 -1
  641. package/build/dist/Types/EmailWithName.js +4 -4
  642. package/build/dist/Types/EmailWithName.js.map +1 -1
  643. package/build/dist/Types/EncryptionAlgorithm.js.map +1 -1
  644. package/build/dist/Types/Events/EventInterval.js.map +1 -1
  645. package/build/dist/Types/Events/Recurring.js +15 -15
  646. package/build/dist/Types/Events/Recurring.js.map +1 -1
  647. package/build/dist/Types/Exception/ApiException.js +2 -2
  648. package/build/dist/Types/Exception/ApiException.js.map +1 -1
  649. package/build/dist/Types/Exception/BadDataException.js +2 -2
  650. package/build/dist/Types/Exception/BadDataException.js.map +1 -1
  651. package/build/dist/Types/Exception/BadOperationException.js +2 -2
  652. package/build/dist/Types/Exception/BadOperationException.js.map +1 -1
  653. package/build/dist/Types/Exception/BadRequestException.js +2 -2
  654. package/build/dist/Types/Exception/BadRequestException.js.map +1 -1
  655. package/build/dist/Types/Exception/DatabaseNotConnectedException.js +3 -3
  656. package/build/dist/Types/Exception/DatabaseNotConnectedException.js.map +1 -1
  657. package/build/dist/Types/Exception/Exception.js +1 -1
  658. package/build/dist/Types/Exception/Exception.js.map +1 -1
  659. package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
  660. package/build/dist/Types/Exception/NotAuthenticatedException.js +2 -2
  661. package/build/dist/Types/Exception/NotAuthenticatedException.js.map +1 -1
  662. package/build/dist/Types/Exception/NotAuthorizedException.js +2 -2
  663. package/build/dist/Types/Exception/NotAuthorizedException.js.map +1 -1
  664. package/build/dist/Types/Exception/NotFoundException.js +2 -2
  665. package/build/dist/Types/Exception/NotFoundException.js.map +1 -1
  666. package/build/dist/Types/Exception/NotImplementedException.js +3 -3
  667. package/build/dist/Types/Exception/NotImplementedException.js.map +1 -1
  668. package/build/dist/Types/Exception/PaymentRequiredException.js +2 -2
  669. package/build/dist/Types/Exception/PaymentRequiredException.js.map +1 -1
  670. package/build/dist/Types/Exception/ServerException.js +3 -3
  671. package/build/dist/Types/Exception/ServerException.js.map +1 -1
  672. package/build/dist/Types/Exception/SsoAuthorizationException.js +3 -3
  673. package/build/dist/Types/Exception/SsoAuthorizationException.js.map +1 -1
  674. package/build/dist/Types/Exception/TenantNotFoundException.js +2 -2
  675. package/build/dist/Types/Exception/TenantNotFoundException.js.map +1 -1
  676. package/build/dist/Types/Exception/TimeoutException.js +2 -2
  677. package/build/dist/Types/Exception/TimeoutException.js.map +1 -1
  678. package/build/dist/Types/Exception/UnableToReachServer.js +2 -2
  679. package/build/dist/Types/Exception/UnableToReachServer.js.map +1 -1
  680. package/build/dist/Types/Exception/WebsiteRequestException.js +2 -2
  681. package/build/dist/Types/Exception/WebsiteRequestException.js.map +1 -1
  682. package/build/dist/Types/File/MimeType.js.map +1 -1
  683. package/build/dist/Types/Filter/FilterCondition.js.map +1 -1
  684. package/build/dist/Types/Filter/FilterType.js.map +1 -1
  685. package/build/dist/Types/HashCode.js.map +1 -1
  686. package/build/dist/Types/HashedString.js +14 -14
  687. package/build/dist/Types/HashedString.js.map +1 -1
  688. package/build/dist/Types/Html.js +1 -1
  689. package/build/dist/Types/Html.js.map +1 -1
  690. package/build/dist/Types/IP/IP.js +13 -13
  691. package/build/dist/Types/IP/IP.js.map +1 -1
  692. package/build/dist/Types/IP/IPType.js.map +1 -1
  693. package/build/dist/Types/IP/IPv4.js +3 -3
  694. package/build/dist/Types/IP/IPv4.js.map +1 -1
  695. package/build/dist/Types/IP/IPv6.js +3 -3
  696. package/build/dist/Types/IP/IPv6.js.map +1 -1
  697. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  698. package/build/dist/Types/Infrastructure/OSType.js.map +1 -1
  699. package/build/dist/Types/JSON.js.map +1 -1
  700. package/build/dist/Types/JSONFunctions.js +33 -35
  701. package/build/dist/Types/JSONFunctions.js.map +1 -1
  702. package/build/dist/Types/ListData.js.map +1 -1
  703. package/build/dist/Types/Mail/MailStatus.js.map +1 -1
  704. package/build/dist/Types/MeteredPlan/ProductType.js.map +1 -1
  705. package/build/dist/Types/Monitor/CriteriaFilter.js +1 -1
  706. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  707. package/build/dist/Types/Monitor/MonitorCriteria.js +17 -19
  708. package/build/dist/Types/Monitor/MonitorCriteria.js.map +1 -1
  709. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +54 -55
  710. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  711. package/build/dist/Types/Monitor/MonitorStep.js +48 -52
  712. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  713. package/build/dist/Types/Monitor/MonitorSteps.js +19 -19
  714. package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
  715. package/build/dist/Types/Monitor/MonitorType.js +23 -23
  716. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  717. package/build/dist/Types/Monitor/SyntheticMonitors/BrowserType.js +1 -1
  718. package/build/dist/Types/Monitor/SyntheticMonitors/ScreenSizeType.js +1 -1
  719. package/build/dist/Types/Name.js +16 -16
  720. package/build/dist/Types/Name.js.map +1 -1
  721. package/build/dist/Types/NotificationRule/NotificationRuleType.js.map +1 -1
  722. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  723. package/build/dist/Types/ObjectID.js +15 -15
  724. package/build/dist/Types/ObjectID.js.map +1 -1
  725. package/build/dist/Types/OnCallDutyPolicy/Layer.js +14 -18
  726. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  727. package/build/dist/Types/OnCallDutyPolicy/OnCalDutyExecutionLogTimelineStatus.js.map +1 -1
  728. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyAlertStatus.js.map +1 -1
  729. package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js.map +1 -1
  730. package/build/dist/Types/OnCallDutyPolicy/RestrictionTimes.js +14 -14
  731. package/build/dist/Types/OnCallDutyPolicy/RestrictionTimes.js.map +1 -1
  732. package/build/dist/Types/Operation/OperationResult.js.map +1 -1
  733. package/build/dist/Types/Operation/OperationStatus.js.map +1 -1
  734. package/build/dist/Types/Permission.js +696 -696
  735. package/build/dist/Types/Permission.js.map +1 -1
  736. package/build/dist/Types/Phone.js +8 -8
  737. package/build/dist/Types/Phone.js.map +1 -1
  738. package/build/dist/Types/Port.js +11 -11
  739. package/build/dist/Types/Port.js.map +1 -1
  740. package/build/dist/Types/PositiveNumber.js +7 -8
  741. package/build/dist/Types/PositiveNumber.js.map +1 -1
  742. package/build/dist/Types/SMS/SmsTemplateType.js.map +1 -1
  743. package/build/dist/Types/SSO/DigestMethod.js.map +1 -1
  744. package/build/dist/Types/SSO/SignatureMethod.js.map +1 -1
  745. package/build/dist/Types/ScheduledEvent/ScheduledEventState.js.map +1 -1
  746. package/build/dist/Types/ScreenSizeType.js.map +1 -1
  747. package/build/dist/Types/SecuritySeverity.js.map +1 -1
  748. package/build/dist/Types/SerializableObject.js +1 -1
  749. package/build/dist/Types/SerializableObject.js.map +1 -1
  750. package/build/dist/Types/SerializableObjectDictionary.js +29 -29
  751. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  752. package/build/dist/Types/ServiceCatalog/ServiceLanguage.js +21 -0
  753. package/build/dist/Types/ServiceCatalog/ServiceLanguage.js.map +1 -0
  754. package/build/dist/Types/Sleep.js.map +1 -1
  755. package/build/dist/Types/SmsStatus.js.map +1 -1
  756. package/build/dist/Types/StatusPage/StatusPageChartType.js.map +1 -1
  757. package/build/dist/Types/Text.js +35 -35
  758. package/build/dist/Types/Text.js.map +1 -1
  759. package/build/dist/Types/Timezone.js.map +1 -1
  760. package/build/dist/Types/Typeof.js.map +1 -1
  761. package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
  762. package/build/dist/Types/UserNotification/UserNotificationExecutionStatus.js.map +1 -1
  763. package/build/dist/Types/UserNotification/UserNotificationStatus.js.map +1 -1
  764. package/build/dist/Types/UserType.js.map +1 -1
  765. package/build/dist/Types/Version.js +9 -9
  766. package/build/dist/Types/Version.js.map +1 -1
  767. package/build/dist/Types/WebsiteRequest.js +3 -3
  768. package/build/dist/Types/WebsiteRequest.js.map +1 -1
  769. package/build/dist/Types/Workflow/Component.js.map +1 -1
  770. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  771. package/build/dist/Types/Workflow/Components/API.js +139 -139
  772. package/build/dist/Types/Workflow/Components/API.js.map +1 -1
  773. package/build/dist/Types/Workflow/Components/BaseModel.js +139 -139
  774. package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
  775. package/build/dist/Types/Workflow/Components/Condition.js +27 -27
  776. package/build/dist/Types/Workflow/Components/Condition.js.map +1 -1
  777. package/build/dist/Types/Workflow/Components/Email.js +44 -44
  778. package/build/dist/Types/Workflow/Components/Email.js.map +1 -1
  779. package/build/dist/Types/Workflow/Components/JSON.js +60 -60
  780. package/build/dist/Types/Workflow/Components/JSON.js.map +1 -1
  781. package/build/dist/Types/Workflow/Components/JavaScript.js +26 -26
  782. package/build/dist/Types/Workflow/Components/JavaScript.js.map +1 -1
  783. package/build/dist/Types/Workflow/Components/Log.js +15 -15
  784. package/build/dist/Types/Workflow/Components/Log.js.map +1 -1
  785. package/build/dist/Types/Workflow/Components/Manual.js +12 -12
  786. package/build/dist/Types/Workflow/Components/Manual.js.map +1 -1
  787. package/build/dist/Types/Workflow/Components/MicrosoftTeams.js +26 -26
  788. package/build/dist/Types/Workflow/Components/MicrosoftTeams.js.map +1 -1
  789. package/build/dist/Types/Workflow/Components/Schedule.js +12 -12
  790. package/build/dist/Types/Workflow/Components/Schedule.js.map +1 -1
  791. package/build/dist/Types/Workflow/Components/Slack.js +26 -26
  792. package/build/dist/Types/Workflow/Components/Slack.js.map +1 -1
  793. package/build/dist/Types/Workflow/Components/Webhook.js +20 -20
  794. package/build/dist/Types/Workflow/Components/Webhook.js.map +1 -1
  795. package/build/dist/Types/Workflow/Components/Workflow.js +15 -15
  796. package/build/dist/Types/Workflow/Components/Workflow.js.map +1 -1
  797. package/build/dist/Types/Workflow/Components.js +33 -33
  798. package/build/dist/Types/Workflow/Components.js.map +1 -1
  799. package/build/dist/Types/Workflow/WorkflowPlan.js.map +1 -1
  800. package/build/dist/Types/Workflow/WorkflowStatus.js.map +1 -1
  801. package/build/dist/Types/XML.js +3 -3
  802. package/build/dist/Types/XML.js.map +1 -1
  803. package/build/dist/Utils/API.js +66 -16
  804. package/build/dist/Utils/API.js.map +1 -1
  805. package/build/dist/Utils/Analytics.js +1 -1
  806. package/build/dist/Utils/Analytics.js.map +1 -1
  807. package/build/dist/Utils/CronTime.js +7 -7
  808. package/build/dist/Utils/Enum.js +9 -0
  809. package/build/dist/Utils/Enum.js.map +1 -0
  810. package/build/dist/Utils/Faker.js +5 -5
  811. package/build/dist/Utils/Faker.js.map +1 -1
  812. package/build/dist/Utils/ObjectUtil.js.map +1 -1
  813. package/build/dist/Utils/Realtime.js +1 -1
  814. package/build/dist/Utils/Realtime.js.map +1 -1
  815. package/build/dist/Utils/Slug.js +3 -3
  816. package/build/dist/Utils/Slug.js.map +1 -1
  817. package/build/dist/Utils/UUID.js +1 -1
  818. package/build/dist/Utils/UUID.js.map +1 -1
  819. package/package.json +3 -3
package/Types/Date.ts CHANGED
@@ -1,1069 +1,1117 @@
1
- import InBetween from './BaseDatabase/InBetween';
2
- import DayOfWeek, { DayOfWeekUtil } from './Day/DayOfWeek';
3
- import BadDataException from './Exception/BadDataException';
4
- import { JSONObject, ObjectType } from './JSON';
5
- import PositiveNumber from './PositiveNumber';
6
- import moment from 'moment-timezone';
1
+ import InBetween from "./BaseDatabase/InBetween";
2
+ import DayOfWeek, { DayOfWeekUtil } from "./Day/DayOfWeek";
3
+ import BadDataException from "./Exception/BadDataException";
4
+ import { JSONObject, ObjectType } from "./JSON";
5
+ import PositiveNumber from "./PositiveNumber";
6
+ import moment from "moment-timezone";
7
+ import Timezone from "./Timezone";
7
8
 
8
9
  export const Moment: typeof moment = moment;
9
10
 
10
11
  export default class OneUptimeDate {
11
- public getNanoSecondsFromSeconds(seconds: number): number {
12
- return seconds * 1000 * 1000 * 1000;
13
- }
12
+ public getNanoSecondsFromSeconds(seconds: number): number {
13
+ return seconds * 1000 * 1000 * 1000;
14
+ }
14
15
 
15
- public static getDateFromYYYYMMDD(
16
- year: string,
17
- month: string,
18
- day: string
19
- ): Date {
20
- return moment(`${year}-${month}-${day}`).toDate();
21
- }
16
+ public static getDateFromYYYYMMDD(
17
+ year: string,
18
+ month: string,
19
+ day: string,
20
+ ): Date {
21
+ return moment(`${year}-${month}-${day}`).toDate();
22
+ }
22
23
 
23
- public getMicroSecondsFromSeconds(seconds: number): number {
24
- return seconds * 1000 * 1000;
25
- }
24
+ public getMicroSecondsFromSeconds(seconds: number): number {
25
+ return seconds * 1000 * 1000;
26
+ }
27
+
28
+ public getMilliSecondsFromSeconds(seconds: number): number {
29
+ return seconds * 1000;
30
+ }
31
+
32
+ public static getCurrentDateAsUnixNano(): number {
33
+ return this.toUnixNano(this.getCurrentDate());
34
+ }
26
35
 
27
- public getMilliSecondsFromSeconds(seconds: number): number {
28
- return seconds * 1000;
29
- }
36
+ public static toUnixNano(date: Date): number {
37
+ return date.getTime() * 1000000;
38
+ }
30
39
 
31
- public static getCurrentDateAsUnixNano(): number {
32
- return this.toUnixNano(this.getCurrentDate());
33
- }
40
+ public static getLocalHourAndMinuteFromDate(date: Date | string): string {
41
+ date = this.fromString(date);
42
+ return moment(date).format("HH:mm");
43
+ }
34
44
 
35
- public static toUnixNano(date: Date): number {
36
- return date.getTime() * 1000000;
37
- }
45
+ public static getMillisecondsBetweenTwoUnixNanoDates(
46
+ startDate: number,
47
+ endDate: number,
48
+ ): number {
49
+ return endDate - startDate;
50
+ }
51
+
52
+ public static moveDateToTheDayOfWeek(
53
+ date: Date,
54
+ moveToWeek: Date,
55
+ dayOfWeek: DayOfWeek,
56
+ ): Date {
57
+ // date will be moved to the week of "moveToWeek" and then to the day of week "dayOfWeek"
58
+
59
+ date = this.fromString(date);
60
+ date = this.keepTimeButMoveDay(date, moveToWeek);
61
+
62
+ // now move the date to the day of week
63
+
64
+ const dateDayOfWeek: DayOfWeek = this.getDayOfWeek(date);
65
+
66
+ if (dateDayOfWeek === dayOfWeek) {
67
+ return date;
68
+ }
69
+
70
+ const numberOfDayOfWeek: number =
71
+ DayOfWeekUtil.getNumberOfDayOfWeek(dayOfWeek);
72
+
73
+ const dateDayOfWeekNumber: number =
74
+ DayOfWeekUtil.getNumberOfDayOfWeek(dateDayOfWeek);
75
+
76
+ const difference: number = numberOfDayOfWeek - dateDayOfWeekNumber;
77
+
78
+ if (difference === 0) {
79
+ return date;
80
+ }
81
+
82
+ return this.addRemoveDays(date, difference);
83
+ }
84
+
85
+ public static isOverlapping(
86
+ start: Date,
87
+ end: Date,
88
+ start1: Date,
89
+ end1: Date,
90
+ ): unknown {
91
+ start = this.fromString(start);
92
+ end = this.fromString(end);
93
+ start1 = this.fromString(start1);
94
+ end1 = this.fromString(end1);
95
+
96
+ let isOverlapping: boolean =
97
+ moment(start).isBetween(start1, end1) ||
98
+ moment(end).isBetween(start1, end1) ||
99
+ moment(start).isSame(start1) ||
100
+ moment(end).isSame(end1);
101
+
102
+ if (!isOverlapping) {
103
+ // check if the start1 and end1 are in between start and end
104
+
105
+ isOverlapping =
106
+ moment(start1).isBetween(start, end) ||
107
+ moment(end1).isBetween(start, end) ||
108
+ moment(start1).isSame(start) ||
109
+ moment(end1).isSame(end);
110
+ }
111
+
112
+ return isOverlapping;
113
+ }
114
+
115
+ public static getCurrentDate(): Date {
116
+ return moment().toDate();
117
+ }
118
+
119
+ public static fromNow(date: Date): string {
120
+ return moment(date).fromNow();
121
+ }
122
+
123
+ public static differenceBetweenTwoDatesAsFromattedString(
124
+ date1: Date,
125
+ date2: Date,
126
+ ): string {
127
+ const seconds: number = this.getSecondsBetweenTwoDates(date1, date2);
128
+ return this.secondsToFormattedFriendlyTimeString(seconds);
129
+ }
130
+
131
+ public static toTimeString(date: Date | string): string {
132
+ if (typeof date === "string") {
133
+ date = this.fromString(date);
134
+ }
135
+
136
+ return moment(date).format("HH:mm");
137
+ }
138
+
139
+ public static isSame(date1: Date, date2: Date): boolean {
140
+ date1 = this.fromString(date1);
141
+ date2 = this.fromString(date2);
142
+ return moment(date1).isSame(date2);
143
+ }
144
+
145
+ public static getDaysBetweenTwoDates(startDate: Date, endDate: Date): number {
146
+ startDate = this.fromString(startDate);
147
+ endDate = this.fromString(endDate);
148
+ return moment(endDate).diff(moment(startDate), "days");
149
+ }
150
+
151
+ public static getDaysBetweenTwoDatesInclusive(
152
+ startDate: Date,
153
+ endDate: Date,
154
+ ): number {
155
+ return this.getDaysBetweenTwoDates(startDate, endDate) + 1;
156
+ }
157
+
158
+ public static getHoursBetweenTwoDates(
159
+ startDate: Date,
160
+ endDate: Date,
161
+ ): number {
162
+ startDate = this.fromString(startDate);
163
+ endDate = this.fromString(endDate);
164
+ return moment(endDate).diff(moment(startDate), "hours");
165
+ }
166
+
167
+ public static getHoursBetweenTwoDatesInclusive(
168
+ startDate: Date,
169
+ endDate: Date,
170
+ ): number {
171
+ return this.getHoursBetweenTwoDates(startDate, endDate) + 1;
172
+ }
173
+
174
+ public static getMinutesBetweenTwoDates(
175
+ startDate: Date,
176
+ endDate: Date,
177
+ ): number {
178
+ startDate = this.fromString(startDate);
179
+ endDate = this.fromString(endDate);
180
+ return moment(endDate).diff(moment(startDate), "minutes");
181
+ }
182
+
183
+ public static getMinutesBetweenTwoDatesInclusive(
184
+ startDate: Date,
185
+ endDate: Date,
186
+ ): number {
187
+ return this.getMinutesBetweenTwoDates(startDate, endDate) + 1;
188
+ }
189
+
190
+ public static getSecondsBetweenTwoDates(
191
+ startDate: Date,
192
+ endDate: Date,
193
+ ): number {
194
+ startDate = this.fromString(startDate);
195
+ endDate = this.fromString(endDate);
196
+ return moment(endDate).diff(moment(startDate), "seconds");
197
+ }
198
+
199
+ public static getSecondsBetweenTwoDatesInclusive(
200
+ startDate: Date,
201
+ endDate: Date,
202
+ ): number {
203
+ return this.getSecondsBetweenTwoDates(startDate, endDate) + 1;
204
+ }
205
+
206
+ public static getWeeksBetweenTwoDates(
207
+ startDate: Date,
208
+ endDate: Date,
209
+ ): number {
210
+ startDate = this.fromString(startDate);
211
+ endDate = this.fromString(endDate);
212
+ return moment(endDate).diff(moment(startDate), "weeks");
213
+ }
214
+
215
+ public static getWeeksBetweenTwoDatesInclusive(
216
+ startDate: Date,
217
+ endDate: Date,
218
+ ): number {
219
+ return this.getWeeksBetweenTwoDates(startDate, endDate) + 1;
220
+ }
221
+
222
+ public static getMonthsBetweenTwoDates(
223
+ startDate: Date,
224
+ endDate: Date,
225
+ ): number {
226
+ startDate = this.fromString(startDate);
227
+ endDate = this.fromString(endDate);
228
+ return moment(endDate).diff(moment(startDate), "months");
229
+ }
230
+
231
+ public static getMonthsBetweenTwoDatesInclusive(
232
+ startDate: Date,
233
+ endDate: Date,
234
+ ): number {
235
+ return this.getMonthsBetweenTwoDates(startDate, endDate) + 1;
236
+ }
237
+
238
+ public static getYearsBetweenTwoDates(
239
+ startDate: Date,
240
+ endDate: Date,
241
+ ): number {
242
+ startDate = this.fromString(startDate);
243
+ endDate = this.fromString(endDate);
244
+ return moment(endDate).diff(moment(startDate), "years");
245
+ }
246
+
247
+ public static getYearsBetweenTwoDatesInclusive(
248
+ startDate: Date,
249
+ endDate: Date,
250
+ ): number {
251
+ return this.getYearsBetweenTwoDates(startDate, endDate) + 1;
252
+ }
253
+
254
+ public static toString(date: Date | undefined): string {
255
+ if (!date) {
256
+ return "";
257
+ }
258
+
259
+ date = this.fromString(date);
260
+
261
+ return date.toISOString();
262
+ }
263
+
264
+ public static getCurrentMomentDate(): moment.Moment {
265
+ return moment();
266
+ }
267
+
268
+ public static keepTimeButMoveDay(keepTimeFor: Date, moveDayTo: Date): Date {
269
+ keepTimeFor = this.fromString(keepTimeFor);
270
+ moveDayTo = this.fromString(moveDayTo);
271
+ return moment(moveDayTo)
272
+ .set({
273
+ hour: keepTimeFor.getHours(),
274
+ minute: keepTimeFor.getMinutes(),
275
+ second: keepTimeFor.getSeconds(),
276
+ millisecond: keepTimeFor.getMilliseconds(),
277
+ })
278
+ .toDate();
279
+ }
280
+
281
+ public static getOneMinAgo(): Date {
282
+ return this.getSomeMinutesAgo(new PositiveNumber(1));
283
+ }
284
+
285
+ public static getOneDayAgo(): Date {
286
+ return this.getSomeDaysAgo(new PositiveNumber(1));
287
+ }
288
+
289
+ public static fromUnixNano(timestamp: number): Date {
290
+ return moment(timestamp / 1000000).toDate();
291
+ }
292
+
293
+ public static getSecondsTo(date: Date): number {
294
+ date = this.fromString(date);
295
+ const dif: number = date.getTime() - this.getCurrentDate().getTime();
296
+ const Seconds_from_T1_to_T2: number = dif / 1000;
297
+ return Math.abs(Seconds_from_T1_to_T2);
298
+ }
299
+
300
+ public static getSomeMinutesAgo(minutes: PositiveNumber | number): Date {
301
+ if (!(minutes instanceof PositiveNumber)) {
302
+ minutes = new PositiveNumber(minutes);
303
+ }
304
+
305
+ return this.getCurrentMomentDate()
306
+ .add(-1 * minutes.toNumber(), "minutes")
307
+ .toDate();
308
+ }
309
+
310
+ public static timezoneOffsetDate(date: Date): Date {
311
+ date = this.fromString(date);
312
+ return this.addRemoveMinutes(date, date.getTimezoneOffset());
313
+ }
314
+
315
+ public static toDateTimeLocalString(date: Date): string {
316
+ date = this.fromString(date);
317
+
318
+ type TenFunction = (i: number) => string;
319
+
320
+ const ten: TenFunction = (i: number): string => {
321
+ return (i < 10 ? "0" : "") + i;
322
+ },
323
+ YYYY: number = date.getFullYear(),
324
+ MM: string = ten(date.getMonth() + 1),
325
+ DD: string = ten(date.getDate()),
326
+ HH: string = ten(date.getHours()),
327
+ II: string = ten(date.getMinutes()),
328
+ SS: string = ten(date.getSeconds());
329
+
330
+ return YYYY + "-" + MM + "-" + DD + "T" + HH + ":" + II + ":" + SS;
331
+ }
332
+
333
+ public static fromJSON(json: JSONObject): Date {
334
+ if (json["_type"] === ObjectType.DateTime) {
335
+ return OneUptimeDate.fromString(json["value"] as string);
336
+ }
337
+
338
+ throw new BadDataException("Invalid JSON: " + JSON.stringify(json));
339
+ }
340
+
341
+ public static toJSON(date: Date): JSONObject {
342
+ return {
343
+ _type: ObjectType.DateTime,
344
+ value: OneUptimeDate.toString(date),
345
+ };
346
+ }
347
+
348
+ public static areOnTheSameDay(date1: Date, date2: Date): boolean {
349
+ date1 = this.fromString(date1);
350
+ date2 = this.fromString(date2);
351
+ return moment(date1).isSame(date2, "day");
352
+ }
353
+
354
+ public static areOnTheSameMonth(date1: Date, date2: Date): boolean {
355
+ date1 = this.fromString(date1);
356
+ date2 = this.fromString(date2);
357
+ return moment(date1).isSame(date2, "month");
358
+ }
359
+
360
+ public static areOnTheSameYear(date1: Date, date2: Date): boolean {
361
+ date1 = this.fromString(date1);
362
+ date2 = this.fromString(date2);
363
+ return moment(date1).isSame(date2, "year");
364
+ }
365
+
366
+ public static areOnTheSameHour(date1: Date, date2: Date): boolean {
367
+ date1 = this.fromString(date1);
368
+ date2 = this.fromString(date2);
369
+ return moment(date1).isSame(date2, "hour");
370
+ }
371
+
372
+ public static areOnTheSameMinute(date1: Date, date2: Date): boolean {
373
+ date1 = this.fromString(date1);
374
+ date2 = this.fromString(date2);
375
+ return moment(date1).isSame(date2, "minute");
376
+ }
377
+
378
+ public static areOnTheSameSecond(date1: Date, date2: Date): boolean {
379
+ date1 = this.fromString(date1);
380
+ date2 = this.fromString(date2);
381
+ return moment(date1).isSame(date2, "second");
382
+ }
383
+
384
+ public static areOnTheSameWeek(date1: Date, date2: Date): boolean {
385
+ date1 = this.fromString(date1);
386
+ date2 = this.fromString(date2);
387
+ return moment(date1).isSame(date2, "week");
388
+ }
389
+
390
+ public static addRemoveMinutes(date: Date, minutes: number): Date {
391
+ date = this.fromString(date);
392
+ return moment(date).add(minutes, "minutes").toDate();
393
+ }
394
+
395
+ public static addRemoveDays(date: Date, days: number): Date {
396
+ date = this.fromString(date);
397
+ return moment(date).add(days, "days").toDate();
398
+ }
399
+
400
+ public static addRemoveHours(date: Date, hours: number): Date {
401
+ date = this.fromString(date);
402
+ return moment(date).add(hours, "hours").toDate();
403
+ }
404
+
405
+ public static addRemoveYears(date: Date, years: number): Date {
406
+ date = this.fromString(date);
407
+ return moment(date).add(years, "years").toDate();
408
+ }
409
+
410
+ public static addRemoveMonths(date: Date, months: number): Date {
411
+ date = this.fromString(date);
412
+ return moment(date).add(months, "months").toDate();
413
+ }
414
+
415
+ public static addRemoveWeeks(date: Date, weeks: number): Date {
416
+ date = this.fromString(date);
417
+ return moment(date).add(weeks, "weeks").toDate();
418
+ }
419
+
420
+ public static addRemoveSeconds(date: Date, seconds: number): Date {
421
+ date = this.fromString(date);
422
+ return moment(date).add(seconds, "seconds").toDate();
423
+ }
424
+
425
+ public static getSecondsInDays(days: PositiveNumber | number): number {
426
+ if (!(days instanceof PositiveNumber)) {
427
+ days = new PositiveNumber(days);
428
+ }
429
+ return days.positiveNumber * 24 * 60 * 60;
430
+ }
431
+
432
+ public static getMillisecondsInDays(days: PositiveNumber | number): number {
433
+ return this.getSecondsInDays(days) * 1000;
434
+ }
435
+
436
+ public static getSomeHoursAgo(hours: PositiveNumber | number): Date {
437
+ if (!(hours instanceof PositiveNumber)) {
438
+ hours = new PositiveNumber(hours);
439
+ }
440
+ return this.getCurrentMomentDate()
441
+ .add(-1 * hours.toNumber(), "hours")
442
+ .toDate();
443
+ }
444
+
445
+ public static getSomeDaysAgo(days: PositiveNumber | number): Date {
446
+ if (!(days instanceof PositiveNumber)) {
447
+ days = new PositiveNumber(days);
448
+ }
449
+ return this.getCurrentMomentDate()
450
+ .add(-1 * days.toNumber(), "days")
451
+ .toDate();
452
+ }
453
+
454
+ public static getSomeDaysAgoFromDate(
455
+ date: Date,
456
+ days: PositiveNumber | number,
457
+ ): Date {
458
+ date = this.fromString(date);
459
+ if (!(days instanceof PositiveNumber)) {
460
+ days = new PositiveNumber(days);
461
+ }
462
+ return moment(date)
463
+ .add(-1 * days.toNumber(), "days")
464
+ .toDate();
465
+ }
466
+
467
+ public static getSomeDaysAfterFromDate(
468
+ date: Date,
469
+ days: PositiveNumber | number,
470
+ ): Date {
471
+ date = this.fromString(date);
472
+ if (!(days instanceof PositiveNumber)) {
473
+ days = new PositiveNumber(days);
474
+ }
475
+ return moment(date).add(Number(days.toNumber()), "days").toDate();
476
+ }
38
477
 
39
- public static getLocalHourAndMinuteFromDate(date: Date | string): string {
40
- date = this.fromString(date);
41
- return moment(date).format('HH:mm');
478
+ public static getSomeDaysBeforeFromDate(
479
+ date: Date,
480
+ days: PositiveNumber | number,
481
+ ): Date {
482
+ date = this.fromString(date);
483
+ if (!(days instanceof PositiveNumber)) {
484
+ days = new PositiveNumber(days);
42
485
  }
486
+ return moment(date)
487
+ .add(-1 * Number(days.toNumber()), "days")
488
+ .toDate();
489
+ }
43
490
 
44
- public static getMillisecondsBetweenTwoUnixNanoDates(
45
- startDate: number,
46
- endDate: number
47
- ): number {
48
- return endDate - startDate;
491
+ public static getSomeSecondsAgo(seconds: PositiveNumber | number): Date {
492
+ if (!(seconds instanceof PositiveNumber)) {
493
+ seconds = new PositiveNumber(seconds);
49
494
  }
50
495
 
51
- public static moveDateToTheDayOfWeek(
52
- date: Date,
53
- moveToWeek: Date,
54
- dayOfWeek: DayOfWeek
55
- ): Date {
56
- // date will be moved to the week of "moveToWeek" and then to the day of week "dayOfWeek"
57
-
58
- date = this.fromString(date);
59
- date = this.keepTimeButMoveDay(date, moveToWeek);
60
-
61
- // now move the date to the day of week
62
-
63
- const dateDayOfWeek: DayOfWeek = this.getDayOfWeek(date);
64
-
65
- if (dateDayOfWeek === dayOfWeek) {
66
- return date;
67
- }
496
+ return this.getCurrentMomentDate()
497
+ .add(-1 * seconds.toNumber(), "seconds")
498
+ .toDate();
499
+ }
68
500
 
69
- const numberOfDayOfWeek: number =
70
- DayOfWeekUtil.getNumberOfDayOfWeek(dayOfWeek);
501
+ public static getOneMinAfter(): Date {
502
+ return this.getSomeMinutesAfter(new PositiveNumber(1));
503
+ }
71
504
 
72
- const dateDayOfWeekNumber: number =
73
- DayOfWeekUtil.getNumberOfDayOfWeek(dateDayOfWeek);
505
+ public static getOneDayAfter(): Date {
506
+ return this.getSomeDaysAfter(new PositiveNumber(1));
507
+ }
74
508
 
75
- const difference: number = numberOfDayOfWeek - dateDayOfWeekNumber;
76
-
77
- if (difference === 0) {
78
- return date;
79
- }
80
-
81
- return this.addRemoveDays(date, difference);
509
+ public static getSomeMinutesAfter(minutes: PositiveNumber | number): Date {
510
+ if (!(minutes instanceof PositiveNumber)) {
511
+ minutes = new PositiveNumber(minutes);
82
512
  }
83
513
 
84
- public static isOverlapping(
85
- start: Date,
86
- end: Date,
87
- start1: Date,
88
- end1: Date
89
- ): unknown {
90
- start = this.fromString(start);
91
- end = this.fromString(end);
92
- start1 = this.fromString(start1);
93
- end1 = this.fromString(end1);
94
-
95
- let isOverlapping: boolean =
96
- moment(start).isBetween(start1, end1) ||
97
- moment(end).isBetween(start1, end1) ||
98
- moment(start).isSame(start1) ||
99
- moment(end).isSame(end1);
100
-
101
- if (!isOverlapping) {
102
- // check if the start1 and end1 are in between start and end
103
-
104
- isOverlapping =
105
- moment(start1).isBetween(start, end) ||
106
- moment(end1).isBetween(start, end) ||
107
- moment(start1).isSame(start) ||
108
- moment(end1).isSame(end);
109
- }
110
-
111
- return isOverlapping;
112
- }
514
+ return this.getCurrentMomentDate()
515
+ .add(minutes.toNumber(), "minutes")
516
+ .toDate();
517
+ }
113
518
 
114
- public static getCurrentDate(): Date {
115
- return moment().toDate();
519
+ public static getSomeHoursAfter(hours: PositiveNumber | number): Date {
520
+ if (!(hours instanceof PositiveNumber)) {
521
+ hours = new PositiveNumber(hours);
116
522
  }
523
+ return this.getCurrentMomentDate().add(hours.toNumber(), "hours").toDate();
524
+ }
117
525
 
118
- public static fromNow(date: Date): string {
119
- return moment(date).fromNow();
526
+ public static getSomeDaysAfter(days: PositiveNumber | number): Date {
527
+ if (!(days instanceof PositiveNumber)) {
528
+ days = new PositiveNumber(days);
120
529
  }
121
530
 
122
- public static differenceBetweenTwoDatesAsFromattedString(
123
- date1: Date,
124
- date2: Date
125
- ): string {
126
- const seconds: number = this.getSecondsBetweenTwoDates(date1, date2);
127
- return this.secondsToFormattedFriendlyTimeString(seconds);
128
- }
531
+ return this.getCurrentMomentDate().add(days.toNumber(), "days").toDate();
532
+ }
129
533
 
130
- public static toTimeString(date: Date | string): string {
131
- if (typeof date === 'string') {
132
- date = this.fromString(date);
133
- }
534
+ public static secondsToFormattedTimeString(seconds: number): string {
535
+ return moment.utc(seconds * 1000).format("HH:mm:ss");
536
+ }
134
537
 
135
- return moment(date).format('HH:mm');
136
- }
137
-
138
- public static isSame(date1: Date, date2: Date): boolean {
139
- date1 = this.fromString(date1);
140
- date2 = this.fromString(date2);
141
- return moment(date1).isSame(date2);
142
- }
143
-
144
- public static getDaysBetweenTwoDates(
145
- startDate: Date,
146
- endDate: Date
147
- ): number {
148
- startDate = this.fromString(startDate);
149
- endDate = this.fromString(endDate);
150
- return moment(endDate).diff(moment(startDate), 'days');
151
- }
538
+ public static toUnixTimestamp(date: Date): number {
539
+ return Math.floor(date.getTime() / 1000);
540
+ }
152
541
 
153
- public static getDaysBetweenTwoDatesInclusive(
154
- startDate: Date,
155
- endDate: Date
156
- ): number {
157
- return this.getDaysBetweenTwoDates(startDate, endDate) + 1;
158
- }
542
+ public static secondsToFormattedFriendlyTimeString(seconds: number): string {
543
+ const startDate: moment.Moment = moment.utc(0);
544
+ const date: moment.Moment = moment.utc(seconds * 1000);
159
545
 
160
- public static getHoursBetweenTwoDates(
161
- startDate: Date,
162
- endDate: Date
163
- ): number {
164
- startDate = this.fromString(startDate);
165
- endDate = this.fromString(endDate);
166
- return moment(endDate).diff(moment(startDate), 'hours');
167
- }
546
+ // get the difference between the two dates as friendly formatted string
168
547
 
169
- public static getHoursBetweenTwoDatesInclusive(
170
- startDate: Date,
171
- endDate: Date
172
- ): number {
173
- return this.getHoursBetweenTwoDates(startDate, endDate) + 1;
174
- }
548
+ let formattedString: string = "";
175
549
 
176
- public static getMinutesBetweenTwoDates(
177
- startDate: Date,
178
- endDate: Date
179
- ): number {
180
- startDate = this.fromString(startDate);
181
- endDate = this.fromString(endDate);
182
- return moment(endDate).diff(moment(startDate), 'minutes');
183
- }
550
+ // years between two dates
551
+ const years: number = date.diff(startDate, "years");
184
552
 
185
- public static getMinutesBetweenTwoDatesInclusive(
186
- startDate: Date,
187
- endDate: Date
188
- ): number {
189
- return this.getMinutesBetweenTwoDates(startDate, endDate) + 1;
190
- }
553
+ if (years > 0) {
554
+ let text: string = "years ";
555
+ if (years === 1) {
556
+ text = "year ";
557
+ }
191
558
 
192
- public static getSecondsBetweenTwoDates(
193
- startDate: Date,
194
- endDate: Date
195
- ): number {
196
- startDate = this.fromString(startDate);
197
- endDate = this.fromString(endDate);
198
- return moment(endDate).diff(moment(startDate), 'seconds');
199
- }
559
+ // add years to start date
560
+ startDate.add(years, "years");
200
561
 
201
- public static getSecondsBetweenTwoDatesInclusive(
202
- startDate: Date,
203
- endDate: Date
204
- ): number {
205
- return this.getSecondsBetweenTwoDates(startDate, endDate) + 1;
562
+ formattedString += years + " " + text;
206
563
  }
207
564
 
208
- public static getWeeksBetweenTwoDates(
209
- startDate: Date,
210
- endDate: Date
211
- ): number {
212
- startDate = this.fromString(startDate);
213
- endDate = this.fromString(endDate);
214
- return moment(endDate).diff(moment(startDate), 'weeks');
215
- }
565
+ const months: number = date.diff(startDate, "months");
216
566
 
217
- public static getWeeksBetweenTwoDatesInclusive(
218
- startDate: Date,
219
- endDate: Date
220
- ): number {
221
- return this.getWeeksBetweenTwoDates(startDate, endDate) + 1;
222
- }
567
+ if (months > 0) {
568
+ let text: string = "months ";
223
569
 
224
- public static getMonthsBetweenTwoDates(
225
- startDate: Date,
226
- endDate: Date
227
- ): number {
228
- startDate = this.fromString(startDate);
229
- endDate = this.fromString(endDate);
230
- return moment(endDate).diff(moment(startDate), 'months');
231
- }
570
+ if (months === 1) {
571
+ text = "month ";
572
+ }
232
573
 
233
- public static getMonthsBetweenTwoDatesInclusive(
234
- startDate: Date,
235
- endDate: Date
236
- ): number {
237
- return this.getMonthsBetweenTwoDates(startDate, endDate) + 1;
238
- }
574
+ // add months to start date
575
+ startDate.add(months, "months");
239
576
 
240
- public static getYearsBetweenTwoDates(
241
- startDate: Date,
242
- endDate: Date
243
- ): number {
244
- startDate = this.fromString(startDate);
245
- endDate = this.fromString(endDate);
246
- return moment(endDate).diff(moment(startDate), 'years');
577
+ formattedString += months + " " + text;
247
578
  }
248
579
 
249
- public static getYearsBetweenTwoDatesInclusive(
250
- startDate: Date,
251
- endDate: Date
252
- ): number {
253
- return this.getYearsBetweenTwoDates(startDate, endDate) + 1;
254
- }
580
+ const days: number = date.diff(startDate, "days");
255
581
 
256
- public static toString(date: Date | undefined): string {
257
- if (!date) {
258
- return '';
259
- }
582
+ if (days > 0) {
583
+ let text: string = "days ";
260
584
 
261
- date = this.fromString(date);
585
+ if (days === 1) {
586
+ text = "day ";
587
+ }
262
588
 
263
- return date.toISOString();
264
- }
589
+ // add days to start date
590
+ startDate.add(days, "days");
265
591
 
266
- public static getCurrentMomentDate(): moment.Moment {
267
- return moment();
592
+ formattedString += days + " " + text;
268
593
  }
269
594
 
270
- public static keepTimeButMoveDay(keepTimeFor: Date, moveDayTo: Date): Date {
271
- keepTimeFor = this.fromString(keepTimeFor);
272
- moveDayTo = this.fromString(moveDayTo);
273
- return moment(moveDayTo)
274
- .set({
275
- hour: keepTimeFor.getHours(),
276
- minute: keepTimeFor.getMinutes(),
277
- second: keepTimeFor.getSeconds(),
278
- millisecond: keepTimeFor.getMilliseconds(),
279
- })
280
- .toDate();
281
- }
595
+ const hours: number = date.diff(startDate, "hours");
282
596
 
283
- public static getOneMinAgo(): Date {
284
- return this.getSomeMinutesAgo(new PositiveNumber(1));
285
- }
597
+ if (hours > 0) {
598
+ let text: string = "hours ";
286
599
 
287
- public static getOneDayAgo(): Date {
288
- return this.getSomeDaysAgo(new PositiveNumber(1));
289
- }
600
+ if (hours === 1) {
601
+ text = "hour ";
602
+ }
290
603
 
291
- public static fromUnixNano(timestamp: number): Date {
292
- return moment(timestamp / 1000000).toDate();
293
- }
604
+ // add hours to start date
605
+ startDate.add(hours, "hours");
294
606
 
295
- public static getSecondsTo(date: Date): number {
296
- date = this.fromString(date);
297
- const dif: number = date.getTime() - this.getCurrentDate().getTime();
298
- const Seconds_from_T1_to_T2: number = dif / 1000;
299
- return Math.abs(Seconds_from_T1_to_T2);
607
+ formattedString += hours + " " + text;
300
608
  }
301
609
 
302
- public static getSomeMinutesAgo(minutes: PositiveNumber | number): Date {
303
- if (!(minutes instanceof PositiveNumber)) {
304
- minutes = new PositiveNumber(minutes);
305
- }
306
-
307
- return this.getCurrentMomentDate()
308
- .add(-1 * minutes.toNumber(), 'minutes')
309
- .toDate();
310
- }
610
+ const minutes: number = date.diff(startDate, "minutes");
311
611
 
312
- public static timezoneOffsetDate(date: Date): Date {
313
- date = this.fromString(date);
314
- return this.addRemoveMinutes(date, date.getTimezoneOffset());
315
- }
612
+ if (minutes > 0) {
613
+ let text: string = "mins ";
316
614
 
317
- public static toDateTimeLocalString(date: Date): string {
318
- date = this.fromString(date);
615
+ if (minutes === 1) {
616
+ text = "min ";
617
+ }
319
618
 
320
- type TenFunction = (i: number) => string;
619
+ // add minutes to start date
620
+ startDate.add(minutes, "minutes");
321
621
 
322
- const ten: TenFunction = (i: number): string => {
323
- return (i < 10 ? '0' : '') + i;
324
- },
325
- YYYY: number = date.getFullYear(),
326
- MM: string = ten(date.getMonth() + 1),
327
- DD: string = ten(date.getDate()),
328
- HH: string = ten(date.getHours()),
329
- II: string = ten(date.getMinutes()),
330
- SS: string = ten(date.getSeconds());
331
-
332
- return YYYY + '-' + MM + '-' + DD + 'T' + HH + ':' + II + ':' + SS;
622
+ formattedString += minutes + " " + text;
333
623
  }
334
624
 
335
- public static fromJSON(json: JSONObject): Date {
336
- if (json['_type'] === ObjectType.DateTime) {
337
- return OneUptimeDate.fromString(json['value'] as string);
338
- }
625
+ const secondsLeft: number = date.diff(startDate, "seconds");
339
626
 
340
- throw new BadDataException('Invalid JSON: ' + JSON.stringify(json));
341
- }
627
+ if (secondsLeft > 0) {
628
+ let text: string = "secs ";
342
629
 
343
- public static toJSON(date: Date): JSONObject {
344
- return {
345
- _type: ObjectType.DateTime,
346
- value: OneUptimeDate.toString(date),
347
- };
348
- }
630
+ if (secondsLeft === 1) {
631
+ text = "sec ";
632
+ }
349
633
 
350
- public static areOnTheSameDay(date1: Date, date2: Date): boolean {
351
- date1 = this.fromString(date1);
352
- date2 = this.fromString(date2);
353
- return moment(date1).isSame(date2, 'day');
354
- }
634
+ // add seconds to start date
635
+ startDate.add(secondsLeft, "seconds");
355
636
 
356
- public static areOnTheSameMonth(date1: Date, date2: Date): boolean {
357
- date1 = this.fromString(date1);
358
- date2 = this.fromString(date2);
359
- return moment(date1).isSame(date2, 'month');
637
+ formattedString += secondsLeft + " " + text;
360
638
  }
361
639
 
362
- public static areOnTheSameYear(date1: Date, date2: Date): boolean {
363
- date1 = this.fromString(date1);
364
- date2 = this.fromString(date2);
365
- return moment(date1).isSame(date2, 'year');
366
- }
640
+ return formattedString.trim();
641
+ }
367
642
 
368
- public static areOnTheSameHour(date1: Date, date2: Date): boolean {
369
- date1 = this.fromString(date1);
370
- date2 = this.fromString(date2);
371
- return moment(date1).isSame(date2, 'hour');
643
+ public static getGreaterDate(a: Date, b: Date): Date {
644
+ a = this.fromString(a);
645
+ b = this.fromString(b);
646
+ if (this.isAfter(a, b)) {
647
+ return a;
372
648
  }
373
649
 
374
- public static areOnTheSameMinute(date1: Date, date2: Date): boolean {
375
- date1 = this.fromString(date1);
376
- date2 = this.fromString(date2);
377
- return moment(date1).isSame(date2, 'minute');
378
- }
650
+ return b;
651
+ }
379
652
 
380
- public static areOnTheSameSecond(date1: Date, date2: Date): boolean {
381
- date1 = this.fromString(date1);
382
- date2 = this.fromString(date2);
383
- return moment(date1).isSame(date2, 'second');
653
+ public static getLesserDate(a: Date, b: Date): Date {
654
+ a = this.fromString(a);
655
+ b = this.fromString(b);
656
+ if (this.isBefore(a, b)) {
657
+ return a;
384
658
  }
385
659
 
386
- public static areOnTheSameWeek(date1: Date, date2: Date): boolean {
387
- date1 = this.fromString(date1);
388
- date2 = this.fromString(date2);
389
- return moment(date1).isSame(date2, 'week');
390
- }
660
+ return b;
661
+ }
391
662
 
392
- public static addRemoveMinutes(date: Date, minutes: number): Date {
393
- date = this.fromString(date);
394
- return moment(date).add(minutes, 'minutes').toDate();
395
- }
663
+ public static getSecondsBetweenDates(start: Date, end: Date): number {
664
+ start = this.fromString(start);
665
+ end = this.fromString(end);
666
+ const duration: moment.Duration = moment.duration(
667
+ moment(end).diff(moment(start)),
668
+ );
669
+ return duration.asSeconds();
670
+ }
396
671
 
397
- public static addRemoveDays(date: Date, days: number): Date {
398
- date = this.fromString(date);
399
- return moment(date).add(days, 'days').toDate();
672
+ public static getSomeDaysAfterDate(
673
+ date: Date,
674
+ days: PositiveNumber | number,
675
+ ): Date {
676
+ if (!(days instanceof PositiveNumber)) {
677
+ days = new PositiveNumber(days);
400
678
  }
401
679
 
402
- public static addRemoveHours(date: Date, hours: number): Date {
403
- date = this.fromString(date);
404
- return moment(date).add(hours, 'hours').toDate();
405
- }
680
+ return moment(date).add(days.toNumber(), "days").toDate();
681
+ }
406
682
 
407
- public static addRemoveYears(date: Date, years: number): Date {
408
- date = this.fromString(date);
409
- return moment(date).add(years, 'years').toDate();
683
+ public static getSomeSecondsAfter(seconds: PositiveNumber | number): Date {
684
+ if (!(seconds instanceof PositiveNumber)) {
685
+ seconds = new PositiveNumber(seconds);
410
686
  }
411
687
 
412
- public static addRemoveMonths(date: Date, months: number): Date {
413
- date = this.fromString(date);
414
- return moment(date).add(months, 'months').toDate();
415
- }
688
+ return this.getCurrentMomentDate()
689
+ .add(seconds.toNumber(), "seconds")
690
+ .toDate();
691
+ }
416
692
 
417
- public static addRemoveWeeks(date: Date, weeks: number): Date {
418
- date = this.fromString(date);
419
- return moment(date).add(weeks, 'weeks').toDate();
420
- }
693
+ public static getNumberOfDaysBetweenDates(
694
+ startDate: Date,
695
+ endDate: Date,
696
+ ): number {
697
+ const a: moment.Moment = moment(startDate);
698
+ const b: moment.Moment = moment(endDate);
699
+ return b.diff(a, "days");
700
+ }
701
+
702
+ public static getNumberOfMinutesBetweenDates(
703
+ startDate: Date,
704
+ endDate: Date,
705
+ ): number {
706
+ const a: moment.Moment = moment(startDate);
707
+ const b: moment.Moment = moment(endDate);
708
+ return b.diff(a, "minutes");
709
+ }
710
+
711
+ public static getNumberOfDaysBetweenDatesInclusive(
712
+ startDate: Date,
713
+ endDate: Date,
714
+ ): number {
715
+ return this.getNumberOfDaysBetweenDates(startDate, endDate) + 1;
716
+ }
717
+
718
+ public static momentToDate(moment: moment.Moment): Date {
719
+ return moment.toDate();
720
+ }
721
+
722
+ public static getCurrentYear(): number {
723
+ return moment().year();
724
+ }
725
+
726
+ public static getStartOfDay(date: Date): Date {
727
+ date = this.fromString(date);
728
+ return moment(date).startOf("day").toDate();
729
+ }
730
+
731
+ public static getEndOfDay(date: Date): Date {
732
+ date = this.fromString(date);
733
+ return moment(date).endOf("day").toDate();
734
+ }
735
+
736
+ public static isBetween(date: Date, startDate: Date, endDate: Date): boolean {
737
+ date = this.fromString(date);
738
+ startDate = this.fromString(startDate);
739
+ endDate = this.fromString(endDate);
740
+ return moment(date).isBetween(startDate, endDate);
741
+ }
742
+
743
+ public static isAfter(date: Date, startDate: Date): boolean {
744
+ date = this.fromString(date);
745
+ startDate = this.fromString(startDate);
746
+ return moment(date).isAfter(startDate);
747
+ }
748
+
749
+ public static isOnOrAfter(date: Date, startDate: Date): boolean {
750
+ date = this.fromString(date);
751
+ startDate = this.fromString(startDate);
752
+ return moment(date).isSameOrAfter(startDate);
753
+ }
754
+
755
+ public static getDayOfWeek(date: Date): DayOfWeek {
756
+ const dayOfWeek: number = this.geyDayOfWeekAsNumber(date);
757
+
758
+ if (dayOfWeek === 1) {
759
+ return DayOfWeek.Monday;
760
+ } else if (dayOfWeek === 2) {
761
+ return DayOfWeek.Tuesday;
762
+ } else if (dayOfWeek === 3) {
763
+ return DayOfWeek.Wednesday;
764
+ } else if (dayOfWeek === 4) {
765
+ return DayOfWeek.Thursday;
766
+ } else if (dayOfWeek === 5) {
767
+ return DayOfWeek.Friday;
768
+ } else if (dayOfWeek === 6) {
769
+ return DayOfWeek.Saturday;
770
+ } else if (dayOfWeek === 7) {
771
+ return DayOfWeek.Sunday;
772
+ }
773
+
774
+ throw new BadDataException("Invalid day of week");
775
+ }
776
+
777
+ public static geyDayOfWeekAsNumber(date: Date): number {
778
+ date = this.fromString(date);
779
+ return moment(date).isoWeekday();
780
+ }
781
+
782
+ public static isOnOrBefore(date: Date, endDate: Date): boolean {
783
+ date = this.fromString(date);
784
+ endDate = this.fromString(endDate);
785
+ return moment(date).isSameOrBefore(endDate);
786
+ }
787
+
788
+ public static isEqualBySeconds(date: Date, startDate: Date): boolean {
789
+ date = this.fromString(date);
790
+ startDate = this.fromString(startDate);
791
+ return moment(date).isSame(startDate, "seconds");
792
+ }
793
+
794
+ public static hasExpired(expirationDate: Date): boolean {
795
+ expirationDate = this.fromString(expirationDate);
796
+ return !moment(this.getCurrentDate()).isBefore(expirationDate);
797
+ }
798
+
799
+ public static isBefore(date: Date, endDate: Date): boolean {
800
+ date = this.fromString(date);
801
+ endDate = this.fromString(endDate);
802
+ return moment(date).isBefore(endDate);
803
+ }
421
804
 
422
- public static addRemoveSeconds(date: Date, seconds: number): Date {
423
- date = this.fromString(date);
424
- return moment(date).add(seconds, 'seconds').toDate();
425
- }
805
+ public static getCurrentDateAsFormattedString(): string {
806
+ return this.getDateAsFormattedString(new Date());
807
+ }
426
808
 
427
- public static getSecondsInDays(days: PositiveNumber | number): number {
428
- if (!(days instanceof PositiveNumber)) {
429
- days = new PositiveNumber(days);
430
- }
431
- return days.positiveNumber * 24 * 60 * 60;
432
- }
809
+ public static getDateAsFormattedString(
810
+ date: string | Date,
811
+ onlyShowDate?: boolean,
812
+ ): string {
813
+ date = this.fromString(date);
433
814
 
434
- public static getMillisecondsInDays(days: PositiveNumber | number): number {
435
- return this.getSecondsInDays(days) * 1000;
436
- }
815
+ let formatstring: string = "MMM DD YYYY, HH:mm";
437
816
 
438
- public static getSomeHoursAgo(hours: PositiveNumber | number): Date {
439
- if (!(hours instanceof PositiveNumber)) {
440
- hours = new PositiveNumber(hours);
441
- }
442
- return this.getCurrentMomentDate()
443
- .add(-1 * hours.toNumber(), 'hours')
444
- .toDate();
817
+ if (onlyShowDate) {
818
+ formatstring = "MMM DD, YYYY";
445
819
  }
446
820
 
447
- public static getSomeDaysAgo(days: PositiveNumber | number): Date {
448
- if (!(days instanceof PositiveNumber)) {
449
- days = new PositiveNumber(days);
450
- }
451
- return this.getCurrentMomentDate()
452
- .add(-1 * days.toNumber(), 'days')
453
- .toDate();
454
- }
821
+ return (
822
+ moment(date).format(formatstring) +
823
+ " " +
824
+ (onlyShowDate ? "" : this.getCurrentTimezoneString())
825
+ );
826
+ }
455
827
 
456
- public static getSomeDaysAgoFromDate(
457
- date: Date,
458
- days: PositiveNumber | number
459
- ): Date {
460
- date = this.fromString(date);
461
- if (!(days instanceof PositiveNumber)) {
462
- days = new PositiveNumber(days);
463
- }
464
- return moment(date)
465
- .add(-1 * days.toNumber(), 'days')
466
- .toDate();
467
- }
828
+ public static getDifferenceInMinutes(date: Date, date2: Date): number {
829
+ date = this.fromString(date);
830
+ date2 = this.fromString(date2);
831
+ const minutes: number = moment(date).diff(moment(date2), "minutes");
468
832
 
469
- public static getSomeDaysAfterFromDate(
470
- date: Date,
471
- days: PositiveNumber | number
472
- ): Date {
473
- date = this.fromString(date);
474
- if (!(days instanceof PositiveNumber)) {
475
- days = new PositiveNumber(days);
476
- }
477
- return moment(date).add(Number(days.toNumber()), 'days').toDate();
833
+ if (minutes < 0) {
834
+ return minutes * -1;
478
835
  }
479
836
 
480
- public static getSomeDaysBeforeFromDate(
481
- date: Date,
482
- days: PositiveNumber | number
483
- ): Date {
484
- date = this.fromString(date);
485
- if (!(days instanceof PositiveNumber)) {
486
- days = new PositiveNumber(days);
487
- }
488
- return moment(date)
489
- .add(-1 * Number(days.toNumber()), 'days')
490
- .toDate();
491
- }
837
+ return minutes;
838
+ }
492
839
 
493
- public static getSomeSecondsAgo(seconds: PositiveNumber | number): Date {
494
- if (!(seconds instanceof PositiveNumber)) {
495
- seconds = new PositiveNumber(seconds);
496
- }
840
+ public static convertMinutesToDaysHoursAndMinutes(minutes: number): string {
841
+ // should output 2 days, 3 hours and 4 minutes. If the days are 0, it should not show the days. If the hours are 0, it should not show the hours. If the minutes are 0, it should not show the minutes.
497
842
 
498
- return this.getCurrentMomentDate()
499
- .add(-1 * seconds.toNumber(), 'seconds')
500
- .toDate();
501
- }
843
+ const days: number = Math.floor(minutes / (24 * 60));
844
+ const hours: number = Math.floor((minutes % (24 * 60)) / 60);
845
+ const mins: number = minutes % 60;
502
846
 
503
- public static getOneMinAfter(): Date {
504
- return this.getSomeMinutesAfter(new PositiveNumber(1));
505
- }
847
+ let formattedString: string = "";
506
848
 
507
- public static getOneDayAfter(): Date {
508
- return this.getSomeDaysAfter(new PositiveNumber(1));
849
+ if (days > 0) {
850
+ formattedString += days + " days";
509
851
  }
510
852
 
511
- public static getSomeMinutesAfter(minutes: PositiveNumber | number): Date {
512
- if (!(minutes instanceof PositiveNumber)) {
513
- minutes = new PositiveNumber(minutes);
514
- }
853
+ if (hours > 0) {
854
+ if (formattedString.length > 0) {
855
+ formattedString += ", ";
856
+ }
515
857
 
516
- return this.getCurrentMomentDate()
517
- .add(minutes.toNumber(), 'minutes')
518
- .toDate();
858
+ formattedString += hours + " hours";
519
859
  }
520
860
 
521
- public static getSomeHoursAfter(hours: PositiveNumber | number): Date {
522
- if (!(hours instanceof PositiveNumber)) {
523
- hours = new PositiveNumber(hours);
524
- }
525
- return this.getCurrentMomentDate()
526
- .add(hours.toNumber(), 'hours')
527
- .toDate();
528
- }
529
-
530
- public static getSomeDaysAfter(days: PositiveNumber | number): Date {
531
- if (!(days instanceof PositiveNumber)) {
532
- days = new PositiveNumber(days);
533
- }
861
+ if (mins >= 0) {
862
+ if (formattedString.length > 0) {
863
+ formattedString += ", ";
864
+ }
534
865
 
535
- return this.getCurrentMomentDate()
536
- .add(days.toNumber(), 'days')
537
- .toDate();
866
+ formattedString += mins + " minutes";
538
867
  }
539
868
 
540
- public static secondsToFormattedTimeString(seconds: number): string {
541
- return moment.utc(seconds * 1000).format('HH:mm:ss');
542
- }
543
-
544
- public static toUnixTimestamp(date: Date): number {
545
- return Math.floor(date.getTime() / 1000);
546
- }
547
-
548
- public static secondsToFormattedFriendlyTimeString(
549
- seconds: number
550
- ): string {
551
- const startDate: moment.Moment = moment.utc(0);
552
- const date: moment.Moment = moment.utc(seconds * 1000);
553
-
554
- // get the difference between the two dates as friendly formatted string
555
-
556
- let formattedString: string = '';
557
-
558
- // years between two dates
559
- const years: number = date.diff(startDate, 'years');
560
-
561
- if (years > 0) {
562
- let text: string = 'years ';
563
- if (years === 1) {
564
- text = 'year ';
565
- }
566
-
567
- // add years to start date
568
- startDate.add(years, 'years');
569
-
570
- formattedString += years + ' ' + text;
571
- }
572
-
573
- const months: number = date.diff(startDate, 'months');
574
-
575
- if (months > 0) {
576
- let text: string = 'months ';
577
-
578
- if (months === 1) {
579
- text = 'month ';
580
- }
581
-
582
- // add months to start date
583
- startDate.add(months, 'months');
584
-
585
- formattedString += months + ' ' + text;
586
- }
587
-
588
- const days: number = date.diff(startDate, 'days');
869
+ return formattedString;
870
+ }
589
871
 
590
- if (days > 0) {
591
- let text: string = 'days ';
872
+ public static getGmtOffsetByTimezone(timezone: Timezone): number {
873
+ return moment.tz(timezone).utcOffset();
874
+ }
592
875
 
593
- if (days === 1) {
594
- text = 'day ';
595
- }
876
+ public static getGmtOffsetFriendlyStringByTimezone(
877
+ timezone: Timezone,
878
+ ): string {
879
+ const offset: number = this.getGmtOffsetByTimezone(timezone);
880
+ return this.getGmtOffsetFriendlyString(offset) + " " + timezone;
881
+ }
596
882
 
597
- // add days to start date
598
- startDate.add(days, 'days');
883
+ public static getGmtOffsetFriendlyString(offset: number): string {
884
+ const hours: number = Math.abs(offset) / 60;
885
+ const minutes: number = Math.abs(offset) % 60;
599
886
 
600
- formattedString += days + ' ' + text;
601
- }
887
+ let formattedString: string = "GMT";
602
888
 
603
- const hours: number = date.diff(startDate, 'hours');
604
-
605
- if (hours > 0) {
606
- let text: string = 'hours ';
607
-
608
- if (hours === 1) {
609
- text = 'hour ';
610
- }
611
-
612
- // add hours to start date
613
- startDate.add(hours, 'hours');
614
-
615
- formattedString += hours + ' ' + text;
616
- }
617
-
618
- const minutes: number = date.diff(startDate, 'minutes');
619
-
620
- if (minutes > 0) {
621
- let text: string = 'mins ';
622
-
623
- if (minutes === 1) {
624
- text = 'min ';
625
- }
626
-
627
- // add minutes to start date
628
- startDate.add(minutes, 'minutes');
629
-
630
- formattedString += minutes + ' ' + text;
631
- }
632
-
633
- const secondsLeft: number = date.diff(startDate, 'seconds');
634
-
635
- if (secondsLeft > 0) {
636
- let text: string = 'secs ';
637
-
638
- if (secondsLeft === 1) {
639
- text = 'sec ';
640
- }
641
-
642
- // add seconds to start date
643
- startDate.add(secondsLeft, 'seconds');
644
-
645
- formattedString += secondsLeft + ' ' + text;
646
- }
647
-
648
- return formattedString.trim();
649
- }
650
-
651
- public static getGreaterDate(a: Date, b: Date): Date {
652
- a = this.fromString(a);
653
- b = this.fromString(b);
654
- if (this.isAfter(a, b)) {
655
- return a;
656
- }
657
-
658
- return b;
659
- }
660
-
661
- public static getLesserDate(a: Date, b: Date): Date {
662
- a = this.fromString(a);
663
- b = this.fromString(b);
664
- if (this.isBefore(a, b)) {
665
- return a;
666
- }
667
-
668
- return b;
669
- }
670
-
671
- public static getSecondsBetweenDates(start: Date, end: Date): number {
672
- start = this.fromString(start);
673
- end = this.fromString(end);
674
- const duration: moment.Duration = moment.duration(
675
- moment(end).diff(moment(start))
676
- );
677
- return duration.asSeconds();
678
- }
679
-
680
- public static getSomeDaysAfterDate(
681
- date: Date,
682
- days: PositiveNumber | number
683
- ): Date {
684
- if (!(days instanceof PositiveNumber)) {
685
- days = new PositiveNumber(days);
686
- }
687
-
688
- return moment(date).add(days.toNumber(), 'days').toDate();
689
- }
690
-
691
- public static getSomeSecondsAfter(seconds: PositiveNumber | number): Date {
692
- if (!(seconds instanceof PositiveNumber)) {
693
- seconds = new PositiveNumber(seconds);
694
- }
695
-
696
- return this.getCurrentMomentDate()
697
- .add(seconds.toNumber(), 'seconds')
698
- .toDate();
699
- }
700
-
701
- public static getNumberOfDaysBetweenDates(
702
- startDate: Date,
703
- endDate: Date
704
- ): number {
705
- const a: moment.Moment = moment(startDate);
706
- const b: moment.Moment = moment(endDate);
707
- return b.diff(a, 'days');
708
- }
709
-
710
- public static getNumberOfMinutesBetweenDates(
711
- startDate: Date,
712
- endDate: Date
713
- ): number {
714
- const a: moment.Moment = moment(startDate);
715
- const b: moment.Moment = moment(endDate);
716
- return b.diff(a, 'minutes');
717
- }
718
-
719
- public static getNumberOfDaysBetweenDatesInclusive(
720
- startDate: Date,
721
- endDate: Date
722
- ): number {
723
- return this.getNumberOfDaysBetweenDates(startDate, endDate) + 1;
724
- }
725
-
726
- public static momentToDate(moment: moment.Moment): Date {
727
- return moment.toDate();
889
+ if (offset < 0) {
890
+ formattedString += "-";
891
+ } else {
892
+ formattedString += "+";
728
893
  }
729
894
 
730
- public static getCurrentYear(): number {
731
- return moment().year();
732
- }
895
+ // remove decimals from hours
896
+ formattedString += Math.floor(hours);
733
897
 
734
- public static getStartOfDay(date: Date): Date {
735
- date = this.fromString(date);
736
- return moment(date).startOf('day').toDate();
898
+ if (minutes > 0) {
899
+ formattedString += ":" + minutes;
737
900
  }
738
901
 
739
- public static getEndOfDay(date: Date): Date {
740
- date = this.fromString(date);
741
- return moment(date).endOf('day').toDate();
742
- }
902
+ return formattedString;
903
+ }
743
904
 
744
- public static isBetween(
745
- date: Date,
746
- startDate: Date,
747
- endDate: Date
748
- ): boolean {
749
- date = this.fromString(date);
750
- startDate = this.fromString(startDate);
751
- endDate = this.fromString(endDate);
752
- return moment(date).isBetween(startDate, endDate);
753
- }
905
+ public static getDateAsFormattedArrayInMultipleTimezones(data: {
906
+ date: string | Date;
907
+ onlyShowDate?: boolean | undefined;
908
+ timezones?: Array<Timezone> | undefined;
909
+ }): Array<string> {
910
+ let date: string | Date = data.date;
911
+ const onlyShowDate: boolean | undefined = data.onlyShowDate;
912
+ let timezones: Array<Timezone> | undefined = data.timezones;
754
913
 
755
- public static isAfter(date: Date, startDate: Date): boolean {
756
- date = this.fromString(date);
757
- startDate = this.fromString(startDate);
758
- return moment(date).isAfter(startDate);
759
- }
914
+ date = this.fromString(date);
760
915
 
761
- public static isOnOrAfter(date: Date, startDate: Date): boolean {
762
- date = this.fromString(date);
763
- startDate = this.fromString(startDate);
764
- return moment(date).isSameOrAfter(startDate);
765
- }
916
+ let formatstring: string = "MMM DD YYYY, HH:mm";
766
917
 
767
- public static getDayOfWeek(date: Date): DayOfWeek {
768
- const dayOfWeek: number = this.geyDayOfWeekAsNumber(date);
769
-
770
- if (dayOfWeek === 1) {
771
- return DayOfWeek.Monday;
772
- } else if (dayOfWeek === 2) {
773
- return DayOfWeek.Tuesday;
774
- } else if (dayOfWeek === 3) {
775
- return DayOfWeek.Wednesday;
776
- } else if (dayOfWeek === 4) {
777
- return DayOfWeek.Thursday;
778
- } else if (dayOfWeek === 5) {
779
- return DayOfWeek.Friday;
780
- } else if (dayOfWeek === 6) {
781
- return DayOfWeek.Saturday;
782
- } else if (dayOfWeek === 7) {
783
- return DayOfWeek.Sunday;
784
- }
785
-
786
- throw new BadDataException('Invalid day of week');
918
+ if (onlyShowDate) {
919
+ formatstring = "MMM DD, YYYY";
787
920
  }
788
921
 
789
- public static geyDayOfWeekAsNumber(date: Date): number {
790
- date = this.fromString(date);
791
- return moment(date).isoWeekday();
792
- }
922
+ // convert this date into GMT, EST, PST, IST, ACT with moment
923
+ const timezoneDates: Array<string> = [];
793
924
 
794
- public static isOnOrBefore(date: Date, endDate: Date): boolean {
795
- date = this.fromString(date);
796
- endDate = this.fromString(endDate);
797
- return moment(date).isSameOrBefore(endDate);
925
+ if (!timezones || timezones.length === 0) {
926
+ timezones = [
927
+ Timezone.UTC,
928
+ Timezone.EST,
929
+ Timezone.AmericaLos_Angeles,
930
+ Timezone.AsiaKolkata,
931
+ Timezone.AustraliaSydney,
932
+ ]; // default timezones.
798
933
  }
799
934
 
800
- public static isEqualBySeconds(date: Date, startDate: Date): boolean {
801
- date = this.fromString(date);
802
- startDate = this.fromString(startDate);
803
- return moment(date).isSame(startDate, 'seconds');
935
+ for (let i: number = 0; i < timezones.length; i++) {
936
+ timezoneDates.push(
937
+ moment(date)
938
+ .tz(timezones[i] as string)
939
+ .format(formatstring) +
940
+ " " +
941
+ (onlyShowDate
942
+ ? ""
943
+ : this.getZoneAbbrByTimezone(timezones[i] as Timezone)),
944
+ );
804
945
  }
805
946
 
806
- public static hasExpired(expirationDate: Date): boolean {
807
- expirationDate = this.fromString(expirationDate);
808
- return !moment(this.getCurrentDate()).isBefore(expirationDate);
809
- }
947
+ return timezoneDates;
948
+ }
810
949
 
811
- public static isBefore(date: Date, endDate: Date): boolean {
812
- date = this.fromString(date);
813
- endDate = this.fromString(endDate);
814
- return moment(date).isBefore(endDate);
815
- }
950
+ public static getDateAsFormattedHTMLInMultipleTimezones(data: {
951
+ date: string | Date;
952
+ onlyShowDate?: boolean;
953
+ timezones?: Array<Timezone> | undefined; // if this is skipped, then it will show the default timezones in the order of UTC, EST, PST, IST, ACT
954
+ }): string {
955
+ const date: string | Date = data.date;
956
+ const onlyShowDate: boolean | undefined = data.onlyShowDate;
957
+ const timezones: Array<Timezone> | undefined = data.timezones;
816
958
 
817
- public static getCurrentDateAsFormattedString(): string {
818
- return this.getDateAsFormattedString(new Date());
819
- }
959
+ return this.getDateAsFormattedArrayInMultipleTimezones({
960
+ date,
961
+ onlyShowDate,
962
+ timezones,
963
+ }).join("<br/>");
964
+ }
820
965
 
821
- public static getDateAsFormattedString(
822
- date: string | Date,
823
- onlyShowDate?: boolean
824
- ): string {
825
- date = this.fromString(date);
966
+ public static getDateAsFormattedStringInMultipleTimezones(data: {
967
+ date: string | Date;
968
+ onlyShowDate?: boolean | undefined;
969
+ timezones?: Array<Timezone> | undefined; // if this is skipped, then it will show the default timezones in the order of UTC, EST, PST, IST, ACT
970
+ }): string {
971
+ const date: string | Date = data.date;
972
+ const onlyShowDate: boolean | undefined = data.onlyShowDate;
973
+ const timezones: Array<Timezone> | undefined = data.timezones;
826
974
 
827
- let formatstring: string = 'MMM DD YYYY, HH:mm';
975
+ return this.getDateAsFormattedArrayInMultipleTimezones({
976
+ date,
977
+ onlyShowDate,
978
+ timezones,
979
+ }).join("\n");
980
+ }
828
981
 
829
- if (onlyShowDate) {
830
- formatstring = 'MMM DD, YYYY';
831
- }
982
+ public static getDateAsLocalFormattedString(
983
+ date: string | Date,
984
+ onlyShowDate?: boolean,
985
+ ): string {
986
+ date = this.fromString(date);
987
+
988
+ let formatstring: string = "MMM DD YYYY, HH:mm";
989
+
990
+ if (onlyShowDate) {
991
+ formatstring = "MMM DD, YYYY";
992
+ }
832
993
 
833
- return (
834
- moment(date).format(formatstring) +
835
- ' ' +
836
- (onlyShowDate ? '' : this.getCurrentTimezoneString())
837
- );
838
- }
994
+ const momentDate: moment.Moment = moment(date).local();
995
+
996
+ return (
997
+ momentDate.format(formatstring) +
998
+ " " +
999
+ (onlyShowDate ? "" : this.getCurrentTimezoneString())
1000
+ ).trim();
1001
+ }
1002
+
1003
+ public static getDayInSeconds(days?: number | undefined): number {
1004
+ if (!days) {
1005
+ days = 1;
1006
+ }
1007
+ return 24 * 60 * 60 * days;
1008
+ }
839
1009
 
840
- public static getDifferenceInMinutes(date: Date, date2: Date): number {
841
- date = this.fromString(date);
842
- date2 = this.fromString(date2);
843
- const minutes: number = moment(date).diff(moment(date2), 'minutes');
1010
+ public static getCurrentTimezoneString(): string {
1011
+ return this.getZoneAbbrByTimezone(this.getCurrentTimezone());
1012
+ }
844
1013
 
845
- if (minutes < 0) {
846
- return minutes * -1;
847
- }
1014
+ public static getZoneAbbrByTimezone(timezone: Timezone): string {
1015
+ let zoneAbbr: string = moment.tz(timezone).zoneAbbr();
1016
+
1017
+ if (zoneAbbr.startsWith("+") || zoneAbbr.startsWith("-")) {
1018
+ zoneAbbr = "GMT" + zoneAbbr;
1019
+ }
1020
+
1021
+ return zoneAbbr;
1022
+ }
1023
+
1024
+ public static getCurrentTimezone(): Timezone {
1025
+ return moment.tz.guess() as Timezone;
1026
+ }
1027
+
1028
+ public static getDateString(date: Date): string {
1029
+ date = this.fromString(date);
1030
+ return this.getDateAsLocalFormattedString(date, true);
1031
+ }
1032
+
1033
+ public static isInThePast(date: string | Date): boolean {
1034
+ date = this.fromString(date);
1035
+ return moment(date).isBefore(new Date());
1036
+ }
1037
+
1038
+ public static isInTheFuture(date: string | Date): boolean {
1039
+ date = this.fromString(date);
1040
+ return moment(date).isAfter(new Date());
1041
+ }
848
1042
 
849
- return minutes;
1043
+ public static fromString(date: string | JSONObject | Date): Date {
1044
+ if (date instanceof Date) {
1045
+ return date;
850
1046
  }
851
-
852
- public static convertMinutesToDaysHoursAndMinutes(minutes: number): string {
853
- // should output 2 days, 3 hours and 4 minutes. If the days are 0, it should not show the days. If the hours are 0, it should not show the hours. If the minutes are 0, it should not show the minutes.
854
-
855
- const days: number = Math.floor(minutes / (24 * 60));
856
- const hours: number = Math.floor((minutes % (24 * 60)) / 60);
857
- const mins: number = minutes % 60;
858
-
859
- let formattedString: string = '';
860
-
861
- if (days > 0) {
862
- formattedString += days + ' days';
863
- }
864
-
865
- if (hours > 0) {
866
- if (formattedString.length > 0) {
867
- formattedString += ', ';
868
- }
869
-
870
- formattedString += hours + ' hours';
871
- }
872
-
873
- if (mins >= 0) {
874
- if (formattedString.length > 0) {
875
- formattedString += ', ';
876
- }
877
-
878
- formattedString += mins + ' minutes';
879
- }
880
-
881
- return formattedString;
1047
+
1048
+ if (typeof date === "string") {
1049
+ return moment(date).toDate();
1050
+ }
1051
+
1052
+ if (
1053
+ date &&
1054
+ date["value"] &&
1055
+ typeof date["value"] === "string" &&
1056
+ date["_type"] &&
1057
+ (date["_type"] === "Date" || date["_type"] === "DateTime")
1058
+ ) {
1059
+ return moment(date["value"]).toDate();
882
1060
  }
883
1061
 
884
- public static getDateAsFormattedArrayInMultipleTimezones(
885
- date: string | Date,
886
- onlyShowDate?: boolean
887
- ): Array<string> {
888
- date = this.fromString(date);
889
-
890
- let formatstring: string = 'MMM DD YYYY, HH:mm';
891
-
892
- if (onlyShowDate) {
893
- formatstring = 'MMM DD, YYYY';
894
- }
895
-
896
- // convert this date into GMT, EST, PST, IST, ACT with moment
897
- const timezoneDates: Array<string> = [];
898
-
899
- timezoneDates.push(
900
- moment(date).tz('UTC').format(formatstring) +
901
- ' ' +
902
- (onlyShowDate ? '' : 'GMT')
903
- );
904
- timezoneDates.push(
905
- moment(date).tz('America/New_York').format(formatstring) +
906
- ' ' +
907
- (onlyShowDate ? '' : 'EST')
908
- );
909
- timezoneDates.push(
910
- moment(date).tz('America/Los_Angeles').format(formatstring) +
911
- ' ' +
912
- (onlyShowDate ? '' : 'PST')
913
- );
914
- timezoneDates.push(
915
- moment(date).tz('Asia/Kolkata').format(formatstring) +
916
- ' ' +
917
- (onlyShowDate ? '' : 'IST')
918
- );
919
- timezoneDates.push(
920
- moment(date).tz('Australia/Sydney').format(formatstring) +
921
- ' ' +
922
- (onlyShowDate ? '' : 'AEST')
923
- );
924
-
925
- return timezoneDates;
926
- }
927
-
928
- public static getDateAsFormattedHTMLInMultipleTimezones(
929
- date: string | Date,
930
- onlyShowDate?: boolean
931
- ): string {
932
- return this.getDateAsFormattedArrayInMultipleTimezones(
933
- date,
934
- onlyShowDate
935
- ).join('<br/>');
936
- }
937
-
938
- public static getDateAsFormattedStringInMultipleTimezones(
939
- date: string | Date,
940
- onlyShowDate?: boolean
941
- ): string {
942
- return this.getDateAsFormattedArrayInMultipleTimezones(
943
- date,
944
- onlyShowDate
945
- ).join('\n');
946
- }
947
-
948
- public static getDateAsLocalFormattedString(
949
- date: string | Date,
950
- onlyShowDate?: boolean
951
- ): string {
952
- date = this.fromString(date);
953
-
954
- let formatstring: string = 'MMM DD YYYY, HH:mm';
955
-
956
- if (onlyShowDate) {
957
- formatstring = 'MMM DD, YYYY';
958
- }
959
-
960
- const momentDate: moment.Moment = moment(date).local();
1062
+ throw new BadDataException("Invalid date: " + date.toString());
1063
+ }
961
1064
 
962
- return (
963
- momentDate.format(formatstring) +
964
- ' ' +
965
- (onlyShowDate ? '' : this.getCurrentTimezoneString())
966
- ).trim();
967
- }
1065
+ public static asDateForDatabaseQuery(date: string | Date): string {
1066
+ date = this.fromString(date);
1067
+ const formatstring: string = "YYYY-MM-DD";
1068
+ return moment(date).local().format(formatstring);
1069
+ }
968
1070
 
969
- public static getDayInSeconds(days?: number | undefined): number {
970
- if (!days) {
971
- days = 1;
972
- }
973
- return 24 * 60 * 60 * days;
974
- }
1071
+ public static asFilterDateForDatabaseQuery(date: string | Date): InBetween {
1072
+ date = this.fromString(date);
1073
+ const formattedDate: Date = moment(date).toDate();
1074
+ return new InBetween(
1075
+ OneUptimeDate.getStartOfDay(formattedDate),
1076
+ OneUptimeDate.getEndOfDay(formattedDate),
1077
+ );
1078
+ }
975
1079
 
976
- public static getCurrentTimezoneString(): string {
977
- return moment.tz(moment.tz.guess()).zoneAbbr();
978
- }
1080
+ public static getDateWithCustomTime(data: {
1081
+ hours: number;
1082
+ minutes: number;
1083
+ seconds: number;
1084
+ }): Date {
1085
+ const hour: number = data.hours;
1086
+ const minutes: number = data.minutes;
1087
+ const seconds: number = data.seconds;
979
1088
 
980
- public static getDateString(date: Date): string {
981
- date = this.fromString(date);
982
- return this.getDateAsLocalFormattedString(date, true);
1089
+ //validate the hour
1090
+ if (hour < 0 || hour > 23) {
1091
+ throw new BadDataException("Invalid hour");
983
1092
  }
984
1093
 
985
- public static isInThePast(date: string | Date): boolean {
986
- date = this.fromString(date);
987
- return moment(date).isBefore(new Date());
1094
+ //validate the minutes
1095
+ if (minutes < 0 || minutes > 59) {
1096
+ throw new BadDataException("Invalid minutes");
988
1097
  }
989
1098
 
990
- public static isInTheFuture(date: string | Date): boolean {
991
- date = this.fromString(date);
992
- return moment(date).isAfter(new Date());
1099
+ //validate the seconds
1100
+ if (seconds < 0 || seconds > 59) {
1101
+ throw new BadDataException("Invalid seconds");
993
1102
  }
994
1103
 
995
- public static fromString(date: string | JSONObject | Date): Date {
996
- if (date instanceof Date) {
997
- return date;
998
- }
999
-
1000
- if (typeof date === 'string') {
1001
- return moment(date).toDate();
1002
- }
1003
-
1004
- if (
1005
- date &&
1006
- date['value'] &&
1007
- typeof date['value'] === 'string' &&
1008
- date['_type'] &&
1009
- (date['_type'] === 'Date' || date['_type'] === 'DateTime')
1010
- ) {
1011
- return moment(date['value']).toDate();
1012
- }
1013
-
1014
- throw new BadDataException('Invalid date');
1015
- }
1104
+ const date: Date = OneUptimeDate.getCurrentDate();
1016
1105
 
1017
- public static asDateForDatabaseQuery(date: string | Date): string {
1018
- date = this.fromString(date);
1019
- const formatstring: string = 'YYYY-MM-DD';
1020
- return moment(date).local().format(formatstring);
1021
- }
1106
+ date.setHours(hour);
1107
+ date.setMinutes(minutes);
1108
+ date.setSeconds(seconds);
1022
1109
 
1023
- public static asFilterDateForDatabaseQuery(date: string | Date): InBetween {
1024
- date = this.fromString(date);
1025
- const formattedDate: Date = moment(date).toDate();
1026
- return new InBetween(
1027
- OneUptimeDate.getStartOfDay(formattedDate),
1028
- OneUptimeDate.getEndOfDay(formattedDate)
1029
- );
1030
- }
1031
-
1032
- public static getDateWithCustomTime(data: {
1033
- hours: number;
1034
- minutes: number;
1035
- seconds: number;
1036
- }): Date {
1037
- const hour: number = data.hours;
1038
- const minutes: number = data.minutes;
1039
- const seconds: number = data.seconds;
1040
-
1041
- //validate the hour
1042
- if (hour < 0 || hour > 23) {
1043
- throw new BadDataException('Invalid hour');
1044
- }
1045
-
1046
- //validate the minutes
1047
- if (minutes < 0 || minutes > 59) {
1048
- throw new BadDataException('Invalid minutes');
1049
- }
1050
-
1051
- //validate the seconds
1052
- if (seconds < 0 || seconds > 59) {
1053
- throw new BadDataException('Invalid seconds');
1054
- }
1055
-
1056
- const date: Date = OneUptimeDate.getCurrentDate();
1057
-
1058
- date.setHours(hour);
1059
- date.setMinutes(minutes);
1060
- date.setSeconds(seconds);
1061
-
1062
- return date;
1063
- }
1110
+ return date;
1111
+ }
1064
1112
 
1065
- public static toDatabaseDate(date: Date): string {
1066
- date = this.fromString(date);
1067
- return moment(date).format('YYYY-MM-DD HH:mm:ss');
1068
- }
1113
+ public static toDatabaseDate(date: Date): string {
1114
+ date = this.fromString(date);
1115
+ return moment(date).format("YYYY-MM-DD HH:mm:ss");
1116
+ }
1069
1117
  }