You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
"use strict";
|
|
|
|
const either = require("@validatem/either");
|
|
const wrapError = require("@validatem/wrap-error");
|
|
const anyProperty = require("@validatem/any-property");
|
|
const required = require("@validatem/required");
|
|
const ensureArray = require("@validatem/ensure-array");
|
|
const arrayOf = require("@validatem/array-of");
|
|
const isLocalFieldName = require("../../is-local-field-name");
|
|
|
|
module.exports = function (operations) {
|
|
const isObjectType = require("../is-object-type")(operations);
|
|
const isFieldType = require("./is-field-type")(operations);
|
|
const isLocalIndexType = require("./is-local-index-type")(operations);
|
|
|
|
let isItem = either([
|
|
isFieldType,
|
|
isLocalIndexType,
|
|
isObjectType("linkTo"),
|
|
isObjectType("defaultTo"),
|
|
isObjectType("optional"),
|
|
// FIXME: Only allow deleteField/restoreAs for changeCollection, not createCollection
|
|
isObjectType("deleteField")
|
|
]);
|
|
|
|
return wrapError("Must be an object of schema fields", anyProperty({
|
|
key: [ required, isLocalFieldName ],
|
|
value: [ required, ensureArray, arrayOf(isItem) ]
|
|
}), { preserveOriginalErrors: true });
|
|
};
|