@ecopages/core 0.2.0-beta.31 → 0.2.0-beta.32

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 (338) hide show
  1. package/README.md +1 -0
  2. package/package.json +82 -3
  3. package/src/adapters/abstract/application-adapter.d.ts +0 -8
  4. package/src/adapters/abstract/application-adapter.js +252 -261
  5. package/src/adapters/abstract/router-adapter.js +12 -4
  6. package/src/adapters/abstract/segment-path-matcher.js +132 -134
  7. package/src/adapters/abstract/server-adapter.js +22 -14
  8. package/src/adapters/abstract/ws-pattern-matcher.js +24 -26
  9. package/src/adapters/bun/bun-user-websocket-lifecycle.js +83 -86
  10. package/src/adapters/bun/client-bridge.js +51 -50
  11. package/src/adapters/bun/create-app.js +171 -161
  12. package/src/adapters/bun/hmr-manager.js +62 -57
  13. package/src/adapters/bun/index.js +2 -31
  14. package/src/adapters/bun/runtime-host.js +61 -54
  15. package/src/adapters/bun/server-adapter.d.ts +0 -1
  16. package/src/adapters/bun/server-adapter.js +561 -561
  17. package/src/adapters/bun/static-preview-host.js +43 -46
  18. package/src/adapters/create-app.js +11 -14
  19. package/src/adapters/index.js +2 -30
  20. package/src/adapters/node/create-app.js +123 -129
  21. package/src/adapters/node/http-request-bridge.js +147 -106
  22. package/src/adapters/node/node-client-bridge.js +62 -64
  23. package/src/adapters/node/node-hmr-manager.js +58 -48
  24. package/src/adapters/node/runtime-host.js +96 -89
  25. package/src/adapters/node/server-adapter-dependencies.js +18 -21
  26. package/src/adapters/node/server-adapter.d.ts +0 -1
  27. package/src/adapters/node/server-adapter.js +347 -326
  28. package/src/adapters/node/static-content-server.js +172 -191
  29. package/src/adapters/node/static-preview-host.js +87 -78
  30. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
  31. package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
  32. package/src/adapters/shared/hmr/hmr-html-response.js +46 -32
  33. package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +29 -38
  34. package/src/adapters/shared/hmr/shared-hmr-manager.js +439 -425
  35. package/src/adapters/shared/http/api-request-pipeline.js +122 -119
  36. package/src/adapters/shared/http/api-response.js +77 -77
  37. package/src/adapters/shared/http/create-body-response.js +22 -19
  38. package/src/adapters/shared/http/define-api-handler.js +41 -55
  39. package/src/adapters/shared/http/explicit-static-render-preparation.js +26 -23
  40. package/src/adapters/shared/http/explicit-static-route-matcher.js +55 -62
  41. package/src/adapters/shared/http/file-route-middleware-pipeline.js +81 -75
  42. package/src/adapters/shared/http/fs-server-response-factory.js +101 -96
  43. package/src/adapters/shared/http/fs-server-response-matcher.js +239 -257
  44. package/src/adapters/shared/http/run-middleware-chain.js +15 -15
  45. package/src/adapters/shared/runtime/application-adapter.js +72 -87
  46. package/src/adapters/shared/runtime/copy-runtime-public-dir.js +25 -22
  47. package/src/adapters/shared/runtime/port-manager.js +207 -177
  48. package/src/adapters/shared/runtime/render-context.js +94 -79
  49. package/src/adapters/shared/runtime/runtime-app-bootstrap.js +33 -38
  50. package/src/adapters/shared/runtime/runtime-host.js +1 -0
  51. package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +2 -3
  52. package/src/adapters/shared/runtime/runtime-server-lifecycle.js +65 -51
  53. package/src/adapters/shared/runtime/server-adapter.d.ts +1 -0
  54. package/src/adapters/shared/runtime/server-adapter.js +233 -217
  55. package/src/adapters/shared/runtime/server-route-handler.js +74 -70
  56. package/src/adapters/shared/runtime/server-static-builder.js +165 -184
  57. package/src/adapters/shared/runtime/static-preview-host.js +1 -0
  58. package/src/adapters/shared/ws/node-http-websocket-upgrades.js +97 -88
  59. package/src/adapters/shared/ws/websocket-lifecycle.js +57 -50
  60. package/src/build/README.md +52 -1
  61. package/src/build/app-build-manifest-runtime.js +129 -108
  62. package/src/build/browser/browser-runtime-manifest.js +47 -50
  63. package/src/build/browser/browser-runtime-plugin-helpers.js +32 -12
  64. package/src/build/browser/browser-runtime-plugin.js +206 -160
  65. package/src/build/browser/jsx-ownership-plugins.js +51 -37
  66. package/src/build/browser/lit-static-render-worker-context.js +3 -5
  67. package/src/build/build-adapter.js +276 -139
  68. package/src/build/cache/build-input-fingerprint.js +28 -26
  69. package/src/build/cache/cache-constants.js +4 -6
  70. package/src/build/cache/cache-keys.js +64 -56
  71. package/src/build/cache/pages-unified-graph-build.js +179 -178
  72. package/src/build/cache/production-build-cache.js +47 -54
  73. package/src/build/cache/server-entry-build-cache.js +134 -146
  74. package/src/build/contracts/build-contracts.d.ts +4 -4
  75. package/src/build/contracts/build-contracts.js +1 -0
  76. package/src/build/contracts/build-manifest.js +58 -43
  77. package/src/build/contracts/build-types.js +1 -0
  78. package/src/build/rolldown/rolldown-adapter-helpers.d.ts +9 -0
  79. package/src/build/rolldown/rolldown-adapter-helpers.js +405 -298
  80. package/src/build/rolldown/rolldown-build-adapter.js +53 -61
  81. package/src/build/rolldown/rolldown-build-invocation-metrics.js +31 -35
  82. package/src/build/rolldown/rolldown-plugin-bridge.js +264 -194
  83. package/src/build/rolldown/rolldown-source-transform-pass.js +59 -50
  84. package/src/build/rolldown/runtime-build-output-normalizer.js +227 -175
  85. package/src/build/rolldown/server-side-css-shim-plugin.js +54 -31
  86. package/src/build/runtime/build-profile-options.js +36 -36
  87. package/src/build/runtime/build-request-identity.js +70 -45
  88. package/src/build/runtime/build-request-policy.js +80 -42
  89. package/src/build/runtime/build-runtime.js +64 -54
  90. package/src/build/runtime/deduping-build-executor.js +38 -32
  91. package/src/build/runtime/parallel-build-executor.js +58 -50
  92. package/src/build/runtime/serialized-build-executor.js +78 -62
  93. package/src/cache/index.js +6 -6
  94. package/src/cache/module-parse-cache.js +99 -68
  95. package/src/client/navigation-scripts/classification.js +45 -37
  96. package/src/client/navigation-scripts/index.js +3 -23
  97. package/src/client/navigation-scripts/navigation-scripts.test.browser.js +58 -62
  98. package/src/client/navigation-scripts/registry.js +15 -11
  99. package/src/client/navigation-scripts/rerun-queue.js +81 -64
  100. package/src/client/scroll.js +32 -24
  101. package/src/client/scroll.test.browser.js +27 -33
  102. package/src/client/view-transitions.js +68 -55
  103. package/src/config/config-builder.d.ts +8 -0
  104. package/src/config/config-builder.js +637 -642
  105. package/src/config/constants.js +44 -24
  106. package/src/declarations.d.ts +1 -0
  107. package/src/dev/README.md +24 -0
  108. package/src/dev/client-bridge-registry.js +7 -12
  109. package/src/dev/dev-client-ownership.js +7 -5
  110. package/src/dev/hmr-manager-registry.js +7 -12
  111. package/src/dev/host-runtime.js +25 -30
  112. package/src/dev/runtime-server-started-message.js +2 -5
  113. package/src/dev/sc-server.js +106 -103
  114. package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
  115. package/src/dev/transform-server/dev-transform-bundler.js +79 -0
  116. package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
  117. package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
  118. package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
  119. package/src/dev/transform-server/dev-transform-import-rewriter.js +110 -0
  120. package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
  121. package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
  122. package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
  123. package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
  124. package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
  125. package/src/dev/transform-server/dev-transform-server.js +191 -0
  126. package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
  127. package/src/dev/transform-server/dev-transform-url.js +58 -0
  128. package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +27 -0
  129. package/src/dev/transform-server/dev-transform-vendor-registry.js +145 -0
  130. package/src/dev/transform-server/index.d.ts +6 -0
  131. package/src/dev/transform-server/index.js +4 -0
  132. package/src/dev/transform-server/types.d.ts +15 -0
  133. package/src/dev/transform-server/types.js +1 -0
  134. package/src/dev-toolbar/README.md +51 -0
  135. package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
  136. package/src/dev-toolbar/define-dev-tool.js +9 -0
  137. package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
  138. package/src/dev-toolbar/dev-toolbar-config.js +19 -0
  139. package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
  140. package/src/dev-toolbar/dev-toolbar-host.js +117 -0
  141. package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
  142. package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
  143. package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
  144. package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
  145. package/src/dev-toolbar/dev-toolbar-package.d.ts +31 -0
  146. package/src/dev-toolbar/dev-toolbar-package.js +72 -0
  147. package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
  148. package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
  149. package/src/diagnostics/request-build-dedupe.js +34 -28
  150. package/src/diagnostics/startup-trace.d.ts +10 -1
  151. package/src/diagnostics/startup-trace.js +269 -241
  152. package/src/eco/README.md +6 -0
  153. package/src/eco/eco-declared-component.js +19 -14
  154. package/src/eco/eco.browser.js +56 -69
  155. package/src/eco/eco.js +156 -96
  156. package/src/eco/eco.types.js +5 -0
  157. package/src/eco/eco.utils.js +1 -10
  158. package/src/eco/global-injector-map.js +55 -41
  159. package/src/eco/lazy-injector-map.js +90 -60
  160. package/src/eco/module-dependencies.js +52 -44
  161. package/src/eco/page-layout-normalization.js +59 -49
  162. package/src/errors/http-error.js +50 -49
  163. package/src/errors/index.js +3 -12
  164. package/src/errors/locals-access-error.js +5 -8
  165. package/src/errors/undeclared-component-dependency-error.js +15 -15
  166. package/src/global/app-logger.js +3 -6
  167. package/src/hmr/README.md +10 -0
  168. package/src/hmr/client/hmr-runtime.js +117 -113
  169. package/src/hmr/client/module-update.d.ts +13 -0
  170. package/src/hmr/client/module-update.js +39 -0
  171. package/src/hmr/hmr-asset-paths.d.ts +14 -0
  172. package/src/hmr/hmr-asset-paths.js +22 -0
  173. package/src/hmr/hmr-entrypoint-output.d.ts +11 -39
  174. package/src/hmr/hmr-entrypoint-output.js +28 -54
  175. package/src/hmr/hmr-file-change-prep.js +13 -16
  176. package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
  177. package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
  178. package/src/hmr/hmr-runtime-paths.d.ts +10 -0
  179. package/src/hmr/hmr-runtime-paths.js +13 -0
  180. package/src/hmr/hmr-strategy.d.ts +5 -11
  181. package/src/hmr/hmr-strategy.js +113 -61
  182. package/src/hmr/strategies/default-hmr-strategy.js +55 -33
  183. package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -95
  184. package/src/hmr/strategies/js-hmr-strategy.js +104 -217
  185. package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +33 -27
  186. package/src/index.browser.js +1 -4
  187. package/src/index.d.ts +1 -0
  188. package/src/index.js +6 -47
  189. package/src/integrations/ghtml/ghtml-renderer.js +12 -7
  190. package/src/integrations/ghtml/ghtml.constants.js +1 -4
  191. package/src/integrations/ghtml/ghtml.plugin.js +9 -12
  192. package/src/islands/README.md +25 -0
  193. package/src/islands/island-host.d.ts +37 -0
  194. package/src/islands/island-host.js +55 -0
  195. package/src/plugins/alias-resolver-cache.js +114 -97
  196. package/src/plugins/alias-resolver-plugin.js +33 -47
  197. package/src/plugins/define-integration.js +18 -17
  198. package/src/plugins/eco-component-meta-plugin.js +387 -145
  199. package/src/plugins/foreign-jsx-override-plugin.js +49 -35
  200. package/src/plugins/integration-plugin.js +212 -203
  201. package/src/plugins/jsx-import-source.utils.js +16 -21
  202. package/src/plugins/processor.js +159 -149
  203. package/src/plugins/runtime-capability.js +1 -0
  204. package/src/plugins/source-transform.js +109 -79
  205. package/src/plugins/tsconfig-import-resolver.d.ts +17 -0
  206. package/src/plugins/tsconfig-import-resolver.js +218 -142
  207. package/src/route-renderer/README.md +12 -1
  208. package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +143 -136
  209. package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +33 -27
  210. package/src/route-renderer/orchestration/foreign-child/component-render-context.js +173 -126
  211. package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +165 -154
  212. package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +329 -341
  213. package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +33 -32
  214. package/src/route-renderer/orchestration/integration-renderer.d.ts +1 -0
  215. package/src/route-renderer/orchestration/integration-renderer.js +731 -750
  216. package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +168 -172
  217. package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +119 -131
  218. package/src/route-renderer/orchestration/ownership-graph/component-graph.js +82 -91
  219. package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +82 -76
  220. package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +29 -31
  221. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +10 -6
  222. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +31 -28
  223. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +3 -0
  224. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +430 -413
  225. package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +191 -212
  226. package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +20 -24
  227. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +4 -0
  228. package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +24 -24
  229. package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +22 -24
  230. package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +41 -34
  231. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +5 -0
  232. package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +42 -22
  233. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +50 -48
  234. package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +29 -32
  235. package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +150 -156
  236. package/src/route-renderer/orchestration/string-markup-renderer.js +48 -51
  237. package/src/route-renderer/page-loading/component-dependency-collection.js +120 -124
  238. package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
  239. package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
  240. package/src/route-renderer/page-loading/ecopages-virtual-imports.js +68 -54
  241. package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
  242. package/src/route-renderer/page-loading/lazy-trigger-planning.js +46 -36
  243. package/src/route-renderer/page-loading/module-declaration-aggregation.js +38 -31
  244. package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
  245. package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
  246. package/src/route-renderer/page-loading/page-module-loader.js +130 -124
  247. package/src/route-renderer/route-renderer.js +74 -76
  248. package/src/router/client/link-intent.js +55 -39
  249. package/src/router/client/link-intent.test.browser.js +49 -49
  250. package/src/router/client/link-navigation-policy.js +114 -93
  251. package/src/router/client/link-navigation-policy.test.browser.js +70 -80
  252. package/src/router/client/navigation-coordinator.js +235 -211
  253. package/src/router/server/route-registry.js +237 -242
  254. package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -53
  255. package/src/services/assets/asset-processing-service/asset-processing.service.js +287 -303
  256. package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
  257. package/src/services/assets/asset-processing-service/assets.types.js +1 -0
  258. package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
  259. package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +106 -69
  260. package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -53
  261. package/src/services/assets/asset-processing-service/finalize-processed-asset.js +4 -6
  262. package/src/services/assets/asset-processing-service/grouped-content-bundles.js +79 -80
  263. package/src/services/assets/asset-processing-service/index.js +8 -8
  264. package/src/services/assets/asset-processing-service/inline-content-script-body.js +22 -16
  265. package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +21 -17
  266. package/src/services/assets/asset-processing-service/page-package.js +70 -72
  267. package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
  268. package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
  269. package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
  270. package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -117
  271. package/src/services/assets/asset-processing-service/processors/index.js +5 -5
  272. package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +110 -115
  273. package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -97
  274. package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
  275. package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +27 -29
  276. package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +34 -40
  277. package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +36 -35
  278. package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +14 -16
  279. package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -39
  280. package/src/services/assets/browser-bundle.service.js +52 -47
  281. package/src/services/cache/cache.types.js +5 -0
  282. package/src/services/cache/index.js +6 -7
  283. package/src/services/cache/memory-cache-store.js +101 -89
  284. package/src/services/cache/page-cache-service.js +156 -145
  285. package/src/services/cache/page-request-cache-coordinator.service.js +102 -102
  286. package/src/services/html/html-rewriter-provider.service.js +61 -61
  287. package/src/services/html/html-transformer.service.js +249 -266
  288. package/src/services/invalidation/development-invalidation.service.js +252 -241
  289. package/src/services/module-loading/app-module-loader.service.js +1 -0
  290. package/src/services/module-loading/app-server-module-transpiler.service.js +107 -101
  291. package/src/services/module-loading/host-module-loader-registry.js +6 -11
  292. package/src/services/module-loading/module-loading-types.js +1 -0
  293. package/src/services/module-loading/page-module-import.service.js +235 -243
  294. package/src/services/module-loading/route-module-build-cache-registry.js +47 -33
  295. package/src/services/module-loading/route-module-build-cache.js +3 -38
  296. package/src/services/module-loading/route-module-build-cache.store.js +195 -200
  297. package/src/services/module-loading/route-module-build-manifest.js +61 -74
  298. package/src/services/module-loading/route-module-dependency-hasher.js +136 -110
  299. package/src/services/module-loading/server-module-transpiler.service.js +68 -62
  300. package/src/services/module-loading/source-module-support.js +15 -7
  301. package/src/services/runtime-state/dev-graph.service.js +165 -157
  302. package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
  303. package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
  304. package/src/services/validation/schema-validation-service.js +157 -95
  305. package/src/services/validation/standard-schema.types.js +1 -0
  306. package/src/services/validation/validate-standard-schema.js +13 -13
  307. package/src/static-site-generator/production-page-browser-graph-prebuild.js +35 -19
  308. package/src/static-site-generator/sitemap-routes.js +33 -28
  309. package/src/static-site-generator/sitemap.js +38 -29
  310. package/src/static-site-generator/static-build-invalidation.js +34 -56
  311. package/src/static-site-generator/static-export-context.js +1 -0
  312. package/src/static-site-generator/static-site-generator.js +517 -553
  313. package/src/types/internal-types.d.ts +19 -3
  314. package/src/types/internal-types.js +1 -0
  315. package/src/types/public-types.d.ts +16 -46
  316. package/src/types/public-types.js +1 -0
  317. package/src/utils/deep-merge.js +39 -26
  318. package/src/utils/ecopages-route-info.js +27 -23
  319. package/src/utils/hash.js +3 -6
  320. package/src/utils/html-escaping.js +21 -8
  321. package/src/utils/html.js +1 -4
  322. package/src/utils/invariant.js +11 -10
  323. package/src/utils/locals-utils.js +32 -22
  324. package/src/utils/parse-cli-args.js +73 -65
  325. package/src/utils/path-pattern.js +38 -23
  326. package/src/utils/path-utils.module.js +8 -11
  327. package/src/utils/resolve-entry-file.js +70 -38
  328. package/src/utils/resolve-work-dir.js +23 -27
  329. package/src/utils/runtime.js +24 -33
  330. package/src/utils/server-utils.module.js +60 -52
  331. package/src/utils/static-file-extensions.js +52 -46
  332. package/src/watchers/project-watcher-ignore.js +16 -15
  333. package/src/watchers/project-watcher.js +385 -366
  334. package/src/watchers/project-watcher.test-helpers.js +45 -50
  335. package/src/adapters/shared/hmr/hmr-entrypoint-registrar.d.ts +0 -56
  336. package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +0 -106
  337. package/src/build/cache/dev-browser-script-cache.d.ts +0 -34
  338. package/src/build/cache/dev-browser-script-cache.js +0 -90
@@ -1,324 +1,308 @@
1
- import path from "node:path";
2
- import { RESOLVED_ASSETS_DIR } from "../../../config/constants.js";
3
- import { appLogger } from "../../../global/app-logger.js";
4
- import { fileSystem } from "@ecopages/file-system";
5
- import { deduplicateAssetDependencies, getAssetDependencyKey } from "./asset-dependency-keys.js";
6
- import {
7
- ensureGroupedContentScriptsBundle,
8
- partitionGroupedContentScriptDependencies,
9
- processGroupedDependencyBundles
10
- } from "./grouped-content-bundles.js";
11
- import { resolveIntegrationPluginForProcessingKey } from "./resolve-integration-plugin.js";
12
- import { isHmrAware } from "./processor.interface.js";
13
- import { ProcessorRegistry } from "./processor.registry.js";
14
- import { processUngroupedDependency } from "./ungrouped-dependency-processing.js";
15
- import { materializeContentScriptAsset } from "./materialize-content-script-asset.js";
16
- import {
17
- getDevBrowserScriptCacheEntry,
18
- setDevBrowserScriptCacheEntry
19
- } from "../../../build/cache/dev-browser-script-cache.js";
20
- import {
21
- ContentScriptProcessor,
22
- ContentStylesheetProcessor,
23
- FileScriptProcessor,
24
- FileStylesheetProcessor,
25
- NodeModuleScriptProcessor
26
- } from "./processors/index.js";
27
- class AssetProcessingService {
28
- static RESOLVED_ASSETS_DIR = RESOLVED_ASSETS_DIR;
29
- registry = new ProcessorRegistry();
30
- hmrManager;
31
- cache = /* @__PURE__ */ new Map();
32
- config;
33
- /**
34
- * Creates the asset-processing service bound to one finalized app config.
35
- */
36
- constructor(config) {
37
- this.config = config;
38
- }
39
- /**
40
- * Set the HMR manager for the asset processing service.
41
- * @param hmrManager The HMR manager to set.
42
- */
43
- setHmrManager(hmrManager) {
44
- this.hmrManager = hmrManager;
45
- for (const processor of this.registry.getAllProcessors().values()) {
46
- if (isHmrAware(processor)) {
47
- processor.setHmrManager(hmrManager);
48
- }
1
+ import path from 'node:path';
2
+ import { RESOLVED_ASSETS_DIR } from '../../../config/constants.js';
3
+ import { appLogger } from '../../../global/app-logger.js';
4
+ import { fileSystem } from '@ecopages/file-system';
5
+ import { deduplicateAssetDependencies, getAssetDependencyKey } from './asset-dependency-keys.js';
6
+ import { ensureGroupedContentScriptsBundle, partitionGroupedContentScriptDependencies, processGroupedDependencyBundles, } from './grouped-content-bundles.js';
7
+ import { resolveIntegrationPluginForProcessingKey } from './resolve-integration-plugin.js';
8
+ import { isHmrAware } from './processor.interface.js';
9
+ import { ProcessorRegistry } from './processor.registry.js';
10
+ import { processUngroupedDependency } from './ungrouped-dependency-processing.js';
11
+ import { materializeContentScriptAsset } from './materialize-content-script-asset.js';
12
+ import { ContentScriptProcessor, ContentStylesheetProcessor, FileScriptProcessor, FileStylesheetProcessor, NodeModuleScriptProcessor, } from './processors/index.js';
13
+ /**
14
+ * Processes declared component and page asset dependencies for one app instance.
15
+ *
16
+ * @remarks
17
+ * This service is the shared bridge between dependency declarations and emitted
18
+ * runtime-ready assets. It owns deduplication, processor dispatch, cache reuse,
19
+ * output URL normalization, and production gzip preparation so route rendering
20
+ * and HMR flows do not need to understand processor-specific behavior.
21
+ */
22
+ export class AssetProcessingService {
23
+ static RESOLVED_ASSETS_DIR = RESOLVED_ASSETS_DIR;
24
+ registry = new ProcessorRegistry();
25
+ hmrManager;
26
+ cache = new Map();
27
+ config;
28
+ /**
29
+ * Creates the asset-processing service bound to one finalized app config.
30
+ */
31
+ constructor(config) {
32
+ this.config = config;
49
33
  }
50
- }
51
- getHmrManager() {
52
- return this.hmrManager;
53
- }
54
- /**
55
- * Register a processor for a specific asset kind and source.
56
- * @param kind The asset kind.
57
- * @param variant The asset source.
58
- * @param processor The processor to register.
59
- */
60
- registerProcessor(kind, variant, processor) {
61
- if (this.hmrManager && isHmrAware(processor)) {
62
- processor.setHmrManager(this.hmrManager);
63
- }
64
- this.registry.register(kind, variant, processor);
65
- }
66
- /**
67
- * Processes one dependency list into normalized emitted assets.
68
- *
69
- * @remarks
70
- * Dependencies are deduplicated before processor execution so repeated
71
- * declarations across the render tree reuse the same emitted outputs and cache
72
- * entries. Returned asset order is unspecified — consumers must re-associate
73
- * outputs with inputs via dependency metadata such as `groupedBundle`, not by
74
- * array index alignment with the input list.
75
- */
76
- async processDependencies(deps, key) {
77
- const depsDir = path.join(this.config.absolutePaths.distDir, RESOLVED_ASSETS_DIR);
78
- fileSystem.ensureDir(depsDir);
79
- const dedupedDeps = deduplicateAssetDependencies(deps);
80
- const preparedDeps = this.prepareDependenciesForProcessing(dedupedDeps, key);
81
- ensureGroupedContentScriptsBundle(preparedDeps);
82
- const results = await this.processDependenciesParallel(preparedDeps);
83
- await this.optimizeDependencies(results);
84
- return results;
85
- }
86
- prepareDependenciesForProcessing(deps, processingKey) {
87
- const plugin = resolveIntegrationPluginForProcessingKey(this.config, processingKey);
88
- return plugin?.prepareAssetDependencies?.(deps) ?? deps;
89
- }
90
- /**
91
- * Processes deduplicated dependencies grouped by processor type.
92
- *
93
- * @remarks
94
- * Grouping keeps cache and processor behavior isolated by asset kind/source
95
- * pair, while still allowing the overall dependency set to resolve in
96
- * parallel.
97
- */
98
- async processDependenciesParallel(deps) {
99
- const grouped = this.groupDependenciesByType(deps);
100
- const groupPromises = Object.entries(grouped).map(async ([, typeDeps]) => {
101
- const { groupedBundleDeps, ungroupedDeps } = partitionGroupedContentScriptDependencies(typeDeps);
102
- const typePromises = ungroupedDeps.map(
103
- (dep) => processUngroupedDependency({
104
- dep,
105
- depKey: getAssetDependencyKey(dep),
106
- getCachedAsset: (assetDep, depKey) => this.getCachedAsset(assetDep, depKey),
107
- getProcessor: (assetDep) => this.registry.getProcessor(assetDep.kind, assetDep.source),
108
- resolveProcessedAssetSrcUrl: (processed) => this.resolveProcessedAssetSrcUrl(processed),
109
- setCachedAsset: (assetDep, depKey, processed) => this.setCachedAsset(assetDep, depKey, processed),
110
- logMissingProcessor: (assetDep) => {
111
- appLogger.error(`No processor found for ${assetDep.kind}/${assetDep.source}`);
112
- },
113
- logMissingFile: (assetDep) => {
114
- appLogger.warn(`Skipping missing ${assetDep.kind} file: ${assetDep.filepath}`);
115
- },
116
- logProcessingError: (assetDep, error) => {
117
- appLogger.error(
118
- `Failed to process dependency: ${error instanceof Error ? error.message : String(error)} for ${assetDep.kind}/${assetDep.source}`
119
- );
120
- appLogger.debug(error);
121
- }
122
- })
123
- );
124
- const groupedResults = await processGroupedDependencyBundles({
125
- bundles: Array.from(groupedBundleDeps.values()),
126
- getCachedAsset: (dep, depKey) => this.getCachedAsset(dep, depKey),
127
- getDependencyKey: getAssetDependencyKey,
128
- getGroupedProcessor: () => this.registry.getProcessor("script", "content"),
129
- resolveProcessedAssetSrcUrl: (processed) => this.resolveProcessedAssetSrcUrl(processed),
130
- setCachedAsset: (dep, depKey, processed) => this.setCachedAsset(dep, depKey, processed),
131
- logError: (error) => {
132
- appLogger.error(
133
- `Failed to process grouped dependency bundle: ${error instanceof Error ? error.message : String(error)}`
134
- );
135
- appLogger.debug(error);
34
+ /**
35
+ * Set the HMR manager for the asset processing service.
36
+ * @param hmrManager The HMR manager to set.
37
+ */
38
+ setHmrManager(hmrManager) {
39
+ this.hmrManager = hmrManager;
40
+ for (const processor of this.registry.getAllProcessors().values()) {
41
+ if (isHmrAware(processor)) {
42
+ processor.setHmrManager(hmrManager);
43
+ }
136
44
  }
137
- });
138
- const typeResults = await Promise.all(typePromises);
139
- const processedTypeResults = typeResults.flatMap((result) => {
140
- if (!result) {
141
- return [];
45
+ }
46
+ getHmrManager() {
47
+ return this.hmrManager;
48
+ }
49
+ /**
50
+ * Register a processor for a specific asset kind and source.
51
+ * @param kind The asset kind.
52
+ * @param variant The asset source.
53
+ * @param processor The processor to register.
54
+ */
55
+ registerProcessor(kind, variant, processor) {
56
+ if (this.hmrManager && isHmrAware(processor)) {
57
+ processor.setHmrManager(this.hmrManager);
142
58
  }
143
- return Array.isArray(result) ? result : [result];
144
- });
145
- return [...processedTypeResults, ...groupedResults];
146
- });
147
- const allTypeResults = await Promise.all(groupPromises);
148
- return allTypeResults.flat();
149
- }
150
- /**
151
- * Groups dependencies by processor bucket.
152
- */
153
- groupDependenciesByType(deps) {
154
- return deps.reduce(
155
- (acc, dep) => {
156
- const key = `${dep.kind}_${dep.source}`;
157
- if (!acc[key]) acc[key] = [];
158
- acc[key].push(dep);
159
- return acc;
160
- },
161
- {}
162
- );
163
- }
164
- /**
165
- * Converts a dist-local file path into its public URL.
166
- */
167
- getSrcUrl(filepath) {
168
- const distDir = this.config.absolutePaths.distDir;
169
- if (!filepath.startsWith(distDir)) return void 0;
170
- const relativePath = filepath.slice(distDir.length);
171
- const urlPath = relativePath.startsWith("/") ? relativePath : `/${relativePath}`;
172
- return urlPath.replace(/\\/g, "/");
173
- }
174
- /**
175
- * Normalizes the public source URL for one processed asset.
176
- */
177
- resolveProcessedAssetSrcUrl(processed) {
178
- if (processed.srcUrl) {
179
- if (this.isFilesystemPath(processed.srcUrl)) {
180
- const srcUrlFromPath = this.getSrcUrl(processed.srcUrl);
181
- if (srcUrlFromPath) return srcUrlFromPath;
182
- } else {
183
- return processed.srcUrl;
184
- }
59
+ this.registry.register(kind, variant, processor);
185
60
  }
186
- if (processed.filepath) {
187
- return this.getSrcUrl(processed.filepath);
61
+ /**
62
+ * Processes one dependency list into normalized emitted assets.
63
+ *
64
+ * @remarks
65
+ * Dependencies are deduplicated before processor execution so repeated
66
+ * declarations across the render tree reuse the same emitted outputs and cache
67
+ * entries. Returned asset order is unspecified — consumers must re-associate
68
+ * outputs with inputs via dependency metadata such as `groupedBundle`, not by
69
+ * array index alignment with the input list.
70
+ */
71
+ async processDependencies(deps, key) {
72
+ const depsDir = path.join(this.config.absolutePaths.distDir, RESOLVED_ASSETS_DIR);
73
+ fileSystem.ensureDir(depsDir);
74
+ const dedupedDeps = deduplicateAssetDependencies(deps);
75
+ const preparedDeps = this.prepareDependenciesForProcessing(dedupedDeps, key);
76
+ ensureGroupedContentScriptsBundle(preparedDeps);
77
+ const results = await this.processDependenciesParallel(preparedDeps);
78
+ await this.optimizeDependencies(results);
79
+ return results;
188
80
  }
189
- return void 0;
190
- }
191
- /**
192
- * Returns whether a value should be interpreted as a filesystem path instead
193
- * of an already-public URL.
194
- */
195
- isFilesystemPath(value) {
196
- if (value.startsWith("http://") || value.startsWith("https://") || value.startsWith("//")) {
197
- return false;
81
+ prepareDependenciesForProcessing(deps, processingKey) {
82
+ const plugin = resolveIntegrationPluginForProcessingKey(this.config, processingKey);
83
+ return plugin?.prepareAssetDependencies?.(deps) ?? deps;
198
84
  }
199
- if (value.startsWith(this.config.absolutePaths.distDir)) {
200
- return true;
85
+ /**
86
+ * Processes deduplicated dependencies grouped by processor type.
87
+ *
88
+ * @remarks
89
+ * Grouping keeps cache and processor behavior isolated by asset kind/source
90
+ * pair, while still allowing the overall dependency set to resolve in
91
+ * parallel.
92
+ */
93
+ async processDependenciesParallel(deps) {
94
+ const grouped = this.groupDependenciesByType(deps);
95
+ const groupPromises = Object.entries(grouped).map(async ([, typeDeps]) => {
96
+ const { groupedBundleDeps, ungroupedDeps } = partitionGroupedContentScriptDependencies(typeDeps);
97
+ const typePromises = ungroupedDeps.map((dep) => processUngroupedDependency({
98
+ dep,
99
+ depKey: getAssetDependencyKey(dep),
100
+ getCachedAsset: (assetDep, depKey) => this.getCachedAsset(assetDep, depKey),
101
+ getProcessor: (assetDep) => this.registry.getProcessor(assetDep.kind, assetDep.source),
102
+ resolveProcessedAssetSrcUrl: (processed) => this.resolveProcessedAssetSrcUrl(processed),
103
+ setCachedAsset: (assetDep, depKey, processed) => this.setCachedAsset(assetDep, depKey, processed),
104
+ logMissingProcessor: (assetDep) => {
105
+ appLogger.error(`No processor found for ${assetDep.kind}/${assetDep.source}`);
106
+ },
107
+ logMissingFile: (assetDep) => {
108
+ appLogger.warn(`Skipping missing ${assetDep.kind} file: ${assetDep.filepath}`);
109
+ },
110
+ logProcessingError: (assetDep, error) => {
111
+ appLogger.error(`Failed to process dependency: ${error instanceof Error ? error.message : String(error)} for ${assetDep.kind}/${assetDep.source}`);
112
+ appLogger.debug(error);
113
+ },
114
+ }));
115
+ const groupedResults = await processGroupedDependencyBundles({
116
+ bundles: Array.from(groupedBundleDeps.values()),
117
+ getCachedAsset: (dep, depKey) => this.getCachedAsset(dep, depKey),
118
+ getDependencyKey: getAssetDependencyKey,
119
+ getGroupedProcessor: () => this.registry.getProcessor('script', 'content'),
120
+ resolveProcessedAssetSrcUrl: (processed) => this.resolveProcessedAssetSrcUrl(processed),
121
+ setCachedAsset: (dep, depKey, processed) => this.setCachedAsset(dep, depKey, processed),
122
+ logError: (error) => {
123
+ appLogger.error(`Failed to process grouped dependency bundle: ${error instanceof Error ? error.message : String(error)}`);
124
+ appLogger.debug(error);
125
+ },
126
+ });
127
+ const typeResults = await Promise.all(typePromises);
128
+ const processedTypeResults = typeResults.flatMap((result) => {
129
+ if (!result) {
130
+ return [];
131
+ }
132
+ return Array.isArray(result) ? result : [result];
133
+ });
134
+ return [...processedTypeResults, ...groupedResults];
135
+ });
136
+ const allTypeResults = await Promise.all(groupPromises);
137
+ return allTypeResults.flat();
201
138
  }
202
- const rootDir = this.config.rootDir;
203
- if (rootDir && value.startsWith(rootDir)) {
204
- return true;
139
+ /**
140
+ * Groups dependencies by processor bucket.
141
+ */
142
+ groupDependenciesByType(deps) {
143
+ return deps.reduce((acc, dep) => {
144
+ const key = `${dep.kind}_${dep.source}`;
145
+ if (!acc[key])
146
+ acc[key] = [];
147
+ acc[key].push(dep);
148
+ return acc;
149
+ }, {});
205
150
  }
206
- return /^[A-Za-z]:\\/.test(value);
207
- }
208
- /**
209
- * Applies post-processing for emitted production assets.
210
- *
211
- * @remarks
212
- * Current optimization is intentionally conservative: only generated CSS and
213
- * JavaScript files inside the app dist directory are gzipped.
214
- */
215
- async optimizeDependencies(processedAssets) {
216
- if (process.env.NODE_ENV !== "production") {
217
- return;
151
+ /**
152
+ * Converts a dist-local file path into its public URL.
153
+ */
154
+ getSrcUrl(filepath) {
155
+ const distDir = this.config.absolutePaths.distDir;
156
+ if (!filepath.startsWith(distDir))
157
+ return undefined;
158
+ const relativePath = filepath.slice(distDir.length);
159
+ const urlPath = relativePath.startsWith('/') ? relativePath : `/${relativePath}`;
160
+ return urlPath.replace(/\\/g, '/');
218
161
  }
219
- const filesToGzip = /* @__PURE__ */ new Set();
220
- for (const asset of processedAssets) {
221
- if (!asset.filepath) {
222
- continue;
223
- }
224
- if (!asset.filepath.startsWith(this.config.absolutePaths.distDir)) {
225
- continue;
226
- }
227
- const extension = path.extname(asset.filepath).slice(1);
228
- if (extension === "css" || extension === "js") {
229
- filesToGzip.add(asset.filepath);
230
- }
162
+ /**
163
+ * Normalizes the public source URL for one processed asset.
164
+ */
165
+ resolveProcessedAssetSrcUrl(processed) {
166
+ if (processed.srcUrl) {
167
+ if (this.isFilesystemPath(processed.srcUrl)) {
168
+ const srcUrlFromPath = this.getSrcUrl(processed.srcUrl);
169
+ if (srcUrlFromPath)
170
+ return srcUrlFromPath;
171
+ }
172
+ else {
173
+ return processed.srcUrl;
174
+ }
175
+ }
176
+ if (processed.filepath) {
177
+ return this.getSrcUrl(processed.filepath);
178
+ }
179
+ return undefined;
231
180
  }
232
- for (const filePath of filesToGzip) {
233
- if (fileSystem.exists(filePath)) {
234
- fileSystem.gzipFile(filePath);
235
- }
181
+ /**
182
+ * Returns whether a value should be interpreted as a filesystem path instead
183
+ * of an already-public URL.
184
+ */
185
+ isFilesystemPath(value) {
186
+ if (value.startsWith('http://') || value.startsWith('https://') || value.startsWith('//')) {
187
+ return false;
188
+ }
189
+ if (value.startsWith(this.config.absolutePaths.distDir)) {
190
+ return true;
191
+ }
192
+ const rootDir = this.config.rootDir;
193
+ if (rootDir && value.startsWith(rootDir)) {
194
+ return true;
195
+ }
196
+ return /^[A-Za-z]:\\/.test(value);
236
197
  }
237
- }
238
- /**
239
- * Returns the cached processed asset for a dependency key when available.
240
- */
241
- getCachedAsset(dep, depKey) {
242
- if (process.env.NODE_ENV !== "production" && dep.source === "file" && dep.kind === "stylesheet") {
243
- return null;
198
+ /**
199
+ * Applies post-processing for emitted production assets.
200
+ *
201
+ * @remarks
202
+ * Current optimization is intentionally conservative: only generated CSS and
203
+ * JavaScript files inside the app dist directory are gzipped.
204
+ */
205
+ async optimizeDependencies(processedAssets) {
206
+ if (process.env.NODE_ENV !== 'production') {
207
+ return;
208
+ }
209
+ const filesToGzip = new Set();
210
+ for (const asset of processedAssets) {
211
+ if (!asset.filepath) {
212
+ continue;
213
+ }
214
+ if (!asset.filepath.startsWith(this.config.absolutePaths.distDir)) {
215
+ continue;
216
+ }
217
+ const extension = path.extname(asset.filepath).slice(1);
218
+ if (extension === 'css' || extension === 'js') {
219
+ filesToGzip.add(asset.filepath);
220
+ }
221
+ }
222
+ for (const filePath of filesToGzip) {
223
+ if (fileSystem.exists(filePath)) {
224
+ fileSystem.gzipFile(filePath);
225
+ }
226
+ }
244
227
  }
245
- if (dep.kind === "script" && dep.source === "content") {
246
- return this.getCachedContentScriptAsset(dep, depKey);
228
+ /**
229
+ * Returns the cached processed asset for a dependency key when available.
230
+ */
231
+ getCachedAsset(dep, depKey) {
232
+ if (process.env.NODE_ENV !== 'production' && dep.source === 'file' && dep.kind === 'stylesheet') {
233
+ return null;
234
+ }
235
+ if (dep.kind === 'script' && dep.source === 'content') {
236
+ return this.getCachedContentScriptAsset(dep, depKey);
237
+ }
238
+ const cached = this.cache.get(depKey);
239
+ if (!cached) {
240
+ return null;
241
+ }
242
+ if (cached.asset.filepath && !fileSystem.exists(cached.asset.filepath)) {
243
+ this.cache.delete(depKey);
244
+ return null;
245
+ }
246
+ return cached.asset;
247
247
  }
248
- const cached = this.cache.get(depKey);
249
- if (!cached) {
250
- return null;
248
+ getCachedContentScriptAsset(dep, depKey) {
249
+ const filepath = this.resolveCachedContentScriptFilepath(depKey);
250
+ if (!filepath) {
251
+ return null;
252
+ }
253
+ const materialized = materializeContentScriptAsset(dep, filepath);
254
+ this.cache.set(depKey, { asset: materialized });
255
+ return materialized;
251
256
  }
252
- if (cached.asset.filepath && !fileSystem.exists(cached.asset.filepath)) {
253
- this.cache.delete(depKey);
254
- return null;
257
+ resolveCachedContentScriptFilepath(depKey) {
258
+ const cached = this.cache.get(depKey);
259
+ if (!cached?.asset.filepath) {
260
+ return undefined;
261
+ }
262
+ if (!fileSystem.exists(cached.asset.filepath)) {
263
+ this.cache.delete(depKey);
264
+ return undefined;
265
+ }
266
+ return cached.asset.filepath;
255
267
  }
256
- return cached.asset;
257
- }
258
- getCachedContentScriptAsset(dep, depKey) {
259
- const filepath = this.resolveCachedContentScriptFilepath(depKey) ?? getDevBrowserScriptCacheEntry(this.config, depKey)?.filepath;
260
- if (!filepath) {
261
- return null;
268
+ /**
269
+ * Stores one processed asset in the dependency cache.
270
+ */
271
+ setCachedAsset(dep, depKey, asset) {
272
+ this.cache.set(depKey, { asset });
262
273
  }
263
- const materialized = materializeContentScriptAsset(dep, filepath);
264
- this.cache.set(depKey, { asset: materialized });
265
- return materialized;
266
- }
267
- resolveCachedContentScriptFilepath(depKey) {
268
- const cached = this.cache.get(depKey);
269
- if (!cached?.asset.filepath) {
270
- return void 0;
274
+ /**
275
+ * Clears all cached processed assets.
276
+ */
277
+ clearCache() {
278
+ this.cache.clear();
271
279
  }
272
- if (!fileSystem.exists(cached.asset.filepath)) {
273
- this.cache.delete(depKey);
274
- return void 0;
280
+ /**
281
+ * Removes cached assets that were produced from the given file path.
282
+ */
283
+ invalidateCacheForFile(filepath) {
284
+ for (const [key, value] of this.cache.entries()) {
285
+ if (value.asset.filepath === filepath) {
286
+ this.cache.delete(key);
287
+ }
288
+ }
275
289
  }
276
- return cached.asset.filepath;
277
- }
278
- /**
279
- * Stores one processed asset in the dependency cache.
280
- */
281
- setCachedAsset(dep, depKey, asset) {
282
- this.cache.set(depKey, { asset });
283
- if (dep.kind === "script" && dep.source === "content") {
284
- setDevBrowserScriptCacheEntry(this.config, depKey, asset);
290
+ /**
291
+ * Creates a service prewired with the default core processors.
292
+ */
293
+ static createWithDefaultProcessors(appConfig) {
294
+ const service = new AssetProcessingService(appConfig);
295
+ service.registerProcessor('script', 'content', new ContentScriptProcessor({ appConfig }));
296
+ service.registerProcessor('script', 'file', new FileScriptProcessor({ appConfig }));
297
+ service.registerProcessor('script', 'node-module', new NodeModuleScriptProcessor({ appConfig }));
298
+ service.registerProcessor('stylesheet', 'content', new ContentStylesheetProcessor({ appConfig }));
299
+ service.registerProcessor('stylesheet', 'file', new FileStylesheetProcessor({ appConfig }));
300
+ return service;
285
301
  }
286
- }
287
- /**
288
- * Clears all cached processed assets.
289
- */
290
- clearCache() {
291
- this.cache.clear();
292
- }
293
- /**
294
- * Removes cached assets that were produced from the given file path.
295
- */
296
- invalidateCacheForFile(filepath) {
297
- for (const [key, value] of this.cache.entries()) {
298
- if (value.asset.filepath === filepath) {
299
- this.cache.delete(key);
300
- }
302
+ /**
303
+ * Returns the processor registry owned by this service.
304
+ */
305
+ getRegistry() {
306
+ return this.registry;
301
307
  }
302
- }
303
- /**
304
- * Creates a service prewired with the default core processors.
305
- */
306
- static createWithDefaultProcessors(appConfig) {
307
- const service = new AssetProcessingService(appConfig);
308
- service.registerProcessor("script", "content", new ContentScriptProcessor({ appConfig }));
309
- service.registerProcessor("script", "file", new FileScriptProcessor({ appConfig }));
310
- service.registerProcessor("script", "node-module", new NodeModuleScriptProcessor({ appConfig }));
311
- service.registerProcessor("stylesheet", "content", new ContentStylesheetProcessor({ appConfig }));
312
- service.registerProcessor("stylesheet", "file", new FileStylesheetProcessor({ appConfig }));
313
- return service;
314
- }
315
- /**
316
- * Returns the processor registry owned by this service.
317
- */
318
- getRegistry() {
319
- return this.registry;
320
- }
321
308
  }
322
- export {
323
- AssetProcessingService
324
- };