{"version":3,"sources":["../../../../src/lib/A-Server/A-HttpServer.error.ts"],"names":[],"mappings":"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","file":"A-HttpServer.error.mjs","sourcesContent":["import { A_Error } from '@adaas/a-concept';\nimport { A_HttpServerError_Init, A_HttpServerError_Serialized } from './A-HttpServer.types';\n\n\nexport class A_HttpServerError extends A_Error<A_HttpServerError_Init, A_HttpServerError_Serialized> {\n\n    static readonly NotFoundErrorStatus: number = 404;\n    static readonly NotFoundError = 'Resource Not Found';\n\n    static readonly InternalServerErrorStatus: number = 500;\n    static readonly InternalServerError = 'Internal Server Error';\n\n    /**\n     * HTTP status code to title mapping\n     */\n    private static readonly HTTP_STATUS_TITLES: Record<number, string> = {\n        // 4xx Client Errors\n        400: 'Bad Request',\n        401: 'Unauthorized',\n        402: 'Payment Required',\n        403: 'Forbidden',\n        404: 'Not Found',\n        405: 'Method Not Allowed',\n        406: 'Not Acceptable',\n        407: 'Proxy Authentication Required',\n        408: 'Request Timeout',\n        409: 'Conflict',\n        410: 'Gone',\n        411: 'Length Required',\n        412: 'Precondition Failed',\n        413: 'Payload Too Large',\n        414: 'URI Too Long',\n        415: 'Unsupported Media Type',\n        416: 'Range Not Satisfiable',\n        417: 'Expectation Failed',\n        418: 'I\\'m a teapot',\n        421: 'Misdirected Request',\n        422: 'Unprocessable Entity',\n        423: 'Locked',\n        424: 'Failed Dependency',\n        425: 'Too Early',\n        426: 'Upgrade Required',\n        428: 'Precondition Required',\n        429: 'Too Many Requests',\n        431: 'Request Header Fields Too Large',\n        451: 'Unavailable For Legal Reasons',\n\n        // 5xx Server Errors\n        500: 'Internal Server Error',\n        501: 'Not Implemented',\n        502: 'Bad Gateway',\n        503: 'Service Unavailable',\n        504: 'Gateway Timeout',\n        505: 'HTTP Version Not Supported',\n        506: 'Variant Also Negotiates',\n        507: 'Insufficient Storage',\n        508: 'Loop Detected',\n        510: 'Not Extended',\n        511: 'Network Authentication Required'\n    };\n\n    status!: number;\n\n    /**\n     * Gets the appropriate title for a given HTTP status code\n     */\n    private static getHttpStatusTitle(status: number): string {\n        return this.HTTP_STATUS_TITLES[status] || 'Unknown Error';\n    }\n\n    constructor(\n        /**\n         * A_Error Constructor params with required title\n         */\n        params: A_HttpServerError_Init\n    )\n    constructor(\n        /**\n         * Simplified params with optional title - will auto-generate from status\n         */\n        params: { status?: number; description?: string; code?: string; scope?: string; link?: string; originalError?: Error | unknown }\n    )\n    constructor(\n        /**\n         * HTTP Status Code of the error\n         */\n        status: number,\n        /**\n         * Error description\n         */\n        description: string\n    )\n    constructor(\n        /**\n         * Original JS Error\n         */\n        error: Error\n    )\n    constructor(\n        param1: A_HttpServerError_Init | { status?: number; description?: string; code?: string; scope?: string; link?: string; originalError?: Error | unknown } | Error | number,\n        param2?: string\n    ) {\n        // Handle the different constructor overloads\n        switch (true) {\n            // Pattern: new A_HttpServerError(404, 'The requested resource was not found')\n            case typeof param1 === 'number' && typeof param2 === 'string':\n                super({\n                    title: A_HttpServerError.getHttpStatusTitle(param1),\n                    description: param2\n                });\n                this.status = param1;\n                break;\n\n            // Pattern: new A_HttpServerError(someErrorObject)\n            case param1 instanceof Error:\n                super(param1);\n                this.status = 500; // Default status for Error objects\n                break;\n\n            // Pattern: new A_HttpServerError({ status: 500, description: '...', originalError: ... })\n            case typeof param1 === 'object' && param1 !== null && !(param1 instanceof Error):\n                const params = param1 as any;\n                \n                // If title is provided, use the full A_Error init\n                if ('title' in params && params.title) {\n                    super(params as A_HttpServerError_Init);\n                    this.status = params.status || 500;\n                } else {\n                    // Auto-generate title from status\n                    const title = params.status ? A_HttpServerError.getHttpStatusTitle(params.status) : 'Internal Server Error';\n                    super({\n                        title: title,\n                        description: params.description,\n                        code: params.code,\n                        scope: params.scope,\n                        link: params.link,\n                        originalError: params.originalError\n                    });\n                    this.status = params.status || 500;\n                }\n                break;\n\n            default:\n                // Fallback for any other case\n                throw new Error('Invalid parameters provided to A_HttpServerError constructor');\n        }\n    }\n\n\n    protected fromConstructor(params: A_HttpServerError_Init): void {\n        super.fromConstructor(params);\n        if (params.status) {\n            this.status = params.status;\n        }\n    }\n\n\n    toJSON(): A_HttpServerError_Serialized {\n        return {\n            ...super.toJSON(),\n            status: this.status\n        }\n    }\n}\n\n"]}