UNPKG

somod-schema

Version:

Schema to validate yaml files in somod modules

383 lines (382 loc) 12.5 kB
export var samString = { type: "string" }; export var samNumber = { type: "number" }; export var samBoolean = { type: "boolean" }; export var 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" } ] }; export var 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" } ] }; export var 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" } ] }; export var 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" } ] }; export var samBase64 = { type: "object", additionalProperties: false, properties: { "Fn::Base64": { $ref: "#/definitions/stringLike" } } }; export var 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 } } }; export var samAnd = { type: "object", additionalProperties: false, properties: { "Fn::And": { type: "array", items: { $ref: "#/definitions/booleanLike" }, minItems: 1, maxItems: 10 } } }; export var samOr = { type: "object", additionalProperties: false, properties: { "Fn::Or": { type: "array", items: { $ref: "#/definitions/booleanLike" }, minItems: 1, maxItems: 10 } } }; export var 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 } } }; export var 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 } } }; export var samNot = { type: "object", additionalProperties: false, properties: { "Fn::Not": { type: "array", items: [{ $ref: "#/definitions/booleanLike" }], maxItems: 1, minItems: 1, additionalItems: false } } }; export var 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 } } }; export var samGetAZs = { type: "object", additionalProperties: false, properties: { "Fn::GetAZs": { anyOf: [ { $ref: "#/definitions/samString" }, { $ref: "#/definitions/somodRef" }, { $ref: "#/definitions/somodFunctions" } ] } } }; export var 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 } } }; export var 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 } } }; export var 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 } } }; export var 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 } ] } } }; export var samRef = { type: "object", additionalProperties: false, properties: { Ref: { enum: [ "AWS::AccountId", "AWS::NotificationARNs", "AWS::NoValue", "AWS::Partition", "AWS::Region", "AWS::StackId", "AWS::StackName", "AWS::URLSuffix" ] } } };