@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,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
- }