somod-schema
Version:
Schema to validate yaml files in somod modules
126 lines (125 loc) • 3.35 kB
JavaScript
export var somodModuleNamePattern = {
type: "string",
pattern: "^(@[a-z0-9-]+\\/)?[a-z0-9-]+$",
maxLength: 128
};
export var somodResourceLogicalIdPattern = {
type: "string",
pattern: "^[a-zA-Z0-9]{1,64}$"
};
export var somodResourceName = {
type: "object",
additionalProperties: false,
required: ["SOMOD::ResourceName"],
properties: {
"SOMOD::ResourceName": {
type: "string",
pattern: "^[a-zA-Z]+[a-zA-Z0-9]*$",
maxLength: 64
}
}
};
export var somodRef = {
type: "object",
additionalProperties: false,
required: ["SOMOD::Ref"],
properties: {
"SOMOD::Ref": {
type: "object",
additionalProperties: false,
required: ["resource"],
properties: {
resource: { $ref: "#/definitions/somodResourceLogicalIdPattern" },
module: { $ref: "#/definitions/somodModuleNamePattern" },
attribute: { type: "string", pattern: "^[a-zA-Z0-9]+$" }
}
}
}
};
export var somodModuleName = {
type: "object",
additionalProperties: false,
required: ["SOMOD::ModuleName"],
properties: {
"SOMOD::ModuleName": {
const: true
}
}
};
export var somodAccess = {
type: "object",
properties: {
"SOMOD::Access": {
enum: ["module", "scope", "public"]
}
}
};
export var somodExtend = {
type: "object",
properties: {
"SOMOD::Extend": {
type: "object",
additionalProperties: false,
required: ["module", "resource"],
properties: {
module: { $ref: "#/definitions/somodModuleNamePattern" },
resource: {
$ref: "#/definitions/somodResourceLogicalIdPattern"
},
rules: {
type: "object",
additionalProperties: {
enum: ["REPLACE", "COMBINE", "APPEND", "PREPEND"]
}
}
}
}
}
};
export var somodDependsOn = {
type: "object",
properties: {
"SOMOD::DependsOn": {
type: "array",
items: {
type: "object",
additionalProperties: false,
required: ["resource"],
properties: {
module: {
$ref: "#/definitions/somodModuleNamePattern"
},
resource: {
$ref: "#/definitions/somodResourceLogicalIdPattern"
}
}
},
minItems: 1,
maxItems: 20
}
}
};
export var somodOutput = {
type: "object",
properties: {
"SOMOD::Output": {
type: "object",
additionalProperties: false,
properties: {
default: { type: "boolean" },
attributes: {
type: "array",
items: { type: "string", pattern: "^[a-zA-Z0-9]+$" }
}
}
}
}
};
export var somodCreateIf = {
type: "object",
properties: {
"SOMOD::CreateIf": {
$ref: "#/definitions/booleanLike"
}
}
};