somod-schema
Version:
Schema to validate yaml files in somod modules
386 lines (385 loc) • 13 kB
JavaScript
"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"
]
}
}
};