baraqex 1.0.68 → 1.0.70
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/dist/index.js +35 -43
- package/dist/index.js.map +2 -2
- package/dist/server/api-router.d.ts +3 -1
- package/dist/server/api-router.d.ts.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +35 -43
- package/dist/server/index.js.map +2 -2
- package/package.json +1 -1
- package/templates/fullstack-template/package-lock.json +5 -5
- package/templates/fullstack-template/package.json +5 -5
- package/templates/fullstack-template/src/pages/index.tsx +8 -2
- package/templates/fullstack-template/src/server.ts +166 -63
|
@@ -3,8 +3,10 @@ export declare class ApiRouter {
|
|
|
3
3
|
router: any;
|
|
4
4
|
private apiDir;
|
|
5
5
|
private auth;
|
|
6
|
+
private initialized;
|
|
6
7
|
constructor(apiDir: string, auth?: AuthService | null);
|
|
7
|
-
|
|
8
|
+
initialize(): Promise<void>;
|
|
9
|
+
isInitialized(): boolean;
|
|
8
10
|
private setupRoutes;
|
|
9
11
|
private scanDirectory;
|
|
10
12
|
private isRouteFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-router.d.ts","sourceRoot":"","sources":["../../src/server/api-router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAmBxC,qBAAa,SAAS;IACb,MAAM,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"api-router.d.ts","sourceRoot":"","sources":["../../src/server/api-router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAmBxC,qBAAa,SAAS;IACb,MAAM,EAAE,GAAG,CAAQ;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,WAAW,GAAG,IAAW;IAMrD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBjC,aAAa,IAAI,OAAO;IAIxB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;YAiBN,aAAa;IA0C3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,WAAW;CASpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAgD,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1F,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAgB,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAkB7D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,EAAE,CAAC,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;KACxC,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,GAAE,YAAiB;YAavB,aAAa;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -336,22 +336,30 @@ import { pathToFileURL } from "url";
|
|
|
336
336
|
var ApiRouter = class {
|
|
337
337
|
constructor(apiDir, auth = null) {
|
|
338
338
|
this.router = null;
|
|
339
|
+
this.initialized = false;
|
|
339
340
|
this.apiDir = path.resolve(process.cwd(), apiDir);
|
|
340
341
|
this.auth = auth;
|
|
341
|
-
this.initializeRouter();
|
|
342
342
|
}
|
|
343
|
-
async
|
|
343
|
+
async initialize() {
|
|
344
|
+
if (this.initialized && this.router)
|
|
345
|
+
return;
|
|
344
346
|
try {
|
|
345
347
|
const express = await import("express");
|
|
346
348
|
this.router = express.default.Router();
|
|
347
349
|
this.setupRoutes();
|
|
350
|
+
this.initialized = true;
|
|
351
|
+
console.log("\u2705 API Router initialized successfully");
|
|
348
352
|
} catch (error) {
|
|
353
|
+
console.error("\u274C Failed to initialize API Router:", error);
|
|
349
354
|
if (error.code === "MODULE_NOT_FOUND") {
|
|
350
355
|
throw new Error("Express not installed. Run: npm install express @types/express");
|
|
351
356
|
}
|
|
352
357
|
throw error;
|
|
353
358
|
}
|
|
354
359
|
}
|
|
360
|
+
isInitialized() {
|
|
361
|
+
return this.initialized && this.router !== null;
|
|
362
|
+
}
|
|
355
363
|
setupRoutes() {
|
|
356
364
|
if (!fs.existsSync(this.apiDir)) {
|
|
357
365
|
console.log(`API directory not found: ${this.apiDir}`);
|
|
@@ -389,46 +397,24 @@ var ApiRouter = class {
|
|
|
389
397
|
try {
|
|
390
398
|
const absolutePath = path.isAbsolute(filePath) ? filePath : path.resolve(filePath);
|
|
391
399
|
const fileUrl = pathToFileURL(absolutePath).href;
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
);
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
} else {
|
|
414
|
-
const routeModule = await import(fileUrl);
|
|
415
|
-
if (!this.isValidRouteModule(routeModule)) {
|
|
416
|
-
console.warn(`Invalid route module: ${filePath}`);
|
|
417
|
-
return;
|
|
418
|
-
}
|
|
419
|
-
console.log(`Registering API route: ${routePath}`);
|
|
420
|
-
const middleware = routeModule.middleware || [];
|
|
421
|
-
for (const method of ["get", "post", "put", "delete", "patch", "options"]) {
|
|
422
|
-
const handler = routeModule[method];
|
|
423
|
-
if (typeof handler === "function") {
|
|
424
|
-
const routerMethod = this.router[method];
|
|
425
|
-
routerMethod.call(
|
|
426
|
-
this.router,
|
|
427
|
-
routePath,
|
|
428
|
-
...middleware,
|
|
429
|
-
this.wrapHandler(handler)
|
|
430
|
-
);
|
|
431
|
-
}
|
|
400
|
+
const urlWithTimestamp = `${fileUrl}?t=${Date.now()}`;
|
|
401
|
+
const routeModule = await import(urlWithTimestamp);
|
|
402
|
+
if (!this.isValidRouteModule(routeModule)) {
|
|
403
|
+
console.warn(`Invalid route module: ${filePath}`);
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
console.log(`Registering API route: ${routePath}`);
|
|
407
|
+
const middleware = routeModule.middleware || [];
|
|
408
|
+
for (const method of ["get", "post", "put", "delete", "patch", "options"]) {
|
|
409
|
+
const handler = routeModule[method];
|
|
410
|
+
if (typeof handler === "function") {
|
|
411
|
+
const routerMethod = this.router[method];
|
|
412
|
+
routerMethod.call(
|
|
413
|
+
this.router,
|
|
414
|
+
routePath,
|
|
415
|
+
...middleware,
|
|
416
|
+
this.wrapHandler(handler)
|
|
417
|
+
);
|
|
432
418
|
}
|
|
433
419
|
}
|
|
434
420
|
} catch (error) {
|
|
@@ -1026,8 +1012,14 @@ var Server = class {
|
|
|
1026
1012
|
throw error;
|
|
1027
1013
|
}
|
|
1028
1014
|
}
|
|
1029
|
-
setupApiRoutes() {
|
|
1015
|
+
async setupApiRoutes() {
|
|
1030
1016
|
const apiRouter = new ApiRouter(this.config.apiDir, this.auth);
|
|
1017
|
+
await apiRouter.initialize();
|
|
1018
|
+
if (!apiRouter.isInitialized() || !apiRouter.router) {
|
|
1019
|
+
console.warn("\u26A0\uFE0F API router not initialized properly - skipping API routes");
|
|
1020
|
+
return;
|
|
1021
|
+
}
|
|
1022
|
+
console.log("\u2705 Setting up API routes...");
|
|
1031
1023
|
this.app.use("/api", requestLogger, apiRouter.router);
|
|
1032
1024
|
this.app.get("/api-docs", (req, res) => {
|
|
1033
1025
|
const apiDocs = this.generateApiDocs();
|