@altostra/core
Version:
Core library for shared types and logic
1 lines • 2.88 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.getValidVersions=exports.relationalDBNonServerlessResourceBaseValidations=exports.relationalDBResourceBaseValidations=exports.isWeeklyTimeWindow=exports.isWeeklyTime=exports.isTimeWindow=exports.isTime=exports.isDBEngine=void 0;const NonEmptyString_1=require("../../../common/CustomTypes/NonEmptyString"),Numerics_1=require("../../../common/CustomTypes/Numerics"),type_validations_1=require("@altostra/type-validations"),primitives_1=require("@altostra/type-validations/lib/primitives"),iterable_1=require("@reactivex/ix-es2015-cjs/iterable"),filter_1=require("@reactivex/ix-es2015-cjs/iterable/operators/filter"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),Common_1=require("../Common");exports.isDBEngine=(0,type_validations_1.objectOf)({engine:(0,type_validations_1.enumOf)("mysql","postgresql"),engineVersion:primitives_1.string,instanceClass:primitives_1.string});const zeroOrNatural=(0,type_validations_1.anyOf)((0,type_validations_1.is)(0),Numerics_1.isNaturalNumber),timeValidations={hours:zeroOrNatural,minutes:(0,type_validations_1.maybe)(zeroOrNatural)};function getValidVersions(e){return[...(0,iterable_1.from)(Object.entries(e)).pipe((0,filter_1.filter)(([e,i])=>!(null==i?void 0:i.isDeprecated)),(0,map_1.map)(([e,i])=>e))]}exports.isTime=(0,type_validations_1.objectOf)(timeValidations),exports.isTimeWindow=(0,type_validations_1.objectOf)({start:exports.isTime,end:exports.isTime}),exports.isWeeklyTime=(0,type_validations_1.objectOf)(Object.assign(Object.assign({},timeValidations),{day:(0,type_validations_1.enumOf)("Sun","Mon","Tue","Wed","Thu","Fri","Sat")})),exports.isWeeklyTimeWindow=(0,type_validations_1.objectOf)({start:exports.isWeeklyTime,end:exports.isWeeklyTime}),exports.relationalDBResourceBaseValidations=Object.assign(Object.assign({},Common_1.resourceBaseValidators),{dbEngine:(0,Common_1.multiVendorPropertyValidation)(exports.isDBEngine),masterUsername:NonEmptyString_1.isNonEmptyString,deletionProtection:primitives_1.boolean,backupRetentionDays:(0,type_validations_1.maybe)(Numerics_1.isNaturalNumber),databaseName:(0,type_validations_1.maybe)(NonEmptyString_1.isNonEmptyString),storageEncryption:(0,type_validations_1.maybe)(Common_1.isStorageEncryption),preferedBackupWindow:(0,type_validations_1.maybe)(exports.isTimeWindow),preferedMaintainanceWindow:(0,type_validations_1.maybe)(exports.isTimeWindow),vpc:(0,type_validations_1.maybe)(Common_1.isVPC),deletionPolicy:(0,type_validations_1.maybe)((0,type_validations_1.enumOf)("Delete","Retain","Snapshot"))}),exports.relationalDBNonServerlessResourceBaseValidations=Object.assign(Object.assign({},exports.relationalDBResourceBaseValidations),{port:(0,type_validations_1.maybe)(Numerics_1.isNaturalNumber),publicAccessibility:primitives_1.boolean}),exports.getValidVersions=getValidVersions;