Sha256: 05f5a37f996171f2315886a463f7861a10e9ed2de13cb19a5c9ec01048beb84a

Contents?: true

Size: 1.98 KB

Versions: 26

Compression:

Stored size: 1.98 KB

Contents

import {
  DefaultBodyType,
  RequestHandlerOptions,
  ResponseResolver,
} from './handlers/RequestHandler'
import {
  HttpMethods,
  HttpHandler,
  HttpRequestResolverExtras,
} from './handlers/HttpHandler'
import type { Path, PathParams } from './utils/matching/matchRequestUrl'

export type HttpRequestHandler = <
  Params extends PathParams<keyof Params> = PathParams,
  RequestBodyType extends DefaultBodyType = DefaultBodyType,
  // Response body type MUST be undefined by default.
  // This is how we can distinguish between a handler that
  // returns plain "Response" and the one returning "HttpResponse"
  // to enforce a stricter response body type.
  ResponseBodyType extends DefaultBodyType = undefined,
  RequestPath extends Path = Path,
>(
  path: RequestPath,
  resolver: HttpResponseResolver<Params, RequestBodyType, ResponseBodyType>,
  options?: RequestHandlerOptions,
) => HttpHandler

export type HttpResponseResolver<
  Params extends PathParams<keyof Params> = PathParams,
  RequestBodyType extends DefaultBodyType = DefaultBodyType,
  ResponseBodyType extends DefaultBodyType = DefaultBodyType,
> = ResponseResolver<
  HttpRequestResolverExtras<Params>,
  RequestBodyType,
  ResponseBodyType
>

function createHttpHandler<Method extends HttpMethods | RegExp>(
  method: Method,
): HttpRequestHandler {
  return (path, resolver, options = {}) => {
    return new HttpHandler(method, path, resolver, options)
  }
}

/**
 * A namespace to intercept and mock HTTP requests.
 *
 * @example
 * http.get('/user', resolver)
 * http.post('/post/:id', resolver)
 *
 * @see {@link https://mswjs.io/docs/api/http `http` API reference}
 */
export const http = {
  all: createHttpHandler(/.+/),
  head: createHttpHandler(HttpMethods.HEAD),
  get: createHttpHandler(HttpMethods.GET),
  post: createHttpHandler(HttpMethods.POST),
  put: createHttpHandler(HttpMethods.PUT),
  delete: createHttpHandler(HttpMethods.DELETE),
  patch: createHttpHandler(HttpMethods.PATCH),
  options: createHttpHandler(HttpMethods.OPTIONS),
}

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
clapton-0.0.26 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.25 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.24 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.23 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.22 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.21 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.20 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.19 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.18 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.17 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.16 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.15 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.14 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.13 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.12 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.11 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.10 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.9 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.8 lib/clapton/javascripts/node_modules/msw/src/core/http.ts
clapton-0.0.7 lib/clapton/javascripts/node_modules/msw/src/core/http.ts