baraqex 1.0.44 → 1.0.45

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 (60) hide show
  1. package/README_WASM.md +472 -0
  2. package/dist/browser.js +1 -422
  3. package/dist/browser.js.map +4 -4
  4. package/dist/index.js +31 -421
  5. package/dist/index.js.map +4 -4
  6. package/dist/{server/index.js → server.js} +21 -114
  7. package/dist/server.js.map +7 -0
  8. package/package.json +48 -57
  9. package/templates/ssr-template/package-lock.json +2 -2
  10. package/templates/ssr-template/src/App.tsx +1 -1
  11. package/templates/ssr-template/src/client.tsx +1 -1
  12. package/templates/ssr-template/src/server.ts +1 -1
  13. package/templates/wasm/package-lock.json +3169 -2710
  14. package/templates/wasm/package.json +9 -12
  15. package/templates/wasm/src/App.tsx +50 -19
  16. package/templates/wasm/vite.config.ts +24 -59
  17. package/dist/api/hello.d.ts +0 -3
  18. package/dist/api/hello.d.ts.map +0 -1
  19. package/dist/api/users/[id].d.ts +0 -5
  20. package/dist/api/users/[id].d.ts.map +0 -1
  21. package/dist/browser.d.ts +0 -29
  22. package/dist/browser.d.ts.map +0 -1
  23. package/dist/browser.package.json +0 -4
  24. package/dist/frontend/components/WasmLoader.d.ts +0 -2
  25. package/dist/frontend/components/WasmLoader.d.ts.map +0 -1
  26. package/dist/frontend/hooks/useWasm.d.ts +0 -2
  27. package/dist/frontend/hooks/useWasm.d.ts.map +0 -1
  28. package/dist/frontend/index.d.ts +0 -2
  29. package/dist/frontend/index.d.ts.map +0 -1
  30. package/dist/index.d.ts +0 -34
  31. package/dist/index.d.ts.map +0 -1
  32. package/dist/renderComponent.d.ts +0 -9
  33. package/dist/renderComponent.d.ts.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/auth.d.ts +0 -25
  37. package/dist/server/auth.d.ts.map +0 -1
  38. package/dist/server/database.d.ts +0 -22
  39. package/dist/server/database.d.ts.map +0 -1
  40. package/dist/server/index.d.ts +0 -115
  41. package/dist/server/index.d.ts.map +0 -1
  42. package/dist/server/index.js.map +0 -7
  43. package/dist/server/middleware.d.ts +0 -11
  44. package/dist/server/middleware.d.ts.map +0 -1
  45. package/dist/server/package.json +0 -4
  46. package/dist/server/templates.d.ts +0 -31
  47. package/dist/server/templates.d.ts.map +0 -1
  48. package/dist/server/types.d.ts +0 -69
  49. package/dist/server/types.d.ts.map +0 -1
  50. package/dist/server/utils.d.ts +0 -70
  51. package/dist/server/utils.d.ts.map +0 -1
  52. package/dist/server/wasm.d.ts +0 -29
  53. package/dist/server/wasm.d.ts.map +0 -1
  54. package/dist/server-renderer.d.ts +0 -5
  55. package/dist/server-renderer.d.ts.map +0 -1
  56. package/dist/wasm.d.ts +0 -51
  57. package/dist/wasm.d.ts.map +0 -1
  58. package/templates/wasm/src/index.html +0 -14
  59. package/templates/wasm/src/main.tsx +0 -5
  60. package/templates/wasm/src/wasm-loader.ts +0 -119
package/dist/index.js CHANGED
@@ -15,383 +15,6 @@ var __export = (target, all) => {
15
15
  __defProp(target, name, { get: all[name], enumerable: true });
16
16
  };
17
17
 
18
- // node_modules/frontend-hamroun/dist/index.mjs
19
- function batchUpdates(fn) {
20
- if (isBatching) {
21
- queue.push(fn);
22
- return;
23
- }
24
- isBatching = true;
25
- try {
26
- fn();
27
- while (queue.length > 0) {
28
- const nextFn = queue.shift();
29
- nextFn == null ? void 0 : nextFn();
30
- }
31
- } finally {
32
- isBatching = false;
33
- }
34
- }
35
- function setRenderCallback(callback, element, container) {
36
- globalRenderCallback = callback;
37
- globalContainer = container;
38
- currentElement = element;
39
- }
40
- function prepareRender() {
41
- currentRender++;
42
- stateIndices.set(currentRender, 0);
43
- return currentRender;
44
- }
45
- function finishRender() {
46
- if (isServer) {
47
- serverStates.delete(currentRender);
48
- }
49
- currentRender = 0;
50
- }
51
- function useState(initial) {
52
- if (!currentRender) {
53
- throw new Error("useState must be called within a render");
54
- }
55
- if (isServer) {
56
- if (!serverStates.has(currentRender)) {
57
- serverStates.set(currentRender, /* @__PURE__ */ new Map());
58
- }
59
- const componentState = serverStates.get(currentRender);
60
- const index2 = stateIndices.get(currentRender) || 0;
61
- if (!componentState.has(index2)) {
62
- componentState.set(index2, initial);
63
- }
64
- const state2 = componentState.get(index2);
65
- const setState2 = (newValue) => {
66
- };
67
- stateIndices.set(currentRender, index2 + 1);
68
- return [state2, setState2];
69
- }
70
- if (!states.has(currentRender)) {
71
- states.set(currentRender, []);
72
- }
73
- const componentStates = states.get(currentRender);
74
- const index = stateIndices.get(currentRender);
75
- if (index >= componentStates.length) {
76
- componentStates.push(initial);
77
- }
78
- const state = componentStates[index];
79
- const setState = (newValue) => {
80
- const nextValue = typeof newValue === "function" ? newValue(componentStates[index]) : newValue;
81
- if (componentStates[index] === nextValue)
82
- return;
83
- componentStates[index] = nextValue;
84
- if (isBatching) {
85
- batchUpdates(() => rerender(currentRender));
86
- } else {
87
- rerender(currentRender);
88
- }
89
- };
90
- stateIndices.set(currentRender, index + 1);
91
- return [state, setState];
92
- }
93
- function useEffect(callback, deps) {
94
- if (!currentRender)
95
- throw new Error("useEffect must be called within a render");
96
- const effectIndex = stateIndices.get(currentRender);
97
- if (!effects.has(currentRender)) {
98
- effects.set(currentRender, []);
99
- }
100
- const componentEffects = effects.get(currentRender);
101
- const prevEffect = componentEffects[effectIndex];
102
- if (!prevEffect || !deps || !prevEffect.deps || deps.some((dep, i) => dep !== prevEffect.deps[i])) {
103
- if (prevEffect == null ? void 0 : prevEffect.cleanup) {
104
- prevEffect.cleanup();
105
- }
106
- queueMicrotask(() => {
107
- const cleanup = callback() || void 0;
108
- componentEffects[effectIndex] = { cleanup, deps };
109
- });
110
- }
111
- stateIndices.set(currentRender, effectIndex + 1);
112
- }
113
- function useMemo(factory, deps) {
114
- if (!currentRender)
115
- throw new Error("useMemo must be called within a render");
116
- const memoIndex = stateIndices.get(currentRender);
117
- if (!memos.has(currentRender)) {
118
- memos.set(currentRender, []);
119
- }
120
- const componentMemos = memos.get(currentRender);
121
- const prevMemo = componentMemos[memoIndex];
122
- if (!prevMemo || deps && deps.some((dep, i) => !Object.is(dep, prevMemo.deps[i]))) {
123
- const value = factory();
124
- componentMemos[memoIndex] = { value, deps };
125
- stateIndices.set(currentRender, memoIndex + 1);
126
- return value;
127
- }
128
- stateIndices.set(currentRender, memoIndex + 1);
129
- return prevMemo.value;
130
- }
131
- function useRef(initial) {
132
- if (!currentRender)
133
- throw new Error("useRef must be called within a render");
134
- const refIndex = stateIndices.get(currentRender);
135
- if (!refs.has(currentRender)) {
136
- refs.set(currentRender, []);
137
- }
138
- const componentRefs = refs.get(currentRender);
139
- if (refIndex >= componentRefs.length) {
140
- const ref2 = { current: initial };
141
- componentRefs.push(ref2);
142
- stateIndices.set(currentRender, refIndex + 1);
143
- return ref2;
144
- }
145
- const ref = componentRefs[refIndex];
146
- stateIndices.set(currentRender, refIndex + 1);
147
- return ref;
148
- }
149
- async function rerender(rendererId) {
150
- try {
151
- const componentEffects = effects.get(rendererId);
152
- if (componentEffects) {
153
- componentEffects.forEach((effect) => {
154
- if (effect.cleanup)
155
- effect.cleanup();
156
- });
157
- effects.set(rendererId, []);
158
- }
159
- if (globalRenderCallback && globalContainer && currentElement) {
160
- await globalRenderCallback(currentElement, globalContainer);
161
- }
162
- } catch (error) {
163
- console.error("Error during rerender:", error);
164
- }
165
- }
166
- function useErrorBoundary() {
167
- const [error, setError] = useState(null);
168
- return [error, () => setError(null)];
169
- }
170
- function createContext(defaultValue) {
171
- const context = {
172
- Provider: ({ value, children }) => {
173
- return children;
174
- },
175
- Consumer: ({ children }) => {
176
- return children(defaultValue);
177
- },
178
- _id: Symbol(),
179
- useSelector: (selector) => {
180
- return selector(defaultValue);
181
- }
182
- };
183
- return context;
184
- }
185
- function useContext(context) {
186
- return context;
187
- }
188
- function jsx(type, props) {
189
- console.log("JSX Transform:", { type, props });
190
- const processedProps = { ...props };
191
- if (arguments.length > 2) {
192
- processedProps.children = Array.prototype.slice.call(arguments, 2);
193
- }
194
- return { type, props: processedProps };
195
- }
196
- async function createElement(vnode) {
197
- var _a;
198
- console.log("Creating element from:", vnode);
199
- if (vnode == null) {
200
- return document.createTextNode("");
201
- }
202
- if (typeof vnode === "boolean") {
203
- return document.createTextNode("");
204
- }
205
- if (typeof vnode === "number" || typeof vnode === "string") {
206
- return document.createTextNode(String(vnode));
207
- }
208
- if (Array.isArray(vnode)) {
209
- const fragment = document.createDocumentFragment();
210
- for (const child of vnode) {
211
- const node = await createElement(child);
212
- fragment.appendChild(node);
213
- }
214
- return fragment;
215
- }
216
- if ("type" in vnode && vnode.props !== void 0) {
217
- const { type, props } = vnode;
218
- if (typeof type === "function") {
219
- try {
220
- const result = await type(props || {});
221
- const node = await createElement(result);
222
- if (node instanceof Element) {
223
- node.setAttribute("data-component-id", type.name || type.toString());
224
- }
225
- return node;
226
- } catch (error) {
227
- console.error("Error rendering component:", error);
228
- return document.createTextNode("");
229
- }
230
- }
231
- const element = document.createElement(type);
232
- for (const [key, value] of Object.entries(props || {})) {
233
- if (key === "children")
234
- continue;
235
- if (key.startsWith("on") && typeof value === "function") {
236
- const eventName = key.toLowerCase().slice(2);
237
- const existingHandler = (_a = element.__events) == null ? void 0 : _a[eventName];
238
- if (existingHandler) {
239
- element.removeEventListener(eventName, existingHandler);
240
- }
241
- element.addEventListener(eventName, value);
242
- if (!element.__events) {
243
- element.__events = {};
244
- }
245
- element.__events[eventName] = value;
246
- } else if (key === "style" && typeof value === "object") {
247
- Object.assign(element.style, value);
248
- } else if (key === "className") {
249
- element.setAttribute("class", String(value));
250
- } else if (key !== "key" && key !== "ref") {
251
- element.setAttribute(key, String(value));
252
- }
253
- }
254
- const children = props == null ? void 0 : props.children;
255
- if (children != null) {
256
- const childArray = Array.isArray(children) ? children.flat() : [children];
257
- for (const child of childArray) {
258
- const childNode = await createElement(child);
259
- element.appendChild(childNode);
260
- }
261
- }
262
- return element;
263
- }
264
- return document.createTextNode(String(vnode));
265
- }
266
- async function hydrate(element, container) {
267
- isHydrating = true;
268
- try {
269
- await render(element, container);
270
- } finally {
271
- isHydrating = false;
272
- }
273
- }
274
- async function render(element, container) {
275
- console.log("Rendering to:", container.id);
276
- batchUpdates(async () => {
277
- const rendererId = prepareRender();
278
- try {
279
- setRenderCallback(render, element, container);
280
- const domNode = await createElement(element);
281
- if (!isHydrating) {
282
- container.innerHTML = "";
283
- }
284
- container.appendChild(domNode);
285
- } finally {
286
- finishRender();
287
- }
288
- });
289
- }
290
- function renderToString(vnode) {
291
- prepareRender();
292
- const html = renderNodeToString(vnode);
293
- finishRender();
294
- return html;
295
- }
296
- function renderNodeToString(vnode) {
297
- var _a, _b, _c;
298
- if (vnode === null || vnode === void 0)
299
- return "";
300
- if (typeof vnode === "boolean")
301
- return "";
302
- if (typeof vnode === "number" || typeof vnode === "string")
303
- return escapeHtml(String(vnode));
304
- if (typeof vnode.type === "function") {
305
- const Component2 = vnode.type;
306
- const renderedNode = Component2(vnode.props || {});
307
- return renderNodeToString(renderedNode);
308
- }
309
- if (typeof vnode.type === "string") {
310
- const tag = vnode.type;
311
- let attrs = "";
312
- let children = "";
313
- if (vnode.props) {
314
- for (const [key, value] of Object.entries(vnode.props)) {
315
- if (key === "children")
316
- continue;
317
- if (key.startsWith("on"))
318
- continue;
319
- if (key === "className") {
320
- attrs += ` class="${escapeHtml(value)}"`;
321
- continue;
322
- }
323
- if (typeof value === "string" || typeof value === "number") {
324
- attrs += ` ${key}="${escapeHtml(String(value))}"`;
325
- } else if (value === true) {
326
- attrs += ` ${key}`;
327
- }
328
- }
329
- }
330
- const childrenArray = ((_a = vnode.props) == null ? void 0 : _a.children) ? Array.isArray(vnode.props.children) ? vnode.props.children : [vnode.props.children] : [];
331
- for (const child of childrenArray) {
332
- children += renderNodeToString(child);
333
- }
334
- const selfClosing = [
335
- "area",
336
- "base",
337
- "br",
338
- "col",
339
- "embed",
340
- "hr",
341
- "img",
342
- "input",
343
- "link",
344
- "meta",
345
- "param",
346
- "source",
347
- "track",
348
- "wbr"
349
- ];
350
- if (selfClosing.includes(tag)) {
351
- return `<${tag}${attrs}/>`;
352
- }
353
- return `<${tag}${attrs}>${children}</${tag}>`;
354
- }
355
- if (vnode.type === Symbol.for("react.fragment")) {
356
- let fragmentOutput = "";
357
- const children = Array.isArray((_b = vnode.props) == null ? void 0 : _b.children) ? vnode.props.children : ((_c = vnode.props) == null ? void 0 : _c.children) ? [vnode.props.children] : [];
358
- for (const child of children) {
359
- fragmentOutput += renderNodeToString(child);
360
- }
361
- return fragmentOutput;
362
- }
363
- console.warn("Unknown vnode type:", vnode.type);
364
- return "";
365
- }
366
- function escapeHtml(text) {
367
- return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
368
- }
369
- var isBatching, queue, currentRender, states, stateIndices, effects, memos, refs, globalRenderCallback, globalContainer, currentElement, isServer, serverStates, Fragment, isHydrating, server;
370
- var init_dist = __esm({
371
- "node_modules/frontend-hamroun/dist/index.mjs"() {
372
- isBatching = false;
373
- queue = [];
374
- currentRender = 0;
375
- states = /* @__PURE__ */ new Map();
376
- stateIndices = /* @__PURE__ */ new Map();
377
- effects = /* @__PURE__ */ new Map();
378
- memos = /* @__PURE__ */ new Map();
379
- refs = /* @__PURE__ */ new Map();
380
- globalRenderCallback = null;
381
- globalContainer = null;
382
- currentElement = null;
383
- isServer = typeof window === "undefined";
384
- serverStates = /* @__PURE__ */ new Map();
385
- Fragment = ({ children }) => children;
386
- isHydrating = false;
387
- server = {
388
- async getServer() {
389
- throw new Error("Server module can only be used in Node.js environment");
390
- }
391
- };
392
- }
393
- });
394
-
395
18
  // src/server/templates.ts
396
19
  var templates_exports = {};
397
20
  __export(templates_exports, {
@@ -415,38 +38,38 @@ function generateDocument(content, options = {}) {
415
38
  initialData = {},
416
39
  componentName = ""
417
40
  } = options;
418
- const htmlAttributes = Object.entries(htmlAttrs).map(([key, value]) => `${key}="${escapeHtml2(value)}"`).join(" ");
419
- const bodyAttributes = Object.entries(bodyAttrs).map(([key, value]) => `${key}="${escapeHtml2(value)}"`).join(" ");
41
+ const htmlAttributes = Object.entries(htmlAttrs).map(([key, value]) => `${key}="${escapeHtml(value)}"`).join(" ");
42
+ const bodyAttributes = Object.entries(bodyAttrs).map(([key, value]) => `${key}="${escapeHtml(value)}"`).join(" ");
420
43
  const metaTags = [
421
44
  `<meta charset="${charset}">`,
422
45
  `<meta name="viewport" content="${viewport}">`,
423
- description ? `<meta name="description" content="${escapeHtml2(description)}">` : ""
46
+ description ? `<meta name="description" content="${escapeHtml(description)}">` : ""
424
47
  ];
425
48
  Object.entries(meta).forEach(([name, content2]) => {
426
- metaTags.push(`<meta name="${escapeHtml2(name)}" content="${escapeHtml2(content2)}">`);
49
+ metaTags.push(`<meta name="${escapeHtml(name)}" content="${escapeHtml(content2)}">`);
427
50
  });
428
51
  const scriptTags = scripts.map((src) => {
429
52
  if (src.startsWith("<script")) {
430
53
  return src;
431
54
  }
432
- return `<script src="${escapeHtml2(src)}" ${src.endsWith(".js") ? 'type="module"' : ""} defer></script>`;
55
+ return `<script src="${escapeHtml(src)}" ${src.endsWith(".js") ? 'type="module"' : ""} defer></script>`;
433
56
  });
434
57
  const styleTags = styles.map((href) => {
435
58
  if (href.startsWith("<style")) {
436
59
  return href;
437
60
  }
438
- return `<link rel="stylesheet" href="${escapeHtml2(href)}">`;
61
+ return `<link rel="stylesheet" href="${escapeHtml(href)}">`;
439
62
  });
440
- const initialDataScript = Object.keys(initialData).length > 0 ? `<script id="__APP_DATA__" type="application/json">${escapeHtml2(JSON.stringify(initialData))}</script>` : "";
63
+ const initialDataScript = Object.keys(initialData).length > 0 ? `<script id="__APP_DATA__" type="application/json">${escapeHtml(JSON.stringify(initialData))}</script>` : "";
441
64
  return `<!DOCTYPE html>
442
65
  <html lang="${lang}" ${htmlAttributes}>
443
66
  <head>
444
67
  ${metaTags.filter(Boolean).join("\n ")}
445
- <title>${escapeHtml2(title)}</title>
68
+ <title>${escapeHtml(title)}</title>
446
69
  ${styleTags.join("\n ")}
447
70
  </head>
448
71
  <body class="${bodyClasses}" ${bodyAttributes}>
449
- <div id="app-root" data-ssr-root${componentName ? ` data-component="${escapeHtml2(componentName)}"` : ""}>${content}</div>
72
+ <div id="app-root" data-ssr-root${componentName ? ` data-component="${escapeHtml(componentName)}"` : ""}>${content}</div>
450
73
  ${initialDataScript}
451
74
  ${scriptTags.join("\n ")}
452
75
  </body>
@@ -464,14 +87,14 @@ function generateErrorPage(statusCode, message, error) {
464
87
  const isDev = process.env.NODE_ENV !== "production";
465
88
  const errorDetails = isDev && error ? `
466
89
  <div class="error-details">
467
- <pre>${escapeHtml2(error.stack || error.message)}</pre>
90
+ <pre>${escapeHtml(error.stack || error.message)}</pre>
468
91
  </div>
469
92
  ` : "";
470
93
  const content = `
471
94
  <div class="error-container">
472
95
  <h1>${statusCode}</h1>
473
- <h2>${escapeHtml2(errorMessages[statusCode] || "Error")}</h2>
474
- <p>${escapeHtml2(message)}</p>
96
+ <h2>${escapeHtml(errorMessages[statusCode] || "Error")}</h2>
97
+ <p>${escapeHtml(message)}</p>
475
98
  ${errorDetails}
476
99
  <a href="/" class="home-link">Back to Home</a>
477
100
  </div>
@@ -545,7 +168,7 @@ function generateLoadingPage(message = "Loading...") {
545
168
  const content = `
546
169
  <div class="loading-container">
547
170
  <div class="spinner"></div>
548
- <p>${escapeHtml2(message)}</p>
171
+ <p>${escapeHtml(message)}</p>
549
172
  </div>
550
173
  `;
551
174
  const styles = [`<style>
@@ -581,7 +204,7 @@ function generateLoadingPage(message = "Loading...") {
581
204
  styles
582
205
  });
583
206
  }
584
- function escapeHtml2(text) {
207
+ function escapeHtml(text) {
585
208
  return String(text).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
586
209
  }
587
210
  var init_templates = __esm({
@@ -1145,8 +768,8 @@ async function initNodeWasm() {
1145
768
  }
1146
769
  }
1147
770
  async function loadGoRuntime(goWasmPath) {
1148
- if (typeof globalThis.Go === "function") {
1149
- return globalThis.Go;
771
+ if (typeof global.Go === "function") {
772
+ return global.Go;
1150
773
  }
1151
774
  const possiblePaths = [
1152
775
  goWasmPath,
@@ -1175,13 +798,13 @@ async function loadGoRuntime(goWasmPath) {
1175
798
  continue;
1176
799
  }
1177
800
  const wasmExecUrl = pathToFileURL2(resolvedPath).href;
1178
- if (globalThis.Go) {
1179
- delete globalThis.Go;
801
+ if (global.Go) {
802
+ delete global.Go;
1180
803
  }
1181
804
  await import(wasmExecUrl);
1182
- if (typeof globalThis.Go === "function") {
805
+ if (typeof global.Go === "function") {
1183
806
  console.log(`[WASM] Loaded Go runtime from: ${resolvedPath}`);
1184
- return globalThis.Go;
807
+ return global.Go;
1185
808
  } else {
1186
809
  console.warn(`[WASM] File found but Go class not exported: ${resolvedPath}`);
1187
810
  }
@@ -1233,7 +856,7 @@ async function loadGoWasmFromFile(wasmFilePath, options = {}) {
1233
856
  console.log("[WASM] Scanning global object for Go functions...");
1234
857
  }
1235
858
  const functions = {};
1236
- const globalObj = globalThis;
859
+ const globalObj = global;
1237
860
  const allKeys = Object.getOwnPropertyNames(globalObj);
1238
861
  const goKeys = allKeys.filter((key) => key.startsWith("go"));
1239
862
  if (options.debug) {
@@ -1319,6 +942,7 @@ __export(server_exports, {
1319
942
  });
1320
943
  import path4 from "path";
1321
944
  import fs4 from "fs";
945
+ import { renderToString } from "frontend-hamroun";
1322
946
  function getComponentName(filePath, pagesDir) {
1323
947
  try {
1324
948
  const relativePath = path4.relative(pagesDir, filePath);
@@ -1342,13 +966,13 @@ function createDevServer(options = {}) {
1342
966
  });
1343
967
  }
1344
968
  function createProductionServer(config) {
1345
- const server2 = new Server({
969
+ const server = new Server({
1346
970
  ...config,
1347
971
  // Fix the PORT parsing
1348
972
  port: config.port || (process.env.PORT ? parseInt(process.env.PORT) : 8080)
1349
973
  });
1350
- server2.addShutdownHandler();
1351
- return server2;
974
+ server.addShutdownHandler();
975
+ return server;
1352
976
  }
1353
977
  function getRequestIp(req) {
1354
978
  return req.ip || req.headers["x-forwarded-for"]?.split(",")[0].trim() || req.socket.remoteAddress || "";
@@ -1368,7 +992,6 @@ var Server, renderComponent, server_default;
1368
992
  var init_server = __esm({
1369
993
  "src/server/index.ts"() {
1370
994
  "use strict";
1371
- init_dist();
1372
995
  init_database();
1373
996
  init_auth();
1374
997
  init_api_router();
@@ -1695,9 +1318,11 @@ var init_server = __esm({
1695
1318
  process.on("SIGINT", gracefulShutdown);
1696
1319
  }
1697
1320
  };
1698
- renderComponent = (Component, props = {}) => {
1321
+ renderComponent = async (Component, props = {}) => {
1699
1322
  try {
1700
- const html = renderToString(Component(props));
1323
+ const { jsx, renderToString: renderToString3 } = await import("frontend-hamroun");
1324
+ const element = jsx(Component, props);
1325
+ const html = renderToString3(element);
1701
1326
  return {
1702
1327
  html: typeof html === "string" ? html : String(html),
1703
1328
  success: true
@@ -1705,7 +1330,7 @@ var init_server = __esm({
1705
1330
  } catch (error) {
1706
1331
  console.error("Error rendering component:", error);
1707
1332
  return {
1708
- html: `<div class="error">Error rendering component</div>`,
1333
+ html: `<div class="error">Error rendering component: ${error instanceof Error ? error.message : "Unknown error"}</div>`,
1709
1334
  success: false,
1710
1335
  error
1711
1336
  };
@@ -1770,7 +1395,7 @@ var init_server_renderer = __esm({
1770
1395
  });
1771
1396
 
1772
1397
  // src/index.ts
1773
- init_dist();
1398
+ export * from "frontend-hamroun";
1774
1399
 
1775
1400
  // src/wasm.ts
1776
1401
  async function loadGoWasm(wasmUrl, options = {}) {
@@ -1960,11 +1585,8 @@ export {
1960
1585
  AuthService2 as AuthService,
1961
1586
  BaraqexServer,
1962
1587
  Database2 as Database,
1963
- Fragment,
1964
1588
  baraqexRenderToString,
1965
- batchUpdates,
1966
1589
  callWasmFunction,
1967
- createContext,
1968
1590
  createDevServer2 as createDevServer,
1969
1591
  createProductionServer2 as createProductionServer,
1970
1592
  createServer2 as createServer,
@@ -1978,32 +1600,20 @@ export {
1978
1600
  getPagination2 as getPagination,
1979
1601
  getWasmFunctions,
1980
1602
  hashString2 as hashString,
1981
- hydrate,
1982
1603
  initNodeWasm3 as initNodeWasm,
1983
1604
  isDirectoryEmpty2 as isDirectoryEmpty,
1984
1605
  isWasmReady,
1985
- jsx,
1986
- jsx as jsxs,
1987
1606
  loadGoWasm,
1988
1607
  loadGoWasmFromFile2 as loadGoWasmFromFile,
1989
1608
  notFoundHandler2 as notFoundHandler,
1990
1609
  rateLimit2 as rateLimit,
1991
1610
  readJsonFile2 as readJsonFile,
1992
- render,
1993
1611
  renderComponent2 as renderComponent,
1994
- renderToString,
1995
1612
  requestLogger2 as requestLogger,
1996
1613
  safeJsonParse2 as safeJsonParse,
1997
1614
  sendError2 as sendError,
1998
1615
  sendSuccess2 as sendSuccess,
1999
- server,
2000
- useContext,
2001
- useEffect,
2002
- useErrorBoundary,
2003
1616
  useGoWasm,
2004
- useMemo,
2005
- useRef,
2006
- useState,
2007
1617
  validateFields2 as validateFields,
2008
1618
  validateFileUpload2 as validateFileUpload,
2009
1619
  writeJsonFile2 as writeJsonFile