@ecopages/core 0.2.0-alpha.7 → 0.2.0-alpha.8

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 (354) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/package.json +212 -92
  3. package/src/adapters/abstract/application-adapter.d.ts +168 -0
  4. package/src/adapters/abstract/application-adapter.js +109 -0
  5. package/src/adapters/abstract/router-adapter.d.ts +26 -0
  6. package/src/adapters/abstract/router-adapter.js +5 -0
  7. package/src/adapters/abstract/server-adapter.d.ts +69 -0
  8. package/src/adapters/abstract/server-adapter.js +15 -0
  9. package/src/adapters/bun/client-bridge.d.ts +34 -0
  10. package/src/adapters/bun/client-bridge.js +48 -0
  11. package/src/adapters/bun/create-app.d.ts +60 -0
  12. package/src/adapters/bun/create-app.js +117 -0
  13. package/src/adapters/bun/hmr-manager.d.ts +143 -0
  14. package/src/adapters/bun/hmr-manager.js +334 -0
  15. package/src/adapters/bun/index.d.ts +2 -0
  16. package/src/adapters/bun/index.js +8 -0
  17. package/src/adapters/bun/server-adapter.d.ts +155 -0
  18. package/src/adapters/bun/server-adapter.js +373 -0
  19. package/src/adapters/bun/server-lifecycle.d.ts +63 -0
  20. package/src/adapters/bun/server-lifecycle.js +92 -0
  21. package/src/adapters/index.d.ts +6 -0
  22. package/src/adapters/index.js +14 -0
  23. package/src/adapters/node/bootstrap-dependency-resolver.d.ts +44 -0
  24. package/src/adapters/node/bootstrap-dependency-resolver.js +172 -0
  25. package/src/adapters/node/create-app.d.ts +21 -0
  26. package/src/adapters/node/create-app.js +143 -0
  27. package/src/adapters/node/index.d.ts +6 -0
  28. package/src/adapters/node/index.js +11 -0
  29. package/src/adapters/node/node-client-bridge.d.ts +26 -0
  30. package/src/adapters/node/node-client-bridge.js +66 -0
  31. package/src/adapters/node/node-hmr-manager.d.ts +133 -0
  32. package/src/adapters/node/node-hmr-manager.js +312 -0
  33. package/src/adapters/node/runtime-adapter.d.ts +46 -0
  34. package/src/adapters/node/runtime-adapter.js +306 -0
  35. package/src/adapters/node/server-adapter.d.ts +161 -0
  36. package/src/adapters/node/server-adapter.js +358 -0
  37. package/src/adapters/node/static-content-server.d.ts +60 -0
  38. package/src/adapters/node/static-content-server.js +194 -0
  39. package/src/adapters/node/write-runtime-manifest.d.ts +26 -0
  40. package/src/adapters/node/write-runtime-manifest.js +12 -0
  41. package/src/adapters/shared/api-response.d.ts +52 -0
  42. package/src/adapters/shared/api-response.js +96 -0
  43. package/src/adapters/shared/application-adapter.d.ts +18 -0
  44. package/src/adapters/shared/application-adapter.js +90 -0
  45. package/src/adapters/shared/define-api-handler.d.ts +25 -0
  46. package/src/adapters/shared/define-api-handler.js +15 -0
  47. package/src/adapters/shared/explicit-static-route-matcher.d.ts +38 -0
  48. package/src/adapters/shared/explicit-static-route-matcher.js +103 -0
  49. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +65 -0
  50. package/src/adapters/shared/file-route-middleware-pipeline.js +99 -0
  51. package/src/adapters/shared/fs-server-response-factory.d.ts +19 -0
  52. package/src/adapters/shared/fs-server-response-factory.js +97 -0
  53. package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
  54. package/src/adapters/shared/fs-server-response-matcher.js +160 -0
  55. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  56. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  57. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  58. package/src/adapters/shared/hmr-html-response.js +32 -0
  59. package/src/adapters/shared/render-context.d.ts +14 -0
  60. package/src/adapters/shared/render-context.js +70 -0
  61. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  62. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  63. package/src/adapters/shared/server-adapter.d.ts +97 -0
  64. package/src/adapters/shared/server-adapter.js +386 -0
  65. package/src/adapters/shared/server-route-handler.d.ts +89 -0
  66. package/src/adapters/shared/server-route-handler.js +111 -0
  67. package/src/adapters/shared/server-static-builder.d.ts +70 -0
  68. package/src/adapters/shared/server-static-builder.js +99 -0
  69. package/src/build/build-adapter.d.ts +186 -0
  70. package/src/build/build-adapter.js +168 -0
  71. package/src/build/build-manifest.d.ts +27 -0
  72. package/src/build/build-manifest.js +30 -0
  73. package/src/build/build-types.d.ts +57 -0
  74. package/src/build/build-types.js +0 -0
  75. package/src/build/dev-build-coordinator.d.ts +74 -0
  76. package/src/build/dev-build-coordinator.js +161 -0
  77. package/src/build/esbuild-build-adapter.d.ts +72 -0
  78. package/src/build/esbuild-build-adapter.js +422 -0
  79. package/src/build/runtime-build-executor.d.ts +13 -0
  80. package/src/build/runtime-build-executor.js +20 -0
  81. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  82. package/src/build/runtime-specifier-alias-plugin.js +31 -0
  83. package/src/config/config-builder.d.ts +238 -0
  84. package/src/config/config-builder.js +565 -0
  85. package/src/constants.d.ts +45 -0
  86. package/src/constants.js +25 -0
  87. package/src/create-app.d.ts +17 -0
  88. package/src/create-app.js +66 -0
  89. package/src/dev/sc-server.d.ts +30 -0
  90. package/src/dev/sc-server.js +111 -0
  91. package/src/eco/component-render-context.d.ts +105 -0
  92. package/src/eco/component-render-context.js +87 -0
  93. package/src/eco/eco.d.ts +9 -0
  94. package/src/eco/eco.js +114 -0
  95. package/src/eco/eco.types.d.ts +178 -0
  96. package/src/eco/eco.types.js +0 -0
  97. package/src/eco/eco.utils.d.ts +40 -0
  98. package/src/eco/eco.utils.js +40 -0
  99. package/src/eco/global-injector-map.d.ts +16 -0
  100. package/src/eco/global-injector-map.js +80 -0
  101. package/src/eco/lazy-injector-map.d.ts +8 -0
  102. package/src/eco/lazy-injector-map.js +70 -0
  103. package/src/eco/module-dependencies.d.ts +18 -0
  104. package/src/eco/module-dependencies.js +49 -0
  105. package/src/errors/http-error.d.ts +31 -0
  106. package/src/errors/http-error.js +50 -0
  107. package/src/errors/index.d.ts +2 -0
  108. package/src/errors/index.js +4 -0
  109. package/src/errors/locals-access-error.d.ts +4 -0
  110. package/src/errors/locals-access-error.js +9 -0
  111. package/src/global/app-logger.d.ts +2 -0
  112. package/src/global/app-logger.js +6 -0
  113. package/src/hmr/client/hmr-runtime.d.ts +5 -0
  114. package/src/hmr/client/hmr-runtime.js +109 -0
  115. package/src/hmr/hmr-strategy.d.ts +159 -0
  116. package/src/hmr/hmr-strategy.js +29 -0
  117. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  118. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  119. package/src/hmr/hmr.test.e2e.d.ts +1 -0
  120. package/src/hmr/hmr.test.e2e.js +43 -0
  121. package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
  122. package/src/hmr/strategies/default-hmr-strategy.js +34 -0
  123. package/src/hmr/strategies/js-hmr-strategy.d.ts +139 -0
  124. package/src/hmr/strategies/js-hmr-strategy.js +178 -0
  125. package/src/index.browser.d.ts +3 -0
  126. package/src/index.browser.js +4 -0
  127. package/src/index.d.ts +5 -0
  128. package/src/index.js +10 -0
  129. package/src/integrations/ghtml/ghtml-renderer.d.ts +15 -0
  130. package/src/integrations/ghtml/ghtml-renderer.js +62 -0
  131. package/src/integrations/ghtml/ghtml.plugin.d.ts +20 -0
  132. package/src/integrations/ghtml/ghtml.plugin.js +21 -0
  133. package/src/internal-types.d.ts +221 -0
  134. package/src/internal-types.js +0 -0
  135. package/src/plugins/alias-resolver-plugin.d.ts +2 -0
  136. package/src/plugins/alias-resolver-plugin.js +53 -0
  137. package/src/plugins/eco-component-meta-plugin.d.ts +97 -0
  138. package/src/plugins/eco-component-meta-plugin.js +157 -0
  139. package/src/plugins/integration-plugin.d.ts +136 -0
  140. package/src/plugins/integration-plugin.js +133 -0
  141. package/src/plugins/processor.d.ts +95 -0
  142. package/src/plugins/processor.js +136 -0
  143. package/src/plugins/runtime-capability.d.ts +9 -0
  144. package/src/plugins/runtime-capability.js +0 -0
  145. package/src/public-types.d.ts +1149 -0
  146. package/src/public-types.js +0 -0
  147. package/src/route-renderer/component-graph/component-graph-executor.d.ts +32 -0
  148. package/src/route-renderer/component-graph/component-graph-executor.js +31 -0
  149. package/src/route-renderer/component-graph/component-graph.d.ts +42 -0
  150. package/src/route-renderer/component-graph/component-graph.js +72 -0
  151. package/src/route-renderer/component-graph/component-marker.d.ts +52 -0
  152. package/src/route-renderer/component-graph/component-marker.js +46 -0
  153. package/src/route-renderer/component-graph/component-reference.d.ts +10 -0
  154. package/src/route-renderer/component-graph/component-reference.js +19 -0
  155. package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +77 -0
  156. package/src/route-renderer/component-graph/marker-graph-resolver.js +95 -0
  157. package/src/route-renderer/orchestration/integration-renderer.d.ts +372 -0
  158. package/src/route-renderer/orchestration/integration-renderer.js +589 -0
  159. package/src/route-renderer/orchestration/render-execution.service.d.ts +103 -0
  160. package/src/route-renderer/orchestration/render-execution.service.js +121 -0
  161. package/src/route-renderer/orchestration/render-preparation.service.d.ts +121 -0
  162. package/src/route-renderer/orchestration/render-preparation.service.js +332 -0
  163. package/src/route-renderer/page-loading/dependency-resolver.d.ts +35 -0
  164. package/src/route-renderer/page-loading/dependency-resolver.js +442 -0
  165. package/src/route-renderer/page-loading/page-module-loader.d.ts +87 -0
  166. package/src/route-renderer/page-loading/page-module-loader.js +124 -0
  167. package/src/route-renderer/route-renderer.d.ts +61 -0
  168. package/src/route-renderer/route-renderer.js +87 -0
  169. package/src/router/client/link-intent.js +34 -0
  170. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  171. package/src/router/client/link-intent.test.browser.js +43 -0
  172. package/src/router/client/navigation-coordinator.d.ts +149 -0
  173. package/src/router/client/navigation-coordinator.js +215 -0
  174. package/src/router/server/fs-router-scanner.d.ts +41 -0
  175. package/src/router/server/fs-router-scanner.js +156 -0
  176. package/src/router/server/fs-router.d.ts +26 -0
  177. package/src/router/server/fs-router.js +100 -0
  178. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +120 -0
  179. package/src/services/assets/asset-processing-service/asset-processing.service.js +331 -0
  180. package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
  181. package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
  182. package/src/services/assets/asset-processing-service/assets.types.d.ts +89 -0
  183. package/src/services/assets/asset-processing-service/assets.types.js +0 -0
  184. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  185. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +48 -0
  186. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  187. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  188. package/src/services/assets/asset-processing-service/index.d.ts +5 -0
  189. package/src/services/assets/asset-processing-service/index.js +5 -0
  190. package/src/services/assets/asset-processing-service/processor.interface.d.ts +22 -0
  191. package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
  192. package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
  193. package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
  194. package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
  195. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +64 -0
  196. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +17 -0
  197. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +72 -0
  198. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  199. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  200. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +5 -0
  201. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +57 -0
  202. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +8 -0
  203. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +76 -0
  204. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +7 -0
  205. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +75 -0
  206. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -0
  207. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +25 -0
  208. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
  209. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +66 -0
  210. package/src/services/assets/browser-bundle.service.d.ts +32 -0
  211. package/src/services/assets/browser-bundle.service.js +33 -0
  212. package/src/services/cache/cache.types.d.ts +107 -0
  213. package/src/services/cache/cache.types.js +0 -0
  214. package/src/services/cache/index.d.ts +7 -0
  215. package/src/services/cache/index.js +7 -0
  216. package/src/services/cache/memory-cache-store.d.ts +42 -0
  217. package/src/services/cache/memory-cache-store.js +98 -0
  218. package/src/services/cache/page-cache-service.d.ts +70 -0
  219. package/src/services/cache/page-cache-service.js +152 -0
  220. package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
  221. package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
  222. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  223. package/src/services/html/html-rewriter-provider.service.js +65 -0
  224. package/src/services/html/html-transformer.service.d.ts +77 -0
  225. package/src/services/html/html-transformer.service.js +221 -0
  226. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  227. package/src/services/invalidation/development-invalidation.service.js +189 -0
  228. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +16 -0
  229. package/src/services/module-loading/app-server-module-transpiler.service.js +34 -0
  230. package/src/services/module-loading/page-module-import.service.d.ts +71 -0
  231. package/src/services/module-loading/page-module-import.service.js +132 -0
  232. package/src/services/module-loading/server-loader.service.d.ts +96 -0
  233. package/src/services/module-loading/server-loader.service.js +32 -0
  234. package/src/services/module-loading/server-module-transpiler.service.d.ts +69 -0
  235. package/src/services/module-loading/server-module-transpiler.service.js +61 -0
  236. package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +35 -0
  237. package/src/services/runtime-manifest/node-runtime-manifest.service.js +60 -0
  238. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  239. package/src/services/runtime-state/dev-graph.service.js +162 -0
  240. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  241. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  242. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +69 -0
  243. package/src/services/runtime-state/runtime-specifier-registry.service.js +37 -0
  244. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  245. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  246. package/src/services/validation/schema-validation-service.d.ts +122 -0
  247. package/src/services/validation/schema-validation-service.js +101 -0
  248. package/src/services/validation/standard-schema.types.d.ts +65 -0
  249. package/src/services/validation/standard-schema.types.js +0 -0
  250. package/src/static-site-generator/static-site-generator.d.ts +109 -0
  251. package/src/static-site-generator/static-site-generator.js +353 -0
  252. package/src/utils/css.d.ts +1 -0
  253. package/src/utils/css.js +7 -0
  254. package/src/utils/deep-merge.d.ts +14 -0
  255. package/src/utils/deep-merge.js +32 -0
  256. package/src/utils/hash.d.ts +1 -0
  257. package/src/utils/hash.js +7 -0
  258. package/src/utils/html.d.ts +1 -0
  259. package/src/utils/html.js +4 -0
  260. package/src/utils/invariant.d.ts +5 -0
  261. package/src/utils/invariant.js +11 -0
  262. package/src/utils/locals-utils.d.ts +15 -0
  263. package/src/utils/locals-utils.js +24 -0
  264. package/src/utils/parse-cli-args.d.ts +24 -0
  265. package/src/utils/parse-cli-args.js +47 -0
  266. package/src/utils/path-utils.module.d.ts +5 -0
  267. package/src/utils/path-utils.module.js +14 -0
  268. package/src/utils/resolve-work-dir.d.ts +11 -0
  269. package/src/utils/resolve-work-dir.js +31 -0
  270. package/src/utils/runtime.d.ts +11 -0
  271. package/src/utils/runtime.js +40 -0
  272. package/src/utils/server-utils.module.d.ts +19 -0
  273. package/src/utils/server-utils.module.js +56 -0
  274. package/src/watchers/project-watcher.d.ts +136 -0
  275. package/src/watchers/project-watcher.js +281 -0
  276. package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
  277. package/src/watchers/project-watcher.test-helpers.js +52 -0
  278. package/src/adapters/bun/hmr-manager.test.ts +0 -267
  279. package/src/adapters/node/bootstrap-dependency-resolver.test.ts +0 -282
  280. package/src/adapters/node/node-client-bridge.test.ts +0 -198
  281. package/src/adapters/node/node-hmr-manager.test.ts +0 -322
  282. package/src/adapters/node/runtime-adapter.test.ts +0 -868
  283. package/src/adapters/node/static-content-server.test.ts +0 -60
  284. package/src/adapters/shared/api-response.test.ts +0 -97
  285. package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
  286. package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -90
  287. package/src/adapters/shared/fs-server-response-factory.test.ts +0 -187
  288. package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -286
  289. package/src/adapters/shared/hmr-manager.contract.test.ts +0 -196
  290. package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -220
  291. package/src/adapters/shared/render-context.test.ts +0 -146
  292. package/src/adapters/shared/server-adapter.test.ts +0 -77
  293. package/src/adapters/shared/server-route-handler.test.ts +0 -110
  294. package/src/adapters/shared/server-static-builder.test.ts +0 -316
  295. package/src/build/build-adapter-serialization.test.ts +0 -268
  296. package/src/build/build-adapter.test.ts +0 -815
  297. package/src/build/runtime-specifier-alias-plugin.test.ts +0 -43
  298. package/src/config/config-builder.test.ts +0 -410
  299. package/src/eco/eco.test.ts +0 -678
  300. package/src/eco/eco.utils.test.ts +0 -124
  301. package/src/eco/global-injector-map.test.ts +0 -42
  302. package/src/eco/lazy-injector-map.test.ts +0 -66
  303. package/src/eco/module-dependencies.test.ts +0 -30
  304. package/src/errors/http-error.test.ts +0 -134
  305. package/src/global/utils.test.ts +0 -12
  306. 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
  307. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  308. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  309. package/src/hmr/hmr-strategy.test.ts +0 -124
  310. package/src/hmr/strategies/js-hmr-strategy.test.ts +0 -335
  311. package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -63
  312. package/src/plugins/alias-resolver-plugin.test.ts +0 -41
  313. package/src/plugins/eco-component-meta-plugin.test.ts +0 -380
  314. package/src/plugins/integration-plugin.test.ts +0 -111
  315. package/src/plugins/processor.test.ts +0 -148
  316. package/src/route-renderer/component-graph/component-graph-executor.test.ts +0 -41
  317. package/src/route-renderer/component-graph/component-graph.test.ts +0 -63
  318. package/src/route-renderer/component-graph/component-marker.test.ts +0 -73
  319. package/src/route-renderer/component-graph/marker-graph-resolver.test.ts +0 -135
  320. package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -936
  321. package/src/route-renderer/orchestration/render-execution.service.test.ts +0 -97
  322. package/src/route-renderer/orchestration/render-preparation.service.test.ts +0 -235
  323. package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -345
  324. package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -96
  325. package/src/router/client/navigation-coordinator.test.ts +0 -237
  326. package/src/router/server/fs-router-scanner.test.ts +0 -83
  327. package/src/router/server/fs-router.test.ts +0 -214
  328. package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -385
  329. package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
  330. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -72
  331. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
  332. package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
  333. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -286
  334. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -227
  335. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -199
  336. package/src/services/assets/browser-bundle.service.test.ts +0 -36
  337. package/src/services/cache/memory-cache-store.test.ts +0 -225
  338. package/src/services/cache/page-cache-service.test.ts +0 -175
  339. package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
  340. package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
  341. package/src/services/html/html-transformer.service.test.ts +0 -378
  342. package/src/services/invalidation/development-invalidation.service.test.ts +0 -77
  343. package/src/services/module-loading/page-module-import.service.test.ts +0 -253
  344. package/src/services/module-loading/server-loader.service.test.ts +0 -161
  345. package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -115
  346. package/src/services/runtime-manifest/node-runtime-manifest.service.test.ts +0 -95
  347. package/src/services/validation/schema-validation-service.test.ts +0 -223
  348. package/src/static-site-generator/static-site-generator.test.ts +0 -307
  349. package/src/utils/deep-merge.test.ts +0 -114
  350. package/src/utils/invariant.test.ts +0 -22
  351. package/src/utils/path-utils.test.ts +0 -15
  352. package/src/utils/server-utils.test.ts +0 -38
  353. package/src/watchers/project-watcher.integration.test.ts +0 -337
  354. package/src/watchers/project-watcher.test.ts +0 -678
@@ -0,0 +1,168 @@
1
+ import {
2
+ createAppBuildManifest,
3
+ getBrowserBuildPlugins,
4
+ getServerBuildPlugins
5
+ } from "./build-manifest.js";
6
+ import { EsbuildBuildAdapter } from "./esbuild-build-adapter.js";
7
+ import { getRequiredBunRuntime } from "../utils/runtime.js";
8
+ import { EsbuildBuildAdapter as EsbuildBuildAdapter2 } from "./esbuild-build-adapter.js";
9
+ function createBuildAdapter() {
10
+ return new EsbuildBuildAdapter();
11
+ }
12
+ function transpileProfileToOptions(profile) {
13
+ switch (profile) {
14
+ case "browser-script":
15
+ return {
16
+ target: "browser",
17
+ format: "esm",
18
+ sourcemap: "none"
19
+ };
20
+ case "hmr-runtime":
21
+ return {
22
+ target: "browser",
23
+ format: "esm",
24
+ sourcemap: "none"
25
+ };
26
+ case "hmr-entrypoint":
27
+ return {
28
+ target: "browser",
29
+ format: "esm",
30
+ sourcemap: "none"
31
+ };
32
+ }
33
+ }
34
+ class BunBuildAdapter {
35
+ async build(options) {
36
+ const bun = getRequiredBunRuntime();
37
+ const result = await bun.build({
38
+ ...options,
39
+ plugins: options.plugins
40
+ });
41
+ return {
42
+ success: result.success,
43
+ logs: result.logs.map((log) => ({ message: log.message })),
44
+ outputs: result.outputs.map((output) => ({ path: output.path }))
45
+ };
46
+ }
47
+ resolve(importPath, rootDir) {
48
+ return getRequiredBunRuntime().resolveSync(importPath, rootDir);
49
+ }
50
+ getTranspileOptions(profile) {
51
+ return transpileProfileToOptions(profile);
52
+ }
53
+ }
54
+ const defaultBuildAdapter = createBuildAdapter();
55
+ function getAppBuildAdapter(appConfig) {
56
+ return appConfig.runtime?.buildAdapter ?? defaultBuildAdapter;
57
+ }
58
+ function setAppBuildAdapter(appConfig, buildAdapter) {
59
+ appConfig.runtime = {
60
+ ...appConfig.runtime ?? {},
61
+ buildAdapter
62
+ };
63
+ }
64
+ function getAppBuildManifest(appConfig) {
65
+ return appConfig.runtime?.buildManifest ?? createAppBuildManifest({
66
+ loaderPlugins: Array.from(appConfig.loaders.values())
67
+ });
68
+ }
69
+ function setAppBuildManifest(appConfig, buildManifest) {
70
+ appConfig.runtime = {
71
+ ...appConfig.runtime ?? {},
72
+ buildManifest
73
+ };
74
+ }
75
+ function createConfiguredAppBuildManifest(appConfig, input) {
76
+ return createAppBuildManifest({
77
+ loaderPlugins: input?.loaderPlugins ?? Array.from(appConfig.loaders.values()),
78
+ runtimePlugins: input?.runtimePlugins,
79
+ browserBundlePlugins: input?.browserBundlePlugins
80
+ });
81
+ }
82
+ function updateAppBuildManifest(appConfig, input) {
83
+ setAppBuildManifest(appConfig, createConfiguredAppBuildManifest(appConfig, input));
84
+ }
85
+ async function collectConfiguredAppBuildManifestContributions(appConfig) {
86
+ const runtimePlugins = [];
87
+ const browserBundlePlugins = [];
88
+ for (const processor of appConfig.processors.values()) {
89
+ await processor.prepareBuildContributions();
90
+ if (processor.plugins) {
91
+ runtimePlugins.push(...processor.plugins);
92
+ }
93
+ if (processor.buildPlugins) {
94
+ browserBundlePlugins.push(...processor.buildPlugins);
95
+ }
96
+ }
97
+ for (const integration of appConfig.integrations) {
98
+ integration.setConfig(appConfig);
99
+ await integration.prepareBuildContributions();
100
+ runtimePlugins.push(...integration.plugins);
101
+ }
102
+ return {
103
+ runtimePlugins,
104
+ browserBundlePlugins
105
+ };
106
+ }
107
+ async function setupAppRuntimePlugins(options) {
108
+ for (const processor of options.appConfig.processors.values()) {
109
+ await processor.setup();
110
+ if (processor.plugins) {
111
+ for (const plugin of processor.plugins) {
112
+ options.onRuntimePlugin?.(plugin);
113
+ }
114
+ }
115
+ }
116
+ for (const integration of options.appConfig.integrations) {
117
+ integration.setConfig(options.appConfig);
118
+ integration.setRuntimeOrigin(options.runtimeOrigin);
119
+ if (options.hmrManager) {
120
+ integration.setHmrManager(options.hmrManager);
121
+ }
122
+ await integration.setup();
123
+ for (const plugin of integration.plugins) {
124
+ options.onRuntimePlugin?.(plugin);
125
+ }
126
+ }
127
+ }
128
+ function getAppServerBuildPlugins(appConfig) {
129
+ return getServerBuildPlugins(getAppBuildManifest(appConfig));
130
+ }
131
+ function getAppBrowserBuildPlugins(appConfig) {
132
+ return getBrowserBuildPlugins(getAppBuildManifest(appConfig));
133
+ }
134
+ function getAppBuildExecutor(appConfig) {
135
+ return appConfig.runtime?.buildExecutor ?? getAppBuildAdapter(appConfig);
136
+ }
137
+ function setAppBuildExecutor(appConfig, buildExecutor) {
138
+ appConfig.runtime = {
139
+ ...appConfig.runtime ?? {},
140
+ buildExecutor
141
+ };
142
+ }
143
+ function build(options, executor = defaultBuildAdapter) {
144
+ return executor.build(options);
145
+ }
146
+ function getTranspileOptions(profile) {
147
+ return defaultBuildAdapter.getTranspileOptions(profile);
148
+ }
149
+ export {
150
+ BunBuildAdapter,
151
+ EsbuildBuildAdapter2 as EsbuildBuildAdapter,
152
+ build,
153
+ collectConfiguredAppBuildManifestContributions,
154
+ createBuildAdapter,
155
+ createConfiguredAppBuildManifest,
156
+ defaultBuildAdapter,
157
+ getAppBrowserBuildPlugins,
158
+ getAppBuildAdapter,
159
+ getAppBuildExecutor,
160
+ getAppBuildManifest,
161
+ getAppServerBuildPlugins,
162
+ getTranspileOptions,
163
+ setAppBuildAdapter,
164
+ setAppBuildExecutor,
165
+ setAppBuildManifest,
166
+ setupAppRuntimePlugins,
167
+ updateAppBuildManifest
168
+ };
@@ -0,0 +1,27 @@
1
+ import type { EcoBuildPlugin } from './build-types.js';
2
+ export interface AppBuildManifest {
3
+ loaderPlugins: EcoBuildPlugin[];
4
+ runtimePlugins: EcoBuildPlugin[];
5
+ browserBundlePlugins: EcoBuildPlugin[];
6
+ }
7
+ /**
8
+ * Merges plugin lists while preserving first-registration precedence by name.
9
+ *
10
+ * @remarks
11
+ * Build manifests treat plugin names as stable identities. The first plugin
12
+ * with a given name wins so config-time assembly stays deterministic across
13
+ * loader, runtime, and browser buckets.
14
+ */
15
+ export declare function mergeEcoBuildPlugins(...pluginLists: Array<EcoBuildPlugin[] | undefined>): EcoBuildPlugin[];
16
+ /**
17
+ * Creates one app-owned build manifest from the supplied plugin buckets.
18
+ */
19
+ export declare function createAppBuildManifest(input?: Partial<AppBuildManifest>): AppBuildManifest;
20
+ /**
21
+ * Returns the plugin list used for server-oriented builds.
22
+ */
23
+ export declare function getServerBuildPlugins(manifest: AppBuildManifest): EcoBuildPlugin[];
24
+ /**
25
+ * Returns the plugin list used for browser-oriented builds.
26
+ */
27
+ export declare function getBrowserBuildPlugins(manifest: AppBuildManifest): EcoBuildPlugin[];
@@ -0,0 +1,30 @@
1
+ function mergeEcoBuildPlugins(...pluginLists) {
2
+ const byName = /* @__PURE__ */ new Map();
3
+ for (const plugins of pluginLists) {
4
+ for (const plugin of plugins ?? []) {
5
+ if (!byName.has(plugin.name)) {
6
+ byName.set(plugin.name, plugin);
7
+ }
8
+ }
9
+ }
10
+ return Array.from(byName.values());
11
+ }
12
+ function createAppBuildManifest(input) {
13
+ return {
14
+ loaderPlugins: mergeEcoBuildPlugins(input?.loaderPlugins),
15
+ runtimePlugins: mergeEcoBuildPlugins(input?.runtimePlugins),
16
+ browserBundlePlugins: mergeEcoBuildPlugins(input?.browserBundlePlugins)
17
+ };
18
+ }
19
+ function getServerBuildPlugins(manifest) {
20
+ return mergeEcoBuildPlugins(manifest.loaderPlugins, manifest.runtimePlugins);
21
+ }
22
+ function getBrowserBuildPlugins(manifest) {
23
+ return mergeEcoBuildPlugins(manifest.loaderPlugins, manifest.runtimePlugins, manifest.browserBundlePlugins);
24
+ }
25
+ export {
26
+ createAppBuildManifest,
27
+ getBrowserBuildPlugins,
28
+ getServerBuildPlugins,
29
+ mergeEcoBuildPlugins
30
+ };
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Arguments passed to a build plugin `onResolve` callback.
3
+ */
4
+ export type EcoBuildOnResolveArgs = {
5
+ path: string;
6
+ importer?: string;
7
+ namespace?: string;
8
+ };
9
+ /**
10
+ * Result returned by a build plugin `onResolve` callback.
11
+ */
12
+ export type EcoBuildOnResolveResult = {
13
+ path?: string;
14
+ namespace?: string;
15
+ external?: boolean;
16
+ };
17
+ /**
18
+ * Arguments passed to a build plugin `onLoad` callback.
19
+ */
20
+ export type EcoBuildOnLoadArgs = {
21
+ path: string;
22
+ namespace?: string;
23
+ };
24
+ /**
25
+ * Loader kinds supported across Bun/esbuild bridge points.
26
+ */
27
+ export type EcoBuildLoader = 'base64' | 'binary' | 'copy' | 'css' | 'dataurl' | 'empty' | 'file' | 'global-css' | 'js' | 'json' | 'jsx' | 'local-css' | 'object' | 'text' | 'ts' | 'tsx';
28
+ /**
29
+ * Result returned by a build plugin `onLoad` callback.
30
+ */
31
+ export type EcoBuildOnLoadResult = {
32
+ contents?: string | Uint8Array;
33
+ loader?: EcoBuildLoader;
34
+ exports?: Record<string, unknown>;
35
+ resolveDir?: string;
36
+ };
37
+ /**
38
+ * Shared plugin builder contract used by Ecopages across Bun and esbuild.
39
+ */
40
+ export interface EcoBuildPluginBuilder {
41
+ onResolve(options: {
42
+ filter: RegExp;
43
+ namespace?: string;
44
+ }, callback: (args: EcoBuildOnResolveArgs) => EcoBuildOnResolveResult | undefined | Promise<EcoBuildOnResolveResult | undefined>): void;
45
+ onLoad(options: {
46
+ filter: RegExp;
47
+ namespace?: string;
48
+ }, callback: (args: EcoBuildOnLoadArgs) => EcoBuildOnLoadResult | undefined | Promise<EcoBuildOnLoadResult | undefined>): void;
49
+ module(specifier: string, callback: () => EcoBuildOnLoadResult | Promise<EcoBuildOnLoadResult>): void;
50
+ }
51
+ /**
52
+ * Runtime-agnostic build plugin contract consumed by Ecopages processors/loaders.
53
+ */
54
+ export type EcoBuildPlugin = {
55
+ name: string;
56
+ setup: (build: EcoBuildPluginBuilder) => void | Promise<void>;
57
+ };
File without changes
@@ -0,0 +1,74 @@
1
+ import { type BuildAdapter, type BuildExecutor, type BuildOptions, type BuildResult, EsbuildBuildAdapter } from './build-adapter.js';
2
+ import type { EcoBuildPlugin } from './build-types.js';
3
+ export declare function withBuildExecutorPlugins(executor: BuildExecutor, getPlugins: () => EcoBuildPlugin[]): BuildExecutor;
4
+ /**
5
+ * Serialized development build coordinator for the shared esbuild adapter.
6
+ *
7
+ * The underlying adapter remains responsible for plain build execution. This
8
+ * coordinator owns the policy that must be shared across callers in dev mode:
9
+ *
10
+ * - serialized access to the shared esbuild service
11
+ * - warm-service recycling for Node-target builds
12
+ * - recovery from known esbuild worker protocol faults
13
+ *
14
+ * Unlike the previous design, the coordinator does not monkey-patch the adapter
15
+ * or install process-level fault handlers. The owning app/runtime passes this
16
+ * executor explicitly to build consumers that need coordinated development
17
+ * builds.
18
+ */
19
+ export declare class DevBuildCoordinator implements BuildExecutor {
20
+ private buildQueue;
21
+ private esbuildSessionWarm;
22
+ private esbuildModuleGeneration;
23
+ private readonly adapter;
24
+ constructor(adapter: EsbuildBuildAdapter);
25
+ /**
26
+ * Executes a build through the serialized development queue.
27
+ *
28
+ * Node-target builds recycle the warmed esbuild service between requests to
29
+ * avoid stale worker state accumulating across long-lived dev sessions.
30
+ *
31
+ * If an esbuild protocol fault is detected, the coordinator resets the queue,
32
+ * stops the corrupted service, increments the module generation, and retries
33
+ * the build once.
34
+ */
35
+ build(options: BuildOptions): Promise<BuildResult>;
36
+ /**
37
+ * Attempts recovery from a known esbuild worker protocol fault.
38
+ *
39
+ * Returns `true` only when the error matches the protocol-fault signature and
40
+ * the coordinator successfully reset its shared state.
41
+ */
42
+ recoverFromProtocolFault(error: unknown): Promise<boolean>;
43
+ /**
44
+ * Clears internal coordinator state for isolated tests.
45
+ */
46
+ resetForTests(): void;
47
+ /**
48
+ * Overrides the internal queue promise for fault-recovery tests.
49
+ */
50
+ setBuildQueueForTests(queue: Promise<void>): void;
51
+ /**
52
+ * Returns the current internal queue promise for fault-recovery tests.
53
+ */
54
+ getBuildQueueForTests(): Promise<void>;
55
+ private shouldRecycleEsbuildService;
56
+ private runSerialized;
57
+ }
58
+ /**
59
+ * Creates the appropriate build executor for one app/runtime instance.
60
+ *
61
+ * Development runtimes get a dedicated coordinator around the shared esbuild
62
+ * adapter. Non-development runtimes use the adapter directly.
63
+ */
64
+ export declare function createAppBuildExecutor(options: {
65
+ development: boolean;
66
+ adapter?: BuildAdapter;
67
+ getPlugins?: () => EcoBuildPlugin[];
68
+ }): BuildExecutor;
69
+ export declare function createOrReuseAppBuildExecutor(options: {
70
+ development: boolean;
71
+ adapter?: BuildAdapter;
72
+ currentExecutor?: BuildExecutor;
73
+ getPlugins?: () => EcoBuildPlugin[];
74
+ }): BuildExecutor;
@@ -0,0 +1,161 @@
1
+ import { appLogger } from "../global/app-logger.js";
2
+ import {
3
+ defaultBuildAdapter,
4
+ EsbuildBuildAdapter
5
+ } from "./build-adapter.js";
6
+ import { mergeEcoBuildPlugins } from "./build-manifest.js";
7
+ function mergeBuildPlugins(options, appPlugins) {
8
+ if (appPlugins.length === 0) {
9
+ return options;
10
+ }
11
+ return {
12
+ ...options,
13
+ plugins: mergeEcoBuildPlugins(options.plugins, appPlugins)
14
+ };
15
+ }
16
+ class BuildExecutorWithPlugins {
17
+ executor;
18
+ getPlugins;
19
+ constructor(executor, getPlugins) {
20
+ this.executor = executor;
21
+ this.getPlugins = getPlugins;
22
+ }
23
+ async build(options) {
24
+ return await this.executor.build(mergeBuildPlugins(options, this.getPlugins()));
25
+ }
26
+ unwrap() {
27
+ return this.executor;
28
+ }
29
+ }
30
+ function unwrapBuildExecutor(executor) {
31
+ if (executor instanceof BuildExecutorWithPlugins) {
32
+ return unwrapBuildExecutor(executor.unwrap());
33
+ }
34
+ return executor;
35
+ }
36
+ function withBuildExecutorPlugins(executor, getPlugins) {
37
+ return new BuildExecutorWithPlugins(executor, getPlugins);
38
+ }
39
+ class DevBuildCoordinator {
40
+ buildQueue = Promise.resolve();
41
+ esbuildSessionWarm = false;
42
+ esbuildModuleGeneration = 0;
43
+ adapter;
44
+ constructor(adapter) {
45
+ this.adapter = adapter;
46
+ }
47
+ /**
48
+ * Executes a build through the serialized development queue.
49
+ *
50
+ * Node-target builds recycle the warmed esbuild service between requests to
51
+ * avoid stale worker state accumulating across long-lived dev sessions.
52
+ *
53
+ * If an esbuild protocol fault is detected, the coordinator resets the queue,
54
+ * stops the corrupted service, increments the module generation, and retries
55
+ * the build once.
56
+ */
57
+ async build(options) {
58
+ return this.runSerialized(async () => {
59
+ try {
60
+ if (this.shouldRecycleEsbuildService(options)) {
61
+ await this.adapter.stopEsbuildService(this.esbuildModuleGeneration);
62
+ this.esbuildSessionWarm = false;
63
+ }
64
+ const result = await this.adapter.buildOrThrow(options, this.esbuildModuleGeneration);
65
+ this.esbuildSessionWarm = true;
66
+ return result;
67
+ } catch (error) {
68
+ if (await this.recoverFromProtocolFault(error)) {
69
+ appLogger.warn("Recovered from esbuild protocol fault. Retrying build.");
70
+ try {
71
+ const retry = await this.adapter.buildOrThrow(options, this.esbuildModuleGeneration);
72
+ this.esbuildSessionWarm = true;
73
+ return retry;
74
+ } catch (retryError) {
75
+ return this.adapter.createFailureResult(retryError);
76
+ }
77
+ }
78
+ return this.adapter.createFailureResult(error);
79
+ }
80
+ });
81
+ }
82
+ /**
83
+ * Attempts recovery from a known esbuild worker protocol fault.
84
+ *
85
+ * Returns `true` only when the error matches the protocol-fault signature and
86
+ * the coordinator successfully reset its shared state.
87
+ */
88
+ async recoverFromProtocolFault(error) {
89
+ if (!this.adapter.isEsbuildProtocolError(error)) {
90
+ return false;
91
+ }
92
+ this.buildQueue = Promise.resolve();
93
+ this.esbuildSessionWarm = false;
94
+ await this.adapter.stopEsbuildService(this.esbuildModuleGeneration);
95
+ this.esbuildModuleGeneration += 1;
96
+ return true;
97
+ }
98
+ /**
99
+ * Clears internal coordinator state for isolated tests.
100
+ */
101
+ resetForTests() {
102
+ this.buildQueue = Promise.resolve();
103
+ this.esbuildSessionWarm = false;
104
+ this.esbuildModuleGeneration = 0;
105
+ }
106
+ /**
107
+ * Overrides the internal queue promise for fault-recovery tests.
108
+ */
109
+ setBuildQueueForTests(queue) {
110
+ this.buildQueue = queue;
111
+ }
112
+ /**
113
+ * Returns the current internal queue promise for fault-recovery tests.
114
+ */
115
+ getBuildQueueForTests() {
116
+ return this.buildQueue;
117
+ }
118
+ shouldRecycleEsbuildService(options) {
119
+ return process.env.NODE_ENV === "development" && options.target !== "browser" && this.esbuildSessionWarm;
120
+ }
121
+ async runSerialized(operation) {
122
+ let releaseBuild;
123
+ const currentBuild = new Promise((resolve) => {
124
+ releaseBuild = resolve;
125
+ });
126
+ const previousBuild = this.buildQueue;
127
+ this.buildQueue = previousBuild.catch(() => void 0).then(async () => await currentBuild);
128
+ await previousBuild.catch(() => void 0);
129
+ try {
130
+ return await operation();
131
+ } finally {
132
+ releaseBuild?.();
133
+ }
134
+ }
135
+ }
136
+ function createAppBuildExecutor(options) {
137
+ const adapter = options.adapter ?? defaultBuildAdapter;
138
+ const baseExecutor = !options.development || !(adapter instanceof EsbuildBuildAdapter) ? adapter : new DevBuildCoordinator(adapter);
139
+ if (!options.getPlugins) {
140
+ return baseExecutor;
141
+ }
142
+ return new BuildExecutorWithPlugins(baseExecutor, options.getPlugins);
143
+ }
144
+ function createOrReuseAppBuildExecutor(options) {
145
+ const adapter = options.adapter ?? defaultBuildAdapter;
146
+ const currentBaseExecutor = options.currentExecutor ? unwrapBuildExecutor(options.currentExecutor) : void 0;
147
+ const baseExecutor = options.development && currentBaseExecutor instanceof DevBuildCoordinator ? currentBaseExecutor : createAppBuildExecutor({
148
+ development: options.development,
149
+ adapter
150
+ });
151
+ if (!options.getPlugins) {
152
+ return baseExecutor;
153
+ }
154
+ return withBuildExecutorPlugins(baseExecutor, options.getPlugins);
155
+ }
156
+ export {
157
+ DevBuildCoordinator,
158
+ createAppBuildExecutor,
159
+ createOrReuseAppBuildExecutor,
160
+ withBuildExecutorPlugins
161
+ };
@@ -0,0 +1,72 @@
1
+ import type { BuildAdapter, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from './build-adapter.js';
2
+ /**
3
+ * Node build adapter backed by esbuild.
4
+ *
5
+ * This adapter keeps Ecopages build plugin compatibility (`onResolve`, `onLoad`,
6
+ * and `module`) while delegating bundling and TypeScript/decorator transforms to esbuild.
7
+ */
8
+ export declare class EsbuildBuildAdapter implements BuildAdapter {
9
+ private escapeRegExp;
10
+ private getPluginsForBuild;
11
+ private normalizeEsbuildLoader;
12
+ private inferEsbuildLoaderFromPath;
13
+ private convertLoadResultToModuleSource;
14
+ private convertPluginOnLoadResult;
15
+ private resolvePluginPath;
16
+ /**
17
+ * Creates an esbuild plugin bridge compatible with the existing Ecopages
18
+ * plugin API shape.
19
+ *
20
+ * **Plugin ordering is semantically significant.**
21
+ *
22
+ * Esbuild applies `onResolve` and `onLoad` hooks in the order they are
23
+ * registered: the first handler whose filter matches wins for `onResolve`,
24
+ * and the first handler that returns a non-`undefined` result wins for
25
+ * `onLoad`. Because we call `plugin.setup(bridge)` sequentially here, the
26
+ * position of each plugin in the `plugins` array determines its priority:
27
+ *
28
+ * - **Index 0** has the highest priority (its hooks run first).
29
+ * - **Last index** has the lowest priority (its hooks only run if no earlier
30
+ * plugin claimed the path).
31
+ *
32
+ * When adding new integrations or processors, ensure security-critical plugins
33
+ * (e.g. `ecopages-client-graph-boundary`) are placed **before** general-purpose
34
+ * loaders in the array so they always get first refusal on every source file.
35
+ *
36
+ * There is currently no priority system or validation — correct ordering is
37
+ * the caller's responsibility.
38
+ */
39
+ private createEcoPluginBridge;
40
+ private loadEsbuildModule;
41
+ private isMockedEsbuildModule;
42
+ /**
43
+ * Detects the subset of runtime faults that indicate esbuild's worker
44
+ * protocol is corrupted rather than a normal build error.
45
+ */
46
+ isEsbuildProtocolError(error: unknown): boolean;
47
+ stopEsbuildService(moduleGeneration?: number): Promise<void>;
48
+ buildOrThrow(options: BuildOptions, moduleGeneration?: number): Promise<BuildResult>;
49
+ private mapEsbuildSourcemap;
50
+ private mapEsbuildFormat;
51
+ private hasTemplateTokens;
52
+ private toEntryNamePattern;
53
+ private normalizeMetafilePath;
54
+ private extractDependencyGraph;
55
+ /**
56
+ * Normalizes esbuild errors into Ecopages `BuildLog` entries.
57
+ */
58
+ private toBuildLogs;
59
+ createFailureResult(error: unknown): BuildResult;
60
+ /**
61
+ * Bundles entrypoints using esbuild for Node runtime builds.
62
+ */
63
+ build(options: BuildOptions): Promise<BuildResult>;
64
+ /**
65
+ * Resolves module specifiers from a project root.
66
+ */
67
+ resolve(importPath: string, rootDir: string): string;
68
+ /**
69
+ * Returns transpile defaults for a known transpile profile.
70
+ */
71
+ getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
72
+ }