vector-framework 0.8.2 → 0.9.1

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 (48) hide show
  1. package/dist/cli/index.js +91 -52
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/cli.js +1523 -0
  4. package/dist/core/config-loader.d.ts +15 -0
  5. package/dist/core/config-loader.d.ts.map +1 -0
  6. package/dist/core/config-loader.js +184 -0
  7. package/dist/core/config-loader.js.map +1 -0
  8. package/dist/core/router.d.ts +1 -0
  9. package/dist/core/router.d.ts.map +1 -1
  10. package/dist/core/router.js +3 -0
  11. package/dist/core/router.js.map +1 -1
  12. package/dist/core/vector.d.ts +10 -12
  13. package/dist/core/vector.d.ts.map +1 -1
  14. package/dist/core/vector.js +36 -25
  15. package/dist/core/vector.js.map +1 -1
  16. package/dist/dev/route-scanner.d.ts.map +1 -1
  17. package/dist/dev/route-scanner.js +25 -3
  18. package/dist/dev/route-scanner.js.map +1 -1
  19. package/dist/http.d.ts +6 -1
  20. package/dist/http.d.ts.map +1 -1
  21. package/dist/http.js +13 -4
  22. package/dist/http.js.map +1 -1
  23. package/dist/index.d.ts +4 -12
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +5 -5
  28. package/dist/middleware/manager.d.ts +2 -1
  29. package/dist/middleware/manager.d.ts.map +1 -1
  30. package/dist/middleware/manager.js +4 -0
  31. package/dist/middleware/manager.js.map +1 -1
  32. package/dist/types/index.d.ts +26 -0
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/dist/utils/path.d.ts +3 -0
  35. package/dist/utils/path.d.ts.map +1 -0
  36. package/dist/utils/path.js +9 -0
  37. package/dist/utils/path.js.map +1 -0
  38. package/package.json +6 -5
  39. package/src/cli/index.ts +105 -62
  40. package/src/core/config-loader.ts +213 -0
  41. package/src/core/router.ts +4 -0
  42. package/src/core/vector.ts +38 -32
  43. package/src/dev/route-scanner.ts +26 -3
  44. package/src/http.ts +21 -5
  45. package/src/index.ts +11 -16
  46. package/src/middleware/manager.ts +16 -4
  47. package/src/types/index.ts +44 -0
  48. package/src/utils/path.ts +9 -0
package/dist/cli/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env bun
2
2
  import { watch } from "node:fs";
3
- import { join } from "node:path";
4
3
  import { parseArgs } from "node:util";
5
- import vector from "../core/vector";
4
+ import { getVectorInstance } from "../core/vector";
5
+ import { ConfigLoader } from "../core/config-loader";
6
6
  const { values, positionals } = parseArgs({
7
7
  args: Bun.argv.slice(2),
8
8
  options: {
@@ -38,64 +38,106 @@ const command = positionals[0] || "dev";
38
38
  async function runDev() {
39
39
  const isDev = command === "dev";
40
40
  console.log(`\n→ Starting Vector ${isDev ? "development" : "production"} server\n`);
41
- const config = {
42
- port: Number.parseInt(values.port),
43
- hostname: values.host,
44
- routesDir: values.routes,
45
- development: isDev,
46
- autoDiscover: true,
47
- cors: values.cors
48
- ? {
49
- origin: "*",
50
- credentials: true,
51
- allowHeaders: "Content-Type, Authorization",
52
- allowMethods: "GET, POST, PUT, PATCH, DELETE, OPTIONS",
53
- exposeHeaders: "Authorization",
54
- maxAge: 86400,
55
- }
56
- : undefined,
57
- };
58
- try {
59
- const userConfigPath = join(process.cwd(), "vector.config.ts");
41
+ let server = null;
42
+ let vector = null;
43
+ async function startServer() {
60
44
  try {
61
- const userConfig = await import(userConfigPath);
62
- if (userConfig.default) {
63
- // Properly merge config, preserving middleware arrays
64
- const { before, finally: finallyMiddleware, ...otherConfig } = userConfig.default;
65
- // Merge non-middleware config
66
- Object.assign(config, otherConfig);
67
- // Handle middleware arrays properly - these need to be set after Object.assign
68
- // to avoid being overwritten
69
- if (before) {
70
- config.before = before;
71
- }
72
- if (finallyMiddleware) {
73
- config.finally = finallyMiddleware;
74
- }
45
+ // Load configuration using ConfigLoader
46
+ const configLoader = new ConfigLoader();
47
+ const config = await configLoader.load();
48
+ const configSource = configLoader.getConfigSource();
49
+ // Merge CLI options with loaded config
50
+ config.port = config.port || Number.parseInt(values.port);
51
+ config.hostname = config.hostname || values.host;
52
+ config.routesDir = config.routesDir || values.routes;
53
+ config.development = isDev;
54
+ config.autoDiscover = true;
55
+ // Apply CLI CORS option if not set in config
56
+ if (!config.cors && values.cors) {
57
+ config.cors = {
58
+ origin: "*",
59
+ credentials: true,
60
+ allowHeaders: "Content-Type, Authorization",
61
+ allowMethods: "GET, POST, PUT, PATCH, DELETE, OPTIONS",
62
+ exposeHeaders: "Authorization",
63
+ maxAge: 86400,
64
+ };
65
+ }
66
+ // Get Vector instance and configure handlers
67
+ vector = getVectorInstance();
68
+ // Load and set auth handler if configured
69
+ const authHandler = await configLoader.loadAuthHandler();
70
+ if (authHandler) {
71
+ vector.setProtectedHandler(authHandler);
72
+ }
73
+ // Load and set cache handler if configured
74
+ const cacheHandler = await configLoader.loadCacheHandler();
75
+ if (cacheHandler) {
76
+ vector.setCacheHandler(cacheHandler);
75
77
  }
78
+ // Start the server
79
+ server = await vector.startServer(config);
80
+ const gray = "\x1b[90m";
81
+ const reset = "\x1b[0m";
82
+ const cyan = "\x1b[36m";
83
+ const green = "\x1b[32m";
84
+ console.log(` ${gray}Config${reset} ${configSource === 'user' ? 'User config loaded' : 'Using defaults'}`);
85
+ console.log(` ${gray}Routes${reset} ${config.routesDir}`);
86
+ if (isDev && values.watch) {
87
+ console.log(` ${gray}Watching${reset} All project files`);
88
+ }
89
+ console.log(` ${gray}CORS${reset} ${values.cors ? "Enabled" : "Disabled"}`);
90
+ console.log(` ${gray}Mode${reset} ${isDev ? "Development" : "Production"}\n`);
91
+ console.log(` ${green}Ready${reset} → ${cyan}http://${config.hostname}:${config.port}${reset}\n`);
92
+ return { server, vector, config };
76
93
  }
77
- catch {
78
- // No user config file, use defaults
94
+ catch (error) {
95
+ console.error("[ERROR] Failed to start server:", error);
96
+ throw error;
79
97
  }
80
- await vector.serve(config);
81
- const gray = "\x1b[90m";
82
- const reset = "\x1b[0m";
83
- const cyan = "\x1b[36m";
84
- const green = "\x1b[32m";
85
- console.log(` ${gray}Routes${reset} ${config.routesDir}`);
98
+ }
99
+ try {
100
+ // Start the server initially
101
+ const result = await startServer();
102
+ server = result.server;
103
+ // Setup file watching for hot reload
86
104
  if (isDev && values.watch) {
87
- console.log(` ${gray}Watching${reset} All project files`);
88
105
  try {
106
+ let reloadTimeout = null;
89
107
  // Watch entire project directory for changes
90
108
  watch(process.cwd(), { recursive: true }, async (_, filename) => {
91
109
  if (filename &&
92
110
  (filename.endsWith(".ts") ||
93
111
  filename.endsWith(".js") ||
94
- filename.endsWith(".json"))) {
95
- console.log(`\n 🔄 File changed: ${filename}`);
96
- console.log(" 🔄 Restarting server...\n");
97
- // Exit the current process, which will trigger a restart if using --watch flag
98
- process.exit(0);
112
+ filename.endsWith(".json")) &&
113
+ !filename.includes("node_modules") &&
114
+ !filename.includes(".git")) {
115
+ // Debounce reload to avoid multiple restarts
116
+ if (reloadTimeout) {
117
+ clearTimeout(reloadTimeout);
118
+ }
119
+ reloadTimeout = setTimeout(async () => {
120
+ console.log(`\n 🔄 File changed: ${filename}`);
121
+ console.log(" 🔄 Reloading server...\n");
122
+ // Stop the current server
123
+ if (vector) {
124
+ vector.stop();
125
+ }
126
+ // Clear module cache to ensure fresh imports
127
+ for (const key in require.cache) {
128
+ if (!key.includes("node_modules")) {
129
+ delete require.cache[key];
130
+ }
131
+ }
132
+ // Restart the server
133
+ try {
134
+ const result = await startServer();
135
+ server = result.server;
136
+ }
137
+ catch (error) {
138
+ console.error(" ❌ Failed to reload server:", error);
139
+ }
140
+ }, 100); // 100ms debounce
99
141
  }
100
142
  });
101
143
  }
@@ -103,9 +145,6 @@ async function runDev() {
103
145
  console.warn(" ⚠️ File watching not available");
104
146
  }
105
147
  }
106
- console.log(` ${gray}CORS${reset} ${values.cors ? "Enabled" : "Disabled"}`);
107
- console.log(` ${gray}Mode${reset} ${isDev ? "Development" : "Production"}\n`);
108
- console.log(` ${green}Ready${reset} → ${cyan}http://${config.hostname}:${config.port}${reset}\n`);
109
148
  }
110
149
  catch (error) {
111
150
  console.error("[ERROR] Failed to start server:", error);
@@ -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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"}