UNPKG

somod-schema

Version:

Schema to validate yaml files in somod modules

386 lines (385 loc) 13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.samRef = exports.samSub = exports.samSplit = exports.samSelect = exports.samJoin = exports.samGetAZs = exports.samFindInMap = exports.samNot = exports.samIf = exports.samEquals = exports.samOr = exports.samAnd = exports.samCidr = exports.samBase64 = exports.arrayLike = exports.numberLike = exports.booleanLike = exports.stringLike = exports.samBoolean = exports.samNumber = exports.samString = void 0; exports.samString = { type: "string" }; exports.samNumber = { type: "number" }; exports.samBoolean = { type: "boolean" }; exports.stringLike = { oneOf: [ { $ref: "#/definitions/samString" }, { $ref: "#/definitions/samBase64" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samFindInMap" }, { $ref: "#/definitions/samJoin" }, { $ref: "#/definitions/samSelect" }, { $ref: "#/definitions/samSub" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodParameter" }, { $ref: "#/definitions/somodModuleName" }, { $ref: "#/definitions/somodAjvCompile" }, { $ref: "#/definitions/somodIf" }, { $ref: "#/definitions/somodJsonStringify" }, { $ref: "#/definitions/somodKey" } ] }; exports.booleanLike = { oneOf: [ { $ref: "#/definitions/samBoolean" }, { $ref: "#/definitions/samAnd" }, { $ref: "#/definitions/samOr" }, { $ref: "#/definitions/samEquals" }, { $ref: "#/definitions/samNot" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samFindInMap" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodParameter" }, { $ref: "#/definitions/somodAnd" }, { $ref: "#/definitions/somodOr" }, { $ref: "#/definitions/somodEquals" }, { $ref: "#/definitions/somodIf" }, { $ref: "#/definitions/somodKey" } ] }; exports.numberLike = { oneOf: [ { $ref: "#/definitions/samNumber" }, { $ref: "#/definitions/samSelect" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samFindInMap" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodParameter" }, { $ref: "#/definitions/somodIf" }, { $ref: "#/definitions/somodKey" } ] }; exports.arrayLike = { oneOf: [ { $ref: "#/definitions/samCidr" }, { $ref: "#/definitions/samGetAZs" }, { $ref: "#/definitions/samSplit" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samFindInMap" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodParameter" }, { $ref: "#/definitions/somodIf" }, { $ref: "#/definitions/somodJsonParse" }, { $ref: "#/definitions/somodKey" } ] }; exports.samBase64 = { type: "object", additionalProperties: false, properties: { "Fn::Base64": { $ref: "#/definitions/stringLike" } } }; exports.samCidr = { type: "object", additionalProperties: false, properties: { "Fn::Cidr": { type: "array", items: [ { $ref: "#/definitions/stringLike", description: "ipBlock" }, { $ref: "#/definitions/numberLike", description: "count" }, { $ref: "#/definitions/numberLike", description: "cidrBits" } ], minItems: 3, maxItems: 3, additionalItems: false } } }; exports.samAnd = { type: "object", additionalProperties: false, properties: { "Fn::And": { type: "array", items: { $ref: "#/definitions/booleanLike" }, minItems: 1, maxItems: 10 } } }; exports.samOr = { type: "object", additionalProperties: false, properties: { "Fn::Or": { type: "array", items: { $ref: "#/definitions/booleanLike" }, minItems: 1, maxItems: 10 } } }; exports.samEquals = { type: "object", additionalProperties: false, properties: { "Fn::Equals": { type: "array", items: [ { anyOf: [ { $ref: "#/definitions/stringLike" }, { $ref: "#/definitions/numberLike" }, { $ref: "#/definitions/booleanLike" }, { $ref: "#/definitions/arrayLike" } ] }, { anyOf: [ { $ref: "#/definitions/stringLike" }, { $ref: "#/definitions/numberLike" }, { $ref: "#/definitions/booleanLike" }, { $ref: "#/definitions/arrayLike" } ] } ], maxItems: 2, minItems: 2, additionalItems: false } } }; exports.samIf = { type: "object", additionalProperties: false, properties: { "Fn::If": { type: "array", items: [ { $ref: "#/definitions/samString" }, { anyOf: [ { $ref: "#/definitions/stringLike" }, { $ref: "#/definitions/numberLike" }, { $ref: "#/definitions/booleanLike" }, { $ref: "#/definitions/arrayLike" } ] }, { anyOf: [ { $ref: "#/definitions/stringLike" }, { $ref: "#/definitions/numberLike" }, { $ref: "#/definitions/booleanLike" }, { $ref: "#/definitions/arrayLike" } ] } ], maxItems: 3, minItems: 3, additionalItems: false } } }; exports.samNot = { type: "object", additionalProperties: false, properties: { "Fn::Not": { type: "array", items: [{ $ref: "#/definitions/booleanLike" }], maxItems: 1, minItems: 1, additionalItems: false } } }; exports.samFindInMap = { type: "object", additionalProperties: false, properties: { "Fn::FindInMap": { type: "array", items: [ { $ref: "#/definitions/samString" }, { $ref: "#/definitions/stringLike" }, { $ref: "#/definitions/stringLike" } ], minItems: 3, maxItems: 3, additionalItems: false } } }; exports.samGetAZs = { type: "object", additionalProperties: false, properties: { "Fn::GetAZs": { anyOf: [ { $ref: "#/definitions/samString" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodFunctions" } ] } } }; exports.samJoin = { type: "object", additionalProperties: false, properties: { "Fn::Join": { type: "array", items: [ { $ref: "#/definitions/samString" }, { anyOf: [ { type: "array", items: { anyOf: [ { $ref: "#/definitions/stringLike" }, { $ref: "#/definitions/numberLike" } ] }, minItems: 1 }, { $ref: "#/definitions/samGetAZs" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samSplit" }, { $ref: "#/definitions/samSelect" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodFunctions" } ] } ], minItems: 2, maxItems: 2, additionalItems: false } } }; exports.samSelect = { type: "object", additionalProperties: false, properties: { "Fn::Select": { type: "array", items: [ { anyOf: [ { $ref: "#/definitions/samNumber" }, { $ref: "#/definitions/somodFunctions" }, { $ref: "#/definitions/samFindInMap" } ] }, { anyOf: [ { $ref: "#/definitions/samFindInMap" }, { $ref: "#/definitions/samGetAZs" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samSplit" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodFunctions" } ] } ], minItems: 2, maxItems: 2, additionalItems: false } } }; exports.samSplit = { type: "object", additionalProperties: false, properties: { "Fn::Split": { type: "array", items: [ { $ref: "#/definitions/samString" }, { anyOf: [ { $ref: "#/definitions/samString" }, { $ref: "#/definitions/samBase64" }, { $ref: "#/definitions/samFindInMap" }, { $ref: "#/definitions/samGetAZs" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samJoin" }, { $ref: "#/definitions/samSelect" }, { $ref: "#/definitions/samSub" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodFunctions" }, { $ref: "#/definitions/somodModuleName" } ] } ], minItems: 2, maxItems: 2, additionalItems: false } } }; exports.samSub = { type: "object", additionalProperties: false, properties: { "Fn::Sub": { oneOf: [ { type: "string", maxLength: 1024 }, { type: "array", items: [ { $ref: "#/definitions/samString" }, { type: "object", additionalProperties: false, patternProperties: { "^[a-zA-Z0-9]+$": { anyOf: [ { $ref: "#/definitions/samString" }, { $ref: "#/definitions/samBase64" }, { $ref: "#/definitions/samFindInMap" }, { $ref: "#/definitions/samGetAZs" }, { $ref: "#/definitions/samIf" }, { $ref: "#/definitions/samJoin" }, { $ref: "#/definitions/samSelect" }, { $ref: "#/definitions/samRef" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodFunctions" } ] } } } ], minItems: 2, maxItems: 2, additionalItems: false } ] } } }; exports.samRef = { type: "object", additionalProperties: false, properties: { Ref: { enum: [ "AWS::AccountId", "AWS::NotificationARNs", "AWS::NoValue", "AWS::Partition", "AWS::Region", "AWS::StackId", "AWS::StackName", "AWS::URLSuffix" ] } } };