{"version":3,"file":"micro-sentry-core.mjs","sources":["../../../../libs/core/src/lib/models/severity.ts","../../../../libs/core/src/lib/consts/consts.ts","../../../../libs/core/src/lib/helpers/compute-stack-trace.ts","../../../../libs/core/src/lib/helpers/uuid4.ts","../../../../libs/core/src/lib/service/micro-sentry-client.ts","../../../../libs/core/src/index.ts","../../../../libs/core/src/micro-sentry-core.ts"],"sourcesContent":["export enum Severity {\n  fatal = 'fatal',\n  error = 'error',\n  warning = 'warning',\n  log = 'log',\n  info = 'info',\n  debug = 'debug',\n  critical = 'critical',\n}\n","// @for-internal-use\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nexport const CHROME_REGEXP =\n  /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nexport const GECKO_REGEXP =\n  /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nexport const WINJS_REGEXP =\n  /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nexport const UNKNOWN_FUNCTION = '?';\nexport const AUTH_HEADER = 'X-Sentry-Auth';\n\nexport const DSN_REGEXP =\n  //|protocol     |public    |secret      |host    |port       |projectId\n  //|\n  /^(?:(\\w+):)\\/\\/(?:([\\w-]+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n","// @for-internal-use\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { SentryException, SentryFrame } from '../models/models';\nimport {\n  CHROME_REGEXP,\n  GECKO_REGEXP,\n  UNKNOWN_FUNCTION,\n  WINJS_REGEXP,\n} from '../consts/consts';\n\nfunction computeStackTraceFromStackProp(ex: Error): SentryException | null {\n  if (!ex.stack) {\n    return null;\n  }\n\n  const stack = [];\n  const lines = ex.stack.split('\\n');\n  let parts;\n  let element: SentryFrame;\n\n  for (let i = 0; i < lines.length; ++i) {\n    // tslint:disable-next-line:no-conditional-assignment\n    if ((parts = CHROME_REGEXP.exec(lines[i]))) {\n      element = {\n        // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n        // prefix here seems like the quickest solution for now.\n        filename:\n          parts[2] && parts[2].indexOf('address at ') === 0\n            ? parts[2].substr('address at '.length)\n            : parts[2],\n        function: parts[1] || UNKNOWN_FUNCTION,\n        lineno: parts[3] ? +parts[3] : null,\n        colno: parts[4] ? +parts[4] : null,\n      };\n      // tslint:disable-next-line:no-conditional-assignment\n    } else if ((parts = WINJS_REGEXP.exec(lines[i]))) {\n      element = {\n        filename: parts[2],\n        function: parts[1] || UNKNOWN_FUNCTION,\n        lineno: +parts[3],\n        colno: parts[4] ? +parts[4] : null,\n      };\n      // tslint:disable-next-line:no-conditional-assignment\n    } else if ((parts = GECKO_REGEXP.exec(lines[i]))) {\n      if (i === 0 && !parts[5] && (ex as any).columnNumber !== void 0) {\n        // FireFox uses this awesome columnNumber property for its top frame\n        // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n        // so adding 1\n        // NOTE: this hack doesn't work if top-most frame is eval\n        // TODO: why do not we include column into an interface?\n        (stack[0] as any).column = ((ex as any).columnNumber as number) + 1;\n      }\n\n      element = {\n        filename: parts[3],\n        function: parts[1] || UNKNOWN_FUNCTION,\n        lineno: parts[4] ? +parts[4] : null,\n        colno: parts[5] ? +parts[5] : null,\n      };\n    } else {\n      continue;\n    }\n\n    if (!element.function && element.lineno) {\n      element.function = UNKNOWN_FUNCTION;\n    }\n\n    stack.push(element);\n  }\n\n  if (!stack.length) {\n    return null;\n  }\n\n  return {\n    value: extractMessage(ex),\n    type: ex.name,\n    stacktrace: { frames: stack.reverse() },\n  };\n}\n\nfunction extractMessage(ex: Error): string {\n  const message = (ex && ex.message) || 'No error message';\n\n  return message.split('\\n').filter((s) => !!s)[0];\n}\n\nexport function computeStackTrace(ex: Error): SentryException {\n  // tslint:disable:no-unsafe-any\n\n  try {\n    const stack = computeStackTraceFromStackProp(ex);\n\n    if (stack) {\n      return stack;\n    }\n  } catch (e) {\n    //\n  }\n\n  return {\n    value: extractMessage(ex),\n    type: ex && ex.name,\n    stacktrace: { frames: [] },\n  };\n}\n","/**\n * @description Hexadecimal string representing a uuid4 value.\n * The length is exactly 32 characters.\n * Dashes are not allowed.\n * Has to be lowercase.\n * @see https://develop.sentry.dev/sdk/event-payloads/#required-attributes\n */\nexport function uuid4(): string {\n  return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n    const r = (Math.random() * 16) | 0;\n    const v = c === 'x' ? r : (r & 0x3) | 0x8;\n\n    return v.toString(16);\n  });\n}\n","import { SentryRequestBody } from '../models/models';\nimport { AUTH_HEADER, DSN_REGEXP } from '../consts/consts';\nimport { computeStackTrace } from '../helpers/compute-stack-trace';\nimport { SentryClientOptions } from '../models/sentry-client-options';\nimport { uuid4 } from '../helpers/uuid4';\n\nexport class MicroSentryClient {\n  readonly authHeader?: string;\n  readonly apiUrl?: string;\n  readonly environment?: string;\n\n  constructor(options: SentryClientOptions) {\n    if (options && options.dsn) {\n      const searched = DSN_REGEXP.exec(options.dsn);\n      const dsn = searched ? searched.slice(1) : [];\n      const pathWithProjectId = dsn[5].split('/');\n      const path = pathWithProjectId.slice(0, -1).join('/');\n\n      this.apiUrl =\n        dsn[0] +\n        '://' +\n        dsn[3] +\n        (dsn[4] ? ':' + dsn[4] : '') +\n        (path ? '/' + path : '') +\n        '/api/' +\n        pathWithProjectId.pop() +\n        '/store/';\n\n      this.authHeader =\n        'Sentry sentry_version=7,sentry_key=' +\n        dsn[1] +\n        (dsn[2] ? ',sentry_secret=' + dsn[2] : '');\n    }\n\n    this.environment = options && options.environment;\n  }\n\n  prepare(error: Error): SentryRequestBody {\n    return {\n      ...this.getRequestBlank(),\n      exception: { values: [computeStackTrace(error)] },\n    };\n  }\n\n  report(error: Error): void {\n    this.send(this.prepare(error));\n  }\n\n  protected send(body: SentryRequestBody) {\n    if (!this.apiUrl || !body) {\n      return;\n    }\n\n    this.createRequest(body);\n  }\n\n  protected createRequest(body: SentryRequestBody): void {\n    const xhr = new XMLHttpRequest();\n\n    xhr.open('POST', this.apiUrl!, true);\n    xhr.setRequestHeader('Content-type', 'application/json');\n    xhr.setRequestHeader(AUTH_HEADER, this.authHeader || '');\n    xhr.send(JSON.stringify(body));\n  }\n\n  protected getRequestBlank(): SentryRequestBody {\n    return {\n      platform: 'javascript',\n      event_id: uuid4(),\n      sdk: {\n        name: 'micro-sentry.javascript.core',\n        version: '0.0.0',\n      },\n      timestamp: Date.now() / 1000,\n      environment: this.environment,\n    };\n  }\n}\n","// models\nexport * from './lib/models/breadcrumb';\nexport * from './lib/models/models';\nexport * from './lib/models/sentry-client-options';\nexport * from './lib/models/severity';\n\n// service\nexport * from './lib/service/micro-sentry-client';\n\n//const\nexport * from './lib/consts/consts';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}