Spaces:
Running
Running
| import { Emitter } from 'strict-event-emitter' | |
| import { | |
| LifeCycleEventEmitter, | |
| LifeCycleEventsMap, | |
| SharedOptions, | |
| } from '~/core/sharedOptions' | |
| import { ServiceWorkerMessage } from './start/utils/createMessageChannel' | |
| import { RequestHandler } from '~/core/handlers/RequestHandler' | |
| import type { HttpRequestEventMap, Interceptor } from '@mswjs/interceptors' | |
| import type { Path } from '~/core/utils/matching/matchRequestUrl' | |
| import type { RequiredDeep } from '~/core/typeUtils' | |
| import type { WebSocketHandler } from '~/core/handlers/WebSocketHandler' | |
| export type ResolvedPath = Path | URL | |
| type RequestWithoutMethods = Omit< | |
| Request, | |
| | 'text' | |
| | 'body' | |
| | 'json' | |
| | 'blob' | |
| | 'arrayBuffer' | |
| | 'formData' | |
| | 'clone' | |
| | 'signal' | |
| | 'isHistoryNavigation' | |
| | 'isReloadNavigation' | |
| > | |
| /** | |
| * Request representation received from the worker message event. | |
| */ | |
| export interface ServiceWorkerIncomingRequest extends RequestWithoutMethods { | |
| /** | |
| * Unique ID of the request generated once the request is | |
| * intercepted by the "fetch" event in the Service Worker. | |
| */ | |
| id: string | |
| body?: ArrayBuffer | null | |
| } | |
| export type ServiceWorkerIncomingResponse = Pick< | |
| Response, | |
| 'type' | 'ok' | 'status' | 'statusText' | 'body' | 'headers' | 'redirected' | |
| > & { | |
| requestId: string | |
| isMockedResponse: boolean | |
| } | |
| /** | |
| * Map of the events that can be received from the Service Worker. | |
| */ | |
| export interface ServiceWorkerIncomingEventsMap { | |
| MOCKING_ENABLED: { | |
| client: { | |
| id: string | |
| frameType: string | |
| } | |
| } | |
| INTEGRITY_CHECK_RESPONSE: { | |
| packageVersion: string | |
| checksum: string | |
| } | |
| KEEPALIVE_RESPONSE: never | |
| REQUEST: ServiceWorkerIncomingRequest | |
| RESPONSE: ServiceWorkerIncomingResponse | |
| } | |
| /** | |
| * Map of the events that can be sent to the Service Worker | |
| * from any execution context. | |
| */ | |
| export type ServiceWorkerOutgoingEventTypes = | |
| | 'MOCK_ACTIVATE' | |
| | 'MOCK_DEACTIVATE' | |
| | 'INTEGRITY_CHECK_REQUEST' | |
| | 'KEEPALIVE_REQUEST' | |
| | 'CLIENT_CLOSED' | |
| export interface StringifiedResponse extends ResponseInit { | |
| body: string | ArrayBuffer | ReadableStream<Uint8Array> | null | |
| } | |
| export interface StrictEventListener<EventType extends Event> { | |
| (event: EventType): void | |
| } | |
| export interface SetupWorkerInternalContext { | |
| isMockingEnabled: boolean | |
| startOptions: RequiredDeep<StartOptions> | |
| worker: ServiceWorker | null | |
| registration: ServiceWorkerRegistration | null | |
| getRequestHandlers(): Array<RequestHandler | WebSocketHandler> | |
| requests: Map<string, Request> | |
| emitter: Emitter<LifeCycleEventsMap> | |
| keepAliveInterval?: number | |
| workerChannel: { | |
| /** | |
| * Adds a Service Worker event listener. | |
| */ | |
| on<EventType extends keyof ServiceWorkerIncomingEventsMap>( | |
| eventType: EventType, | |
| callback: ( | |
| event: MessageEvent, | |
| message: ServiceWorkerMessage< | |
| EventType, | |
| ServiceWorkerIncomingEventsMap[EventType] | |
| >, | |
| ) => void, | |
| ): void | |
| send<EventType extends ServiceWorkerOutgoingEventTypes>( | |
| eventType: EventType, | |
| ): void | |
| } | |
| events: { | |
| /** | |
| * Adds an event listener on the given target. | |
| * Returns a clean-up function that removes that listener. | |
| */ | |
| addListener<EventType extends Event>( | |
| target: EventTarget, | |
| eventType: string, | |
| callback: StrictEventListener<EventType>, | |
| ): () => void | |
| /** | |
| * Removes all currently attached listeners. | |
| */ | |
| removeAllListeners(): void | |
| /** | |
| * Awaits a given message type from the Service Worker. | |
| */ | |
| once<EventType extends keyof ServiceWorkerIncomingEventsMap>( | |
| eventType: EventType, | |
| ): Promise< | |
| ServiceWorkerMessage<EventType, ServiceWorkerIncomingEventsMap[EventType]> | |
| > | |
| } | |
| supports: { | |
| serviceWorkerApi: boolean | |
| readableStreamTransfer: boolean | |
| } | |
| fallbackInterceptor?: Interceptor<HttpRequestEventMap> | |
| } | |
| export type ServiceWorkerInstanceTuple = [ | |
| ServiceWorker | null, | |
| ServiceWorkerRegistration, | |
| ] | |
| export type FindWorker = ( | |
| scriptUrl: string, | |
| mockServiceWorkerUrl: string, | |
| ) => boolean | |
| export interface StartOptions extends SharedOptions { | |
| /** | |
| * Service Worker registration options. | |
| */ | |
| serviceWorker?: { | |
| /** | |
| * Custom url to the worker script. | |
| * @default "/mockServiceWorker.js" | |
| */ | |
| url?: string | |
| options?: RegistrationOptions | |
| } | |
| /** | |
| * Disables the logging of the intercepted requests | |
| * into browser's console. | |
| * @default false | |
| */ | |
| quiet?: boolean | |
| /** | |
| * Defers any network requests until the Service Worker | |
| * instance is activated. | |
| * @default true | |
| */ | |
| waitUntilReady?: boolean | |
| /** | |
| * A custom lookup function to find a Mock Service Worker in the list | |
| * of all registered Service Workers on the page. | |
| */ | |
| findWorker?: FindWorker | |
| } | |
| export type StartReturnType = Promise<ServiceWorkerRegistration | undefined> | |
| export type StartHandler = ( | |
| options: RequiredDeep<StartOptions>, | |
| initialOptions: StartOptions, | |
| ) => StartReturnType | |
| export type StopHandler = () => void | |
| export interface SetupWorker { | |
| /** | |
| * Registers and activates the mock Service Worker. | |
| * | |
| * @see {@link https://mswjs.io/docs/api/setup-worker/start `worker.start()` API reference} | |
| */ | |
| start: (options?: StartOptions) => StartReturnType | |
| /** | |
| * Stops requests interception for the current client. | |
| * | |
| * @see {@link https://mswjs.io/docs/api/setup-worker/stop `worker.stop()` API reference} | |
| */ | |
| stop: StopHandler | |
| /** | |
| * Prepends given request handlers to the list of existing handlers. | |
| * @param {RequestHandler[]} handlers List of runtime request handlers. | |
| * | |
| * @see {@link https://mswjs.io/docs/api/setup-worker/use `worker.use()` API reference} | |
| */ | |
| use: (...handlers: Array<RequestHandler | WebSocketHandler>) => void | |
| /** | |
| * Marks all request handlers that respond using `res.once()` as unused. | |
| * | |
| * @see {@link https://mswjs.io/docs/api/setup-worker/restore-handlers `worker.restoreHandlers()` API reference} | |
| */ | |
| restoreHandlers: () => void | |
| /** | |
| * Resets request handlers to the initial list given to the `setupWorker` call, or to the explicit next request handlers list, if given. | |
| * @param {RequestHandler[]} nextHandlers List of the new initial request handlers. | |
| * | |
| * @see {@link https://mswjs.io/docs/api/setup-worker/reset-handlers `worker.resetHandlers()` API reference} | |
| */ | |
| resetHandlers: ( | |
| ...nextHandlers: Array<RequestHandler | WebSocketHandler> | |
| ) => void | |
| /** | |
| * Returns a readonly list of currently active request handlers. | |
| * | |
| * @see {@link https://mswjs.io/docs/api/setup-worker/list-handlers `worker.listHandlers()` API reference} | |
| */ | |
| listHandlers(): ReadonlyArray<RequestHandler | WebSocketHandler> | |
| /** | |
| * Life-cycle events. | |
| * Life-cycle events allow you to subscribe to the internal library events occurring during the request/response handling. | |
| * | |
| * @see {@link https://mswjs.io/docs/api/life-cycle-events Life-cycle Events API reference} | |
| */ | |
| events: LifeCycleEventEmitter<LifeCycleEventsMap> | |
| } | |