frontend-hamroun 1.2.79 → 1.2.80

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 (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -1513
  3. package/bin/cli.js +505 -144
  4. package/dist/index.cjs +2 -0
  5. package/dist/index.cjs.map +1 -0
  6. package/dist/index.client.cjs +2 -0
  7. package/dist/index.client.cjs.map +1 -0
  8. package/dist/index.client.js +26 -0
  9. package/dist/index.client.js.map +1 -0
  10. package/dist/index.js +298 -1
  11. package/dist/index.js.map +1 -0
  12. package/dist/jsx-runtime.cjs +2 -0
  13. package/dist/jsx-runtime.cjs.map +1 -0
  14. package/dist/jsx-runtime.js +93 -1
  15. package/dist/jsx-runtime.js.map +1 -0
  16. package/dist/renderer-Bo9zkUZ_.js +52 -0
  17. package/dist/renderer-Bo9zkUZ_.js.map +1 -0
  18. package/dist/renderer-Din1y3YM.cjs +2 -0
  19. package/dist/renderer-Din1y3YM.cjs.map +1 -0
  20. package/dist/server-renderer-CqIpQ-od.cjs +2 -0
  21. package/dist/server-renderer-CqIpQ-od.cjs.map +1 -0
  22. package/dist/server-renderer-QHt45Ip2.js +255 -0
  23. package/dist/server-renderer-QHt45Ip2.js.map +1 -0
  24. package/dist/server-renderer.cjs +2 -0
  25. package/dist/server-renderer.cjs.map +1 -0
  26. package/dist/server-renderer.js +5 -1
  27. package/dist/server-renderer.js.map +1 -0
  28. package/package.json +77 -120
  29. package/templates/basic-app/build.js +22 -0
  30. package/templates/basic-app/bun.lock +196 -0
  31. package/templates/basic-app/dev.js +27 -0
  32. package/templates/basic-app/docs/rapport_pfe.aux +27 -27
  33. package/templates/basic-app/docs/rapport_pfe.out +10 -10
  34. package/templates/basic-app/docs/rapport_pfe.toc +14 -14
  35. package/templates/basic-app/esbuild.config.js +28 -0
  36. package/templates/basic-app/index.html +1 -1
  37. package/templates/{fullstack-app → basic-app}/package-lock.json +4185 -5094
  38. package/templates/basic-app/package.json +29 -28
  39. package/templates/basic-app/server.js +24 -0
  40. package/templates/basic-app/src/App.tsx +26 -0
  41. package/templates/basic-app/src/client.tsx +11 -0
  42. package/templates/basic-app/src/components/Counter.tsx +18 -0
  43. package/templates/basic-app/src/jsx-shim.ts +4 -0
  44. package/templates/basic-app/src/main.tsx +0 -1
  45. package/templates/basic-app/src/server.ts +52 -0
  46. package/templates/basic-app/tsconfig.server.json +11 -0
  47. package/templates/fullstack-app/build/main.css +874 -874
  48. package/templates/fullstack-app/build/main.css.map +7 -7
  49. package/templates/fullstack-app/build/main.js +967 -967
  50. package/templates/fullstack-app/build/main.js.map +7 -7
  51. package/templates/fullstack-app/public/styles.css +768 -768
  52. package/templates/go/example.go +99 -154
  53. package/templates/go-wasm-app/babel.config.js +2 -8
  54. package/templates/go-wasm-app/package.json +12 -21
  55. package/templates/go-wasm-app/public/wasm/wasm_exec.js +561 -561
  56. package/templates/go-wasm-app/public/wasm/wasm_exec_node.js +39 -39
  57. package/templates/go-wasm-app/server.js +510 -59
  58. package/templates/go-wasm-app/src/app.js +2 -22
  59. package/templates/go-wasm-app/src/wasm/example.go +75 -75
  60. package/templates/go-wasm-app/vite.config.js +5 -16
  61. package/templates/ssr-template/server.js +2 -2
  62. package/templates/ssr-template/vite.config.js +5 -16
  63. package/dist/Counter.d.ts +0 -0
  64. package/dist/batch/package.json +0 -16
  65. package/dist/client-router/package.json +0 -16
  66. package/dist/component/package.json +0 -16
  67. package/dist/context/package.json +0 -16
  68. package/dist/event-bus/package.json +0 -16
  69. package/dist/forms/package.json +0 -16
  70. package/dist/hooks/package.json +0 -16
  71. package/dist/hooks-0728361a.cjs +0 -1
  72. package/dist/hooks-b58f947c.js +0 -133
  73. package/dist/hooks.js +0 -1
  74. package/dist/hooks.mjs +0 -13
  75. package/dist/index.mjs +0 -137
  76. package/dist/jsx-runtime/package.json +0 -16
  77. package/dist/jsx-runtime.mjs +0 -64
  78. package/dist/lifecycle-events/package.json +0 -16
  79. package/dist/package.json +0 -71
  80. package/dist/render-component/package.json +0 -16
  81. package/dist/renderer/package.json +0 -16
  82. package/dist/renderer.js +0 -1
  83. package/dist/renderer.mjs +0 -27
  84. package/dist/router/package.json +0 -16
  85. package/dist/server/package.json +0 -17
  86. package/dist/server/src/batch.d.ts +0 -3
  87. package/dist/server/src/batch.js +0 -23
  88. package/dist/server/src/batch.js.map +0 -1
  89. package/dist/server/src/client-router.d.ts +0 -60
  90. package/dist/server/src/client-router.js +0 -210
  91. package/dist/server/src/client-router.js.map +0 -1
  92. package/dist/server/src/component.d.ts +0 -14
  93. package/dist/server/src/component.js +0 -106
  94. package/dist/server/src/component.js.map +0 -1
  95. package/dist/server/src/context.d.ts +0 -13
  96. package/dist/server/src/context.js +0 -21
  97. package/dist/server/src/context.js.map +0 -1
  98. package/dist/server/src/event-bus.d.ts +0 -23
  99. package/dist/server/src/event-bus.js +0 -75
  100. package/dist/server/src/event-bus.js.map +0 -1
  101. package/dist/server/src/forms.d.ts +0 -40
  102. package/dist/server/src/forms.js +0 -148
  103. package/dist/server/src/forms.js.map +0 -1
  104. package/dist/server/src/hooks.d.ts +0 -12
  105. package/dist/server/src/hooks.js +0 -170
  106. package/dist/server/src/hooks.js.map +0 -1
  107. package/dist/server/src/index.client.d.ts +0 -12
  108. package/dist/server/src/index.client.js +0 -14
  109. package/dist/server/src/index.client.js.map +0 -1
  110. package/dist/server/src/index.d.ts +0 -88
  111. package/dist/server/src/index.js +0 -79
  112. package/dist/server/src/index.js.map +0 -1
  113. package/dist/server/src/jsx-runtime/jsx-dev-runtime.d.ts +0 -1
  114. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js +0 -2
  115. package/dist/server/src/jsx-runtime/jsx-dev-runtime.js.map +0 -1
  116. package/dist/server/src/jsx-runtime/jsx-runtime.d.ts +0 -4
  117. package/dist/server/src/jsx-runtime/jsx-runtime.js +0 -41
  118. package/dist/server/src/jsx-runtime/jsx-runtime.js.map +0 -1
  119. package/dist/server/src/jsx-runtime.d.ts +0 -20
  120. package/dist/server/src/jsx-runtime.js +0 -105
  121. package/dist/server/src/jsx-runtime.js.map +0 -1
  122. package/dist/server/src/lifecycle-events.d.ts +0 -108
  123. package/dist/server/src/lifecycle-events.js +0 -177
  124. package/dist/server/src/lifecycle-events.js.map +0 -1
  125. package/dist/server/src/renderComponent.d.ts +0 -13
  126. package/dist/server/src/renderComponent.js +0 -30
  127. package/dist/server/src/renderComponent.js.map +0 -1
  128. package/dist/server/src/renderer.d.ts +0 -2
  129. package/dist/server/src/renderer.js +0 -31
  130. package/dist/server/src/renderer.js.map +0 -1
  131. package/dist/server/src/router.d.ts +0 -55
  132. package/dist/server/src/router.js +0 -166
  133. package/dist/server/src/router.js.map +0 -1
  134. package/dist/server/src/server/api-router.d.ts +0 -15
  135. package/dist/server/src/server/api-router.js +0 -111
  136. package/dist/server/src/server/api-router.js.map +0 -1
  137. package/dist/server/src/server/auth.d.ts +0 -32
  138. package/dist/server/src/server/auth.js +0 -80
  139. package/dist/server/src/server/auth.js.map +0 -1
  140. package/dist/server/src/server/database.d.ts +0 -24
  141. package/dist/server/src/server/database.js +0 -135
  142. package/dist/server/src/server/database.js.map +0 -1
  143. package/dist/server/src/server/index.d.ts +0 -116
  144. package/dist/server/src/server/index.js +0 -508
  145. package/dist/server/src/server/index.js.map +0 -1
  146. package/dist/server/src/server/middleware.d.ts +0 -11
  147. package/dist/server/src/server/middleware.js +0 -46
  148. package/dist/server/src/server/middleware.js.map +0 -1
  149. package/dist/server/src/server/server.d.ts +0 -9
  150. package/dist/server/src/server/server.js +0 -87
  151. package/dist/server/src/server/server.js.map +0 -1
  152. package/dist/server/src/server/templates.d.ts +0 -30
  153. package/dist/server/src/server/templates.js +0 -208
  154. package/dist/server/src/server/templates.js.map +0 -1
  155. package/dist/server/src/server/types.d.ts +0 -38
  156. package/dist/server/src/server/types.js +0 -4
  157. package/dist/server/src/server/types.js.map +0 -1
  158. package/dist/server/src/server/utils.d.ts +0 -70
  159. package/dist/server/src/server/utils.js +0 -156
  160. package/dist/server/src/server/utils.js.map +0 -1
  161. package/dist/server/src/server/wasm.d.ts +0 -9
  162. package/dist/server/src/server/wasm.js +0 -117
  163. package/dist/server/src/server/wasm.js.map +0 -1
  164. package/dist/server/src/server-renderer.d.ts +0 -5
  165. package/dist/server/src/server-renderer.js +0 -106
  166. package/dist/server/src/server-renderer.js.map +0 -1
  167. package/dist/server/src/server-types.d.ts +0 -42
  168. package/dist/server/src/server-types.js +0 -6
  169. package/dist/server/src/server-types.js.map +0 -1
  170. package/dist/server/src/store.d.ts +0 -41
  171. package/dist/server/src/store.js +0 -99
  172. package/dist/server/src/store.js.map +0 -1
  173. package/dist/server/src/types.d.ts +0 -19
  174. package/dist/server/src/types.js +0 -2
  175. package/dist/server/src/types.js.map +0 -1
  176. package/dist/server/src/utils.d.ts +0 -46
  177. package/dist/server/src/utils.js +0 -144
  178. package/dist/server/src/utils.js.map +0 -1
  179. package/dist/server/src/vdom.d.ts +0 -8
  180. package/dist/server/src/vdom.js +0 -22
  181. package/dist/server/src/vdom.js.map +0 -1
  182. package/dist/server/src/wasm.d.ts +0 -36
  183. package/dist/server/src/wasm.js +0 -159
  184. package/dist/server/src/wasm.js.map +0 -1
  185. package/dist/server/tsconfig.server.tsbuildinfo +0 -1
  186. package/dist/server-renderer/package.json +0 -16
  187. package/dist/server-renderer.mjs +0 -64
  188. package/dist/store/package.json +0 -16
  189. package/dist/types/package.json +0 -16
  190. package/dist/utils/package.json +0 -16
  191. package/dist/vdom/package.json +0 -16
  192. package/dist/wasm/package.json +0 -16
  193. package/dist/wasm.js +0 -1
  194. package/dist/wasm.mjs +0 -103
  195. package/templates/basic-app/docs/rapport_pfe.log +0 -399
  196. package/templates/complete-app/client.js +0 -58
  197. package/templates/complete-app/package-lock.json +0 -2536
  198. package/templates/complete-app/package.json +0 -17
  199. package/templates/complete-app/pages/about.js +0 -119
  200. package/templates/complete-app/pages/index.js +0 -157
  201. package/templates/complete-app/pages/wasm-demo.js +0 -290
  202. package/templates/complete-app/public/client.js +0 -80
  203. package/templates/complete-app/public/index.html +0 -47
  204. package/templates/complete-app/public/styles.css +0 -579
  205. package/templates/complete-app/readme.md +0 -188
  206. package/templates/complete-app/server.js +0 -417
  207. package/templates/complete-app/server.ts +0 -275
  208. package/templates/complete-app/src/App.tsx +0 -59
  209. package/templates/complete-app/src/client.ts +0 -61
  210. package/templates/complete-app/src/client.tsx +0 -18
  211. package/templates/complete-app/src/pages/index.tsx +0 -51
  212. package/templates/complete-app/src/server.ts +0 -218
  213. package/templates/complete-app/tsconfig.json +0 -22
  214. package/templates/complete-app/tsconfig.server.json +0 -19
  215. package/templates/complete-app/vite.config.js +0 -57
  216. package/templates/complete-app/vite.config.ts +0 -30
  217. package/templates/go-wasm-app/build.config.js +0 -62
  218. package/templates/go-wasm-app/build.js +0 -218
  219. package/templates/go-wasm-app/package-lock.json +0 -3732
@@ -1,22 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ESNext",
4
- "useDefineForClassFields": true,
5
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
6
- "allowJs": false,
7
- "skipLibCheck": true,
8
- "esModuleInterop": true,
9
- "allowSyntheticDefaultImports": true,
10
- "strict": true,
11
- "forceConsistentCasingInFileNames": true,
12
- "module": "ESNext",
13
- "moduleResolution": "Node",
14
- "resolveJsonModule": true,
15
- "isolatedModules": true,
16
- "noEmit": true,
17
- "jsx": "preserve",
18
- "jsxFactory": "createElement",
19
- "jsxFragmentFactory": "Fragment"
20
- },
21
- "include": ["src"]
22
- }
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "target": "ES2020",
5
- "module": "NodeNext",
6
- "moduleResolution": "NodeNext",
7
- "esModuleInterop": true,
8
- "outDir": "./dist/server",
9
- "declaration": true,
10
- "sourceMap": true,
11
- "strict": true,
12
- "skipLibCheck": true,
13
- "jsx": "react",
14
- "jsxFactory": "createElement",
15
- "jsxFragmentFactory": "Fragment"
16
- },
17
- "include": ["server.ts", "src/pages/**/*.tsx"],
18
- "exclude": ["node_modules", "dist"]
19
- }
@@ -1,57 +0,0 @@
1
- import { defineConfig } from 'vite';
2
- import { resolve } from 'path';
3
-
4
- export default defineConfig({
5
- // Configure JSX
6
- esbuild: {
7
- jsxFactory: 'createElement',
8
- jsxFragment: 'Fragment',
9
- jsxInject: `import { createElement, Fragment } from 'frontend-hamroun'`
10
- },
11
-
12
- // Configure build
13
- build: {
14
- outDir: 'dist/public',
15
- emptyOutDir: true,
16
- rollupOptions: {
17
- input: {
18
- client: resolve(__dirname, 'src/client.ts')
19
- },
20
- output: [
21
- {
22
- // ESM output
23
- entryFileNames: 'assets/[name].mjs',
24
- chunkFileNames: 'assets/[name]-[hash].mjs',
25
- assetFileNames: 'assets/[name]-[hash].[ext]',
26
- format: 'es',
27
- },
28
- {
29
- // CommonJS output
30
- entryFileNames: 'assets/[name].js',
31
- chunkFileNames: 'assets/[name]-[hash].js',
32
- assetFileNames: 'assets/[name]-[hash].[ext]',
33
- format: 'cjs',
34
- }
35
- ]
36
- }
37
- },
38
-
39
- // Add optimizations for frontend-hamroun
40
- optimizeDeps: {
41
- include: ['frontend-hamroun']
42
- },
43
-
44
- // Resolve aliases for better imports
45
- resolve: {
46
- alias: {
47
- '@': resolve(__dirname, 'src')
48
- }
49
- },
50
-
51
- // Development server
52
- server: {
53
- proxy: {
54
- '/api': 'http://localhost:3000'
55
- }
56
- }
57
- });
@@ -1,30 +0,0 @@
1
- import { defineConfig } from 'vite';
2
- import path from 'path';
3
-
4
- export default defineConfig({
5
- resolve: {
6
- alias: {
7
- 'frontend-hamroun': path.resolve(__dirname, 'node_modules/frontend-hamroun')
8
- }
9
- },
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
- }
24
- },
25
- esbuild: {
26
- jsxFactory: '_jsx',
27
- jsxFragment: '_Fragment',
28
- jsxInject: `import { jsx as _jsx, Fragment as _Fragment } from 'frontend-hamroun'`
29
- }
30
- });
@@ -1,62 +0,0 @@
1
- // CommonJS/ESM compatible build configuration
2
- const buildConfig = {
3
- /**
4
- * Determines if we should build for dual module support
5
- */
6
- dualModuleSupport: true,
7
-
8
- /**
9
- * Entry points for both client and server
10
- */
11
- entryPoints: {
12
- client: 'src/client.js',
13
- server: 'src/server.js'
14
- },
15
-
16
- /**
17
- * Output formats to generate
18
- */
19
- outputFormats: ['esm', 'cjs'],
20
-
21
- /**
22
- * Output directory configuration
23
- */
24
- output: {
25
- dir: 'dist',
26
- client: {
27
- esm: 'assets/[name].mjs',
28
- cjs: 'assets/[name].js'
29
- },
30
- server: {
31
- esm: 'server/[name].mjs',
32
- cjs: 'server/[name].js'
33
- }
34
- },
35
-
36
- /**
37
- * WebAssembly configuration
38
- */
39
- wasm: {
40
- enabled: true,
41
- goBinaryPath: 'go',
42
- sourceDir: 'src/wasm',
43
- outputDir: 'public/wasm',
44
- copyGoRuntime: true
45
- },
46
-
47
- /**
48
- * Additional build options
49
- */
50
- options: {
51
- minify: process.env.NODE_ENV === 'production',
52
- sourcemap: true,
53
- target: 'es2020'
54
- }
55
- };
56
-
57
- // Make it work in both ESM and CommonJS environments
58
- if (typeof module !== 'undefined' && module.exports) {
59
- module.exports = buildConfig;
60
- }
61
-
62
- export default buildConfig;
@@ -1,218 +0,0 @@
1
- // Support both ESM and CommonJS imports
2
- const path = require('path');
3
- const fs = require('fs');
4
- const esbuild = require('esbuild');
5
- const { execSync } = require('child_process');
6
- const config = require('./build.config.js');
7
-
8
- // Define colors for console output
9
- const colors = {
10
- reset: "\x1b[0m",
11
- bright: "\x1b[1m",
12
- dim: "\x1b[2m",
13
- underscore: "\x1b[4m",
14
- blink: "\x1b[5m",
15
- cyan: "\x1b[36m",
16
- green: "\x1b[32m",
17
- yellow: "\x1b[33m",
18
- red: "\x1b[31m"
19
- };
20
-
21
- // Helper for formatted console logs
22
- function log(message, type = 'info') {
23
- const timestamp = new Date().toISOString().split('T')[1].split('.')[0];
24
- const prefix = {
25
- info: `${colors.bright}${colors.cyan}[INFO]${colors.reset}`,
26
- success: `${colors.bright}${colors.green}[SUCCESS]${colors.reset}`,
27
- warning: `${colors.bright}${colors.yellow}[WARNING]${colors.reset}`,
28
- error: `${colors.bright}${colors.red}[ERROR]${colors.reset}`
29
- };
30
-
31
- console.log(`${colors.dim}[${timestamp}]${colors.reset} ${prefix[type] || prefix.info} ${message}`);
32
- }
33
-
34
- // Main build function
35
- async function build() {
36
- try {
37
- log(`Starting build process (${process.env.NODE_ENV || 'development'} mode)`);
38
-
39
- // Ensure output directories
40
- ensureDir(path.join(__dirname, 'dist'));
41
- ensureDir(path.join(__dirname, 'dist/server'));
42
- ensureDir(path.join(__dirname, 'dist/assets'));
43
- ensureDir(path.join(__dirname, 'public/wasm'));
44
-
45
- // Build the WASM modules if enabled
46
- if (config.wasm.enabled) {
47
- await buildWasmModules();
48
- }
49
-
50
- // Build the client code
51
- await buildClient();
52
-
53
- // Build the server code if it exists
54
- if (fs.existsSync(path.join(__dirname, config.entryPoints.server))) {
55
- await buildServer();
56
- }
57
-
58
- log('Build completed successfully', 'success');
59
- } catch (error) {
60
- log(`Build failed: ${error.message}`, 'error');
61
- console.error(error);
62
- process.exit(1);
63
- }
64
- }
65
-
66
- // Build WebAssembly modules
67
- async function buildWasmModules() {
68
- const sourceDir = path.join(__dirname, config.wasm.sourceDir);
69
- const outputDir = path.join(__dirname, config.wasm.outputDir);
70
-
71
- if (!fs.existsSync(sourceDir)) {
72
- log(`WASM source directory not found: ${sourceDir}`, 'warning');
73
- return;
74
- }
75
-
76
- log('Building WebAssembly modules...');
77
-
78
- // Get all .go files that need to be compiled
79
- const goFiles = fs.readdirSync(sourceDir)
80
- .filter(file => file.endsWith('.go'));
81
-
82
- if (goFiles.length === 0) {
83
- log('No Go files found to compile', 'warning');
84
- return;
85
- }
86
-
87
- // Compile each Go file to WASM
88
- for (const goFile of goFiles) {
89
- const goFilePath = path.join(sourceDir, goFile);
90
- const wasmFileName = goFile.replace('.go', '.wasm');
91
- const wasmFilePath = path.join(outputDir, wasmFileName);
92
-
93
- log(`Compiling ${goFile} to WebAssembly...`);
94
-
95
- try {
96
- // Set environment variables for Go WASM compilation
97
- const env = {
98
- ...process.env,
99
- GOOS: 'js',
100
- GOARCH: 'wasm'
101
- };
102
-
103
- // Compile Go to WASM
104
- execSync(`${config.wasm.goBinaryPath} build -o "${wasmFilePath}" "${goFilePath}"`, {
105
- env,
106
- stdio: 'inherit'
107
- });
108
-
109
- log(`Successfully compiled ${goFile} to ${wasmFileName}`, 'success');
110
- } catch (error) {
111
- log(`Failed to compile ${goFile}: ${error.message}`, 'error');
112
- throw error;
113
- }
114
- }
115
-
116
- // Copy wasm_exec.js from Go installation to public folder
117
- if (config.wasm.copyGoRuntime) {
118
- try {
119
- const goRoot = execSync(`${config.wasm.goBinaryPath} env GOROOT`, { encoding: 'utf8' }).trim();
120
- const wasmExecSrc = path.join(goRoot, 'misc', 'wasm', 'wasm_exec.js');
121
- const wasmExecDest = path.join(outputDir, 'wasm_exec.js');
122
-
123
- fs.copyFileSync(wasmExecSrc, wasmExecDest);
124
- log('Copied wasm_exec.js runtime to public folder', 'success');
125
- } catch (error) {
126
- log(`Failed to copy wasm_exec.js: ${error.message}`, 'warning');
127
- }
128
- }
129
- }
130
-
131
- // Build client code with esbuild
132
- async function buildClient() {
133
- const formats = config.dualModuleSupport ? config.outputFormats : ['esm'];
134
-
135
- for (const format of formats) {
136
- const outfile = path.join(
137
- __dirname,
138
- 'dist',
139
- config.output.client[format].replace('[name]', 'client')
140
- );
141
-
142
- log(`Building client bundle (${format})...`);
143
-
144
- await esbuild.build({
145
- entryPoints: [path.join(__dirname, config.entryPoints.client)],
146
- bundle: true,
147
- outfile,
148
- format,
149
- platform: 'browser',
150
- target: config.options.target,
151
- minify: config.options.minify,
152
- sourcemap: config.options.sourcemap,
153
- define: {
154
- 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
155
- '__ESM__': format === 'esm' ? 'true' : 'false'
156
- },
157
- jsxFactory: 'jsx',
158
- jsxFragment: 'Fragment',
159
- banner: {
160
- js: format === 'esm'
161
- ? `import { jsx, Fragment } from 'frontend-hamroun/jsx-runtime';`
162
- : `const { jsx, Fragment } = require('frontend-hamroun/jsx-runtime');`
163
- }
164
- });
165
- }
166
-
167
- log('Client build completed', 'success');
168
- }
169
-
170
- // Build server code with esbuild
171
- async function buildServer() {
172
- const formats = config.dualModuleSupport ? config.outputFormats : ['cjs'];
173
-
174
- for (const format of formats) {
175
- const outfile = path.join(
176
- __dirname,
177
- 'dist',
178
- config.output.server[format].replace('[name]', 'server')
179
- );
180
-
181
- log(`Building server bundle (${format})...`);
182
-
183
- await esbuild.build({
184
- entryPoints: [path.join(__dirname, config.entryPoints.server)],
185
- bundle: true,
186
- outfile,
187
- format,
188
- platform: 'node',
189
- target: config.options.target,
190
- minify: config.options.minify,
191
- sourcemap: config.options.sourcemap,
192
- external: ['express', 'cors', 'path', 'fs', 'frontend-hamroun', 'frontend-hamroun/*'],
193
- define: {
194
- 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
195
- '__ESM__': format === 'esm' ? 'true' : 'false'
196
- }
197
- });
198
- }
199
-
200
- log('Server build completed', 'success');
201
- }
202
-
203
- // Utility to ensure directory exists
204
- function ensureDir(dir) {
205
- if (!fs.existsSync(dir)) {
206
- fs.mkdirSync(dir, { recursive: true });
207
- }
208
- }
209
-
210
- // Execute the build
211
- build();
212
-
213
- // Support both CommonJS and ESM
214
- if (typeof module !== 'undefined' && module.exports) {
215
- module.exports = { build };
216
- }
217
-
218
- export { build };