somod-schema
Version:
Schema to validate yaml files in somod modules
129 lines (128 loc) • 3.67 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.somodCreateIf = exports.somodOutput = exports.somodDependsOn = exports.somodExtend = exports.somodAccess = exports.somodModuleName = exports.somodRef = exports.somodResourceName = exports.somodResourceLogicalIdPattern = exports.somodModuleNamePattern = void 0;
exports.somodModuleNamePattern = {
type: "string",
pattern: "^(@[a-z0-9-]+\\/)?[a-z0-9-]+$",
maxLength: 128
};
exports.somodResourceLogicalIdPattern = {
type: "string",
pattern: "^[a-zA-Z0-9]{1,64}$"
};
exports.somodResourceName = {
type: "object",
additionalProperties: false,
required: ["SOMOD::ResourceName"],
properties: {
"SOMOD::ResourceName": {
type: "string",
pattern: "^[a-zA-Z]+[a-zA-Z0-9]*$",
maxLength: 64
}
}
};
exports.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]+$" }
}
}
}
};
exports.somodModuleName = {
type: "object",
additionalProperties: false,
required: ["SOMOD::ModuleName"],
properties: {
"SOMOD::ModuleName": {
const: true
}
}
};
exports.somodAccess = {
type: "object",
properties: {
"SOMOD::Access": {
enum: ["module", "scope", "public"]
}
}
};
exports.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"]
}
}
}
}
}
};
exports.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
}
}
};
exports.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]+$" }
}
}
}
}
};
exports.somodCreateIf = {
type: "object",
properties: {
"SOMOD::CreateIf": {
$ref: "#/definitions/booleanLike"
}
}
};