@lark-apaas/devtool-kits 0.1.0-alpha.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,179 @@
1
+ import { Router, RequestHandler, Application } from 'express';
2
+
3
+ /**
4
+ * 标准化基础路径,确保以 '/' 开头且不包含 trailing slash
5
+ * @param basePath 原始基础路径
6
+ * @returns 标准化后的基础路径
7
+ */
8
+ declare function normalizeBasePath(basePath: string): string;
9
+
10
+ type PostprocessStats = {
11
+ replacedUnknown: number;
12
+ unmatchedUnknown: string[];
13
+ };
14
+ declare function postprocessDrizzleSchema(targetPath: string): PostprocessStats | undefined;
15
+
16
+ /**
17
+ * Shared context passed to all middlewares
18
+ */
19
+ interface MiddlewareContext {
20
+ /** Base path for the application (e.g., '/', '/app') */
21
+ basePath: string;
22
+ /** Whether running in development mode */
23
+ isDev: boolean;
24
+ /** Root directory of the project */
25
+ rootDir: string;
26
+ /** Additional custom options */
27
+ [key: string]: any;
28
+ }
29
+ /**
30
+ * Express-compatible app (rspack/webpack dev server)
31
+ */
32
+ type ExpressApp = Application;
33
+ /**
34
+ * Vite-compatible middleware handler (Connect server)
35
+ * Using 'any' to avoid dependency on vite types
36
+ */
37
+ type ViteMiddleware = any;
38
+ /**
39
+ * Route registration info for better visibility
40
+ */
41
+ interface RouteInfo {
42
+ /** HTTP method (GET, POST, etc.) or '*' for all methods */
43
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'ALL' | '*';
44
+ /** Route path (relative to mount point) */
45
+ path: string;
46
+ /** Description of what this route does */
47
+ description: string;
48
+ }
49
+ /**
50
+ * Route-based middleware
51
+ * Mounts a router at a specific path
52
+ */
53
+ interface RouteMiddleware {
54
+ /** Unique name for this middleware */
55
+ name: string;
56
+ /**
57
+ * Mount path for this middleware (relative to basePath)
58
+ * e.g., '/dev/logs', '/openapi.json'
59
+ * Required for route-based middlewares
60
+ */
61
+ mountPath: string;
62
+ /**
63
+ * List of routes provided by this middleware
64
+ * Useful for debugging and documentation
65
+ */
66
+ routes?: RouteInfo[];
67
+ /**
68
+ * Determine if this middleware should be enabled
69
+ * @param context - Shared context
70
+ * @returns true if middleware should be registered
71
+ */
72
+ enabled?: (context: MiddlewareContext) => boolean;
73
+ /**
74
+ * Create router for this middleware
75
+ * @param context - Shared context
76
+ * @returns Express Router
77
+ */
78
+ createRouter: (context: MiddlewareContext) => Router;
79
+ /** Explicitly disallow createHandler for route middleware */
80
+ createHandler?: never;
81
+ }
82
+ /**
83
+ * Global middleware
84
+ * Applies to all requests without a specific mount path
85
+ */
86
+ interface GlobalMiddleware {
87
+ /** Unique name for this middleware */
88
+ name: string;
89
+ /**
90
+ * Global middlewares should not have a mount path
91
+ * If you need path-specific behavior, use RouteMiddleware instead
92
+ */
93
+ mountPath?: never;
94
+ /**
95
+ * Determine if this middleware should be enabled
96
+ * @param context - Shared context
97
+ * @returns true if middleware should be registered
98
+ */
99
+ enabled?: (context: MiddlewareContext) => boolean;
100
+ /**
101
+ * Create handler for this middleware
102
+ * @param context - Shared context
103
+ * @returns Express request handler
104
+ */
105
+ createHandler: (context: MiddlewareContext) => RequestHandler;
106
+ /** Explicitly disallow createRouter for global middleware */
107
+ createRouter?: never;
108
+ }
109
+ /**
110
+ * Middleware can be either route-based or global
111
+ */
112
+ type Middleware = RouteMiddleware | GlobalMiddleware;
113
+
114
+ /**
115
+ * Options for OpenAPI middleware
116
+ */
117
+ interface OpenapiMiddlewareOptions {
118
+ /** Path to the openapi.json file */
119
+ openapiFilePath: string;
120
+ /** Enable source code enhancement */
121
+ enableEnhancement?: boolean;
122
+ }
123
+
124
+ /**
125
+ * Creates OpenAPI middleware that serves enhanced openapi.json
126
+ * Supports both rspack/webpack and Vite dev servers
127
+ */
128
+ declare function createOpenapiMiddleware(options: OpenapiMiddlewareOptions): RouteMiddleware;
129
+
130
+ interface DevLogsMiddlewareOptions {
131
+ /** Directory containing log files */
132
+ logDir?: string;
133
+ }
134
+ /**
135
+ * Creates dev logs middleware for viewing application logs
136
+ * Supports both rspack/webpack and Vite dev servers
137
+ */
138
+ declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
139
+
140
+ /**
141
+ * Register middlewares for Express-compatible servers or Vite
142
+ * @param server - Express app or Vite middleware instance
143
+ * @param middlewares - List of middlewares to register
144
+ * @param options - Optional context configuration
145
+ * @returns Promise that resolves when all middlewares are registered
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * // In rspack/webpack setupMiddlewares
150
+ * setupMiddlewares: (middlewares, devServer) => {
151
+ * if (devServer.app) {
152
+ * registerMiddlewares(devServer.app, [
153
+ * // Global middlewares (execute first)
154
+ * createCorsMiddleware({ origin: '*' }),
155
+ * createAuthMiddleware(),
156
+ *
157
+ * // Route middlewares
158
+ * createDevLogsMiddleware({ logDir: './logs' }),
159
+ * createOpenapiMiddleware({ openapiFilePath: './openapi.json' })
160
+ * ], {
161
+ * basePath: '/api',
162
+ * isDev: true,
163
+ * rootDir: __dirname
164
+ * });
165
+ * }
166
+ * return middlewares;
167
+ * }
168
+ *
169
+ * // In Vite configureServer
170
+ * configureServer: (server) => {
171
+ * registerMiddlewares(server.middlewares, [
172
+ * createDevLogsMiddleware({ logDir: './logs' })
173
+ * ], { basePath: '/', isDev: true, rootDir: __dirname });
174
+ * }
175
+ * ```
176
+ */
177
+ declare function registerMiddlewares(server: ExpressApp | ViteMiddleware, middlewares: Middleware[], options?: Partial<MiddlewareContext>): Promise<void>;
178
+
179
+ export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type RouteInfo, type RouteMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, normalizeBasePath, postprocessDrizzleSchema, registerMiddlewares };
@@ -0,0 +1,179 @@
1
+ import { Router, RequestHandler, Application } from 'express';
2
+
3
+ /**
4
+ * 标准化基础路径,确保以 '/' 开头且不包含 trailing slash
5
+ * @param basePath 原始基础路径
6
+ * @returns 标准化后的基础路径
7
+ */
8
+ declare function normalizeBasePath(basePath: string): string;
9
+
10
+ type PostprocessStats = {
11
+ replacedUnknown: number;
12
+ unmatchedUnknown: string[];
13
+ };
14
+ declare function postprocessDrizzleSchema(targetPath: string): PostprocessStats | undefined;
15
+
16
+ /**
17
+ * Shared context passed to all middlewares
18
+ */
19
+ interface MiddlewareContext {
20
+ /** Base path for the application (e.g., '/', '/app') */
21
+ basePath: string;
22
+ /** Whether running in development mode */
23
+ isDev: boolean;
24
+ /** Root directory of the project */
25
+ rootDir: string;
26
+ /** Additional custom options */
27
+ [key: string]: any;
28
+ }
29
+ /**
30
+ * Express-compatible app (rspack/webpack dev server)
31
+ */
32
+ type ExpressApp = Application;
33
+ /**
34
+ * Vite-compatible middleware handler (Connect server)
35
+ * Using 'any' to avoid dependency on vite types
36
+ */
37
+ type ViteMiddleware = any;
38
+ /**
39
+ * Route registration info for better visibility
40
+ */
41
+ interface RouteInfo {
42
+ /** HTTP method (GET, POST, etc.) or '*' for all methods */
43
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'ALL' | '*';
44
+ /** Route path (relative to mount point) */
45
+ path: string;
46
+ /** Description of what this route does */
47
+ description: string;
48
+ }
49
+ /**
50
+ * Route-based middleware
51
+ * Mounts a router at a specific path
52
+ */
53
+ interface RouteMiddleware {
54
+ /** Unique name for this middleware */
55
+ name: string;
56
+ /**
57
+ * Mount path for this middleware (relative to basePath)
58
+ * e.g., '/dev/logs', '/openapi.json'
59
+ * Required for route-based middlewares
60
+ */
61
+ mountPath: string;
62
+ /**
63
+ * List of routes provided by this middleware
64
+ * Useful for debugging and documentation
65
+ */
66
+ routes?: RouteInfo[];
67
+ /**
68
+ * Determine if this middleware should be enabled
69
+ * @param context - Shared context
70
+ * @returns true if middleware should be registered
71
+ */
72
+ enabled?: (context: MiddlewareContext) => boolean;
73
+ /**
74
+ * Create router for this middleware
75
+ * @param context - Shared context
76
+ * @returns Express Router
77
+ */
78
+ createRouter: (context: MiddlewareContext) => Router;
79
+ /** Explicitly disallow createHandler for route middleware */
80
+ createHandler?: never;
81
+ }
82
+ /**
83
+ * Global middleware
84
+ * Applies to all requests without a specific mount path
85
+ */
86
+ interface GlobalMiddleware {
87
+ /** Unique name for this middleware */
88
+ name: string;
89
+ /**
90
+ * Global middlewares should not have a mount path
91
+ * If you need path-specific behavior, use RouteMiddleware instead
92
+ */
93
+ mountPath?: never;
94
+ /**
95
+ * Determine if this middleware should be enabled
96
+ * @param context - Shared context
97
+ * @returns true if middleware should be registered
98
+ */
99
+ enabled?: (context: MiddlewareContext) => boolean;
100
+ /**
101
+ * Create handler for this middleware
102
+ * @param context - Shared context
103
+ * @returns Express request handler
104
+ */
105
+ createHandler: (context: MiddlewareContext) => RequestHandler;
106
+ /** Explicitly disallow createRouter for global middleware */
107
+ createRouter?: never;
108
+ }
109
+ /**
110
+ * Middleware can be either route-based or global
111
+ */
112
+ type Middleware = RouteMiddleware | GlobalMiddleware;
113
+
114
+ /**
115
+ * Options for OpenAPI middleware
116
+ */
117
+ interface OpenapiMiddlewareOptions {
118
+ /** Path to the openapi.json file */
119
+ openapiFilePath: string;
120
+ /** Enable source code enhancement */
121
+ enableEnhancement?: boolean;
122
+ }
123
+
124
+ /**
125
+ * Creates OpenAPI middleware that serves enhanced openapi.json
126
+ * Supports both rspack/webpack and Vite dev servers
127
+ */
128
+ declare function createOpenapiMiddleware(options: OpenapiMiddlewareOptions): RouteMiddleware;
129
+
130
+ interface DevLogsMiddlewareOptions {
131
+ /** Directory containing log files */
132
+ logDir?: string;
133
+ }
134
+ /**
135
+ * Creates dev logs middleware for viewing application logs
136
+ * Supports both rspack/webpack and Vite dev servers
137
+ */
138
+ declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
139
+
140
+ /**
141
+ * Register middlewares for Express-compatible servers or Vite
142
+ * @param server - Express app or Vite middleware instance
143
+ * @param middlewares - List of middlewares to register
144
+ * @param options - Optional context configuration
145
+ * @returns Promise that resolves when all middlewares are registered
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * // In rspack/webpack setupMiddlewares
150
+ * setupMiddlewares: (middlewares, devServer) => {
151
+ * if (devServer.app) {
152
+ * registerMiddlewares(devServer.app, [
153
+ * // Global middlewares (execute first)
154
+ * createCorsMiddleware({ origin: '*' }),
155
+ * createAuthMiddleware(),
156
+ *
157
+ * // Route middlewares
158
+ * createDevLogsMiddleware({ logDir: './logs' }),
159
+ * createOpenapiMiddleware({ openapiFilePath: './openapi.json' })
160
+ * ], {
161
+ * basePath: '/api',
162
+ * isDev: true,
163
+ * rootDir: __dirname
164
+ * });
165
+ * }
166
+ * return middlewares;
167
+ * }
168
+ *
169
+ * // In Vite configureServer
170
+ * configureServer: (server) => {
171
+ * registerMiddlewares(server.middlewares, [
172
+ * createDevLogsMiddleware({ logDir: './logs' })
173
+ * ], { basePath: '/', isDev: true, rootDir: __dirname });
174
+ * }
175
+ * ```
176
+ */
177
+ declare function registerMiddlewares(server: ExpressApp | ViteMiddleware, middlewares: Middleware[], options?: Partial<MiddlewareContext>): Promise<void>;
178
+
179
+ export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type RouteInfo, type RouteMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, normalizeBasePath, postprocessDrizzleSchema, registerMiddlewares };