@mokup/server 1.1.1 → 1.1.3

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.
Files changed (72) hide show
  1. package/README.md +9 -0
  2. package/README.zh-CN.md +9 -0
  3. package/dist/connect.cjs +25 -0
  4. package/dist/connect.d.cts +19 -0
  5. package/dist/connect.d.mts +19 -0
  6. package/dist/connect.d.ts +19 -0
  7. package/dist/connect.mjs +23 -0
  8. package/dist/express.cjs +11 -0
  9. package/dist/express.d.cts +18 -0
  10. package/dist/express.d.mts +18 -0
  11. package/dist/express.d.ts +18 -0
  12. package/dist/express.mjs +9 -0
  13. package/dist/fastify.cjs +39 -0
  14. package/dist/fastify.d.cts +29 -0
  15. package/dist/fastify.d.mts +29 -0
  16. package/dist/fastify.d.ts +29 -0
  17. package/dist/fastify.mjs +37 -0
  18. package/dist/fetch-server.cjs +1659 -0
  19. package/dist/fetch-server.d.cts +108 -0
  20. package/dist/fetch-server.d.mts +108 -0
  21. package/dist/fetch-server.d.ts +108 -0
  22. package/dist/fetch-server.mjs +1652 -0
  23. package/dist/fetch.cjs +26 -0
  24. package/dist/fetch.d.cts +17 -0
  25. package/dist/fetch.d.mts +17 -0
  26. package/dist/fetch.d.ts +17 -0
  27. package/dist/fetch.mjs +24 -0
  28. package/dist/hono.cjs +27 -0
  29. package/dist/hono.d.cts +32 -0
  30. package/dist/hono.d.mts +32 -0
  31. package/dist/hono.d.ts +32 -0
  32. package/dist/hono.mjs +25 -0
  33. package/dist/index.cjs +29 -1677
  34. package/dist/index.d.cts +42 -136
  35. package/dist/index.d.mts +42 -136
  36. package/dist/index.d.ts +42 -136
  37. package/dist/index.mjs +28 -1666
  38. package/dist/koa.cjs +38 -0
  39. package/dist/koa.d.cts +29 -0
  40. package/dist/koa.d.mts +29 -0
  41. package/dist/koa.d.ts +29 -0
  42. package/dist/koa.mjs +36 -0
  43. package/dist/node.cjs +26 -0
  44. package/dist/node.d.cts +13 -0
  45. package/dist/node.d.mts +13 -0
  46. package/dist/node.d.ts +13 -0
  47. package/dist/node.mjs +19 -0
  48. package/dist/shared/server.CyVIKPsp.d.cts +214 -0
  49. package/dist/shared/server.CyVIKPsp.d.mts +214 -0
  50. package/dist/shared/server.CyVIKPsp.d.ts +214 -0
  51. package/dist/shared/server.D0gAciOr.d.cts +46 -0
  52. package/dist/shared/server.D0gAciOr.d.mts +46 -0
  53. package/dist/shared/server.D0gAciOr.d.ts +46 -0
  54. package/dist/shared/server.DkerfsA-.d.cts +73 -0
  55. package/dist/shared/server.DkerfsA-.d.mts +73 -0
  56. package/dist/shared/server.DkerfsA-.d.ts +73 -0
  57. package/dist/shared/{server.Dje1y79O.mjs → server.LbftO9Jh.mjs} +58 -77
  58. package/dist/shared/{server.BdTl0qJd.cjs → server.aaygIV2Q.cjs} +59 -77
  59. package/dist/worker-node.cjs +74 -0
  60. package/dist/worker-node.d.cts +40 -0
  61. package/dist/worker-node.d.mts +40 -0
  62. package/dist/worker-node.d.ts +40 -0
  63. package/dist/worker-node.mjs +72 -0
  64. package/dist/worker.cjs +6 -2
  65. package/dist/worker.d.cts +24 -2
  66. package/dist/worker.d.mts +24 -2
  67. package/dist/worker.d.ts +24 -2
  68. package/dist/worker.mjs +6 -2
  69. package/package.json +44 -4
  70. package/dist/shared/server.DNITwCtQ.d.cts +0 -15
  71. package/dist/shared/server.DNITwCtQ.d.mts +0 -15
  72. package/dist/shared/server.DNITwCtQ.d.ts +0 -15
@@ -0,0 +1,214 @@
1
+ import { RouteToken } from '@mokup/runtime';
2
+ import { MiddlewareHandler, Context } from '@mokup/shared/hono';
3
+
4
+ /**
5
+ * Supported HTTP methods for server dev routes.
6
+ *
7
+ * @example
8
+ * import type { HttpMethod } from '@mokup/server'
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/server'
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/server'
27
+ *
28
+ * const result: RouteHandlerResult = 'ok'
29
+ */
30
+ type RouteHandlerResult = RouteStaticResponse | Response;
31
+ /**
32
+ * Request handler signature for server dev routes.
33
+ *
34
+ * @example
35
+ * import type { RequestHandler } from '@mokup/server'
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/server'
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/server'
54
+ *
55
+ * const rule: RouteRule = {
56
+ * handler: () => ({ ok: true }),
57
+ * }
58
+ */
59
+ interface RouteRule {
60
+ /** Handler for the route. */
61
+ handler: RouteResponse;
62
+ /**
63
+ * Enable or disable this rule.
64
+ *
65
+ * @default true
66
+ */
67
+ enabled?: boolean;
68
+ /**
69
+ * Override response status code.
70
+ *
71
+ * @default 200
72
+ */
73
+ status?: number;
74
+ /**
75
+ * Additional response headers.
76
+ *
77
+ * @default {}
78
+ */
79
+ headers?: Record<string, string>;
80
+ /**
81
+ * Delay in milliseconds before responding.
82
+ *
83
+ * @default 0
84
+ */
85
+ delay?: number;
86
+ }
87
+ /**
88
+ * Directory-level config for server dev scanning.
89
+ *
90
+ * @example
91
+ * import type { RouteDirectoryConfig } from '@mokup/server'
92
+ *
93
+ * const config: RouteDirectoryConfig = { headers: { 'x-mokup': 'dir' } }
94
+ */
95
+ interface RouteDirectoryConfig {
96
+ /**
97
+ * Headers applied to routes in this directory.
98
+ *
99
+ * @default {}
100
+ */
101
+ headers?: Record<string, string>;
102
+ /**
103
+ * Default status code override.
104
+ *
105
+ * @default 200
106
+ */
107
+ status?: number;
108
+ /**
109
+ * Default delay in milliseconds.
110
+ *
111
+ * @default 0
112
+ */
113
+ delay?: number;
114
+ /**
115
+ * Enable or disable this directory.
116
+ *
117
+ * @default true
118
+ */
119
+ enabled?: boolean;
120
+ /**
121
+ * Ignore prefixes for files.
122
+ *
123
+ * @default ["."]
124
+ */
125
+ ignorePrefix?: string | string[];
126
+ /**
127
+ * Include filter.
128
+ *
129
+ * @default undefined
130
+ */
131
+ include?: RegExp | RegExp[];
132
+ /**
133
+ * Exclude filter.
134
+ *
135
+ * @default undefined
136
+ */
137
+ exclude?: RegExp | RegExp[];
138
+ /**
139
+ * Middleware for this directory.
140
+ *
141
+ * @default undefined
142
+ */
143
+ middleware?: MiddlewareHandler | MiddlewareHandler[];
144
+ }
145
+ /**
146
+ * Middleware execution position.
147
+ *
148
+ * @example
149
+ * import type { MiddlewarePosition } from '@mokup/server'
150
+ *
151
+ * const position: MiddlewarePosition = 'pre'
152
+ */
153
+ type MiddlewarePosition = 'pre' | 'normal' | 'post';
154
+ /**
155
+ * Middleware registry used by defineConfig.
156
+ *
157
+ * @example
158
+ * import type { MiddlewareRegistry } from '@mokup/server'
159
+ *
160
+ * const registry: MiddlewareRegistry = { use: () => {} }
161
+ */
162
+ interface MiddlewareRegistry {
163
+ use: (...handlers: MiddlewareHandler[]) => void;
164
+ }
165
+ /**
166
+ * Normalized middleware metadata.
167
+ *
168
+ * @example
169
+ * import type { ResolvedMiddleware } from '@mokup/server'
170
+ *
171
+ * const item: ResolvedMiddleware = { handle: () => {}, source: 'index.config.ts', index: 0 }
172
+ */
173
+ interface ResolvedMiddleware {
174
+ handle: MiddlewareHandler;
175
+ source: string;
176
+ index: number;
177
+ /**
178
+ * Position in the middleware chain.
179
+ *
180
+ * @default "normal"
181
+ */
182
+ position: MiddlewarePosition;
183
+ }
184
+ /**
185
+ * Fully resolved route metadata.
186
+ *
187
+ * @example
188
+ * import type { ResolvedRoute } from '@mokup/server'
189
+ *
190
+ * const route: ResolvedRoute = {
191
+ * file: '/mock/ping.get.ts',
192
+ * template: '/ping',
193
+ * method: 'GET',
194
+ * tokens: [{ type: 'static', value: 'ping' }],
195
+ * score: [4],
196
+ * handler: () => ({ ok: true }),
197
+ * }
198
+ */
199
+ interface ResolvedRoute {
200
+ file: string;
201
+ template: string;
202
+ method: HttpMethod;
203
+ tokens: RouteToken[];
204
+ score: number[];
205
+ handler: RouteResponse;
206
+ middlewares?: ResolvedMiddleware[];
207
+ status?: number;
208
+ headers?: Record<string, string>;
209
+ delay?: number;
210
+ ruleIndex?: number;
211
+ }
212
+ type RouteTable = ResolvedRoute[];
213
+
214
+ export type { MiddlewareRegistry as M, RouteDirectoryConfig as R, MiddlewarePosition as a, ResolvedMiddleware as b, RouteRule as c, RouteTable as d };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Minimal readable stream shape used by adapters.
3
+ *
4
+ * @example
5
+ * import type { ReadableStreamLike } from '@mokup/server'
6
+ *
7
+ * const stream: ReadableStreamLike = {
8
+ * on: () => {},
9
+ * }
10
+ */
11
+ interface ReadableStreamLike {
12
+ on: (event: string, listener: (...args: unknown[]) => void) => void;
13
+ }
14
+ /**
15
+ * Minimal Node request shape used by adapters.
16
+ *
17
+ * @example
18
+ * import type { NodeRequestLike } from '@mokup/server'
19
+ *
20
+ * const req: NodeRequestLike = { method: 'GET', url: '/api/ping' }
21
+ */
22
+ interface NodeRequestLike extends ReadableStreamLike {
23
+ method?: string;
24
+ url?: string;
25
+ originalUrl?: string;
26
+ headers?: Record<string, string | string[] | undefined>;
27
+ body?: unknown;
28
+ }
29
+ /**
30
+ * Minimal Node response shape used by adapters.
31
+ *
32
+ * @example
33
+ * import type { NodeResponseLike } from '@mokup/server'
34
+ *
35
+ * const res: NodeResponseLike = {
36
+ * setHeader: () => {},
37
+ * end: () => {},
38
+ * }
39
+ */
40
+ interface NodeResponseLike {
41
+ statusCode?: number;
42
+ setHeader: (name: string, value: string) => void;
43
+ end: (data?: string | Uint8Array | ArrayBuffer | null) => void;
44
+ }
45
+
46
+ export type { NodeRequestLike as N, NodeResponseLike as a };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Minimal readable stream shape used by adapters.
3
+ *
4
+ * @example
5
+ * import type { ReadableStreamLike } from '@mokup/server'
6
+ *
7
+ * const stream: ReadableStreamLike = {
8
+ * on: () => {},
9
+ * }
10
+ */
11
+ interface ReadableStreamLike {
12
+ on: (event: string, listener: (...args: unknown[]) => void) => void;
13
+ }
14
+ /**
15
+ * Minimal Node request shape used by adapters.
16
+ *
17
+ * @example
18
+ * import type { NodeRequestLike } from '@mokup/server'
19
+ *
20
+ * const req: NodeRequestLike = { method: 'GET', url: '/api/ping' }
21
+ */
22
+ interface NodeRequestLike extends ReadableStreamLike {
23
+ method?: string;
24
+ url?: string;
25
+ originalUrl?: string;
26
+ headers?: Record<string, string | string[] | undefined>;
27
+ body?: unknown;
28
+ }
29
+ /**
30
+ * Minimal Node response shape used by adapters.
31
+ *
32
+ * @example
33
+ * import type { NodeResponseLike } from '@mokup/server'
34
+ *
35
+ * const res: NodeResponseLike = {
36
+ * setHeader: () => {},
37
+ * end: () => {},
38
+ * }
39
+ */
40
+ interface NodeResponseLike {
41
+ statusCode?: number;
42
+ setHeader: (name: string, value: string) => void;
43
+ end: (data?: string | Uint8Array | ArrayBuffer | null) => void;
44
+ }
45
+
46
+ export type { NodeRequestLike as N, NodeResponseLike as a };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Minimal readable stream shape used by adapters.
3
+ *
4
+ * @example
5
+ * import type { ReadableStreamLike } from '@mokup/server'
6
+ *
7
+ * const stream: ReadableStreamLike = {
8
+ * on: () => {},
9
+ * }
10
+ */
11
+ interface ReadableStreamLike {
12
+ on: (event: string, listener: (...args: unknown[]) => void) => void;
13
+ }
14
+ /**
15
+ * Minimal Node request shape used by adapters.
16
+ *
17
+ * @example
18
+ * import type { NodeRequestLike } from '@mokup/server'
19
+ *
20
+ * const req: NodeRequestLike = { method: 'GET', url: '/api/ping' }
21
+ */
22
+ interface NodeRequestLike extends ReadableStreamLike {
23
+ method?: string;
24
+ url?: string;
25
+ originalUrl?: string;
26
+ headers?: Record<string, string | string[] | undefined>;
27
+ body?: unknown;
28
+ }
29
+ /**
30
+ * Minimal Node response shape used by adapters.
31
+ *
32
+ * @example
33
+ * import type { NodeResponseLike } from '@mokup/server'
34
+ *
35
+ * const res: NodeResponseLike = {
36
+ * setHeader: () => {},
37
+ * end: () => {},
38
+ * }
39
+ */
40
+ interface NodeResponseLike {
41
+ statusCode?: number;
42
+ setHeader: (name: string, value: string) => void;
43
+ end: (data?: string | Uint8Array | ArrayBuffer | null) => void;
44
+ }
45
+
46
+ export type { NodeRequestLike as N, NodeResponseLike as a };
@@ -0,0 +1,73 @@
1
+ import { RuntimeOptions, Manifest, ModuleMap } from '@mokup/runtime';
2
+
3
+ /**
4
+ * Options for server adapters built on top of the runtime.
5
+ *
6
+ * @example
7
+ * import type { ServerOptions } from '@mokup/server'
8
+ *
9
+ * const options: ServerOptions = {
10
+ * manifest: { version: 1, routes: [] },
11
+ * onNotFound: 'next',
12
+ * }
13
+ */
14
+ interface ServerOptions extends RuntimeOptions {
15
+ /**
16
+ * Behavior when no route matches.
17
+ *
18
+ * @default "next"
19
+ */
20
+ onNotFound?: 'next' | 'response';
21
+ }
22
+ /**
23
+ * Fetch handler signature used by server adapters.
24
+ *
25
+ * @example
26
+ * import type { FetchHandler } from '@mokup/server'
27
+ *
28
+ * const handler: FetchHandler = async (request) => new Response('ok')
29
+ */
30
+ type FetchHandler = (request: Request) => Promise<Response | null>;
31
+ /**
32
+ * Bundle input for Worker helpers.
33
+ *
34
+ * @example
35
+ * import type { WorkerBundle } from '@mokup/server'
36
+ *
37
+ * const bundle: WorkerBundle = {
38
+ * manifest: { version: 1, routes: [] },
39
+ * }
40
+ */
41
+ interface WorkerBundle {
42
+ /** Manifest for runtime execution. */
43
+ manifest: Manifest;
44
+ /**
45
+ * In-memory module map for handler execution.
46
+ *
47
+ * @default undefined
48
+ */
49
+ moduleMap?: ModuleMap;
50
+ /**
51
+ * Base directory for module resolution.
52
+ *
53
+ * @default undefined
54
+ */
55
+ moduleBase?: string | URL;
56
+ /**
57
+ * Behavior when no route matches.
58
+ *
59
+ * @default "response"
60
+ */
61
+ onNotFound?: 'next' | 'response';
62
+ }
63
+ /**
64
+ * Worker input accepted by createMokupWorker.
65
+ *
66
+ * @example
67
+ * import type { WorkerInput } from '@mokup/server'
68
+ *
69
+ * const input: WorkerInput = { version: 1, routes: [] }
70
+ */
71
+ type WorkerInput = Manifest | WorkerBundle;
72
+
73
+ export type { FetchHandler as F, ServerOptions as S, WorkerBundle as W, WorkerInput as a };
@@ -0,0 +1,73 @@
1
+ import { RuntimeOptions, Manifest, ModuleMap } from '@mokup/runtime';
2
+
3
+ /**
4
+ * Options for server adapters built on top of the runtime.
5
+ *
6
+ * @example
7
+ * import type { ServerOptions } from '@mokup/server'
8
+ *
9
+ * const options: ServerOptions = {
10
+ * manifest: { version: 1, routes: [] },
11
+ * onNotFound: 'next',
12
+ * }
13
+ */
14
+ interface ServerOptions extends RuntimeOptions {
15
+ /**
16
+ * Behavior when no route matches.
17
+ *
18
+ * @default "next"
19
+ */
20
+ onNotFound?: 'next' | 'response';
21
+ }
22
+ /**
23
+ * Fetch handler signature used by server adapters.
24
+ *
25
+ * @example
26
+ * import type { FetchHandler } from '@mokup/server'
27
+ *
28
+ * const handler: FetchHandler = async (request) => new Response('ok')
29
+ */
30
+ type FetchHandler = (request: Request) => Promise<Response | null>;
31
+ /**
32
+ * Bundle input for Worker helpers.
33
+ *
34
+ * @example
35
+ * import type { WorkerBundle } from '@mokup/server'
36
+ *
37
+ * const bundle: WorkerBundle = {
38
+ * manifest: { version: 1, routes: [] },
39
+ * }
40
+ */
41
+ interface WorkerBundle {
42
+ /** Manifest for runtime execution. */
43
+ manifest: Manifest;
44
+ /**
45
+ * In-memory module map for handler execution.
46
+ *
47
+ * @default undefined
48
+ */
49
+ moduleMap?: ModuleMap;
50
+ /**
51
+ * Base directory for module resolution.
52
+ *
53
+ * @default undefined
54
+ */
55
+ moduleBase?: string | URL;
56
+ /**
57
+ * Behavior when no route matches.
58
+ *
59
+ * @default "response"
60
+ */
61
+ onNotFound?: 'next' | 'response';
62
+ }
63
+ /**
64
+ * Worker input accepted by createMokupWorker.
65
+ *
66
+ * @example
67
+ * import type { WorkerInput } from '@mokup/server'
68
+ *
69
+ * const input: WorkerInput = { version: 1, routes: [] }
70
+ */
71
+ type WorkerInput = Manifest | WorkerBundle;
72
+
73
+ export type { FetchHandler as F, ServerOptions as S, WorkerBundle as W, WorkerInput as a };
@@ -0,0 +1,73 @@
1
+ import { RuntimeOptions, Manifest, ModuleMap } from '@mokup/runtime';
2
+
3
+ /**
4
+ * Options for server adapters built on top of the runtime.
5
+ *
6
+ * @example
7
+ * import type { ServerOptions } from '@mokup/server'
8
+ *
9
+ * const options: ServerOptions = {
10
+ * manifest: { version: 1, routes: [] },
11
+ * onNotFound: 'next',
12
+ * }
13
+ */
14
+ interface ServerOptions extends RuntimeOptions {
15
+ /**
16
+ * Behavior when no route matches.
17
+ *
18
+ * @default "next"
19
+ */
20
+ onNotFound?: 'next' | 'response';
21
+ }
22
+ /**
23
+ * Fetch handler signature used by server adapters.
24
+ *
25
+ * @example
26
+ * import type { FetchHandler } from '@mokup/server'
27
+ *
28
+ * const handler: FetchHandler = async (request) => new Response('ok')
29
+ */
30
+ type FetchHandler = (request: Request) => Promise<Response | null>;
31
+ /**
32
+ * Bundle input for Worker helpers.
33
+ *
34
+ * @example
35
+ * import type { WorkerBundle } from '@mokup/server'
36
+ *
37
+ * const bundle: WorkerBundle = {
38
+ * manifest: { version: 1, routes: [] },
39
+ * }
40
+ */
41
+ interface WorkerBundle {
42
+ /** Manifest for runtime execution. */
43
+ manifest: Manifest;
44
+ /**
45
+ * In-memory module map for handler execution.
46
+ *
47
+ * @default undefined
48
+ */
49
+ moduleMap?: ModuleMap;
50
+ /**
51
+ * Base directory for module resolution.
52
+ *
53
+ * @default undefined
54
+ */
55
+ moduleBase?: string | URL;
56
+ /**
57
+ * Behavior when no route matches.
58
+ *
59
+ * @default "response"
60
+ */
61
+ onNotFound?: 'next' | 'response';
62
+ }
63
+ /**
64
+ * Worker input accepted by createMokupWorker.
65
+ *
66
+ * @example
67
+ * import type { WorkerInput } from '@mokup/server'
68
+ *
69
+ * const input: WorkerInput = { version: 1, routes: [] }
70
+ */
71
+ type WorkerInput = Manifest | WorkerBundle;
72
+
73
+ export type { FetchHandler as F, ServerOptions as S, WorkerBundle as W, WorkerInput as a };