vector-framework 0.9.7 → 0.9.8
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.
- package/README.md +486 -347
- package/dist/cli.js +332 -313
- package/dist/core/router.d.ts +1 -0
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +73 -25
- package/dist/core/router.js.map +1 -1
- package/dist/http.d.ts +2 -2
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +3 -4
- package/dist/http.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.mjs +6 -6
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -2
- package/src/core/router.ts +85 -27
- package/src/http.ts +8 -13
- package/src/types/index.ts +3 -0
package/dist/core/router.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare class VectorRouter<TTypes extends VectorTypes = DefaultVectorType
|
|
|
18
18
|
private extractPath;
|
|
19
19
|
route(options: RouteOptions<TTypes>, handler: RouteHandler<TTypes>): RouteEntry;
|
|
20
20
|
private createRouteRegex;
|
|
21
|
+
private prepareRequest;
|
|
21
22
|
private wrapHandler;
|
|
22
23
|
addRoute(routeEntry: RouteEntry): void;
|
|
23
24
|
getRoutes(): RouteEntry[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,YAAY,EAEZ,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,qBAAa,YAAY,CAAC,MAAM,SAAS,WAAW,GAAG,kBAAkB;IACvE,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAoB;gBAGhC,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAC5C,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;IAOpC,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,WAAW;IAInB,UAAU,IAAI,IAAI;IAYlB,OAAO,CAAC,WAAW;IAKnB,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,UAAU;IAc/E,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,WAAW;IAqHnB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAK/B,SAAS,IAAI,UAAU,EAAE;IAInB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2BjD,WAAW,IAAI,IAAI;CAGpB"}
|
package/dist/core/router.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withCookies } from 'itty-router';
|
|
1
2
|
import { APIError, createResponse } from '../http';
|
|
2
3
|
export class VectorRouter {
|
|
3
4
|
middlewareManager;
|
|
@@ -78,27 +79,53 @@ export class VectorRouter {
|
|
|
78
79
|
.replace(/\./g, '\\.')
|
|
79
80
|
.replace(/(\/?)\*/g, '($1.*)?')}/*$`);
|
|
80
81
|
}
|
|
82
|
+
prepareRequest(request, options) {
|
|
83
|
+
// Initialize context if not present
|
|
84
|
+
if (!request.context) {
|
|
85
|
+
request.context = {};
|
|
86
|
+
}
|
|
87
|
+
// Set params and route if provided
|
|
88
|
+
if (options?.params !== undefined) {
|
|
89
|
+
request.params = options.params;
|
|
90
|
+
}
|
|
91
|
+
if (options?.route !== undefined) {
|
|
92
|
+
request.route = options.route;
|
|
93
|
+
}
|
|
94
|
+
if (options?.metadata !== undefined) {
|
|
95
|
+
request.metadata = options.metadata;
|
|
96
|
+
}
|
|
97
|
+
// Parse query parameters from URL if not already parsed
|
|
98
|
+
if (!request.query && request.url) {
|
|
99
|
+
const url = new URL(request.url);
|
|
100
|
+
const query = {};
|
|
101
|
+
for (const [key, value] of url.searchParams) {
|
|
102
|
+
if (key in query) {
|
|
103
|
+
if (Array.isArray(query[key])) {
|
|
104
|
+
query[key].push(value);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
query[key] = [query[key], value];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
query[key] = value;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
request.query = query;
|
|
115
|
+
}
|
|
116
|
+
// Parse cookies if not already parsed
|
|
117
|
+
if (!request.cookies) {
|
|
118
|
+
withCookies(request);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
81
121
|
wrapHandler(options, handler) {
|
|
82
122
|
return async (request) => {
|
|
83
123
|
// Ensure request has required properties
|
|
84
124
|
const vectorRequest = request;
|
|
85
|
-
//
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
// Parse query parameters from URL (handles duplicate params as arrays)
|
|
90
|
-
if (!vectorRequest.query && vectorRequest.url) {
|
|
91
|
-
const url = new URL(vectorRequest.url);
|
|
92
|
-
const query = {};
|
|
93
|
-
for (let [k, v] of url.searchParams) {
|
|
94
|
-
query[k] = query[k] ? [].concat(query[k], v) : v;
|
|
95
|
-
}
|
|
96
|
-
vectorRequest.query = query;
|
|
97
|
-
}
|
|
98
|
-
// Add metadata to request if provided
|
|
99
|
-
if (options.metadata) {
|
|
100
|
-
vectorRequest.metadata = options.metadata;
|
|
101
|
-
}
|
|
125
|
+
// Prepare the request with common logic
|
|
126
|
+
this.prepareRequest(vectorRequest, {
|
|
127
|
+
metadata: options.metadata
|
|
128
|
+
});
|
|
102
129
|
request = vectorRequest;
|
|
103
130
|
try {
|
|
104
131
|
// Default expose to true if not specified
|
|
@@ -140,22 +167,43 @@ export class VectorRouter {
|
|
|
140
167
|
}
|
|
141
168
|
let result;
|
|
142
169
|
const cacheOptions = options.cache;
|
|
170
|
+
// Create cache factory that handles Response objects
|
|
171
|
+
const cacheFactory = async () => {
|
|
172
|
+
const res = await handler(request);
|
|
173
|
+
// If Response, extract data for caching
|
|
174
|
+
if (res instanceof Response) {
|
|
175
|
+
return {
|
|
176
|
+
_isResponse: true,
|
|
177
|
+
body: await res.text(),
|
|
178
|
+
status: res.status,
|
|
179
|
+
headers: Object.fromEntries(res.headers.entries())
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return res;
|
|
183
|
+
};
|
|
143
184
|
if (cacheOptions && typeof cacheOptions === 'number' && cacheOptions > 0) {
|
|
144
185
|
const cacheKey = this.cacheManager.generateKey(request, {
|
|
145
186
|
authUser: request.authUser,
|
|
146
187
|
});
|
|
147
|
-
result = await this.cacheManager.get(cacheKey,
|
|
188
|
+
result = await this.cacheManager.get(cacheKey, cacheFactory, cacheOptions);
|
|
148
189
|
}
|
|
149
190
|
else if (cacheOptions && typeof cacheOptions === 'object' && cacheOptions.ttl) {
|
|
150
191
|
const cacheKey = cacheOptions.key ||
|
|
151
192
|
this.cacheManager.generateKey(request, {
|
|
152
193
|
authUser: request.authUser,
|
|
153
194
|
});
|
|
154
|
-
result = await this.cacheManager.get(cacheKey,
|
|
195
|
+
result = await this.cacheManager.get(cacheKey, cacheFactory, cacheOptions.ttl);
|
|
155
196
|
}
|
|
156
197
|
else {
|
|
157
198
|
result = await handler(request);
|
|
158
199
|
}
|
|
200
|
+
// Reconstruct Response if it was cached
|
|
201
|
+
if (result && typeof result === 'object' && result._isResponse === true) {
|
|
202
|
+
result = new Response(result.body, {
|
|
203
|
+
status: result.status,
|
|
204
|
+
headers: result.headers
|
|
205
|
+
});
|
|
206
|
+
}
|
|
159
207
|
let response;
|
|
160
208
|
if (options.rawResponse || result instanceof Response) {
|
|
161
209
|
response = result instanceof Response ? result : new Response(result);
|
|
@@ -185,16 +233,16 @@ export class VectorRouter {
|
|
|
185
233
|
async handle(request) {
|
|
186
234
|
const url = new URL(request.url);
|
|
187
235
|
const pathname = url.pathname;
|
|
188
|
-
for (const [method, regex, handlers] of this.routes) {
|
|
236
|
+
for (const [method, regex, handlers, path] of this.routes) {
|
|
189
237
|
if (request.method === 'OPTIONS' || request.method === method) {
|
|
190
238
|
const match = pathname.match(regex);
|
|
191
239
|
if (match) {
|
|
192
240
|
const req = request;
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
241
|
+
// Prepare the request with common logic
|
|
242
|
+
this.prepareRequest(req, {
|
|
243
|
+
params: match.groups || {},
|
|
244
|
+
route: path || pathname
|
|
245
|
+
});
|
|
198
246
|
for (const handler of handlers) {
|
|
199
247
|
const response = await handler(req);
|
|
200
248
|
if (response)
|
package/dist/core/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IRequest, type RouteEntry } from "itty-router";
|
|
2
|
-
import type { DefaultVectorTypes, GetAuthType, VectorRequest, VectorTypes } from "./types";
|
|
2
|
+
import type { CacheOptions, DefaultVectorTypes, GetAuthType, VectorRequest, VectorTypes } from "./types";
|
|
3
3
|
export interface ProtectedRequest<TTypes extends VectorTypes = DefaultVectorTypes> extends IRequest {
|
|
4
4
|
authUser?: GetAuthType<TTypes>;
|
|
5
5
|
}
|
|
@@ -70,7 +70,7 @@ export interface ApiOptions {
|
|
|
70
70
|
expose?: boolean;
|
|
71
71
|
rawRequest?: boolean;
|
|
72
72
|
rawResponse?: boolean;
|
|
73
|
-
cache?: number | null;
|
|
73
|
+
cache?: CacheOptions | number | null;
|
|
74
74
|
responseContentType?: string;
|
|
75
75
|
}
|
|
76
76
|
export declare function api<TTypes extends VectorTypes = DefaultVectorTypes>(options: ApiOptions, fn: (request: VectorRequest<TTypes>) => Promise<unknown>): (request: IRequest) => Promise<unknown>;
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/http.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { cors, withContent
|
|
1
|
+
import { cors, withContent } from "itty-router";
|
|
2
2
|
import { CONTENT_TYPES, HTTP_STATUS } from "./constants";
|
|
3
|
+
import { getVectorInstance } from "./core/vector";
|
|
3
4
|
export const { preflight, corsify } = cors({
|
|
4
5
|
origin: "*",
|
|
5
6
|
credentials: true,
|
|
@@ -25,7 +26,7 @@ export function route(options, fn) {
|
|
|
25
26
|
return {
|
|
26
27
|
entry,
|
|
27
28
|
options,
|
|
28
|
-
handler: fn
|
|
29
|
+
handler: fn,
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
function stringifyData(data) {
|
|
@@ -102,7 +103,6 @@ export function createResponse(statusCode, data, contentType = CONTENT_TYPES.JSO
|
|
|
102
103
|
}
|
|
103
104
|
export const protectedRoute = async (request, responseContentType) => {
|
|
104
105
|
// Get the Vector instance to access the protected handler
|
|
105
|
-
const { getVectorInstance } = await import("./core/vector");
|
|
106
106
|
const vector = getVectorInstance();
|
|
107
107
|
const protectedHandler = vector.getProtectedHandler();
|
|
108
108
|
if (!protectedHandler) {
|
|
@@ -131,7 +131,6 @@ export function api(options, fn) {
|
|
|
131
131
|
if (!rawRequest) {
|
|
132
132
|
await withContent(request);
|
|
133
133
|
}
|
|
134
|
-
withCookies(request);
|
|
135
134
|
// Cache handling is now done in the router
|
|
136
135
|
const result = await fn(request);
|
|
137
136
|
return rawResponse
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
var{defineProperty:Q,getOwnPropertyNames:_i,getOwnPropertyDescriptor:di}=Object,Oi=Object.prototype.hasOwnProperty;var n=new WeakMap,Ni=(i)=>{var l=n.get(i),f;if(l)return l;if(l=Q({},"__esModule",{value:!0}),i&&typeof i==="object"||typeof i==="function")_i(i).map((a)=>!Oi.call(l,a)&&Q(l,a,{get:()=>i[a],enumerable:!(f=di(i,a))||f.enumerable}));return n.set(i,l),l};var s=(i,l)=>{for(var f in l)Q(i,f,{get:l[f],enumerable:!0,configurable:!0,set:(a)=>l[f]=()=>a})};var U=(i,l)=>()=>(i&&(l=i(i=0)),l);var h=(i="text/plain; charset=utf-8",l)=>(f,a={})=>{if(f===void 0||f instanceof Response)return f;let E=new Response(l?.(f)??f,a.url?void 0:a);return E.headers.set("content-type",i),E},Fi,ji,Mi,Ti,Bi,Yi,r=async(i)=>{i.content=i.body?await i.clone().json().catch(()=>i.clone().formData()).catch(()=>i.text()):void 0},y=(i)=>{i.cookies=(i.headers.get("Cookie")||"").split(/;\s*/).map((l)=>l.split(/=(.+)/)).reduce((l,[f,a])=>a?(l[f]=a,l):l,{})},j=(i={})=>{let{origin:l="*",credentials:f=!1,allowMethods:a="*",allowHeaders:E,exposeHeaders:A,maxAge:d}=i,_=(I)=>{let O=I?.headers.get("origin");return l===!0?O:l instanceof RegExp?l.test(O)?O:void 0:Array.isArray(l)?l.includes(O)?O:void 0:l instanceof Function?l(O):l=="*"&&f?O:l},N=(I,O)=>{for(let[w,L]of Object.entries(O))L&&I.headers.append(w,L);return I};return{corsify:(I,O)=>I?.headers?.get("access-control-allow-origin")||I.status==101?I:N(I.clone(),{"access-control-allow-origin":_(O),"access-control-allow-credentials":f}),preflight:(I)=>{if(I.method=="OPTIONS"){let O=new Response(null,{status:204});return N(O,{"access-control-allow-origin":_(I),"access-control-allow-methods":a?.join?.(",")??a,"access-control-expose-headers":A?.join?.(",")??A,"access-control-allow-headers":E?.join?.(",")??E??I.headers.get("access-control-request-headers"),"access-control-max-age":d,"access-control-allow-credentials":f})}}}};var V=U(()=>{Fi=h("application/json; charset=utf-8",JSON.stringify),ji=h("text/plain; charset=utf-8",String),Mi=h("text/html"),Ti=h("image/jpeg"),Bi=h("image/png"),Yi=h("image/webp")});var C,X,M;var J=U(()=>{C={OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,IM_USED:226,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511},X={PORT:3000,HOSTNAME:"localhost",ROUTES_DIR:"./routes",CACHE_TTL:0,CORS_MAX_AGE:86400},M={JSON:"application/json",TEXT:"text/plain",HTML:"text/html",FORM_URLENCODED:"application/x-www-form-urlencoded",MULTIPART:"multipart/form-data"}});class W{protectedHandler=null;setProtectedHandler(i){this.protectedHandler=i}async authenticate(i){if(!this.protectedHandler)throw new Error("Protected handler not configured. Use vector.protected() to set authentication handler.");try{let l=await this.protectedHandler(i);return i.authUser=l,l}catch(l){throw new Error(`Authentication failed: ${l instanceof Error?l.message:String(l)}`)}}isAuthenticated(i){return!!i.authUser}getUser(i){return i.authUser||null}}class z{cacheHandler=null;memoryCache=new Map;cleanupInterval=null;setCacheHandler(i){this.cacheHandler=i}async get(i,l,f=X.CACHE_TTL){if(f<=0)return l();if(this.cacheHandler)return this.cacheHandler(i,l,f);return this.getFromMemoryCache(i,l,f)}async getFromMemoryCache(i,l,f){let a=Date.now(),E=this.memoryCache.get(i);if(this.isCacheValid(E,a))return E.value;let A=await l();return this.setInMemoryCache(i,A,f),A}isCacheValid(i,l){return i!==void 0&&i.expires>l}setInMemoryCache(i,l,f){let a=Date.now()+f*1000;this.memoryCache.set(i,{value:l,expires:a}),this.scheduleCleanup()}scheduleCleanup(){if(this.cleanupInterval)return;this.cleanupInterval=setInterval(()=>{this.cleanupExpired()},60000)}cleanupExpired(){let i=Date.now();for(let[l,f]of this.memoryCache.entries())if(f.expires<=i)this.memoryCache.delete(l);if(this.memoryCache.size===0&&this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}clear(){if(this.memoryCache.clear(),this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}async set(i,l,f=X.CACHE_TTL){if(f<=0)return;if(this.cacheHandler){await this.cacheHandler(i,async()=>l,f);return}this.setInMemoryCache(i,l,f)}delete(i){return this.memoryCache.delete(i)}has(i){let l=this.memoryCache.get(i);if(!l)return!1;if(l.expires<=Date.now())return this.memoryCache.delete(i),!1;return!0}generateKey(i,l){let f=new URL(i.url);return[i.method,f.pathname,f.search,l?.authUser?.id||"anonymous"].join(":")}}var q=U(()=>{J()});function $(i){if(typeof i!=="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function t(i,l){var f="",a=0,E=-1,A=0,d;for(var _=0;_<=i.length;++_){if(_<i.length)d=i.charCodeAt(_);else if(d===47)break;else d=47;if(d===47){if(E===_-1||A===1);else if(E!==_-1&&A===2){if(f.length<2||a!==2||f.charCodeAt(f.length-1)!==46||f.charCodeAt(f.length-2)!==46){if(f.length>2){var N=f.lastIndexOf("/");if(N!==f.length-1){if(N===-1)f="",a=0;else f=f.slice(0,N),a=f.length-1-f.lastIndexOf("/");E=_,A=0;continue}}else if(f.length===2||f.length===1){f="",a=0,E=_,A=0;continue}}if(l){if(f.length>0)f+="/..";else f="..";a=2}}else{if(f.length>0)f+="/"+i.slice(E+1,_);else f=i.slice(E+1,_);a=_-E-1}E=_,A=0}else if(d===46&&A!==-1)++A;else A=-1}return f}function Di(i,l){var f=l.dir||l.root,a=l.base||(l.name||"")+(l.ext||"");if(!f)return a;if(f===l.root)return f+a;return f+i+a}function x(){var i="",l=!1,f;for(var a=arguments.length-1;a>=-1&&!l;a--){var E;if(a>=0)E=arguments[a];else{if(f===void 0)f=process.cwd();E=f}if($(E),E.length===0)continue;i=E+"/"+i,l=E.charCodeAt(0)===47}if(i=t(i,!l),l)if(i.length>0)return"/"+i;else return"/";else if(i.length>0)return i;else return"."}function o(i){if($(i),i.length===0)return".";var l=i.charCodeAt(0)===47,f=i.charCodeAt(i.length-1)===47;if(i=t(i,!l),i.length===0&&!l)i=".";if(i.length>0&&f)i+="/";if(l)return"/"+i;return i}function Ii(i){return $(i),i.length>0&&i.charCodeAt(0)===47}function K(){if(arguments.length===0)return".";var i;for(var l=0;l<arguments.length;++l){var f=arguments[l];if($(f),f.length>0)if(i===void 0)i=f;else i+="/"+f}if(i===void 0)return".";return o(i)}function G(i,l){if($(i),$(l),i===l)return"";if(i=x(i),l=x(l),i===l)return"";var f=1;for(;f<i.length;++f)if(i.charCodeAt(f)!==47)break;var a=i.length,E=a-f,A=1;for(;A<l.length;++A)if(l.charCodeAt(A)!==47)break;var d=l.length,_=d-A,N=E<_?E:_,I=-1,O=0;for(;O<=N;++O){if(O===N){if(_>N){if(l.charCodeAt(A+O)===47)return l.slice(A+O+1);else if(O===0)return l.slice(A+O)}else if(E>N){if(i.charCodeAt(f+O)===47)I=O;else if(O===0)I=0}break}var w=i.charCodeAt(f+O),L=l.charCodeAt(A+O);if(w!==L)break;else if(w===47)I=O}var P="";for(O=f+I+1;O<=a;++O)if(O===a||i.charCodeAt(O)===47)if(P.length===0)P+="..";else P+="/..";if(P.length>0)return P+l.slice(A+I);else{if(A+=I,l.charCodeAt(A)===47)++A;return l.slice(A)}}function wi(i){return i}function T(i){if($(i),i.length===0)return".";var l=i.charCodeAt(0),f=l===47,a=-1,E=!0;for(var A=i.length-1;A>=1;--A)if(l=i.charCodeAt(A),l===47){if(!E){a=A;break}}else E=!1;if(a===-1)return f?"/":".";if(f&&a===1)return"//";return i.slice(0,a)}function Li(i,l){if(l!==void 0&&typeof l!=="string")throw new TypeError('"ext" argument must be a string');$(i);var f=0,a=-1,E=!0,A;if(l!==void 0&&l.length>0&&l.length<=i.length){if(l.length===i.length&&l===i)return"";var d=l.length-1,_=-1;for(A=i.length-1;A>=0;--A){var N=i.charCodeAt(A);if(N===47){if(!E){f=A+1;break}}else{if(_===-1)E=!1,_=A+1;if(d>=0)if(N===l.charCodeAt(d)){if(--d===-1)a=A}else d=-1,a=_}}if(f===a)a=_;else if(a===-1)a=i.length;return i.slice(f,a)}else{for(A=i.length-1;A>=0;--A)if(i.charCodeAt(A)===47){if(!E){f=A+1;break}}else if(a===-1)E=!1,a=A+1;if(a===-1)return"";return i.slice(f,a)}}function Ci(i){$(i);var l=-1,f=0,a=-1,E=!0,A=0;for(var d=i.length-1;d>=0;--d){var _=i.charCodeAt(d);if(_===47){if(!E){f=d+1;break}continue}if(a===-1)E=!1,a=d+1;if(_===46){if(l===-1)l=d;else if(A!==1)A=1}else if(l!==-1)A=-1}if(l===-1||a===-1||A===0||A===1&&l===a-1&&l===f+1)return"";return i.slice(l,a)}function Ri(i){if(i===null||typeof i!=="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return Di("/",i)}function Ui(i){$(i);var l={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return l;var f=i.charCodeAt(0),a=f===47,E;if(a)l.root="/",E=1;else E=0;var A=-1,d=0,_=-1,N=!0,I=i.length-1,O=0;for(;I>=E;--I){if(f=i.charCodeAt(I),f===47){if(!N){d=I+1;break}continue}if(_===-1)N=!1,_=I+1;if(f===46){if(A===-1)A=I;else if(O!==1)O=1}else if(A!==-1)O=-1}if(A===-1||_===-1||O===0||O===1&&A===_-1&&A===d+1){if(_!==-1)if(d===0&&a)l.base=l.name=i.slice(1,_);else l.base=l.name=i.slice(d,_)}else{if(d===0&&a)l.name=i.slice(1,A),l.base=i.slice(1,_);else l.name=i.slice(d,A),l.base=i.slice(d,_);l.ext=i.slice(A,_)}if(d>0)l.dir=i.slice(0,d-1);else if(a)l.dir="/";return l}var Z="/",$i=":",zi;var c=U(()=>{zi=((i)=>(i.posix=i,i))({resolve:x,normalize:o,isAbsolute:Ii,join:K,relative:G,_makeLong:wi,dirname:T,basename:Li,extname:Ci,format:Ri,parse:Ui,sep:Z,delimiter:$i,win32:null,posix:null})});class g{outputPath;constructor(i="./.vector/routes.generated.ts"){this.outputPath=i}async generate(i){let l=T(this.outputPath);await v.promises.mkdir(l,{recursive:!0});let f=[],a=new Map;for(let _ of i){if(!a.has(_.path))a.set(_.path,[]);a.get(_.path).push(_)}let E=0,A=[];for(let[_,N]of a){let I=G(T(this.outputPath),_).replace(/\\/g,"/").replace(/\.(ts|js)$/,""),O=`route_${E++}`,w=N.filter((L)=>L.name!=="default").map((L)=>L.name);if(N.some((L)=>L.name==="default"))if(w.length>0)f.push(`import ${O}, { ${w.join(", ")} } from '${I}';`);else f.push(`import ${O} from '${I}';`);else if(w.length>0)f.push(`import { ${w.join(", ")} } from '${I}';`);for(let L of N){let P=L.name==="default"?O:L.name;A.push(` ${P},`)}}let d=`// This file is auto-generated. Do not edit manually.
|
|
1
|
+
var{defineProperty:T,getOwnPropertyNames:s,getOwnPropertyDescriptor:q}=Object,r=Object.prototype.hasOwnProperty;var Z=new WeakMap,t=(i)=>{var f=Z.get(i),l;if(f)return f;if(f=T({},"__esModule",{value:!0}),i&&typeof i==="object"||typeof i==="function")s(i).map((a)=>!r.call(f,a)&&T(f,a,{get:()=>i[a],enumerable:!(l=q(i,a))||l.enumerable}));return Z.set(i,f),f};var o=(i,f)=>{for(var l in f)T(i,l,{get:f[l],enumerable:!0,configurable:!0,set:(a)=>f[l]=()=>a})};var Di={};o(Di,{route:()=>y,createResponse:()=>P,APIError:()=>C});module.exports=t(Di);var b=(i="text/plain; charset=utf-8",f)=>(l,a={})=>{if(l===void 0||l instanceof Response)return l;let E=new Response(f?.(l)??l,a.url?void 0:a);return E.headers.set("content-type",i),E},wi=b("application/json; charset=utf-8",JSON.stringify);var Li=b("text/plain; charset=utf-8",String),Ri=b("text/html"),Ci=b("image/jpeg"),Ui=b("image/png"),$i=b("image/webp"),c=async(i)=>{i.content=i.body?await i.clone().json().catch(()=>i.clone().formData()).catch(()=>i.text()):void 0},g=(i)=>{i.cookies=(i.headers.get("Cookie")||"").split(/;\s*/).map((f)=>f.split(/=(.+)/)).reduce((f,[l,a])=>a?(f[l]=a,f):f,{})},G=(i={})=>{let{origin:f="*",credentials:l=!1,allowMethods:a="*",allowHeaders:E,exposeHeaders:A,maxAge:d}=i,_=(O)=>{let N=O?.headers.get("origin");return f===!0?N:f instanceof RegExp?f.test(N)?N:void 0:Array.isArray(f)?f.includes(N)?N:void 0:f instanceof Function?f(N):f=="*"&&l?N:f},I=(O,N)=>{for(let[w,L]of Object.entries(N))L&&O.headers.append(w,L);return O};return{corsify:(O,N)=>O?.headers?.get("access-control-allow-origin")||O.status==101?O:I(O.clone(),{"access-control-allow-origin":_(N),"access-control-allow-credentials":l}),preflight:(O)=>{if(O.method=="OPTIONS"){let N=new Response(null,{status:204});return I(N,{"access-control-allow-origin":_(O),"access-control-allow-methods":a?.join?.(",")??a,"access-control-expose-headers":A?.join?.(",")??A,"access-control-allow-headers":E?.join?.(",")??E??O.headers.get("access-control-request-headers"),"access-control-max-age":d,"access-control-allow-credentials":l})}}}};var R={OK:200,CREATED:201,ACCEPTED:202,NON_AUTHORITATIVE_INFORMATION:203,NO_CONTENT:204,RESET_CONTENT:205,PARTIAL_CONTENT:206,MULTI_STATUS:207,ALREADY_REPORTED:208,IM_USED:226,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,USE_PROXY:305,TEMPORARY_REDIRECT:307,PERMANENT_REDIRECT:308,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,IM_A_TEAPOT:418,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511},B={PORT:3000,HOSTNAME:"localhost",ROUTES_DIR:"./routes",CACHE_TTL:0,CORS_MAX_AGE:86400},j={JSON:"application/json",TEXT:"text/plain",HTML:"text/html",FORM_URLENCODED:"application/x-www-form-urlencoded",MULTIPART:"multipart/form-data"};class Y{protectedHandler=null;setProtectedHandler(i){this.protectedHandler=i}async authenticate(i){if(!this.protectedHandler)throw new Error("Protected handler not configured. Use vector.protected() to set authentication handler.");try{let f=await this.protectedHandler(i);return i.authUser=f,f}catch(f){throw new Error(`Authentication failed: ${f instanceof Error?f.message:String(f)}`)}}isAuthenticated(i){return!!i.authUser}getUser(i){return i.authUser||null}}class Q{cacheHandler=null;memoryCache=new Map;cleanupInterval=null;setCacheHandler(i){this.cacheHandler=i}async get(i,f,l=B.CACHE_TTL){if(l<=0)return f();if(this.cacheHandler)return this.cacheHandler(i,f,l);return this.getFromMemoryCache(i,f,l)}async getFromMemoryCache(i,f,l){let a=Date.now(),E=this.memoryCache.get(i);if(this.isCacheValid(E,a))return E.value;let A=await f();return this.setInMemoryCache(i,A,l),A}isCacheValid(i,f){return i!==void 0&&i.expires>f}setInMemoryCache(i,f,l){let a=Date.now()+l*1000;this.memoryCache.set(i,{value:f,expires:a}),this.scheduleCleanup()}scheduleCleanup(){if(this.cleanupInterval)return;this.cleanupInterval=setInterval(()=>{this.cleanupExpired()},60000)}cleanupExpired(){let i=Date.now();for(let[f,l]of this.memoryCache.entries())if(l.expires<=i)this.memoryCache.delete(f);if(this.memoryCache.size===0&&this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}clear(){if(this.memoryCache.clear(),this.cleanupInterval)clearInterval(this.cleanupInterval),this.cleanupInterval=null}async set(i,f,l=B.CACHE_TTL){if(l<=0)return;if(this.cacheHandler){await this.cacheHandler(i,async()=>f,l);return}this.setInMemoryCache(i,f,l)}delete(i){return this.memoryCache.delete(i)}has(i){let f=this.memoryCache.get(i);if(!f)return!1;if(f.expires<=Date.now())return this.memoryCache.delete(i),!1;return!0}generateKey(i,f){let l=new URL(i.url);return[i.method,l.pathname,l.search,f?.authUser?.id||"anonymous"].join(":")}}var z=(()=>({}));function U(i){if(typeof i!=="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(i))}function k(i,f){var l="",a=0,E=-1,A=0,d;for(var _=0;_<=i.length;++_){if(_<i.length)d=i.charCodeAt(_);else if(d===47)break;else d=47;if(d===47){if(E===_-1||A===1);else if(E!==_-1&&A===2){if(l.length<2||a!==2||l.charCodeAt(l.length-1)!==46||l.charCodeAt(l.length-2)!==46){if(l.length>2){var I=l.lastIndexOf("/");if(I!==l.length-1){if(I===-1)l="",a=0;else l=l.slice(0,I),a=l.length-1-l.lastIndexOf("/");E=_,A=0;continue}}else if(l.length===2||l.length===1){l="",a=0,E=_,A=0;continue}}if(f){if(l.length>0)l+="/..";else l="..";a=2}}else{if(l.length>0)l+="/"+i.slice(E+1,_);else l=i.slice(E+1,_);a=_-E-1}E=_,A=0}else if(d===46&&A!==-1)++A;else A=-1}return l}function p(i,f){var l=f.dir||f.root,a=f.base||(f.name||"")+(f.ext||"");if(!l)return a;if(l===f.root)return l+a;return l+i+a}function S(){var i="",f=!1,l;for(var a=arguments.length-1;a>=-1&&!f;a--){var E;if(a>=0)E=arguments[a];else{if(l===void 0)l=process.cwd();E=l}if(U(E),E.length===0)continue;i=E+"/"+i,f=E.charCodeAt(0)===47}if(i=k(i,!f),f)if(i.length>0)return"/"+i;else return"/";else if(i.length>0)return i;else return"."}function m(i){if(U(i),i.length===0)return".";var f=i.charCodeAt(0)===47,l=i.charCodeAt(i.length-1)===47;if(i=k(i,!f),i.length===0&&!f)i=".";if(i.length>0&&l)i+="/";if(f)return"/"+i;return i}function e(i){return U(i),i.length>0&&i.charCodeAt(0)===47}function V(){if(arguments.length===0)return".";var i;for(var f=0;f<arguments.length;++f){var l=arguments[f];if(U(l),l.length>0)if(i===void 0)i=l;else i+="/"+l}if(i===void 0)return".";return m(i)}function h(i,f){if(U(i),U(f),i===f)return"";if(i=S(i),f=S(f),i===f)return"";var l=1;for(;l<i.length;++l)if(i.charCodeAt(l)!==47)break;var a=i.length,E=a-l,A=1;for(;A<f.length;++A)if(f.charCodeAt(A)!==47)break;var d=f.length,_=d-A,I=E<_?E:_,O=-1,N=0;for(;N<=I;++N){if(N===I){if(_>I){if(f.charCodeAt(A+N)===47)return f.slice(A+N+1);else if(N===0)return f.slice(A+N)}else if(E>I){if(i.charCodeAt(l+N)===47)O=N;else if(N===0)O=0}break}var w=i.charCodeAt(l+N),L=f.charCodeAt(A+N);if(w!==L)break;else if(w===47)O=N}var $="";for(N=l+O+1;N<=a;++N)if(N===a||i.charCodeAt(N)===47)if($.length===0)$+="..";else $+="/..";if($.length>0)return $+f.slice(A+O);else{if(A+=O,f.charCodeAt(A)===47)++A;return f.slice(A)}}function ii(i){return i}function F(i){if(U(i),i.length===0)return".";var f=i.charCodeAt(0),l=f===47,a=-1,E=!0;for(var A=i.length-1;A>=1;--A)if(f=i.charCodeAt(A),f===47){if(!E){a=A;break}}else E=!1;if(a===-1)return l?"/":".";if(l&&a===1)return"//";return i.slice(0,a)}function fi(i,f){if(f!==void 0&&typeof f!=="string")throw new TypeError('"ext" argument must be a string');U(i);var l=0,a=-1,E=!0,A;if(f!==void 0&&f.length>0&&f.length<=i.length){if(f.length===i.length&&f===i)return"";var d=f.length-1,_=-1;for(A=i.length-1;A>=0;--A){var I=i.charCodeAt(A);if(I===47){if(!E){l=A+1;break}}else{if(_===-1)E=!1,_=A+1;if(d>=0)if(I===f.charCodeAt(d)){if(--d===-1)a=A}else d=-1,a=_}}if(l===a)a=_;else if(a===-1)a=i.length;return i.slice(l,a)}else{for(A=i.length-1;A>=0;--A)if(i.charCodeAt(A)===47){if(!E){l=A+1;break}}else if(a===-1)E=!1,a=A+1;if(a===-1)return"";return i.slice(l,a)}}function li(i){U(i);var f=-1,l=0,a=-1,E=!0,A=0;for(var d=i.length-1;d>=0;--d){var _=i.charCodeAt(d);if(_===47){if(!E){l=d+1;break}continue}if(a===-1)E=!1,a=d+1;if(_===46){if(f===-1)f=d;else if(A!==1)A=1}else if(f!==-1)A=-1}if(f===-1||a===-1||A===0||A===1&&f===a-1&&f===l+1)return"";return i.slice(f,a)}function ai(i){if(i===null||typeof i!=="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof i);return p("/",i)}function Ai(i){U(i);var f={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return f;var l=i.charCodeAt(0),a=l===47,E;if(a)f.root="/",E=1;else E=0;var A=-1,d=0,_=-1,I=!0,O=i.length-1,N=0;for(;O>=E;--O){if(l=i.charCodeAt(O),l===47){if(!I){d=O+1;break}continue}if(_===-1)I=!1,_=O+1;if(l===46){if(A===-1)A=O;else if(N!==1)N=1}else if(A!==-1)N=-1}if(A===-1||_===-1||N===0||N===1&&A===_-1&&A===d+1){if(_!==-1)if(d===0&&a)f.base=f.name=i.slice(1,_);else f.base=f.name=i.slice(d,_)}else{if(d===0&&a)f.name=i.slice(1,A),f.base=i.slice(1,_);else f.name=i.slice(d,A),f.base=i.slice(d,_);f.ext=i.slice(A,_)}if(d>0)f.dir=i.slice(0,d-1);else if(a)f.dir="/";return f}var X="/",Ei=":",xi=((i)=>(i.posix=i,i))({resolve:S,normalize:m,isAbsolute:e,join:V,relative:h,_makeLong:ii,dirname:F,basename:fi,extname:li,format:ai,parse:Ai,sep:X,delimiter:Ei,win32:null,posix:null});class J{outputPath;constructor(i="./.vector/routes.generated.ts"){this.outputPath=i}async generate(i){let f=F(this.outputPath);await z.promises.mkdir(f,{recursive:!0});let l=[],a=new Map;for(let _ of i){if(!a.has(_.path))a.set(_.path,[]);a.get(_.path).push(_)}let E=0,A=[];for(let[_,I]of a){let O=h(F(this.outputPath),_).replace(/\\/g,"/").replace(/\.(ts|js)$/,""),N=`route_${E++}`,w=I.filter((L)=>L.name!=="default").map((L)=>L.name);if(I.some((L)=>L.name==="default"))if(w.length>0)l.push(`import ${N}, { ${w.join(", ")} } from '${O}';`);else l.push(`import ${N} from '${O}';`);else if(w.length>0)l.push(`import { ${w.join(", ")} } from '${O}';`);for(let L of I){let $=L.name==="default"?N:L.name;A.push(` ${$},`)}}let d=`// This file is auto-generated. Do not edit manually.
|
|
2
2
|
// Generated at: ${new Date().toISOString()}
|
|
3
3
|
|
|
4
|
-
${
|
|
4
|
+
${l.join(`
|
|
5
5
|
`)}
|
|
6
6
|
|
|
7
7
|
export const routes = [
|
|
@@ -10,12 +10,12 @@ ${A.join(`
|
|
|
10
10
|
];
|
|
11
11
|
|
|
12
12
|
export default routes;
|
|
13
|
-
`;await
|
|
13
|
+
`;await z.promises.writeFile(this.outputPath,d,"utf-8")}async generateDynamic(i){let f=[];for(let l of i){let a=JSON.stringify({method:l.method,path:l.options.path,options:l.options});f.push(` await import('${l.path}').then(m => ({
|
|
14
14
|
...${a},
|
|
15
|
-
handler: m.${
|
|
15
|
+
handler: m.${l.name==="default"?"default":l.name}
|
|
16
16
|
}))`)}return`export const loadRoutes = async () => {
|
|
17
17
|
return Promise.all([
|
|
18
|
-
${
|
|
18
|
+
${f.join(`,
|
|
19
19
|
`)}
|
|
20
20
|
]);
|
|
21
|
-
};`}}var v;var p=U(()=>{v=(()=>({}));c()});class k{routesDir;constructor(i="./routes"){this.routesDir=x(process.cwd(),i)}async scan(){let i=[];if(!F.existsSync(this.routesDir))return[];try{await this.scanDirectory(this.routesDir,i)}catch(l){if(l.code==="ENOENT")return console.warn(` ✗ Routes directory not accessible: ${this.routesDir}`),[];throw l}return i}async scanDirectory(i,l,f=""){let a=await F.promises.readdir(i);for(let E of a){let A=K(i,E);if((await F.promises.stat(A)).isDirectory()){let _=f?`${f}/${E}`:E;await this.scanDirectory(A,l,_)}else if(E.endsWith(".ts")||E.endsWith(".js")){let _=G(this.routesDir,A).replace(/\.(ts|js)$/,"").split(Z).join("/");try{let I=await import(process.platform==="win32"?`file:///${A.replace(/\\/g,"/")}`:A);if(I.default&&typeof I.default==="function")l.push({name:"default",path:A,method:"GET",options:{method:"GET",path:`/${_}`,expose:!0}});for(let[O,w]of Object.entries(I)){if(O==="default")continue;if(w&&typeof w==="object"&&"entry"in w&&"options"in w&&"handler"in w){let L=w;l.push({name:O,path:A,method:L.options.method,options:L.options})}else if(Array.isArray(w)&&w.length>=4){let[L,,,P]=w;l.push({name:O,path:A,method:L,options:{method:L,path:P,expose:!0}})}}}catch(N){console.error(`Failed to load route from ${A}:`,N)}}}}enableWatch(i){if(typeof Bun!=="undefined"&&Bun.env.NODE_ENV==="development")console.log(`Watching for route changes in ${this.routesDir}`),setInterval(async()=>{await i()},1000)}}var F;var e=U(()=>{F=(()=>({}));c()});class B{beforeHandlers=[];finallyHandlers=[];addBefore(...i){this.beforeHandlers.push(...i)}addFinally(...i){this.finallyHandlers.push(...i)}async executeBefore(i){let l=i;for(let f of this.beforeHandlers){let a=await f(l);if(a instanceof Response)return a;l=a}return l}async executeFinally(i,l){let f=i;for(let a of this.finallyHandlers)f=await a(f,l);return f}clone(){let i=new B;return i.beforeHandlers=[...this.beforeHandlers],i.finallyHandlers=[...this.finallyHandlers],i}clear(){this.beforeHandlers=[],this.finallyHandlers=[]}}function ii(i){return process.platform==="win32"?`file:///${i.replace(/\\/g,"/")}`:i}class u{middlewareManager;authManager;cacheManager;routes=[];constructor(i,l,f){this.middlewareManager=i,this.authManager=l,this.cacheManager=f}getRouteSpecificity(i){let A=0,d=i.split("/").filter(Boolean);for(let _ of d)if(this.isStaticSegment(_))A+=1000;else if(this.isParamSegment(_))A+=10;else if(this.isWildcardSegment(_))A+=1;if(A+=i.length,this.isExactPath(i))A+=1e4;return A}isStaticSegment(i){return!i.startsWith(":")&&!i.includes("*")}isParamSegment(i){return i.startsWith(":")}isWildcardSegment(i){return i.includes("*")}isExactPath(i){return!i.includes(":")&&!i.includes("*")}sortRoutes(){this.routes.sort((i,l)=>{let f=this.extractPath(i),a=this.extractPath(l),E=this.getRouteSpecificity(f);return this.getRouteSpecificity(a)-E})}extractPath(i){return i[3]||""}route(i,l){let f=this.wrapHandler(i,l),a=[i.method.toUpperCase(),this.createRouteRegex(i.path),[f],i.path];return this.routes.push(a),this.sortRoutes(),a}createRouteRegex(i){return RegExp(`^${i.replace(/\/+(\/|$)/g,"$1").replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`)}wrapHandler(i,l){return async(f)=>{let a=f;if(!a.context)a.context={};if(!a.query&&a.url){let E=new URL(a.url),A={};for(let[d,_]of E.searchParams)A[d]=A[d]?[].concat(A[d],_):_;a.query=A}if(i.metadata)a.metadata=i.metadata;f=a;try{if(i.expose===!1)return R.forbidden("Forbidden");let E=await this.middlewareManager.executeBefore(f);if(E instanceof Response)return E;if(f=E,i.auth)try{await this.authManager.authenticate(f)}catch(N){return R.unauthorized(N instanceof Error?N.message:"Authentication failed",i.responseContentType)}if(!i.rawRequest&&f.method!=="GET"&&f.method!=="HEAD")try{let N=f.headers.get("content-type");if(N?.includes("application/json"))f.content=await f.json();else if(N?.includes("application/x-www-form-urlencoded"))f.content=Object.fromEntries(await f.formData());else if(N?.includes("multipart/form-data"))f.content=await f.formData();else f.content=await f.text()}catch{f.content=null}let A,d=i.cache;if(d&&typeof d==="number"&&d>0){let N=this.cacheManager.generateKey(f,{authUser:f.authUser});A=await this.cacheManager.get(N,()=>l(f),d)}else if(d&&typeof d==="object"&&d.ttl){let N=d.key||this.cacheManager.generateKey(f,{authUser:f.authUser});A=await this.cacheManager.get(N,()=>l(f),d.ttl)}else A=await l(f);let _;if(i.rawResponse||A instanceof Response)_=A instanceof Response?A:new Response(A);else _=b(200,A,i.responseContentType);return _=await this.middlewareManager.executeFinally(_,f),_}catch(E){if(E instanceof Response)return E;return console.error("Route handler error:",E),R.internalServerError(E instanceof Error?E.message:String(E),i.responseContentType)}}}addRoute(i){this.routes.push(i),this.sortRoutes()}getRoutes(){return this.routes}async handle(i){let f=new URL(i.url).pathname;for(let[a,E,A]of this.routes)if(i.method==="OPTIONS"||i.method===a){let d=f.match(E);if(d){let _=i;if(!_.context)_.context={};_.params=d.groups||{};for(let N of A){let I=await N(_);if(I)return I}}}return R.notFound("Route not found")}clearRoutes(){this.routes=[]}}var li=U(()=>{Y()});class m{server=null;router;config;corsHandler;constructor(i,l){if(this.router=i,this.config=l,l.cors){let{preflight:f,corsify:a}=j(this.normalizeCorsOptions(l.cors));this.corsHandler={preflight:f,corsify:a}}}normalizeCorsOptions(i){return{origin:i.origin||"*",credentials:i.credentials!==!1,allowHeaders:Array.isArray(i.allowHeaders)?i.allowHeaders.join(", "):i.allowHeaders||"Content-Type, Authorization",allowMethods:Array.isArray(i.allowMethods)?i.allowMethods.join(", "):i.allowMethods||"GET, POST, PUT, PATCH, DELETE, OPTIONS",exposeHeaders:Array.isArray(i.exposeHeaders)?i.exposeHeaders.join(", "):i.exposeHeaders||"Authorization",maxAge:i.maxAge||86400}}async start(){let i=this.config.port||3000,l=this.config.hostname||"localhost",f=async(a)=>{try{if(this.corsHandler&&a.method==="OPTIONS")return this.corsHandler.preflight(a);let E=await this.router.handle(a);if(this.corsHandler)E=this.corsHandler.corsify(E,a);return E}catch(E){return console.error("Server error:",E),new Response("Internal Server Error",{status:500})}};try{if(this.server=Bun.serve({port:i,hostname:l,reusePort:this.config.reusePort!==!1,fetch:f,idleTimeout:this.config.idleTimeout||60,error:(a)=>{return console.error("[ERROR] Server error:",a),new Response("Internal Server Error",{status:500})}}),!this.server||!this.server.port)throw new Error(`Failed to start server on ${l}:${i} - server object is invalid`);return console.log(`→ Vector server running at http://${l}:${i}`),this.server}catch(a){if(a.code==="EADDRINUSE"||a.message?.includes("address already in use"))a.message=`Port ${i} is already in use`,a.port=i;else if(a.code==="EACCES"||a.message?.includes("permission denied"))a.message=`Permission denied to bind to port ${i}`,a.port=i;else if(a.message?.includes("EADDRNOTAVAIL"))a.message=`Cannot bind to hostname ${l}`,a.hostname=l;throw a}}stop(){if(this.server)this.server.stop(),this.server=null,console.log("Server stopped")}getServer(){return this.server}getPort(){return this.server?.port||this.config.port||3000}getHostname(){return this.server?.hostname||this.config.hostname||"localhost"}getUrl(){let i=this.getPort();return`http://${this.getHostname()}:${i}`}}var fi=U(()=>{V()});var ai={};s(ai,{getVectorInstance:()=>Pi,Vector:()=>H});class H{static instance;router;server=null;middlewareManager;authManager;cacheManager;config={};routeScanner=null;routeGenerator=null;_protectedHandler=null;_cacheHandler=null;constructor(){this.middlewareManager=new B,this.authManager=new W,this.cacheManager=new z,this.router=new u(this.middlewareManager,this.authManager,this.cacheManager)}static getInstance(){if(!H.instance)H.instance=new H;return H.instance}setProtectedHandler(i){this._protectedHandler=i,this.authManager.setProtectedHandler(i)}getProtectedHandler(){return this._protectedHandler}setCacheHandler(i){this._cacheHandler=i,this.cacheManager.setCacheHandler(i)}getCacheHandler(){return this._cacheHandler}addRoute(i,l){return this.router.route(i,l)}async startServer(i){if(this.config={...this.config,...i},this.middlewareManager.clear(),i?.before)this.middlewareManager.addBefore(...i.before);if(i?.finally)this.middlewareManager.addFinally(...i.finally);if(this.config.autoDiscover!==!1)await this.discoverRoutes();return this.server=new m(this.router,this.config),await this.server.start()}async discoverRoutes(){let i=this.config.routesDir||"./routes";if(this.routeScanner=new k(i),!this.routeGenerator)this.routeGenerator=new g;try{let l=await this.routeScanner.scan();if(l.length>0){if(this.config.development)await this.routeGenerator.generate(l);for(let f of l)try{let E=await import(ii(f.path)),A=f.name==="default"?E.default:E[f.name];if(A){if(this.isRouteDefinition(A)){let d=A;this.router.route(d.options,d.handler),this.logRouteLoaded(d.options)}else if(this.isRouteEntry(A))this.router.addRoute(A),this.logRouteLoaded(A);else if(typeof A==="function")this.router.route(f.options,A),this.logRouteLoaded(f.options)}}catch(a){console.error(`Failed to load route ${f.name} from ${f.path}:`,a)}this.router.sortRoutes()}}catch(l){if(l.code!=="ENOENT"&&l.code!=="ENOTDIR")console.error("Failed to discover routes:",l)}}async loadRoute(i){if(typeof i==="function"){let l=i();if(Array.isArray(l))this.router.addRoute(l)}else if(i&&typeof i==="object"){for(let[,l]of Object.entries(i))if(typeof l==="function"){let f=l();if(Array.isArray(f))this.router.addRoute(f)}}}isRouteEntry(i){return Array.isArray(i)&&i.length>=3}isRouteDefinition(i){return i&&typeof i==="object"&&"entry"in i&&"options"in i&&"handler"in i}logRouteLoaded(i){}stop(){if(this.server)this.server.stop(),this.server=null;this.router.clearRoutes()}getServer(){return this.server}getRouter(){return this.router}getCacheManager(){return this.cacheManager}getAuthManager(){return this.authManager}static resetInstance(){H.instance=null}}var Pi;var Ai=U(()=>{q();p();e();li();fi();Pi=H.getInstance});function Ei(i,l){let f=Si(i,l);return{entry:[i.method.toUpperCase(),RegExp(`^${i.path.replace(/\/+(\/|$)/g,"$1").replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),[f],i.path],options:i,handler:l}}function Hi(i){return JSON.stringify(i??null,(l,f)=>typeof f==="bigint"?f.toString():f)}function D(i,l,f){let a={error:!0,message:l,statusCode:i,timestamp:new Date().toISOString()};return b(i,a,f)}function b(i,l,f=M.JSON){let a=f===M.JSON?Hi(l):l;return new Response(a,{status:i,headers:{"content-type":f}})}function Si(i,l){let{auth:f=!1,expose:a=!1,rawRequest:E=!1,rawResponse:A=!1,responseContentType:d=M.JSON}=i;return async(_)=>{if(!a)return R.forbidden("Forbidden");try{if(f)await hi(_,d);if(!E)await r(_);y(_);let N=await l(_);return A?N:bi.success(N,d)}catch(N){if(N instanceof Response)return N;return R.internalServerError(String(N),d)}}}var Al,El,bi,R,hi=async(i,l)=>{let{getVectorInstance:f}=await Promise.resolve().then(() => (Ai(),ai)),E=f().getProtectedHandler();if(!E)throw R.unauthorized("Authentication not configured",l);try{let A=await E(i);i.authUser=A}catch(A){throw R.unauthorized(A instanceof Error?A.message:"Authentication failed",l)}};var Y=U(()=>{V();J();({preflight:Al,corsify:El}=j({origin:"*",credentials:!0,allowHeaders:"Content-Type, Authorization",allowMethods:"GET, POST, PUT, PATCH, DELETE, OPTIONS",exposeHeaders:"Authorization",maxAge:86400}));bi={success:(i,l)=>b(C.OK,i,l),created:(i,l)=>b(C.CREATED,i,l)};R={badRequest:(i="Bad Request",l)=>D(C.BAD_REQUEST,i,l),unauthorized:(i="Unauthorized",l)=>D(C.UNAUTHORIZED,i,l),paymentRequired:(i="Payment Required",l)=>D(402,i,l),forbidden:(i="Forbidden",l)=>D(C.FORBIDDEN,i,l),notFound:(i="Not Found",l)=>D(C.NOT_FOUND,i,l),methodNotAllowed:(i="Method Not Allowed",l)=>D(405,i,l),notAcceptable:(i="Not Acceptable",l)=>D(406,i,l),requestTimeout:(i="Request Timeout",l)=>D(408,i,l),conflict:(i="Conflict",l)=>D(C.CONFLICT,i,l),gone:(i="Gone",l)=>D(410,i,l),lengthRequired:(i="Length Required",l)=>D(411,i,l),preconditionFailed:(i="Precondition Failed",l)=>D(412,i,l),payloadTooLarge:(i="Payload Too Large",l)=>D(413,i,l),uriTooLong:(i="URI Too Long",l)=>D(414,i,l),unsupportedMediaType:(i="Unsupported Media Type",l)=>D(415,i,l),rangeNotSatisfiable:(i="Range Not Satisfiable",l)=>D(416,i,l),expectationFailed:(i="Expectation Failed",l)=>D(417,i,l),imATeapot:(i="I'm a teapot",l)=>D(418,i,l),misdirectedRequest:(i="Misdirected Request",l)=>D(421,i,l),unprocessableEntity:(i="Unprocessable Entity",l)=>D(C.UNPROCESSABLE_ENTITY,i,l),locked:(i="Locked",l)=>D(423,i,l),failedDependency:(i="Failed Dependency",l)=>D(424,i,l),tooEarly:(i="Too Early",l)=>D(425,i,l),upgradeRequired:(i="Upgrade Required",l)=>D(426,i,l),preconditionRequired:(i="Precondition Required",l)=>D(428,i,l),tooManyRequests:(i="Too Many Requests",l)=>D(429,i,l),requestHeaderFieldsTooLarge:(i="Request Header Fields Too Large",l)=>D(431,i,l),unavailableForLegalReasons:(i="Unavailable For Legal Reasons",l)=>D(451,i,l),internalServerError:(i="Internal Server Error",l)=>D(C.INTERNAL_SERVER_ERROR,i,l),notImplemented:(i="Not Implemented",l)=>D(501,i,l),badGateway:(i="Bad Gateway",l)=>D(502,i,l),serviceUnavailable:(i="Service Unavailable",l)=>D(503,i,l),gatewayTimeout:(i="Gateway Timeout",l)=>D(504,i,l),httpVersionNotSupported:(i="HTTP Version Not Supported",l)=>D(505,i,l),variantAlsoNegotiates:(i="Variant Also Negotiates",l)=>D(506,i,l),insufficientStorage:(i="Insufficient Storage",l)=>D(507,i,l),loopDetected:(i="Loop Detected",l)=>D(508,i,l),notExtended:(i="Not Extended",l)=>D(510,i,l),networkAuthenticationRequired:(i="Network Authentication Required",l)=>D(511,i,l),invalidArgument:(i="Invalid Argument",l)=>D(C.UNPROCESSABLE_ENTITY,i,l),rateLimitExceeded:(i="Rate Limit Exceeded",l)=>D(429,i,l),maintenance:(i="Service Under Maintenance",l)=>D(503,i,l),custom:(i,l,f)=>D(i,l,f)}});var xi={};s(xi,{route:()=>Ei,createResponse:()=>b,APIError:()=>R});module.exports=Ni(xi);Y();Y();
|
|
21
|
+
};`}}var x=(()=>({}));class W{routesDir;constructor(i="./routes"){this.routesDir=S(process.cwd(),i)}async scan(){let i=[];if(!x.existsSync(this.routesDir))return[];try{await this.scanDirectory(this.routesDir,i)}catch(f){if(f.code==="ENOENT")return console.warn(` ✗ Routes directory not accessible: ${this.routesDir}`),[];throw f}return i}async scanDirectory(i,f,l=""){let a=await x.promises.readdir(i);for(let E of a){let A=V(i,E);if((await x.promises.stat(A)).isDirectory()){let _=l?`${l}/${E}`:E;await this.scanDirectory(A,f,_)}else if(E.endsWith(".ts")||E.endsWith(".js")){let _=h(this.routesDir,A).replace(/\.(ts|js)$/,"").split(X).join("/");try{let O=await import(process.platform==="win32"?`file:///${A.replace(/\\/g,"/")}`:A);if(O.default&&typeof O.default==="function")f.push({name:"default",path:A,method:"GET",options:{method:"GET",path:`/${_}`,expose:!0}});for(let[N,w]of Object.entries(O)){if(N==="default")continue;if(w&&typeof w==="object"&&"entry"in w&&"options"in w&&"handler"in w){let L=w;f.push({name:N,path:A,method:L.options.method,options:L.options})}else if(Array.isArray(w)&&w.length>=4){let[L,,,$]=w;f.push({name:N,path:A,method:L,options:{method:L,path:$,expose:!0}})}}}catch(I){console.error(`Failed to load route from ${A}:`,I)}}}}enableWatch(i){if(typeof Bun!=="undefined"&&Bun.env.NODE_ENV==="development")console.log(`Watching for route changes in ${this.routesDir}`),setInterval(async()=>{await i()},1000)}}class M{beforeHandlers=[];finallyHandlers=[];addBefore(...i){this.beforeHandlers.push(...i)}addFinally(...i){this.finallyHandlers.push(...i)}async executeBefore(i){let f=i;for(let l of this.beforeHandlers){let a=await l(f);if(a instanceof Response)return a;f=a}return f}async executeFinally(i,f){let l=i;for(let a of this.finallyHandlers)l=await a(l,f);return l}clone(){let i=new M;return i.beforeHandlers=[...this.beforeHandlers],i.finallyHandlers=[...this.finallyHandlers],i}clear(){this.beforeHandlers=[],this.finallyHandlers=[]}}function u(i){return process.platform==="win32"?`file:///${i.replace(/\\/g,"/")}`:i}class v{middlewareManager;authManager;cacheManager;routes=[];constructor(i,f,l){this.middlewareManager=i,this.authManager=f,this.cacheManager=l}getRouteSpecificity(i){let A=0,d=i.split("/").filter(Boolean);for(let _ of d)if(this.isStaticSegment(_))A+=1000;else if(this.isParamSegment(_))A+=10;else if(this.isWildcardSegment(_))A+=1;if(A+=i.length,this.isExactPath(i))A+=1e4;return A}isStaticSegment(i){return!i.startsWith(":")&&!i.includes("*")}isParamSegment(i){return i.startsWith(":")}isWildcardSegment(i){return i.includes("*")}isExactPath(i){return!i.includes(":")&&!i.includes("*")}sortRoutes(){this.routes.sort((i,f)=>{let l=this.extractPath(i),a=this.extractPath(f),E=this.getRouteSpecificity(l);return this.getRouteSpecificity(a)-E})}extractPath(i){return i[3]||""}route(i,f){let l=this.wrapHandler(i,f),a=[i.method.toUpperCase(),this.createRouteRegex(i.path),[l],i.path];return this.routes.push(a),this.sortRoutes(),a}createRouteRegex(i){return RegExp(`^${i.replace(/\/+(\/|$)/g,"$1").replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`)}prepareRequest(i,f){if(!i.context)i.context={};if(f?.params!==void 0)i.params=f.params;if(f?.route!==void 0)i.route=f.route;if(f?.metadata!==void 0)i.metadata=f.metadata;if(!i.query&&i.url){let l=new URL(i.url),a={};for(let[E,A]of l.searchParams)if(E in a)if(Array.isArray(a[E]))a[E].push(A);else a[E]=[a[E],A];else a[E]=A;i.query=a}if(!i.cookies)g(i)}wrapHandler(i,f){return async(l)=>{let a=l;this.prepareRequest(a,{metadata:i.metadata}),l=a;try{if(i.expose===!1)return C.forbidden("Forbidden");let E=await this.middlewareManager.executeBefore(l);if(E instanceof Response)return E;if(l=E,i.auth)try{await this.authManager.authenticate(l)}catch(O){return C.unauthorized(O instanceof Error?O.message:"Authentication failed",i.responseContentType)}if(!i.rawRequest&&l.method!=="GET"&&l.method!=="HEAD")try{let O=l.headers.get("content-type");if(O?.includes("application/json"))l.content=await l.json();else if(O?.includes("application/x-www-form-urlencoded"))l.content=Object.fromEntries(await l.formData());else if(O?.includes("multipart/form-data"))l.content=await l.formData();else l.content=await l.text()}catch{l.content=null}let A,d=i.cache,_=async()=>{let O=await f(l);if(O instanceof Response)return{_isResponse:!0,body:await O.text(),status:O.status,headers:Object.fromEntries(O.headers.entries())};return O};if(d&&typeof d==="number"&&d>0){let O=this.cacheManager.generateKey(l,{authUser:l.authUser});A=await this.cacheManager.get(O,_,d)}else if(d&&typeof d==="object"&&d.ttl){let O=d.key||this.cacheManager.generateKey(l,{authUser:l.authUser});A=await this.cacheManager.get(O,_,d.ttl)}else A=await f(l);if(A&&typeof A==="object"&&A._isResponse===!0)A=new Response(A.body,{status:A.status,headers:A.headers});let I;if(i.rawResponse||A instanceof Response)I=A instanceof Response?A:new Response(A);else I=P(200,A,i.responseContentType);return I=await this.middlewareManager.executeFinally(I,l),I}catch(E){if(E instanceof Response)return E;return console.error("Route handler error:",E),C.internalServerError(E instanceof Error?E.message:String(E),i.responseContentType)}}}addRoute(i){this.routes.push(i),this.sortRoutes()}getRoutes(){return this.routes}async handle(i){let l=new URL(i.url).pathname;for(let[a,E,A,d]of this.routes)if(i.method==="OPTIONS"||i.method===a){let _=l.match(E);if(_){let I=i;this.prepareRequest(I,{params:_.groups||{},route:d||l});for(let O of A){let N=await O(I);if(N)return N}}}return C.notFound("Route not found")}clearRoutes(){this.routes=[]}}class K{server=null;router;config;corsHandler;constructor(i,f){if(this.router=i,this.config=f,f.cors){let{preflight:l,corsify:a}=G(this.normalizeCorsOptions(f.cors));this.corsHandler={preflight:l,corsify:a}}}normalizeCorsOptions(i){return{origin:i.origin||"*",credentials:i.credentials!==!1,allowHeaders:Array.isArray(i.allowHeaders)?i.allowHeaders.join(", "):i.allowHeaders||"Content-Type, Authorization",allowMethods:Array.isArray(i.allowMethods)?i.allowMethods.join(", "):i.allowMethods||"GET, POST, PUT, PATCH, DELETE, OPTIONS",exposeHeaders:Array.isArray(i.exposeHeaders)?i.exposeHeaders.join(", "):i.exposeHeaders||"Authorization",maxAge:i.maxAge||86400}}async start(){let i=this.config.port||3000,f=this.config.hostname||"localhost",l=async(a)=>{try{if(this.corsHandler&&a.method==="OPTIONS")return this.corsHandler.preflight(a);let E=await this.router.handle(a);if(this.corsHandler)E=this.corsHandler.corsify(E,a);return E}catch(E){return console.error("Server error:",E),new Response("Internal Server Error",{status:500})}};try{if(this.server=Bun.serve({port:i,hostname:f,reusePort:this.config.reusePort!==!1,fetch:l,idleTimeout:this.config.idleTimeout||60,error:(a)=>{return console.error("[ERROR] Server error:",a),new Response("Internal Server Error",{status:500})}}),!this.server||!this.server.port)throw new Error(`Failed to start server on ${f}:${i} - server object is invalid`);return console.log(`→ Vector server running at http://${f}:${i}`),this.server}catch(a){if(a.code==="EADDRINUSE"||a.message?.includes("address already in use"))a.message=`Port ${i} is already in use`,a.port=i;else if(a.code==="EACCES"||a.message?.includes("permission denied"))a.message=`Permission denied to bind to port ${i}`,a.port=i;else if(a.message?.includes("EADDRNOTAVAIL"))a.message=`Cannot bind to hostname ${f}`,a.hostname=f;throw a}}stop(){if(this.server)this.server.stop(),this.server=null,console.log("Server stopped")}getServer(){return this.server}getPort(){return this.server?.port||this.config.port||3000}getHostname(){return this.server?.hostname||this.config.hostname||"localhost"}getUrl(){let i=this.getPort();return`http://${this.getHostname()}:${i}`}}class H{static instance;router;server=null;middlewareManager;authManager;cacheManager;config={};routeScanner=null;routeGenerator=null;_protectedHandler=null;_cacheHandler=null;constructor(){this.middlewareManager=new M,this.authManager=new Y,this.cacheManager=new Q,this.router=new v(this.middlewareManager,this.authManager,this.cacheManager)}static getInstance(){if(!H.instance)H.instance=new H;return H.instance}setProtectedHandler(i){this._protectedHandler=i,this.authManager.setProtectedHandler(i)}getProtectedHandler(){return this._protectedHandler}setCacheHandler(i){this._cacheHandler=i,this.cacheManager.setCacheHandler(i)}getCacheHandler(){return this._cacheHandler}addRoute(i,f){return this.router.route(i,f)}async startServer(i){if(this.config={...this.config,...i},this.middlewareManager.clear(),i?.before)this.middlewareManager.addBefore(...i.before);if(i?.finally)this.middlewareManager.addFinally(...i.finally);if(this.config.autoDiscover!==!1)await this.discoverRoutes();return this.server=new K(this.router,this.config),await this.server.start()}async discoverRoutes(){let i=this.config.routesDir||"./routes";if(this.routeScanner=new W(i),!this.routeGenerator)this.routeGenerator=new J;try{let f=await this.routeScanner.scan();if(f.length>0){if(this.config.development)await this.routeGenerator.generate(f);for(let l of f)try{let E=await import(u(l.path)),A=l.name==="default"?E.default:E[l.name];if(A){if(this.isRouteDefinition(A)){let d=A;this.router.route(d.options,d.handler),this.logRouteLoaded(d.options)}else if(this.isRouteEntry(A))this.router.addRoute(A),this.logRouteLoaded(A);else if(typeof A==="function")this.router.route(l.options,A),this.logRouteLoaded(l.options)}}catch(a){console.error(`Failed to load route ${l.name} from ${l.path}:`,a)}this.router.sortRoutes()}}catch(f){if(f.code!=="ENOENT"&&f.code!=="ENOTDIR")console.error("Failed to discover routes:",f)}}async loadRoute(i){if(typeof i==="function"){let f=i();if(Array.isArray(f))this.router.addRoute(f)}else if(i&&typeof i==="object"){for(let[,f]of Object.entries(i))if(typeof f==="function"){let l=f();if(Array.isArray(l))this.router.addRoute(l)}}}isRouteEntry(i){return Array.isArray(i)&&i.length>=3}isRouteDefinition(i){return i&&typeof i==="object"&&"entry"in i&&"options"in i&&"handler"in i}logRouteLoaded(i){}stop(){if(this.server)this.server.stop(),this.server=null;this.router.clearRoutes()}getServer(){return this.server}getRouter(){return this.router}getCacheManager(){return this.cacheManager}getAuthManager(){return this.authManager}static resetInstance(){H.instance=null}}var n=H.getInstance;var{preflight:qi,corsify:ri}=G({origin:"*",credentials:!0,allowHeaders:"Content-Type, Authorization",allowMethods:"GET, POST, PUT, PATCH, DELETE, OPTIONS",exposeHeaders:"Authorization",maxAge:86400});function y(i,f){let l=Ni(i,f);return{entry:[i.method.toUpperCase(),RegExp(`^${i.path.replace(/\/+(\/|$)/g,"$1").replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),[l],i.path],options:i,handler:f}}function _i(i){return JSON.stringify(i??null,(f,l)=>typeof l==="bigint"?l.toString():l)}var di={success:(i,f)=>P(R.OK,i,f),created:(i,f)=>P(R.CREATED,i,f)};function D(i,f,l){let a={error:!0,message:f,statusCode:i,timestamp:new Date().toISOString()};return P(i,a,l)}var C={badRequest:(i="Bad Request",f)=>D(R.BAD_REQUEST,i,f),unauthorized:(i="Unauthorized",f)=>D(R.UNAUTHORIZED,i,f),paymentRequired:(i="Payment Required",f)=>D(402,i,f),forbidden:(i="Forbidden",f)=>D(R.FORBIDDEN,i,f),notFound:(i="Not Found",f)=>D(R.NOT_FOUND,i,f),methodNotAllowed:(i="Method Not Allowed",f)=>D(405,i,f),notAcceptable:(i="Not Acceptable",f)=>D(406,i,f),requestTimeout:(i="Request Timeout",f)=>D(408,i,f),conflict:(i="Conflict",f)=>D(R.CONFLICT,i,f),gone:(i="Gone",f)=>D(410,i,f),lengthRequired:(i="Length Required",f)=>D(411,i,f),preconditionFailed:(i="Precondition Failed",f)=>D(412,i,f),payloadTooLarge:(i="Payload Too Large",f)=>D(413,i,f),uriTooLong:(i="URI Too Long",f)=>D(414,i,f),unsupportedMediaType:(i="Unsupported Media Type",f)=>D(415,i,f),rangeNotSatisfiable:(i="Range Not Satisfiable",f)=>D(416,i,f),expectationFailed:(i="Expectation Failed",f)=>D(417,i,f),imATeapot:(i="I'm a teapot",f)=>D(418,i,f),misdirectedRequest:(i="Misdirected Request",f)=>D(421,i,f),unprocessableEntity:(i="Unprocessable Entity",f)=>D(R.UNPROCESSABLE_ENTITY,i,f),locked:(i="Locked",f)=>D(423,i,f),failedDependency:(i="Failed Dependency",f)=>D(424,i,f),tooEarly:(i="Too Early",f)=>D(425,i,f),upgradeRequired:(i="Upgrade Required",f)=>D(426,i,f),preconditionRequired:(i="Precondition Required",f)=>D(428,i,f),tooManyRequests:(i="Too Many Requests",f)=>D(429,i,f),requestHeaderFieldsTooLarge:(i="Request Header Fields Too Large",f)=>D(431,i,f),unavailableForLegalReasons:(i="Unavailable For Legal Reasons",f)=>D(451,i,f),internalServerError:(i="Internal Server Error",f)=>D(R.INTERNAL_SERVER_ERROR,i,f),notImplemented:(i="Not Implemented",f)=>D(501,i,f),badGateway:(i="Bad Gateway",f)=>D(502,i,f),serviceUnavailable:(i="Service Unavailable",f)=>D(503,i,f),gatewayTimeout:(i="Gateway Timeout",f)=>D(504,i,f),httpVersionNotSupported:(i="HTTP Version Not Supported",f)=>D(505,i,f),variantAlsoNegotiates:(i="Variant Also Negotiates",f)=>D(506,i,f),insufficientStorage:(i="Insufficient Storage",f)=>D(507,i,f),loopDetected:(i="Loop Detected",f)=>D(508,i,f),notExtended:(i="Not Extended",f)=>D(510,i,f),networkAuthenticationRequired:(i="Network Authentication Required",f)=>D(511,i,f),invalidArgument:(i="Invalid Argument",f)=>D(R.UNPROCESSABLE_ENTITY,i,f),rateLimitExceeded:(i="Rate Limit Exceeded",f)=>D(429,i,f),maintenance:(i="Service Under Maintenance",f)=>D(503,i,f),custom:(i,f,l)=>D(i,f,l)};function P(i,f,l=j.JSON){let a=l===j.JSON?_i(f):f;return new Response(a,{status:i,headers:{"content-type":l}})}var Oi=async(i,f)=>{let a=n().getProtectedHandler();if(!a)throw C.unauthorized("Authentication not configured",f);try{let E=await a(i);i.authUser=E}catch(E){throw C.unauthorized(E instanceof Error?E.message:"Authentication failed",f)}};function Ni(i,f){let{auth:l=!1,expose:a=!1,rawRequest:E=!1,rawResponse:A=!1,responseContentType:d=j.JSON}=i;return async(_)=>{if(!a)return C.forbidden("Forbidden");try{if(l)await Oi(_,d);if(!E)await c(_);let I=await f(_);return A?I:di.success(I,d)}catch(I){if(I instanceof Response)return I;return C.internalServerError(String(I),d)}}}
|