vector-framework 0.8.1 → 0.9.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.
Files changed (56) hide show
  1. package/README.md +78 -56
  2. package/dist/cache/manager.d.ts +1 -1
  3. package/dist/cache/manager.d.ts.map +1 -1
  4. package/dist/cache/manager.js +8 -3
  5. package/dist/cache/manager.js.map +1 -1
  6. package/dist/cli/index.js +134 -68
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/core/config-loader.d.ts +13 -0
  9. package/dist/core/config-loader.d.ts.map +1 -0
  10. package/dist/core/config-loader.js +166 -0
  11. package/dist/core/config-loader.js.map +1 -0
  12. package/dist/core/router.d.ts +1 -0
  13. package/dist/core/router.d.ts.map +1 -1
  14. package/dist/core/router.js +5 -1
  15. package/dist/core/router.js.map +1 -1
  16. package/dist/core/vector.d.ts +10 -12
  17. package/dist/core/vector.d.ts.map +1 -1
  18. package/dist/core/vector.js +37 -31
  19. package/dist/core/vector.js.map +1 -1
  20. package/dist/dev/route-generator.js +3 -3
  21. package/dist/dev/route-generator.js.map +1 -1
  22. package/dist/dev/route-scanner.d.ts.map +1 -1
  23. package/dist/dev/route-scanner.js +15 -4
  24. package/dist/dev/route-scanner.js.map +1 -1
  25. package/dist/http.d.ts +6 -1
  26. package/dist/http.d.ts.map +1 -1
  27. package/dist/http.js +13 -4
  28. package/dist/http.js.map +1 -1
  29. package/dist/index.d.ts +4 -12
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/index.mjs +5 -5
  34. package/dist/middleware/manager.d.ts +2 -1
  35. package/dist/middleware/manager.d.ts.map +1 -1
  36. package/dist/middleware/manager.js +4 -0
  37. package/dist/middleware/manager.js.map +1 -1
  38. package/dist/types/index.d.ts +26 -0
  39. package/dist/types/index.d.ts.map +1 -1
  40. package/dist/utils/path.d.ts +3 -0
  41. package/dist/utils/path.d.ts.map +1 -0
  42. package/dist/utils/path.js +9 -0
  43. package/dist/utils/path.js.map +1 -0
  44. package/package.json +2 -2
  45. package/src/cache/manager.ts +15 -5
  46. package/src/cli/index.ts +156 -71
  47. package/src/core/config-loader.ts +193 -0
  48. package/src/core/router.ts +6 -1
  49. package/src/core/vector.ts +39 -39
  50. package/src/dev/route-generator.ts +3 -3
  51. package/src/dev/route-scanner.ts +15 -4
  52. package/src/http.ts +21 -5
  53. package/src/index.ts +11 -16
  54. package/src/middleware/manager.ts +16 -4
  55. package/src/types/index.ts +45 -1
  56. package/src/utils/path.ts +9 -0
package/README.md CHANGED
@@ -4,41 +4,51 @@
4
4
 
5
5
  Vector brings the blazing performance of Bun to developers who appreciate the simplicity and elegance of frameworks like Encore. Build production-ready APIs with a familiar, declarative syntax while leveraging Bun's incredible speed.
6
6
 
7
- ## Why Vector?
8
-
9
- If you've been looking for Encore-like developer experience with Bun's performance, Vector is your answer. Define your routes declaratively, enjoy automatic type safety, and ship faster than ever.
10
-
11
- ## Features
12
-
13
- - **Fast & Lightweight** - Built on Bun and itty-router for maximum performance
14
- - **Type-Safe** - Full TypeScript support with excellent type inference
15
- - **Auto Route Discovery** - Automatically discovers and loads routes from your filesystem
16
- - **Middleware System** - Flexible pre/post request middleware pipeline
17
- - **Built-in Authentication** - Simple but powerful authentication system
18
- - **Response Caching** - Automatic response caching with configurable TTL
19
- - **CORS Support** - Configurable CORS with sensible defaults
20
- - **Developer Experience** - Auto route discovery and CLI tools
21
-
22
7
  ## Quick Start
23
8
 
24
9
  ### Installation
25
10
 
26
11
  ```bash
27
- bun add vector
12
+ bun add vector-framework
13
+ ```
14
+
15
+ ### Configuration
16
+
17
+ Create a `vector.config.ts` file in your project root:
18
+
19
+ ```javascript
20
+ // vector.config.js
21
+ export default {
22
+ port: 3000, // Server port (default: 3000)
23
+ hostname: "localhost", // Server hostname (default: localhost)
24
+ routesDir: "./routes", // Routes directory (default: ./routes)
25
+ development: true, // Development mode
26
+ reusePort: true, // Reuse port (default: true)
27
+ autoDiscover: true, // Auto-discover routes (default: true)
28
+
29
+ // CORS configuration
30
+ cors: {
31
+ origin: "*", // String, array, or function
32
+ credentials: true, // Allow credentials
33
+ allowHeaders: ["Content-Type", "Authorization"],
34
+ allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
35
+ exposeHeaders: ["X-Total-Count"],
36
+ maxAge: 86400, // Preflight cache duration in seconds
37
+ },
38
+ };
28
39
  ```
29
40
 
30
41
  ### Your First API (Encore-style)
31
42
 
32
43
  ```typescript
33
44
  // routes/hello.ts
34
- import { route } from "vector";
45
+ import { route } from "vector-framework";
35
46
 
36
47
  // Public endpoint - clean and declarative
37
48
  export const hello = route(
38
49
  {
39
50
  method: "GET",
40
51
  path: "/hello/:name",
41
- expose: true,
42
52
  },
43
53
  async (req) => {
44
54
  const { name } = req.params!;
@@ -51,7 +61,6 @@ export const getProfile = route(
51
61
  {
52
62
  method: "GET",
53
63
  path: "/profile",
54
- expose: true,
55
64
  auth: true, // That's it! Auth handled.
56
65
  },
57
66
  async (req) => {
@@ -67,7 +76,7 @@ export const getProfile = route(
67
76
 
68
77
  ```typescript
69
78
  // server.ts
70
- import vector from "vector";
79
+ import vector from "vector-framework";
71
80
 
72
81
  // Set up auth (once, globally)
73
82
  vector.protected = async (request) => {
@@ -83,13 +92,44 @@ vector.protected = async (request) => {
83
92
  vector.serve({ port: 3000 });
84
93
  ```
85
94
 
95
+ ### CLI Commands
96
+
97
+ ```bash
98
+ # Run development server
99
+ bun vector dev
100
+
101
+ # Run production server
102
+ bun vector start
103
+
104
+ # Build for production
105
+ bun vector build
106
+
107
+ # Run with custom options
108
+ bun vector dev --port 3000 --routes ./api
109
+ ```
110
+
111
+ ## Why Vector?
112
+
113
+ If you've been looking for Encore-like developer experience with Bun's performance, Vector is your answer. Define your routes declaratively, enjoy automatic type safety, and ship faster than ever.
114
+
115
+ ## Features
116
+
117
+ - **Fast & Lightweight** - Built on Bun and itty-router for maximum performance
118
+ - **Type-Safe** - Full TypeScript support with excellent type inference
119
+ - **Auto Route Discovery** - Automatically discovers and loads routes from your filesystem
120
+ - **Middleware System** - Flexible pre/post request middleware pipeline
121
+ - **Built-in Authentication** - Simple but powerful authentication system
122
+ - **Response Caching** - Automatic response caching with configurable TTL
123
+ - **CORS Support** - Configurable CORS with sensible defaults
124
+ - **Developer Experience** - Auto route discovery and CLI tools
125
+
86
126
  ## Familiar Patterns, Modern Performance
87
127
 
88
128
  ### Real-World Example: User Service
89
129
 
90
130
  ```typescript
91
131
  // routes/users.ts
92
- import { route } from "vector";
132
+ import { route } from "vector-framework";
93
133
  import { db } from "../db";
94
134
 
95
135
  // Public endpoint with caching
@@ -97,7 +137,6 @@ export const listUsers = route(
97
137
  {
98
138
  method: "GET",
99
139
  path: "/users",
100
- expose: true,
101
140
  cache: 300, // Cache for 5 minutes
102
141
  },
103
142
  async () => {
@@ -111,7 +150,6 @@ export const createUser = route(
111
150
  {
112
151
  method: "POST",
113
152
  path: "/users",
114
- expose: true,
115
153
  auth: true, // Auth required
116
154
  },
117
155
  async (req) => {
@@ -130,7 +168,6 @@ export const getUser = route(
130
168
  {
131
169
  method: "GET",
132
170
  path: "/users/:id",
133
- expose: true,
134
171
  },
135
172
  async (req) => {
136
173
  const { id } = req.params!;
@@ -196,41 +233,13 @@ Switching from Encore? You'll feel right at home. Vector provides the same decla
196
233
 
197
234
  **The key difference:** Vector runs on Bun, giving you significantly better performance and lower resource usage while maintaining the developer experience you love.
198
235
 
199
- ## CLI Commands
200
-
201
- Vector includes a built-in CLI for development and production:
202
-
203
- ```bash
204
- # Development server
205
- bun run dev
206
-
207
- # Production server
208
- bun run start
209
-
210
- # Run with custom options
211
- bun run src/cli/index.ts dev --port 3000 --routes ./api
212
- ```
213
-
214
- Or use npm scripts:
215
-
216
- ```bash
217
- # Start development server
218
- bun run dev
219
-
220
- # Start production server
221
- bun run start
222
-
223
- # Build for production
224
- bun run build
225
- ```
226
-
227
236
  ## Route Options
228
237
 
229
238
  ```typescript
230
239
  interface RouteOptions {
231
240
  method: string; // HTTP method (GET, POST, etc.)
232
241
  path: string; // Route path with params (/users/:id)
233
- expose?: boolean; // Make route accessible (default: false)
242
+ expose?: boolean; // Make route accessible (default: true)
234
243
  auth?: boolean; // Require authentication (default: false)
235
244
  cache?:
236
245
  | number
@@ -324,6 +333,19 @@ interface VectorConfig {
324
333
  reusePort?: boolean; // Reuse port (default: true)
325
334
  development?: boolean; // Development mode
326
335
  routesDir?: string; // Routes directory (default: ./routes)
336
+ autoDiscover?: boolean; // Auto-discover routes (default: true)
337
+ cors?: CorsOptions; // CORS configuration
338
+ before?: BeforeMiddlewareHandler[]; // Pre-request middleware
339
+ finally?: AfterMiddlewareHandler[]; // Post-response middleware
340
+ }
341
+
342
+ interface CorsOptions {
343
+ origin?: string | string[] | ((origin: string) => boolean);
344
+ credentials?: boolean;
345
+ allowHeaders?: string | string[];
346
+ allowMethods?: string | string[];
347
+ exposeHeaders?: string | string[];
348
+ maxAge?: number;
327
349
  }
328
350
  ```
329
351
 
@@ -363,8 +385,8 @@ my-app/
363
385
  Vector is written in TypeScript and provides full type safety with customizable types:
364
386
 
365
387
  ```typescript
366
- import { createVector, route, APIError } from "vector";
367
- import type { VectorRequest, VectorTypes } from "vector";
388
+ import { createVector, route, APIError } from "vector-framework";
389
+ import type { VectorRequest, VectorTypes } from "vector-framework";
368
390
 
369
391
  // Define your custom user type
370
392
  interface MyUser {
@@ -413,7 +435,7 @@ Vector provides comprehensive built-in error responses for all HTTP status codes
413
435
  ### Common Client Errors (4xx)
414
436
 
415
437
  ```typescript
416
- import { APIError } from "vector";
438
+ import { APIError } from "vector-framework";
417
439
 
418
440
  // Basic errors
419
441
  APIError.badRequest("Invalid input"); // 400
@@ -1,4 +1,4 @@
1
- import type { CacheHandler, DefaultVectorTypes, GetCacheType, VectorTypes } from '../types';
1
+ import type { CacheHandler, DefaultVectorTypes, GetCacheType, VectorTypes } from "../types";
2
2
  export declare class CacheManager<TTypes extends VectorTypes = DefaultVectorTypes> {
3
3
  private cacheHandler;
4
4
  private memoryCache;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/cache/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO5F,qBAAa,YAAY,CAAC,MAAM,SAAS,WAAW,GAAG,kBAAkB;IACvE,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,eAAe,CAAsB;IAE7C,eAAe,CAAC,OAAO,EAAE,YAAY;IAI/B,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,GAAG,GAAE,MAAiC,GACrC,OAAO,CAAC,CAAC,CAAC;YAYC,kBAAkB;IAkBhC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IActB,KAAK,IAAI,IAAI;IAQP,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,GAAG,GAAE,MAAiC,GACrC,OAAO,CAAC,IAAI,CAAC;IAchB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYzB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,MAAM;CAMpE"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/cache/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACZ,MAAM,UAAU,CAAC;AAOlB,qBAAa,YAAY,CAAC,MAAM,SAAS,WAAW,GAAG,kBAAkB;IACvE,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,eAAe,CAAsB;IAE7C,eAAe,CAAC,OAAO,EAAE,YAAY;IAI/B,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,GAAG,GAAE,MAAiC,GACrC,OAAO,CAAC,CAAC,CAAC;YAYC,kBAAkB;IAkBhC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IActB,KAAK,IAAI,IAAI;IAQP,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,GAAG,GAAE,MAAiC,GACrC,OAAO,CAAC,IAAI,CAAC;IAchB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYzB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,MAAM;CAWpE"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_CONFIG } from '../constants';
1
+ import { DEFAULT_CONFIG } from "../constants";
2
2
  export class CacheManager {
3
3
  cacheHandler = null;
4
4
  memoryCache = new Map();
@@ -85,8 +85,13 @@ export class CacheManager {
85
85
  }
86
86
  generateKey(request, options) {
87
87
  const url = new URL(request.url);
88
- const parts = [request.method, url.pathname, url.search, options?.authUser?.id || 'anonymous'];
89
- return parts.join(':');
88
+ const parts = [
89
+ request.method,
90
+ url.pathname,
91
+ url.search,
92
+ options?.authUser?.id || "anonymous",
93
+ ];
94
+ return parts.join(":");
90
95
  }
91
96
  }
92
97
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/cache/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/cache/manager.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -1,123 +1,189 @@
1
1
  #!/usr/bin/env bun
2
- import { join } from 'node:path';
3
- import { parseArgs } from 'node:util';
4
- import vector from '../core/vector';
2
+ import { watch } from "node:fs";
3
+ import { parseArgs } from "node:util";
4
+ import { getVectorInstance } from "../core/vector";
5
+ import { ConfigLoader } from "../core/config-loader";
5
6
  const { values, positionals } = parseArgs({
6
7
  args: Bun.argv.slice(2),
7
8
  options: {
8
9
  port: {
9
- type: 'string',
10
- short: 'p',
11
- default: '3000',
10
+ type: "string",
11
+ short: "p",
12
+ default: "3000",
12
13
  },
13
14
  host: {
14
- type: 'string',
15
- short: 'h',
16
- default: 'localhost',
15
+ type: "string",
16
+ short: "h",
17
+ default: "localhost",
17
18
  },
18
19
  routes: {
19
- type: 'string',
20
- short: 'r',
21
- default: './routes',
20
+ type: "string",
21
+ short: "r",
22
+ default: "./routes",
22
23
  },
23
24
  watch: {
24
- type: 'boolean',
25
- short: 'w',
25
+ type: "boolean",
26
+ short: "w",
26
27
  default: true,
27
28
  },
28
29
  cors: {
29
- type: 'boolean',
30
+ type: "boolean",
30
31
  default: true,
31
32
  },
32
33
  },
33
34
  strict: true,
34
35
  allowPositionals: true,
35
36
  });
36
- const command = positionals[0] || 'dev';
37
+ const command = positionals[0] || "dev";
37
38
  async function runDev() {
38
- const isDev = command === 'dev';
39
- console.log(`\n→ Starting Vector ${isDev ? 'development' : 'production'} server\n`);
40
- const config = {
41
- port: Number.parseInt(values.port),
42
- hostname: values.host,
43
- routesDir: values.routes,
44
- development: isDev,
45
- autoDiscover: true,
46
- cors: values.cors
47
- ? {
48
- origin: '*',
49
- credentials: true,
50
- allowHeaders: 'Content-Type, Authorization',
51
- allowMethods: 'GET, POST, PUT, PATCH, DELETE, OPTIONS',
52
- exposeHeaders: 'Authorization',
53
- maxAge: 86400,
54
- }
55
- : undefined,
56
- };
57
- try {
58
- const userConfigPath = join(process.cwd(), 'vector.config.ts');
39
+ const isDev = command === "dev";
40
+ console.log(`\n→ Starting Vector ${isDev ? "development" : "production"} server\n`);
41
+ let server = null;
42
+ let vector = null;
43
+ async function startServer() {
59
44
  try {
60
- const userConfig = await import(userConfigPath);
61
- if (userConfig.default) {
62
- Object.assign(config, userConfig.default);
45
+ // Load configuration using ConfigLoader
46
+ const configLoader = new ConfigLoader();
47
+ const config = await configLoader.load();
48
+ // Merge CLI options with loaded config
49
+ config.port = config.port || Number.parseInt(values.port);
50
+ config.hostname = config.hostname || values.host;
51
+ config.routesDir = config.routesDir || values.routes;
52
+ config.development = isDev;
53
+ config.autoDiscover = true;
54
+ // Apply CLI CORS option if not set in config
55
+ if (!config.cors && values.cors) {
56
+ config.cors = {
57
+ origin: "*",
58
+ credentials: true,
59
+ allowHeaders: "Content-Type, Authorization",
60
+ allowMethods: "GET, POST, PUT, PATCH, DELETE, OPTIONS",
61
+ exposeHeaders: "Authorization",
62
+ maxAge: 86400,
63
+ };
64
+ }
65
+ // Get Vector instance and configure handlers
66
+ vector = getVectorInstance();
67
+ // Load and set auth handler if configured
68
+ const authHandler = await configLoader.loadAuthHandler();
69
+ if (authHandler) {
70
+ vector.setProtectedHandler(authHandler);
71
+ }
72
+ // Load and set cache handler if configured
73
+ const cacheHandler = await configLoader.loadCacheHandler();
74
+ if (cacheHandler) {
75
+ vector.setCacheHandler(cacheHandler);
76
+ }
77
+ // Start the server
78
+ server = await vector.startServer(config);
79
+ const gray = "\x1b[90m";
80
+ const reset = "\x1b[0m";
81
+ const cyan = "\x1b[36m";
82
+ const green = "\x1b[32m";
83
+ console.log(` ${gray}Routes${reset} ${config.routesDir}`);
84
+ if (isDev && values.watch) {
85
+ console.log(` ${gray}Watching${reset} All project files`);
63
86
  }
87
+ console.log(` ${gray}CORS${reset} ${values.cors ? "Enabled" : "Disabled"}`);
88
+ console.log(` ${gray}Mode${reset} ${isDev ? "Development" : "Production"}\n`);
89
+ console.log(` ${green}Ready${reset} → ${cyan}http://${config.hostname}:${config.port}${reset}\n`);
90
+ return { server, vector, config };
64
91
  }
65
- catch {
66
- // No user config file, use defaults
92
+ catch (error) {
93
+ console.error("[ERROR] Failed to start server:", error);
94
+ throw error;
67
95
  }
68
- await vector.serve(config);
69
- const gray = '\x1b[90m';
70
- const reset = '\x1b[0m';
71
- const cyan = '\x1b[36m';
72
- const green = '\x1b[32m';
73
- console.log(` ${gray}Routes${reset} ${config.routesDir}`);
96
+ }
97
+ try {
98
+ // Start the server initially
99
+ const result = await startServer();
100
+ server = result.server;
101
+ // Setup file watching for hot reload
74
102
  if (isDev && values.watch) {
75
- console.log(` ${gray}Watching${reset} Enabled`);
103
+ try {
104
+ let reloadTimeout = null;
105
+ // Watch entire project directory for changes
106
+ watch(process.cwd(), { recursive: true }, async (_, filename) => {
107
+ if (filename &&
108
+ (filename.endsWith(".ts") ||
109
+ filename.endsWith(".js") ||
110
+ filename.endsWith(".json")) &&
111
+ !filename.includes("node_modules") &&
112
+ !filename.includes(".git")) {
113
+ // Debounce reload to avoid multiple restarts
114
+ if (reloadTimeout) {
115
+ clearTimeout(reloadTimeout);
116
+ }
117
+ reloadTimeout = setTimeout(async () => {
118
+ console.log(`\n šŸ”„ File changed: ${filename}`);
119
+ console.log(" šŸ”„ Reloading server...\n");
120
+ // Stop the current server
121
+ if (vector) {
122
+ vector.stop();
123
+ }
124
+ // Clear module cache to ensure fresh imports
125
+ for (const key in require.cache) {
126
+ if (!key.includes("node_modules")) {
127
+ delete require.cache[key];
128
+ }
129
+ }
130
+ // Restart the server
131
+ try {
132
+ const result = await startServer();
133
+ server = result.server;
134
+ }
135
+ catch (error) {
136
+ console.error(" āŒ Failed to reload server:", error);
137
+ }
138
+ }, 100); // 100ms debounce
139
+ }
140
+ });
141
+ }
142
+ catch (err) {
143
+ console.warn(" āš ļø File watching not available");
144
+ }
76
145
  }
77
- console.log(` ${gray}CORS${reset} ${values.cors ? 'Enabled' : 'Disabled'}`);
78
- console.log(` ${gray}Mode${reset} ${isDev ? 'Development' : 'Production'}\n`);
79
- console.log(` ${green}Ready${reset} → ${cyan}http://${config.hostname}:${config.port}${reset}\n`);
80
146
  }
81
147
  catch (error) {
82
- console.error('[ERROR] Failed to start server:', error);
148
+ console.error("[ERROR] Failed to start server:", error);
83
149
  process.exit(1);
84
150
  }
85
151
  }
86
152
  async function runBuild() {
87
- console.log('\n→ Building Vector application\n');
153
+ console.log("\n→ Building Vector application\n");
88
154
  try {
89
- const { RouteScanner } = await import('../dev/route-scanner');
90
- const { RouteGenerator } = await import('../dev/route-generator');
155
+ const { RouteScanner } = await import("../dev/route-scanner");
156
+ const { RouteGenerator } = await import("../dev/route-generator");
91
157
  const scanner = new RouteScanner(values.routes);
92
158
  const generator = new RouteGenerator();
93
159
  const routes = await scanner.scan();
94
160
  await generator.generate(routes);
95
161
  console.log(` Generated ${routes.length} routes`);
96
162
  const buildProcess = Bun.spawn([
97
- 'bun',
98
- 'build',
99
- 'src/index.ts',
100
- '--outdir',
101
- 'dist',
102
- '--minify',
163
+ "bun",
164
+ "build",
165
+ "src/index.ts",
166
+ "--outdir",
167
+ "dist",
168
+ "--minify",
103
169
  ]);
104
170
  await buildProcess.exited;
105
- console.log('\n āœ“ Build complete\n');
171
+ console.log("\n āœ“ Build complete\n");
106
172
  }
107
173
  catch (error) {
108
- console.error('[ERROR] Build failed:', error);
174
+ console.error("[ERROR] Build failed:", error);
109
175
  process.exit(1);
110
176
  }
111
177
  }
112
178
  switch (command) {
113
- case 'dev':
179
+ case "dev":
114
180
  await runDev();
115
181
  break;
116
- case 'build':
182
+ case "build":
117
183
  await runBuild();
118
184
  break;
119
- case 'start':
120
- process.env.NODE_ENV = 'production';
185
+ case "start":
186
+ process.env.NODE_ENV = "production";
121
187
  await runDev();
122
188
  break;
123
189
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CacheHandler, DefaultVectorTypes, ProtectedHandler, VectorConfig, VectorConfigSchema, VectorTypes } from '../types';
2
+ export declare class ConfigLoader<TTypes extends VectorTypes = DefaultVectorTypes> {
3
+ private configPath;
4
+ private config;
5
+ constructor(configPath?: string);
6
+ load(): Promise<VectorConfig<TTypes>>;
7
+ private buildLegacyConfig;
8
+ private loadMiddleware;
9
+ loadAuthHandler(): Promise<ProtectedHandler<TTypes> | null>;
10
+ loadCacheHandler(): Promise<CacheHandler | null>;
11
+ getConfig(): VectorConfigSchema<TTypes> | null;
12
+ }
13
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/core/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,YAAY,EAEZ,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,YAAY,CAAC,MAAM,SAAS,WAAW,GAAG,kBAAkB;IACvE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2C;gBAE7C,UAAU,SAAqB;IAIrC,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAgB7B,iBAAiB;YAoEjB,cAAc;IAuBtB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IA8B3D,gBAAgB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA8BtD,SAAS,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI;CAG/C"}