mokup 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,302 @@
1
+ import { MockEntryOptions, PlaygroundOptionsInput } from '@mokup/shared';
2
+ import { MiddlewareHandler, Context } from '@mokup/shared/hono';
3
+
4
+ /**
5
+ * Supported HTTP methods for mokup routes.
6
+ *
7
+ * @example
8
+ * import type { HttpMethod } from 'mokup/vite'
9
+ *
10
+ * const method: HttpMethod = 'GET'
11
+ */
12
+ type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';
13
+ /**
14
+ * Static response payloads supported by route rules.
15
+ *
16
+ * @example
17
+ * import type { RouteStaticResponse } from 'mokup/vite'
18
+ *
19
+ * const value: RouteStaticResponse = { ok: true }
20
+ */
21
+ type RouteStaticResponse = string | number | boolean | bigint | symbol | null | undefined | object;
22
+ /**
23
+ * Allowed return value from a route handler.
24
+ *
25
+ * @example
26
+ * import type { RouteHandlerResult } from 'mokup/vite'
27
+ *
28
+ * const result: RouteHandlerResult = 'ok'
29
+ */
30
+ type RouteHandlerResult = RouteStaticResponse | Response;
31
+ /**
32
+ * Request handler signature for mokup routes.
33
+ *
34
+ * @example
35
+ * import type { RequestHandler } from 'mokup/vite'
36
+ *
37
+ * const handler: RequestHandler = (c) => c.json({ ok: true })
38
+ */
39
+ type RequestHandler = (context: Context) => RouteHandlerResult | Promise<RouteHandlerResult>;
40
+ /**
41
+ * Route response as a static value or handler.
42
+ *
43
+ * @example
44
+ * import type { RouteResponse } from 'mokup/vite'
45
+ *
46
+ * const response: RouteResponse = { ok: true }
47
+ */
48
+ type RouteResponse = RouteStaticResponse | RequestHandler;
49
+ /**
50
+ * Rule metadata for a route handler.
51
+ *
52
+ * @example
53
+ * import type { RouteRule } from 'mokup/vite'
54
+ *
55
+ * const rule: RouteRule = {
56
+ * handler: () => ({ ok: true }),
57
+ * status: 200,
58
+ * }
59
+ */
60
+ interface RouteRule {
61
+ /** Handler for the route. */
62
+ handler: RouteResponse;
63
+ /**
64
+ * Enable or disable this rule.
65
+ *
66
+ * @default true
67
+ */
68
+ enabled?: boolean;
69
+ /**
70
+ * Override response status code.
71
+ *
72
+ * @default 200
73
+ */
74
+ status?: number;
75
+ /**
76
+ * Additional response headers.
77
+ *
78
+ * @default {}
79
+ */
80
+ headers?: Record<string, string>;
81
+ /**
82
+ * Delay in milliseconds before responding.
83
+ *
84
+ * @default 0
85
+ */
86
+ delay?: number;
87
+ }
88
+ /**
89
+ * Runtime mode for Vite integration.
90
+ *
91
+ * @example
92
+ * import type { RuntimeMode } from 'mokup/vite'
93
+ *
94
+ * const mode: RuntimeMode = 'sw'
95
+ */
96
+ type RuntimeMode = 'server' | 'sw';
97
+ /**
98
+ * Execution runtime for the Vite plugin.
99
+ *
100
+ * @example
101
+ * import type { ViteRuntime } from 'mokup/vite'
102
+ *
103
+ * const runtime: ViteRuntime = 'vite'
104
+ */
105
+ type ViteRuntime = 'vite' | 'worker';
106
+ /**
107
+ * Service worker behavior options for mokup.
108
+ *
109
+ * @example
110
+ * import type { ServiceWorkerOptions } from 'mokup/vite'
111
+ *
112
+ * const sw: ServiceWorkerOptions = {
113
+ * path: '/mokup-sw.js',
114
+ * scope: '/',
115
+ * }
116
+ */
117
+ interface ServiceWorkerOptions {
118
+ /**
119
+ * Service worker script path.
120
+ *
121
+ * @default "/mokup-sw.js"
122
+ */
123
+ path?: string;
124
+ /**
125
+ * Service worker scope.
126
+ *
127
+ * @default "/"
128
+ */
129
+ scope?: string;
130
+ /**
131
+ * Auto-register the service worker.
132
+ *
133
+ * @default true
134
+ */
135
+ register?: boolean;
136
+ /**
137
+ * Auto-unregister when no SW entries exist.
138
+ *
139
+ * @default false
140
+ */
141
+ unregister?: boolean;
142
+ /**
143
+ * Allow SW fallback to direct network when not matched.
144
+ *
145
+ * @default true
146
+ */
147
+ fallback?: boolean;
148
+ /**
149
+ * Base paths the service worker should handle.
150
+ *
151
+ * @default []
152
+ */
153
+ basePath?: string | string[];
154
+ }
155
+
156
+ /**
157
+ * Directory-level route configuration loaded from index.config.* files.
158
+ *
159
+ * @example
160
+ * import type { RouteDirectoryConfig } from 'mokup/vite'
161
+ *
162
+ * const config: RouteDirectoryConfig = {
163
+ * headers: { 'x-mokup': 'dir' },
164
+ * }
165
+ */
166
+ interface RouteDirectoryConfig {
167
+ /**
168
+ * Headers applied to routes under this directory.
169
+ *
170
+ * @default {}
171
+ */
172
+ headers?: Record<string, string>;
173
+ /**
174
+ * Default status code override.
175
+ *
176
+ * @default 200
177
+ */
178
+ status?: number;
179
+ /**
180
+ * Delay in milliseconds.
181
+ *
182
+ * @default 0
183
+ */
184
+ delay?: number;
185
+ /**
186
+ * Enable or disable routes under this directory.
187
+ *
188
+ * @default true
189
+ */
190
+ enabled?: boolean;
191
+ /**
192
+ * Ignore prefixes within the directory.
193
+ *
194
+ * @default ["."]
195
+ */
196
+ ignorePrefix?: string | string[];
197
+ /**
198
+ * Include filter for route files.
199
+ *
200
+ * @default undefined
201
+ */
202
+ include?: RegExp | RegExp[];
203
+ /**
204
+ * Exclude filter for route files.
205
+ *
206
+ * @default undefined
207
+ */
208
+ exclude?: RegExp | RegExp[];
209
+ /**
210
+ * Middleware for this directory.
211
+ *
212
+ * @default undefined
213
+ */
214
+ middleware?: MiddlewareHandler | MiddlewareHandler[];
215
+ }
216
+ /**
217
+ * Middleware execution position.
218
+ *
219
+ * @example
220
+ * import type { MiddlewarePosition } from 'mokup/vite'
221
+ *
222
+ * const position: MiddlewarePosition = 'pre'
223
+ */
224
+ type MiddlewarePosition = 'pre' | 'normal' | 'post';
225
+ /**
226
+ * Middleware registry used by defineConfig.
227
+ *
228
+ * @example
229
+ * import type { MiddlewareRegistry } from 'mokup/vite'
230
+ *
231
+ * const registry: MiddlewareRegistry = { use: () => {} }
232
+ */
233
+ interface MiddlewareRegistry {
234
+ use: (...handlers: MiddlewareHandler[]) => void;
235
+ }
236
+ /**
237
+ * Options for a single Vite entry.
238
+ *
239
+ * @example
240
+ * import type { VitePluginOptions } from 'mokup/vite'
241
+ *
242
+ * const options: VitePluginOptions = {
243
+ * dir: 'mock',
244
+ * prefix: '/api',
245
+ * }
246
+ */
247
+ interface VitePluginOptions extends MockEntryOptions {
248
+ /**
249
+ * Runtime mode per entry.
250
+ *
251
+ * @default "server"
252
+ */
253
+ mode?: RuntimeMode;
254
+ /**
255
+ * Service worker options for this entry.
256
+ *
257
+ * @default undefined
258
+ */
259
+ sw?: ServiceWorkerOptions;
260
+ }
261
+ /**
262
+ * Top-level plugin options for mokup/vite.
263
+ *
264
+ * @example
265
+ * import type { MokupPluginOptions } from 'mokup/vite'
266
+ *
267
+ * const options: MokupPluginOptions = {
268
+ * entries: { dir: 'mock' },
269
+ * playground: true,
270
+ * }
271
+ */
272
+ interface MokupPluginOptions {
273
+ /**
274
+ * One or more entries to scan for mocks.
275
+ *
276
+ * @default [{ }]
277
+ */
278
+ entries?: VitePluginOptions | VitePluginOptions[];
279
+ /**
280
+ * Playground configuration.
281
+ *
282
+ * @default { enabled: true, path: "/__mokup" }
283
+ */
284
+ playground?: PlaygroundOptionsInput;
285
+ /**
286
+ * Runtime for the Vite plugin.
287
+ *
288
+ * @default "vite"
289
+ */
290
+ runtime?: ViteRuntime;
291
+ }
292
+ /**
293
+ * Alias for Vite plugin options.
294
+ *
295
+ * @example
296
+ * import type { VitePluginOptionsInput } from 'mokup/vite'
297
+ *
298
+ * const options: VitePluginOptionsInput = { entries: { dir: 'mock' } }
299
+ */
300
+ type VitePluginOptionsInput = MokupPluginOptions;
301
+
302
+ export type { HttpMethod as H, MokupPluginOptions as M, RequestHandler as R, ServiceWorkerOptions as S, VitePluginOptions as V, MiddlewarePosition as a, MiddlewareRegistry as b, RouteDirectoryConfig as c, RouteResponse as d, RouteRule as e, RuntimeMode as f, VitePluginOptionsInput as g, ViteRuntime as h };