"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 uncurry_exports = {};
__export(uncurry_exports, {
  applyBind: () => applyBind,
  applySafe: () => applySafe,
  bindCall: () => bindCall,
  uncurryThis: () => uncurryThis,
  weakRefSafe: () => weakRefSafe
});
module.exports = __toCommonJS(uncurry_exports);
var import_detect = require("../smol/detect");
const _smolUtil = (0, import_detect.getSmolUtil)();
const { apply, bind, call } = Function.prototype;
const uncurryThis = _smolUtil?.uncurryThis ?? bind.bind(call);
const applyBind = _smolUtil?.applyBind ?? bind.bind(apply);
const _applyBoundForSafe = applyBind;
const applySafe = _smolUtil?.applySafe ?? ((fn) => {
  const apply2 = _applyBoundForSafe(fn);
  return (self, args) => {
    try {
      return apply2(self, args);
    } catch {
      return void 0;
    }
  };
});
const _bindCallFallback = ((fn, thisArg, ...presetArgs) => Function.prototype.bind.apply(fn, [
  thisArg,
  ...presetArgs
]));
const bindCall = _smolUtil?.bindCall ?? _bindCallFallback;
const weakRefSafe = _smolUtil?.weakRefSafe ?? ((target) => {
  try {
    return new WeakRef(target);
  } catch {
    return void 0;
  }
});
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  applyBind,
  applySafe,
  bindCall,
  uncurryThis,
  weakRefSafe
});
