vector-framework 1.2.0 → 1.2.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 (75) hide show
  1. package/README.md +19 -0
  2. package/dist/auth/protected.d.ts +1 -0
  3. package/dist/auth/protected.d.ts.map +1 -1
  4. package/dist/auth/protected.js +3 -0
  5. package/dist/auth/protected.js.map +1 -1
  6. package/dist/cache/manager.d.ts +1 -0
  7. package/dist/cache/manager.d.ts.map +1 -1
  8. package/dist/cache/manager.js +3 -0
  9. package/dist/cache/manager.js.map +1 -1
  10. package/dist/cli/graceful-shutdown.d.ts +15 -0
  11. package/dist/cli/graceful-shutdown.d.ts.map +1 -0
  12. package/dist/cli/graceful-shutdown.js +42 -0
  13. package/dist/cli/graceful-shutdown.js.map +1 -0
  14. package/dist/cli/index.js +37 -43
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli.js +877 -218
  17. package/dist/core/config-loader.d.ts.map +1 -1
  18. package/dist/core/config-loader.js +5 -2
  19. package/dist/core/config-loader.js.map +1 -1
  20. package/dist/core/server.d.ts +3 -0
  21. package/dist/core/server.d.ts.map +1 -1
  22. package/dist/core/server.js +227 -7
  23. package/dist/core/server.js.map +1 -1
  24. package/dist/core/vector.d.ts +4 -2
  25. package/dist/core/vector.d.ts.map +1 -1
  26. package/dist/core/vector.js +32 -2
  27. package/dist/core/vector.js.map +1 -1
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +147 -41
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.mjs +147 -41
  33. package/dist/openapi/docs-ui.d.ts +1 -1
  34. package/dist/openapi/docs-ui.d.ts.map +1 -1
  35. package/dist/openapi/docs-ui.js +147 -35
  36. package/dist/openapi/docs-ui.js.map +1 -1
  37. package/dist/openapi/generator.d.ts.map +1 -1
  38. package/dist/openapi/generator.js +233 -4
  39. package/dist/openapi/generator.js.map +1 -1
  40. package/dist/start-vector.d.ts +3 -0
  41. package/dist/start-vector.d.ts.map +1 -0
  42. package/dist/start-vector.js +38 -0
  43. package/dist/start-vector.js.map +1 -0
  44. package/dist/types/index.d.ts +25 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/dist/utils/logger.js +1 -1
  47. package/dist/utils/validation.d.ts.map +1 -1
  48. package/dist/utils/validation.js +2 -0
  49. package/dist/utils/validation.js.map +1 -1
  50. package/package.json +3 -1
  51. package/src/auth/protected.ts +4 -0
  52. package/src/cache/manager.ts +4 -0
  53. package/src/cli/graceful-shutdown.ts +60 -0
  54. package/src/cli/index.ts +42 -49
  55. package/src/core/config-loader.ts +5 -2
  56. package/src/core/server.ts +289 -7
  57. package/src/core/vector.ts +38 -4
  58. package/src/index.ts +4 -3
  59. package/src/openapi/assets/favicon/android-chrome-192x192.png +0 -0
  60. package/src/openapi/assets/favicon/android-chrome-512x512.png +0 -0
  61. package/src/openapi/assets/favicon/apple-touch-icon.png +0 -0
  62. package/src/openapi/assets/favicon/favicon-16x16.png +0 -0
  63. package/src/openapi/assets/favicon/favicon-32x32.png +0 -0
  64. package/src/openapi/assets/favicon/favicon.ico +0 -0
  65. package/src/openapi/assets/favicon/site.webmanifest +11 -0
  66. package/src/openapi/assets/logo.svg +12 -0
  67. package/src/openapi/assets/logo_dark.svg +6 -0
  68. package/src/openapi/assets/logo_icon.png +0 -0
  69. package/src/openapi/assets/logo_white.svg +6 -0
  70. package/src/openapi/docs-ui.ts +153 -35
  71. package/src/openapi/generator.ts +231 -4
  72. package/src/start-vector.ts +50 -0
  73. package/src/types/index.ts +34 -0
  74. package/src/utils/logger.ts +1 -1
  75. package/src/utils/validation.ts +2 -0
@@ -1,4 +1,5 @@
1
1
  import type { StandardJSONSchemaV1, StandardSchemaV1, StandardTypedV1 } from './standard-schema';
2
+ import type { Server } from 'bun';
2
3
 
3
4
  // Default AuthUser type - users can override this with their own type
4
5
  export interface DefaultAuthUser {
@@ -150,6 +151,31 @@ export interface VectorConfig<TTypes extends VectorTypes = DefaultVectorTypes> {
150
151
  idleTimeout?: number;
151
152
  defaults?: VectorDefaults;
152
153
  openapi?: OpenAPIOptions | boolean;
154
+ startup?: StartupHandler;
155
+ shutdown?: ShutdownHandler;
156
+ }
157
+
158
+ export interface StartVectorContext {
159
+ configSource: 'user' | 'default';
160
+ }
161
+
162
+ export interface StartVectorOptions<TTypes extends VectorTypes = DefaultVectorTypes> {
163
+ configPath?: string;
164
+ config?: Partial<VectorConfig<TTypes>>;
165
+ autoDiscover?: boolean;
166
+ protectedHandler?: ProtectedHandler<TTypes> | null;
167
+ cacheHandler?: CacheHandler | null;
168
+ mutateConfig?: (
169
+ config: VectorConfig<TTypes>,
170
+ context: StartVectorContext
171
+ ) => VectorConfig<TTypes> | Promise<VectorConfig<TTypes>>;
172
+ }
173
+
174
+ export interface StartedVectorApp<TTypes extends VectorTypes = DefaultVectorTypes> {
175
+ server: Server;
176
+ config: VectorConfig<TTypes>;
177
+ stop: () => void;
178
+ shutdown: () => Promise<void>;
153
179
  }
154
180
 
155
181
  // New config-driven schema - flat structure
@@ -178,6 +204,10 @@ export interface VectorConfigSchema<TTypes extends VectorTypes = DefaultVectorTy
178
204
  // OpenAPI/docs configuration
179
205
  openapi?: OpenAPIOptions | boolean;
180
206
 
207
+ // Startup lifecycle
208
+ startup?: StartupHandler;
209
+ shutdown?: ShutdownHandler;
210
+
181
211
  // Custom types for TypeScript
182
212
  types?: VectorTypes;
183
213
  }
@@ -194,6 +224,7 @@ export interface CorsOptions {
194
224
  export interface OpenAPIDocsOptions {
195
225
  enabled?: boolean;
196
226
  path?: string;
227
+ exposePaths?: string[];
197
228
  }
198
229
 
199
230
  export interface OpenAPIInfoOptions {
@@ -220,6 +251,9 @@ export type AfterMiddlewareHandler<TTypes extends VectorTypes = DefaultVectorTyp
220
251
  ) => Promise<Response> | Response;
221
252
  export type MiddlewareHandler = BeforeMiddlewareHandler | AfterMiddlewareHandler;
222
253
 
254
+ export type StartupHandler = () => Promise<void> | void;
255
+ export type ShutdownHandler = () => Promise<void> | void;
256
+
223
257
  export type RouteHandler<TTypes extends VectorTypes = DefaultVectorTypes, TValidatedInput = undefined> = (
224
258
  request: VectorRequest<TTypes, TValidatedInput>
225
259
  ) => Promise<any> | any;
@@ -17,7 +17,7 @@ export class Logger {
17
17
  constructor(config: Partial<LoggerConfig> = {}) {
18
18
  this.config = {
19
19
  level: config.level ?? LogLevel.INFO,
20
- prefix: config.prefix ?? '[Vector]',
20
+ prefix: config.prefix ?? '[vector]',
21
21
  timestamp: config.timestamp ?? true,
22
22
  };
23
23
  }
@@ -13,6 +13,8 @@ export function validateConfig(config: VectorConfig): VectorConfig {
13
13
  cors: config.cors ? validateCorsOptions(config.cors) : undefined,
14
14
  before: config.before || [],
15
15
  finally: config.finally || [],
16
+ startup: config.startup,
17
+ shutdown: config.shutdown,
16
18
  };
17
19
 
18
20
  return validatedConfig;