frontend-hamroun 1.2.79 → 1.2.80

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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -1513
  3. package/bin/cli.js +505 -144
  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 +298 -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/bun.lock +196 -0
  31. package/templates/basic-app/dev.js +27 -0
  32. package/templates/basic-app/docs/rapport_pfe.aux +27 -27
  33. package/templates/basic-app/docs/rapport_pfe.out +10 -10
  34. package/templates/basic-app/docs/rapport_pfe.toc +14 -14
  35. package/templates/basic-app/esbuild.config.js +28 -0
  36. package/templates/basic-app/index.html +1 -1
  37. package/templates/{fullstack-app → basic-app}/package-lock.json +4185 -5094
  38. package/templates/basic-app/package.json +29 -28
  39. package/templates/basic-app/server.js +24 -0
  40. package/templates/basic-app/src/App.tsx +26 -0
  41. package/templates/basic-app/src/client.tsx +11 -0
  42. package/templates/basic-app/src/components/Counter.tsx +18 -0
  43. package/templates/basic-app/src/jsx-shim.ts +4 -0
  44. package/templates/basic-app/src/main.tsx +0 -1
  45. package/templates/basic-app/src/server.ts +52 -0
  46. package/templates/basic-app/tsconfig.server.json +11 -0
  47. package/templates/fullstack-app/build/main.css +874 -874
  48. package/templates/fullstack-app/build/main.css.map +7 -7
  49. package/templates/fullstack-app/build/main.js +967 -967
  50. package/templates/fullstack-app/build/main.js.map +7 -7
  51. package/templates/fullstack-app/public/styles.css +768 -768
  52. package/templates/go/example.go +99 -154
  53. package/templates/go-wasm-app/babel.config.js +2 -8
  54. package/templates/go-wasm-app/package.json +12 -21
  55. package/templates/go-wasm-app/public/wasm/wasm_exec.js +561 -561
  56. package/templates/go-wasm-app/public/wasm/wasm_exec_node.js +39 -39
  57. package/templates/go-wasm-app/server.js +510 -59
  58. package/templates/go-wasm-app/src/app.js +2 -22
  59. package/templates/go-wasm-app/src/wasm/example.go +75 -75
  60. package/templates/go-wasm-app/vite.config.js +5 -16
  61. package/templates/ssr-template/server.js +2 -2
  62. package/templates/ssr-template/vite.config.js +5 -16
  63. package/dist/Counter.d.ts +0 -0
  64. package/dist/batch/package.json +0 -16
  65. package/dist/client-router/package.json +0 -16
  66. package/dist/component/package.json +0 -16
  67. package/dist/context/package.json +0 -16
  68. package/dist/event-bus/package.json +0 -16
  69. package/dist/forms/package.json +0 -16
  70. package/dist/hooks/package.json +0 -16
  71. package/dist/hooks-0728361a.cjs +0 -1
  72. package/dist/hooks-b58f947c.js +0 -133
  73. package/dist/hooks.js +0 -1
  74. package/dist/hooks.mjs +0 -13
  75. package/dist/index.mjs +0 -137
  76. package/dist/jsx-runtime/package.json +0 -16
  77. package/dist/jsx-runtime.mjs +0 -64
  78. package/dist/lifecycle-events/package.json +0 -16
  79. package/dist/package.json +0 -71
  80. package/dist/render-component/package.json +0 -16
  81. package/dist/renderer/package.json +0 -16
  82. package/dist/renderer.js +0 -1
  83. package/dist/renderer.mjs +0 -27
  84. package/dist/router/package.json +0 -16
  85. package/dist/server/package.json +0 -17
  86. package/dist/server/src/batch.d.ts +0 -3
  87. package/dist/server/src/batch.js +0 -23
  88. package/dist/server/src/batch.js.map +0 -1
  89. package/dist/server/src/client-router.d.ts +0 -60
  90. package/dist/server/src/client-router.js +0 -210
  91. package/dist/server/src/client-router.js.map +0 -1
  92. package/dist/server/src/component.d.ts +0 -14
  93. package/dist/server/src/component.js +0 -106
  94. package/dist/server/src/component.js.map +0 -1
  95. package/dist/server/src/context.d.ts +0 -13
  96. package/dist/server/src/context.js +0 -21
  97. package/dist/server/src/context.js.map +0 -1
  98. package/dist/server/src/event-bus.d.ts +0 -23
  99. package/dist/server/src/event-bus.js +0 -75
  100. package/dist/server/src/event-bus.js.map +0 -1
  101. package/dist/server/src/forms.d.ts +0 -40
  102. package/dist/server/src/forms.js +0 -148
  103. package/dist/server/src/forms.js.map +0 -1
  104. package/dist/server/src/hooks.d.ts +0 -12
  105. package/dist/server/src/hooks.js +0 -170
  106. package/dist/server/src/hooks.js.map +0 -1
  107. package/dist/server/src/index.client.d.ts +0 -12
  108. package/dist/server/src/index.client.js +0 -14
  109. package/dist/server/src/index.client.js.map +0 -1
  110. package/dist/server/src/index.d.ts +0 -88
  111. package/dist/server/src/index.js +0 -79
  112. package/dist/server/src/index.js.map +0 -1
  113. package/dist/server/src/jsx-runtime/jsx-dev-runtime.d.ts +0 -1
  114. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js +0 -2
  115. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js.map +0 -1
  116. package/dist/server/src/jsx-runtime/jsx-runtime.d.ts +0 -4
  117. package/dist/server/src/jsx-runtime/jsx-runtime.js +0 -41
  118. package/dist/server/src/jsx-runtime/jsx-runtime.js.map +0 -1
  119. package/dist/server/src/jsx-runtime.d.ts +0 -20
  120. package/dist/server/src/jsx-runtime.js +0 -105
  121. package/dist/server/src/jsx-runtime.js.map +0 -1
  122. package/dist/server/src/lifecycle-events.d.ts +0 -108
  123. package/dist/server/src/lifecycle-events.js +0 -177
  124. package/dist/server/src/lifecycle-events.js.map +0 -1
  125. package/dist/server/src/renderComponent.d.ts +0 -13
  126. package/dist/server/src/renderComponent.js +0 -30
  127. package/dist/server/src/renderComponent.js.map +0 -1
  128. package/dist/server/src/renderer.d.ts +0 -2
  129. package/dist/server/src/renderer.js +0 -31
  130. package/dist/server/src/renderer.js.map +0 -1
  131. package/dist/server/src/router.d.ts +0 -55
  132. package/dist/server/src/router.js +0 -166
  133. package/dist/server/src/router.js.map +0 -1
  134. package/dist/server/src/server/api-router.d.ts +0 -15
  135. package/dist/server/src/server/api-router.js +0 -111
  136. package/dist/server/src/server/api-router.js.map +0 -1
  137. package/dist/server/src/server/auth.d.ts +0 -32
  138. package/dist/server/src/server/auth.js +0 -80
  139. package/dist/server/src/server/auth.js.map +0 -1
  140. package/dist/server/src/server/database.d.ts +0 -24
  141. package/dist/server/src/server/database.js +0 -135
  142. package/dist/server/src/server/database.js.map +0 -1
  143. package/dist/server/src/server/index.d.ts +0 -116
  144. package/dist/server/src/server/index.js +0 -508
  145. package/dist/server/src/server/index.js.map +0 -1
  146. package/dist/server/src/server/middleware.d.ts +0 -11
  147. package/dist/server/src/server/middleware.js +0 -46
  148. package/dist/server/src/server/middleware.js.map +0 -1
  149. package/dist/server/src/server/server.d.ts +0 -9
  150. package/dist/server/src/server/server.js +0 -87
  151. package/dist/server/src/server/server.js.map +0 -1
  152. package/dist/server/src/server/templates.d.ts +0 -30
  153. package/dist/server/src/server/templates.js +0 -208
  154. package/dist/server/src/server/templates.js.map +0 -1
  155. package/dist/server/src/server/types.d.ts +0 -38
  156. package/dist/server/src/server/types.js +0 -4
  157. package/dist/server/src/server/types.js.map +0 -1
  158. package/dist/server/src/server/utils.d.ts +0 -70
  159. package/dist/server/src/server/utils.js +0 -156
  160. package/dist/server/src/server/utils.js.map +0 -1
  161. package/dist/server/src/server/wasm.d.ts +0 -9
  162. package/dist/server/src/server/wasm.js +0 -117
  163. package/dist/server/src/server/wasm.js.map +0 -1
  164. package/dist/server/src/server-renderer.d.ts +0 -5
  165. package/dist/server/src/server-renderer.js +0 -106
  166. package/dist/server/src/server-renderer.js.map +0 -1
  167. package/dist/server/src/server-types.d.ts +0 -42
  168. package/dist/server/src/server-types.js +0 -6
  169. package/dist/server/src/server-types.js.map +0 -1
  170. package/dist/server/src/store.d.ts +0 -41
  171. package/dist/server/src/store.js +0 -99
  172. package/dist/server/src/store.js.map +0 -1
  173. package/dist/server/src/types.d.ts +0 -19
  174. package/dist/server/src/types.js +0 -2
  175. package/dist/server/src/types.js.map +0 -1
  176. package/dist/server/src/utils.d.ts +0 -46
  177. package/dist/server/src/utils.js +0 -144
  178. package/dist/server/src/utils.js.map +0 -1
  179. package/dist/server/src/vdom.d.ts +0 -8
  180. package/dist/server/src/vdom.js +0 -22
  181. package/dist/server/src/vdom.js.map +0 -1
  182. package/dist/server/src/wasm.d.ts +0 -36
  183. package/dist/server/src/wasm.js +0 -159
  184. package/dist/server/src/wasm.js.map +0 -1
  185. package/dist/server/tsconfig.server.tsbuildinfo +0 -1
  186. package/dist/server-renderer/package.json +0 -16
  187. package/dist/server-renderer.mjs +0 -64
  188. package/dist/store/package.json +0 -16
  189. package/dist/types/package.json +0 -16
  190. package/dist/utils/package.json +0 -16
  191. package/dist/vdom/package.json +0 -16
  192. package/dist/wasm/package.json +0 -16
  193. package/dist/wasm.js +0 -1
  194. package/dist/wasm.mjs +0 -103
  195. package/templates/basic-app/docs/rapport_pfe.log +0 -399
  196. package/templates/complete-app/client.js +0 -58
  197. package/templates/complete-app/package-lock.json +0 -2536
  198. package/templates/complete-app/package.json +0 -17
  199. package/templates/complete-app/pages/about.js +0 -119
  200. package/templates/complete-app/pages/index.js +0 -157
  201. package/templates/complete-app/pages/wasm-demo.js +0 -290
  202. package/templates/complete-app/public/client.js +0 -80
  203. package/templates/complete-app/public/index.html +0 -47
  204. package/templates/complete-app/public/styles.css +0 -579
  205. package/templates/complete-app/readme.md +0 -188
  206. package/templates/complete-app/server.js +0 -417
  207. package/templates/complete-app/server.ts +0 -275
  208. package/templates/complete-app/src/App.tsx +0 -59
  209. package/templates/complete-app/src/client.ts +0 -61
  210. package/templates/complete-app/src/client.tsx +0 -18
  211. package/templates/complete-app/src/pages/index.tsx +0 -51
  212. package/templates/complete-app/src/server.ts +0 -218
  213. package/templates/complete-app/tsconfig.json +0 -22
  214. package/templates/complete-app/tsconfig.server.json +0 -19
  215. package/templates/complete-app/vite.config.js +0 -57
  216. package/templates/complete-app/vite.config.ts +0 -30
  217. package/templates/go-wasm-app/build.config.js +0 -62
  218. package/templates/go-wasm-app/build.js +0 -218
  219. package/templates/go-wasm-app/package-lock.json +0 -3732
@@ -1,32 +0,0 @@
1
- import { SignOptions } from 'jsonwebtoken';
2
- import { Request, Response, NextFunction } from 'express';
3
- export interface AuthConfig {
4
- secret: string;
5
- expiresIn?: SignOptions['expiresIn'];
6
- }
7
- export interface User {
8
- id: string | number;
9
- username: string;
10
- password?: string;
11
- email?: string;
12
- roles?: string[];
13
- [key: string]: any;
14
- }
15
- export declare class AuthService {
16
- private config;
17
- constructor(config: AuthConfig);
18
- hashPassword(password: string): Promise<string>;
19
- comparePasswords(password: string, hashedPassword: string): Promise<boolean>;
20
- generateToken(user: Omit<User, 'password'>): string;
21
- verifyToken(token: string): any;
22
- initialize(): (req: Request & {
23
- user?: any;
24
- }, res: Response, next: NextFunction) => void;
25
- requireAuth(): (req: Request & {
26
- user?: any;
27
- }, res: Response, next: NextFunction) => void | Response<any, Record<string, any>>;
28
- requireRoles(roles: string[]): (req: Request & {
29
- user?: any;
30
- }, res: Response, next: NextFunction) => void | Response<any, Record<string, any>>;
31
- private extractToken;
32
- }
@@ -1,80 +0,0 @@
1
- import jwt from 'jsonwebtoken';
2
- import bcrypt from 'bcryptjs';
3
- export class AuthService {
4
- constructor(config) {
5
- Object.defineProperty(this, "config", {
6
- enumerable: true,
7
- configurable: true,
8
- writable: true,
9
- value: void 0
10
- });
11
- this.config = {
12
- expiresIn: '24h',
13
- ...config
14
- };
15
- }
16
- async hashPassword(password) {
17
- return bcrypt.hash(password, 10);
18
- }
19
- async comparePasswords(password, hashedPassword) {
20
- return bcrypt.compare(password, hashedPassword);
21
- }
22
- generateToken(user) {
23
- const options = {};
24
- if (this.config.expiresIn) {
25
- options.expiresIn = this.config.expiresIn;
26
- }
27
- return jwt.sign({ id: user.id, username: user.username, roles: user.roles || [] }, this.config.secret, options);
28
- }
29
- verifyToken(token) {
30
- try {
31
- return jwt.verify(token, this.config.secret);
32
- }
33
- catch (error) {
34
- return null;
35
- }
36
- }
37
- // Express middleware for authentication
38
- initialize() {
39
- return (req, res, next) => {
40
- const token = this.extractToken(req);
41
- if (token) {
42
- const decoded = this.verifyToken(token);
43
- if (decoded) {
44
- req.user = decoded;
45
- }
46
- }
47
- next();
48
- };
49
- }
50
- // Express middleware for requiring authentication
51
- requireAuth() {
52
- return (req, res, next) => {
53
- if (!req.user) {
54
- return res.status(401).json({ message: 'Unauthorized' });
55
- }
56
- return next();
57
- };
58
- }
59
- // Express middleware for requiring specific roles
60
- requireRoles(roles) {
61
- return (req, res, next) => {
62
- if (!req.user) {
63
- return res.status(401).json({ message: 'Unauthorized' });
64
- }
65
- const userRoles = req.user.roles || [];
66
- const hasRequiredRole = roles.some(role => userRoles.includes(role));
67
- if (!hasRequiredRole) {
68
- return res.status(403).json({ message: 'Forbidden' });
69
- }
70
- return next();
71
- };
72
- }
73
- extractToken(req) {
74
- if (req.headers.authorization && req.headers.authorization.startsWith('Bearer ')) {
75
- return req.headers.authorization.substring(7);
76
- }
77
- return null;
78
- }
79
- }
80
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/server/auth.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { Db } from 'mongodb';
2
- import mysql from 'mysql2/promise';
3
- import pg from 'pg';
4
- export interface DbConfig {
5
- url: string;
6
- type: 'mongodb' | 'mysql' | 'postgres';
7
- }
8
- export declare class Database {
9
- private config;
10
- private mongoClient;
11
- private mongoDb;
12
- private mysqlPool;
13
- private pgPool;
14
- constructor(config: DbConfig);
15
- connect(): Promise<void>;
16
- private connectMongo;
17
- private connectMysql;
18
- private connectPostgres;
19
- disconnect(): Promise<void>;
20
- getMongoDb(): Db | null;
21
- getMysqlPool(): mysql.Pool | null;
22
- getPgPool(): pg.Pool | null;
23
- query(sql: string, values?: any[]): Promise<any>;
24
- }
@@ -1,135 +0,0 @@
1
- import { MongoClient } from 'mongodb';
2
- import mysql from 'mysql2/promise';
3
- import pg from 'pg';
4
- export class Database {
5
- constructor(config) {
6
- Object.defineProperty(this, "config", {
7
- enumerable: true,
8
- configurable: true,
9
- writable: true,
10
- value: void 0
11
- });
12
- Object.defineProperty(this, "mongoClient", {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value: null
17
- });
18
- Object.defineProperty(this, "mongoDb", {
19
- enumerable: true,
20
- configurable: true,
21
- writable: true,
22
- value: null
23
- });
24
- Object.defineProperty(this, "mysqlPool", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: null
29
- });
30
- Object.defineProperty(this, "pgPool", {
31
- enumerable: true,
32
- configurable: true,
33
- writable: true,
34
- value: null
35
- });
36
- this.config = config;
37
- }
38
- async connect() {
39
- switch (this.config.type) {
40
- case 'mongodb':
41
- await this.connectMongo();
42
- break;
43
- case 'mysql':
44
- await this.connectMysql();
45
- break;
46
- case 'postgres':
47
- await this.connectPostgres();
48
- break;
49
- default:
50
- throw new Error(`Unsupported database type: ${this.config.type}`);
51
- }
52
- }
53
- async connectMongo() {
54
- try {
55
- this.mongoClient = new MongoClient(this.config.url);
56
- await this.mongoClient.connect();
57
- this.mongoDb = this.mongoClient.db();
58
- console.log('Connected to MongoDB');
59
- }
60
- catch (error) {
61
- console.error('MongoDB connection error:', error);
62
- throw error;
63
- }
64
- }
65
- async connectMysql() {
66
- try {
67
- this.mysqlPool = mysql.createPool(this.config.url);
68
- // Test connection
69
- await this.mysqlPool.getConnection();
70
- console.log('Connected to MySQL');
71
- }
72
- catch (error) {
73
- console.error('MySQL connection error:', error);
74
- throw error;
75
- }
76
- }
77
- async connectPostgres() {
78
- try {
79
- this.pgPool = new pg.Pool({ connectionString: this.config.url });
80
- // Test connection
81
- const client = await this.pgPool.connect();
82
- client.release();
83
- console.log('Connected to PostgreSQL');
84
- }
85
- catch (error) {
86
- console.error('PostgreSQL connection error:', error);
87
- throw error;
88
- }
89
- }
90
- async disconnect() {
91
- if (this.mongoClient) {
92
- await this.mongoClient.close();
93
- this.mongoClient = null;
94
- this.mongoDb = null;
95
- }
96
- if (this.mysqlPool) {
97
- await this.mysqlPool.end();
98
- this.mysqlPool = null;
99
- }
100
- if (this.pgPool) {
101
- await this.pgPool.end();
102
- this.pgPool = null;
103
- }
104
- }
105
- // Database-specific methods
106
- getMongoDb() {
107
- return this.mongoDb;
108
- }
109
- getMysqlPool() {
110
- return this.mysqlPool;
111
- }
112
- getPgPool() {
113
- return this.pgPool;
114
- }
115
- // Generic query method
116
- async query(sql, values) {
117
- switch (this.config.type) {
118
- case 'mongodb':
119
- throw new Error('For MongoDB, use getMongoDb() instead of query()');
120
- case 'mysql':
121
- if (!this.mysqlPool)
122
- throw new Error('MySQL not connected');
123
- const [rows] = await this.mysqlPool.execute(sql, values || []);
124
- return rows;
125
- case 'postgres':
126
- if (!this.pgPool)
127
- throw new Error('PostgreSQL not connected');
128
- const result = await this.pgPool.query(sql, values || []);
129
- return result.rows;
130
- default:
131
- throw new Error(`Unsupported database type: ${this.config.type}`);
132
- }
133
- }
134
- }
135
- //# sourceMappingURL=database.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../src/server/database.ts"],"names":[],"mappings":"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"}
@@ -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;