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