frontend-hamroun 1.2.79 → 1.2.82

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 (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -1513
  3. package/bin/cli.js +506 -145
  4. package/dist/index.cjs +2 -0
  5. package/dist/index.cjs.map +1 -0
  6. package/dist/index.client.cjs +2 -0
  7. package/dist/index.client.cjs.map +1 -0
  8. package/dist/index.client.js +26 -0
  9. package/dist/index.client.js.map +1 -0
  10. package/dist/index.js +299 -1
  11. package/dist/index.js.map +1 -0
  12. package/dist/jsx-runtime.cjs +2 -0
  13. package/dist/jsx-runtime.cjs.map +1 -0
  14. package/dist/jsx-runtime.js +93 -1
  15. package/dist/jsx-runtime.js.map +1 -0
  16. package/dist/renderer-Bo9zkUZ_.js +52 -0
  17. package/dist/renderer-Bo9zkUZ_.js.map +1 -0
  18. package/dist/renderer-Din1y3YM.cjs +2 -0
  19. package/dist/renderer-Din1y3YM.cjs.map +1 -0
  20. package/dist/server-renderer-CqIpQ-od.cjs +2 -0
  21. package/dist/server-renderer-CqIpQ-od.cjs.map +1 -0
  22. package/dist/server-renderer-QHt45Ip2.js +255 -0
  23. package/dist/server-renderer-QHt45Ip2.js.map +1 -0
  24. package/dist/server-renderer.cjs +2 -0
  25. package/dist/server-renderer.cjs.map +1 -0
  26. package/dist/server-renderer.js +5 -1
  27. package/dist/server-renderer.js.map +1 -0
  28. package/package.json +77 -120
  29. package/templates/basic-app/build.js +22 -0
  30. package/templates/basic-app/dev.js +27 -0
  31. package/templates/basic-app/esbuild.config.js +28 -0
  32. package/templates/basic-app/index.html +1 -1
  33. package/templates/basic-app/package.json +29 -28
  34. package/templates/basic-app/server.js +24 -0
  35. package/templates/basic-app/src/App.jsx +16 -0
  36. package/templates/basic-app/src/App.tsx +26 -0
  37. package/templates/basic-app/src/client.jsx +5 -0
  38. package/templates/basic-app/src/client.tsx +11 -0
  39. package/templates/basic-app/src/components/Counter.jsx +13 -0
  40. package/templates/basic-app/src/components/Counter.tsx +18 -0
  41. package/templates/basic-app/src/jsx-shim.js +3 -0
  42. package/templates/basic-app/src/jsx-shim.ts +11 -0
  43. package/templates/basic-app/src/main.jsx +98 -0
  44. package/templates/basic-app/src/main.tsx +0 -1
  45. package/templates/basic-app/src/server.js +47 -0
  46. package/templates/basic-app/src/server.ts +52 -0
  47. package/templates/basic-app/tsconfig.server.json +11 -0
  48. package/templates/complete-app/lib/frontend-hamroun.js +182 -0
  49. package/templates/complete-app/package.json +2 -1
  50. package/templates/complete-app/pages/about.jsx +0 -0
  51. package/templates/complete-app/pages/index.jsx +0 -0
  52. package/templates/complete-app/pages/wasm-demo.jsx +0 -0
  53. package/templates/complete-app/public/client.js +58 -49
  54. package/templates/complete-app/public/index.html +88 -17
  55. package/templates/complete-app/public/styles.css +30 -533
  56. package/templates/complete-app/server.js +31 -222
  57. package/templates/complete-app/wasm/build.bat +0 -0
  58. package/templates/complete-app/wasm/build.sh +0 -0
  59. package/templates/complete-app/wasm/example.go +0 -0
  60. package/templates/fullstack-app/build/main.js +130 -101
  61. package/templates/fullstack-app/build/main.js.map +4 -4
  62. package/templates/fullstack-app/package-lock.json +1773 -566
  63. package/templates/ssr-template/esbuild.config.js +33 -0
  64. package/templates/ssr-template/jsx-shim.js +1 -0
  65. package/templates/ssr-template/package.json +22 -16
  66. package/templates/ssr-template/src/App.tsx +12 -52
  67. package/templates/ssr-template/src/client.tsx +3 -17
  68. package/templates/ssr-template/src/server.ts +21 -204
  69. package/templates/ssr-template/tsconfig.json +10 -13
  70. package/templates/ssr-template/tsconfig.server.json +6 -14
  71. package/templates/wasm/build-wasm.js +228 -0
  72. package/templates/wasm/esbuild.config.js +63 -0
  73. package/templates/wasm/go/main.go +256 -0
  74. package/templates/wasm/go/wasm_exec.js +0 -0
  75. package/templates/wasm/index.html +97 -0
  76. package/templates/wasm/jsx-shim.js +9 -0
  77. package/templates/{go-wasm-app → wasm}/package-lock.json +5307 -3732
  78. package/templates/wasm/package.json +42 -0
  79. package/templates/wasm/public/example.wasm +0 -0
  80. package/templates/wasm/src/App.tsx +564 -0
  81. package/templates/wasm/src/client.tsx +220 -0
  82. package/templates/wasm/src/index.tsx +21 -0
  83. package/templates/wasm/src/server.ts +145 -0
  84. package/templates/wasm/tsconfig.json +21 -0
  85. package/templates/wasm/tsconfig.node.json +13 -0
  86. package/templates/wasm/tsconfig.server.json +23 -0
  87. package/templates/wasm/vite.config.ts +56 -0
  88. package/templates/wasm/wasm-loader.js +103 -0
  89. package/dist/batch/package.json +0 -16
  90. package/dist/client-router/package.json +0 -16
  91. package/dist/component/package.json +0 -16
  92. package/dist/context/package.json +0 -16
  93. package/dist/event-bus/package.json +0 -16
  94. package/dist/forms/package.json +0 -16
  95. package/dist/hooks/package.json +0 -16
  96. package/dist/hooks-0728361a.cjs +0 -1
  97. package/dist/hooks-b58f947c.js +0 -133
  98. package/dist/hooks.js +0 -1
  99. package/dist/hooks.mjs +0 -13
  100. package/dist/index.mjs +0 -137
  101. package/dist/jsx-runtime/package.json +0 -16
  102. package/dist/jsx-runtime.mjs +0 -64
  103. package/dist/lifecycle-events/package.json +0 -16
  104. package/dist/package.json +0 -71
  105. package/dist/render-component/package.json +0 -16
  106. package/dist/renderer/package.json +0 -16
  107. package/dist/renderer.js +0 -1
  108. package/dist/renderer.mjs +0 -27
  109. package/dist/router/package.json +0 -16
  110. package/dist/server/package.json +0 -17
  111. package/dist/server/src/batch.d.ts +0 -3
  112. package/dist/server/src/batch.js +0 -23
  113. package/dist/server/src/batch.js.map +0 -1
  114. package/dist/server/src/client-router.d.ts +0 -60
  115. package/dist/server/src/client-router.js +0 -210
  116. package/dist/server/src/client-router.js.map +0 -1
  117. package/dist/server/src/component.d.ts +0 -14
  118. package/dist/server/src/component.js +0 -106
  119. package/dist/server/src/component.js.map +0 -1
  120. package/dist/server/src/context.d.ts +0 -13
  121. package/dist/server/src/context.js +0 -21
  122. package/dist/server/src/context.js.map +0 -1
  123. package/dist/server/src/event-bus.d.ts +0 -23
  124. package/dist/server/src/event-bus.js +0 -75
  125. package/dist/server/src/event-bus.js.map +0 -1
  126. package/dist/server/src/forms.d.ts +0 -40
  127. package/dist/server/src/forms.js +0 -148
  128. package/dist/server/src/forms.js.map +0 -1
  129. package/dist/server/src/hooks.d.ts +0 -12
  130. package/dist/server/src/hooks.js +0 -170
  131. package/dist/server/src/hooks.js.map +0 -1
  132. package/dist/server/src/index.client.d.ts +0 -12
  133. package/dist/server/src/index.client.js +0 -14
  134. package/dist/server/src/index.client.js.map +0 -1
  135. package/dist/server/src/index.d.ts +0 -88
  136. package/dist/server/src/index.js +0 -79
  137. package/dist/server/src/index.js.map +0 -1
  138. package/dist/server/src/jsx-runtime/jsx-dev-runtime.d.ts +0 -1
  139. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js +0 -2
  140. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js.map +0 -1
  141. package/dist/server/src/jsx-runtime/jsx-runtime.d.ts +0 -4
  142. package/dist/server/src/jsx-runtime/jsx-runtime.js +0 -41
  143. package/dist/server/src/jsx-runtime/jsx-runtime.js.map +0 -1
  144. package/dist/server/src/jsx-runtime.d.ts +0 -20
  145. package/dist/server/src/jsx-runtime.js +0 -105
  146. package/dist/server/src/jsx-runtime.js.map +0 -1
  147. package/dist/server/src/lifecycle-events.d.ts +0 -108
  148. package/dist/server/src/lifecycle-events.js +0 -177
  149. package/dist/server/src/lifecycle-events.js.map +0 -1
  150. package/dist/server/src/renderComponent.d.ts +0 -13
  151. package/dist/server/src/renderComponent.js +0 -30
  152. package/dist/server/src/renderComponent.js.map +0 -1
  153. package/dist/server/src/renderer.d.ts +0 -2
  154. package/dist/server/src/renderer.js +0 -31
  155. package/dist/server/src/renderer.js.map +0 -1
  156. package/dist/server/src/router.d.ts +0 -55
  157. package/dist/server/src/router.js +0 -166
  158. package/dist/server/src/router.js.map +0 -1
  159. package/dist/server/src/server/api-router.d.ts +0 -15
  160. package/dist/server/src/server/api-router.js +0 -111
  161. package/dist/server/src/server/api-router.js.map +0 -1
  162. package/dist/server/src/server/auth.d.ts +0 -32
  163. package/dist/server/src/server/auth.js +0 -80
  164. package/dist/server/src/server/auth.js.map +0 -1
  165. package/dist/server/src/server/database.d.ts +0 -24
  166. package/dist/server/src/server/database.js +0 -135
  167. package/dist/server/src/server/database.js.map +0 -1
  168. package/dist/server/src/server/index.d.ts +0 -116
  169. package/dist/server/src/server/index.js +0 -508
  170. package/dist/server/src/server/index.js.map +0 -1
  171. package/dist/server/src/server/middleware.d.ts +0 -11
  172. package/dist/server/src/server/middleware.js +0 -46
  173. package/dist/server/src/server/middleware.js.map +0 -1
  174. package/dist/server/src/server/server.d.ts +0 -9
  175. package/dist/server/src/server/server.js +0 -87
  176. package/dist/server/src/server/server.js.map +0 -1
  177. package/dist/server/src/server/templates.d.ts +0 -30
  178. package/dist/server/src/server/templates.js +0 -208
  179. package/dist/server/src/server/templates.js.map +0 -1
  180. package/dist/server/src/server/types.d.ts +0 -38
  181. package/dist/server/src/server/types.js +0 -4
  182. package/dist/server/src/server/types.js.map +0 -1
  183. package/dist/server/src/server/utils.d.ts +0 -70
  184. package/dist/server/src/server/utils.js +0 -156
  185. package/dist/server/src/server/utils.js.map +0 -1
  186. package/dist/server/src/server/wasm.d.ts +0 -9
  187. package/dist/server/src/server/wasm.js +0 -117
  188. package/dist/server/src/server/wasm.js.map +0 -1
  189. package/dist/server/src/server-renderer.d.ts +0 -5
  190. package/dist/server/src/server-renderer.js +0 -106
  191. package/dist/server/src/server-renderer.js.map +0 -1
  192. package/dist/server/src/server-types.d.ts +0 -42
  193. package/dist/server/src/server-types.js +0 -6
  194. package/dist/server/src/server-types.js.map +0 -1
  195. package/dist/server/src/store.d.ts +0 -41
  196. package/dist/server/src/store.js +0 -99
  197. package/dist/server/src/store.js.map +0 -1
  198. package/dist/server/src/types.d.ts +0 -19
  199. package/dist/server/src/types.js +0 -2
  200. package/dist/server/src/types.js.map +0 -1
  201. package/dist/server/src/utils.d.ts +0 -46
  202. package/dist/server/src/utils.js +0 -144
  203. package/dist/server/src/utils.js.map +0 -1
  204. package/dist/server/src/vdom.d.ts +0 -8
  205. package/dist/server/src/vdom.js +0 -22
  206. package/dist/server/src/vdom.js.map +0 -1
  207. package/dist/server/src/wasm.d.ts +0 -36
  208. package/dist/server/src/wasm.js +0 -159
  209. package/dist/server/src/wasm.js.map +0 -1
  210. package/dist/server/tsconfig.server.tsbuildinfo +0 -1
  211. package/dist/server-renderer/package.json +0 -16
  212. package/dist/server-renderer.mjs +0 -64
  213. package/dist/store/package.json +0 -16
  214. package/dist/types/package.json +0 -16
  215. package/dist/utils/package.json +0 -16
  216. package/dist/vdom/package.json +0 -16
  217. package/dist/wasm/package.json +0 -16
  218. package/dist/wasm.js +0 -1
  219. package/dist/wasm.mjs +0 -103
  220. package/templates/basic-app/docs/rapport_pfe.aux +0 -27
  221. package/templates/basic-app/docs/rapport_pfe.log +0 -399
  222. package/templates/basic-app/docs/rapport_pfe.out +0 -10
  223. package/templates/basic-app/docs/rapport_pfe.pdf +0 -0
  224. package/templates/basic-app/docs/rapport_pfe.tex +0 -68
  225. package/templates/basic-app/docs/rapport_pfe.toc +0 -14
  226. package/templates/complete-app/package-lock.json +0 -2536
  227. package/templates/go-wasm-app/README.md +0 -38
  228. package/templates/go-wasm-app/babel.config.js +0 -21
  229. package/templates/go-wasm-app/build-client.js +0 -49
  230. package/templates/go-wasm-app/build-wasm.js +0 -237
  231. package/templates/go-wasm-app/build.config.js +0 -62
  232. package/templates/go-wasm-app/build.js +0 -218
  233. package/templates/go-wasm-app/package.json +0 -32
  234. package/templates/go-wasm-app/public/index.html +0 -128
  235. package/templates/go-wasm-app/public/styles.css +0 -197
  236. package/templates/go-wasm-app/public/wasm/example.wasm +0 -0
  237. package/templates/go-wasm-app/public/wasm/wasm_exec_node.js +0 -39
  238. package/templates/go-wasm-app/server.js +0 -70
  239. package/templates/go-wasm-app/src/App.jsx +0 -38
  240. package/templates/go-wasm-app/src/app.js +0 -173
  241. package/templates/go-wasm-app/src/client.js +0 -57
  242. package/templates/go-wasm-app/src/components/Footer.jsx +0 -13
  243. package/templates/go-wasm-app/src/components/Header.jsx +0 -19
  244. package/templates/go-wasm-app/src/components/WasmDemo.jsx +0 -120
  245. package/templates/go-wasm-app/src/main.jsx +0 -12
  246. package/templates/go-wasm-app/src/wasm/example.go +0 -75
  247. package/templates/go-wasm-app/tsconfig.server.json +0 -18
  248. package/templates/go-wasm-app/vite.config.js +0 -45
  249. package/templates/ssr-template/client.js +0 -58
  250. package/templates/ssr-template/package-lock.json +0 -2478
  251. package/templates/ssr-template/public/index.html +0 -47
  252. package/templates/ssr-template/readme.md +0 -188
  253. package/templates/ssr-template/server.js +0 -369
  254. package/templates/ssr-template/server.ts +0 -275
  255. package/templates/ssr-template/src/client.ts +0 -61
  256. package/templates/ssr-template/src/pages/index.tsx +0 -51
  257. package/templates/ssr-template/vite.config.js +0 -57
  258. /package/{dist/Counter.d.ts → templates/complete-app/api/hello.js} +0 -0
  259. /package/templates/{go-wasm-app/public/wasm → wasm/public}/wasm_exec.js +0 -0
@@ -1,116 +0,0 @@
1
- import { Express, Request, Response, NextFunction } from 'express';
2
- import cors from 'cors';
3
- import { SignOptions } from 'jsonwebtoken';
4
- import { renderToString } from '../server-renderer.js';
5
- import { Database } from './database.js';
6
- import { AuthService } from './auth.js';
7
- import { ApiRouter } from './api-router.js';
8
- import { rateLimit } from './middleware.js';
9
- import * as utils from './utils.js';
10
- import * as templates from './templates.js';
11
- import { loadGoWasmFromFile } from './wasm.js';
12
- export interface ServerConfig {
13
- port?: number;
14
- apiDir?: string;
15
- pagesDir?: string;
16
- staticDir?: string;
17
- enableCors?: boolean;
18
- corsOptions?: cors.CorsOptions;
19
- db?: {
20
- url: string;
21
- type: 'mongodb' | 'mysql' | 'postgres';
22
- };
23
- auth?: {
24
- secret: string;
25
- expiresIn?: SignOptions['expiresIn'];
26
- };
27
- }
28
- export declare class Server {
29
- private app;
30
- private server;
31
- private config;
32
- private db;
33
- private auth;
34
- constructor(config?: ServerConfig);
35
- private setupApiRoutes;
36
- private generateApiDocs;
37
- private scanApiDirectory;
38
- private getRoutePath;
39
- private detectApiMethods;
40
- private setupPageRoutes;
41
- private renderPage;
42
- getExpressApp(): Express;
43
- getDatabase(): Database | null;
44
- getAuth(): AuthService | null;
45
- start(): Promise<void>;
46
- stop(): Promise<void>;
47
- restart(): Promise<void>;
48
- enableSSR(options?: {
49
- hydratable?: boolean;
50
- }): void;
51
- registerPlugin(plugin: (server: Server) => void): void;
52
- addShutdownHandler(): void;
53
- }
54
- /**
55
- * Creates and configures a new server instance
56
- */
57
- export declare function createServer(config?: ServerConfig): Server;
58
- /**
59
- * Creates a new server with sensible defaults for development
60
- */
61
- export declare function createDevServer(options?: {
62
- port?: number;
63
- enableCors?: boolean;
64
- }): Server;
65
- /**
66
- * Creates a production-ready server with optimized settings
67
- */
68
- export declare function createProductionServer(config: ServerConfig): Server;
69
- export declare function getRequestIp(req: Request): string;
70
- export declare function parseCookies(req: Request): Record<string, string>;
71
- export declare const renderComponent: (Component: any, props?: any) => Promise<{
72
- html: string;
73
- success: boolean;
74
- error?: undefined;
75
- } | {
76
- html: string;
77
- success: boolean;
78
- error: unknown;
79
- }>;
80
- export { initNodeWasm, loadGoWasmFromFile } from './wasm.js';
81
- export * from './utils.js';
82
- export * from './templates.js';
83
- export { Database } from './database.js';
84
- export { AuthService } from './auth.js';
85
- export { ApiRouter } from './api-router.js';
86
- export { requestLogger, errorHandler, notFoundHandler, rateLimit } from './middleware.js';
87
- export { renderToString };
88
- declare const _default: {
89
- Server: typeof Server;
90
- createServer: typeof createServer;
91
- createDevServer: typeof createDevServer;
92
- createProductionServer: typeof createProductionServer;
93
- rateLimit: typeof rateLimit;
94
- requestLogger: import("./middleware.js").MiddlewareFunction;
95
- errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => void;
96
- notFoundHandler: (req: Request, res: Response) => void;
97
- loadGoWasmFromFile: typeof loadGoWasmFromFile;
98
- templates: typeof templates;
99
- utils: typeof utils;
100
- renderComponent: (Component: any, props?: any) => Promise<{
101
- html: string;
102
- success: boolean;
103
- error?: undefined;
104
- } | {
105
- html: string;
106
- success: boolean;
107
- error: unknown;
108
- }>;
109
- renderToString: typeof renderToString;
110
- getRequestIp: typeof getRequestIp;
111
- parseCookies: typeof parseCookies;
112
- Database: typeof Database;
113
- AuthService: typeof AuthService;
114
- ApiRouter: typeof ApiRouter;
115
- };
116
- export default _default;
@@ -1,508 +0,0 @@
1
- import express from 'express';
2
- import path from 'path';
3
- import fs from 'fs';
4
- import cors from 'cors';
5
- import { renderToString } from '../server-renderer';
6
- import { Database } from './database';
7
- import { AuthService } from './auth';
8
- import { ApiRouter } from './api-router';
9
- import { requestLogger, errorHandler, notFoundHandler, rateLimit } from './middleware';
10
- // Import the utility functions
11
- try {
12
- import * as utils from './utils.js';
13
- } catch (err) {
14
- const utils = require('./utils.js');
15
- };
16
- try {
17
- import * as templates from './templates.js';
18
- } catch (err) {
19
- const templates = require('./templates.js');
20
- };
21
- import { loadGoWasmFromFile } from './wasm';
22
- // Helper function to get the component name from the file path
23
- function getComponentName(filePath, pagesDir) {
24
- try {
25
- // Get relative path from pages directory
26
- const relativePath = path.relative(pagesDir, filePath);
27
- // Remove extension
28
- const withoutExt = relativePath.replace(/\.[^/.]+$/, '');
29
- // Replace index with empty for clean paths
30
- const cleanPath = withoutExt.replace(/\/index$/, '');
31
- // Convert to module path format
32
- return `/pages/${cleanPath}`;
33
- }
34
- catch (e) {
35
- return '';
36
- }
37
- }
38
- export class Server {
39
- constructor(config = {}) {
40
- Object.defineProperty(this, "app", {
41
- enumerable: true,
42
- configurable: true,
43
- writable: true,
44
- value: void 0
45
- });
46
- Object.defineProperty(this, "server", {
47
- enumerable: true,
48
- configurable: true,
49
- writable: true,
50
- value: null
51
- });
52
- Object.defineProperty(this, "config", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: true,
56
- value: void 0
57
- });
58
- Object.defineProperty(this, "db", {
59
- enumerable: true,
60
- configurable: true,
61
- writable: true,
62
- value: null
63
- });
64
- Object.defineProperty(this, "auth", {
65
- enumerable: true,
66
- configurable: true,
67
- writable: true,
68
- value: null
69
- });
70
- this.config = {
71
- port: 3000,
72
- apiDir: './api',
73
- pagesDir: './pages',
74
- staticDir: './public',
75
- enableCors: true,
76
- ...config
77
- };
78
- this.app = express();
79
- // Basic middleware
80
- this.app.use(express.json());
81
- this.app.use(express.urlencoded({ extended: true }));
82
- // CORS setup
83
- if (this.config.enableCors) {
84
- this.app.use(cors(this.config.corsOptions));
85
- }
86
- // Setup database if configured
87
- if (this.config.db) {
88
- this.db = new Database(this.config.db);
89
- }
90
- // Setup auth if configured
91
- if (this.config.auth) {
92
- // Fix by explicitly typing the auth configuration
93
- this.auth = new AuthService({
94
- secret: this.config.auth.secret,
95
- expiresIn: this.config.auth.expiresIn
96
- });
97
- // Expose auth middleware
98
- this.app.use(this.auth.initialize());
99
- }
100
- // Static files
101
- if (fs.existsSync(path.resolve(process.cwd(), this.config.staticDir))) {
102
- this.app.use(express.static(path.resolve(process.cwd(), this.config.staticDir)));
103
- }
104
- // Setup API routes
105
- this.setupApiRoutes();
106
- // Setup page routes (for SSR)
107
- this.setupPageRoutes();
108
- }
109
- setupApiRoutes() {
110
- const apiRouter = new ApiRouter(this.config.apiDir, this.auth);
111
- this.app.use('/api', requestLogger, apiRouter.router);
112
- // Add API documentation route
113
- this.app.get('/api-docs', (req, res) => {
114
- const apiDocs = this.generateApiDocs();
115
- res.json(apiDocs);
116
- });
117
- }
118
- generateApiDocs() {
119
- // Generate documentation based on API routes
120
- const apiDir = path.resolve(process.cwd(), this.config.apiDir);
121
- const docs = { endpoints: [] };
122
- if (fs.existsSync(apiDir)) {
123
- this.scanApiDirectory(apiDir, '', docs.endpoints);
124
- }
125
- return docs;
126
- }
127
- scanApiDirectory(dirPath, routePrefix, endpoints) {
128
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
129
- for (const entry of entries) {
130
- const fullPath = path.join(dirPath, entry.name);
131
- if (entry.isDirectory()) {
132
- this.scanApiDirectory(fullPath, `${routePrefix}/${entry.name}`, endpoints);
133
- }
134
- else if (entry.name.endsWith('.js') || entry.name.endsWith('.ts')) {
135
- const routePath = this.getRoutePath(entry.name, routePrefix);
136
- endpoints.push({
137
- path: routePath,
138
- file: path.relative(process.cwd(), fullPath),
139
- methods: this.detectApiMethods(fullPath)
140
- });
141
- }
142
- }
143
- }
144
- getRoutePath(filename, routePrefix) {
145
- const baseName = path.basename(filename, path.extname(filename));
146
- if (baseName === 'index') {
147
- return routePrefix || '/';
148
- }
149
- const paramMatch = baseName.match(/^\[(.+)\]$/);
150
- if (paramMatch) {
151
- return `${routePrefix}/:${paramMatch[1]}`;
152
- }
153
- return `${routePrefix}/${baseName}`;
154
- }
155
- detectApiMethods(filePath) {
156
- try {
157
- const content = fs.readFileSync(filePath, 'utf8');
158
- const methods = ['get', 'post', 'put', 'delete', 'patch', 'options'];
159
- return methods.filter(method => new RegExp(`export (async )?function ${method}\\s*\\(`).test(content) ||
160
- new RegExp(`export const ${method}\\s*=`).test(content));
161
- }
162
- catch (error) {
163
- return [];
164
- }
165
- }
166
- setupPageRoutes() {
167
- if (!fs.existsSync(path.resolve(process.cwd(), this.config.pagesDir))) {
168
- return;
169
- }
170
- // Setup catch-all route for SSR
171
- this.app.get('*', async (req, res) => {
172
- try {
173
- // Implement page routing logic
174
- const { html, statusCode } = await this.renderPage(req.path);
175
- res.status(statusCode || 200).send(html);
176
- }
177
- catch (error) {
178
- console.error('Error rendering page:', error);
179
- res.status(500).send('Server Error');
180
- }
181
- });
182
- }
183
- async renderPage(routePath) {
184
- try {
185
- // Try to find the page component
186
- const pagesDir = this.config.pagesDir ? path.resolve(process.cwd(), this.config.pagesDir) : '';
187
- if (!pagesDir || !fs.existsSync(pagesDir)) {
188
- return {
189
- html: templates.generateErrorPage(404, 'Pages directory not found'),
190
- statusCode: 404
191
- };
192
- }
193
- // Normalize the path
194
- let normalizedPath = routePath;
195
- if (!normalizedPath.startsWith('/')) {
196
- normalizedPath = '/' + normalizedPath;
197
- }
198
- // Default to index for the root
199
- if (normalizedPath === '/') {
200
- normalizedPath = '/index';
201
- }
202
- // Try to find a matching page file
203
- let pagePath = '';
204
- const possiblePaths = [
205
- path.join(pagesDir, `${normalizedPath}.js`),
206
- path.join(pagesDir, `${normalizedPath}.ts`),
207
- path.join(pagesDir, `${normalizedPath}.jsx`),
208
- path.join(pagesDir, `${normalizedPath}.tsx`),
209
- path.join(pagesDir, `${normalizedPath}/index.js`),
210
- path.join(pagesDir, `${normalizedPath}/index.ts`),
211
- path.join(pagesDir, `${normalizedPath}/index.jsx`),
212
- path.join(pagesDir, `${normalizedPath}/index.tsx`)
213
- ];
214
- for (const p of possiblePaths) {
215
- if (fs.existsSync(p)) {
216
- pagePath = p;
217
- break;
218
- }
219
- }
220
- // Handle 404 if page not found
221
- if (!pagePath) {
222
- return {
223
- html: templates.generateErrorPage(404, `Page not found: ${normalizedPath}`),
224
- statusCode: 404
225
- };
226
- }
227
- // Import and render the page component
228
- try {
229
- const pageModule = await import(pagePath);
230
- if (!pageModule || !pageModule.default) {
231
- throw new Error(`No default export found in ${pagePath}`);
232
- }
233
- const PageComponent = pageModule.default;
234
- const initialProps = {
235
- // Provide any initial props here
236
- path: normalizedPath,
237
- query: {}, // Could be parsed from URL
238
- api: { serverTime: new Date().toISOString() }
239
- };
240
- // Render the component to HTML
241
- const { html, success, error } = await renderComponent(PageComponent, initialProps);
242
- if (!success) {
243
- return {
244
- html: templates.generateErrorPage(500, 'Failed to render page', error instanceof Error ? error : new Error('Unknown error')),
245
- statusCode: 500
246
- };
247
- }
248
- // Generate the full HTML document
249
- let pageTitle = 'My App';
250
- try {
251
- // Try to extract title from component if it has a getTitle method
252
- if (typeof PageComponent.getTitle === 'function') {
253
- pageTitle = PageComponent.getTitle(initialProps);
254
- }
255
- else if (PageComponent.title) {
256
- pageTitle = PageComponent.title;
257
- }
258
- }
259
- catch (e) {
260
- // Ignore title errors
261
- }
262
- // Parse the component name for hydration
263
- const componentName = getComponentName(pagePath, pagesDir);
264
- // Generate full HTML document with our template
265
- const fullHtml = templates.generateDocument(html, {
266
- title: pageTitle,
267
- // Get description from component if available
268
- description: typeof PageComponent.getDescription === 'function'
269
- ? PageComponent.getDescription(initialProps)
270
- : (PageComponent.description || ''),
271
- // Add scripts for client-side hydration
272
- scripts: ['/client.js'],
273
- // Add any custom meta tags
274
- meta: typeof PageComponent.getMeta === 'function'
275
- ? PageComponent.getMeta(initialProps)
276
- : {},
277
- // Add custom styles
278
- styles: ['/styles.css'],
279
- // Add initial data for client-side hydration
280
- initialData: initialProps,
281
- // Add component information for hydration
282
- componentName: componentName
283
- });
284
- return { html: fullHtml, statusCode: 200 };
285
- }
286
- catch (error) {
287
- console.error('Error rendering page:', error);
288
- return {
289
- html: templates.generateErrorPage(500, 'Error rendering page', error instanceof Error ? error : new Error('Unknown error')),
290
- statusCode: 500
291
- };
292
- }
293
- }
294
- catch (error) {
295
- console.error('Error finding page:', error);
296
- return {
297
- html: templates.generateErrorPage(500, 'Server error', error instanceof Error ? error : new Error('Unknown error')),
298
- statusCode: 500
299
- };
300
- }
301
- }
302
- getExpressApp() {
303
- return this.app;
304
- }
305
- getDatabase() {
306
- return this.db;
307
- }
308
- getAuth() {
309
- return this.auth;
310
- }
311
- start() {
312
- return new Promise((resolve) => {
313
- this.server = this.app.listen(this.config.port, () => {
314
- console.log(`Server running at http://localhost:${this.config.port}`);
315
- resolve();
316
- });
317
- });
318
- }
319
- stop() {
320
- return new Promise((resolve, reject) => {
321
- if (!this.server) {
322
- return resolve();
323
- }
324
- this.server.close((err) => {
325
- if (err)
326
- return reject(err);
327
- this.server = null;
328
- resolve();
329
- });
330
- });
331
- }
332
- restart() {
333
- return this.stop().then(() => this.start());
334
- }
335
- enableSSR(options = {}) {
336
- if (!fs.existsSync(path.resolve(process.cwd(), this.config.pagesDir))) {
337
- fs.mkdirSync(path.resolve(process.cwd(), this.config.pagesDir), { recursive: true });
338
- }
339
- // Set up client-side JS for hydration if needed
340
- if (options.hydratable) {
341
- const staticDir = path.resolve(process.cwd(), this.config.staticDir);
342
- if (!fs.existsSync(staticDir)) {
343
- fs.mkdirSync(staticDir, { recursive: true });
344
- }
345
- // Generate or copy client hydration script
346
- // This is a simplified example - would need more implementation
347
- const clientJsPath = path.join(staticDir, 'client.js');
348
- if (!fs.existsSync(clientJsPath)) {
349
- const clientJsContent = `
350
- // Auto-generated hydration script
351
- import { hydrate } from 'frontend-hamroun';
352
-
353
- // Find SSR content and hydrate it
354
- document.addEventListener('DOMContentLoaded', () => {
355
- const ssrRoots = document.querySelectorAll('[data-ssr-root]');
356
- ssrRoots.forEach(root => {
357
- const componentPath = root.getAttribute('data-component');
358
- if (componentPath) {
359
- import(componentPath).then(module => {
360
- hydrate(module.default, root);
361
- });
362
- }
363
- });
364
- });
365
- `;
366
- fs.writeFileSync(clientJsPath, clientJsContent);
367
- }
368
- }
369
- }
370
- registerPlugin(plugin) {
371
- plugin(this);
372
- }
373
- addShutdownHandler() {
374
- // Handle graceful shutdown
375
- const gracefulShutdown = async () => {
376
- console.log('Received shutdown signal, closing server...');
377
- try {
378
- await this.stop();
379
- if (this.db) {
380
- await this.db.disconnect();
381
- }
382
- console.log('Server shut down gracefully');
383
- process.exit(0);
384
- }
385
- catch (error) {
386
- console.error('Error during shutdown:', error);
387
- process.exit(1);
388
- }
389
- };
390
- // Listen for termination signals
391
- process.on('SIGTERM', gracefulShutdown);
392
- process.on('SIGINT', gracefulShutdown);
393
- }
394
- }
395
- // Add server utility functions
396
- /**
397
- * Creates and configures a new server instance
398
- */
399
- export function createServer(config = {}) {
400
- return new Server(config);
401
- }
402
- /**
403
- * Creates a new server with sensible defaults for development
404
- */
405
- export function createDevServer(options = {}) {
406
- return new Server({
407
- port: options.port || 3000,
408
- enableCors: options.enableCors !== false,
409
- apiDir: './src/api',
410
- pagesDir: './src/pages',
411
- staticDir: './public'
412
- });
413
- }
414
- /**
415
- * Creates a production-ready server with optimized settings
416
- */
417
- export function createProductionServer(config) {
418
- const server = new Server({
419
- ...config,
420
- // Fix the PORT parsing
421
- port: config.port || (process.env.PORT ? parseInt(process.env.PORT) : 8080)
422
- });
423
- // Add shutdown handler for production environments
424
- server.addShutdownHandler();
425
- return server;
426
- }
427
- // Export additional utility functions
428
- export function getRequestIp(req) {
429
- return req.ip ||
430
- req.headers['x-forwarded-for']?.split(',')[0].trim() ||
431
- req.socket.remoteAddress ||
432
- '';
433
- }
434
- export function parseCookies(req) {
435
- const cookies = {};
436
- const cookieHeader = req.headers.cookie;
437
- if (cookieHeader) {
438
- cookieHeader.split(';').forEach(cookie => {
439
- const [name, value] = cookie.split('=').map(c => c.trim());
440
- cookies[name] = value;
441
- });
442
- }
443
- return cookies;
444
- }
445
- // Fix the renderComponent function
446
- export const renderComponent = async (Component, props = {}) => {
447
- try {
448
- // Create HTML string from component
449
- const html = renderToString(Component(props));
450
- return {
451
- html,
452
- success: true
453
- };
454
- }
455
- catch (error) {
456
- console.error('Error rendering component:', error);
457
- return {
458
- html: `<div class="error">Error rendering component</div>`,
459
- success: false,
460
- error
461
- };
462
- }
463
- };
464
- // Export WASM utilities for server-side usage
465
- export { initNodeWasm, loadGoWasmFromFile } from './wasm.js';
466
- // Import and export server utilities
467
- export * from './utils.js';
468
- export * from './templates.js';
469
- // Export the Database and AuthService classes
470
- export { Database } from './database.js';
471
- export { AuthService } from './auth.js';
472
- export { ApiRouter } from './api-router.js';
473
- export { requestLogger, errorHandler, notFoundHandler, rateLimit } from './middleware.js';
474
- // Export renderToString for convenient SSR
475
- export { renderToString };
476
- // Ensure the default export includes all required functions
477
- export default {
478
- Server,
479
- createServer,
480
- createDevServer,
481
- createProductionServer,
482
- rateLimit,
483
- requestLogger,
484
- errorHandler,
485
- notFoundHandler,
486
- loadGoWasmFromFile,
487
- // Template utilities
488
- templates,
489
- // Server utilities
490
- utils,
491
- // Additional exports
492
- renderComponent,
493
- renderToString,
494
- getRequestIp,
495
- parseCookies,
496
- Database,
497
- AuthService,
498
- ApiRouter
499
- };
500
- //# sourceMappingURL=index.js.map
501
- // This module is compatible with both ESM and CommonJS
502
- if (typeof exports === 'object' && typeof module !== 'undefined') {
503
- // CommonJS environment
504
- module.exports = exports;
505
- } else if (typeof define === 'function' && define.amd) {
506
- // AMD environment
507
- define(['exports'], factory);
508
- } // ESM environment is handled by default exports
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { Request, Response, NextFunction } from 'express';
2
- export interface MiddlewareFunction {
3
- (req: Request, res: Response, next: NextFunction): void | Promise<void>;
4
- }
5
- export declare const requestLogger: MiddlewareFunction;
6
- export declare const errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => void;
7
- export declare const notFoundHandler: (req: Request, res: Response) => void;
8
- export declare function rateLimit(options: {
9
- windowMs: number;
10
- max: number;
11
- }): (req: Request, res: Response, next: NextFunction) => void | Response<any, Record<string, any>>;