import { __module as IsConstructor } from "../../../_virtual/IsConstructor.js";
import { __require as requireGetIntrinsic } from "../GetIntrinsic.js";
import { __require as requireDefinePropertyOrThrow } from "./DefinePropertyOrThrow.js";
var hasRequiredIsConstructor;
function requireIsConstructor() {
  if (hasRequiredIsConstructor) return IsConstructor.exports;
  hasRequiredIsConstructor = 1;
  var GetIntrinsic = requireGetIntrinsic();
  var $construct = GetIntrinsic("%Reflect.construct%", true);
  var DefinePropertyOrThrow = requireDefinePropertyOrThrow();
  try {
    DefinePropertyOrThrow({}, "", { "[[Get]]": function() {
    } });
  } catch (e) {
    DefinePropertyOrThrow = null;
  }
  if (DefinePropertyOrThrow && $construct) {
    var isConstructorMarker = {};
    var badArrayLike = {};
    DefinePropertyOrThrow(badArrayLike, "length", {
      "[[Get]]": function() {
        throw isConstructorMarker;
      },
      "[[Enumerable]]": true
    });
    IsConstructor.exports = function IsConstructor2(argument) {
      try {
        $construct(argument, badArrayLike);
      } catch (err) {
        return err === isConstructorMarker;
      }
    };
  } else {
    IsConstructor.exports = function IsConstructor2(argument) {
      return typeof argument === "function" && !!argument.prototype;
    };
  }
  return IsConstructor.exports;
}
export {
  requireIsConstructor as __require
};
