somod-schema
Version:
Schema to validate yaml files in somod modules
126 lines (125 loc) • 5.36 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var keywords_1 = require("../common/keywords");
var expression_1 = require("./components/expression");
var keywords_2 = require("./components/keywords");
var all_1 = require("./resources/all");
var custom_1 = require("./resources/custom");
var function_1 = require("./resources/function");
var functionLayer_1 = require("./resources/functionLayer");
var functionMiddleware_1 = require("./resources/functionMiddleware");
var serverlessTemplate = {
$schema: "http://json-schema.org/draft-07/schema",
$id: "https://somod.json-schema.sodaru.com/serverless-template/index.json",
title: "JSON Schema for Serverless Template in SOMOD",
definitions: {
somodAjvCompile: keywords_1.somodAjvCompile,
somodAnd: keywords_1.somodAnd,
somodEquals: keywords_1.somodEquals,
somodFunctions: keywords_1.somodFunctions,
somodIf: keywords_1.somodIf,
somodJsonParse: keywords_1.somodJsonParse,
somodJsonStringify: keywords_1.somodJsonStringify,
somodKey: keywords_1.somodKey,
somodOr: keywords_1.somodOr,
somodParameter: keywords_1.somodParameter,
arrayLike: expression_1.arrayLike,
booleanLike: expression_1.booleanLike,
numberLike: expression_1.numberLike,
samAnd: expression_1.samAnd,
samBase64: expression_1.samBase64,
samBoolean: expression_1.samBoolean,
samCidr: expression_1.samCidr,
samEquals: expression_1.samEquals,
samFindInMap: expression_1.samFindInMap,
samGetAZs: expression_1.samGetAZs,
samIf: expression_1.samIf,
samJoin: expression_1.samJoin,
samNot: expression_1.samNot,
samNumber: expression_1.samNumber,
samOr: expression_1.samOr,
samRef: expression_1.samRef,
samSelect: expression_1.samSelect,
samSplit: expression_1.samSplit,
samString: expression_1.samString,
samSub: expression_1.samSub,
stringLike: expression_1.stringLike,
somodAccess: keywords_2.somodAccess,
somodCreateIf: keywords_2.somodCreateIf,
somodDependsOn: keywords_2.somodDependsOn,
somodExtend: keywords_2.somodExtend,
somodModuleName: keywords_2.somodModuleName,
somodModuleNamePattern: keywords_2.somodModuleNamePattern,
somodOutput: keywords_2.somodOutput,
somodRef: keywords_2.somodRef,
somodResourceLogicalIdPattern: keywords_2.somodResourceLogicalIdPattern,
somodResourceName: keywords_2.somodResourceName,
allResource: all_1.allResource,
customResource: custom_1.customResource,
functionTypes: function_1.functionTypes,
functionApiEvent: function_1.functionApiEvent,
functionHttpApiEvent: function_1.functionHttpApiEvent,
functionEvent: function_1.functionEvent,
functionEventSource: function_1.functionEventSource,
functionResource: function_1.functionResource,
functionLayerResource: functionLayer_1.functionLayerResource,
functionMiddlewareResource: functionMiddleware_1.functionMiddlewareResource
},
type: "object",
required: ["Resources"],
properties: {
Resources: {
type: "object",
additionalProperties: {
allOf: [
{ $ref: "#/definitions/allResource" },
{
if: {
type: "object",
properties: {
Type: {
enum: [
"AWS::Serverless::Function",
"AWS::Serverless::LayerVersion",
"SOMOD::Serverless::FunctionMiddleware"
]
}
}
},
then: {
oneOf: [
{ $ref: "#/definitions/functionResource" },
{ $ref: "#/definitions/functionLayerResource" },
{ $ref: "#/definitions/functionMiddlewareResource" }
]
}
},
{
if: {
type: "object",
properties: {
Type: {
type: "string",
pattern: "^Custom::[A-Z][a-zA-Z0-9]{0,63}$"
}
}
},
then: { $ref: "#/definitions/customResource" }
}
]
},
propertyNames: { type: "string", pattern: "^[a-zA-Z0-9]{1,64}$" }
},
Outputs: {
type: "object",
additionalProperties: {
$ref: "#/definitions/stringLike"
},
propertyNames: {
$ref: "#/definitions/somodParameter/properties/SOMOD::Parameter"
}
}
},
additionalProperties: false
};
exports.default = serverlessTemplate;