@geekbears/gb-mongoose-keywords-plugin
Version:
A Mongoose plugin for keyword generation
84 lines • 4.86 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateOptions = void 0;
var lodash_1 = require("lodash");
var constants_1 = require("../constants");
/**
* Validate the provided options by checking if specified paths and virtuals exist. Handle default omitted words
* @param schema the source schema
* @param options the provided options
* @returns a validated set of `IKeywordOptions`
*/
var validateOptions = function (schema, options) {
if ((0, lodash_1.isNil)(options))
throw new Error("KeywordsMiddleware: Error setting up middleware. No options provided");
if (!(0, lodash_1.isNil)(options.paths)) {
if (!(0, lodash_1.isArray)(options.paths))
throw new Error("KeywordsMiddleware: Error setting up middleware. Paths option must be an array");
for (var _i = 0, _a = options.paths; _i < _a.length; _i++) {
var field = _a[_i];
if (!(0, lodash_1.isString)(field))
throw new Error("KeywordsMiddleware: Error setting up middleware. Paths must only contain strings");
if (!(0, lodash_1.has)(schema.paths, field))
throw new Error("KeywordsMiddleware: Error setting up middleware. Path ".concat(field, " not present in schema"));
}
}
if (!(0, lodash_1.isNil)(options.virtuals)) {
if (!(0, lodash_1.isObject)(options.virtuals))
throw new Error("KeywordsMiddleware: Error setting up middleware. Virtuals option must be an object");
for (var _b = 0, _c = (0, lodash_1.keys)(options.virtuals); _b < _c.length; _b++) {
var virtual = _c[_b];
if (!(0, lodash_1.isString)(virtual))
throw new Error("KeywordsMiddleware: Error setting up middleware. Virtuals must only contain strings");
if (!(0, lodash_1.has)(schema.virtuals, virtual))
throw new Error("KeywordsMiddleware: Error setting up middleware. Virtual ".concat(virtual, " not present in schema"));
}
}
if ((0, lodash_1.isNil)(options.paths) && (0, lodash_1.isNil)(options.virtuals))
throw new Error("KeywordsMiddleware: Error setting up middleware. Must provide at least one of the following options: paths, virtuals");
if (!(0, lodash_1.isNil)(options.logging)) {
if (!(0, lodash_1.isBoolean)(options.logging))
throw new Error("KeywordsMiddleware: Error setting up middleware. Logging must be boolean");
}
if (!(0, lodash_1.isNil)(options.onNew)) {
if (!(0, lodash_1.isBoolean)(options.onNew))
throw new Error("KeywordsMiddleware: Error setting up middleware. OnNew must be boolean");
}
if (!(0, lodash_1.isNil)(options.onUpdate)) {
if (!(0, lodash_1.isBoolean)(options.onUpdate))
throw new Error("KeywordsMiddleware: Error setting up middleware. OnUpdate must be boolean");
}
if (!(0, lodash_1.isNil)(options.onNew) && !(0, lodash_1.isNil)(options.onUpdate)) {
if (!options.onNew && !options.onUpdate)
console.warn("KeywordsMiddleware: Warning. Keywords are disabled for both operation hooks (onNew, onUpdate)");
}
var paths = (0, lodash_1.isNil)(options.paths) ? [] : __spreadArray([], options.paths, true);
var virtuals = (0, lodash_1.isNil)(options.virtuals) ? {} : __assign({}, options.virtuals);
var omit = (0, lodash_1.isNil)(options.omit) || (0, lodash_1.isEmpty)(options.omit) ? constants_1.DEFAULT_KEYWORD_OPTIONS.omit : __spreadArray([], options.omit, true);
var logging = (0, lodash_1.isNil)(options.logging) ? constants_1.DEFAULT_KEYWORD_OPTIONS.logging : options.logging;
var onNew = (0, lodash_1.isNil)(options.onNew) ? constants_1.DEFAULT_KEYWORD_OPTIONS.onNew : options.onNew;
var onUpdate = (0, lodash_1.isNil)(options.onUpdate) ? constants_1.DEFAULT_KEYWORD_OPTIONS.onUpdate : options.onUpdate;
return { paths: paths, virtuals: virtuals, omit: omit, logging: logging, onNew: onNew, onUpdate: onUpdate };
};
exports.validateOptions = validateOptions;
//# sourceMappingURL=validate-options.helper.js.map