{"version":3,"file":"property-exists.mjs","names":[],"sources":["../src/property-exists.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n                       🗲 Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website:                  https://stormsoftware.com\n Repository:               https://github.com/storm-software/stryke\n Documentation:            https://docs.stormsoftware.com/projects/stryke\n Contact:                  https://stormsoftware.com/contact\n\n SPDX-License-Identifier:  Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { isObject } from \"./is-object\";\n\n/**\n * Check if the provided object has the provided property\n *\n * @param object - The object to check\n * @param propertyKey - The property to check\n * @returns An indicator specifying if the object has the provided property\n */\nexport const propertyExists = (object: any, propertyKey: PropertyKey) => {\n  try {\n    return isObject(object) && propertyKey in object;\n  } catch {\n    return false;\n  }\n};\n\n/**\n * Check if the provided object has the provided property and if it's safe to merge\n *\n * @param object - The object to check\n * @param propertyKey - The property to check\n * @returns An indicator specifying if the object has the provided property and if it's safe to merge\n */\nexport const propertyUnsafe = (object: any, propertyKey: PropertyKey) => {\n  return (\n    propertyExists(object, propertyKey) && // Properties are safe to merge if they don't exist in the target yet,\n    !(\n      Object.hasOwnProperty.call(object, propertyKey) && // unsafe if they exist up the prototype chain,\n      Object.propertyIsEnumerable.call(object, propertyKey)\n    )\n  ); // and also unsafe if they're non-enumerable.\n};\n"],"mappings":";;;;;;;;;;AA2BA,MAAa,kBAAkB,QAAa,gBAA6B;AACvE,KAAI;AACF,SAAO,SAAS,OAAO,IAAI,eAAe;SACpC;AACN,SAAO;;;;;;;;;;AAWX,MAAa,kBAAkB,QAAa,gBAA6B;AACvE,QACE,eAAe,QAAQ,YAAY,IACnC,EACE,OAAO,eAAe,KAAK,QAAQ,YAAY,IAC/C,OAAO,qBAAqB,KAAK,QAAQ,YAAY"}