frontend-hamroun 1.2.77 → 1.2.79

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 (72) hide show
  1. package/dist/batch/package.json +1 -1
  2. package/dist/client-router/package.json +1 -1
  3. package/dist/component/package.json +1 -1
  4. package/dist/context/package.json +1 -1
  5. package/dist/event-bus/package.json +1 -1
  6. package/dist/forms/package.json +1 -1
  7. package/dist/hooks/package.json +1 -1
  8. package/dist/index.mjs +1 -0
  9. package/dist/jsx-runtime/package.json +1 -1
  10. package/dist/lifecycle-events/package.json +1 -1
  11. package/dist/package.json +1 -1
  12. package/dist/render-component/package.json +1 -1
  13. package/dist/renderer/package.json +1 -1
  14. package/dist/router/package.json +1 -1
  15. package/dist/server/package.json +1 -1
  16. package/dist/server/src/index.js +24 -23
  17. package/dist/server/src/index.js.map +1 -1
  18. package/dist/server/src/renderComponent.d.ts +8 -9
  19. package/dist/server/src/renderComponent.js +10 -5
  20. package/dist/server/src/renderComponent.js.map +1 -1
  21. package/dist/server/src/server/index.d.ts +23 -34
  22. package/dist/server/src/server/index.js +170 -50
  23. package/dist/server/src/server/index.js.map +1 -1
  24. package/dist/server/src/server/templates.d.ts +2 -0
  25. package/dist/server/src/server/templates.js +9 -5
  26. package/dist/server/src/server/templates.js.map +1 -1
  27. package/dist/server/src/server/utils.d.ts +1 -1
  28. package/dist/server/src/server/utils.js +1 -1
  29. package/dist/server/src/server/utils.js.map +1 -1
  30. package/dist/server/tsconfig.server.tsbuildinfo +1 -1
  31. package/dist/server-renderer/package.json +1 -1
  32. package/dist/store/package.json +1 -1
  33. package/dist/types/package.json +1 -1
  34. package/dist/utils/package.json +1 -1
  35. package/dist/vdom/package.json +1 -1
  36. package/dist/wasm/package.json +1 -1
  37. package/package.json +1 -1
  38. package/templates/complete-app/client.js +58 -0
  39. package/templates/complete-app/package-lock.json +2536 -0
  40. package/templates/complete-app/package.json +8 -31
  41. package/templates/complete-app/pages/about.js +119 -0
  42. package/templates/complete-app/pages/index.js +157 -0
  43. package/templates/complete-app/pages/wasm-demo.js +290 -0
  44. package/templates/complete-app/public/client.js +80 -0
  45. package/templates/complete-app/public/index.html +47 -0
  46. package/templates/complete-app/public/styles.css +446 -212
  47. package/templates/complete-app/readme.md +188 -0
  48. package/templates/complete-app/server.js +417 -0
  49. package/templates/complete-app/server.ts +275 -0
  50. package/templates/complete-app/src/App.tsx +59 -0
  51. package/templates/complete-app/src/client.ts +61 -0
  52. package/templates/complete-app/src/client.tsx +18 -0
  53. package/templates/complete-app/src/pages/index.tsx +51 -0
  54. package/templates/complete-app/src/server.ts +218 -0
  55. package/templates/complete-app/tsconfig.json +22 -0
  56. package/templates/complete-app/tsconfig.server.json +19 -0
  57. package/templates/complete-app/vite.config.js +57 -0
  58. package/templates/complete-app/vite.config.ts +30 -0
  59. package/templates/go/example.go +154 -99
  60. package/templates/complete-app/build.js +0 -284
  61. package/templates/complete-app/src/api/index.js +0 -31
  62. package/templates/complete-app/src/client.js +0 -93
  63. package/templates/complete-app/src/components/App.js +0 -66
  64. package/templates/complete-app/src/components/Footer.js +0 -19
  65. package/templates/complete-app/src/components/Header.js +0 -38
  66. package/templates/complete-app/src/pages/About.js +0 -59
  67. package/templates/complete-app/src/pages/Home.js +0 -54
  68. package/templates/complete-app/src/pages/WasmDemo.js +0 -136
  69. package/templates/complete-app/src/server.js +0 -186
  70. package/templates/complete-app/src/wasm/build.bat +0 -16
  71. package/templates/complete-app/src/wasm/build.sh +0 -16
  72. package/templates/complete-app/src/wasm/example.go +0 -101
@@ -0,0 +1,80 @@
1
+ import { hydrate, jsx, useState, useEffect, useMemo, useRef, useContext, batchUpdates, createContext } from 'frontend-hamroun';
2
+
3
+ // Immediately invoked function to handle hydration
4
+ (async function() {
5
+ try {
6
+ // Get the app container
7
+ const appRoot = document.getElementById('app');
8
+ if (!appRoot) {
9
+ console.error('App root element not found');
10
+ return;
11
+ }
12
+
13
+ // Get initial data from the server
14
+ let initialData = {};
15
+ try {
16
+ const dataElement = document.getElementById('__APP_DATA__');
17
+ if (dataElement && dataElement.textContent) {
18
+ initialData = JSON.parse(dataElement.textContent);
19
+ console.log('Initial data loaded:', initialData);
20
+ }
21
+ } catch (err) {
22
+ console.error('Error parsing initial data:', err);
23
+ }
24
+
25
+ // Path for component loading
26
+ const path = initialData.path || window.location.pathname;
27
+ const normalizedPath = path === '/' ? '/index' : path;
28
+
29
+ try {
30
+ // Import the component for the current path
31
+ console.log(`Importing component for path: ${normalizedPath}`);
32
+ // First attempt to load the page component
33
+ const module = await import(`/pages${normalizedPath}.js`).catch(() =>
34
+ import(`/pages${normalizedPath}/index.js`));
35
+
36
+ if (!module || !module.default) {
37
+ throw new Error(`No default export found for ${normalizedPath}`);
38
+ }
39
+
40
+ // Get the component
41
+ const PageComponent = module.default;
42
+
43
+ // Use batchUpdates for better performance during hydration
44
+ batchUpdates(() => {
45
+ console.log('Hydrating app with props:', initialData);
46
+ // Hydrate the component
47
+ hydrate(jsx(PageComponent, initialData), appRoot);
48
+ console.log('Hydration complete for', normalizedPath);
49
+ });
50
+
51
+ } catch (err) {
52
+ console.error(`Error loading or hydrating component: ${err.message}`);
53
+
54
+ // Fallback to a simple component that shows the error
55
+ const ErrorComponent = (props) => {
56
+ const [showDetails, setShowDetails] = useState(false);
57
+
58
+ return jsx('div', { className: 'error-container' }, [
59
+ jsx('h1', {}, 'Error Loading Page'),
60
+ jsx('p', {}, `Failed to load: ${normalizedPath}`),
61
+ jsx('button', {
62
+ onClick: () => setShowDetails(!showDetails),
63
+ className: 'btn'
64
+ }, showDetails ? 'Hide Details' : 'Show Details'),
65
+ showDetails && jsx('pre', { className: 'error-details' },
66
+ `${err.message}\n${err.stack || ''}`
67
+ ),
68
+ jsx('a', { href: '/', className: 'button' }, 'Go Home')
69
+ ]);
70
+ };
71
+
72
+ hydrate(jsx(ErrorComponent, initialData), appRoot);
73
+ }
74
+ } catch (err) {
75
+ console.error('Hydration failed:', err);
76
+ }
77
+ })();
78
+
79
+ // Make jsx globally available
80
+ window.jsx = jsx;
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Static Fallback</title>
7
+ <!-- Import Tailwind-like styles for quick styling -->
8
+ <link href="https://cdn.jsdelivr.net/npm/daisyui@3.7.4/dist/full.css" rel="stylesheet" type="text/css" />
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <!-- Client-side script for hydration -->
11
+ <script type="module" src="/src/client.tsx"></script>
12
+ <style>
13
+ body {
14
+ font-family: sans-serif;
15
+ max-width: 800px;
16
+ margin: 0 auto;
17
+ padding: 2rem;
18
+ line-height: 1.6;
19
+ }
20
+ .warning {
21
+ background-color: #fff3cd;
22
+ border: 1px solid #ffecb5;
23
+ color: #856404;
24
+ padding: 1rem;
25
+ border-radius: 4px;
26
+ margin-bottom: 1rem;
27
+ }
28
+ code {
29
+ background-color: #f5f5f5;
30
+ padding: 0.2rem 0.4rem;
31
+ border-radius: 3px;
32
+ }
33
+ </style>
34
+ </head>
35
+ <body>
36
+ <!-- App will be rendered here by SSR -->
37
+ <div id="app">
38
+ <div class="warning">
39
+ <h2>STATIC INDEX.HTML FILE</h2>
40
+ <p>You should NOT be seeing this page if the server is running correctly.</p>
41
+ <p>This is a static file that should only be used as a fallback when the server is not running.</p>
42
+ <p>If you're seeing this while running <code>npm run dev</code>, there's likely an issue with the Express route handling.</p>
43
+ <p>Try clearing your browser cache and refreshing the page.</p>
44
+ </div>
45
+ </div>
46
+ </body>
47
+ </html>