import { _INTERNAL_sanitizeSqlQuery, _INTERNAL_getSqlQuerySummary, getClient, startSpan, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core'; import { targetsCloudflareInternalTable } from '../utils/internalSqlQuery.js'; function instrumentSqlStorage(sql) { return new Proxy(sql, { get(target, prop, _receiver) { const original = Reflect.get(target, prop, target); if (prop !== "exec" || typeof original !== "function") { return original; } return function(...args) { const [query, ...bindings] = args; const sanitizedQuery = _INTERNAL_sanitizeSqlQuery(query); const querySummary = _INTERNAL_getSqlQuerySummary(sanitizedQuery); const allowlist = getClient()?.getOptions()?.durableObjectSqlSpanAllowlist; if (targetsCloudflareInternalTable(querySummary, allowlist, sanitizedQuery)) { return original.apply(target, args); } return startSpan( { op: "db.query", name: querySummary || sanitizedQuery, attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: "auto.db.cloudflare.durable_object.sql", "db.system.name": "cloudflare-durable-object-sql", "db.operation.name": "exec", "db.query.text": sanitizedQuery, "db.query.summary": querySummary, "cloudflare.durable_object.query.bindings": bindings.length } }, () => original.apply(target, args) ); }; } }); } export { instrumentSqlStorage }; //# sourceMappingURL=instrumentSqlStorage.js.map