@oneuptime/common 7.0.2513 → 7.0.2550

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