baraqex 1.0.35 → 1.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/browser.js +635 -0
  2. package/dist/browser.js.map +7 -0
  3. package/dist/browser.package.json +4 -0
  4. package/dist/index.js +2024 -33
  5. package/dist/index.js.map +7 -1
  6. package/dist/server/index.js +1357 -432
  7. package/dist/server/index.js.map +7 -1
  8. package/dist/server/package.json +4 -0
  9. package/dist/wasm.js +86 -104
  10. package/dist/wasm.js.map +7 -1
  11. package/package.json +102 -86
  12. package/templates/ssr-template/esbuild.config.js +32 -3
  13. package/templates/ssr-template/package-lock.json +33 -1018
  14. package/templates/ssr-template/package.json +1 -0
  15. package/templates/ssr-template/src/App.tsx +1 -1
  16. package/dist/frontend/components/WasmLoader.d.ts +0 -1
  17. package/dist/frontend/components/WasmLoader.d.ts.map +0 -1
  18. package/dist/frontend/components/WasmLoader.js +0 -2
  19. package/dist/frontend/components/WasmLoader.js.map +0 -1
  20. package/dist/frontend/hooks/useWasm.d.ts +0 -1
  21. package/dist/frontend/hooks/useWasm.d.ts.map +0 -1
  22. package/dist/frontend/hooks/useWasm.js +0 -2
  23. package/dist/frontend/hooks/useWasm.js.map +0 -1
  24. package/dist/frontend/index.d.ts +0 -1
  25. package/dist/frontend/index.d.ts.map +0 -1
  26. package/dist/frontend/index.js +0 -2
  27. package/dist/frontend/index.js.map +0 -1
  28. package/dist/index.d.ts +0 -12
  29. package/dist/index.d.ts.map +0 -1
  30. package/dist/renderComponent.d.ts +0 -9
  31. package/dist/renderComponent.d.ts.map +0 -1
  32. package/dist/renderComponent.js +0 -39
  33. package/dist/renderComponent.js.map +0 -1
  34. package/dist/server/api-router.d.ts +0 -16
  35. package/dist/server/api-router.d.ts.map +0 -1
  36. package/dist/server/api-router.js +0 -121
  37. package/dist/server/api-router.js.map +0 -1
  38. package/dist/server/auth.d.ts +0 -33
  39. package/dist/server/auth.d.ts.map +0 -1
  40. package/dist/server/auth.js +0 -74
  41. package/dist/server/auth.js.map +0 -1
  42. package/dist/server/database.d.ts +0 -25
  43. package/dist/server/database.d.ts.map +0 -1
  44. package/dist/server/database.js +0 -109
  45. package/dist/server/database.js.map +0 -1
  46. package/dist/server/index.d.ts +0 -117
  47. package/dist/server/index.d.ts.map +0 -1
  48. package/dist/server/middleware.d.ts +0 -12
  49. package/dist/server/middleware.d.ts.map +0 -1
  50. package/dist/server/middleware.js +0 -46
  51. package/dist/server/middleware.js.map +0 -1
  52. package/dist/server/server.d.ts +0 -10
  53. package/dist/server/server.d.ts.map +0 -1
  54. package/dist/server/server.js +0 -81
  55. package/dist/server/server.js.map +0 -1
  56. package/dist/server/templates.d.ts +0 -31
  57. package/dist/server/templates.d.ts.map +0 -1
  58. package/dist/server/templates.js +0 -208
  59. package/dist/server/templates.js.map +0 -1
  60. package/dist/server/types.d.ts +0 -67
  61. package/dist/server/types.d.ts.map +0 -1
  62. package/dist/server/types.js +0 -2
  63. package/dist/server/types.js.map +0 -1
  64. package/dist/server/utils.d.ts +0 -71
  65. package/dist/server/utils.d.ts.map +0 -1
  66. package/dist/server/utils.js +0 -165
  67. package/dist/server/utils.js.map +0 -1
  68. package/dist/server/wasm.d.ts +0 -29
  69. package/dist/server/wasm.d.ts.map +0 -1
  70. package/dist/server/wasm.js +0 -208
  71. package/dist/server/wasm.js.map +0 -1
  72. package/dist/server-renderer.d.ts +0 -5
  73. package/dist/server-renderer.d.ts.map +0 -1
  74. package/dist/server-renderer.js +0 -27
  75. package/dist/server-renderer.js.map +0 -1
  76. package/dist/wasm.d.ts +0 -51
  77. package/dist/wasm.d.ts.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/frontend-hamroun/src/batch.ts", "../node_modules/frontend-hamroun/src/hooks.ts", "../node_modules/frontend-hamroun/src/context.ts", "../node_modules/frontend-hamroun/src/jsx-runtime.ts", "../node_modules/frontend-hamroun/src/renderer.ts", "../node_modules/frontend-hamroun/src/server-renderer.ts", "../node_modules/frontend-hamroun/src/index.client.ts", "../src/wasm.ts", "../src/server/templates.ts", "../src/browser.ts"],
4
+ "sourcesContent": ["export let isBatching = false;\r\nconst queue: Function[] = [];\r\n\r\nexport function batchUpdates(fn: Function) {\r\n if (isBatching) {\r\n queue.push(fn);\r\n return;\r\n }\r\n\r\n isBatching = true;\r\n try {\r\n fn();\r\n while (queue.length > 0) {\r\n const nextFn = queue.shift();\r\n nextFn?.();\r\n }\r\n } finally {\r\n isBatching = false;\r\n }\r\n}\r\n\r\nexport function getIsBatching() {\r\n return isBatching;\r\n}\r\n", "import { createElement } from './jsx-runtime';\r\nimport { batchUpdates, isBatching } from './batch';\r\nimport { diff } from './vdom';\r\n\r\nlet currentRender: number = 0;\r\nconst states = new Map<number, any[]>();\r\nconst stateIndices = new Map<number, number>();\r\nconst effects = new Map<number, Effect[]>();\r\nconst memos = new Map<number, { value: any; deps: any[] }[]>();\r\nconst refs = new Map<number, any[]>();\r\n\r\ninterface Effect {\r\n cleanup?: () => void;\r\n deps?: any[];\r\n}\r\n\r\n// Add at the top with other declarations\r\nlet globalRenderCallback: ((element: any, container: HTMLElement) => void) | null = null;\r\nlet globalContainer: HTMLElement | null = null;\r\nlet currentElement: any = null;\r\n\r\nconst isServer = typeof window === 'undefined';\r\nconst serverStates = new Map<number, any>();\r\n\r\nexport function setRenderCallback(\r\n callback: (element: any, container: HTMLElement) => void,\r\n element: any,\r\n container: HTMLElement\r\n) {\r\n globalRenderCallback = callback;\r\n globalContainer = container;\r\n currentElement = element;\r\n}\r\n\r\nexport function prepareRender() {\r\n currentRender++;\r\n stateIndices.set(currentRender, 0);\r\n return currentRender;\r\n}\r\n\r\nexport function finishRender() {\r\n if (isServer) {\r\n serverStates.delete(currentRender);\r\n }\r\n currentRender = 0;\r\n}\r\n\r\nexport function useState<T>(initial: T): [T, (value: T | ((prev: T) => T)) => void] {\r\n if (!currentRender) {\r\n throw new Error('useState must be called within a render');\r\n }\r\n\r\n if (isServer) {\r\n // Server-side state handling\r\n if (!serverStates.has(currentRender)) {\r\n serverStates.set(currentRender, new Map());\r\n }\r\n const componentState = serverStates.get(currentRender)!;\r\n const index = stateIndices.get(currentRender) || 0;\r\n \r\n if (!componentState.has(index)) {\r\n componentState.set(index, initial);\r\n }\r\n\r\n const state = componentState.get(index);\r\n const setState = (newValue: T | ((prev: T) => T)) => {\r\n // No-op for server-side\r\n };\r\n\r\n stateIndices.set(currentRender, index + 1);\r\n return [state, setState];\r\n }\r\n\r\n if (!states.has(currentRender)) {\r\n states.set(currentRender, []);\r\n }\r\n\r\n const componentStates = states.get(currentRender)!;\r\n const index = stateIndices.get(currentRender)!;\r\n \r\n if (index >= componentStates.length) {\r\n componentStates.push(initial);\r\n }\r\n\r\n const state = componentStates[index];\r\n const setState = (newValue: T | ((prev: T) => T)) => {\r\n const nextValue = typeof newValue === 'function' \r\n ? (newValue as Function)(componentStates[index])\r\n : newValue;\r\n\r\n if (componentStates[index] === nextValue) return; // Skip if value hasn't changed\r\n \r\n componentStates[index] = nextValue;\r\n \r\n if (isBatching) {\r\n batchUpdates(() => rerender(currentRender));\r\n } else {\r\n rerender(currentRender);\r\n }\r\n };\r\n\r\n stateIndices.set(currentRender, index + 1);\r\n return [state, setState];\r\n}\r\n\r\nexport function useEffect(callback: () => (() => void) | void, deps?: any[]) {\r\n if (!currentRender) throw new Error('useEffect must be called within a render');\r\n \r\n const effectIndex = stateIndices.get(currentRender)!;\r\n \r\n if (!effects.has(currentRender)) {\r\n effects.set(currentRender, []);\r\n }\r\n\r\n const componentEffects = effects.get(currentRender)!;\r\n const prevEffect = componentEffects[effectIndex];\r\n \r\n // Run effect if deps changed\r\n if (!prevEffect || !deps || !prevEffect.deps || \r\n deps.some((dep, i) => dep !== prevEffect.deps![i])) {\r\n \r\n // Cleanup previous effect\r\n if (prevEffect?.cleanup) {\r\n prevEffect.cleanup();\r\n }\r\n\r\n // Schedule new effect\r\n queueMicrotask(() => {\r\n const cleanup = callback() || undefined;\r\n componentEffects[effectIndex] = { cleanup: cleanup, deps };\r\n });\r\n }\r\n \r\n stateIndices.set(currentRender, effectIndex + 1);\r\n}\r\n\r\nexport function useMemo<T>(factory: () => T, deps: any[]): T {\r\n if (!currentRender) throw new Error('useMemo must be called within a render');\r\n \r\n const memoIndex = stateIndices.get(currentRender)!;\r\n \r\n if (!memos.has(currentRender)) {\r\n memos.set(currentRender, []);\r\n }\r\n\r\n const componentMemos = memos.get(currentRender)!;\r\n const prevMemo = componentMemos[memoIndex];\r\n \r\n if (!prevMemo || (deps && deps.some((dep, i) => !Object.is(dep, prevMemo.deps[i])))) {\r\n const value = factory();\r\n componentMemos[memoIndex] = { value, deps };\r\n stateIndices.set(currentRender, memoIndex + 1);\r\n return value;\r\n }\r\n\r\n stateIndices.set(currentRender, memoIndex + 1);\r\n return prevMemo.value;\r\n}\r\n\r\nexport function useRef<T>(initial: T) {\r\n if (!currentRender) throw new Error('useRef must be called within a render');\r\n \r\n const refIndex = stateIndices.get(currentRender)!;\r\n \r\n if (!refs.has(currentRender)) {\r\n refs.set(currentRender, []);\r\n }\r\n\r\n const componentRefs = refs.get(currentRender)!;\r\n if (refIndex >= componentRefs.length) {\r\n // Initialize with an object that has a current property\r\n const ref = { current: initial };\r\n componentRefs.push(ref);\r\n stateIndices.set(currentRender, refIndex + 1);\r\n return ref;\r\n }\r\n\r\n const ref = componentRefs[refIndex];\r\n stateIndices.set(currentRender, refIndex + 1);\r\n return ref;\r\n}\r\n\r\n// Add a map to track component DOM nodes\r\nconst componentNodes = new Map<Function, Node>();\r\n\r\nasync function rerender(rendererId: number) {\r\n try {\r\n // Clean up effects\r\n const componentEffects = effects.get(rendererId);\r\n if (componentEffects) {\r\n componentEffects.forEach(effect => {\r\n if (effect.cleanup) effect.cleanup();\r\n });\r\n effects.set(rendererId, []);\r\n }\r\n\r\n if (globalRenderCallback && globalContainer && currentElement) {\r\n await globalRenderCallback(currentElement, globalContainer);\r\n }\r\n } catch (error) {\r\n console.error('Error during rerender:', error);\r\n }\r\n}\r\n\r\n// Add new hook for error boundaries\r\nexport function useErrorBoundary(): [Error | null, () => void] {\r\n const [error, setError] = useState<Error | null>(null);\r\n return [error, () => setError(null)];\r\n}\r\n\r\n// Remove withHooks export\r\n", "\r\n\r\nconst contexts = new Map<symbol, any>();\r\nlet currentRender: Function | null = null;\r\n\r\nexport interface Context<T> {\r\n Provider: (props: { value: T; children?: any }) => any;\r\n Consumer: (props: { children: (value: T) => any }) => any;\r\n _id: symbol;\r\n useSelector: <S>(selector: (state: T) => S) => S;\r\n}\r\n\r\nexport function createContext<T>(defaultValue: T): Context<T> {\r\n const context = {\r\n Provider: ({ value, children }: { value: T, children?: any }) => {\r\n return children;\r\n },\r\n Consumer: ({ children }: { children: (value: T) => any }) => {\r\n return children(defaultValue);\r\n },\r\n _id: Symbol(),\r\n useSelector: <S>(selector: (state: T) => S) => {\r\n return selector(defaultValue);\r\n }\r\n };\r\n\r\n return context;\r\n}\r\n\r\nexport function useContext<T>(context: any): T {\r\n return context;\r\n}\r\n", "import type { Component } from './component';\r\n\r\ninterface VNode {\r\n type: string | Function;\r\n props: Record<string, any>;\r\n}\r\n\r\nfunction jsx(type: string | Function, props: any): VNode {\r\n console.log('JSX Transform:', { type, props });\r\n const processedProps = { ...props };\r\n \r\n // Handle children properly\r\n if (arguments.length > 2) {\r\n processedProps.children = Array.prototype.slice.call(arguments, 2);\r\n }\r\n \r\n return { type, props: processedProps };\r\n}\r\n\r\nconst Fragment = ({ children }: { children: any }) => children;\r\n\r\nasync function createElement(vnode: VNode | any): Promise<Node> {\r\n console.log('Creating element from:', vnode);\r\n\r\n // Handle primitives and null\r\n if (vnode == null) {\r\n return document.createTextNode('');\r\n }\r\n \r\n if (typeof vnode === 'boolean') {\r\n return document.createTextNode('');\r\n }\r\n\r\n if (typeof vnode === 'number' || typeof vnode === 'string') {\r\n return document.createTextNode(String(vnode));\r\n }\r\n\r\n // Handle arrays\r\n if (Array.isArray(vnode)) {\r\n const fragment = document.createDocumentFragment();\r\n for (const child of vnode) {\r\n const node = await createElement(child);\r\n fragment.appendChild(node);\r\n }\r\n return fragment;\r\n }\r\n\r\n // Handle VNode\r\n if ('type' in vnode && vnode.props !== undefined) {\r\n const { type, props } = vnode;\r\n \r\n // Handle function components\r\n if (typeof type === 'function') {\r\n try {\r\n const result = await type(props || {});\r\n const node = await createElement(result);\r\n if (node instanceof Element) {\r\n node.setAttribute('data-component-id', type.name || type.toString());\r\n }\r\n return node;\r\n } catch (error) {\r\n console.error('Error rendering component:', error);\r\n return document.createTextNode('');\r\n }\r\n }\r\n\r\n // Create DOM element\r\n const element = document.createElement(type as string);\r\n \r\n // Handle props\r\n for (const [key, value] of Object.entries(props || {})) {\r\n if (key === 'children') continue;\r\n if (key.startsWith('on') && typeof value === 'function') {\r\n const eventName = key.toLowerCase().slice(2);\r\n // Remove existing event listener if any\r\n const existingHandler = (element as any).__events?.[eventName];\r\n if (existingHandler) {\r\n element.removeEventListener(eventName, existingHandler);\r\n }\r\n \r\n // Add new event listener\r\n element.addEventListener(eventName, value as EventListener);\r\n if (!(element as any).__events) {\r\n (element as any).__events = {};\r\n }\r\n (element as any).__events[eventName] = value;\r\n } else if (key === 'style' && typeof value === 'object') {\r\n Object.assign(element.style, value);\r\n } else if (key === 'className') {\r\n element.setAttribute('class', String(value));\r\n } else if (key !== 'key' && key !== 'ref') {\r\n element.setAttribute(key, String(value));\r\n }\r\n }\r\n\r\n // Handle children\r\n const children = props?.children;\r\n if (children != null) {\r\n const childArray = Array.isArray(children) ? children.flat() : [children];\r\n for (const child of childArray) {\r\n const childNode = await createElement(child);\r\n element.appendChild(childNode);\r\n }\r\n }\r\n\r\n return element;\r\n }\r\n\r\n // Handle other objects by converting to string\r\n return document.createTextNode(String(vnode));\r\n}\r\n\r\n// Export named functions and aliases without duplicates\r\nexport {\r\n jsx,\r\n jsx as jsxs,\r\n jsx as jsxDEV,\r\n Fragment,\r\n createElement\r\n};\r\n\r\n// Named exports object\r\nconst jsxRuntime = {\r\n jsx,\r\n jsxs: jsx,\r\n jsxDEV: jsx,\r\n Fragment,\r\n createElement\r\n};\r\n\r\nexport default jsxRuntime;\r\n", "import { createElement } from './jsx-runtime';\r\nimport { prepareRender, finishRender, setRenderCallback } from './hooks';\r\nimport { batchUpdates } from './batch';\r\n\r\nlet isHydrating = false;\r\n\r\nexport async function hydrate(element: any, container: HTMLElement) {\r\n isHydrating = true;\r\n try {\r\n await render(element, container);\r\n } finally {\r\n isHydrating = false;\r\n }\r\n}\r\n\r\nexport async function render(element: any, container: HTMLElement) {\r\n console.log('Rendering to:', container.id);\r\n \r\n batchUpdates(async () => {\r\n const rendererId = prepareRender();\r\n try {\r\n setRenderCallback(render, element, container);\r\n const domNode = await createElement(element);\r\n \r\n if (!isHydrating) {\r\n container.innerHTML = '';\r\n }\r\n container.appendChild(domNode);\r\n \r\n } finally {\r\n finishRender();\r\n }\r\n });\r\n}\r\n", "import { VNode, Component } from './types';\r\nimport { prepareRender, finishRender } from './hooks';\r\n\r\n/**\r\n * Renders a virtual DOM tree to an HTML string\r\n */\r\nexport function renderToString(vnode: VNode): string {\r\n // Reset hook state for this render\r\n prepareRender();\r\n \r\n // Render the tree to HTML\r\n const html = renderNodeToString(vnode);\r\n \r\n // Clean up after rendering\r\n finishRender();\r\n \r\n return html;\r\n}\r\n\r\n/**\r\n * Internal function to convert a virtual node to an HTML string\r\n */\r\nfunction renderNodeToString(vnode: VNode | string | number | boolean | null | undefined): string {\r\n // Handle primitive values\r\n if (vnode === null || vnode === undefined) return '';\r\n if (typeof vnode === 'boolean') return '';\r\n if (typeof vnode === 'number' || typeof vnode === 'string') return escapeHtml(String(vnode));\r\n \r\n // Handle function components\r\n if (typeof vnode.type === 'function') {\r\n const Component = vnode.type as Component;\r\n const renderedNode = Component(vnode.props || {});\r\n return renderNodeToString(renderedNode);\r\n }\r\n \r\n // Handle intrinsic elements (regular HTML tags)\r\n if (typeof vnode.type === 'string') {\r\n const tag = vnode.type;\r\n let attrs = '';\r\n let children = '';\r\n \r\n // Convert props to HTML attributes\r\n if (vnode.props) {\r\n for (const [key, value] of Object.entries(vnode.props)) {\r\n // Skip children prop as we handle it separately\r\n if (key === 'children') continue;\r\n \r\n // Skip event handlers (they start with 'on')\r\n if (key.startsWith('on')) continue;\r\n \r\n // Handle the className prop specially\r\n if (key === 'className') {\r\n attrs += ` class=\"${escapeHtml(value as string)}\"`;\r\n continue;\r\n }\r\n \r\n // Handle other attributes\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n attrs += ` ${key}=\"${escapeHtml(String(value))}\"`;\r\n } else if (value === true) {\r\n // Boolean attributes\r\n attrs += ` ${key}`;\r\n }\r\n }\r\n }\r\n \r\n // Process children\r\n const childrenArray = (vnode.props?.children) \r\n ? Array.isArray(vnode.props.children) \r\n ? vnode.props.children \r\n : [vnode.props.children]\r\n : [];\r\n \r\n for (const child of childrenArray) {\r\n children += renderNodeToString(child);\r\n }\r\n \r\n // Self-closing tags\r\n const selfClosing = [\r\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\r\n 'link', 'meta', 'param', 'source', 'track', 'wbr'\r\n ];\r\n \r\n if (selfClosing.includes(tag)) {\r\n return `<${tag}${attrs}/>`;\r\n }\r\n \r\n // Regular tags with closing\r\n return `<${tag}${attrs}>${children}</${tag}>`;\r\n }\r\n \r\n // Handle fragments\r\n if (vnode.type === Symbol.for('react.fragment')) {\r\n let fragmentOutput = '';\r\n const children = Array.isArray(vnode.props?.children)\r\n ? vnode.props.children\r\n : vnode.props?.children ? [vnode.props.children] : [];\r\n \r\n for (const child of children) {\r\n fragmentOutput += renderNodeToString(child);\r\n }\r\n \r\n return fragmentOutput;\r\n }\r\n \r\n // Fallback for unknown node types\r\n console.warn('Unknown vnode type:', vnode.type);\r\n return '';\r\n}\r\n\r\n/**\r\n * Escape HTML special characters to prevent XSS\r\n */\r\nfunction escapeHtml(text: string): string {\r\n return 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", "import { createElement } from './jsx-runtime';\r\nimport { prepareRender, finishRender, setRenderCallback } from './hooks';\r\n\r\nexport { \r\n useState, \r\n useEffect, \r\n useMemo, \r\n useRef,\r\n useErrorBoundary \r\n} from './hooks';\r\n\r\nexport { createContext, useContext } from './context';\r\nexport { batchUpdates } from './batch';\r\nexport { jsx, jsxs, Fragment } from './jsx-runtime';\r\nexport { render, hydrate } from './renderer';\r\nexport { renderToString } from './server-renderer';\r\n\r\n// Re-export types for client-side usage\r\nexport type { Context } from './context';\r\nexport type { VNode } from './types';\r\n\r\n// Export server types for type checking\r\nexport type {\r\n Server,\r\n ServerConfig,\r\n User,\r\n DbConfig,\r\n MiddlewareFunction\r\n} from './server-types';\r\n\r\n// Provide placeholder server functionality\r\nexport const server = {\r\n async getServer() {\r\n throw new Error('Server module can only be used in Node.js environment');\r\n }\r\n};\r\n\r\nlet isHydrating = false;\r\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 './server/types.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): Promise<string> {\r\n if (typeof content === 'string') {\r\n return Promise.resolve(content);\r\n }\r\n if (typeof content === 'function') {\r\n try {\r\n const result = content();\r\n return Promise.resolve(String(result));\r\n } catch (error) {\r\n return Promise.resolve(`<!-- Error rendering: ${error} -->`);\r\n }\r\n }\r\n return Promise.resolve(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": ["index", "state", "setState", "ref", "content"]
7
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": false
4
+ }