"use strict";
/* Socket Lib - Built with esbuild */
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var caller_info_exports = {};
__export(caller_info_exports, {
  getCallerInfo: () => getCallerInfo
});
module.exports = __toCommonJS(caller_info_exports);
var import_predicates = require("../objects/predicates");
var import_string = require("../primordials/string");
// @__NO_SIDE_EFFECTS__
function getCallerInfo(stackOffset = 3) {
  let name = "";
  const captureStackTrace = Error.captureStackTrace;
  if (typeof captureStackTrace === "function") {
    const obj = {};
    captureStackTrace(obj, getCallerInfo);
    const stack = obj.stack;
    if (typeof stack === "string") {
      let lineCount = 0;
      let lineStart = 0;
      for (let i = 0, { length } = stack; i < length; i += 1) {
        if (stack[i] === "\n") {
          lineCount += 1;
          if (lineCount < stackOffset) {
            lineStart = i + 1;
          } else {
            const line = stack.slice(lineStart, i).trimStart();
            const match = /(?<=^at\s+).*?(?=\s+\(|$)/.exec(line)?.[0];
            if (match) {
              name = match.replace(/^(?:async|bound|get|new|set)\s+/, "");
              if ((0, import_string.StringPrototypeStartsWith)(name, "Object.")) {
                const afterDot = (0, import_string.StringPrototypeSlice)(name, 7);
                if (!(0, import_predicates.hasOwn)(Object, afterDot)) {
                  name = afterDot;
                }
              }
            }
            break;
          }
        }
      }
    }
  }
  return name;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  getCallerInfo
});
