deep-package-manager
Version:
DEEP Package Manager
70 lines (55 loc) • 2.91 kB
JavaScript
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'];
;