6989a98d75
- Arkitektur: docs/auth/passwordless-architecture.md - Backend: iom/quixzoom-auth-service/ (FastAPI + Redis) - Webb: quixzoom-market-pages/se/login/ (QR-kod + polling) - App: iom/quixzoom-app/src/features/auth/ (push + deep links) Flöde: QR-kod → app-godkännande → webb-inloggad
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import type * as http from 'node:http';
|
|
type Interceptor<TReq = http.IncomingMessage, TRes = http.ServerResponse> = (buffer: Buffer, proxyRes: http.IncomingMessage, req: TReq, res: TRes) => Promise<Buffer | string>;
|
|
/**
|
|
* Intercept responses from upstream.
|
|
* Automatically decompress (deflate, gzip, brotli, zstd).
|
|
* Give developer the opportunity to modify intercepted Buffer and http.ServerResponse
|
|
*
|
|
* NOTE: must set options.selfHandleResponse=true (prevent automatic call of res.end())
|
|
*
|
|
* @example
|
|
*
|
|
* ```ts
|
|
* createProxyMiddleware({
|
|
* target: 'http://example.com',
|
|
* selfHandleResponse: true, // MUST set selfHandleResponse=true
|
|
* on: {
|
|
* proxyRes: responseInterceptor(async (buffer, proxyRes, req, res) => {
|
|
* // modify intercepted buffer and return modified buffer
|
|
* const modifiedBuffer = Buffer.from(buffer.toString().replace(/Example/g, 'Demo'), 'utf8');
|
|
* return modifiedBuffer;
|
|
* }),
|
|
* }
|
|
* });
|
|
* ```
|
|
*/
|
|
export declare function responseInterceptor<TReq extends http.IncomingMessage = http.IncomingMessage, TRes extends http.ServerResponse = http.ServerResponse>(interceptor: Interceptor<TReq, TRes>): (proxyRes: http.IncomingMessage, req: TReq, res: TRes) => Promise<void>;
|
|
export {};
|