UNPKG

@geekbears/gb-mongoose-keywords-plugin

Version:
62 lines 3.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateOptions = void 0; const lodash_1 = require("lodash"); const 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 options with defaults applied */ const validateOptions = (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 (const field of options.paths) { 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 ${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 (const virtual of (0, lodash_1.keys)(options.virtuals)) { 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 ${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)`); } const paths = (0, lodash_1.isNil)(options.paths) ? [] : [...options.paths]; const virtuals = (0, lodash_1.isNil)(options.virtuals) ? {} : { ...options.virtuals }; const omit = (0, lodash_1.isNil)(options.omit) || (0, lodash_1.isEmpty)(options.omit) ? constants_1.DEFAULT_KEYWORD_OPTIONS.omit : [...options.omit]; const logging = (0, lodash_1.isNil)(options.logging) ? constants_1.DEFAULT_KEYWORD_OPTIONS.logging : options.logging; const onNew = (0, lodash_1.isNil)(options.onNew) ? constants_1.DEFAULT_KEYWORD_OPTIONS.onNew : options.onNew; const onUpdate = (0, lodash_1.isNil)(options.onUpdate) ? constants_1.DEFAULT_KEYWORD_OPTIONS.onUpdate : options.onUpdate; return { paths, virtuals, omit, logging, onNew, onUpdate }; }; exports.validateOptions = validateOptions; //# sourceMappingURL=validate-options.helper.js.map