@absolutejs/absolute 0.16.4 → 0.16.6

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 (107) hide show
  1. package/dist/dev/client/cssUtils.ts +2 -2
  2. package/dist/dev/client/domState.ts +1 -1
  3. package/dist/dev/client/errorOverlay.ts +1 -1
  4. package/dist/dev/client/handlers/html.ts +2 -2
  5. package/dist/dev/client/handlers/htmx.ts +2 -2
  6. package/dist/dev/client/hmrClient.ts +2 -2
  7. package/dist/index.js +47 -11
  8. package/dist/index.js.map +16 -15
  9. package/dist/react/hooks/index.js.map +1 -1
  10. package/dist/react/index.js +4 -4
  11. package/dist/react/index.js.map +3 -3
  12. package/dist/{cli → src/cli}/interactive.d.ts +1 -1
  13. package/dist/{cli → src/cli}/utils.d.ts +1 -1
  14. package/dist/{core → src/core}/build.d.ts +1 -1
  15. package/dist/{core → src/core}/devBuild.d.ts +1 -1
  16. package/dist/src/core/pageHandlers.d.ts +5 -0
  17. package/dist/{dev → src/dev}/clientManager.d.ts +2 -2
  18. package/dist/{dev → src/dev}/configResolver.d.ts +1 -1
  19. package/dist/{dev → src/dev}/fileWatcher.d.ts +1 -1
  20. package/dist/{dev → src/dev}/pathUtils.d.ts +1 -1
  21. package/dist/{dev → src/dev}/rebuildTrigger.d.ts +1 -1
  22. package/dist/{dev → src/dev}/webSocket.d.ts +1 -1
  23. package/dist/{index.d.ts → src/index.d.ts} +1 -1
  24. package/dist/src/react/hooks/index.d.ts +2 -0
  25. package/dist/{react → src/react}/hooks/useMediaQuery.d.ts +1 -1
  26. package/dist/{react → src/react}/pageHandler.d.ts +1 -1
  27. package/dist/{svelte → src/svelte}/pageHandler.d.ts +1 -1
  28. package/dist/{vue → src/vue}/pageHandler.d.ts +1 -1
  29. package/dist/svelte/index.js +60 -57
  30. package/dist/svelte/index.js.map +5 -5
  31. package/dist/types/build.d.ts +2 -2
  32. package/dist/types/userAgentTypes.d.ts +1 -1
  33. package/dist/vue/index.js +4 -4
  34. package/dist/vue/index.js.map +3 -3
  35. package/package.json +8 -8
  36. package/tsconfig.build.json +1 -2
  37. package/types/build.ts +40 -0
  38. package/types/cli.ts +20 -0
  39. package/types/client.ts +111 -0
  40. package/types/index.ts +5 -0
  41. package/types/mediaQuery.ts +10 -0
  42. package/types/messages.ts +205 -0
  43. package/types/react.ts +4 -0
  44. package/types/svelte.ts +4 -0
  45. package/types/userAgentTypes.ts +3 -0
  46. package/types/vue.ts +4 -0
  47. package/types/websocket.ts +12 -0
  48. package/types/window-globals.ts +53 -0
  49. package/dist/core/pageHandlers.d.ts +0 -2
  50. package/dist/react/hooks/index.d.ts +0 -2
  51. package/react.d.ts +0 -1
  52. package/svelte.d.ts +0 -1
  53. package/vue.d.ts +0 -1
  54. /package/dist/{build → src/build}/buildReactVendor.d.ts +0 -0
  55. /package/dist/{build → src/build}/compileSvelte.d.ts +0 -0
  56. /package/dist/{build → src/build}/compileVue.d.ts +0 -0
  57. /package/dist/{build → src/build}/generateManifest.d.ts +0 -0
  58. /package/dist/{build → src/build}/generateReactIndexes.d.ts +0 -0
  59. /package/dist/{build → src/build}/htmlScriptHMRPlugin.d.ts +0 -0
  60. /package/dist/{build → src/build}/outputLogs.d.ts +0 -0
  61. /package/dist/{build → src/build}/rewriteReactImports.d.ts +0 -0
  62. /package/dist/{build → src/build}/scanEntryPoints.d.ts +0 -0
  63. /package/dist/{build → src/build}/updateAssetPaths.d.ts +0 -0
  64. /package/dist/{build → src/build}/wrapHTMLScript.d.ts +0 -0
  65. /package/dist/{cli → src/cli}/index.d.ts +0 -0
  66. /package/dist/{cli → src/cli}/scripts/dev.d.ts +0 -0
  67. /package/dist/{constants.d.ts → src/constants.d.ts} +0 -0
  68. /package/dist/{core → src/core}/devVendorPaths.d.ts +0 -0
  69. /package/dist/{core → src/core}/index.d.ts +0 -0
  70. /package/dist/{core → src/core}/lookup.d.ts +0 -0
  71. /package/dist/{dev → src/dev}/assetStore.d.ts +0 -0
  72. /package/dist/{dev → src/dev}/buildHMRClient.d.ts +0 -0
  73. /package/dist/{dev → src/dev}/dependencyGraph.d.ts +0 -0
  74. /package/dist/{dev → src/dev}/fileHashTracker.d.ts +0 -0
  75. /package/dist/{dev → src/dev}/moduleMapper.d.ts +0 -0
  76. /package/dist/{dev → src/dev}/moduleVersionTracker.d.ts +0 -0
  77. /package/dist/{dev → src/dev}/reactComponentClassifier.d.ts +0 -0
  78. /package/dist/{dev → src/dev}/simpleHTMLHMR.d.ts +0 -0
  79. /package/dist/{dev → src/dev}/simpleHTMXHMR.d.ts +0 -0
  80. /package/dist/{dev → src/dev}/simpleSvelteHMR.d.ts +0 -0
  81. /package/dist/{dev → src/dev}/simpleVueHMR.d.ts +0 -0
  82. /package/dist/{plugins → src/plugins}/hmr.d.ts +0 -0
  83. /package/dist/{plugins → src/plugins}/index.d.ts +0 -0
  84. /package/dist/{plugins → src/plugins}/networking.d.ts +0 -0
  85. /package/dist/{plugins → src/plugins}/pageRouter.d.ts +0 -0
  86. /package/dist/{react → src/react}/index.d.ts +0 -0
  87. /package/dist/{svelte → src/svelte}/index.d.ts +0 -0
  88. /package/dist/{svelte → src/svelte}/renderToPipeableStream.d.ts +0 -0
  89. /package/dist/{svelte → src/svelte}/renderToReadableStream.d.ts +0 -0
  90. /package/dist/{svelte → src/svelte}/renderToString.d.ts +0 -0
  91. /package/dist/{utils → src/utils}/cleanup.d.ts +0 -0
  92. /package/dist/{utils → src/utils}/commonAncestor.d.ts +0 -0
  93. /package/dist/{utils → src/utils}/escapeScriptContent.d.ts +0 -0
  94. /package/dist/{utils → src/utils}/generateHeadElement.d.ts +0 -0
  95. /package/dist/{utils → src/utils}/getDurationString.d.ts +0 -0
  96. /package/dist/{utils → src/utils}/getEnv.d.ts +0 -0
  97. /package/dist/{utils → src/utils}/getRegisterClientScript.d.ts +0 -0
  98. /package/dist/{utils → src/utils}/index.d.ts +0 -0
  99. /package/dist/{utils → src/utils}/logger.d.ts +0 -0
  100. /package/dist/{utils → src/utils}/networking.d.ts +0 -0
  101. /package/dist/{utils → src/utils}/normalizePath.d.ts +0 -0
  102. /package/dist/{utils → src/utils}/registerClientScript.d.ts +0 -0
  103. /package/dist/{utils → src/utils}/ssrErrorPage.d.ts +0 -0
  104. /package/dist/{utils → src/utils}/stringModifiers.d.ts +0 -0
  105. /package/dist/{utils → src/utils}/userAgentFunctions.d.ts +0 -0
  106. /package/dist/{utils → src/utils}/validateSafePath.d.ts +0 -0
  107. /package/dist/{vue → src/vue}/index.d.ts +0 -0
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/react/hooks/useMediaQuery.ts"],
4
4
  "sourcesContent": [
5
- "import { createContext, useContext, useSyncExternalStore } from 'react';\nimport { Breakpoint, Breakpoints } from '../../types/mediaQuery';\nimport { UserAgentType } from '../../types/userAgentTypes';\n\nconst UserAgentContext = createContext<UserAgentType | null>(null);\n\nexport const UserAgentProvider = UserAgentContext.Provider;\n\nconst useUserAgentType = (): UserAgentType => {\n\tconst context = useContext(UserAgentContext);\n\tif (context === null) {\n\t\tthrow new Error(\n\t\t\t'useMediaQuery must be used within a UserAgentProvider'\n\t\t);\n\t}\n\n\treturn context;\n};\n\nconst defaultBreakpoints: Breakpoints = {\n\txs: 0,\n\tsm: 640,\n\tmd: 768,\n\tlg: 1024,\n\txl: 1280,\n\t'2xl': 1536\n};\n\nconst userAgentInitialWidth: Record<UserAgentType, number> = {\n\tbot: 1024,\n\tcar: 768,\n\tconsole: 1024,\n\tdesktop: 1024,\n\tiot: 640,\n\tother: 768,\n\tphone: 375,\n\ttablet: 768,\n\ttv: 1280\n};\n\nconst subscribers = new Set<() => void>();\nlet width = typeof window !== 'undefined' ? window.innerWidth : 0;\nlet isListening = false;\n\nconst ensureListener = () => {\n\tif (isListening || typeof window === 'undefined') return;\n\tisListening = true;\n\n\tlet isTicking = false;\n\tconst onResize = () => {\n\t\tif (isTicking) return;\n\t\tisTicking = true;\n\t\trequestAnimationFrame(() => {\n\t\t\tisTicking = false;\n\t\t\twidth = window.innerWidth;\n\t\t\tsubscribers.forEach((notify) => notify());\n\t\t});\n\t};\n\n\twindow.addEventListener('resize', onResize, { passive: true });\n};\n\nconst subscribe = (callback: () => void) => {\n\tensureListener();\n\tsubscribers.add(callback);\n\treturn () => subscribers.delete(callback);\n};\n\nconst getViewportWidth = () => width;\n\nconst computeBreakpoint = (widthValue: number, breakpoints: Breakpoints) => {\n\tif (widthValue < breakpoints.sm) return 'xs';\n\tif (widthValue < breakpoints.md) return 'sm';\n\tif (widthValue < breakpoints.lg) return 'md';\n\tif (widthValue < breakpoints.xl) return 'lg';\n\tif (widthValue < breakpoints['2xl']) return 'xl';\n\treturn '2xl';\n};\n\nexport const useMediaQuery = (\n\tcustomBreakpoints: Breakpoints = defaultBreakpoints\n) => {\n\tconst userAgentType = useUserAgentType();\n\tconst getServerWidth = () => userAgentInitialWidth[userAgentType];\n\n\tconst currentWidth = useSyncExternalStore(\n\t\tsubscribe,\n\t\tgetViewportWidth,\n\t\tgetServerWidth\n\t);\n\n\tconst breakpoint = computeBreakpoint(currentWidth, customBreakpoints);\n\n\tconst isSizeOrGreater = (target: Breakpoint) =>\n\t\tcustomBreakpoints[breakpoint] >= customBreakpoints[target];\n\n\tconst isSizeOrLess = (target: Breakpoint) =>\n\t\tcustomBreakpoints[breakpoint] <= customBreakpoints[target];\n\n\treturn { breakpoint, isSizeOrGreater, isSizeOrLess };\n};\n"
5
+ "import { createContext, useContext, useSyncExternalStore } from 'react';\nimport { Breakpoint, Breakpoints } from '../../../types/mediaQuery';\nimport { UserAgentType } from '../../../types/userAgentTypes';\n\nconst UserAgentContext = createContext<UserAgentType | null>(null);\n\nexport const UserAgentProvider = UserAgentContext.Provider;\n\nconst useUserAgentType = (): UserAgentType => {\n\tconst context = useContext(UserAgentContext);\n\tif (context === null) {\n\t\tthrow new Error(\n\t\t\t'useMediaQuery must be used within a UserAgentProvider'\n\t\t);\n\t}\n\n\treturn context;\n};\n\nconst defaultBreakpoints: Breakpoints = {\n\txs: 0,\n\tsm: 640,\n\tmd: 768,\n\tlg: 1024,\n\txl: 1280,\n\t'2xl': 1536\n};\n\nconst userAgentInitialWidth: Record<UserAgentType, number> = {\n\tbot: 1024,\n\tcar: 768,\n\tconsole: 1024,\n\tdesktop: 1024,\n\tiot: 640,\n\tother: 768,\n\tphone: 375,\n\ttablet: 768,\n\ttv: 1280\n};\n\nconst subscribers = new Set<() => void>();\nlet width = typeof window !== 'undefined' ? window.innerWidth : 0;\nlet isListening = false;\n\nconst ensureListener = () => {\n\tif (isListening || typeof window === 'undefined') return;\n\tisListening = true;\n\n\tlet isTicking = false;\n\tconst onResize = () => {\n\t\tif (isTicking) return;\n\t\tisTicking = true;\n\t\trequestAnimationFrame(() => {\n\t\t\tisTicking = false;\n\t\t\twidth = window.innerWidth;\n\t\t\tsubscribers.forEach((notify) => notify());\n\t\t});\n\t};\n\n\twindow.addEventListener('resize', onResize, { passive: true });\n};\n\nconst subscribe = (callback: () => void) => {\n\tensureListener();\n\tsubscribers.add(callback);\n\treturn () => subscribers.delete(callback);\n};\n\nconst getViewportWidth = () => width;\n\nconst computeBreakpoint = (widthValue: number, breakpoints: Breakpoints) => {\n\tif (widthValue < breakpoints.sm) return 'xs';\n\tif (widthValue < breakpoints.md) return 'sm';\n\tif (widthValue < breakpoints.lg) return 'md';\n\tif (widthValue < breakpoints.xl) return 'lg';\n\tif (widthValue < breakpoints['2xl']) return 'xl';\n\treturn '2xl';\n};\n\nexport const useMediaQuery = (\n\tcustomBreakpoints: Breakpoints = defaultBreakpoints\n) => {\n\tconst userAgentType = useUserAgentType();\n\tconst getServerWidth = () => userAgentInitialWidth[userAgentType];\n\n\tconst currentWidth = useSyncExternalStore(\n\t\tsubscribe,\n\t\tgetViewportWidth,\n\t\tgetServerWidth\n\t);\n\n\tconst breakpoint = computeBreakpoint(currentWidth, customBreakpoints);\n\n\tconst isSizeOrGreater = (target: Breakpoint) =>\n\t\tcustomBreakpoints[breakpoint] >= customBreakpoints[target];\n\n\tconst isSizeOrLess = (target: Breakpoint) =>\n\t\tcustomBreakpoints[breakpoint] <= customBreakpoints[target];\n\n\treturn { breakpoint, isSizeOrGreater, isSizeOrLess };\n};\n"
6
6
  ],
7
7
  "mappings": ";;;;;;;;;;;;;;AAAA;AAIA,IAAM,mBAAmB,cAAoC,IAAI;AAE1D,IAAM,oBAAoB,iBAAiB;AAElD,IAAM,mBAAmB,MAAqB;AAAA,EAC7C,MAAM,UAAU,WAAW,gBAAgB;AAAA,EAC3C,IAAI,YAAY,MAAM;AAAA,IACrB,MAAM,IAAI,MACT,uDACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,qBAAkC;AAAA,EACvC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AACR;AAEA,IAAM,wBAAuD;AAAA,EAC5D,KAAK;AAAA,EACL,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,IAAI;AACL;AAEA,IAAM,cAAc,IAAI;AACxB,IAAI,QAAQ,OAAO,WAAW,cAAc,OAAO,aAAa;AAChE,IAAI,cAAc;AAElB,IAAM,iBAAiB,MAAM;AAAA,EAC5B,IAAI,eAAe,OAAO,WAAW;AAAA,IAAa;AAAA,EAClD,cAAc;AAAA,EAEd,IAAI,YAAY;AAAA,EAChB,MAAM,WAAW,MAAM;AAAA,IACtB,IAAI;AAAA,MAAW;AAAA,IACf,YAAY;AAAA,IACZ,sBAAsB,MAAM;AAAA,MAC3B,YAAY;AAAA,MACZ,QAAQ,OAAO;AAAA,MACf,YAAY,QAAQ,CAAC,WAAW,OAAO,CAAC;AAAA,KACxC;AAAA;AAAA,EAGF,OAAO,iBAAiB,UAAU,UAAU,EAAE,SAAS,KAAK,CAAC;AAAA;AAG9D,IAAM,YAAY,CAAC,aAAyB;AAAA,EAC3C,eAAe;AAAA,EACf,YAAY,IAAI,QAAQ;AAAA,EACxB,OAAO,MAAM,YAAY,OAAO,QAAQ;AAAA;AAGzC,IAAM,mBAAmB,MAAM;AAE/B,IAAM,oBAAoB,CAAC,YAAoB,gBAA6B;AAAA,EAC3E,IAAI,aAAa,YAAY;AAAA,IAAI,OAAO;AAAA,EACxC,IAAI,aAAa,YAAY;AAAA,IAAI,OAAO;AAAA,EACxC,IAAI,aAAa,YAAY;AAAA,IAAI,OAAO;AAAA,EACxC,IAAI,aAAa,YAAY;AAAA,IAAI,OAAO;AAAA,EACxC,IAAI,aAAa,YAAY;AAAA,IAAQ,OAAO;AAAA,EAC5C,OAAO;AAAA;AAGD,IAAM,gBAAgB,CAC5B,oBAAiC,uBAC7B;AAAA,EACJ,MAAM,gBAAgB,iBAAiB;AAAA,EACvC,MAAM,iBAAiB,MAAM,sBAAsB;AAAA,EAEnD,MAAM,eAAe,qBACpB,WACA,kBACA,cACD;AAAA,EAEA,MAAM,aAAa,kBAAkB,cAAc,iBAAiB;AAAA,EAEpE,MAAM,kBAAkB,CAAC,WACxB,kBAAkB,eAAe,kBAAkB;AAAA,EAEpD,MAAM,eAAe,CAAC,WACrB,kBAAkB,eAAe,kBAAkB;AAAA,EAEpD,OAAO,EAAE,YAAY,iBAAiB,aAAa;AAAA;",
8
8
  "debugId": "27AC05AE60B974B964756E2164756E21",
@@ -65,13 +65,13 @@ body{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,r
65
65
  };
66
66
 
67
67
  // src/react/pageHandler.ts
68
- import { createElement } from "react";
69
- import { renderToReadableStream as renderReactToReadableStream } from "react-dom/server";
70
68
  var handleReactPageRequest = async (PageComponent, index, ...props) => {
71
69
  try {
72
70
  const [maybeProps] = props;
71
+ const { createElement } = await import("react");
72
+ const { renderToReadableStream } = await import("react-dom/server");
73
73
  const element = maybeProps !== undefined ? createElement(PageComponent, maybeProps) : createElement(PageComponent);
74
- const stream = await renderReactToReadableStream(element, {
74
+ const stream = await renderToReadableStream(element, {
75
75
  bootstrapModules: [index],
76
76
  bootstrapScriptContent: maybeProps ? `window.__INITIAL_PROPS__=${JSON.stringify(maybeProps)}` : undefined,
77
77
  onError(error) {
@@ -93,5 +93,5 @@ export {
93
93
  handleReactPageRequest
94
94
  };
95
95
 
96
- //# debugId=4F6D33B3CA0D31C764756E2164756E21
96
+ //# debugId=A0AA528CA272E4EF64756E2164756E21
97
97
  //# sourceMappingURL=index.js.map
@@ -3,9 +3,9 @@
3
3
  "sources": ["../src/utils/ssrErrorPage.ts", "../src/react/pageHandler.ts"],
4
4
  "sourcesContent": [
5
5
  "export const ssrErrorPage = (framework: string, error: unknown): string => {\n\tconst frameworkColors: Record<string, string> = {\n\t\tangular: '#dd0031',\n\t\thtml: '#e34c26',\n\t\thtmx: '#1a365d',\n\t\treact: '#61dafb',\n\t\tsvelte: '#ff3e00',\n\t\tvue: '#42b883'\n\t};\n\n\tconst accent = frameworkColors[framework] ?? '#94a3b8';\n\tconst label = framework.charAt(0).toUpperCase() + framework.slice(1);\n\tconst message = error instanceof Error ? error.message : String(error);\n\n\treturn `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>SSR Error - AbsoluteJS</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:\"JetBrains Mono\",\"Fira Code\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}\n.card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}\n.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}\n.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}\n.badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}\n.kind{color:#94a3b8;font-size:13px;font-weight:500}\n.content{padding:24px}\n.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}\n.message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}\n.hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}\n</style>\n</head>\n<body>\n<div class=\"card\">\n<div class=\"header\">\n<div style=\"display:flex;align-items:center;gap:12px\">\n<span class=\"brand\">AbsoluteJS</span>\n<span class=\"badge\">${label}</span>\n</div>\n<span class=\"kind\">Server Render Error</span>\n</div>\n<div class=\"content\">\n<div class=\"label\">What went wrong</div>\n<pre class=\"message\">${message.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</pre>\n<div class=\"hint\">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>\n</div>\n</div>\n</body>\n</html>`;\n};\n",
6
- "import { ComponentType as ReactComponent, createElement } from 'react';\nimport { renderToReadableStream as renderReactToReadableStream } from 'react-dom/server';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\n\nexport const handleReactPageRequest = async <\n\tProps extends Record<string, unknown> = Record<never, never>\n>(\n\tPageComponent: ReactComponent<Props>,\n\tindex: string,\n\t...props: keyof Props extends never ? [] : [props: Props]\n) => {\n\ttry {\n\t\tconst [maybeProps] = props;\n\t\tconst element =\n\t\t\tmaybeProps !== undefined\n\t\t\t\t? createElement(PageComponent, maybeProps)\n\t\t\t\t: createElement(PageComponent);\n\n\t\tconst stream = await renderReactToReadableStream(element, {\n\t\t\tbootstrapModules: [index],\n\t\t\tbootstrapScriptContent: maybeProps\n\t\t\t\t? `window.__INITIAL_PROPS__=${JSON.stringify(maybeProps)}`\n\t\t\t\t: undefined,\n\t\t\tonError(error: unknown) {\n\t\t\t\tconsole.error('[SSR] React streaming error:', error);\n\t\t\t}\n\t\t});\n\n\t\treturn new Response(stream, {\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('[SSR] React render error:', error);\n\n\t\treturn new Response(ssrErrorPage('react', error), {\n\t\t\tstatus: 500,\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t}\n};\n"
6
+ "import type { ComponentType as ReactComponent } from 'react';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\n\nexport const handleReactPageRequest = async <\n\tProps extends Record<string, unknown> = Record<never, never>\n>(\n\tPageComponent: ReactComponent<Props>,\n\tindex: string,\n\t...props: keyof Props extends never ? [] : [props: Props]\n) => {\n\ttry {\n\t\tconst [maybeProps] = props;\n\t\tconst { createElement } = await import('react');\n\t\tconst { renderToReadableStream } = await import('react-dom/server');\n\n\t\tconst element =\n\t\t\tmaybeProps !== undefined\n\t\t\t\t? createElement(PageComponent, maybeProps)\n\t\t\t\t: createElement(PageComponent);\n\n\t\tconst stream = await renderToReadableStream(element, {\n\t\t\tbootstrapModules: [index],\n\t\t\tbootstrapScriptContent: maybeProps\n\t\t\t\t? `window.__INITIAL_PROPS__=${JSON.stringify(maybeProps)}`\n\t\t\t\t: undefined,\n\t\t\tonError(error: unknown) {\n\t\t\t\tconsole.error('[SSR] React streaming error:', error);\n\t\t\t}\n\t\t});\n\n\t\treturn new Response(stream, {\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('[SSR] React render error:', error);\n\n\t\treturn new Response(ssrErrorPage('react', error), {\n\t\t\tstatus: 500,\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t}\n};\n"
7
7
  ],
8
- "mappings": ";;;;;;;;;;;;;;;IAAa,eAAe,CAAC,WAAmB,UAA2B;AAAA,EAC1E,MAAM,kBAA0C;AAAA,IAC/C,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EAEA,MAAM,SAAS,gBAAgB,cAAc;AAAA,EAC7C,MAAM,QAAQ,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC;AAAA,EACnE,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EAErE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sFAY8E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAahE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAMC,QAAQ,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC7ChG;AACA,mCAAS;AAGF,IAAM,yBAAyB,OAGrC,eACA,UACG,UACC;AAAA,EACJ,IAAI;AAAA,IACH,OAAO,cAAc;AAAA,IACrB,MAAM,UACL,eAAe,YACZ,cAAc,eAAe,UAAU,IACvC,cAAc,aAAa;AAAA,IAE/B,MAAM,SAAS,MAAM,4BAA4B,SAAS;AAAA,MACzD,kBAAkB,CAAC,KAAK;AAAA,MACxB,wBAAwB,aACrB,4BAA4B,KAAK,UAAU,UAAU,MACrD;AAAA,MACH,OAAO,CAAC,OAAgB;AAAA,QACvB,QAAQ,MAAM,gCAAgC,KAAK;AAAA;AAAA,IAErD,CAAC;AAAA,IAED,OAAO,IAAI,SAAS,QAAQ;AAAA,MAC3B,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA,IACA,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,6BAA6B,KAAK;AAAA,IAEhD,OAAO,IAAI,SAAS,aAAa,SAAS,KAAK,GAAG;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA;AAAA;",
9
- "debugId": "4F6D33B3CA0D31C764756E2164756E21",
8
+ "mappings": ";;;;;;;;;;;;;;;IAAa,eAAe,CAAC,WAAmB,UAA2B;AAAA,EAC1E,MAAM,kBAA0C;AAAA,IAC/C,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EAEA,MAAM,SAAS,gBAAgB,cAAc;AAAA,EAC7C,MAAM,QAAQ,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC;AAAA,EACnE,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EAErE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sFAY8E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAahE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAMC,QAAQ,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC1CzF,IAAM,yBAAyB,OAGrC,eACA,UACG,UACC;AAAA,EACJ,IAAI;AAAA,IACH,OAAO,cAAc;AAAA,IACrB,QAAQ,kBAAkB,MAAa;AAAA,IACvC,QAAQ,2BAA2B,MAAa;AAAA,IAEhD,MAAM,UACL,eAAe,YACZ,cAAc,eAAe,UAAU,IACvC,cAAc,aAAa;AAAA,IAE/B,MAAM,SAAS,MAAM,uBAAuB,SAAS;AAAA,MACpD,kBAAkB,CAAC,KAAK;AAAA,MACxB,wBAAwB,aACrB,4BAA4B,KAAK,UAAU,UAAU,MACrD;AAAA,MACH,OAAO,CAAC,OAAgB;AAAA,QACvB,QAAQ,MAAM,gCAAgC,KAAK;AAAA;AAAA,IAErD,CAAC;AAAA,IAED,OAAO,IAAI,SAAS,QAAQ;AAAA,MAC3B,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA,IACA,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,6BAA6B,KAAK;AAAA,IAEhD,OAAO,IAAI,SAAS,aAAa,SAAS,KAAK,GAAG;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA;AAAA;",
9
+ "debugId": "A0AA528CA272E4EF64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -1,2 +1,2 @@
1
- import type { Actions, InteractiveHandler } from '../types/cli';
1
+ import type { Actions, InteractiveHandler } from '../../types/cli';
2
2
  export declare const createInteractiveHandler: (actions: Actions) => InteractiveHandler;
@@ -1,4 +1,4 @@
1
- import type { DbScripts } from '../types/cli';
1
+ import type { DbScripts } from '../../types/cli';
2
2
  export declare const isWSLEnvironment: () => boolean;
3
3
  export declare const COMPOSE_PATH = "db/docker-compose.db.yml";
4
4
  export declare const DEFAULT_SERVER_ENTRY = "src/backend/server.ts";
@@ -1,2 +1,2 @@
1
- import type { BuildConfig } from '../types/build';
1
+ import type { BuildConfig } from '../../types/build';
2
2
  export declare const build: ({ buildDirectory, assetsDirectory, publicDirectory, reactDirectory, htmlDirectory, htmxDirectory, angularDirectory, svelteDirectory, vueDirectory, tailwind, options, incrementalFiles }: BuildConfig) => Promise<Record<string, string>>;
@@ -1,4 +1,4 @@
1
- import type { BuildConfig } from '../types/build';
1
+ import type { BuildConfig } from '../../types/build';
2
2
  import { type HMRState } from '../dev/clientManager';
3
3
  export declare const devBuild: (config: BuildConfig) => Promise<{
4
4
  hmrState: HMRState;
@@ -0,0 +1,5 @@
1
+ export { handleReactPageRequest } from '../react/pageHandler';
2
+ export { handleSveltePageRequest } from '../svelte/pageHandler';
3
+ export { handleVuePageRequest } from '../vue/pageHandler';
4
+ export declare const handleHTMLPageRequest: (pagePath: string) => Bun.BunFile;
5
+ export declare const handleHTMXPageRequest: (pagePath: string) => Bun.BunFile;
@@ -1,8 +1,8 @@
1
1
  import type { FSWatcher } from 'fs';
2
2
  import { type DependencyGraph } from './dependencyGraph';
3
3
  import { type ModuleVersions } from './moduleVersionTracker';
4
- import type { HMRWebSocket } from '../types/websocket';
5
- import type { BuildConfig } from '../types/build';
4
+ import type { HMRWebSocket } from '../../types/websocket';
5
+ import type { BuildConfig } from '../../types/build';
6
6
  import { type ResolvedBuildPaths } from './configResolver';
7
7
  export type HMRState = {
8
8
  connectedClients: Set<HMRWebSocket>;
@@ -1,4 +1,4 @@
1
- import type { BuildConfig } from '../types/build';
1
+ import type { BuildConfig } from '../../types/build';
2
2
  /** Normalize and default build paths so HMR works outside the example app. */
3
3
  export declare const resolveBuildPaths: (config: BuildConfig) => {
4
4
  buildDir: string;
@@ -1,3 +1,3 @@
1
- import type { BuildConfig } from '../types/build';
1
+ import type { BuildConfig } from '../../types/build';
2
2
  import type { HMRState } from './clientManager';
3
3
  export declare const startFileWatching: (state: HMRState, config: BuildConfig, onFileChange: (filePath: string) => void) => void;
@@ -1,4 +1,4 @@
1
- import { BuildConfig } from '../types/build';
1
+ import { BuildConfig } from '../../types/build';
2
2
  import type { ResolvedBuildPaths } from './configResolver';
3
3
  export declare const getWatchPaths: (config: BuildConfig, resolved?: ResolvedBuildPaths) => string[];
4
4
  export declare const shouldIgnorePath: (path: string) => boolean;
@@ -1,4 +1,4 @@
1
- import type { BuildConfig } from '../types/build';
1
+ import type { BuildConfig } from '../../types/build';
2
2
  import type { HMRState } from './clientManager';
3
3
  export declare const queueFileChange: (state: HMRState, filePath: string, config: BuildConfig, onRebuildComplete: (result: {
4
4
  manifest: Record<string, string>;
@@ -1,5 +1,5 @@
1
1
  import type { HMRState } from './clientManager';
2
- import type { HMRWebSocket } from '../types/websocket';
2
+ import type { HMRWebSocket } from '../../types/websocket';
3
3
  export declare const handleClientConnect: (state: HMRState, client: HMRWebSocket, manifest: Record<string, string>) => void;
4
4
  export declare const handleClientDisconnect: (state: HMRState, client: HMRWebSocket) => void;
5
5
  export declare const handleHMRMessage: (state: HMRState, client: HMRWebSocket, message: unknown) => void;
@@ -1,4 +1,4 @@
1
- export * from './types';
1
+ export * from '../types';
2
2
  export * from './constants';
3
3
  export * from './core';
4
4
  export * from './plugins/index';
@@ -0,0 +1,2 @@
1
+ export { Breakpoint, Breakpoints } from '../../../types/mediaQuery';
2
+ export { UserAgentProvider, useMediaQuery } from './useMediaQuery';
@@ -1,4 +1,4 @@
1
- import { Breakpoint, Breakpoints } from '../../types/mediaQuery';
1
+ import { Breakpoint, Breakpoints } from '../../../types/mediaQuery';
2
2
  export declare const UserAgentProvider: import("react").Provider<"bot" | "phone" | "tablet" | "tv" | "console" | "car" | "iot" | "desktop" | "other" | null>;
3
3
  export declare const useMediaQuery: (customBreakpoints?: Breakpoints) => {
4
4
  breakpoint: string;
@@ -1,2 +1,2 @@
1
- import { ComponentType as ReactComponent } from 'react';
1
+ import type { ComponentType as ReactComponent } from 'react';
2
2
  export declare const handleReactPageRequest: <Props extends Record<string, unknown> = Record<never, never>>(PageComponent: ReactComponent<Props>, index: string, ...props: keyof Props extends never ? [] : [props: Props]) => Promise<Response>;
@@ -1,4 +1,4 @@
1
- import { Component as SvelteComponent } from 'svelte';
1
+ import type { Component as SvelteComponent } from 'svelte';
2
2
  export type HandleSveltePageRequest = {
3
3
  (PageComponent: SvelteComponent<Record<string, never>>, pagePath: string, indexPath: string): Promise<Response>;
4
4
  <P extends Record<string, unknown>>(PageComponent: SvelteComponent<P>, pagePath: string, indexPath: string, props: P): Promise<Response>;
@@ -1,2 +1,2 @@
1
- import { Component as VueComponent } from 'vue';
1
+ import type { Component as VueComponent } from 'vue';
2
2
  export declare const handleVuePageRequest: <Props extends Record<string, unknown> = Record<never, never>>(_PageComponent: VueComponent<Props>, pagePath: string, indexPath: string, headTag?: `<head>${string}</head>`, ...props: keyof Props extends never ? [] : [props: Props]) => Promise<Response>;
@@ -12,6 +12,58 @@ var __export = (target, all) => {
12
12
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
13
13
  var __require = import.meta.require;
14
14
 
15
+ // src/utils/ssrErrorPage.ts
16
+ var ssrErrorPage = (framework, error) => {
17
+ const frameworkColors = {
18
+ angular: "#dd0031",
19
+ html: "#e34c26",
20
+ htmx: "#1a365d",
21
+ react: "#61dafb",
22
+ svelte: "#ff3e00",
23
+ vue: "#42b883"
24
+ };
25
+ const accent = frameworkColors[framework] ?? "#94a3b8";
26
+ const label = framework.charAt(0).toUpperCase() + framework.slice(1);
27
+ const message = error instanceof Error ? error.message : String(error);
28
+ return `<!DOCTYPE html>
29
+ <html>
30
+ <head>
31
+ <meta charset="utf-8">
32
+ <meta name="viewport" content="width=device-width, initial-scale=1">
33
+ <title>SSR Error - AbsoluteJS</title>
34
+ <style>
35
+ *{margin:0;padding:0;box-sizing:border-box}
36
+ body{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:"JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}
37
+ .card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}
38
+ .header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}
39
+ .brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
40
+ .badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}
41
+ .kind{color:#94a3b8;font-size:13px;font-weight:500}
42
+ .content{padding:24px}
43
+ .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
44
+ .message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}
45
+ .hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}
46
+ </style>
47
+ </head>
48
+ <body>
49
+ <div class="card">
50
+ <div class="header">
51
+ <div style="display:flex;align-items:center;gap:12px">
52
+ <span class="brand">AbsoluteJS</span>
53
+ <span class="badge">${label}</span>
54
+ </div>
55
+ <span class="kind">Server Render Error</span>
56
+ </div>
57
+ <div class="content">
58
+ <div class="label">What went wrong</div>
59
+ <pre class="message">${message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")}</pre>
60
+ <div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
61
+ </div>
62
+ </div>
63
+ </body>
64
+ </html>`;
65
+ };
66
+
15
67
  // src/constants.ts
16
68
  var UNFOUND_INDEX = -1, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_SECOND = 1000, MILLISECONDS_IN_A_MINUTE, MINUTES_IN_AN_HOUR = 60, HOURS_IN_DAY = 24, MILLISECONDS_IN_A_DAY, TIME_PRECISION = 2, TWO_THIRDS, DEFAULT_PORT = 3000, DEFAULT_CHUNK_SIZE = 16384, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet";
17
69
  var init_constants = __esm(() => {
@@ -37,6 +89,10 @@ var init_escapeScriptContent = __esm(() => {
37
89
  });
38
90
 
39
91
  // src/svelte/renderToReadableStream.ts
92
+ var exports_renderToReadableStream = {};
93
+ __export(exports_renderToReadableStream, {
94
+ renderToReadableStream: () => renderToReadableStream
95
+ });
40
96
  import { render } from "svelte/server";
41
97
  var renderToReadableStream = async (component, props, {
42
98
  bootstrapScriptContent,
@@ -85,58 +141,6 @@ var init_renderToReadableStream = __esm(() => {
85
141
  init_escapeScriptContent();
86
142
  });
87
143
 
88
- // src/utils/ssrErrorPage.ts
89
- var ssrErrorPage = (framework, error) => {
90
- const frameworkColors = {
91
- angular: "#dd0031",
92
- html: "#e34c26",
93
- htmx: "#1a365d",
94
- react: "#61dafb",
95
- svelte: "#ff3e00",
96
- vue: "#42b883"
97
- };
98
- const accent = frameworkColors[framework] ?? "#94a3b8";
99
- const label = framework.charAt(0).toUpperCase() + framework.slice(1);
100
- const message = error instanceof Error ? error.message : String(error);
101
- return `<!DOCTYPE html>
102
- <html>
103
- <head>
104
- <meta charset="utf-8">
105
- <meta name="viewport" content="width=device-width, initial-scale=1">
106
- <title>SSR Error - AbsoluteJS</title>
107
- <style>
108
- *{margin:0;padding:0;box-sizing:border-box}
109
- body{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:"JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}
110
- .card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}
111
- .header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}
112
- .brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
113
- .badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}
114
- .kind{color:#94a3b8;font-size:13px;font-weight:500}
115
- .content{padding:24px}
116
- .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
117
- .message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}
118
- .hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}
119
- </style>
120
- </head>
121
- <body>
122
- <div class="card">
123
- <div class="header">
124
- <div style="display:flex;align-items:center;gap:12px">
125
- <span class="brand">AbsoluteJS</span>
126
- <span class="badge">${label}</span>
127
- </div>
128
- <span class="kind">Server Render Error</span>
129
- </div>
130
- <div class="content">
131
- <div class="label">What went wrong</div>
132
- <pre class="message">${message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")}</pre>
133
- <div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
134
- </div>
135
- </div>
136
- </body>
137
- </html>`;
138
- };
139
-
140
144
  // src/svelte/pageHandler.ts
141
145
  var exports_pageHandler = {};
142
146
  __export(exports_pageHandler, {
@@ -145,7 +149,8 @@ __export(exports_pageHandler, {
145
149
  var handleSveltePageRequest = async (_PageComponent, pagePath, indexPath, props) => {
146
150
  try {
147
151
  const { default: ImportedPageComponent } = await import(pagePath);
148
- const stream = await renderToReadableStream(ImportedPageComponent, props, {
152
+ const { renderToReadableStream: renderToReadableStream2 } = await Promise.resolve().then(() => (init_renderToReadableStream(), exports_renderToReadableStream));
153
+ const stream = await renderToReadableStream2(ImportedPageComponent, props, {
149
154
  bootstrapModules: indexPath ? [indexPath] : [],
150
155
  bootstrapScriptContent: `window.__INITIAL_PROPS__=${JSON.stringify(props)}`
151
156
  });
@@ -160,9 +165,7 @@ var handleSveltePageRequest = async (_PageComponent, pagePath, indexPath, props)
160
165
  });
161
166
  }
162
167
  };
163
- var init_pageHandler = __esm(() => {
164
- init_renderToReadableStream();
165
- });
168
+ var init_pageHandler = () => {};
166
169
 
167
170
  // src/svelte/index.ts
168
171
  init_pageHandler();
@@ -172,5 +175,5 @@ export {
172
175
  handleSveltePageRequest
173
176
  };
174
177
 
175
- //# debugId=F656EAB348363CBE64756E2164756E21
178
+ //# debugId=91E91FD3885BEC0164756E2164756E21
176
179
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/constants.ts", "../src/utils/escapeScriptContent.ts", "../src/svelte/renderToReadableStream.ts", "../src/utils/ssrErrorPage.ts", "../src/svelte/pageHandler.ts", "../src/svelte/index.ts"],
3
+ "sources": ["../src/utils/ssrErrorPage.ts", "../src/constants.ts", "../src/utils/escapeScriptContent.ts", "../src/svelte/renderToReadableStream.ts", "../src/svelte/pageHandler.ts", "../src/svelte/index.ts"],
4
4
  "sourcesContent": [
5
+ "export const ssrErrorPage = (framework: string, error: unknown): string => {\n\tconst frameworkColors: Record<string, string> = {\n\t\tangular: '#dd0031',\n\t\thtml: '#e34c26',\n\t\thtmx: '#1a365d',\n\t\treact: '#61dafb',\n\t\tsvelte: '#ff3e00',\n\t\tvue: '#42b883'\n\t};\n\n\tconst accent = frameworkColors[framework] ?? '#94a3b8';\n\tconst label = framework.charAt(0).toUpperCase() + framework.slice(1);\n\tconst message = error instanceof Error ? error.message : String(error);\n\n\treturn `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>SSR Error - AbsoluteJS</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:\"JetBrains Mono\",\"Fira Code\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}\n.card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}\n.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}\n.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}\n.badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}\n.kind{color:#94a3b8;font-size:13px;font-weight:500}\n.content{padding:24px}\n.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}\n.message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}\n.hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}\n</style>\n</head>\n<body>\n<div class=\"card\">\n<div class=\"header\">\n<div style=\"display:flex;align-items:center;gap:12px\">\n<span class=\"brand\">AbsoluteJS</span>\n<span class=\"badge\">${label}</span>\n</div>\n<span class=\"kind\">Server Render Error</span>\n</div>\n<div class=\"content\">\n<div class=\"label\">What went wrong</div>\n<pre class=\"message\">${message.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</pre>\n<div class=\"hint\">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>\n</div>\n</div>\n</body>\n</html>`;\n};\n",
5
6
  "export const UNFOUND_INDEX = -1;\nexport const SECONDS_IN_A_MINUTE = 60;\nexport const MILLISECONDS_IN_A_SECOND = 1000;\nexport const MILLISECONDS_IN_A_MINUTE =\n\tMILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\nexport const MINUTES_IN_AN_HOUR = 60;\nexport const HOURS_IN_DAY = 24;\nexport const MILLISECONDS_IN_A_DAY =\n\tMILLISECONDS_IN_A_SECOND *\n\tSECONDS_IN_A_MINUTE *\n\tMINUTES_IN_AN_HOUR *\n\tHOURS_IN_DAY;\nexport const TIME_PRECISION = 2;\nexport const TWO_THIRDS = 2 / 3;\nexport const DEFAULT_PORT = 3000;\nexport const DEFAULT_CHUNK_SIZE = 16_384;\nexport const BUN_BUILD_WARNING_SUPPRESSION =\n\t'wildcard sideEffects are not supported yet';\n",
6
7
  "const ESCAPE_LOOKUP: Record<string, string> = {\n\t'\\u2028': '\\\\u2028',\n\t'\\u2029': '\\\\u2029',\n\t'&': '\\\\u0026',\n\t'<': '\\\\u003C',\n\t'>': '\\\\u003E'\n};\n\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\n\nexport const escapeScriptContent = (content: string) =>\n\tcontent.replace(ESCAPE_REGEX, (char) => {\n\t\tconst escaped = ESCAPE_LOOKUP[char];\n\n\t\treturn escaped !== undefined ? escaped : char;\n\t});\n",
7
8
  "import type { Component } from 'svelte';\nimport { render } from 'svelte/server';\nimport { DEFAULT_CHUNK_SIZE } from '../constants';\nimport { escapeScriptContent } from '../utils/escapeScriptContent';\n\nexport type RenderStreamOptions = {\n\tbootstrapScriptContent?: string;\n\tbootstrapScripts?: string[];\n\tbootstrapModules?: string[];\n\tnonce?: string;\n\tonError?: (error: unknown) => void;\n\tprogressiveChunkSize?: number;\n\tsignal?: AbortSignal;\n\theadContent?: string;\n\tbodyContent?: string;\n};\n\nexport const renderToReadableStream = async <\n\tProps extends Record<string, unknown> = Record<string, never>\n>(\n\tcomponent: Component<Props>,\n\tprops?: Props,\n\t{\n\t\tbootstrapScriptContent,\n\t\tbootstrapScripts = [],\n\t\tbootstrapModules = [],\n\t\tnonce,\n\t\tonError = console.error,\n\t\tprogressiveChunkSize = DEFAULT_CHUNK_SIZE,\n\t\tsignal,\n\t\theadContent,\n\t\tbodyContent\n\t}: RenderStreamOptions = {}\n) => {\n\ttry {\n\t\tconst { head, body } =\n\t\t\ttypeof props === 'undefined'\n\t\t\t\t? // @ts-expect-error Svelte's render function can't determine which overload to choose when the component is generic\n\t\t\t\t\trender(component)\n\t\t\t\t: render(component, { props });\n\t\tconst nonceAttr = nonce ? ` nonce=\"${nonce}\"` : '';\n\t\tconst scripts =\n\t\t\t(bootstrapScriptContent\n\t\t\t\t? `<script${nonceAttr}>${escapeScriptContent(bootstrapScriptContent)}</script>`\n\t\t\t\t: '') +\n\t\t\tbootstrapScripts\n\t\t\t\t.map((src) => `<script${nonceAttr} src=\"${src}\"></script>`)\n\t\t\t\t.join('') +\n\t\t\tbootstrapModules\n\t\t\t\t.map(\n\t\t\t\t\t(src) =>\n\t\t\t\t\t\t`<script${nonceAttr} type=\"module\" src=\"${src}\"></script>`\n\t\t\t\t)\n\t\t\t\t.join('');\n\t\tconst encoder = new TextEncoder();\n\t\t// Warning: this encodes the entire document into memory in one buffer\n\t\tconst full = encoder.encode(\n\t\t\t`<!DOCTYPE html><html lang=\"en\"><head>${head}${headContent ?? ''}</head><body>${body}${scripts}${bodyContent ?? ''}</body></html>`\n\t\t);\n\n\t\tlet offset = 0;\n\n\t\treturn new ReadableStream<Uint8Array>({\n\t\t\ttype: 'bytes',\n\t\t\tcancel(reason) {\n\t\t\t\tonError?.(reason);\n\t\t\t},\n\t\t\tpull(controller) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (offset >= full.length) {\n\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst end = Math.min(\n\t\t\t\t\toffset + progressiveChunkSize,\n\t\t\t\t\tfull.length\n\t\t\t\t);\n\t\t\t\tcontroller.enqueue(full.subarray(offset, end));\n\t\t\t\toffset = end;\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tonError?.(error);\n\t\tthrow error;\n\t}\n};\n",
8
- "export const ssrErrorPage = (framework: string, error: unknown): string => {\n\tconst frameworkColors: Record<string, string> = {\n\t\tangular: '#dd0031',\n\t\thtml: '#e34c26',\n\t\thtmx: '#1a365d',\n\t\treact: '#61dafb',\n\t\tsvelte: '#ff3e00',\n\t\tvue: '#42b883'\n\t};\n\n\tconst accent = frameworkColors[framework] ?? '#94a3b8';\n\tconst label = framework.charAt(0).toUpperCase() + framework.slice(1);\n\tconst message = error instanceof Error ? error.message : String(error);\n\n\treturn `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>SSR Error - AbsoluteJS</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:\"JetBrains Mono\",\"Fira Code\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}\n.card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}\n.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}\n.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}\n.badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}\n.kind{color:#94a3b8;font-size:13px;font-weight:500}\n.content{padding:24px}\n.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}\n.message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}\n.hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}\n</style>\n</head>\n<body>\n<div class=\"card\">\n<div class=\"header\">\n<div style=\"display:flex;align-items:center;gap:12px\">\n<span class=\"brand\">AbsoluteJS</span>\n<span class=\"badge\">${label}</span>\n</div>\n<span class=\"kind\">Server Render Error</span>\n</div>\n<div class=\"content\">\n<div class=\"label\">What went wrong</div>\n<pre class=\"message\">${message.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</pre>\n<div class=\"hint\">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>\n</div>\n</div>\n</body>\n</html>`;\n};\n",
9
- "import { Component as SvelteComponent } from 'svelte';\nimport { renderToReadableStream as renderSvelteToReadableStream } from './renderToReadableStream';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\n\n// Declare overloads matching Svelte's own component API to preserve correct type inference\nexport type HandleSveltePageRequest = {\n\t(\n\t\tPageComponent: SvelteComponent<Record<string, never>>,\n\t\tpagePath: string,\n\t\tindexPath: string\n\t): Promise<Response>;\n\t<P extends Record<string, unknown>>(\n\t\tPageComponent: SvelteComponent<P>,\n\t\tpagePath: string,\n\t\tindexPath: string,\n\t\tprops: P\n\t): Promise<Response>;\n};\n\nexport const handleSveltePageRequest: HandleSveltePageRequest = async <\n\tP extends Record<string, unknown>\n>(\n\t_PageComponent: SvelteComponent<P>,\n\tpagePath: string,\n\tindexPath: string,\n\tprops?: P\n) => {\n\ttry {\n\t\tconst { default: ImportedPageComponent } = await import(pagePath);\n\n\t\tconst stream = await renderSvelteToReadableStream(\n\t\t\tImportedPageComponent,\n\t\t\tprops,\n\t\t\t{\n\t\t\t\tbootstrapModules: indexPath ? [indexPath] : [],\n\t\t\t\tbootstrapScriptContent: `window.__INITIAL_PROPS__=${JSON.stringify(\n\t\t\t\t\tprops\n\t\t\t\t)}`\n\t\t\t}\n\t\t);\n\n\t\treturn new Response(stream, {\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('[SSR] Svelte render error:', error);\n\n\t\treturn new Response(ssrErrorPage('svelte', error), {\n\t\t\tstatus: 500,\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t}\n};\n",
9
+ "import type { Component as SvelteComponent } from 'svelte';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\n\n// Declare overloads matching Svelte's own component API to preserve correct type inference\nexport type HandleSveltePageRequest = {\n\t(\n\t\tPageComponent: SvelteComponent<Record<string, never>>,\n\t\tpagePath: string,\n\t\tindexPath: string\n\t): Promise<Response>;\n\t<P extends Record<string, unknown>>(\n\t\tPageComponent: SvelteComponent<P>,\n\t\tpagePath: string,\n\t\tindexPath: string,\n\t\tprops: P\n\t): Promise<Response>;\n};\n\nexport const handleSveltePageRequest: HandleSveltePageRequest = async <\n\tP extends Record<string, unknown>\n>(\n\t_PageComponent: SvelteComponent<P>,\n\tpagePath: string,\n\tindexPath: string,\n\tprops?: P\n) => {\n\ttry {\n\t\tconst { default: ImportedPageComponent } = await import(pagePath);\n\t\tconst { renderToReadableStream } = await import(\n\t\t\t'./renderToReadableStream'\n\t\t);\n\n\t\tconst stream = await renderToReadableStream(\n\t\t\tImportedPageComponent,\n\t\t\tprops,\n\t\t\t{\n\t\t\t\tbootstrapModules: indexPath ? [indexPath] : [],\n\t\t\t\tbootstrapScriptContent: `window.__INITIAL_PROPS__=${JSON.stringify(\n\t\t\t\t\tprops\n\t\t\t\t)}`\n\t\t\t}\n\t\t);\n\n\t\treturn new Response(stream, {\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('[SSR] Svelte render error:', error);\n\n\t\treturn new Response(ssrErrorPage('svelte', error), {\n\t\t\tstatus: 500,\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t}\n};\n",
10
10
  "export { handleSveltePageRequest } from './pageHandler';\nexport { renderToReadableStream } from './renderToReadableStream';\n"
11
11
  ],
12
- "mappings": "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",
13
- "debugId": "F656EAB348363CBE64756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "91E91FD3885BEC0164756E2164756E21",
14
14
  "names": []
15
15
  }
@@ -1,5 +1,5 @@
1
- import { build } from '../core/build';
2
- import { devBuild } from '../core/devBuild';
1
+ import { build } from '../src/core/build';
2
+ import { devBuild } from '../src/core/devBuild';
3
3
  export type BuildOptions = {
4
4
  preserveIntermediateFiles?: boolean;
5
5
  /** When true, build() throws on error instead of exit(1) - used by HMR rebuilds */
@@ -1,2 +1,2 @@
1
- import { getUserAgentType } from '../utils/userAgentFunctions';
1
+ import { getUserAgentType } from '../src/utils/userAgentFunctions';
2
2
  export type UserAgentType = ReturnType<typeof getUserAgentType>;
package/dist/vue/index.js CHANGED
@@ -69,16 +69,16 @@ var exports_pageHandler = {};
69
69
  __export(exports_pageHandler, {
70
70
  handleVuePageRequest: () => handleVuePageRequest
71
71
  });
72
- import { createSSRApp, h } from "vue";
73
- import { renderToWebStream as renderVueToWebStream } from "vue/server-renderer";
74
72
  var handleVuePageRequest = async (_PageComponent, pagePath, indexPath, headTag = "<head></head>", ...props) => {
75
73
  try {
76
74
  const [maybeProps] = props;
77
75
  const { default: ImportedPageComponent } = await import(pagePath);
76
+ const { createSSRApp, h } = await import("vue");
77
+ const { renderToWebStream } = await import("vue/server-renderer");
78
78
  const app = createSSRApp({
79
79
  render: () => h(ImportedPageComponent, maybeProps ?? null)
80
80
  });
81
- const bodyStream = renderVueToWebStream(app);
81
+ const bodyStream = renderToWebStream(app);
82
82
  const head = `<!DOCTYPE html><html>${headTag}<body><div id="root">`;
83
83
  const tail = `</div><script>window.__INITIAL_PROPS__=${JSON.stringify(maybeProps ?? {})}</script><script type="module" src="${indexPath}"></script></body></html>`;
84
84
  const stream = new ReadableStream({
@@ -110,5 +110,5 @@ export {
110
110
  handleVuePageRequest
111
111
  };
112
112
 
113
- //# debugId=C073BD88B16F872064756E2164756E21
113
+ //# debugId=245EA4DF60FFAE7864756E2164756E21
114
114
  //# sourceMappingURL=index.js.map
@@ -3,10 +3,10 @@
3
3
  "sources": ["../src/utils/ssrErrorPage.ts", "../src/vue/pageHandler.ts", "../src/vue/index.ts"],
4
4
  "sourcesContent": [
5
5
  "export const ssrErrorPage = (framework: string, error: unknown): string => {\n\tconst frameworkColors: Record<string, string> = {\n\t\tangular: '#dd0031',\n\t\thtml: '#e34c26',\n\t\thtmx: '#1a365d',\n\t\treact: '#61dafb',\n\t\tsvelte: '#ff3e00',\n\t\tvue: '#42b883'\n\t};\n\n\tconst accent = frameworkColors[framework] ?? '#94a3b8';\n\tconst label = framework.charAt(0).toUpperCase() + framework.slice(1);\n\tconst message = error instanceof Error ? error.message : String(error);\n\n\treturn `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>SSR Error - AbsoluteJS</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:\"JetBrains Mono\",\"Fira Code\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}\n.card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}\n.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}\n.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}\n.badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}\n.kind{color:#94a3b8;font-size:13px;font-weight:500}\n.content{padding:24px}\n.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}\n.message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}\n.hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}\n</style>\n</head>\n<body>\n<div class=\"card\">\n<div class=\"header\">\n<div style=\"display:flex;align-items:center;gap:12px\">\n<span class=\"brand\">AbsoluteJS</span>\n<span class=\"badge\">${label}</span>\n</div>\n<span class=\"kind\">Server Render Error</span>\n</div>\n<div class=\"content\">\n<div class=\"label\">What went wrong</div>\n<pre class=\"message\">${message.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</pre>\n<div class=\"hint\">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>\n</div>\n</div>\n</body>\n</html>`;\n};\n",
6
- "import { Component as VueComponent, createSSRApp, h } from 'vue';\nimport { renderToWebStream as renderVueToWebStream } from 'vue/server-renderer';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\n\nexport const handleVuePageRequest = async <\n\tProps extends Record<string, unknown> = Record<never, never>\n>(\n\t_PageComponent: VueComponent<Props>,\n\tpagePath: string,\n\tindexPath: string,\n\theadTag: `<head>${string}</head>` = '<head></head>',\n\t...props: keyof Props extends never ? [] : [props: Props]\n) => {\n\ttry {\n\t\tconst [maybeProps] = props;\n\n\t\tconst { default: ImportedPageComponent } = await import(pagePath);\n\n\t\tconst app = createSSRApp({\n\t\t\trender: () => h(ImportedPageComponent, maybeProps ?? null)\n\t\t});\n\n\t\tconst bodyStream = renderVueToWebStream(app);\n\n\t\tconst head = `<!DOCTYPE html><html>${headTag}<body><div id=\"root\">`;\n\t\tconst tail = `</div><script>window.__INITIAL_PROPS__=${JSON.stringify(\n\t\t\tmaybeProps ?? {}\n\t\t)}</script><script type=\"module\" src=\"${indexPath}\"></script></body></html>`;\n\n\t\tconst stream = new ReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\tcontroller.enqueue(head);\n\t\t\t\tconst reader = bodyStream.getReader();\n\t\t\t\tconst pumpLoop = () => {\n\t\t\t\t\treader\n\t\t\t\t\t\t.read()\n\t\t\t\t\t\t.then(({ done, value }) =>\n\t\t\t\t\t\t\tdone\n\t\t\t\t\t\t\t\t? (controller.enqueue(tail), controller.close())\n\t\t\t\t\t\t\t\t: (controller.enqueue(value), pumpLoop())\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.catch((err) => controller.error(err));\n\t\t\t\t};\n\t\t\t\tpumpLoop();\n\t\t\t}\n\t\t});\n\n\t\treturn new Response(stream, {\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('[SSR] Vue render error:', error);\n\n\t\treturn new Response(ssrErrorPage('vue', error), {\n\t\t\tstatus: 500,\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t}\n};\n",
6
+ "import type { Component as VueComponent } from 'vue';\nimport { ssrErrorPage } from '../utils/ssrErrorPage';\n\nexport const handleVuePageRequest = async <\n\tProps extends Record<string, unknown> = Record<never, never>\n>(\n\t_PageComponent: VueComponent<Props>,\n\tpagePath: string,\n\tindexPath: string,\n\theadTag: `<head>${string}</head>` = '<head></head>',\n\t...props: keyof Props extends never ? [] : [props: Props]\n) => {\n\ttry {\n\t\tconst [maybeProps] = props;\n\n\t\tconst { default: ImportedPageComponent } = await import(pagePath);\n\t\tconst { createSSRApp, h } = await import('vue');\n\t\tconst { renderToWebStream } = await import('vue/server-renderer');\n\n\t\tconst app = createSSRApp({\n\t\t\trender: () => h(ImportedPageComponent, maybeProps ?? null)\n\t\t});\n\n\t\tconst bodyStream = renderToWebStream(app);\n\n\t\tconst head = `<!DOCTYPE html><html>${headTag}<body><div id=\"root\">`;\n\t\tconst tail = `</div><script>window.__INITIAL_PROPS__=${JSON.stringify(\n\t\t\tmaybeProps ?? {}\n\t\t)}</script><script type=\"module\" src=\"${indexPath}\"></script></body></html>`;\n\n\t\tconst stream = new ReadableStream({\n\t\t\tstart(controller) {\n\t\t\t\tcontroller.enqueue(head);\n\t\t\t\tconst reader = bodyStream.getReader();\n\t\t\t\tconst pumpLoop = () => {\n\t\t\t\t\treader\n\t\t\t\t\t\t.read()\n\t\t\t\t\t\t.then(({ done, value }) =>\n\t\t\t\t\t\t\tdone\n\t\t\t\t\t\t\t\t? (controller.enqueue(tail), controller.close())\n\t\t\t\t\t\t\t\t: (controller.enqueue(value), pumpLoop())\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.catch((err) => controller.error(err));\n\t\t\t\t};\n\t\t\t\tpumpLoop();\n\t\t\t}\n\t\t});\n\n\t\treturn new Response(stream, {\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('[SSR] Vue render error:', error);\n\n\t\treturn new Response(ssrErrorPage('vue', error), {\n\t\t\tstatus: 500,\n\t\t\theaders: { 'Content-Type': 'text/html' }\n\t\t});\n\t}\n};\n",
7
7
  "export { handleVuePageRequest } from './pageHandler';\n"
8
8
  ],
9
- "mappings": ";;;;;;;;;;;;;;;IAAa,eAAe,CAAC,WAAmB,UAA2B;AAAA,EAC1E,MAAM,kBAA0C;AAAA,IAC/C,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EAEA,MAAM,SAAS,gBAAgB,cAAc;AAAA,EAC7C,MAAM,QAAQ,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC;AAAA,EACnE,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EAErE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sFAY8E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAahE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAMC,QAAQ,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;AC7ChG;AACA,8BAAS;AAAA,IAGI,uBAAuB,OAGnC,gBACA,UACA,WACA,UAAoC,oBACjC,UACC;AAAA,EACJ,IAAI;AAAA,IACH,OAAO,cAAc;AAAA,IAErB,QAAQ,SAAS,0BAA0B,MAAa;AAAA,IAExD,MAAM,MAAM,aAAa;AAAA,MACxB,QAAQ,MAAM,EAAE,uBAAuB,cAAc,IAAI;AAAA,IAC1D,CAAC;AAAA,IAED,MAAM,aAAa,qBAAqB,GAAG;AAAA,IAE3C,MAAM,OAAO,wBAAwB;AAAA,IACrC,MAAM,OAAO,0CAA0C,KAAK,UAC3D,cAAc,CAAC,CAChB,wCAAwC;AAAA,IAExC,MAAM,SAAS,IAAI,eAAe;AAAA,MACjC,KAAK,CAAC,YAAY;AAAA,QACjB,WAAW,QAAQ,IAAI;AAAA,QACvB,MAAM,SAAS,WAAW,UAAU;AAAA,QACpC,MAAM,WAAW,MAAM;AAAA,UACtB,OACE,KAAK,EACL,KAAK,GAAG,MAAM,YACd,QACI,WAAW,QAAQ,IAAI,GAAG,WAAW,MAAM,MAC3C,WAAW,QAAQ,KAAK,GAAG,SAAS,EACzC,EACC,MAAM,CAAC,QAAQ,WAAW,MAAM,GAAG,CAAC;AAAA;AAAA,QAEvC,SAAS;AAAA;AAAA,IAEX,CAAC;AAAA,IAED,OAAO,IAAI,SAAS,QAAQ;AAAA,MAC3B,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA,IACA,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,2BAA2B,KAAK;AAAA,IAE9C,OAAO,IAAI,SAAS,aAAa,OAAO,KAAK,GAAG;AAAA,MAC/C,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA;AAAA;AAAA;;;ACxDH;",
10
- "debugId": "C073BD88B16F872064756E2164756E21",
9
+ "mappings": ";;;;;;;;;;;;;;;IAAa,eAAe,CAAC,WAAmB,UAA2B;AAAA,EAC1E,MAAM,kBAA0C;AAAA,IAC/C,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EAEA,MAAM,SAAS,gBAAgB,cAAc;AAAA,EAC7C,MAAM,QAAQ,UAAU,OAAO,CAAC,EAAE,YAAY,IAAI,UAAU,MAAM,CAAC;AAAA,EACnE,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EAErE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sFAY8E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAahE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAMC,QAAQ,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;IC1CnF,uBAAuB,OAGnC,gBACA,UACA,WACA,UAAoC,oBACjC,UACC;AAAA,EACJ,IAAI;AAAA,IACH,OAAO,cAAc;AAAA,IAErB,QAAQ,SAAS,0BAA0B,MAAa;AAAA,IACxD,QAAQ,cAAc,MAAM,MAAa;AAAA,IACzC,QAAQ,sBAAsB,MAAa;AAAA,IAE3C,MAAM,MAAM,aAAa;AAAA,MACxB,QAAQ,MAAM,EAAE,uBAAuB,cAAc,IAAI;AAAA,IAC1D,CAAC;AAAA,IAED,MAAM,aAAa,kBAAkB,GAAG;AAAA,IAExC,MAAM,OAAO,wBAAwB;AAAA,IACrC,MAAM,OAAO,0CAA0C,KAAK,UAC3D,cAAc,CAAC,CAChB,wCAAwC;AAAA,IAExC,MAAM,SAAS,IAAI,eAAe;AAAA,MACjC,KAAK,CAAC,YAAY;AAAA,QACjB,WAAW,QAAQ,IAAI;AAAA,QACvB,MAAM,SAAS,WAAW,UAAU;AAAA,QACpC,MAAM,WAAW,MAAM;AAAA,UACtB,OACE,KAAK,EACL,KAAK,GAAG,MAAM,YACd,QACI,WAAW,QAAQ,IAAI,GAAG,WAAW,MAAM,MAC3C,WAAW,QAAQ,KAAK,GAAG,SAAS,EACzC,EACC,MAAM,CAAC,QAAQ,WAAW,MAAM,GAAG,CAAC;AAAA;AAAA,QAEvC,SAAS;AAAA;AAAA,IAEX,CAAC;AAAA,IAED,OAAO,IAAI,SAAS,QAAQ;AAAA,MAC3B,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA,IACA,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,2BAA2B,KAAK;AAAA,IAE9C,OAAO,IAAI,SAAS,aAAa,OAAO,KAAK,GAAG;AAAA,MAC/C,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,YAAY;AAAA,IACxC,CAAC;AAAA;AAAA;AAAA;;;ACzDH;",
10
+ "debugId": "245EA4DF60FFAE7864756E2164756E21",
11
11
  "names": []
12
12
  }
package/package.json CHANGED
@@ -39,23 +39,23 @@
39
39
  "license": "BSL-1.1",
40
40
  "exports": {
41
41
  ".": {
42
- "types": "./dist/index.d.ts",
42
+ "types": "./dist/src/index.d.ts",
43
43
  "import": "./dist/index.js"
44
44
  },
45
45
  "./react": {
46
- "types": "./dist/react/index.d.ts",
46
+ "types": "./dist/src/react/index.d.ts",
47
47
  "import": "./dist/react/index.js"
48
48
  },
49
49
  "./react/hooks": {
50
- "types": "./dist/react/hooks/index.d.ts",
50
+ "types": "./dist/src/react/hooks/index.d.ts",
51
51
  "import": "./dist/react/hooks/index.js"
52
52
  },
53
53
  "./svelte": {
54
- "types": "./dist/svelte/index.d.ts",
54
+ "types": "./dist/src/svelte/index.d.ts",
55
55
  "import": "./dist/svelte/index.js"
56
56
  },
57
57
  "./vue": {
58
- "types": "./dist/vue/index.d.ts",
58
+ "types": "./dist/src/vue/index.d.ts",
59
59
  "import": "./dist/vue/index.js"
60
60
  }
61
61
  },
@@ -87,7 +87,7 @@
87
87
  "url": "https://github.com/absolutejs/absolutejs.git"
88
88
  },
89
89
  "scripts": {
90
- "build": "rm -rf dist && bun build src/index.ts src/react/index.ts src/react/hooks/index.ts src/svelte/index.ts src/vue/index.ts --outdir dist --sourcemap --target=bun --external react --external react-dom --external vue --external @vue/compiler-sfc --external vue/server-renderer --external svelte --external svelte/server --external elysia && bun build src/cli/index.ts --outfile dist/cli/index.js --target=bun && tsc --emitDeclarationOnly --project tsconfig.build.json && mkdir -p dist/dev && cp -r src/dev/client dist/dev/client",
90
+ "build": "rm -rf dist && bun build src/index.ts src/react/index.ts src/react/hooks/index.ts src/svelte/index.ts src/vue/index.ts --outdir dist --sourcemap --target=bun --external react --external react-dom --external vue --external @vue/compiler-sfc --external vue/server-renderer --external svelte --external svelte/compiler --external svelte/server --external elysia && bun build src/cli/index.ts --outfile dist/cli/index.js --target=bun && tsc --emitDeclarationOnly --project tsconfig.build.json && mkdir -p dist/dev && cp -r src/dev/client dist/dev/client",
91
91
  "db:push": "drizzle-kit push",
92
92
  "db:studio": "drizzle-kit studio",
93
93
  "dev": "bun run src/cli/index.ts dev example/server.ts",
@@ -98,6 +98,6 @@
98
98
  "test": "bun test",
99
99
  "typecheck": "bun run tsc --noEmit"
100
100
  },
101
- "types": "./dist/index.d.ts",
102
- "version": "0.16.4"
101
+ "types": "./dist/src/index.d.ts",
102
+ "version": "0.16.6"
103
103
  }
@@ -11,11 +11,10 @@
11
11
  "noImplicitAny": true,
12
12
  "noUncheckedIndexedAccess": true,
13
13
  "outDir": "dist",
14
- "rootDir": "src",
15
14
  "skipLibCheck": true,
16
15
  "strict": true,
17
16
  "target": "ESNext"
18
17
  },
19
18
  "exclude": ["node_modules", "src/dev/client"],
20
- "include": ["src/**/*"]
19
+ "include": ["src/**/*", "types/**/*"]
21
20
  }
package/types/build.ts ADDED
@@ -0,0 +1,40 @@
1
+ import { build } from '../src/core/build';
2
+ import { devBuild } from '../src/core/devBuild';
3
+
4
+ export type BuildOptions = {
5
+ preserveIntermediateFiles?: boolean;
6
+ /** When true, build() throws on error instead of exit(1) - used by HMR rebuilds */
7
+ throwOnError?: boolean;
8
+ /** When true, HMR client code is injected into built assets. Set by devBuild(). */
9
+ injectHMR?: boolean;
10
+ hmr?: {
11
+ debounceMs?: number;
12
+ };
13
+ };
14
+
15
+ export type BuildConfig = {
16
+ buildDirectory?: string;
17
+ assetsDirectory?: string;
18
+ publicDirectory?: string;
19
+ reactDirectory?: string;
20
+ vueDirectory?: string;
21
+ angularDirectory?: string;
22
+ astroDirectory?: string;
23
+ svelteDirectory?: string;
24
+ htmlDirectory?: string;
25
+ htmxDirectory?: string;
26
+ tailwind?: {
27
+ input: string;
28
+ output: string;
29
+ };
30
+ options?: BuildOptions;
31
+ // Optional: List of files to rebuild incrementally (absolute paths)
32
+ // When provided, only these files and their dependencies will be rebuilt
33
+ incrementalFiles?: string[];
34
+ };
35
+
36
+ export type BuildResult = ReturnType<typeof build>;
37
+ export type DevBuildResult = ReturnType<typeof devBuild>;
38
+ export type Result = BuildResult | DevBuildResult;
39
+
40
+ export type Prettify<T> = { [K in keyof T]: T[K] } & {};