UNPKG

@geekbears/gb-mongoose-keywords-plugin

Version:
84 lines 4.86 kB
"use strict"; 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