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

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,334 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { RESOLVED_ASSETS_DIR } from "../../constants";
4
+ import { getAppBuildExecutor } from "../../build/build-adapter.js";
5
+ import { fileSystem } from "@ecopages/file-system";
6
+ import { HmrStrategyType } from "../../hmr/hmr-strategy";
7
+ import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy";
8
+ import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy";
9
+ import { appLogger } from "../../global/app-logger";
10
+ import { HmrEntrypointRegistrar } from "../shared/hmr-entrypoint-registrar.js";
11
+ import { BrowserBundleService } from "../../services/assets/browser-bundle.service.js";
12
+ import { getAppServerModuleTranspiler } from "../../services/module-loading/app-server-module-transpiler.service";
13
+ import {
14
+ getAppEntrypointDependencyGraph,
15
+ NoopEntrypointDependencyGraph,
16
+ setAppEntrypointDependencyGraph
17
+ } from "../../services/runtime-state/entrypoint-dependency-graph.service.js";
18
+ import { getAppRuntimeSpecifierRegistry } from "../../services/runtime-state/runtime-specifier-registry.service.js";
19
+ import { resolveInternalExecutionDir, resolveInternalWorkDir } from "../../utils/resolve-work-dir.js";
20
+ class HmrManager {
21
+ static entrypointRegistrationTimeoutMs = 4e3;
22
+ appConfig;
23
+ bridge;
24
+ /** Keep track of watchers */
25
+ watchers = /* @__PURE__ */ new Map();
26
+ /** entrypoint -> output path */
27
+ watchedFiles = /* @__PURE__ */ new Map();
28
+ entrypointRegistrations = /* @__PURE__ */ new Map();
29
+ distDir;
30
+ plugins = [];
31
+ enabled = true;
32
+ strategies = [];
33
+ entrypointRegistrar;
34
+ browserBundleService;
35
+ entrypointDependencyGraph;
36
+ runtimeSpecifierRegistry;
37
+ serverModuleTranspiler;
38
+ wsHandler;
39
+ constructor({ appConfig, bridge }) {
40
+ this.appConfig = appConfig;
41
+ this.bridge = bridge;
42
+ this.distDir = path.join(resolveInternalWorkDir(this.appConfig), RESOLVED_ASSETS_DIR, "_hmr");
43
+ this.entrypointRegistrar = new HmrEntrypointRegistrar({
44
+ srcDir: this.appConfig.absolutePaths.srcDir,
45
+ distDir: this.distDir,
46
+ entrypointRegistrations: this.entrypointRegistrations,
47
+ watchedFiles: this.watchedFiles,
48
+ clearFailedRegistration: (entrypointPath) => this.clearFailedEntrypointRegistration(entrypointPath),
49
+ registrationTimeoutMs: HmrManager.entrypointRegistrationTimeoutMs
50
+ });
51
+ this.browserBundleService = new BrowserBundleService(appConfig);
52
+ const existingEntrypointDependencyGraph = getAppEntrypointDependencyGraph(appConfig);
53
+ this.entrypointDependencyGraph = existingEntrypointDependencyGraph instanceof NoopEntrypointDependencyGraph ? existingEntrypointDependencyGraph : new NoopEntrypointDependencyGraph();
54
+ setAppEntrypointDependencyGraph(this.appConfig, this.entrypointDependencyGraph);
55
+ this.runtimeSpecifierRegistry = getAppRuntimeSpecifierRegistry(this.appConfig);
56
+ this.serverModuleTranspiler = getAppServerModuleTranspiler(this.appConfig);
57
+ this.cleanDistDir();
58
+ this.initializeStrategies();
59
+ }
60
+ /**
61
+ * Ensures the HMR output directory exists.
62
+ *
63
+ * This must not remove the directory because multiple app processes
64
+ * can share the same dist path during e2e runs.
65
+ */
66
+ cleanDistDir() {
67
+ fileSystem.ensureDir(this.distDir);
68
+ }
69
+ /**
70
+ * Returns whether the generic JS strategy may rebuild an entrypoint.
71
+ *
72
+ * @remarks
73
+ * Integration-owned page entrypoints are excluded so a shared dependency
74
+ * invalidation cannot replace framework-owned browser output with a generic JS
75
+ * rebuild.
76
+ */
77
+ shouldJsStrategyProcessEntrypoint(entrypointPath) {
78
+ return !this.strategies.some((strategy) => {
79
+ if (strategy.type !== HmrStrategyType.INTEGRATION || strategy.priority <= HmrStrategyType.SCRIPT) {
80
+ return false;
81
+ }
82
+ try {
83
+ return strategy.matches(entrypointPath);
84
+ } catch (error) {
85
+ appLogger.error(error);
86
+ return false;
87
+ }
88
+ });
89
+ }
90
+ /**
91
+ * Initializes core HMR strategies.
92
+ * Strategies are evaluated in priority order (highest first).
93
+ */
94
+ initializeStrategies() {
95
+ const jsContext = {
96
+ getWatchedFiles: () => this.watchedFiles,
97
+ getSpecifierMap: () => this.runtimeSpecifierRegistry.getAll(),
98
+ getDistDir: () => this.distDir,
99
+ getPlugins: () => this.plugins,
100
+ getSrcDir: () => this.appConfig.absolutePaths.srcDir,
101
+ getPagesDir: () => this.appConfig.absolutePaths.pagesDir,
102
+ getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
103
+ getTemplateExtensions: () => this.appConfig.templatesExt,
104
+ getBrowserBundleService: () => this.browserBundleService,
105
+ getEntrypointDependencyGraph: () => this.entrypointDependencyGraph,
106
+ shouldProcessEntrypoint: (entrypointPath) => this.shouldJsStrategyProcessEntrypoint(entrypointPath)
107
+ };
108
+ this.strategies = [new JsHmrStrategy(jsContext), new DefaultHmrStrategy()];
109
+ }
110
+ /**
111
+ * Registers a custom HMR strategy.
112
+ * Used by integrations to provide framework-specific HMR handling.
113
+ * @param strategy - The HMR strategy to register
114
+ */
115
+ registerStrategy(strategy) {
116
+ this.strategies.push(strategy);
117
+ }
118
+ setPlugins(plugins) {
119
+ this.plugins = [...plugins];
120
+ }
121
+ setEnabled(enabled) {
122
+ this.enabled = enabled;
123
+ }
124
+ isEnabled() {
125
+ return this.enabled;
126
+ }
127
+ /**
128
+ * Registers runtime bare-specifier mappings exposed by integrations.
129
+ *
130
+ * @remarks
131
+ * These mappings are consumed by framework-owned HMR strategies that preserve
132
+ * shared runtime imports in browser bundles. The registry stays generic so
133
+ * these mappings can later support broader import-map-style runtime features
134
+ * without moving integration semantics into core.
135
+ */
136
+ registerSpecifierMap(map) {
137
+ this.runtimeSpecifierRegistry.register(map);
138
+ }
139
+ getWebSocketHandler() {
140
+ const open = (ws) => {
141
+ this.bridge.subscribe(ws);
142
+ appLogger.debug(`[HmrManager] Connection opened. Subscribers: ${this.bridge.subscriberCount}`);
143
+ };
144
+ const close = (ws) => {
145
+ this.bridge.unsubscribe(ws);
146
+ appLogger.debug(`[HmrManager] Connection closed. Subscribers: ${this.bridge.subscriberCount}`);
147
+ };
148
+ this.wsHandler = { open, close };
149
+ return {
150
+ open: this.wsHandler.open,
151
+ close: this.wsHandler.close,
152
+ message: (_ws, message) => {
153
+ appLogger.debug("[HMR] Received message from client:", message);
154
+ }
155
+ };
156
+ }
157
+ /**
158
+ * Builds the client-side HMR runtime script.
159
+ */
160
+ async buildRuntime() {
161
+ const runtimeSource = path.resolve(import.meta.dirname, "../../hmr/client/hmr-runtime.js");
162
+ const result = await this.browserBundleService.bundle({
163
+ profile: "hmr-runtime",
164
+ entrypoints: [runtimeSource],
165
+ outdir: this.distDir,
166
+ naming: "_hmr_runtime.js",
167
+ minify: false,
168
+ plugins: this.plugins
169
+ });
170
+ if (!result.success) {
171
+ appLogger.error("[HMR] Failed to build runtime script:", result.logs);
172
+ }
173
+ }
174
+ getRuntimePath() {
175
+ return path.join(this.distDir, "_hmr_runtime.js");
176
+ }
177
+ broadcast(event) {
178
+ appLogger.debug(
179
+ `[HMR] Broadcasting ${event.type} event, path=${event.path || "all"}, subscribers=${this.bridge.subscriberCount}`
180
+ );
181
+ this.bridge.broadcast(event);
182
+ }
183
+ async handleFileChange(filePath, options = {}) {
184
+ const sorted = [...this.strategies].sort((a, b) => b.priority - a.priority);
185
+ const strategy = sorted.find((s) => {
186
+ try {
187
+ return s.matches(filePath);
188
+ } catch (err) {
189
+ appLogger.error(err);
190
+ return false;
191
+ }
192
+ });
193
+ if (!strategy) {
194
+ appLogger.warn(`[HMR] No strategy found for ${filePath}`);
195
+ return;
196
+ }
197
+ appLogger.debug(`[HmrManager] Selected strategy: ${strategy.constructor.name}`);
198
+ const action = await strategy.process(filePath);
199
+ const shouldBroadcast = options.broadcast ?? true;
200
+ if (shouldBroadcast && action.type === "broadcast") {
201
+ if (action.events) {
202
+ for (const event of action.events) {
203
+ this.broadcast(event);
204
+ }
205
+ }
206
+ }
207
+ }
208
+ getOutputUrl(entrypointPath) {
209
+ return this.watchedFiles.get(entrypointPath);
210
+ }
211
+ getWatchedFiles() {
212
+ return this.watchedFiles;
213
+ }
214
+ getSpecifierMap() {
215
+ return this.runtimeSpecifierRegistry.getAll();
216
+ }
217
+ getDistDir() {
218
+ return this.distDir;
219
+ }
220
+ getPlugins() {
221
+ return this.plugins;
222
+ }
223
+ getDefaultContext() {
224
+ return {
225
+ getWatchedFiles: () => this.watchedFiles,
226
+ getSpecifierMap: () => this.runtimeSpecifierRegistry.getAll(),
227
+ getDistDir: () => this.distDir,
228
+ getPlugins: () => this.plugins,
229
+ getSrcDir: () => this.appConfig.absolutePaths.srcDir,
230
+ getLayoutsDir: () => this.appConfig.absolutePaths.layoutsDir,
231
+ getPagesDir: () => this.appConfig.absolutePaths.pagesDir,
232
+ getBuildExecutor: () => getAppBuildExecutor(this.appConfig),
233
+ getBrowserBundleService: () => this.browserBundleService,
234
+ importServerModule: async (filePath) => await this.serverModuleTranspiler.importModule({
235
+ filePath,
236
+ outdir: path.join(resolveInternalExecutionDir(this.appConfig), ".server-modules"),
237
+ externalPackages: true
238
+ })
239
+ };
240
+ }
241
+ clearFailedEntrypointRegistration(entrypointPath) {
242
+ this.watchedFiles.delete(entrypointPath);
243
+ }
244
+ /**
245
+ * Registers one integration-owned page entrypoint.
246
+ *
247
+ * @remarks
248
+ * Concurrent callers share one in-flight registration. The registration is
249
+ * cleared from the dedupe map when it settles so later callers cannot inherit a
250
+ * stale promise.
251
+ */
252
+ async registerEntrypoint(entrypointPath) {
253
+ return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
254
+ emit: async (normalizedEntrypoint, outputPath) => await this.emitStrictEntrypoint(normalizedEntrypoint, outputPath),
255
+ getMissingOutputError: (normalizedEntrypoint, outputPath) => new Error(
256
+ `[HMR] Integration failed to emit entrypoint ${normalizedEntrypoint} to ${outputPath}. Page entrypoints must be produced by their owning integration.`
257
+ )
258
+ });
259
+ }
260
+ /**
261
+ * Registers one generic script entrypoint.
262
+ *
263
+ * @remarks
264
+ * This explicit path keeps the page-entrypoint contract strict while still
265
+ * allowing generic script assets to use the fallback build path.
266
+ */
267
+ async registerScriptEntrypoint(entrypointPath) {
268
+ return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
269
+ emit: async (normalizedEntrypoint, outputPath) => await this.emitScriptEntrypoint(normalizedEntrypoint, outputPath),
270
+ getMissingOutputError: (normalizedEntrypoint) => new Error(`[HMR] Failed to register script entrypoint: ${normalizedEntrypoint}`)
271
+ });
272
+ }
273
+ /**
274
+ * Performs strict integration-owned registration for one normalized path.
275
+ *
276
+ * @remarks
277
+ * The manager reserves the output URL, removes any stale emitted file, runs
278
+ * strategy processing without broadcasting, and then verifies that the owning
279
+ * integration emitted the expected file.
280
+ */
281
+ async emitStrictEntrypoint(entrypointPath, _outputPath) {
282
+ await this.handleFileChange(entrypointPath, { broadcast: false });
283
+ }
284
+ /**
285
+ * Performs registration for a generic script asset.
286
+ *
287
+ * @remarks
288
+ * Strategies get the first chance to emit output. If no output exists after
289
+ * that pass, Bun falls back to the generic browser build for this explicit
290
+ * script-only path.
291
+ */
292
+ async emitScriptEntrypoint(entrypointPath, outputPath) {
293
+ const naming = path.relative(this.distDir, outputPath).split(path.sep).join("/");
294
+ await this.handleFileChange(entrypointPath, { broadcast: false });
295
+ if (!fileSystem.exists(outputPath)) {
296
+ const buildResult = await this.browserBundleService.bundle({
297
+ profile: "hmr-entrypoint",
298
+ entrypoints: [entrypointPath],
299
+ outdir: this.distDir,
300
+ naming,
301
+ minify: false,
302
+ plugins: this.plugins
303
+ });
304
+ if (!buildResult.success) {
305
+ appLogger.error(
306
+ `[HMR] Generic script entrypoint build failed for ${entrypointPath}:`,
307
+ buildResult.logs
308
+ );
309
+ }
310
+ }
311
+ }
312
+ /**
313
+ * Stops active watchers and releases retained registration state.
314
+ *
315
+ * @remarks
316
+ * Emitted `_hmr` files remain on disk because parallel app processes may share
317
+ * the same dist directory. The in-memory indexes are cleared so stale
318
+ * entrypoints and specifier maps cannot leak through a reused manager object.
319
+ */
320
+ stop() {
321
+ this.entrypointRegistrations.clear();
322
+ for (const watcher of this.watchers.values()) {
323
+ watcher.close();
324
+ }
325
+ this.watchers.clear();
326
+ this.watchedFiles.clear();
327
+ this.runtimeSpecifierRegistry.clear();
328
+ this.entrypointDependencyGraph.reset();
329
+ this.plugins = [];
330
+ }
331
+ }
332
+ export {
333
+ HmrManager
334
+ };
@@ -0,0 +1,2 @@
1
+ export { EcopagesApp, createApp } from './create-app.js';
2
+ export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
@@ -0,0 +1,8 @@
1
+ import { EcopagesApp, createApp } from "./create-app.js";
2
+ import { defineApiHandler, defineGroupHandler } from "../shared/define-api-handler.js";
3
+ export {
4
+ EcopagesApp,
5
+ createApp,
6
+ defineApiHandler,
7
+ defineGroupHandler
8
+ };
@@ -0,0 +1,155 @@
1
+ import type { Server, WebSocketHandler } from 'bun';
2
+ import type { EcoPagesAppConfig } from '../../internal-types.js';
3
+ import type { ApiHandler, ErrorHandler, StaticRoute } from '../../public-types.js';
4
+ import { SharedServerAdapter } from '../shared/server-adapter.js';
5
+ import type { ServerAdapterResult } from '../abstract/server-adapter.js';
6
+ import { ServerRouteHandler, type ServerRouteHandlerParams } from '../shared/server-route-handler.js';
7
+ import { ServerStaticBuilder, type ServerStaticBuilderParams } from '../shared/server-static-builder';
8
+ import { ClientBridge } from './client-bridge';
9
+ import { HmrManager } from './hmr-manager';
10
+ import { ServerLifecycle } from './server-lifecycle.js';
11
+ type BunServerInstance = Server<unknown>;
12
+ type BunNativeServeOptions = Bun.Serve.Options<unknown>;
13
+ export type BunServerRoutes = Bun.Serve.Routes<unknown, string>;
14
+ export type BunServeAdapterServerOptions = Partial<Omit<BunNativeServeOptions, 'fetch'> & {
15
+ fetch(this: BunServerInstance, request: Request): Promise<void | Response>;
16
+ }>;
17
+ export type BunServeOptions = Omit<BunNativeServeOptions, 'fetch'> & {
18
+ fetch?: (this: BunServerInstance, request: Request, server: BunServerInstance) => Promise<void | Response>;
19
+ websocket?: WebSocketHandler<unknown>;
20
+ };
21
+ export interface BunServerAdapterParams {
22
+ appConfig: EcoPagesAppConfig;
23
+ runtimeOrigin: string;
24
+ serveOptions: BunServeAdapterServerOptions;
25
+ apiHandlers?: ApiHandler<string, Request, BunServerInstance>[];
26
+ staticRoutes?: StaticRoute[];
27
+ errorHandler?: ErrorHandler;
28
+ options?: {
29
+ watch?: boolean;
30
+ };
31
+ lifecycle?: ServerLifecycle;
32
+ staticBuilderFactory?: (params: ServerStaticBuilderParams) => ServerStaticBuilder;
33
+ routeHandlerFactory?: (params: ServerRouteHandlerParams) => ServerRouteHandler;
34
+ hmrManager?: HmrManager;
35
+ bridge?: ClientBridge;
36
+ }
37
+ export interface BunServerAdapterResult extends ServerAdapterResult {
38
+ getServerOptions: (options?: {
39
+ enableHmr?: boolean;
40
+ }) => BunServeOptions;
41
+ buildStatic: (options?: {
42
+ preview?: boolean;
43
+ }) => Promise<void>;
44
+ completeInitialization: (server?: BunServerInstance | null) => Promise<void>;
45
+ handleRequest: (request: Request) => Promise<Response>;
46
+ }
47
+ export declare class BunServerAdapter extends SharedServerAdapter<BunServerAdapterParams, BunServerAdapterResult> {
48
+ appConfig: EcoPagesAppConfig;
49
+ options: BunServerAdapterParams['options'];
50
+ serveOptions: BunServeAdapterServerOptions;
51
+ protected apiHandlers: ApiHandler<string, Request, BunServerInstance>[];
52
+ protected staticRoutes: StaticRoute[];
53
+ protected errorHandler?: ErrorHandler;
54
+ private bridge;
55
+ private lifecycle;
56
+ hmrManager: HmrManager;
57
+ private initializationPromise;
58
+ private fullyInitialized;
59
+ serverInstance: BunServerInstance | null;
60
+ private readonly lifecycleFactory?;
61
+ private readonly staticBuilderFactory?;
62
+ private readonly routeHandlerFactory?;
63
+ private readonly hmrManagerFactory?;
64
+ private readonly bridgeFactory?;
65
+ constructor({ appConfig, runtimeOrigin, serveOptions, apiHandlers, staticRoutes, errorHandler, options, lifecycle, staticBuilderFactory, routeHandlerFactory, hmrManager, bridge, }: BunServerAdapterParams);
66
+ /**
67
+ * Determines if HMR script should be injected.
68
+ * Only injects in watch mode when HMR manager is enabled.
69
+ */
70
+ private shouldInjectHmrScript;
71
+ /**
72
+ * Checks if a response contains HTML content.
73
+ */
74
+ private isHtmlResponse;
75
+ /**
76
+ * Injects HMR script into HTML responses in development mode.
77
+ * Ensures explicit API handlers that return HTML get auto-reload capability.
78
+ */
79
+ private maybeInjectHmrScript;
80
+ /**
81
+ * Initializes the server adapter's core components.
82
+ * Delegates to ServerLifecycle for setup.
83
+ */
84
+ initialize(): Promise<void>;
85
+ /**
86
+ * Refreshes the router routes during watch mode.
87
+ */
88
+ private refreshRouterRoutes;
89
+ private watch;
90
+ /**
91
+ * Retrieves the current server options, optionally enabling HMR.
92
+ * If HMR is enabled, modifies fetch to handle WebSocket upgrades and serve HMR runtime.
93
+ * Ensures original fetch logic is preserved and called for non-HMR requests.
94
+ * @param options.enableHmr Whether to enable Hot Module Replacement
95
+ */
96
+ getServerOptions({ enableHmr }?: {
97
+ enableHmr?: boolean | undefined;
98
+ }): BunServeOptions;
99
+ /**
100
+ * Helper method to retrieve and parse the request body.
101
+ * Handles JSON and plain text content types.
102
+ * For FormData (multipart/form-data, x-www-form-urlencoded), use ctx.request.formData() directly.
103
+ * Returns undefined for unsupported content types.
104
+ */
105
+ private retrieveBodyFromRequest;
106
+ /**
107
+ * Creates complete server configuration with request handling.
108
+ * @returns Server options ready for Bun.serve()
109
+ */
110
+ private buildServerSettings;
111
+ /**
112
+ * Generates a static build of the site for deployment.
113
+ * @param options.preview - If true, starts a preview server after build
114
+ */
115
+ buildStatic(options?: {
116
+ preview?: boolean;
117
+ }): Promise<void>;
118
+ /**
119
+ * Initializes the server with dynamic routes after server creation.
120
+ * Must be called before handling any requests.
121
+ * @param server - The Bun server instance
122
+ */
123
+ completeInitialization(server?: BunServerInstance | null): Promise<void>;
124
+ /**
125
+ * Performs complete server setup including routing, watchers, and HMR.
126
+ */
127
+ private _performInitialization;
128
+ /**
129
+ * Creates and initializes the Bun server adapter.
130
+ * @returns Configured adapter with server methods
131
+ */
132
+ createAdapter(): Promise<BunServerAdapterResult>;
133
+ /**
134
+ * Handles HTTP requests by passing them securely to the shared core router adapter.
135
+ */
136
+ handleRequest(request: Request): Promise<Response>;
137
+ /**
138
+ * Ensures server initialization completes before request handling.
139
+ * Prevents race conditions during startup.
140
+ */
141
+ private waitForInitialization;
142
+ /**
143
+ * Handles HTTP requests from the router adapter.
144
+ */
145
+ handleResponse(request: Request): Promise<Response>;
146
+ /**
147
+ * Handles requests that do not match any routes.
148
+ */
149
+ private handleNoMatch;
150
+ }
151
+ /**
152
+ * Factory function to create a Bun server adapter
153
+ */
154
+ export declare function createBunServerAdapter(params: BunServerAdapterParams): Promise<BunServerAdapterResult>;
155
+ export {};