mirror of https://gitee.com/bigwinds/arangodb
51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
'use strict';
|
|
const joi = require('joi');
|
|
const configTypes = require('@arangodb/foxx/manifest').configTypes;
|
|
|
|
exports.mount = joi.string().regex(/(?:\/[-_0-9a-z]+)+/i).required();
|
|
|
|
exports.flag = joi.alternatives().try(
|
|
joi.boolean(),
|
|
joi.number().integer().min(0).max(1)
|
|
).default(false);
|
|
|
|
exports.shortInfo = joi.object({
|
|
mount: exports.mount,
|
|
name: joi.string().optional(),
|
|
version: joi.string().optional(),
|
|
development: joi.boolean().default(false),
|
|
legacy: joi.boolean().default(false)
|
|
}).required();
|
|
|
|
exports.fullInfo = exports.shortInfo.keys({
|
|
path: joi.string().required(),
|
|
manifest: joi.object().required(),
|
|
options: joi.object().required()
|
|
});
|
|
|
|
exports.configs = joi.object().pattern(/.+/, joi.object({
|
|
value: joi.any().optional(),
|
|
default: joi.any().optional(),
|
|
type: joi.only(Object.keys(configTypes)).default('string'),
|
|
description: joi.string().optional(),
|
|
required: joi.boolean().default(true)
|
|
}).required()).required();
|
|
|
|
exports.deps = joi.object().pattern(/.+/, joi.object({
|
|
name: joi.string().default('*'),
|
|
version: joi.string().default('*'),
|
|
required: joi.boolean().default(true)
|
|
}).required()).required();
|
|
|
|
exports.service = joi.alternatives(
|
|
joi.object().type(Buffer).required(),
|
|
joi.object({
|
|
source: joi.alternatives(
|
|
joi.string(),
|
|
joi.object().type(Buffer)
|
|
).required(),
|
|
configuration: joi.object().optional(),
|
|
dependencies: joi.object().optional()
|
|
}).required()
|
|
);
|