{"version":3,"file":"createSafeProxy.cjs","names":[],"sources":["../../../src/utils/createSafeProxy/createSafeProxy.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\n\n/**\n * Creates a proxy that wraps all method calls in try-catch.\n * On error, logs via diag and returns the NoOp manager's value.\n *\n * @param target - The object to wrap (typically a ProxyManager)\n * @param noOpFallback - A NoOp implementation to get fallback return values\n * @param diag - Logger for error reporting\n * @param excludeMethods - Methods to exclude from wrapping (e.g., internal methods)\n */\nexport function createSafeProxy<T extends object, F extends object>(\n  target: T,\n  noOpFallback: F,\n  diag: DiagLogger,\n  excludeMethods: Set<string> = new Set(),\n): T {\n  return new Proxy(target, {\n    get(obj, prop, receiver) {\n      const value = Reflect.get(obj, prop, receiver);\n\n      if (typeof value !== 'function') {\n        return value;\n      }\n\n      if (excludeMethods.has(prop as string)) {\n        return value;\n      }\n\n      return (...args: unknown[]) => {\n        try {\n          return (value as (...args: unknown[]) => unknown).apply(obj, args);\n        } catch (e) {\n          const message = e instanceof Error ? e.message : 'Unknown error';\n          diag.error(`${String(prop)}: ${message}`);\n\n          // Get fallback from NoOp manager\n          const fallbackMethod = (noOpFallback as Record<string, unknown>)[\n            prop as string\n          ];\n          if (typeof fallbackMethod === 'function') {\n            return (fallbackMethod as (...args: unknown[]) => unknown).apply(\n              noOpFallback,\n              args,\n            );\n          }\n          return undefined;\n        }\n      };\n    },\n  });\n}\n"],"mappings":";;;;;;;;;;;AAWA,SAAgB,gBACd,QACA,cACA,MACA,iCAA8B,IAAI,KAAK,EACpC;AACH,QAAO,IAAI,MAAM,QAAQ,EACvB,IAAI,KAAK,MAAM,UAAU;EACvB,MAAM,QAAQ,QAAQ,IAAI,KAAK,MAAM,SAAS;AAE9C,MAAI,OAAO,UAAU,WACnB,QAAO;AAGT,MAAI,eAAe,IAAI,KAAe,CACpC,QAAO;AAGT,UAAQ,GAAG,SAAoB;AAC7B,OAAI;AACF,WAAQ,MAA0C,MAAM,KAAK,KAAK;YAC3D,GAAG;IACV,MAAM,UAAU,aAAa,QAAQ,EAAE,UAAU;AACjD,SAAK,MAAM,GAAG,OAAO,KAAK,CAAC,IAAI,UAAU;IAGzC,MAAM,iBAAkB,aACtB;AAEF,QAAI,OAAO,mBAAmB,WAC5B,QAAQ,eAAmD,MACzD,cACA,KACD;AAEH;;;IAIP,CAAC"}