Skip to content
Snippets Groups Projects
onDeleteAccount.js 7.96 MiB
Newer Older
  • Learn to ignore specific revisions
  • build-token's avatar
    build-token committed
    231001 231002 231003 231004 231005 231006 231007 231008 231009 231010 231011 231012 231013 231014 231015 231016 231017 231018 231019 231020 231021 231022 231023 231024 231025 231026 231027 231028 231029 231030 231031 231032 231033 231034 231035 231036 231037 231038 231039 231040 231041 231042 231043 231044 231045 231046 231047 231048 231049 231050 231051 231052 231053 231054 231055 231056 231057 231058 231059 231060 231061 231062 231063 231064 231065 231066 231067 231068 231069 231070 231071 231072 231073 231074 231075 231076 231077 231078 231079 231080 231081 231082 231083 231084 231085 231086 231087 231088 231089 231090 231091 231092 231093 231094 231095 231096 231097 231098 231099 231100 231101 231102 231103 231104 231105 231106 231107 231108 231109 231110 231111 231112 231113 231114 231115 231116 231117 231118 231119 231120 231121 231122 231123 231124 231125 231126 231127 231128 231129 231130 231131 231132 231133 231134 231135 231136 231137 231138 231139 231140 231141 231142 231143 231144 231145 231146 231147 231148 231149 231150 231151 231152 231153 231154 231155 231156 231157 231158 231159 231160 231161 231162 231163 231164 231165 231166 231167 231168 231169 231170 231171 231172 231173 231174 231175 231176 231177 231178 231179 231180 231181 231182 231183 231184 231185 231186 231187 231188 231189 231190 231191 231192 231193 231194 231195 231196 231197 231198 231199 231200 231201 231202 231203 231204 231205 231206 231207 231208 231209 231210 231211 231212 231213 231214 231215 231216 231217 231218 231219 231220 231221 231222 231223 231224 231225 231226 231227 231228 231229 231230 231231 231232 231233 231234 231235 231236 231237 231238 231239 231240 231241 231242 231243 231244 231245 231246 231247 231248 231249 231250 231251 231252 231253 231254 231255 231256 231257 231258 231259 231260 231261 231262 231263 231264 231265 231266 231267 231268 231269 231270 231271 231272 231273 231274 231275 231276 231277 231278 231279 231280 231281 231282 231283 231284 231285 231286 231287 231288 231289 231290 231291 231292 231293 231294 231295 231296 231297 231298 231299 231300 231301 231302 231303 231304 231305 231306 231307 231308 231309 231310 231311 231312 231313 231314 231315 231316 231317 231318 231319 231320 231321 231322 231323 231324 231325 231326 231327 231328 231329 231330 231331 231332 231333 231334 231335 231336 231337 231338 231339 231340 231341 231342 231343 231344 231345 231346 231347 231348 231349 231350 231351 231352 231353 231354 231355 231356 231357 231358 231359 231360 231361 231362 231363 231364 231365 231366 231367 231368 231369 231370 231371 231372 231373 231374 231375 231376 231377 231378 231379 231380 231381 231382 231383 231384 231385 231386 231387 231388 231389 231390 231391 231392 231393 231394 231395 231396 231397 231398 231399 231400 231401 231402 231403 231404 231405 231406 231407 231408 231409 231410 231411 231412 231413 231414 231415 231416 231417 231418 231419 231420 231421 231422 231423 231424 231425 231426 231427 231428 231429 231430 231431 231432 231433 231434 231435 231436 231437 231438 231439 231440 231441 231442 231443 231444 231445 231446 231447 231448 231449 231450 231451 231452 231453 231454 231455 231456 231457 231458 231459 231460 231461 231462 231463 231464 231465 231466 231467
    }
    
    function getEventForEnvelopeItem(item, type) {
      if (type !== 'event' && type !== 'transaction') {
        return undefined;
      }
    
      return Array.isArray(item) ? (item )[1] : undefined;
    }
    
    
    //# sourceMappingURL=base.js.map
    
    
    /***/ }),
    /* 1619 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "makePromiseBuffer": () => (/* binding */ makePromiseBuffer)
    /* harmony export */ });
    /* harmony import */ var _error_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1620);
    /* harmony import */ var _syncpromise_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1614);
    
    
    
    /**
     * Creates an new PromiseBuffer object with the specified limit
     * @param limit max number of promises that can be stored in the buffer
     */
    function makePromiseBuffer(limit) {
      const buffer = [];
    
      function isReady() {
        return limit === undefined || buffer.length < limit;
      }
    
      /**
       * Remove a promise from the queue.
       *
       * @param task Can be any PromiseLike<T>
       * @returns Removed promise.
       */
      function remove(task) {
        return buffer.splice(buffer.indexOf(task), 1)[0];
      }
    
      /**
       * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.
       *
       * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:
       *        PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor
       *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By
       *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer
       *        limit check.
       * @returns The original promise.
       */
      function add(taskProducer) {
        if (!isReady()) {
          return (0,_syncpromise_js__WEBPACK_IMPORTED_MODULE_0__.rejectedSyncPromise)(new _error_js__WEBPACK_IMPORTED_MODULE_1__.SentryError('Not adding Promise because buffer limit was reached.'));
        }
    
        // start the task and add its promise to the queue
        const task = taskProducer();
        if (buffer.indexOf(task) === -1) {
          buffer.push(task);
        }
        void task
          .then(() => remove(task))
          // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`
          // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't
          // have promises, so TS has to polyfill when down-compiling.)
          .then(null, () =>
            remove(task).then(null, () => {
              // We have to add another catch here because `remove()` starts a new promise chain.
            }),
          );
        return task;
      }
    
      /**
       * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.
       *
       * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or
       * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to
       * `true`.
       * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and
       * `false` otherwise
       */
      function drain(timeout) {
        return new _syncpromise_js__WEBPACK_IMPORTED_MODULE_0__.SyncPromise((resolve, reject) => {
          let counter = buffer.length;
    
          if (!counter) {
            return resolve(true);
          }
    
          // wait for `timeout` ms and then resolve to `false` (if not cancelled first)
          const capturedSetTimeout = setTimeout(() => {
            if (timeout && timeout > 0) {
              resolve(false);
            }
          }, timeout);
    
          // if all promises resolve in time, cancel the timer and resolve to `true`
          buffer.forEach(item => {
            void (0,_syncpromise_js__WEBPACK_IMPORTED_MODULE_0__.resolvedSyncPromise)(item).then(() => {
              if (!--counter) {
                clearTimeout(capturedSetTimeout);
                resolve(true);
              }
            }, reject);
          });
        });
      }
    
      return {
        $: buffer,
        add,
        drain,
      };
    }
    
    
    //# sourceMappingURL=promisebuffer.js.map
    
    
    /***/ }),
    /* 1620 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "SentryError": () => (/* binding */ SentryError)
    /* harmony export */ });
    /** An error emitted by Sentry SDKs and related utilities. */
    class SentryError extends Error {
      /** Display name of this error instance. */
    
       constructor( message, logLevel = 'warn') {
        super(message);this.message = message;;
    
        this.name = new.target.prototype.constructor.name;
        // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line
        // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes
        // instances of `SentryError` fail `obj instanceof SentryError` checks.
        Object.setPrototypeOf(this, new.target.prototype);
        this.logLevel = logLevel;
      }
    }
    
    
    //# sourceMappingURL=error.js.map
    
    
    /***/ }),
    /* 1621 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "addItemToEnvelope": () => (/* binding */ addItemToEnvelope),
    /* harmony export */   "createAttachmentEnvelopeItem": () => (/* binding */ createAttachmentEnvelopeItem),
    /* harmony export */   "createEnvelope": () => (/* binding */ createEnvelope),
    /* harmony export */   "envelopeItemTypeToDataCategory": () => (/* binding */ envelopeItemTypeToDataCategory),
    /* harmony export */   "forEachEnvelopeItem": () => (/* binding */ forEachEnvelopeItem),
    /* harmony export */   "serializeEnvelope": () => (/* binding */ serializeEnvelope)
    /* harmony export */ });
    /* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1622);
    /* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1612);
    
    
    
    /**
     * Creates an envelope.
     * Make sure to always explicitly provide the generic to this function
     * so that the envelope types resolve correctly.
     */
    function createEnvelope(headers, items = []) {
      return [headers, items] ;
    }
    
    /**
     * Add an item to an envelope.
     * Make sure to always explicitly provide the generic to this function
     * so that the envelope types resolve correctly.
     */
    function addItemToEnvelope(envelope, newItem) {
      const [headers, items] = envelope;
      return [headers, [...items, newItem]] ;
    }
    
    /**
     * Convenience function to loop through the items and item types of an envelope.
     * (This function was mostly created because working with envelope types is painful at the moment)
     */
    function forEachEnvelopeItem(
      envelope,
      callback,
    ) {
      const envelopeItems = envelope[1];
      envelopeItems.forEach((envelopeItem) => {
        const envelopeItemType = envelopeItem[0].type;
        callback(envelopeItem, envelopeItemType);
      });
    }
    
    function encodeUTF8(input, textEncoder) {
      const utf8 = textEncoder || new TextEncoder();
      return utf8.encode(input);
    }
    
    /**
     * Serializes an envelope.
     */
    function serializeEnvelope(envelope, textEncoder) {
      const [envHeaders, items] = envelope;
    
      // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data
      let parts = JSON.stringify(envHeaders);
    
      function append(next) {
        if (typeof parts === 'string') {
          parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];
        } else {
          parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);
        }
      }
    
      for (const item of items) {
        const [itemHeaders, payload] = item;
    
        append(`\n${JSON.stringify(itemHeaders)}\n`);
    
        if (typeof payload === 'string' || payload instanceof Uint8Array) {
          append(payload);
        } else {
          let stringifiedPayload;
          try {
            stringifiedPayload = JSON.stringify(payload);
          } catch (e) {
            // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still
            // fails, we try again after normalizing it again with infinite normalization depth. This of course has a
            // performance impact but in this case a performance hit is better than throwing.
            stringifiedPayload = JSON.stringify((0,_normalize_js__WEBPACK_IMPORTED_MODULE_0__.normalize)(payload));
          }
          append(stringifiedPayload);
        }
      }
    
      return typeof parts === 'string' ? parts : concatBuffers(parts);
    }
    
    function concatBuffers(buffers) {
      const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);
    
      const merged = new Uint8Array(totalLength);
      let offset = 0;
      for (const buffer of buffers) {
        merged.set(buffer, offset);
        offset += buffer.length;
      }
    
      return merged;
    }
    
    /**
     * Creates attachment envelope items
     */
    function createAttachmentEnvelopeItem(
      attachment,
      textEncoder,
    ) {
      const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;
    
      return [
        (0,_object_js__WEBPACK_IMPORTED_MODULE_1__.dropUndefinedKeys)({
          type: 'attachment',
          length: buffer.length,
          filename: attachment.filename,
          content_type: attachment.contentType,
          attachment_type: attachment.attachmentType,
        }),
        buffer,
      ];
    }
    
    const ITEM_TYPE_TO_DATA_CATEGORY_MAP = {
      session: 'session',
      sessions: 'session',
      attachment: 'attachment',
      transaction: 'transaction',
      event: 'error',
      client_report: 'internal',
      user_report: 'default',
    };
    
    /**
     * Maps the type of an envelope item to a data category.
     */
    function envelopeItemTypeToDataCategory(type) {
      return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];
    }
    
    
    //# sourceMappingURL=envelope.js.map
    
    
    /***/ }),
    /* 1622 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "normalize": () => (/* binding */ normalize),
    /* harmony export */   "normalizeToSize": () => (/* binding */ normalizeToSize),
    /* harmony export */   "walk": () => (/* binding */ visit)
    /* harmony export */ });
    /* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1611);
    /* harmony import */ var _memo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1623);
    /* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1612);
    /* harmony import */ var _stacktrace_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1624);
    
    
    
    
    
    /**
     * Recursively normalizes the given object.
     *
     * - Creates a copy to prevent original input mutation
     * - Skips non-enumerable properties
     * - When stringifying, calls `toJSON` if implemented
     * - Removes circular references
     * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format
     * - Translates known global objects/classes to a string representations
     * - Takes care of `Error` object serialization
     * - Optionally limits depth of final output
     * - Optionally limits number of properties/elements included in any single object/array
     *
     * @param input The object to be normalized.
     * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)
     * @param maxProperties The max number of elements or properties to be included in any single array or
     * object in the normallized output.
     * @returns A normalized version of the object, or `"**non-serializable**"` if any errors are thrown during normalization.
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    function normalize(input, depth = +Infinity, maxProperties = +Infinity) {
      try {
        // since we're at the outermost level, we don't provide a key
        return visit('', input, depth, maxProperties);
      } catch (err) {
        return { ERROR: `**non-serializable** (${err})` };
      }
    }
    
    /** JSDoc */
    function normalizeToSize(
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      object,
      // Default Node.js REPL depth
      depth = 3,
      // 100kB, as 200kB is max payload size, so half sounds reasonable
      maxSize = 100 * 1024,
    ) {
      const normalized = normalize(object, depth);
    
      if (jsonSize(normalized) > maxSize) {
        return normalizeToSize(object, depth - 1, maxSize);
      }
    
      return normalized ;
    }
    
    /**
     * Visits a node to perform normalization on it
     *
     * @param key The key corresponding to the given node
     * @param value The node to be visited
     * @param depth Optional number indicating the maximum recursion depth
     * @param maxProperties Optional maximum number of properties/elements included in any single object/array
     * @param memo Optional Memo class handling decycling
     */
    function visit(
      key,
      value,
      depth = +Infinity,
      maxProperties = +Infinity,
      memo = (0,_memo_js__WEBPACK_IMPORTED_MODULE_0__.memoBuilder)(),
    ) {
      const [memoize, unmemoize] = memo;
    
      // Get the simple cases out of the way first
      if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !(0,_is_js__WEBPACK_IMPORTED_MODULE_1__.isNaN)(value))) {
        return value ;
      }
    
      const stringified = stringifyValue(key, value);
    
      // Anything we could potentially dig into more (objects or arrays) will have come back as `"[object XXXX]"`.
      // Everything else will have already been serialized, so if we don't see that pattern, we're done.
      if (!stringified.startsWith('[object ')) {
        return stringified;
      }
    
      // From here on, we can assert that `value` is either an object or an array.
    
      // Do not normalize objects that we know have already been normalized. As a general rule, the
      // "__sentry_skip_normalization__" property should only be used sparingly and only should only be set on objects that
      // have already been normalized.
      if ((value )['__sentry_skip_normalization__']) {
        return value ;
      }
    
      // We're also done if we've reached the max depth
      if (depth === 0) {
        // At this point we know `serialized` is a string of the form `"[object XXXX]"`. Clean it up so it's just `"[XXXX]"`.
        return stringified.replace('object ', '');
      }
    
      // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.
      if (memoize(value)) {
        return '[Circular ~]';
      }
    
      // If the value has a `toJSON` method, we call it to extract more information
      const valueWithToJSON = value ;
      if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {
        try {
          const jsonValue = valueWithToJSON.toJSON();
          // We need to normalize the return value of `.toJSON()` in case it has circular references
          return visit('', jsonValue, depth - 1, maxProperties, memo);
        } catch (err) {
          // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)
        }
      }
    
      // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse
      // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each
      // property/entry, and keep track of the number of items we add to it.
      const normalized = (Array.isArray(value) ? [] : {}) ;
      let numAdded = 0;
    
      // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant
      // properties are non-enumerable and otherwise would get missed.
      const visitable = (0,_object_js__WEBPACK_IMPORTED_MODULE_2__.convertToPlainObject)(value );
    
      for (const visitKey in visitable) {
        // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.
        if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {
          continue;
        }
    
        if (numAdded >= maxProperties) {
          normalized[visitKey] = '[MaxProperties ~]';
          break;
        }
    
        // Recursively visit all the child nodes
        const visitValue = visitable[visitKey];
        normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);
    
    
    build-token's avatar
    build-token committed
        numAdded++;
    
    build-token's avatar
    build-token committed
    231469 231470 231471 231472 231473 231474 231475 231476 231477 231478 231479 231480 231481 231482 231483 231484 231485 231486 231487 231488 231489 231490 231491 231492 231493 231494 231495 231496 231497 231498 231499 231500 231501 231502 231503 231504 231505 231506 231507 231508 231509 231510 231511 231512 231513 231514 231515 231516 231517 231518 231519 231520 231521 231522 231523 231524 231525 231526 231527 231528 231529 231530 231531 231532 231533 231534 231535 231536 231537 231538 231539 231540 231541 231542 231543 231544 231545 231546 231547 231548 231549 231550 231551 231552 231553 231554 231555 231556 231557 231558 231559 231560 231561 231562 231563 231564 231565 231566 231567 231568 231569 231570 231571 231572 231573 231574 231575 231576 231577 231578 231579 231580 231581 231582 231583 231584 231585 231586 231587 231588 231589 231590 231591 231592 231593 231594 231595 231596 231597 231598 231599 231600 231601 231602 231603 231604 231605 231606 231607 231608 231609 231610 231611 231612 231613 231614 231615 231616 231617 231618 231619 231620 231621 231622 231623 231624 231625 231626 231627 231628 231629 231630 231631 231632 231633 231634 231635 231636 231637 231638 231639 231640 231641 231642 231643 231644 231645 231646 231647 231648 231649 231650 231651 231652 231653 231654 231655 231656 231657 231658 231659 231660 231661 231662 231663 231664 231665 231666 231667 231668 231669 231670 231671 231672 231673 231674 231675 231676 231677 231678 231679 231680 231681 231682 231683 231684 231685 231686 231687 231688 231689 231690 231691 231692 231693 231694 231695 231696 231697 231698 231699 231700 231701 231702 231703 231704 231705 231706 231707 231708 231709 231710 231711 231712 231713 231714 231715 231716 231717 231718 231719 231720 231721 231722 231723 231724 231725 231726 231727 231728 231729 231730 231731 231732 231733 231734 231735 231736 231737 231738 231739 231740 231741 231742 231743 231744 231745 231746 231747 231748 231749 231750 231751 231752 231753 231754 231755 231756 231757 231758 231759 231760 231761 231762 231763 231764 231765 231766 231767 231768 231769 231770 231771 231772 231773 231774 231775 231776 231777 231778 231779 231780 231781 231782 231783 231784 231785 231786 231787 231788 231789 231790 231791 231792 231793 231794 231795 231796 231797 231798 231799 231800 231801 231802 231803 231804 231805 231806 231807 231808 231809 231810 231811 231812 231813 231814 231815 231816 231817 231818 231819 231820 231821 231822 231823 231824 231825 231826 231827 231828 231829 231830 231831 231832 231833 231834 231835 231836 231837 231838 231839 231840 231841 231842 231843 231844 231845 231846 231847 231848 231849 231850 231851 231852 231853 231854 231855 231856 231857 231858 231859 231860 231861 231862 231863 231864 231865 231866 231867 231868 231869 231870 231871 231872 231873 231874 231875 231876 231877 231878 231879 231880 231881 231882 231883 231884 231885 231886 231887 231888 231889 231890 231891 231892 231893 231894 231895 231896 231897 231898 231899 231900 231901 231902 231903 231904 231905 231906 231907 231908 231909 231910 231911 231912 231913 231914 231915 231916 231917 231918 231919 231920 231921 231922 231923 231924 231925 231926 231927 231928 231929 231930 231931 231932 231933 231934 231935 231936 231937 231938 231939 231940 231941 231942 231943 231944 231945 231946 231947 231948 231949 231950 231951 231952 231953 231954 231955 231956 231957 231958 231959 231960 231961 231962 231963 231964 231965 231966 231967 231968 231969 231970 231971 231972 231973 231974 231975 231976 231977 231978 231979 231980 231981 231982 231983 231984 231985 231986 231987 231988 231989 231990 231991 231992 231993 231994 231995 231996 231997 231998 231999 232000
      }
    
      // Once we've visited all the branches, remove the parent from memo storage
      unmemoize(value);
    
      // Return accumulated values
      return normalized;
    }
    
    /**
     * Stringify the given value. Handles various known special values and types.
     *
     * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn
     * the number 1231 into "[Object Number]", nor on `null`, as it will throw.
     *
     * @param value The value to stringify
     * @returns A stringified representation of the given value
     */
    function stringifyValue(
      key,
      // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for
      // our internal use, it'll do
      value,
    ) {
      try {
        if (key === 'domain' && value && typeof value === 'object' && (value )._events) {
          return '[Domain]';
        }
    
        if (key === 'domainEmitter') {
          return '[DomainEmitter]';
        }
    
        // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first
        // which won't throw if they are not present.
    
        if (typeof global !== 'undefined' && value === global) {
          return '[Global]';
        }
    
        // eslint-disable-next-line no-restricted-globals
        if (typeof window !== 'undefined' && value === window) {
          return '[Window]';
        }
    
        // eslint-disable-next-line no-restricted-globals
        if (typeof document !== 'undefined' && value === document) {
          return '[Document]';
        }
    
        // React's SyntheticEvent thingy
        if ((0,_is_js__WEBPACK_IMPORTED_MODULE_1__.isSyntheticEvent)(value)) {
          return '[SyntheticEvent]';
        }
    
        if (typeof value === 'number' && value !== value) {
          return '[NaN]';
        }
    
        // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)
        if (value === void 0) {
          return '[undefined]';
        }
    
        if (typeof value === 'function') {
          return `[Function: ${(0,_stacktrace_js__WEBPACK_IMPORTED_MODULE_3__.getFunctionName)(value)}]`;
        }
    
        if (typeof value === 'symbol') {
          return `[${String(value)}]`;
        }
    
        // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion
        if (typeof value === 'bigint') {
          return `[BigInt: ${String(value)}]`;
        }
    
        // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting
        // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as
        // `"[object Object]"`. If we instead look at the constructor's name (which is the same as the name of the class),
        // we can make sure that only plain objects come out that way.
        return `[object ${(Object.getPrototypeOf(value) ).constructor.name}]`;
      } catch (err) {
        return `**non-serializable** (${err})`;
      }
    }
    
    /** Calculates bytes size of input string */
    function utf8Length(value) {
      // eslint-disable-next-line no-bitwise
      return ~-encodeURI(value).split(/%..|./).length;
    }
    
    /** Calculates bytes size of input object */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    function jsonSize(value) {
      return utf8Length(JSON.stringify(value));
    }
    
    
    //# sourceMappingURL=normalize.js.map
    
    
    /***/ }),
    /* 1623 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "memoBuilder": () => (/* binding */ memoBuilder)
    /* harmony export */ });
    /* eslint-disable @typescript-eslint/no-unsafe-member-access */
    /* eslint-disable @typescript-eslint/no-explicit-any */
    
    /**
     * Helper to decycle json objects
     */
    function memoBuilder() {
      const hasWeakSet = typeof WeakSet === 'function';
      const inner = hasWeakSet ? new WeakSet() : [];
      function memoize(obj) {
        if (hasWeakSet) {
          if (inner.has(obj)) {
            return true;
          }
          inner.add(obj);
          return false;
        }
        // eslint-disable-next-line @typescript-eslint/prefer-for-of
        for (let i = 0; i < inner.length; i++) {
          const value = inner[i];
          if (value === obj) {
            return true;
          }
        }
        inner.push(obj);
        return false;
      }
    
      function unmemoize(obj) {
        if (hasWeakSet) {
          inner.delete(obj);
        } else {
          for (let i = 0; i < inner.length; i++) {
            if (inner[i] === obj) {
              inner.splice(i, 1);
              break;
            }
          }
        }
      }
      return [memoize, unmemoize];
    }
    
    
    //# sourceMappingURL=memo.js.map
    
    
    /***/ }),
    /* 1624 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "createStackParser": () => (/* binding */ createStackParser),
    /* harmony export */   "getFunctionName": () => (/* binding */ getFunctionName),
    /* harmony export */   "nodeStackLineParser": () => (/* binding */ nodeStackLineParser),
    /* harmony export */   "stackParserFromStackParserOptions": () => (/* binding */ stackParserFromStackParserOptions),
    /* harmony export */   "stripSentryFramesAndReverse": () => (/* binding */ stripSentryFramesAndReverse)
    /* harmony export */ });
    /* harmony import */ var _buildPolyfills__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1625);
    
    
    const STACKTRACE_LIMIT = 50;
    
    /**
     * Creates a stack parser with the supplied line parsers
     *
     * StackFrames are returned in the correct order for Sentry Exception
     * frames and with Sentry SDK internal frames removed from the top and bottom
     *
     */
    function createStackParser(...parsers) {
      const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);
    
      return (stack, skipFirst = 0) => {
        const frames = [];
    
        for (const line of stack.split('\n').slice(skipFirst)) {
          // https://github.com/getsentry/sentry-javascript/issues/5459
          // Remove webpack (error: *) wrappers
          const cleanedLine = line.replace(/\(error: (.*)\)/, '$1');
    
          for (const parser of sortedParsers) {
            const frame = parser(cleanedLine);
    
            if (frame) {
              frames.push(frame);
              break;
            }
          }
        }
    
        return stripSentryFramesAndReverse(frames);
      };
    }
    
    /**
     * Gets a stack parser implementation from Options.stackParser
     * @see Options
     *
     * If options contains an array of line parsers, it is converted into a parser
     */
    function stackParserFromStackParserOptions(stackParser) {
      if (Array.isArray(stackParser)) {
        return createStackParser(...stackParser);
      }
      return stackParser;
    }
    
    /**
     * @hidden
     */
    function stripSentryFramesAndReverse(stack) {
      if (!stack.length) {
        return [];
      }
    
      let localStack = stack;
    
      const firstFrameFunction = localStack[0].function || '';
      const lastFrameFunction = localStack[localStack.length - 1].function || '';
    
      // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)
      if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {
        localStack = localStack.slice(1);
      }
    
      // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)
      if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {
        localStack = localStack.slice(0, -1);
      }
    
      // The frame where the crash happened, should be the last entry in the array
      return localStack
        .slice(0, STACKTRACE_LIMIT)
        .map(frame => ({
          ...frame,
          filename: frame.filename || localStack[0].filename,
          function: frame.function || '?',
        }))
        .reverse();
    }
    
    const defaultFunctionName = '<anonymous>';
    
    /**
     * Safely extract function name from itself
     */
    function getFunctionName(fn) {
      try {
        if (!fn || typeof fn !== 'function') {
          return defaultFunctionName;
        }
        return fn.name || defaultFunctionName;
      } catch (e) {
        // Just accessing custom props in some Selenium environments
        // can cause a "Permission denied" exception (see raven-js#495).
        return defaultFunctionName;
      }
    }
    
    // eslint-disable-next-line complexity
    function node(getModule) {
      const FILENAME_MATCH = /^\s*[-]{4,}$/;
      const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;
    
      // eslint-disable-next-line complexity
      return (line) => {
        if (line.match(FILENAME_MATCH)) {
          return {
            filename: line,
          };
        }
    
        const lineMatch = line.match(FULL_MATCH);
        if (!lineMatch) {
          return undefined;
        }
    
        let object;
        let method;
        let functionName;
        let typeName;
        let methodName;
    
        if (lineMatch[1]) {
          functionName = lineMatch[1];
    
          let methodStart = functionName.lastIndexOf('.');
          if (functionName[methodStart - 1] === '.') {
            methodStart--;
          }
    
          if (methodStart > 0) {
            object = functionName.substr(0, methodStart);
            method = functionName.substr(methodStart + 1);
            const objectEnd = object.indexOf('.Module');
            if (objectEnd > 0) {
              functionName = functionName.substr(objectEnd + 1);
              object = object.substr(0, objectEnd);
            }
          }
          typeName = undefined;
        }
    
        if (method) {
          typeName = object;
          methodName = method;
        }
    
        if (method === '<anonymous>') {
          methodName = undefined;
          functionName = undefined;
        }
    
        if (functionName === undefined) {
          methodName = methodName || '<anonymous>';
          functionName = typeName ? `${typeName}.${methodName}` : methodName;
        }
    
        const filename = (0,_buildPolyfills__WEBPACK_IMPORTED_MODULE_0__._optionalChain)([lineMatch, 'access', _ => _[2], 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3('file://')]) ? lineMatch[2].substr(7) : lineMatch[2];
        const isNative = lineMatch[5] === 'native';
        const isInternal =
          isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\') !== 1);
    
        // in_app is all that's not an internal Node function or a module within node_modules
        // note that isNative appears to return true even for node core libraries
        // see https://github.com/getsentry/raven-node/issues/176
        const in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');
    
        return {
          filename,
          module: (0,_buildPolyfills__WEBPACK_IMPORTED_MODULE_0__._optionalChain)([getModule, 'optionalCall', _4 => _4(filename)]),
          function: functionName,
          lineno: parseInt(lineMatch[3], 10) || undefined,
          colno: parseInt(lineMatch[4], 10) || undefined,
          in_app,
        };
      };
    }
    
    /**
     * Node.js stack line parser
     *
     * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.
     * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain
     */
    function nodeStackLineParser(getModule) {
      return [90, node(getModule)];
    }
    
    
    //# sourceMappingURL=stacktrace.js.map
    
    
    /***/ }),
    /* 1625 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "_optionalChain": () => (/* binding */ _optionalChain)
    /* harmony export */ });
    /**
     * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,
     * descriptors, and functions.
     *
     * Adapted from Sucrase (https://github.com/alangpierce/sucrase)
     * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15
     *
     * @param ops Array result of expression conversion
     * @returns The value of the expression
     */
    function _optionalChain(ops) {
      let lastAccessLHS = undefined;
      let value = ops[0];
      let i = 1;
      while (i < ops.length) {
        const op = ops[i] ;
        const fn = ops[i + 1] ;
        i += 2;
        // by checking for loose equality to `null`, we catch both `null` and `undefined`
        if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
          // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it
          return;
        }
        if (op === 'access' || op === 'optionalAccess') {
          lastAccessLHS = value;
          value = fn(value);
        } else if (op === 'call' || op === 'optionalCall') {
          value = fn((...args) => (value ).call(lastAccessLHS, ...args));
          lastAccessLHS = undefined;
        }
      }
      return value;
    }
    
    // Sucrase version
    // function _optionalChain(ops) {
    //   let lastAccessLHS = undefined;
    //   let value = ops[0];
    //   let i = 1;
    //   while (i < ops.length) {
    //     const op = ops[i];
    //     const fn = ops[i + 1];
    //     i += 2;
    //     if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
    //       return undefined;
    //     }
    //     if (op === 'access' || op === 'optionalAccess') {
    //       lastAccessLHS = value;
    //       value = fn(value);
    //     } else if (op === 'call' || op === 'optionalCall') {
    //       value = fn((...args) => value.call(lastAccessLHS, ...args));
    //       lastAccessLHS = undefined;
    //     }
    //   }
    //   return value;
    // }
    
    
    //# sourceMappingURL=_optionalChain.js.map
    
    
    /***/ }),
    /* 1626 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "DEFAULT_RETRY_AFTER": () => (/* binding */ DEFAULT_RETRY_AFTER),
    /* harmony export */   "disabledUntil": () => (/* binding */ disabledUntil),
    /* harmony export */   "isRateLimited": () => (/* binding */ isRateLimited),
    /* harmony export */   "parseRetryAfterHeader": () => (/* binding */ parseRetryAfterHeader),
    /* harmony export */   "updateRateLimits": () => (/* binding */ updateRateLimits)
    /* harmony export */ });
    // Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend
    
    const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds
    
    /**
     * Extracts Retry-After value from the request header or returns default value
     * @param header string representation of 'Retry-After' header
     * @param now current unix timestamp
     *
     */
    function parseRetryAfterHeader(header, now = Date.now()) {
      const headerDelay = parseInt(`${header}`, 10);
      if (!isNaN(headerDelay)) {
        return headerDelay * 1000;
      }
    
      const headerDate = Date.parse(`${header}`);
      if (!isNaN(headerDate)) {
        return headerDate - now;
      }
    
      return DEFAULT_RETRY_AFTER;
    }
    
    /**
     * Gets the time that given category is disabled until for rate limiting
     */
    function disabledUntil(limits, category) {
      return limits[category] || limits.all || 0;
    }
    
    /**
     * Checks if a category is rate limited
     */
    function isRateLimited(limits, category, now = Date.now()) {
      return disabledUntil(limits, category) > now;
    }
    
    /**
     * Update ratelimits from incoming headers.
     * Returns true if headers contains a non-empty rate limiting header.
     */
    function updateRateLimits(
      limits,
      { statusCode, headers },
      now = Date.now(),
    ) {
      const updatedRateLimits = {
        ...limits,
      };
    
      // "The name is case-insensitive."
      // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get
      const rateLimitHeader = headers && headers['x-sentry-rate-limits'];
      const retryAfterHeader = headers && headers['retry-after'];
    
      if (rateLimitHeader) {
        /**
         * rate limit headers are of the form
         *     <header>,<header>,..
         * where each <header> is of the form
         *     <retry_after>: <categories>: <scope>: <reason_code>
         * where
         *     <retry_after> is a delay in seconds
         *     <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form
         *         <category>;<category>;...
         *     <scope> is what's being limited (org, project, or key) - ignored by SDK
         *     <reason_code> is an arbitrary string like "org_quota" - ignored by SDK
         */
        for (const limit of rateLimitHeader.trim().split(',')) {
          const [retryAfter, categories] = limit.split(':', 2);
          const headerDelay = parseInt(retryAfter, 10);
          const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default
          if (!categories) {
            updatedRateLimits.all = now + delay;
          } else {
            for (const category of categories.split(';')) {
              updatedRateLimits[category] = now + delay;
            }
          }
        }