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
    237001 237002 237003 237004 237005 237006 237007 237008 237009 237010 237011 237012 237013 237014 237015 237016 237017 237018 237019 237020 237021 237022 237023 237024 237025 237026 237027 237028 237029 237030 237031 237032 237033 237034 237035 237036 237037 237038 237039 237040 237041 237042 237043 237044 237045 237046 237047 237048 237049 237050 237051 237052 237053 237054 237055 237056 237057 237058 237059 237060 237061 237062 237063 237064 237065 237066 237067 237068 237069 237070 237071 237072 237073 237074 237075 237076 237077 237078 237079 237080 237081 237082 237083 237084 237085 237086 237087 237088 237089 237090 237091 237092 237093 237094 237095 237096 237097 237098 237099 237100 237101 237102 237103 237104 237105 237106 237107 237108 237109 237110 237111 237112 237113 237114 237115 237116 237117 237118 237119 237120 237121 237122 237123 237124 237125 237126 237127 237128 237129 237130 237131 237132 237133 237134 237135 237136 237137 237138 237139 237140 237141 237142 237143 237144 237145 237146 237147 237148 237149 237150 237151 237152 237153 237154 237155 237156 237157 237158 237159 237160 237161 237162 237163 237164 237165 237166 237167 237168 237169 237170 237171 237172 237173 237174 237175 237176 237177 237178 237179 237180 237181 237182 237183 237184 237185 237186 237187 237188 237189 237190 237191 237192 237193 237194 237195 237196 237197 237198 237199 237200 237201 237202 237203 237204 237205 237206 237207 237208 237209 237210 237211 237212 237213 237214 237215 237216 237217 237218 237219 237220 237221 237222 237223 237224 237225 237226 237227 237228 237229 237230 237231 237232 237233 237234 237235 237236 237237 237238 237239 237240 237241 237242 237243 237244 237245 237246 237247 237248 237249 237250 237251 237252 237253 237254 237255 237256 237257 237258 237259 237260 237261 237262 237263 237264 237265 237266 237267 237268 237269 237270 237271 237272 237273 237274 237275 237276 237277 237278 237279 237280 237281 237282 237283 237284 237285 237286 237287 237288 237289 237290 237291 237292 237293 237294 237295 237296 237297 237298 237299 237300 237301 237302 237303 237304 237305 237306 237307 237308 237309 237310 237311 237312 237313 237314 237315 237316 237317 237318 237319 237320 237321 237322 237323 237324 237325 237326 237327 237328 237329 237330 237331 237332 237333 237334 237335 237336 237337 237338 237339 237340 237341 237342 237343 237344 237345 237346 237347 237348 237349 237350 237351 237352 237353 237354 237355 237356 237357 237358 237359 237360 237361 237362 237363 237364 237365 237366 237367 237368 237369 237370 237371 237372 237373 237374 237375 237376 237377 237378 237379 237380 237381 237382 237383 237384 237385 237386 237387 237388 237389 237390 237391 237392 237393 237394 237395 237396 237397 237398 237399 237400 237401 237402 237403 237404 237405 237406 237407 237408 237409 237410 237411 237412 237413 237414 237415 237416 237417 237418 237419 237420 237421 237422 237423 237424 237425 237426 237427 237428 237429 237430 237431 237432 237433 237434 237435 237436 237437 237438 237439 237440 237441 237442 237443 237444 237445 237446 237447 237448 237449 237450 237451 237452 237453 237454 237455 237456 237457 237458 237459 237460 237461 237462 237463 237464 237465 237466 237467 237468 237469 237470 237471 237472 237473 237474 237475 237476 237477 237478 237479 237480 237481 237482 237483 237484 237485 237486 237487 237488 237489 237490 237491 237492 237493 237494 237495 237496 237497 237498 237499 237500 237501 237502 237503 237504 237505 237506 237507 237508 237509 237510 237511 237512 237513 237514 237515 237516 237517 237518 237519 237520 237521 237522 237523 237524 237525 237526 237527 237528 237529 237530 237531 237532 237533 237534 237535 237536 237537 237538 237539 237540 237541 237542 237543 237544 237545 237546 237547 237548 237549 237550 237551 237552 237553 237554 237555 237556 237557 237558 237559 237560 237561 237562 237563 237564 237565 237566 237567 237568 237569 237570 237571 237572 237573 237574 237575 237576 237577 237578 237579 237580 237581 237582 237583 237584 237585 237586 237587 237588 237589 237590 237591 237592 237593 237594 237595 237596 237597 237598 237599 237600 237601 237602 237603 237604 237605 237606 237607 237608 237609 237610 237611 237612 237613 237614 237615 237616 237617 237618 237619 237620 237621 237622 237623 237624 237625 237626 237627 237628 237629 237630 237631 237632 237633 237634 237635 237636 237637 237638 237639 237640 237641 237642 237643 237644 237645 237646 237647 237648 237649 237650 237651 237652 237653 237654 237655 237656 237657 237658 237659 237660 237661 237662 237663 237664 237665 237666 237667 237668 237669 237670 237671 237672 237673 237674 237675 237676 237677 237678 237679 237680 237681 237682 237683 237684 237685 237686 237687 237688 237689 237690 237691 237692 237693 237694 237695 237696 237697 237698 237699 237700 237701 237702 237703 237704 237705 237706 237707 237708 237709 237710 237711 237712 237713 237714 237715 237716 237717 237718 237719 237720 237721 237722 237723 237724 237725 237726 237727 237728 237729 237730 237731 237732 237733 237734 237735 237736 237737 237738 237739 237740 237741 237742 237743 237744 237745 237746 237747 237748 237749 237750 237751 237752 237753 237754 237755 237756 237757 237758 237759 237760 237761 237762 237763 237764 237765 237766 237767 237768 237769 237770 237771 237772 237773 237774 237775 237776 237777 237778 237779 237780 237781 237782 237783 237784 237785 237786 237787 237788 237789 237790 237791 237792 237793 237794 237795 237796 237797 237798 237799 237800 237801 237802 237803 237804 237805 237806 237807 237808 237809 237810 237811 237812 237813 237814 237815 237816 237817 237818 237819 237820 237821 237822 237823 237824 237825 237826 237827 237828 237829 237830 237831 237832 237833 237834 237835 237836 237837 237838 237839 237840 237841 237842 237843 237844 237845 237846 237847 237848 237849 237850 237851 237852 237853 237854 237855 237856 237857 237858 237859 237860 237861 237862 237863 237864 237865 237866 237867 237868 237869 237870 237871 237872 237873 237874 237875 237876 237877 237878 237879 237880 237881 237882 237883 237884 237885 237886 237887 237888 237889 237890 237891 237892 237893 237894 237895 237896 237897 237898 237899 237900 237901 237902 237903 237904 237905 237906 237907 237908 237909 237910 237911 237912 237913 237914 237915 237916 237917 237918 237919 237920 237921 237922 237923 237924 237925 237926 237927 237928 237929 237930 237931 237932 237933 237934 237935 237936 237937 237938 237939 237940 237941 237942 237943 237944 237945 237946 237947 237948 237949 237950 237951 237952 237953 237954 237955 237956 237957 237958 237959 237960 237961 237962 237963 237964 237965 237966 237967 237968 237969 237970 237971 237972 237973 237974 237975 237976 237977 237978 237979 237980 237981 237982 237983 237984 237985 237986 237987 237988 237989 237990 237991 237992 237993 237994 237995 237996 237997 237998 237999 238000
      if (requestOptions.protocol === undefined) {
        // Worst case we end up populating protocol with undefined, which it already is
        /* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any */
    
        // NOTE: Prior to Node 9, `https` used internals of `http` module, thus we don't patch it.
        // Because of that, we cannot rely on `httpModule` to provide us with valid protocol,
        // as it will always return `http`, even when using `https` module.
        //
        // See test/integrations/http.test.ts for more details on Node <=v8 protocol issue.
        if (NODE_VERSION.major && NODE_VERSION.major > 8) {
          requestOptions.protocol =
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([((0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([httpModule, 'optionalAccess', _10 => _10.globalAgent]) ), 'optionalAccess', _11 => _11.protocol]) ||
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([(requestOptions.agent ), 'optionalAccess', _12 => _12.protocol]) ||
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([(requestOptions._defaultAgent ), 'optionalAccess', _13 => _13.protocol]);
        } else {
          requestOptions.protocol =
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([(requestOptions.agent ), 'optionalAccess', _14 => _14.protocol]) ||
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([(requestOptions._defaultAgent ), 'optionalAccess', _15 => _15.protocol]) ||
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([((0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([httpModule, 'optionalAccess', _16 => _16.globalAgent]) ), 'optionalAccess', _17 => _17.protocol]);
        }
        /* eslint-enable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any */
      }
    
      // return args in standardized form
      if (callback) {
        return [requestOptions, callback];
      } else {
        return [requestOptions];
      }
    }
    
    
    //# sourceMappingURL=http.js.map
    
    
    /***/ }),
    /* 1657 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "BAGGAGE_HEADER_NAME": () => (/* binding */ BAGGAGE_HEADER_NAME),
    /* harmony export */   "MAX_BAGGAGE_STRING_LENGTH": () => (/* binding */ MAX_BAGGAGE_STRING_LENGTH),
    /* harmony export */   "SENTRY_BAGGAGE_KEY_PREFIX": () => (/* binding */ SENTRY_BAGGAGE_KEY_PREFIX),
    /* harmony export */   "SENTRY_BAGGAGE_KEY_PREFIX_REGEX": () => (/* binding */ SENTRY_BAGGAGE_KEY_PREFIX_REGEX),
    /* harmony export */   "baggageHeaderToDynamicSamplingContext": () => (/* binding */ baggageHeaderToDynamicSamplingContext),
    /* harmony export */   "dynamicSamplingContextToSentryBaggageHeader": () => (/* binding */ dynamicSamplingContextToSentryBaggageHeader)
    /* harmony export */ });
    /* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1611);
    /* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1615);
    
    
    
    const BAGGAGE_HEADER_NAME = 'baggage';
    
    const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';
    
    const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;
    
    /**
     * Max length of a serialized baggage string
     *
     * https://www.w3.org/TR/baggage/#limits
     */
    const MAX_BAGGAGE_STRING_LENGTH = 8192;
    
    /**
     * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the "sentry-" prefixed values
     * from it.
     *
     * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.
     * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.
     */
    function baggageHeaderToDynamicSamplingContext(
      // Very liberal definition of what any incoming header might look like
      baggageHeader,
    ) {
      if (!(0,_is_js__WEBPACK_IMPORTED_MODULE_0__.isString)(baggageHeader) && !Array.isArray(baggageHeader)) {
        return undefined;
      }
    
      // Intermediary object to store baggage key value pairs of incoming baggage headers on.
      // It is later used to read Sentry-DSC-values from.
      let baggageObject = {};
    
      if (Array.isArray(baggageHeader)) {
        // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it
        baggageObject = baggageHeader.reduce((acc, curr) => {
          const currBaggageObject = baggageHeaderToObject(curr);
          return {
            ...acc,
            ...currBaggageObject,
          };
        }, {});
      } else {
        // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but
        // this is how we choose to handle it)
        if (!baggageHeader) {
          return undefined;
        }
    
        baggageObject = baggageHeaderToObject(baggageHeader);
      }
    
      // Read all "sentry-" prefixed values out of the baggage object and put it onto a dynamic sampling context object.
      const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {
        if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {
          const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);
          acc[nonPrefixedKey] = value;
        }
        return acc;
      }, {});
    
      // Only return a dynamic sampling context object if there are keys in it.
      // A keyless object means there were no sentry values on the header, which means that there is no DSC.
      if (Object.keys(dynamicSamplingContext).length > 0) {
        return dynamicSamplingContext ;
      } else {
        return undefined;
      }
    }
    
    /**
     * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with "sentry-".
     *
     * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility
     * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is
     * `undefined` the function will return `undefined`.
     * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`
     * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.
     */
    function dynamicSamplingContextToSentryBaggageHeader(
      // this also takes undefined for convenience and bundle size in other places
      dynamicSamplingContext,
    ) {
      // Prefix all DSC keys with "sentry-" and put them into a new object
      const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(
        (acc, [dscKey, dscValue]) => {
          if (dscValue) {
            acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;
          }
          return acc;
        },
        {},
      );
    
      return objectToBaggageHeader(sentryPrefixedDSC);
    }
    
    /**
     * Will parse a baggage header, which is a simple key-value map, into a flat object.
     *
     * @param baggageHeader The baggage header to parse.
     * @returns a flat object containing all the key-value pairs from `baggageHeader`.
     */
    function baggageHeaderToObject(baggageHeader) {
      return baggageHeader
        .split(',')
        .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))
        .reduce((acc, [key, value]) => {
          acc[key] = value;
          return acc;
        }, {});
    }
    
    /**
     * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.
     *
     * @param object The object to turn into a baggage header.
     * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header
     * is not spec compliant.
     */
    function objectToBaggageHeader(object) {
      if (Object.keys(object).length === 0) {
        // An empty baggage header is not spec compliant: We return undefined.
        return undefined;
      }
    
      return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {
        const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;
        const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;
        if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.logger.warn(
              `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,
            );
          return baggageHeader;
        } else {
          return newBaggageHeader;
        }
      }, '');
    }
    
    
    //# sourceMappingURL=baggage.js.map
    
    
    /***/ }),
    /* 1658 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "OnUncaughtException": () => (/* binding */ OnUncaughtException)
    /* harmony export */ });
    /* harmony import */ var _sentry_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1602);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1615);
    /* harmony import */ var _utils_errorhandling_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1659);
    
    
    
    
    /** Global Exception handler */
    class OnUncaughtException  {
      /**
       * @inheritDoc
       */
       static __initStatic() {this.id = 'OnUncaughtException';}
    
      /**
       * @inheritDoc
       */
       __init() {this.name = OnUncaughtException.id;}
    
      /**
       * @inheritDoc
       */
        __init2() {this.handler = this._makeErrorHandler();}
    
      // CAREFUL: Please think twice before updating the way _options looks because the Next.js SDK depends on it in `index.server.ts`
    
      /**
       * @inheritDoc
       */
       constructor(options = {}) {;OnUncaughtException.prototype.__init.call(this);OnUncaughtException.prototype.__init2.call(this);
        this._options = {
          exitEvenIfOtherHandlersAreRegistered: true,
          ...options,
        };
      }
    
      /**
       * @inheritDoc
       */
       setupOnce() {
        global.process.on('uncaughtException', this.handler);
      }
    
      /**
       * @hidden
       */
       _makeErrorHandler() {
        const timeout = 2000;
        let caughtFirstError = false;
        let caughtSecondError = false;
        let calledFatalError = false;
        let firstError;
    
        return (error) => {
          let onFatalError = _utils_errorhandling_js__WEBPACK_IMPORTED_MODULE_0__.logAndExitProcess;
          const client = (0,_sentry_core__WEBPACK_IMPORTED_MODULE_1__.getCurrentHub)().getClient();
    
          if (this._options.onFatalError) {
            // eslint-disable-next-line @typescript-eslint/unbound-method
            onFatalError = this._options.onFatalError;
          } else if (client && client.getOptions().onFatalError) {
            // eslint-disable-next-line @typescript-eslint/unbound-method
            onFatalError = client.getOptions().onFatalError ;
          }
    
          // Attaching a listener to `uncaughtException` will prevent the node process from exiting. We generally do not
          // want to alter this behaviour so we check for other listeners that users may have attached themselves and adjust
          // exit behaviour of the SDK accordingly:
          // - If other listeners are attached, do not exit.
          // - If the only listener attached is ours, exit.
          const userProvidedListenersCount = global.process
            .listeners('uncaughtException')
            .reduce((acc, listener) => {
              if (
                listener.name === 'domainUncaughtExceptionClear' || // as soon as we're using domains this listener is attached by node itself
                listener === this.handler // filter the handler we registered ourselves)
              ) {
                return acc;
              } else {
                return acc + 1;
              }
            }, 0);
    
          const processWouldExit = userProvidedListenersCount === 0;
          const shouldApplyFatalHandlingLogic = this._options.exitEvenIfOtherHandlersAreRegistered || processWouldExit;
    
          if (!caughtFirstError) {
            const hub = (0,_sentry_core__WEBPACK_IMPORTED_MODULE_1__.getCurrentHub)();
    
            // this is the first uncaught error and the ultimate reason for shutting down
            // we want to do absolutely everything possible to ensure it gets captured
            // also we want to make sure we don't go recursion crazy if more errors happen after this one
            firstError = error;
            caughtFirstError = true;
    
            if (hub.getIntegration(OnUncaughtException)) {
              hub.withScope((scope) => {
                scope.setLevel('fatal');
                hub.captureException(error, {
                  originalException: error,
                  data: { mechanism: { handled: false, type: 'onuncaughtexception' } },
                });
                if (!calledFatalError && shouldApplyFatalHandlingLogic) {
                  calledFatalError = true;
                  onFatalError(error);
                }
              });
            } else {
              if (!calledFatalError && shouldApplyFatalHandlingLogic) {
                calledFatalError = true;
                onFatalError(error);
              }
            }
          } else {
            if (shouldApplyFatalHandlingLogic) {
              if (calledFatalError) {
                // we hit an error *after* calling onFatalError - pretty boned at this point, just shut it down
                (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&
                  _sentry_utils__WEBPACK_IMPORTED_MODULE_2__.logger.warn(
                    'uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown',
                  );
                (0,_utils_errorhandling_js__WEBPACK_IMPORTED_MODULE_0__.logAndExitProcess)(error);
              } else if (!caughtSecondError) {
                // two cases for how we can hit this branch:
                //   - capturing of first error blew up and we just caught the exception from that
                //     - quit trying to capture, proceed with shutdown
                //   - a second independent error happened while waiting for first error to capture
                //     - want to avoid causing premature shutdown before first error capture finishes
                // it's hard to immediately tell case 1 from case 2 without doing some fancy/questionable domain stuff
                // so let's instead just delay a bit before we proceed with our action here
                // in case 1, we just wait a bit unnecessarily but ultimately do the same thing
                // in case 2, the delay hopefully made us wait long enough for the capture to finish
                // two potential nonideal outcomes:
                //   nonideal case 1: capturing fails fast, we sit around for a few seconds unnecessarily before proceeding correctly by calling onFatalError
                //   nonideal case 2: case 2 happens, 1st error is captured but slowly, timeout completes before capture and we treat second error as the sendErr of (nonexistent) failure from trying to capture first error
                // note that after hitting this branch, we might catch more errors where (caughtSecondError && !calledFatalError)
                //   we ignore them - they don't matter to us, we're just waiting for the second error timeout to finish
                caughtSecondError = true;
                setTimeout(() => {
                  if (!calledFatalError) {
                    // it was probably case 1, let's treat err as the sendErr and call onFatalError
                    calledFatalError = true;
                    onFatalError(firstError, error);
                  } else {
                    // it was probably case 2, our first error finished capturing while we waited, cool, do nothing
                  }
                }, timeout); // capturing could take at least sendTimeout to fail, plus an arbitrary second for how long it takes to collect surrounding source etc
              }
            }
          }
        };
      }
    } OnUncaughtException.__initStatic();
    
    
    //# sourceMappingURL=onuncaughtexception.js.map
    
    
    /***/ }),
    /* 1659 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "logAndExitProcess": () => (/* binding */ logAndExitProcess)
    /* harmony export */ });
    /* harmony import */ var _sentry_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1602);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1615);
    
    
    
    const DEFAULT_SHUTDOWN_TIMEOUT = 2000;
    
    /**
     * @hidden
     */
    function logAndExitProcess(error) {
      // eslint-disable-next-line no-console
      console.error(error && error.stack ? error.stack : error);
    
      const client = (0,_sentry_core__WEBPACK_IMPORTED_MODULE_0__.getCurrentHub)().getClient();
    
      if (client === undefined) {
        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.warn('No NodeClient was defined, we are exiting the process now.');
        global.process.exit(1);
      }
    
      const options = client.getOptions();
      const timeout =
        (options && options.shutdownTimeout && options.shutdownTimeout > 0 && options.shutdownTimeout) ||
        DEFAULT_SHUTDOWN_TIMEOUT;
      client.close(timeout).then(
        (result) => {
          if (!result) {
            (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.warn('We reached the timeout for emptying the request buffer, still exiting now!');
          }
          global.process.exit(1);
        },
        error => {
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.error(error);
        },
      );
    }
    
    
    //# sourceMappingURL=errorhandling.js.map
    
    
    /***/ }),
    /* 1660 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "OnUnhandledRejection": () => (/* binding */ OnUnhandledRejection)
    /* harmony export */ });
    /* harmony import */ var _sentry_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1602);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1615);
    /* harmony import */ var _utils_errorhandling_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1659);
    
    
    
    
    /** Global Promise Rejection handler */
    class OnUnhandledRejection  {
      /**
       * @inheritDoc
       */
       static __initStatic() {this.id = 'OnUnhandledRejection';}
    
      /**
       * @inheritDoc
       */
       __init() {this.name = OnUnhandledRejection.id;}
    
      /**
       * @inheritDoc
       */
       constructor(
          _options
    
     = { mode: 'warn' },
      ) {;this._options = _options;OnUnhandledRejection.prototype.__init.call(this);}
    
      /**
       * @inheritDoc
       */
       setupOnce() {
        global.process.on('unhandledRejection', this.sendUnhandledPromise.bind(this));
      }
    
      /**
       * Send an exception with reason
       * @param reason string
       * @param promise promise
       */
      // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
       sendUnhandledPromise(reason, promise) {
        const hub = (0,_sentry_core__WEBPACK_IMPORTED_MODULE_1__.getCurrentHub)();
        if (hub.getIntegration(OnUnhandledRejection)) {
          hub.withScope((scope) => {
            scope.setExtra('unhandledPromiseRejection', true);
            hub.captureException(reason, {
              originalException: promise,
              data: { mechanism: { handled: false, type: 'onunhandledrejection' } },
            });
          });
        }
        this._handleRejection(reason);
      }
    
      /**
       * Handler for `mode` option
       */
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
       _handleRejection(reason) {
        // https://github.com/nodejs/node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L234-L240
        const rejectionWarning =
          'This error originated either by ' +
          'throwing inside of an async function without a catch block, ' +
          'or by rejecting a promise which was not handled with .catch().' +
          ' The promise rejected with the reason:';
    
        /* eslint-disable no-console */
        if (this._options.mode === 'warn') {
          (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_2__.consoleSandbox)(() => {
            console.warn(rejectionWarning);
            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
            console.error(reason && reason.stack ? reason.stack : reason);
          });
        } else if (this._options.mode === 'strict') {
          (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_2__.consoleSandbox)(() => {
            console.warn(rejectionWarning);
          });
          (0,_utils_errorhandling_js__WEBPACK_IMPORTED_MODULE_0__.logAndExitProcess)(reason);
        }
        /* eslint-enable no-console */
      }
    } OnUnhandledRejection.__initStatic();
    
    
    //# sourceMappingURL=onunhandledrejection.js.map
    
    
    /***/ }),
    /* 1661 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "LinkedErrors": () => (/* binding */ LinkedErrors)
    /* harmony export */ });
    /* harmony import */ var _sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1625);
    /* harmony import */ var _sentry_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1603);
    /* harmony import */ var _sentry_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1602);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1611);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1614);
    /* harmony import */ var _eventbuilder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1628);
    /* harmony import */ var _contextlines_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1662);
    
    
    
    
    
    
    const DEFAULT_KEY = 'cause';
    const DEFAULT_LIMIT = 5;
    
    /** Adds SDK info to an event. */
    class LinkedErrors  {
      /**
       * @inheritDoc
       */
       static __initStatic() {this.id = 'LinkedErrors';}
    
      /**
       * @inheritDoc
       */
        __init() {this.name = LinkedErrors.id;}
    
      /**
       * @inheritDoc
       */
    
      /**
       * @inheritDoc
       */
    
      /**
       * @inheritDoc
       */
       constructor(options = {}) {;LinkedErrors.prototype.__init.call(this);
        this._key = options.key || DEFAULT_KEY;
        this._limit = options.limit || DEFAULT_LIMIT;
      }
    
      /**
       * @inheritDoc
       */
       setupOnce() {
        (0,_sentry_core__WEBPACK_IMPORTED_MODULE_2__.addGlobalEventProcessor)(async (event, hint) => {
          const hub = (0,_sentry_core__WEBPACK_IMPORTED_MODULE_3__.getCurrentHub)();
          const self = hub.getIntegration(LinkedErrors);
          const client = hub.getClient();
          if (client && self && self._handler && typeof self._handler === 'function') {
            await self._handler(client.getOptions().stackParser, event, hint);
          }
          return event;
        });
      }
    
      /**
       * @inheritDoc
       */
       _handler(stackParser, event, hint) {
        if (!event.exception || !event.exception.values || !(0,_sentry_utils__WEBPACK_IMPORTED_MODULE_4__.isInstanceOf)(hint.originalException, Error)) {
          return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__.resolvedSyncPromise)(event);
        }
    
        return new _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.SyncPromise(resolve => {
          void this._walkErrorTree(stackParser, hint.originalException , this._key)
            .then((linkedErrors) => {
              if (event && event.exception && event.exception.values) {
                event.exception.values = [...linkedErrors, ...event.exception.values];
              }
              resolve(event);
            })
            .then(null, () => {
              resolve(event);
            });
        });
      }
    
      /**
       * @inheritDoc
       */
       async _walkErrorTree(
        stackParser,
        error,
        key,
        stack = [],
      ) {
        if (!(0,_sentry_utils__WEBPACK_IMPORTED_MODULE_4__.isInstanceOf)(error[key], Error) || stack.length + 1 >= this._limit) {
          return Promise.resolve(stack);
        }
    
        const exception = (0,_eventbuilder_js__WEBPACK_IMPORTED_MODULE_0__.exceptionFromError)(stackParser, error[key]);
    
        // If the ContextLines integration is enabled, we add source code context to linked errors
        // because we can't guarantee the order that integrations are run.
        const contextLines = (0,_sentry_core__WEBPACK_IMPORTED_MODULE_3__.getCurrentHub)().getIntegration(_contextlines_js__WEBPACK_IMPORTED_MODULE_1__.ContextLines);
        if (contextLines && (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_6__._optionalChain)([exception, 'access', _ => _.stacktrace, 'optionalAccess', _2 => _2.frames])) {
          await contextLines.addSourceContextToFrames(exception.stacktrace.frames);
        }
    
        return new Promise((resolve, reject) => {
          void this._walkErrorTree(stackParser, error[key], key, [exception, ...stack])
            .then(resolve)
            .then(null, () => {
              reject();
            });
        });
      }
    }LinkedErrors.__initStatic();
    
    
    //# sourceMappingURL=linkederrors.js.map
    
    
    /***/ }),
    /* 1662 */
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "ContextLines": () => (/* binding */ ContextLines),
    /* harmony export */   "resetFileContentCache": () => (/* binding */ resetFileContentCache)
    /* harmony export */ });
    /* harmony import */ var _sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1625);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1609);
    /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(149);
    /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__);
    /* harmony import */ var lru_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1663);
    /* harmony import */ var lru_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lru_map__WEBPACK_IMPORTED_MODULE_1__);
    
    
    
    
    
    const FILE_CONTENT_CACHE = new lru_map__WEBPACK_IMPORTED_MODULE_1__.LRUMap(100);
    const DEFAULT_LINES_OF_CONTEXT = 7;
    
    // TODO: Replace with promisify when minimum supported node >= v8
    function readTextFileAsync(path) {
      return new Promise((resolve, reject) => {
        (0,fs__WEBPACK_IMPORTED_MODULE_0__.readFile)(path, 'utf8', (err, data) => {
          if (err) reject(err);
          else resolve(data);
        });
      });
    }
    
    /**
     * Resets the file cache. Exists for testing purposes.
     * @hidden
     */
    function resetFileContentCache() {
      FILE_CONTENT_CACHE.clear();
    }
    
    /** Add node modules / packages to the event */
    class ContextLines  {
      /**
       * @inheritDoc
       */
       static __initStatic() {this.id = 'ContextLines';}
    
      /**
       * @inheritDoc
       */
       __init() {this.name = ContextLines.id;}
    
       constructor(  _options = {}) {;this._options = _options;ContextLines.prototype.__init.call(this);}
    
      /** Get's the number of context lines to add */
       get _contextLines() {
        return this._options.frameContextLines !== undefined ? this._options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;
      }
    
      /**
       * @inheritDoc
       */
       setupOnce(addGlobalEventProcessor) {
        addGlobalEventProcessor(event => this.addSourceContext(event));
      }
    
      /** Processes an event and adds context lines */
       async addSourceContext(event) {
        if (this._contextLines > 0 && (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([event, 'access', _2 => _2.exception, 'optionalAccess', _3 => _3.values])) {
          for (const exception of event.exception.values) {
            if ((0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_2__._optionalChain)([exception, 'access', _4 => _4.stacktrace, 'optionalAccess', _5 => _5.frames])) {
              await this.addSourceContextToFrames(exception.stacktrace.frames);
            }
          }
        }
    
        return event;
      }
    
      /** Adds context lines to frames */
       async addSourceContextToFrames(frames) {
        const contextLines = this._contextLines;
    
        for (const frame of frames) {
          // Only add context if we have a filename and it hasn't already been added
          if (frame.filename && frame.context_line === undefined) {
            const sourceFile = await _readSourceFile(frame.filename);
    
            if (sourceFile) {
              try {
                const lines = sourceFile.split('\n');
                (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.addContextToFrame)(lines, frame, contextLines);
              } catch (e) {
                // anomaly, being defensive in case
                // unlikely to ever happen in practice but can definitely happen in theory
              }
            }
          }
        }
      }
    }ContextLines.__initStatic();
    
    /**
     * Reads file contents and caches them in a global LRU cache.
     *
     * @param filename filepath to read content from.
     */
    async function _readSourceFile(filename) {
      const cachedFile = FILE_CONTENT_CACHE.get(filename);
      // We have a cache hit
      if (cachedFile !== undefined) {
        return cachedFile;
      }
    
      let content = null;
      try {
        content = await readTextFileAsync(filename);
      } catch (_) {
        //
      }
    
      FILE_CONTENT_CACHE.set(filename, content);
      return content;
    }
    
    
    //# sourceMappingURL=contextlines.js.map
    
    
    /***/ }),
    /* 1663 */
    /***/ (function(module, exports, __webpack_require__) {
    
    var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
     * A doubly linked list-based Least Recently Used (LRU) cache. Will keep most
     * recently used items while discarding least recently used items when its limit
     * is reached.
     *
     * Licensed under MIT. Copyright (c) 2010 Rasmus Andersson <http://hunch.se/>
     * See README.md for details.
     *
     * Illustration of the design:
     *
     *       entry             entry             entry             entry
     *       ______            ______            ______            ______
     *      | head |.newer => |      |.newer => |      |.newer => | tail |
     *      |  A   |          |  B   |          |  C   |          |  D   |
     *      |______| <= older.|______| <= older.|______| <= older.|______|
     *
     *  removed  <--  <--  <--  <--  <--  <--  <--  <--  <--  <--  <--  added
     */
    (function(g,f){
      const e =  true ? exports : 0;
      f(e);
      if (true) { !(__WEBPACK_AMD_DEFINE_FACTORY__ = (e),
    		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
    		(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
    		__WEBPACK_AMD_DEFINE_FACTORY__),
    		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); }
    })(this, function(exports) {
    
    const NEWER = Symbol('newer');
    const OLDER = Symbol('older');
    
    function LRUMap(limit, entries) {
      if (typeof limit !== 'number') {
        // called as (entries)
        entries = limit;
        limit = 0;
      }
    
      this.size = 0;
      this.limit = limit;
      this.oldest = this.newest = undefined;
      this._keymap = new Map();
    
      if (entries) {
        this.assign(entries);
        if (limit < 1) {
          this.limit = this.size;
        }
      }
    }
    
    exports.LRUMap = LRUMap;
    
    function Entry(key, value) {
      this.key = key;
      this.value = value;
      this[NEWER] = undefined;
      this[OLDER] = undefined;
    }
    
    
    LRUMap.prototype._markEntryAsUsed = function(entry) {
      if (entry === this.newest) {
        // Already the most recenlty used entry, so no need to update the list
        return;
      }
      // HEAD--------------TAIL
      //   <.older   .newer>
      //  <--- add direction --
      //   A  B  C  <D>  E
      if (entry[NEWER]) {
        if (entry === this.oldest) {
          this.oldest = entry[NEWER];
        }
        entry[NEWER][OLDER] = entry[OLDER]; // C <-- E.
      }
      if (entry[OLDER]) {
        entry[OLDER][NEWER] = entry[NEWER]; // C. --> E
      }
      entry[NEWER] = undefined; // D --x
      entry[OLDER] = this.newest; // D. --> E
      if (this.newest) {
        this.newest[NEWER] = entry; // E. <-- D
      }
      this.newest = entry;
    };
    
    LRUMap.prototype.assign = function(entries) {
      let entry, limit = this.limit || Number.MAX_VALUE;
      this._keymap.clear();
      let it = entries[Symbol.iterator]();
      for (let itv = it.next(); !itv.done; itv = it.next()) {
        let e = new Entry(itv.value[0], itv.value[1]);
        this._keymap.set(e.key, e);
        if (!entry) {
          this.oldest = e;
        } else {
          entry[NEWER] = e;
          e[OLDER] = entry;
        }
        entry = e;
        if (limit-- == 0) {
          throw new Error('overflow');
        }
      }
      this.newest = entry;
      this.size = this._keymap.size;
    };
    
    LRUMap.prototype.get = function(key) {
      // First, find our cache entry
      var entry = this._keymap.get(key);
      if (!entry) return; // Not cached. Sorry.
      // As <key> was found in the cache, register it as being requested recently
      this._markEntryAsUsed(entry);
      return entry.value;
    };
    
    LRUMap.prototype.set = function(key, value) {
      var entry = this._keymap.get(key);
    
      if (entry) {
        // update existing
        entry.value = value;
        this._markEntryAsUsed(entry);
        return this;
      }
    
      // new entry
      this._keymap.set(key, (entry = new Entry(key, value)));
    
      if (this.newest) {
        // link previous tail to the new tail (entry)
        this.newest[NEWER] = entry;
        entry[OLDER] = this.newest;
      } else {
        // we're first in -- yay
        this.oldest = entry;
      }
    
      // add new entry to the end of the linked list -- it's now the freshest entry.
      this.newest = entry;
      ++this.size;
      if (this.size > this.limit) {
        // we hit the limit -- remove the head
        this.shift();
      }
    
      return this;
    };
    
    LRUMap.prototype.shift = function() {
      // todo: handle special case when limit == 1
      var entry = this.oldest;
      if (entry) {
        if (this.oldest[NEWER]) {
          // advance the list
          this.oldest = this.oldest[NEWER];
          this.oldest[OLDER] = undefined;
        } else {
          // the cache is exhausted
          this.oldest = undefined;
          this.newest = undefined;
        }
        // Remove last strong reference to <entry> and remove links from the purged
        // entry being returned:
        entry[NEWER] = entry[OLDER] = undefined;
        this._keymap.delete(entry.key);
        --this.size;
        return [entry.key, entry.value];
      }
    };
    
    // ----------------------------------------------------------------------------
    // Following code is optional and can be removed without breaking the core
    // functionality.
    
    LRUMap.prototype.find = function(key) {
      let e = this._keymap.get(key);
      return e ? e.value : undefined;
    };
    
    LRUMap.prototype.has = function(key) {
      return this._keymap.has(key);
    };
    
    LRUMap.prototype['delete'] = function(key) {
      var entry = this._keymap.get(key);
      if (!entry) return;
      this._keymap.delete(entry.key);
      if (entry[NEWER] && entry[OLDER]) {
        // relink the older entry with the newer entry
        entry[OLDER][NEWER] = entry[NEWER];
        entry[NEWER][OLDER] = entry[OLDER];
      } else if (entry[NEWER]) {
        // remove the link to us
        entry[NEWER][OLDER] = undefined;
        // link the newer entry to head
        this.oldest = entry[NEWER];
      } else if (entry[OLDER]) {
        // remove the link to us
        entry[OLDER][NEWER] = undefined;
        // link the newer entry to head
        this.newest = entry[OLDER];
      } else {// if(entry[OLDER] === undefined && entry.newer === undefined) {
        this.oldest = this.newest = undefined;
      }
    
      this.size--;
      return entry.value;
    };
    
    LRUMap.prototype.clear = function() {
      // Not clearing links should be safe, as we don't expose live links to user
      this.oldest = this.newest = undefined;
      this.size = 0;
      this._keymap.clear();
    };
    
    
    function EntryIterator(oldestEntry) { this.entry = oldestEntry; }
    EntryIterator.prototype[Symbol.iterator] = function() { return this; }
    EntryIterator.prototype.next = function() {
      let ent = this.entry;
      if (ent) {
        this.entry = ent[NEWER];