import { Blob } from "./adapter"; import { RequestReturn } from "./type/ResponseType"; export interface ResponseHelper { text: (this: RequestReturn & ResponseHelper) => Promise; json: (this: RequestReturn & ResponseHelper) => Promise; blob: (this: RequestReturn & ResponseHelper) => Blob; arrayBuffer: (this: RequestReturn & ResponseHelper) => ArrayBuffer; } /** 返回数据的格式化处理工具 */ export const ResponseTransform: ResponseHelper = { async text() { return this.blob().text(); }, async json() { const text = await this.text(); return JSON.parse(text); }, arrayBuffer() { return this.data.body as ArrayBuffer; }, blob() { return new Blob([this.data.body as ArrayBuffer]); }, }; import cookie from "cookie"; /** 返回数据的封装 */ export const ResponseWrapper = (Response: RequestReturn) => { const cookieText = Response.headers.get("set-cookie"); return { ...Response, ...ResponseTransform, /** 这个是这次设置的 cookie ,而不是 cookie Jar */ cookie: typeof cookieText === "string" ? cookie.parse(cookieText) : null, /** 这个是这次设置的 cookie ,而不是 cookie Jar */ cookieText, /*重定向的结果*/ redirectTo: Response.headers.get("Location"), }; };