UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

24 lines (23 loc) 1.36 kB
import type { IRequestInterceptor, IRawRequest } from '../../types'; /** * Aegis 上报专用:请求打点拦截器 * * - 业务:在「请求拦截器链」最前面加本拦截器,把 `Date.now()` 注入到 `param.__aegisStartTime` * - 配合 `AegisReportInterceptor`(响应拦截器)使用,能算出精确耗时 duration * * 设计原因: * - `NetworkEngine` 用 reduce 串成 Promise 链,**响应拦截器拿不到「请求发起时刻」** * - 只有显式在请求链里打点,响应拦截器才能 `Date.now() - startTime` 算耗时 * - 字段名带双下划线前缀(`__aegisStartTime`),与 `IRawRequest.__cocosOriginUrl` 一致风格, * 不会和业务 reqData / header 冲突 * * 注意: * - 该拦截器不应该被排在 `CocosHostInterceptor` 之前:domain 拼接后才算真正发起, * 但 Aegis 关心的是「业务调用时点」,所以其实放在最前更准确;放哪都行,只要 startTime 字段在 * 请求链中能透传到响应拦截器 * - 本拦截器是 **幂等** 的:若上游拦截器已注入过 startTime,就保留上游值不覆盖 * (防重入 / 装饰器场景下开始时间被推迟) */ export declare class AegisStartTimeInterceptor implements IRequestInterceptor { interceptor(param: IRawRequest): [boolean, IRawRequest]; }