MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/snap.cafsinfotech.in/node_modules/@sentry/core/esm/utils/prepareEvent.js.map
{"version":3,"file":"prepareEvent.js","sources":["../../../src/utils/prepareEvent.ts"],"sourcesContent":["import type { Client, ClientOptions, Event, EventHint, StackFrame, StackParser } from '@sentry/types';\nimport { dateTimestampInSeconds, GLOBAL_OBJ, normalize, resolvedSyncPromise, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors';\nimport { Scope } from '../scope';\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n  options: ClientOptions,\n  event: Event,\n  hint: EventHint,\n  scope?: Scope,\n  client?: Client,\n): PromiseLike<Event | null> {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n  const prepared: Event = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n\n  // If we have scope given to us, use it as the base for further modifications.\n  // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n  let finalScope = scope;\n  if (hint.captureContext) {\n    finalScope = Scope.clone(finalScope).update(hint.captureContext);\n  }\n\n  // We prepare the result here with a resolved Event.\n  let result = resolvedSyncPromise<Event | null>(prepared);\n\n  const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Hub.addEventProcessor} gets the finished prepared event.\n  //\n  // We need to check for the existence of `finalScope.getAttachments`\n  // because `getAttachments` can be undefined if users are using an older version\n  // of `@sentry/core` that does not have the `getAttachments` method.\n  // See: https://github.com/getsentry/sentry-javascript/issues/5229\n  if (finalScope) {\n    // Collect attachments from the hint and scope\n    if (finalScope.getAttachments) {\n      const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n      if (attachments.length) {\n        hint.attachments = attachments;\n      }\n    }\n\n    // In case we have a hub we reassign it.\n    result = finalScope.applyToEvent(prepared, hint, clientEventProcessors);\n  } else {\n    // Apply client & global event processors even if there is no scope\n    // TODO (v8): Update the order to be Global > Client\n    result = notifyEventProcessors([...clientEventProcessors, ...getGlobalEventProcessors()], prepared, hint);\n  }\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\n\n/**\n *  Enhances event using the client configuration.\n *  It takes care of all \"static\" values like environment, release and `dist`,\n *  as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n  const { environment, release, dist, maxValueLength = 250 } = options;\n\n  if (!('environment' in event)) {\n    event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n  }\n\n  if (event.release === undefined && release !== undefined) {\n    event.release = release;\n  }\n\n  if (event.dist === undefined && dist !== undefined) {\n    event.dist = dist;\n  }\n\n  if (event.message) {\n    event.message = truncate(event.message, maxValueLength);\n  }\n\n  const exception = event.exception && event.exception.values && event.exception.values[0];\n  if (exception && exception.value) {\n    exception.value = truncate(exception.value, maxValueLength);\n  }\n\n  const request = event.request;\n  if (request && request.url) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n  if (!debugIdMap) {\n    return;\n  }\n\n  let debugIdStackFramesCache: Map<string, StackFrame[]>;\n  const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n  if (cachedDebugIdStackFrameCache) {\n    debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n  } else {\n    debugIdStackFramesCache = new Map<string, StackFrame[]>();\n    debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n  }\n\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = Object.keys(debugIdMap).reduce<Record<string, string>>((acc, debugIdStackTrace) => {\n    let parsedStack: StackFrame[];\n    const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n    if (cachedParsedStack) {\n      parsedStack = cachedParsedStack;\n    } else {\n      parsedStack = stackParser(debugIdStackTrace);\n      debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n    }\n\n    for (let i = parsedStack.length - 1; i >= 0; i--) {\n      const stackFrame = parsedStack[i];\n      if (stackFrame.filename) {\n        acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n        break;\n      }\n    }\n    return acc;\n  }, {});\n\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event!.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.filename) {\n          frame.debug_id = filenameDebugIdMap[frame.filename];\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap: Record<string, string> = {};\n  try {\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    event.exception!.values!.forEach(exception => {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      exception.stacktrace!.frames!.forEach(frame => {\n        if (frame.debug_id) {\n          if (frame.abs_path) {\n            filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n          } else if (frame.filename) {\n            filenameDebugIdMap[frame.filename] = frame.debug_id;\n          }\n          delete frame.debug_id;\n        }\n      });\n    });\n  } catch (e) {\n    // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n  }\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.keys(filenameDebugIdMap).forEach(filename => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id: filenameDebugIdMap[filename],\n    });\n  });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n  }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n  if (!event) {\n    return null;\n  }\n\n  const normalized: Event = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\n  // event.contexts.trace stores information about a Transaction. Similarly,\n  // event.spans[] stores information about child Spans. Given that a\n  // Transaction is conceptually a Span, normalization should apply to both\n  // Transactions and Spans consistently.\n  // For now the decision is to skip normalization of Transactions and Spans,\n  // so this block overwrites the normalized event to add back the original\n  // Transaction information prior to normalization.\n  if (event.contexts && event.contexts.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n\n    // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n\n  // event.spans[].data may contain circular/dangerous data so we need to normalize it\n  if (event.spans) {\n    normalized.spans = event.spans.map(span => {\n      // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n      if (span.data) {\n        span.data = normalize(span.data, depth, maxBreadth);\n      }\n      return span;\n    });\n  }\n\n  return normalized;\n}\n"],"names":[],"mappings":"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"}