vector-framework 1.1.1 → 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 (128) hide show
  1. package/README.md +99 -628
  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 +5 -7
  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 +46 -97
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/cli/option-resolution.d.ts +4 -0
  17. package/dist/cli/option-resolution.d.ts.map +1 -0
  18. package/dist/cli/option-resolution.js +28 -0
  19. package/dist/cli/option-resolution.js.map +1 -0
  20. package/dist/cli.js +3423 -660
  21. package/dist/constants/index.d.ts +3 -0
  22. package/dist/constants/index.d.ts.map +1 -1
  23. package/dist/constants/index.js +6 -0
  24. package/dist/constants/index.js.map +1 -1
  25. package/dist/core/config-loader.d.ts.map +1 -1
  26. package/dist/core/config-loader.js +7 -2
  27. package/dist/core/config-loader.js.map +1 -1
  28. package/dist/core/router.d.ts +41 -17
  29. package/dist/core/router.d.ts.map +1 -1
  30. package/dist/core/router.js +432 -153
  31. package/dist/core/router.js.map +1 -1
  32. package/dist/core/server.d.ts +17 -1
  33. package/dist/core/server.d.ts.map +1 -1
  34. package/dist/core/server.js +471 -31
  35. package/dist/core/server.js.map +1 -1
  36. package/dist/core/vector.d.ts +8 -5
  37. package/dist/core/vector.d.ts.map +1 -1
  38. package/dist/core/vector.js +53 -14
  39. package/dist/core/vector.js.map +1 -1
  40. package/dist/dev/route-generator.d.ts.map +1 -1
  41. package/dist/dev/route-generator.js.map +1 -1
  42. package/dist/dev/route-scanner.d.ts.map +1 -1
  43. package/dist/dev/route-scanner.js +1 -5
  44. package/dist/dev/route-scanner.js.map +1 -1
  45. package/dist/http.d.ts +14 -14
  46. package/dist/http.d.ts.map +1 -1
  47. package/dist/http.js +34 -41
  48. package/dist/http.js.map +1 -1
  49. package/dist/index.d.ts +2 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +1420 -8
  52. package/dist/index.js.map +1 -1
  53. package/dist/index.mjs +1420 -8
  54. package/dist/middleware/manager.d.ts.map +1 -1
  55. package/dist/middleware/manager.js +4 -0
  56. package/dist/middleware/manager.js.map +1 -1
  57. package/dist/openapi/docs-ui.d.ts +2 -0
  58. package/dist/openapi/docs-ui.d.ts.map +1 -0
  59. package/dist/openapi/docs-ui.js +1425 -0
  60. package/dist/openapi/docs-ui.js.map +1 -0
  61. package/dist/openapi/generator.d.ts +12 -0
  62. package/dist/openapi/generator.d.ts.map +1 -0
  63. package/dist/openapi/generator.js +502 -0
  64. package/dist/openapi/generator.js.map +1 -0
  65. package/dist/start-vector.d.ts +3 -0
  66. package/dist/start-vector.d.ts.map +1 -0
  67. package/dist/start-vector.js +38 -0
  68. package/dist/start-vector.js.map +1 -0
  69. package/dist/types/index.d.ts +95 -11
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/standard-schema.d.ts +118 -0
  72. package/dist/types/standard-schema.d.ts.map +1 -0
  73. package/dist/types/standard-schema.js +2 -0
  74. package/dist/types/standard-schema.js.map +1 -0
  75. package/dist/utils/cors.d.ts +13 -0
  76. package/dist/utils/cors.d.ts.map +1 -0
  77. package/dist/utils/cors.js +89 -0
  78. package/dist/utils/cors.js.map +1 -0
  79. package/dist/utils/logger.js +1 -1
  80. package/dist/utils/path.d.ts +6 -0
  81. package/dist/utils/path.d.ts.map +1 -1
  82. package/dist/utils/path.js +5 -0
  83. package/dist/utils/path.js.map +1 -1
  84. package/dist/utils/schema-validation.d.ts +31 -0
  85. package/dist/utils/schema-validation.d.ts.map +1 -0
  86. package/dist/utils/schema-validation.js +77 -0
  87. package/dist/utils/schema-validation.js.map +1 -0
  88. package/dist/utils/validation.d.ts.map +1 -1
  89. package/dist/utils/validation.js +3 -0
  90. package/dist/utils/validation.js.map +1 -1
  91. package/package.json +15 -12
  92. package/src/auth/protected.ts +7 -13
  93. package/src/cache/manager.ts +8 -18
  94. package/src/cli/graceful-shutdown.ts +60 -0
  95. package/src/cli/index.ts +52 -115
  96. package/src/cli/option-resolution.ts +40 -0
  97. package/src/constants/index.ts +7 -0
  98. package/src/core/config-loader.ts +7 -4
  99. package/src/core/router.ts +502 -156
  100. package/src/core/server.ts +610 -33
  101. package/src/core/vector.ts +87 -33
  102. package/src/dev/route-generator.ts +1 -3
  103. package/src/dev/route-scanner.ts +2 -9
  104. package/src/http.ts +85 -125
  105. package/src/index.ts +4 -3
  106. package/src/middleware/manager.ts +4 -0
  107. package/src/openapi/assets/favicon/android-chrome-192x192.png +0 -0
  108. package/src/openapi/assets/favicon/android-chrome-512x512.png +0 -0
  109. package/src/openapi/assets/favicon/apple-touch-icon.png +0 -0
  110. package/src/openapi/assets/favicon/favicon-16x16.png +0 -0
  111. package/src/openapi/assets/favicon/favicon-32x32.png +0 -0
  112. package/src/openapi/assets/favicon/favicon.ico +0 -0
  113. package/src/openapi/assets/favicon/site.webmanifest +11 -0
  114. package/src/openapi/assets/logo.svg +12 -0
  115. package/src/openapi/assets/logo_dark.svg +6 -0
  116. package/src/openapi/assets/logo_icon.png +0 -0
  117. package/src/openapi/assets/logo_white.svg +6 -0
  118. package/src/openapi/assets/tailwindcdn.js +83 -0
  119. package/src/openapi/docs-ui.ts +1435 -0
  120. package/src/openapi/generator.ts +586 -0
  121. package/src/start-vector.ts +50 -0
  122. package/src/types/index.ts +138 -17
  123. package/src/types/standard-schema.ts +147 -0
  124. package/src/utils/cors.ts +101 -0
  125. package/src/utils/logger.ts +1 -1
  126. package/src/utils/path.ts +6 -0
  127. package/src/utils/schema-validation.ts +123 -0
  128. package/src/utils/validation.ts +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-ui.js","sourceRoot":"","sources":["../../src/openapi/docs-ui.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CACnC,IAA6B,EAC7B,WAAmB,EACnB,kBAA0B,EAC1B,YAAoB,EACpB,aAAqB,EACrB,kBAA0B,EAC1B,aAAqB,EACrB,aAAqB,EACrB,eAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAE5D,OAAO;;;;;;sDAM6C,sBAAsB;yDACnB,iBAAiB;yDACjB,iBAAiB;8BAC5C,mBAAmB;;;;;;;;gBAQjC,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAmHnB,gBAAgB;mBAChB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAgCjB,gBAAgB;mBAChB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAsHjB,QAAQ;0BACD,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAumCjC,CAAC;AACT,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { RegisteredRouteDefinition } from '../core/router';
2
+ import type { OpenAPIInfoOptions } from '../types';
3
+ export interface OpenAPIGenerationOptions {
4
+ target: string;
5
+ info?: OpenAPIInfoOptions;
6
+ }
7
+ export interface OpenAPIGenerationResult {
8
+ document: Record<string, unknown>;
9
+ warnings: string[];
10
+ }
11
+ export declare function generateOpenAPIDocument(routes: RegisteredRouteDefinition[], options: OpenAPIGenerationOptions): OpenAPIGenerationResult;
12
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/openapi/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAoD,MAAM,UAAU,CAAC;AAIrG,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2gBD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,yBAAyB,EAAE,EACnC,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CA8CzB"}
@@ -0,0 +1,502 @@
1
+ function isJSONSchemaCapable(schema) {
2
+ const standard = schema?.['~standard'];
3
+ const converter = standard?.jsonSchema;
4
+ return (!!standard &&
5
+ typeof standard === 'object' &&
6
+ standard.version === 1 &&
7
+ !!converter &&
8
+ typeof converter.input === 'function' &&
9
+ typeof converter.output === 'function');
10
+ }
11
+ function normalizeRoutePathForOpenAPI(path) {
12
+ let wildcardCount = 0;
13
+ const pathParamNames = [];
14
+ const segments = path.split('/').map((segment) => {
15
+ const greedyParamMatch = /^:([A-Za-z0-9_]+)\+$/.exec(segment);
16
+ if (greedyParamMatch?.[1]) {
17
+ pathParamNames.push(greedyParamMatch[1]);
18
+ return `{${greedyParamMatch[1]}}`;
19
+ }
20
+ const paramMatch = /^:([A-Za-z0-9_]+)$/.exec(segment);
21
+ if (paramMatch?.[1]) {
22
+ pathParamNames.push(paramMatch[1]);
23
+ return `{${paramMatch[1]}}`;
24
+ }
25
+ if (segment === '*') {
26
+ wildcardCount += 1;
27
+ const wildcardParamName = wildcardCount === 1 ? 'wildcard' : `wildcard${wildcardCount}`;
28
+ pathParamNames.push(wildcardParamName);
29
+ return `{${wildcardParamName}}`;
30
+ }
31
+ return segment;
32
+ });
33
+ return {
34
+ openapiPath: segments.join('/'),
35
+ pathParamNames,
36
+ };
37
+ }
38
+ function toOpenAPIPath(path) {
39
+ return normalizeRoutePathForOpenAPI(path).openapiPath;
40
+ }
41
+ function createOperationId(method, path) {
42
+ const normalized = `${method.toLowerCase()}_${path}`
43
+ .replace(/[:{}]/g, '')
44
+ .replace(/[^A-Za-z0-9_]+/g, '_')
45
+ .replace(/^_+|_+$/g, '');
46
+ return normalized || `${method.toLowerCase()}_operation`;
47
+ }
48
+ function inferTagFromPath(path) {
49
+ const segments = path.split('/').filter(Boolean);
50
+ for (const segment of segments) {
51
+ if (!segment.startsWith(':') && segment !== '*') {
52
+ return segment.toLowerCase();
53
+ }
54
+ }
55
+ return 'default';
56
+ }
57
+ function extractPathParamNames(path) {
58
+ return normalizeRoutePathForOpenAPI(path).pathParamNames;
59
+ }
60
+ function addMissingPathParameters(operation, routePath) {
61
+ const existingPathNames = new Set((operation.parameters || []).filter((p) => p.in === 'path').map((p) => String(p.name)));
62
+ for (const pathName of extractPathParamNames(routePath)) {
63
+ if (existingPathNames.has(pathName))
64
+ continue;
65
+ (operation.parameters ||= []).push({
66
+ name: pathName,
67
+ in: 'path',
68
+ required: true,
69
+ schema: { type: 'string' },
70
+ });
71
+ }
72
+ }
73
+ function isNoBodyResponseStatus(status) {
74
+ const numericStatus = Number(status);
75
+ if (!Number.isInteger(numericStatus))
76
+ return false;
77
+ return ((numericStatus >= 100 && numericStatus < 200) ||
78
+ numericStatus === 204 ||
79
+ numericStatus === 205 ||
80
+ numericStatus === 304);
81
+ }
82
+ function getResponseDescription(status) {
83
+ if (status === '204')
84
+ return 'No Content';
85
+ if (status === '205')
86
+ return 'Reset Content';
87
+ if (status === '304')
88
+ return 'Not Modified';
89
+ const numericStatus = Number(status);
90
+ if (Number.isInteger(numericStatus) && numericStatus >= 100 && numericStatus < 200) {
91
+ return 'Informational';
92
+ }
93
+ return 'OK';
94
+ }
95
+ function convertInputSchema(routePath, inputSchema, target, warnings) {
96
+ if (!isJSONSchemaCapable(inputSchema)) {
97
+ return null;
98
+ }
99
+ try {
100
+ return inputSchema['~standard'].jsonSchema.input({ target });
101
+ }
102
+ catch (error) {
103
+ warnings.push(`[OpenAPI] Failed input schema conversion for ${routePath}: ${error instanceof Error ? error.message : String(error)}. Falling back to a permissive JSON Schema.`);
104
+ const fallback = buildFallbackJSONSchema(inputSchema);
105
+ return isEmptyObjectSchema(fallback) ? null : fallback;
106
+ }
107
+ }
108
+ function convertOutputSchema(routePath, statusCode, outputSchema, target, warnings) {
109
+ if (!isJSONSchemaCapable(outputSchema)) {
110
+ return null;
111
+ }
112
+ try {
113
+ return outputSchema['~standard'].jsonSchema.output({ target });
114
+ }
115
+ catch (error) {
116
+ warnings.push(`[OpenAPI] Failed output schema conversion for ${routePath} (${statusCode}): ${error instanceof Error ? error.message : String(error)}. Falling back to a permissive JSON Schema.`);
117
+ return buildFallbackJSONSchema(outputSchema);
118
+ }
119
+ }
120
+ function isRecord(value) {
121
+ return !!value && typeof value === 'object' && !Array.isArray(value);
122
+ }
123
+ function isEmptyObjectSchema(value) {
124
+ return isRecord(value) && Object.keys(value).length === 0;
125
+ }
126
+ // Best-effort extraction of internal schema definition metadata from common
127
+ // standards-compatible validators. If unavailable, callers should fall back to {}.
128
+ function getValidatorSchemaDef(schema) {
129
+ if (!schema || typeof schema !== 'object')
130
+ return null;
131
+ const value = schema;
132
+ if (isRecord(value._def))
133
+ return value._def;
134
+ if (isRecord(value._zod) && isRecord(value._zod.def)) {
135
+ return value._zod.def;
136
+ }
137
+ return null;
138
+ }
139
+ function getSchemaKind(def) {
140
+ if (!def)
141
+ return null;
142
+ const typeName = def.typeName;
143
+ if (typeof typeName === 'string')
144
+ return typeName;
145
+ const type = def.type;
146
+ if (typeof type === 'string')
147
+ return type;
148
+ return null;
149
+ }
150
+ function pickSchemaChild(def) {
151
+ const candidates = ['innerType', 'schema', 'type', 'out', 'in', 'left', 'right'];
152
+ for (const key of candidates) {
153
+ if (key in def)
154
+ return def[key];
155
+ }
156
+ return undefined;
157
+ }
158
+ function pickSchemaObjectCandidate(def, keys) {
159
+ for (const key of keys) {
160
+ const value = def[key];
161
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
162
+ return value;
163
+ }
164
+ }
165
+ return undefined;
166
+ }
167
+ function isOptionalWrapperKind(kind) {
168
+ if (!kind)
169
+ return false;
170
+ const lower = kind.toLowerCase();
171
+ return lower.includes('optional') || lower.includes('default') || lower.includes('catch');
172
+ }
173
+ function unwrapOptionalForRequired(schema) {
174
+ let current = schema;
175
+ let optional = false;
176
+ let guard = 0;
177
+ while (guard < 8) {
178
+ guard += 1;
179
+ const def = getValidatorSchemaDef(current);
180
+ const kind = getSchemaKind(def);
181
+ if (!def || !isOptionalWrapperKind(kind))
182
+ break;
183
+ optional = true;
184
+ const inner = pickSchemaChild(def);
185
+ if (!inner)
186
+ break;
187
+ current = inner;
188
+ }
189
+ return { schema: current, optional };
190
+ }
191
+ function getObjectShape(def) {
192
+ const rawShape = def.shape;
193
+ if (typeof rawShape === 'function') {
194
+ try {
195
+ const resolved = rawShape();
196
+ return isRecord(resolved) ? resolved : {};
197
+ }
198
+ catch {
199
+ return {};
200
+ }
201
+ }
202
+ return isRecord(rawShape) ? rawShape : {};
203
+ }
204
+ function mapPrimitiveKind(kind) {
205
+ const lower = kind.toLowerCase();
206
+ if (lower.includes('string'))
207
+ return { type: 'string' };
208
+ if (lower.includes('number'))
209
+ return { type: 'number' };
210
+ if (lower.includes('boolean'))
211
+ return { type: 'boolean' };
212
+ if (lower.includes('bigint'))
213
+ return { type: 'string' };
214
+ if (lower.includes('null'))
215
+ return { type: 'null' };
216
+ if (lower.includes('any') || lower.includes('unknown') || lower.includes('never'))
217
+ return {};
218
+ if (lower.includes('date'))
219
+ return { type: 'string', format: 'date-time' };
220
+ if (lower.includes('custom'))
221
+ return { type: 'object', additionalProperties: true };
222
+ return null;
223
+ }
224
+ // Universal fallback schema builder used when converter functions throw.
225
+ // This keeps docs generation resilient and preserves routes in OpenAPI output.
226
+ function buildIntrospectedFallbackJSONSchema(schema, seen = new WeakSet()) {
227
+ if (!schema || typeof schema !== 'object')
228
+ return {};
229
+ if (seen.has(schema))
230
+ return {};
231
+ seen.add(schema);
232
+ const def = getValidatorSchemaDef(schema);
233
+ const kind = getSchemaKind(def);
234
+ if (!def || !kind)
235
+ return {};
236
+ const primitive = mapPrimitiveKind(kind);
237
+ if (primitive)
238
+ return primitive;
239
+ const lower = kind.toLowerCase();
240
+ if (lower.includes('object')) {
241
+ const shape = getObjectShape(def);
242
+ const properties = {};
243
+ const required = [];
244
+ for (const [key, child] of Object.entries(shape)) {
245
+ const unwrapped = unwrapOptionalForRequired(child);
246
+ properties[key] = buildIntrospectedFallbackJSONSchema(unwrapped.schema, seen);
247
+ if (!unwrapped.optional)
248
+ required.push(key);
249
+ }
250
+ const out = {
251
+ type: 'object',
252
+ properties,
253
+ additionalProperties: true,
254
+ };
255
+ if (required.length > 0) {
256
+ out.required = required;
257
+ }
258
+ return out;
259
+ }
260
+ if (lower.includes('array')) {
261
+ const itemSchema = pickSchemaObjectCandidate(def, ['element', 'items', 'innerType', 'type']) ?? {};
262
+ return {
263
+ type: 'array',
264
+ items: buildIntrospectedFallbackJSONSchema(itemSchema, seen),
265
+ };
266
+ }
267
+ if (lower.includes('record')) {
268
+ const valueType = def.valueType ?? def.valueSchema;
269
+ return {
270
+ type: 'object',
271
+ additionalProperties: valueType ? buildIntrospectedFallbackJSONSchema(valueType, seen) : true,
272
+ };
273
+ }
274
+ if (lower.includes('tuple')) {
275
+ const items = Array.isArray(def.items)
276
+ ? def.items
277
+ : [];
278
+ const prefixItems = items.map((item) => buildIntrospectedFallbackJSONSchema(item, seen));
279
+ return {
280
+ type: 'array',
281
+ prefixItems,
282
+ minItems: prefixItems.length,
283
+ maxItems: prefixItems.length,
284
+ };
285
+ }
286
+ if (lower.includes('union')) {
287
+ const options = def.options ?? def.schemas ?? [];
288
+ if (!Array.isArray(options) || options.length === 0)
289
+ return {};
290
+ return {
291
+ anyOf: options.map((option) => buildIntrospectedFallbackJSONSchema(option, seen)),
292
+ };
293
+ }
294
+ if (lower.includes('intersection')) {
295
+ const left = def.left;
296
+ const right = def.right;
297
+ if (!left || !right)
298
+ return {};
299
+ return {
300
+ allOf: [buildIntrospectedFallbackJSONSchema(left, seen), buildIntrospectedFallbackJSONSchema(right, seen)],
301
+ };
302
+ }
303
+ if (lower.includes('enum')) {
304
+ const values = def.values;
305
+ if (Array.isArray(values))
306
+ return { enum: values };
307
+ if (values && typeof values === 'object')
308
+ return { enum: Object.values(values) };
309
+ return {};
310
+ }
311
+ if (lower.includes('literal')) {
312
+ const value = def.value;
313
+ if (value === undefined)
314
+ return {};
315
+ const valueType = value === null ? 'null' : typeof value;
316
+ if (valueType === 'string' || valueType === 'number' || valueType === 'boolean' || valueType === 'null') {
317
+ return { type: valueType, const: value };
318
+ }
319
+ return { const: value };
320
+ }
321
+ if (lower.includes('nullable')) {
322
+ const inner = pickSchemaChild(def);
323
+ if (!inner)
324
+ return {};
325
+ return {
326
+ anyOf: [buildIntrospectedFallbackJSONSchema(inner, seen), { type: 'null' }],
327
+ };
328
+ }
329
+ if (lower.includes('lazy')) {
330
+ const getter = def.getter;
331
+ if (typeof getter !== 'function')
332
+ return {};
333
+ try {
334
+ return buildIntrospectedFallbackJSONSchema(getter(), seen);
335
+ }
336
+ catch {
337
+ return {};
338
+ }
339
+ }
340
+ const child = pickSchemaChild(def);
341
+ if (child)
342
+ return buildIntrospectedFallbackJSONSchema(child, seen);
343
+ return {};
344
+ }
345
+ function buildFallbackJSONSchema(schema) {
346
+ const def = getValidatorSchemaDef(schema);
347
+ if (!def)
348
+ return {};
349
+ return buildIntrospectedFallbackJSONSchema(schema);
350
+ }
351
+ function addStructuredInputToOperation(operation, inputJSONSchema) {
352
+ if (!isRecord(inputJSONSchema))
353
+ return;
354
+ if (inputJSONSchema.type !== 'object' || !isRecord(inputJSONSchema.properties)) {
355
+ operation.requestBody = {
356
+ required: true,
357
+ content: {
358
+ 'application/json': {
359
+ schema: inputJSONSchema,
360
+ },
361
+ },
362
+ };
363
+ return;
364
+ }
365
+ const rootRequired = new Set(Array.isArray(inputJSONSchema.required) ? inputJSONSchema.required : []);
366
+ const properties = inputJSONSchema.properties;
367
+ const parameters = Array.isArray(operation.parameters) ? operation.parameters : [];
368
+ const parameterSections = [
369
+ { key: 'params', in: 'path' },
370
+ { key: 'query', in: 'query' },
371
+ { key: 'headers', in: 'header' },
372
+ { key: 'cookies', in: 'cookie' },
373
+ ];
374
+ for (const section of parameterSections) {
375
+ const sectionSchema = properties[section.key];
376
+ if (!isRecord(sectionSchema))
377
+ continue;
378
+ if (sectionSchema.type !== 'object' || !isRecord(sectionSchema.properties))
379
+ continue;
380
+ const sectionRequired = new Set(Array.isArray(sectionSchema.required) ? sectionSchema.required : []);
381
+ for (const [name, schema] of Object.entries(sectionSchema.properties)) {
382
+ parameters.push({
383
+ name,
384
+ in: section.in,
385
+ required: section.in === 'path' ? true : sectionRequired.has(name),
386
+ schema: isRecord(schema) ? schema : {},
387
+ });
388
+ }
389
+ }
390
+ if (parameters.length > 0) {
391
+ const deduped = new Map();
392
+ for (const parameter of parameters) {
393
+ deduped.set(`${parameter.in}:${parameter.name}`, parameter);
394
+ }
395
+ operation.parameters = [...deduped.values()];
396
+ }
397
+ const bodySchema = properties.body;
398
+ if (bodySchema) {
399
+ operation.requestBody = {
400
+ required: rootRequired.has('body'),
401
+ content: {
402
+ 'application/json': {
403
+ schema: isRecord(bodySchema) ? bodySchema : {},
404
+ },
405
+ },
406
+ };
407
+ }
408
+ }
409
+ function addOutputSchemasToOperation(operation, routePath, routeSchema, target, warnings) {
410
+ const output = routeSchema.output;
411
+ if (!output) {
412
+ operation.responses = {
413
+ 200: { description: 'OK' },
414
+ };
415
+ return;
416
+ }
417
+ const responses = {};
418
+ // Single output schema shorthand: schema.output = SomeSchema (defaults to 200)
419
+ if (typeof output === 'object' && output !== null && '~standard' in output) {
420
+ const outputSchema = convertOutputSchema(routePath, '200', output, target, warnings);
421
+ if (outputSchema) {
422
+ responses['200'] = {
423
+ description: 'OK',
424
+ content: {
425
+ 'application/json': {
426
+ schema: outputSchema,
427
+ },
428
+ },
429
+ };
430
+ }
431
+ else {
432
+ responses['200'] = { description: 'OK' };
433
+ }
434
+ }
435
+ else {
436
+ for (const [statusCode, schema] of Object.entries(output)) {
437
+ const status = String(statusCode);
438
+ const outputSchema = convertOutputSchema(routePath, status, schema, target, warnings);
439
+ const description = getResponseDescription(status);
440
+ if (outputSchema && !isNoBodyResponseStatus(status)) {
441
+ responses[status] = {
442
+ description,
443
+ content: {
444
+ 'application/json': {
445
+ schema: outputSchema,
446
+ },
447
+ },
448
+ };
449
+ }
450
+ else {
451
+ responses[status] = {
452
+ description,
453
+ };
454
+ }
455
+ }
456
+ }
457
+ if (Object.keys(responses).length === 0) {
458
+ responses['200'] = { description: 'OK' };
459
+ }
460
+ operation.responses = responses;
461
+ }
462
+ export function generateOpenAPIDocument(routes, options) {
463
+ const warnings = [];
464
+ const paths = {};
465
+ for (const route of routes) {
466
+ if (route.options.expose === false)
467
+ continue;
468
+ if (!route.method || !route.path)
469
+ continue;
470
+ const method = route.method.toLowerCase();
471
+ if (method === 'options')
472
+ continue;
473
+ const openapiPath = toOpenAPIPath(route.path);
474
+ const operation = {
475
+ operationId: createOperationId(method, openapiPath),
476
+ tags: [route.options.schema?.tag || inferTagFromPath(route.path)],
477
+ };
478
+ const inputJSONSchema = convertInputSchema(route.path, route.options.schema?.input, options.target, warnings);
479
+ if (inputJSONSchema) {
480
+ addStructuredInputToOperation(operation, inputJSONSchema);
481
+ }
482
+ addMissingPathParameters(operation, route.path);
483
+ addOutputSchemasToOperation(operation, route.path, route.options.schema || {}, options.target, warnings);
484
+ paths[openapiPath] ||= {};
485
+ paths[openapiPath][method] = operation;
486
+ }
487
+ const openapiVersion = options.target === 'openapi-3.0' ? '3.0.3' : '3.1.0';
488
+ const document = {
489
+ openapi: openapiVersion,
490
+ info: {
491
+ title: options.info?.title || 'Vector API',
492
+ version: options.info?.version || '1.0.0',
493
+ ...(options.info?.description ? { description: options.info.description } : {}),
494
+ },
495
+ paths,
496
+ };
497
+ return {
498
+ document,
499
+ warnings,
500
+ };
501
+ }
502
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/openapi/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DefaultVectorTypes, StartVectorOptions, StartedVectorApp, VectorTypes } from './types';
2
+ export declare function startVector<TTypes extends VectorTypes = DefaultVectorTypes>(options?: StartVectorOptions<TTypes>): Promise<StartedVectorApp<TTypes>>;
3
+ //# sourceMappingURL=start-vector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-vector.d.ts","sourceRoot":"","sources":["../src/start-vector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAErG,wBAAsB,WAAW,CAAC,MAAM,SAAS,WAAW,GAAG,kBAAkB,EAC/E,OAAO,GAAE,kBAAkB,CAAC,MAAM,CAAM,GACvC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CA0CnC"}
@@ -0,0 +1,38 @@
1
+ import { ConfigLoader } from './core/config-loader';
2
+ import { DEFAULT_CONFIG } from './constants';
3
+ import { getVectorInstance } from './core/vector';
4
+ export async function startVector(options = {}) {
5
+ const configLoader = new ConfigLoader(options.configPath);
6
+ const loadedConfig = await configLoader.load();
7
+ const configSource = configLoader.getConfigSource();
8
+ let config = { ...loadedConfig };
9
+ if (options.mutateConfig) {
10
+ config = await options.mutateConfig(config, { configSource });
11
+ }
12
+ if (options.config) {
13
+ config = { ...config, ...options.config };
14
+ }
15
+ if (options.autoDiscover !== undefined) {
16
+ config.autoDiscover = options.autoDiscover;
17
+ }
18
+ const vector = getVectorInstance();
19
+ const resolvedProtectedHandler = options.protectedHandler !== undefined ? options.protectedHandler : await configLoader.loadAuthHandler();
20
+ const resolvedCacheHandler = options.cacheHandler !== undefined ? options.cacheHandler : await configLoader.loadCacheHandler();
21
+ vector.setProtectedHandler(resolvedProtectedHandler ?? null);
22
+ vector.setCacheHandler(resolvedCacheHandler ?? null);
23
+ const server = await vector.startServer(config);
24
+ const effectiveConfig = {
25
+ ...config,
26
+ port: server.port ?? config.port ?? DEFAULT_CONFIG.PORT,
27
+ hostname: server.hostname || config.hostname || DEFAULT_CONFIG.HOSTNAME,
28
+ reusePort: config.reusePort !== false,
29
+ idleTimeout: config.idleTimeout ?? 60,
30
+ };
31
+ return {
32
+ server,
33
+ config: effectiveConfig,
34
+ stop: () => vector.stop(),
35
+ shutdown: () => vector.shutdown(),
36
+ };
37
+ }
38
+ //# sourceMappingURL=start-vector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-vector.js","sourceRoot":"","sources":["../src/start-vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAsC,EAAE;IAExC,MAAM,YAAY,GAAG,IAAI,YAAY,CAAS,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;IAEpD,IAAI,MAAM,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,EAAU,CAAC;IAC3C,MAAM,wBAAwB,GAC5B,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;IAC3G,MAAM,oBAAoB,GACxB,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAEpG,MAAM,CAAC,mBAAmB,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,eAAe,CAAC,oBAAoB,IAAI,IAAI,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG;QACtB,GAAG,MAAM;QACT,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;QACvD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ;QACvE,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,KAAK;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;KACtC,CAAC;IAEF,OAAO;QACL,MAAM;QACN,MAAM,EAAE,eAAe;QACvB,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE;KAClC,CAAC;AACJ,CAAC"}