@ecopages/core 0.2.0-alpha.54 → 0.2.0-alpha.55

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 (594) hide show
  1. package/package.json +196 -91
  2. package/src/adapters/abstract/application-adapter.d.ts +194 -0
  3. package/src/adapters/abstract/application-adapter.js +121 -0
  4. package/src/adapters/abstract/router-adapter.d.ts +26 -0
  5. package/src/adapters/abstract/router-adapter.js +5 -0
  6. package/src/adapters/abstract/server-adapter.d.ts +69 -0
  7. package/src/adapters/abstract/server-adapter.js +15 -0
  8. package/src/adapters/bun/client-bridge.d.ts +34 -0
  9. package/src/adapters/bun/client-bridge.js +48 -0
  10. package/src/adapters/bun/create-app.d.ts +60 -0
  11. package/src/adapters/bun/create-app.js +140 -0
  12. package/src/adapters/bun/hmr-manager.d.ts +47 -0
  13. package/src/adapters/bun/hmr-manager.js +58 -0
  14. package/src/adapters/bun/index.d.ts +2 -0
  15. package/src/adapters/bun/index.js +8 -0
  16. package/src/adapters/bun/runtime-host.d.ts +52 -0
  17. package/src/adapters/bun/runtime-host.js +56 -0
  18. package/src/adapters/bun/server-adapter.d.ts +223 -0
  19. package/src/adapters/bun/server-adapter.js +450 -0
  20. package/src/adapters/bun/static-preview-host.d.ts +28 -0
  21. package/src/adapters/bun/static-preview-host.js +45 -0
  22. package/src/adapters/create-app.d.ts +20 -0
  23. package/src/adapters/create-app.js +66 -0
  24. package/src/adapters/index.d.ts +2 -0
  25. package/src/adapters/index.js +8 -0
  26. package/src/adapters/node/create-app.d.ts +24 -0
  27. package/src/adapters/node/create-app.js +92 -0
  28. package/src/adapters/node/http-request-bridge.d.ts +57 -0
  29. package/src/adapters/node/http-request-bridge.js +118 -0
  30. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  31. package/src/adapters/node/node-client-bridge.js +66 -0
  32. package/src/adapters/node/node-hmr-manager.d.ts +52 -0
  33. package/src/adapters/node/node-hmr-manager.js +49 -0
  34. package/src/adapters/node/runtime-host.d.ts +57 -0
  35. package/src/adapters/node/runtime-host.js +92 -0
  36. package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
  37. package/src/adapters/node/server-adapter-dependencies.js +18 -0
  38. package/src/adapters/node/server-adapter.d.ts +138 -0
  39. package/src/adapters/node/server-adapter.js +313 -0
  40. package/src/adapters/node/static-content-server.d.ts +60 -0
  41. package/src/adapters/node/static-content-server.js +194 -0
  42. package/src/adapters/node/static-preview-host.d.ts +55 -0
  43. package/src/adapters/node/static-preview-host.js +68 -0
  44. package/src/adapters/shared/api-response.d.ts +52 -0
  45. package/src/adapters/shared/api-response.js +96 -0
  46. package/src/adapters/shared/application-adapter.d.ts +18 -0
  47. package/src/adapters/shared/application-adapter.js +90 -0
  48. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  49. package/src/adapters/shared/define-api-handler.js +15 -0
  50. package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
  51. package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
  52. package/src/adapters/shared/explicit-static-route-matcher.d.ts +41 -0
  53. package/src/adapters/shared/explicit-static-route-matcher.js +101 -0
  54. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +62 -0
  55. package/src/adapters/shared/file-route-middleware-pipeline.js +90 -0
  56. package/src/adapters/shared/fs-server-response-factory.d.ts +23 -0
  57. package/src/adapters/shared/fs-server-response-factory.js +81 -0
  58. package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
  59. package/src/adapters/shared/fs-server-response-matcher.js +186 -0
  60. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  61. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  62. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  63. package/src/adapters/shared/hmr-html-response.js +33 -0
  64. package/src/adapters/shared/render-context.d.ts +16 -0
  65. package/src/adapters/shared/render-context.js +93 -0
  66. package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
  67. package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
  68. package/src/adapters/shared/runtime-host.d.ts +12 -0
  69. package/src/adapters/shared/runtime-host.js +0 -0
  70. package/src/adapters/shared/server-adapter.d.ts +108 -0
  71. package/src/adapters/shared/server-adapter.js +436 -0
  72. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  73. package/src/adapters/shared/server-route-handler.js +111 -0
  74. package/src/adapters/shared/server-static-builder.d.ts +71 -0
  75. package/src/adapters/shared/server-static-builder.js +100 -0
  76. package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
  77. package/src/adapters/shared/shared-hmr-manager.js +241 -0
  78. package/src/adapters/shared/static-preview-host.d.ts +10 -0
  79. package/src/adapters/shared/static-preview-host.js +0 -0
  80. package/src/build/browser-runtime-manifest.d.ts +31 -0
  81. package/src/build/browser-runtime-manifest.js +61 -0
  82. package/src/build/{browser-runtime-plugin-helpers.ts → browser-runtime-plugin-helpers.d.ts} +2 -13
  83. package/src/build/browser-runtime-plugin-helpers.js +14 -0
  84. package/src/build/browser-runtime-plugin.d.ts +78 -0
  85. package/src/build/browser-runtime-plugin.js +172 -0
  86. package/src/build/build-adapter.d.ts +504 -0
  87. package/src/build/build-adapter.js +240 -0
  88. package/src/build/build-manifest.d.ts +33 -0
  89. package/src/build/build-manifest.js +49 -0
  90. package/src/build/build-types.d.ts +57 -0
  91. package/src/build/build-types.js +0 -0
  92. package/src/build/rolldown-build-adapter.d.ts +32 -0
  93. package/src/build/rolldown-build-adapter.js +260 -0
  94. package/src/build/rolldown-plugin-bridge.d.ts +50 -0
  95. package/src/build/rolldown-plugin-bridge.js +194 -0
  96. package/src/build/{runtime-build-executor.ts → runtime-build-executor.d.ts} +3 -19
  97. package/src/build/runtime-build-executor.js +19 -0
  98. package/src/build/runtime-build-output-normalizer.d.ts +3 -0
  99. package/src/build/runtime-build-output-normalizer.js +111 -0
  100. package/src/build/serialized-build-executor.d.ts +64 -0
  101. package/src/build/serialized-build-executor.js +63 -0
  102. package/src/build/server-side-css-shim-plugin.d.ts +41 -0
  103. package/src/build/server-side-css-shim-plugin.js +35 -0
  104. package/src/cache/{index.ts → index.d.ts} +1 -1
  105. package/src/cache/index.js +6 -0
  106. package/src/cache/module-parse-cache.d.ts +65 -0
  107. package/src/cache/module-parse-cache.js +75 -0
  108. package/src/config/config-builder.d.ts +252 -0
  109. package/src/config/config-builder.js +589 -0
  110. package/src/config/{constants.ts → constants.d.ts} +13 -22
  111. package/src/config/constants.js +25 -0
  112. package/src/dev/host-runtime.d.ts +10 -0
  113. package/src/dev/host-runtime.js +24 -0
  114. package/src/dev/sc-server.d.ts +30 -0
  115. package/src/dev/sc-server.js +111 -0
  116. package/src/eco/eco.browser.d.ts +2 -0
  117. package/src/eco/eco.browser.js +88 -0
  118. package/src/eco/eco.d.ts +9 -0
  119. package/src/eco/eco.js +119 -0
  120. package/src/eco/eco.types.d.ts +230 -0
  121. package/src/eco/eco.types.js +0 -0
  122. package/src/eco/eco.utils.d.ts +1 -0
  123. package/src/eco/eco.utils.js +10 -0
  124. package/src/eco/global-injector-map.d.ts +16 -0
  125. package/src/eco/global-injector-map.js +80 -0
  126. package/src/eco/lazy-injector-map.d.ts +8 -0
  127. package/src/eco/lazy-injector-map.js +70 -0
  128. package/src/eco/module-dependencies.d.ts +18 -0
  129. package/src/eco/module-dependencies.js +49 -0
  130. package/src/errors/http-error.d.ts +31 -0
  131. package/src/errors/http-error.js +50 -0
  132. package/src/errors/index.d.ts +3 -0
  133. package/src/errors/index.js +6 -0
  134. package/src/errors/locals-access-error.d.ts +4 -0
  135. package/src/errors/locals-access-error.js +9 -0
  136. package/src/global/app-logger.d.ts +2 -0
  137. package/src/global/app-logger.js +6 -0
  138. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  139. package/src/hmr/client/hmr-runtime.js +117 -0
  140. package/src/hmr/hmr-strategy.d.ts +162 -0
  141. package/src/hmr/hmr-strategy.js +44 -0
  142. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  143. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  144. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  145. package/src/hmr/hmr.test.e2e.js +43 -0
  146. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  147. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  148. package/src/hmr/strategies/js-hmr-strategy.d.ts +134 -0
  149. package/src/hmr/strategies/js-hmr-strategy.js +173 -0
  150. package/src/index.browser.d.ts +3 -0
  151. package/src/index.browser.js +4 -0
  152. package/src/index.d.ts +6 -0
  153. package/src/index.js +21 -0
  154. package/src/integrations/ghtml/ghtml-renderer.d.ts +16 -0
  155. package/src/integrations/ghtml/ghtml-renderer.js +57 -0
  156. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  157. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  158. package/src/integrations/ghtml/ghtml.plugin.d.ts +16 -0
  159. package/src/integrations/ghtml/ghtml.plugin.js +20 -0
  160. package/src/plugins/alias-resolver-cache.d.ts +68 -0
  161. package/src/plugins/alias-resolver-cache.js +106 -0
  162. package/src/plugins/alias-resolver-plugin.d.ts +6 -0
  163. package/src/plugins/alias-resolver-plugin.js +65 -0
  164. package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
  165. package/src/plugins/eco-component-meta-plugin.js +175 -0
  166. package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
  167. package/src/plugins/foreign-jsx-override-plugin.js +41 -0
  168. package/src/plugins/integration-plugin.d.ts +230 -0
  169. package/src/plugins/integration-plugin.js +201 -0
  170. package/src/plugins/processor.d.ts +97 -0
  171. package/src/plugins/processor.js +141 -0
  172. package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
  173. package/src/plugins/runtime-capability.js +0 -0
  174. package/src/plugins/source-transform.d.ts +46 -0
  175. package/src/plugins/source-transform.js +71 -0
  176. package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
  177. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  178. package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
  179. package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
  180. package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
  181. package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
  182. package/src/route-renderer/orchestration/integration-renderer.d.ts +534 -0
  183. package/src/route-renderer/orchestration/integration-renderer.js +991 -0
  184. package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
  185. package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
  186. package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
  187. package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
  188. package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
  189. package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
  190. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
  191. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
  192. package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
  193. package/src/route-renderer/orchestration/render-output.utils.js +171 -0
  194. package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
  195. package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
  196. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  197. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  198. package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
  199. package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
  200. package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
  201. package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
  202. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  203. package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
  204. package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
  205. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
  206. package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
  207. package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
  208. package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
  209. package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
  210. package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
  211. package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
  212. package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
  213. package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
  214. package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
  215. package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
  216. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  217. package/src/route-renderer/page-loading/page-module-loader.js +127 -0
  218. package/src/route-renderer/route-renderer.d.ts +69 -0
  219. package/src/route-renderer/route-renderer.js +80 -0
  220. package/src/router/client/link-intent.js +34 -0
  221. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  222. package/src/router/client/link-intent.test.browser.js +43 -0
  223. package/src/router/client/navigation-coordinator.d.ts +169 -0
  224. package/src/router/client/navigation-coordinator.js +215 -0
  225. package/src/router/server/route-registry.d.ts +78 -0
  226. package/src/router/server/route-registry.js +262 -0
  227. package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
  228. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
  229. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +103 -0
  230. package/src/services/assets/asset-processing-service/asset-processing.service.js +285 -0
  231. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  232. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  233. package/src/services/assets/asset-processing-service/assets.types.d.ts +103 -0
  234. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  235. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
  236. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
  237. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  238. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  239. package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
  240. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
  241. package/src/services/assets/asset-processing-service/index.d.ts +6 -0
  242. package/src/services/assets/asset-processing-service/index.js +6 -0
  243. package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
  244. package/src/services/assets/asset-processing-service/page-package.js +80 -0
  245. package/src/services/assets/asset-processing-service/{processor.interface.ts → processor.interface.d.ts} +5 -10
  246. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  247. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  248. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  249. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  250. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
  251. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
  252. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
  253. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  254. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  255. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
  256. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
  257. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
  258. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +97 -0
  259. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
  260. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
  261. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
  262. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
  263. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  264. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +69 -0
  265. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
  266. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
  267. package/src/services/assets/browser-bundle.service.d.ts +73 -0
  268. package/src/services/assets/browser-bundle.service.js +41 -0
  269. package/src/services/cache/cache.types.d.ts +107 -0
  270. package/src/services/cache/cache.types.js +0 -0
  271. package/src/services/cache/index.d.ts +7 -0
  272. package/src/services/cache/index.js +7 -0
  273. package/src/services/cache/memory-cache-store.d.ts +42 -0
  274. package/src/services/cache/memory-cache-store.js +98 -0
  275. package/src/services/cache/page-cache-service.d.ts +70 -0
  276. package/src/services/cache/page-cache-service.js +152 -0
  277. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  278. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  279. package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
  280. package/src/services/html/html-rewriter-provider.service.js +68 -0
  281. package/src/services/html/html-transformer.service.d.ts +96 -0
  282. package/src/services/html/html-transformer.service.js +287 -0
  283. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  284. package/src/services/invalidation/development-invalidation.service.js +190 -0
  285. package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
  286. package/src/services/module-loading/app-module-loader.service.js +0 -0
  287. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  288. package/src/services/module-loading/app-server-module-transpiler.service.js +130 -0
  289. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  290. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  291. package/src/services/module-loading/{module-loading-types.ts → module-loading-types.d.ts} +0 -1
  292. package/src/services/module-loading/module-loading-types.js +0 -0
  293. package/src/services/module-loading/page-module-import.service.d.ts +95 -0
  294. package/src/services/module-loading/page-module-import.service.js +193 -0
  295. package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
  296. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  297. package/src/services/module-loading/source-module-support.d.ts +5 -0
  298. package/src/services/module-loading/source-module-support.js +8 -0
  299. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  300. package/src/services/runtime-state/dev-graph.service.js +162 -0
  301. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  302. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  303. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  304. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  305. package/src/services/validation/schema-validation-service.d.ts +122 -0
  306. package/src/services/validation/schema-validation-service.js +101 -0
  307. package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
  308. package/src/services/validation/standard-schema.types.js +0 -0
  309. package/src/static-site-generator/static-site-generator.d.ts +104 -0
  310. package/src/static-site-generator/static-site-generator.js +316 -0
  311. package/src/types/internal-types.d.ts +232 -0
  312. package/src/types/internal-types.js +0 -0
  313. package/src/types/public-types.d.ts +1307 -0
  314. package/src/types/public-types.js +0 -0
  315. package/src/utils/deep-merge.d.ts +14 -0
  316. package/src/utils/deep-merge.js +32 -0
  317. package/src/utils/hash.d.ts +1 -0
  318. package/src/utils/hash.js +7 -0
  319. package/src/utils/html-escaping.d.ts +7 -0
  320. package/src/utils/html-escaping.js +6 -0
  321. package/src/utils/html.js +4 -0
  322. package/src/utils/invariant.d.ts +5 -0
  323. package/src/utils/invariant.js +11 -0
  324. package/src/utils/locals-utils.d.ts +15 -0
  325. package/src/utils/locals-utils.js +24 -0
  326. package/src/utils/parse-cli-args.d.ts +27 -0
  327. package/src/utils/parse-cli-args.js +62 -0
  328. package/src/utils/path-utils.module.d.ts +5 -0
  329. package/src/utils/path-utils.module.js +14 -0
  330. package/src/utils/resolve-work-dir.d.ts +11 -0
  331. package/src/utils/resolve-work-dir.js +31 -0
  332. package/src/utils/runtime.d.ts +11 -0
  333. package/src/utils/runtime.js +40 -0
  334. package/src/utils/server-utils.module.d.ts +19 -0
  335. package/src/utils/server-utils.module.js +56 -0
  336. package/src/watchers/project-watcher.d.ts +136 -0
  337. package/src/watchers/project-watcher.js +275 -0
  338. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  339. package/src/watchers/project-watcher.test-helpers.js +52 -0
  340. package/src/adapters/abstract/application-adapter.test.ts +0 -218
  341. package/src/adapters/abstract/application-adapter.ts +0 -379
  342. package/src/adapters/abstract/router-adapter.ts +0 -30
  343. package/src/adapters/abstract/server-adapter.ts +0 -79
  344. package/src/adapters/bun/client-bridge.ts +0 -62
  345. package/src/adapters/bun/create-app.ts +0 -214
  346. package/src/adapters/bun/hmr-manager.test.ts +0 -265
  347. package/src/adapters/bun/hmr-manager.ts +0 -88
  348. package/src/adapters/bun/index.ts +0 -2
  349. package/src/adapters/bun/runtime-host.ts +0 -76
  350. package/src/adapters/bun/server-adapter.ts +0 -605
  351. package/src/adapters/bun/static-preview-host.ts +0 -70
  352. package/src/adapters/create-app.test.ts +0 -10
  353. package/src/adapters/create-app.ts +0 -91
  354. package/src/adapters/index.ts +0 -2
  355. package/src/adapters/node/create-app.test.ts +0 -76
  356. package/src/adapters/node/create-app.ts +0 -116
  357. package/src/adapters/node/http-request-bridge.test.ts +0 -146
  358. package/src/adapters/node/http-request-bridge.ts +0 -176
  359. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  360. package/src/adapters/node/node-client-bridge.ts +0 -79
  361. package/src/adapters/node/node-hmr-manager.test.ts +0 -374
  362. package/src/adapters/node/node-hmr-manager.ts +0 -72
  363. package/src/adapters/node/runtime-host.test.ts +0 -49
  364. package/src/adapters/node/runtime-host.ts +0 -113
  365. package/src/adapters/node/server-adapter-dependencies.ts +0 -28
  366. package/src/adapters/node/server-adapter.test.ts +0 -84
  367. package/src/adapters/node/server-adapter.ts +0 -423
  368. package/src/adapters/node/static-content-server.test.ts +0 -60
  369. package/src/adapters/node/static-content-server.ts +0 -239
  370. package/src/adapters/node/static-preview-host.test.ts +0 -89
  371. package/src/adapters/node/static-preview-host.ts +0 -101
  372. package/src/adapters/shared/api-response.test.ts +0 -97
  373. package/src/adapters/shared/api-response.ts +0 -104
  374. package/src/adapters/shared/application-adapter.ts +0 -199
  375. package/src/adapters/shared/define-api-handler.ts +0 -66
  376. package/src/adapters/shared/explicit-static-render-preparation.ts +0 -58
  377. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  378. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -131
  379. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -85
  380. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -118
  381. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -176
  382. package/src/adapters/shared/fs-server-response-factory.ts +0 -96
  383. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -311
  384. package/src/adapters/shared/fs-server-response-matcher.ts +0 -240
  385. package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
  386. package/src/adapters/shared/hmr-html-response.ts +0 -54
  387. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -228
  388. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -229
  389. package/src/adapters/shared/render-context.test.ts +0 -244
  390. package/src/adapters/shared/render-context.ts +0 -161
  391. package/src/adapters/shared/runtime-app-bootstrap.test.ts +0 -96
  392. package/src/adapters/shared/runtime-app-bootstrap.ts +0 -72
  393. package/src/adapters/shared/runtime-host.ts +0 -11
  394. package/src/adapters/shared/server-adapter.test.ts +0 -130
  395. package/src/adapters/shared/server-adapter.ts +0 -571
  396. package/src/adapters/shared/server-route-handler.test.ts +0 -112
  397. package/src/adapters/shared/server-route-handler.ts +0 -153
  398. package/src/adapters/shared/server-static-builder.test.ts +0 -338
  399. package/src/adapters/shared/server-static-builder.ts +0 -170
  400. package/src/adapters/shared/shared-hmr-manager.ts +0 -298
  401. package/src/adapters/shared/static-preview-host.ts +0 -12
  402. package/src/build/browser-runtime-manifest.test.ts +0 -121
  403. package/src/build/browser-runtime-manifest.ts +0 -105
  404. package/src/build/browser-runtime-plugin-helpers.test.ts +0 -49
  405. package/src/build/browser-runtime-plugin.test.ts +0 -256
  406. package/src/build/browser-runtime-plugin.ts +0 -306
  407. package/src/build/build-adapter.test.ts +0 -463
  408. package/src/build/build-adapter.ts +0 -788
  409. package/src/build/build-manifest.ts +0 -79
  410. package/src/build/build-types.ts +0 -83
  411. package/src/build/rolldown-build-adapter.test.ts +0 -352
  412. package/src/build/rolldown-build-adapter.ts +0 -363
  413. package/src/build/rolldown-plugin-bridge.test.ts +0 -256
  414. package/src/build/rolldown-plugin-bridge.ts +0 -309
  415. package/src/build/runtime-build-executor.test.ts +0 -130
  416. package/src/build/runtime-build-output-normalizer.ts +0 -137
  417. package/src/build/serialized-build-executor.test.ts +0 -96
  418. package/src/build/serialized-build-executor.ts +0 -90
  419. package/src/build/server-side-css-shim-plugin.ts +0 -77
  420. package/src/cache/module-parse-cache.test.ts +0 -73
  421. package/src/cache/module-parse-cache.ts +0 -137
  422. package/src/config/config-builder.test.ts +0 -456
  423. package/src/config/config-builder.ts +0 -728
  424. package/src/config/config-builder.typecheck.test.ts +0 -96
  425. package/src/dev/host-runtime.ts +0 -34
  426. package/src/dev/sc-server.ts +0 -143
  427. package/src/eco/eco.browser.test.ts +0 -43
  428. package/src/eco/eco.browser.ts +0 -137
  429. package/src/eco/eco.test.ts +0 -781
  430. package/src/eco/eco.ts +0 -262
  431. package/src/eco/eco.types.ts +0 -293
  432. package/src/eco/eco.utils.test.ts +0 -219
  433. package/src/eco/eco.utils.ts +0 -5
  434. package/src/eco/global-injector-map.test.ts +0 -42
  435. package/src/eco/global-injector-map.ts +0 -112
  436. package/src/eco/lazy-injector-map.test.ts +0 -66
  437. package/src/eco/lazy-injector-map.ts +0 -120
  438. package/src/eco/module-dependencies.test.ts +0 -30
  439. package/src/eco/module-dependencies.ts +0 -75
  440. package/src/errors/http-error.test.ts +0 -134
  441. package/src/errors/http-error.ts +0 -72
  442. package/src/errors/index.ts +0 -3
  443. package/src/errors/locals-access-error.ts +0 -7
  444. package/src/global/app-logger.ts +0 -4
  445. package/src/global/utils.test.ts +0 -12
  446. 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
  447. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  448. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  449. package/src/hmr/client/hmr-runtime.ts +0 -162
  450. package/src/hmr/hmr-strategy.test.ts +0 -124
  451. package/src/hmr/hmr-strategy.ts +0 -177
  452. package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
  453. package/src/hmr/hmr.test.e2e.ts +0 -66
  454. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  455. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -344
  456. package/src/hmr/strategies/js-hmr-strategy.ts +0 -307
  457. package/src/index.browser.ts +0 -3
  458. package/src/index.ts +0 -15
  459. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
  460. package/src/integrations/ghtml/ghtml-renderer.ts +0 -87
  461. package/src/integrations/ghtml/ghtml.constants.ts +0 -1
  462. package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
  463. package/src/plugins/alias-resolver-cache.test.ts +0 -110
  464. package/src/plugins/alias-resolver-cache.ts +0 -145
  465. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  466. package/src/plugins/alias-resolver-plugin.ts +0 -75
  467. package/src/plugins/eco-component-meta-plugin.test.ts +0 -421
  468. package/src/plugins/eco-component-meta-plugin.ts +0 -518
  469. package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
  470. package/src/plugins/foreign-jsx-override-plugin.ts +0 -76
  471. package/src/plugins/integration-plugin.test.ts +0 -151
  472. package/src/plugins/integration-plugin.ts +0 -344
  473. package/src/plugins/processor.test.ts +0 -148
  474. package/src/plugins/processor.ts +0 -257
  475. package/src/plugins/source-transform.test.ts +0 -82
  476. package/src/plugins/source-transform.ts +0 -123
  477. package/src/route-renderer/orchestration/component-render-context.ts +0 -338
  478. package/src/route-renderer/orchestration/declared-ownership-graph.ts +0 -62
  479. package/src/route-renderer/orchestration/foreign-subtree-execution.service.ts +0 -431
  480. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2251
  481. package/src/route-renderer/orchestration/integration-renderer.ts +0 -1384
  482. package/src/route-renderer/orchestration/ownership-planning.service.ts +0 -97
  483. package/src/route-renderer/orchestration/ownership-validation.service.ts +0 -76
  484. package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -29
  485. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.test.ts +0 -435
  486. package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.ts +0 -310
  487. package/src/route-renderer/orchestration/render-output.utils.ts +0 -310
  488. package/src/route-renderer/orchestration/route-render-orchestrator.prepare-render-options.test.ts +0 -1365
  489. package/src/route-renderer/orchestration/route-render-orchestrator.test.ts +0 -267
  490. package/src/route-renderer/orchestration/route-render-orchestrator.ts +0 -879
  491. package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
  492. package/src/route-renderer/orchestration/template-serialization.ts +0 -117
  493. package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -202
  494. package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -153
  495. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -761
  496. package/src/route-renderer/page-loading/dependency-resolver.ts +0 -144
  497. package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
  498. package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
  499. package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
  500. package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
  501. package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
  502. package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -244
  503. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
  504. package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
  505. package/src/route-renderer/route-renderer.ts +0 -133
  506. package/src/router/client/link-intent.test.browser.ts +0 -51
  507. package/src/router/client/link-intent.ts +0 -92
  508. package/src/router/client/navigation-coordinator.test.ts +0 -237
  509. package/src/router/client/navigation-coordinator.ts +0 -453
  510. package/src/router/server/route-registry.test.ts +0 -176
  511. package/src/router/server/route-registry.ts +0 -382
  512. package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
  513. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -473
  514. package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -344
  515. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  516. package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
  517. package/src/services/assets/asset-processing-service/assets.types.ts +0 -128
  518. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
  519. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -98
  520. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  521. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
  522. package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
  523. package/src/services/assets/asset-processing-service/index.ts +0 -6
  524. package/src/services/assets/asset-processing-service/page-package.test.ts +0 -135
  525. package/src/services/assets/asset-processing-service/page-package.ts +0 -103
  526. package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
  527. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  528. package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
  529. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -173
  530. package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
  531. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -188
  532. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -138
  533. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
  534. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -116
  535. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -270
  536. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -145
  537. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
  538. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -72
  539. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -83
  540. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
  541. package/src/services/assets/browser-bundle.service.test.ts +0 -66
  542. package/src/services/assets/browser-bundle.service.ts +0 -109
  543. package/src/services/cache/cache.types.ts +0 -126
  544. package/src/services/cache/index.ts +0 -18
  545. package/src/services/cache/memory-cache-store.test.ts +0 -225
  546. package/src/services/cache/memory-cache-store.ts +0 -130
  547. package/src/services/cache/page-cache-service.test.ts +0 -175
  548. package/src/services/cache/page-cache-service.ts +0 -202
  549. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  550. package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
  551. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  552. package/src/services/html/html-rewriter-provider.service.ts +0 -105
  553. package/src/services/html/html-transformer.service.test.ts +0 -544
  554. package/src/services/html/html-transformer.service.ts +0 -369
  555. package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
  556. package/src/services/invalidation/development-invalidation.service.ts +0 -262
  557. package/src/services/module-loading/app-module-loader.service.ts +0 -9
  558. package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -297
  559. package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -168
  560. package/src/services/module-loading/host-module-loader-registry.ts +0 -15
  561. package/src/services/module-loading/page-module-import.service.test.ts +0 -652
  562. package/src/services/module-loading/page-module-import.service.ts +0 -302
  563. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -242
  564. package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
  565. package/src/services/module-loading/source-module-support.ts +0 -19
  566. package/src/services/runtime-state/dev-graph.service.ts +0 -217
  567. package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
  568. package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
  569. package/src/services/validation/schema-validation-service.test.ts +0 -223
  570. package/src/services/validation/schema-validation-service.ts +0 -204
  571. package/src/static-site-generator/static-site-generator.test.ts +0 -408
  572. package/src/static-site-generator/static-site-generator.ts +0 -445
  573. package/src/types/internal-types.ts +0 -243
  574. package/src/types/public-types.ts +0 -1508
  575. package/src/utils/deep-merge.test.ts +0 -114
  576. package/src/utils/deep-merge.ts +0 -47
  577. package/src/utils/hash.ts +0 -5
  578. package/src/utils/html-escaping.ts +0 -9
  579. package/src/utils/invariant.test.ts +0 -22
  580. package/src/utils/invariant.ts +0 -15
  581. package/src/utils/locals-utils.ts +0 -37
  582. package/src/utils/parse-cli-args.test.ts +0 -69
  583. package/src/utils/parse-cli-args.ts +0 -105
  584. package/src/utils/path-utils.module.ts +0 -14
  585. package/src/utils/path-utils.test.ts +0 -15
  586. package/src/utils/resolve-work-dir.ts +0 -45
  587. package/src/utils/runtime.ts +0 -44
  588. package/src/utils/server-utils.module.ts +0 -67
  589. package/src/utils/server-utils.test.ts +0 -38
  590. package/src/watchers/project-watcher.integration.test.ts +0 -337
  591. package/src/watchers/project-watcher.test-helpers.ts +0 -42
  592. package/src/watchers/project-watcher.test.ts +0 -768
  593. package/src/watchers/project-watcher.ts +0 -357
  594. /package/src/utils/{html.ts → html.d.ts} +0 -0
@@ -0,0 +1,80 @@
1
+ function buildGlobalInjectorMap(triggers) {
2
+ const map = {};
3
+ for (const { triggerId, rules } of triggers) {
4
+ const entry = map[triggerId] ?? {};
5
+ for (const rule of rules) {
6
+ if ("on:idle" in rule) {
7
+ const { scripts } = rule["on:idle"];
8
+ entry["on:idle"] = {
9
+ scripts: Array.from(/* @__PURE__ */ new Set([...entry["on:idle"]?.scripts ?? [], ...scripts]))
10
+ };
11
+ continue;
12
+ }
13
+ if ("on:interaction" in rule) {
14
+ const { value, scripts } = rule["on:interaction"];
15
+ entry["on:interaction"] = {
16
+ value,
17
+ scripts: Array.from(/* @__PURE__ */ new Set([...entry["on:interaction"]?.scripts ?? [], ...scripts]))
18
+ };
19
+ continue;
20
+ }
21
+ if ("on:visible" in rule) {
22
+ const { value, scripts } = rule["on:visible"];
23
+ entry["on:visible"] = {
24
+ ...value ? { value } : {},
25
+ scripts: Array.from(/* @__PURE__ */ new Set([...entry["on:visible"]?.scripts ?? [], ...scripts]))
26
+ };
27
+ continue;
28
+ }
29
+ }
30
+ if (Object.keys(entry).length > 0) {
31
+ map[triggerId] = entry;
32
+ }
33
+ }
34
+ return map;
35
+ }
36
+ function buildGlobalInjectorMapScript(triggers) {
37
+ const map = buildGlobalInjectorMap(triggers);
38
+ return JSON.stringify(map).replace(/<\/script/gi, "<\\/script");
39
+ }
40
+ function buildGlobalInjectorBootstrapContent(globalInjectorModuleSpecifier) {
41
+ return `import { initGlobalInjector } from ${JSON.stringify(globalInjectorModuleSpecifier)};
42
+
43
+ function pruneStaleTriggerMaps() {
44
+ const mapScripts = Array.from(document.querySelectorAll('script[type="ecopages/global-injector-map"]'));
45
+ if (mapScripts.length <= 1) {
46
+ return;
47
+ }
48
+
49
+ const latestMapScript = mapScripts[mapScripts.length - 1];
50
+ for (const mapScript of mapScripts) {
51
+ if (mapScript !== latestMapScript) {
52
+ mapScript.remove();
53
+ }
54
+ }
55
+ }
56
+
57
+ const globalScope = window;
58
+ if (typeof globalScope.__ecoGlobalInjectorCleanup === 'function') {
59
+ globalScope.__ecoGlobalInjectorCleanup();
60
+ }
61
+
62
+ const injector = initGlobalInjector();
63
+
64
+ const handleAfterSwap = () => {
65
+ pruneStaleTriggerMaps();
66
+ injector.refresh();
67
+ };
68
+
69
+ document.addEventListener('eco:after-swap', handleAfterSwap);
70
+ pruneStaleTriggerMaps();
71
+
72
+ globalScope.__ecoGlobalInjectorCleanup = () => {
73
+ document.removeEventListener('eco:after-swap', handleAfterSwap);
74
+ injector.cleanup();
75
+ };`;
76
+ }
77
+ export {
78
+ buildGlobalInjectorBootstrapContent,
79
+ buildGlobalInjectorMapScript
80
+ };
@@ -0,0 +1,8 @@
1
+ import type { ResolvedLazyScriptGroup } from '../types/public-types.js';
2
+ /**
3
+ * Creates a safe JSON payload string for `<script type="ecopages/injector-map">`.
4
+ *
5
+ * @param lazyGroups Lazy script groups resolved during dependency processing.
6
+ * @returns Escaped JSON string safe for inline script embedding.
7
+ */
8
+ export declare function buildInjectorMapScript(lazyGroups: readonly ResolvedLazyScriptGroup[]): string;
@@ -0,0 +1,70 @@
1
+ function normalizeScripts(scripts) {
2
+ return scripts.split(",").map((scriptPath) => scriptPath.trim()).filter(Boolean).map((scriptPath) => {
3
+ if (scriptPath.startsWith("/")) {
4
+ return scriptPath;
5
+ }
6
+ const normalizedRelativePath = scriptPath.replace(/^\/+/, "").replace(/^(\.\/)+/, "");
7
+ return `/${normalizedRelativePath}`;
8
+ });
9
+ }
10
+ function dedupeCsvValues(values) {
11
+ const seen = /* @__PURE__ */ new Set();
12
+ for (const value of values) {
13
+ for (const token of value.split(",").map((part) => part.trim()).filter(Boolean)) {
14
+ seen.add(token);
15
+ }
16
+ }
17
+ return Array.from(seen).join(",");
18
+ }
19
+ function buildInjectorMap(lazyGroups) {
20
+ const map = {};
21
+ for (const group of lazyGroups) {
22
+ const scripts = normalizeScripts(group.scripts);
23
+ const lazy = group.lazy;
24
+ if ("on:idle" in lazy) {
25
+ map["on:idle"] = {
26
+ scripts: [...map["on:idle"]?.scripts ?? [], ...scripts]
27
+ };
28
+ continue;
29
+ }
30
+ if ("on:interaction" in lazy) {
31
+ const currentValue = map["on:interaction"]?.value;
32
+ const nextValue = lazy["on:interaction"];
33
+ map["on:interaction"] = {
34
+ value: typeof currentValue === "string" ? dedupeCsvValues([currentValue, nextValue]) : nextValue,
35
+ scripts: [...map["on:interaction"]?.scripts ?? [], ...scripts]
36
+ };
37
+ continue;
38
+ }
39
+ if ("on:visible" in lazy) {
40
+ const currentValue = map["on:visible"]?.value;
41
+ const currentThreshold = typeof currentValue === "string" ? currentValue : void 0;
42
+ const nextValue = lazy["on:visible"];
43
+ map["on:visible"] = {
44
+ ...nextValue === true ? currentThreshold ? { value: currentThreshold } : {} : { value: String(nextValue) },
45
+ scripts: [...map["on:visible"]?.scripts ?? [], ...scripts]
46
+ };
47
+ continue;
48
+ }
49
+ throw new Error(
50
+ `Invalid lazy options: must specify on:idle, on:interaction, or on:visible. Received: ${JSON.stringify(lazy)}`
51
+ );
52
+ }
53
+ for (const key of Object.keys(map)) {
54
+ const scripts = map[key]?.scripts;
55
+ if (scripts) {
56
+ map[key] = {
57
+ ...map[key],
58
+ scripts: Array.from(new Set(scripts))
59
+ };
60
+ }
61
+ }
62
+ return map;
63
+ }
64
+ function buildInjectorMapScript(lazyGroups) {
65
+ const map = buildInjectorMap(lazyGroups);
66
+ return JSON.stringify(map).replace(/<\/script/gi, "<\\/script");
67
+ }
68
+ export {
69
+ buildInjectorMapScript
70
+ };
@@ -0,0 +1,18 @@
1
+ export type ModuleDependencyDeclaration = {
2
+ from: string;
3
+ imports?: string[];
4
+ };
5
+ /**
6
+ * Parses a module grammar declaration into normalized object form.
7
+ *
8
+ * Supported input examples:
9
+ * - `react-aria-components`
10
+ * - `react-aria-components{Table,Select}`
11
+ */
12
+ export declare function parseModuleDeclaration(value: string): ModuleDependencyDeclaration;
13
+ /**
14
+ * Normalizes and deduplicates module declarations from `modules`.
15
+ *
16
+ * Returns canonical object declarations suitable for downstream bundling logic.
17
+ */
18
+ export declare function normalizeModuleDeclarations(modules?: string[]): ModuleDependencyDeclaration[];
@@ -0,0 +1,49 @@
1
+ function normalizeImports(imports) {
2
+ if (!imports || imports.length === 0) {
3
+ return void 0;
4
+ }
5
+ const normalized = Array.from(new Set(imports.map((entry) => entry.trim()).filter((entry) => entry.length > 0)));
6
+ return normalized.length > 0 ? normalized : void 0;
7
+ }
8
+ function parseModuleDeclaration(value) {
9
+ const source = value.trim();
10
+ if (source.length === 0) {
11
+ throw new Error("Module declaration cannot be empty");
12
+ }
13
+ const openBraceIndex = source.indexOf("{");
14
+ if (openBraceIndex < 0) {
15
+ return { from: source };
16
+ }
17
+ const closeBraceIndex = source.lastIndexOf("}");
18
+ if (closeBraceIndex !== source.length - 1 || closeBraceIndex <= openBraceIndex) {
19
+ throw new Error(`Invalid module declaration '${value}'`);
20
+ }
21
+ const from = source.slice(0, openBraceIndex).trim();
22
+ if (from.length === 0) {
23
+ throw new Error(`Invalid module declaration '${value}'`);
24
+ }
25
+ const importsSlice = source.slice(openBraceIndex + 1, closeBraceIndex);
26
+ const imports = normalizeImports(importsSlice.split(","));
27
+ return {
28
+ from,
29
+ imports
30
+ };
31
+ }
32
+ function normalizeModuleDeclarations(modules) {
33
+ const declarations = modules ?? [];
34
+ const output = [];
35
+ const seen = /* @__PURE__ */ new Set();
36
+ for (const declaration of declarations) {
37
+ const normalized = parseModuleDeclaration(declaration);
38
+ const key = `${normalized.from}::${(normalized.imports ?? []).join(",")}`;
39
+ if (!seen.has(key)) {
40
+ seen.add(key);
41
+ output.push(normalized);
42
+ }
43
+ }
44
+ return output;
45
+ }
46
+ export {
47
+ normalizeModuleDeclarations,
48
+ parseModuleDeclaration
49
+ };
@@ -0,0 +1,31 @@
1
+ export interface HttpErrorDetails {
2
+ [key: string]: unknown;
3
+ }
4
+ export interface HttpErrorJson {
5
+ error: string;
6
+ status: number;
7
+ details?: HttpErrorDetails;
8
+ }
9
+ /**
10
+ * HTTP error class for structured error handling in route handlers.
11
+ * Provides static factory methods for common HTTP error responses.
12
+ */
13
+ export declare class HttpError extends Error {
14
+ readonly status: number;
15
+ readonly details?: HttpErrorDetails;
16
+ constructor(status: number, message: string, details?: HttpErrorDetails);
17
+ /**
18
+ * Serialize error to JSON for API responses.
19
+ */
20
+ toJSON(): HttpErrorJson;
21
+ /**
22
+ * Create a Response object from this error.
23
+ */
24
+ toResponse(): Response;
25
+ static BadRequest(message?: string, details?: HttpErrorDetails): HttpError;
26
+ static Unauthorized(message?: string): HttpError;
27
+ static Forbidden(message?: string): HttpError;
28
+ static NotFound(message?: string): HttpError;
29
+ static Conflict(message?: string, details?: HttpErrorDetails): HttpError;
30
+ static InternalServerError(message?: string): HttpError;
31
+ }
@@ -0,0 +1,50 @@
1
+ class HttpError extends Error {
2
+ status;
3
+ details;
4
+ constructor(status, message, details) {
5
+ super(message);
6
+ this.name = "HttpError";
7
+ this.status = status;
8
+ this.details = details;
9
+ }
10
+ /**
11
+ * Serialize error to JSON for API responses.
12
+ */
13
+ toJSON() {
14
+ const json = {
15
+ error: this.message,
16
+ status: this.status
17
+ };
18
+ if (this.details) {
19
+ json.details = this.details;
20
+ }
21
+ return json;
22
+ }
23
+ /**
24
+ * Create a Response object from this error.
25
+ */
26
+ toResponse() {
27
+ return Response.json(this.toJSON(), { status: this.status });
28
+ }
29
+ static BadRequest(message = "Bad Request", details) {
30
+ return new HttpError(400, message, details);
31
+ }
32
+ static Unauthorized(message = "Unauthorized") {
33
+ return new HttpError(401, message);
34
+ }
35
+ static Forbidden(message = "Forbidden") {
36
+ return new HttpError(403, message);
37
+ }
38
+ static NotFound(message = "Not Found") {
39
+ return new HttpError(404, message);
40
+ }
41
+ static Conflict(message = "Conflict", details) {
42
+ return new HttpError(409, message, details);
43
+ }
44
+ static InternalServerError(message = "Internal Server Error") {
45
+ return new HttpError(500, message);
46
+ }
47
+ }
48
+ export {
49
+ HttpError
50
+ };
@@ -0,0 +1,3 @@
1
+ export { HttpError } from './http-error.js';
2
+ export type { HttpErrorDetails, HttpErrorJson } from './http-error.js';
3
+ export { LocalsAccessError } from './locals-access-error.js';
@@ -0,0 +1,6 @@
1
+ import { HttpError } from "./http-error.js";
2
+ import { LocalsAccessError } from "./locals-access-error.js";
3
+ export {
4
+ HttpError,
5
+ LocalsAccessError
6
+ };
@@ -0,0 +1,4 @@
1
+ export declare class LocalsAccessError extends Error {
2
+ name: string;
3
+ constructor(message: string);
4
+ }
@@ -0,0 +1,9 @@
1
+ class LocalsAccessError extends Error {
2
+ name = "LocalsAccessError";
3
+ constructor(message) {
4
+ super(message);
5
+ }
6
+ }
7
+ export {
8
+ LocalsAccessError
9
+ };
@@ -0,0 +1,2 @@
1
+ import { Logger } from '@ecopages/logger';
2
+ export declare const appLogger: Logger;
@@ -0,0 +1,6 @@
1
+ import { Logger } from "@ecopages/logger";
2
+ const debug = process.env.ECOPAGES_LOGGER_DEBUG === "true";
3
+ const appLogger = new Logger("[@ecopages/core]", { debug });
4
+ export {
5
+ appLogger
6
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Ecopages HMR Runtime
3
+ * Injected into the browser to handle Hot Module Replacement updates.
4
+ */
5
+ export {};
@@ -0,0 +1,117 @@
1
+ import { getEcoNavigationRuntime } from "../../router/client/navigation-coordinator.js";
2
+ (function() {
3
+ const WS_URL = "ws://" + location.host + "/_hmr";
4
+ let socket;
5
+ let reconnectAttempts = 0;
6
+ function connect() {
7
+ socket = new WebSocket(WS_URL);
8
+ socket.addEventListener("open", () => {
9
+ console.log("[ecopages] HMR Connected");
10
+ reconnectAttempts = 0;
11
+ });
12
+ socket.addEventListener("message", async (event) => {
13
+ try {
14
+ const payload = JSON.parse(event.data);
15
+ handleMessage(payload);
16
+ } catch (e) {
17
+ console.error("[ecopages] Invalid HMR message:", e);
18
+ }
19
+ });
20
+ socket.addEventListener("close", () => {
21
+ if (reconnectAttempts < 10) {
22
+ setTimeout(connect, 1e3 * 2 ** reconnectAttempts);
23
+ reconnectAttempts++;
24
+ }
25
+ });
26
+ }
27
+ async function handleMessage(payload) {
28
+ const navigationRuntime = getEcoNavigationRuntime(window);
29
+ switch (payload.type) {
30
+ case "reload":
31
+ await waitForNavigationToSettle(navigationRuntime);
32
+ location.reload();
33
+ break;
34
+ case "layout-update": {
35
+ await waitForNavigationToSettle(navigationRuntime);
36
+ if (await navigationRuntime.reloadCurrentPage({ clearCache: true, moduleUrl: getActiveHmrModuleUrl() })) {
37
+ } else {
38
+ location.reload();
39
+ }
40
+ break;
41
+ }
42
+ case "error":
43
+ console.error("[ecopages] HMR Error:", payload.message);
44
+ break;
45
+ case "update":
46
+ if (payload.path) {
47
+ await applyUpdate(payload.path, payload.timestamp);
48
+ }
49
+ break;
50
+ case "css-update":
51
+ if (payload.path) {
52
+ refreshStylesheet(payload.path);
53
+ }
54
+ break;
55
+ }
56
+ }
57
+ async function applyUpdate(path, timestamp) {
58
+ try {
59
+ const url = path + "?t=" + (timestamp || Date.now());
60
+ const handlers = window.__ECO_PAGES__?.hmrHandlers;
61
+ const navigationRuntime = getEcoNavigationRuntime(window);
62
+ await waitForNavigationToSettle(navigationRuntime);
63
+ if (handlers?.[path]) {
64
+ await handlers[path](url);
65
+ return;
66
+ }
67
+ await import(url);
68
+ if (await navigationRuntime.reloadCurrentPage({ clearCache: false })) {
69
+ }
70
+ } catch (e) {
71
+ console.error("[ecopages] Failed to apply HMR update:", e);
72
+ }
73
+ }
74
+ function getActiveHmrModuleUrl() {
75
+ const pageModule = window.__ECO_PAGES__?.page?.module;
76
+ if (pageModule && pageModule.includes("/assets/_hmr/")) {
77
+ return pageModule.split("?")[0];
78
+ }
79
+ const handlerPaths = Object.keys(window.__ECO_PAGES__?.hmrHandlers ?? {});
80
+ return handlerPaths[handlerPaths.length - 1];
81
+ }
82
+ async function waitForNavigationToSettle(navigationRuntime) {
83
+ if (!navigationRuntime.hasPendingNavigationTransaction()) {
84
+ return;
85
+ }
86
+ await new Promise((resolve) => {
87
+ const startedAt = performance.now();
88
+ const timeoutMs = 2e3;
89
+ const poll = () => {
90
+ if (!navigationRuntime.hasPendingNavigationTransaction()) {
91
+ resolve();
92
+ return;
93
+ }
94
+ if (performance.now() - startedAt >= timeoutMs) {
95
+ resolve();
96
+ return;
97
+ }
98
+ requestAnimationFrame(poll);
99
+ };
100
+ requestAnimationFrame(poll);
101
+ });
102
+ }
103
+ function refreshStylesheet(path) {
104
+ const filename = path.split("/").pop() || "";
105
+ const links = document.querySelectorAll('link[rel="stylesheet"]');
106
+ links.forEach((link) => {
107
+ const href = link.href;
108
+ if (href.includes(filename) || href.includes(path.replace(/^.*\/src\//, "/assets/"))) {
109
+ const url = new URL(href, location.origin);
110
+ url.searchParams.set("t", Date.now().toString());
111
+ link.href = url.toString();
112
+ console.log("[ecopages] CSS updated:", filename);
113
+ }
114
+ });
115
+ }
116
+ connect();
117
+ })();
@@ -0,0 +1,162 @@
1
+ import type { ClientBridgeEvent } from '../types/public-types.js';
2
+ /**
3
+ * HMR Strategy Pattern
4
+ *
5
+ * This module defines the base classes and types for Hot Module Replacement strategies.
6
+ * Each strategy handles a specific type of file change and determines how to process it.
7
+ *
8
+ * @module
9
+ * @example
10
+ * ```typescript
11
+ * class CustomHmrStrategy extends HmrStrategy {
12
+ * readonly type = HmrStrategyType.INTEGRATION;
13
+ *
14
+ * matches(filePath: string): boolean {
15
+ * return filePath.endsWith('.custom');
16
+ * }
17
+ *
18
+ * async process(filePath: string): Promise<HmrAction> {
19
+ * return {
20
+ * type: 'broadcast',
21
+ * events: [{ type: 'update', path: filePath, timestamp: Date.now() }],
22
+ * };
23
+ * }
24
+ * }
25
+ * ```
26
+ */
27
+ /**
28
+ * Defines the category of an HMR strategy, which determines its execution priority.
29
+ * Strategies are evaluated in descending order: INTEGRATION → ASSET → SCRIPT → FALLBACK.
30
+ *
31
+ * @remarks
32
+ * The numeric values represent base priorities. Strategies can fine-tune their priority
33
+ * using the `priorityOffset` property.
34
+ */
35
+ export declare const HmrStrategyType: {
36
+ /**
37
+ * Integration-specific strategies (React, Lit, etc.)
38
+ * Highest priority to allow framework-specific HMR handling.
39
+ */
40
+ readonly INTEGRATION: 100;
41
+ /**
42
+ * Asset processing strategies (CSS, images, etc.)
43
+ * High priority for specialized asset handling.
44
+ */
45
+ readonly ASSET: 50;
46
+ /**
47
+ * Generic script bundling strategies (JS/TS)
48
+ * Medium priority for standard script processing.
49
+ */
50
+ readonly SCRIPT: 25;
51
+ /**
52
+ * Fallback strategy for unhandled file types.
53
+ * Lowest priority, triggers full page reload.
54
+ */
55
+ readonly FALLBACK: 0;
56
+ };
57
+ export type HmrStrategyType = (typeof HmrStrategyType)[keyof typeof HmrStrategyType];
58
+ /**
59
+ * Represents an action to be taken after processing a file change.
60
+ */
61
+ export interface HmrAction {
62
+ /**
63
+ * Whether to broadcast an HMR event to connected clients.
64
+ */
65
+ type: 'broadcast' | 'none';
66
+ /**
67
+ * The HMR events to broadcast, if type is 'broadcast'.
68
+ * Multiple events may be broadcast in one action.
69
+ */
70
+ events?: ClientBridgeEvent[];
71
+ }
72
+ /**
73
+ * Base class for HMR strategies.
74
+ *
75
+ * Each strategy handles a specific type of file change and determines how to process it.
76
+ * Strategies are selected based on their priority (higher values are evaluated first) and
77
+ * whether they match the changed file path.
78
+ *
79
+ * @remarks
80
+ * Strategies are expected to be stateless and idempotent. The same file change
81
+ * should produce the same result when processed by the same strategy.
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * class MyAssetStrategy extends HmrStrategy {
86
+ * readonly type = HmrStrategyType.ASSET;
87
+ * readonly priorityOffset = 5;
88
+ *
89
+ * matches(filePath: string): boolean {
90
+ * return /\.(png|jpg|svg)$/.test(filePath);
91
+ * }
92
+ *
93
+ * async process(filePath: string): Promise<HmrAction> {
94
+ * await this.optimizeImage(filePath);
95
+ * return {
96
+ * type: 'broadcast',
97
+ * events: [{ type: 'update', path: filePath, timestamp: Date.now() }]
98
+ * };
99
+ * }
100
+ * }
101
+ * ```
102
+ */
103
+ export declare abstract class HmrStrategy {
104
+ /**
105
+ * The category of this strategy, determining its base priority.
106
+ */
107
+ abstract readonly type: HmrStrategyType;
108
+ /**
109
+ * Optional offset to fine-tune priority within the same category.
110
+ * Useful when multiple strategies share the same type.
111
+ *
112
+ * @defaultValue 0
113
+ */
114
+ readonly priorityOffset: number;
115
+ /**
116
+ * Computed priority for strategy selection.
117
+ * Higher values are evaluated first.
118
+ *
119
+ * @returns The sum of the strategy type and priority offset
120
+ */
121
+ get priority(): number;
122
+ /**
123
+ * Determines if this strategy can handle the given file path.
124
+ *
125
+ * @param filePath - Absolute path to the changed file
126
+ * @returns `true` when this strategy should process the file
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * matches(filePath: string): boolean {
131
+ * return filePath.endsWith('.css');
132
+ * }
133
+ * ```
134
+ */
135
+ abstract matches(filePath: string): boolean;
136
+ /**
137
+ * Processes a file change and returns the action to take.
138
+ *
139
+ * This method may perform side effects such as:
140
+ * - Rebuilding files
141
+ * - Writing to disk
142
+ * - Transforming code
143
+ * - Updating caches
144
+ *
145
+ * @param filePath - Absolute path to the changed file
146
+ * @returns Action to take (broadcast event or none)
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * async process(filePath: string): Promise<HmrAction> {
151
+ * const processed = await this.transform(filePath);
152
+ * await Bun.write(outputPath, processed);
153
+ *
154
+ * return {
155
+ * type: 'broadcast',
156
+ * events: [{ type: 'update', path: outputPath, timestamp: Date.now() }]
157
+ * };
158
+ * }
159
+ * ```
160
+ */
161
+ abstract process(filePath: string): Promise<HmrAction>;
162
+ }
@@ -0,0 +1,44 @@
1
+ const HmrStrategyType = {
2
+ /**
3
+ * Integration-specific strategies (React, Lit, etc.)
4
+ * Highest priority to allow framework-specific HMR handling.
5
+ */
6
+ INTEGRATION: 100,
7
+ /**
8
+ * Asset processing strategies (CSS, images, etc.)
9
+ * High priority for specialized asset handling.
10
+ */
11
+ ASSET: 50,
12
+ /**
13
+ * Generic script bundling strategies (JS/TS)
14
+ * Medium priority for standard script processing.
15
+ */
16
+ SCRIPT: 25,
17
+ /**
18
+ * Fallback strategy for unhandled file types.
19
+ * Lowest priority, triggers full page reload.
20
+ */
21
+ FALLBACK: 0
22
+ };
23
+ class HmrStrategy {
24
+ /**
25
+ * Optional offset to fine-tune priority within the same category.
26
+ * Useful when multiple strategies share the same type.
27
+ *
28
+ * @defaultValue 0
29
+ */
30
+ priorityOffset = 0;
31
+ /**
32
+ * Computed priority for strategy selection.
33
+ * Higher values are evaluated first.
34
+ *
35
+ * @returns The sum of the strategy type and priority offset
36
+ */
37
+ get priority() {
38
+ return this.type + this.priorityOffset;
39
+ }
40
+ }
41
+ export {
42
+ HmrStrategy,
43
+ HmrStrategyType
44
+ };
@@ -0,0 +1 @@
1
+ export {};