@ecopages/core 0.2.0-alpha.8 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. package/CHANGELOG.md +18 -11
  2. package/README.md +23 -26
  3. package/package.json +76 -58
  4. package/src/adapters/README.md +2 -2
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +4 -12
  11. package/src/adapters/bun/create-app.js +4 -5
  12. package/src/adapters/bun/hmr-manager.d.ts +4 -4
  13. package/src/adapters/bun/hmr-manager.js +8 -8
  14. package/src/adapters/bun/index.d.ts +1 -1
  15. package/src/adapters/bun/index.js +2 -2
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +6 -5
  18. package/src/adapters/bun/server-lifecycle.d.ts +4 -4
  19. package/src/adapters/bun/server-lifecycle.js +2 -2
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +1 -5
  23. package/src/adapters/index.js +1 -7
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +2 -2
  28. package/src/adapters/node/node-hmr-manager.js +3 -3
  29. package/src/adapters/node/server-adapter.d.ts +4 -4
  30. package/src/adapters/node/server-adapter.js +13 -12
  31. package/src/adapters/node/static-content-server.d.ts +1 -1
  32. package/src/adapters/node/static-content-server.js +1 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/adapters/shared/define-api-handler.d.ts +1 -1
  35. package/src/adapters/shared/explicit-static-route-matcher.d.ts +2 -2
  36. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
  37. package/src/adapters/shared/fs-server-response-factory.d.ts +2 -2
  38. package/src/adapters/shared/fs-server-response-factory.js +1 -1
  39. package/src/adapters/shared/fs-server-response-matcher.d.ts +1 -1
  40. package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
  41. package/src/adapters/shared/hmr-html-response.d.ts +1 -1
  42. package/src/adapters/shared/render-context.d.ts +2 -1
  43. package/src/adapters/shared/render-context.js +3 -1
  44. package/src/adapters/shared/runtime-bootstrap.d.ts +1 -1
  45. package/src/adapters/shared/runtime-bootstrap.js +1 -1
  46. package/src/adapters/shared/server-adapter.d.ts +1 -1
  47. package/src/adapters/shared/server-adapter.js +5 -1
  48. package/src/adapters/shared/server-route-handler.d.ts +4 -4
  49. package/src/adapters/shared/server-route-handler.js +3 -3
  50. package/src/adapters/shared/server-static-builder.d.ts +5 -5
  51. package/src/adapters/shared/server-static-builder.js +5 -4
  52. package/src/build/README.md +19 -13
  53. package/src/build/build-adapter.d.ts +67 -20
  54. package/src/build/build-adapter.js +420 -19
  55. package/src/build/dev-build-coordinator.d.ts +10 -12
  56. package/src/build/dev-build-coordinator.js +8 -15
  57. package/src/build/esbuild-build-adapter.d.ts +6 -0
  58. package/src/build/esbuild-build-adapter.js +94 -11
  59. package/src/build/runtime-build-executor.d.ts +5 -4
  60. package/src/build/runtime-build-executor.js +5 -3
  61. package/src/build/runtime-specifier-alias-plugin.js +19 -15
  62. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  63. package/src/build/runtime-specifier-aliases.js +95 -0
  64. package/src/config/README.md +5 -2
  65. package/src/config/config-builder.d.ts +25 -2
  66. package/src/config/config-builder.js +44 -7
  67. package/src/declarations.d.ts +1 -1
  68. package/src/dev/sc-server.d.ts +1 -1
  69. package/src/dev/sc-server.js +1 -1
  70. package/src/eco/eco.browser.d.ts +2 -0
  71. package/src/eco/eco.browser.js +83 -0
  72. package/src/eco/eco.js +19 -48
  73. package/src/eco/eco.types.d.ts +1 -1
  74. package/src/eco/eco.utils.d.ts +1 -40
  75. package/src/eco/eco.utils.js +5 -35
  76. package/src/eco/global-injector-map.d.ts +1 -1
  77. package/src/eco/lazy-injector-map.d.ts +1 -1
  78. package/src/hmr/hmr-strategy.d.ts +16 -13
  79. package/src/hmr/hmr-strategy.js +22 -7
  80. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  81. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  82. package/src/hmr/strategies/js-hmr-strategy.d.ts +2 -2
  83. package/src/hmr/strategies/js-hmr-strategy.js +2 -2
  84. package/src/index.browser.d.ts +2 -2
  85. package/src/index.browser.js +1 -1
  86. package/src/index.d.ts +3 -2
  87. package/src/index.js +15 -4
  88. package/src/integrations/ghtml/ghtml-renderer.d.ts +6 -1
  89. package/src/integrations/ghtml/ghtml-renderer.js +29 -28
  90. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -2
  91. package/src/integrations/ghtml/ghtml.plugin.js +2 -2
  92. package/src/plugins/README.md +1 -0
  93. package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
  94. package/src/plugins/eco-component-meta-plugin.js +26 -20
  95. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  96. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  97. package/src/plugins/integration-plugin.d.ts +99 -33
  98. package/src/plugins/integration-plugin.js +68 -21
  99. package/src/plugins/processor.d.ts +2 -2
  100. package/src/plugins/processor.js +2 -2
  101. package/src/plugins/source-transform.d.ts +46 -0
  102. package/src/plugins/source-transform.js +71 -0
  103. package/src/route-renderer/GRAPH.md +54 -84
  104. package/src/route-renderer/README.md +14 -20
  105. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  106. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  107. package/src/route-renderer/orchestration/integration-renderer.d.ts +233 -76
  108. package/src/route-renderer/orchestration/integration-renderer.js +500 -143
  109. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +93 -0
  110. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  111. package/src/route-renderer/orchestration/render-execution.service.d.ts +11 -71
  112. package/src/route-renderer/orchestration/render-execution.service.js +65 -80
  113. package/src/{eco/eco.utils.ts → route-renderer/orchestration/render-output.utils.d.ts} +10 -53
  114. package/src/route-renderer/orchestration/render-output.utils.js +65 -0
  115. package/src/route-renderer/orchestration/render-preparation.service.d.ts +2 -8
  116. package/src/route-renderer/orchestration/render-preparation.service.js +10 -17
  117. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  118. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  119. package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
  120. package/src/route-renderer/page-loading/dependency-resolver.js +10 -8
  121. package/src/route-renderer/page-loading/page-module-loader.d.ts +6 -4
  122. package/src/route-renderer/page-loading/page-module-loader.js +7 -5
  123. package/src/route-renderer/route-renderer.d.ts +5 -3
  124. package/src/route-renderer/route-renderer.js +13 -3
  125. package/src/router/README.md +79 -8
  126. package/src/router/client/navigation-coordinator.js +2 -2
  127. package/src/router/server/fs-router-scanner.d.ts +1 -1
  128. package/src/router/server/fs-router-scanner.js +6 -1
  129. package/src/router/server/fs-router.d.ts +1 -1
  130. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -3
  131. package/src/services/assets/asset-processing-service/asset-processing.service.js +6 -6
  132. package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
  133. package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
  134. package/src/services/assets/asset-processing-service/index.d.ts +5 -5
  135. package/src/services/assets/asset-processing-service/index.js +5 -5
  136. package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
  137. package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
  138. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
  139. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +1 -1
  140. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +3 -3
  141. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +2 -2
  142. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
  143. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  144. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +2 -2
  145. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +1 -1
  146. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
  147. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +15 -3
  148. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +3 -3
  149. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +1 -1
  150. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
  151. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +1 -1
  152. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  153. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +1 -1
  154. package/src/services/assets/browser-bundle.service.d.ts +1 -1
  155. package/src/services/assets/browser-bundle.service.js +2 -2
  156. package/src/services/html/html-rewriter-provider.service.js +4 -1
  157. package/src/services/html/html-transformer.service.d.ts +2 -2
  158. package/src/services/html/html-transformer.service.js +4 -10
  159. package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
  160. package/src/services/invalidation/development-invalidation.service.js +1 -0
  161. package/src/services/module-loading/app-module-loader.service.d.ts +25 -0
  162. package/src/services/module-loading/app-module-loader.service.js +31 -0
  163. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
  164. package/src/services/module-loading/app-server-module-transpiler.service.js +77 -2
  165. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  166. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  167. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  168. package/src/{adapters/node/bootstrap-dependency-resolver.d.ts → services/module-loading/node-bootstrap-plugin.d.ts} +2 -24
  169. package/src/{adapters/node/bootstrap-dependency-resolver.js → services/module-loading/node-bootstrap-plugin.js} +42 -22
  170. package/src/services/module-loading/page-module-import.service.d.ts +4 -0
  171. package/src/services/module-loading/page-module-import.service.js +38 -9
  172. package/src/services/module-loading/server-module-transpiler.service.d.ts +3 -0
  173. package/src/services/module-loading/server-module-transpiler.service.js +4 -1
  174. package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
  175. package/src/services/runtime-state/dev-graph.service.js +10 -10
  176. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
  177. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +1 -1
  178. package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
  179. package/src/static-site-generator/static-site-generator.d.ts +2 -2
  180. package/src/static-site-generator/static-site-generator.js +1 -1
  181. package/src/{internal-types.d.ts → types/internal-types.d.ts} +24 -14
  182. package/src/{public-types.d.ts → types/public-types.d.ts} +30 -14
  183. package/src/types/public-types.js +0 -0
  184. package/src/utils/html-escaping.d.ts +7 -0
  185. package/src/utils/html-escaping.js +6 -0
  186. package/src/utils/locals-utils.d.ts +1 -1
  187. package/src/utils/parse-cli-args.d.ts +4 -1
  188. package/src/utils/parse-cli-args.js +16 -1
  189. package/src/utils/resolve-work-dir.js +1 -1
  190. package/src/watchers/project-watcher.d.ts +4 -4
  191. package/src/watchers/project-watcher.js +4 -10
  192. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  193. package/src/adapters/abstract/application-adapter.ts +0 -337
  194. package/src/adapters/abstract/router-adapter.ts +0 -30
  195. package/src/adapters/abstract/server-adapter.ts +0 -79
  196. package/src/adapters/bun/client-bridge.ts +0 -62
  197. package/src/adapters/bun/create-app.ts +0 -189
  198. package/src/adapters/bun/hmr-manager.ts +0 -409
  199. package/src/adapters/bun/index.ts +0 -2
  200. package/src/adapters/bun/server-adapter.ts +0 -499
  201. package/src/adapters/bun/server-lifecycle.ts +0 -124
  202. package/src/adapters/index.ts +0 -6
  203. package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
  204. package/src/adapters/node/create-app.ts +0 -179
  205. package/src/adapters/node/index.d.ts +0 -6
  206. package/src/adapters/node/index.js +0 -11
  207. package/src/adapters/node/index.ts +0 -16
  208. package/src/adapters/node/node-client-bridge.ts +0 -79
  209. package/src/adapters/node/node-hmr-manager.ts +0 -381
  210. package/src/adapters/node/runtime-adapter.d.ts +0 -46
  211. package/src/adapters/node/runtime-adapter.js +0 -306
  212. package/src/adapters/node/runtime-adapter.ts +0 -439
  213. package/src/adapters/node/server-adapter.ts +0 -488
  214. package/src/adapters/node/static-content-server.ts +0 -239
  215. package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
  216. package/src/adapters/node/write-runtime-manifest.js +0 -12
  217. package/src/adapters/node/write-runtime-manifest.ts +0 -38
  218. package/src/adapters/shared/api-response.ts +0 -104
  219. package/src/adapters/shared/application-adapter.ts +0 -199
  220. package/src/adapters/shared/define-api-handler.ts +0 -66
  221. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
  222. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
  223. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  224. package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
  225. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  226. package/src/adapters/shared/hmr-html-response.ts +0 -52
  227. package/src/adapters/shared/render-context.ts +0 -120
  228. package/src/adapters/shared/runtime-bootstrap.ts +0 -79
  229. package/src/adapters/shared/server-adapter.ts +0 -489
  230. package/src/adapters/shared/server-route-handler.ts +0 -153
  231. package/src/adapters/shared/server-static-builder.ts +0 -166
  232. package/src/build/build-adapter.ts +0 -361
  233. package/src/build/build-manifest.ts +0 -54
  234. package/src/build/build-types.ts +0 -83
  235. package/src/build/dev-build-coordinator.ts +0 -221
  236. package/src/build/esbuild-build-adapter.ts +0 -559
  237. package/src/build/runtime-build-executor.ts +0 -34
  238. package/src/build/runtime-specifier-alias-plugin.ts +0 -58
  239. package/src/config/config-builder.ts +0 -706
  240. package/src/constants.ts +0 -54
  241. package/src/create-app.ts +0 -87
  242. package/src/dev/sc-server.ts +0 -143
  243. package/src/eco/component-render-context.d.ts +0 -105
  244. package/src/eco/component-render-context.js +0 -87
  245. package/src/eco/component-render-context.ts +0 -224
  246. package/src/eco/eco.ts +0 -242
  247. package/src/eco/eco.types.ts +0 -221
  248. package/src/eco/global-injector-map.ts +0 -112
  249. package/src/eco/lazy-injector-map.ts +0 -120
  250. package/src/eco/module-dependencies.ts +0 -75
  251. package/src/errors/http-error.ts +0 -72
  252. package/src/errors/index.ts +0 -2
  253. package/src/errors/locals-access-error.ts +0 -7
  254. package/src/global/app-logger.ts +0 -4
  255. package/src/hmr/client/hmr-runtime.ts +0 -152
  256. package/src/hmr/hmr-strategy.ts +0 -172
  257. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  258. package/src/hmr/hmr.test.e2e.ts +0 -66
  259. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  260. package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
  261. package/src/index.browser.ts +0 -3
  262. package/src/index.ts +0 -5
  263. package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
  264. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  265. package/src/internal-types.ts +0 -232
  266. package/src/plugins/alias-resolver-plugin.ts +0 -63
  267. package/src/plugins/eco-component-meta-plugin.ts +0 -481
  268. package/src/plugins/integration-plugin.ts +0 -226
  269. package/src/plugins/processor.ts +0 -240
  270. package/src/plugins/runtime-capability.ts +0 -14
  271. package/src/public-types.ts +0 -1317
  272. package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
  273. package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
  274. package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
  275. package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
  276. package/src/route-renderer/component-graph/component-graph.js +0 -72
  277. package/src/route-renderer/component-graph/component-graph.ts +0 -159
  278. package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
  279. package/src/route-renderer/component-graph/component-marker.js +0 -46
  280. package/src/route-renderer/component-graph/component-marker.ts +0 -117
  281. package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
  282. package/src/route-renderer/component-graph/component-reference.js +0 -19
  283. package/src/route-renderer/component-graph/component-reference.ts +0 -29
  284. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
  285. package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
  286. package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
  287. package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
  288. package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
  289. package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
  290. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
  291. package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
  292. package/src/route-renderer/route-renderer.ts +0 -115
  293. package/src/router/client/link-intent.test.browser.ts +0 -51
  294. package/src/router/client/link-intent.ts +0 -92
  295. package/src/router/client/navigation-coordinator.ts +0 -433
  296. package/src/router/server/fs-router-scanner.ts +0 -219
  297. package/src/router/server/fs-router.ts +0 -122
  298. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
  299. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  300. package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
  301. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
  302. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  303. package/src/services/assets/asset-processing-service/index.ts +0 -5
  304. package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
  305. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  306. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
  307. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
  308. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  309. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  310. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  311. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
  312. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  313. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
  314. package/src/services/assets/browser-bundle.service.ts +0 -53
  315. package/src/services/cache/cache.types.ts +0 -126
  316. package/src/services/cache/index.ts +0 -18
  317. package/src/services/cache/memory-cache-store.ts +0 -130
  318. package/src/services/cache/page-cache-service.ts +0 -202
  319. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  320. package/src/services/html/html-rewriter-provider.service.ts +0 -103
  321. package/src/services/html/html-transformer.service.ts +0 -279
  322. package/src/services/invalidation/development-invalidation.service.ts +0 -261
  323. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
  324. package/src/services/module-loading/page-module-import.service.ts +0 -200
  325. package/src/services/module-loading/server-loader.service.d.ts +0 -96
  326. package/src/services/module-loading/server-loader.service.js +0 -32
  327. package/src/services/module-loading/server-loader.service.ts +0 -130
  328. package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
  329. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
  330. package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
  331. package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
  332. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  333. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  334. package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
  335. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  336. package/src/services/validation/schema-validation-service.ts +0 -204
  337. package/src/services/validation/standard-schema.types.ts +0 -68
  338. package/src/static-site-generator/static-site-generator.ts +0 -462
  339. package/src/utils/css.d.ts +0 -1
  340. package/src/utils/css.js +0 -7
  341. package/src/utils/css.ts +0 -5
  342. package/src/utils/deep-merge.ts +0 -47
  343. package/src/utils/hash.ts +0 -5
  344. package/src/utils/html.ts +0 -1
  345. package/src/utils/invariant.ts +0 -15
  346. package/src/utils/locals-utils.ts +0 -37
  347. package/src/utils/parse-cli-args.ts +0 -83
  348. package/src/utils/path-utils.module.ts +0 -14
  349. package/src/utils/resolve-work-dir.ts +0 -45
  350. package/src/utils/runtime.ts +0 -44
  351. package/src/utils/server-utils.module.ts +0 -67
  352. package/src/watchers/project-watcher.test-helpers.ts +0 -41
  353. package/src/watchers/project-watcher.ts +0 -363
  354. /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
  355. /package/src/{constants.js → config/constants.js} +0 -0
  356. /package/src/{internal-types.js → services/module-loading/module-loading-types.js} +0 -0
  357. /package/src/{public-types.js → types/internal-types.js} +0 -0
@@ -1,226 +0,0 @@
1
- import type { EcoBuildPlugin } from '../build/build-types';
2
- import type { EcoPagesAppConfig, IHmrManager } from '../internal-types';
3
- import type { HmrStrategy } from '../hmr/hmr-strategy';
4
- import type { EcoComponent, EcoPagesElement } from '../public-types';
5
- import type { IntegrationRenderer } from '../route-renderer/orchestration/integration-renderer';
6
- import { AssetProcessingService } from '../services/assets/asset-processing-service/asset-processing.service';
7
- import type { AssetDefinition, ProcessedAsset } from '../services/assets/asset-processing-service/assets.types';
8
- import type { RuntimeCapabilityDeclaration } from './runtime-capability.ts';
9
-
10
- export type { RuntimeCapabilityDeclaration, RuntimeCapabilityTag } from './runtime-capability.ts';
11
-
12
- export const INTEGRATION_PLUGIN_ERRORS = {
13
- NOT_INITIALIZED_WITH_APP_CONFIG: 'Plugin not initialized with app config',
14
- NOT_INITIALIZED_WITH_ASSET_SERVICE: 'Plugin not initialized with asset dependency service',
15
- } as const;
16
-
17
- export interface IntegrationPluginConfig {
18
- /**
19
- * The name of the integration plugin.
20
- */
21
- name: string;
22
- /**
23
- * The extensions that this plugin supports (e.g., ['.kita.js', '.kita.tsx']).
24
- */
25
- extensions: string[];
26
- /**
27
- * The dependencies that this plugin requires on a global level.
28
- * These dependencies will be resolved during the setup process and injected into the global scope of the application.
29
- * They are not specific to any particular page or component.
30
- */
31
- integrationDependencies?: AssetDefinition[];
32
- /**
33
- * The strategy to use for static building.
34
- * - 'render': Execute component function directly (faster, efficient).
35
- * - 'fetch': Start server and fetch URL (slower, needed for some SSR like Lit).
36
- * @default 'render'
37
- */
38
- staticBuildStep?: 'render' | 'fetch';
39
- /**
40
- * Declares runtime-specific requirements that must be satisfied before the
41
- * app can start with this integration enabled.
42
- */
43
- runtimeCapability?: RuntimeCapabilityDeclaration;
44
- }
45
-
46
- /**
47
- * Metadata used by integration-owned boundary policy.
48
- *
49
- * This payload describes the currently active integration pass together with the
50
- * target component boundary being entered.
51
- */
52
- export type ComponentBoundaryPolicyInput = {
53
- currentIntegration: string;
54
- targetIntegration?: string;
55
- component: EcoComponent;
56
- };
57
-
58
- type RendererClass<C> = new (options: {
59
- appConfig: EcoPagesAppConfig;
60
- assetProcessingService: AssetProcessingService;
61
- resolvedIntegrationDependencies: ProcessedAsset[];
62
- runtimeOrigin: string;
63
- }) => IntegrationRenderer<C>;
64
-
65
- export abstract class IntegrationPlugin<C = EcoPagesElement> {
66
- readonly name: string;
67
- readonly extensions: string[];
68
- abstract renderer: RendererClass<C>;
69
- readonly staticBuildStep: 'render' | 'fetch';
70
- readonly runtimeCapability?: RuntimeCapabilityDeclaration;
71
-
72
- protected integrationDependencies: AssetDefinition[];
73
- protected resolvedIntegrationDependencies: ProcessedAsset[] = [];
74
- protected options?: Record<string, unknown>;
75
- protected appConfig?: EcoPagesAppConfig;
76
- protected assetProcessingService?: AssetProcessingService;
77
- protected hmrManager?: IHmrManager;
78
- declare runtimeOrigin: string;
79
-
80
- get plugins(): EcoBuildPlugin[] {
81
- return [];
82
- }
83
-
84
- constructor(config: IntegrationPluginConfig) {
85
- this.name = config.name;
86
- this.extensions = config.extensions;
87
- this.integrationDependencies = config.integrationDependencies || [];
88
- this.staticBuildStep = config.staticBuildStep || 'render';
89
- this.runtimeCapability = config.runtimeCapability;
90
- }
91
-
92
- setConfig(appConfig: EcoPagesAppConfig): void {
93
- this.appConfig = appConfig;
94
- this.initializeAssetDefinitionService();
95
- }
96
-
97
- setRuntimeOrigin(runtimeOrigin: string) {
98
- this.runtimeOrigin = runtimeOrigin;
99
- }
100
-
101
- /**
102
- * Returns an HMR strategy for this integration, if applicable.
103
- * The strategy will be registered with the HmrManager during initialization.
104
- *
105
- * @returns HmrStrategy instance or undefined if no custom HMR handling needed
106
- *
107
- * @example
108
- * ```typescript
109
- * getHmrStrategy(): HmrStrategy {
110
- * const context = this.hmrManager!.getDefaultContext();
111
- * return new ReactHmrStrategy(context);
112
- * }
113
- * ```
114
- */
115
- getHmrStrategy?(): HmrStrategy | undefined;
116
-
117
- /**
118
- * Returns bare-specifier mappings that should be registered in the active
119
- * runtime specifier registry.
120
- *
121
- * @remarks
122
- * Override this when the integration owns browser runtime bundles that must
123
- * be addressable from client-side imports through stable bare specifiers.
124
- *
125
- * Today these mappings are consumed by the development runtime and browser
126
- * bundle aliasing path. They are intentionally generic enough to grow into a
127
- * broader import-map-style facility later without moving framework-specific
128
- * map contents into core.
129
- */
130
- getRuntimeSpecifierMap(): Record<string, string> {
131
- return {};
132
- }
133
-
134
- setHmrManager(hmrManager: IHmrManager) {
135
- this.hmrManager = hmrManager;
136
- hmrManager.registerSpecifierMap(this.getRuntimeSpecifierMap());
137
-
138
- const strategy = this.getHmrStrategy?.();
139
- if (strategy) {
140
- hmrManager.registerStrategy(strategy);
141
- }
142
-
143
- if (this.assetProcessingService) {
144
- this.assetProcessingService.setHmrManager(hmrManager);
145
- }
146
- }
147
-
148
- initializeAssetDefinitionService(): void {
149
- if (!this.appConfig) throw new Error(INTEGRATION_PLUGIN_ERRORS.NOT_INITIALIZED_WITH_APP_CONFIG);
150
-
151
- this.assetProcessingService = AssetProcessingService.createWithDefaultProcessors(this.appConfig);
152
- if (this.hmrManager) {
153
- this.assetProcessingService.setHmrManager(this.hmrManager);
154
- }
155
- }
156
-
157
- getResolvedIntegrationDependencies(): ProcessedAsset[] {
158
- return this.resolvedIntegrationDependencies;
159
- }
160
-
161
- initializeRenderer(): IntegrationRenderer<C> {
162
- if (!this.appConfig) {
163
- throw new Error(INTEGRATION_PLUGIN_ERRORS.NOT_INITIALIZED_WITH_APP_CONFIG);
164
- }
165
-
166
- const assetProcessingService = AssetProcessingService.createWithDefaultProcessors(this.appConfig);
167
- if (this.hmrManager) {
168
- assetProcessingService.setHmrManager(this.hmrManager);
169
- }
170
-
171
- const renderer = new this.renderer({
172
- appConfig: this.appConfig,
173
- assetProcessingService,
174
- resolvedIntegrationDependencies: this.resolvedIntegrationDependencies,
175
- runtimeOrigin: this.runtimeOrigin,
176
- });
177
-
178
- if (this.hmrManager) {
179
- renderer.setHmrManager(this.hmrManager);
180
- }
181
-
182
- return renderer;
183
- }
184
-
185
- /**
186
- * Declares whether a component boundary targeting this integration should be
187
- * deferred through the marker pipeline.
188
- *
189
- * The default implementation never defers. Integrations that require deferred
190
- * subtree rendering should override this method and return `true` when their
191
- * boundary must be resolved during the marker graph stage.
192
- *
193
- * @param input Boundary metadata for the current render pass.
194
- * @returns `true` when the boundary should be deferred; otherwise `false`.
195
- */
196
- shouldDeferComponentBoundary(_input: ComponentBoundaryPolicyInput): boolean {
197
- return false;
198
- }
199
-
200
- /**
201
- * Prepares build-facing contributions before the app build manifest is sealed.
202
- *
203
- * @remarks
204
- * Override this when an integration needs to materialize runtime/build plugin
205
- * declarations ahead of runtime startup. Keep runtime-only side effects out of
206
- * this hook; they belong in `setup()`.
207
- */
208
- async prepareBuildContributions(): Promise<void> {}
209
-
210
- /**
211
- * Performs runtime-only integration setup after config build has already
212
- * sealed manifest contributions.
213
- */
214
- async setup(): Promise<void> {
215
- if (this.integrationDependencies.length === 0) return;
216
- if (!this.assetProcessingService) throw new Error(INTEGRATION_PLUGIN_ERRORS.NOT_INITIALIZED_WITH_ASSET_SERVICE);
217
-
218
- this.resolvedIntegrationDependencies = await this.assetProcessingService.processDependencies(
219
- this.integrationDependencies,
220
- this.name,
221
- );
222
-
223
- this.initializeRenderer();
224
- }
225
- async teardown(): Promise<void> {}
226
- }
@@ -1,240 +0,0 @@
1
- import path from 'node:path';
2
- import { fileSystem } from '@ecopages/file-system';
3
- import type { EcoBuildPlugin } from '../build/build-types.ts';
4
- import type { EcoPagesAppConfig, IClientBridge } from '../internal-types';
5
- import type { AssetDefinition } from '../services/assets/asset-processing-service';
6
- import { DEFAULT_ECOPAGES_WORK_DIR } from '../constants.ts';
7
- import { GENERATED_BASE_PATHS } from '../constants';
8
- import type { RuntimeCapabilityDeclaration } from './runtime-capability.ts';
9
-
10
- export type { RuntimeCapabilityDeclaration, RuntimeCapabilityTag } from './runtime-capability.ts';
11
-
12
- export const PROCESSOR_ERRORS = {
13
- CACHE_DIRECTORY_NOT_SET: 'Cache directory not set in context',
14
- } as const;
15
-
16
- function resolveGeneratedPath(
17
- type: keyof typeof GENERATED_BASE_PATHS,
18
- options: { root: string; module: string; subPath?: string },
19
- ): string {
20
- const { root, module, subPath } = options;
21
- const parts = [root, GENERATED_BASE_PATHS[type], module, subPath].filter(Boolean);
22
- return path.join(...(parts as string[]));
23
- }
24
-
25
- export interface ProcessorWatchContext {
26
- path: string;
27
- bridge: IClientBridge;
28
- }
29
-
30
- export interface ProcessorWatchConfig {
31
- paths: string[];
32
- extensions?: string[];
33
- onCreate?: (ctx: ProcessorWatchContext) => Promise<void>;
34
- onChange?: (ctx: ProcessorWatchContext) => Promise<void>;
35
- onDelete?: (ctx: ProcessorWatchContext) => Promise<void>;
36
- onError?: (error: Error) => void;
37
- }
38
-
39
- export type ProcessorAssetKind = 'script' | 'stylesheet' | 'image';
40
- export type ProcessorExtensionPattern = string;
41
-
42
- export interface ProcessorAssetCapability {
43
- kind: ProcessorAssetKind;
44
- /**
45
- * Supported patterns:
46
- * - `*` (all extensions)
47
- * - `.css` or `css`
48
- * - `*.css`
49
- * - `*.{css,scss,sass}`
50
- *
51
- * Pattern matching is case-insensitive and trims surrounding spaces,
52
- * including grouped values (e.g. `*.{ CSS, ScSs }`).
53
- */
54
- extensions?: ProcessorExtensionPattern[];
55
- }
56
-
57
- export interface ProcessorConfig<TOptions = Record<string, unknown>> {
58
- name: string;
59
- description?: string;
60
- options?: TOptions;
61
- watch?: ProcessorWatchConfig;
62
- capabilities?: ProcessorAssetCapability[];
63
- runtimeCapability?: RuntimeCapabilityDeclaration;
64
- }
65
- export interface ProcessorContext {
66
- config: EcoPagesAppConfig;
67
- rootDir: string;
68
- srcDir: string;
69
- distDir: string;
70
- cache?: string;
71
- }
72
-
73
- /**
74
- * Interface for processor build plugins
75
- * This is used to pass plugins to the build process directly from the processor
76
- * For instance it can become very handy when dealing with virtual modules that needs to be recognized by the bundler
77
- * i.e. @ecopages/image-processor
78
- */
79
- export abstract class Processor<TOptions = Record<string, unknown>> {
80
- readonly name: string;
81
- protected dependencies: AssetDefinition[] = [];
82
- protected context?: ProcessorContext;
83
- protected options?: TOptions;
84
- protected watchConfig?: ProcessorWatchConfig;
85
- protected capabilities: ProcessorAssetCapability[] = [];
86
- readonly runtimeCapability?: RuntimeCapabilityDeclaration;
87
-
88
- /** Plugins that are only used during the build process */
89
- abstract buildPlugins?: EcoBuildPlugin[];
90
-
91
- /** Plugins that are used during runtime for file processing */
92
- abstract plugins?: EcoBuildPlugin[];
93
-
94
- constructor(config: ProcessorConfig<TOptions>) {
95
- this.name = config.name;
96
- this.options = config.options;
97
- this.watchConfig = config.watch;
98
- this.capabilities = config.capabilities ?? [];
99
- this.runtimeCapability = config.runtimeCapability;
100
- }
101
-
102
- setContext(appConfig: EcoPagesAppConfig): void {
103
- const workDir =
104
- appConfig.absolutePaths.workDir ??
105
- path.join(appConfig.rootDir, appConfig.workDir ?? DEFAULT_ECOPAGES_WORK_DIR);
106
- const cachePath = resolveGeneratedPath('cache', {
107
- root: workDir,
108
- module: this.name,
109
- });
110
-
111
- fileSystem.ensureDir(cachePath);
112
-
113
- this.context = {
114
- config: appConfig,
115
- rootDir: appConfig.rootDir,
116
- srcDir: appConfig.absolutePaths.srcDir,
117
- distDir: appConfig.absolutePaths.distDir,
118
- cache: cachePath,
119
- };
120
- }
121
-
122
- /**
123
- * Prepares build-facing processor contributions before config finalization.
124
- *
125
- * @remarks
126
- * Override this when a processor must compute runtime/build plugins or other
127
- * manifest-owned state before startup. Runtime-only work such as cache
128
- * warming or watcher registration should stay in `setup()`.
129
- */
130
- async prepareBuildContributions(): Promise<void> {}
131
-
132
- abstract setup(): Promise<void>;
133
- abstract teardown(): Promise<void>;
134
- abstract process(input: unknown, filePath?: string): Promise<unknown>;
135
-
136
- protected getCachePath(key: string): string {
137
- return `${this.context?.cache}/${key}`;
138
- }
139
-
140
- protected async readCache<T>(key: string): Promise<T | null> {
141
- const cachePath = this.getCachePath(key);
142
- try {
143
- const data = await fileSystem.readFile(cachePath);
144
- return JSON.parse(data) as T;
145
- } catch {
146
- return null;
147
- }
148
- }
149
-
150
- protected async writeCache<T>(key: string, data: T): Promise<void> {
151
- if (!this.context?.cache) {
152
- throw new Error(PROCESSOR_ERRORS.CACHE_DIRECTORY_NOT_SET);
153
- }
154
-
155
- const cachePath = this.getCachePath(key);
156
- fileSystem.write(cachePath, JSON.stringify(data, null, 2));
157
- }
158
-
159
- getWatchConfig(): ProcessorWatchConfig | undefined {
160
- return this.watchConfig;
161
- }
162
-
163
- getDependencies(): AssetDefinition[] {
164
- return this.dependencies;
165
- }
166
-
167
- getName(): string {
168
- return this.name;
169
- }
170
-
171
- getAssetCapabilities(): ProcessorAssetCapability[] {
172
- return this.capabilities;
173
- }
174
-
175
- matchesFileFilter(_filepath: string): boolean {
176
- return true;
177
- }
178
-
179
- canProcessAsset(kind: ProcessorAssetKind, filepath?: string): boolean {
180
- const capabilities = this.getAssetCapabilities();
181
- if (capabilities.length === 0) {
182
- return false;
183
- }
184
-
185
- const matchingKind = capabilities.filter((capability) => capability.kind === kind);
186
- if (matchingKind.length === 0) {
187
- return false;
188
- }
189
-
190
- if (!filepath) {
191
- return true;
192
- }
193
-
194
- return matchingKind.some((capability) => this.matchesCapabilityExtensions(filepath, capability.extensions));
195
- }
196
-
197
- private matchesCapabilityExtensions(filepath: string, extensions?: ProcessorExtensionPattern[]): boolean {
198
- if (!extensions || extensions.length === 0) {
199
- return true;
200
- }
201
-
202
- const normalizedExt = path.extname(filepath).toLowerCase();
203
-
204
- return extensions.some((rawPattern) => {
205
- const pattern = this.normalizeExtensionPattern(rawPattern);
206
- if (!pattern) {
207
- return false;
208
- }
209
-
210
- if (pattern === '*') {
211
- return true;
212
- }
213
-
214
- const groupedMatch = pattern.match(/^\*\.\{(.+)\}$/);
215
- if (groupedMatch) {
216
- const groupItems = groupedMatch[1]
217
- .split(',')
218
- .map((item) => this.normalizeExtensionPattern(item))
219
- .filter(Boolean);
220
-
221
- return groupItems.some((item) => normalizedExt === item || normalizedExt === `.${item}`);
222
- }
223
-
224
- if (pattern.startsWith('*')) {
225
- const suffix = pattern.slice(1);
226
- return normalizedExt.endsWith(suffix);
227
- }
228
-
229
- if (pattern.startsWith('.')) {
230
- return normalizedExt === pattern;
231
- }
232
-
233
- return normalizedExt === `.${pattern}`;
234
- });
235
- }
236
-
237
- private normalizeExtensionPattern(rawPattern: string): string {
238
- return rawPattern.trim().toLowerCase();
239
- }
240
- }
@@ -1,14 +0,0 @@
1
- export type RuntimeCapabilityTag =
2
- | 'bun-only'
3
- | 'node-compatible'
4
- | 'requires-native-bun-api'
5
- | 'requires-node-builtins';
6
-
7
- /**
8
- * Declares the runtime assumptions a plugin makes so config finalization can
9
- * reject incompatible startup environments before bootstrapping the app.
10
- */
11
- export interface RuntimeCapabilityDeclaration {
12
- tags: RuntimeCapabilityTag[];
13
- minRuntimeVersion?: string;
14
- }