@ecopages/core 0.2.0-alpha.5 → 0.2.0-alpha.51

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 (456) hide show
  1. package/README.md +267 -14
  2. package/package.json +98 -108
  3. package/src/adapters/README.md +39 -0
  4. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  5. package/src/adapters/abstract/application-adapter.js +14 -2
  6. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  7. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  8. package/src/adapters/bun/client-bridge.d.ts +1 -1
  9. package/src/adapters/bun/create-app.d.ts +12 -12
  10. package/src/adapters/bun/create-app.js +64 -41
  11. package/src/adapters/bun/hmr-manager.d.ts +30 -62
  12. package/src/adapters/bun/hmr-manager.js +30 -194
  13. package/src/adapters/bun/index.d.ts +2 -3
  14. package/src/adapters/bun/index.js +3 -3
  15. package/src/adapters/bun/runtime-host.d.ts +52 -0
  16. package/src/adapters/bun/runtime-host.js +56 -0
  17. package/src/adapters/bun/server-adapter.d.ts +93 -32
  18. package/src/adapters/bun/server-adapter.js +166 -89
  19. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  20. package/src/adapters/bun/static-preview-host.js +45 -0
  21. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  22. package/src/{create-app.js → adapters/create-app.js} +4 -4
  23. package/src/adapters/index.d.ts +2 -6
  24. package/src/adapters/index.js +2 -8
  25. package/src/adapters/node/create-app.d.ts +15 -12
  26. package/src/adapters/node/create-app.js +34 -85
  27. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  28. package/src/adapters/node/http-request-bridge.js +118 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  30. package/src/adapters/node/node-hmr-manager.d.ts +38 -48
  31. package/src/adapters/node/node-hmr-manager.js +31 -203
  32. package/src/adapters/node/runtime-host.d.ts +57 -0
  33. package/src/adapters/node/runtime-host.js +92 -0
  34. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  35. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  36. package/src/adapters/node/server-adapter.d.ts +20 -72
  37. package/src/adapters/node/server-adapter.js +98 -203
  38. package/src/adapters/node/static-content-server.d.ts +37 -1
  39. package/src/adapters/node/static-content-server.js +29 -1
  40. package/src/adapters/node/static-preview-host.d.ts +55 -0
  41. package/src/adapters/node/static-preview-host.js +68 -0
  42. package/src/adapters/shared/application-adapter.d.ts +1 -1
  43. package/src/{define-api-handler.d.ts → adapters/shared/define-api-handler.d.ts} +1 -1
  44. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  45. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  46. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  47. package/src/adapters/shared/explicit-static-route-matcher.js +14 -13
  48. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  49. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -11
  50. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  51. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  52. package/src/adapters/shared/fs-server-response-matcher.d.ts +20 -16
  53. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  54. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  56. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  57. package/src/adapters/shared/hmr-html-response.js +33 -0
  58. package/src/adapters/shared/render-context.d.ts +5 -3
  59. package/src/adapters/shared/render-context.js +27 -3
  60. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  61. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  62. package/src/adapters/shared/runtime-host.d.ts +12 -0
  63. package/src/adapters/shared/server-adapter.d.ts +33 -12
  64. package/src/adapters/shared/server-adapter.js +215 -132
  65. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  66. package/src/adapters/shared/server-route-handler.js +7 -16
  67. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  68. package/src/adapters/shared/server-static-builder.js +65 -11
  69. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  70. package/src/adapters/shared/shared-hmr-manager.js +240 -0
  71. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  72. package/src/build/README.md +107 -0
  73. package/src/build/browser-runtime-import-rewrite-plugin.d.ts +26 -0
  74. package/src/build/browser-runtime-import-rewrite-plugin.js +162 -0
  75. package/src/build/browser-runtime-manifest.d.ts +31 -0
  76. package/src/build/browser-runtime-manifest.js +61 -0
  77. package/src/build/build-adapter.d.ts +175 -3
  78. package/src/build/build-adapter.js +633 -16
  79. package/src/build/build-manifest.d.ts +33 -0
  80. package/src/build/build-manifest.js +52 -0
  81. package/src/build/dev-build-coordinator.d.ts +72 -0
  82. package/src/build/dev-build-coordinator.js +154 -0
  83. package/src/build/esbuild-build-adapter.d.ts +16 -6
  84. package/src/build/esbuild-build-adapter.js +205 -75
  85. package/src/build/runtime-build-executor.d.ts +14 -0
  86. package/src/build/runtime-build-executor.js +22 -0
  87. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  88. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  89. package/src/config/README.md +36 -0
  90. package/src/config/config-builder.d.ts +54 -29
  91. package/src/config/config-builder.js +256 -50
  92. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  93. package/src/{constants.js → config/constants.js} +4 -0
  94. package/src/declarations.d.ts +19 -14
  95. package/src/dev/host-runtime.d.ts +10 -0
  96. package/src/dev/host-runtime.js +24 -0
  97. package/src/dev/sc-server.d.ts +1 -1
  98. package/src/dev/sc-server.js +1 -1
  99. package/src/eco/README.md +70 -16
  100. package/src/eco/eco.browser.d.ts +2 -0
  101. package/src/eco/eco.browser.js +88 -0
  102. package/src/eco/eco.js +63 -54
  103. package/src/eco/eco.types.d.ts +69 -6
  104. package/src/eco/eco.utils.d.ts +1 -40
  105. package/src/eco/eco.utils.js +5 -35
  106. package/src/eco/global-injector-map.d.ts +3 -3
  107. package/src/eco/global-injector-map.js +2 -2
  108. package/src/eco/lazy-injector-map.d.ts +2 -2
  109. package/src/errors/index.d.ts +1 -0
  110. package/src/errors/index.js +3 -1
  111. package/src/hmr/README.md +26 -0
  112. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  113. package/src/hmr/client/hmr-runtime.js +38 -7
  114. package/src/hmr/hmr-strategy.d.ts +16 -13
  115. package/src/hmr/hmr-strategy.js +22 -7
  116. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  117. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  118. package/src/hmr/hmr.test.e2e.js +26 -33
  119. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  120. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  121. package/src/hmr/strategies/js-hmr-strategy.d.ts +40 -42
  122. package/src/hmr/strategies/js-hmr-strategy.js +24 -43
  123. package/src/index.browser.d.ts +2 -2
  124. package/src/index.browser.js +1 -1
  125. package/src/index.d.ts +4 -3
  126. package/src/index.js +16 -5
  127. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  128. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  129. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  130. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  132. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  133. package/src/plugins/README.md +35 -0
  134. package/src/plugins/alias-resolver-plugin.d.ts +1 -0
  135. package/src/plugins/alias-resolver-plugin.js +27 -5
  136. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  137. package/src/plugins/eco-component-meta-plugin.js +42 -24
  138. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  139. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  140. package/src/plugins/integration-plugin.d.ts +157 -29
  141. package/src/plugins/integration-plugin.js +115 -14
  142. package/src/plugins/processor.d.ts +17 -2
  143. package/src/plugins/processor.js +22 -3
  144. package/src/plugins/runtime-capability.d.ts +9 -0
  145. package/src/plugins/source-transform.d.ts +46 -0
  146. package/src/plugins/source-transform.js +71 -0
  147. package/src/route-renderer/GRAPH.md +83 -325
  148. package/src/route-renderer/README.md +73 -90
  149. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  150. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  151. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  152. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  153. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  154. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  155. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  156. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  157. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  158. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  159. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  160. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  161. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  162. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  163. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  164. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  165. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  166. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  167. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  168. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  169. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  170. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  171. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  172. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  173. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  174. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  175. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  176. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  177. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  178. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  179. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  180. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  181. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  182. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  183. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  184. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  185. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  186. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  187. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  188. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  189. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  190. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  191. package/src/route-renderer/route-renderer.d.ts +57 -14
  192. package/src/route-renderer/route-renderer.js +30 -18
  193. package/src/router/README.md +94 -0
  194. package/src/router/client/link-intent.d.ts +53 -0
  195. package/src/router/client/link-intent.js +34 -0
  196. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  197. package/src/router/client/link-intent.test.browser.js +43 -0
  198. package/src/router/client/navigation-coordinator.d.ts +169 -0
  199. package/src/router/client/navigation-coordinator.js +215 -0
  200. package/src/router/server/route-registry.d.ts +78 -0
  201. package/src/router/server/route-registry.js +262 -0
  202. package/src/services/README.md +28 -0
  203. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  204. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  205. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  208. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  209. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  210. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  211. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  212. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  213. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  214. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  215. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  216. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  217. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  218. package/src/services/assets/asset-processing-service/index.js +6 -0
  219. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  220. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  221. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  222. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  223. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  224. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  225. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  226. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  227. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  228. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  229. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +3 -2
  230. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
  231. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  232. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  233. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  234. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  235. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  236. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  237. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  238. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  239. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  240. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  241. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  242. package/src/services/assets/browser-bundle.service.js +41 -0
  243. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  244. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  245. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  246. package/src/services/html/html-rewriter-provider.service.js +68 -0
  247. package/src/services/html/html-transformer.service.d.ts +96 -0
  248. package/src/services/html/html-transformer.service.js +287 -0
  249. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  250. package/src/services/invalidation/development-invalidation.service.js +190 -0
  251. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  252. package/src/services/module-loading/app-module-loader.service.js +0 -0
  253. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  254. package/src/services/module-loading/app-server-module-transpiler.service.js +151 -0
  255. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  256. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  257. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  258. package/src/services/module-loading/module-loading-types.js +0 -0
  259. package/src/services/module-loading/node-bootstrap-plugin.d.ts +38 -0
  260. package/src/services/module-loading/node-bootstrap-plugin.js +215 -0
  261. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  262. package/src/services/module-loading/page-module-import.service.js +191 -0
  263. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  264. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  265. package/src/services/module-loading/source-module-support.d.ts +5 -0
  266. package/src/services/module-loading/source-module-support.js +8 -0
  267. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  268. package/src/services/runtime-state/dev-graph.service.js +162 -0
  269. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  270. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  271. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  272. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  273. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  274. package/src/static-site-generator/README.md +26 -0
  275. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  276. package/src/static-site-generator/static-site-generator.js +182 -138
  277. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  278. package/src/types/internal-types.js +0 -0
  279. package/src/{public-types.d.ts → types/public-types.d.ts} +239 -31
  280. package/src/types/public-types.js +0 -0
  281. package/src/utils/html-escaping.d.ts +7 -0
  282. package/src/utils/html-escaping.js +6 -0
  283. package/src/utils/locals-utils.d.ts +1 -1
  284. package/src/utils/parse-cli-args.d.ts +4 -1
  285. package/src/utils/parse-cli-args.js +16 -1
  286. package/src/utils/resolve-work-dir.d.ts +11 -0
  287. package/src/utils/resolve-work-dir.js +31 -0
  288. package/src/watchers/project-watcher.d.ts +11 -7
  289. package/src/watchers/project-watcher.js +69 -75
  290. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  291. package/src/watchers/project-watcher.test-helpers.js +6 -5
  292. package/CHANGELOG.md +0 -94
  293. package/src/adapters/abstract/application-adapter.ts +0 -337
  294. package/src/adapters/abstract/router-adapter.ts +0 -30
  295. package/src/adapters/abstract/server-adapter.ts +0 -79
  296. package/src/adapters/bun/client-bridge.ts +0 -62
  297. package/src/adapters/bun/create-app.ts +0 -189
  298. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  299. package/src/adapters/bun/define-api-handler.ts +0 -114
  300. package/src/adapters/bun/hmr-manager.ts +0 -276
  301. package/src/adapters/bun/index.ts +0 -3
  302. package/src/adapters/bun/server-adapter.ts +0 -492
  303. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  304. package/src/adapters/bun/server-lifecycle.js +0 -120
  305. package/src/adapters/bun/server-lifecycle.ts +0 -154
  306. package/src/adapters/index.ts +0 -6
  307. package/src/adapters/node/create-app.ts +0 -179
  308. package/src/adapters/node/index.d.ts +0 -4
  309. package/src/adapters/node/index.js +0 -8
  310. package/src/adapters/node/index.ts +0 -9
  311. package/src/adapters/node/node-client-bridge.ts +0 -79
  312. package/src/adapters/node/node-hmr-manager.ts +0 -271
  313. package/src/adapters/node/server-adapter.ts +0 -561
  314. package/src/adapters/node/static-content-server.ts +0 -203
  315. package/src/adapters/shared/api-response.ts +0 -104
  316. package/src/adapters/shared/application-adapter.ts +0 -199
  317. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  318. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  319. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  320. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  321. package/src/adapters/shared/render-context.ts +0 -105
  322. package/src/adapters/shared/server-adapter.ts +0 -442
  323. package/src/adapters/shared/server-route-handler.ts +0 -166
  324. package/src/adapters/shared/server-static-builder.ts +0 -82
  325. package/src/build/build-adapter.ts +0 -133
  326. package/src/build/build-types.ts +0 -83
  327. package/src/build/esbuild-build-adapter.ts +0 -511
  328. package/src/config/config-builder.ts +0 -474
  329. package/src/constants.ts +0 -39
  330. package/src/create-app.ts +0 -87
  331. package/src/define-api-handler.js +0 -15
  332. package/src/define-api-handler.ts +0 -66
  333. package/src/dev/sc-server.ts +0 -143
  334. package/src/eco/component-render-context.d.ts +0 -105
  335. package/src/eco/component-render-context.js +0 -77
  336. package/src/eco/component-render-context.ts +0 -202
  337. package/src/eco/eco.ts +0 -221
  338. package/src/eco/eco.types.ts +0 -202
  339. package/src/eco/eco.utils.ts +0 -89
  340. package/src/eco/global-injector-map.ts +0 -112
  341. package/src/eco/lazy-injector-map.ts +0 -120
  342. package/src/eco/module-dependencies.ts +0 -75
  343. package/src/errors/http-error.ts +0 -72
  344. package/src/errors/index.ts +0 -2
  345. package/src/errors/locals-access-error.ts +0 -7
  346. package/src/global/app-logger.ts +0 -4
  347. package/src/hmr/client/hmr-runtime.ts +0 -121
  348. package/src/hmr/hmr-strategy.ts +0 -172
  349. package/src/hmr/hmr.test.e2e.ts +0 -75
  350. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  351. package/src/hmr/strategies/js-hmr-strategy.ts +0 -327
  352. package/src/index.browser.ts +0 -3
  353. package/src/index.ts +0 -5
  354. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  355. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  356. package/src/internal-types.ts +0 -212
  357. package/src/plugins/alias-resolver-plugin.ts +0 -45
  358. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  359. package/src/plugins/integration-plugin.ts +0 -184
  360. package/src/plugins/processor.ts +0 -220
  361. package/src/public-types.ts +0 -1255
  362. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  363. package/src/route-renderer/component-graph-executor.js +0 -31
  364. package/src/route-renderer/component-graph-executor.ts +0 -84
  365. package/src/route-renderer/component-graph.d.ts +0 -42
  366. package/src/route-renderer/component-graph.js +0 -72
  367. package/src/route-renderer/component-graph.ts +0 -159
  368. package/src/route-renderer/component-marker.d.ts +0 -52
  369. package/src/route-renderer/component-marker.js +0 -46
  370. package/src/route-renderer/component-marker.ts +0 -117
  371. package/src/route-renderer/dependency-resolver.js +0 -428
  372. package/src/route-renderer/dependency-resolver.ts +0 -596
  373. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  374. package/src/route-renderer/html-post-processing.service.js +0 -86
  375. package/src/route-renderer/html-post-processing.service.ts +0 -103
  376. package/src/route-renderer/integration-renderer.d.ts +0 -339
  377. package/src/route-renderer/integration-renderer.js +0 -526
  378. package/src/route-renderer/integration-renderer.ts +0 -696
  379. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  380. package/src/route-renderer/marker-graph-resolver.js +0 -93
  381. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  382. package/src/route-renderer/page-module-loader.d.ts +0 -61
  383. package/src/route-renderer/page-module-loader.ts +0 -153
  384. package/src/route-renderer/render-execution.service.d.ts +0 -69
  385. package/src/route-renderer/render-execution.service.js +0 -91
  386. package/src/route-renderer/render-execution.service.ts +0 -158
  387. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  388. package/src/route-renderer/render-preparation.service.js +0 -243
  389. package/src/route-renderer/render-preparation.service.ts +0 -358
  390. package/src/route-renderer/route-renderer.ts +0 -80
  391. package/src/router/fs-router-scanner.d.ts +0 -41
  392. package/src/router/fs-router-scanner.js +0 -155
  393. package/src/router/fs-router-scanner.ts +0 -217
  394. package/src/router/fs-router.d.ts +0 -26
  395. package/src/router/fs-router.js +0 -100
  396. package/src/router/fs-router.ts +0 -122
  397. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  398. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  399. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  400. package/src/services/asset-processing-service/assets.types.ts +0 -112
  401. package/src/services/asset-processing-service/index.d.ts +0 -3
  402. package/src/services/asset-processing-service/index.js +0 -3
  403. package/src/services/asset-processing-service/index.ts +0 -3
  404. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  405. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  406. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  407. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  408. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  409. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  410. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  411. package/src/services/asset-processing-service/processors/index.js +0 -5
  412. package/src/services/asset-processing-service/processors/index.ts +0 -5
  413. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  414. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  415. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  416. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  417. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  418. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  419. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  420. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  421. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  422. package/src/services/cache/cache.types.ts +0 -126
  423. package/src/services/cache/index.ts +0 -18
  424. package/src/services/cache/memory-cache-store.ts +0 -130
  425. package/src/services/cache/page-cache-service.ts +0 -202
  426. package/src/services/html-transformer.service.d.ts +0 -50
  427. package/src/services/html-transformer.service.js +0 -163
  428. package/src/services/html-transformer.service.ts +0 -217
  429. package/src/services/page-module-import.service.d.ts +0 -37
  430. package/src/services/page-module-import.service.js +0 -88
  431. package/src/services/page-module-import.service.ts +0 -129
  432. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  433. package/src/services/schema-validation-service.ts +0 -204
  434. package/src/services/validation/standard-schema.types.ts +0 -68
  435. package/src/static-site-generator/static-site-generator.ts +0 -359
  436. package/src/utils/css.d.ts +0 -1
  437. package/src/utils/css.js +0 -7
  438. package/src/utils/css.ts +0 -5
  439. package/src/utils/deep-merge.ts +0 -47
  440. package/src/utils/hash.ts +0 -5
  441. package/src/utils/html.ts +0 -1
  442. package/src/utils/invariant.ts +0 -15
  443. package/src/utils/locals-utils.ts +0 -37
  444. package/src/utils/parse-cli-args.ts +0 -83
  445. package/src/utils/path-utils.module.ts +0 -14
  446. package/src/utils/runtime.ts +0 -44
  447. package/src/utils/server-utils.module.ts +0 -67
  448. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  449. package/src/watchers/project-watcher.ts +0 -364
  450. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  451. /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
  452. /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
  453. /package/src/{services/asset-processing-service/assets.types.js → plugins/runtime-capability.js} +0 -0
  454. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  455. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  456. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,60 +0,0 @@
1
- /**
2
- * Default HMR Strategy
3
- *
4
- * Fallback strategy for file types that don't have specialized handling.
5
- * Triggers a full page reload to ensure changes are reflected.
6
- *
7
- * @module
8
- */
9
-
10
- import { HmrStrategy, HmrStrategyType, type HmrAction } from '../hmr-strategy';
11
-
12
- /**
13
- * Default fallback strategy for unhandled file types.
14
- *
15
- * This strategy matches all files and triggers a full page reload.
16
- * It has the lowest priority (FALLBACK) and acts as a catch-all when
17
- * no other strategy matches the changed file.
18
- *
19
- * @remarks
20
- * This strategy ensures that all file changes result in some action,
21
- * even if we don't have specialized handling for that file type.
22
- *
23
- * @example
24
- * ```typescript
25
- * const strategy = new DefaultHmrStrategy();
26
- * const action = await strategy.process('/path/to/unknown.file');
27
- * ```
28
- */
29
- export class DefaultHmrStrategy extends HmrStrategy {
30
- readonly type = HmrStrategyType.FALLBACK;
31
-
32
- /**
33
- * Matches all file paths.
34
- *
35
- * @param _filePath - Absolute path to the changed file (unused)
36
- * @returns Always returns true as this is a catch-all strategy
37
- */
38
- matches(_filePath: string): boolean {
39
- return true;
40
- }
41
-
42
- /**
43
- * Processes a file change by triggering a full page reload.
44
- *
45
- * @param filePath - Absolute path to the changed file
46
- * @returns Action to broadcast a reload event
47
- */
48
- async process(filePath: string): Promise<HmrAction> {
49
- return {
50
- type: 'broadcast',
51
- events: [
52
- {
53
- type: 'reload',
54
- path: filePath,
55
- message: 'fallback-strategy',
56
- },
57
- ],
58
- };
59
- }
60
- }
@@ -1,327 +0,0 @@
1
- /**
2
- * JavaScript HMR Strategy
3
- *
4
- * Handles hot module replacement for JavaScript and TypeScript entrypoints.
5
- * Bundles files, replaces bare specifiers, and injects HMR boilerplate.
6
- *
7
- * @module
8
- */
9
-
10
- import path from 'node:path';
11
- import { fileSystem } from '@ecopages/file-system';
12
- import { HmrStrategy, HmrStrategyType, type HmrAction } from '../hmr-strategy';
13
- import { appLogger } from '../../global/app-logger';
14
- import { defaultBuildAdapter } from '../../build/build-adapter.ts';
15
- import type { EcoBuildPlugin } from '../../build/build-types.ts';
16
-
17
- /**
18
- * Context interface providing access to HmrManager state.
19
- * Required for JsHmrStrategy to access registered entrypoints and configuration.
20
- */
21
- export interface JsHmrContext {
22
- /**
23
- * Map of registered entrypoints to their output URLs.
24
- */
25
- getWatchedFiles(): Map<string, string>;
26
-
27
- /**
28
- * Map of bare specifiers to vendor URLs for import resolution.
29
- */
30
- getSpecifierMap(): Map<string, string>;
31
-
32
- /**
33
- * Returns entrypoints impacted by a changed dependency path.
34
- *
35
- * @remarks
36
- * This hook is currently provided by the Node HMR manager where dependency
37
- * graph metadata is extracted from the Node/esbuild build adapter.
38
- */
39
- getDependencyEntrypoints?(filePath: string): Set<string>;
40
-
41
- /**
42
- * Stores latest dependency set for an entrypoint.
43
- *
44
- * @remarks
45
- * This hook is currently used only by the Node HMR manager to maintain a
46
- * reverse invalidation index. Runtimes that do not provide it keep rebuild-all
47
- * fallback semantics.
48
- */
49
- setEntrypointDependencies?(entrypointPath: string, dependencies: string[]): void;
50
-
51
- /**
52
- * Directory where HMR bundles are written.
53
- */
54
- getDistDir(): string;
55
-
56
- /**
57
- * Build plugins to use during bundling.
58
- */
59
- getPlugins(): EcoBuildPlugin[];
60
-
61
- /**
62
- * Absolute path to the source directory.
63
- */
64
- getSrcDir(): string;
65
- }
66
-
67
- /**
68
- * Strategy for handling JavaScript/TypeScript file changes with hot reloading.
69
- *
70
- * This strategy rebuilds all registered entrypoints when any file changes,
71
- * as we don't currently track dependencies. This is safe but inefficient.
72
- *
73
- * The processing steps are:
74
- * 1. Check if any entrypoints are registered
75
- * 2. Rebuild all entrypoints (the changed file could be a dependency)
76
- * 3. Replace bare specifiers with vendor URLs
77
- * 4. Inject generic HMR boilerplate
78
- * 5. Broadcast update events for each rebuilt entrypoint
79
- *
80
- * @remarks
81
- * Future enhancement: Track dependencies using Bun's transpiler API to only
82
- * rebuild affected entrypoints instead of all of them.
83
- *
84
- * @see https://bun.sh/docs/runtime/transpiler
85
- *
86
- * @example
87
- * ```typescript
88
- * const context = {
89
- * getWatchedFiles: () => watchedFilesMap,
90
- * getSpecifierMap: () => specifierMap,
91
- * getDistDir: () => '/path/to/dist/_hmr',
92
- * getPlugins: () => [],
93
- * getSrcDir: () => '/path/to/src'
94
- * };
95
- * const strategy = new JsHmrStrategy(context);
96
- * ```
97
- */
98
- export class JsHmrStrategy extends HmrStrategy {
99
- readonly type = HmrStrategyType.SCRIPT;
100
-
101
- constructor(private context: JsHmrContext) {
102
- super();
103
- }
104
-
105
- /**
106
- * Determines if the file is a JS/TS file that could affect registered entrypoints.
107
- *
108
- * Matches if:
109
- * 1. There are registered entrypoints to rebuild
110
- * 2. The changed file is a JS/TS file in the src directory
111
- *
112
- * @param filePath - Absolute path to the changed file
113
- * @returns True if this file should trigger entrypoint rebuilds
114
- */
115
- matches(filePath: string): boolean {
116
- const watchedFiles = this.context.getWatchedFiles();
117
- const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
118
- const isInSrc = filePath.startsWith(this.context.getSrcDir());
119
-
120
- if (watchedFiles.size === 0) {
121
- return false;
122
- }
123
-
124
- if (!isJsTs || !isInSrc) {
125
- return false;
126
- }
127
-
128
- if (watchedFiles.has(filePath)) {
129
- return true;
130
- }
131
-
132
- if (this.context.getDependencyEntrypoints) {
133
- return this.context.getDependencyEntrypoints(filePath).size > 0;
134
- }
135
-
136
- return true;
137
- }
138
-
139
- /**
140
- * Processes a file change by rebuilding affected entrypoints.
141
- *
142
- * @param filePath - Absolute path to the changed file
143
- *
144
- * @remarks
145
- * If runtime-specific dependency graph hooks are unavailable, this strategy
146
- * falls back to rebuilding all watched entrypoints.
147
- * When multiple entrypoints are impacted they are bundled in a single esbuild
148
- * invocation to share AST parsing and chunk deduplication.
149
- * @returns Action to broadcast update events
150
- */
151
- async process(filePath: string): Promise<HmrAction> {
152
- appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
153
- const watchedFiles = this.context.getWatchedFiles();
154
-
155
- if (watchedFiles.size === 0) {
156
- appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
157
- return { type: 'none' };
158
- }
159
-
160
- const dependencyHits = this.context.getDependencyEntrypoints?.(filePath) ?? new Set<string>();
161
- const hasDependencyHit = dependencyHits.size > 0;
162
- const impactedEntrypoints = hasDependencyHit
163
- ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint))
164
- : Array.from(watchedFiles.keys());
165
-
166
- if (!hasDependencyHit) {
167
- appLogger.debug('[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints');
168
- }
169
-
170
- if (impactedEntrypoints.length === 0) {
171
- return { type: 'none' };
172
- }
173
-
174
- const buildResult = await this.bundleEntrypoints(impactedEntrypoints);
175
-
176
- if (!buildResult.success) {
177
- return { type: 'none' };
178
- }
179
-
180
- const updates: string[] = [];
181
- let reloadRequired = false;
182
-
183
- for (const entrypoint of impactedEntrypoints) {
184
- const outputUrl = watchedFiles.get(entrypoint);
185
- if (!outputUrl) continue;
186
-
187
- if (buildResult.dependencies && this.context.setEntrypointDependencies) {
188
- const entrypointDeps = buildResult.dependencies.get(path.resolve(entrypoint)) ?? [];
189
- this.context.setEntrypointDependencies(entrypoint, entrypointDeps);
190
- }
191
-
192
- const srcDir = this.context.getSrcDir();
193
- const relativePath = path.relative(srcDir, entrypoint);
194
- const relativePathJs = relativePath.replace(/\.(tsx?|jsx?)$/, '.js');
195
- const outputPath = path.join(this.context.getDistDir(), relativePathJs);
196
-
197
- const result = await this.processOutput(outputPath, outputUrl);
198
- if (result.success) {
199
- updates.push(outputUrl);
200
- if (result.requiresReload) {
201
- reloadRequired = true;
202
- }
203
- }
204
- }
205
-
206
- if (updates.length > 0) {
207
- if (reloadRequired) {
208
- appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
209
- return {
210
- type: 'broadcast',
211
- events: [{ type: 'reload' }],
212
- };
213
- }
214
-
215
- return {
216
- type: 'broadcast',
217
- events: updates.map((p) => ({
218
- type: 'update',
219
- path: p,
220
- timestamp: Date.now(),
221
- })),
222
- };
223
- }
224
-
225
- return { type: 'none' };
226
- }
227
-
228
- /**
229
- * Bundles one or more entrypoints in a single esbuild invocation.
230
- * Uses the source directory as the output base so that the directory structure
231
- * is preserved under the HMR dist folder.
232
- */
233
- private async bundleEntrypoints(
234
- entrypoints: string[],
235
- ): Promise<{ success: boolean; dependencies?: Map<string, string[]> }> {
236
- try {
237
- const result = await defaultBuildAdapter.build({
238
- entrypoints,
239
- outdir: this.context.getDistDir(),
240
- outbase: this.context.getSrcDir(),
241
- naming: '[dir]/[name]',
242
- ...defaultBuildAdapter.getTranspileOptions('hmr-entrypoint'),
243
- plugins: this.context.getPlugins(),
244
- minify: false,
245
- external: ['react', 'react-dom'],
246
- });
247
-
248
- if (!result.success) {
249
- appLogger.error('[JsHmrStrategy] Batched build failed:', result.logs);
250
- return { success: false };
251
- }
252
-
253
- const dependencies = new Map<string, string[]>();
254
- if (result.dependencyGraph?.entrypoints) {
255
- for (const [entrypoint, deps] of Object.entries(result.dependencyGraph.entrypoints)) {
256
- dependencies.set(path.resolve(entrypoint), deps);
257
- }
258
- }
259
-
260
- return { success: true, dependencies };
261
- } catch (error) {
262
- appLogger.error('[JsHmrStrategy] Error in batched build:', error as Error);
263
- return { success: false };
264
- }
265
- }
266
-
267
- /**
268
- * Processes bundled output by replacing specifiers and injecting HMR code.
269
- *
270
- * @param filepath - Path to the bundled output file
271
- * @param url - URL path for the bundled file
272
- * @returns True if processing was successful and update should be broadcast
273
- */
274
- private async processOutput(filepath: string, url: string): Promise<{ success: boolean; requiresReload: boolean }> {
275
- try {
276
- let code = await fileSystem.readFile(filepath);
277
-
278
- if (code.includes('/* [ecopages] hmr */')) {
279
- /**
280
- * Already processed, assume it supports HMR if it has the header (legacy safety)
281
- * or check specifically for accept
282
- */
283
- return { success: true, requiresReload: !code.includes('import.meta.hot.accept') };
284
- }
285
-
286
- code = this.replaceBareSpecifiers(code);
287
- await fileSystem.writeAsync(filepath, code);
288
-
289
- appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
290
-
291
- /**
292
- * Implicit HMR check: if the code explicitly accepts HMR, we broadcast update.
293
- * Otherwise, we must reload the page to ensure fresh execution (e.g. for Custom Elements or side effects).
294
- */
295
- const hasHmrAccept = code.includes('import.meta.hot.accept');
296
- return { success: true, requiresReload: !hasHmrAccept };
297
- } catch (error) {
298
- appLogger.error(`[JsHmrStrategy] Error processing output for ${url}:`, error as Error);
299
- return { success: false, requiresReload: false };
300
- }
301
- }
302
-
303
- /**
304
- * Replaces bare specifiers with vendor URLs.
305
- *
306
- * Handles both static imports and dynamic imports.
307
- *
308
- * @param code - The bundled code to transform
309
- * @returns The transformed code with vendor URLs
310
- */
311
- private replaceBareSpecifiers(code: string): string {
312
- const specifierMap = this.context.getSpecifierMap();
313
-
314
- if (specifierMap.size === 0) {
315
- return code;
316
- }
317
-
318
- let result = code;
319
- for (const [bareSpec, vendorUrl] of specifierMap.entries()) {
320
- const escaped = bareSpec.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
321
- result = result.replace(new RegExp(`from\\s*["']${escaped}["']`, 'g'), `from "${vendorUrl}"`);
322
- result = result.replace(new RegExp(`import\\(["']${escaped}["']\\)`, 'g'), `import("${vendorUrl}")`);
323
- }
324
-
325
- return result;
326
- }
327
- }
@@ -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 './define-api-handler.ts';
@@ -1,93 +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 { IntegrationRenderer, type RenderToResponseContext } from '../../route-renderer/integration-renderer.ts';
14
- import { GHTML_PLUGIN_NAME } from './ghtml.plugin.ts';
15
-
16
- /**
17
- * A renderer for the ghtml integration.
18
- * It renders a page using the HtmlTemplate and Page components.
19
- */
20
- export class GhtmlRenderer extends IntegrationRenderer<EcoPagesElement> {
21
- name = GHTML_PLUGIN_NAME;
22
-
23
- async render({
24
- params,
25
- query,
26
- props,
27
- locals,
28
- pageLocals,
29
- metadata,
30
- Page,
31
- Layout,
32
- HtmlTemplate,
33
- }: IntegrationRendererRenderOptions): Promise<RouteRendererBody> {
34
- try {
35
- const pageContent = await Page({ params, query, ...props, locals: pageLocals });
36
- const children =
37
- Layout && typeof Layout === 'function' ? await Layout({ children: pageContent, locals }) : pageContent;
38
- const body = await HtmlTemplate({
39
- metadata,
40
- children,
41
- pageProps: props || {},
42
- });
43
-
44
- return this.DOC_TYPE + body;
45
- } catch (error) {
46
- throw this.createRenderError('Error rendering page', error);
47
- }
48
- }
49
-
50
- async renderToResponse<P = Record<string, unknown>>(
51
- view: EcoComponent<P>,
52
- props: P,
53
- ctx: RenderToResponseContext,
54
- ): Promise<Response> {
55
- try {
56
- const Layout = view.config?.layout as
57
- | ((props: { children: EcoPagesElement } & Record<string, unknown>) => Promise<EcoPagesElement>)
58
- | undefined;
59
-
60
- const viewFn = view as (props: P) => Promise<EcoPagesElement>;
61
- const pageContent = await viewFn(props);
62
-
63
- let body: string;
64
- if (ctx.partial) {
65
- body = pageContent as string;
66
- } else {
67
- const children = Layout ? await Layout({ children: pageContent }) : pageContent;
68
-
69
- const HtmlTemplate = await this.getHtmlTemplate();
70
- const metadata: PageMetadataProps = view.metadata
71
- ? await view.metadata({
72
- params: {},
73
- query: {},
74
- props: props as Record<string, unknown>,
75
- appConfig: this.appConfig,
76
- })
77
- : this.appConfig.defaultMetadata;
78
-
79
- body =
80
- this.DOC_TYPE +
81
- (await HtmlTemplate({
82
- metadata,
83
- children: children as EcoPagesElement,
84
- pageProps: props as Record<string, unknown>,
85
- }));
86
- }
87
-
88
- return this.createHtmlResponse(body, ctx);
89
- } catch (error) {
90
- throw this.createRenderError('Error rendering view', error);
91
- }
92
- }
93
- }
@@ -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
- }