mirror of https://gitee.com/bigwinds/arangodb
More vigilant manifest validation.
This commit is contained in:
parent
1953f043c8
commit
51fe2655c9
|
@ -61,29 +61,84 @@
|
||||||
var throwDownloadError = arangodb.throwDownloadError;
|
var throwDownloadError = arangodb.throwDownloadError;
|
||||||
var throwFileNotFound = arangodb.throwFileNotFound;
|
var throwFileNotFound = arangodb.throwFileNotFound;
|
||||||
|
|
||||||
|
// Regular expressions for joi patterns
|
||||||
|
var RE_FQPATH = /^\//;
|
||||||
|
var RE_EMPTY = /^$/;
|
||||||
|
var RE_NOT_FQPATH = /^[^\/]/;
|
||||||
|
var RE_NOT_EMPTY = /./;
|
||||||
|
|
||||||
var manifestSchema = {
|
var manifestSchema = {
|
||||||
assets: joi.object().optional(),
|
assets: (
|
||||||
|
joi.object().optional()
|
||||||
|
.pattern(RE_EMPTY, joi.forbidden())
|
||||||
|
.pattern(RE_NOT_EMPTY, (
|
||||||
|
joi.object().required()
|
||||||
|
.keys({
|
||||||
|
files: (
|
||||||
|
joi.array().required()
|
||||||
|
.items(joi.string().required())
|
||||||
|
),
|
||||||
|
contentType: joi.string().optional()
|
||||||
|
})
|
||||||
|
))
|
||||||
|
),
|
||||||
author: joi.string().allow("").default(""),
|
author: joi.string().allow("").default(""),
|
||||||
configuration: joi.object().optional(),
|
configuration: (
|
||||||
|
joi.object().optional()
|
||||||
|
.pattern(RE_EMPTY, joi.forbidden())
|
||||||
|
.pattern(RE_NOT_EMPTY, (
|
||||||
|
joi.object().required()
|
||||||
|
.keys({
|
||||||
|
default: joi.any().optional(),
|
||||||
|
type: (
|
||||||
|
joi.string().required()
|
||||||
|
.valid(Object.keys(utils.typeToRegex))
|
||||||
|
),
|
||||||
|
description: joi.string().optional()
|
||||||
|
})
|
||||||
|
))
|
||||||
|
),
|
||||||
contributors: joi.array().optional(),
|
contributors: joi.array().optional(),
|
||||||
controllers: joi.alternatives().try(
|
controllers: joi.alternatives().try(
|
||||||
joi.string().optional(),
|
joi.string().optional(),
|
||||||
joi.object().optional()
|
(
|
||||||
|
joi.object().optional()
|
||||||
|
.pattern(RE_NOT_FQPATH, joi.forbidden())
|
||||||
|
.pattern(RE_FQPATH, joi.string().required())
|
||||||
|
)
|
||||||
),
|
),
|
||||||
defaultDocument: joi.string().allow("").optional(),
|
defaultDocument: joi.string().allow("").optional(),
|
||||||
description: joi.string().allow("").default(""),
|
description: joi.string().allow("").default(""),
|
||||||
engines: joi.object().optional(),
|
engines: (
|
||||||
|
joi.object().optional()
|
||||||
|
.pattern(RE_EMPTY, joi.forbidden())
|
||||||
|
.pattern(RE_NOT_EMPTY, joi.string().required())
|
||||||
|
),
|
||||||
exports: joi.alternatives().try(
|
exports: joi.alternatives().try(
|
||||||
joi.string().optional(),
|
joi.string().optional(),
|
||||||
joi.object().optional()
|
(
|
||||||
|
joi.object().optional()
|
||||||
|
.pattern(RE_EMPTY, joi.forbidden())
|
||||||
|
.pattern(RE_NOT_EMPTY, joi.string().required())
|
||||||
|
)
|
||||||
|
),
|
||||||
|
files: (
|
||||||
|
joi.object().optional()
|
||||||
|
.pattern(RE_NOT_FQPATH, joi.forbidden())
|
||||||
|
.pattern(RE_FQPATH, joi.string().required())
|
||||||
),
|
),
|
||||||
files: joi.object().optional(),
|
|
||||||
isSystem: joi.boolean().default(false),
|
isSystem: joi.boolean().default(false),
|
||||||
keywords: joi.array().optional(),
|
keywords: joi.array().optional(),
|
||||||
lib: joi.string().optional(),
|
lib: joi.string().optional(),
|
||||||
license: joi.string().optional(),
|
license: joi.string().optional(),
|
||||||
name: joi.string().required(),
|
name: joi.string().required(),
|
||||||
repository: joi.object().optional(),
|
repository: (
|
||||||
|
joi.object().optional()
|
||||||
|
.keys({
|
||||||
|
type: joi.string().required(),
|
||||||
|
url: joi.string().required()
|
||||||
|
})
|
||||||
|
),
|
||||||
setup: joi.string().optional(),
|
setup: joi.string().optional(),
|
||||||
teardown: joi.string().optional(),
|
teardown: joi.string().optional(),
|
||||||
thumbnail: joi.string().optional(),
|
thumbnail: joi.string().optional(),
|
||||||
|
|
Loading…
Reference in New Issue