@ecopages/core 0.2.0-alpha.2 → 0.2.0-alpha.21

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 (391) hide show
  1. package/CHANGELOG.md +26 -64
  2. package/README.md +212 -14
  3. package/package.json +116 -66
  4. package/src/adapters/README.md +39 -0
  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 +80 -21
  13. package/src/adapters/bun/hmr-manager.js +168 -62
  14. package/src/adapters/bun/index.d.ts +2 -3
  15. package/src/adapters/bun/index.js +3 -3
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +40 -34
  18. package/src/adapters/bun/server-lifecycle.d.ts +28 -17
  19. package/src/adapters/bun/server-lifecycle.js +34 -62
  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 +2 -6
  23. package/src/adapters/index.js +2 -8
  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 +89 -18
  28. package/src/adapters/node/node-hmr-manager.js +185 -95
  29. package/src/adapters/node/server-adapter.d.ts +6 -35
  30. package/src/adapters/node/server-adapter.js +44 -105
  31. package/src/adapters/node/static-content-server.d.ts +37 -1
  32. package/src/adapters/node/static-content-server.js +29 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/{define-api-handler.d.ts → 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/explicit-static-route-matcher.js +4 -1
  37. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
  38. package/src/adapters/shared/file-route-middleware-pipeline.js +1 -0
  39. package/src/adapters/shared/fs-server-response-factory.d.ts +2 -2
  40. package/src/adapters/shared/fs-server-response-factory.js +1 -1
  41. package/src/adapters/shared/fs-server-response-matcher.d.ts +8 -12
  42. package/src/adapters/shared/fs-server-response-matcher.js +10 -18
  43. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  44. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  45. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  46. package/src/adapters/shared/hmr-html-response.js +32 -0
  47. package/src/adapters/shared/render-context.d.ts +2 -1
  48. package/src/adapters/shared/render-context.js +6 -3
  49. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  50. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  51. package/src/adapters/shared/server-adapter.d.ts +13 -3
  52. package/src/adapters/shared/server-adapter.js +42 -5
  53. package/src/adapters/shared/server-route-handler.d.ts +4 -4
  54. package/src/adapters/shared/server-route-handler.js +6 -15
  55. package/src/adapters/shared/server-static-builder.d.ts +38 -6
  56. package/src/adapters/shared/server-static-builder.js +64 -10
  57. package/src/build/README.md +107 -0
  58. package/src/build/build-adapter.d.ts +168 -3
  59. package/src/build/build-adapter.js +604 -16
  60. package/src/build/build-manifest.d.ts +27 -0
  61. package/src/build/build-manifest.js +30 -0
  62. package/src/build/dev-build-coordinator.d.ts +72 -0
  63. package/src/build/dev-build-coordinator.js +154 -0
  64. package/src/build/esbuild-build-adapter.d.ts +15 -6
  65. package/src/build/esbuild-build-adapter.js +189 -74
  66. package/src/build/runtime-build-executor.d.ts +14 -0
  67. package/src/build/runtime-build-executor.js +22 -0
  68. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  69. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  70. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  71. package/src/build/runtime-specifier-aliases.js +95 -0
  72. package/src/config/README.md +36 -0
  73. package/src/config/config-builder.d.ts +52 -27
  74. package/src/config/config-builder.js +260 -49
  75. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  76. package/src/{constants.js → config/constants.js} +4 -0
  77. package/src/declarations.d.ts +19 -14
  78. package/src/dev/sc-server.d.ts +1 -1
  79. package/src/dev/sc-server.js +1 -1
  80. package/src/eco/README.md +70 -16
  81. package/src/eco/eco.browser.d.ts +2 -0
  82. package/src/eco/eco.browser.js +83 -0
  83. package/src/eco/eco.js +32 -57
  84. package/src/eco/eco.types.d.ts +12 -4
  85. package/src/eco/eco.utils.d.ts +1 -40
  86. package/src/eco/eco.utils.js +5 -35
  87. package/src/eco/global-injector-map.d.ts +1 -1
  88. package/src/eco/lazy-injector-map.d.ts +1 -1
  89. package/src/hmr/README.md +26 -0
  90. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  91. package/src/hmr/client/hmr-runtime.js +30 -7
  92. package/src/hmr/hmr-strategy.d.ts +16 -13
  93. package/src/hmr/hmr-strategy.js +22 -7
  94. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  95. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  96. package/src/hmr/hmr.test.e2e.js +26 -33
  97. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  98. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  99. package/src/hmr/strategies/js-hmr-strategy.d.ts +46 -43
  100. package/src/hmr/strategies/js-hmr-strategy.js +72 -73
  101. package/src/index.browser.d.ts +2 -2
  102. package/src/index.browser.js +1 -1
  103. package/src/index.d.ts +4 -3
  104. package/src/index.js +16 -5
  105. package/src/integrations/ghtml/ghtml-renderer.d.ts +7 -2
  106. package/src/integrations/ghtml/ghtml-renderer.js +33 -30
  107. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  108. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  109. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  110. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  111. package/src/plugins/README.md +35 -0
  112. package/src/plugins/alias-resolver-plugin.js +17 -3
  113. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  114. package/src/plugins/eco-component-meta-plugin.js +27 -21
  115. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  116. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  117. package/src/plugins/integration-plugin.d.ts +145 -28
  118. package/src/plugins/integration-plugin.js +109 -13
  119. package/src/plugins/processor.d.ts +15 -2
  120. package/src/plugins/processor.js +16 -2
  121. package/src/plugins/runtime-capability.d.ts +9 -0
  122. package/src/plugins/source-transform.d.ts +46 -0
  123. package/src/plugins/source-transform.js +71 -0
  124. package/src/route-renderer/GRAPH.md +64 -98
  125. package/src/route-renderer/README.md +67 -46
  126. package/src/route-renderer/orchestration/boundary-planning.service.d.ts +25 -0
  127. package/src/route-renderer/orchestration/boundary-planning.service.js +97 -0
  128. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  129. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  130. package/src/route-renderer/orchestration/integration-renderer.d.ts +554 -0
  131. package/src/route-renderer/orchestration/integration-renderer.js +957 -0
  132. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +89 -0
  133. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  134. package/src/route-renderer/orchestration/render-execution.service.d.ts +43 -0
  135. package/src/route-renderer/orchestration/render-execution.service.js +106 -0
  136. package/src/{eco/eco.utils.ts → route-renderer/orchestration/render-output.utils.d.ts} +10 -53
  137. package/src/route-renderer/orchestration/render-output.utils.js +65 -0
  138. package/src/route-renderer/{render-preparation.service.d.ts → orchestration/render-preparation.service.d.ts} +18 -10
  139. package/src/route-renderer/{render-preparation.service.js → orchestration/render-preparation.service.js} +115 -17
  140. package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +50 -0
  141. package/src/route-renderer/orchestration/route-shell-composer.service.js +81 -0
  142. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  143. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  144. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  145. package/src/route-renderer/{dependency-resolver.js → page-loading/dependency-resolver.js} +28 -12
  146. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  147. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  148. package/src/route-renderer/route-renderer.d.ts +45 -4
  149. package/src/route-renderer/route-renderer.js +38 -3
  150. package/src/router/README.md +97 -0
  151. package/src/router/client/link-intent.d.ts +53 -0
  152. package/src/router/client/link-intent.js +34 -0
  153. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  154. package/src/router/client/link-intent.test.browser.js +43 -0
  155. package/src/router/client/navigation-coordinator.d.ts +149 -0
  156. package/src/router/client/navigation-coordinator.js +215 -0
  157. package/src/router/{fs-router-scanner.d.ts → server/fs-router-scanner.d.ts} +3 -3
  158. package/src/router/{fs-router-scanner.js → server/fs-router-scanner.js} +14 -8
  159. package/src/router/{fs-router.d.ts → server/fs-router.d.ts} +1 -1
  160. package/src/router/{fs-router.js → server/fs-router.js} +1 -1
  161. package/src/services/README.md +29 -0
  162. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +120 -0
  163. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +91 -10
  164. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  165. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  166. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +2 -1
  167. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  168. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +48 -0
  169. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  170. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  171. package/src/services/assets/asset-processing-service/index.d.ts +5 -0
  172. package/src/services/assets/asset-processing-service/index.js +5 -0
  173. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  174. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  175. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  176. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +9 -4
  177. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.d.ts +5 -4
  178. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.js +15 -23
  179. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  180. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  181. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +2 -2
  182. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.js +1 -1
  183. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  184. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +16 -4
  185. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.d.ts +3 -3
  186. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.js +6 -5
  187. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
  188. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.js +1 -1
  189. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  190. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +5 -2
  191. package/src/services/assets/browser-bundle.service.d.ts +32 -0
  192. package/src/services/assets/browser-bundle.service.js +33 -0
  193. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  194. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  195. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  196. package/src/services/html/html-rewriter-provider.service.js +68 -0
  197. package/src/services/html/html-transformer.service.d.ts +77 -0
  198. package/src/services/html/html-transformer.service.js +215 -0
  199. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  200. package/src/services/invalidation/development-invalidation.service.js +190 -0
  201. package/src/services/module-loading/app-module-loader.service.d.ts +28 -0
  202. package/src/services/module-loading/app-module-loader.service.js +35 -0
  203. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  204. package/src/services/module-loading/app-server-module-transpiler.service.js +109 -0
  205. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  206. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  207. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  208. package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
  209. package/src/services/module-loading/node-bootstrap-plugin.js +204 -0
  210. package/src/services/module-loading/page-module-import.service.d.ts +76 -0
  211. package/src/services/module-loading/page-module-import.service.js +173 -0
  212. package/src/services/module-loading/server-module-transpiler.service.d.ts +72 -0
  213. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  214. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  215. package/src/services/runtime-state/dev-graph.service.js +162 -0
  216. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  217. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  218. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +69 -0
  219. package/src/services/runtime-state/runtime-specifier-registry.service.js +37 -0
  220. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  221. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  222. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  223. package/src/static-site-generator/README.md +26 -0
  224. package/src/static-site-generator/static-site-generator.d.ts +50 -3
  225. package/src/static-site-generator/static-site-generator.js +71 -5
  226. package/src/{internal-types.d.ts → types/internal-types.d.ts} +53 -22
  227. package/src/types/internal-types.js +0 -0
  228. package/src/{public-types.d.ts → types/public-types.d.ts} +146 -21
  229. package/src/types/public-types.js +0 -0
  230. package/src/utils/html-escaping.d.ts +7 -0
  231. package/src/utils/html-escaping.js +6 -0
  232. package/src/utils/locals-utils.d.ts +1 -1
  233. package/src/utils/parse-cli-args.d.ts +4 -1
  234. package/src/utils/parse-cli-args.js +16 -1
  235. package/src/utils/resolve-work-dir.d.ts +11 -0
  236. package/src/utils/resolve-work-dir.js +31 -0
  237. package/src/watchers/project-watcher.d.ts +40 -24
  238. package/src/watchers/project-watcher.js +129 -92
  239. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  240. package/src/watchers/project-watcher.test-helpers.js +1 -0
  241. package/src/adapters/abstract/application-adapter.ts +0 -337
  242. package/src/adapters/abstract/router-adapter.ts +0 -30
  243. package/src/adapters/abstract/server-adapter.ts +0 -79
  244. package/src/adapters/bun/client-bridge.ts +0 -62
  245. package/src/adapters/bun/create-app.ts +0 -189
  246. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  247. package/src/adapters/bun/define-api-handler.ts +0 -114
  248. package/src/adapters/bun/hmr-manager.ts +0 -281
  249. package/src/adapters/bun/index.ts +0 -3
  250. package/src/adapters/bun/server-adapter.ts +0 -492
  251. package/src/adapters/bun/server-lifecycle.ts +0 -154
  252. package/src/adapters/index.ts +0 -6
  253. package/src/adapters/node/create-app.ts +0 -179
  254. package/src/adapters/node/index.d.ts +0 -4
  255. package/src/adapters/node/index.js +0 -8
  256. package/src/adapters/node/index.ts +0 -9
  257. package/src/adapters/node/node-client-bridge.ts +0 -79
  258. package/src/adapters/node/node-hmr-manager.ts +0 -271
  259. package/src/adapters/node/server-adapter.ts +0 -561
  260. package/src/adapters/node/static-content-server.ts +0 -203
  261. package/src/adapters/shared/api-response.ts +0 -104
  262. package/src/adapters/shared/application-adapter.ts +0 -199
  263. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  264. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  265. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  266. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  267. package/src/adapters/shared/render-context.ts +0 -105
  268. package/src/adapters/shared/server-adapter.ts +0 -442
  269. package/src/adapters/shared/server-route-handler.ts +0 -166
  270. package/src/adapters/shared/server-static-builder.ts +0 -82
  271. package/src/build/build-adapter.ts +0 -132
  272. package/src/build/build-types.ts +0 -83
  273. package/src/build/esbuild-build-adapter.ts +0 -510
  274. package/src/config/config-builder.ts +0 -474
  275. package/src/constants.ts +0 -39
  276. package/src/create-app.ts +0 -87
  277. package/src/define-api-handler.js +0 -15
  278. package/src/define-api-handler.ts +0 -66
  279. package/src/dev/sc-server.ts +0 -143
  280. package/src/eco/component-render-context.d.ts +0 -105
  281. package/src/eco/component-render-context.js +0 -77
  282. package/src/eco/component-render-context.ts +0 -202
  283. package/src/eco/eco.ts +0 -221
  284. package/src/eco/eco.types.ts +0 -202
  285. package/src/eco/global-injector-map.ts +0 -112
  286. package/src/eco/lazy-injector-map.ts +0 -120
  287. package/src/eco/module-dependencies.ts +0 -75
  288. package/src/errors/http-error.ts +0 -72
  289. package/src/errors/index.ts +0 -2
  290. package/src/errors/locals-access-error.ts +0 -7
  291. package/src/global/app-logger.ts +0 -4
  292. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
  293. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  294. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  295. package/src/hmr/client/hmr-runtime.ts +0 -121
  296. package/src/hmr/hmr-strategy.ts +0 -172
  297. package/src/hmr/hmr.test.e2e.ts +0 -75
  298. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  299. package/src/hmr/strategies/js-hmr-strategy.ts +0 -308
  300. package/src/index.browser.ts +0 -3
  301. package/src/index.ts +0 -5
  302. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  303. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  304. package/src/internal-types.ts +0 -212
  305. package/src/plugins/alias-resolver-plugin.ts +0 -45
  306. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  307. package/src/plugins/integration-plugin.ts +0 -184
  308. package/src/plugins/processor.ts +0 -220
  309. package/src/public-types.ts +0 -1255
  310. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  311. package/src/route-renderer/component-graph-executor.js +0 -31
  312. package/src/route-renderer/component-graph-executor.ts +0 -84
  313. package/src/route-renderer/component-graph.d.ts +0 -42
  314. package/src/route-renderer/component-graph.js +0 -72
  315. package/src/route-renderer/component-graph.ts +0 -159
  316. package/src/route-renderer/component-marker.d.ts +0 -52
  317. package/src/route-renderer/component-marker.js +0 -46
  318. package/src/route-renderer/component-marker.ts +0 -117
  319. package/src/route-renderer/dependency-resolver.ts +0 -596
  320. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  321. package/src/route-renderer/html-post-processing.service.js +0 -86
  322. package/src/route-renderer/html-post-processing.service.ts +0 -103
  323. package/src/route-renderer/integration-renderer.d.ts +0 -339
  324. package/src/route-renderer/integration-renderer.js +0 -526
  325. package/src/route-renderer/integration-renderer.ts +0 -696
  326. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  327. package/src/route-renderer/marker-graph-resolver.js +0 -93
  328. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  329. package/src/route-renderer/page-module-loader.d.ts +0 -61
  330. package/src/route-renderer/page-module-loader.ts +0 -153
  331. package/src/route-renderer/render-execution.service.d.ts +0 -69
  332. package/src/route-renderer/render-execution.service.js +0 -91
  333. package/src/route-renderer/render-execution.service.ts +0 -158
  334. package/src/route-renderer/render-preparation.service.ts +0 -358
  335. package/src/route-renderer/route-renderer.ts +0 -80
  336. package/src/router/fs-router-scanner.ts +0 -217
  337. package/src/router/fs-router.ts +0 -122
  338. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  339. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  340. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  341. package/src/services/asset-processing-service/assets.types.ts +0 -112
  342. package/src/services/asset-processing-service/index.d.ts +0 -3
  343. package/src/services/asset-processing-service/index.js +0 -3
  344. package/src/services/asset-processing-service/index.ts +0 -3
  345. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  346. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  347. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  348. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  349. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  350. package/src/services/asset-processing-service/processors/index.js +0 -5
  351. package/src/services/asset-processing-service/processors/index.ts +0 -5
  352. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  353. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  354. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  355. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  356. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  357. package/src/services/cache/cache.types.ts +0 -126
  358. package/src/services/cache/index.ts +0 -18
  359. package/src/services/cache/memory-cache-store.ts +0 -130
  360. package/src/services/cache/page-cache-service.ts +0 -202
  361. package/src/services/html-transformer.service.d.ts +0 -50
  362. package/src/services/html-transformer.service.js +0 -163
  363. package/src/services/html-transformer.service.ts +0 -217
  364. package/src/services/page-module-import.service.d.ts +0 -37
  365. package/src/services/page-module-import.service.js +0 -88
  366. package/src/services/page-module-import.service.ts +0 -129
  367. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  368. package/src/services/schema-validation-service.ts +0 -204
  369. package/src/services/validation/standard-schema.types.ts +0 -68
  370. package/src/static-site-generator/static-site-generator.ts +0 -359
  371. package/src/utils/css.d.ts +0 -1
  372. package/src/utils/css.js +0 -7
  373. package/src/utils/css.ts +0 -5
  374. package/src/utils/deep-merge.ts +0 -47
  375. package/src/utils/hash.ts +0 -5
  376. package/src/utils/html.ts +0 -1
  377. package/src/utils/invariant.ts +0 -15
  378. package/src/utils/locals-utils.ts +0 -37
  379. package/src/utils/parse-cli-args.ts +0 -83
  380. package/src/utils/path-utils.module.ts +0 -14
  381. package/src/utils/runtime.ts +0 -44
  382. package/src/utils/server-utils.module.ts +0 -67
  383. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  384. package/src/watchers/project-watcher.ts +0 -306
  385. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  386. /package/src/{internal-types.js → plugins/runtime-capability.js} +0 -0
  387. /package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.js +0 -0
  388. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  389. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  390. /package/src/{public-types.js → services/module-loading/module-loading-types.js} +0 -0
  391. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,4 +1,4 @@
1
- import type { EcoBuildPlugin } from '../../build/build-types.js';
1
+ import type { EcoBuildPlugin } from '../../../build/build-types.js';
2
2
  export type AssetSource = 'content' | 'file' | 'node-module';
3
3
  export type AssetKind = 'script' | 'stylesheet';
4
4
  export type AssetPosition = 'head' | 'body';
@@ -13,6 +13,7 @@ export interface ScriptAsset extends BaseAsset {
13
13
  inline?: boolean;
14
14
  bundle?: boolean;
15
15
  bundleOptions?: {
16
+ define?: Record<string, string>;
16
17
  minify?: boolean;
17
18
  external?: string[];
18
19
  naming?: string;
@@ -0,0 +1,55 @@
1
+ import type { EcoBuildPlugin } from '../../../build/build-types.js';
2
+ import type { AssetDefinition } from './assets.types.js';
3
+ import { type BrowserRuntimeEntryModuleConfig } from './browser-runtime-entry.factory.js';
4
+ export declare const BROWSER_RUNTIME_SCRIPT_ATTRIBUTES: {
5
+ readonly type: "module";
6
+ readonly defer: "";
7
+ };
8
+ /**
9
+ * Builds the public vendor URL used for generated browser runtime assets.
10
+ */
11
+ export declare function buildBrowserRuntimeAssetUrl(fileName: string): string;
12
+ /**
13
+ * Declares a browser runtime script asset backed by one importable module.
14
+ *
15
+ * @remarks
16
+ * Runtime assets are emitted as excluded head scripts because integrations often
17
+ * need the bundler output and specifier registration without injecting the raw
18
+ * asset directly into HTML during dependency resolution.
19
+ */
20
+ export declare function createBrowserRuntimeScriptAsset(options: {
21
+ importPath: string;
22
+ name: string;
23
+ fileName: string;
24
+ bundleOptions?: {
25
+ define?: Record<string, string>;
26
+ minify?: boolean;
27
+ external?: string[];
28
+ naming?: string;
29
+ plugins?: EcoBuildPlugin[];
30
+ };
31
+ attributes?: Record<string, string>;
32
+ }): AssetDefinition;
33
+ /**
34
+ * Creates a browser runtime asset from a generated re-export entry module.
35
+ *
36
+ * @remarks
37
+ * This is the shared "module list -> generated entry file -> runtime asset"
38
+ * path used by integrations that need browser-side runtime bundles without
39
+ * owning bespoke entry-file generation logic.
40
+ */
41
+ export declare function createBrowserRuntimeModuleAsset(options: {
42
+ modules: BrowserRuntimeEntryModuleConfig[];
43
+ name: string;
44
+ fileName: string;
45
+ cacheDirName?: string;
46
+ rootDir?: string;
47
+ bundleOptions?: {
48
+ define?: Record<string, string>;
49
+ minify?: boolean;
50
+ external?: string[];
51
+ naming?: string;
52
+ plugins?: EcoBuildPlugin[];
53
+ };
54
+ attributes?: Record<string, string>;
55
+ }): AssetDefinition;
@@ -0,0 +1,48 @@
1
+ import { AssetFactory } from "./asset.factory.js";
2
+ import {
3
+ createBrowserRuntimeEntryModule
4
+ } from "./browser-runtime-entry.factory.js";
5
+ const BROWSER_RUNTIME_SCRIPT_ATTRIBUTES = {
6
+ type: "module",
7
+ defer: ""
8
+ };
9
+ function buildBrowserRuntimeAssetUrl(fileName) {
10
+ return `/${AssetFactory.RESOLVED_ASSETS_VENDORS_DIR}/${fileName}`;
11
+ }
12
+ function createBrowserRuntimeScriptAsset(options) {
13
+ return AssetFactory.createNodeModuleScript({
14
+ position: "head",
15
+ importPath: options.importPath,
16
+ name: options.name,
17
+ excludeFromHtml: true,
18
+ bundleOptions: {
19
+ naming: options.fileName,
20
+ ...options.bundleOptions
21
+ },
22
+ attributes: {
23
+ ...BROWSER_RUNTIME_SCRIPT_ATTRIBUTES,
24
+ ...options.attributes ?? {}
25
+ }
26
+ });
27
+ }
28
+ function createBrowserRuntimeModuleAsset(options) {
29
+ const importPath = createBrowserRuntimeEntryModule({
30
+ modules: options.modules,
31
+ fileName: `${options.name}-entry.mjs`,
32
+ rootDir: options.rootDir,
33
+ cacheDirName: options.cacheDirName
34
+ });
35
+ return createBrowserRuntimeScriptAsset({
36
+ importPath,
37
+ name: options.name,
38
+ fileName: options.fileName,
39
+ bundleOptions: options.bundleOptions,
40
+ attributes: options.attributes
41
+ });
42
+ }
43
+ export {
44
+ BROWSER_RUNTIME_SCRIPT_ATTRIBUTES,
45
+ buildBrowserRuntimeAssetUrl,
46
+ createBrowserRuntimeModuleAsset,
47
+ createBrowserRuntimeScriptAsset
48
+ };
@@ -0,0 +1,20 @@
1
+ export type BrowserRuntimeEntryModuleConfig = {
2
+ specifier: string;
3
+ defaultExport?: boolean;
4
+ };
5
+ /**
6
+ * Creates a generated ESM entry module that re-exports runtime modules through
7
+ * one stable file.
8
+ *
9
+ * @remarks
10
+ * Integrations use this helper when they need a browser runtime asset composed
11
+ * from multiple bare specifiers but do not want to own temporary file assembly
12
+ * logic themselves. The generated file lives under a cache directory inside the
13
+ * consuming app root so repeated runs can reuse the same location.
14
+ */
15
+ export declare function createBrowserRuntimeEntryModule(options: {
16
+ modules: BrowserRuntimeEntryModuleConfig[];
17
+ fileName: string;
18
+ rootDir?: string;
19
+ cacheDirName?: string;
20
+ }): string;
@@ -0,0 +1,41 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { createRequire } from "node:module";
4
+ function createBrowserRuntimeEntryModule(options) {
5
+ const rootDir = options.rootDir ?? process.cwd();
6
+ const artifactsDir = path.join(
7
+ rootDir,
8
+ "node_modules",
9
+ ".cache",
10
+ options.cacheDirName ?? "ecopages-browser-runtime"
11
+ );
12
+ fs.mkdirSync(artifactsDir, { recursive: true });
13
+ const requireFromRoot = createRequire(path.join(rootDir, "package.json"));
14
+ const seenExports = /* @__PURE__ */ new Set();
15
+ const statements = [];
16
+ for (const module of options.modules) {
17
+ if (module.defaultExport) {
18
+ statements.push(`import __ecopages_default_export__ from '${module.specifier}';`);
19
+ statements.push("export default __ecopages_default_export__;");
20
+ }
21
+ const exportNames = getModuleExportNames(module.specifier, requireFromRoot).filter(
22
+ (name) => !seenExports.has(name)
23
+ );
24
+ if (exportNames.length > 0) {
25
+ statements.push(`export { ${exportNames.join(", ")} } from '${module.specifier}';`);
26
+ for (const exportName of exportNames) {
27
+ seenExports.add(exportName);
28
+ }
29
+ }
30
+ }
31
+ const filePath = path.join(artifactsDir, options.fileName);
32
+ fs.writeFileSync(filePath, statements.join("\n"), "utf-8");
33
+ return filePath;
34
+ }
35
+ function getModuleExportNames(specifier, requireFromRoot) {
36
+ const moduleExports = requireFromRoot(specifier);
37
+ return Object.keys(moduleExports).filter((name) => name !== "__esModule" && name !== "default").filter((name) => /^[$A-Z_a-z][$\w]*$/.test(name)).sort();
38
+ }
39
+ export {
40
+ createBrowserRuntimeEntryModule
41
+ };
@@ -0,0 +1,5 @@
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';
@@ -0,0 +1,5 @@
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,7 +1,8 @@
1
1
  import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../../constants.js";
3
- import { rapidhash } from "../../../../utils/hash.js";
4
- import { isDevelopmentRuntime, isProductionRuntime } from "../../../../utils/runtime.js";
2
+ import { RESOLVED_ASSETS_DIR } from "../../../../../config/constants.js";
3
+ import { rapidhash } from "../../../../../utils/hash.js";
4
+ import { isDevelopmentRuntime, isProductionRuntime } from "../../../../../utils/runtime.js";
5
+ import { fileSystem } from "@ecopages/file-system";
5
6
  class BaseProcessor {
6
7
  appConfig;
7
8
  /**
@@ -41,7 +42,11 @@ class BaseProcessor {
41
42
  }
42
43
  getOrProcess(cacheKey, processFn) {
43
44
  if (this.hasCacheFile(cacheKey)) {
44
- return Promise.resolve(this.getCacheFile(cacheKey));
45
+ const cached = this.getCacheFile(cacheKey);
46
+ if (!cached.filepath || fileSystem.exists(cached.filepath)) {
47
+ return Promise.resolve(cached);
48
+ }
49
+ this.cache.delete(cacheKey);
45
50
  }
46
51
  const result = processFn();
47
52
  if (result instanceof Promise) {
@@ -1,8 +1,9 @@
1
- import type { EcoPagesAppConfig } from '../../../../internal-types';
2
- import type { EcoBuildPlugin } from '../../../../build/build-types.js';
3
- import type { ScriptAsset } from '../../assets.types';
4
- import { BaseProcessor } from './base-processor';
1
+ import type { EcoPagesAppConfig } from '../../../../../types/internal-types.js';
2
+ import type { EcoBuildPlugin } from '../../../../../build/build-types.js';
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
+ private readonly browserBundleService;
6
7
  constructor({ appConfig }: {
7
8
  appConfig: EcoPagesAppConfig;
8
9
  });
@@ -1,11 +1,14 @@
1
- import { appLogger } from "../../../../global/app-logger";
2
- import { defaultBuildAdapter } from "../../../../build/build-adapter.js";
1
+ import { appLogger } from "../../../../../global/app-logger.js";
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
+ import { BrowserBundleService } from "../../../browser-bundle.service.js";
6
7
  class BaseScriptProcessor extends BaseProcessor {
8
+ browserBundleService;
7
9
  constructor({ appConfig }) {
8
10
  super({ appConfig });
11
+ this.browserBundleService = new BrowserBundleService(appConfig);
9
12
  }
10
13
  shouldBundle(dep) {
11
14
  return dep.bundle !== false;
@@ -14,18 +17,7 @@ class BaseScriptProcessor extends BaseProcessor {
14
17
  return dep.bundleOptions || {};
15
18
  }
16
19
  collectBuildPlugins() {
17
- const plugins = [];
18
- if (this.appConfig.processors?.size) {
19
- for (const processor of this.appConfig.processors.values()) {
20
- if (processor.buildPlugins) {
21
- plugins.push(...processor.buildPlugins);
22
- }
23
- }
24
- }
25
- if (this.appConfig.loaders?.size) {
26
- plugins.push(...this.appConfig.loaders.values());
27
- }
28
- return plugins;
20
+ return getAppBrowserBuildPlugins(this.appConfig);
29
21
  }
30
22
  async bundleScript({
31
23
  entrypoint,
@@ -35,31 +27,31 @@ class BaseScriptProcessor extends BaseProcessor {
35
27
  }) {
36
28
  const buildPlugins = this.collectBuildPlugins();
37
29
  const allPlugins = additionalPlugins ? [...additionalPlugins, ...buildPlugins] : buildPlugins;
38
- const build = await defaultBuildAdapter.build({
30
+ const buildResult = await this.browserBundleService.bundle({
31
+ profile: "browser-script",
39
32
  entrypoints: [entrypoint],
40
33
  outdir,
41
34
  root: this.appConfig.rootDir,
42
- ...defaultBuildAdapter.getTranspileOptions("browser-script"),
43
35
  splitting: true,
44
36
  naming: "[name]-[hash].[ext]",
45
37
  plugins: allPlugins,
46
38
  ...rest
47
39
  });
48
- if (!build.success) {
49
- for (const log of build.logs) {
40
+ if (!buildResult.success) {
41
+ for (const log of buildResult.logs) {
50
42
  appLogger.debug(log.message, log);
51
43
  }
52
44
  }
53
45
  const entryBaseName = path.parse(entrypoint).name;
54
- const entryOutput = build.outputs.map((output) => output.path).find((outputPath) => path.basename(outputPath) === `${entryBaseName}.js`);
46
+ const entryOutput = buildResult.outputs.map((output) => output.path).find((outputPath) => path.basename(outputPath) === `${entryBaseName}.js`);
55
47
  if (entryOutput) {
56
48
  return entryOutput;
57
49
  }
58
- const nonVendorOutput = build.outputs.map((output) => output.path).find((outputPath) => !path.basename(outputPath).startsWith("vendors"));
50
+ const nonVendorOutput = buildResult.outputs.map((output) => output.path).find((outputPath) => !path.basename(outputPath).startsWith("vendors"));
59
51
  if (nonVendorOutput) {
60
52
  return nonVendorOutput;
61
53
  }
62
- const primaryOutput = build.outputs[0]?.path;
54
+ const primaryOutput = buildResult.outputs[0]?.path;
63
55
  if (primaryOutput) {
64
56
  return primaryOutput;
65
57
  }
@@ -71,7 +63,7 @@ class BaseScriptProcessor extends BaseProcessor {
71
63
  if (fileSystem.exists(fallbackOutput)) {
72
64
  return fallbackOutput;
73
65
  }
74
- const logMessage = build.logs.map((log) => log.message).join(" | ");
66
+ const logMessage = buildResult.logs.map((log) => log.message).join(" | ");
75
67
  throw new Error(`No build output generated for ${entrypoint}${logMessage ? `: ${logMessage}` : ""}`);
76
68
  }
77
69
  }
@@ -0,0 +1,5 @@
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';
@@ -0,0 +1,5 @@
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
- const outputUrl = await this.hmrManager.registerEntrypoint(dep.filepath);
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
- import { defaultBuildAdapter } from "../../../../build/build-adapter.js";
4
- import { BaseScriptProcessor } from "../base/base-script-processor";
3
+ import { getAppBuildAdapter } from "../../../../../build/build-adapter.js";
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);
@@ -24,12 +24,13 @@ class NodeModuleScriptProcessor extends BaseScriptProcessor {
24
24
  };
25
25
  }
26
26
  const outdir = path.join(this.getAssetsDir(), "vendors");
27
+ const bundlerOptions = this.getBundlerOptions(dep);
27
28
  const filePath = await this.bundleScript({
28
29
  entrypoint: modulePath,
29
30
  outdir,
30
31
  minify: this.isProduction,
31
- naming: dep.name ? `${dep.name}-[hash].[ext]` : "[name]-[hash].[ext]",
32
- ...this.getBundlerOptions(dep)
32
+ naming: bundlerOptions.naming ?? (dep.name ? `${dep.name}-[hash].[ext]` : "[name]-[hash].[ext]"),
33
+ ...bundlerOptions
33
34
  });
34
35
  return {
35
36
  filepath: filePath,
@@ -46,7 +47,7 @@ class NodeModuleScriptProcessor extends BaseScriptProcessor {
46
47
  return importPath;
47
48
  }
48
49
  try {
49
- return defaultBuildAdapter.resolve(importPath, rootDir);
50
+ return getAppBuildAdapter(this.appConfig).resolve(importPath, rootDir);
50
51
  } catch {
51
52
  return this.resolveModulePathFallback(importPath, rootDir);
52
53
  }
@@ -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) => {
@@ -41,7 +41,10 @@ class FileStylesheetProcessor extends BaseProcessor {
41
41
  const hash = this.generateHash(processedContent);
42
42
  const cachekey = this.buildCacheKey(dep.filepath, hash, dep);
43
43
  return this.getOrProcess(cachekey, () => {
44
- const filepath = path.join(this.getAssetsDir(), path.relative(this.appConfig.srcDir, dep.filepath));
44
+ const filepath = path.join(
45
+ this.getAssetsDir(),
46
+ path.relative(this.appConfig.absolutePaths.srcDir, dep.filepath)
47
+ );
45
48
  const outputBuffer = Buffer.from(processedContent);
46
49
  if (!dep.inline) {
47
50
  fileSystem.ensureDir(path.dirname(filepath));
@@ -0,0 +1,32 @@
1
+ import type { BuildOptions, BuildResult, BuildTranspileProfile } from '../../build/build-adapter.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
+ export type BrowserBundleOptions = Omit<BuildOptions, 'target' | 'format' | 'sourcemap'> & {
4
+ profile: BuildTranspileProfile;
5
+ };
6
+ export interface BrowserBundleExecutor {
7
+ bundle(options: BrowserBundleOptions): Promise<BuildResult>;
8
+ }
9
+ /**
10
+ * App-owned boundary for browser-oriented bundle work.
11
+ *
12
+ * @remarks
13
+ * This service owns the shared browser transpile defaults and ensures browser
14
+ * builds always run through the app-owned executor rather than direct backend
15
+ * calls scattered across HMR and asset processing paths.
16
+ */
17
+ export declare class BrowserBundleService implements BrowserBundleExecutor {
18
+ private readonly appConfig;
19
+ /**
20
+ * Creates the browser bundle boundary for one finalized app instance.
21
+ */
22
+ constructor(appConfig: EcoPagesAppConfig);
23
+ /**
24
+ * Runs one browser-targeted build through the app-owned executor.
25
+ *
26
+ * @remarks
27
+ * Browser defaults and app-owned browser build plugins are applied here so HMR
28
+ * and runtime asset generation do not have to recreate that policy at each call
29
+ * site.
30
+ */
31
+ bundle(options: BrowserBundleOptions): Promise<BuildResult>;
32
+ }
@@ -0,0 +1,33 @@
1
+ import { getAppBrowserBuildPlugins, getAppBuildExecutor, getAppTranspileOptions } from "../../build/build-adapter.js";
2
+ import { mergeEcoBuildPlugins } from "../../build/build-manifest.js";
3
+ class BrowserBundleService {
4
+ appConfig;
5
+ /**
6
+ * Creates the browser bundle boundary for one finalized app instance.
7
+ */
8
+ constructor(appConfig) {
9
+ this.appConfig = appConfig;
10
+ }
11
+ /**
12
+ * Runs one browser-targeted build through the app-owned executor.
13
+ *
14
+ * @remarks
15
+ * Browser defaults and app-owned browser build plugins are applied here so HMR
16
+ * and runtime asset generation do not have to recreate that policy at each call
17
+ * site.
18
+ */
19
+ async bundle(options) {
20
+ const { profile, ...rawBuildOptions } = options;
21
+ const buildOptions = rawBuildOptions;
22
+ const plugins = buildOptions.plugins;
23
+ const request = {
24
+ ...buildOptions,
25
+ ...getAppTranspileOptions(this.appConfig, profile),
26
+ plugins: mergeEcoBuildPlugins(plugins, getAppBrowserBuildPlugins(this.appConfig))
27
+ };
28
+ return await getAppBuildExecutor(this.appConfig).build(request);
29
+ }
30
+ }
31
+ export {
32
+ BrowserBundleService
33
+ };
@@ -1,5 +1,5 @@
1
- import { type PageCacheService } from './cache/page-cache-service.js';
2
- import type { CacheStrategy, RenderResult } from './cache/cache.types.js';
1
+ import { type PageCacheService } from './page-cache-service.js';
2
+ import type { CacheStrategy, RenderResult } from './cache.types.js';
3
3
  /**
4
4
  * Coordinates request-time page caching concerns around one render invocation.
5
5
  *
@@ -1,5 +1,7 @@
1
- import { getCacheControlHeader } from "./cache/page-cache-service.js";
1
+ import { getCacheControlHeader } from "./page-cache-service.js";
2
2
  class PageRequestCacheCoordinator {
3
+ cacheService;
4
+ defaultCacheStrategy;
3
5
  constructor(cacheService, defaultCacheStrategy) {
4
6
  this.cacheService = cacheService;
5
7
  this.defaultCacheStrategy = defaultCacheStrategy;