@thalorlabs/errors
Version:
Enhanced exception handling system for TypeScript applications with comprehensive error classes and debugging capabilities
52 lines (51 loc) • 1.85 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.QuotaExceededError = void 0;
const CustomError_1 = __importDefault(require("./CustomError"));
/**
* Error for quota exceeded scenarios with usage information.
*
* Used when resource quotas are exceeded with specific usage and reset timing data.
* Provides structured quota information for API responses with HTTP 429 status.
*
* @example
* throw new QuotaExceededError(
* 'API quota exceeded',
* 'requests', // quotaType
* 1000, // currentUsage
* 1000, // maxQuota
* new Date(Date.now() + 86400000), // resetTime (24 hours)
* 'req-123'
* );
*
* throw new QuotaExceededError('Storage quota exceeded', 'storage', 5000000000, 5000000000, undefined, 'req-456');
*/
class QuotaExceededError extends CustomError_1.default {
constructor(message = 'Quota Exceeded', quotaType, currentUsage, maxQuota, resetTime, requestId, context) {
super(429, message, requestId, context);
this.quotaType = quotaType;
this.currentUsage = currentUsage;
this.maxQuota = maxQuota;
this.resetTime = resetTime;
}
getErrorResponse() {
const response = super.getErrorResponse();
if (this.quotaType) {
response.quotaType = this.quotaType;
}
if (this.currentUsage !== undefined) {
response.currentUsage = this.currentUsage;
}
if (this.maxQuota !== undefined) {
response.maxQuota = this.maxQuota;
}
if (this.resetTime) {
response.resetTime = this.resetTime.toISOString();
}
return response;
}
}
exports.QuotaExceededError = QuotaExceededError;