MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/ai_allyindian_com/node_modules/mongoose/lib/helpers/get.js
'use strict';

/**
 * Simplified lodash.get to work around the annoying null quirk. See:
 * https://github.com/lodash/lodash/issues/3659
 * @api private
 */

module.exports = function get(obj, path, def) {
  let parts;
  let isPathArray = false;
  if (typeof path === 'string') {
    if (path.indexOf('.') === -1) {
      const _v = getProperty(obj, path);
      if (_v == null) {
        return def;
      }
      return _v;
    }

    parts = path.split('.');
  } else {
    isPathArray = true;
    parts = path;

    if (parts.length === 1) {
      const _v = getProperty(obj, parts[0]);
      if (_v == null) {
        return def;
      }
      return _v;
    }
  }
  let rest = path;
  let cur = obj;
  for (const part of parts) {
    if (cur == null) {
      return def;
    }

    // `lib/cast.js` depends on being able to get dotted paths in updates,
    // like `{ $set: { 'a.b': 42 } }`
    if (!isPathArray && cur[rest] != null) {
      return cur[rest];
    }

    cur = getProperty(cur, part);

    if (!isPathArray) {
      rest = rest.substr(part.length + 1);
    }
  }

  return cur == null ? def : cur;
};

function getProperty(obj, prop) {
  if (obj == null) {
    return obj;
  }
  if (obj instanceof Map) {
    return obj.get(prop);
  }
  return obj[prop];
}