/**
 * 请求上下文运行时工具
 */ /**
 * 创建请求上下文
 * 
 * @template TRequest - 请求配置类型
 * @template TResponse - 响应类型
 * @template TMeta - 元数据类型
 * @param request - 请求配置
 * @param meta - 初始元数据
 * @returns 请求上下文
 */ export function createRequestContext(request, meta = {}) {
    const startTime = Date.now();
    const abortController = typeof AbortController !== 'undefined' ? new AbortController() : undefined;
    return {
        request,
        meta: meta,
        startTime,
        retryCount: 0,
        cancelled: false,
        abortController
    };
}
/**
 * 更新请求上下文
 * 
 * @template TContext - 请求上下文类型
 * @param context - 请求上下文
 * @param updates - 更新内容
 * @returns 更新后的上下文
 */ export function updateRequestContext(context, updates) {
    return {
        ...context,
        ...updates,
        meta: {
            ...context.meta,
            ...updates.meta || {}
        }
    };
}
/**
 * 完成请求上下文（设置响应和结束时间）
 * 
 * @template TContext - 请求上下文类型
 * @param context - 请求上下文
 * @param response - 响应对象
 * @returns 更新后的上下文
 */ export function completeRequestContext(context, response) {
    const endTime = Date.now();
    return updateRequestContext(context, {
        response: response,
        endTime,
        duration: endTime - context.startTime
    });
}
/**
 * 失败请求上下文（设置错误和结束时间）
 * 
 * @template TContext - 请求上下文类型
 * @param context - 请求上下文
 * @param error - 请求错误
 * @returns 更新后的上下文
 */ export function failRequestContext(context, error) {
    const endTime = Date.now();
    return updateRequestContext(context, {
        error: error,
        endTime,
        duration: endTime - context.startTime
    });
}
/**
 * 取消请求上下文
 * 
 * @template TContext - 请求上下文类型
 * @param context - 请求上下文
 * @returns 更新后的上下文
 */ export function cancelRequestContext(context) {
    if (context.abortController) {
        context.abortController.abort();
    }
    return updateRequestContext(context, {
        cancelled: true
    });
}

//# sourceMappingURL=RequestContext.js.map