0.3.0 • Published 7 months ago

msw-higher-order v0.3.0

Weekly downloads
-
License
-
Repository
github
Last release
7 months ago

msw-higher-order

Higher-order functions for MSW request handlers.

!CAUTION I started this project after opening this discussion on the MSW repository. However, since I learned that you can throw mocked responses in MSW resolvers, higher-order functions look less useful in comparison. This is why I am archiving this project for now.

Installation

npm install msw-higher-order

Usage

buildResolverWrapper

The buildResolverWrapper function allows you to add pre-processing logic to your MSW request handlers:

import { buildResolverWrapper } from 'msw-higher-order';
import { http } from 'msw';

const handler = http.get('/api/resource', 
  buildResolverWrapper(
    async ({ request }) => {
      // Pre-processing logic
      if (someCondition) {
        return new Response('Error', { status: 400 });
      }
      return undefined; // Continue to main handler
    },
    async ({ request }) => {
      // Main handler logic
      return new Response('Success');
    }
  )
);

Zod Validation Example

You can use buildResolverWrapper with Zod for request validation:

import { buildResolverWrapper } from 'msw-higher-order';
import { http } from 'msw';
import { z } from 'zod';

const schema = z.object({
  id: z.string().uuid(),
});

const handler = http.post('/api/resource', 
  buildResolverWrapper(
    async ({ request }) => {
      const body = await request.json();
      const result = schema.safeParse(body);
      if (!result.success) {
        return new Response('Invalid data', { status: 400 });
      }
      return undefined; // Continue to main handler
    },
    async ({ request }) => {
      // Main handler logic
      return new Response('Success');
    }
  )
);

Motivation

MSW is a powerful tool for mocking HTTP requests in tests. However, it lacks support for higher-order functions, which can be useful for adding pre-processing logic to request handlers. This library aims to fill that gap by providing a set of higher-order functions that can be used to enhance MSW request handlers.

Think:

  • withAuth
  • withValidation
  • withWhatever
0.3.0

7 months ago

0.2.1

7 months ago

0.2.0

7 months ago

0.1.2

7 months ago

0.1.1

7 months ago

0.1.0

7 months ago

0.0.0

7 months ago