@ecopages/core 0.2.0-alpha.2 → 0.2.0-alpha.21

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 (391) hide show
  1. package/CHANGELOG.md +26 -64
  2. package/README.md +212 -14
  3. package/package.json +116 -66
  4. package/src/adapters/README.md +39 -0
  5. package/src/adapters/abstract/application-adapter.d.ts +28 -2
  6. package/src/adapters/abstract/application-adapter.js +14 -2
  7. package/src/adapters/abstract/router-adapter.d.ts +1 -1
  8. package/src/adapters/abstract/server-adapter.d.ts +2 -2
  9. package/src/adapters/bun/client-bridge.d.ts +1 -1
  10. package/src/adapters/bun/create-app.d.ts +4 -12
  11. package/src/adapters/bun/create-app.js +4 -5
  12. package/src/adapters/bun/hmr-manager.d.ts +80 -21
  13. package/src/adapters/bun/hmr-manager.js +168 -62
  14. package/src/adapters/bun/index.d.ts +2 -3
  15. package/src/adapters/bun/index.js +3 -3
  16. package/src/adapters/bun/server-adapter.d.ts +5 -5
  17. package/src/adapters/bun/server-adapter.js +40 -34
  18. package/src/adapters/bun/server-lifecycle.d.ts +28 -17
  19. package/src/adapters/bun/server-lifecycle.js +34 -62
  20. package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
  21. package/src/{create-app.js → adapters/create-app.js} +4 -4
  22. package/src/adapters/index.d.ts +2 -6
  23. package/src/adapters/index.js +2 -8
  24. package/src/adapters/node/create-app.d.ts +6 -9
  25. package/src/adapters/node/create-app.js +12 -6
  26. package/src/adapters/node/node-client-bridge.d.ts +1 -1
  27. package/src/adapters/node/node-hmr-manager.d.ts +89 -18
  28. package/src/adapters/node/node-hmr-manager.js +185 -95
  29. package/src/adapters/node/server-adapter.d.ts +6 -35
  30. package/src/adapters/node/server-adapter.js +44 -105
  31. package/src/adapters/node/static-content-server.d.ts +37 -1
  32. package/src/adapters/node/static-content-server.js +29 -1
  33. package/src/adapters/shared/application-adapter.d.ts +1 -1
  34. package/src/{define-api-handler.d.ts → adapters/shared/define-api-handler.d.ts} +1 -1
  35. package/src/adapters/shared/explicit-static-route-matcher.d.ts +2 -2
  36. package/src/adapters/shared/explicit-static-route-matcher.js +4 -1
  37. package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
  38. package/src/adapters/shared/file-route-middleware-pipeline.js +1 -0
  39. package/src/adapters/shared/fs-server-response-factory.d.ts +2 -2
  40. package/src/adapters/shared/fs-server-response-factory.js +1 -1
  41. package/src/adapters/shared/fs-server-response-matcher.d.ts +8 -12
  42. package/src/adapters/shared/fs-server-response-matcher.js +10 -18
  43. package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
  44. package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
  45. package/src/adapters/shared/hmr-html-response.d.ts +22 -0
  46. package/src/adapters/shared/hmr-html-response.js +32 -0
  47. package/src/adapters/shared/render-context.d.ts +2 -1
  48. package/src/adapters/shared/render-context.js +6 -3
  49. package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
  50. package/src/adapters/shared/runtime-bootstrap.js +43 -0
  51. package/src/adapters/shared/server-adapter.d.ts +13 -3
  52. package/src/adapters/shared/server-adapter.js +42 -5
  53. package/src/adapters/shared/server-route-handler.d.ts +4 -4
  54. package/src/adapters/shared/server-route-handler.js +6 -15
  55. package/src/adapters/shared/server-static-builder.d.ts +38 -6
  56. package/src/adapters/shared/server-static-builder.js +64 -10
  57. package/src/build/README.md +107 -0
  58. package/src/build/build-adapter.d.ts +168 -3
  59. package/src/build/build-adapter.js +604 -16
  60. package/src/build/build-manifest.d.ts +27 -0
  61. package/src/build/build-manifest.js +30 -0
  62. package/src/build/dev-build-coordinator.d.ts +72 -0
  63. package/src/build/dev-build-coordinator.js +154 -0
  64. package/src/build/esbuild-build-adapter.d.ts +15 -6
  65. package/src/build/esbuild-build-adapter.js +189 -74
  66. package/src/build/runtime-build-executor.d.ts +14 -0
  67. package/src/build/runtime-build-executor.js +22 -0
  68. package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
  69. package/src/build/runtime-specifier-alias-plugin.js +35 -0
  70. package/src/build/runtime-specifier-aliases.d.ts +5 -0
  71. package/src/build/runtime-specifier-aliases.js +95 -0
  72. package/src/config/README.md +36 -0
  73. package/src/config/config-builder.d.ts +52 -27
  74. package/src/config/config-builder.js +260 -49
  75. package/src/{constants.d.ts → config/constants.d.ts} +13 -0
  76. package/src/{constants.js → config/constants.js} +4 -0
  77. package/src/declarations.d.ts +19 -14
  78. package/src/dev/sc-server.d.ts +1 -1
  79. package/src/dev/sc-server.js +1 -1
  80. package/src/eco/README.md +70 -16
  81. package/src/eco/eco.browser.d.ts +2 -0
  82. package/src/eco/eco.browser.js +83 -0
  83. package/src/eco/eco.js +32 -57
  84. package/src/eco/eco.types.d.ts +12 -4
  85. package/src/eco/eco.utils.d.ts +1 -40
  86. package/src/eco/eco.utils.js +5 -35
  87. package/src/eco/global-injector-map.d.ts +1 -1
  88. package/src/eco/lazy-injector-map.d.ts +1 -1
  89. package/src/hmr/README.md +26 -0
  90. package/src/hmr/client/hmr-runtime.d.ts +1 -6
  91. package/src/hmr/client/hmr-runtime.js +30 -7
  92. package/src/hmr/hmr-strategy.d.ts +16 -13
  93. package/src/hmr/hmr-strategy.js +22 -7
  94. package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
  95. package/src/hmr/hmr.postcss.test.e2e.js +31 -0
  96. package/src/hmr/hmr.test.e2e.js +26 -33
  97. package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
  98. package/src/hmr/strategies/default-hmr-strategy.js +1 -1
  99. package/src/hmr/strategies/js-hmr-strategy.d.ts +46 -43
  100. package/src/hmr/strategies/js-hmr-strategy.js +72 -73
  101. package/src/index.browser.d.ts +2 -2
  102. package/src/index.browser.js +1 -1
  103. package/src/index.d.ts +4 -3
  104. package/src/index.js +16 -5
  105. package/src/integrations/ghtml/ghtml-renderer.d.ts +7 -2
  106. package/src/integrations/ghtml/ghtml-renderer.js +33 -30
  107. package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
  108. package/src/integrations/ghtml/ghtml.constants.js +4 -0
  109. package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
  110. package/src/integrations/ghtml/ghtml.plugin.js +3 -4
  111. package/src/plugins/README.md +35 -0
  112. package/src/plugins/alias-resolver-plugin.js +17 -3
  113. package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
  114. package/src/plugins/eco-component-meta-plugin.js +27 -21
  115. package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
  116. package/src/plugins/foreign-jsx-override-plugin.js +35 -0
  117. package/src/plugins/integration-plugin.d.ts +145 -28
  118. package/src/plugins/integration-plugin.js +109 -13
  119. package/src/plugins/processor.d.ts +15 -2
  120. package/src/plugins/processor.js +16 -2
  121. package/src/plugins/runtime-capability.d.ts +9 -0
  122. package/src/plugins/source-transform.d.ts +46 -0
  123. package/src/plugins/source-transform.js +71 -0
  124. package/src/route-renderer/GRAPH.md +64 -98
  125. package/src/route-renderer/README.md +67 -46
  126. package/src/route-renderer/orchestration/boundary-planning.service.d.ts +25 -0
  127. package/src/route-renderer/orchestration/boundary-planning.service.js +97 -0
  128. package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
  129. package/src/route-renderer/orchestration/component-render-context.js +147 -0
  130. package/src/route-renderer/orchestration/integration-renderer.d.ts +554 -0
  131. package/src/route-renderer/orchestration/integration-renderer.js +957 -0
  132. package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +89 -0
  133. package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
  134. package/src/route-renderer/orchestration/render-execution.service.d.ts +43 -0
  135. package/src/route-renderer/orchestration/render-execution.service.js +106 -0
  136. package/src/{eco/eco.utils.ts → route-renderer/orchestration/render-output.utils.d.ts} +10 -53
  137. package/src/route-renderer/orchestration/render-output.utils.js +65 -0
  138. package/src/route-renderer/{render-preparation.service.d.ts → orchestration/render-preparation.service.d.ts} +18 -10
  139. package/src/route-renderer/{render-preparation.service.js → orchestration/render-preparation.service.js} +115 -17
  140. package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +50 -0
  141. package/src/route-renderer/orchestration/route-shell-composer.service.js +81 -0
  142. package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
  143. package/src/route-renderer/orchestration/template-serialization.js +45 -0
  144. package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
  145. package/src/route-renderer/{dependency-resolver.js → page-loading/dependency-resolver.js} +28 -12
  146. package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
  147. package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
  148. package/src/route-renderer/route-renderer.d.ts +45 -4
  149. package/src/route-renderer/route-renderer.js +38 -3
  150. package/src/router/README.md +97 -0
  151. package/src/router/client/link-intent.d.ts +53 -0
  152. package/src/router/client/link-intent.js +34 -0
  153. package/src/router/client/link-intent.test.browser.d.ts +1 -0
  154. package/src/router/client/link-intent.test.browser.js +43 -0
  155. package/src/router/client/navigation-coordinator.d.ts +149 -0
  156. package/src/router/client/navigation-coordinator.js +215 -0
  157. package/src/router/{fs-router-scanner.d.ts → server/fs-router-scanner.d.ts} +3 -3
  158. package/src/router/{fs-router-scanner.js → server/fs-router-scanner.js} +14 -8
  159. package/src/router/{fs-router.d.ts → server/fs-router.d.ts} +1 -1
  160. package/src/router/{fs-router.js → server/fs-router.js} +1 -1
  161. package/src/services/README.md +29 -0
  162. package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +120 -0
  163. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +91 -10
  164. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
  165. package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
  166. package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +2 -1
  167. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
  168. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +48 -0
  169. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
  170. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
  171. package/src/services/assets/asset-processing-service/index.d.ts +5 -0
  172. package/src/services/assets/asset-processing-service/index.js +5 -0
  173. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
  174. package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
  175. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
  176. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +9 -4
  177. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.d.ts +5 -4
  178. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.js +15 -23
  179. package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
  180. package/src/services/assets/asset-processing-service/processors/index.js +5 -0
  181. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +2 -2
  182. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.js +1 -1
  183. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
  184. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +16 -4
  185. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.d.ts +3 -3
  186. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.js +6 -5
  187. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
  188. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.js +1 -1
  189. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
  190. package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +5 -2
  191. package/src/services/assets/browser-bundle.service.d.ts +32 -0
  192. package/src/services/assets/browser-bundle.service.js +33 -0
  193. package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
  194. package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
  195. package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
  196. package/src/services/html/html-rewriter-provider.service.js +68 -0
  197. package/src/services/html/html-transformer.service.d.ts +77 -0
  198. package/src/services/html/html-transformer.service.js +215 -0
  199. package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
  200. package/src/services/invalidation/development-invalidation.service.js +190 -0
  201. package/src/services/module-loading/app-module-loader.service.d.ts +28 -0
  202. package/src/services/module-loading/app-module-loader.service.js +35 -0
  203. package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
  204. package/src/services/module-loading/app-server-module-transpiler.service.js +109 -0
  205. package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
  206. package/src/services/module-loading/host-module-loader-registry.js +15 -0
  207. package/src/services/module-loading/module-loading-types.d.ts +2 -0
  208. package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
  209. package/src/services/module-loading/node-bootstrap-plugin.js +204 -0
  210. package/src/services/module-loading/page-module-import.service.d.ts +76 -0
  211. package/src/services/module-loading/page-module-import.service.js +173 -0
  212. package/src/services/module-loading/server-module-transpiler.service.d.ts +72 -0
  213. package/src/services/module-loading/server-module-transpiler.service.js +64 -0
  214. package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
  215. package/src/services/runtime-state/dev-graph.service.js +162 -0
  216. package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
  217. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
  218. package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +69 -0
  219. package/src/services/runtime-state/runtime-specifier-registry.service.js +37 -0
  220. package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
  221. package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
  222. package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
  223. package/src/static-site-generator/README.md +26 -0
  224. package/src/static-site-generator/static-site-generator.d.ts +50 -3
  225. package/src/static-site-generator/static-site-generator.js +71 -5
  226. package/src/{internal-types.d.ts → types/internal-types.d.ts} +53 -22
  227. package/src/types/internal-types.js +0 -0
  228. package/src/{public-types.d.ts → types/public-types.d.ts} +146 -21
  229. package/src/types/public-types.js +0 -0
  230. package/src/utils/html-escaping.d.ts +7 -0
  231. package/src/utils/html-escaping.js +6 -0
  232. package/src/utils/locals-utils.d.ts +1 -1
  233. package/src/utils/parse-cli-args.d.ts +4 -1
  234. package/src/utils/parse-cli-args.js +16 -1
  235. package/src/utils/resolve-work-dir.d.ts +11 -0
  236. package/src/utils/resolve-work-dir.js +31 -0
  237. package/src/watchers/project-watcher.d.ts +40 -24
  238. package/src/watchers/project-watcher.js +129 -92
  239. package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
  240. package/src/watchers/project-watcher.test-helpers.js +1 -0
  241. package/src/adapters/abstract/application-adapter.ts +0 -337
  242. package/src/adapters/abstract/router-adapter.ts +0 -30
  243. package/src/adapters/abstract/server-adapter.ts +0 -79
  244. package/src/adapters/bun/client-bridge.ts +0 -62
  245. package/src/adapters/bun/create-app.ts +0 -189
  246. package/src/adapters/bun/define-api-handler.d.ts +0 -61
  247. package/src/adapters/bun/define-api-handler.ts +0 -114
  248. package/src/adapters/bun/hmr-manager.ts +0 -281
  249. package/src/adapters/bun/index.ts +0 -3
  250. package/src/adapters/bun/server-adapter.ts +0 -492
  251. package/src/adapters/bun/server-lifecycle.ts +0 -154
  252. package/src/adapters/index.ts +0 -6
  253. package/src/adapters/node/create-app.ts +0 -179
  254. package/src/adapters/node/index.d.ts +0 -4
  255. package/src/adapters/node/index.js +0 -8
  256. package/src/adapters/node/index.ts +0 -9
  257. package/src/adapters/node/node-client-bridge.ts +0 -79
  258. package/src/adapters/node/node-hmr-manager.ts +0 -271
  259. package/src/adapters/node/server-adapter.ts +0 -561
  260. package/src/adapters/node/static-content-server.ts +0 -203
  261. package/src/adapters/shared/api-response.ts +0 -104
  262. package/src/adapters/shared/application-adapter.ts +0 -199
  263. package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
  264. package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
  265. package/src/adapters/shared/fs-server-response-factory.ts +0 -118
  266. package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
  267. package/src/adapters/shared/render-context.ts +0 -105
  268. package/src/adapters/shared/server-adapter.ts +0 -442
  269. package/src/adapters/shared/server-route-handler.ts +0 -166
  270. package/src/adapters/shared/server-static-builder.ts +0 -82
  271. package/src/build/build-adapter.ts +0 -132
  272. package/src/build/build-types.ts +0 -83
  273. package/src/build/esbuild-build-adapter.ts +0 -510
  274. package/src/config/config-builder.ts +0 -474
  275. package/src/constants.ts +0 -39
  276. package/src/create-app.ts +0 -87
  277. package/src/define-api-handler.js +0 -15
  278. package/src/define-api-handler.ts +0 -66
  279. package/src/dev/sc-server.ts +0 -143
  280. package/src/eco/component-render-context.d.ts +0 -105
  281. package/src/eco/component-render-context.js +0 -77
  282. package/src/eco/component-render-context.ts +0 -202
  283. package/src/eco/eco.ts +0 -221
  284. package/src/eco/eco.types.ts +0 -202
  285. package/src/eco/global-injector-map.ts +0 -112
  286. package/src/eco/lazy-injector-map.ts +0 -120
  287. package/src/eco/module-dependencies.ts +0 -75
  288. package/src/errors/http-error.ts +0 -72
  289. package/src/errors/index.ts +0 -2
  290. package/src/errors/locals-access-error.ts +0 -7
  291. package/src/global/app-logger.ts +0 -4
  292. 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
  293. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
  294. package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
  295. package/src/hmr/client/hmr-runtime.ts +0 -121
  296. package/src/hmr/hmr-strategy.ts +0 -172
  297. package/src/hmr/hmr.test.e2e.ts +0 -75
  298. package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
  299. package/src/hmr/strategies/js-hmr-strategy.ts +0 -308
  300. package/src/index.browser.ts +0 -3
  301. package/src/index.ts +0 -5
  302. package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
  303. package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
  304. package/src/internal-types.ts +0 -212
  305. package/src/plugins/alias-resolver-plugin.ts +0 -45
  306. package/src/plugins/eco-component-meta-plugin.ts +0 -474
  307. package/src/plugins/integration-plugin.ts +0 -184
  308. package/src/plugins/processor.ts +0 -220
  309. package/src/public-types.ts +0 -1255
  310. package/src/route-renderer/component-graph-executor.d.ts +0 -32
  311. package/src/route-renderer/component-graph-executor.js +0 -31
  312. package/src/route-renderer/component-graph-executor.ts +0 -84
  313. package/src/route-renderer/component-graph.d.ts +0 -42
  314. package/src/route-renderer/component-graph.js +0 -72
  315. package/src/route-renderer/component-graph.ts +0 -159
  316. package/src/route-renderer/component-marker.d.ts +0 -52
  317. package/src/route-renderer/component-marker.js +0 -46
  318. package/src/route-renderer/component-marker.ts +0 -117
  319. package/src/route-renderer/dependency-resolver.ts +0 -596
  320. package/src/route-renderer/html-post-processing.service.d.ts +0 -40
  321. package/src/route-renderer/html-post-processing.service.js +0 -86
  322. package/src/route-renderer/html-post-processing.service.ts +0 -103
  323. package/src/route-renderer/integration-renderer.d.ts +0 -339
  324. package/src/route-renderer/integration-renderer.js +0 -526
  325. package/src/route-renderer/integration-renderer.ts +0 -696
  326. package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
  327. package/src/route-renderer/marker-graph-resolver.js +0 -93
  328. package/src/route-renderer/marker-graph-resolver.ts +0 -153
  329. package/src/route-renderer/page-module-loader.d.ts +0 -61
  330. package/src/route-renderer/page-module-loader.ts +0 -153
  331. package/src/route-renderer/render-execution.service.d.ts +0 -69
  332. package/src/route-renderer/render-execution.service.js +0 -91
  333. package/src/route-renderer/render-execution.service.ts +0 -158
  334. package/src/route-renderer/render-preparation.service.ts +0 -358
  335. package/src/route-renderer/route-renderer.ts +0 -80
  336. package/src/router/fs-router-scanner.ts +0 -217
  337. package/src/router/fs-router.ts +0 -122
  338. package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
  339. package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
  340. package/src/services/asset-processing-service/asset.factory.ts +0 -105
  341. package/src/services/asset-processing-service/assets.types.ts +0 -112
  342. package/src/services/asset-processing-service/index.d.ts +0 -3
  343. package/src/services/asset-processing-service/index.js +0 -3
  344. package/src/services/asset-processing-service/index.ts +0 -3
  345. package/src/services/asset-processing-service/processor.interface.ts +0 -27
  346. package/src/services/asset-processing-service/processor.registry.ts +0 -18
  347. package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
  348. package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
  349. package/src/services/asset-processing-service/processors/index.d.ts +0 -5
  350. package/src/services/asset-processing-service/processors/index.js +0 -5
  351. package/src/services/asset-processing-service/processors/index.ts +0 -5
  352. package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
  353. package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
  354. package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
  355. package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
  356. package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
  357. package/src/services/cache/cache.types.ts +0 -126
  358. package/src/services/cache/index.ts +0 -18
  359. package/src/services/cache/memory-cache-store.ts +0 -130
  360. package/src/services/cache/page-cache-service.ts +0 -202
  361. package/src/services/html-transformer.service.d.ts +0 -50
  362. package/src/services/html-transformer.service.js +0 -163
  363. package/src/services/html-transformer.service.ts +0 -217
  364. package/src/services/page-module-import.service.d.ts +0 -37
  365. package/src/services/page-module-import.service.js +0 -88
  366. package/src/services/page-module-import.service.ts +0 -129
  367. package/src/services/page-request-cache-coordinator.service.ts +0 -128
  368. package/src/services/schema-validation-service.ts +0 -204
  369. package/src/services/validation/standard-schema.types.ts +0 -68
  370. package/src/static-site-generator/static-site-generator.ts +0 -359
  371. package/src/utils/css.d.ts +0 -1
  372. package/src/utils/css.js +0 -7
  373. package/src/utils/css.ts +0 -5
  374. package/src/utils/deep-merge.ts +0 -47
  375. package/src/utils/hash.ts +0 -5
  376. package/src/utils/html.ts +0 -1
  377. package/src/utils/invariant.ts +0 -15
  378. package/src/utils/locals-utils.ts +0 -37
  379. package/src/utils/parse-cli-args.ts +0 -83
  380. package/src/utils/path-utils.module.ts +0 -14
  381. package/src/utils/runtime.ts +0 -44
  382. package/src/utils/server-utils.module.ts +0 -67
  383. package/src/watchers/project-watcher.test-helpers.ts +0 -40
  384. package/src/watchers/project-watcher.ts +0 -306
  385. /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
  386. /package/src/{internal-types.js → plugins/runtime-capability.js} +0 -0
  387. /package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.js +0 -0
  388. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
  389. /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
  390. /package/src/{public-types.js → services/module-loading/module-loading-types.js} +0 -0
  391. /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
@@ -0,0 +1,35 @@
1
+ import {
2
+ PageModuleImportService
3
+ } from "./page-module-import.service.js";
4
+ class RuntimeAppModuleLoader {
5
+ pageModuleImportService;
6
+ getBuildExecutorValue;
7
+ getDefaultPluginsValue;
8
+ getOwnerValue;
9
+ getInvalidationVersionValue;
10
+ constructor(options = {}) {
11
+ this.pageModuleImportService = options.pageModuleImportService ?? new PageModuleImportService(options.dependencies);
12
+ this.getBuildExecutorValue = options.getBuildExecutor ?? (() => void 0);
13
+ this.getDefaultPluginsValue = options.getDefaultPlugins ?? (() => []);
14
+ this.getOwnerValue = options.getOwner ?? (() => "bun");
15
+ this.getInvalidationVersionValue = options.getInvalidationVersion ?? (() => void 0);
16
+ }
17
+ get owner() {
18
+ return this.getOwnerValue();
19
+ }
20
+ async importModule(options) {
21
+ const mergedPlugins = [...this.getDefaultPluginsValue(), ...options.plugins ?? []];
22
+ return await this.pageModuleImportService.importModule({
23
+ ...options,
24
+ ...mergedPlugins.length > 0 ? { plugins: mergedPlugins } : {},
25
+ buildExecutor: options.buildExecutor ?? this.getBuildExecutorValue(),
26
+ invalidationVersion: options.invalidationVersion ?? this.getInvalidationVersionValue()
27
+ });
28
+ }
29
+ invalidateDevelopmentGraph() {
30
+ this.pageModuleImportService.invalidateDevelopmentGraph();
31
+ }
32
+ }
33
+ export {
34
+ RuntimeAppModuleLoader
35
+ };
@@ -0,0 +1,24 @@
1
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
2
+ import { type AppModuleLoader } from './app-module-loader.service.js';
3
+ import type { SourceModuleLoader } from './module-loading-types.js';
4
+ import { ServerModuleTranspiler } from './server-module-transpiler.service.js';
5
+ export declare function shouldAppUseHostModuleLoader(appConfig: EcoPagesAppConfig, filePath: string): boolean;
6
+ export declare function getAppHostModuleLoader(appConfig: EcoPagesAppConfig): SourceModuleLoader | undefined;
7
+ export declare function setAppHostModuleLoader(appConfig: EcoPagesAppConfig, hostModuleLoader?: SourceModuleLoader): void;
8
+ export declare function createAppModuleLoader(appConfig: EcoPagesAppConfig): AppModuleLoader;
9
+ export declare function getAppModuleLoader(appConfig: EcoPagesAppConfig): AppModuleLoader;
10
+ export declare function setAppModuleLoader(appConfig: EcoPagesAppConfig, appModuleLoader: AppModuleLoader): void;
11
+ /**
12
+ * Creates the shared app-scoped server-module transpiler for one runtime
13
+ * instance.
14
+ */
15
+ export declare function createAppServerModuleTranspiler(appConfig: EcoPagesAppConfig): ServerModuleTranspiler;
16
+ /**
17
+ * Returns the app-owned server-module transpiler, creating it lazily when the
18
+ * runtime first needs one.
19
+ */
20
+ export declare function getAppServerModuleTranspiler(appConfig: EcoPagesAppConfig): ServerModuleTranspiler;
21
+ /**
22
+ * Installs the server-module transpiler that should serve one app instance.
23
+ */
24
+ export declare function setAppServerModuleTranspiler(appConfig: EcoPagesAppConfig, serverModuleTranspiler: ServerModuleTranspiler): void;
@@ -0,0 +1,109 @@
1
+ import { getAppBuildExecutor } from "../../build/build-adapter.js";
2
+ import path from "node:path";
3
+ import { DevelopmentInvalidationService } from "../invalidation/development-invalidation.service.js";
4
+ import {
5
+ RuntimeAppModuleLoader
6
+ } from "./app-module-loader.service.js";
7
+ import { createAppNodeBootstrapPlugin } from "./node-bootstrap-plugin.js";
8
+ import { ServerModuleTranspiler } from "./server-module-transpiler.service.js";
9
+ function supportsHostSourceModuleLoading(filePath) {
10
+ const extension = path.extname(filePath);
11
+ return extension === ".js" || extension === ".jsx" || extension === ".ts" || extension === ".tsx" || extension === ".mjs" || extension === ".mts" || extension === ".cjs" || extension === ".cts";
12
+ }
13
+ function shouldAppUseHostModuleLoader(appConfig, filePath) {
14
+ if (appConfig.runtime?.hostModuleLoader) {
15
+ return supportsHostSourceModuleLoading(filePath);
16
+ }
17
+ const normalizedFilePath = path.normalize(filePath);
18
+ const frameworkOwnedDirectories = [
19
+ appConfig.absolutePaths.pagesDir,
20
+ appConfig.absolutePaths.includesDir,
21
+ appConfig.absolutePaths.layoutsDir,
22
+ appConfig.absolutePaths.componentsDir
23
+ ].map((directoryPath) => path.normalize(directoryPath));
24
+ const isFrameworkOwnedModule = frameworkOwnedDirectories.some((directoryPath) => {
25
+ return normalizedFilePath === directoryPath || normalizedFilePath.startsWith(`${directoryPath}${path.sep}`);
26
+ });
27
+ const isConfiguredTemplateModule = appConfig.templatesExt.some(
28
+ (extension) => normalizedFilePath.endsWith(extension)
29
+ );
30
+ return !(isFrameworkOwnedModule && isConfiguredTemplateModule);
31
+ }
32
+ function getAppHostModuleLoader(appConfig) {
33
+ return appConfig.runtime?.hostModuleLoader;
34
+ }
35
+ function getAppModuleLoaderOwner(appConfig) {
36
+ return getAppHostModuleLoader(appConfig) ? "host" : "bun";
37
+ }
38
+ function setAppHostModuleLoader(appConfig, hostModuleLoader) {
39
+ appConfig.runtime = {
40
+ ...appConfig.runtime ?? {},
41
+ hostModuleLoader
42
+ };
43
+ }
44
+ function createAppModuleLoader(appConfig) {
45
+ const invalidationService = new DevelopmentInvalidationService(appConfig);
46
+ return new RuntimeAppModuleLoader({
47
+ dependencies: {
48
+ canLoadSourceModuleFromHost: (filePath) => shouldAppUseHostModuleLoader(appConfig, filePath),
49
+ getHostModuleLoader: () => getAppHostModuleLoader(appConfig)
50
+ },
51
+ getBuildExecutor: () => getAppBuildExecutor(appConfig),
52
+ getDefaultPlugins: typeof Bun === "undefined" && appConfig.rootDir ? () => [createAppNodeBootstrapPlugin(appConfig)] : void 0,
53
+ getOwner: () => getAppModuleLoaderOwner(appConfig),
54
+ getInvalidationVersion: () => invalidationService.getServerModuleInvalidationVersion()
55
+ });
56
+ }
57
+ function getAppModuleLoader(appConfig) {
58
+ const existingModuleLoader = appConfig.runtime?.appModuleLoader;
59
+ if (existingModuleLoader) {
60
+ return existingModuleLoader;
61
+ }
62
+ const appModuleLoader = createAppModuleLoader(appConfig);
63
+ setAppModuleLoader(appConfig, appModuleLoader);
64
+ return appModuleLoader;
65
+ }
66
+ function setAppModuleLoader(appConfig, appModuleLoader) {
67
+ appConfig.runtime = {
68
+ ...appConfig.runtime ?? {},
69
+ appModuleLoader
70
+ };
71
+ }
72
+ function createAppServerModuleTranspiler(appConfig) {
73
+ const invalidationService = new DevelopmentInvalidationService(appConfig);
74
+ return new ServerModuleTranspiler({
75
+ rootDir: appConfig.rootDir,
76
+ getBuildExecutor: () => getAppBuildExecutor(appConfig),
77
+ getHostModuleLoader: () => getAppHostModuleLoader(appConfig),
78
+ canLoadSourceModuleFromHost: (filePath) => shouldAppUseHostModuleLoader(appConfig, filePath),
79
+ getInvalidationVersion: () => invalidationService.getServerModuleInvalidationVersion(),
80
+ invalidateModules: (changedFiles) => invalidationService.invalidateServerModules(changedFiles),
81
+ pageModuleImportService: getAppModuleLoader(appConfig)
82
+ });
83
+ }
84
+ function getAppServerModuleTranspiler(appConfig) {
85
+ const existingTranspiler = appConfig.runtime?.serverModuleTranspiler;
86
+ if (existingTranspiler) {
87
+ return existingTranspiler;
88
+ }
89
+ const serverModuleTranspiler = createAppServerModuleTranspiler(appConfig);
90
+ setAppServerModuleTranspiler(appConfig, serverModuleTranspiler);
91
+ return serverModuleTranspiler;
92
+ }
93
+ function setAppServerModuleTranspiler(appConfig, serverModuleTranspiler) {
94
+ appConfig.runtime = {
95
+ ...appConfig.runtime ?? {},
96
+ serverModuleTranspiler
97
+ };
98
+ }
99
+ export {
100
+ createAppModuleLoader,
101
+ createAppServerModuleTranspiler,
102
+ getAppHostModuleLoader,
103
+ getAppModuleLoader,
104
+ getAppServerModuleTranspiler,
105
+ setAppHostModuleLoader,
106
+ setAppModuleLoader,
107
+ setAppServerModuleTranspiler,
108
+ shouldAppUseHostModuleLoader
109
+ };
@@ -0,0 +1,4 @@
1
+ import type { SourceModuleLoader } from './module-loading-types.js';
2
+ export declare function setHostModuleLoader(loader: SourceModuleLoader): void;
3
+ export declare function getHostModuleLoader(): SourceModuleLoader | undefined;
4
+ export declare function clearHostModuleLoader(): void;
@@ -0,0 +1,15 @@
1
+ let hostModuleLoader;
2
+ function setHostModuleLoader(loader) {
3
+ hostModuleLoader = loader;
4
+ }
5
+ function getHostModuleLoader() {
6
+ return hostModuleLoader;
7
+ }
8
+ function clearHostModuleLoader() {
9
+ hostModuleLoader = void 0;
10
+ }
11
+ export {
12
+ clearHostModuleLoader,
13
+ getHostModuleLoader,
14
+ setHostModuleLoader
15
+ };
@@ -0,0 +1,2 @@
1
+ export type SourceModuleLoader = (id: string) => Promise<unknown>;
2
+ export type SourceModuleLoaderFactory = () => SourceModuleLoader | undefined;
@@ -0,0 +1,42 @@
1
+ import type { EcoBuildOnResolveArgs, EcoBuildOnResolveResult, EcoBuildPlugin } from '../../build/build-types.js';
2
+ import type { EcoPagesAppConfig } from '../../types/internal-types.js';
3
+ /**
4
+ * Returns the app-local node_modules directory used by framework-owned Node
5
+ * bootstrap loads outside the thin-host manifest path.
6
+ */
7
+ export declare function getAppRuntimeNodeModulesDir(appConfig: Pick<EcoPagesAppConfig, 'rootDir' | 'workDir' | 'absolutePaths'>): string;
8
+ export interface NodeBootstrapResolutionOptions {
9
+ /**
10
+ * App root used as the fallback package boundary when an importer does not
11
+ * live under a more specific package.json.
12
+ */
13
+ projectDir: string;
14
+ /**
15
+ * Runtime-local node_modules directory that receives symlinks to resolved
16
+ * package roots so transpiled Node imports share one package graph.
17
+ */
18
+ runtimeNodeModulesDir: string;
19
+ }
20
+ /**
21
+ * Builds the user-facing error for Bun-native imports that cannot run on the
22
+ * Node bootstrap transpile path.
23
+ */
24
+ export declare function getNodeUnsupportedBuiltinError(specifier: string, importer?: string): string;
25
+ export declare function resolveNodeBootstrapDependency(args: Pick<EcoBuildOnResolveArgs, 'path' | 'importer'>, options: NodeBootstrapResolutionOptions): EcoBuildOnResolveResult | undefined;
26
+ /**
27
+ * Creates the Node bootstrap plugin used by app-owned server module loads.
28
+ *
29
+ * The resolver anchors third-party imports to the nearest package boundary for
30
+ * the importing file, then mirrors the resolved package root into the runtime
31
+ * node_modules directory. That keeps transpiled Node execution aligned with the
32
+ * package graph each source file was authored against.
33
+ */
34
+ export declare function createNodeBootstrapPlugin(options: NodeBootstrapResolutionOptions): EcoBuildPlugin;
35
+ /**
36
+ * Creates the default Node bootstrap plugin for one Ecopages app runtime.
37
+ *
38
+ * This binds the shared resolution policy to the app's internal execution
39
+ * directory so transpiled server modules can externalize packages into one
40
+ * stable runtime node_modules graph.
41
+ */
42
+ export declare function createAppNodeBootstrapPlugin(appConfig: Pick<EcoPagesAppConfig, 'rootDir' | 'workDir' | 'absolutePaths'>): EcoBuildPlugin;
@@ -0,0 +1,204 @@
1
+ import path from "node:path";
2
+ import { existsSync, lstatSync, mkdirSync, readFileSync, realpathSync, rmSync, symlinkSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import { fileURLToPath, pathToFileURL } from "node:url";
5
+ import { resolveInternalExecutionDir } from "../../utils/resolve-work-dir.js";
6
+ function getAppRuntimeNodeModulesDir(appConfig) {
7
+ return path.join(resolveInternalExecutionDir(appConfig), "node_modules");
8
+ }
9
+ function getPackageNameFromSpecifier(specifier) {
10
+ if (specifier.startsWith("@")) {
11
+ const [scope, name] = specifier.split("/");
12
+ return `${scope}/${name}`;
13
+ }
14
+ return specifier.split("/")[0] ?? specifier;
15
+ }
16
+ function findPackageRoot(resolvedPath) {
17
+ let currentPath = path.dirname(resolvedPath);
18
+ while (true) {
19
+ const packageJsonPath = path.join(currentPath, "package.json");
20
+ if (existsSync(packageJsonPath)) {
21
+ return currentPath;
22
+ }
23
+ const parentPath = path.dirname(currentPath);
24
+ if (parentPath === currentPath) {
25
+ throw new Error(`Could not find package root for resolved dependency path: ${resolvedPath}`);
26
+ }
27
+ currentPath = parentPath;
28
+ }
29
+ }
30
+ function pathEntryExists(filePath) {
31
+ try {
32
+ lstatSync(filePath);
33
+ return true;
34
+ } catch {
35
+ return false;
36
+ }
37
+ }
38
+ function linkPointsToPackage(linkPath, packageRoot) {
39
+ try {
40
+ return realpathSync(linkPath) === realpathSync(packageRoot);
41
+ } catch {
42
+ return false;
43
+ }
44
+ }
45
+ function ensureRuntimePackageLink(nodeModulesDir, specifier, resolvedPath) {
46
+ const packageName = getPackageNameFromSpecifier(specifier);
47
+ const packageRoot = findPackageRoot(resolvedPath);
48
+ const linkPath = path.join(nodeModulesDir, packageName);
49
+ mkdirSync(path.dirname(linkPath), { recursive: true });
50
+ if (pathEntryExists(linkPath)) {
51
+ if (linkPointsToPackage(linkPath, packageRoot)) {
52
+ return;
53
+ }
54
+ rmSync(linkPath, { recursive: true, force: true });
55
+ }
56
+ try {
57
+ symlinkSync(packageRoot, linkPath, "dir");
58
+ } catch (error) {
59
+ if (error.code !== "EEXIST") {
60
+ throw error;
61
+ }
62
+ if (linkPointsToPackage(linkPath, packageRoot)) {
63
+ return;
64
+ }
65
+ rmSync(linkPath, { recursive: true, force: true });
66
+ symlinkSync(packageRoot, linkPath, "dir");
67
+ }
68
+ }
69
+ function getNodeUnsupportedBuiltinError(specifier, importer) {
70
+ return `Node bootstrap transpilation does not support Bun builtin specifier ${JSON.stringify(specifier)}${importer ? ` imported from ${importer}` : ""}.`;
71
+ }
72
+ function resolveSpecifier(specifier, parentPath) {
73
+ try {
74
+ return createRequire(parentPath).resolve(specifier);
75
+ } catch {
76
+ return fileURLToPath(import.meta.resolve(specifier, pathToFileURL(parentPath).href));
77
+ }
78
+ }
79
+ function resolveFromCore(specifier) {
80
+ return createRequire(import.meta.url).resolve(specifier);
81
+ }
82
+ function findResolutionParent(importer, projectDir) {
83
+ if (!importer || !path.isAbsolute(importer)) {
84
+ return path.join(projectDir, "package.json");
85
+ }
86
+ let currentPath = path.dirname(importer);
87
+ while (true) {
88
+ const packageJsonPath = path.join(currentPath, "package.json");
89
+ if (existsSync(packageJsonPath)) {
90
+ return packageJsonPath;
91
+ }
92
+ const parentPath = path.dirname(currentPath);
93
+ if (parentPath === currentPath) {
94
+ return path.join(projectDir, "package.json");
95
+ }
96
+ currentPath = parentPath;
97
+ }
98
+ }
99
+ function getBootstrapBuildLoaderForPath(filePath) {
100
+ switch (path.extname(filePath).toLowerCase()) {
101
+ case ".ts":
102
+ case ".mts":
103
+ case ".cts":
104
+ return "ts";
105
+ case ".tsx":
106
+ return "tsx";
107
+ case ".jsx":
108
+ return "jsx";
109
+ case ".json":
110
+ return "json";
111
+ default:
112
+ return "js";
113
+ }
114
+ }
115
+ function shouldRewriteBootstrapSource(filePath, projectDir) {
116
+ const normalizedPath = path.resolve(filePath);
117
+ const normalizedProjectDir = path.resolve(projectDir);
118
+ return normalizedPath.startsWith(`${normalizedProjectDir}${path.sep}`) && !normalizedPath.includes(`${path.sep}node_modules${path.sep}`);
119
+ }
120
+ function resolveNodeBootstrapDependency(args, options) {
121
+ if (args.path.startsWith("./") || args.path.startsWith("../") || args.path.startsWith("@/") || args.path.startsWith("/") || args.path.startsWith("node:")) {
122
+ return void 0;
123
+ }
124
+ const resolveParent = findResolutionParent(args.importer, options.projectDir);
125
+ if (args.path.startsWith("@ecopages/")) {
126
+ let resolvedPath2;
127
+ try {
128
+ resolvedPath2 = resolveFromCore(args.path);
129
+ } catch {
130
+ try {
131
+ resolvedPath2 = resolveSpecifier(args.path, resolveParent);
132
+ } catch {
133
+ const packageName = getPackageNameFromSpecifier(args.path);
134
+ const candidatePath = path.join(options.projectDir, "node_modules", packageName);
135
+ const candidatePackageJson = path.join(candidatePath, "package.json");
136
+ if (existsSync(candidatePackageJson)) {
137
+ ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, candidatePackageJson);
138
+ return { path: args.path, external: true };
139
+ }
140
+ }
141
+ }
142
+ if (!resolvedPath2) {
143
+ return void 0;
144
+ }
145
+ if (resolvedPath2.includes(`${path.sep}node_modules${path.sep}`)) {
146
+ ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, resolvedPath2);
147
+ return {
148
+ path: args.path,
149
+ external: true
150
+ };
151
+ }
152
+ return { path: resolvedPath2 };
153
+ }
154
+ const resolvedPath = resolveSpecifier(args.path, resolveParent);
155
+ ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, resolvedPath);
156
+ return {
157
+ path: args.path,
158
+ external: true
159
+ };
160
+ }
161
+ function createNodeBootstrapPlugin(options) {
162
+ const projectDir = path.resolve(options.projectDir);
163
+ return {
164
+ name: "node-bootstrap-plugin",
165
+ setup(build) {
166
+ build.onResolve({ filter: /^bun:/ }, (args) => {
167
+ throw new Error(getNodeUnsupportedBuiltinError(args.path, args.importer));
168
+ });
169
+ build.onLoad({ filter: /\.[cm]?[jt]sx?$/ }, async (args) => {
170
+ const absolutePath = path.resolve(args.path);
171
+ const shouldRewriteImportMeta = shouldRewriteBootstrapSource(absolutePath, projectDir);
172
+ if (!shouldRewriteImportMeta) {
173
+ return void 0;
174
+ }
175
+ const originalContents = readFileSync(args.path, "utf8");
176
+ const contents = originalContents.replaceAll("import.meta.dirname", JSON.stringify(path.dirname(args.path))).replaceAll("import.meta.filename", JSON.stringify(args.path));
177
+ if (contents === originalContents) {
178
+ return void 0;
179
+ }
180
+ return {
181
+ contents,
182
+ loader: getBootstrapBuildLoaderForPath(args.path),
183
+ resolveDir: path.dirname(args.path)
184
+ };
185
+ });
186
+ build.onResolve({ filter: /^[@A-Za-z0-9][^:]*$/ }, (args) => {
187
+ return resolveNodeBootstrapDependency(args, options);
188
+ });
189
+ }
190
+ };
191
+ }
192
+ function createAppNodeBootstrapPlugin(appConfig) {
193
+ return createNodeBootstrapPlugin({
194
+ projectDir: appConfig.rootDir,
195
+ runtimeNodeModulesDir: getAppRuntimeNodeModulesDir(appConfig)
196
+ });
197
+ }
198
+ export {
199
+ createAppNodeBootstrapPlugin,
200
+ createNodeBootstrapPlugin,
201
+ getAppRuntimeNodeModulesDir,
202
+ getNodeUnsupportedBuiltinError,
203
+ resolveNodeBootstrapDependency
204
+ };
@@ -0,0 +1,76 @@
1
+ import { build, type BuildExecutor, type BuildResult } from '../../build/build-adapter.js';
2
+ import type { EcoBuildPlugin } from '../../build/build-types.js';
3
+ import type { SourceModuleLoaderFactory } from './module-loading-types.js';
4
+ export interface PageModuleImportOptions {
5
+ filePath: string;
6
+ rootDir: string;
7
+ outdir: string;
8
+ bypassCache?: boolean;
9
+ cacheScope?: string;
10
+ buildExecutor?: BuildExecutor;
11
+ invalidationVersion?: number;
12
+ splitting?: boolean;
13
+ externalPackages?: boolean;
14
+ plugins?: EcoBuildPlugin[];
15
+ transpileErrorMessage?: (details: string) => string;
16
+ noOutputMessage?: (filePath: string) => string;
17
+ }
18
+ /**
19
+ * Minimal runtime dependencies required to load page modules.
20
+ *
21
+ * @remarks
22
+ * This service owns cache and runtime import policy. Hashing and build
23
+ * execution are injected so tests can provide explicit fakes without module
24
+ * interception.
25
+ */
26
+ export interface PageModuleImportDependencies {
27
+ hashFile(filePath: string): string;
28
+ buildModule(options: Parameters<typeof build>[0], buildExecutor?: BuildExecutor): Promise<BuildResult>;
29
+ canLoadSourceModuleFromHost(filePath: string): boolean;
30
+ getHostModuleLoader: SourceModuleLoaderFactory;
31
+ }
32
+ /**
33
+ * Loads source page modules in a runtime-agnostic way.
34
+ *
35
+ * This service centralizes the Bun-vs-Node import strategy used by route
36
+ * scanning, page data loading, and request-time page inspection. In Bun it can
37
+ * import source files directly; in Node it transpiles the file into a dedicated
38
+ * output directory first and then imports the generated module.
39
+ *
40
+ * Keeping this logic in one place prevents subtle drift in cache-busting,
41
+ * transpilation settings, and error semantics across the different callers.
42
+ */
43
+ export declare class PageModuleImportService {
44
+ private readonly dependencies;
45
+ private readonly importCache;
46
+ private developmentInvalidationVersion;
47
+ constructor(dependencies?: Partial<PageModuleImportDependencies>);
48
+ /**
49
+ * Clears the shared import cache used by framework-owned page-module loads.
50
+ */
51
+ clearImportCache(): void;
52
+ /**
53
+ * Invalidates all previously imported modules in development by clearing the
54
+ * import cache and incrementing the invalidation version included in cache keys.
55
+ *
56
+ * This forces all modules to be reloaded on the next import, even if their
57
+ * source content hasn't changed. This is necessary to ensure that changes to
58
+ * non-content aspects of modules (e.g. dependencies, transpilation output)
59
+ * are picked up during development.
60
+ */
61
+ invalidateDevelopmentGraph(): void;
62
+ /**
63
+ * Imports a page-like module from source.
64
+ *
65
+ * The caller controls the output directory and error wording so different
66
+ * subsystems can reuse the same loading mechanism while preserving their
67
+ * current diagnostics. Module identities stay stable for unchanged files and
68
+ * roll forward automatically when the source hash changes during watch mode.
69
+ *
70
+ * @typeParam T Expected module shape.
71
+ * @param options Runtime-specific import settings.
72
+ * @returns The loaded module.
73
+ */
74
+ importModule<T = unknown>(options: PageModuleImportOptions): Promise<T>;
75
+ private loadModule;
76
+ }