@ecopages/core 0.2.0-alpha.3 → 0.2.0-alpha.31

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 (436) hide show
  1. package/CHANGELOG.md +66 -66
  2. package/README.md +268 -14
  3. package/package.json +72 -108
  4. package/src/adapters/README.md +39 -0
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +5 -12
  11. package/src/adapters/bun/create-app.js +43 -7
  12. package/src/adapters/bun/hmr-manager.d.ts +72 -26
  13. package/src/adapters/bun/hmr-manager.js +153 -81
  14. package/src/adapters/bun/index.d.ts +2 -3
  15. package/src/adapters/bun/index.js +3 -3
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +63 -38
  18. package/src/adapters/bun/server-lifecycle.d.ts +28 -17
  19. package/src/adapters/bun/server-lifecycle.js +34 -62
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +2 -6
  23. package/src/adapters/index.js +2 -8
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +79 -21
  28. package/src/adapters/node/node-hmr-manager.js +167 -114
  29. package/src/adapters/node/server-adapter.d.ts +7 -35
  30. package/src/adapters/node/server-adapter.js +55 -107
  31. package/src/adapters/node/static-content-server.d.ts +37 -1
  32. package/src/adapters/node/static-content-server.js +29 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/{define-api-handler.d.ts → adapters/shared/define-api-handler.d.ts} +1 -1
  35. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  36. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  37. package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
  38. package/src/adapters/shared/explicit-static-route-matcher.js +14 -13
  39. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
  40. package/src/adapters/shared/file-route-middleware-pipeline.js +3 -11
  41. package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
  42. package/src/adapters/shared/fs-server-response-factory.js +11 -27
  43. package/src/adapters/shared/fs-server-response-matcher.d.ts +20 -16
  44. package/src/adapters/shared/fs-server-response-matcher.js +76 -45
  45. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  46. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  47. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  48. package/src/adapters/shared/hmr-html-response.js +32 -0
  49. package/src/adapters/shared/render-context.d.ts +4 -3
  50. package/src/adapters/shared/render-context.js +6 -3
  51. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  52. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  53. package/src/adapters/shared/server-adapter.d.ts +33 -12
  54. package/src/adapters/shared/server-adapter.js +208 -132
  55. package/src/adapters/shared/server-route-handler.d.ts +5 -5
  56. package/src/adapters/shared/server-route-handler.js +7 -16
  57. package/src/adapters/shared/server-static-builder.d.ts +41 -8
  58. package/src/adapters/shared/server-static-builder.js +65 -11
  59. package/src/build/README.md +107 -0
  60. package/src/build/build-adapter.d.ts +168 -3
  61. package/src/build/build-adapter.js +604 -16
  62. package/src/build/build-manifest.d.ts +27 -0
  63. package/src/build/build-manifest.js +30 -0
  64. package/src/build/dev-build-coordinator.d.ts +72 -0
  65. package/src/build/dev-build-coordinator.js +154 -0
  66. package/src/build/esbuild-build-adapter.d.ts +15 -6
  67. package/src/build/esbuild-build-adapter.js +189 -74
  68. package/src/build/runtime-build-executor.d.ts +14 -0
  69. package/src/build/runtime-build-executor.js +22 -0
  70. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  71. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  72. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  73. package/src/build/runtime-specifier-aliases.js +95 -0
  74. package/src/config/README.md +36 -0
  75. package/src/config/config-builder.d.ts +54 -29
  76. package/src/config/config-builder.js +255 -49
  77. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  78. package/src/{constants.js → config/constants.js} +4 -0
  79. package/src/declarations.d.ts +19 -14
  80. package/src/dev/host-runtime.d.ts +10 -0
  81. package/src/dev/host-runtime.js +24 -0
  82. package/src/dev/sc-server.d.ts +1 -1
  83. package/src/dev/sc-server.js +1 -1
  84. package/src/eco/README.md +70 -16
  85. package/src/eco/eco.browser.d.ts +2 -0
  86. package/src/eco/eco.browser.js +83 -0
  87. package/src/eco/eco.js +32 -57
  88. package/src/eco/eco.types.d.ts +14 -6
  89. package/src/eco/eco.utils.d.ts +1 -40
  90. package/src/eco/eco.utils.js +5 -35
  91. package/src/eco/global-injector-map.d.ts +3 -3
  92. package/src/eco/global-injector-map.js +2 -2
  93. package/src/eco/lazy-injector-map.d.ts +2 -2
  94. package/src/errors/index.d.ts +1 -0
  95. package/src/errors/index.js +3 -1
  96. package/src/hmr/README.md +26 -0
  97. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  98. package/src/hmr/client/hmr-runtime.js +38 -7
  99. package/src/hmr/hmr-strategy.d.ts +16 -13
  100. package/src/hmr/hmr-strategy.js +22 -7
  101. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  102. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  103. package/src/hmr/hmr.test.e2e.js +26 -33
  104. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  105. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  106. package/src/hmr/strategies/js-hmr-strategy.d.ts +46 -48
  107. package/src/hmr/strategies/js-hmr-strategy.js +64 -74
  108. package/src/index.browser.d.ts +2 -2
  109. package/src/index.browser.js +1 -1
  110. package/src/index.d.ts +4 -3
  111. package/src/index.js +16 -5
  112. package/src/integrations/ghtml/ghtml-renderer.d.ts +3 -2
  113. package/src/integrations/ghtml/ghtml-renderer.js +27 -30
  114. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  115. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  116. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  117. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  118. package/src/plugins/README.md +35 -0
  119. package/src/plugins/alias-resolver-plugin.js +17 -3
  120. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  121. package/src/plugins/eco-component-meta-plugin.js +27 -22
  122. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  123. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  124. package/src/plugins/integration-plugin.d.ts +142 -29
  125. package/src/plugins/integration-plugin.js +103 -14
  126. package/src/plugins/processor.d.ts +17 -2
  127. package/src/plugins/processor.js +22 -3
  128. package/src/plugins/runtime-capability.d.ts +9 -0
  129. package/src/plugins/source-transform.d.ts +46 -0
  130. package/src/plugins/source-transform.js +71 -0
  131. package/src/route-renderer/GRAPH.md +83 -325
  132. package/src/route-renderer/README.md +73 -90
  133. package/src/route-renderer/orchestration/component-render-context.d.ts +89 -0
  134. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  135. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  136. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  137. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +108 -0
  138. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +206 -0
  139. package/src/route-renderer/orchestration/integration-renderer.d.ts +516 -0
  140. package/src/route-renderer/orchestration/integration-renderer.js +909 -0
  141. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  142. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  143. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  144. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  145. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +2 -0
  146. package/src/route-renderer/orchestration/processed-asset-dedupe.js +23 -0
  147. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +90 -0
  148. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +158 -0
  149. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  150. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  151. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +120 -0
  152. package/src/route-renderer/orchestration/route-render-orchestrator.js +388 -0
  153. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  154. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  155. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  156. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  157. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  158. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  159. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  160. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  161. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  162. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  163. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  164. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  165. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  166. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  167. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  168. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  169. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  170. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  171. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  172. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  173. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  174. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  175. package/src/route-renderer/route-renderer.d.ts +57 -14
  176. package/src/route-renderer/route-renderer.js +30 -18
  177. package/src/router/README.md +94 -0
  178. package/src/router/client/link-intent.d.ts +53 -0
  179. package/src/router/client/link-intent.js +34 -0
  180. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  181. package/src/router/client/link-intent.test.browser.js +43 -0
  182. package/src/router/client/navigation-coordinator.d.ts +169 -0
  183. package/src/router/client/navigation-coordinator.js +215 -0
  184. package/src/router/server/route-registry.d.ts +78 -0
  185. package/src/router/server/route-registry.js +262 -0
  186. package/src/services/README.md +28 -0
  187. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  188. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  189. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  190. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +124 -89
  191. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  192. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  193. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +16 -1
  194. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  195. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  196. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  197. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  198. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  199. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  200. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  201. package/src/services/assets/asset-processing-service/index.js +6 -0
  202. package/src/services/assets/asset-processing-service/page-package.d.ts +3 -0
  203. package/src/services/assets/asset-processing-service/page-package.js +74 -0
  204. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  205. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  206. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  207. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +11 -5
  208. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  209. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  210. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  211. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  212. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +3 -2
  213. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +119 -0
  214. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  215. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +28 -7
  216. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.d.ts +3 -3
  217. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.js +12 -7
  218. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
  219. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  220. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  221. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +9 -3
  222. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  223. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  224. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  225. package/src/services/assets/browser-bundle.service.js +41 -0
  226. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  227. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  228. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  229. package/src/services/html/html-rewriter-provider.service.js +68 -0
  230. package/src/services/html/html-transformer.service.d.ts +87 -0
  231. package/src/services/html/html-transformer.service.js +216 -0
  232. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  233. package/src/services/invalidation/development-invalidation.service.js +190 -0
  234. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  235. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  236. package/src/services/module-loading/app-server-module-transpiler.service.js +115 -0
  237. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  238. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  239. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  240. package/src/services/module-loading/module-loading-types.js +0 -0
  241. package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
  242. package/src/services/module-loading/node-bootstrap-plugin.js +216 -0
  243. package/src/services/module-loading/page-module-import.service.d.ts +76 -0
  244. package/src/services/module-loading/page-module-import.service.js +170 -0
  245. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  246. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  247. package/src/services/module-loading/source-module-support.d.ts +5 -0
  248. package/src/services/module-loading/source-module-support.js +8 -0
  249. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  250. package/src/services/runtime-state/dev-graph.service.js +162 -0
  251. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  252. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  253. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  254. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  255. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  256. package/src/static-site-generator/README.md +26 -0
  257. package/src/static-site-generator/static-site-generator.d.ts +67 -20
  258. package/src/static-site-generator/static-site-generator.js +182 -138
  259. package/src/{internal-types.d.ts → types/internal-types.d.ts} +62 -30
  260. package/src/types/internal-types.js +0 -0
  261. package/src/{public-types.d.ts → types/public-types.d.ts} +201 -32
  262. package/src/types/public-types.js +0 -0
  263. package/src/utils/html-escaping.d.ts +7 -0
  264. package/src/utils/html-escaping.js +6 -0
  265. package/src/utils/locals-utils.d.ts +1 -1
  266. package/src/utils/parse-cli-args.d.ts +4 -1
  267. package/src/utils/parse-cli-args.js +16 -1
  268. package/src/utils/resolve-work-dir.d.ts +11 -0
  269. package/src/utils/resolve-work-dir.js +31 -0
  270. package/src/watchers/project-watcher.d.ts +40 -29
  271. package/src/watchers/project-watcher.js +126 -116
  272. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  273. package/src/watchers/project-watcher.test-helpers.js +6 -6
  274. package/src/adapters/abstract/application-adapter.ts +0 -337
  275. package/src/adapters/abstract/router-adapter.ts +0 -30
  276. package/src/adapters/abstract/server-adapter.ts +0 -79
  277. package/src/adapters/bun/client-bridge.ts +0 -62
  278. package/src/adapters/bun/create-app.ts +0 -189
  279. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  280. package/src/adapters/bun/define-api-handler.ts +0 -114
  281. package/src/adapters/bun/hmr-manager.ts +0 -296
  282. package/src/adapters/bun/index.ts +0 -3
  283. package/src/adapters/bun/server-adapter.ts +0 -492
  284. package/src/adapters/bun/server-lifecycle.ts +0 -154
  285. package/src/adapters/index.ts +0 -6
  286. package/src/adapters/node/create-app.ts +0 -179
  287. package/src/adapters/node/index.d.ts +0 -4
  288. package/src/adapters/node/index.js +0 -8
  289. package/src/adapters/node/index.ts +0 -9
  290. package/src/adapters/node/node-client-bridge.ts +0 -79
  291. package/src/adapters/node/node-hmr-manager.ts +0 -289
  292. package/src/adapters/node/server-adapter.ts +0 -561
  293. package/src/adapters/node/static-content-server.ts +0 -203
  294. package/src/adapters/shared/api-response.ts +0 -104
  295. package/src/adapters/shared/application-adapter.ts +0 -199
  296. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  297. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  298. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  299. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  300. package/src/adapters/shared/render-context.ts +0 -105
  301. package/src/adapters/shared/server-adapter.ts +0 -442
  302. package/src/adapters/shared/server-route-handler.ts +0 -166
  303. package/src/adapters/shared/server-static-builder.ts +0 -82
  304. package/src/build/build-adapter.ts +0 -132
  305. package/src/build/build-types.ts +0 -83
  306. package/src/build/esbuild-build-adapter.ts +0 -510
  307. package/src/config/config-builder.ts +0 -474
  308. package/src/constants.ts +0 -39
  309. package/src/create-app.ts +0 -87
  310. package/src/define-api-handler.js +0 -15
  311. package/src/define-api-handler.ts +0 -66
  312. package/src/dev/sc-server.ts +0 -143
  313. package/src/eco/component-render-context.d.ts +0 -105
  314. package/src/eco/component-render-context.js +0 -77
  315. package/src/eco/component-render-context.ts +0 -202
  316. package/src/eco/eco.ts +0 -221
  317. package/src/eco/eco.types.ts +0 -202
  318. package/src/eco/eco.utils.ts +0 -89
  319. package/src/eco/global-injector-map.ts +0 -112
  320. package/src/eco/lazy-injector-map.ts +0 -120
  321. package/src/eco/module-dependencies.ts +0 -75
  322. package/src/errors/http-error.ts +0 -72
  323. package/src/errors/index.ts +0 -2
  324. package/src/errors/locals-access-error.ts +0 -7
  325. package/src/global/app-logger.ts +0 -4
  326. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
  327. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  328. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  329. package/src/hmr/client/hmr-runtime.ts +0 -121
  330. package/src/hmr/hmr-strategy.ts +0 -172
  331. package/src/hmr/hmr.test.e2e.ts +0 -75
  332. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  333. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  334. package/src/index.browser.ts +0 -3
  335. package/src/index.ts +0 -5
  336. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  337. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  338. package/src/internal-types.ts +0 -212
  339. package/src/plugins/alias-resolver-plugin.ts +0 -45
  340. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  341. package/src/plugins/integration-plugin.ts +0 -184
  342. package/src/plugins/processor.ts +0 -220
  343. package/src/public-types.ts +0 -1260
  344. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  345. package/src/route-renderer/component-graph-executor.js +0 -31
  346. package/src/route-renderer/component-graph-executor.ts +0 -84
  347. package/src/route-renderer/component-graph.d.ts +0 -42
  348. package/src/route-renderer/component-graph.js +0 -72
  349. package/src/route-renderer/component-graph.ts +0 -159
  350. package/src/route-renderer/component-marker.d.ts +0 -52
  351. package/src/route-renderer/component-marker.js +0 -46
  352. package/src/route-renderer/component-marker.ts +0 -117
  353. package/src/route-renderer/dependency-resolver.js +0 -428
  354. package/src/route-renderer/dependency-resolver.ts +0 -596
  355. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  356. package/src/route-renderer/html-post-processing.service.js +0 -86
  357. package/src/route-renderer/html-post-processing.service.ts +0 -103
  358. package/src/route-renderer/integration-renderer.d.ts +0 -339
  359. package/src/route-renderer/integration-renderer.js +0 -526
  360. package/src/route-renderer/integration-renderer.ts +0 -696
  361. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  362. package/src/route-renderer/marker-graph-resolver.js +0 -93
  363. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  364. package/src/route-renderer/page-module-loader.d.ts +0 -61
  365. package/src/route-renderer/page-module-loader.ts +0 -153
  366. package/src/route-renderer/render-execution.service.d.ts +0 -69
  367. package/src/route-renderer/render-execution.service.js +0 -91
  368. package/src/route-renderer/render-execution.service.ts +0 -158
  369. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  370. package/src/route-renderer/render-preparation.service.js +0 -243
  371. package/src/route-renderer/render-preparation.service.ts +0 -358
  372. package/src/route-renderer/route-renderer.ts +0 -80
  373. package/src/router/fs-router-scanner.d.ts +0 -41
  374. package/src/router/fs-router-scanner.js +0 -155
  375. package/src/router/fs-router-scanner.ts +0 -217
  376. package/src/router/fs-router.d.ts +0 -26
  377. package/src/router/fs-router.js +0 -100
  378. package/src/router/fs-router.ts +0 -122
  379. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  380. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  381. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  382. package/src/services/asset-processing-service/assets.types.ts +0 -112
  383. package/src/services/asset-processing-service/index.d.ts +0 -3
  384. package/src/services/asset-processing-service/index.js +0 -3
  385. package/src/services/asset-processing-service/index.ts +0 -3
  386. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  387. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  388. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  389. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  390. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  391. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  392. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  393. package/src/services/asset-processing-service/processors/index.js +0 -5
  394. package/src/services/asset-processing-service/processors/index.ts +0 -5
  395. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  396. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  397. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  398. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  399. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  400. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  401. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  402. package/src/services/cache/cache.types.ts +0 -126
  403. package/src/services/cache/index.ts +0 -18
  404. package/src/services/cache/memory-cache-store.ts +0 -130
  405. package/src/services/cache/page-cache-service.ts +0 -202
  406. package/src/services/html-transformer.service.d.ts +0 -50
  407. package/src/services/html-transformer.service.js +0 -163
  408. package/src/services/html-transformer.service.ts +0 -217
  409. package/src/services/page-module-import.service.d.ts +0 -37
  410. package/src/services/page-module-import.service.js +0 -88
  411. package/src/services/page-module-import.service.ts +0 -129
  412. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  413. package/src/services/schema-validation-service.ts +0 -204
  414. package/src/services/validation/standard-schema.types.ts +0 -68
  415. package/src/static-site-generator/static-site-generator.ts +0 -359
  416. package/src/utils/css.d.ts +0 -1
  417. package/src/utils/css.js +0 -7
  418. package/src/utils/css.ts +0 -5
  419. package/src/utils/deep-merge.ts +0 -47
  420. package/src/utils/hash.ts +0 -5
  421. package/src/utils/html.ts +0 -1
  422. package/src/utils/invariant.ts +0 -15
  423. package/src/utils/locals-utils.ts +0 -37
  424. package/src/utils/parse-cli-args.ts +0 -83
  425. package/src/utils/path-utils.module.ts +0 -14
  426. package/src/utils/runtime.ts +0 -44
  427. package/src/utils/server-utils.module.ts +0 -67
  428. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  429. package/src/watchers/project-watcher.ts +0 -344
  430. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  431. /package/src/{internal-types.js → plugins/runtime-capability.js} +0 -0
  432. /package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.js +0 -0
  433. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  434. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  435. /package/src/{public-types.js → services/module-loading/app-module-loader.service.js} +0 -0
  436. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -1,474 +0,0 @@
1
- /**
2
- * This module contains the ConfigBuilder class, which is used to build the EcoPagesAppConfig object.
3
- * @module
4
- */
5
-
6
- import path from 'node:path';
7
- import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from '../constants.ts';
8
- import type { EcoBuildPlugin } from '../build/build-types.ts';
9
- import { GHTML_PLUGIN_NAME, ghtmlPlugin } from '../integrations/ghtml/ghtml.plugin.ts';
10
- import type { EcoPagesAppConfig, IncludesTemplates, RobotsPreference } from '../internal-types.ts';
11
- import { createEcoComponentMetaPlugin } from '../plugins/eco-component-meta-plugin.ts';
12
- import type { IntegrationPlugin } from '../plugins/integration-plugin.ts';
13
- import type { Processor } from '../plugins/processor.ts';
14
- import type { PageMetadataProps } from '../public-types.ts';
15
- import type { CacheConfig } from '../services/cache/cache.types.ts';
16
- import { invariant } from '../utils/invariant.ts';
17
- import { appLogger } from '../global/app-logger.ts';
18
-
19
- export const CONFIG_BUILDER_ERRORS = {
20
- DUPLICATE_INTEGRATION_NAMES: 'Integrations names must be unique',
21
- DUPLICATE_INTEGRATION_EXTENSIONS: 'Integrations extensions must be unique',
22
- MIXED_JSX_ENGINES:
23
- 'Both kitajs and react integrations are enabled. Use per-file JSX import source/pragma consistently (e.g. `/** @jsxImportSource react */` for React files and `/** @jsxImportSource @kitajs/html */` for Kita files).',
24
- duplicateProcessorName: (name: string) => `Processor with name "${name}" already exists`,
25
- duplicateLoaderName: (name: string) => `Loader with name "${name}" already exists`,
26
- } as const;
27
-
28
- /**
29
- * A builder class for creating and configuring EcoPages application configuration.
30
- * Provides a fluent interface for setting various configuration options and managing
31
- * application settings.
32
- *
33
- * @example
34
- * ```typescript
35
- * const config = new ConfigBuilder()
36
- * .setBaseUrl('https://example.com')
37
- * .setRootDir('./myproject')
38
- * .setSrcDir('source')
39
- * .build();
40
- * ```
41
- *
42
- * @remarks
43
- * The ConfigBuilder follows the builder pattern and allows for:
44
- * - Setting directory paths for various components (pages, includes, layouts, etc.)
45
- * - Configuring templates and includes
46
- * - Managing integrations and plugins
47
- * - Setting up processors and loaders
48
- * - Configuring API handlers
49
- * - Managing metadata and robots.txt preferences
50
- *
51
- * All setter methods return the instance of the builder for method chaining.
52
- * The configuration is finalized by calling the `build()` method, which performs
53
- * validation and initialization of the configuration.
54
- *
55
- * @throws {Error} When building configuration without required fields (e.g., baseUrl)
56
- * @throws {Error} When adding duplicate processors or loaders
57
- */
58
- export class ConfigBuilder {
59
- public config: EcoPagesAppConfig = {
60
- baseUrl: '',
61
- rootDir: '.',
62
- srcDir: 'src',
63
- pagesDir: 'pages',
64
- includesDir: 'includes',
65
- componentsDir: 'components',
66
- layoutsDir: 'layouts',
67
- publicDir: 'public',
68
- includesTemplates: {
69
- head: 'head.ghtml.ts',
70
- html: 'html.ghtml.ts',
71
- seo: 'seo.ghtml.ts',
72
- },
73
- error404Template: '404.ghtml.ts',
74
- robotsTxt: {
75
- preferences: {
76
- '*': [],
77
- },
78
- },
79
- integrations: [],
80
- integrationsDependencies: [],
81
- distDir: '.eco',
82
- defaultMetadata: {
83
- title: 'Ecopages',
84
- description: 'This is a static site generated with Ecopages',
85
- },
86
- additionalWatchPaths: [],
87
- templatesExt: [],
88
- absolutePaths: {
89
- config: '',
90
- componentsDir: '',
91
- distDir: '',
92
- includesDir: '',
93
- layoutsDir: '',
94
- pagesDir: '',
95
- projectDir: '',
96
- publicDir: '',
97
- srcDir: '',
98
- htmlTemplatePath: '',
99
- error404TemplatePath: '',
100
- },
101
- processors: new Map(),
102
- loaders: new Map(),
103
- };
104
-
105
- /**
106
- * Sets the base URL for the application.
107
- * This URL is used as the root URL for all pages and assets.
108
- *
109
- * @param baseUrl - The base URL for the application (e.g., 'https://example.com')
110
- * @returns The ConfigBuilder instance for method chaining
111
- */
112
- setBaseUrl(baseUrl: string): this {
113
- this.config.baseUrl = baseUrl;
114
- return this;
115
- }
116
-
117
- /**
118
- * Sets the root directory of the project.
119
- * This is the base directory from which all other paths are resolved.
120
- *
121
- * @param rootDir - The root directory path
122
- * @returns The ConfigBuilder instance for method chaining
123
- */
124
- setRootDir(rootDir: string): this {
125
- this.config.rootDir = rootDir;
126
- return this;
127
- }
128
-
129
- /**
130
- * Sets the source directory relative to the root directory.
131
- * This directory contains all the source files for the application.
132
- *
133
- * @param srcDir - The source directory name (default: 'src')
134
- * @returns The ConfigBuilder instance for method chaining
135
- */
136
- setSrcDir(srcDir: string): this {
137
- this.config.srcDir = srcDir;
138
- return this;
139
- }
140
-
141
- /**
142
- * Sets the pages directory relative to the source directory.
143
- * This directory contains all the page files for the application.
144
- *
145
- * @param pagesDir - The pages directory name (default: 'pages')
146
- * @returns The ConfigBuilder instance for method chaining
147
- */
148
- setPagesDir(pagesDir: string): this {
149
- this.config.pagesDir = pagesDir;
150
- return this;
151
- }
152
-
153
- /**
154
- * Sets the includes directory relative to the source directory.
155
- * This directory contains template includes and partials.
156
- *
157
- * @param includesDir - The includes directory name (default: 'includes')
158
- * @returns The ConfigBuilder instance for method chaining
159
- */
160
- setIncludesDir(includesDir: string): this {
161
- this.config.includesDir = includesDir;
162
- return this;
163
- }
164
-
165
- /**
166
- * Sets the components directory relative to the source directory.
167
- * This directory contains reusable components.
168
- *
169
- * @param componentsDir - The components directory name (default: 'components')
170
- * @returns The ConfigBuilder instance for method chaining
171
- */
172
- setComponentsDir(componentsDir: string): this {
173
- this.config.componentsDir = componentsDir;
174
- return this;
175
- }
176
-
177
- /**
178
- * Sets the layouts directory relative to the source directory.
179
- * This directory contains layout templates.
180
- *
181
- * @param layoutsDir - The layouts directory name (default: 'layouts')
182
- * @returns The ConfigBuilder instance for method chaining
183
- */
184
- setLayoutsDir(layoutsDir: string): this {
185
- this.config.layoutsDir = layoutsDir;
186
- return this;
187
- }
188
-
189
- /**
190
- * Sets the public directory relative to the source directory.
191
- * This directory contains static assets that should be served as-is.
192
- *
193
- * @param publicDir - The public directory name (default: 'public')
194
- * @returns The ConfigBuilder instance for method chaining
195
- */
196
- setPublicDir(publicDir: string): this {
197
- this.config.publicDir = publicDir;
198
- return this;
199
- }
200
-
201
- /**
202
- * Sets the templates used for includes.
203
- * These templates are used to build the HTML structure of pages.
204
- *
205
- * @param includesTemplates - An object containing the template file names
206
- * @returns The ConfigBuilder instance for method chaining
207
- */
208
- setIncludesTemplates(includesTemplates: IncludesTemplates): this {
209
- this.config.includesTemplates = includesTemplates;
210
- return this;
211
- }
212
-
213
- /**
214
- * Sets the template file for the 404 error page.
215
- *
216
- * @param error404Template - The file name of the 404 error template (default: '404.ghtml.ts')
217
- * @returns The ConfigBuilder instance for method chaining
218
- */
219
- setError404Template(error404Template: string): this {
220
- this.config.error404Template = error404Template;
221
- return this;
222
- }
223
-
224
- /**
225
- * Sets the robots.txt configuration.
226
- * This determines which paths are allowed/disallowed for search engines.
227
- *
228
- * @param robotsTxt - The robots.txt configuration object
229
- * @returns The ConfigBuilder instance for method chaining
230
- */
231
- setRobotsTxt(robotsTxt: { preferences: RobotsPreference }): this {
232
- this.config.robotsTxt = robotsTxt;
233
- return this;
234
- }
235
-
236
- /**
237
- * Sets the integration plugins to use.
238
- * These plugins provide additional functionality to the application.
239
- *
240
- * @param integrations - An array of integration plugins
241
- * @returns The ConfigBuilder instance for method chaining
242
- */
243
- setIntegrations(integrations: IntegrationPlugin<unknown>[]): this {
244
- this.config.integrations = integrations;
245
- return this;
246
- }
247
-
248
- /**
249
- * Sets the output directory for the built application.
250
- *
251
- * @param distDir - The distribution directory name (default: '.eco')
252
- * @returns The ConfigBuilder instance for method chaining
253
- */
254
- setDistDir(distDir: string): this {
255
- this.config.distDir = distDir;
256
- return this;
257
- }
258
-
259
- /**
260
- * Sets the default metadata for pages.
261
- * This is used when a page doesn't specify its own metadata.
262
- *
263
- * @param defaultMetadata - The default metadata object
264
- * @returns The ConfigBuilder instance for method chaining
265
- */
266
- setDefaultMetadata(defaultMetadata: PageMetadataProps): this {
267
- this.config.defaultMetadata = {
268
- ...this.config.defaultMetadata,
269
- ...defaultMetadata,
270
- };
271
- return this;
272
- }
273
-
274
- /**
275
- * Sets additional paths to watch for changes during development.
276
- *
277
- * @param additionalWatchPaths - An array of additional paths to watch
278
- * @returns The ConfigBuilder instance for method chaining
279
- */
280
- setAdditionalWatchPaths(additionalWatchPaths: string[]): this {
281
- this.config.additionalWatchPaths = additionalWatchPaths;
282
- return this;
283
- }
284
-
285
- /**
286
- * Sets the processors to use for the application.
287
- * This replaces any existing processors.
288
- *
289
- * @param processors - An array of processors
290
- * @returns The ConfigBuilder instance for method chaining
291
- */
292
- setProcessors(processors: Processor<any>[]): this {
293
- this.config.processors.clear();
294
- for (const processor of processors) {
295
- this.addProcessor(processor);
296
- }
297
- return this;
298
- }
299
-
300
- /**
301
- * Adds a processor to the application.
302
- *
303
- * @param processor - The processor to add
304
- * @returns The ConfigBuilder instance for method chaining
305
- * @throws Error if a processor with the same name already exists
306
- */
307
- addProcessor(processor: Processor): this {
308
- if (this.config.processors.has(processor.name)) {
309
- throw new Error(CONFIG_BUILDER_ERRORS.duplicateProcessorName(processor.name));
310
- }
311
- this.config.processors.set(processor.name, processor);
312
- return this;
313
- }
314
-
315
- /**
316
- * Sets the loaders to use for the application.
317
- * This replaces any existing loaders.
318
- *
319
- * @param loaders - An array of build plugins to use as loaders
320
- * @returns The ConfigBuilder instance for method chaining
321
- */
322
- setLoaders(loaders: EcoBuildPlugin[]): this {
323
- this.config.loaders.clear();
324
- for (const loader of loaders) {
325
- this.addLoader(loader.name, loader);
326
- }
327
- return this;
328
- }
329
-
330
- /**
331
- * Adds a loader to the application.
332
- *
333
- * @param name - The name of the loader
334
- * @param loader - The build plugin to use as a loader
335
- * @returns The ConfigBuilder instance for method chaining
336
- * @throws Error if a loader with the same name already exists
337
- */
338
- addLoader(name: string, loader: EcoBuildPlugin): this {
339
- if (this.config.loaders.has(name)) {
340
- throw new Error(CONFIG_BUILDER_ERRORS.duplicateLoaderName(name));
341
- }
342
- this.config.loaders.set(name, loader);
343
- return this;
344
- }
345
-
346
- /**
347
- * Sets the cache configuration for ISR and page caching.
348
- *
349
- * @param cacheConfig - The cache configuration object
350
- * @returns The ConfigBuilder instance for method chaining
351
- */
352
- setCacheConfig(cacheConfig: CacheConfig): this {
353
- this.config.cache = cacheConfig;
354
- return this;
355
- }
356
-
357
- setExperimental(experimental: NonNullable<EcoPagesAppConfig['experimental']>): this {
358
- this.config.experimental = experimental;
359
- return this;
360
- }
361
-
362
- private createAbsolutePaths(config: EcoPagesAppConfig): this {
363
- const {
364
- srcDir,
365
- componentsDir,
366
- includesDir,
367
- layoutsDir,
368
- pagesDir,
369
- publicDir,
370
- distDir,
371
- includesTemplates,
372
- error404Template,
373
- } = config;
374
-
375
- const projectDir = config.rootDir;
376
-
377
- const absoluteSrcDir = path.resolve(projectDir, srcDir);
378
- const absoluteDistDir = path.resolve(projectDir, distDir);
379
-
380
- this.config.absolutePaths = {
381
- config: path.join(projectDir, 'eco.config.ts'),
382
- projectDir: projectDir,
383
- srcDir: absoluteSrcDir,
384
- distDir: absoluteDistDir,
385
- componentsDir: path.join(absoluteSrcDir, componentsDir),
386
- includesDir: path.join(absoluteSrcDir, includesDir),
387
- layoutsDir: path.join(absoluteSrcDir, layoutsDir),
388
- pagesDir: path.join(absoluteSrcDir, pagesDir),
389
- publicDir: path.join(absoluteSrcDir, publicDir),
390
- htmlTemplatePath: path.join(absoluteSrcDir, includesDir, includesTemplates.html),
391
- error404TemplatePath: path.join(absoluteSrcDir, pagesDir, error404Template),
392
- };
393
-
394
- return this;
395
- }
396
-
397
- private createIntegrationTemplatesExt(integrations: EcoPagesAppConfig['integrations']) {
398
- const integrationName = integrations.map((integration) => integration.name);
399
- const uniqueName = new Set(integrationName);
400
-
401
- invariant(integrationName.length === uniqueName.size, CONFIG_BUILDER_ERRORS.DUPLICATE_INTEGRATION_NAMES);
402
-
403
- const hasKitaJs = uniqueName.has('kitajs');
404
- const hasReact = uniqueName.has('react');
405
- if (hasKitaJs && hasReact) {
406
- appLogger.warn(CONFIG_BUILDER_ERRORS.MIXED_JSX_ENGINES);
407
- }
408
-
409
- const integrationsExtensions = integrations.flatMap((integration) => integration.extensions);
410
- const uniqueExtensions = new Set(integrationsExtensions);
411
-
412
- invariant(
413
- integrationsExtensions.length === uniqueExtensions.size,
414
- CONFIG_BUILDER_ERRORS.DUPLICATE_INTEGRATION_EXTENSIONS,
415
- );
416
-
417
- this.config.templatesExt = integrationsExtensions;
418
- }
419
-
420
- private initializeProcessors(): void {
421
- for (const processor of this.config.processors.values()) {
422
- processor.setContext(this.config);
423
- }
424
- }
425
-
426
- /**
427
- * Initializes default loaders that are required for EcoPages to function.
428
- * This includes the eco-component-meta-plugin which auto-injects __eco metadata into component configs.
429
- */
430
- private async initializeDefaultLoaders(): Promise<void> {
431
- const componentMetaPlugin = createEcoComponentMetaPlugin({ config: this.config });
432
- if (!this.config.loaders.has(componentMetaPlugin.name)) {
433
- this.config.loaders.set(componentMetaPlugin.name, componentMetaPlugin);
434
- }
435
- }
436
-
437
- private reviewBaseUrl(baseUrl: string): void {
438
- if (baseUrl) {
439
- this.config.baseUrl = baseUrl;
440
- return;
441
- }
442
-
443
- const envBaseUrl = process.env.ECOPAGES_BASE_URL;
444
-
445
- if (envBaseUrl) {
446
- this.config.baseUrl = envBaseUrl;
447
- } else if (!this.config.baseUrl) {
448
- this.config.baseUrl = `http://${DEFAULT_ECOPAGES_HOSTNAME}:${DEFAULT_ECOPAGES_PORT}`;
449
- }
450
- }
451
-
452
- /**
453
- * Builds and returns the final configuration object.
454
- * This performs validation and initialization of the configuration.
455
- *
456
- * @returns A promise that resolves to the final EcoPagesAppConfig
457
- * @throws Error if required configuration is missing (e.g., baseUrl)
458
- */
459
- async build(): Promise<EcoPagesAppConfig> {
460
- this.reviewBaseUrl(this.config.baseUrl);
461
-
462
- if (!this.config.integrations.some((integration) => integration.name === GHTML_PLUGIN_NAME)) {
463
- this.config.integrations.push(ghtmlPlugin());
464
- }
465
-
466
- this.createAbsolutePaths(this.config);
467
- this.createIntegrationTemplatesExt(this.config.integrations);
468
-
469
- await this.initializeDefaultLoaders();
470
- this.initializeProcessors();
471
-
472
- return this.config;
473
- }
474
- }
package/src/constants.ts DELETED
@@ -1,39 +0,0 @@
1
- /**
2
- * This file contains constants used throughout the project.
3
- * @module constants
4
- **/
5
-
6
- /**
7
- * Collection of status messages used in the application.
8
- */
9
- export const STATUS_MESSAGE = {
10
- 404: '404 Not Found',
11
- };
12
-
13
- /**
14
- *Variables used to determine if the app is running on Bun
15
- */
16
- export const IS_BUN = typeof Bun !== 'undefined';
17
-
18
- /**
19
- * Directory used for storing assets.
20
- */
21
- export const RESOLVED_ASSETS_DIR = 'assets';
22
-
23
- /**
24
- * Directory used for storing vendor assets.
25
- * This is a subdirectory of the assets directory.
26
- */
27
- export const RESOLVED_ASSETS_VENDORS_DIR: string = `${RESOLVED_ASSETS_DIR}/vendors`;
28
-
29
- /**
30
- * Base paths for generated project files.
31
- */
32
- export const GENERATED_BASE_PATHS = {
33
- types: 'node_modules/@types',
34
- cache: 'cache',
35
- } as const;
36
-
37
- export const DEFAULT_ECOPAGES_PORT = 3000;
38
-
39
- export const DEFAULT_ECOPAGES_HOSTNAME = 'localhost';
package/src/create-app.ts DELETED
@@ -1,87 +0,0 @@
1
- import type { EcopagesAppOptions as BunOptions } from './adapters/bun/create-app.ts';
2
- import type { EcopagesAppOptions as NodeOptions } from './adapters/node/create-app.ts';
3
- import { AbstractApplicationAdapter } from './adapters/abstract/application-adapter.ts';
4
- import type { ApiHandler } from './public-types.ts';
5
- import { SharedApplicationAdapter } from './adapters/shared/application-adapter.ts';
6
-
7
- export type EcopagesAppOptions = BunOptions | NodeOptions;
8
- export type UniversalEcopagesApp = AbstractApplicationAdapter<EcopagesAppOptions, any, Request>;
9
-
10
- async function createRuntimeApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp> {
11
- const bun = (globalThis as { Bun?: unknown }).Bun;
12
-
13
- if (bun) {
14
- const { createApp: createBunApp } = await import('./adapters/bun/create-app.ts');
15
- return (await createBunApp<WebSocketData>(options as BunOptions)) as unknown as UniversalEcopagesApp;
16
- }
17
-
18
- const { createNodeApp } = await import('./adapters/node/create-app.ts');
19
- return (await createNodeApp(options as NodeOptions)) as unknown as UniversalEcopagesApp;
20
- }
21
-
22
- export async function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp> {
23
- return createRuntimeApp<WebSocketData>(options);
24
- }
25
-
26
- export class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, unknown, Request> {
27
- private readonly appOptions: EcopagesAppOptions;
28
- private runtimeApp: UniversalEcopagesApp | null = null;
29
- private runtimeAppPromise: Promise<UniversalEcopagesApp> | null = null;
30
-
31
- constructor(options: EcopagesAppOptions) {
32
- super(options);
33
- this.appOptions = options;
34
- }
35
-
36
- private async getRuntimeApp(): Promise<UniversalEcopagesApp> {
37
- if (this.runtimeApp) {
38
- return this.runtimeApp;
39
- }
40
-
41
- if (!this.runtimeAppPromise) {
42
- this.runtimeAppPromise = createRuntimeApp({
43
- ...this.appOptions,
44
- clearOutput: false,
45
- }).then((app) => {
46
- for (const handler of this.apiHandlers) {
47
- app.add(handler as ApiHandler<string, Request, any>);
48
- }
49
-
50
- for (const route of this.staticRoutes) {
51
- app.static(route.path, route.loader);
52
- }
53
-
54
- if (this.errorHandler) {
55
- app.onError(this.errorHandler);
56
- }
57
-
58
- this.runtimeApp = app;
59
- return app;
60
- });
61
- }
62
-
63
- return this.runtimeAppPromise;
64
- }
65
-
66
- protected async initializeServerAdapter(): Promise<UniversalEcopagesApp> {
67
- return this.getRuntimeApp();
68
- }
69
-
70
- async start(): Promise<unknown> {
71
- const runtimeApp = await this.getRuntimeApp();
72
- return runtimeApp.start();
73
- }
74
-
75
- async fetch(request: Request): Promise<Response> {
76
- const runtimeApp = await this.getRuntimeApp();
77
- const candidate = runtimeApp as UniversalEcopagesApp & {
78
- fetch?: (request: Request) => Promise<Response>;
79
- };
80
-
81
- if (!candidate.fetch) {
82
- throw new Error('The selected runtime adapter does not expose fetch()');
83
- }
84
-
85
- return candidate.fetch(request);
86
- }
87
- }
@@ -1,15 +0,0 @@
1
- function defineApiHandler(handler) {
2
- return handler;
3
- }
4
- function defineGroupHandler(config) {
5
- const define = ((handler) => handler);
6
- return {
7
- prefix: config.prefix,
8
- middleware: config.middleware,
9
- routes: config.routes(define)
10
- };
11
- }
12
- export {
13
- defineApiHandler,
14
- defineGroupHandler
15
- };
@@ -1,66 +0,0 @@
1
- import type {
2
- ApiHandler,
3
- ApiHandlerContext,
4
- Middleware,
5
- RouteSchema,
6
- TypedGroupHandlerContext,
7
- } from './public-types.ts';
8
-
9
- type UniversalContext = ApiHandlerContext<Request, unknown>;
10
-
11
- type SchemaHandlerContext<
12
- TSchema extends RouteSchema | undefined,
13
- TContext extends UniversalContext,
14
- > = TSchema extends RouteSchema ? TypedGroupHandlerContext<TSchema, TContext> : TContext;
15
-
16
- export function defineApiHandler<
17
- TPath extends string,
18
- TSchema extends RouteSchema | undefined = undefined,
19
- TContext extends UniversalContext = UniversalContext,
20
- >(
21
- handler: Omit<ApiHandler<TPath, Request, unknown>, 'handler' | 'middleware' | 'schema'> & {
22
- handler: (context: SchemaHandlerContext<TSchema, TContext>) => Promise<Response> | Response;
23
- middleware?: Middleware<Request, unknown, TContext>[];
24
- schema?: TSchema;
25
- },
26
- ): ApiHandler<TPath, Request, unknown> {
27
- return handler as ApiHandler<TPath, Request, unknown>;
28
- }
29
-
30
- export interface GroupHandler<TPrefix extends string = string> {
31
- prefix: TPrefix;
32
- middleware?: readonly Middleware<Request, unknown, any>[];
33
- routes: readonly ApiHandler<string, Request, unknown>[];
34
- }
35
-
36
- type GroupDefineHandler<TContext extends UniversalContext> = <
37
- const TPath extends string,
38
- TSchema extends RouteSchema | undefined = undefined,
39
- >(
40
- handler: Omit<ApiHandler<TPath, Request, unknown>, 'handler' | 'middleware' | 'schema'> & {
41
- path: TPath;
42
- handler: (context: SchemaHandlerContext<TSchema, TContext>) => Promise<Response> | Response;
43
- middleware?: Middleware<Request, unknown, TContext>[];
44
- schema?: TSchema;
45
- },
46
- ) => ApiHandler<TPath, Request, unknown>;
47
-
48
- export function defineGroupHandler<
49
- TPrefix extends string,
50
- TMiddleware extends readonly Middleware<Request, unknown, any>[] = [],
51
- TContext extends UniversalContext = TMiddleware extends readonly Middleware<Request, unknown, infer TGroupContext>[]
52
- ? TGroupContext
53
- : UniversalContext,
54
- >(config: {
55
- prefix: TPrefix;
56
- middleware?: TMiddleware;
57
- routes: (define: GroupDefineHandler<TContext>) => readonly ApiHandler<string, Request, unknown>[];
58
- }): GroupHandler<TPrefix> {
59
- const define = ((handler) => handler) as GroupDefineHandler<TContext>;
60
-
61
- return {
62
- prefix: config.prefix,
63
- middleware: config.middleware,
64
- routes: config.routes(define),
65
- };
66
- }