- Delete old Vite+Svelte frontend - Initialize new SvelteKit project with TypeScript - Configure Tailwind CSS v4 + DaisyUI - Implement JWT authentication with auto-refresh - Create login page with form validation (Zod) - Add protected route guards - Update Docker configuration for single-stage build - Add E2E tests with Playwright (6/11 passing) - Fix Svelte 5 reactivity with $state() runes Known issues: - 5 E2E tests failing (timing/async issues) - Token refresh implementation needs debugging - Validation error display timing
137 lines
3.6 KiB
TypeScript
137 lines
3.6 KiB
TypeScript
import IRequestInit from './types/IRequestInit.js';
|
|
import IRequestInfo from './types/IRequestInfo.js';
|
|
import Headers from './Headers.js';
|
|
import Response from './Response.js';
|
|
import IBrowserFrame from '../browser/types/IBrowserFrame.js';
|
|
import BrowserWindow from '../window/BrowserWindow.js';
|
|
/**
|
|
* Handles fetch requests.
|
|
*
|
|
* Based on:
|
|
* https://github.com/node-fetch/node-fetch/blob/main/src/index.js
|
|
*
|
|
* @see https://fetch.spec.whatwg.org/#http-network-fetch
|
|
*/
|
|
export default class Fetch {
|
|
#private;
|
|
private reject;
|
|
private resolve;
|
|
private listeners;
|
|
private isChunkedTransfer;
|
|
private isProperLastChunkReceived;
|
|
private previousChunk;
|
|
private nodeRequest;
|
|
private nodeResponse;
|
|
private response;
|
|
private responseHeaders;
|
|
private interceptor;
|
|
private request;
|
|
private redirectCount;
|
|
private disableCache;
|
|
private disableSameOriginPolicy;
|
|
private disablePreload;
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param options Options.
|
|
* @param options.browserFrame Browser frame.
|
|
* @param options.window Window.
|
|
* @param options.url URL.
|
|
* @param [options.init] Init.
|
|
* @param [options.redirectCount] Redirect count.
|
|
* @param [options.contentType] Content Type.
|
|
* @param [options.disableCache] Disables the use of cached responses. It will still store the response in the cache.
|
|
* @param [options.disableSameOriginPolicy] Disables the Same-Origin policy.
|
|
* @param [options.unfilteredHeaders] Unfiltered headers - necessary for preflight requests.
|
|
* @param [options.disablePreload] Disables the use of preloaded responses.
|
|
*/
|
|
constructor(options: {
|
|
browserFrame: IBrowserFrame;
|
|
window: BrowserWindow;
|
|
url: IRequestInfo;
|
|
init?: IRequestInit;
|
|
redirectCount?: number;
|
|
contentType?: string;
|
|
disableCache?: boolean;
|
|
disableSameOriginPolicy?: boolean;
|
|
unfilteredHeaders?: Headers;
|
|
disablePreload?: boolean;
|
|
});
|
|
/**
|
|
* Sends request.
|
|
*
|
|
* @returns Response.
|
|
*/
|
|
send(): Promise<Response>;
|
|
/**
|
|
* Returns cached response.
|
|
*
|
|
* @returns Response.
|
|
*/
|
|
private getCachedResponse;
|
|
/**
|
|
* Returns virtual server response.
|
|
*
|
|
* @returns Response.
|
|
*/
|
|
private getVirtualServerResponse;
|
|
/**
|
|
* Checks if the request complies with the Cross-Origin policy.
|
|
*
|
|
* @returns True if it complies with the policy.
|
|
*/
|
|
private compliesWithCrossOriginPolicy;
|
|
/**
|
|
* Sends request.
|
|
*
|
|
* @returns Response.
|
|
*/
|
|
private sendRequest;
|
|
/**
|
|
* Event listener for "socket" event.
|
|
*
|
|
* @param socket Socket.
|
|
*/
|
|
private onSocket;
|
|
/**
|
|
* Event listener for signal "abort" event.
|
|
*
|
|
* @param event Event.
|
|
*/
|
|
private onSignalAbort;
|
|
/**
|
|
* Event listener for request "error" event.
|
|
*
|
|
* @param error Error.
|
|
*/
|
|
private onError;
|
|
/**
|
|
* Triggered when the async task manager aborts.
|
|
*/
|
|
private onAsyncTaskManagerAbort;
|
|
/**
|
|
* Event listener for request "response" event.
|
|
*
|
|
* @param nodeResponse Node response.
|
|
*/
|
|
private onResponse;
|
|
/**
|
|
* Handles redirect response.
|
|
*
|
|
* @param nodeResponse Node response.
|
|
* @param responseHeaders Headers.
|
|
* @returns True if redirect response was handled, false otherwise.
|
|
*/
|
|
private handleRedirectResponse;
|
|
/**
|
|
* Finalizes the request.
|
|
*/
|
|
private finalizeRequest;
|
|
/**
|
|
* Aborts the request.
|
|
*
|
|
* @param reason Reason.
|
|
*/
|
|
private abort;
|
|
}
|
|
//# sourceMappingURL=Fetch.d.ts.map
|