This example demonstrates how to use the @objectstack/plugin-msw package to mock ObjectStack APIs using Mock Service Worker (MSW).
- Browser Mode: Shows how to use MSW in a browser environment with standalone handlers
- Server Mode: Demonstrates MSW plugin integration with ObjectStack Runtime
src/browser.ts- Browser-based MSW setup matching the problem statementsrc/server.ts- Server-side MSW plugin integration with Runtime
import { setupWorker } from 'msw/browser';
import { http, HttpResponse } from 'msw';
import { ObjectStackServer } from '@objectstack/plugin-msw';
// Initialize mock server
ObjectStackServer.init(protocol);
// Define handlers
const handlers = [
http.get('/api/user/:id', async ({ params }) => {
const result = await ObjectStackServer.getUser(params.id);
return HttpResponse.json(result.data, { status: result.status });
})
];
// Start worker
const worker = setupWorker(...handlers);
await worker.start();import { ObjectStackKernel } from '@objectstack/runtime';
import { MSWPlugin } from '@objectstack/plugin-msw';
const kernel = new ObjectStackKernel([
// Your manifests...
new MSWPlugin({
baseUrl: '/api/v1',
logRequests: true
})
]);
await kernel.start();# Install dependencies
pnpm install
# Build
pnpm build
# Run server example
pnpm devThe MSW plugin automatically mocks the following endpoints:
GET /api/v1- DiscoveryGET /api/v1/meta- Metadata typesGET /api/v1/meta/:type- Metadata itemsGET /api/v1/meta/:type/:name- Specific metadataGET /api/v1/data/:object- Find recordsGET /api/v1/data/:object/:id- Get recordPOST /api/v1/data/:object- Create recordPATCH /api/v1/data/:object/:id- Update recordDELETE /api/v1/data/:object/:id- Delete recordGET /api/v1/ui/view/:object- UI view config
- @objectstack/plugin-msw - MSW Plugin package
- MSW Documentation - Official MSW docs