UNPKG

somod-schema

Version:

Schema to validate yaml files in somod modules

129 lines (128 loc) 3.67 kB
"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" } } };