pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Request messaging

mrjvs e1be30dd 4bdb95ed

+33 -10
+3 -2
src/backend/extension/messaging.ts
··· 4 4 } from "@plasmohq/messaging"; 5 5 6 6 import { isAllowedExtensionVersion } from "@/backend/extension/compatibility"; 7 + import { ExtensionMakeRequestResponse } from "@/backend/extension/plasmo"; 7 8 8 9 let activeExtension = false; 9 10 ··· 32 33 }); 33 34 } 34 35 35 - export async function sendExtensionRequest( 36 + export async function sendExtensionRequest<T>( 36 37 ops: Omit<MessagesMetadata["makeRequest"]["req"], "requestDomain">, 37 - ): Promise<MessagesMetadata["makeRequest"]["res"] | null> { 38 + ): Promise<ExtensionMakeRequestResponse<T> | null> { 38 39 return sendMessage("makeRequest", { 39 40 requestDomain: window.location.origin, 40 41 ...ops,
+8 -6
src/backend/extension/plasmo.ts
··· 22 22 body?: string | FormData | URLSearchParams | Record<string, any>; 23 23 } 24 24 25 - export type ExtensionMakeRequestResponse = ExtensionBaseResponse<{ 26 - status: number; 27 - requestHeaders: Record<string, string>; 28 - responseHeaders: Record<string, string>; 29 - data: string | Record<string, unknown>; 25 + export type ExtensionMakeRequestResponse<T> = ExtensionBaseResponse<{ 26 + response: { 27 + statusCode: number; 28 + headers: Record<string, string>; 29 + finalUrl: string; 30 + body: T; 31 + }; 30 32 }>; 31 33 32 34 export interface ExtensionPrepareStreamRequest extends ExtensionBaseRequest { ··· 47 49 }; 48 50 makeRequest: { 49 51 req: ExtensionMakeRequest; 50 - res: ExtensionMakeRequestResponse; 52 + res: ExtensionMakeRequestResponse<any>; 51 53 }; 52 54 prepareStream: { 53 55 req: ExtensionPrepareStreamRequest;
+22 -2
src/backend/providers/fetchers.ts
··· 53 53 return fetcher; 54 54 } 55 55 56 + function makeFinalHeaders( 57 + readHeaders: string[], 58 + headers: Record<string, string>, 59 + ): Headers { 60 + const lowercasedHeaders = readHeaders.map((v) => v.toLowerCase()); 61 + return new Headers( 62 + Object.entries(headers).filter((entry) => 63 + lowercasedHeaders.includes(entry[0].toLowerCase()), 64 + ), 65 + ); 66 + } 67 + 56 68 export function makeExtensionFetcher() { 57 69 const fetcher: Fetcher = async (url, ops) => { 58 - return sendExtensionRequest({ 70 + const result = await sendExtensionRequest<any>({ 59 71 url, 60 72 ...ops, 61 - }) as any; 73 + }); 74 + if (!result?.success) throw new Error(`extension error: ${result?.error}`); 75 + const res = result.response; 76 + return { 77 + body: res.body, 78 + finalUrl: res.finalUrl, 79 + statusCode: res.statusCode, 80 + headers: makeFinalHeaders(ops.readHeaders, res.headers), 81 + }; 62 82 }; 63 83 return fetcher; 64 84 }