/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/mongoose-lean-virtuals@2.1.0/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const mpath=require("mpath"),documentParentsMap=new WeakMap,attachVirtualsFnMap=new WeakMap;function attachVirtualsMiddleware(t,n={}){return function(e){let a=this._mongooseOptions.lean&&null!=this._mongooseOptions.lean.virtuals?this._mongooseOptions.lean.virtuals:n.enabledByDefault;if(a){if(Array.isArray(a)){const t=a;a=[];const n=t.length;for(let e=0;e<n;++e)a.push(t[e].split("."))}attachVirtuals.call(this,t,e,a)}}}function attachVirtuals(t,n,e,a){if(null==n)return n;let r=e,l=null;if(Array.isArray(e)){r=[],l=[];const t=e.length;for(let n=0;n<t;++n){const t=e[n];1===t.length?l.push(t[0]):r.push(t)}}let i=!1;const s=()=>{i||(i=!0,applyVirtualsToResult(t,n,l))};return addToParentMap(n,a,s),applyVirtualsToChildren(this,t,n,r,a),s()}function applyVirtualsToResult(t,n,e){if(Array.isArray(n)){const a=n.length;for(let r=0;r<a;++r)attachVirtualsToDoc(t,n[r],e);return n}return attachVirtualsToDoc(t,n,e)}function addToParentMap(t,n,e){if(null!=t)if(Array.isArray(n))for(let e=0;e<n.length;++e)addToParentMap(t[e],n[e]);else if(Array.isArray(t))for(const a of t)null!=a&&"object"==typeof a&&(documentParentsMap.set(a,n),attachVirtualsFnMap.set(a,e));else"object"==typeof t&&(documentParentsMap.set(t,n),attachVirtualsFnMap.set(t,e))}function applyVirtualsToChildren(t,n,e,a,r){const l=n.childSchemas.length;let i=!1;for(let r=0;r<l;++r){const l=n.childSchemas[r].model.path,s=n.childSchemas[r].schema;if(!l)continue;const o=mpath.get(l,e);if(null==o||Array.isArray(o)&&0===o.flat(1/0).length)continue;let c=null;if(Array.isArray(a)){c=[];const t=a.length;for(let n=0;n<t;++n){const t=a[n];t[0]==l&&c.push(t.slice(1))}if(0===c.length)continue}attachVirtuals.call(t,s,o,c,e),i=!0}a&&a.length&&!i&&attachVirtualsToDoc(n,e,a.map((function(t){return t.join(".")})),r)}function attachVirtualsToDoc(t,n,e){if(null==n||"object"!=typeof n)return;if(Array.isArray(n)){for(let a=0;a<n.length;++a)attachVirtualsToDoc(t,n[a],e);return}if(t.discriminators&&Object.keys(t.discriminators).length>0)for(const e of Object.keys(t.discriminators)){const a=t.discriminators[e],r=a.discriminatorMapping.key,l=a.discriminatorMapping.value;if(n[r]==l){t=a;break}}null==e&&(e=Object.keys(t.virtuals));const a=e.length;for(let r=0;r<a;++r){const a=e[r];if(null==t.virtuals[a])continue;const l=t.virtuals[a],i=Array.isArray(a)?a:a.split(".");let s=n;for(let t=0;t<i.length-1;++t)s[i[t]]=i[t]in s?s[i[t]]:{},s=s[i[t]];let o=l.applyGetters(s[i[i.length-1]],n);s[i[i.length-1]]=o}}module.exports=function(t,n){const e=attachVirtualsMiddleware(t,n);t.pre(["find","findOne","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],(function(){const t=this;this._transforms.unshift((function(n){return e.call(t,n),n}))}))},module.exports.parent=function(t){if(null==t)return;const n=documentParentsMap.get(t);return attachVirtualsFnMap.get(n)&&attachVirtualsFnMap.get(n)(),n},module.exports.defaults=module.exports,module.exports.mongooseLeanVirtuals=module.exports;
//# sourceMappingURL=/sm/e8b676884e9f5cdea5e031f1522d1e8ccf2705bec960db0c02809b5f90107fe9.map