{"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,IAAI,GACnC;CACH,OAAO,IAAI,MAAM,QAAQ,EACvB,IAAI,KAAK,MAAM,UAAU;EACvB,MAAM,QAAQ,QAAQ,IAAI,KAAK,MAAM,QAAQ;EAE7C,IAAI,OAAO,UAAU,YACnB,OAAO;EAGT,IAAI,eAAe,IAAI,IAAc,GACnC,OAAO;EAGT,QAAQ,GAAG,SAAoB;GAC7B,IAAI;IACF,OAAQ,MAA0C,MAAM,KAAK,IAAI;GACnE,SAAS,GAAG;IACV,MAAM,UAAU,aAAa,QAAQ,EAAE,UAAU;IACjD,KAAK,MAAM,GAAG,OAAO,IAAI,EAAE,IAAI,SAAS;IAGxC,MAAM,iBAAkB,aACtB;IAEF,IAAI,OAAO,mBAAmB,YAC5B,OAAQ,eAAmD,MACzD,cACA,IACF;IAEF;GACF;EACF;CACF,EACF,CAAC;AACH"}