UNPKG

@altostra/core

Version:

Core library for shared types and logic

1 lines 2.95 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateBlueprint=exports.validateBlueprintTemplate=exports.isBlueprint=exports.isBlueprintTemplate=exports.mkBlueprint=exports.SUPPORTED_VERSION=void 0;const AltoError_1=require("../../common/Errors/AltoError"),Object_1=require("../../common/Utils/Object"),type_validations_1=require("@altostra/type-validations"),primitives_1=require("@altostra/type-validations/lib/primitives"),Connections_1=require("../Connections"),Parameters_1=require("../Parameters"),Resources_1=require("../Resources"),BlueprintError_1=require("./BlueprintError"),common_1=require("./common"),SourceCodeLocation_1=require("./SourceCodeLocation");function mkBlueprint(e,t,r){let i;if(!e||"object"!=typeof e&&"function"!=typeof e||void 0!==t||void 0!==r){if("string"!=typeof e||"string"!=typeof t||!r)throw AltoError_1.AltoError.create({message:"Invalid arguments for "+mkBlueprint.name,data:{arguments:[...arguments]}});i=Object.assign(Object.assign({},r),{id:e,name:t})}else i=e;return validateBlueprint(i),i}function validateBlueprintTemplate(e){if(!(0,Object_1.isObject)(e))throw new BlueprintError_1.BlueprintError("Blueprint is not an object");if(e.version!==exports.SUPPORTED_VERSION)throw new BlueprintError_1.BlueprintError("Invalid blueprint version");if(!(0,Object_1.isObject)(e.resources))throw new BlueprintError_1.BlueprintError("Invalid blueprint resources");if(!(0,Object_1.isObject)(e.connections))throw new BlueprintError_1.BlueprintError("Invalid blueprint connections")}function validateBlueprint(e){validateBlueprintTemplate(e),validateName(e.name),validateId(e.id)}function mkNonEmptyStringValidation(e){return function(t){if("string"!=typeof t||t.length<1)throw new BlueprintError_1.BlueprintError(e)}}exports.SUPPORTED_VERSION="2019-10-24",exports.mkBlueprint=mkBlueprint,exports.isBlueprintTemplate=(0,type_validations_1.objectOf)({version:(0,type_validations_1.is)("2019-10-24"),connections:(0,type_validations_1.recordOf)((0,type_validations_1.recordOf)(Connections_1.isConnection)),description:primitives_1.maybeString,metadata:(0,type_validations_1.maybe)((0,type_validations_1.recordOf)(primitives_1.any)),resources:(0,type_validations_1.recordOf)(Resources_1.isAnyResource),sourceCode:(0,type_validations_1.maybe)(SourceCodeLocation_1.isSourceCodeLocation),parameters:Parameters_1.isParametersDict,[common_1.globalEnvironmentVariablesKey]:(0,type_validations_1.maybe)((0,type_validations_1.recordOf)(primitives_1.string))}),exports.isBlueprint=(0,type_validations_1.objectOf)(Object.assign(Object.assign({},exports.isBlueprintTemplate.propertySpec()),{id:primitives_1.string,name:primitives_1.string,unsafe:primitives_1.maybeBoolean,Blueprint:()=>!0})),exports.validateBlueprintTemplate=validateBlueprintTemplate,exports.validateBlueprint=validateBlueprint;const validateName=mkNonEmptyStringValidation("Invalid name"),validateId=mkNonEmptyStringValidation("Invalid ID");