frontend-hamroun 1.2.84 → 1.2.85

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 (215) hide show
  1. package/package.json +1 -1
  2. package/templates/basic-app/build.d.ts +2 -0
  3. package/templates/basic-app/build.d.ts.map +1 -0
  4. package/templates/basic-app/dev.d.ts +2 -0
  5. package/templates/basic-app/dev.d.ts.map +1 -0
  6. package/templates/basic-app/esbuild.config.d.ts +2 -0
  7. package/templates/basic-app/esbuild.config.d.ts.map +1 -0
  8. package/templates/basic-app/postcss.config.d.ts +8 -0
  9. package/templates/basic-app/postcss.config.d.ts.map +1 -0
  10. package/templates/basic-app/server.d.ts +2 -0
  11. package/templates/basic-app/server.d.ts.map +1 -0
  12. package/templates/basic-app/src/App.d.ts +2 -0
  13. package/templates/basic-app/src/App.d.ts.map +1 -0
  14. package/templates/basic-app/src/App.js +148 -0
  15. package/templates/basic-app/src/client.d.ts +2 -0
  16. package/templates/basic-app/src/client.d.ts.map +1 -0
  17. package/templates/basic-app/src/client.js +6 -0
  18. package/templates/basic-app/src/components/Counter.d.ts +4 -0
  19. package/templates/basic-app/src/components/Counter.d.ts.map +1 -0
  20. package/templates/basic-app/src/components/Counter.js +9 -0
  21. package/templates/basic-app/src/jsx-shim.d.ts +8 -0
  22. package/templates/basic-app/src/jsx-shim.d.ts.map +1 -0
  23. package/templates/basic-app/src/main.d.ts +2 -0
  24. package/templates/basic-app/src/main.d.ts.map +1 -0
  25. package/templates/basic-app/src/main.js +57 -0
  26. package/templates/basic-app/src/server.d.ts +2 -0
  27. package/templates/basic-app/src/server.d.ts.map +1 -0
  28. package/templates/basic-app/tailwind.config.d.ts +9 -0
  29. package/templates/basic-app/tailwind.config.d.ts.map +1 -0
  30. package/templates/basic-app/vite.config.d.ts +3 -0
  31. package/templates/basic-app/vite.config.d.ts.map +1 -0
  32. package/templates/basic-app/vite.config.js +7 -0
  33. package/templates/complete-app/api/hello.d.ts +1 -0
  34. package/templates/complete-app/api/hello.d.ts.map +1 -0
  35. package/templates/complete-app/client.d.ts +2 -0
  36. package/templates/complete-app/client.d.ts.map +1 -0
  37. package/templates/complete-app/lib/frontend-hamroun.d.ts +18 -0
  38. package/templates/complete-app/lib/frontend-hamroun.d.ts.map +1 -0
  39. package/templates/complete-app/pages/about.d.ts +7 -0
  40. package/templates/complete-app/pages/about.d.ts.map +1 -0
  41. package/templates/complete-app/pages/index.d.ts +7 -0
  42. package/templates/complete-app/pages/index.d.ts.map +1 -0
  43. package/templates/complete-app/pages/wasm-demo.d.ts +7 -0
  44. package/templates/complete-app/pages/wasm-demo.d.ts.map +1 -0
  45. package/templates/complete-app/public/client.d.ts +17 -0
  46. package/templates/complete-app/public/client.d.ts.map +1 -0
  47. package/templates/complete-app/server.d.ts +2 -0
  48. package/templates/complete-app/server.d.ts.map +1 -0
  49. package/templates/complete-app/server.js +236 -218
  50. package/templates/complete-app/src/App.d.ts +2 -0
  51. package/templates/complete-app/src/App.d.ts.map +1 -0
  52. package/templates/complete-app/src/App.js +27 -0
  53. package/templates/complete-app/src/client.d.ts +2 -0
  54. package/templates/complete-app/src/client.d.ts.map +1 -0
  55. package/templates/complete-app/src/client.js +52 -0
  56. package/templates/complete-app/src/pages/index.d.ts +2 -0
  57. package/templates/complete-app/src/pages/index.d.ts.map +1 -0
  58. package/templates/complete-app/src/pages/index.js +19 -0
  59. package/templates/complete-app/src/server.d.ts +2 -0
  60. package/templates/complete-app/src/server.d.ts.map +1 -0
  61. package/templates/complete-app/src/server.js +192 -0
  62. package/templates/complete-app/vite.config.d.ts +3 -0
  63. package/templates/complete-app/vite.config.d.ts.map +1 -0
  64. package/templates/complete-app/vite.config.js +29 -57
  65. package/templates/fullstack-app/api/hello.d.ts +4 -0
  66. package/templates/fullstack-app/api/hello.d.ts.map +1 -0
  67. package/templates/fullstack-app/api/hello.js +14 -11
  68. package/templates/fullstack-app/api/users/[id].d.ts +5 -0
  69. package/templates/fullstack-app/api/users/[id].d.ts.map +1 -0
  70. package/templates/fullstack-app/api/users/[id].js +52 -0
  71. package/templates/fullstack-app/api/users/index.d.ts +4 -0
  72. package/templates/fullstack-app/api/users/index.d.ts.map +1 -0
  73. package/templates/fullstack-app/api/users/index.js +25 -0
  74. package/templates/fullstack-app/build/main.d.ts +211 -0
  75. package/templates/fullstack-app/build/main.d.ts.map +1 -0
  76. package/templates/fullstack-app/build.d.ts +2 -0
  77. package/templates/fullstack-app/build.d.ts.map +1 -0
  78. package/templates/fullstack-app/build.js +190 -0
  79. package/templates/fullstack-app/postcss.config.d.ts +5 -0
  80. package/templates/fullstack-app/postcss.config.d.ts.map +1 -0
  81. package/templates/fullstack-app/process-tailwind.d.ts +2 -0
  82. package/templates/fullstack-app/process-tailwind.d.ts.map +1 -0
  83. package/templates/fullstack-app/public/route-handler.d.ts +1 -0
  84. package/templates/fullstack-app/public/route-handler.d.ts.map +1 -0
  85. package/templates/fullstack-app/server.d.ts +2 -0
  86. package/templates/fullstack-app/server.d.ts.map +1 -0
  87. package/templates/fullstack-app/server.js +428 -266
  88. package/templates/fullstack-app/src/client.d.ts +2 -0
  89. package/templates/fullstack-app/src/client.d.ts.map +1 -0
  90. package/templates/fullstack-app/src/components/ClientHome.d.ts +1 -0
  91. package/templates/fullstack-app/src/components/ClientHome.d.ts.map +1 -0
  92. package/templates/fullstack-app/src/components/ClientHome.js +1 -0
  93. package/templates/fullstack-app/src/components/ErrorBoundary.d.ts +7 -0
  94. package/templates/fullstack-app/src/components/ErrorBoundary.d.ts.map +1 -0
  95. package/templates/fullstack-app/src/components/ErrorBoundary.js +12 -0
  96. package/templates/fullstack-app/src/components/Layout.d.ts +7 -0
  97. package/templates/fullstack-app/src/components/Layout.d.ts.map +1 -0
  98. package/templates/fullstack-app/src/components/Layout.js +4 -0
  99. package/templates/fullstack-app/src/components/StateDemo.d.ts +2 -0
  100. package/templates/fullstack-app/src/components/StateDemo.d.ts.map +1 -0
  101. package/templates/fullstack-app/src/components/StateDemo.js +86 -0
  102. package/templates/fullstack-app/src/components/UserList.d.ts +11 -0
  103. package/templates/fullstack-app/src/components/UserList.d.ts.map +1 -0
  104. package/templates/fullstack-app/src/components/UserList.js +7 -0
  105. package/templates/fullstack-app/src/config.d.ts +29 -0
  106. package/templates/fullstack-app/src/config.d.ts.map +1 -0
  107. package/templates/fullstack-app/src/config.js +36 -0
  108. package/templates/fullstack-app/src/data/api.d.ts +35 -0
  109. package/templates/fullstack-app/src/data/api.d.ts.map +1 -0
  110. package/templates/fullstack-app/src/data/api.js +173 -0
  111. package/templates/fullstack-app/src/main.d.ts +7 -0
  112. package/templates/fullstack-app/src/main.d.ts.map +1 -0
  113. package/templates/fullstack-app/src/main.js +130 -0
  114. package/templates/fullstack-app/src/middleware.d.ts +10 -0
  115. package/templates/fullstack-app/src/middleware.d.ts.map +1 -0
  116. package/templates/fullstack-app/src/middleware.js +14 -0
  117. package/templates/fullstack-app/src/pages/404.d.ts +4 -0
  118. package/templates/fullstack-app/src/pages/404.d.ts.map +1 -0
  119. package/templates/fullstack-app/src/pages/404.js +4 -0
  120. package/templates/fullstack-app/src/pages/[id].d.ts +1 -0
  121. package/templates/fullstack-app/src/pages/[id].d.ts.map +1 -0
  122. package/templates/fullstack-app/src/pages/[id].js +1 -0
  123. package/templates/fullstack-app/src/pages/_app.d.ts +6 -0
  124. package/templates/fullstack-app/src/pages/_app.d.ts.map +1 -0
  125. package/templates/fullstack-app/src/pages/_app.js +6 -0
  126. package/templates/fullstack-app/src/pages/_document.d.ts +7 -0
  127. package/templates/fullstack-app/src/pages/_document.d.ts.map +1 -0
  128. package/templates/fullstack-app/src/pages/_document.js +4 -0
  129. package/templates/fullstack-app/src/pages/_error.d.ts +4 -0
  130. package/templates/fullstack-app/src/pages/_error.d.ts.map +1 -0
  131. package/templates/fullstack-app/src/pages/_error.js +8 -0
  132. package/templates/fullstack-app/src/pages/about/index.d.ts +5 -0
  133. package/templates/fullstack-app/src/pages/about/index.d.ts.map +1 -0
  134. package/templates/fullstack-app/src/pages/about/index.js +6 -0
  135. package/templates/fullstack-app/src/pages/about.d.ts +10 -0
  136. package/templates/fullstack-app/src/pages/about.d.ts.map +1 -0
  137. package/templates/fullstack-app/src/pages/about.js +21 -0
  138. package/templates/fullstack-app/src/pages/api/users/[id].d.ts +6 -0
  139. package/templates/fullstack-app/src/pages/api/users/[id].d.ts.map +1 -0
  140. package/templates/fullstack-app/src/pages/api/users/[id].js +51 -0
  141. package/templates/fullstack-app/src/pages/api/users/index.d.ts +4 -0
  142. package/templates/fullstack-app/src/pages/api/users/index.d.ts.map +1 -0
  143. package/templates/fullstack-app/src/pages/api/users/index.js +33 -0
  144. package/templates/fullstack-app/src/pages/index.d.ts +21 -0
  145. package/templates/fullstack-app/src/pages/index.d.ts.map +1 -0
  146. package/templates/fullstack-app/src/pages/index.js +66 -0
  147. package/templates/fullstack-app/src/pages/users/[id].d.ts +38 -0
  148. package/templates/fullstack-app/src/pages/users/[id].d.ts.map +1 -0
  149. package/templates/fullstack-app/src/pages/users/[id].js +79 -0
  150. package/templates/fullstack-app/src/pages/users.d.ts +14 -0
  151. package/templates/fullstack-app/src/pages/users.d.ts.map +1 -0
  152. package/templates/fullstack-app/src/pages/users.js +14 -0
  153. package/templates/fullstack-app/src/pages/wasm-demo.d.ts +1 -0
  154. package/templates/fullstack-app/src/pages/wasm-demo.d.ts.map +1 -0
  155. package/templates/fullstack-app/src/pages/wasm-demo.js +2 -0
  156. package/templates/fullstack-app/src/router.d.ts +22 -0
  157. package/templates/fullstack-app/src/router.d.ts.map +1 -0
  158. package/templates/fullstack-app/src/router.js +210 -0
  159. package/templates/fullstack-app/tailwind.config.d.ts +3 -0
  160. package/templates/fullstack-app/tailwind.config.d.ts.map +1 -0
  161. package/templates/fullstack-app/vite.config.d.ts +3 -0
  162. package/templates/fullstack-app/vite.config.d.ts.map +1 -0
  163. package/templates/ssr-template/dist/client/assets/main-D-VH3xOb.d.ts +2 -0
  164. package/templates/ssr-template/dist/client/assets/main-D-VH3xOb.d.ts.map +1 -0
  165. package/templates/ssr-template/dist/client.d.ts +85 -0
  166. package/templates/ssr-template/dist/client.d.ts.map +1 -0
  167. package/templates/ssr-template/dist/server.d.ts +2 -0
  168. package/templates/ssr-template/dist/server.d.ts.map +1 -0
  169. package/templates/ssr-template/esbuild.config.d.ts +2 -0
  170. package/templates/ssr-template/esbuild.config.d.ts.map +1 -0
  171. package/templates/ssr-template/jsx-shim.d.ts +2 -0
  172. package/templates/ssr-template/jsx-shim.d.ts.map +1 -0
  173. package/templates/ssr-template/src/App.d.ts +2 -0
  174. package/templates/ssr-template/src/App.d.ts.map +1 -0
  175. package/templates/ssr-template/src/App.js +625 -0
  176. package/templates/ssr-template/src/client.d.ts +2 -0
  177. package/templates/ssr-template/src/client.d.ts.map +1 -0
  178. package/templates/ssr-template/src/client.js +3 -0
  179. package/templates/ssr-template/src/server.d.ts +2 -0
  180. package/templates/ssr-template/src/server.d.ts.map +1 -0
  181. package/templates/ssr-template/src/server.js +29 -0
  182. package/templates/ssr-template/vite.config.d.ts +3 -0
  183. package/templates/ssr-template/vite.config.d.ts.map +1 -0
  184. package/templates/ssr-template/vite.config.js +30 -0
  185. package/templates/wasm/build-wasm.d.ts +2 -0
  186. package/templates/wasm/build-wasm.d.ts.map +1 -0
  187. package/templates/wasm/dist/assets/index-BNqTDBdE.d.ts +30 -0
  188. package/templates/wasm/dist/assets/index-BNqTDBdE.d.ts.map +1 -0
  189. package/templates/wasm/dist/wasm_exec.d.ts +1 -0
  190. package/templates/wasm/dist/wasm_exec.d.ts.map +1 -0
  191. package/templates/wasm/esbuild.config.d.ts +2 -0
  192. package/templates/wasm/esbuild.config.d.ts.map +1 -0
  193. package/templates/wasm/go/wasm_exec.d.ts +1 -0
  194. package/templates/wasm/go/wasm_exec.d.ts.map +1 -0
  195. package/templates/wasm/jsx-shim.d.ts +5 -0
  196. package/templates/wasm/jsx-shim.d.ts.map +1 -0
  197. package/templates/wasm/public/wasm_exec.d.ts +1 -0
  198. package/templates/wasm/public/wasm_exec.d.ts.map +1 -0
  199. package/templates/wasm/src/App.d.ts +2 -0
  200. package/templates/wasm/src/App.d.ts.map +1 -0
  201. package/templates/wasm/src/App.js +381 -0
  202. package/templates/wasm/src/client.d.ts +2 -0
  203. package/templates/wasm/src/client.d.ts.map +1 -0
  204. package/templates/wasm/src/client.js +210 -0
  205. package/templates/wasm/src/index.d.ts +2 -0
  206. package/templates/wasm/src/index.d.ts.map +1 -0
  207. package/templates/wasm/src/index.js +20 -0
  208. package/templates/wasm/src/server.d.ts +2 -0
  209. package/templates/wasm/src/server.d.ts.map +1 -0
  210. package/templates/wasm/src/server.js +131 -0
  211. package/templates/wasm/vite.config.d.ts +3 -0
  212. package/templates/wasm/vite.config.d.ts.map +1 -0
  213. package/templates/wasm/vite.config.js +36 -0
  214. package/templates/wasm/wasm-loader.d.ts +6 -0
  215. package/templates/wasm/wasm-loader.d.ts.map +1 -0
@@ -0,0 +1,30 @@
1
+ import { defineConfig } from 'vite';
2
+ export default defineConfig({
3
+ esbuild: {
4
+ jsx: 'transform',
5
+ jsxFactory: 'jsx',
6
+ jsxFragment: 'Fragment',
7
+ jsxImportSource: 'frontend-hamroun',
8
+ },
9
+ ssr: {
10
+ noExternal: ['frontend-hamroun']
11
+ },
12
+ optimizeDeps: {
13
+ include: ['frontend-hamroun'],
14
+ exclude: []
15
+ },
16
+ build: {
17
+ target: 'esnext',
18
+ rollupOptions: {
19
+ output: {
20
+ format: 'es'
21
+ }
22
+ }
23
+ },
24
+ resolve: {
25
+ alias: {
26
+ 'frontend-hamroun/jsx-dev-runtime': 'frontend-hamroun',
27
+ 'frontend-hamroun/jsx-runtime': 'frontend-hamroun'
28
+ }
29
+ }
30
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=build-wasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-wasm.d.ts","sourceRoot":"","sources":["build-wasm.js"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ declare function R(t: any): void;
2
+ declare function L(): number;
3
+ declare function _(): void;
4
+ declare function q(t: any, i: any, ...args: any[]): {
5
+ type: any;
6
+ props: any;
7
+ };
8
+ declare function h(t: any): any;
9
+ declare function N(t: any, i: any): Promise<void>;
10
+ declare function d(t: any): void;
11
+ declare function G(t: any, i: any): void;
12
+ declare function e(t: any, i: any, ...args: any[]): {
13
+ type: any;
14
+ props: any;
15
+ };
16
+ declare function j(t: any, ...i: any[]): any;
17
+ declare function J(): {
18
+ type: any;
19
+ props: any;
20
+ };
21
+ declare function k(): Promise<any>;
22
+ declare function Y(): Promise<void>;
23
+ declare let y: boolean;
24
+ declare const w: any[];
25
+ declare let m: number;
26
+ declare const z: Map<any, any>;
27
+ declare const T: boolean;
28
+ declare const H: Map<any, any>;
29
+ declare let O: boolean;
30
+ //# sourceMappingURL=index-BNqTDBdE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BNqTDBdE.d.ts","sourceRoot":"","sources":["index-BNqTDBdE.js"],"names":[],"mappings":"AAA0tB,iCAA0G;AAAsD,6BAAqC;AAAA,2BAAgC;AAAA;;;EAA+K;AAAA,gCAAkwC;AAAS,kDAA2J;AAAA,iCAAyE;AAAA,yCAA4E;AAAA;;;EAA+K;AAAA,6CAAiP;AAAgD;;;EAwR/mG;AAAA,mCAAmF;AAAA,oCAclF;AAtS2rB,uBAAS;AAAA,uBAAW;AAA0G,sBAAQ;AAAM,+BAAS;AAAC,yBAAmB;AAAC,+BAAS;AAAu/C,uBAAS"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=wasm_exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_exec.d.ts","sourceRoot":"","sources":["wasm_exec.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=esbuild.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.config.d.ts","sourceRoot":"","sources":["esbuild.config.js"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=wasm_exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_exec.d.ts","sourceRoot":"","sources":["wasm_exec.js"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { jsx } from 'frontend-hamroun';
2
+ import { jsxs } from 'frontend-hamroun';
3
+ import { Fragment } from 'frontend-hamroun';
4
+ export { jsx, jsxs, Fragment };
5
+ //# sourceMappingURL=jsx-shim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx-shim.d.ts","sourceRoot":"","sources":["jsx-shim.js"],"names":[],"mappings":"oBACoC,kBAAkB;qBAAlB,kBAAkB;yBAAlB,kBAAkB"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=wasm_exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_exec.d.ts","sourceRoot":"","sources":["wasm_exec.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export default function App(): JSX.Element;
2
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["App.tsx"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,GAAG,gBAkiB1B"}
@@ -0,0 +1,381 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "frontend-hamroun/jsx-runtime";
2
+ import { useState, useEffect } from 'baraqex';
3
+ import { loadGoWasm, callWasmFunction } from 'baraqex';
4
+ export default function App() {
5
+ const [wasmReady, setWasmReady] = useState(false);
6
+ const [wasmError, setWasmError] = useState(null);
7
+ const [result, setResult] = useState(null);
8
+ const [inputA, setInputA] = useState(10);
9
+ const [inputB, setInputB] = useState(20);
10
+ const [fibInput, setFibInput] = useState(10);
11
+ const [primeInput, setPrimeInput] = useState(17);
12
+ const [name, setName] = useState('World');
13
+ useEffect(() => {
14
+ let mounted = true;
15
+ async function loadWasm() {
16
+ try {
17
+ console.log('Loading Go WASM module using baraqex API...');
18
+ // Use baraqex API to load WASM
19
+ await loadGoWasm('/example.wasm', {
20
+ debug: true,
21
+ onLoad: () => {
22
+ console.log('WASM module loaded successfully via baraqex');
23
+ }
24
+ });
25
+ if (mounted) {
26
+ setWasmReady(true);
27
+ setWasmError(null);
28
+ console.log('WASM module ready');
29
+ }
30
+ }
31
+ catch (error) {
32
+ console.error('WASM loading error:', error);
33
+ if (mounted) {
34
+ setWasmError(error instanceof Error ? error.message : 'Unknown WASM loading error');
35
+ }
36
+ }
37
+ }
38
+ loadWasm();
39
+ return () => {
40
+ mounted = false;
41
+ };
42
+ }, []);
43
+ // Use baraqex callWasmFunction API
44
+ const callFunction = (funcName, ...args) => {
45
+ try {
46
+ // Call using baraqex API
47
+ return callWasmFunction(funcName, ...args);
48
+ }
49
+ catch (error) {
50
+ const errorMsg = error instanceof Error ? error.message : 'Function call failed';
51
+ setWasmError(errorMsg);
52
+ return null;
53
+ }
54
+ };
55
+ const handleHello = () => {
56
+ const greeting = callFunction('goHello', name);
57
+ if (greeting !== null) {
58
+ setResult({ type: 'hello', value: greeting, input: name });
59
+ setWasmError(null);
60
+ }
61
+ };
62
+ const handleAddition = () => {
63
+ const sum = callFunction('goAdd', inputA, inputB);
64
+ if (sum !== null) {
65
+ setResult({ type: 'addition', value: sum, inputs: [inputA, inputB] });
66
+ setWasmError(null);
67
+ }
68
+ };
69
+ const handleMultiplication = () => {
70
+ const product = callFunction('goMultiply', inputA, inputB);
71
+ if (product !== null) {
72
+ setResult({ type: 'multiplication', value: product, inputs: [inputA, inputB] });
73
+ setWasmError(null);
74
+ }
75
+ };
76
+ const handleFibonacci = () => {
77
+ if (fibInput > 40) {
78
+ setWasmError('Fibonacci input too large (max 40)');
79
+ return;
80
+ }
81
+ const fibResult = callFunction('goFibonacci', fibInput);
82
+ if (fibResult !== null) {
83
+ setResult({ type: 'fibonacci', value: fibResult, input: fibInput });
84
+ setWasmError(null);
85
+ }
86
+ };
87
+ const handlePrimeCheck = () => {
88
+ const isPrime = callFunction('goIsPrime', primeInput);
89
+ if (isPrime !== null) {
90
+ setResult({ type: 'prime', value: isPrime, input: primeInput });
91
+ setWasmError(null);
92
+ }
93
+ };
94
+ if (!wasmReady && !wasmError) {
95
+ return (_jsxs("div", { className: "app loading", children: [_jsx("div", { className: "spinner" }), _jsx("h2", { children: "Loading Go WASM Module..." }), _jsx("p", { children: "Initializing WebAssembly runtime..." })] }));
96
+ }
97
+ if (wasmError) {
98
+ return (_jsxs("div", { className: "app error", children: [_jsx("h2", { children: "WASM Error" }), _jsx("p", { children: wasmError }), _jsx("button", { onClick: () => window.location.reload(), children: "Reload Page" }), _jsxs("details", { style: { marginTop: '20px', textAlign: 'left' }, children: [_jsx("summary", { children: "Troubleshooting" }), _jsxs("ul", { children: [_jsxs("li", { children: ["Make sure the WASM file is built: ", _jsx("code", { children: "npm run build:wasm" })] }), _jsxs("li", { children: ["Check if ", _jsx("code", { children: "example.wasm" }), " exists in the public folder"] }), _jsxs("li", { children: ["Verify ", _jsx("code", { children: "wasm_exec.js" }), " is loaded in the HTML"] }), _jsx("li", { children: "Check browser console for additional errors" })] })] })] }));
99
+ }
100
+ return (_jsxs("div", { className: "app", children: [_jsxs("header", { children: [_jsx("h1", { children: "Frontend Hamroun + Go WASM (Baraqex)" }), _jsx("p", { children: "High-performance computing with WebAssembly via Baraqex API" }), _jsxs("div", { className: "status", children: [_jsx("span", { className: "status-indicator ready" }), "WASM Ready via Baraqex"] })] }), _jsxs("main", { children: [_jsxs("section", { className: "demo-grid", children: [_jsxs("div", { className: "demo-card", children: [_jsx("h3", { children: "\uD83C\uDF0D Hello Function" }), _jsxs("div", { className: "input-group", children: [_jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "Enter your name" }), _jsx("button", { onClick: handleHello, children: "Say Hello" })] }), _jsxs("small", { children: ["callWasmFunction('goHello', '", name, "')"] })] }), _jsxs("div", { className: "demo-card", children: [_jsx("h3", { children: "\uD83E\uDDEE Math Operations" }), _jsxs("div", { className: "input-group", children: [_jsx("input", { type: "number", value: inputA, onChange: (e) => setInputA(Number(e.target.value)), placeholder: "First number" }), _jsx("input", { type: "number", value: inputB, onChange: (e) => setInputB(Number(e.target.value)), placeholder: "Second number" })] }), _jsxs("div", { className: "button-group", children: [_jsx("button", { onClick: handleAddition, children: "Add" }), _jsx("button", { onClick: handleMultiplication, children: "Multiply" })] }), _jsxs("small", { children: ["callWasmFunction('goAdd', ", inputA, ", ", inputB, ")"] })] }), _jsxs("div", { className: "demo-card", children: [_jsx("h3", { children: "\uD83D\uDD22 Fibonacci Sequence" }), _jsxs("div", { className: "input-group", children: [_jsx("input", { type: "number", value: fibInput, onChange: (e) => setFibInput(Number(e.target.value)), placeholder: "Fibonacci number", min: "0", max: "40" }), _jsx("button", { onClick: handleFibonacci, children: "Calculate" })] }), _jsx("small", { children: "Maximum value: 40" })] }), _jsxs("div", { className: "demo-card", children: [_jsx("h3", { children: "\uD83D\uDD0D Prime Number Check" }), _jsxs("div", { className: "input-group", children: [_jsx("input", { type: "number", value: primeInput, onChange: (e) => setPrimeInput(Number(e.target.value)), placeholder: "Number to check", min: "1" }), _jsx("button", { onClick: handlePrimeCheck, children: "Check Prime" })] })] })] }), result && (_jsxs("section", { className: "results", children: [_jsx("h2", { children: "\uD83D\uDCCA Baraqex WASM Result" }), _jsxs("div", { className: "result-card", children: [result.type === 'hello' && (_jsxs("p", { children: [_jsx("strong", { children: "Greeting:" }), " ", _jsx("span", { className: "result-value", children: result.value })] })), result.type === 'addition' && (_jsxs("p", { children: [_jsx("strong", { children: "Addition:" }), " ", result.inputs[0], " + ", result.inputs[1], " = ", _jsx("span", { className: "result-value", children: result.value })] })), result.type === 'multiplication' && (_jsxs("p", { children: [_jsx("strong", { children: "Multiplication:" }), " ", result.inputs[0], " \u00D7 ", result.inputs[1], " = ", _jsx("span", { className: "result-value", children: result.value })] })), result.type === 'fibonacci' && (_jsxs("p", { children: [_jsx("strong", { children: "Fibonacci:" }), " F(", result.input, ") = ", _jsx("span", { className: "result-value", children: result.value })] })), result.type === 'prime' && (_jsxs("p", { children: [_jsx("strong", { children: "Prime Check:" }), " ", result.input, " is ", _jsx("span", { className: "result-value", children: result.value ? 'prime' : 'not prime' })] }))] })] })), _jsxs("section", { className: "info-section", children: [_jsx("h2", { children: "\u26A1 Baraqex WASM Benefits" }), _jsxs("div", { className: "benefits-grid", children: [_jsxs("div", { className: "benefit", children: [_jsx("h4", { children: "\uD83D\uDE80 Simple API" }), _jsx("p", { children: "Easy-to-use loadGoWasm() and callWasmFunction() API" })] }), _jsxs("div", { className: "benefit", children: [_jsx("h4", { children: "\uD83D\uDD04 Cross-Platform" }), _jsx("p", { children: "Works in browser and Node.js with same API" })] }), _jsxs("div", { className: "benefit", children: [_jsx("h4", { children: "\uD83D\uDEE0\uFE0F Go Integration" }), _jsx("p", { children: "Seamless Go + JavaScript interoperability" })] }), _jsxs("div", { className: "benefit", children: [_jsx("h4", { children: "\uD83D\uDCCA Debug Support" }), _jsx("p", { children: "Built-in debugging and function discovery" })] })] })] })] }), _jsx("style", { children: `
101
+ .app {
102
+ max-width: 1200px;
103
+ margin: 0 auto;
104
+ padding: 20px;
105
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
106
+ line-height: 1.6;
107
+ }
108
+
109
+ .app.loading, .app.error {
110
+ text-align: center;
111
+ padding: 60px 20px;
112
+ }
113
+
114
+ .spinner {
115
+ width: 50px;
116
+ height: 50px;
117
+ border: 4px solid #f3f3f3;
118
+ border-top: 4px solid #007acc;
119
+ border-radius: 50%;
120
+ animation: spin 1s linear infinite;
121
+ margin: 0 auto 20px;
122
+ }
123
+
124
+ @keyframes spin {
125
+ 0% { transform: rotate(0deg); }
126
+ 100% { transform: rotate(360deg); }
127
+ }
128
+
129
+ header {
130
+ text-align: center;
131
+ margin-bottom: 40px;
132
+ padding: 30px;
133
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
134
+ color: white;
135
+ border-radius: 16px;
136
+ position: relative;
137
+ }
138
+
139
+ header h1 {
140
+ margin: 0 0 10px 0;
141
+ font-size: 2.5rem;
142
+ font-weight: 700;
143
+ }
144
+
145
+ header p {
146
+ margin: 0 0 20px 0;
147
+ opacity: 0.9;
148
+ font-size: 1.1rem;
149
+ }
150
+
151
+ .status {
152
+ display: inline-flex;
153
+ align-items: center;
154
+ gap: 8px;
155
+ background: rgba(255, 255, 255, 0.2);
156
+ padding: 8px 16px;
157
+ border-radius: 20px;
158
+ font-size: 0.9rem;
159
+ }
160
+
161
+ .status-indicator {
162
+ width: 8px;
163
+ height: 8px;
164
+ border-radius: 50%;
165
+ background: #4ade80;
166
+ animation: pulse 2s infinite;
167
+ }
168
+
169
+ @keyframes pulse {
170
+ 0%, 100% { opacity: 1; }
171
+ 50% { opacity: 0.5; }
172
+ }
173
+
174
+ .demo-grid {
175
+ display: grid;
176
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
177
+ gap: 20px;
178
+ margin-bottom: 30px;
179
+ }
180
+
181
+ .demo-card {
182
+ background: white;
183
+ padding: 24px;
184
+ border-radius: 12px;
185
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
186
+ border: 1px solid #e5e7eb;
187
+ transition: transform 0.2s, box-shadow 0.2s;
188
+ }
189
+
190
+ .demo-card:hover {
191
+ transform: translateY(-2px);
192
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
193
+ }
194
+
195
+ .demo-card h3 {
196
+ margin-top: 0;
197
+ margin-bottom: 16px;
198
+ color: #374151;
199
+ font-size: 1.2rem;
200
+ }
201
+
202
+ .input-group {
203
+ display: flex;
204
+ gap: 8px;
205
+ margin-bottom: 12px;
206
+ flex-wrap: wrap;
207
+ }
208
+
209
+ .button-group {
210
+ display: flex;
211
+ gap: 8px;
212
+ flex-wrap: wrap;
213
+ }
214
+
215
+ input {
216
+ flex: 1;
217
+ min-width: 120px;
218
+ padding: 10px 12px;
219
+ border: 2px solid #e5e7eb;
220
+ border-radius: 8px;
221
+ font-size: 14px;
222
+ transition: border-color 0.2s;
223
+ }
224
+
225
+ input:focus {
226
+ outline: none;
227
+ border-color: #007acc;
228
+ }
229
+
230
+ button {
231
+ background: #007acc;
232
+ color: white;
233
+ border: none;
234
+ padding: 10px 16px;
235
+ border-radius: 8px;
236
+ cursor: pointer;
237
+ font-size: 14px;
238
+ font-weight: 600;
239
+ transition: all 0.2s;
240
+ white-space: nowrap;
241
+ }
242
+
243
+ button:hover {
244
+ background: #0056a3;
245
+ transform: translateY(-1px);
246
+ }
247
+
248
+ button:active {
249
+ transform: translateY(0);
250
+ }
251
+
252
+ small {
253
+ color: #6b7280;
254
+ font-size: 0.8rem;
255
+ }
256
+
257
+ .results {
258
+ background: #f0f9ff;
259
+ padding: 24px;
260
+ border-radius: 12px;
261
+ border: 2px solid #bae6fd;
262
+ margin: 30px 0;
263
+ }
264
+
265
+ .results h2 {
266
+ margin-top: 0;
267
+ color: #0369a1;
268
+ }
269
+
270
+ .result-card {
271
+ background: white;
272
+ padding: 16px;
273
+ border-radius: 8px;
274
+ border: 1px solid #bae6fd;
275
+ }
276
+
277
+ .result-value {
278
+ font-weight: bold;
279
+ color: #007acc;
280
+ background: #e0f2fe;
281
+ padding: 2px 6px;
282
+ border-radius: 4px;
283
+ }
284
+
285
+ .info-section {
286
+ margin-top: 40px;
287
+ }
288
+
289
+ .info-section h2 {
290
+ text-align: center;
291
+ margin-bottom: 30px;
292
+ color: #374151;
293
+ }
294
+
295
+ .benefits-grid {
296
+ display: grid;
297
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
298
+ gap: 20px;
299
+ }
300
+
301
+ .benefit {
302
+ background: #f9fafb;
303
+ padding: 20px;
304
+ border-radius: 12px;
305
+ border: 1px solid #e5e7eb;
306
+ text-align: center;
307
+ }
308
+
309
+ .benefit h4 {
310
+ margin: 0 0 8px 0;
311
+ color: #374151;
312
+ font-size: 1.1rem;
313
+ }
314
+
315
+ .benefit p {
316
+ margin: 0;
317
+ color: #6b7280;
318
+ font-size: 0.9rem;
319
+ }
320
+
321
+ .error {
322
+ color: #dc2626;
323
+ }
324
+
325
+ .error button {
326
+ background: #dc2626;
327
+ margin-top: 20px;
328
+ }
329
+
330
+ .error button:hover {
331
+ background: #b91c1c;
332
+ }
333
+
334
+ details {
335
+ background: #fef2f2;
336
+ padding: 16px;
337
+ border-radius: 8px;
338
+ border: 1px solid #fecaca;
339
+ }
340
+
341
+ summary {
342
+ cursor: pointer;
343
+ font-weight: 600;
344
+ margin-bottom: 8px;
345
+ }
346
+
347
+ code {
348
+ background: #f3f4f6;
349
+ padding: 2px 4px;
350
+ border-radius: 4px;
351
+ font-family: monospace;
352
+ font-size: 0.9em;
353
+ }
354
+
355
+ @media (max-width: 768px) {
356
+ .app {
357
+ padding: 10px;
358
+ }
359
+
360
+ header {
361
+ padding: 20px;
362
+ }
363
+
364
+ header h1 {
365
+ font-size: 2rem;
366
+ }
367
+
368
+ .demo-grid {
369
+ grid-template-columns: 1fr;
370
+ }
371
+
372
+ .input-group {
373
+ flex-direction: column;
374
+ }
375
+
376
+ input {
377
+ min-width: auto;
378
+ }
379
+ }
380
+ ` })] }));
381
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["client.tsx"],"names":[],"mappings":""}