Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
1.6 KiB
Text
64 lines
1.6 KiB
Text
/**
|
|
* The key used to store the local variables on the error object.
|
|
*/
|
|
const LOCAL_VARIABLES_KEY = '__SENTRY_ERROR_LOCAL_VARIABLES__';
|
|
|
|
/**
|
|
* Creates a rate limiter that will call the disable callback when the rate limit is reached and the enable callback
|
|
* when a timeout has occurred.
|
|
* @param maxPerSecond Maximum number of calls per second
|
|
* @param enable Callback to enable capture
|
|
* @param disable Callback to disable capture
|
|
* @returns A function to call to increment the rate limiter count
|
|
*/
|
|
function createRateLimiter(
|
|
maxPerSecond,
|
|
enable,
|
|
disable,
|
|
) {
|
|
let count = 0;
|
|
let retrySeconds = 5;
|
|
let disabledTimeout = 0;
|
|
|
|
setInterval(() => {
|
|
if (disabledTimeout === 0) {
|
|
if (count > maxPerSecond) {
|
|
retrySeconds *= 2;
|
|
disable(retrySeconds);
|
|
|
|
// Cap at one day
|
|
if (retrySeconds > 86400) {
|
|
retrySeconds = 86400;
|
|
}
|
|
disabledTimeout = retrySeconds;
|
|
}
|
|
} else {
|
|
disabledTimeout -= 1;
|
|
|
|
if (disabledTimeout === 0) {
|
|
enable();
|
|
}
|
|
}
|
|
|
|
count = 0;
|
|
}, 1000).unref();
|
|
|
|
return () => {
|
|
count += 1;
|
|
};
|
|
}
|
|
|
|
// Add types for the exception event data
|
|
|
|
/** Could this be an anonymous function? */
|
|
function isAnonymous(name) {
|
|
return name !== undefined && (name.length === 0 || name === '?' || name === '<anonymous>');
|
|
}
|
|
|
|
/** Do the function names appear to match? */
|
|
function functionNamesMatch(a, b) {
|
|
return a === b || `Object.${a}` === b || a === `Object.${b}` || (isAnonymous(a) && isAnonymous(b));
|
|
}
|
|
|
|
export { LOCAL_VARIABLES_KEY, createRateLimiter, functionNamesMatch, isAnonymous };
|
|
//# sourceMappingURL=common.js.map
|