baraqex 1.0.39 → 1.0.42

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/dist/browser.js CHANGED
@@ -117,6 +117,7 @@ function useContext(context) {
117
117
  return {};
118
118
  }
119
119
  var currentRender = 0;
120
+ var isSSR = false;
120
121
  var states = /* @__PURE__ */ new Map();
121
122
  var stateIndices = /* @__PURE__ */ new Map();
122
123
  var effects = /* @__PURE__ */ new Map();
@@ -130,13 +131,16 @@ function setRenderCallback(callback, element, container) {
130
131
  globalContainer = container;
131
132
  currentElement = element;
132
133
  }
133
- function prepareRender(component = null) {
134
+ function prepareRender(component = null, isServerSideRender = false) {
134
135
  currentRender++;
136
+ isSSR = isServerSideRender;
135
137
  stateIndices.set(currentRender, 0);
138
+ if (!states.has(currentRender)) {
139
+ states.set(currentRender, []);
140
+ }
136
141
  return currentRender;
137
142
  }
138
143
  function finishRender() {
139
- currentRender = 0;
140
144
  }
141
145
  function useState(initial) {
142
146
  if (!currentRender) {
@@ -152,6 +156,9 @@ function useState(initial) {
152
156
  }
153
157
  const state = componentStates[index];
154
158
  const setState = (newValue) => {
159
+ if (isSSR) {
160
+ return;
161
+ }
155
162
  const nextValue = typeof newValue === "function" ? newValue(componentStates[index]) : newValue;
156
163
  if (componentStates[index] === nextValue)
157
164
  return;
@@ -168,6 +175,11 @@ function useState(initial) {
168
175
  function useEffect(callback, deps) {
169
176
  if (!currentRender)
170
177
  throw new Error("useEffect must be called within a render");
178
+ if (isSSR) {
179
+ const effectIndex2 = stateIndices.get(currentRender) || 0;
180
+ stateIndices.set(currentRender, effectIndex2 + 1);
181
+ return;
182
+ }
171
183
  const effectIndex = stateIndices.get(currentRender) || 0;
172
184
  if (!effects.has(currentRender)) {
173
185
  effects.set(currentRender, []);
@@ -223,6 +235,9 @@ function useRef(initial) {
223
235
  }
224
236
  async function rerender(rendererId) {
225
237
  try {
238
+ if (isSSR) {
239
+ return;
240
+ }
226
241
  const componentEffects = effects.get(rendererId);
227
242
  if (componentEffects) {
228
243
  componentEffects.forEach((effect) => {
@@ -259,7 +274,6 @@ async function render(element, container) {
259
274
  console.log("Render completed successfully");
260
275
  } catch (error) {
261
276
  console.error("Error during render:", error);
262
- finishRender();
263
277
  throw error;
264
278
  }
265
279
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../node_modules/frontend-hamroun/dist/index.js", "../src/wasm.ts", "../src/server/templates.ts", "../src/browser.ts"],
4
- "sourcesContent": ["function jsx(type, props) {\n console.log('JSX Transform:', { type, props });\n const processedProps = { ...props };\n // Handle children properly\n if (arguments.length > 2) {\n processedProps.children = Array.prototype.slice.call(arguments, 2);\n }\n return { type, props: processedProps };\n}\nconst Fragment = ({ children }) => children;\nasync function createElement(vnode) {\n console.log('Creating element from:', vnode);\n // Handle primitives and null\n if (vnode == null) {\n return document.createTextNode('');\n }\n if (typeof vnode === 'boolean') {\n return document.createTextNode('');\n }\n if (typeof vnode === 'number' || typeof vnode === 'string') {\n return document.createTextNode(String(vnode));\n }\n // Handle arrays\n if (Array.isArray(vnode)) {\n const fragment = document.createDocumentFragment();\n for (const child of vnode) {\n const node = await createElement(child);\n fragment.appendChild(node);\n }\n return fragment;\n }\n // Handle VNode\n if ('type' in vnode && vnode.props !== undefined) {\n const { type, props } = vnode;\n // Handle function components\n if (typeof type === 'function') {\n try {\n const result = await type(props || {});\n const node = await createElement(result);\n if (node instanceof Element) {\n node.setAttribute('data-component-id', type.name || type.toString());\n }\n return node;\n }\n catch (error) {\n console.error('Error rendering component:', error);\n return document.createTextNode('');\n }\n }\n // Create DOM element\n const element = document.createElement(type);\n // Handle props\n for (const [key, value] of Object.entries(props || {})) {\n if (key === 'children')\n continue;\n if (key.startsWith('on') && typeof value === 'function') {\n const eventName = key.toLowerCase().slice(2);\n // Remove existing event listener if any\n const existingHandler = element.__events?.[eventName];\n if (existingHandler) {\n element.removeEventListener(eventName, existingHandler);\n }\n // Add new event listener\n element.addEventListener(eventName, value);\n if (!element.__events) {\n element.__events = {};\n }\n element.__events[eventName] = value;\n }\n else if (key === 'style' && typeof value === 'object') {\n Object.assign(element.style, value);\n }\n else if (key === 'className') {\n element.setAttribute('class', String(value));\n }\n else if (key !== 'key' && key !== 'ref') {\n element.setAttribute(key, String(value));\n }\n }\n // Handle children\n const children = props?.children;\n if (children != null) {\n const childArray = Array.isArray(children) ? children.flat() : [children];\n for (const child of childArray) {\n const childNode = await createElement(child);\n element.appendChild(childNode);\n }\n }\n return element;\n }\n // Handle other objects by converting to string\n return document.createTextNode(String(vnode));\n}\n\nlet isBatching = false;\nconst queue = [];\nfunction batchUpdates(fn) {\n if (isBatching) {\n queue.push(fn);\n return;\n }\n isBatching = true;\n try {\n fn();\n while (queue.length > 0) {\n const nextFn = queue.shift();\n nextFn?.();\n }\n }\n finally {\n isBatching = false;\n }\n}\n\nconst contexts = new Map();\nfunction createContext(defaultValue) {\n const contextId = Symbol('context');\n const Provider = ({ value, children }) => {\n contexts.set(contextId, value);\n return children;\n };\n const Consumer = ({ children }) => {\n const value = contexts.get(contextId) ?? defaultValue;\n return children(value);\n };\n const context = {\n Provider,\n Consumer,\n displayName: 'Context'\n };\n return context;\n}\nfunction useContext(context) {\n // In a real implementation, this would access the context value from the component tree\n // For now, returning a default value to satisfy TypeScript\n return {};\n}\n\n// Current render ID counter\nlet currentRender = 0;\n// State storage\nconst states = new Map();\nconst stateIndices = new Map();\nconst effects = new Map();\nconst memos = new Map();\nconst refs = new Map();\n// Rendering callbacks\nlet globalRenderCallback = null;\nlet globalContainer = null;\nlet currentElement = null;\nfunction setRenderCallback(callback, element, container) {\n globalRenderCallback = callback;\n globalContainer = container;\n currentElement = element;\n}\nfunction prepareRender(component = null) {\n currentRender++;\n stateIndices.set(currentRender, 0);\n return currentRender;\n}\nfunction finishRender() {\n currentRender = 0;\n}\nfunction useState(initial) {\n if (!currentRender) {\n throw new Error(\"useState must be called within a render\");\n }\n if (!states.has(currentRender)) {\n states.set(currentRender, []);\n }\n const componentStates = states.get(currentRender);\n const index = stateIndices.get(currentRender) || 0;\n if (index >= componentStates.length) {\n componentStates.push(initial);\n }\n const state = componentStates[index];\n const setState = (newValue) => {\n const nextValue = typeof newValue === 'function'\n ? newValue(componentStates[index])\n : newValue;\n if (componentStates[index] === nextValue)\n return;\n componentStates[index] = nextValue;\n if (isBatching) {\n batchUpdates(() => rerender(currentRender));\n }\n else {\n rerender(currentRender);\n }\n };\n stateIndices.set(currentRender, index + 1);\n return [state, setState];\n}\nfunction useEffect(callback, deps) {\n if (!currentRender)\n throw new Error(\"useEffect must be called within a render\");\n const effectIndex = stateIndices.get(currentRender) || 0;\n if (!effects.has(currentRender)) {\n effects.set(currentRender, []);\n }\n const componentEffects = effects.get(currentRender);\n const prevEffect = componentEffects[effectIndex];\n if (!prevEffect || !deps || !prevEffect.deps || deps.some((dep, i) => dep !== prevEffect.deps[i])) {\n if (prevEffect?.cleanup) {\n prevEffect.cleanup();\n }\n // Schedule effect execution after render is complete\n queueMicrotask(() => {\n const cleanup = callback() || undefined;\n componentEffects[effectIndex] = { cleanup, deps: deps || [] };\n });\n }\n stateIndices.set(currentRender, effectIndex + 1);\n}\nfunction useMemo(factory, deps) {\n if (!currentRender)\n throw new Error(\"useMemo must be called within a render\");\n const memoIndex = stateIndices.get(currentRender) || 0;\n if (!memos.has(currentRender)) {\n memos.set(currentRender, []);\n }\n const componentMemos = memos.get(currentRender);\n const prevMemo = componentMemos[memoIndex];\n if (!prevMemo || (deps && deps.some((dep, i) => !Object.is(dep, prevMemo.deps[i])))) {\n const value = factory();\n componentMemos[memoIndex] = { value, deps: deps || [] };\n stateIndices.set(currentRender, memoIndex + 1);\n return value;\n }\n stateIndices.set(currentRender, memoIndex + 1);\n return prevMemo.value;\n}\nfunction useRef(initial) {\n if (!currentRender)\n throw new Error(\"useRef must be called within a render\");\n const refIndex = stateIndices.get(currentRender) || 0;\n if (!refs.has(currentRender)) {\n refs.set(currentRender, []);\n }\n const componentRefs = refs.get(currentRender);\n if (refIndex >= componentRefs.length) {\n const ref = { current: initial };\n componentRefs.push(ref);\n stateIndices.set(currentRender, refIndex + 1);\n return ref;\n }\n const ref = componentRefs[refIndex];\n stateIndices.set(currentRender, refIndex + 1);\n return ref;\n}\nasync function rerender(rendererId) {\n try {\n // Clean up effects\n const componentEffects = effects.get(rendererId);\n if (componentEffects) {\n componentEffects.forEach(effect => {\n if (effect.cleanup)\n effect.cleanup();\n });\n effects.set(rendererId, []);\n }\n // Trigger re-render\n if (globalRenderCallback && globalContainer && currentElement) {\n await globalRenderCallback(currentElement, globalContainer);\n }\n }\n catch (error) {\n console.error('Error during rerender:', error);\n }\n}\nfunction useErrorBoundary() {\n const [error, setError] = useState(null);\n return [error, () => setError(null)];\n}\n\n// Render function for client-side rendering\nasync function render(element, container) {\n try {\n // Set up render callback for state updates\n setRenderCallback(render, element, container);\n // Prepare render context\n const renderId = prepareRender(element);\n // Create DOM nodes from virtual elements\n const domNode = await createElement(element);\n // Clear container and append new content\n // Handle both Element and DocumentFragment cases\n if (container instanceof Element) {\n container.innerHTML = '';\n }\n else {\n // For DocumentFragment, clear all children\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n }\n container.appendChild(domNode);\n // Finish render\n finishRender();\n console.log('Render completed successfully');\n }\n catch (error) {\n console.error('Error during render:', error);\n // Clean up render context on error\n finishRender();\n throw error;\n }\n}\n// Hydrate function for client-side hydration of SSR content\nasync function hydrate(element, container) {\n try {\n console.log('Starting hydration...');\n // For now, hydrate works the same as render\n // In a more advanced implementation, this would preserve existing DOM\n // and only attach event listeners and initialize state\n await render(element, container);\n console.log('Hydration completed successfully');\n }\n catch (error) {\n console.error('Error during hydration:', error);\n throw error;\n }\n}\n\nasync function renderToString(element) {\n prepareRender(true); // Mark as SSR\n try {\n const html = await renderNodeToString(element);\n return html;\n }\n finally {\n finishRender();\n }\n}\nasync function renderNodeToString(node) {\n // Handle null, undefined, boolean\n if (node == null || typeof node === 'boolean') {\n return '';\n }\n // Handle primitives\n if (typeof node === 'string' || typeof node === 'number') {\n return escapeHtml(String(node));\n }\n // Handle arrays\n if (Array.isArray(node)) {\n const results = await Promise.all(node.map(child => renderNodeToString(child)));\n return results.join('');\n }\n // Handle objects with type and props (React-like elements)\n if (node && typeof node === 'object' && 'type' in node) {\n const { type, props = {} } = node;\n // Handle function components\n if (typeof type === 'function') {\n try {\n const result = await type(props);\n return await renderNodeToString(result);\n }\n catch (error) {\n console.error('Error rendering component:', error);\n return `<!-- Error rendering component: ${error.message} -->`;\n }\n }\n // Handle DOM elements\n if (typeof type === 'string') {\n return await renderDOMElement(type, props);\n }\n }\n // Fallback for other objects\n if (typeof node === 'object') {\n return escapeHtml(JSON.stringify(node));\n }\n return escapeHtml(String(node));\n}\nasync function renderDOMElement(tagName, props) {\n const { children, ...attrs } = props;\n // Self-closing tags\n const voidElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ]);\n // Build attributes string\n const attributeString = Object.entries(attrs)\n .filter(([key, value]) => {\n // Filter out React-specific props and event handlers\n if (key.startsWith('on') || key === 'key' || key === 'ref')\n return false;\n if (value == null || value === false)\n return false;\n return true;\n })\n .map(([key, value]) => {\n // Handle className -> class\n if (key === 'className')\n key = 'class';\n // Handle boolean attributes\n if (value === true)\n return key;\n // Handle style objects\n if (key === 'style' && typeof value === 'object' && value !== null) {\n const styleString = Object.entries(value)\n .map(([prop, val]) => `${kebabCase(prop)}:${val}`)\n .join(';');\n return `style=\"${escapeHtml(styleString)}\"`;\n }\n return `${key}=\"${escapeHtml(String(value))}\"`;\n })\n .join(' ');\n const openTag = `<${tagName}${attributeString ? ' ' + attributeString : ''}>`;\n // Self-closing elements\n if (voidElements.has(tagName)) {\n return openTag.slice(0, -1) + '/>';\n }\n // Elements with children\n const closeTag = `</${tagName}>`;\n if (children != null) {\n const childrenString = await renderNodeToString(children);\n return openTag + childrenString + closeTag;\n }\n return openTag + closeTag;\n}\nfunction escapeHtml(text) {\n const htmlEscapes = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '/': '&#x2F;'\n };\n return text.replace(/[&<>\"'/]/g, (match) => htmlEscapes[match]);\n}\nfunction kebabCase(str) {\n return str.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n}\n\nfunction arePropsEqual(oldProps, newProps) {\n const oldKeys = Object.keys(oldProps).filter(k => k !== 'children');\n const newKeys = Object.keys(newProps).filter(k => k !== 'children');\n if (oldKeys.length !== newKeys.length)\n return false;\n return oldKeys.every(key => oldProps[key] === newProps[key]);\n}\nfunction diff(oldNode, newNode) {\n if (oldNode == null || newNode == null)\n return oldNode !== newNode;\n if (typeof oldNode !== typeof newNode)\n return true;\n if (typeof newNode === 'string' || typeof newNode === 'number')\n return oldNode !== newNode;\n if (newNode.type !== oldNode.type)\n return true;\n return !arePropsEqual(oldNode.props, newNode.props);\n}\nfunction shouldComponentUpdate(oldProps, newProps) {\n return !arePropsEqual(oldProps, newProps);\n}\n\nclass Component {\n constructor(props = {}) {\n this.state = {};\n this.element = null;\n this._mounted = false;\n this.props = props;\n }\n componentDidMount() {\n // Hook for after component is mounted\n }\n async setState(newState) {\n const prevState = { ...this.state };\n this.state = { ...prevState, ...newState };\n console.log(`${this.constructor.name} state updated:`, {\n prev: prevState,\n next: this.state\n });\n await Promise.resolve(); // Ensure state is updated before re-render\n if (this._mounted) {\n await this.update();\n }\n else {\n await this.update();\n }\n }\n _replayEvents(oldElement, newElement) {\n const oldEvents = oldElement.__events || {};\n Object.entries(oldEvents).forEach(([event, handler]) => {\n newElement.addEventListener(event, handler);\n });\n newElement.__events = oldEvents;\n }\n _deepCloneWithEvents(node) {\n const clone = node.cloneNode(false);\n // Copy events from original element\n const events = node.__events || {};\n clone.__events = events;\n Object.entries(events).forEach(([event, handler]) => {\n clone.addEventListener(event, handler);\n });\n // Clone children\n Array.from(node.childNodes).forEach(child => {\n if (child instanceof HTMLElement) {\n clone.appendChild(this._deepCloneWithEvents(child));\n }\n else {\n clone.appendChild(child.cloneNode(true));\n }\n });\n return clone;\n }\n async update() {\n const vdom = this.render();\n if (!vdom)\n return document.createTextNode('');\n const rendered = await createElement(vdom);\n if (rendered instanceof HTMLElement) {\n return this._updateElement(rendered);\n }\n const wrapper = document.createElement('div');\n wrapper.appendChild(rendered);\n return this._updateElement(wrapper);\n }\n async _updateElement(rendered) {\n const newElement = this._deepCloneWithEvents(rendered);\n newElement.__instance = this;\n if (!this.element) {\n this.element = newElement;\n if (!this._mounted) {\n this._mounted = true;\n queueMicrotask(() => this.componentDidMount());\n }\n }\n else if (this.element.parentNode) {\n this.element.parentNode.replaceChild(newElement, this.element);\n this.element = newElement;\n }\n return this.element;\n }\n render() {\n throw new Error('Component must implement render() method');\n }\n}\n\n/**\n * Client-side router for single-page applications\n */\n// Create context for router\nconst RouterContext = createContext({\n location: {\n pathname: '/',\n search: '',\n hash: ''\n },\n params: {},\n navigate: () => { },\n match: () => false\n});\n// Parse path pattern into regex\nfunction parsePath(path) {\n // Convert :param syntax to capture groups\n const pattern = path\n .replace(/\\/+$/, '') // Remove trailing slashes\n .replace(/^\\/+/, '/') // Ensure leading slash\n .replace(/\\/:([^/]+)/g, '/([^/]+)');\n // Get param names\n const paramNames = [];\n path.replace(/\\/:([^/]+)/g, (_, paramName) => {\n paramNames.push(paramName);\n return '';\n });\n return { pattern, paramNames };\n}\n// Match a path against a pattern\nfunction matchPath(pathname, route) {\n const { path, exact = false } = route;\n const { pattern, paramNames } = parsePath(path);\n // Create regex with or without exact matching\n const regex = new RegExp(`^${pattern}${exact ? '$' : ''}`);\n const match = pathname.match(regex);\n if (!match)\n return null;\n // Extract params\n const params = {};\n paramNames.forEach((name, index) => {\n params[name] = match[index + 1];\n });\n return params;\n}\n// Router Provider component\nfunction RouterProvider({ routes, children }) {\n // Get initial location from window if available\n const getInitialLocation = () => {\n if (typeof window === 'undefined') {\n return { pathname: '/', search: '', hash: '' };\n }\n return {\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash\n };\n };\n // Fix: Call the function to get the initial value instead of passing the function itself\n const [location, setLocation] = useState(getInitialLocation());\n const [params, setParams] = useState({});\n // Update params when location changes\n useEffect(() => {\n for (const route of routes) {\n const matchedParams = matchPath(location.pathname, route);\n if (matchedParams) {\n setParams(matchedParams);\n break;\n }\n }\n }, [location, routes]);\n // Listen for popstate events\n useEffect(() => {\n if (typeof window === 'undefined')\n return;\n const handlePopState = () => {\n setLocation({\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash\n });\n };\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, []);\n // Navigation function\n const navigate = (to, options = {}) => {\n if (typeof window === 'undefined')\n return;\n const { replace = false, state = null } = options;\n if (replace) {\n window.history.replaceState(state, '', to);\n }\n else {\n window.history.pushState(state, '', to);\n }\n // Update location\n setLocation({\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash\n });\n };\n // Match function to test if a path matches the current location\n const match = (path) => {\n const { pattern } = parsePath(path);\n const regex = new RegExp(`^${pattern}`);\n return regex.test(location.pathname);\n };\n // Router context value\n const routerValue = {\n location: {\n pathname: location.pathname,\n search: location.search,\n hash: location.hash\n },\n params,\n navigate,\n match\n };\n return jsx(RouterContext.Provider, { value: routerValue, children });\n}\n// Route component\nfunction Route({ path, component: Component, props = {} }) {\n const context = useContext();\n const params = context.params;\n const locationPathname = context.location.pathname;\n const routeToMatch = { path, component: Component };\n const match = matchPath(locationPathname, routeToMatch);\n if (!match)\n return null;\n return jsx(Component, { ...props, params });\n}\n// Switch component\nfunction Switch({ children }) {\n const context = useContext();\n const locationPathname = context.location.pathname;\n // Find the first matching route\n const child = Array.isArray(children)\n ? children.find(child => {\n if (!child || typeof child.type !== 'function' || !child.props.path)\n return false;\n const routeObj = {\n path: child.props.path,\n component: child.type,\n exact: child.props.exact || false\n };\n return matchPath(locationPathname, routeObj);\n })\n : children;\n return child || null;\n}\n// Link component\nfunction Link({ to, replace = false, state = null, className = '', activeClassName = '', children, ...rest }) {\n const context = useContext();\n const navigate = context.navigate;\n const match = context.match;\n const handleClick = (e) => {\n e.preventDefault();\n navigate(to, { replace, state });\n };\n const isActive = match(to);\n const classes = [\n className,\n isActive ? activeClassName : ''\n ].filter(Boolean).join(' ');\n return jsx('a', {\n href: to,\n className: classes || undefined,\n onClick: handleClick,\n ...rest,\n children\n });\n}\n// Redirect component\nfunction Redirect({ to, replace = true }) {\n const context = useContext();\n const navigate = context.navigate;\n useEffect(() => {\n navigate(to, { replace });\n }, [to]);\n return null;\n}\n// Hooks\nfunction useLocation() {\n const context = useContext();\n return context.location;\n}\nfunction useParams() {\n const context = useContext();\n return context.params;\n}\nfunction useNavigate() {\n const context = useContext();\n return context.navigate;\n}\n\n/**\n * Form handling utilities for the framework\n */\nfunction useForm(options) {\n const { initialValues, validate, onSubmit } = options;\n const [values, setValues] = useState(initialValues);\n const [errors, setErrors] = useState({});\n const [touched, setTouched] = useState({});\n const [dirty, setDirty] = useState({});\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [submitCount, setSubmitCount] = useState(0);\n // Track form validity and dirty state\n const isValid = Object.keys(errors).length === 0;\n const isDirty = Object.values(dirty).some(Boolean);\n // Validate form when values or validate function changes\n useEffect(() => {\n if (validate) {\n const validationErrors = validate(values);\n setErrors(validationErrors || {});\n }\n }, [values, validate]);\n // Handle form input changes\n const handleChange = (e) => {\n const { name, value, type, checked } = e.target;\n const fieldValue = type === 'checkbox' ? checked : value;\n setValues(prev => ({\n ...prev,\n [name]: fieldValue\n }));\n setDirty(prev => ({\n ...prev,\n [name]: true\n }));\n };\n // Handle field blur\n const handleBlur = (e) => {\n const { name } = e.target;\n setTouched(prev => ({\n ...prev,\n [name]: true\n }));\n };\n // Set field value programmatically\n const setFieldValue = (field, value) => {\n setValues(prev => ({\n ...prev,\n [field]: value\n }));\n setDirty(prev => ({\n ...prev,\n [field]: true\n }));\n };\n // Set field error programmatically\n const setFieldError = (field, error) => {\n setErrors(prev => ({\n ...prev,\n [field]: error\n }));\n };\n // Update multiple values at once\n const updateValues = (newValues) => {\n setValues(prev => ({\n ...prev,\n ...newValues\n }));\n // Mark changed fields as dirty\n const dirtyFields = {};\n Object.keys(newValues).forEach(key => {\n dirtyFields[key] = true;\n });\n setDirty(prev => ({\n ...prev,\n ...dirtyFields\n }));\n };\n // Reset form to initial state\n const resetForm = () => {\n setValues(initialValues);\n setErrors({});\n setTouched({});\n setDirty({});\n setIsSubmitting(false);\n };\n // Handle form submission\n const handleSubmit = async (e) => {\n e.preventDefault();\n // Mark all fields as touched\n const allTouched = {};\n Object.keys(values).forEach(key => {\n allTouched[key] = true;\n });\n setTouched(allTouched);\n // Validate before submission\n let validationErrors = {};\n if (validate) {\n validationErrors = validate(values);\n setErrors(validationErrors || {});\n }\n // Only proceed if valid\n if (Object.keys(validationErrors).length === 0 && onSubmit) {\n setIsSubmitting(true);\n setSubmitCount(count => count + 1);\n try {\n await onSubmit(values, {\n fields: Object.keys(values).reduce((acc, key) => {\n acc[key] = {\n value: values[key],\n error: errors[key],\n touched: touched[key] || false,\n dirty: dirty[key] || false\n };\n return acc;\n }, {}),\n isValid,\n isDirty,\n isSubmitting: true,\n submitCount: submitCount + 1\n });\n }\n finally {\n setIsSubmitting(false);\n }\n }\n };\n return {\n values,\n errors,\n touched,\n dirty,\n isValid,\n isDirty,\n isSubmitting,\n submitCount,\n handleChange,\n handleBlur,\n handleSubmit,\n setFieldValue,\n setFieldError,\n setValues: updateValues,\n resetForm\n };\n}\n\nfunction createEventBus() {\n const events = new Map();\n const onceHandlers = new WeakMap();\n const on = (event, handler) => {\n if (!events.has(event)) {\n events.set(event, new Set());\n }\n events.get(event).add(handler);\n // Return a function to remove this handler\n return () => off(event, handler);\n };\n const once = (event, handler) => {\n // Create a wrapper that will call the handler and remove itself\n const onceWrapper = (...args) => {\n off(event, onceWrapper);\n handler(...args);\n };\n // Store the mapping between the original handler and the wrapper\n onceHandlers.set(handler, onceWrapper);\n // Register the wrapper\n return on(event, onceWrapper);\n };\n const off = (event, handler) => {\n // If no handler is provided, remove all handlers for the event\n if (!handler) {\n events.delete(event);\n return;\n }\n // Check if it's a once handler wrapper\n const wrappedHandler = onceHandlers.get(handler);\n const handlerToRemove = wrappedHandler || handler;\n if (events.has(event)) {\n events.get(event).delete(handlerToRemove);\n // Clean up empty event sets\n if (events.get(event).size === 0) {\n events.delete(event);\n }\n }\n };\n const emit = (event, ...args) => {\n if (!events.has(event)) {\n return;\n }\n // Create a copy of the handlers to avoid issues if handlers modify the set\n const handlers = Array.from(events.get(event));\n // Call each handler with the arguments\n for (const handler of handlers) {\n handler(...args);\n }\n };\n const clear = (event) => {\n if (event) {\n events.delete(event);\n }\n else {\n events.clear();\n }\n };\n return { on, once, off, emit, clear };\n}\n// Create a global event bus instance\nconst globalEventBus = createEventBus();\n// Hook to use the event bus in components\nfunction useEvent(event, handler, options = {}) {\n return options.once\n ? globalEventBus.once(event, handler)\n : globalEventBus.on(event, handler);\n}\n\n/**\n * Global state management solution similar to Redux\n */\nfunction createStore(reducer, initialState, middlewares = []) {\n let state = initialState;\n let listeners = [];\n // Apply middlewares\n let dispatch = (action) => {\n state = reducer(state, action);\n listeners.forEach(listener => listener());\n return action;\n };\n // Chain middlewares\n if (middlewares.length > 0) {\n const middlewareAPI = {\n getState: () => state,\n dispatch: (action) => dispatch(action),\n subscribe: (listener) => subscribe(listener)\n };\n const chain = middlewares.map(middleware => middleware(middlewareAPI));\n dispatch = chain.reduce((a, b) => (next) => a(b(next)))(dispatch);\n }\n // Subscribe to store changes\n function subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n listeners = listeners.filter(l => l !== listener);\n };\n }\n // Initialize store with default state\n dispatch({ type: '@@INIT' });\n return {\n getState: () => state,\n dispatch,\n subscribe\n };\n}\nconst StoreContext = createContext({\n store: {\n getState: () => ({}),\n dispatch: () => { },\n subscribe: () => () => { }\n },\n state: {}\n});\nfunction StoreProvider({ store, children }) {\n const [state, setState] = useState(store.getState());\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n setState(store.getState());\n });\n return unsubscribe;\n }, [store]);\n return jsx(StoreContext.Provider, {\n value: { store, state },\n children\n });\n}\nfunction useSelector(selector) {\n const context = useContext();\n return selector(context.state);\n}\nfunction useDispatch() {\n const context = useContext();\n return context.store.dispatch;\n}\nfunction useStore() {\n const context = useContext();\n return context.store;\n}\n// Common middlewares\nconst logger = (store) => (next) => (action) => {\n console.group(action.type);\n console.log('Previous state:', store.getState());\n console.log('Action:', action);\n const result = next(action);\n console.log('Next state:', store.getState());\n console.groupEnd();\n return result;\n};\nconst thunk = (store) => (next) => (action) => {\n if (typeof action === 'function') {\n return action(store.dispatch, store.getState);\n }\n return next(action);\n};\n\n/**\n * Lifecycle events for components and application\n */\nvar LifecycleEvents;\n(function (LifecycleEvents) {\n LifecycleEvents[\"APP_INIT\"] = \"app:init\";\n LifecycleEvents[\"APP_MOUNTED\"] = \"app:mounted\";\n LifecycleEvents[\"APP_UPDATED\"] = \"app:updated\";\n LifecycleEvents[\"APP_ERROR\"] = \"app:error\";\n LifecycleEvents[\"APP_DESTROYED\"] = \"app:destroyed\";\n LifecycleEvents[\"COMPONENT_CREATED\"] = \"component:created\";\n LifecycleEvents[\"COMPONENT_MOUNTED\"] = \"component:mounted\";\n LifecycleEvents[\"COMPONENT_UPDATED\"] = \"component:updated\";\n LifecycleEvents[\"COMPONENT_ERROR\"] = \"component:error\";\n LifecycleEvents[\"COMPONENT_UNMOUNTED\"] = \"component:unmounted\";\n LifecycleEvents[\"ROUTER_BEFORE_CHANGE\"] = \"router:before-change\";\n LifecycleEvents[\"ROUTER_AFTER_CHANGE\"] = \"router:after-change\";\n LifecycleEvents[\"ROUTER_ERROR\"] = \"router:error\";\n LifecycleEvents[\"STORE_INITIALIZED\"] = \"store:initialized\";\n LifecycleEvents[\"STORE_BEFORE_ACTION\"] = \"store:before-action\";\n LifecycleEvents[\"STORE_AFTER_ACTION\"] = \"store:after-action\";\n LifecycleEvents[\"STORE_ERROR\"] = \"store:error\";\n})(LifecycleEvents || (LifecycleEvents = {}));\n// Event emitters\nfunction emitAppInit(data) {\n globalEventBus.emit(LifecycleEvents.APP_INIT, data);\n}\nfunction emitAppMounted(rootElement) {\n globalEventBus.emit(LifecycleEvents.APP_MOUNTED, rootElement);\n}\nfunction emitAppUpdated() {\n globalEventBus.emit(LifecycleEvents.APP_UPDATED);\n}\nfunction emitAppError(error) {\n globalEventBus.emit(LifecycleEvents.APP_ERROR, error);\n}\nfunction emitAppDestroyed() {\n globalEventBus.emit(LifecycleEvents.APP_DESTROYED);\n}\nfunction emitComponentCreated(info) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_CREATED, info);\n}\nfunction emitComponentMounted(info, element) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_MOUNTED, info, element);\n}\nfunction emitComponentUpdated(info, prevProps, newProps) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_UPDATED, info, prevProps, newProps);\n}\nfunction emitComponentError(info, error) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_ERROR, info, error);\n}\nfunction emitComponentUnmounted(info) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_UNMOUNTED, info);\n}\n// Event listeners\nfunction onAppInit(handler) {\n return globalEventBus.on(LifecycleEvents.APP_INIT, handler);\n}\nfunction onAppMounted(handler) {\n return globalEventBus.on(LifecycleEvents.APP_MOUNTED, handler);\n}\nfunction onAppUpdated(handler) {\n return globalEventBus.on(LifecycleEvents.APP_UPDATED, handler);\n}\nfunction onAppError(handler) {\n return globalEventBus.on(LifecycleEvents.APP_ERROR, handler);\n}\nfunction onAppDestroyed(handler) {\n return globalEventBus.on(LifecycleEvents.APP_DESTROYED, handler);\n}\nfunction onComponentCreated(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_CREATED, handler);\n}\nfunction onComponentMounted(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_MOUNTED, handler);\n}\nfunction onComponentUpdated(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_UPDATED, handler);\n}\nfunction onComponentError(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_ERROR, handler);\n}\nfunction onComponentUnmounted(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_UNMOUNTED, handler);\n}\n\n// Core JSX and rendering functions\n// Default export object for compatibility\nconst frontendHamroun = {\n // JSX\n jsx,\n jsxs: jsx,\n jsxDEV: jsx,\n Fragment,\n createElement,\n // Rendering\n render,\n hydrate,\n renderToString,\n // Hooks\n useState,\n useEffect,\n useMemo,\n useRef,\n useContext,\n useErrorBoundary,\n // Context\n createContext,\n // Utilities\n batchUpdates,\n diff,\n shouldComponentUpdate,\n // Component class\n Component,\n // Router\n RouterProvider,\n Route,\n Switch,\n Link,\n Redirect,\n useLocation,\n useParams,\n useNavigate,\n // Forms\n useForm,\n // Event bus\n createEventBus,\n useEvent,\n eventBus: globalEventBus\n};\n\nexport { Component, Fragment, LifecycleEvents, Link, Redirect, Route, RouterProvider, StoreProvider, Switch, batchUpdates, createContext, createElement, createEventBus, createStore, frontendHamroun as default, diff, emitAppDestroyed, emitAppError, emitAppInit, emitAppMounted, emitAppUpdated, emitComponentCreated, emitComponentError, emitComponentMounted, emitComponentUnmounted, emitComponentUpdated, globalEventBus as eventBus, hydrate, jsx, jsx as jsxDEV, jsx as jsxs, logger, onAppDestroyed, onAppError, onAppInit, onAppMounted, onAppUpdated, onComponentCreated, onComponentError, onComponentMounted, onComponentUnmounted, onComponentUpdated, render, renderToString, shouldComponentUpdate, thunk, useContext, useDispatch, useEffect, useErrorBoundary, useEvent, useForm, useLocation, useMemo, useNavigate, useParams, useRef, useSelector, useState, useStore };\n//# sourceMappingURL=index.js.map\n", "/**\r\n * WebAssembly integration for Frontend Hamroun\r\n * Works in both browser and Node.js environments\r\n */\r\n\r\nexport interface GoWasmOptions {\r\n debug?: boolean;\r\n goWasmPath?: string;\r\n importObject?: any;\r\n onLoad?: (instance: GoWasmInstance) => void;\r\n}\r\n\r\nexport interface GoWasmInstance {\r\n instance: WebAssembly.Instance;\r\n module: WebAssembly.Module;\r\n exports: WebAssembly.Exports;\r\n functions: Record<string, Function>;\r\n}\r\n\r\n/**\r\n * Load Go WASM module in the browser (like your working frontend code)\r\n */\r\nexport async function loadGoWasm(\r\n wasmUrl: string,\r\n options: GoWasmOptions = {}\r\n): Promise<GoWasmInstance> {\r\n if (typeof window === 'undefined') {\r\n throw new Error('loadGoWasm() is for browser use only. Use loadGoWasmFromFile() in Node.js.');\r\n }\r\n\r\n try {\r\n // Check if Go WASM runtime is available (like your frontend code)\r\n if (!window.Go) {\r\n throw new Error('Go WASM runtime not available. Make sure wasm_exec.js is loaded.');\r\n }\r\n\r\n if (options.debug) {\r\n console.log('[WASM] Loading WASM from:', wasmUrl);\r\n }\r\n\r\n // Fetch the WASM file (exactly like your frontend code)\r\n const response = await fetch(wasmUrl);\r\n \r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch WASM file: ${response.status}`);\r\n }\r\n\r\n const wasmBytes = await response.arrayBuffer();\r\n \r\n // Initialize Go runtime (exactly like your frontend code)\r\n const go = new window.Go();\r\n const wasmModule = await WebAssembly.instantiate(wasmBytes, go.importObject);\r\n \r\n // Run the Go program (exactly like your frontend code)\r\n go.run(wasmModule.instance);\r\n \r\n // Wait a bit for Go functions to be registered (like your frontend code)\r\n await new Promise(resolve => setTimeout(resolve, 100));\r\n \r\n if (options.debug) {\r\n console.log('[WASM] Go program started, checking for registered functions...');\r\n }\r\n\r\n // Extract exported functions from global scope (like your frontend code)\r\n const functions: Record<string, Function> = {};\r\n \r\n // Look for Go functions in global scope\r\n for (const key in window) {\r\n if (typeof window[key] === 'function' && key.startsWith('go')) {\r\n functions[key] = window[key] as Function;\r\n if (options.debug) {\r\n console.log(`[WASM] Found function: ${key}`);\r\n }\r\n }\r\n }\r\n\r\n const wasmInstance: GoWasmInstance = {\r\n instance: wasmModule.instance,\r\n module: wasmModule,\r\n exports: wasmModule.instance.exports,\r\n functions\r\n };\r\n\r\n if (options.onLoad) {\r\n options.onLoad(wasmInstance);\r\n }\r\n\r\n if (options.debug) {\r\n console.log(`[WASM] Module loaded successfully with ${Object.keys(functions).length} functions`);\r\n }\r\n\r\n return wasmInstance;\r\n\r\n } catch (error) {\r\n console.error('[WASM] Error loading Go WASM module:', error);\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Call a Go WASM function (like your frontend code's callWasmFunction)\r\n */\r\nexport function callWasmFunction(funcName: string, ...args: any[]): any {\r\n if (typeof window === 'undefined') {\r\n throw new Error('callWasmFunction() is for browser use only.');\r\n }\r\n\r\n const func = (window as any)[funcName];\r\n if (typeof func !== 'function') {\r\n throw new Error(`Function ${funcName} not found. Make sure the WASM module is loaded.`);\r\n }\r\n \r\n return func(...args);\r\n}\r\n\r\n/**\r\n * Check if Go WASM is ready (like your frontend code's wasmReady state)\r\n */\r\nexport function isWasmReady(): boolean {\r\n if (typeof window === 'undefined') {\r\n return false;\r\n }\r\n\r\n // Check if Go runtime is available and at least one Go function exists\r\n return !!(window.Go && Object.keys(window).some(key => \r\n key.startsWith('go') && typeof window[key] === 'function'\r\n ));\r\n}\r\n\r\n/**\r\n * Get all available Go WASM functions\r\n */\r\nexport function getWasmFunctions(): string[] {\r\n if (typeof window === 'undefined') {\r\n return [];\r\n }\r\n\r\n return Object.keys(window).filter(key => \r\n key.startsWith('go') && typeof window[key] === 'function'\r\n );\r\n}\r\n\r\n/**\r\n * Hook for React components (like your frontend code's useEffect pattern)\r\n */\r\nexport function useGoWasm(wasmUrl: string, options: GoWasmOptions = {}) {\r\n if (typeof window === 'undefined') {\r\n throw new Error('useGoWasm() is for browser use only.');\r\n }\r\n\r\n // This would need to be implemented as a React hook in frontend-hamroun\r\n // For now, return the basic functionality\r\n return {\r\n loadWasm: () => loadGoWasm(wasmUrl, options),\r\n callFunction: callWasmFunction,\r\n isReady: isWasmReady,\r\n getFunctions: getWasmFunctions\r\n };\r\n}\r\n\r\n// Browser-specific type declarations\r\ndeclare global {\r\n interface Window {\r\n Go: new () => {\r\n importObject: any;\r\n run: (instance: WebAssembly.Instance) => void;\r\n };\r\n [key: string]: any;\r\n }\r\n}\r\n", "/**\r\n * HTML template generators for server-side rendering\r\n */\r\n\r\nexport interface DocumentOptions {\r\n title?: string;\r\n description?: string;\r\n lang?: string;\r\n charset?: string;\r\n viewport?: string;\r\n scripts?: string[];\r\n styles?: string[];\r\n meta?: Record<string, string>;\r\n bodyClasses?: string;\r\n htmlAttrs?: Record<string, string>;\r\n bodyAttrs?: Record<string, string>;\r\n initialData?: any;\r\n componentName?: string;\r\n}\r\n\r\n/**\r\n * Generate a complete HTML document\r\n */\r\nexport function generateDocument(\r\n content: string, \r\n options: DocumentOptions = {}\r\n): string {\r\n const {\r\n title = 'Frontend Hamroun App',\r\n description = '',\r\n lang = 'en',\r\n charset = 'UTF-8',\r\n viewport = 'width=device-width, initial-scale=1.0',\r\n scripts = [],\r\n styles = [],\r\n meta = {},\r\n bodyClasses = '',\r\n htmlAttrs = {},\r\n bodyAttrs = {},\r\n initialData = {},\r\n componentName = ''\r\n } = options;\r\n \r\n // Generate HTML attributes\r\n const htmlAttributes = Object.entries(htmlAttrs)\r\n .map(([key, value]) => `${key}=\"${escapeHtml(value)}\"`)\r\n .join(' ');\r\n \r\n // Generate body attributes\r\n const bodyAttributes = Object.entries(bodyAttrs)\r\n .map(([key, value]) => `${key}=\"${escapeHtml(value)}\"`)\r\n .join(' ');\r\n \r\n // Generate meta tags\r\n const metaTags = [\r\n `<meta charset=\"${charset}\">`,\r\n `<meta name=\"viewport\" content=\"${viewport}\">`,\r\n description ? `<meta name=\"description\" content=\"${escapeHtml(description)}\">` : ''\r\n ];\r\n \r\n // Add custom meta tags\r\n Object.entries(meta).forEach(([name, content]) => {\r\n metaTags.push(`<meta name=\"${escapeHtml(name)}\" content=\"${escapeHtml(content)}\">`);\r\n });\r\n \r\n // Generate script tags\r\n const scriptTags = scripts.map(src => {\r\n if (src.startsWith('<script')) {\r\n return src; // Allow inline scripts\r\n }\r\n return `<script src=\"${escapeHtml(src)}\" ${src.endsWith('.js') ? 'type=\"module\"' : ''} defer></script>`;\r\n });\r\n \r\n // Generate style tags\r\n const styleTags = styles.map(href => {\r\n if (href.startsWith('<style')) {\r\n return href; // Allow inline styles\r\n }\r\n return `<link rel=\"stylesheet\" href=\"${escapeHtml(href)}\">`;\r\n });\r\n \r\n // Create initial data script\r\n const initialDataScript = Object.keys(initialData).length > 0 ? \r\n `<script id=\"__APP_DATA__\" type=\"application/json\">${escapeHtml(JSON.stringify(initialData))}</script>` : '';\r\n \r\n // Create the complete HTML document\r\n return `<!DOCTYPE html>\r\n<html lang=\"${lang}\" ${htmlAttributes}>\r\n<head>\r\n ${metaTags.filter(Boolean).join('\\n ')}\r\n <title>${escapeHtml(title)}</title>\r\n ${styleTags.join('\\n ')}\r\n</head>\r\n<body class=\"${bodyClasses}\" ${bodyAttributes}>\r\n <div id=\"app-root\" data-ssr-root${componentName ? ` data-component=\"${escapeHtml(componentName)}\"` : ''}>${content}</div>\r\n ${initialDataScript}\r\n ${scriptTags.join('\\n ')}\r\n</body>\r\n</html>`;\r\n}\r\n\r\n/**\r\n * Generate an error page\r\n */\r\nexport function generateErrorPage(\r\n statusCode: number, \r\n message: string, \r\n error?: Error\r\n): string {\r\n const errorMessages: Record<number, string> = {\r\n 400: 'Bad Request',\r\n 401: 'Unauthorized',\r\n 403: 'Forbidden',\r\n 404: 'Not Found',\r\n 500: 'Internal Server Error'\r\n };\r\n \r\n const title = `${statusCode} - ${errorMessages[statusCode] || 'Error'}`;\r\n \r\n // Generate error details (only in development)\r\n const isDev = process.env.NODE_ENV !== 'production';\r\n const errorDetails = isDev && error ? `\r\n <div class=\"error-details\">\r\n <pre>${escapeHtml(error.stack || error.message)}</pre>\r\n </div>\r\n ` : '';\r\n \r\n // Create error content\r\n const content = `\r\n <div class=\"error-container\">\r\n <h1>${statusCode}</h1>\r\n <h2>${escapeHtml(errorMessages[statusCode] || 'Error')}</h2>\r\n <p>${escapeHtml(message)}</p>\r\n ${errorDetails}\r\n <a href=\"/\" class=\"home-link\">Back to Home</a>\r\n </div>\r\n `;\r\n \r\n // Add error page styling\r\n const styles = [`<style>\r\n body {\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n min-height: 100vh;\r\n margin: 0;\r\n background-color: #f7f7f7;\r\n color: #333;\r\n }\r\n .error-container {\r\n text-align: center;\r\n padding: 2rem;\r\n border-radius: 8px;\r\n background-color: white;\r\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\r\n max-width: 600px;\r\n width: 100%;\r\n }\r\n h1 {\r\n font-size: 6rem;\r\n margin: 0;\r\n color: #e74c3c;\r\n }\r\n h2 {\r\n margin-top: 0;\r\n margin-bottom: 1rem;\r\n color: #333;\r\n }\r\n .error-details {\r\n text-align: left;\r\n margin: 2rem 0;\r\n padding: 1rem;\r\n background-color: #f8f8f8;\r\n border-radius: 4px;\r\n overflow: auto;\r\n }\r\n pre {\r\n margin: 0;\r\n font-family: monospace;\r\n font-size: 0.85rem;\r\n white-space: pre-wrap;\r\n }\r\n .home-link {\r\n display: inline-block;\r\n margin-top: 1.5rem;\r\n padding: 0.75rem 1.5rem;\r\n background-color: #3498db;\r\n color: white;\r\n text-decoration: none;\r\n border-radius: 4px;\r\n transition: background-color 0.2s;\r\n }\r\n .home-link:hover {\r\n background-color: #2980b9;\r\n }\r\n </style>`];\r\n \r\n return generateDocument(content, {\r\n title,\r\n description: `Error ${statusCode}: ${errorMessages[statusCode] || 'Error'}`,\r\n bodyClasses: 'error-page',\r\n styles\r\n });\r\n}\r\n\r\n/**\r\n * Generate a loading page\r\n */\r\nexport function generateLoadingPage(message: string = 'Loading...'): string {\r\n const content = `\r\n <div class=\"loading-container\">\r\n <div class=\"spinner\"></div>\r\n <p>${escapeHtml(message)}</p>\r\n </div>\r\n `;\r\n \r\n const styles = [`<style>\r\n body {\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n min-height: 100vh;\r\n margin: 0;\r\n background-color: #f7f7f7;\r\n color: #333;\r\n }\r\n .loading-container {\r\n text-align: center;\r\n }\r\n .spinner {\r\n width: 50px;\r\n height: 50px;\r\n border: 5px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 50%;\r\n border-top-color: #3498db;\r\n animation: spin 1s ease-in-out infinite;\r\n margin: 0 auto 20px;\r\n }\r\n @keyframes spin {\r\n to { transform: rotate(360deg); }\r\n }\r\n </style>`];\r\n \r\n return generateDocument(content, {\r\n title: 'Loading',\r\n bodyClasses: 'loading-page',\r\n styles\r\n });\r\n}\r\n\r\n/**\r\n * Escape HTML special characters\r\n */\r\nfunction escapeHtml(text: string): string {\r\n return String(text)\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#039;');\r\n}\r\n", "/**\r\n * Browser-only entry point for baraqex\r\n * This file excludes all server dependencies to ensure browser compatibility\r\n */\r\n\r\n// Re-export everything from frontend-hamroun\r\nexport * from 'frontend-hamroun';\r\n\r\n// Export browser-compatible WASM functionality\r\nexport { loadGoWasm, callWasmFunction, isWasmReady, getWasmFunctions, useGoWasm } from './wasm.js';\r\n\r\n// Export type definitions (safe for all environments)\r\nexport type { GoWasmOptions, GoWasmInstance } from './wasm.js';\r\n\r\n// Export basic template utilities (no server dependencies)\r\nexport { generateDocument, generateErrorPage, generateLoadingPage } from './server/templates.js';\r\n\r\n// Simple renderToString function for browser SSR compatibility\r\nexport function renderToString(content: any): string {\r\n if (typeof content === 'string') {\r\n return content;\r\n }\r\n if (typeof content === 'function') {\r\n try {\r\n const result = content();\r\n return String(result);\r\n } catch (error) {\r\n return `<!-- Error rendering: ${error} -->`;\r\n }\r\n }\r\n return String(content);\r\n}\r\n\r\n// Browser-compatible utility functions\r\nexport function generateToken(length: number = 32): string {\r\n const array = new Uint8Array(length);\r\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\r\n crypto.getRandomValues(array);\r\n } else {\r\n // Fallback for environments without crypto\r\n for (let i = 0; i < array.length; i++) {\r\n array[i] = Math.floor(Math.random() * 256);\r\n }\r\n }\r\n return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');\r\n}\r\n\r\nexport function safeJsonParse<T>(json: string, fallback: T): T {\r\n try {\r\n return JSON.parse(json) as T;\r\n } catch (error) {\r\n return fallback;\r\n }\r\n}\r\n\r\n// Browser environment detection\r\nexport const isBrowser = typeof window !== 'undefined';\r\nexport const isNode = false; // Always false in browser build\r\n\r\nconsole.log('Baraqex - Browser version loaded');\r\n"],
5
- "mappings": "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",
6
- "names": ["ref", "Component", "child", "LifecycleEvents", "content"]
4
+ "sourcesContent": ["function jsx(type, props) {\n console.log('JSX Transform:', { type, props });\n const processedProps = { ...props };\n // Handle children properly\n if (arguments.length > 2) {\n processedProps.children = Array.prototype.slice.call(arguments, 2);\n }\n return { type, props: processedProps };\n}\nconst Fragment = ({ children }) => children;\nasync function createElement(vnode) {\n console.log('Creating element from:', vnode);\n // Handle primitives and null\n if (vnode == null) {\n return document.createTextNode('');\n }\n if (typeof vnode === 'boolean') {\n return document.createTextNode('');\n }\n if (typeof vnode === 'number' || typeof vnode === 'string') {\n return document.createTextNode(String(vnode));\n }\n // Handle arrays\n if (Array.isArray(vnode)) {\n const fragment = document.createDocumentFragment();\n for (const child of vnode) {\n const node = await createElement(child);\n fragment.appendChild(node);\n }\n return fragment;\n }\n // Handle VNode\n if ('type' in vnode && vnode.props !== undefined) {\n const { type, props } = vnode;\n // Handle function components\n if (typeof type === 'function') {\n try {\n const result = await type(props || {});\n const node = await createElement(result);\n if (node instanceof Element) {\n node.setAttribute('data-component-id', type.name || type.toString());\n }\n return node;\n }\n catch (error) {\n console.error('Error rendering component:', error);\n return document.createTextNode('');\n }\n }\n // Create DOM element\n const element = document.createElement(type);\n // Handle props\n for (const [key, value] of Object.entries(props || {})) {\n if (key === 'children')\n continue;\n if (key.startsWith('on') && typeof value === 'function') {\n const eventName = key.toLowerCase().slice(2);\n // Remove existing event listener if any\n const existingHandler = element.__events?.[eventName];\n if (existingHandler) {\n element.removeEventListener(eventName, existingHandler);\n }\n // Add new event listener\n element.addEventListener(eventName, value);\n if (!element.__events) {\n element.__events = {};\n }\n element.__events[eventName] = value;\n }\n else if (key === 'style' && typeof value === 'object') {\n Object.assign(element.style, value);\n }\n else if (key === 'className') {\n element.setAttribute('class', String(value));\n }\n else if (key !== 'key' && key !== 'ref') {\n element.setAttribute(key, String(value));\n }\n }\n // Handle children\n const children = props?.children;\n if (children != null) {\n const childArray = Array.isArray(children) ? children.flat() : [children];\n for (const child of childArray) {\n const childNode = await createElement(child);\n element.appendChild(childNode);\n }\n }\n return element;\n }\n // Handle other objects by converting to string\n return document.createTextNode(String(vnode));\n}\n\nlet isBatching = false;\nconst queue = [];\nfunction batchUpdates(fn) {\n if (isBatching) {\n queue.push(fn);\n return;\n }\n isBatching = true;\n try {\n fn();\n while (queue.length > 0) {\n const nextFn = queue.shift();\n nextFn?.();\n }\n }\n finally {\n isBatching = false;\n }\n}\n\nconst contexts = new Map();\nfunction createContext(defaultValue) {\n const contextId = Symbol('context');\n const Provider = ({ value, children }) => {\n contexts.set(contextId, value);\n return children;\n };\n const Consumer = ({ children }) => {\n const value = contexts.get(contextId) ?? defaultValue;\n return children(value);\n };\n const context = {\n Provider,\n Consumer,\n displayName: 'Context'\n };\n return context;\n}\nfunction useContext(context) {\n // In a real implementation, this would access the context value from the component tree\n // For now, returning a default value to satisfy TypeScript\n return {};\n}\n\n// Current render ID counter\nlet currentRender = 0;\nlet isSSR = false;\n// State storage\nconst states = new Map();\nconst stateIndices = new Map();\nconst effects = new Map();\nconst memos = new Map();\nconst refs = new Map();\n// Rendering callbacks\nlet globalRenderCallback = null;\nlet globalContainer = null;\nlet currentElement = null;\nfunction setRenderCallback(callback, element, container) {\n globalRenderCallback = callback;\n globalContainer = container;\n currentElement = element;\n}\nfunction prepareRender(component = null, isServerSideRender = false) {\n currentRender++;\n isSSR = isServerSideRender;\n stateIndices.set(currentRender, 0);\n // Initialize state array for this render if it doesn't exist\n if (!states.has(currentRender)) {\n states.set(currentRender, []);\n }\n return currentRender;\n}\nfunction finishRender() {\n // Don't reset currentRender to 0 immediately to preserve state\n // currentRender = 0;\n}\nfunction useState(initial) {\n if (!currentRender) {\n throw new Error(\"useState must be called within a render\");\n }\n if (!states.has(currentRender)) {\n states.set(currentRender, []);\n }\n const componentStates = states.get(currentRender);\n const index = stateIndices.get(currentRender) || 0;\n if (index >= componentStates.length) {\n componentStates.push(initial);\n }\n const state = componentStates[index];\n const setState = (newValue) => {\n // For SSR, don't actually update state\n if (isSSR) {\n return;\n }\n const nextValue = typeof newValue === 'function'\n ? newValue(componentStates[index])\n : newValue;\n if (componentStates[index] === nextValue)\n return;\n componentStates[index] = nextValue;\n if (isBatching) {\n batchUpdates(() => rerender(currentRender));\n }\n else {\n rerender(currentRender);\n }\n };\n stateIndices.set(currentRender, index + 1);\n return [state, setState];\n}\nfunction useEffect(callback, deps) {\n if (!currentRender)\n throw new Error(\"useEffect must be called within a render\");\n // Skip effects during SSR\n if (isSSR) {\n const effectIndex = stateIndices.get(currentRender) || 0;\n stateIndices.set(currentRender, effectIndex + 1);\n return;\n }\n const effectIndex = stateIndices.get(currentRender) || 0;\n if (!effects.has(currentRender)) {\n effects.set(currentRender, []);\n }\n const componentEffects = effects.get(currentRender);\n const prevEffect = componentEffects[effectIndex];\n if (!prevEffect || !deps || !prevEffect.deps || deps.some((dep, i) => dep !== prevEffect.deps[i])) {\n if (prevEffect?.cleanup) {\n prevEffect.cleanup();\n }\n // Schedule effect execution after render is complete\n queueMicrotask(() => {\n const cleanup = callback() || undefined;\n componentEffects[effectIndex] = { cleanup, deps: deps || [] };\n });\n }\n stateIndices.set(currentRender, effectIndex + 1);\n}\nfunction useMemo(factory, deps) {\n if (!currentRender)\n throw new Error(\"useMemo must be called within a render\");\n const memoIndex = stateIndices.get(currentRender) || 0;\n if (!memos.has(currentRender)) {\n memos.set(currentRender, []);\n }\n const componentMemos = memos.get(currentRender);\n const prevMemo = componentMemos[memoIndex];\n if (!prevMemo || (deps && deps.some((dep, i) => !Object.is(dep, prevMemo.deps[i])))) {\n const value = factory();\n componentMemos[memoIndex] = { value, deps: deps || [] };\n stateIndices.set(currentRender, memoIndex + 1);\n return value;\n }\n stateIndices.set(currentRender, memoIndex + 1);\n return prevMemo.value;\n}\nfunction useRef(initial) {\n if (!currentRender)\n throw new Error(\"useRef must be called within a render\");\n const refIndex = stateIndices.get(currentRender) || 0;\n if (!refs.has(currentRender)) {\n refs.set(currentRender, []);\n }\n const componentRefs = refs.get(currentRender);\n if (refIndex >= componentRefs.length) {\n const ref = { current: initial };\n componentRefs.push(ref);\n stateIndices.set(currentRender, refIndex + 1);\n return ref;\n }\n const ref = componentRefs[refIndex];\n stateIndices.set(currentRender, refIndex + 1);\n return ref;\n}\nasync function rerender(rendererId) {\n try {\n // Skip rerender during SSR\n if (isSSR) {\n return;\n }\n // Clean up effects\n const componentEffects = effects.get(rendererId);\n if (componentEffects) {\n componentEffects.forEach(effect => {\n if (effect.cleanup)\n effect.cleanup();\n });\n effects.set(rendererId, []);\n }\n // Trigger re-render\n if (globalRenderCallback && globalContainer && currentElement) {\n await globalRenderCallback(currentElement, globalContainer);\n }\n }\n catch (error) {\n console.error('Error during rerender:', error);\n }\n}\nfunction useErrorBoundary() {\n const [error, setError] = useState(null);\n return [error, () => setError(null)];\n}\n\n// Render function for client-side rendering\nasync function render(element, container) {\n try {\n // Set up render callback for state updates\n setRenderCallback(render, element, container);\n // Prepare render context\n const renderId = prepareRender(element);\n // Create DOM nodes from virtual elements\n const domNode = await createElement(element);\n // Clear container and append new content\n // Handle both Element and DocumentFragment cases\n if (container instanceof Element) {\n container.innerHTML = '';\n }\n else {\n // For DocumentFragment, clear all children\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n }\n container.appendChild(domNode);\n // Finish render\n finishRender();\n console.log('Render completed successfully');\n }\n catch (error) {\n console.error('Error during render:', error);\n throw error;\n }\n}\n// Hydrate function for client-side hydration of SSR content\nasync function hydrate(element, container) {\n try {\n console.log('Starting hydration...');\n // For now, hydrate works the same as render\n // In a more advanced implementation, this would preserve existing DOM\n // and only attach event listeners and initialize state\n await render(element, container);\n console.log('Hydration completed successfully');\n }\n catch (error) {\n console.error('Error during hydration:', error);\n throw error;\n }\n}\n\nasync function renderToString(element) {\n prepareRender(element); // Pass the element to establish render context\n try {\n const html = await renderNodeToString(element);\n return html;\n }\n finally {\n }\n}\nasync function renderNodeToString(node) {\n // Handle null, undefined, boolean\n if (node == null || typeof node === 'boolean') {\n return '';\n }\n // Handle primitives\n if (typeof node === 'string' || typeof node === 'number') {\n return escapeHtml(String(node));\n }\n // Handle arrays\n if (Array.isArray(node)) {\n const results = await Promise.all(node.map(child => renderNodeToString(child)));\n return results.join('');\n }\n // Handle objects with type and props (React-like elements)\n if (node && typeof node === 'object' && 'type' in node) {\n const { type, props = {} } = node;\n // Handle function components\n if (typeof type === 'function') {\n try {\n // Set up a new render context for this component\n const componentRenderId = prepareRender(type);\n try {\n const result = await type(props);\n return await renderNodeToString(result);\n }\n finally {\n finishRender();\n }\n }\n catch (error) {\n console.error('Error rendering component:', error);\n return `<!-- Error rendering component: ${error.message} -->`;\n }\n }\n // Handle DOM elements\n if (typeof type === 'string') {\n return await renderDOMElement(type, props);\n }\n }\n // Fallback for other objects\n if (typeof node === 'object') {\n return escapeHtml(JSON.stringify(node));\n }\n return escapeHtml(String(node));\n}\nasync function renderDOMElement(tagName, props) {\n const { children, ...attrs } = props;\n // Self-closing tags\n const voidElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ]);\n // Build attributes string\n const attributeString = Object.entries(attrs)\n .filter(([key, value]) => {\n // Filter out React-specific props and event handlers\n if (key.startsWith('on') || key === 'key' || key === 'ref')\n return false;\n if (value == null || value === false)\n return false;\n return true;\n })\n .map(([key, value]) => {\n // Handle className -> class\n if (key === 'className')\n key = 'class';\n // Handle boolean attributes\n if (value === true)\n return key;\n // Handle style objects\n if (key === 'style' && typeof value === 'object' && value !== null) {\n const styleString = Object.entries(value)\n .map(([prop, val]) => `${kebabCase(prop)}:${val}`)\n .join(';');\n return `style=\"${escapeHtml(styleString)}\"`;\n }\n return `${key}=\"${escapeHtml(String(value))}\"`;\n })\n .join(' ');\n const openTag = `<${tagName}${attributeString ? ' ' + attributeString : ''}>`;\n // Self-closing elements\n if (voidElements.has(tagName)) {\n return openTag.slice(0, -1) + '/>';\n }\n // Elements with children\n const closeTag = `</${tagName}>`;\n if (children != null) {\n const childrenString = await renderNodeToString(children);\n return openTag + childrenString + closeTag;\n }\n return openTag + closeTag;\n}\nfunction escapeHtml(text) {\n const htmlEscapes = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '/': '&#x2F;'\n };\n return text.replace(/[&<>\"'/]/g, (match) => htmlEscapes[match]);\n}\nfunction kebabCase(str) {\n return str.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n}\n\nfunction arePropsEqual(oldProps, newProps) {\n const oldKeys = Object.keys(oldProps).filter(k => k !== 'children');\n const newKeys = Object.keys(newProps).filter(k => k !== 'children');\n if (oldKeys.length !== newKeys.length)\n return false;\n return oldKeys.every(key => oldProps[key] === newProps[key]);\n}\nfunction diff(oldNode, newNode) {\n if (oldNode == null || newNode == null)\n return oldNode !== newNode;\n if (typeof oldNode !== typeof newNode)\n return true;\n if (typeof newNode === 'string' || typeof newNode === 'number')\n return oldNode !== newNode;\n if (newNode.type !== oldNode.type)\n return true;\n return !arePropsEqual(oldNode.props, newNode.props);\n}\nfunction shouldComponentUpdate(oldProps, newProps) {\n return !arePropsEqual(oldProps, newProps);\n}\n\nclass Component {\n constructor(props = {}) {\n this.state = {};\n this.element = null;\n this._mounted = false;\n this.props = props;\n }\n componentDidMount() {\n // Hook for after component is mounted\n }\n async setState(newState) {\n const prevState = { ...this.state };\n this.state = { ...prevState, ...newState };\n console.log(`${this.constructor.name} state updated:`, {\n prev: prevState,\n next: this.state\n });\n await Promise.resolve(); // Ensure state is updated before re-render\n if (this._mounted) {\n await this.update();\n }\n else {\n await this.update();\n }\n }\n _replayEvents(oldElement, newElement) {\n const oldEvents = oldElement.__events || {};\n Object.entries(oldEvents).forEach(([event, handler]) => {\n newElement.addEventListener(event, handler);\n });\n newElement.__events = oldEvents;\n }\n _deepCloneWithEvents(node) {\n const clone = node.cloneNode(false);\n // Copy events from original element\n const events = node.__events || {};\n clone.__events = events;\n Object.entries(events).forEach(([event, handler]) => {\n clone.addEventListener(event, handler);\n });\n // Clone children\n Array.from(node.childNodes).forEach(child => {\n if (child instanceof HTMLElement) {\n clone.appendChild(this._deepCloneWithEvents(child));\n }\n else {\n clone.appendChild(child.cloneNode(true));\n }\n });\n return clone;\n }\n async update() {\n const vdom = this.render();\n if (!vdom)\n return document.createTextNode('');\n const rendered = await createElement(vdom);\n if (rendered instanceof HTMLElement) {\n return this._updateElement(rendered);\n }\n const wrapper = document.createElement('div');\n wrapper.appendChild(rendered);\n return this._updateElement(wrapper);\n }\n async _updateElement(rendered) {\n const newElement = this._deepCloneWithEvents(rendered);\n newElement.__instance = this;\n if (!this.element) {\n this.element = newElement;\n if (!this._mounted) {\n this._mounted = true;\n queueMicrotask(() => this.componentDidMount());\n }\n }\n else if (this.element.parentNode) {\n this.element.parentNode.replaceChild(newElement, this.element);\n this.element = newElement;\n }\n return this.element;\n }\n render() {\n throw new Error('Component must implement render() method');\n }\n}\n\n/**\n * Client-side router for single-page applications\n */\n// Create context for router\nconst RouterContext = createContext({\n location: {\n pathname: '/',\n search: '',\n hash: ''\n },\n params: {},\n navigate: () => { },\n match: () => false\n});\n// Parse path pattern into regex\nfunction parsePath(path) {\n // Convert :param syntax to capture groups\n const pattern = path\n .replace(/\\/+$/, '') // Remove trailing slashes\n .replace(/^\\/+/, '/') // Ensure leading slash\n .replace(/\\/:([^/]+)/g, '/([^/]+)');\n // Get param names\n const paramNames = [];\n path.replace(/\\/:([^/]+)/g, (_, paramName) => {\n paramNames.push(paramName);\n return '';\n });\n return { pattern, paramNames };\n}\n// Match a path against a pattern\nfunction matchPath(pathname, route) {\n const { path, exact = false } = route;\n const { pattern, paramNames } = parsePath(path);\n // Create regex with or without exact matching\n const regex = new RegExp(`^${pattern}${exact ? '$' : ''}`);\n const match = pathname.match(regex);\n if (!match)\n return null;\n // Extract params\n const params = {};\n paramNames.forEach((name, index) => {\n params[name] = match[index + 1];\n });\n return params;\n}\n// Router Provider component\nfunction RouterProvider({ routes, children }) {\n // Get initial location from window if available\n const getInitialLocation = () => {\n if (typeof window === 'undefined') {\n return { pathname: '/', search: '', hash: '' };\n }\n return {\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash\n };\n };\n // Fix: Call the function to get the initial value instead of passing the function itself\n const [location, setLocation] = useState(getInitialLocation());\n const [params, setParams] = useState({});\n // Update params when location changes\n useEffect(() => {\n for (const route of routes) {\n const matchedParams = matchPath(location.pathname, route);\n if (matchedParams) {\n setParams(matchedParams);\n break;\n }\n }\n }, [location, routes]);\n // Listen for popstate events\n useEffect(() => {\n if (typeof window === 'undefined')\n return;\n const handlePopState = () => {\n setLocation({\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash\n });\n };\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n }, []);\n // Navigation function\n const navigate = (to, options = {}) => {\n if (typeof window === 'undefined')\n return;\n const { replace = false, state = null } = options;\n if (replace) {\n window.history.replaceState(state, '', to);\n }\n else {\n window.history.pushState(state, '', to);\n }\n // Update location\n setLocation({\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash\n });\n };\n // Match function to test if a path matches the current location\n const match = (path) => {\n const { pattern } = parsePath(path);\n const regex = new RegExp(`^${pattern}`);\n return regex.test(location.pathname);\n };\n // Router context value\n const routerValue = {\n location: {\n pathname: location.pathname,\n search: location.search,\n hash: location.hash\n },\n params,\n navigate,\n match\n };\n return jsx(RouterContext.Provider, { value: routerValue, children });\n}\n// Route component\nfunction Route({ path, component: Component, props = {} }) {\n const context = useContext();\n const params = context.params;\n const locationPathname = context.location.pathname;\n const routeToMatch = { path, component: Component };\n const match = matchPath(locationPathname, routeToMatch);\n if (!match)\n return null;\n return jsx(Component, { ...props, params });\n}\n// Switch component\nfunction Switch({ children }) {\n const context = useContext();\n const locationPathname = context.location.pathname;\n // Find the first matching route\n const child = Array.isArray(children)\n ? children.find(child => {\n if (!child || typeof child.type !== 'function' || !child.props.path)\n return false;\n const routeObj = {\n path: child.props.path,\n component: child.type,\n exact: child.props.exact || false\n };\n return matchPath(locationPathname, routeObj);\n })\n : children;\n return child || null;\n}\n// Link component\nfunction Link({ to, replace = false, state = null, className = '', activeClassName = '', children, ...rest }) {\n const context = useContext();\n const navigate = context.navigate;\n const match = context.match;\n const handleClick = (e) => {\n e.preventDefault();\n navigate(to, { replace, state });\n };\n const isActive = match(to);\n const classes = [\n className,\n isActive ? activeClassName : ''\n ].filter(Boolean).join(' ');\n return jsx('a', {\n href: to,\n className: classes || undefined,\n onClick: handleClick,\n ...rest,\n children\n });\n}\n// Redirect component\nfunction Redirect({ to, replace = true }) {\n const context = useContext();\n const navigate = context.navigate;\n useEffect(() => {\n navigate(to, { replace });\n }, [to]);\n return null;\n}\n// Hooks\nfunction useLocation() {\n const context = useContext();\n return context.location;\n}\nfunction useParams() {\n const context = useContext();\n return context.params;\n}\nfunction useNavigate() {\n const context = useContext();\n return context.navigate;\n}\n\n/**\n * Form handling utilities for the framework\n */\nfunction useForm(options) {\n const { initialValues, validate, onSubmit } = options;\n const [values, setValues] = useState(initialValues);\n const [errors, setErrors] = useState({});\n const [touched, setTouched] = useState({});\n const [dirty, setDirty] = useState({});\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [submitCount, setSubmitCount] = useState(0);\n // Track form validity and dirty state\n const isValid = Object.keys(errors).length === 0;\n const isDirty = Object.values(dirty).some(Boolean);\n // Validate form when values or validate function changes\n useEffect(() => {\n if (validate) {\n const validationErrors = validate(values);\n setErrors(validationErrors || {});\n }\n }, [values, validate]);\n // Handle form input changes\n const handleChange = (e) => {\n const { name, value, type, checked } = e.target;\n const fieldValue = type === 'checkbox' ? checked : value;\n setValues(prev => ({\n ...prev,\n [name]: fieldValue\n }));\n setDirty(prev => ({\n ...prev,\n [name]: true\n }));\n };\n // Handle field blur\n const handleBlur = (e) => {\n const { name } = e.target;\n setTouched(prev => ({\n ...prev,\n [name]: true\n }));\n };\n // Set field value programmatically\n const setFieldValue = (field, value) => {\n setValues(prev => ({\n ...prev,\n [field]: value\n }));\n setDirty(prev => ({\n ...prev,\n [field]: true\n }));\n };\n // Set field error programmatically\n const setFieldError = (field, error) => {\n setErrors(prev => ({\n ...prev,\n [field]: error\n }));\n };\n // Update multiple values at once\n const updateValues = (newValues) => {\n setValues(prev => ({\n ...prev,\n ...newValues\n }));\n // Mark changed fields as dirty\n const dirtyFields = {};\n Object.keys(newValues).forEach(key => {\n dirtyFields[key] = true;\n });\n setDirty(prev => ({\n ...prev,\n ...dirtyFields\n }));\n };\n // Reset form to initial state\n const resetForm = () => {\n setValues(initialValues);\n setErrors({});\n setTouched({});\n setDirty({});\n setIsSubmitting(false);\n };\n // Handle form submission\n const handleSubmit = async (e) => {\n e.preventDefault();\n // Mark all fields as touched\n const allTouched = {};\n Object.keys(values).forEach(key => {\n allTouched[key] = true;\n });\n setTouched(allTouched);\n // Validate before submission\n let validationErrors = {};\n if (validate) {\n validationErrors = validate(values);\n setErrors(validationErrors || {});\n }\n // Only proceed if valid\n if (Object.keys(validationErrors).length === 0 && onSubmit) {\n setIsSubmitting(true);\n setSubmitCount(count => count + 1);\n try {\n await onSubmit(values, {\n fields: Object.keys(values).reduce((acc, key) => {\n acc[key] = {\n value: values[key],\n error: errors[key],\n touched: touched[key] || false,\n dirty: dirty[key] || false\n };\n return acc;\n }, {}),\n isValid,\n isDirty,\n isSubmitting: true,\n submitCount: submitCount + 1\n });\n }\n finally {\n setIsSubmitting(false);\n }\n }\n };\n return {\n values,\n errors,\n touched,\n dirty,\n isValid,\n isDirty,\n isSubmitting,\n submitCount,\n handleChange,\n handleBlur,\n handleSubmit,\n setFieldValue,\n setFieldError,\n setValues: updateValues,\n resetForm\n };\n}\n\nfunction createEventBus() {\n const events = new Map();\n const onceHandlers = new WeakMap();\n const on = (event, handler) => {\n if (!events.has(event)) {\n events.set(event, new Set());\n }\n events.get(event).add(handler);\n // Return a function to remove this handler\n return () => off(event, handler);\n };\n const once = (event, handler) => {\n // Create a wrapper that will call the handler and remove itself\n const onceWrapper = (...args) => {\n off(event, onceWrapper);\n handler(...args);\n };\n // Store the mapping between the original handler and the wrapper\n onceHandlers.set(handler, onceWrapper);\n // Register the wrapper\n return on(event, onceWrapper);\n };\n const off = (event, handler) => {\n // If no handler is provided, remove all handlers for the event\n if (!handler) {\n events.delete(event);\n return;\n }\n // Check if it's a once handler wrapper\n const wrappedHandler = onceHandlers.get(handler);\n const handlerToRemove = wrappedHandler || handler;\n if (events.has(event)) {\n events.get(event).delete(handlerToRemove);\n // Clean up empty event sets\n if (events.get(event).size === 0) {\n events.delete(event);\n }\n }\n };\n const emit = (event, ...args) => {\n if (!events.has(event)) {\n return;\n }\n // Create a copy of the handlers to avoid issues if handlers modify the set\n const handlers = Array.from(events.get(event));\n // Call each handler with the arguments\n for (const handler of handlers) {\n handler(...args);\n }\n };\n const clear = (event) => {\n if (event) {\n events.delete(event);\n }\n else {\n events.clear();\n }\n };\n return { on, once, off, emit, clear };\n}\n// Create a global event bus instance\nconst globalEventBus = createEventBus();\n// Hook to use the event bus in components\nfunction useEvent(event, handler, options = {}) {\n return options.once\n ? globalEventBus.once(event, handler)\n : globalEventBus.on(event, handler);\n}\n\n/**\n * Global state management solution similar to Redux\n */\nfunction createStore(reducer, initialState, middlewares = []) {\n let state = initialState;\n let listeners = [];\n // Apply middlewares\n let dispatch = (action) => {\n state = reducer(state, action);\n listeners.forEach(listener => listener());\n return action;\n };\n // Chain middlewares\n if (middlewares.length > 0) {\n const middlewareAPI = {\n getState: () => state,\n dispatch: (action) => dispatch(action),\n subscribe: (listener) => subscribe(listener)\n };\n const chain = middlewares.map(middleware => middleware(middlewareAPI));\n dispatch = chain.reduce((a, b) => (next) => a(b(next)))(dispatch);\n }\n // Subscribe to store changes\n function subscribe(listener) {\n listeners.push(listener);\n return function unsubscribe() {\n listeners = listeners.filter(l => l !== listener);\n };\n }\n // Initialize store with default state\n dispatch({ type: '@@INIT' });\n return {\n getState: () => state,\n dispatch,\n subscribe\n };\n}\nconst StoreContext = createContext({\n store: {\n getState: () => ({}),\n dispatch: () => { },\n subscribe: () => () => { }\n },\n state: {}\n});\nfunction StoreProvider({ store, children }) {\n const [state, setState] = useState(store.getState());\n useEffect(() => {\n const unsubscribe = store.subscribe(() => {\n setState(store.getState());\n });\n return unsubscribe;\n }, [store]);\n return jsx(StoreContext.Provider, {\n value: { store, state },\n children\n });\n}\nfunction useSelector(selector) {\n const context = useContext();\n return selector(context.state);\n}\nfunction useDispatch() {\n const context = useContext();\n return context.store.dispatch;\n}\nfunction useStore() {\n const context = useContext();\n return context.store;\n}\n// Common middlewares\nconst logger = (store) => (next) => (action) => {\n console.group(action.type);\n console.log('Previous state:', store.getState());\n console.log('Action:', action);\n const result = next(action);\n console.log('Next state:', store.getState());\n console.groupEnd();\n return result;\n};\nconst thunk = (store) => (next) => (action) => {\n if (typeof action === 'function') {\n return action(store.dispatch, store.getState);\n }\n return next(action);\n};\n\n/**\n * Lifecycle events for components and application\n */\nvar LifecycleEvents;\n(function (LifecycleEvents) {\n LifecycleEvents[\"APP_INIT\"] = \"app:init\";\n LifecycleEvents[\"APP_MOUNTED\"] = \"app:mounted\";\n LifecycleEvents[\"APP_UPDATED\"] = \"app:updated\";\n LifecycleEvents[\"APP_ERROR\"] = \"app:error\";\n LifecycleEvents[\"APP_DESTROYED\"] = \"app:destroyed\";\n LifecycleEvents[\"COMPONENT_CREATED\"] = \"component:created\";\n LifecycleEvents[\"COMPONENT_MOUNTED\"] = \"component:mounted\";\n LifecycleEvents[\"COMPONENT_UPDATED\"] = \"component:updated\";\n LifecycleEvents[\"COMPONENT_ERROR\"] = \"component:error\";\n LifecycleEvents[\"COMPONENT_UNMOUNTED\"] = \"component:unmounted\";\n LifecycleEvents[\"ROUTER_BEFORE_CHANGE\"] = \"router:before-change\";\n LifecycleEvents[\"ROUTER_AFTER_CHANGE\"] = \"router:after-change\";\n LifecycleEvents[\"ROUTER_ERROR\"] = \"router:error\";\n LifecycleEvents[\"STORE_INITIALIZED\"] = \"store:initialized\";\n LifecycleEvents[\"STORE_BEFORE_ACTION\"] = \"store:before-action\";\n LifecycleEvents[\"STORE_AFTER_ACTION\"] = \"store:after-action\";\n LifecycleEvents[\"STORE_ERROR\"] = \"store:error\";\n})(LifecycleEvents || (LifecycleEvents = {}));\n// Event emitters\nfunction emitAppInit(data) {\n globalEventBus.emit(LifecycleEvents.APP_INIT, data);\n}\nfunction emitAppMounted(rootElement) {\n globalEventBus.emit(LifecycleEvents.APP_MOUNTED, rootElement);\n}\nfunction emitAppUpdated() {\n globalEventBus.emit(LifecycleEvents.APP_UPDATED);\n}\nfunction emitAppError(error) {\n globalEventBus.emit(LifecycleEvents.APP_ERROR, error);\n}\nfunction emitAppDestroyed() {\n globalEventBus.emit(LifecycleEvents.APP_DESTROYED);\n}\nfunction emitComponentCreated(info) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_CREATED, info);\n}\nfunction emitComponentMounted(info, element) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_MOUNTED, info, element);\n}\nfunction emitComponentUpdated(info, prevProps, newProps) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_UPDATED, info, prevProps, newProps);\n}\nfunction emitComponentError(info, error) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_ERROR, info, error);\n}\nfunction emitComponentUnmounted(info) {\n globalEventBus.emit(LifecycleEvents.COMPONENT_UNMOUNTED, info);\n}\n// Event listeners\nfunction onAppInit(handler) {\n return globalEventBus.on(LifecycleEvents.APP_INIT, handler);\n}\nfunction onAppMounted(handler) {\n return globalEventBus.on(LifecycleEvents.APP_MOUNTED, handler);\n}\nfunction onAppUpdated(handler) {\n return globalEventBus.on(LifecycleEvents.APP_UPDATED, handler);\n}\nfunction onAppError(handler) {\n return globalEventBus.on(LifecycleEvents.APP_ERROR, handler);\n}\nfunction onAppDestroyed(handler) {\n return globalEventBus.on(LifecycleEvents.APP_DESTROYED, handler);\n}\nfunction onComponentCreated(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_CREATED, handler);\n}\nfunction onComponentMounted(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_MOUNTED, handler);\n}\nfunction onComponentUpdated(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_UPDATED, handler);\n}\nfunction onComponentError(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_ERROR, handler);\n}\nfunction onComponentUnmounted(handler) {\n return globalEventBus.on(LifecycleEvents.COMPONENT_UNMOUNTED, handler);\n}\n\n// Core JSX and rendering functions\n// Default export object for compatibility\nconst frontendHamroun = {\n // JSX\n jsx,\n jsxs: jsx,\n jsxDEV: jsx,\n Fragment,\n createElement,\n // Rendering\n render,\n hydrate,\n renderToString,\n // Hooks\n useState,\n useEffect,\n useMemo,\n useRef,\n useContext,\n useErrorBoundary,\n // Context\n createContext,\n // Utilities\n batchUpdates,\n diff,\n shouldComponentUpdate,\n // Component class\n Component,\n // Router\n RouterProvider,\n Route,\n Switch,\n Link,\n Redirect,\n useLocation,\n useParams,\n useNavigate,\n // Forms\n useForm,\n // Event bus\n createEventBus,\n useEvent,\n eventBus: globalEventBus\n};\n\nexport { Component, Fragment, LifecycleEvents, Link, Redirect, Route, RouterProvider, StoreProvider, Switch, batchUpdates, createContext, createElement, createEventBus, createStore, frontendHamroun as default, diff, emitAppDestroyed, emitAppError, emitAppInit, emitAppMounted, emitAppUpdated, emitComponentCreated, emitComponentError, emitComponentMounted, emitComponentUnmounted, emitComponentUpdated, globalEventBus as eventBus, hydrate, jsx, jsx as jsxDEV, jsx as jsxs, logger, onAppDestroyed, onAppError, onAppInit, onAppMounted, onAppUpdated, onComponentCreated, onComponentError, onComponentMounted, onComponentUnmounted, onComponentUpdated, render, renderToString, shouldComponentUpdate, thunk, useContext, useDispatch, useEffect, useErrorBoundary, useEvent, useForm, useLocation, useMemo, useNavigate, useParams, useRef, useSelector, useState, useStore };\n//# sourceMappingURL=index.js.map\n", "/**\r\n * WebAssembly integration for Frontend Hamroun\r\n * Works in both browser and Node.js environments\r\n */\r\n\r\nexport interface GoWasmOptions {\r\n debug?: boolean;\r\n goWasmPath?: string;\r\n importObject?: any;\r\n onLoad?: (instance: GoWasmInstance) => void;\r\n}\r\n\r\nexport interface GoWasmInstance {\r\n instance: WebAssembly.Instance;\r\n module: WebAssembly.Module;\r\n exports: WebAssembly.Exports;\r\n functions: Record<string, Function>;\r\n}\r\n\r\n/**\r\n * Load Go WASM module in the browser (like your working frontend code)\r\n */\r\nexport async function loadGoWasm(\r\n wasmUrl: string,\r\n options: GoWasmOptions = {}\r\n): Promise<GoWasmInstance> {\r\n if (typeof window === 'undefined') {\r\n throw new Error('loadGoWasm() is for browser use only. Use loadGoWasmFromFile() in Node.js.');\r\n }\r\n\r\n try {\r\n // Check if Go WASM runtime is available (like your frontend code)\r\n if (!window.Go) {\r\n throw new Error('Go WASM runtime not available. Make sure wasm_exec.js is loaded.');\r\n }\r\n\r\n if (options.debug) {\r\n console.log('[WASM] Loading WASM from:', wasmUrl);\r\n }\r\n\r\n // Fetch the WASM file (exactly like your frontend code)\r\n const response = await fetch(wasmUrl);\r\n \r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch WASM file: ${response.status}`);\r\n }\r\n\r\n const wasmBytes = await response.arrayBuffer();\r\n \r\n // Initialize Go runtime (exactly like your frontend code)\r\n const go = new window.Go();\r\n const wasmModule = await WebAssembly.instantiate(wasmBytes, go.importObject);\r\n \r\n // Run the Go program (exactly like your frontend code)\r\n go.run(wasmModule.instance);\r\n \r\n // Wait a bit for Go functions to be registered (like your frontend code)\r\n await new Promise(resolve => setTimeout(resolve, 100));\r\n \r\n if (options.debug) {\r\n console.log('[WASM] Go program started, checking for registered functions...');\r\n }\r\n\r\n // Extract exported functions from global scope (like your frontend code)\r\n const functions: Record<string, Function> = {};\r\n \r\n // Look for Go functions in global scope\r\n for (const key in window) {\r\n if (typeof window[key] === 'function' && key.startsWith('go')) {\r\n functions[key] = window[key] as Function;\r\n if (options.debug) {\r\n console.log(`[WASM] Found function: ${key}`);\r\n }\r\n }\r\n }\r\n\r\n const wasmInstance: GoWasmInstance = {\r\n instance: wasmModule.instance,\r\n module: wasmModule,\r\n exports: wasmModule.instance.exports,\r\n functions\r\n };\r\n\r\n if (options.onLoad) {\r\n options.onLoad(wasmInstance);\r\n }\r\n\r\n if (options.debug) {\r\n console.log(`[WASM] Module loaded successfully with ${Object.keys(functions).length} functions`);\r\n }\r\n\r\n return wasmInstance;\r\n\r\n } catch (error) {\r\n console.error('[WASM] Error loading Go WASM module:', error);\r\n throw error;\r\n }\r\n}\r\n\r\n/**\r\n * Call a Go WASM function (like your frontend code's callWasmFunction)\r\n */\r\nexport function callWasmFunction(funcName: string, ...args: any[]): any {\r\n if (typeof window === 'undefined') {\r\n throw new Error('callWasmFunction() is for browser use only.');\r\n }\r\n\r\n const func = (window as any)[funcName];\r\n if (typeof func !== 'function') {\r\n throw new Error(`Function ${funcName} not found. Make sure the WASM module is loaded.`);\r\n }\r\n \r\n return func(...args);\r\n}\r\n\r\n/**\r\n * Check if Go WASM is ready (like your frontend code's wasmReady state)\r\n */\r\nexport function isWasmReady(): boolean {\r\n if (typeof window === 'undefined') {\r\n return false;\r\n }\r\n\r\n // Check if Go runtime is available and at least one Go function exists\r\n return !!(window.Go && Object.keys(window).some(key => \r\n key.startsWith('go') && typeof window[key] === 'function'\r\n ));\r\n}\r\n\r\n/**\r\n * Get all available Go WASM functions\r\n */\r\nexport function getWasmFunctions(): string[] {\r\n if (typeof window === 'undefined') {\r\n return [];\r\n }\r\n\r\n return Object.keys(window).filter(key => \r\n key.startsWith('go') && typeof window[key] === 'function'\r\n );\r\n}\r\n\r\n/**\r\n * Hook for React components (like your frontend code's useEffect pattern)\r\n */\r\nexport function useGoWasm(wasmUrl: string, options: GoWasmOptions = {}) {\r\n if (typeof window === 'undefined') {\r\n throw new Error('useGoWasm() is for browser use only.');\r\n }\r\n\r\n // This would need to be implemented as a React hook in frontend-hamroun\r\n // For now, return the basic functionality\r\n return {\r\n loadWasm: () => loadGoWasm(wasmUrl, options),\r\n callFunction: callWasmFunction,\r\n isReady: isWasmReady,\r\n getFunctions: getWasmFunctions\r\n };\r\n}\r\n\r\n// Browser-specific type declarations\r\ndeclare global {\r\n interface Window {\r\n Go: new () => {\r\n importObject: any;\r\n run: (instance: WebAssembly.Instance) => void;\r\n };\r\n [key: string]: any;\r\n }\r\n}\r\n", "/**\r\n * HTML template generators for server-side rendering\r\n */\r\n\r\nexport interface DocumentOptions {\r\n title?: string;\r\n description?: string;\r\n lang?: string;\r\n charset?: string;\r\n viewport?: string;\r\n scripts?: string[];\r\n styles?: string[];\r\n meta?: Record<string, string>;\r\n bodyClasses?: string;\r\n htmlAttrs?: Record<string, string>;\r\n bodyAttrs?: Record<string, string>;\r\n initialData?: any;\r\n componentName?: string;\r\n}\r\n\r\n/**\r\n * Generate a complete HTML document\r\n */\r\nexport function generateDocument(\r\n content: string, \r\n options: DocumentOptions = {}\r\n): string {\r\n const {\r\n title = 'Frontend Hamroun App',\r\n description = '',\r\n lang = 'en',\r\n charset = 'UTF-8',\r\n viewport = 'width=device-width, initial-scale=1.0',\r\n scripts = [],\r\n styles = [],\r\n meta = {},\r\n bodyClasses = '',\r\n htmlAttrs = {},\r\n bodyAttrs = {},\r\n initialData = {},\r\n componentName = ''\r\n } = options;\r\n \r\n // Generate HTML attributes\r\n const htmlAttributes = Object.entries(htmlAttrs)\r\n .map(([key, value]) => `${key}=\"${escapeHtml(value)}\"`)\r\n .join(' ');\r\n \r\n // Generate body attributes\r\n const bodyAttributes = Object.entries(bodyAttrs)\r\n .map(([key, value]) => `${key}=\"${escapeHtml(value)}\"`)\r\n .join(' ');\r\n \r\n // Generate meta tags\r\n const metaTags = [\r\n `<meta charset=\"${charset}\">`,\r\n `<meta name=\"viewport\" content=\"${viewport}\">`,\r\n description ? `<meta name=\"description\" content=\"${escapeHtml(description)}\">` : ''\r\n ];\r\n \r\n // Add custom meta tags\r\n Object.entries(meta).forEach(([name, content]) => {\r\n metaTags.push(`<meta name=\"${escapeHtml(name)}\" content=\"${escapeHtml(content)}\">`);\r\n });\r\n \r\n // Generate script tags\r\n const scriptTags = scripts.map(src => {\r\n if (src.startsWith('<script')) {\r\n return src; // Allow inline scripts\r\n }\r\n return `<script src=\"${escapeHtml(src)}\" ${src.endsWith('.js') ? 'type=\"module\"' : ''} defer></script>`;\r\n });\r\n \r\n // Generate style tags\r\n const styleTags = styles.map(href => {\r\n if (href.startsWith('<style')) {\r\n return href; // Allow inline styles\r\n }\r\n return `<link rel=\"stylesheet\" href=\"${escapeHtml(href)}\">`;\r\n });\r\n \r\n // Create initial data script\r\n const initialDataScript = Object.keys(initialData).length > 0 ? \r\n `<script id=\"__APP_DATA__\" type=\"application/json\">${escapeHtml(JSON.stringify(initialData))}</script>` : '';\r\n \r\n // Create the complete HTML document\r\n return `<!DOCTYPE html>\r\n<html lang=\"${lang}\" ${htmlAttributes}>\r\n<head>\r\n ${metaTags.filter(Boolean).join('\\n ')}\r\n <title>${escapeHtml(title)}</title>\r\n ${styleTags.join('\\n ')}\r\n</head>\r\n<body class=\"${bodyClasses}\" ${bodyAttributes}>\r\n <div id=\"app-root\" data-ssr-root${componentName ? ` data-component=\"${escapeHtml(componentName)}\"` : ''}>${content}</div>\r\n ${initialDataScript}\r\n ${scriptTags.join('\\n ')}\r\n</body>\r\n</html>`;\r\n}\r\n\r\n/**\r\n * Generate an error page\r\n */\r\nexport function generateErrorPage(\r\n statusCode: number, \r\n message: string, \r\n error?: Error\r\n): string {\r\n const errorMessages: Record<number, string> = {\r\n 400: 'Bad Request',\r\n 401: 'Unauthorized',\r\n 403: 'Forbidden',\r\n 404: 'Not Found',\r\n 500: 'Internal Server Error'\r\n };\r\n \r\n const title = `${statusCode} - ${errorMessages[statusCode] || 'Error'}`;\r\n \r\n // Generate error details (only in development)\r\n const isDev = process.env.NODE_ENV !== 'production';\r\n const errorDetails = isDev && error ? `\r\n <div class=\"error-details\">\r\n <pre>${escapeHtml(error.stack || error.message)}</pre>\r\n </div>\r\n ` : '';\r\n \r\n // Create error content\r\n const content = `\r\n <div class=\"error-container\">\r\n <h1>${statusCode}</h1>\r\n <h2>${escapeHtml(errorMessages[statusCode] || 'Error')}</h2>\r\n <p>${escapeHtml(message)}</p>\r\n ${errorDetails}\r\n <a href=\"/\" class=\"home-link\">Back to Home</a>\r\n </div>\r\n `;\r\n \r\n // Add error page styling\r\n const styles = [`<style>\r\n body {\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n min-height: 100vh;\r\n margin: 0;\r\n background-color: #f7f7f7;\r\n color: #333;\r\n }\r\n .error-container {\r\n text-align: center;\r\n padding: 2rem;\r\n border-radius: 8px;\r\n background-color: white;\r\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\r\n max-width: 600px;\r\n width: 100%;\r\n }\r\n h1 {\r\n font-size: 6rem;\r\n margin: 0;\r\n color: #e74c3c;\r\n }\r\n h2 {\r\n margin-top: 0;\r\n margin-bottom: 1rem;\r\n color: #333;\r\n }\r\n .error-details {\r\n text-align: left;\r\n margin: 2rem 0;\r\n padding: 1rem;\r\n background-color: #f8f8f8;\r\n border-radius: 4px;\r\n overflow: auto;\r\n }\r\n pre {\r\n margin: 0;\r\n font-family: monospace;\r\n font-size: 0.85rem;\r\n white-space: pre-wrap;\r\n }\r\n .home-link {\r\n display: inline-block;\r\n margin-top: 1.5rem;\r\n padding: 0.75rem 1.5rem;\r\n background-color: #3498db;\r\n color: white;\r\n text-decoration: none;\r\n border-radius: 4px;\r\n transition: background-color 0.2s;\r\n }\r\n .home-link:hover {\r\n background-color: #2980b9;\r\n }\r\n </style>`];\r\n \r\n return generateDocument(content, {\r\n title,\r\n description: `Error ${statusCode}: ${errorMessages[statusCode] || 'Error'}`,\r\n bodyClasses: 'error-page',\r\n styles\r\n });\r\n}\r\n\r\n/**\r\n * Generate a loading page\r\n */\r\nexport function generateLoadingPage(message: string = 'Loading...'): string {\r\n const content = `\r\n <div class=\"loading-container\">\r\n <div class=\"spinner\"></div>\r\n <p>${escapeHtml(message)}</p>\r\n </div>\r\n `;\r\n \r\n const styles = [`<style>\r\n body {\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n min-height: 100vh;\r\n margin: 0;\r\n background-color: #f7f7f7;\r\n color: #333;\r\n }\r\n .loading-container {\r\n text-align: center;\r\n }\r\n .spinner {\r\n width: 50px;\r\n height: 50px;\r\n border: 5px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 50%;\r\n border-top-color: #3498db;\r\n animation: spin 1s ease-in-out infinite;\r\n margin: 0 auto 20px;\r\n }\r\n @keyframes spin {\r\n to { transform: rotate(360deg); }\r\n }\r\n </style>`];\r\n \r\n return generateDocument(content, {\r\n title: 'Loading',\r\n bodyClasses: 'loading-page',\r\n styles\r\n });\r\n}\r\n\r\n/**\r\n * Escape HTML special characters\r\n */\r\nfunction escapeHtml(text: string): string {\r\n return String(text)\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#039;');\r\n}\r\n", "/**\r\n * Browser-only entry point for baraqex\r\n * This file excludes all server dependencies to ensure browser compatibility\r\n */\r\n\r\n// Re-export everything from frontend-hamroun\r\nexport * from 'frontend-hamroun';\r\n\r\n// Export browser-compatible WASM functionality\r\nexport { loadGoWasm, callWasmFunction, isWasmReady, getWasmFunctions, useGoWasm } from './wasm.js';\r\n\r\n// Export type definitions (safe for all environments)\r\nexport type { GoWasmOptions, GoWasmInstance } from './wasm.js';\r\n\r\n// Export basic template utilities (no server dependencies)\r\nexport { generateDocument, generateErrorPage, generateLoadingPage } from './server/templates.js';\r\n\r\n// Simple renderToString function for browser SSR compatibility\r\nexport function renderToString(content: any): string {\r\n if (typeof content === 'string') {\r\n return content;\r\n }\r\n if (typeof content === 'function') {\r\n try {\r\n const result = content();\r\n return String(result);\r\n } catch (error) {\r\n return `<!-- Error rendering: ${error} -->`;\r\n }\r\n }\r\n return String(content);\r\n}\r\n\r\n// Browser-compatible utility functions\r\nexport function generateToken(length: number = 32): string {\r\n const array = new Uint8Array(length);\r\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\r\n crypto.getRandomValues(array);\r\n } else {\r\n // Fallback for environments without crypto\r\n for (let i = 0; i < array.length; i++) {\r\n array[i] = Math.floor(Math.random() * 256);\r\n }\r\n }\r\n return Array.from(array, byte => byte.toString(16).padStart(2, '0')).join('');\r\n}\r\n\r\nexport function safeJsonParse<T>(json: string, fallback: T): T {\r\n try {\r\n return JSON.parse(json) as T;\r\n } catch (error) {\r\n return fallback;\r\n }\r\n}\r\n\r\n// Browser environment detection\r\nexport const isBrowser = typeof window !== 'undefined';\r\nexport const isNode = false; // Always false in browser build\r\n\r\nconsole.log('Baraqex - Browser version loaded');\r\n"],
5
+ "mappings": "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",
6
+ "names": ["effectIndex", "ref", "Component", "child", "LifecycleEvents", "content"]
7
7
  }
package/dist/index.d.ts CHANGED
@@ -31,5 +31,4 @@ export declare let ensureDirectory: any;
31
31
  export declare let writeJsonFile: any;
32
32
  export declare let readJsonFile: any;
33
33
  export declare let baraqexRenderToString: any;
34
- export declare function renderToString(content: any): string;
35
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAOjG,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,sBAAsB,EAAE,GAAU,CAAC;AAC9C,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,QAAQ,EAAE,GAAU,CAAC;AAChC,eAAO,IAAI,WAAW,EAAE,GAAU,CAAC;AACnC,eAAO,IAAI,SAAS,EAAE,GAAU,CAAC;AACjC,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,SAAS,EAAE,GAAU,CAAC;AACjC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,kBAAkB,EAAE,GAAU,CAAC;AAC1C,eAAO,IAAI,aAAa,EAAE,GAMzB,CAAC;AACF,eAAO,IAAI,aAAa,EAAE,GAUzB,CAAC;AACF,eAAO,IAAI,UAAU,EAAE,GAAU,CAAC;AAClC,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,WAAW,EAAE,GAAU,CAAC;AACnC,eAAO,IAAI,SAAS,EAAE,GAAU,CAAC;AACjC,eAAO,IAAI,cAAc,EAAE,GAAU,CAAC;AACtC,eAAO,IAAI,kBAAkB,EAAE,GAAU,CAAC;AAC1C,eAAO,IAAI,kBAAkB,EAAE,GAAU,CAAC;AAC1C,eAAO,IAAI,gBAAgB,EAAE,GAAU,CAAC;AACxC,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,qBAAqB,EAAE,GAAU,CAAC;AA4D7C,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CAanD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAOjG,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,sBAAsB,EAAE,GAAU,CAAC;AAC9C,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,QAAQ,EAAE,GAAU,CAAC;AAChC,eAAO,IAAI,WAAW,EAAE,GAAU,CAAC;AACnC,eAAO,IAAI,SAAS,EAAE,GAAU,CAAC;AACjC,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,SAAS,EAAE,GAAU,CAAC;AACjC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,kBAAkB,EAAE,GAAU,CAAC;AAC1C,eAAO,IAAI,aAAa,EAAE,GAMzB,CAAC;AACF,eAAO,IAAI,aAAa,EAAE,GAUzB,CAAC;AACF,eAAO,IAAI,UAAU,EAAE,GAAU,CAAC;AAClC,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,WAAW,EAAE,GAAU,CAAC;AACnC,eAAO,IAAI,SAAS,EAAE,GAAU,CAAC;AACjC,eAAO,IAAI,cAAc,EAAE,GAAU,CAAC;AACtC,eAAO,IAAI,kBAAkB,EAAE,GAAU,CAAC;AAC1C,eAAO,IAAI,kBAAkB,EAAE,GAAU,CAAC;AAC1C,eAAO,IAAI,gBAAgB,EAAE,GAAU,CAAC;AACxC,eAAO,IAAI,eAAe,EAAE,GAAU,CAAC;AACvC,eAAO,IAAI,aAAa,EAAE,GAAU,CAAC;AACrC,eAAO,IAAI,YAAY,EAAE,GAAU,CAAC;AACpC,eAAO,IAAI,qBAAqB,EAAE,GAAU,CAAC"}
package/dist/index.js CHANGED
@@ -134,13 +134,16 @@ function setRenderCallback(callback, element, container) {
134
134
  globalContainer = container;
135
135
  currentElement = element;
136
136
  }
137
- function prepareRender(component = null) {
137
+ function prepareRender(component = null, isServerSideRender = false) {
138
138
  currentRender++;
139
+ isSSR = isServerSideRender;
139
140
  stateIndices.set(currentRender, 0);
141
+ if (!states.has(currentRender)) {
142
+ states.set(currentRender, []);
143
+ }
140
144
  return currentRender;
141
145
  }
142
146
  function finishRender() {
143
- currentRender = 0;
144
147
  }
145
148
  function useState(initial) {
146
149
  if (!currentRender) {
@@ -156,6 +159,9 @@ function useState(initial) {
156
159
  }
157
160
  const state = componentStates[index];
158
161
  const setState = (newValue) => {
162
+ if (isSSR) {
163
+ return;
164
+ }
159
165
  const nextValue = typeof newValue === "function" ? newValue(componentStates[index]) : newValue;
160
166
  if (componentStates[index] === nextValue)
161
167
  return;
@@ -172,6 +178,11 @@ function useState(initial) {
172
178
  function useEffect(callback, deps) {
173
179
  if (!currentRender)
174
180
  throw new Error("useEffect must be called within a render");
181
+ if (isSSR) {
182
+ const effectIndex2 = stateIndices.get(currentRender) || 0;
183
+ stateIndices.set(currentRender, effectIndex2 + 1);
184
+ return;
185
+ }
175
186
  const effectIndex = stateIndices.get(currentRender) || 0;
176
187
  if (!effects.has(currentRender)) {
177
188
  effects.set(currentRender, []);
@@ -227,6 +238,9 @@ function useRef(initial) {
227
238
  }
228
239
  async function rerender(rendererId) {
229
240
  try {
241
+ if (isSSR) {
242
+ return;
243
+ }
230
244
  const componentEffects = effects.get(rendererId);
231
245
  if (componentEffects) {
232
246
  componentEffects.forEach((effect) => {
@@ -263,7 +277,6 @@ async function render(element, container) {
263
277
  console.log("Render completed successfully");
264
278
  } catch (error) {
265
279
  console.error("Error during render:", error);
266
- finishRender();
267
280
  throw error;
268
281
  }
269
282
  }
@@ -278,12 +291,11 @@ async function hydrate(element, container) {
278
291
  }
279
292
  }
280
293
  async function renderToString(element) {
281
- prepareRender(true);
294
+ prepareRender(element);
282
295
  try {
283
296
  const html = await renderNodeToString(element);
284
297
  return html;
285
298
  } finally {
286
- finishRender();
287
299
  }
288
300
  }
289
301
  async function renderNodeToString(node) {
@@ -301,8 +313,13 @@ async function renderNodeToString(node) {
301
313
  const { type, props = {} } = node;
302
314
  if (typeof type === "function") {
303
315
  try {
304
- const result = await type(props);
305
- return await renderNodeToString(result);
316
+ const componentRenderId = prepareRender(type);
317
+ try {
318
+ const result = await type(props);
319
+ return await renderNodeToString(result);
320
+ } finally {
321
+ finishRender();
322
+ }
306
323
  } catch (error) {
307
324
  console.error("Error rendering component:", error);
308
325
  return `<!-- Error rendering component: ${error.message} -->`;
@@ -847,7 +864,7 @@ function onComponentError(handler) {
847
864
  function onComponentUnmounted(handler) {
848
865
  return globalEventBus.on(LifecycleEvents.COMPONENT_UNMOUNTED, handler);
849
866
  }
850
- var Fragment, isBatching, queue, contexts, currentRender, states, stateIndices, effects, memos, refs, globalRenderCallback, globalContainer, currentElement, Component, RouterContext, globalEventBus, StoreContext, logger, thunk, LifecycleEvents;
867
+ var Fragment, isBatching, queue, contexts, currentRender, isSSR, states, stateIndices, effects, memos, refs, globalRenderCallback, globalContainer, currentElement, Component, RouterContext, globalEventBus, StoreContext, logger, thunk, LifecycleEvents;
851
868
  var init_dist = __esm({
852
869
  "node_modules/frontend-hamroun/dist/index.js"() {
853
870
  Fragment = ({ children }) => children;
@@ -855,6 +872,7 @@ var init_dist = __esm({
855
872
  queue = [];
856
873
  contexts = /* @__PURE__ */ new Map();
857
874
  currentRender = 0;
875
+ isSSR = false;
858
876
  states = /* @__PURE__ */ new Map();
859
877
  stateIndices = /* @__PURE__ */ new Map();
860
878
  effects = /* @__PURE__ */ new Map();
@@ -2561,20 +2579,6 @@ if (isNode && !isBrowser) {
2561
2579
  }
2562
2580
  });
2563
2581
  }
2564
- function renderToString3(content) {
2565
- if (typeof content === "string") {
2566
- return content;
2567
- }
2568
- if (typeof content === "function") {
2569
- try {
2570
- const result = content();
2571
- return String(result);
2572
- } catch (error) {
2573
- return `<!-- Error rendering: ${error} -->`;
2574
- }
2575
- }
2576
- return String(content);
2577
- }
2578
2582
  console.log("Baraqex - powered by Frontend Hamroun Framework with additional utilities");
2579
2583
  export {
2580
2584
  ApiRouter2 as ApiRouter,
@@ -2647,7 +2651,7 @@ export {
2647
2651
  readJsonFile2 as readJsonFile,
2648
2652
  render,
2649
2653
  renderComponent2 as renderComponent,
2650
- renderToString3 as renderToString,
2654
+ renderToString,
2651
2655
  requestLogger2 as requestLogger,
2652
2656
  safeJsonParse2 as safeJsonParse,
2653
2657
  sendError2 as sendError,