@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,320 +0,0 @@
1
- /**
2
- * JavaScript HMR Strategy
3
- *
4
- * Handles hot module replacement for JavaScript and TypeScript entrypoints.
5
- * Bundles files, inspects the emitted output, and decides whether the browser
6
- * can hot-accept the change or must reload.
7
- *
8
- * @module
9
- */
10
-
11
- import path from 'node:path';
12
- import { fileSystem } from '@ecopages/file-system';
13
- import { HmrStrategy, HmrStrategyType, type HmrAction } from '../hmr-strategy';
14
- import { appLogger } from '../../global/app-logger';
15
- import type { EcoBuildPlugin } from '../../build/build-types.ts';
16
- import type { BrowserBundleExecutor } from '../../services/assets/browser-bundle.service.ts';
17
- import type { EntrypointDependencyGraph } from '../../services/runtime-state/entrypoint-dependency-graph.service.ts';
18
-
19
- /**
20
- * Context interface providing access to HmrManager state.
21
- * Required for JsHmrStrategy to access registered entrypoints and configuration.
22
- */
23
- export interface JsHmrContext {
24
- /**
25
- * Map of registered entrypoints to their output URLs.
26
- */
27
- getWatchedFiles(): Map<string, string>;
28
-
29
- /**
30
- * Map of bare specifiers to vendor URLs for import resolution.
31
- */
32
- getSpecifierMap(): Map<string, string>;
33
-
34
- getEntrypointDependencyGraph(): EntrypointDependencyGraph;
35
-
36
- /**
37
- * Directory where HMR bundles are written.
38
- */
39
- getDistDir(): string;
40
-
41
- /**
42
- * Build plugins to use during bundling.
43
- */
44
- getPlugins(): EcoBuildPlugin[];
45
-
46
- /**
47
- * Absolute path to the source directory.
48
- */
49
- getSrcDir(): string;
50
-
51
- /**
52
- * Absolute path to the pages directory.
53
- */
54
- getPagesDir(): string;
55
-
56
- /**
57
- * Absolute path to the layouts directory.
58
- */
59
- getLayoutsDir(): string;
60
-
61
- /**
62
- * All configured route-template extensions across integrations.
63
- */
64
- getTemplateExtensions(): string[];
65
-
66
- /**
67
- * Browser bundler used to rebuild changed entrypoints.
68
- */
69
- getBrowserBundleService(): BrowserBundleExecutor;
70
-
71
- /**
72
- * Returns whether a watched entrypoint should be rebuilt by the generic JS strategy.
73
- *
74
- * @remarks
75
- * Integrations with higher-priority HMR strategies can use this to keep the
76
- * generic JS strategy from overwriting their emitted entrypoints when a shared
77
- * dependency changes.
78
- */
79
- shouldProcessEntrypoint?(entrypointPath: string): boolean;
80
- }
81
-
82
- /**
83
- * Strategy for handling JavaScript/TypeScript file changes with hot reloading.
84
- *
85
- * The processing steps are:
86
- * 1. Check if any entrypoints are registered
87
- * 2. Rebuild impacted entrypoints, or all watched entrypoints when no runtime
88
- * dependency graph is available
89
- * 3. Emit rebuilt entrypoint bundles for browser delivery
90
- * 4. Inject generic HMR boilerplate
91
- * 5. Broadcast update events for each rebuilt entrypoint
92
- *
93
- * @remarks
94
- * Node can provide dependency-graph metadata, so this strategy can rebuild only
95
- * the entrypoints impacted by a changed dependency. Runtimes that do not expose
96
- * that metadata intentionally keep the rebuild-all fallback.
97
- *
98
- * @see https://bun.sh/docs/runtime/transpiler
99
- *
100
- * @example
101
- * ```typescript
102
- * const context = {
103
- * getWatchedFiles: () => watchedFilesMap,
104
- * getSpecifierMap: () => specifierMap,
105
- * getDistDir: () => '/path/to/dist/_hmr',
106
- * getPlugins: () => [],
107
- * getSrcDir: () => '/path/to/src'
108
- * };
109
- * const strategy = new JsHmrStrategy(context);
110
- * ```
111
- */
112
- export class JsHmrStrategy extends HmrStrategy {
113
- readonly type = HmrStrategyType.SCRIPT;
114
- private context: JsHmrContext;
115
-
116
- constructor(context: JsHmrContext) {
117
- super();
118
- this.context = context;
119
- }
120
-
121
- /**
122
- * Determines if the file is a JS/TS file that could affect registered entrypoints.
123
- *
124
- * Matches if:
125
- * 1. There are registered entrypoints to rebuild
126
- * 2. The changed file is a JS/TS file in the src directory
127
- *
128
- * @param filePath - Absolute path to the changed file
129
- * @returns True if this file should trigger entrypoint rebuilds
130
- */
131
- matches(filePath: string): boolean {
132
- const watchedFiles = this.context.getWatchedFiles();
133
- const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
134
- const isInSrc = filePath.startsWith(this.context.getSrcDir());
135
- const isRouteTemplate =
136
- filePath.startsWith(this.context.getPagesDir()) || filePath.startsWith(this.context.getLayoutsDir());
137
- const isIntegrationTemplate =
138
- isRouteTemplate && this.context.getTemplateExtensions().some((extension) => filePath.endsWith(extension));
139
-
140
- if (watchedFiles.size === 0) {
141
- return false;
142
- }
143
-
144
- if (!isJsTs || !isInSrc) {
145
- return false;
146
- }
147
-
148
- if (isIntegrationTemplate) {
149
- return false;
150
- }
151
-
152
- if (watchedFiles.has(filePath)) {
153
- return true;
154
- }
155
-
156
- const entrypointDependencyGraph = this.context.getEntrypointDependencyGraph();
157
- if (entrypointDependencyGraph.supportsSelectiveInvalidation()) {
158
- return entrypointDependencyGraph.getDependencyEntrypoints(filePath).size > 0;
159
- }
160
-
161
- return true;
162
- }
163
-
164
- /**
165
- * Processes a file change by rebuilding affected entrypoints.
166
- *
167
- * @param filePath - Absolute path to the changed file
168
- *
169
- * @remarks
170
- * If runtime-specific dependency graph hooks are unavailable, this strategy
171
- * falls back to rebuilding all watched entrypoints.
172
- * When multiple entrypoints are impacted they are bundled in a single esbuild
173
- * invocation to share AST parsing and chunk deduplication.
174
- * @returns Action to broadcast update events
175
- */
176
- async process(filePath: string): Promise<HmrAction> {
177
- appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
178
- const watchedFiles = this.context.getWatchedFiles();
179
-
180
- if (watchedFiles.size === 0) {
181
- appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
182
- return { type: 'none' };
183
- }
184
-
185
- const dependencyHits = this.context.getEntrypointDependencyGraph().getDependencyEntrypoints(filePath);
186
- const hasDependencyHit = dependencyHits.size > 0;
187
- const impactedEntrypoints = hasDependencyHit
188
- ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint))
189
- : Array.from(watchedFiles.keys());
190
- const buildableEntrypoints = impactedEntrypoints.filter(
191
- (entrypoint) => this.context.shouldProcessEntrypoint?.(entrypoint) ?? true,
192
- );
193
-
194
- if (!hasDependencyHit) {
195
- appLogger.debug('[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints');
196
- }
197
-
198
- if (buildableEntrypoints.length === 0) {
199
- return { type: 'none' };
200
- }
201
-
202
- const buildResult = await this.bundleEntrypoints(buildableEntrypoints);
203
-
204
- if (!buildResult.success) {
205
- return { type: 'none' };
206
- }
207
-
208
- const updates: string[] = [];
209
- let reloadRequired = false;
210
-
211
- for (const entrypoint of buildableEntrypoints) {
212
- const outputUrl = watchedFiles.get(entrypoint);
213
- if (!outputUrl) continue;
214
-
215
- if (buildResult.dependencies) {
216
- const entrypointDeps = buildResult.dependencies.get(path.resolve(entrypoint)) ?? [];
217
- this.context.getEntrypointDependencyGraph().setEntrypointDependencies(entrypoint, entrypointDeps);
218
- }
219
-
220
- const srcDir = this.context.getSrcDir();
221
- const relativePath = path.relative(srcDir, entrypoint);
222
- const relativePathJs = relativePath.replace(/\.(tsx?|jsx?|mdx?)$/, '.js');
223
- const outputPath = path.join(this.context.getDistDir(), relativePathJs);
224
-
225
- const result = await this.processOutput(outputPath, outputUrl);
226
- if (result.success) {
227
- updates.push(outputUrl);
228
- if (result.requiresReload) {
229
- reloadRequired = true;
230
- }
231
- }
232
- }
233
-
234
- if (updates.length > 0) {
235
- if (reloadRequired) {
236
- appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
237
- return {
238
- type: 'broadcast',
239
- events: [{ type: 'reload' }],
240
- };
241
- }
242
-
243
- return {
244
- type: 'broadcast',
245
- events: updates.map((p) => ({
246
- type: 'update',
247
- path: p,
248
- timestamp: Date.now(),
249
- })),
250
- };
251
- }
252
-
253
- return { type: 'none' };
254
- }
255
-
256
- /**
257
- * Bundles one or more entrypoints in a single esbuild invocation.
258
- * Uses the source directory as the output base so that the directory structure
259
- * is preserved under the HMR dist folder.
260
- */
261
- private async bundleEntrypoints(
262
- entrypoints: string[],
263
- ): Promise<{ success: boolean; dependencies?: Map<string, string[]> }> {
264
- try {
265
- const result = await this.context.getBrowserBundleService().bundle({
266
- profile: 'hmr-entrypoint',
267
- entrypoints,
268
- outdir: this.context.getDistDir(),
269
- outbase: this.context.getSrcDir(),
270
- naming: '[dir]/[name]',
271
- plugins: this.context.getPlugins(),
272
- minify: false,
273
- });
274
-
275
- if (!result.success) {
276
- appLogger.error('[JsHmrStrategy] Batched build failed:', result.logs);
277
- return { success: false };
278
- }
279
-
280
- const dependencies = new Map<string, string[]>();
281
- if (result.dependencyGraph?.entrypoints) {
282
- for (const [entrypoint, deps] of Object.entries(result.dependencyGraph.entrypoints)) {
283
- dependencies.set(path.resolve(entrypoint), deps);
284
- }
285
- }
286
-
287
- return { success: true, dependencies };
288
- } catch (error) {
289
- appLogger.error('[JsHmrStrategy] Error in batched build:', error as Error);
290
- return { success: false };
291
- }
292
- }
293
-
294
- /**
295
- * Processes bundled output and determines whether the browser can hot-accept
296
- * the update or must fall back to a full reload.
297
- *
298
- * @param filepath - Path to the bundled output file
299
- * @param url - URL path for the bundled file
300
- * @returns True if processing was successful and update should be broadcast
301
- */
302
- private async processOutput(filepath: string, url: string): Promise<{ success: boolean; requiresReload: boolean }> {
303
- try {
304
- const code = await fileSystem.readFile(filepath);
305
-
306
- if (code.includes('/* [ecopages] hmr */')) {
307
- // Legacy safety: previously processed bundles already carry the marker.
308
- return { success: true, requiresReload: !code.includes('import.meta.hot.accept') };
309
- }
310
-
311
- appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
312
-
313
- const hasHmrAccept = code.includes('import.meta.hot.accept');
314
- return { success: true, requiresReload: !hasHmrAccept };
315
- } catch (error) {
316
- appLogger.error(`[JsHmrStrategy] Error processing output for ${url}:`, error as Error);
317
- return { success: false, requiresReload: false };
318
- }
319
- }
320
- }
@@ -1,3 +0,0 @@
1
- export type * from './public-types.ts';
2
- export type * from './eco/eco.types.ts';
3
- export { eco } from './eco/eco.ts';
package/src/index.ts DELETED
@@ -1,5 +0,0 @@
1
- export type * from './public-types.ts';
2
- export type * from './eco/eco.types.ts';
3
- export { eco } from './eco/eco.ts';
4
- export { EcopagesApp, createApp, type EcopagesAppOptions } from './create-app.ts';
5
- export { defineApiHandler, defineGroupHandler, type GroupHandler } from './adapters/shared/define-api-handler.ts';
@@ -1,96 +0,0 @@
1
- /**
2
- * This module contains the ghtml renderer
3
- * @module
4
- */
5
-
6
- import type {
7
- EcoComponent,
8
- EcoPagesElement,
9
- IntegrationRendererRenderOptions,
10
- PageMetadataProps,
11
- RouteRendererBody,
12
- } from '../../public-types.ts';
13
- import {
14
- IntegrationRenderer,
15
- type RenderToResponseContext,
16
- } from '../../route-renderer/orchestration/integration-renderer.ts';
17
- import { GHTML_PLUGIN_NAME } from './ghtml.plugin.ts';
18
-
19
- /**
20
- * A renderer for the ghtml integration.
21
- * It renders a page using the HtmlTemplate and Page components.
22
- */
23
- export class GhtmlRenderer extends IntegrationRenderer<EcoPagesElement> {
24
- name = GHTML_PLUGIN_NAME;
25
-
26
- async render({
27
- params,
28
- query,
29
- props,
30
- locals,
31
- pageLocals,
32
- metadata,
33
- Page,
34
- Layout,
35
- HtmlTemplate,
36
- }: IntegrationRendererRenderOptions): Promise<RouteRendererBody> {
37
- try {
38
- const pageContent = await Page({ params, query, ...props, locals: pageLocals });
39
- const children =
40
- Layout && typeof Layout === 'function' ? await Layout({ children: pageContent, locals }) : pageContent;
41
- const body = await HtmlTemplate({
42
- metadata,
43
- children,
44
- pageProps: props || {},
45
- });
46
-
47
- return this.DOC_TYPE + body;
48
- } catch (error) {
49
- throw this.createRenderError('Error rendering page', error);
50
- }
51
- }
52
-
53
- async renderToResponse<P = Record<string, unknown>>(
54
- view: EcoComponent<P>,
55
- props: P,
56
- ctx: RenderToResponseContext,
57
- ): Promise<Response> {
58
- try {
59
- const Layout = view.config?.layout as
60
- | ((props: { children: EcoPagesElement } & Record<string, unknown>) => Promise<EcoPagesElement>)
61
- | undefined;
62
-
63
- const viewFn = view as (props: P) => Promise<EcoPagesElement>;
64
- const pageContent = await viewFn(props);
65
-
66
- let body: string;
67
- if (ctx.partial) {
68
- body = pageContent as string;
69
- } else {
70
- const children = Layout ? await Layout({ children: pageContent }) : pageContent;
71
-
72
- const HtmlTemplate = await this.getHtmlTemplate();
73
- const metadata: PageMetadataProps = view.metadata
74
- ? await view.metadata({
75
- params: {},
76
- query: {},
77
- props: props as Record<string, unknown>,
78
- appConfig: this.appConfig,
79
- })
80
- : this.appConfig.defaultMetadata;
81
-
82
- body =
83
- this.DOC_TYPE +
84
- (await HtmlTemplate({
85
- metadata,
86
- children: children as EcoPagesElement,
87
- pageProps: props as Record<string, unknown>,
88
- }));
89
- }
90
-
91
- return this.createHtmlResponse(body, ctx);
92
- } catch (error) {
93
- throw this.createRenderError('Error rendering view', error);
94
- }
95
- }
96
- }
@@ -1,32 +0,0 @@
1
- import { IntegrationPlugin, type IntegrationPluginConfig } from '../../plugins/integration-plugin';
2
- import { GhtmlRenderer } from './ghtml-renderer';
3
-
4
- /**
5
- * The name of the ghtml plugin
6
- */
7
- export const GHTML_PLUGIN_NAME = 'ghtml';
8
-
9
- /**
10
- * The Ghtml plugin class
11
- * This plugin provides support for ghtml components in Ecopages
12
- */
13
- export class GhtmlPlugin extends IntegrationPlugin {
14
- renderer = GhtmlRenderer;
15
-
16
- constructor(options?: Omit<IntegrationPluginConfig, 'name'>) {
17
- super({
18
- name: GHTML_PLUGIN_NAME,
19
- extensions: ['.ghtml.ts', '.ghtml.tsx', '.ghtml'],
20
- ...options,
21
- });
22
- }
23
- }
24
-
25
- /**
26
- * Factory function to create a Ghtml plugin instance
27
- * @param options Configuration options for the Ghtml plugin
28
- * @returns A new GhtmlPlugin instance
29
- */
30
- export function ghtmlPlugin(options?: Omit<IntegrationPluginConfig, 'name'>): GhtmlPlugin {
31
- return new GhtmlPlugin(options);
32
- }
@@ -1,232 +0,0 @@
1
- import type { EcoBuildPlugin } from './build/build-types.ts';
2
- import type { AppBuildManifest } from './build/build-manifest.ts';
3
- import type { BuildAdapter, BuildExecutor } from './build/build-adapter.ts';
4
- import type { IntegrationPlugin } from './plugins/integration-plugin.ts';
5
- import type { Processor } from './plugins/processor.ts';
6
- import type { PageMetadataProps } from './public-types.ts';
7
- import type { FSRouter } from './router/server/fs-router.ts';
8
- import type { CacheConfig } from './services/cache/cache.types.ts';
9
- import type { DevGraphService } from './services/runtime-state/dev-graph.service.ts';
10
- import type { EntrypointDependencyGraph } from './services/runtime-state/entrypoint-dependency-graph.service.ts';
11
- import type { NodeRuntimeManifest } from './services/runtime-manifest/node-runtime-manifest.service.ts';
12
- import type { RuntimeSpecifierRegistry } from './services/runtime-state/runtime-specifier-registry.service.ts';
13
- import type { ServerInvalidationState } from './services/runtime-state/server-invalidation-state.service.ts';
14
- import type { ServerModuleTranspiler } from './services/module-loading/server-module-transpiler.service.ts';
15
-
16
- export interface RobotsPreference {
17
- /**
18
- * The user agent
19
- * If an empty array is provided, it will enable all paths for the user agent
20
- * If a path is provided, it will disallow the path for the user agent
21
- */
22
- [key: string]: string[];
23
- }
24
-
25
- /**
26
- * Represents the complete configuration object for EcoPages.
27
- */
28
- export type EcoPagesAppConfig = {
29
- /**
30
- * The base URL of the website, localhost or the domain
31
- */
32
- baseUrl: string;
33
- /**
34
- * The root directory of the project
35
- * @default "."
36
- */
37
- rootDir: string;
38
- /**
39
- * The root directory of the project
40
- * @default "src"
41
- */
42
- srcDir: string;
43
- /**
44
- * The directory where the public files are located
45
- * @default "public"
46
- */
47
- publicDir: string;
48
- /**
49
- * The directory where the pages are located
50
- * @default "pages"
51
- */
52
- pagesDir: string;
53
- /**
54
- * The directory where the includes templates are located
55
- * @default "includes"
56
- */
57
- includesDir: string;
58
- /**
59
- * The directory where the layouts are located
60
- * @default "layouts"
61
- */
62
- layoutsDir: string;
63
- /**
64
- * The directory where the output will be located
65
- * @default "dist"
66
- */
67
- distDir: string;
68
- /**
69
- * The directory where internal runtime and build artifacts are stored.
70
- *
71
- * @remarks
72
- * This directory is not intended for deployment. It owns transpiled server
73
- * modules, runtime manifests, and processor caches so `distDir` can remain a
74
- * clean export tree.
75
- *
76
- * @default ".eco"
77
- */
78
- workDir: string;
79
- /**
80
- * The templates extensions based on the integrations
81
- */
82
- templatesExt: string[];
83
- /**
84
- * The directory where the components are located
85
- * @default "components"
86
- */
87
- componentsDir: string;
88
- /**
89
- * The robots.txt configuration
90
- */
91
- robotsTxt: {
92
- /**
93
- * The robots preferences. The key is the user agent and the value is the disallowed paths.
94
- * @default { "*": [] }
95
- */
96
- preferences: RobotsPreference;
97
- };
98
- /** Additional paths to watch. Use this to monitor extra files. It is relative to the rootDir */
99
- additionalWatchPaths: string[];
100
- /**
101
- * @default { title: 'Ecopages', description: 'Ecopages' }
102
- */
103
- defaultMetadata: PageMetadataProps;
104
- /** Integrations plugins */
105
- integrations: IntegrationPlugin[];
106
- /** Integrations dependencies */
107
- integrationsDependencies: IntegrationDependencyConfig[];
108
- /** Derived Paths */
109
- absolutePaths: {
110
- config: string;
111
- componentsDir: string;
112
- distDir: string;
113
- workDir: string;
114
- includesDir: string;
115
- layoutsDir: string;
116
- pagesDir: string;
117
- projectDir: string;
118
- publicDir: string;
119
- srcDir: string;
120
- htmlTemplatePath: string;
121
- error404TemplatePath: string;
122
- };
123
- /**
124
- * The processors to be used in the app
125
- */
126
- processors: Map<string, Processor>;
127
- /**
128
- * Loaders to be used in the app, these are used to process the files when importing them
129
- */
130
- loaders: Map<string, EcoBuildPlugin>;
131
- /**
132
- * Cache configuration for ISR and page caching.
133
- * @default { store: 'memory', defaultStrategy: 'static', enabled: true }
134
- */
135
- cache?: CacheConfig;
136
- /**
137
- * Runtime-owned services attached after config construction.
138
- *
139
- * These values are internal implementation details used to thread per-app
140
- * executors and similar runtime state through the system without relying on
141
- * process-global registries.
142
- */
143
- runtime?: {
144
- buildAdapter?: BuildAdapter;
145
- buildManifest?: AppBuildManifest;
146
- buildExecutor?: BuildExecutor;
147
- devGraphService?: DevGraphService;
148
- entrypointDependencyGraph?: EntrypointDependencyGraph;
149
- nodeRuntimeManifest?: NodeRuntimeManifest;
150
- runtimeSpecifierRegistry?: RuntimeSpecifierRegistry;
151
- serverInvalidationState?: ServerInvalidationState;
152
- serverModuleTranspiler?: ServerModuleTranspiler;
153
- };
154
- /**
155
- * Experimental features.
156
- */
157
- experimental?: {
158
- /** Escape hatch for short-lived private toggles. No validation or IntelliSense. */
159
- unsafe?: Record<string, unknown>;
160
- };
161
- };
162
-
163
- export type IntegrationDependencyConfig = {
164
- integration: string;
165
- kind: 'script' | 'stylesheet';
166
- position?: 'head' | 'body';
167
- srcUrl: string;
168
- filePath: string;
169
- /** @todo inline dependencies not implemented yet */
170
- inline?: boolean;
171
- };
172
-
173
- /**
174
- * The possible kinds of a route.
175
- */
176
- export type RouteKind = 'exact' | 'catch-all' | 'dynamic';
177
-
178
- /**
179
- * Represents the result of a route match.
180
- */
181
- export type MatchResult = {
182
- filePath: string;
183
- kind: RouteKind;
184
- pathname: string;
185
- query?: Record<string, string>;
186
- params?: Record<string, string | string[]>;
187
- };
188
-
189
- /**
190
- * Represents a route in EcoPages.
191
- */
192
- export type Route = {
193
- kind: RouteKind;
194
- filePath: string;
195
- pathname: string;
196
- };
197
-
198
- /**
199
- * Represents the routes in EcoPages.
200
- */
201
- export type Routes = Record<string, Route>;
202
-
203
- /**
204
- * Represents the options for the file system server.
205
- */
206
- export type FileSystemServerOptions = {
207
- watchMode: boolean;
208
- port?: number | string;
209
- };
210
-
211
- /**
212
- * Represents the file system server adapter.
213
- */
214
- export interface EcoPagesFileSystemServerAdapter<ServerInstanceOptions = unknown> {
215
- startServer(serverOptions: ServerInstanceOptions):
216
- | {
217
- router: FSRouter;
218
- server: unknown;
219
- }
220
- | Promise<{ router: FSRouter; server: unknown }>;
221
- }
222
-
223
- export interface ProcessorPlugin {
224
- name: string;
225
- description?: string;
226
- setup(): Promise<void>;
227
- process<T = unknown>(input: T): Promise<T>;
228
- teardown?(): Promise<void>;
229
- }
230
-
231
- // Re-export HMR types from public-types for internal use
232
- export type { ClientBridgeEvent, DefaultHmrContext, IHmrManager, IClientBridge } from './public-types.ts';