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.
- package/package.json +1 -1
- package/templates/basic-app/build.d.ts +2 -0
- package/templates/basic-app/build.d.ts.map +1 -0
- package/templates/basic-app/dev.d.ts +2 -0
- package/templates/basic-app/dev.d.ts.map +1 -0
- package/templates/basic-app/esbuild.config.d.ts +2 -0
- package/templates/basic-app/esbuild.config.d.ts.map +1 -0
- package/templates/basic-app/postcss.config.d.ts +8 -0
- package/templates/basic-app/postcss.config.d.ts.map +1 -0
- package/templates/basic-app/server.d.ts +2 -0
- package/templates/basic-app/server.d.ts.map +1 -0
- package/templates/basic-app/src/App.d.ts +2 -0
- package/templates/basic-app/src/App.d.ts.map +1 -0
- package/templates/basic-app/src/App.js +148 -0
- package/templates/basic-app/src/client.d.ts +2 -0
- package/templates/basic-app/src/client.d.ts.map +1 -0
- package/templates/basic-app/src/client.js +6 -0
- package/templates/basic-app/src/components/Counter.d.ts +4 -0
- package/templates/basic-app/src/components/Counter.d.ts.map +1 -0
- package/templates/basic-app/src/components/Counter.js +9 -0
- package/templates/basic-app/src/jsx-shim.d.ts +8 -0
- package/templates/basic-app/src/jsx-shim.d.ts.map +1 -0
- package/templates/basic-app/src/main.d.ts +2 -0
- package/templates/basic-app/src/main.d.ts.map +1 -0
- package/templates/basic-app/src/main.js +57 -0
- package/templates/basic-app/src/server.d.ts +2 -0
- package/templates/basic-app/src/server.d.ts.map +1 -0
- package/templates/basic-app/tailwind.config.d.ts +9 -0
- package/templates/basic-app/tailwind.config.d.ts.map +1 -0
- package/templates/basic-app/vite.config.d.ts +3 -0
- package/templates/basic-app/vite.config.d.ts.map +1 -0
- package/templates/basic-app/vite.config.js +7 -0
- package/templates/complete-app/api/hello.d.ts +1 -0
- package/templates/complete-app/api/hello.d.ts.map +1 -0
- package/templates/complete-app/client.d.ts +2 -0
- package/templates/complete-app/client.d.ts.map +1 -0
- package/templates/complete-app/lib/frontend-hamroun.d.ts +18 -0
- package/templates/complete-app/lib/frontend-hamroun.d.ts.map +1 -0
- package/templates/complete-app/pages/about.d.ts +7 -0
- package/templates/complete-app/pages/about.d.ts.map +1 -0
- package/templates/complete-app/pages/index.d.ts +7 -0
- package/templates/complete-app/pages/index.d.ts.map +1 -0
- package/templates/complete-app/pages/wasm-demo.d.ts +7 -0
- package/templates/complete-app/pages/wasm-demo.d.ts.map +1 -0
- package/templates/complete-app/public/client.d.ts +17 -0
- package/templates/complete-app/public/client.d.ts.map +1 -0
- package/templates/complete-app/server.d.ts +2 -0
- package/templates/complete-app/server.d.ts.map +1 -0
- package/templates/complete-app/server.js +236 -218
- package/templates/complete-app/src/App.d.ts +2 -0
- package/templates/complete-app/src/App.d.ts.map +1 -0
- package/templates/complete-app/src/App.js +27 -0
- package/templates/complete-app/src/client.d.ts +2 -0
- package/templates/complete-app/src/client.d.ts.map +1 -0
- package/templates/complete-app/src/client.js +52 -0
- package/templates/complete-app/src/pages/index.d.ts +2 -0
- package/templates/complete-app/src/pages/index.d.ts.map +1 -0
- package/templates/complete-app/src/pages/index.js +19 -0
- package/templates/complete-app/src/server.d.ts +2 -0
- package/templates/complete-app/src/server.d.ts.map +1 -0
- package/templates/complete-app/src/server.js +192 -0
- package/templates/complete-app/vite.config.d.ts +3 -0
- package/templates/complete-app/vite.config.d.ts.map +1 -0
- package/templates/complete-app/vite.config.js +29 -57
- package/templates/fullstack-app/api/hello.d.ts +4 -0
- package/templates/fullstack-app/api/hello.d.ts.map +1 -0
- package/templates/fullstack-app/api/hello.js +14 -11
- package/templates/fullstack-app/api/users/[id].d.ts +5 -0
- package/templates/fullstack-app/api/users/[id].d.ts.map +1 -0
- package/templates/fullstack-app/api/users/[id].js +52 -0
- package/templates/fullstack-app/api/users/index.d.ts +4 -0
- package/templates/fullstack-app/api/users/index.d.ts.map +1 -0
- package/templates/fullstack-app/api/users/index.js +25 -0
- package/templates/fullstack-app/build/main.d.ts +211 -0
- package/templates/fullstack-app/build/main.d.ts.map +1 -0
- package/templates/fullstack-app/build.d.ts +2 -0
- package/templates/fullstack-app/build.d.ts.map +1 -0
- package/templates/fullstack-app/build.js +190 -0
- package/templates/fullstack-app/postcss.config.d.ts +5 -0
- package/templates/fullstack-app/postcss.config.d.ts.map +1 -0
- package/templates/fullstack-app/process-tailwind.d.ts +2 -0
- package/templates/fullstack-app/process-tailwind.d.ts.map +1 -0
- package/templates/fullstack-app/public/route-handler.d.ts +1 -0
- package/templates/fullstack-app/public/route-handler.d.ts.map +1 -0
- package/templates/fullstack-app/server.d.ts +2 -0
- package/templates/fullstack-app/server.d.ts.map +1 -0
- package/templates/fullstack-app/server.js +428 -266
- package/templates/fullstack-app/src/client.d.ts +2 -0
- package/templates/fullstack-app/src/client.d.ts.map +1 -0
- package/templates/fullstack-app/src/components/ClientHome.d.ts +1 -0
- package/templates/fullstack-app/src/components/ClientHome.d.ts.map +1 -0
- package/templates/fullstack-app/src/components/ClientHome.js +1 -0
- package/templates/fullstack-app/src/components/ErrorBoundary.d.ts +7 -0
- package/templates/fullstack-app/src/components/ErrorBoundary.d.ts.map +1 -0
- package/templates/fullstack-app/src/components/ErrorBoundary.js +12 -0
- package/templates/fullstack-app/src/components/Layout.d.ts +7 -0
- package/templates/fullstack-app/src/components/Layout.d.ts.map +1 -0
- package/templates/fullstack-app/src/components/Layout.js +4 -0
- package/templates/fullstack-app/src/components/StateDemo.d.ts +2 -0
- package/templates/fullstack-app/src/components/StateDemo.d.ts.map +1 -0
- package/templates/fullstack-app/src/components/StateDemo.js +86 -0
- package/templates/fullstack-app/src/components/UserList.d.ts +11 -0
- package/templates/fullstack-app/src/components/UserList.d.ts.map +1 -0
- package/templates/fullstack-app/src/components/UserList.js +7 -0
- package/templates/fullstack-app/src/config.d.ts +29 -0
- package/templates/fullstack-app/src/config.d.ts.map +1 -0
- package/templates/fullstack-app/src/config.js +36 -0
- package/templates/fullstack-app/src/data/api.d.ts +35 -0
- package/templates/fullstack-app/src/data/api.d.ts.map +1 -0
- package/templates/fullstack-app/src/data/api.js +173 -0
- package/templates/fullstack-app/src/main.d.ts +7 -0
- package/templates/fullstack-app/src/main.d.ts.map +1 -0
- package/templates/fullstack-app/src/main.js +130 -0
- package/templates/fullstack-app/src/middleware.d.ts +10 -0
- package/templates/fullstack-app/src/middleware.d.ts.map +1 -0
- package/templates/fullstack-app/src/middleware.js +14 -0
- package/templates/fullstack-app/src/pages/404.d.ts +4 -0
- package/templates/fullstack-app/src/pages/404.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/404.js +4 -0
- package/templates/fullstack-app/src/pages/[id].d.ts +1 -0
- package/templates/fullstack-app/src/pages/[id].d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/[id].js +1 -0
- package/templates/fullstack-app/src/pages/_app.d.ts +6 -0
- package/templates/fullstack-app/src/pages/_app.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/_app.js +6 -0
- package/templates/fullstack-app/src/pages/_document.d.ts +7 -0
- package/templates/fullstack-app/src/pages/_document.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/_document.js +4 -0
- package/templates/fullstack-app/src/pages/_error.d.ts +4 -0
- package/templates/fullstack-app/src/pages/_error.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/_error.js +8 -0
- package/templates/fullstack-app/src/pages/about/index.d.ts +5 -0
- package/templates/fullstack-app/src/pages/about/index.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/about/index.js +6 -0
- package/templates/fullstack-app/src/pages/about.d.ts +10 -0
- package/templates/fullstack-app/src/pages/about.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/about.js +21 -0
- package/templates/fullstack-app/src/pages/api/users/[id].d.ts +6 -0
- package/templates/fullstack-app/src/pages/api/users/[id].d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/api/users/[id].js +51 -0
- package/templates/fullstack-app/src/pages/api/users/index.d.ts +4 -0
- package/templates/fullstack-app/src/pages/api/users/index.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/api/users/index.js +33 -0
- package/templates/fullstack-app/src/pages/index.d.ts +21 -0
- package/templates/fullstack-app/src/pages/index.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/index.js +66 -0
- package/templates/fullstack-app/src/pages/users/[id].d.ts +38 -0
- package/templates/fullstack-app/src/pages/users/[id].d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/users/[id].js +79 -0
- package/templates/fullstack-app/src/pages/users.d.ts +14 -0
- package/templates/fullstack-app/src/pages/users.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/users.js +14 -0
- package/templates/fullstack-app/src/pages/wasm-demo.d.ts +1 -0
- package/templates/fullstack-app/src/pages/wasm-demo.d.ts.map +1 -0
- package/templates/fullstack-app/src/pages/wasm-demo.js +2 -0
- package/templates/fullstack-app/src/router.d.ts +22 -0
- package/templates/fullstack-app/src/router.d.ts.map +1 -0
- package/templates/fullstack-app/src/router.js +210 -0
- package/templates/fullstack-app/tailwind.config.d.ts +3 -0
- package/templates/fullstack-app/tailwind.config.d.ts.map +1 -0
- package/templates/fullstack-app/vite.config.d.ts +3 -0
- package/templates/fullstack-app/vite.config.d.ts.map +1 -0
- package/templates/ssr-template/dist/client/assets/main-D-VH3xOb.d.ts +2 -0
- package/templates/ssr-template/dist/client/assets/main-D-VH3xOb.d.ts.map +1 -0
- package/templates/ssr-template/dist/client.d.ts +85 -0
- package/templates/ssr-template/dist/client.d.ts.map +1 -0
- package/templates/ssr-template/dist/server.d.ts +2 -0
- package/templates/ssr-template/dist/server.d.ts.map +1 -0
- package/templates/ssr-template/esbuild.config.d.ts +2 -0
- package/templates/ssr-template/esbuild.config.d.ts.map +1 -0
- package/templates/ssr-template/jsx-shim.d.ts +2 -0
- package/templates/ssr-template/jsx-shim.d.ts.map +1 -0
- package/templates/ssr-template/src/App.d.ts +2 -0
- package/templates/ssr-template/src/App.d.ts.map +1 -0
- package/templates/ssr-template/src/App.js +625 -0
- package/templates/ssr-template/src/client.d.ts +2 -0
- package/templates/ssr-template/src/client.d.ts.map +1 -0
- package/templates/ssr-template/src/client.js +3 -0
- package/templates/ssr-template/src/server.d.ts +2 -0
- package/templates/ssr-template/src/server.d.ts.map +1 -0
- package/templates/ssr-template/src/server.js +29 -0
- package/templates/ssr-template/vite.config.d.ts +3 -0
- package/templates/ssr-template/vite.config.d.ts.map +1 -0
- package/templates/ssr-template/vite.config.js +30 -0
- package/templates/wasm/build-wasm.d.ts +2 -0
- package/templates/wasm/build-wasm.d.ts.map +1 -0
- package/templates/wasm/dist/assets/index-BNqTDBdE.d.ts +30 -0
- package/templates/wasm/dist/assets/index-BNqTDBdE.d.ts.map +1 -0
- package/templates/wasm/dist/wasm_exec.d.ts +1 -0
- package/templates/wasm/dist/wasm_exec.d.ts.map +1 -0
- package/templates/wasm/esbuild.config.d.ts +2 -0
- package/templates/wasm/esbuild.config.d.ts.map +1 -0
- package/templates/wasm/go/wasm_exec.d.ts +1 -0
- package/templates/wasm/go/wasm_exec.d.ts.map +1 -0
- package/templates/wasm/jsx-shim.d.ts +5 -0
- package/templates/wasm/jsx-shim.d.ts.map +1 -0
- package/templates/wasm/public/wasm_exec.d.ts +1 -0
- package/templates/wasm/public/wasm_exec.d.ts.map +1 -0
- package/templates/wasm/src/App.d.ts +2 -0
- package/templates/wasm/src/App.d.ts.map +1 -0
- package/templates/wasm/src/App.js +381 -0
- package/templates/wasm/src/client.d.ts +2 -0
- package/templates/wasm/src/client.d.ts.map +1 -0
- package/templates/wasm/src/client.js +210 -0
- package/templates/wasm/src/index.d.ts +2 -0
- package/templates/wasm/src/index.d.ts.map +1 -0
- package/templates/wasm/src/index.js +20 -0
- package/templates/wasm/src/server.d.ts +2 -0
- package/templates/wasm/src/server.d.ts.map +1 -0
- package/templates/wasm/src/server.js +131 -0
- package/templates/wasm/vite.config.d.ts +3 -0
- package/templates/wasm/vite.config.d.ts.map +1 -0
- package/templates/wasm/vite.config.js +36 -0
- package/templates/wasm/wasm-loader.d.ts +6 -0
- 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 @@
|
|
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 @@
|
|
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 @@
|
|
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 @@
|
|
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 @@
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["client.tsx"],"names":[],"mappings":""}
|