All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.build.cjs.integrations.requestdata.js.map Maven / Gradle / Ivy

There is a newer version: 8.39.0
Show newest version
{"version":3,"file":"requestdata.js","sources":["../../../src/integrations/requestdata.ts"],"sourcesContent":["import type { IntegrationFn } from '@sentry/types';\nimport type { AddRequestDataToEventOptions, TransactionNamingScheme } from '@sentry/utils';\nimport { addRequestDataToEvent } from '@sentry/utils';\nimport { defineIntegration } from '../integration';\n\nexport type RequestDataIntegrationOptions = {\n  /**\n   * Controls what data is pulled from the request and added to the event\n   */\n  include?: {\n    cookies?: boolean;\n    data?: boolean;\n    headers?: boolean;\n    ip?: boolean;\n    query_string?: boolean;\n    url?: boolean;\n    user?:\n      | boolean\n      | {\n          id?: boolean;\n          username?: boolean;\n          email?: boolean;\n        };\n  };\n\n  /** Whether to identify transactions by parameterized path, parameterized path with method, or handler name */\n  transactionNamingScheme?: TransactionNamingScheme;\n};\n\nconst DEFAULT_OPTIONS = {\n  include: {\n    cookies: true,\n    data: true,\n    headers: true,\n    ip: false,\n    query_string: true,\n    url: true,\n    user: {\n      id: true,\n      username: true,\n      email: true,\n    },\n  },\n  transactionNamingScheme: 'methodPath' as const,\n};\n\nconst INTEGRATION_NAME = 'RequestData';\n\nconst _requestDataIntegration = ((options: RequestDataIntegrationOptions = {}) => {\n  const _options: Required = {\n    ...DEFAULT_OPTIONS,\n    ...options,\n    include: {\n      ...DEFAULT_OPTIONS.include,\n      ...options.include,\n      user:\n        options.include && typeof options.include.user === 'boolean'\n          ? options.include.user\n          : {\n              ...DEFAULT_OPTIONS.include.user,\n              // Unclear why TS still thinks `options.include.user` could be a boolean at this point\n              ...((options.include || {}).user as Record),\n            },\n    },\n  };\n\n  return {\n    name: INTEGRATION_NAME,\n    processEvent(event) {\n      // Note: In the long run, most of the logic here should probably move into the request data utility functions. For\n      // the moment it lives here, though, until https://github.com/getsentry/sentry-javascript/issues/5718 is addressed.\n      // (TL;DR: Those functions touch many parts of the repo in many different ways, and need to be cleaned up. Once\n      // that's happened, it will be easier to add this logic in without worrying about unexpected side effects.)\n\n      const { sdkProcessingMetadata = {} } = event;\n      const req = sdkProcessingMetadata.request;\n\n      if (!req) {\n        return event;\n      }\n\n      const addRequestDataOptions = convertReqDataIntegrationOptsToAddReqDataOpts(_options);\n\n      return addRequestDataToEvent(event, req, addRequestDataOptions);\n    },\n  };\n}) satisfies IntegrationFn;\n\n/**\n * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core`\n * so it can be used in cross-platform SDKs like `@sentry/nextjs`.\n */\nexport const requestDataIntegration = defineIntegration(_requestDataIntegration);\n\n/** Convert this integration's options to match what `addRequestDataToEvent` expects */\n/** TODO: Can possibly be deleted once https://github.com/getsentry/sentry-javascript/issues/5718 is fixed */\nfunction convertReqDataIntegrationOptsToAddReqDataOpts(\n  integrationOptions: Required,\n): AddRequestDataToEventOptions {\n  const {\n    transactionNamingScheme,\n    include: { ip, user, ...requestOptions },\n  } = integrationOptions;\n\n  const requestIncludeKeys: string[] = ['method'];\n  for (const [key, value] of Object.entries(requestOptions)) {\n    if (value) {\n      requestIncludeKeys.push(key);\n    }\n  }\n\n  let addReqDataUserOpt;\n  if (user === undefined) {\n    addReqDataUserOpt = true;\n  } else if (typeof user === 'boolean') {\n    addReqDataUserOpt = user;\n  } else {\n    const userIncludeKeys: string[] = [];\n    for (const [key, value] of Object.entries(user)) {\n      if (value) {\n        userIncludeKeys.push(key);\n      }\n    }\n    addReqDataUserOpt = userIncludeKeys;\n  }\n\n  return {\n    include: {\n      ip,\n      user: addReqDataUserOpt,\n      request: requestIncludeKeys.length !== 0 ? requestIncludeKeys : undefined,\n      transaction: transactionNamingScheme,\n    },\n  };\n}\n"],"names":["addRequestDataToEvent","defineIntegration"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy