Skip to content

Commit 7bf3fa3

Browse files
committed
enable mocks in stackblitz
1 parent 57cfbc8 commit 7bf3fa3

File tree

9 files changed

+63
-16
lines changed

9 files changed

+63
-16
lines changed

examples/vite/src/App.tsx

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
1-
import { setupWorker } from 'msw/browser';
2-
import { useRef, useState } from 'react';
3-
import { CommentData, PostData, baseUrl, getMockHandlers } from 'tanstack-query-builder-example-mocks';
4-
import './App.css';
51
import { QueryClientProvider } from '@tanstack/react-query';
62
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
3+
import { useRef, useState } from 'react';
4+
import { CommentData, PostData, baseUrl, getMockHandlers } from 'tanstack-query-builder-example-mocks';
5+
import { setupMSW } from 'tanstack-query-builder-example-mocks/setup-msw';
76
import { HttpQueryBuilder } from 'tanstack-query-builder/http';
87
import { queryClient } from './client';
8+
import './App.css';
99
import './index.css';
1010

11-
const isTest = import.meta.env.MODE === 'test';
12-
13-
await setupWorker(...getMockHandlers(!isTest)).start({
14-
onUnhandledRequest: 'bypass',
15-
quiet: true,
16-
});
11+
await setupMSW(...getMockHandlers()).start({ onUnhandledRequest: 'bypass', quiet: true, waitUntilReady: true });
1712

1813
const builder = new HttpQueryBuilder().withClient(queryClient).withBaseUrl(baseUrl).withTagTypes<{
1914
post: PostData;
@@ -22,8 +17,6 @@ const builder = new HttpQueryBuilder().withClient(queryClient).withBaseUrl(baseU
2217
refreshable: unknown;
2318
}>();
2419

25-
console.log(builder);
26-
2720
const resetMutation = builder.withPath('/reset').withMethod('post').withUpdates('*');
2821

2922
const postsQuery = builder

examples/vite/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"strict": true,
1616
"noUnusedLocals": true,
1717
"noUnusedParameters": true,
18-
"noFallthroughCasesInSwitch": true
18+
"noFallthroughCasesInSwitch": true,
19+
"customConditions": ["tanstack-query-builder@dev"]
1920
},
2021
"include": ["src", "**/*.d.ts"],
2122
"references": [{ "path": "./tsconfig.node.json" }, { "path": "./tsconfig.test.json" }]

examples/vite/vite.config.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@
33
import react from '@vitejs/plugin-react';
44
import { defineConfig } from 'vite';
55

6+
const isStackblitz = process.env.SHELL === '/bin/jsh';
7+
68
// https://vitejs.dev/config/
79
export default defineConfig({
810
plugins: [react()],
911
optimizeDeps: { exclude: ['tanstack-query-builder'] },
12+
server: { port: 3000 },
13+
resolve: {
14+
conditions: [...(isStackblitz ? ['stackblitz', 'node'] : []), 'tanstack-query-builder@dev'],
15+
},
1016
test: {
1117
globals: true,
1218
includeTaskLocation: true,

packages/example-mocks/package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
"type": "module",
66
"main": "./src/index.ts",
77
"exports": {
8-
".": "./src/index.ts"
8+
".": "./src/index.ts",
9+
"./setup-msw": {
10+
"default": "./src/setup-msw/setup.ts",
11+
"stackblitz": "./src/setup-msw/setup.native.ts"
12+
}
913
},
1014
"scripts": {
1115
"start": "vite",

packages/example-mocks/src/mocks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ function createMockData() {
2323
return { users, posts, comments };
2424
}
2525

26-
export function getMockHandlers(withLocalStorage = true) {
26+
export function getMockHandlers(withLocalStorage = import.meta.env.MODE !== 'test') {
2727
function saveMockData(saveData = { users, posts, comments }) {
2828
if (!withLocalStorage) return;
2929
localStorage.setItem('mockData', JSON.stringify(saveData));
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { setupServer } from 'msw/native';
2+
3+
import type { RequestHandler } from 'msw';
4+
import type { SetupWorker } from 'msw/browser';
5+
6+
export function setupMSW(...handlers: Array<RequestHandler>): SetupWorker {
7+
const server = setupServer(...handlers);
8+
9+
return {
10+
async start(options) {
11+
server.listen({
12+
onUnhandledRequest: options?.onUnhandledRequest || 'error',
13+
});
14+
return undefined;
15+
},
16+
stop() {
17+
server.close();
18+
},
19+
use(...handlers) {
20+
server.use(...handlers);
21+
},
22+
listHandlers() {
23+
return server.listHandlers();
24+
},
25+
resetHandlers() {
26+
server.resetHandlers();
27+
},
28+
restoreHandlers() {
29+
return server.restoreHandlers;
30+
},
31+
get events() {
32+
return server.events;
33+
},
34+
};
35+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { setupWorker } from 'msw/browser';
2+
3+
import type { RequestHandler } from 'msw';
4+
5+
export function setupMSW(...handlers: Array<RequestHandler>) {
6+
return setupWorker(...handlers);
7+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/// <reference types="vite/client" />
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export * from './request';
21
export * from './HttpQueryBuilder';
2+
export * from './request';

0 commit comments

Comments
 (0)