@ecopages/core 0.2.0-alpha.8 → 0.2.1

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 (357) hide show
  1. package/CHANGELOG.md +18 -11
  2. package/README.md +23 -26
  3. package/package.json +76 -58
  4. package/src/adapters/README.md +2 -2
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +4 -12
  11. package/src/adapters/bun/create-app.js +4 -5
  12. package/src/adapters/bun/hmr-manager.d.ts +4 -4
  13. package/src/adapters/bun/hmr-manager.js +8 -8
  14. package/src/adapters/bun/index.d.ts +1 -1
  15. package/src/adapters/bun/index.js +2 -2
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +6 -5
  18. package/src/adapters/bun/server-lifecycle.d.ts +4 -4
  19. package/src/adapters/bun/server-lifecycle.js +2 -2
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +1 -5
  23. package/src/adapters/index.js +1 -7
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +2 -2
  28. package/src/adapters/node/node-hmr-manager.js +3 -3
  29. package/src/adapters/node/server-adapter.d.ts +4 -4
  30. package/src/adapters/node/server-adapter.js +13 -12
  31. package/src/adapters/node/static-content-server.d.ts +1 -1
  32. package/src/adapters/node/static-content-server.js +1 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  35. package/src/adapters/shared/explicit-static-route-matcher.d.ts +2 -2
  36. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
  37. package/src/adapters/shared/fs-server-response-factory.d.ts +2 -2
  38. package/src/adapters/shared/fs-server-response-factory.js +1 -1
  39. package/src/adapters/shared/fs-server-response-matcher.d.ts +1 -1
  40. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  41. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  42. package/src/adapters/shared/render-context.d.ts +2 -1
  43. package/src/adapters/shared/render-context.js +3 -1
  44. package/src/adapters/shared/runtime-bootstrap.d.ts +1 -1
  45. package/src/adapters/shared/runtime-bootstrap.js +1 -1
  46. package/src/adapters/shared/server-adapter.d.ts +1 -1
  47. package/src/adapters/shared/server-adapter.js +5 -1
  48. package/src/adapters/shared/server-route-handler.d.ts +4 -4
  49. package/src/adapters/shared/server-route-handler.js +3 -3
  50. package/src/adapters/shared/server-static-builder.d.ts +5 -5
  51. package/src/adapters/shared/server-static-builder.js +5 -4
  52. package/src/build/README.md +19 -13
  53. package/src/build/build-adapter.d.ts +67 -20
  54. package/src/build/build-adapter.js +420 -19
  55. package/src/build/dev-build-coordinator.d.ts +10 -12
  56. package/src/build/dev-build-coordinator.js +8 -15
  57. package/src/build/esbuild-build-adapter.d.ts +6 -0
  58. package/src/build/esbuild-build-adapter.js +94 -11
  59. package/src/build/runtime-build-executor.d.ts +5 -4
  60. package/src/build/runtime-build-executor.js +5 -3
  61. package/src/build/runtime-specifier-alias-plugin.js +19 -15
  62. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  63. package/src/build/runtime-specifier-aliases.js +95 -0
  64. package/src/config/README.md +5 -2
  65. package/src/config/config-builder.d.ts +25 -2
  66. package/src/config/config-builder.js +44 -7
  67. package/src/declarations.d.ts +1 -1
  68. package/src/dev/sc-server.d.ts +1 -1
  69. package/src/dev/sc-server.js +1 -1
  70. package/src/eco/eco.browser.d.ts +2 -0
  71. package/src/eco/eco.browser.js +83 -0
  72. package/src/eco/eco.js +19 -48
  73. package/src/eco/eco.types.d.ts +1 -1
  74. package/src/eco/eco.utils.d.ts +1 -40
  75. package/src/eco/eco.utils.js +5 -35
  76. package/src/eco/global-injector-map.d.ts +1 -1
  77. package/src/eco/lazy-injector-map.d.ts +1 -1
  78. package/src/hmr/hmr-strategy.d.ts +16 -13
  79. package/src/hmr/hmr-strategy.js +22 -7
  80. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  81. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  82. package/src/hmr/strategies/js-hmr-strategy.d.ts +2 -2
  83. package/src/hmr/strategies/js-hmr-strategy.js +2 -2
  84. package/src/index.browser.d.ts +2 -2
  85. package/src/index.browser.js +1 -1
  86. package/src/index.d.ts +3 -2
  87. package/src/index.js +15 -4
  88. package/src/integrations/ghtml/ghtml-renderer.d.ts +6 -1
  89. package/src/integrations/ghtml/ghtml-renderer.js +29 -28
  90. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -2
  91. package/src/integrations/ghtml/ghtml.plugin.js +2 -2
  92. package/src/plugins/README.md +1 -0
  93. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  94. package/src/plugins/eco-component-meta-plugin.js +26 -20
  95. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  96. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  97. package/src/plugins/integration-plugin.d.ts +99 -33
  98. package/src/plugins/integration-plugin.js +68 -21
  99. package/src/plugins/processor.d.ts +2 -2
  100. package/src/plugins/processor.js +2 -2
  101. package/src/plugins/source-transform.d.ts +46 -0
  102. package/src/plugins/source-transform.js +71 -0
  103. package/src/route-renderer/GRAPH.md +54 -84
  104. package/src/route-renderer/README.md +14 -20
  105. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  106. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  107. package/src/route-renderer/orchestration/integration-renderer.d.ts +233 -76
  108. package/src/route-renderer/orchestration/integration-renderer.js +500 -143
  109. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +93 -0
  110. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  111. package/src/route-renderer/orchestration/render-execution.service.d.ts +11 -71
  112. package/src/route-renderer/orchestration/render-execution.service.js +65 -80
  113. package/src/{eco/eco.utils.ts → route-renderer/orchestration/render-output.utils.d.ts} +10 -53
  114. package/src/route-renderer/orchestration/render-output.utils.js +65 -0
  115. package/src/route-renderer/orchestration/render-preparation.service.d.ts +2 -8
  116. package/src/route-renderer/orchestration/render-preparation.service.js +10 -17
  117. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  118. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  119. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  120. package/src/route-renderer/page-loading/dependency-resolver.js +10 -8
  121. package/src/route-renderer/page-loading/page-module-loader.d.ts +6 -4
  122. package/src/route-renderer/page-loading/page-module-loader.js +7 -5
  123. package/src/route-renderer/route-renderer.d.ts +5 -3
  124. package/src/route-renderer/route-renderer.js +13 -3
  125. package/src/router/README.md +79 -8
  126. package/src/router/client/navigation-coordinator.js +2 -2
  127. package/src/router/server/fs-router-scanner.d.ts +1 -1
  128. package/src/router/server/fs-router-scanner.js +6 -1
  129. package/src/router/server/fs-router.d.ts +1 -1
  130. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -3
  131. package/src/services/assets/asset-processing-service/asset-processing.service.js +6 -6
  132. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  133. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  134. package/src/services/assets/asset-processing-service/index.d.ts +5 -5
  135. package/src/services/assets/asset-processing-service/index.js +5 -5
  136. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  137. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  138. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  139. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +1 -1
  140. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +3 -3
  141. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +2 -2
  142. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  143. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  144. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +2 -2
  145. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +1 -1
  146. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  147. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +15 -3
  148. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +3 -3
  149. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +1 -1
  150. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
  151. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +1 -1
  152. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  153. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +1 -1
  154. package/src/services/assets/browser-bundle.service.d.ts +1 -1
  155. package/src/services/assets/browser-bundle.service.js +2 -2
  156. package/src/services/html/html-rewriter-provider.service.js +4 -1
  157. package/src/services/html/html-transformer.service.d.ts +2 -2
  158. package/src/services/html/html-transformer.service.js +4 -10
  159. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  160. package/src/services/invalidation/development-invalidation.service.js +1 -0
  161. package/src/services/module-loading/app-module-loader.service.d.ts +25 -0
  162. package/src/services/module-loading/app-module-loader.service.js +31 -0
  163. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  164. package/src/services/module-loading/app-server-module-transpiler.service.js +77 -2
  165. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  166. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  167. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  168. package/src/{adapters/node/bootstrap-dependency-resolver.d.ts → services/module-loading/node-bootstrap-plugin.d.ts} +2 -24
  169. package/src/{adapters/node/bootstrap-dependency-resolver.js → services/module-loading/node-bootstrap-plugin.js} +42 -22
  170. package/src/services/module-loading/page-module-import.service.d.ts +4 -0
  171. package/src/services/module-loading/page-module-import.service.js +38 -9
  172. package/src/services/module-loading/server-module-transpiler.service.d.ts +3 -0
  173. package/src/services/module-loading/server-module-transpiler.service.js +4 -1
  174. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  175. package/src/services/runtime-state/dev-graph.service.js +10 -10
  176. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  177. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +1 -1
  178. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  179. package/src/static-site-generator/static-site-generator.d.ts +2 -2
  180. package/src/static-site-generator/static-site-generator.js +1 -1
  181. package/src/{internal-types.d.ts → types/internal-types.d.ts} +24 -14
  182. package/src/{public-types.d.ts → types/public-types.d.ts} +30 -14
  183. package/src/types/public-types.js +0 -0
  184. package/src/utils/html-escaping.d.ts +7 -0
  185. package/src/utils/html-escaping.js +6 -0
  186. package/src/utils/locals-utils.d.ts +1 -1
  187. package/src/utils/parse-cli-args.d.ts +4 -1
  188. package/src/utils/parse-cli-args.js +16 -1
  189. package/src/utils/resolve-work-dir.js +1 -1
  190. package/src/watchers/project-watcher.d.ts +4 -4
  191. package/src/watchers/project-watcher.js +4 -10
  192. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  193. package/src/adapters/abstract/application-adapter.ts +0 -337
  194. package/src/adapters/abstract/router-adapter.ts +0 -30
  195. package/src/adapters/abstract/server-adapter.ts +0 -79
  196. package/src/adapters/bun/client-bridge.ts +0 -62
  197. package/src/adapters/bun/create-app.ts +0 -189
  198. package/src/adapters/bun/hmr-manager.ts +0 -409
  199. package/src/adapters/bun/index.ts +0 -2
  200. package/src/adapters/bun/server-adapter.ts +0 -499
  201. package/src/adapters/bun/server-lifecycle.ts +0 -124
  202. package/src/adapters/index.ts +0 -6
  203. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  204. package/src/adapters/node/create-app.ts +0 -179
  205. package/src/adapters/node/index.d.ts +0 -6
  206. package/src/adapters/node/index.js +0 -11
  207. package/src/adapters/node/index.ts +0 -16
  208. package/src/adapters/node/node-client-bridge.ts +0 -79
  209. package/src/adapters/node/node-hmr-manager.ts +0 -381
  210. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  211. package/src/adapters/node/runtime-adapter.js +0 -306
  212. package/src/adapters/node/runtime-adapter.ts +0 -439
  213. package/src/adapters/node/server-adapter.ts +0 -488
  214. package/src/adapters/node/static-content-server.ts +0 -239
  215. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  216. package/src/adapters/node/write-runtime-manifest.js +0 -12
  217. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  218. package/src/adapters/shared/api-response.ts +0 -104
  219. package/src/adapters/shared/application-adapter.ts +0 -199
  220. package/src/adapters/shared/define-api-handler.ts +0 -66
  221. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  222. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  223. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  224. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  225. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  226. package/src/adapters/shared/hmr-html-response.ts +0 -52
  227. package/src/adapters/shared/render-context.ts +0 -120
  228. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  229. package/src/adapters/shared/server-adapter.ts +0 -489
  230. package/src/adapters/shared/server-route-handler.ts +0 -153
  231. package/src/adapters/shared/server-static-builder.ts +0 -166
  232. package/src/build/build-adapter.ts +0 -361
  233. package/src/build/build-manifest.ts +0 -54
  234. package/src/build/build-types.ts +0 -83
  235. package/src/build/dev-build-coordinator.ts +0 -221
  236. package/src/build/esbuild-build-adapter.ts +0 -559
  237. package/src/build/runtime-build-executor.ts +0 -34
  238. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  239. package/src/config/config-builder.ts +0 -706
  240. package/src/constants.ts +0 -54
  241. package/src/create-app.ts +0 -87
  242. package/src/dev/sc-server.ts +0 -143
  243. package/src/eco/component-render-context.d.ts +0 -105
  244. package/src/eco/component-render-context.js +0 -87
  245. package/src/eco/component-render-context.ts +0 -224
  246. package/src/eco/eco.ts +0 -242
  247. package/src/eco/eco.types.ts +0 -221
  248. package/src/eco/global-injector-map.ts +0 -112
  249. package/src/eco/lazy-injector-map.ts +0 -120
  250. package/src/eco/module-dependencies.ts +0 -75
  251. package/src/errors/http-error.ts +0 -72
  252. package/src/errors/index.ts +0 -2
  253. package/src/errors/locals-access-error.ts +0 -7
  254. package/src/global/app-logger.ts +0 -4
  255. package/src/hmr/client/hmr-runtime.ts +0 -152
  256. package/src/hmr/hmr-strategy.ts +0 -172
  257. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  258. package/src/hmr/hmr.test.e2e.ts +0 -66
  259. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  260. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  261. package/src/index.browser.ts +0 -3
  262. package/src/index.ts +0 -5
  263. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  264. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  265. package/src/internal-types.ts +0 -232
  266. package/src/plugins/alias-resolver-plugin.ts +0 -63
  267. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  268. package/src/plugins/integration-plugin.ts +0 -226
  269. package/src/plugins/processor.ts +0 -240
  270. package/src/plugins/runtime-capability.ts +0 -14
  271. package/src/public-types.ts +0 -1317
  272. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  273. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  274. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  275. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  276. package/src/route-renderer/component-graph/component-graph.js +0 -72
  277. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  278. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  279. package/src/route-renderer/component-graph/component-marker.js +0 -46
  280. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  281. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  282. package/src/route-renderer/component-graph/component-reference.js +0 -19
  283. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  284. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  285. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  286. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  287. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  288. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  289. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  290. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  291. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  292. package/src/route-renderer/route-renderer.ts +0 -115
  293. package/src/router/client/link-intent.test.browser.ts +0 -51
  294. package/src/router/client/link-intent.ts +0 -92
  295. package/src/router/client/navigation-coordinator.ts +0 -433
  296. package/src/router/server/fs-router-scanner.ts +0 -219
  297. package/src/router/server/fs-router.ts +0 -122
  298. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  299. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  300. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  301. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  302. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  303. package/src/services/assets/asset-processing-service/index.ts +0 -5
  304. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  305. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  306. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  307. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  308. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  309. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  310. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  311. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  312. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  313. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  314. package/src/services/assets/browser-bundle.service.ts +0 -53
  315. package/src/services/cache/cache.types.ts +0 -126
  316. package/src/services/cache/index.ts +0 -18
  317. package/src/services/cache/memory-cache-store.ts +0 -130
  318. package/src/services/cache/page-cache-service.ts +0 -202
  319. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  320. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  321. package/src/services/html/html-transformer.service.ts +0 -279
  322. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  323. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  324. package/src/services/module-loading/page-module-import.service.ts +0 -200
  325. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  326. package/src/services/module-loading/server-loader.service.js +0 -32
  327. package/src/services/module-loading/server-loader.service.ts +0 -130
  328. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  329. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  330. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  331. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  332. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  333. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  334. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  335. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  336. package/src/services/validation/schema-validation-service.ts +0 -204
  337. package/src/services/validation/standard-schema.types.ts +0 -68
  338. package/src/static-site-generator/static-site-generator.ts +0 -462
  339. package/src/utils/css.d.ts +0 -1
  340. package/src/utils/css.js +0 -7
  341. package/src/utils/css.ts +0 -5
  342. package/src/utils/deep-merge.ts +0 -47
  343. package/src/utils/hash.ts +0 -5
  344. package/src/utils/html.ts +0 -1
  345. package/src/utils/invariant.ts +0 -15
  346. package/src/utils/locals-utils.ts +0 -37
  347. package/src/utils/parse-cli-args.ts +0 -83
  348. package/src/utils/path-utils.module.ts +0 -14
  349. package/src/utils/resolve-work-dir.ts +0 -45
  350. package/src/utils/runtime.ts +0 -44
  351. package/src/utils/server-utils.module.ts +0 -67
  352. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  353. package/src/watchers/project-watcher.ts +0 -363
  354. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  355. /package/src/{constants.js → config/constants.js} +0 -0
  356. /package/src/{internal-types.js → services/module-loading/module-loading-types.js} +0 -0
  357. /package/src/{public-types.js → types/internal-types.js} +0 -0
@@ -1,5 +1,5 @@
1
- export * from "./asset.factory";
2
- export * from "./asset-processing.service";
3
- export * from "./assets.types";
4
- export * from "./browser-runtime-asset.factory";
5
- export * from "./browser-runtime-entry.factory";
1
+ export * from "./asset.factory.js";
2
+ export * from "./asset-processing.service.js";
3
+ export * from "./assets.types.js";
4
+ export * from "./browser-runtime-asset.factory.js";
5
+ export * from "./browser-runtime-entry.factory.js";
@@ -1,5 +1,5 @@
1
- import type { IHmrManager } from '../../../internal-types';
2
- import type { AssetDefinition, ProcessedAsset } from './assets.types';
1
+ import type { IHmrManager } from '../../../types/internal-types.js';
2
+ import type { AssetDefinition, ProcessedAsset } from './assets.types.js';
3
3
  /**
4
4
  * Base interface for asset processors.
5
5
  * Processors transform asset definitions into processed assets.
@@ -1,5 +1,5 @@
1
- import type { AssetKind, AssetSource } from './assets.types';
2
- import type { BaseProcessor } from './processors/base/base-processor';
1
+ import type { AssetKind, AssetSource } from './assets.types.js';
2
+ import type { BaseProcessor } from './processors/base/base-processor.js';
3
3
  export declare class ProcessorRegistry {
4
4
  private processors;
5
5
  register(kind: AssetKind, variant: AssetSource, processor: BaseProcessor<any>): void;
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig } from '../../../../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../../../../types/internal-types.js';
2
2
  import type { BaseAsset, ProcessedAsset } from '../../assets.types.js';
3
3
  export declare abstract class BaseProcessor<T extends BaseAsset> {
4
4
  protected appConfig: EcoPagesAppConfig;
@@ -1,5 +1,5 @@
1
1
  import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../../../constants.js";
2
+ import { RESOLVED_ASSETS_DIR } from "../../../../../config/constants.js";
3
3
  import { rapidhash } from "../../../../../utils/hash.js";
4
4
  import { isDevelopmentRuntime, isProductionRuntime } from "../../../../../utils/runtime.js";
5
5
  import { fileSystem } from "@ecopages/file-system";
@@ -1,7 +1,7 @@
1
- import type { EcoPagesAppConfig } from '../../../../../internal-types';
1
+ import type { EcoPagesAppConfig } from '../../../../../types/internal-types.js';
2
2
  import type { EcoBuildPlugin } from '../../../../../build/build-types.js';
3
- import type { ScriptAsset } from '../../assets.types';
4
- import { BaseProcessor } from './base-processor';
3
+ import type { ScriptAsset } from '../../assets.types.js';
4
+ import { BaseProcessor } from './base-processor.js';
5
5
  export declare abstract class BaseScriptProcessor<T extends ScriptAsset> extends BaseProcessor<T> {
6
6
  private readonly browserBundleService;
7
7
  constructor({ appConfig }: {
@@ -1,8 +1,8 @@
1
- import { appLogger } from "../../../../../global/app-logger";
1
+ import { appLogger } from "../../../../../global/app-logger.js";
2
2
  import { getAppBrowserBuildPlugins } from "../../../../../build/build-adapter.js";
3
3
  import { fileSystem } from "@ecopages/file-system";
4
4
  import path from "node:path";
5
- import { BaseProcessor } from "./base-processor";
5
+ import { BaseProcessor } from "./base-processor.js";
6
6
  import { BrowserBundleService } from "../../../browser-bundle.service.js";
7
7
  class BaseScriptProcessor extends BaseProcessor {
8
8
  browserBundleService;
@@ -1,5 +1,5 @@
1
- export * from './script/content-script.processor';
2
- export * from './script/file-script.processor';
3
- export * from './script/node-module-script.processor';
4
- export * from './stylesheet/content-stylesheet.processor';
5
- export * from './stylesheet/file-stylesheet.processor';
1
+ export * from './script/content-script.processor.js';
2
+ export * from './script/file-script.processor.js';
3
+ export * from './script/node-module-script.processor.js';
4
+ export * from './stylesheet/content-stylesheet.processor.js';
5
+ export * from './stylesheet/file-stylesheet.processor.js';
@@ -1,5 +1,5 @@
1
- export * from "./script/content-script.processor";
2
- export * from "./script/file-script.processor";
3
- export * from "./script/node-module-script.processor";
4
- export * from "./stylesheet/content-stylesheet.processor";
5
- export * from "./stylesheet/file-stylesheet.processor";
1
+ export * from "./script/content-script.processor.js";
2
+ export * from "./script/file-script.processor.js";
3
+ export * from "./script/node-module-script.processor.js";
4
+ export * from "./stylesheet/content-stylesheet.processor.js";
5
+ export * from "./stylesheet/file-stylesheet.processor.js";
@@ -1,5 +1,5 @@
1
- import type { ContentScriptAsset, ProcessedAsset } from '../../assets.types';
2
- import { BaseScriptProcessor } from '../base/base-script-processor';
1
+ import type { ContentScriptAsset, ProcessedAsset } from '../../assets.types.js';
2
+ import { BaseScriptProcessor } from '../base/base-script-processor.js';
3
3
  export declare class ContentScriptProcessor extends BaseScriptProcessor<ContentScriptAsset> {
4
4
  process(dep: ContentScriptAsset): Promise<ProcessedAsset>;
5
5
  }
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
- import { BaseScriptProcessor } from "../base/base-script-processor";
3
+ import { BaseScriptProcessor } from "../base/base-script-processor.js";
4
4
  class ContentScriptProcessor extends BaseScriptProcessor {
5
5
  async process(dep) {
6
6
  const hash = this.generateHash(dep.content);
@@ -1,8 +1,9 @@
1
- import type { IHmrManager } from '../../../../../internal-types';
2
- import type { FileScriptAsset, ProcessedAsset } from '../../assets.types';
3
- import { BaseScriptProcessor } from '../base/base-script-processor';
1
+ import type { IHmrManager } from '../../../../../types/internal-types.js';
2
+ import type { FileScriptAsset, ProcessedAsset } from '../../assets.types.js';
3
+ import { BaseScriptProcessor } from '../base/base-script-processor.js';
4
4
  export declare class FileScriptProcessor extends BaseScriptProcessor<FileScriptAsset> {
5
5
  private hmrManager?;
6
+ private resolveHmrOutputFilepath;
6
7
  setHmrManager(hmrManager: IHmrManager): void;
7
8
  process(dep: FileScriptAsset): Promise<ProcessedAsset>;
8
9
  }
@@ -1,17 +1,29 @@
1
1
  import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../../../constants";
2
+ import { RESOLVED_ASSETS_DIR } from "../../../../../config/constants.js";
3
3
  import { fileSystem } from "@ecopages/file-system";
4
- import { BaseScriptProcessor } from "../base/base-script-processor";
4
+ import { BaseScriptProcessor } from "../base/base-script-processor.js";
5
5
  class FileScriptProcessor extends BaseScriptProcessor {
6
6
  hmrManager;
7
+ resolveHmrOutputFilepath(entrypointPath) {
8
+ if (!this.hmrManager || !("getDistDir" in this.hmrManager)) {
9
+ return void 0;
10
+ }
11
+ const getDistDir = this.hmrManager.getDistDir;
12
+ if (typeof getDistDir !== "function") {
13
+ return void 0;
14
+ }
15
+ const relativePathJs = path.relative(this.appConfig.absolutePaths.srcDir, entrypointPath).replace(/\.(tsx?|jsx?|mdx?)$/, ".js").replace(/\[([^\]]+)\]/g, "_$1_");
16
+ return path.join(getDistDir.call(this.hmrManager), relativePathJs);
17
+ }
7
18
  setHmrManager(hmrManager) {
8
19
  this.hmrManager = hmrManager;
9
20
  }
10
21
  async process(dep) {
11
22
  if (this.hmrManager?.isEnabled() && !dep.inline) {
12
23
  const outputUrl = await this.hmrManager.registerScriptEntrypoint(dep.filepath);
24
+ const outputFilepath = this.resolveHmrOutputFilepath(dep.filepath);
13
25
  return {
14
- filepath: dep.filepath,
26
+ filepath: outputFilepath ?? dep.filepath,
15
27
  srcUrl: outputUrl,
16
28
  kind: "script",
17
29
  position: dep.position,
@@ -1,7 +1,7 @@
1
- import type { NodeModuleScriptAsset } from '../../assets.types';
2
- import { BaseScriptProcessor } from '../base/base-script-processor';
1
+ import type { NodeModuleScriptAsset } from '../../assets.types.js';
2
+ import { BaseScriptProcessor } from '../base/base-script-processor.js';
3
3
  export declare class NodeModuleScriptProcessor extends BaseScriptProcessor<NodeModuleScriptAsset> {
4
- process(dep: NodeModuleScriptAsset): Promise<import("../../assets.types").ProcessedAsset>;
4
+ process(dep: NodeModuleScriptAsset): Promise<import("../../assets.types.js").ProcessedAsset>;
5
5
  private resolveModulePath;
6
6
  private resolveModulePathFallback;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
3
  import { getAppBuildAdapter } from "../../../../../build/build-adapter.js";
4
- import { BaseScriptProcessor } from "../base/base-script-processor";
4
+ import { BaseScriptProcessor } from "../base/base-script-processor.js";
5
5
  class NodeModuleScriptProcessor extends BaseScriptProcessor {
6
6
  async process(dep) {
7
7
  const modulePath = this.resolveModulePath(dep.importPath, this.appConfig.rootDir);
@@ -1,5 +1,5 @@
1
- import type { ContentStylesheetAsset, ProcessedAsset } from '../../assets.types';
2
- import { BaseProcessor } from '../base/base-processor';
1
+ import type { ContentStylesheetAsset, ProcessedAsset } from '../../assets.types.js';
2
+ import { BaseProcessor } from '../base/base-processor.js';
3
3
  export declare class ContentStylesheetProcessor extends BaseProcessor<ContentStylesheetAsset> {
4
4
  process(dep: ContentStylesheetAsset): Promise<ProcessedAsset>;
5
5
  }
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
- import { BaseProcessor } from "../base/base-processor";
3
+ import { BaseProcessor } from "../base/base-processor.js";
4
4
  class ContentStylesheetProcessor extends BaseProcessor {
5
5
  async process(dep) {
6
6
  const hash = this.generateHash(dep.content);
@@ -1,5 +1,5 @@
1
- import type { FileStylesheetAsset, ProcessedAsset } from '../../assets.types';
2
- import { BaseProcessor } from '../base/base-processor';
1
+ import type { FileStylesheetAsset, ProcessedAsset } from '../../assets.types.js';
2
+ import { BaseProcessor } from '../base/base-processor.js';
3
3
  export declare class FileStylesheetProcessor extends BaseProcessor<FileStylesheetAsset> {
4
4
  private static readonly PROCESSABLE_STYLESHEET_EXTENSIONS;
5
5
  getStyleContent: (srcUrl: string) => Buffer;
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileSystem } from "@ecopages/file-system";
3
- import { BaseProcessor } from "../base/base-processor";
3
+ import { BaseProcessor } from "../base/base-processor.js";
4
4
  class FileStylesheetProcessor extends BaseProcessor {
5
5
  static PROCESSABLE_STYLESHEET_EXTENSIONS = /* @__PURE__ */ new Set([".css", ".scss", ".sass", ".less"]);
6
6
  getStyleContent = (srcUrl) => {
@@ -1,5 +1,5 @@
1
1
  import type { BuildOptions, BuildResult, BuildTranspileProfile } from '../../build/build-adapter.js';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
3
  export type BrowserBundleOptions = Omit<BuildOptions, 'target' | 'format' | 'sourcemap'> & {
4
4
  profile: BuildTranspileProfile;
5
5
  };
@@ -1,4 +1,4 @@
1
- import { getAppBrowserBuildPlugins, getAppBuildExecutor, getTranspileOptions } from "../../build/build-adapter.js";
1
+ import { getAppBrowserBuildPlugins, getAppBuildExecutor, getAppTranspileOptions } from "../../build/build-adapter.js";
2
2
  import { mergeEcoBuildPlugins } from "../../build/build-manifest.js";
3
3
  class BrowserBundleService {
4
4
  appConfig;
@@ -22,7 +22,7 @@ class BrowserBundleService {
22
22
  const plugins = buildOptions.plugins;
23
23
  const request = {
24
24
  ...buildOptions,
25
- ...getTranspileOptions(profile),
25
+ ...getAppTranspileOptions(this.appConfig, profile),
26
26
  plugins: mergeEcoBuildPlugins(plugins, getAppBrowserBuildPlugins(this.appConfig))
27
27
  };
28
28
  return await getAppBuildExecutor(this.appConfig).build(request);
@@ -49,7 +49,10 @@ async function loadWorkerToolsHtmlRewriter() {
49
49
  return module.HTMLRewriter;
50
50
  } catch (primaryError) {
51
51
  try {
52
- const runtimeLocalModule = await import(new URL("../node_modules/@worker-tools/html-rewriter/base64.js", import.meta.url).href);
52
+ const runtimeLocalModule = await import(
53
+ /* @vite-ignore */
54
+ new URL("../node_modules/@worker-tools/html-rewriter/base64.js", import.meta.url).href
55
+ );
53
56
  return runtimeLocalModule.HTMLRewriter;
54
57
  } catch {
55
58
  const message = primaryError instanceof Error ? primaryError.message : String(primaryError);
@@ -1,5 +1,5 @@
1
- import type { ProcessedAsset } from '../assets/asset-processing-service/assets.types';
2
- import { type HtmlRewriterMode, type HtmlRewriterProvider } from './html-rewriter-provider.service';
1
+ import type { ProcessedAsset } from '../assets/asset-processing-service/assets.types.js';
2
+ import { type HtmlRewriterMode, type HtmlRewriterProvider } from './html-rewriter-provider.service.js';
3
3
  export interface HtmlTransformerServiceOptions {
4
4
  htmlRewriterMode?: HtmlRewriterMode;
5
5
  htmlRewriterProvider?: HtmlRewriterProvider;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DefaultHtmlRewriterProvider
3
- } from "./html-rewriter-provider.service";
3
+ } from "./html-rewriter-provider.service.js";
4
4
  class HtmlTransformerService {
5
5
  processedDependencies = [];
6
6
  htmlRewriterProvider;
@@ -163,22 +163,16 @@ class HtmlTransformerService {
163
163
  async transform(res) {
164
164
  const { head, body } = this.groupDependenciesByPosition();
165
165
  const htmlRewriter = await this.htmlRewriterProvider.createHtmlRewriter();
166
- const html = await res.text();
167
- const headers = new Headers(res.headers);
168
166
  if (htmlRewriter) {
169
167
  htmlRewriter.on("head", {
170
168
  element: (element) => this.appendDependencies(element, head)
171
169
  }).on("body", {
172
170
  element: (element) => this.appendDependencies(element, body)
173
171
  });
174
- return htmlRewriter.transform(
175
- new Response(html, {
176
- headers,
177
- status: res.status,
178
- statusText: res.statusText
179
- })
180
- );
172
+ return htmlRewriter.transform(res);
181
173
  }
174
+ const html = await res.text();
175
+ const headers = new Headers(res.headers);
182
176
  const withHeadDependencies = this.injectBeforeClosingTag(html, "head", this.buildDependencyTags(head));
183
177
  const transformedHtml = this.injectBeforeClosingTag(
184
178
  withHeadDependencies,
@@ -1,4 +1,4 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
2
  export type DevelopmentInvalidationCategory = 'public-asset' | 'additional-watch' | 'include-source' | 'route-source' | 'processor-owned-asset' | 'server-source' | 'other';
3
3
  /**
4
4
  * Framework-owned invalidation plan for one changed file.
@@ -16,6 +16,7 @@ class DevelopmentInvalidationService {
16
16
  */
17
17
  invalidateServerModules(changedFiles) {
18
18
  getAppServerInvalidationState(this.appConfig).invalidateServerModules(changedFiles);
19
+ this.appConfig.runtime?.appModuleLoader?.invalidateDevelopmentGraph();
19
20
  }
20
21
  /**
21
22
  * Resets runtime-owned graph state and invalidates server modules.
@@ -0,0 +1,25 @@
1
+ import { PageModuleImportService, type PageModuleImportDependencies, type PageModuleImportOptions } from './page-module-import.service.js';
2
+ import type { BuildExecutor } from '../../build/build-adapter.js';
3
+ export type AppModuleLoaderOwner = 'bun' | 'host';
4
+ export interface AppModuleLoader {
5
+ readonly owner: AppModuleLoaderOwner;
6
+ importModule<T = unknown>(options: PageModuleImportOptions): Promise<T>;
7
+ invalidateDevelopmentGraph(): void;
8
+ }
9
+ export type AppModuleLoaderOptions = {
10
+ dependencies?: Partial<PageModuleImportDependencies>;
11
+ getBuildExecutor?: () => BuildExecutor | undefined;
12
+ getOwner?: () => AppModuleLoaderOwner;
13
+ getInvalidationVersion?: () => number | undefined;
14
+ pageModuleImportService?: PageModuleImportService;
15
+ };
16
+ export declare class RuntimeAppModuleLoader implements AppModuleLoader {
17
+ private readonly pageModuleImportService;
18
+ private readonly getBuildExecutorValue;
19
+ private readonly getOwnerValue;
20
+ private readonly getInvalidationVersionValue;
21
+ constructor(options?: AppModuleLoaderOptions);
22
+ get owner(): AppModuleLoaderOwner;
23
+ importModule<T = unknown>(options: PageModuleImportOptions): Promise<T>;
24
+ invalidateDevelopmentGraph(): void;
25
+ }
@@ -0,0 +1,31 @@
1
+ import {
2
+ PageModuleImportService
3
+ } from "./page-module-import.service.js";
4
+ class RuntimeAppModuleLoader {
5
+ pageModuleImportService;
6
+ getBuildExecutorValue;
7
+ getOwnerValue;
8
+ getInvalidationVersionValue;
9
+ constructor(options = {}) {
10
+ this.pageModuleImportService = options.pageModuleImportService ?? new PageModuleImportService(options.dependencies);
11
+ this.getBuildExecutorValue = options.getBuildExecutor ?? (() => void 0);
12
+ this.getOwnerValue = options.getOwner ?? (() => "bun");
13
+ this.getInvalidationVersionValue = options.getInvalidationVersion ?? (() => void 0);
14
+ }
15
+ get owner() {
16
+ return this.getOwnerValue();
17
+ }
18
+ async importModule(options) {
19
+ return await this.pageModuleImportService.importModule({
20
+ ...options,
21
+ buildExecutor: options.buildExecutor ?? this.getBuildExecutorValue(),
22
+ invalidationVersion: options.invalidationVersion ?? this.getInvalidationVersionValue()
23
+ });
24
+ }
25
+ invalidateDevelopmentGraph() {
26
+ this.pageModuleImportService.invalidateDevelopmentGraph();
27
+ }
28
+ }
29
+ export {
30
+ RuntimeAppModuleLoader
31
+ };
@@ -1,5 +1,13 @@
1
- import type { EcoPagesAppConfig } from '../../internal-types.js';
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import { type AppModuleLoader } from './app-module-loader.service.js';
3
+ import type { SourceModuleLoader } from './module-loading-types.js';
2
4
  import { ServerModuleTranspiler } from './server-module-transpiler.service.js';
5
+ export declare function shouldAppUseHostModuleLoader(appConfig: EcoPagesAppConfig, filePath: string): boolean;
6
+ export declare function getAppHostModuleLoader(appConfig: EcoPagesAppConfig): SourceModuleLoader | undefined;
7
+ export declare function setAppHostModuleLoader(appConfig: EcoPagesAppConfig, hostModuleLoader?: SourceModuleLoader): void;
8
+ export declare function createAppModuleLoader(appConfig: EcoPagesAppConfig): AppModuleLoader;
9
+ export declare function getAppModuleLoader(appConfig: EcoPagesAppConfig): AppModuleLoader;
10
+ export declare function setAppModuleLoader(appConfig: EcoPagesAppConfig, appModuleLoader: AppModuleLoader): void;
3
11
  /**
4
12
  * Creates the shared app-scoped server-module transpiler for one runtime
5
13
  * instance.
@@ -1,14 +1,83 @@
1
1
  import { getAppBuildExecutor } from "../../build/build-adapter.js";
2
- import { createAppNodeBootstrapPlugin } from "../../adapters/node/bootstrap-dependency-resolver.js";
2
+ import path from "node:path";
3
3
  import { DevelopmentInvalidationService } from "../invalidation/development-invalidation.service.js";
4
+ import {
5
+ RuntimeAppModuleLoader
6
+ } from "./app-module-loader.service.js";
7
+ import { createAppNodeBootstrapPlugin } from "./node-bootstrap-plugin.js";
4
8
  import { ServerModuleTranspiler } from "./server-module-transpiler.service.js";
9
+ function supportsHostSourceModuleLoading(filePath) {
10
+ const extension = path.extname(filePath);
11
+ return extension === ".js" || extension === ".jsx" || extension === ".ts" || extension === ".tsx" || extension === ".mjs" || extension === ".mts" || extension === ".cjs" || extension === ".cts";
12
+ }
13
+ function shouldAppUseHostModuleLoader(appConfig, filePath) {
14
+ if (appConfig.runtime?.hostModuleLoader) {
15
+ return supportsHostSourceModuleLoading(filePath);
16
+ }
17
+ const normalizedFilePath = path.normalize(filePath);
18
+ const frameworkOwnedDirectories = [
19
+ appConfig.absolutePaths.pagesDir,
20
+ appConfig.absolutePaths.includesDir,
21
+ appConfig.absolutePaths.layoutsDir,
22
+ appConfig.absolutePaths.componentsDir
23
+ ].map((directoryPath) => path.normalize(directoryPath));
24
+ const isFrameworkOwnedModule = frameworkOwnedDirectories.some((directoryPath) => {
25
+ return normalizedFilePath === directoryPath || normalizedFilePath.startsWith(`${directoryPath}${path.sep}`);
26
+ });
27
+ const isConfiguredTemplateModule = appConfig.templatesExt.some(
28
+ (extension) => normalizedFilePath.endsWith(extension)
29
+ );
30
+ return !(isFrameworkOwnedModule && isConfiguredTemplateModule);
31
+ }
32
+ function getAppHostModuleLoader(appConfig) {
33
+ return appConfig.runtime?.hostModuleLoader;
34
+ }
35
+ function getAppModuleLoaderOwner(appConfig) {
36
+ return getAppHostModuleLoader(appConfig) ? "host" : "bun";
37
+ }
38
+ function setAppHostModuleLoader(appConfig, hostModuleLoader) {
39
+ appConfig.runtime = {
40
+ ...appConfig.runtime ?? {},
41
+ hostModuleLoader
42
+ };
43
+ }
44
+ function createAppModuleLoader(appConfig) {
45
+ const invalidationService = new DevelopmentInvalidationService(appConfig);
46
+ return new RuntimeAppModuleLoader({
47
+ dependencies: {
48
+ canLoadSourceModuleFromHost: (filePath) => shouldAppUseHostModuleLoader(appConfig, filePath),
49
+ getHostModuleLoader: () => getAppHostModuleLoader(appConfig)
50
+ },
51
+ getBuildExecutor: () => getAppBuildExecutor(appConfig),
52
+ getOwner: () => getAppModuleLoaderOwner(appConfig),
53
+ getInvalidationVersion: () => invalidationService.getServerModuleInvalidationVersion()
54
+ });
55
+ }
56
+ function getAppModuleLoader(appConfig) {
57
+ const existingModuleLoader = appConfig.runtime?.appModuleLoader;
58
+ if (existingModuleLoader) {
59
+ return existingModuleLoader;
60
+ }
61
+ const appModuleLoader = createAppModuleLoader(appConfig);
62
+ setAppModuleLoader(appConfig, appModuleLoader);
63
+ return appModuleLoader;
64
+ }
65
+ function setAppModuleLoader(appConfig, appModuleLoader) {
66
+ appConfig.runtime = {
67
+ ...appConfig.runtime ?? {},
68
+ appModuleLoader
69
+ };
70
+ }
5
71
  function createAppServerModuleTranspiler(appConfig) {
6
72
  const invalidationService = new DevelopmentInvalidationService(appConfig);
7
73
  return new ServerModuleTranspiler({
8
74
  rootDir: appConfig.rootDir,
9
75
  getBuildExecutor: () => getAppBuildExecutor(appConfig),
76
+ getHostModuleLoader: () => getAppHostModuleLoader(appConfig),
77
+ canLoadSourceModuleFromHost: (filePath) => shouldAppUseHostModuleLoader(appConfig, filePath),
10
78
  getInvalidationVersion: () => invalidationService.getServerModuleInvalidationVersion(),
11
79
  invalidateModules: (changedFiles) => invalidationService.invalidateServerModules(changedFiles),
80
+ pageModuleImportService: getAppModuleLoader(appConfig),
12
81
  getDefaultPlugins: typeof Bun === "undefined" && appConfig.rootDir ? () => [createAppNodeBootstrapPlugin(appConfig)] : void 0
13
82
  });
14
83
  }
@@ -28,7 +97,13 @@ function setAppServerModuleTranspiler(appConfig, serverModuleTranspiler) {
28
97
  };
29
98
  }
30
99
  export {
100
+ createAppModuleLoader,
31
101
  createAppServerModuleTranspiler,
102
+ getAppHostModuleLoader,
103
+ getAppModuleLoader,
32
104
  getAppServerModuleTranspiler,
33
- setAppServerModuleTranspiler
105
+ setAppHostModuleLoader,
106
+ setAppModuleLoader,
107
+ setAppServerModuleTranspiler,
108
+ shouldAppUseHostModuleLoader
34
109
  };
@@ -0,0 +1,4 @@
1
+ import type { SourceModuleLoader } from './module-loading-types.js';
2
+ export declare function setHostModuleLoader(loader: SourceModuleLoader): void;
3
+ export declare function getHostModuleLoader(): SourceModuleLoader | undefined;
4
+ export declare function clearHostModuleLoader(): void;
@@ -0,0 +1,15 @@
1
+ let hostModuleLoader;
2
+ function setHostModuleLoader(loader) {
3
+ hostModuleLoader = loader;
4
+ }
5
+ function getHostModuleLoader() {
6
+ return hostModuleLoader;
7
+ }
8
+ function clearHostModuleLoader() {
9
+ hostModuleLoader = void 0;
10
+ }
11
+ export {
12
+ clearHostModuleLoader,
13
+ getHostModuleLoader,
14
+ setHostModuleLoader
15
+ };
@@ -0,0 +1,2 @@
1
+ export type SourceModuleLoader = (id: string) => Promise<unknown>;
2
+ export type SourceModuleLoaderFactory = () => SourceModuleLoader | undefined;
@@ -1,11 +1,5 @@
1
1
  import type { EcoBuildOnResolveArgs, EcoBuildOnResolveResult, EcoBuildPlugin } from '../../build/build-types.js';
2
- import type { EcoPagesAppConfig } from '../../internal-types.js';
3
- import type { NodeRuntimeManifest } from '../../services/runtime-manifest/node-runtime-manifest.service.js';
4
- /**
5
- * Returns the runtime-local node_modules directory used by the Node thin-host
6
- * bootstrap output.
7
- */
8
- export declare function getNodeRuntimeNodeModulesDir(manifest: NodeRuntimeManifest): string;
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
9
3
  /**
10
4
  * Returns the app-local node_modules directory used by framework-owned Node
11
5
  * bootstrap loads outside the thin-host manifest path.
@@ -18,27 +12,11 @@ export interface NodeBootstrapResolutionOptions {
18
12
  }
19
13
  /**
20
14
  * Builds the user-facing error for Bun-native imports that cannot run on the
21
- * Node thin-host bootstrap path.
15
+ * Node bootstrap transpile path.
22
16
  */
23
17
  export declare function getNodeUnsupportedBuiltinError(specifier: string, importer?: string): string;
24
- /**
25
- * Resolves one bare specifier encountered while bundling Node thin-host
26
- * bootstrap modules.
27
- *
28
- * Workspace-owned `@ecopages/*` packages stay in the bundle graph so Node does
29
- * not execute their source files directly. Third-party packages stay external,
30
- * but are linked into the runtime-local `node_modules` tree so the generated
31
- * bootstrap output resolves them from a deterministic location.
32
- */
33
18
  export declare function resolveNodeBootstrapDependency(args: Pick<EcoBuildOnResolveArgs, 'path' | 'importer'>, options: NodeBootstrapResolutionOptions): EcoBuildOnResolveResult | undefined;
34
- /**
35
- * Creates the bootstrap-time resolver plugin used by the Node thin-host
36
- * adapter for config and entry module loading.
37
- */
38
19
  export declare function createNodeBootstrapPlugin(options: NodeBootstrapResolutionOptions): EcoBuildPlugin;
39
- /**
40
- * Creates the standard Node bootstrap plugin for one finalized app config.
41
- */
42
20
  export declare function createAppNodeBootstrapPlugin(appConfig: Pick<EcoPagesAppConfig, 'rootDir' | 'workDir' | 'absolutePaths'>, options?: {
43
21
  preserveImportMetaPaths?: string[];
44
22
  }): EcoBuildPlugin;