baraqex 1.0.64 → 1.0.65

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 (98) hide show
  1. package/bin/baraqex.js +1013 -1126
  2. package/dist/api/hello.d.ts +3 -0
  3. package/dist/api/hello.d.ts.map +1 -0
  4. package/dist/api/users/[id].d.ts +5 -0
  5. package/dist/api/users/[id].d.ts.map +1 -0
  6. package/dist/browser.d.ts +40 -0
  7. package/dist/browser.d.ts.map +1 -0
  8. package/dist/browser.js +407 -1
  9. package/dist/browser.js.map +4 -4
  10. package/dist/browser.package.json +4 -0
  11. package/dist/forms/index.d.ts +2 -0
  12. package/dist/forms/index.d.ts.map +1 -0
  13. package/dist/forms/types.d.ts +2 -0
  14. package/dist/forms/types.d.ts.map +1 -0
  15. package/dist/frontend/components/WasmLoader.d.ts +2 -0
  16. package/dist/frontend/components/WasmLoader.d.ts.map +1 -0
  17. package/dist/frontend/hooks/useWasm.d.ts +2 -0
  18. package/dist/frontend/hooks/useWasm.d.ts.map +1 -0
  19. package/dist/frontend/index.d.ts +2 -0
  20. package/dist/frontend/index.d.ts.map +1 -0
  21. package/dist/index.d.ts +38 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +678 -317
  24. package/dist/index.js.map +4 -4
  25. package/dist/renderComponent.d.ts +9 -0
  26. package/dist/renderComponent.d.ts.map +1 -0
  27. package/dist/router/index.d.ts +2 -0
  28. package/dist/router/index.d.ts.map +1 -0
  29. package/dist/router/types.d.ts +2 -0
  30. package/dist/router/types.d.ts.map +1 -0
  31. package/dist/server/api-router.d.ts +16 -0
  32. package/dist/server/api-router.d.ts.map +1 -0
  33. package/dist/server/auth.d.ts +25 -0
  34. package/dist/server/auth.d.ts.map +1 -0
  35. package/dist/server/database.d.ts +22 -0
  36. package/dist/server/database.d.ts.map +1 -0
  37. package/dist/server/index.d.ts +116 -0
  38. package/dist/server/index.d.ts.map +1 -0
  39. package/dist/{server.js → server/index.js} +120 -23
  40. package/dist/server/index.js.map +7 -0
  41. package/dist/server/middleware.d.ts +11 -0
  42. package/dist/server/middleware.d.ts.map +1 -0
  43. package/dist/server/package.json +4 -0
  44. package/dist/server/templates.d.ts +31 -0
  45. package/dist/server/templates.d.ts.map +1 -0
  46. package/dist/server/types.d.ts +69 -0
  47. package/dist/server/types.d.ts.map +1 -0
  48. package/dist/server/utils.d.ts +70 -0
  49. package/dist/server/utils.d.ts.map +1 -0
  50. package/dist/server/wasm.d.ts +29 -0
  51. package/dist/server/wasm.d.ts.map +1 -0
  52. package/dist/server-renderer.d.ts +5 -0
  53. package/dist/server-renderer.d.ts.map +1 -0
  54. package/dist/store/index.d.ts +2 -0
  55. package/dist/store/index.d.ts.map +1 -0
  56. package/dist/store/types.d.ts +2 -0
  57. package/dist/store/types.d.ts.map +1 -0
  58. package/dist/wasm.d.ts +51 -0
  59. package/dist/wasm.d.ts.map +1 -0
  60. package/package.json +65 -56
  61. package/templates/basic-app/src/main.tsx +1 -0
  62. package/templates/fullstack-template/.env.example +42 -0
  63. package/templates/fullstack-template/README.md +38 -42
  64. package/templates/fullstack-template/package-lock.json +7932 -0
  65. package/templates/fullstack-template/package.json +58 -6
  66. package/templates/fullstack-template/server.js +28 -9
  67. package/templates/fullstack-template/src/App.tsx +94 -0
  68. package/templates/fullstack-template/src/api/auth/login.ts +75 -0
  69. package/templates/fullstack-template/src/api/auth/me.ts +66 -0
  70. package/templates/fullstack-template/src/api/auth/register.ts +59 -0
  71. package/templates/fullstack-template/src/api/todos/[id].ts +108 -0
  72. package/templates/fullstack-template/src/api/todos/index.ts +79 -0
  73. package/templates/fullstack-template/src/components/Dashboard.tsx +129 -0
  74. package/templates/fullstack-template/src/components/Header.tsx +76 -0
  75. package/templates/fullstack-template/src/contexts/ApiContext.tsx +69 -0
  76. package/templates/fullstack-template/src/contexts/AuthContext.tsx +155 -0
  77. package/templates/fullstack-template/src/server.ts +167 -0
  78. package/templates/fullstack-template/src/styles/App.css +446 -0
  79. package/templates/ssr-template/package-lock.json +38 -60
  80. package/templates/ssr-template/package.json +1 -1
  81. package/templates/ssr-template/src/App.tsx +4 -3
  82. package/templates/ssr-template/src/client.tsx +2 -1
  83. package/templates/wasm/App.tsx +564 -0
  84. package/templates/wasm/client.tsx +220 -0
  85. package/templates/wasm/index.tsx +21 -0
  86. package/templates/wasm/package-lock.json +5347 -5307
  87. package/templates/wasm/package.json +43 -25
  88. package/templates/wasm/public/example.wasm +0 -0
  89. package/templates/wasm/public/wasm_exec.js +1 -12
  90. package/templates/wasm/server.ts +145 -0
  91. package/templates/wasm/vite.config.ts +42 -24
  92. package/README_WASM.md +0 -472
  93. package/dist/server.js.map +0 -7
  94. package/templates/basic-app/src/App.jsx +0 -0
  95. package/templates/basic-app/src/App.tsx +0 -0
  96. package/templates/fullstack-template/src/api/hello.js +0 -17
  97. package/templates/fullstack-template/src/pages/index.js +0 -206
  98. /package/templates/{basic-app/server.js → wasm/go/wasm_exec.js} +0 -0
@@ -0,0 +1,220 @@
1
+ import { jsx, render } from 'frontend-hamroun';
2
+ import { loadGoWasm } from '../wasm-loader.js';
3
+
4
+ // WASM Demo Component
5
+ function WasmDemo() {
6
+ const [wasmReady, setWasmReady] = useState(false);
7
+ const [result, setResult] = useState('');
8
+ const [input1, setInput1] = useState('5');
9
+ const [input2, setInput2] = useState('3');
10
+ const [fibInput, setFibInput] = useState('10');
11
+
12
+ useEffect(() => {
13
+ loadWasm();
14
+ }, []);
15
+
16
+ const loadWasm = async () => {
17
+ try {
18
+ await loadGoWasm('/example.wasm');
19
+ setWasmReady(true);
20
+ setResult('✅ Go WASM module loaded successfully!');
21
+ } catch (error) {
22
+ setResult(`❌ Failed to load WASM: ${error.message}`);
23
+ }
24
+ };
25
+
26
+ const testAdd = () => {
27
+ if (!wasmReady) return;
28
+ try {
29
+ const num1 = parseFloat(input1);
30
+ const num2 = parseFloat(input2);
31
+ const result = (window as any).add(num1, num2);
32
+ setResult(`Add result: ${num1} + ${num2} = ${result}`);
33
+ } catch (error) {
34
+ setResult(`Error: ${error.message}`);
35
+ }
36
+ };
37
+
38
+ const testFibonacci = () => {
39
+ if (!wasmReady) return;
40
+ try {
41
+ const n = parseInt(fibInput);
42
+ const result = (window as any).fibonacci(n);
43
+ setResult(`Fibonacci(${n}) = ${result}`);
44
+ } catch (error) {
45
+ setResult(`Error: ${error.message}`);
46
+ }
47
+ };
48
+
49
+ const testProcessArray = () => {
50
+ if (!wasmReady) return;
51
+ try {
52
+ const testArray = [1, 2, 3, 4, 5];
53
+ const result = (window as any).processArray(testArray);
54
+ const resultArray = Array.from(result);
55
+ setResult(`Process array [${testArray.join(', ')}] = [${resultArray.join(', ')}]`);
56
+ } catch (error) {
57
+ setResult(`Error: ${error.message}`);
58
+ }
59
+ };
60
+
61
+ const testFormatMessage = () => {
62
+ if (!wasmReady) return;
63
+ try {
64
+ const message = 'Hello from JavaScript!';
65
+ const result = (window as any).formatMessage(message);
66
+ setResult(`Formatted: ${result}`);
67
+ } catch (error) {
68
+ setResult(`Error: ${error.message}`);
69
+ }
70
+ };
71
+
72
+ const testPerformance = () => {
73
+ if (!wasmReady) return;
74
+ try {
75
+ const iterations = 100000;
76
+ const startTime = performance.now();
77
+ const result = (window as any).performanceBenchmark(iterations);
78
+ const endTime = performance.now();
79
+
80
+ setResult(
81
+ `Performance test: ${result.message}\n` +
82
+ `Result: ${result.result}\n` +
83
+ `Time: ${(endTime - startTime).toFixed(2)}ms`
84
+ );
85
+ } catch (error) {
86
+ setResult(`Error: ${error.message}`);
87
+ }
88
+ };
89
+
90
+ const testTypeDemo = () => {
91
+ if (!wasmReady) return;
92
+ try {
93
+ const result = (window as any).typeDemo();
94
+ setResult(
95
+ `Type demo results:\n` +
96
+ `String: ${result.string}\n` +
97
+ `Number: ${result.number}\n` +
98
+ `Boolean: ${result.boolean}\n` +
99
+ `Array: [${Array.from(result.array).join(', ')}]`
100
+ );
101
+ } catch (error) {
102
+ setResult(`Error: ${error.message}`);
103
+ }
104
+ };
105
+
106
+ return jsx('div', {
107
+ className: 'wasm-demo',
108
+ children: [
109
+ jsx('h1', { children: '🚀 Frontend Hamroun + Go WASM Demo' }),
110
+
111
+ jsx('div', {
112
+ className: 'status',
113
+ children: jsx('p', {
114
+ className: wasmReady ? 'ready' : 'loading',
115
+ children: wasmReady ? '✅ WASM Ready' : '⏳ Loading WASM...'
116
+ })
117
+ }),
118
+
119
+ jsx('div', {
120
+ className: 'controls',
121
+ children: [
122
+ jsx('h2', { children: '🧮 Arithmetic Operations' }),
123
+ jsx('div', {
124
+ className: 'input-group',
125
+ children: [
126
+ jsx('input', {
127
+ type: 'number',
128
+ value: input1,
129
+ onChange: (e: any) => setInput1(e.target.value),
130
+ placeholder: 'First number'
131
+ }),
132
+ jsx('span', { children: ' + ' }),
133
+ jsx('input', {
134
+ type: 'number',
135
+ value: input2,
136
+ onChange: (e: any) => setInput2(e.target.value),
137
+ placeholder: 'Second number'
138
+ }),
139
+ jsx('button', {
140
+ onClick: testAdd,
141
+ disabled: !wasmReady,
142
+ children: 'Calculate'
143
+ })
144
+ ]
145
+ }),
146
+
147
+ jsx('h2', { children: '🔢 Fibonacci Sequence' }),
148
+ jsx('div', {
149
+ className: 'input-group',
150
+ children: [
151
+ jsx('input', {
152
+ type: 'number',
153
+ value: fibInput,
154
+ onChange: (e: any) => setFibInput(e.target.value),
155
+ placeholder: 'Fibonacci number'
156
+ }),
157
+ jsx('button', {
158
+ onClick: testFibonacci,
159
+ disabled: !wasmReady,
160
+ children: 'Calculate Fibonacci'
161
+ })
162
+ ]
163
+ }),
164
+
165
+ jsx('h2', { children: '🔧 Advanced Functions' }),
166
+ jsx('div', {
167
+ className: 'button-group',
168
+ children: [
169
+ jsx('button', {
170
+ onClick: testProcessArray,
171
+ disabled: !wasmReady,
172
+ children: 'Process Array'
173
+ }),
174
+ jsx('button', {
175
+ onClick: testFormatMessage,
176
+ disabled: !wasmReady,
177
+ children: 'Format Message'
178
+ }),
179
+ jsx('button', {
180
+ onClick: testPerformance,
181
+ disabled: !wasmReady,
182
+ children: 'Performance Test'
183
+ }),
184
+ jsx('button', {
185
+ onClick: testTypeDemo,
186
+ disabled: !wasmReady,
187
+ children: 'Type Demo'
188
+ })
189
+ ]
190
+ })
191
+ ]
192
+ }),
193
+
194
+ jsx('div', {
195
+ className: 'result',
196
+ children: [
197
+ jsx('h3', { children: '📋 Result:' }),
198
+ jsx('pre', { children: result })
199
+ ]
200
+ })
201
+ ]
202
+ });
203
+ }
204
+
205
+ // App Component
206
+ function App() {
207
+ return jsx('div', {
208
+ className: 'app',
209
+ children: jsx(WasmDemo, {})
210
+ });
211
+ }
212
+
213
+ // Render the app
214
+ const appElement = document.getElementById('app');
215
+ if (appElement) {
216
+ render(jsx(App, {}), appElement);
217
+ }
218
+
219
+ // Import statements for hooks
220
+ import { useState, useEffect } from 'frontend-hamroun';
@@ -0,0 +1,21 @@
1
+ import { jsx, render } from 'frontend-hamroun';
2
+ import App from './App.tsx';
3
+
4
+ // Simple render without infinite loops
5
+ function startApp() {
6
+ const appElement = jsx(App, {});
7
+ const rootElement = document.getElementById('app');
8
+
9
+ if (rootElement) {
10
+ render(appElement, rootElement);
11
+ } else {
12
+ console.error('Root element not found');
13
+ }
14
+ }
15
+
16
+ // Start when DOM is ready
17
+ if (document.readyState === 'loading') {
18
+ document.addEventListener('DOMContentLoaded', startApp);
19
+ } else {
20
+ startApp();
21
+ }