baraqex 1.0.64 → 1.0.66
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/bin/baraqex.js +1013 -1126
- package/dist/api/hello.d.ts +3 -0
- package/dist/api/hello.d.ts.map +1 -0
- package/dist/api/users/[id].d.ts +5 -0
- package/dist/api/users/[id].d.ts.map +1 -0
- package/dist/browser.d.ts +40 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +407 -1
- package/dist/browser.js.map +4 -4
- package/dist/browser.package.json +4 -0
- package/dist/forms/index.d.ts +2 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/types.d.ts +2 -0
- package/dist/forms/types.d.ts.map +1 -0
- package/dist/frontend/components/WasmLoader.d.ts +2 -0
- package/dist/frontend/components/WasmLoader.d.ts.map +1 -0
- package/dist/frontend/hooks/useWasm.d.ts +2 -0
- package/dist/frontend/hooks/useWasm.d.ts.map +1 -0
- package/dist/frontend/index.d.ts +2 -0
- package/dist/frontend/index.d.ts.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +678 -317
- package/dist/index.js.map +4 -4
- package/dist/renderComponent.d.ts +9 -0
- package/dist/renderComponent.d.ts.map +1 -0
- package/dist/router/index.d.ts +2 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/types.d.ts +2 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/server/api-router.d.ts +16 -0
- package/dist/server/api-router.d.ts.map +1 -0
- package/dist/server/auth.d.ts +25 -0
- package/dist/server/auth.d.ts.map +1 -0
- package/dist/server/database.d.ts +22 -0
- package/dist/server/database.d.ts.map +1 -0
- package/dist/server/index.d.ts +116 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/{server.js → server/index.js} +120 -23
- package/dist/server/index.js.map +7 -0
- package/dist/server/middleware.d.ts +11 -0
- package/dist/server/middleware.d.ts.map +1 -0
- package/dist/server/package.json +4 -0
- package/dist/server/templates.d.ts +31 -0
- package/dist/server/templates.d.ts.map +1 -0
- package/dist/server/types.d.ts +69 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/utils.d.ts +70 -0
- package/dist/server/utils.d.ts.map +1 -0
- package/dist/server/wasm.d.ts +29 -0
- package/dist/server/wasm.d.ts.map +1 -0
- package/dist/server-renderer.d.ts +5 -0
- package/dist/server-renderer.d.ts.map +1 -0
- package/dist/store/index.d.ts +2 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/types.d.ts +2 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/wasm.d.ts +51 -0
- package/dist/wasm.d.ts.map +1 -0
- package/package.json +65 -56
- package/templates/basic-app/src/main.tsx +1 -0
- package/templates/fullstack-template/.env.example +42 -0
- package/templates/fullstack-template/README.md +38 -42
- package/templates/fullstack-template/package-lock.json +7932 -0
- package/templates/fullstack-template/package.json +58 -6
- package/templates/fullstack-template/server.js +28 -9
- package/templates/fullstack-template/src/App.tsx +94 -0
- package/templates/fullstack-template/src/api/auth/login.ts +75 -0
- package/templates/fullstack-template/src/api/auth/me.ts +66 -0
- package/templates/fullstack-template/src/api/auth/register.ts +59 -0
- package/templates/fullstack-template/src/api/todos/[id].ts +108 -0
- package/templates/fullstack-template/src/api/todos/index.ts +79 -0
- package/templates/fullstack-template/src/components/Dashboard.tsx +129 -0
- package/templates/fullstack-template/src/components/Header.tsx +76 -0
- package/templates/fullstack-template/src/contexts/ApiContext.tsx +69 -0
- package/templates/fullstack-template/src/contexts/AuthContext.tsx +155 -0
- package/templates/fullstack-template/src/server.ts +167 -0
- package/templates/fullstack-template/src/styles/App.css +446 -0
- package/templates/ssr-template/package-lock.json +337 -60
- package/templates/ssr-template/package.json +1 -1
- package/templates/ssr-template/src/App.tsx +2 -2
- package/templates/wasm/App.tsx +564 -0
- package/templates/wasm/client.tsx +220 -0
- package/templates/wasm/index.tsx +21 -0
- package/templates/wasm/package-lock.json +5347 -5307
- package/templates/wasm/package.json +43 -25
- package/templates/wasm/public/example.wasm +0 -0
- package/templates/wasm/public/wasm_exec.js +1 -12
- package/templates/wasm/server.ts +145 -0
- package/templates/wasm/vite.config.ts +42 -24
- package/README_WASM.md +0 -472
- package/dist/server.js.map +0 -7
- package/templates/basic-app/src/App.jsx +0 -0
- package/templates/basic-app/src/App.tsx +0 -0
- package/templates/fullstack-template/src/api/hello.js +0 -17
- package/templates/fullstack-template/src/pages/index.js +0 -206
- /package/templates/{basic-app/server.js → wasm/go/wasm_exec.js} +0 -0
|
@@ -1,25 +1,43 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"scripts": {
|
|
8
|
-
"dev": "vite",
|
|
9
|
-
"build": "vite build",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"baraqex": "1.0.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "wwasm",
|
|
3
|
+
"private": true,
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Frontend Hamroun + Go WebAssembly integration example",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "vite",
|
|
9
|
+
"build": "vite build",
|
|
10
|
+
"preview": "vite preview",
|
|
11
|
+
"build:wasm": "node build-wasm.js",
|
|
12
|
+
"dev:wasm": "npm run build:wasm && npm run dev",
|
|
13
|
+
"build:go": "node build-wasm.js",
|
|
14
|
+
"clean": "rimraf dist public/*.wasm",
|
|
15
|
+
"test": "echo \"No tests specified\" && exit 0"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"baraqex": "^1.0.64",
|
|
19
|
+
"express": "^4.18.2",
|
|
20
|
+
"frontend-hamroun": "^1.2.80"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/express": "^4.17.17",
|
|
24
|
+
"@types/node": "^20.5.0",
|
|
25
|
+
"cross-env": "^7.0.3",
|
|
26
|
+
"esbuild": "^0.19.12",
|
|
27
|
+
"rimraf": "^5.0.0",
|
|
28
|
+
"typescript": "^5.0.0",
|
|
29
|
+
"vite": "^5.0.0"
|
|
30
|
+
},
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18.0.0"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"frontend-hamroun",
|
|
36
|
+
"webassembly",
|
|
37
|
+
"wasm",
|
|
38
|
+
"go",
|
|
39
|
+
"javascript",
|
|
40
|
+
"ssr",
|
|
41
|
+
"performance"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
Binary file
|
|
@@ -229,18 +229,7 @@
|
|
|
229
229
|
delete this._goRefCounts;
|
|
230
230
|
delete this._ids;
|
|
231
231
|
delete this._idPool;
|
|
232
|
-
|
|
233
|
-
// Modified: Don't call process.exit in Node.js testing environment
|
|
234
|
-
// Instead, just call the exit handler and resolve the promise
|
|
235
|
-
if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production') {
|
|
236
|
-
// In development/testing, just log and continue
|
|
237
|
-
console.log('[WASM] Go program finished with exit code:', code);
|
|
238
|
-
this.exit(code);
|
|
239
|
-
this._resolveExitPromise();
|
|
240
|
-
} else {
|
|
241
|
-
// In production, call the original exit behavior
|
|
242
|
-
this.exit(code);
|
|
243
|
-
}
|
|
232
|
+
this.exit(code);
|
|
244
233
|
},
|
|
245
234
|
|
|
246
235
|
// func wasmWrite(fd uintptr, p unsafe.Pointer, n int32)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { createServer } from 'frontend-hamroun';
|
|
2
|
+
import { loadGoWasmFromFile } from 'frontend-hamroun';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
|
|
9
|
+
// Create server instance
|
|
10
|
+
const server = createServer({
|
|
11
|
+
port: 3000,
|
|
12
|
+
staticDir: './public',
|
|
13
|
+
pagesDir: './src/pages',
|
|
14
|
+
apiDir: './src/api'
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// Server-side WASM integration example
|
|
18
|
+
async function initServerWasm() {
|
|
19
|
+
try {
|
|
20
|
+
console.log('🔄 Initializing server-side Go WASM...');
|
|
21
|
+
|
|
22
|
+
const wasmPath = path.join(__dirname, '..', 'public', 'example.wasm');
|
|
23
|
+
const wasmInstance = await loadGoWasmFromFile(wasmPath, {
|
|
24
|
+
debug: true,
|
|
25
|
+
onLoad: (instance) => {
|
|
26
|
+
console.log('✅ Go WASM loaded on server side');
|
|
27
|
+
|
|
28
|
+
// Test server-side WASM functions
|
|
29
|
+
try {
|
|
30
|
+
if (instance.functions.add) {
|
|
31
|
+
const result = instance.functions.add(5, 3);
|
|
32
|
+
console.log('Server WASM test - add(5, 3):', result);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (instance.functions.fibonacci) {
|
|
36
|
+
const fibResult = instance.functions.fibonacci(10);
|
|
37
|
+
console.log('Server WASM test - fibonacci(10):', fibResult);
|
|
38
|
+
}
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.log('Server WASM test functions not available:', error.message);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Make WASM instance available to API routes
|
|
46
|
+
server.getExpressApp().locals.wasm = wasmInstance;
|
|
47
|
+
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error('❌ Failed to initialize server-side WASM:', error);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// API route example using server-side WASM
|
|
54
|
+
server.getExpressApp().get('/api/wasm/compute', async (req, res) => {
|
|
55
|
+
try {
|
|
56
|
+
const { operation, a, b } = req.query;
|
|
57
|
+
const wasmInstance = req.app.locals.wasm;
|
|
58
|
+
|
|
59
|
+
if (!wasmInstance) {
|
|
60
|
+
return res.status(500).json({ error: 'WASM not initialized' });
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
let result;
|
|
64
|
+
switch (operation) {
|
|
65
|
+
case 'add':
|
|
66
|
+
if (wasmInstance.functions.add) {
|
|
67
|
+
result = wasmInstance.functions.add(Number(a), Number(b));
|
|
68
|
+
} else {
|
|
69
|
+
throw new Error('Add function not available');
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
case 'fibonacci':
|
|
73
|
+
if (wasmInstance.functions.fibonacci) {
|
|
74
|
+
result = wasmInstance.functions.fibonacci(Number(a));
|
|
75
|
+
} else {
|
|
76
|
+
throw new Error('Fibonacci function not available');
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
throw new Error('Unknown operation');
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
res.json({
|
|
84
|
+
success: true,
|
|
85
|
+
operation,
|
|
86
|
+
result,
|
|
87
|
+
serverTime: new Date().toISOString()
|
|
88
|
+
});
|
|
89
|
+
} catch (error) {
|
|
90
|
+
res.status(400).json({
|
|
91
|
+
success: false,
|
|
92
|
+
error: error.message
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Health check endpoint
|
|
98
|
+
server.getExpressApp().get('/api/health', (req, res) => {
|
|
99
|
+
res.json({
|
|
100
|
+
status: 'healthy',
|
|
101
|
+
wasm: !!req.app.locals.wasm,
|
|
102
|
+
timestamp: new Date().toISOString()
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Start server
|
|
107
|
+
async function startServer() {
|
|
108
|
+
try {
|
|
109
|
+
// Initialize WASM first
|
|
110
|
+
await initServerWasm();
|
|
111
|
+
|
|
112
|
+
// Start the server
|
|
113
|
+
await server.start();
|
|
114
|
+
|
|
115
|
+
console.log('🚀 Server started successfully!');
|
|
116
|
+
console.log('📋 Available endpoints:');
|
|
117
|
+
console.log(' • http://localhost:3000 - Main app');
|
|
118
|
+
console.log(' • http://localhost:3000/api/health - Health check');
|
|
119
|
+
console.log(' • http://localhost:3000/api/wasm/compute - WASM compute API');
|
|
120
|
+
console.log('');
|
|
121
|
+
console.log('💡 Example API calls:');
|
|
122
|
+
console.log(' • /api/wasm/compute?operation=add&a=5&b=3');
|
|
123
|
+
console.log(' • /api/wasm/compute?operation=fibonacci&a=10');
|
|
124
|
+
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error('❌ Failed to start server:', error);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Graceful shutdown
|
|
132
|
+
process.on('SIGTERM', async () => {
|
|
133
|
+
console.log('🛑 Received SIGTERM, shutting down gracefully...');
|
|
134
|
+
await server.stop();
|
|
135
|
+
process.exit(0);
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
process.on('SIGINT', async () => {
|
|
139
|
+
console.log('🛑 Received SIGINT, shutting down gracefully...');
|
|
140
|
+
await server.stop();
|
|
141
|
+
process.exit(0);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Start the server
|
|
145
|
+
startServer();
|
|
@@ -2,37 +2,55 @@ import { defineConfig } from 'vite';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
|
|
4
4
|
export default defineConfig({
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
jsxImportSource: 'frontend-hamroun',
|
|
5
|
+
resolve: {
|
|
6
|
+
alias: {
|
|
7
|
+
'frontend-hamroun': path.resolve(__dirname, 'node_modules/frontend-hamroun')
|
|
8
|
+
}
|
|
10
9
|
},
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
build: {
|
|
11
|
+
outDir: 'dist',
|
|
12
|
+
ssr: 'src/server.ts',
|
|
13
|
+
rollupOptions: {
|
|
14
|
+
input: {
|
|
15
|
+
client: './src/client.tsx',
|
|
16
|
+
server: './src/server.ts'
|
|
17
|
+
},
|
|
18
|
+
output: {
|
|
19
|
+
entryFileNames: '[name].js',
|
|
20
|
+
chunkFileNames: 'assets/[name]-[hash].js',
|
|
21
|
+
assetFileNames: 'assets/[name]-[hash].[ext]'
|
|
22
|
+
},
|
|
23
|
+
// Exclude WASM build script from hot reload and external dependencies
|
|
24
|
+
external: ['./build-wasm.js']
|
|
25
|
+
},
|
|
26
|
+
target: 'esnext'
|
|
27
|
+
},
|
|
28
|
+
esbuild: {
|
|
29
|
+
jsxFactory: '_jsx',
|
|
30
|
+
jsxFragment: '_Fragment',
|
|
31
|
+
jsxInject: `import { jsx as _jsx, Fragment as _Fragment } from 'frontend-hamroun'`
|
|
14
32
|
},
|
|
15
33
|
server: {
|
|
16
34
|
fs: {
|
|
17
|
-
allow: ['..'
|
|
35
|
+
allow: ['..']
|
|
18
36
|
},
|
|
19
37
|
headers: {
|
|
20
|
-
'Cross-Origin-
|
|
21
|
-
'Cross-Origin-
|
|
38
|
+
'Cross-Origin-Opener-Policy': 'same-origin',
|
|
39
|
+
'Cross-Origin-Embedder-Policy': 'require-corp'
|
|
40
|
+
},
|
|
41
|
+
watch: {
|
|
42
|
+
// Prevent watching go directory and wasm files to avoid infinite loops
|
|
43
|
+
ignored: [
|
|
44
|
+
'**/go/**',
|
|
45
|
+
'**/*.wasm',
|
|
46
|
+
'**/build-wasm.js',
|
|
47
|
+
'**/wasm_exec.js'
|
|
48
|
+
]
|
|
22
49
|
}
|
|
23
50
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
rollupOptions: {
|
|
27
|
-
output: {
|
|
28
|
-
format: 'es'
|
|
29
|
-
}
|
|
30
|
-
}
|
|
51
|
+
optimizeDeps: {
|
|
52
|
+
exclude: ['frontend-hamroun']
|
|
31
53
|
},
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
'frontend-hamroun/jsx-dev-runtime': 'frontend-hamroun',
|
|
35
|
-
'frontend-hamroun/jsx-runtime': 'frontend-hamroun'
|
|
36
|
-
}
|
|
37
|
-
}
|
|
54
|
+
// Prevent Vite from processing WASM files
|
|
55
|
+
assetsInclude: ['**/*.wasm']
|
|
38
56
|
});
|