@ecopages/core 0.2.0-alpha.4 → 0.2.0-alpha.6

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 (418) hide show
  1. package/README.md +213 -12
  2. package/package.json +100 -188
  3. package/src/adapters/README.md +39 -0
  4. package/src/adapters/bun/hmr-manager.test.ts +267 -0
  5. package/src/adapters/bun/hmr-manager.ts +181 -68
  6. package/src/adapters/bun/index.ts +1 -2
  7. package/src/adapters/bun/server-adapter.ts +41 -34
  8. package/src/adapters/bun/server-lifecycle.ts +40 -70
  9. package/src/adapters/index.ts +1 -1
  10. package/src/adapters/node/bootstrap-dependency-resolver.test.ts +282 -0
  11. package/src/adapters/node/bootstrap-dependency-resolver.ts +301 -0
  12. package/src/adapters/node/index.ts +7 -0
  13. package/src/adapters/node/node-client-bridge.test.ts +198 -0
  14. package/src/adapters/node/node-hmr-manager.test.ts +322 -0
  15. package/src/adapters/node/node-hmr-manager.ts +208 -116
  16. package/src/adapters/node/runtime-adapter.test.ts +868 -0
  17. package/src/adapters/node/runtime-adapter.ts +439 -0
  18. package/src/adapters/node/server-adapter.ts +31 -104
  19. package/src/adapters/node/static-content-server.test.ts +60 -0
  20. package/src/adapters/node/static-content-server.ts +36 -0
  21. package/src/adapters/node/write-runtime-manifest.ts +38 -0
  22. package/src/adapters/shared/api-response.test.ts +97 -0
  23. package/src/{define-api-handler.ts → adapters/shared/define-api-handler.ts} +1 -1
  24. package/src/adapters/shared/explicit-static-route-matcher.test.ts +381 -0
  25. package/src/adapters/shared/explicit-static-route-matcher.ts +7 -1
  26. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +90 -0
  27. package/src/adapters/shared/file-route-middleware-pipeline.ts +6 -2
  28. package/src/adapters/shared/fs-server-response-factory.test.ts +187 -0
  29. package/src/adapters/shared/fs-server-response-matcher.test.ts +286 -0
  30. package/src/adapters/shared/fs-server-response-matcher.ts +17 -10
  31. package/src/adapters/shared/hmr-entrypoint-registrar.ts +149 -0
  32. package/src/adapters/shared/hmr-html-response.ts +52 -0
  33. package/src/adapters/shared/hmr-manager.contract.test.ts +196 -0
  34. package/src/adapters/shared/hmr-manager.dispatch.test.ts +220 -0
  35. package/src/adapters/shared/render-context.test.ts +146 -0
  36. package/src/adapters/shared/render-context.ts +21 -6
  37. package/src/adapters/shared/runtime-bootstrap.ts +79 -0
  38. package/src/adapters/shared/server-adapter.test.ts +77 -0
  39. package/src/adapters/shared/server-adapter.ts +51 -4
  40. package/src/adapters/shared/server-route-handler.test.ts +110 -0
  41. package/src/adapters/shared/server-route-handler.ts +5 -18
  42. package/src/adapters/shared/server-static-builder.test.ts +316 -0
  43. package/src/adapters/shared/server-static-builder.ts +92 -8
  44. package/src/build/README.md +101 -0
  45. package/src/build/build-adapter-serialization.test.ts +268 -0
  46. package/src/build/build-adapter.test.ts +815 -0
  47. package/src/build/build-adapter.ts +235 -6
  48. package/src/build/build-manifest.ts +54 -0
  49. package/src/build/dev-build-coordinator.ts +221 -0
  50. package/src/build/esbuild-build-adapter.ts +132 -83
  51. package/src/build/runtime-build-executor.ts +34 -0
  52. package/src/build/runtime-specifier-alias-plugin.test.ts +43 -0
  53. package/src/build/runtime-specifier-alias-plugin.ts +58 -0
  54. package/src/config/README.md +33 -0
  55. package/src/config/config-builder.test.ts +410 -0
  56. package/src/config/config-builder.ts +281 -49
  57. package/src/constants.ts +15 -0
  58. package/src/declarations.d.ts +18 -13
  59. package/src/eco/README.md +70 -16
  60. package/src/eco/component-render-context.ts +39 -17
  61. package/src/eco/eco.test.ts +678 -0
  62. package/src/eco/eco.ts +29 -8
  63. package/src/eco/eco.types.ts +20 -1
  64. package/src/eco/eco.utils.test.ts +124 -0
  65. package/src/eco/global-injector-map.test.ts +42 -0
  66. package/src/eco/lazy-injector-map.test.ts +66 -0
  67. package/src/eco/module-dependencies.test.ts +30 -0
  68. package/src/errors/http-error.test.ts +134 -0
  69. package/src/global/utils.test.ts +12 -0
  70. package/src/hmr/README.md +26 -0
  71. 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
  72. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  73. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  74. package/src/hmr/client/hmr-runtime.ts +38 -7
  75. package/src/hmr/hmr-strategy.test.ts +124 -0
  76. package/src/hmr/hmr.postcss.test.e2e.ts +41 -0
  77. package/src/hmr/hmr.test.e2e.ts +29 -38
  78. package/src/hmr/strategies/js-hmr-strategy.test.ts +335 -0
  79. package/src/hmr/strategies/js-hmr-strategy.ts +115 -115
  80. package/src/index.ts +1 -1
  81. package/src/integrations/ghtml/ghtml-renderer.test.ts +63 -0
  82. package/src/integrations/ghtml/ghtml-renderer.ts +4 -1
  83. package/src/internal-types.ts +39 -19
  84. package/src/plugins/README.md +34 -0
  85. package/src/plugins/alias-resolver-plugin.test.ts +41 -0
  86. package/src/plugins/alias-resolver-plugin.ts +21 -3
  87. package/src/plugins/eco-component-meta-plugin.test.ts +380 -0
  88. package/src/plugins/eco-component-meta-plugin.ts +10 -3
  89. package/src/plugins/integration-plugin.test.ts +111 -0
  90. package/src/plugins/integration-plugin.ts +45 -3
  91. package/src/plugins/processor.test.ts +148 -0
  92. package/src/plugins/processor.ts +22 -2
  93. package/src/plugins/runtime-capability.ts +14 -0
  94. package/src/public-types.ts +73 -16
  95. package/src/route-renderer/GRAPH.md +16 -20
  96. package/src/route-renderer/README.md +8 -21
  97. package/src/route-renderer/component-graph/component-graph-executor.test.ts +41 -0
  98. package/src/route-renderer/component-graph/component-graph.test.ts +63 -0
  99. package/src/route-renderer/component-graph/component-marker.test.ts +73 -0
  100. package/src/route-renderer/component-graph/component-reference.ts +29 -0
  101. package/src/route-renderer/component-graph/marker-graph-resolver.test.ts +135 -0
  102. package/src/route-renderer/{marker-graph-resolver.ts → component-graph/marker-graph-resolver.ts} +11 -9
  103. package/src/route-renderer/orchestration/integration-renderer.test.ts +936 -0
  104. package/src/route-renderer/{integration-renderer.ts → orchestration/integration-renderer.ts} +113 -19
  105. package/src/route-renderer/orchestration/render-execution.service.test.ts +97 -0
  106. package/src/route-renderer/{render-execution.service.ts → orchestration/render-execution.service.ts} +109 -37
  107. package/src/route-renderer/orchestration/render-preparation.service.test.ts +235 -0
  108. package/src/route-renderer/{render-preparation.service.ts → orchestration/render-preparation.service.ts} +127 -9
  109. package/src/route-renderer/page-loading/dependency-resolver.test.ts +345 -0
  110. package/src/route-renderer/{dependency-resolver.ts → page-loading/dependency-resolver.ts} +28 -12
  111. package/src/route-renderer/page-loading/page-module-loader.test.ts +96 -0
  112. package/src/route-renderer/{page-module-loader.ts → page-loading/page-module-loader.ts} +49 -21
  113. package/src/route-renderer/route-renderer.ts +36 -1
  114. package/src/router/README.md +26 -0
  115. package/src/router/client/link-intent.d.ts +53 -0
  116. package/src/router/client/link-intent.test.browser.ts +51 -0
  117. package/src/router/client/link-intent.ts +92 -0
  118. package/src/router/client/navigation-coordinator.test.ts +237 -0
  119. package/src/router/client/navigation-coordinator.ts +433 -0
  120. package/src/router/server/fs-router-scanner.test.ts +83 -0
  121. package/src/router/{fs-router-scanner.ts → server/fs-router-scanner.ts} +12 -10
  122. package/src/router/server/fs-router.test.ts +214 -0
  123. package/src/router/{fs-router.ts → server/fs-router.ts} +2 -2
  124. package/src/services/README.md +29 -0
  125. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +385 -0
  126. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.ts +101 -6
  127. package/src/services/assets/asset-processing-service/asset.factory.test.ts +63 -0
  128. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.ts +2 -2
  129. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.ts +2 -1
  130. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +72 -0
  131. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +95 -0
  132. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +67 -0
  133. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +78 -0
  134. package/src/services/{asset-processing-service → assets/asset-processing-service}/index.ts +2 -0
  135. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.ts +1 -1
  136. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +59 -0
  137. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.ts +11 -5
  138. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.ts +17 -27
  139. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +286 -0
  140. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.ts +3 -3
  141. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +227 -0
  142. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.ts +5 -4
  143. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +199 -0
  144. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.ts +4 -1
  145. package/src/services/assets/browser-bundle.service.test.ts +36 -0
  146. package/src/services/assets/browser-bundle.service.ts +53 -0
  147. package/src/services/cache/index.ts +3 -3
  148. package/src/services/cache/memory-cache-store.test.ts +225 -0
  149. package/src/services/cache/memory-cache-store.ts +1 -1
  150. package/src/services/cache/page-cache-service.test.ts +175 -0
  151. package/src/services/cache/page-cache-service.ts +3 -3
  152. package/src/services/cache/page-request-cache-coordinator.service.test.ts +79 -0
  153. package/src/services/{page-request-cache-coordinator.service.ts → cache/page-request-cache-coordinator.service.ts} +9 -6
  154. package/src/services/html/html-rewriter-provider.service.test.ts +183 -0
  155. package/src/services/html/html-rewriter-provider.service.ts +103 -0
  156. package/src/services/html/html-transformer.service.test.ts +378 -0
  157. package/src/services/html/html-transformer.service.ts +279 -0
  158. package/src/services/invalidation/development-invalidation.service.test.ts +77 -0
  159. package/src/services/invalidation/development-invalidation.service.ts +261 -0
  160. package/src/services/module-loading/app-server-module-transpiler.service.ts +52 -0
  161. package/src/services/module-loading/page-module-import.service.test.ts +253 -0
  162. package/src/services/module-loading/page-module-import.service.ts +200 -0
  163. package/src/services/module-loading/server-loader.service.test.ts +161 -0
  164. package/src/services/module-loading/server-loader.service.ts +130 -0
  165. package/src/services/module-loading/server-module-transpiler.service.test.ts +115 -0
  166. package/src/services/module-loading/server-module-transpiler.service.ts +105 -0
  167. package/src/services/runtime-manifest/node-runtime-manifest.service.test.ts +95 -0
  168. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +101 -0
  169. package/src/services/runtime-state/dev-graph.service.ts +217 -0
  170. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +136 -0
  171. package/src/services/runtime-state/runtime-specifier-registry.service.ts +96 -0
  172. package/src/services/runtime-state/server-invalidation-state.service.ts +68 -0
  173. package/src/services/validation/schema-validation-service.test.ts +223 -0
  174. package/src/services/{schema-validation-service.ts → validation/schema-validation-service.ts} +1 -1
  175. package/src/static-site-generator/README.md +26 -0
  176. package/src/static-site-generator/static-site-generator.test.ts +307 -0
  177. package/src/static-site-generator/static-site-generator.ts +109 -6
  178. package/src/utils/deep-merge.test.ts +114 -0
  179. package/src/utils/invariant.test.ts +22 -0
  180. package/src/utils/path-utils.test.ts +15 -0
  181. package/src/utils/resolve-work-dir.ts +45 -0
  182. package/src/utils/server-utils.test.ts +38 -0
  183. package/src/watchers/project-watcher.integration.test.ts +337 -0
  184. package/src/watchers/project-watcher.test-helpers.ts +1 -1
  185. package/src/watchers/project-watcher.test.ts +678 -0
  186. package/src/watchers/project-watcher.ts +130 -111
  187. package/CHANGELOG.md +0 -91
  188. package/src/adapters/abstract/application-adapter.d.ts +0 -168
  189. package/src/adapters/abstract/application-adapter.js +0 -109
  190. package/src/adapters/abstract/router-adapter.d.ts +0 -26
  191. package/src/adapters/abstract/router-adapter.js +0 -5
  192. package/src/adapters/abstract/server-adapter.d.ts +0 -69
  193. package/src/adapters/abstract/server-adapter.js +0 -15
  194. package/src/adapters/bun/client-bridge.d.ts +0 -34
  195. package/src/adapters/bun/client-bridge.js +0 -48
  196. package/src/adapters/bun/create-app.d.ts +0 -60
  197. package/src/adapters/bun/create-app.js +0 -117
  198. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  199. package/src/adapters/bun/define-api-handler.js +0 -15
  200. package/src/adapters/bun/define-api-handler.ts +0 -114
  201. package/src/adapters/bun/hmr-manager.d.ts +0 -85
  202. package/src/adapters/bun/hmr-manager.js +0 -240
  203. package/src/adapters/bun/index.d.ts +0 -3
  204. package/src/adapters/bun/index.js +0 -8
  205. package/src/adapters/bun/server-adapter.d.ts +0 -155
  206. package/src/adapters/bun/server-adapter.js +0 -368
  207. package/src/adapters/bun/server-lifecycle.d.ts +0 -52
  208. package/src/adapters/bun/server-lifecycle.js +0 -120
  209. package/src/adapters/index.d.ts +0 -6
  210. package/src/adapters/index.js +0 -14
  211. package/src/adapters/node/create-app.d.ts +0 -21
  212. package/src/adapters/node/create-app.js +0 -143
  213. package/src/adapters/node/index.d.ts +0 -4
  214. package/src/adapters/node/index.js +0 -8
  215. package/src/adapters/node/node-client-bridge.d.ts +0 -26
  216. package/src/adapters/node/node-client-bridge.js +0 -66
  217. package/src/adapters/node/node-hmr-manager.d.ts +0 -63
  218. package/src/adapters/node/node-hmr-manager.js +0 -237
  219. package/src/adapters/node/server-adapter.d.ts +0 -190
  220. package/src/adapters/node/server-adapter.js +0 -420
  221. package/src/adapters/node/static-content-server.d.ts +0 -24
  222. package/src/adapters/node/static-content-server.js +0 -166
  223. package/src/adapters/shared/api-response.d.ts +0 -52
  224. package/src/adapters/shared/api-response.js +0 -96
  225. package/src/adapters/shared/application-adapter.d.ts +0 -18
  226. package/src/adapters/shared/application-adapter.js +0 -90
  227. package/src/adapters/shared/explicit-static-route-matcher.d.ts +0 -38
  228. package/src/adapters/shared/explicit-static-route-matcher.js +0 -100
  229. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +0 -65
  230. package/src/adapters/shared/file-route-middleware-pipeline.js +0 -98
  231. package/src/adapters/shared/fs-server-response-factory.d.ts +0 -19
  232. package/src/adapters/shared/fs-server-response-factory.js +0 -97
  233. package/src/adapters/shared/fs-server-response-matcher.d.ts +0 -71
  234. package/src/adapters/shared/fs-server-response-matcher.js +0 -155
  235. package/src/adapters/shared/render-context.d.ts +0 -14
  236. package/src/adapters/shared/render-context.js +0 -69
  237. package/src/adapters/shared/server-adapter.d.ts +0 -87
  238. package/src/adapters/shared/server-adapter.js +0 -353
  239. package/src/adapters/shared/server-route-handler.d.ts +0 -89
  240. package/src/adapters/shared/server-route-handler.js +0 -120
  241. package/src/adapters/shared/server-static-builder.d.ts +0 -38
  242. package/src/adapters/shared/server-static-builder.js +0 -46
  243. package/src/build/build-adapter.d.ts +0 -74
  244. package/src/build/build-adapter.js +0 -54
  245. package/src/build/build-types.d.ts +0 -57
  246. package/src/build/build-types.js +0 -0
  247. package/src/build/esbuild-build-adapter.d.ts +0 -69
  248. package/src/build/esbuild-build-adapter.js +0 -390
  249. package/src/config/config-builder.d.ts +0 -227
  250. package/src/config/config-builder.js +0 -392
  251. package/src/constants.d.ts +0 -32
  252. package/src/constants.js +0 -21
  253. package/src/create-app.d.ts +0 -17
  254. package/src/create-app.js +0 -66
  255. package/src/define-api-handler.d.ts +0 -25
  256. package/src/define-api-handler.js +0 -15
  257. package/src/dev/sc-server.d.ts +0 -30
  258. package/src/dev/sc-server.js +0 -111
  259. package/src/eco/component-render-context.d.ts +0 -105
  260. package/src/eco/component-render-context.js +0 -77
  261. package/src/eco/eco.d.ts +0 -9
  262. package/src/eco/eco.js +0 -110
  263. package/src/eco/eco.types.d.ts +0 -170
  264. package/src/eco/eco.types.js +0 -0
  265. package/src/eco/eco.utils.d.ts +0 -40
  266. package/src/eco/eco.utils.js +0 -40
  267. package/src/eco/global-injector-map.d.ts +0 -16
  268. package/src/eco/global-injector-map.js +0 -80
  269. package/src/eco/lazy-injector-map.d.ts +0 -8
  270. package/src/eco/lazy-injector-map.js +0 -70
  271. package/src/eco/module-dependencies.d.ts +0 -18
  272. package/src/eco/module-dependencies.js +0 -49
  273. package/src/errors/http-error.d.ts +0 -31
  274. package/src/errors/http-error.js +0 -50
  275. package/src/errors/index.d.ts +0 -2
  276. package/src/errors/index.js +0 -4
  277. package/src/errors/locals-access-error.d.ts +0 -4
  278. package/src/errors/locals-access-error.js +0 -9
  279. package/src/global/app-logger.d.ts +0 -2
  280. package/src/global/app-logger.js +0 -6
  281. package/src/hmr/client/hmr-runtime.d.ts +0 -10
  282. package/src/hmr/client/hmr-runtime.js +0 -86
  283. package/src/hmr/hmr-strategy.d.ts +0 -159
  284. package/src/hmr/hmr-strategy.js +0 -29
  285. package/src/hmr/hmr.test.e2e.d.ts +0 -1
  286. package/src/hmr/hmr.test.e2e.js +0 -50
  287. package/src/hmr/strategies/default-hmr-strategy.d.ts +0 -43
  288. package/src/hmr/strategies/default-hmr-strategy.js +0 -34
  289. package/src/hmr/strategies/js-hmr-strategy.d.ts +0 -136
  290. package/src/hmr/strategies/js-hmr-strategy.js +0 -188
  291. package/src/index.browser.d.ts +0 -3
  292. package/src/index.browser.js +0 -4
  293. package/src/index.d.ts +0 -5
  294. package/src/index.js +0 -10
  295. package/src/integrations/ghtml/ghtml-renderer.d.ts +0 -15
  296. package/src/integrations/ghtml/ghtml-renderer.js +0 -60
  297. package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -20
  298. package/src/integrations/ghtml/ghtml.plugin.js +0 -21
  299. package/src/internal-types.d.ts +0 -200
  300. package/src/internal-types.js +0 -0
  301. package/src/plugins/alias-resolver-plugin.d.ts +0 -2
  302. package/src/plugins/alias-resolver-plugin.js +0 -39
  303. package/src/plugins/eco-component-meta-plugin.d.ts +0 -95
  304. package/src/plugins/eco-component-meta-plugin.js +0 -157
  305. package/src/plugins/integration-plugin.d.ts +0 -102
  306. package/src/plugins/integration-plugin.js +0 -100
  307. package/src/plugins/processor.d.ts +0 -82
  308. package/src/plugins/processor.js +0 -122
  309. package/src/public-types.d.ts +0 -1098
  310. package/src/public-types.js +0 -0
  311. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  312. package/src/route-renderer/component-graph-executor.js +0 -31
  313. package/src/route-renderer/component-graph.d.ts +0 -42
  314. package/src/route-renderer/component-graph.js +0 -72
  315. package/src/route-renderer/component-marker.d.ts +0 -52
  316. package/src/route-renderer/component-marker.js +0 -46
  317. package/src/route-renderer/dependency-resolver.d.ts +0 -24
  318. package/src/route-renderer/dependency-resolver.js +0 -428
  319. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  320. package/src/route-renderer/html-post-processing.service.js +0 -86
  321. package/src/route-renderer/html-post-processing.service.ts +0 -103
  322. package/src/route-renderer/integration-renderer.d.ts +0 -339
  323. package/src/route-renderer/integration-renderer.js +0 -526
  324. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  325. package/src/route-renderer/marker-graph-resolver.js +0 -93
  326. package/src/route-renderer/page-module-loader.d.ts +0 -61
  327. package/src/route-renderer/page-module-loader.js +0 -102
  328. package/src/route-renderer/render-execution.service.d.ts +0 -69
  329. package/src/route-renderer/render-execution.service.js +0 -91
  330. package/src/route-renderer/render-preparation.service.d.ts +0 -112
  331. package/src/route-renderer/render-preparation.service.js +0 -243
  332. package/src/route-renderer/route-renderer.d.ts +0 -26
  333. package/src/route-renderer/route-renderer.js +0 -68
  334. package/src/router/fs-router-scanner.d.ts +0 -41
  335. package/src/router/fs-router-scanner.js +0 -155
  336. package/src/router/fs-router.d.ts +0 -26
  337. package/src/router/fs-router.js +0 -100
  338. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  339. package/src/services/asset-processing-service/asset-processing.service.js +0 -250
  340. package/src/services/asset-processing-service/asset.factory.d.ts +0 -17
  341. package/src/services/asset-processing-service/asset.factory.js +0 -82
  342. package/src/services/asset-processing-service/assets.types.d.ts +0 -88
  343. package/src/services/asset-processing-service/assets.types.js +0 -0
  344. package/src/services/asset-processing-service/index.d.ts +0 -3
  345. package/src/services/asset-processing-service/index.js +0 -3
  346. package/src/services/asset-processing-service/processor.interface.d.ts +0 -22
  347. package/src/services/asset-processing-service/processor.interface.js +0 -6
  348. package/src/services/asset-processing-service/processor.registry.d.ts +0 -8
  349. package/src/services/asset-processing-service/processor.registry.js +0 -15
  350. package/src/services/asset-processing-service/processors/base/base-processor.d.ts +0 -24
  351. package/src/services/asset-processing-service/processors/base/base-processor.js +0 -59
  352. package/src/services/asset-processing-service/processors/base/base-script-processor.d.ts +0 -16
  353. package/src/services/asset-processing-service/processors/base/base-script-processor.js +0 -80
  354. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  355. package/src/services/asset-processing-service/processors/index.js +0 -5
  356. package/src/services/asset-processing-service/processors/script/content-script.processor.d.ts +0 -5
  357. package/src/services/asset-processing-service/processors/script/content-script.processor.js +0 -57
  358. package/src/services/asset-processing-service/processors/script/file-script.processor.d.ts +0 -8
  359. package/src/services/asset-processing-service/processors/script/file-script.processor.js +0 -76
  360. package/src/services/asset-processing-service/processors/script/node-module-script.processor.d.ts +0 -7
  361. package/src/services/asset-processing-service/processors/script/node-module-script.processor.js +0 -74
  362. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -5
  363. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +0 -25
  364. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -9
  365. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +0 -63
  366. package/src/services/cache/cache.types.d.ts +0 -107
  367. package/src/services/cache/cache.types.js +0 -0
  368. package/src/services/cache/index.d.ts +0 -7
  369. package/src/services/cache/index.js +0 -7
  370. package/src/services/cache/memory-cache-store.d.ts +0 -42
  371. package/src/services/cache/memory-cache-store.js +0 -98
  372. package/src/services/cache/page-cache-service.d.ts +0 -70
  373. package/src/services/cache/page-cache-service.js +0 -152
  374. package/src/services/html-transformer.service.d.ts +0 -50
  375. package/src/services/html-transformer.service.js +0 -163
  376. package/src/services/html-transformer.service.ts +0 -217
  377. package/src/services/page-module-import.service.d.ts +0 -37
  378. package/src/services/page-module-import.service.js +0 -88
  379. package/src/services/page-module-import.service.ts +0 -129
  380. package/src/services/page-request-cache-coordinator.service.d.ts +0 -75
  381. package/src/services/page-request-cache-coordinator.service.js +0 -107
  382. package/src/services/schema-validation-service.d.ts +0 -122
  383. package/src/services/schema-validation-service.js +0 -101
  384. package/src/services/validation/standard-schema.types.d.ts +0 -65
  385. package/src/services/validation/standard-schema.types.js +0 -0
  386. package/src/static-site-generator/static-site-generator.d.ts +0 -57
  387. package/src/static-site-generator/static-site-generator.js +0 -272
  388. package/src/utils/css.d.ts +0 -1
  389. package/src/utils/css.js +0 -7
  390. package/src/utils/deep-merge.d.ts +0 -14
  391. package/src/utils/deep-merge.js +0 -32
  392. package/src/utils/hash.d.ts +0 -1
  393. package/src/utils/hash.js +0 -7
  394. package/src/utils/html.d.ts +0 -1
  395. package/src/utils/html.js +0 -4
  396. package/src/utils/invariant.d.ts +0 -5
  397. package/src/utils/invariant.js +0 -11
  398. package/src/utils/locals-utils.d.ts +0 -15
  399. package/src/utils/locals-utils.js +0 -24
  400. package/src/utils/parse-cli-args.d.ts +0 -24
  401. package/src/utils/parse-cli-args.js +0 -47
  402. package/src/utils/path-utils.module.d.ts +0 -5
  403. package/src/utils/path-utils.module.js +0 -14
  404. package/src/utils/runtime.d.ts +0 -11
  405. package/src/utils/runtime.js +0 -40
  406. package/src/utils/server-utils.module.d.ts +0 -19
  407. package/src/utils/server-utils.module.js +0 -56
  408. package/src/watchers/project-watcher.d.ts +0 -125
  409. package/src/watchers/project-watcher.js +0 -265
  410. package/src/watchers/project-watcher.test-helpers.d.ts +0 -4
  411. package/src/watchers/project-watcher.test-helpers.js +0 -52
  412. /package/src/route-renderer/{component-graph-executor.ts → component-graph/component-graph-executor.ts} +0 -0
  413. /package/src/route-renderer/{component-graph.ts → component-graph/component-graph.ts} +0 -0
  414. /package/src/route-renderer/{component-marker.ts → component-graph/component-marker.ts} +0 -0
  415. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.ts +0 -0
  416. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/index.ts +0 -0
  417. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.ts +0 -0
  418. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.ts +0 -0
@@ -1,188 +0,0 @@
1
- import path from "node:path";
2
- import { fileSystem } from "@ecopages/file-system";
3
- import { HmrStrategy, HmrStrategyType } from "../hmr-strategy";
4
- import { appLogger } from "../../global/app-logger";
5
- import { defaultBuildAdapter } from "../../build/build-adapter.js";
6
- class JsHmrStrategy extends HmrStrategy {
7
- constructor(context) {
8
- super();
9
- this.context = context;
10
- }
11
- type = HmrStrategyType.SCRIPT;
12
- /**
13
- * Determines if the file is a JS/TS file that could affect registered entrypoints.
14
- *
15
- * Matches if:
16
- * 1. There are registered entrypoints to rebuild
17
- * 2. The changed file is a JS/TS file in the src directory
18
- *
19
- * @param filePath - Absolute path to the changed file
20
- * @returns True if this file should trigger entrypoint rebuilds
21
- */
22
- matches(filePath) {
23
- const watchedFiles = this.context.getWatchedFiles();
24
- const isJsTs = /\.(ts|tsx|js|jsx)$/.test(filePath);
25
- const isInSrc = filePath.startsWith(this.context.getSrcDir());
26
- if (watchedFiles.size === 0) {
27
- return false;
28
- }
29
- if (!isJsTs || !isInSrc) {
30
- return false;
31
- }
32
- if (watchedFiles.has(filePath)) {
33
- return true;
34
- }
35
- if (this.context.getDependencyEntrypoints) {
36
- return this.context.getDependencyEntrypoints(filePath).size > 0;
37
- }
38
- return true;
39
- }
40
- /**
41
- * Processes a file change by rebuilding affected entrypoints.
42
- *
43
- * @param filePath - Absolute path to the changed file
44
- *
45
- * @remarks
46
- * If runtime-specific dependency graph hooks are unavailable, this strategy
47
- * falls back to rebuilding all watched entrypoints.
48
- * @returns Action to broadcast update events
49
- */
50
- async process(filePath) {
51
- appLogger.debug(`[JsHmrStrategy] Processing ${filePath}`);
52
- const watchedFiles = this.context.getWatchedFiles();
53
- if (watchedFiles.size === 0) {
54
- appLogger.debug(`[JsHmrStrategy] No watched files to rebuild`);
55
- return { type: "none" };
56
- }
57
- const updates = [];
58
- let reloadRequired = false;
59
- const dependencyHits = this.context.getDependencyEntrypoints?.(filePath) ?? /* @__PURE__ */ new Set();
60
- const hasDependencyHit = dependencyHits.size > 0;
61
- const impactedEntrypoints = hasDependencyHit ? Array.from(dependencyHits).filter((entrypoint) => watchedFiles.has(entrypoint)) : Array.from(watchedFiles.keys());
62
- if (!hasDependencyHit) {
63
- appLogger.debug("[JsHmrStrategy] Dependency graph miss, rebuilding all watched entrypoints");
64
- }
65
- for (const entrypoint of impactedEntrypoints) {
66
- const outputUrl = watchedFiles.get(entrypoint);
67
- if (!outputUrl) {
68
- continue;
69
- }
70
- const result = await this.bundleEntrypoint(entrypoint, outputUrl);
71
- if (result.success) {
72
- if (result.dependencies && this.context.setEntrypointDependencies) {
73
- this.context.setEntrypointDependencies(entrypoint, result.dependencies);
74
- }
75
- updates.push(outputUrl);
76
- if (result.requiresReload) {
77
- reloadRequired = true;
78
- }
79
- }
80
- }
81
- if (updates.length > 0) {
82
- if (reloadRequired) {
83
- appLogger.debug(`[JsHmrStrategy] Full reload required (no HMR accept found)`);
84
- return {
85
- type: "broadcast",
86
- events: [
87
- {
88
- type: "reload"
89
- }
90
- ]
91
- };
92
- }
93
- return {
94
- type: "broadcast",
95
- events: updates.map((path2) => ({
96
- type: "update",
97
- path: path2,
98
- timestamp: Date.now()
99
- }))
100
- };
101
- }
102
- return { type: "none" };
103
- }
104
- /**
105
- * Bundles a single entrypoint and processes the output.
106
- *
107
- * @param entrypointPath - Absolute path to the source file
108
- * @param outputUrl - URL path for the bundled file
109
- * @returns True if bundling was successful
110
- */
111
- async bundleEntrypoint(entrypointPath, outputUrl) {
112
- try {
113
- const srcDir = this.context.getSrcDir();
114
- const relativePath = path.relative(srcDir, entrypointPath);
115
- const relativePathJs = relativePath.replace(/\.(tsx?|jsx?)$/, ".js");
116
- const outputPath = path.join(this.context.getDistDir(), relativePathJs);
117
- const result = await defaultBuildAdapter.build({
118
- entrypoints: [entrypointPath],
119
- outdir: this.context.getDistDir(),
120
- naming: relativePathJs,
121
- ...defaultBuildAdapter.getTranspileOptions("hmr-entrypoint"),
122
- plugins: this.context.getPlugins(),
123
- minify: false,
124
- external: ["react", "react-dom"]
125
- });
126
- if (!result.success) {
127
- appLogger.error(`[JsHmrStrategy] Failed to build ${entrypointPath}:`, result.logs);
128
- return { success: false, requiresReload: false, dependencies: void 0 };
129
- }
130
- const dependencyGraph = result.dependencyGraph?.entrypoints?.[path.resolve(entrypointPath)] ?? [];
131
- const output = await this.processOutput(outputPath, outputUrl);
132
- return {
133
- ...output,
134
- dependencies: dependencyGraph
135
- };
136
- } catch (error) {
137
- appLogger.error(`[JsHmrStrategy] Error bundling ${entrypointPath}:`, error);
138
- return { success: false, requiresReload: false, dependencies: void 0 };
139
- }
140
- }
141
- /**
142
- * Processes bundled output by replacing specifiers and injecting HMR code.
143
- *
144
- * @param filepath - Path to the bundled output file
145
- * @param url - URL path for the bundled file
146
- * @returns True if processing was successful and update should be broadcast
147
- */
148
- async processOutput(filepath, url) {
149
- try {
150
- let code = await fileSystem.readFile(filepath);
151
- if (code.includes("/* [ecopages] hmr */")) {
152
- return { success: true, requiresReload: !code.includes("import.meta.hot.accept") };
153
- }
154
- code = this.replaceBareSpecifiers(code);
155
- await fileSystem.writeAsync(filepath, code);
156
- appLogger.debug(`[JsHmrStrategy] Processed ${url}`);
157
- const hasHmrAccept = code.includes("import.meta.hot.accept");
158
- return { success: true, requiresReload: !hasHmrAccept };
159
- } catch (error) {
160
- appLogger.error(`[JsHmrStrategy] Error processing output for ${url}:`, error);
161
- return { success: false, requiresReload: false };
162
- }
163
- }
164
- /**
165
- * Replaces bare specifiers with vendor URLs.
166
- *
167
- * Handles both static imports and dynamic imports.
168
- *
169
- * @param code - The bundled code to transform
170
- * @returns The transformed code with vendor URLs
171
- */
172
- replaceBareSpecifiers(code) {
173
- const specifierMap = this.context.getSpecifierMap();
174
- if (specifierMap.size === 0) {
175
- return code;
176
- }
177
- let result = code;
178
- for (const [bareSpec, vendorUrl] of specifierMap.entries()) {
179
- const escaped = bareSpec.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
180
- result = result.replace(new RegExp(`from\\s*["']${escaped}["']`, "g"), `from "${vendorUrl}"`);
181
- result = result.replace(new RegExp(`import\\(["']${escaped}["']\\)`, "g"), `import("${vendorUrl}")`);
182
- }
183
- return result;
184
- }
185
- }
186
- export {
187
- JsHmrStrategy
188
- };
@@ -1,3 +0,0 @@
1
- export type * from './public-types.js';
2
- export type * from './eco/eco.types.js';
3
- export { eco } from './eco/eco.js';
@@ -1,4 +0,0 @@
1
- import { eco } from "./eco/eco.js";
2
- export {
3
- eco
4
- };
package/src/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export type * from './public-types.js';
2
- export type * from './eco/eco.types.js';
3
- export { eco } from './eco/eco.js';
4
- export { EcopagesApp, createApp, type EcopagesAppOptions } from './create-app.js';
5
- export { defineApiHandler, defineGroupHandler, type GroupHandler } from './define-api-handler.js';
package/src/index.js DELETED
@@ -1,10 +0,0 @@
1
- import { eco } from "./eco/eco.js";
2
- import { EcopagesApp, createApp } from "./create-app.js";
3
- import { defineApiHandler, defineGroupHandler } from "./define-api-handler.js";
4
- export {
5
- EcopagesApp,
6
- createApp,
7
- defineApiHandler,
8
- defineGroupHandler,
9
- eco
10
- };
@@ -1,15 +0,0 @@
1
- /**
2
- * This module contains the ghtml renderer
3
- * @module
4
- */
5
- import type { EcoComponent, EcoPagesElement, IntegrationRendererRenderOptions, RouteRendererBody } from '../../public-types.js';
6
- import { IntegrationRenderer, type RenderToResponseContext } from '../../route-renderer/integration-renderer.js';
7
- /**
8
- * A renderer for the ghtml integration.
9
- * It renders a page using the HtmlTemplate and Page components.
10
- */
11
- export declare class GhtmlRenderer extends IntegrationRenderer<EcoPagesElement> {
12
- name: string;
13
- render({ params, query, props, locals, pageLocals, metadata, Page, Layout, HtmlTemplate, }: IntegrationRendererRenderOptions): Promise<RouteRendererBody>;
14
- renderToResponse<P = Record<string, unknown>>(view: EcoComponent<P>, props: P, ctx: RenderToResponseContext): Promise<Response>;
15
- }
@@ -1,60 +0,0 @@
1
- import { IntegrationRenderer } from "../../route-renderer/integration-renderer.js";
2
- import { GHTML_PLUGIN_NAME } from "./ghtml.plugin.js";
3
- class GhtmlRenderer extends IntegrationRenderer {
4
- name = GHTML_PLUGIN_NAME;
5
- async render({
6
- params,
7
- query,
8
- props,
9
- locals,
10
- pageLocals,
11
- metadata,
12
- Page,
13
- Layout,
14
- HtmlTemplate
15
- }) {
16
- try {
17
- const pageContent = await Page({ params, query, ...props, locals: pageLocals });
18
- const children = Layout && typeof Layout === "function" ? await Layout({ children: pageContent, locals }) : pageContent;
19
- const body = await HtmlTemplate({
20
- metadata,
21
- children,
22
- pageProps: props || {}
23
- });
24
- return this.DOC_TYPE + body;
25
- } catch (error) {
26
- throw this.createRenderError("Error rendering page", error);
27
- }
28
- }
29
- async renderToResponse(view, props, ctx) {
30
- try {
31
- const Layout = view.config?.layout;
32
- const viewFn = view;
33
- const pageContent = await viewFn(props);
34
- let body;
35
- if (ctx.partial) {
36
- body = pageContent;
37
- } else {
38
- const children = Layout ? await Layout({ children: pageContent }) : pageContent;
39
- const HtmlTemplate = await this.getHtmlTemplate();
40
- const metadata = view.metadata ? await view.metadata({
41
- params: {},
42
- query: {},
43
- props,
44
- appConfig: this.appConfig
45
- }) : this.appConfig.defaultMetadata;
46
- body = this.DOC_TYPE + await HtmlTemplate({
47
- metadata,
48
- children,
49
- pageProps: props
50
- });
51
- }
52
- return this.createHtmlResponse(body, ctx);
53
- } catch (error) {
54
- throw this.createRenderError("Error rendering view", error);
55
- }
56
- }
57
- }
58
- export {
59
- GhtmlRenderer
60
- };
@@ -1,20 +0,0 @@
1
- import { IntegrationPlugin, type IntegrationPluginConfig } from '../../plugins/integration-plugin';
2
- import { GhtmlRenderer } from './ghtml-renderer';
3
- /**
4
- * The name of the ghtml plugin
5
- */
6
- export declare const GHTML_PLUGIN_NAME = "ghtml";
7
- /**
8
- * The Ghtml plugin class
9
- * This plugin provides support for ghtml components in Ecopages
10
- */
11
- export declare class GhtmlPlugin extends IntegrationPlugin {
12
- renderer: typeof GhtmlRenderer;
13
- constructor(options?: Omit<IntegrationPluginConfig, 'name'>);
14
- }
15
- /**
16
- * Factory function to create a Ghtml plugin instance
17
- * @param options Configuration options for the Ghtml plugin
18
- * @returns A new GhtmlPlugin instance
19
- */
20
- export declare function ghtmlPlugin(options?: Omit<IntegrationPluginConfig, 'name'>): GhtmlPlugin;
@@ -1,21 +0,0 @@
1
- import { IntegrationPlugin } from "../../plugins/integration-plugin";
2
- import { GhtmlRenderer } from "./ghtml-renderer";
3
- const GHTML_PLUGIN_NAME = "ghtml";
4
- class GhtmlPlugin extends IntegrationPlugin {
5
- renderer = GhtmlRenderer;
6
- constructor(options) {
7
- super({
8
- name: GHTML_PLUGIN_NAME,
9
- extensions: [".ghtml.ts", ".ghtml.tsx", ".ghtml"],
10
- ...options
11
- });
12
- }
13
- }
14
- function ghtmlPlugin(options) {
15
- return new GhtmlPlugin(options);
16
- }
17
- export {
18
- GHTML_PLUGIN_NAME,
19
- GhtmlPlugin,
20
- ghtmlPlugin
21
- };
@@ -1,200 +0,0 @@
1
- import type { EcoBuildPlugin } from './build/build-types.js';
2
- import type { IntegrationPlugin } from './plugins/integration-plugin.js';
3
- import type { Processor } from './plugins/processor.js';
4
- import type { PageMetadataProps } from './public-types.js';
5
- import type { FSRouter } from './router/fs-router.js';
6
- import type { CacheConfig } from './services/cache/cache.types.js';
7
- /**
8
- * The templates used to build the pages and loaded via the includes directory.
9
- */
10
- export type IncludesTemplates = {
11
- head: string;
12
- html: string;
13
- seo: string;
14
- };
15
- export interface RobotsPreference {
16
- /**
17
- * The user agent
18
- * If an empty array is provided, it will enable all paths for the user agent
19
- * If a path is provided, it will disallow the path for the user agent
20
- */
21
- [key: string]: string[];
22
- }
23
- /**
24
- * Represents the complete configuration object for EcoPages.
25
- */
26
- export type EcoPagesAppConfig = {
27
- /**
28
- * The base URL of the website, localhost or the domain
29
- */
30
- baseUrl: string;
31
- /**
32
- * The root directory of the project
33
- * @default "."
34
- */
35
- rootDir: string;
36
- /**
37
- * The root directory of the project
38
- * @default "src"
39
- */
40
- srcDir: string;
41
- /**
42
- * The directory where the public files are located
43
- * @default "public"
44
- */
45
- publicDir: string;
46
- /**
47
- * The directory where the pages are located
48
- * @default "pages"
49
- */
50
- pagesDir: string;
51
- /**
52
- * The directory where the includes templates are located
53
- * @default "includes"
54
- */
55
- includesDir: string;
56
- /**
57
- * The directory where the layouts are located
58
- * @default "layouts"
59
- */
60
- layoutsDir: string;
61
- /**
62
- * The templates used for the pages
63
- * @default "{head: 'head.kita.tsx', html: 'html.kita.tsx', seo: 'seo.kita.tsx'}"
64
- */
65
- includesTemplates: IncludesTemplates;
66
- /** Error 404 page
67
- * @default "404.kita.tsx"
68
- */
69
- error404Template: string;
70
- /**
71
- * The directory where the output will be located
72
- * @default "dist"
73
- */
74
- distDir: string;
75
- /**
76
- * The templates extensions based on the integrations
77
- */
78
- templatesExt: string[];
79
- /**
80
- * The directory where the components are located
81
- * @default "components"
82
- */
83
- componentsDir: string;
84
- /**
85
- * The robots.txt configuration
86
- */
87
- robotsTxt: {
88
- /**
89
- * The robots preferences. The key is the user agent and the value is the disallowed paths.
90
- * @default { "*": [] }
91
- */
92
- preferences: RobotsPreference;
93
- };
94
- /** Additional paths to watch. Use this to monitor extra files. It is relative to the rootDir */
95
- additionalWatchPaths: string[];
96
- /**
97
- * @default { title: 'Ecopages', description: 'Ecopages' }
98
- */
99
- defaultMetadata: PageMetadataProps;
100
- /** Integrations plugins */
101
- integrations: IntegrationPlugin[];
102
- /** Integrations dependencies */
103
- integrationsDependencies: IntegrationDependencyConfig[];
104
- /** Derived Paths */
105
- absolutePaths: {
106
- config: string;
107
- componentsDir: string;
108
- distDir: string;
109
- includesDir: string;
110
- layoutsDir: string;
111
- pagesDir: string;
112
- projectDir: string;
113
- publicDir: string;
114
- srcDir: string;
115
- htmlTemplatePath: string;
116
- error404TemplatePath: string;
117
- };
118
- /**
119
- * The processors to be used in the app
120
- */
121
- processors: Map<string, Processor>;
122
- /**
123
- * Loaders to be used in the app, these are used to process the files when importing them
124
- */
125
- loaders: Map<string, EcoBuildPlugin>;
126
- /**
127
- * Cache configuration for ISR and page caching.
128
- * @default { store: 'memory', defaultStrategy: 'static', enabled: true }
129
- */
130
- cache?: CacheConfig;
131
- /**
132
- * Experimental features.
133
- */
134
- experimental?: {
135
- /** Escape hatch for short-lived private toggles. No validation or IntelliSense. */
136
- unsafe?: Record<string, unknown>;
137
- };
138
- };
139
- export type IntegrationDependencyConfig = {
140
- integration: string;
141
- kind: 'script' | 'stylesheet';
142
- position?: 'head' | 'body';
143
- srcUrl: string;
144
- filePath: string;
145
- /** @todo inline dependencies not implemented yet */
146
- inline?: boolean;
147
- };
148
- /**
149
- * The possible kinds of a route.
150
- */
151
- export type RouteKind = 'exact' | 'catch-all' | 'dynamic';
152
- /**
153
- * Represents the result of a route match.
154
- */
155
- export type MatchResult = {
156
- filePath: string;
157
- kind: RouteKind;
158
- pathname: string;
159
- query?: Record<string, string>;
160
- params?: Record<string, string | string[]>;
161
- };
162
- /**
163
- * Represents a route in EcoPages.
164
- */
165
- export type Route = {
166
- kind: RouteKind;
167
- filePath: string;
168
- pathname: string;
169
- };
170
- /**
171
- * Represents the routes in EcoPages.
172
- */
173
- export type Routes = Record<string, Route>;
174
- /**
175
- * Represents the options for the file system server.
176
- */
177
- export type FileSystemServerOptions = {
178
- watchMode: boolean;
179
- port?: number | string;
180
- };
181
- /**
182
- * Represents the file system server adapter.
183
- */
184
- export interface EcoPagesFileSystemServerAdapter<ServerInstanceOptions = unknown> {
185
- startServer(serverOptions: ServerInstanceOptions): {
186
- router: FSRouter;
187
- server: unknown;
188
- } | Promise<{
189
- router: FSRouter;
190
- server: unknown;
191
- }>;
192
- }
193
- export interface ProcessorPlugin {
194
- name: string;
195
- description?: string;
196
- setup(): Promise<void>;
197
- process<T = unknown>(input: T): Promise<T>;
198
- teardown?(): Promise<void>;
199
- }
200
- export type { ClientBridgeEvent, DefaultHmrContext, IHmrManager, IClientBridge } from './public-types.js';
File without changes
@@ -1,2 +0,0 @@
1
- import type { EcoBuildPlugin } from '../build/build-types.js';
2
- export declare function createAliasResolverPlugin(srcDir: string): EcoBuildPlugin;
@@ -1,39 +0,0 @@
1
- import { existsSync } from "node:fs";
2
- import path from "node:path";
3
- const RESOLVABLE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".mdx", ".css", ".scss", ".sass", ".less"];
4
- function findResolvablePath(candidate) {
5
- if (path.extname(candidate)) {
6
- return existsSync(candidate) ? candidate : void 0;
7
- }
8
- for (const extension of RESOLVABLE_EXTENSIONS) {
9
- const fileCandidate = `${candidate}${extension}`;
10
- if (existsSync(fileCandidate)) {
11
- return fileCandidate;
12
- }
13
- }
14
- for (const extension of RESOLVABLE_EXTENSIONS) {
15
- const indexCandidate = path.join(candidate, `index${extension}`);
16
- if (existsSync(indexCandidate)) {
17
- return indexCandidate;
18
- }
19
- }
20
- return void 0;
21
- }
22
- function createAliasResolverPlugin(srcDir) {
23
- return {
24
- name: "ecopages-alias-resolver",
25
- setup(build) {
26
- build.onResolve({ filter: /^@\// }, (args) => {
27
- const candidate = path.join(srcDir, args.path.slice(2));
28
- const resolved = findResolvablePath(candidate);
29
- if (resolved) {
30
- return { path: resolved };
31
- }
32
- return {};
33
- });
34
- }
35
- };
36
- }
37
- export {
38
- createAliasResolverPlugin
39
- };
@@ -1,95 +0,0 @@
1
- /**
2
- * Bun plugin that auto-injects `__eco` metadata into EcoComponent config objects.
3
- *
4
- * This plugin uses AST parsing (via oxc-parser) to reliably inject the `__eco` property
5
- * into EcoComponent config objects at import time. The injected metadata contains:
6
- * - `dir`: The directory path of the component file (used for dependency resolution)
7
- * - `integration`: The integration type (e.g., 'react', 'kitajs', 'ghtml', 'lit')
8
- *
9
- * The plugin intercepts file loading for all configured integration extensions and
10
- * transforms component configs before they are executed.
11
- *
12
- * @example
13
- * ```typescript
14
- * // Before transformation:
15
- * export default eco.page({
16
- * render: () => '<div>Hello</div>',
17
- * });
18
- *
19
- * // After transformation:
20
- * export default eco.page({
21
- * __eco: { id: "<hash>", file: "/path/to/pages/index.tsx", integration: "react" },
22
- * render: () => '<div>Hello</div>',
23
- * });
24
- * ```
25
- *
26
- * @module eco-component-meta-plugin
27
- */
28
- import type { EcoBuildPlugin } from '../build/build-types.js';
29
- import type { EcoPagesAppConfig } from '../internal-types.js';
30
- /**
31
- * Options for creating the eco-component-meta-plugin.
32
- */
33
- export interface EcoComponentDirPluginOptions {
34
- /** The EcoPages application configuration containing integration settings */
35
- config: EcoPagesAppConfig;
36
- }
37
- /**
38
- * Creates a build plugin that auto-injects `__eco` metadata into EcoComponent config objects.
39
- *
40
- * This plugin intercepts file loading for all integration-compatible files and:
41
- * 1. Strips any query string from the file path (for dev mode cache-busting)
42
- * 2. Reads the file contents
43
- * 3. Parses the AST using oxc-parser to find injection points
44
- * 4. Injects `__eco: { id: "...", file: "...", integration: "..." }` into config objects
45
- * 5. Returns the transformed content with the appropriate loader
46
- *
47
- * Supported patterns:
48
- * - `eco.page({ ... })` - Page component declarations
49
- * - `eco.component({ ... })` - Reusable component declarations
50
- * - `Component.config = { ... }` - Config assignment pattern
51
- * - `config: { ... }` - Config property in object literals
52
- * - `export const config = { ... }` - Exported config declarations
53
- *
54
- * @param options - Plugin options containing the EcoPages config
55
- * @returns A build plugin instance ready for registration
56
- *
57
- * @example
58
- * ```typescript
59
- * import { createEcoComponentMetaPlugin } from '@ecopages/core';
60
- *
61
- * const plugin = createEcoComponentMetaPlugin({ config: appConfig });
62
- * appConfig.loaders.set(plugin.name, plugin);
63
- * ```
64
- */
65
- export declare function createEcoComponentMetaPlugin(options: EcoComponentDirPluginOptions): EcoBuildPlugin;
66
- /**
67
- * Injects `__eco` metadata into EcoComponent config objects in file content.
68
- *
69
- * Uses oxc-parser for robust AST-based code analysis, which handles edge cases
70
- * that regex-based approaches would miss (e.g., complex generics, nested objects,
71
- * comments, string literals containing similar patterns).
72
- *
73
- * The injection is performed by:
74
- * 1. Parsing the source code into an AST
75
- * 2. Walking the AST to find all config object patterns
76
- * 3. Collecting insertion points (sorted in reverse order to preserve positions)
77
- * 4. Inserting the `__eco` property at each point
78
- *
79
- * @param contents - The source code content to transform
80
- * @param filePath - Absolute path to the file (used to derive the directory)
81
- * @param integration - The integration identifier for this file type
82
- * @returns Transformed source code with `__eco` injected, or original if no patterns found
83
- *
84
- * @example
85
- * ```typescript
86
- * const result = injectEcoMeta(
87
- * 'export default eco.page({ render: () => "<div>Hi</div>" });',
88
- * '/app/src/pages/index.tsx',
89
- * 'react'
90
- * );
91
- * // Result: 'export default eco.page({ __eco: { id: "<hash>", file: "/app/src/pages/index.tsx", integration: "react" }, render: () => "<div>Hi</div>" });'
92
- * ```
93
- */
94
- export declare function injectEcoMeta(contents: string, filePath: string, integration: string): string;
95
- export default createEcoComponentMetaPlugin;