deno.land / x / mongoose@6.7.5 / lib / helpers / schema / applyPlugins.js

applyPlugins.js
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
'use strict';
module.exports = function applyPlugins(schema, plugins, options, cacheKey) { if (schema[cacheKey]) { return; } schema[cacheKey] = true;
if (!options || !options.skipTopLevel) { let pluginTags = null; for (const plugin of plugins) { const tags = plugin[1] == null ? null : plugin[1].tags; if (!Array.isArray(tags)) { schema.plugin(plugin[0], plugin[1]); continue; }
pluginTags = pluginTags || new Set(schema.options.pluginTags || []); if (!tags.find(tag => pluginTags.has(tag))) { continue; } schema.plugin(plugin[0], plugin[1]); } }
options = Object.assign({}, options); delete options.skipTopLevel;
if (options.applyPluginsToChildSchemas !== false) { for (const path of Object.keys(schema.paths)) { const type = schema.paths[path]; if (type.schema != null) { applyPlugins(type.schema, plugins, options, cacheKey);
// Recompile schema because plugins may have changed it, see gh-7572 type.caster.prototype.$__setSchema(type.schema); } } }
const discriminators = schema.discriminators; if (discriminators == null) { return; }
const applyPluginsToDiscriminators = options.applyPluginsToDiscriminators;
const keys = Object.keys(discriminators); for (const discriminatorKey of keys) { const discriminatorSchema = discriminators[discriminatorKey];
applyPlugins(discriminatorSchema, plugins, { skipTopLevel: !applyPluginsToDiscriminators }, cacheKey); }};
mongoose

Version Info

Tagged at
a year ago