@ecopages/core 0.2.0-beta.30 → 0.2.0-beta.32

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 (338) hide show
  1. package/README.md +1 -0
  2. package/package.json +82 -3
  3. package/src/adapters/abstract/application-adapter.d.ts +0 -8
  4. package/src/adapters/abstract/application-adapter.js +252 -261
  5. package/src/adapters/abstract/router-adapter.js +12 -4
  6. package/src/adapters/abstract/segment-path-matcher.js +132 -134
  7. package/src/adapters/abstract/server-adapter.js +22 -14
  8. package/src/adapters/abstract/ws-pattern-matcher.js +24 -26
  9. package/src/adapters/bun/bun-user-websocket-lifecycle.js +83 -86
  10. package/src/adapters/bun/client-bridge.js +51 -50
  11. package/src/adapters/bun/create-app.js +171 -161
  12. package/src/adapters/bun/hmr-manager.js +62 -57
  13. package/src/adapters/bun/index.js +2 -31
  14. package/src/adapters/bun/runtime-host.js +61 -54
  15. package/src/adapters/bun/server-adapter.d.ts +0 -1
  16. package/src/adapters/bun/server-adapter.js +561 -561
  17. package/src/adapters/bun/static-preview-host.js +43 -46
  18. package/src/adapters/create-app.js +11 -14
  19. package/src/adapters/index.js +2 -30
  20. package/src/adapters/node/create-app.js +123 -129
  21. package/src/adapters/node/http-request-bridge.js +147 -106
  22. package/src/adapters/node/node-client-bridge.js +62 -64
  23. package/src/adapters/node/node-hmr-manager.js +58 -48
  24. package/src/adapters/node/runtime-host.js +96 -89
  25. package/src/adapters/node/server-adapter-dependencies.js +18 -21
  26. package/src/adapters/node/server-adapter.d.ts +0 -1
  27. package/src/adapters/node/server-adapter.js +347 -326
  28. package/src/adapters/node/static-content-server.js +172 -191
  29. package/src/adapters/node/static-preview-host.js +87 -78
  30. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  31. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  32. package/src/adapters/shared/hmr/hmr-html-response.js +46 -32
  33. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +29 -38
  34. package/src/adapters/shared/hmr/shared-hmr-manager.js +439 -425
  35. package/src/adapters/shared/http/api-request-pipeline.js +122 -119
  36. package/src/adapters/shared/http/api-response.js +77 -77
  37. package/src/adapters/shared/http/create-body-response.js +22 -19
  38. package/src/adapters/shared/http/define-api-handler.js +41 -55
  39. package/src/adapters/shared/http/explicit-static-render-preparation.js +26 -23
  40. package/src/adapters/shared/http/explicit-static-route-matcher.js +55 -62
  41. package/src/adapters/shared/http/file-route-middleware-pipeline.js +81 -75
  42. package/src/adapters/shared/http/fs-server-response-factory.js +101 -96
  43. package/src/adapters/shared/http/fs-server-response-matcher.js +239 -257
  44. package/src/adapters/shared/http/run-middleware-chain.js +15 -15
  45. package/src/adapters/shared/runtime/application-adapter.js +72 -87
  46. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +25 -22
  47. package/src/adapters/shared/runtime/port-manager.js +207 -177
  48. package/src/adapters/shared/runtime/render-context.js +94 -79
  49. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +33 -38
  50. package/src/adapters/shared/runtime/runtime-host.js +1 -0
  51. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +2 -3
  52. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +65 -51
  53. package/src/adapters/shared/runtime/server-adapter.d.ts +1 -0
  54. package/src/adapters/shared/runtime/server-adapter.js +233 -217
  55. package/src/adapters/shared/runtime/server-route-handler.js +74 -70
  56. package/src/adapters/shared/runtime/server-static-builder.js +165 -184
  57. package/src/adapters/shared/runtime/static-preview-host.js +1 -0
  58. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +97 -88
  59. package/src/adapters/shared/ws/websocket-lifecycle.js +57 -50
  60. package/src/build/README.md +52 -1
  61. package/src/build/app-build-manifest-runtime.js +129 -108
  62. package/src/build/browser/browser-runtime-manifest.js +47 -50
  63. package/src/build/browser/browser-runtime-plugin-helpers.js +32 -12
  64. package/src/build/browser/browser-runtime-plugin.js +206 -160
  65. package/src/build/browser/jsx-ownership-plugins.js +51 -37
  66. package/src/build/browser/lit-static-render-worker-context.js +3 -5
  67. package/src/build/build-adapter.js +276 -139
  68. package/src/build/cache/build-input-fingerprint.js +28 -26
  69. package/src/build/cache/cache-constants.js +4 -6
  70. package/src/build/cache/cache-keys.js +64 -56
  71. package/src/build/cache/pages-unified-graph-build.js +179 -178
  72. package/src/build/cache/production-build-cache.js +47 -54
  73. package/src/build/cache/server-entry-build-cache.js +134 -146
  74. package/src/build/contracts/build-contracts.d.ts +4 -4
  75. package/src/build/contracts/build-contracts.js +1 -0
  76. package/src/build/contracts/build-manifest.js +58 -43
  77. package/src/build/contracts/build-types.js +1 -0
  78. package/src/build/rolldown/rolldown-adapter-helpers.d.ts +9 -0
  79. package/src/build/rolldown/rolldown-adapter-helpers.js +405 -298
  80. package/src/build/rolldown/rolldown-build-adapter.js +53 -61
  81. package/src/build/rolldown/rolldown-build-invocation-metrics.js +31 -35
  82. package/src/build/rolldown/rolldown-plugin-bridge.js +264 -194
  83. package/src/build/rolldown/rolldown-source-transform-pass.js +59 -50
  84. package/src/build/rolldown/runtime-build-output-normalizer.js +227 -175
  85. package/src/build/rolldown/server-side-css-shim-plugin.js +54 -31
  86. package/src/build/runtime/build-profile-options.js +36 -36
  87. package/src/build/runtime/build-request-identity.js +70 -45
  88. package/src/build/runtime/build-request-policy.js +80 -42
  89. package/src/build/runtime/build-runtime.js +64 -54
  90. package/src/build/runtime/deduping-build-executor.js +38 -32
  91. package/src/build/runtime/parallel-build-executor.js +58 -50
  92. package/src/build/runtime/serialized-build-executor.js +78 -62
  93. package/src/cache/index.js +6 -6
  94. package/src/cache/module-parse-cache.js +99 -68
  95. package/src/client/navigation-scripts/classification.js +45 -37
  96. package/src/client/navigation-scripts/index.js +3 -23
  97. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +58 -62
  98. package/src/client/navigation-scripts/registry.js +15 -11
  99. package/src/client/navigation-scripts/rerun-queue.js +81 -64
  100. package/src/client/scroll.js +32 -24
  101. package/src/client/scroll.test.browser.js +27 -33
  102. package/src/client/view-transitions.js +68 -55
  103. package/src/config/config-builder.d.ts +8 -0
  104. package/src/config/config-builder.js +637 -642
  105. package/src/config/constants.js +44 -24
  106. package/src/declarations.d.ts +1 -0
  107. package/src/dev/README.md +24 -0
  108. package/src/dev/client-bridge-registry.js +7 -12
  109. package/src/dev/dev-client-ownership.js +7 -5
  110. package/src/dev/hmr-manager-registry.js +7 -12
  111. package/src/dev/host-runtime.js +25 -30
  112. package/src/dev/runtime-server-started-message.js +2 -5
  113. package/src/dev/sc-server.js +106 -103
  114. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  115. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  116. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  117. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  118. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  119. package/src/dev/transform-server/dev-transform-import-rewriter.js +110 -0
  120. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  121. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  122. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  123. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  124. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  125. package/src/dev/transform-server/dev-transform-server.js +191 -0
  126. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  127. package/src/dev/transform-server/dev-transform-url.js +58 -0
  128. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +27 -0
  129. package/src/dev/transform-server/dev-transform-vendor-registry.js +145 -0
  130. package/src/dev/transform-server/index.d.ts +6 -0
  131. package/src/dev/transform-server/index.js +4 -0
  132. package/src/dev/transform-server/types.d.ts +15 -0
  133. package/src/dev/transform-server/types.js +1 -0
  134. package/src/dev-toolbar/README.md +51 -0
  135. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  136. package/src/dev-toolbar/define-dev-tool.js +9 -0
  137. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  138. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  139. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  140. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  141. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  142. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  143. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  144. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  145. package/src/dev-toolbar/dev-toolbar-package.d.ts +31 -0
  146. package/src/dev-toolbar/dev-toolbar-package.js +72 -0
  147. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  148. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  149. package/src/diagnostics/request-build-dedupe.js +34 -28
  150. package/src/diagnostics/startup-trace.d.ts +10 -1
  151. package/src/diagnostics/startup-trace.js +269 -241
  152. package/src/eco/README.md +6 -0
  153. package/src/eco/eco-declared-component.js +19 -14
  154. package/src/eco/eco.browser.js +56 -69
  155. package/src/eco/eco.js +156 -96
  156. package/src/eco/eco.types.js +5 -0
  157. package/src/eco/eco.utils.js +1 -10
  158. package/src/eco/global-injector-map.js +55 -41
  159. package/src/eco/lazy-injector-map.js +90 -60
  160. package/src/eco/module-dependencies.js +52 -44
  161. package/src/eco/page-layout-normalization.js +59 -49
  162. package/src/errors/http-error.js +50 -49
  163. package/src/errors/index.js +3 -12
  164. package/src/errors/locals-access-error.js +5 -8
  165. package/src/errors/undeclared-component-dependency-error.js +15 -15
  166. package/src/global/app-logger.js +3 -6
  167. package/src/hmr/README.md +10 -0
  168. package/src/hmr/client/hmr-runtime.js +117 -113
  169. package/src/hmr/client/module-update.d.ts +13 -0
  170. package/src/hmr/client/module-update.js +39 -0
  171. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  172. package/src/hmr/hmr-asset-paths.js +22 -0
  173. package/src/hmr/hmr-entrypoint-output.d.ts +11 -39
  174. package/src/hmr/hmr-entrypoint-output.js +28 -54
  175. package/src/hmr/hmr-file-change-prep.js +13 -16
  176. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  177. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  178. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  179. package/src/hmr/hmr-runtime-paths.js +13 -0
  180. package/src/hmr/hmr-strategy.d.ts +5 -11
  181. package/src/hmr/hmr-strategy.js +113 -61
  182. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  183. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -95
  184. package/src/hmr/strategies/js-hmr-strategy.js +104 -217
  185. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +33 -27
  186. package/src/index.browser.js +1 -4
  187. package/src/index.d.ts +1 -0
  188. package/src/index.js +6 -47
  189. package/src/integrations/ghtml/ghtml-renderer.js +12 -7
  190. package/src/integrations/ghtml/ghtml.constants.js +1 -4
  191. package/src/integrations/ghtml/ghtml.plugin.js +9 -12
  192. package/src/islands/README.md +25 -0
  193. package/src/islands/island-host.d.ts +37 -0
  194. package/src/islands/island-host.js +55 -0
  195. package/src/plugins/alias-resolver-cache.js +114 -97
  196. package/src/plugins/alias-resolver-plugin.js +33 -47
  197. package/src/plugins/define-integration.js +18 -17
  198. package/src/plugins/eco-component-meta-plugin.js +387 -145
  199. package/src/plugins/foreign-jsx-override-plugin.js +49 -35
  200. package/src/plugins/integration-plugin.js +212 -203
  201. package/src/plugins/jsx-import-source.utils.js +16 -21
  202. package/src/plugins/processor.js +159 -149
  203. package/src/plugins/runtime-capability.js +1 -0
  204. package/src/plugins/source-transform.js +109 -79
  205. package/src/plugins/tsconfig-import-resolver.d.ts +17 -0
  206. package/src/plugins/tsconfig-import-resolver.js +218 -142
  207. package/src/route-renderer/README.md +12 -1
  208. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +143 -136
  209. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +33 -27
  210. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +173 -126
  211. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +165 -154
  212. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +329 -341
  213. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +33 -32
  214. package/src/route-renderer/orchestration/integration-renderer.d.ts +1 -0
  215. package/src/route-renderer/orchestration/integration-renderer.js +731 -750
  216. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +168 -172
  217. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +119 -131
  218. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +82 -91
  219. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +82 -76
  220. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +29 -31
  221. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +10 -6
  222. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +31 -28
  223. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +3 -0
  224. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +430 -413
  225. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +191 -212
  226. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +20 -24
  227. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +4 -0
  228. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +24 -24
  229. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +22 -24
  230. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +41 -34
  231. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +5 -0
  232. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +42 -22
  233. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +50 -48
  234. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +29 -32
  235. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +150 -156
  236. package/src/route-renderer/orchestration/string-markup-renderer.js +48 -51
  237. package/src/route-renderer/page-loading/component-dependency-collection.js +120 -124
  238. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  239. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  240. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +68 -54
  241. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  242. package/src/route-renderer/page-loading/lazy-trigger-planning.js +46 -36
  243. package/src/route-renderer/page-loading/module-declaration-aggregation.js +38 -31
  244. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  245. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  246. package/src/route-renderer/page-loading/page-module-loader.js +130 -124
  247. package/src/route-renderer/route-renderer.js +74 -76
  248. package/src/router/client/link-intent.js +55 -39
  249. package/src/router/client/link-intent.test.browser.js +49 -49
  250. package/src/router/client/link-navigation-policy.js +114 -93
  251. package/src/router/client/link-navigation-policy.test.browser.js +70 -80
  252. package/src/router/client/navigation-coordinator.js +235 -211
  253. package/src/router/server/route-registry.js +237 -242
  254. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -53
  255. package/src/services/assets/asset-processing-service/asset-processing.service.js +287 -303
  256. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  257. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  258. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
  259. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +106 -69
  260. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -53
  261. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +4 -6
  262. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +79 -80
  263. package/src/services/assets/asset-processing-service/index.js +8 -8
  264. package/src/services/assets/asset-processing-service/inline-content-script-body.js +22 -16
  265. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +21 -17
  266. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  267. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  268. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  269. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  270. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -117
  271. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  272. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +110 -115
  273. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -97
  274. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
  275. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +27 -29
  276. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +34 -40
  277. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +36 -35
  278. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +14 -16
  279. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -39
  280. package/src/services/assets/browser-bundle.service.js +52 -47
  281. package/src/services/cache/cache.types.js +5 -0
  282. package/src/services/cache/index.js +6 -7
  283. package/src/services/cache/memory-cache-store.js +101 -89
  284. package/src/services/cache/page-cache-service.js +156 -145
  285. package/src/services/cache/page-request-cache-coordinator.service.js +102 -102
  286. package/src/services/html/html-rewriter-provider.service.js +61 -61
  287. package/src/services/html/html-transformer.service.js +249 -266
  288. package/src/services/invalidation/development-invalidation.service.js +252 -241
  289. package/src/services/module-loading/app-module-loader.service.js +1 -0
  290. package/src/services/module-loading/app-server-module-transpiler.service.js +107 -101
  291. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  292. package/src/services/module-loading/module-loading-types.js +1 -0
  293. package/src/services/module-loading/page-module-import.service.js +235 -243
  294. package/src/services/module-loading/route-module-build-cache-registry.js +47 -33
  295. package/src/services/module-loading/route-module-build-cache.js +3 -38
  296. package/src/services/module-loading/route-module-build-cache.store.js +195 -200
  297. package/src/services/module-loading/route-module-build-manifest.js +61 -74
  298. package/src/services/module-loading/route-module-dependency-hasher.js +136 -110
  299. package/src/services/module-loading/server-module-transpiler.service.js +68 -62
  300. package/src/services/module-loading/source-module-support.js +15 -7
  301. package/src/services/runtime-state/dev-graph.service.js +165 -157
  302. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  303. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  304. package/src/services/validation/schema-validation-service.js +157 -95
  305. package/src/services/validation/standard-schema.types.js +1 -0
  306. package/src/services/validation/validate-standard-schema.js +13 -13
  307. package/src/static-site-generator/production-page-browser-graph-prebuild.js +35 -19
  308. package/src/static-site-generator/sitemap-routes.js +33 -28
  309. package/src/static-site-generator/sitemap.js +38 -29
  310. package/src/static-site-generator/static-build-invalidation.js +34 -56
  311. package/src/static-site-generator/static-export-context.js +1 -0
  312. package/src/static-site-generator/static-site-generator.js +517 -553
  313. package/src/types/internal-types.d.ts +19 -3
  314. package/src/types/internal-types.js +1 -0
  315. package/src/types/public-types.d.ts +16 -46
  316. package/src/types/public-types.js +1 -0
  317. package/src/utils/deep-merge.js +39 -26
  318. package/src/utils/ecopages-route-info.js +27 -23
  319. package/src/utils/hash.js +3 -6
  320. package/src/utils/html-escaping.js +21 -8
  321. package/src/utils/html.js +1 -4
  322. package/src/utils/invariant.js +11 -10
  323. package/src/utils/locals-utils.js +32 -22
  324. package/src/utils/parse-cli-args.js +73 -65
  325. package/src/utils/path-pattern.js +38 -23
  326. package/src/utils/path-utils.module.js +8 -11
  327. package/src/utils/resolve-entry-file.js +70 -38
  328. package/src/utils/resolve-work-dir.js +23 -27
  329. package/src/utils/runtime.js +24 -33
  330. package/src/utils/server-utils.module.js +60 -52
  331. package/src/utils/static-file-extensions.js +52 -46
  332. package/src/watchers/project-watcher-ignore.js +16 -15
  333. package/src/watchers/project-watcher.js +385 -366
  334. package/src/watchers/project-watcher.test-helpers.js +45 -50
  335. package/src/adapters/shared/hmr/hmr-entrypoint-registrar.d.ts +0 -56
  336. package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +0 -106
  337. package/src/build/cache/dev-browser-script-cache.d.ts +0 -34
  338. package/src/build/cache/dev-browser-script-cache.js +0 -90
@@ -1,171 +1,181 @@
1
- import { appLogger } from "../../global/app-logger.js";
2
- import { SharedApplicationAdapter } from "../shared/runtime/application-adapter.js";
3
- import { resolveRuntimeBinding, resolveStaticRuntimeMode } from "../shared/runtime/runtime-app-bootstrap.js";
4
- import { startupTrace } from "../../diagnostics/startup-trace.js";
5
- import { createBunServerAdapter } from "./server-adapter.js";
6
- import { BunRuntimeHost } from "./runtime-host.js";
7
- import { hostOwnsDevClient } from "../../dev/dev-client-ownership.js";
8
- import { resolveAppStartRoutes } from "../../utils/ecopages-route-info.js";
9
- class BunEcopagesApp extends SharedApplicationAdapter {
10
- serverAdapter;
11
- server = null;
12
- stopped = false;
13
- runtimeHost;
14
- constructor(options, dependencies) {
15
- super(options, "Bun");
16
- this.runtimeHost = dependencies.runtimeHost;
17
- }
18
- async fetch(request) {
19
- if (!this.serverAdapter) {
20
- this.serverAdapter = await this.initializeServerAdapter();
1
+ /**
2
+ * This file contains the implementation of the Bun application adapter for EcoPages.
3
+ * It extends the AbstractApplicationAdapter class and provides methods for handling
4
+ * HTTP requests, initializing the server adapter, and starting the Bun application server.
5
+ * The adapter is designed to work with the Bun runtime and provides a way to create
6
+ * EcoPages applications using Bun's features.
7
+ *
8
+ * @module EcopagesApp
9
+ */
10
+ import { appLogger } from '../../global/app-logger.js';
11
+ import { SharedApplicationAdapter } from '../shared/runtime/application-adapter.js';
12
+ import { resolveRuntimeBinding, resolveStaticRuntimeMode } from '../shared/runtime/runtime-app-bootstrap.js';
13
+ import { startupTrace } from '../../diagnostics/startup-trace.js';
14
+ import { createBunServerAdapter } from './server-adapter.js';
15
+ import { BunRuntimeHost } from './runtime-host.js';
16
+ import { hostOwnsDevClient } from '../../dev/dev-client-ownership.js';
17
+ import { resolveAppStartRoutes } from '../../utils/ecopages-route-info.js';
18
+ /**
19
+ * Bun-specific application adapter implementation
20
+ * This class extends the {@link AbstractApplicationAdapter}
21
+ * and provides methods for handling HTTP requests and managing the server.
22
+ */
23
+ export class BunEcopagesApp extends SharedApplicationAdapter {
24
+ serverAdapter;
25
+ server = null;
26
+ stopped = false;
27
+ runtimeHost;
28
+ constructor(options, dependencies) {
29
+ super(options, 'Bun');
30
+ this.runtimeHost = dependencies.runtimeHost;
21
31
  }
22
- await this.serverAdapter.completeInitialization(this.server);
23
- return this.serverAdapter.handleRequest(request);
24
- }
25
- async attachWebSocketUpgrades(httpServer, options) {
26
- if (!this.serverAdapter) {
27
- this.serverAdapter = await this.initializeServerAdapter();
32
+ async fetch(request) {
33
+ if (!this.serverAdapter) {
34
+ this.serverAdapter = await this.initializeServerAdapter();
35
+ }
36
+ await this.serverAdapter.completeInitialization(this.server);
37
+ return this.serverAdapter.handleRequest(request);
28
38
  }
29
- this.serverAdapter.attachUserWebSocketUpgrades(httpServer, options);
30
- }
31
- /**
32
- * Complete the initialization of the server adapter by processing dynamic routes
33
- * @param server The Bun server instance
34
- */
35
- async completeInitialization(server) {
36
- if (!this.serverAdapter) {
37
- throw new Error("Server adapter not initialized. Call start() first.");
39
+ async attachWebSocketUpgrades(httpServer, options) {
40
+ if (!this.serverAdapter) {
41
+ this.serverAdapter = await this.initializeServerAdapter();
42
+ }
43
+ this.serverAdapter.attachUserWebSocketUpgrades(httpServer, options);
38
44
  }
39
- await this.serverAdapter.completeInitialization(server);
40
- }
41
- /**
42
- * Initialize the Bun server adapter
43
- */
44
- async initializeServerAdapter() {
45
- const binding = resolveRuntimeBinding({
46
- cliArgs: this.cliArgs,
47
- serverOptions: this.serverOptions
48
- });
49
- return createBunServerAdapter({
50
- runtimeOrigin: binding.runtimeOrigin,
51
- appConfig: this.appConfig,
52
- apiHandlers: this.apiHandlers,
53
- staticRoutes: this.staticRoutes,
54
- errorHandler: this.errorHandler,
55
- websocketHandlers: this.websocketHandlers.size > 0 ? this.websocketHandlers : void 0,
56
- options: { watch: binding.watch },
57
- serveOptions: binding.serveOptions,
58
- hostOwnsDevClient: hostOwnsDevClient(this.runtimeOptions),
59
- deferRuntimeAssetSetup: resolveStaticRuntimeMode({
60
- appConfig: this.appConfig,
61
- cliArgs: this.cliArgs
62
- }).canBuildWithoutRuntimeServer,
63
- allowPortFallback: binding.allowPortFallback
64
- });
65
- }
66
- /**
67
- * Start the Bun application server
68
- * @param options Optional settings
69
- * @param options.autoCompleteInitialization Whether to automatically complete initialization with dynamic routes after server start (defaults to true)
70
- */
71
- async bootServer() {
72
- if (this.stopped) {
73
- this.serverAdapter = void 0;
74
- this.stopped = false;
75
- }
76
- if (!this.serverAdapter) {
77
- this.serverAdapter = await this.initializeServerAdapter();
78
- }
79
- const { dev, preview, build, force, serveOnly } = this.cliArgs;
80
- const staticRuntimeMode = resolveStaticRuntimeMode({
81
- appConfig: this.appConfig,
82
- cliArgs: this.cliArgs
83
- });
84
- if (preview && serveOnly) {
85
- const previewOrigin2 = await this.serverAdapter.servePreviewOnly();
86
- if (previewOrigin2) {
87
- await this.notifyListening(previewOrigin2);
88
- }
89
- return;
90
- }
91
- if (staticRuntimeMode.canBuildWithoutRuntimeServer) {
92
- appLogger.debugTime("Building static pages");
93
- const previewOrigin2 = await this.serverAdapter.buildStatic({ preview, force });
94
- appLogger.debugTimeEnd("Building static pages");
95
- if (preview && previewOrigin2) {
96
- await this.notifyListening(previewOrigin2);
97
- }
98
- if (build) {
99
- process.exit(0);
100
- }
101
- return;
45
+ /**
46
+ * Complete the initialization of the server adapter by processing dynamic routes
47
+ * @param server The Bun server instance
48
+ */
49
+ async completeInitialization(server) {
50
+ if (!this.serverAdapter) {
51
+ throw new Error('Server adapter not initialized. Call start() first.');
52
+ }
53
+ await this.serverAdapter.completeInitialization(server);
102
54
  }
103
- const enableHmr = dev || !preview && !build;
104
- const serverOptions = this.serverAdapter.getServerOptions({ enableHmr });
105
- const runtimeServerOptions = serverOptions;
106
- startupTrace.beginServerListen();
107
- this.server = await this.runtimeHost.start({
108
- serveOptions: runtimeServerOptions,
109
- handleRequest: async () => new Response(null, { status: 500 }),
110
- onError: async () => {
111
- }
112
- });
113
- await this.serverAdapter.completeInitialization(this.server).catch((error) => {
114
- appLogger.error(`Failed to complete initialization: ${error}`);
115
- });
116
- if (!this.server) {
117
- throw new Error("Server failed to start");
118
- }
119
- const runtimeOrigin = this.runtimeHost.getOrigin(
120
- this.server,
121
- runtimeServerOptions
122
- );
123
- let previewOrigin;
124
- if (build || preview) {
125
- appLogger.debugTime("Building static pages");
126
- previewOrigin = await this.serverAdapter.buildStatic({ preview, force });
127
- const buildRuntimeServer = this.server;
128
- this.server = null;
129
- await this.runtimeHost.stop(buildRuntimeServer, { force: true });
130
- appLogger.debugTimeEnd("Building static pages");
131
- if (build) {
132
- process.exit(0);
133
- }
134
- } else {
135
- await this.notifyListening(runtimeOrigin);
55
+ /**
56
+ * Initialize the Bun server adapter
57
+ */
58
+ async initializeServerAdapter() {
59
+ const binding = resolveRuntimeBinding({
60
+ cliArgs: this.cliArgs,
61
+ serverOptions: this.serverOptions,
62
+ });
63
+ return createBunServerAdapter({
64
+ runtimeOrigin: binding.runtimeOrigin,
65
+ appConfig: this.appConfig,
66
+ apiHandlers: this.apiHandlers,
67
+ staticRoutes: this.staticRoutes,
68
+ errorHandler: this.errorHandler,
69
+ websocketHandlers: this.websocketHandlers.size > 0 ? this.websocketHandlers : undefined,
70
+ options: { watch: binding.watch },
71
+ serveOptions: binding.serveOptions,
72
+ hostOwnsDevClient: hostOwnsDevClient(this.runtimeOptions),
73
+ deferRuntimeAssetSetup: resolveStaticRuntimeMode({
74
+ appConfig: this.appConfig,
75
+ cliArgs: this.cliArgs,
76
+ }).canBuildWithoutRuntimeServer,
77
+ allowPortFallback: binding.allowPortFallback,
78
+ });
136
79
  }
137
- if (preview && previewOrigin) {
138
- await this.notifyListening(previewOrigin);
80
+ /**
81
+ * Start the Bun application server
82
+ * @param options Optional settings
83
+ * @param options.autoCompleteInitialization Whether to automatically complete initialization with dynamic routes after server start (defaults to true)
84
+ */
85
+ async bootServer() {
86
+ if (this.stopped) {
87
+ this.serverAdapter = undefined;
88
+ this.stopped = false;
89
+ }
90
+ if (!this.serverAdapter) {
91
+ this.serverAdapter = await this.initializeServerAdapter();
92
+ }
93
+ const { dev, preview, build, force, serveOnly } = this.cliArgs;
94
+ const staticRuntimeMode = resolveStaticRuntimeMode({
95
+ appConfig: this.appConfig,
96
+ cliArgs: this.cliArgs,
97
+ });
98
+ if (preview && serveOnly) {
99
+ const previewOrigin = await this.serverAdapter.servePreviewOnly();
100
+ if (previewOrigin) {
101
+ await this.notifyListening(previewOrigin);
102
+ }
103
+ return;
104
+ }
105
+ if (staticRuntimeMode.canBuildWithoutRuntimeServer) {
106
+ appLogger.debugTime('Building static pages');
107
+ const previewOrigin = await this.serverAdapter.buildStatic({ preview, force });
108
+ appLogger.debugTimeEnd('Building static pages');
109
+ if (preview && previewOrigin) {
110
+ await this.notifyListening(previewOrigin);
111
+ }
112
+ if (build) {
113
+ process.exit(0);
114
+ }
115
+ return;
116
+ }
117
+ const enableHmr = dev || (!preview && !build);
118
+ const serverOptions = this.serverAdapter.getServerOptions({ enableHmr });
119
+ const runtimeServerOptions = serverOptions;
120
+ startupTrace.beginServerListen();
121
+ this.server = await this.runtimeHost.start({
122
+ serveOptions: runtimeServerOptions,
123
+ handleRequest: async () => new Response(null, { status: 500 }),
124
+ onError: async () => { },
125
+ });
126
+ await this.serverAdapter.completeInitialization(this.server).catch((error) => {
127
+ appLogger.error(`Failed to complete initialization: ${error}`);
128
+ });
129
+ if (!this.server) {
130
+ throw new Error('Server failed to start');
131
+ }
132
+ const runtimeOrigin = this.runtimeHost.getOrigin(this.server, runtimeServerOptions);
133
+ let previewOrigin;
134
+ if (build || preview) {
135
+ appLogger.debugTime('Building static pages');
136
+ previewOrigin = await this.serverAdapter.buildStatic({ preview, force });
137
+ const buildRuntimeServer = this.server;
138
+ this.server = null;
139
+ await this.runtimeHost.stop(buildRuntimeServer, { force: true });
140
+ appLogger.debugTimeEnd('Building static pages');
141
+ if (build) {
142
+ process.exit(0);
143
+ }
144
+ }
145
+ else {
146
+ await this.notifyListening(runtimeOrigin);
147
+ }
148
+ if (preview && previewOrigin) {
149
+ await this.notifyListening(previewOrigin);
150
+ }
151
+ return this.server ?? undefined;
139
152
  }
140
- return this.server ?? void 0;
141
- }
142
- async stop(force = true) {
143
- if (this.stopped) {
144
- return;
153
+ async stop(force = true) {
154
+ if (this.stopped) {
155
+ return;
156
+ }
157
+ if (this.server) {
158
+ const activeServer = this.server;
159
+ this.server = null;
160
+ await this.runtimeHost.stop(activeServer, { force });
161
+ }
162
+ if (this.serverAdapter) {
163
+ await this.serverAdapter.dispose();
164
+ }
165
+ this.stopped = true;
145
166
  }
146
- if (this.server) {
147
- const activeServer = this.server;
148
- this.server = null;
149
- await this.runtimeHost.stop(activeServer, { force });
167
+ async resolveAppRoutes() {
168
+ return resolveAppStartRoutes({
169
+ listStaticGenerationRoutes: this.serverAdapter?.listStaticGenerationRoutes,
170
+ runtimeOrigin: this.appConfig.baseUrl,
171
+ });
150
172
  }
151
- if (this.serverAdapter) {
152
- await this.serverAdapter.dispose();
153
- }
154
- this.stopped = true;
155
- }
156
- async resolveAppRoutes() {
157
- return resolveAppStartRoutes({
158
- listStaticGenerationRoutes: this.serverAdapter?.listStaticGenerationRoutes,
159
- runtimeOrigin: this.appConfig.baseUrl
160
- });
161
- }
162
173
  }
163
- async function createApp(options) {
164
- return new BunEcopagesApp(options, {
165
- runtimeHost: new BunRuntimeHost()
166
- });
174
+ /**
175
+ * Factory function to create a Bun application
176
+ */
177
+ export async function createApp(options) {
178
+ return new BunEcopagesApp(options, {
179
+ runtimeHost: new BunRuntimeHost(),
180
+ });
167
181
  }
168
- export {
169
- BunEcopagesApp,
170
- createApp
171
- };
@@ -1,58 +1,63 @@
1
- import { appLogger } from "../../global/app-logger.js";
2
- import {
3
- InMemoryEntrypointDependencyGraph
4
- } from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
5
- import { SharedHmrManager } from "../shared/hmr/shared-hmr-manager.js";
6
- class HmrManager extends SharedHmrManager {
7
- wsHandler;
8
- /**
9
- * Creates the Bun HMR manager around the shared HMR orchestration pipeline.
10
- *
11
- * @remarks
12
- * Bun delegates route watching, rebuild dispatch, and runtime bundle
13
- * generation to `SharedHmrManager`. The Bun subclass only supplies the
14
- * transport-specific dependency graph policy and websocket hook surface.
15
- */
16
- constructor({ appConfig, bridge }) {
17
- super({ appConfig, bridge });
18
- }
19
- /**
20
- * Reuses the shared in-memory dependency graph when possible and otherwise
21
- * creates the Bun-compatible default graph implementation.
22
- */
23
- createEntrypointDependencyGraph(existingEntrypointDependencyGraph) {
24
- return existingEntrypointDependencyGraph instanceof InMemoryEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new InMemoryEntrypointDependencyGraph();
25
- }
26
- /**
27
- * Returns the Bun websocket hooks that attach and detach live HMR subscribers.
28
- *
29
- * @remarks
30
- * `SharedHmrManager` stores the bridge behind the transport-agnostic
31
- * `IClientBridge` contract because most HMR coordination only needs broadcast
32
- * behavior. Bun connection lifecycle wiring is the point where that abstraction
33
- * intentionally narrows back to the concrete Bun bridge so websocket instances
34
- * can be tracked directly.
35
- */
36
- getWebSocketHandler() {
37
- const bridge = this.bridge;
38
- const open = (ws) => {
39
- bridge.subscribe(ws);
40
- appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${bridge.subscriberCount}`);
41
- };
42
- const close = (ws) => {
43
- bridge.unsubscribe(ws);
44
- appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${bridge.subscriberCount}`);
45
- };
46
- this.wsHandler = { open, close };
47
- return {
48
- open: this.wsHandler.open,
49
- close: this.wsHandler.close,
50
- message: (_ws, message) => {
51
- appLogger.debug("[HMR] Received message from client:", message);
52
- }
53
- };
54
- }
1
+ import { appLogger } from '../../global/app-logger.js';
2
+ import { InMemoryEntrypointDependencyGraph, } from '../../services/runtime-state/entrypoint-dependency-graph.service.js';
3
+ import { SharedHmrManager } from '../shared/hmr/shared-hmr-manager.js';
4
+ /**
5
+ * Bun development HMR manager.
6
+ *
7
+ * @remarks
8
+ * Bun shares the same public contract as the Node manager: page entrypoints are
9
+ * strict integration-owned registrations, while generic script assets use their
10
+ * own explicit registration path.
11
+ */
12
+ export class HmrManager extends SharedHmrManager {
13
+ wsHandler;
14
+ /**
15
+ * Creates the Bun HMR manager around the shared HMR orchestration pipeline.
16
+ *
17
+ * @remarks
18
+ * Bun delegates route watching, rebuild dispatch, and runtime bundle
19
+ * generation to `SharedHmrManager`. The Bun subclass only supplies the
20
+ * transport-specific dependency graph policy and websocket hook surface.
21
+ */
22
+ constructor({ appConfig, bridge }) {
23
+ super({ appConfig, bridge });
24
+ }
25
+ /**
26
+ * Reuses the shared in-memory dependency graph when possible and otherwise
27
+ * creates the Bun-compatible default graph implementation.
28
+ */
29
+ createEntrypointDependencyGraph(existingEntrypointDependencyGraph) {
30
+ return existingEntrypointDependencyGraph instanceof InMemoryEntrypointDependencyGraph
31
+ ? existingEntrypointDependencyGraph
32
+ : new InMemoryEntrypointDependencyGraph();
33
+ }
34
+ /**
35
+ * Returns the Bun websocket hooks that attach and detach live HMR subscribers.
36
+ *
37
+ * @remarks
38
+ * `SharedHmrManager` stores the bridge behind the transport-agnostic
39
+ * `IClientBridge` contract because most HMR coordination only needs broadcast
40
+ * behavior. Bun connection lifecycle wiring is the point where that abstraction
41
+ * intentionally narrows back to the concrete Bun bridge so websocket instances
42
+ * can be tracked directly.
43
+ */
44
+ getWebSocketHandler() {
45
+ const bridge = this.bridge;
46
+ const open = (ws) => {
47
+ bridge.subscribe(ws);
48
+ appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${bridge.subscriberCount}`);
49
+ };
50
+ const close = (ws) => {
51
+ bridge.unsubscribe(ws);
52
+ appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${bridge.subscriberCount}`);
53
+ };
54
+ this.wsHandler = { open, close };
55
+ return {
56
+ open: this.wsHandler.open,
57
+ close: this.wsHandler.close,
58
+ message: (_ws, message) => {
59
+ appLogger.debug('[HMR] Received message from client:', message);
60
+ },
61
+ };
62
+ }
55
63
  }
56
- export {
57
- HmrManager
58
- };
@@ -1,31 +1,2 @@
1
- import { BunEcopagesApp, createApp } from "./create-app.js";
2
- import {
3
- defineApiHandler,
4
- defineGroupHandler,
5
- defineGet,
6
- definePost,
7
- definePut,
8
- defineDelete,
9
- definePatch,
10
- defineOptions,
11
- defineHead,
12
- json,
13
- html,
14
- redirect
15
- } from "../shared/http/define-api-handler.js";
16
- export {
17
- BunEcopagesApp,
18
- createApp,
19
- defineApiHandler,
20
- defineDelete,
21
- defineGet,
22
- defineGroupHandler,
23
- defineHead,
24
- defineOptions,
25
- definePatch,
26
- definePost,
27
- definePut,
28
- html,
29
- json,
30
- redirect
31
- };
1
+ export { BunEcopagesApp, createApp } from './create-app.js';
2
+ export { defineApiHandler, defineGroupHandler, defineGet, definePost, definePut, defineDelete, definePatch, defineOptions, defineHead, json, html, redirect, } from '../shared/http/define-api-handler.js';
@@ -1,56 +1,63 @@
1
- import { getBunRuntime } from "../../utils/runtime.js";
2
- import { resolveServeRuntimeOrigin } from "../shared/runtime/runtime-app-bootstrap.js";
3
- class BunRuntimeHost {
4
- /**
5
- * Creates a Bun runtime host with an injectable runtime lookup.
6
- *
7
- * @remarks
8
- * Production code uses the default `getBunRuntime()` lookup. Tests may inject a
9
- * fake provider that either supplies a `serve()` implementation or returns
10
- * `null` to verify the runtime-required failure path.
11
- */
12
- constructor(runtimeProvider = () => getBunRuntime() ?? null) {
13
- this.runtimeProvider = runtimeProvider;
14
- }
15
- runtimeProvider;
16
- /**
17
- * Starts the Bun server using the already-composed serve options from the
18
- * shared application bootstrap.
19
- */
20
- async start(options) {
21
- const bun = this.runtimeProvider();
22
- if (!bun) {
23
- throw new Error("Bun runtime is required for the Bun adapter");
1
+ import { getBunRuntime } from '../../utils/runtime.js';
2
+ import { resolveServeRuntimeOrigin } from '../shared/runtime/runtime-app-bootstrap.js';
3
+ /**
4
+ * Bun runtime host that adapts the shared runtime lifecycle contract onto
5
+ * `Bun.serve()`.
6
+ *
7
+ * @remarks
8
+ * The injected runtime provider exists so tests and non-Bun call sites can
9
+ * construct the host without assuming `globalThis.Bun` is present. The provider
10
+ * returns `null` instead of `undefined` to keep that absence explicit at the
11
+ * host boundary.
12
+ */
13
+ export class BunRuntimeHost {
14
+ runtimeProvider;
15
+ /**
16
+ * Creates a Bun runtime host with an injectable runtime lookup.
17
+ *
18
+ * @remarks
19
+ * Production code uses the default `getBunRuntime()` lookup. Tests may inject a
20
+ * fake provider that either supplies a `serve()` implementation or returns
21
+ * `null` to verify the runtime-required failure path.
22
+ */
23
+ constructor(runtimeProvider = () => getBunRuntime() ?? null) {
24
+ this.runtimeProvider = runtimeProvider;
25
+ }
26
+ /**
27
+ * Starts the Bun server using the already-composed serve options from the
28
+ * shared application bootstrap.
29
+ */
30
+ async start(options) {
31
+ const bun = this.runtimeProvider();
32
+ if (!bun) {
33
+ throw new Error('Bun runtime is required for the Bun adapter');
34
+ }
35
+ return bun.serve(options.serveOptions);
36
+ }
37
+ /**
38
+ * Stops the active Bun server immediately.
39
+ *
40
+ * @remarks
41
+ * The shared runtime-host contract accepts optional stop options, but Bun's
42
+ * server API already models the shutdown behavior directly. This host always
43
+ * uses Bun's forceful stop path so preview and embedded runtime shutdowns do
44
+ * not linger on open connections.
45
+ */
46
+ async stop(server) {
47
+ server.stop(true);
48
+ }
49
+ /**
50
+ * Resolves the externally reported runtime origin from the active server.
51
+ *
52
+ * @remarks
53
+ * Bun may finalize the hostname or port differently from the requested serve
54
+ * options. This method prefers the live server binding and only falls back to
55
+ * the requested options when Bun leaves a field unset.
56
+ */
57
+ getOrigin(server, fallbackServeOptions) {
58
+ return resolveServeRuntimeOrigin({
59
+ hostname: server.hostname ?? fallbackServeOptions.hostname,
60
+ port: server.port ?? fallbackServeOptions.port,
61
+ });
24
62
  }
25
- return bun.serve(options.serveOptions);
26
- }
27
- /**
28
- * Stops the active Bun server immediately.
29
- *
30
- * @remarks
31
- * The shared runtime-host contract accepts optional stop options, but Bun's
32
- * server API already models the shutdown behavior directly. This host always
33
- * uses Bun's forceful stop path so preview and embedded runtime shutdowns do
34
- * not linger on open connections.
35
- */
36
- async stop(server) {
37
- server.stop(true);
38
- }
39
- /**
40
- * Resolves the externally reported runtime origin from the active server.
41
- *
42
- * @remarks
43
- * Bun may finalize the hostname or port differently from the requested serve
44
- * options. This method prefers the live server binding and only falls back to
45
- * the requested options when Bun leaves a field unset.
46
- */
47
- getOrigin(server, fallbackServeOptions) {
48
- return resolveServeRuntimeOrigin({
49
- hostname: server.hostname ?? fallbackServeOptions.hostname,
50
- port: server.port ?? fallbackServeOptions.port
51
- });
52
- }
53
63
  }
54
- export {
55
- BunRuntimeHost
56
- };
@@ -37,7 +37,6 @@ export interface BunServerAdapterParams {
37
37
  options?: {
38
38
  watch?: boolean;
39
39
  };
40
- delegateBrowserReloadToHost?: boolean;
41
40
  hostOwnsDevClient?: boolean;
42
41
  deferRuntimeAssetSetup?: boolean;
43
42
  allowPortFallback?: boolean;