baraqex 1.0.34 → 1.0.36

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 (77) hide show
  1. package/dist/browser.js +635 -0
  2. package/dist/browser.js.map +7 -0
  3. package/dist/browser.package.json +4 -0
  4. package/dist/index.js +2024 -33
  5. package/dist/index.js.map +7 -1
  6. package/dist/server/index.js +1357 -432
  7. package/dist/server/index.js.map +7 -1
  8. package/dist/server/package.json +4 -0
  9. package/dist/wasm.js +86 -104
  10. package/dist/wasm.js.map +7 -1
  11. package/package.json +102 -72
  12. package/templates/ssr-template/esbuild.config.js +32 -3
  13. package/templates/ssr-template/package-lock.json +33 -1018
  14. package/templates/ssr-template/package.json +1 -0
  15. package/templates/ssr-template/src/App.tsx +1 -1
  16. package/dist/frontend/components/WasmLoader.d.ts +0 -1
  17. package/dist/frontend/components/WasmLoader.d.ts.map +0 -1
  18. package/dist/frontend/components/WasmLoader.js +0 -2
  19. package/dist/frontend/components/WasmLoader.js.map +0 -1
  20. package/dist/frontend/hooks/useWasm.d.ts +0 -1
  21. package/dist/frontend/hooks/useWasm.d.ts.map +0 -1
  22. package/dist/frontend/hooks/useWasm.js +0 -2
  23. package/dist/frontend/hooks/useWasm.js.map +0 -1
  24. package/dist/frontend/index.d.ts +0 -1
  25. package/dist/frontend/index.d.ts.map +0 -1
  26. package/dist/frontend/index.js +0 -2
  27. package/dist/frontend/index.js.map +0 -1
  28. package/dist/index.d.ts +0 -12
  29. package/dist/index.d.ts.map +0 -1
  30. package/dist/renderComponent.d.ts +0 -9
  31. package/dist/renderComponent.d.ts.map +0 -1
  32. package/dist/renderComponent.js +0 -39
  33. package/dist/renderComponent.js.map +0 -1
  34. package/dist/server/api-router.d.ts +0 -16
  35. package/dist/server/api-router.d.ts.map +0 -1
  36. package/dist/server/api-router.js +0 -121
  37. package/dist/server/api-router.js.map +0 -1
  38. package/dist/server/auth.d.ts +0 -33
  39. package/dist/server/auth.d.ts.map +0 -1
  40. package/dist/server/auth.js +0 -74
  41. package/dist/server/auth.js.map +0 -1
  42. package/dist/server/database.d.ts +0 -25
  43. package/dist/server/database.d.ts.map +0 -1
  44. package/dist/server/database.js +0 -109
  45. package/dist/server/database.js.map +0 -1
  46. package/dist/server/index.d.ts +0 -117
  47. package/dist/server/index.d.ts.map +0 -1
  48. package/dist/server/middleware.d.ts +0 -12
  49. package/dist/server/middleware.d.ts.map +0 -1
  50. package/dist/server/middleware.js +0 -46
  51. package/dist/server/middleware.js.map +0 -1
  52. package/dist/server/server.d.ts +0 -10
  53. package/dist/server/server.d.ts.map +0 -1
  54. package/dist/server/server.js +0 -81
  55. package/dist/server/server.js.map +0 -1
  56. package/dist/server/templates.d.ts +0 -31
  57. package/dist/server/templates.d.ts.map +0 -1
  58. package/dist/server/templates.js +0 -208
  59. package/dist/server/templates.js.map +0 -1
  60. package/dist/server/types.d.ts +0 -67
  61. package/dist/server/types.d.ts.map +0 -1
  62. package/dist/server/types.js +0 -2
  63. package/dist/server/types.js.map +0 -1
  64. package/dist/server/utils.d.ts +0 -71
  65. package/dist/server/utils.d.ts.map +0 -1
  66. package/dist/server/utils.js +0 -165
  67. package/dist/server/utils.js.map +0 -1
  68. package/dist/server/wasm.d.ts +0 -29
  69. package/dist/server/wasm.d.ts.map +0 -1
  70. package/dist/server/wasm.js +0 -208
  71. package/dist/server/wasm.js.map +0 -1
  72. package/dist/server-renderer.d.ts +0 -5
  73. package/dist/server-renderer.d.ts.map +0 -1
  74. package/dist/server-renderer.js +0 -27
  75. package/dist/server-renderer.js.map +0 -1
  76. package/dist/wasm.d.ts +0 -51
  77. package/dist/wasm.d.ts.map +0 -1
@@ -1,117 +0,0 @@
1
- import { Express, Request, Response, NextFunction } from 'express';
2
- import cors from 'cors';
3
- import { SignOptions } from 'jsonwebtoken';
4
- import { renderToString } from 'frontend-hamroun';
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;
117
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +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>>;
12
- //# sourceMappingURL=middleware.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAGD,eAAO,MAAM,aAAa,EAAE,kBAG3B,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SASnB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,SAM1D,CAAC;AAGF,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,IAG1D,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,+CAwBxD"}
@@ -1,46 +0,0 @@
1
- // Common middleware functions
2
- export const requestLogger = (req, res, next) => {
3
- console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
4
- next();
5
- };
6
- export const errorHandler = (err, req, res, next) => {
7
- console.error(err.stack);
8
- res.status(500).json({
9
- error: {
10
- message: 'Internal Server Error',
11
- ...(process.env.NODE_ENV !== 'production' ? { details: err.message, stack: err.stack } : {})
12
- }
13
- });
14
- };
15
- export const notFoundHandler = (req, res) => {
16
- res.status(404).json({
17
- error: {
18
- message: `Not Found - ${req.method} ${req.url}`
19
- }
20
- });
21
- };
22
- // Middleware for rate limiting
23
- export function rateLimit(options) {
24
- const requests = new Map();
25
- return (req, res, next) => {
26
- const ip = req.ip || req.socket.remoteAddress || 'unknown';
27
- const now = Date.now();
28
- // Get existing requests and filter out old ones
29
- const reqTimes = (requests.get(ip) || [])
30
- .filter(time => now - time < options.windowMs);
31
- // Add current request
32
- reqTimes.push(now);
33
- requests.set(ip, reqTimes);
34
- // Check if too many requests
35
- if (reqTimes.length > options.max) {
36
- return res.status(429).json({
37
- error: {
38
- message: 'Too Many Requests',
39
- retryAfter: Math.ceil(options.windowMs / 1000)
40
- }
41
- });
42
- }
43
- return next();
44
- };
45
- }
46
- //# sourceMappingURL=middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAMA,8BAA8B;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAU,EACV,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,KAAK,EAAE;YACL,OAAO,EAAE,uBAAuB;YAChC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7F;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,KAAK,EAAE;YACL,OAAO,EAAE,eAAe,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;SAChD;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,+BAA+B;AAC/B,MAAM,UAAU,SAAS,CAAC,OAA0C;IAClE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE7C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACzD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,gDAAgD;QAChD,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;aACtC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjD,sBAAsB;QACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE3B,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE;oBACL,OAAO,EAAE,mBAAmB;oBAC5B,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;iBAC/C;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,10 +0,0 @@
1
- declare class Server {
2
- private config;
3
- constructor(config: {
4
- pagesDir?: string;
5
- });
6
- private renderPage;
7
- private pathMatchesPattern;
8
- }
9
- export default Server;
10
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAIA,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAwB;gBAE1B,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;YAI3B,UAAU;IAyExB,OAAO,CAAC,kBAAkB;CAS3B;AAED,eAAe,MAAM,CAAC"}
@@ -1,81 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { renderComponent } from '../renderComponent.js'; // Fixed import path with .js extension
4
- class Server {
5
- constructor(config) {
6
- this.config = config;
7
- }
8
- async renderPage(urlPath) {
9
- try {
10
- // Try to find the page component
11
- const pagesDir = path.resolve(process.cwd(), this.config.pagesDir);
12
- // Check various file patterns
13
- let pagePath = '';
14
- const possiblePagePaths = [
15
- `${pagesDir}${path}.jsx`,
16
- `${pagesDir}${path}.tsx`,
17
- `${pagesDir}${path}/index.jsx`,
18
- `${pagesDir}${path}/index.tsx`,
19
- // For dynamic routes
20
- ...fs.readdirSync(pagesDir, { recursive: true })
21
- .filter((file) => typeof file === 'string')
22
- .filter((file) => file.endsWith('.jsx') || file.endsWith('.tsx'))
23
- .map((file) => path.join(pagesDir, file))
24
- .filter((file) => {
25
- const routePattern = file
26
- .replace(pagesDir, '')
27
- .replace(/\.[jt]sx$/, '')
28
- .replace(/\/index$/, '/')
29
- .replace(/\[([^\]]+)\]/g, ':$1');
30
- // Create Express-like path matcher
31
- return this.pathMatchesPattern(urlPath, routePattern);
32
- })
33
- ];
34
- for (const possiblePath of possiblePagePaths) {
35
- if (fs.existsSync(possiblePath)) {
36
- pagePath = possiblePath;
37
- break;
38
- }
39
- }
40
- if (!pagePath) {
41
- return {
42
- html: `<!DOCTYPE html><html><body><h1>404 - Page Not Found</h1></body></html>`,
43
- statusCode: 404
44
- };
45
- }
46
- // Import and render the page component
47
- const { default: PageComponent } = await import(pagePath);
48
- if (!PageComponent || typeof PageComponent !== 'function') {
49
- throw new Error(`Invalid page component: ${pagePath}`);
50
- }
51
- const { html } = await renderComponent(PageComponent);
52
- // Add DOCTYPE and wrap in html/body if not present
53
- let finalHtml = html;
54
- if (!finalHtml.includes('<!DOCTYPE')) {
55
- finalHtml = `<!DOCTYPE html><html><head>
56
- <meta charset="UTF-8">
57
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
58
- <script type="module" src="/client.js"></script>
59
- </head><body>${finalHtml}</body></html>`;
60
- }
61
- return { html: finalHtml, statusCode: 200 };
62
- }
63
- catch (error) {
64
- console.error('Error rendering page:', error);
65
- return {
66
- html: `<!DOCTYPE html><html><body><h1>500 - Server Error</h1><pre>${error}</pre></body></html>`,
67
- statusCode: 500
68
- };
69
- }
70
- }
71
- pathMatchesPattern(path, pattern) {
72
- // Convert Express-like pattern to regex
73
- const regexPattern = pattern
74
- .replace(/\//g, '\\/') // Escape slashes
75
- .replace(/:([^\/]+)/g, '([^\\/]+)'); // Convert :param to regex group
76
- const regex = new RegExp(`^${regexPattern}$`);
77
- return regex.test(path);
78
- }
79
- }
80
- export default Server;
81
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * HTML template generators for server-side rendering
3
- */
4
- export interface DocumentOptions {
5
- title?: string;
6
- description?: string;
7
- lang?: string;
8
- charset?: string;
9
- viewport?: string;
10
- scripts?: string[];
11
- styles?: string[];
12
- meta?: Record<string, string>;
13
- bodyClasses?: string;
14
- htmlAttrs?: Record<string, string>;
15
- bodyAttrs?: Record<string, string>;
16
- initialData?: any;
17
- componentName?: string;
18
- }
19
- /**
20
- * Generate a complete HTML document
21
- */
22
- export declare function generateDocument(content: string, options?: DocumentOptions): string;
23
- /**
24
- * Generate an error page
25
- */
26
- export declare function generateErrorPage(statusCode: number, message: string, error?: Error): string;
27
- /**
28
- * Generate a loading page
29
- */
30
- export declare function generateLoadingPage(message?: string): string;
31
- //# sourceMappingURL=templates.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/server/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAyER;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,KAAK,GACZ,MAAM,CAgGR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAAqB,GAAG,MAAM,CAyC1E"}
@@ -1,208 +0,0 @@
1
- /**
2
- * HTML template generators for server-side rendering
3
- */
4
- /**
5
- * Generate a complete HTML document
6
- */
7
- export function generateDocument(content, options = {}) {
8
- const { title = 'Frontend Hamroun App', description = '', lang = 'en', charset = 'UTF-8', viewport = 'width=device-width, initial-scale=1.0', scripts = [], styles = [], meta = {}, bodyClasses = '', htmlAttrs = {}, bodyAttrs = {}, initialData = {}, componentName = '' } = options;
9
- // Generate HTML attributes
10
- const htmlAttributes = Object.entries(htmlAttrs)
11
- .map(([key, value]) => `${key}="${escapeHtml(value)}"`)
12
- .join(' ');
13
- // Generate body attributes
14
- const bodyAttributes = Object.entries(bodyAttrs)
15
- .map(([key, value]) => `${key}="${escapeHtml(value)}"`)
16
- .join(' ');
17
- // Generate meta tags
18
- const metaTags = [
19
- `<meta charset="${charset}">`,
20
- `<meta name="viewport" content="${viewport}">`,
21
- description ? `<meta name="description" content="${escapeHtml(description)}">` : ''
22
- ];
23
- // Add custom meta tags
24
- Object.entries(meta).forEach(([name, content]) => {
25
- metaTags.push(`<meta name="${escapeHtml(name)}" content="${escapeHtml(content)}">`);
26
- });
27
- // Generate script tags
28
- const scriptTags = scripts.map(src => {
29
- if (src.startsWith('<script')) {
30
- return src; // Allow inline scripts
31
- }
32
- return `<script src="${escapeHtml(src)}" ${src.endsWith('.js') ? 'type="module"' : ''} defer></script>`;
33
- });
34
- // Generate style tags
35
- const styleTags = styles.map(href => {
36
- if (href.startsWith('<style')) {
37
- return href; // Allow inline styles
38
- }
39
- return `<link rel="stylesheet" href="${escapeHtml(href)}">`;
40
- });
41
- // Create initial data script
42
- const initialDataScript = Object.keys(initialData).length > 0 ?
43
- `<script id="__APP_DATA__" type="application/json">${escapeHtml(JSON.stringify(initialData))}</script>` : '';
44
- // Create the complete HTML document
45
- return `<!DOCTYPE html>
46
- <html lang="${lang}" ${htmlAttributes}>
47
- <head>
48
- ${metaTags.filter(Boolean).join('\n ')}
49
- <title>${escapeHtml(title)}</title>
50
- ${styleTags.join('\n ')}
51
- </head>
52
- <body class="${bodyClasses}" ${bodyAttributes}>
53
- <div id="app-root" data-ssr-root${componentName ? ` data-component="${escapeHtml(componentName)}"` : ''}>${content}</div>
54
- ${initialDataScript}
55
- ${scriptTags.join('\n ')}
56
- </body>
57
- </html>`;
58
- }
59
- /**
60
- * Generate an error page
61
- */
62
- export function generateErrorPage(statusCode, message, error) {
63
- const errorMessages = {
64
- 400: 'Bad Request',
65
- 401: 'Unauthorized',
66
- 403: 'Forbidden',
67
- 404: 'Not Found',
68
- 500: 'Internal Server Error'
69
- };
70
- const title = `${statusCode} - ${errorMessages[statusCode] || 'Error'}`;
71
- // Generate error details (only in development)
72
- const isDev = process.env.NODE_ENV !== 'production';
73
- const errorDetails = isDev && error ? `
74
- <div class="error-details">
75
- <pre>${escapeHtml(error.stack || error.message)}</pre>
76
- </div>
77
- ` : '';
78
- // Create error content
79
- const content = `
80
- <div class="error-container">
81
- <h1>${statusCode}</h1>
82
- <h2>${escapeHtml(errorMessages[statusCode] || 'Error')}</h2>
83
- <p>${escapeHtml(message)}</p>
84
- ${errorDetails}
85
- <a href="/" class="home-link">Back to Home</a>
86
- </div>
87
- `;
88
- // Add error page styling
89
- const styles = [`<style>
90
- body {
91
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
92
- display: flex;
93
- justify-content: center;
94
- align-items: center;
95
- min-height: 100vh;
96
- margin: 0;
97
- background-color: #f7f7f7;
98
- color: #333;
99
- }
100
- .error-container {
101
- text-align: center;
102
- padding: 2rem;
103
- border-radius: 8px;
104
- background-color: white;
105
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
106
- max-width: 600px;
107
- width: 100%;
108
- }
109
- h1 {
110
- font-size: 6rem;
111
- margin: 0;
112
- color: #e74c3c;
113
- }
114
- h2 {
115
- margin-top: 0;
116
- margin-bottom: 1rem;
117
- color: #333;
118
- }
119
- .error-details {
120
- text-align: left;
121
- margin: 2rem 0;
122
- padding: 1rem;
123
- background-color: #f8f8f8;
124
- border-radius: 4px;
125
- overflow: auto;
126
- }
127
- pre {
128
- margin: 0;
129
- font-family: monospace;
130
- font-size: 0.85rem;
131
- white-space: pre-wrap;
132
- }
133
- .home-link {
134
- display: inline-block;
135
- margin-top: 1.5rem;
136
- padding: 0.75rem 1.5rem;
137
- background-color: #3498db;
138
- color: white;
139
- text-decoration: none;
140
- border-radius: 4px;
141
- transition: background-color 0.2s;
142
- }
143
- .home-link:hover {
144
- background-color: #2980b9;
145
- }
146
- </style>`];
147
- return generateDocument(content, {
148
- title,
149
- description: `Error ${statusCode}: ${errorMessages[statusCode] || 'Error'}`,
150
- bodyClasses: 'error-page',
151
- styles
152
- });
153
- }
154
- /**
155
- * Generate a loading page
156
- */
157
- export function generateLoadingPage(message = 'Loading...') {
158
- const content = `
159
- <div class="loading-container">
160
- <div class="spinner"></div>
161
- <p>${escapeHtml(message)}</p>
162
- </div>
163
- `;
164
- const styles = [`<style>
165
- body {
166
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
167
- display: flex;
168
- justify-content: center;
169
- align-items: center;
170
- min-height: 100vh;
171
- margin: 0;
172
- background-color: #f7f7f7;
173
- color: #333;
174
- }
175
- .loading-container {
176
- text-align: center;
177
- }
178
- .spinner {
179
- width: 50px;
180
- height: 50px;
181
- border: 5px solid rgba(0, 0, 0, 0.1);
182
- border-radius: 50%;
183
- border-top-color: #3498db;
184
- animation: spin 1s ease-in-out infinite;
185
- margin: 0 auto 20px;
186
- }
187
- @keyframes spin {
188
- to { transform: rotate(360deg); }
189
- }
190
- </style>`];
191
- return generateDocument(content, {
192
- title: 'Loading',
193
- bodyClasses: 'loading-page',
194
- styles
195
- });
196
- }
197
- /**
198
- * Escape HTML special characters
199
- */
200
- function escapeHtml(text) {
201
- return String(text)
202
- .replace(/&/g, '&amp;')
203
- .replace(/</g, '&lt;')
204
- .replace(/>/g, '&gt;')
205
- .replace(/"/g, '&quot;')
206
- .replace(/'/g, '&#039;');
207
- }
208
- //# sourceMappingURL=templates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/server/templates.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- import { Express } from 'express';
2
- export interface ServerConfig {
3
- port?: number;
4
- apiDir?: string;
5
- pagesDir?: string;
6
- staticDir?: string;
7
- enableCors?: boolean;
8
- corsOptions?: {
9
- origin?: string | string[] | boolean;
10
- credentials?: boolean;
11
- methods?: string[];
12
- allowedHeaders?: string[];
13
- };
14
- db?: {
15
- url: string;
16
- type: 'mongodb' | 'mysql' | 'postgres';
17
- };
18
- auth?: {
19
- secret: string;
20
- expiresIn?: string | number;
21
- };
22
- }
23
- export interface Server {
24
- start(): Promise<void>;
25
- stop(): Promise<void>;
26
- getExpressApp(): Express;
27
- getDatabase(): any;
28
- getAuth(): any;
29
- }
30
- export interface User {
31
- id: string | number;
32
- username: string;
33
- password?: string;
34
- email?: string;
35
- roles?: string[];
36
- [key: string]: any;
37
- }
38
- export interface DbConfig {
39
- url: string;
40
- type: 'mongodb' | 'mysql' | 'postgres';
41
- }
42
- export interface MiddlewareFunction {
43
- (req: any, res: any, next: any): void | Promise<void>;
44
- }
45
- export interface Todo {
46
- id: number;
47
- text: string;
48
- completed: boolean;
49
- }
50
- export interface TodoItemProps {
51
- todo: Todo;
52
- onToggle: (id: number) => void;
53
- onDelete: (id: number) => void;
54
- }
55
- export interface GoWasmInstance {
56
- instance: WebAssembly.Instance;
57
- module: WebAssembly.Module;
58
- exports: WebAssembly.Exports;
59
- functions: Record<string, Function>;
60
- }
61
- export interface GoWasmOptions {
62
- debug?: boolean;
63
- goWasmPath?: string;
64
- importObject?: Record<string, any>;
65
- onLoad?: (instance: GoWasmInstance) => void;
66
- }
67
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,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;QACZ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QACrC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,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,MAAM,WAAW,MAAM;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,IAAI,OAAO,CAAC;IACzB,WAAW,IAAI,GAAG,CAAC;IACnB,OAAO,IAAI,GAAG,CAAC;CAChB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CAC7C"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":""}