UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 2.56 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isServerlessContainerMemory=exports.isServerlessContainerCPU=exports.isFargateServerlessContainer=exports.areMemoryAndCPUsValid=exports.availableVCPUPerGiBMemory=exports.availableGiBMemoryPerVCPU=void 0;const NonEmptyString_1=require("../../common/CustomTypes/NonEmptyString"),Numerics_1=require("../../common/CustomTypes/Numerics"),Object_1=require("../../common/Utils/Object"),type_validations_1=require("@altostra/type-validations"),from_1=require("@reactivex/ix-es2015-cjs/iterable/from"),flatmap_1=require("@reactivex/ix-es2015-cjs/iterable/operators/flatmap"),groupby_1=require("@reactivex/ix-es2015-cjs/iterable/operators/groupby"),map_1=require("@reactivex/ix-es2015-cjs/iterable/operators/map"),range_1=require("@reactivex/ix-es2015-cjs/iterable/range"),Common_1=require("./Common"),ComputeFunction_1=require("./ComputeFunction");function areMemoryAndCPUsValid(e,r){return e in exports.availableVCPUPerGiBMemory&&exports.availableVCPUPerGiBMemory[e].includes(r)}function isServerlessContainerCPU(e){return(0,Numerics_1.isPositiveOrZero)(e)&&e in exports.availableGiBMemoryPerVCPU}function isServerlessContainerMemory(e){return(0,Numerics_1.isPositiveOrZero)(e)&&e in exports.availableVCPUPerGiBMemory}function areFSCMemoryAndCPUValid(e){const{memory:r,vCPU:i}=e;return areMemoryAndCPUsValid(r,i)}exports.availableGiBMemoryPerVCPU={.25:[.5,1,2],.5:[1,2,3,4],1:[...(0,range_1.range)(2,7)],2:[...(0,range_1.range)(4,13)],4:[...(0,range_1.range)(8,23)]},exports.availableVCPUPerGiBMemory=(0,Object_1.fromEntries)((0,from_1.from)(Object.entries(exports.availableGiBMemoryPerVCPU)).pipe((0,flatmap_1.flatMap)(([e,r])=>r.map(r=>({vCPU:e,memory:r}))),(0,groupby_1.groupBy)(e=>e.memory),(0,map_1.map)(e=>[e.key,[...e.pipe((0,map_1.map)(({vCPU:e})=>Number(e)))]]))),exports.areMemoryAndCPUsValid=areMemoryAndCPUsValid,exports.isFargateServerlessContainer=(0,type_validations_1.allOf)((0,type_validations_1.objectOf)(Object.assign(Object.assign({},Common_1.resourceBaseValidators),{type:(0,type_validations_1.is)("resource.compute.serverless-container"),image:NonEmptyString_1.isNonEmptyString,memory:isServerlessContainerMemory,vCPU:isServerlessContainerCPU,policies:(0,type_validations_1.maybe)((0,type_validations_1.singleOrArray)(ComputeFunction_1.isPolicyRef)),environment:(0,type_validations_1.maybe)(ComputeFunction_1.isEnvironment)})),areFSCMemoryAndCPUValid),exports.isServerlessContainerCPU=isServerlessContainerCPU,exports.isServerlessContainerMemory=isServerlessContainerMemory;