Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const core = require('@sentry/core'); const isBinding = require('../../utils/isBinding.js'); const instrumentD1 = require('./instrumentD1.js'); const rpcMeta = require('../../utils/rpcMeta.js'); const rpcPropagation = require('../../utils/rpcPropagation.js'); const instrumentDurableObjectNamespace = require('../instrumentDurableObjectNamespace.js'); const instrumentFetcher = require('./instrumentFetcher.js'); const instrumentQueueProducer = require('./instrumentQueueProducer.js'); const instrumentR2 = require('./instrumentR2.js'); const instrumentRateLimit = require('./instrumentRateLimit.js'); function isProxyable(item) { return core.isObjectLike(item) || typeof item === "function"; } const instrumentedBindings = /* @__PURE__ */ new WeakMap(); function instrumentEnv(env, options) { if (!env || typeof env !== "object") { return env; } const shouldPropagateRpcTrace = rpcPropagation.createRpcPropagationResolver(options); return new Proxy(env, { get(target, prop, receiver) { const item = Reflect.get(target, prop, receiver); if (!isProxyable(item)) { return item; } const cached = instrumentedBindings.get(item); if (cached) { return cached; } if (isBinding.isD1Database(item)) { const instrumented = instrumentD1.instrumentD1(item); instrumentedBindings.set(item, instrumented); return instrumented; } if (isBinding.isQueue(item)) { const bindingName = typeof prop === "string" ? prop : String(prop); const instrumented = instrumentQueueProducer.instrumentQueueProducer(item, bindingName); instrumentedBindings.set(item, instrumented); return instrumented; } if (isBinding.isR2Bucket(item)) { const bindingName = typeof prop === "string" ? prop : String(prop); const instrumented = instrumentR2.instrumentR2Bucket(item, bindingName); instrumentedBindings.set(item, instrumented); return instrumented; } if (isBinding.isRateLimit(item)) { const bindingName = typeof prop === "string" ? prop : String(prop); const instrumented = instrumentRateLimit.instrumentRateLimit(item, bindingName); instrumentedBindings.set(item, instrumented); return instrumented; } if (isBinding.isAiBinding(item)) { const instrumented = core.instrumentWorkersAiClient(item); instrumentedBindings.set(item, instrumented); return instrumented; } const propagateRpcTrace = shouldPropagateRpcTrace(String(prop)); if (isBinding.isDurableObjectNamespace(item)) { const instrumented = instrumentDurableObjectNamespace.instrumentDurableObjectNamespace(item, propagateRpcTrace); instrumentedBindings.set(item, instrumented); return instrumented; } if (isBinding.isJSRPC(item)) { const instrumented = new Proxy(item, { get(target2, p) { const value = Reflect.get(target2, p); if (p === "fetch" && typeof value === "function") { return instrumentFetcher.instrumentFetcher((...args) => Reflect.apply(value, target2, args)); } if (propagateRpcTrace && typeof value === "function" && typeof p === "string" && !instrumentDurableObjectNamespace.STUB_NON_RPC_METHODS.has(p)) { return (...args) => Reflect.apply(value, target2, rpcMeta.appendRpcMeta(args)); } return value; } }); instrumentedBindings.set(item, instrumented); return instrumented; } return item; } }); } exports.instrumentEnv = instrumentEnv; //# sourceMappingURL=instrumentEnv.js.map