UNPKG

deep-package-manager

Version:
70 lines (55 loc) 2.91 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _joi = require('joi'); var _joi2 = _interopRequireDefault(_joi); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _Action = require('./Action'); var _Lambda = require('../../Property/Lambda'); var _JoiHelper = require('../../Helpers/JoiHelper'); var _ActionFlags = require('./Helpers/ActionFlags'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @param {Object} joiObject * @returns {*} */ function assureTypeLambda(joiObject) { joiObject.when('type', { is: _Action.Action.LAMBDA, // @todo - this condition doesn't work, default engine settings are applied for external resources also otherwise: _joi2.default.forbidden() }); return joiObject; } exports.default = _joi2.default.object().keys({ description: _JoiHelper.JoiHelper.maybeString(), type: _JoiHelper.JoiHelper.stringEnum([_Action.Action.LAMBDA, _Action.Action.EXTERNAL]), methods: _JoiHelper.JoiHelper.listEnum(_Action.Action.HTTP_VERBS), source: _JoiHelper.JoiHelper.string().replace(/\//gi, _path2.default.sep), cacheTtl: _joi2.default.number().optional().integer().min(_Action.Action.NO_CACHE).default(_Action.Action.NO_CACHE), forceUserIdentity: assureTypeLambda(_joi2.default.boolean().optional().default(true)), cron: assureTypeLambda(_joi2.default.string().regex(/^\s*[^\s]+\s+[^\s]+\s+[^\s]+\s+[^\s]+\s+[^\s]+\s+[^\s]+\s*$/).optional()), cronPayload: _joi2.default.object().unknown().optional(), validationSchema: _JoiHelper.JoiHelper.maybeString(), scope: _JoiHelper.JoiHelper.stringEnum(_ActionFlags.ActionFlags.STATES_STR_VECTOR).optional().default(_ActionFlags.ActionFlags.PUBLIC_STR), // Api Gateway config api: _joi2.default.object().optional().keys({ authorization: _joi2.default.string().optional().allow(_Action.Action.API_AUTH_TYPES).default(_Action.Action.AUTH_TYPE_AWS_IAM), keyRequired: _joi2.default.boolean().optional().default(false) }).default({ authorization: _Action.Action.AUTH_TYPE_AWS_IAM, keyRequired: false }), // Lambda config engine: assureTypeLambda(_joi2.default.object().optional().keys({ memory: _joi2.default.number().optional().integer().allow(_Lambda.Lambda.AVAILABLE_MEMORY_VALUES).min(_Lambda.Lambda.MIN_MEMORY_LIMIT).max(_Lambda.Lambda.MAX_MEMORY_LIMIT).default(_Lambda.Lambda.DEFAULT_MEMORY_LIMIT), timeout: _joi2.default.number().optional().integer().min(1).max(_Lambda.Lambda.MAX_TIMEOUT).default(_Lambda.Lambda.DEFAULT_TIMEOUT), runtime: _joi2.default.string().optional().allow(_Lambda.Lambda.RUNTIMES).default(_Lambda.Lambda.DEFAULT_RUNTIME) }).default({ memory: _Lambda.Lambda.DEFAULT_MEMORY_LIMIT, timeout: _Lambda.Lambda.DEFAULT_TIMEOUT, runtime: _Lambda.Lambda.DEFAULT_RUNTIME })) }); module.exports = exports['default'];