@ecopages/core 0.2.0-beta.8 → 0.2.0-rc.0
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.
- package/README.md +42 -13
- package/package.json +361 -58
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +57 -5
- package/src/adapters/abstract/application-adapter.js +261 -203
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +147 -0
- package/src/adapters/abstract/server-adapter.d.ts +13 -2
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +2 -50
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -57
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +93 -0
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.d.ts +4 -6
- package/src/adapters/bun/create-app.js +169 -154
- package/src/adapters/bun/hmr-manager.d.ts +2 -3
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -8
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +34 -53
- package/src/adapters/bun/server-adapter.js +557 -637
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- package/src/adapters/bun/static-preview-host.js +43 -41
- package/src/adapters/create-app.d.ts +1 -12
- package/src/adapters/create-app.js +11 -72
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +2 -8
- package/src/adapters/node/create-app.d.ts +4 -3
- package/src/adapters/node/create-app.js +123 -98
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.js +62 -64
- package/src/adapters/node/node-hmr-manager.d.ts +2 -3
- package/src/adapters/node/node-hmr-manager.js +58 -48
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -17
- package/src/adapters/node/server-adapter.d.ts +28 -8
- package/src/adapters/node/server-adapter.js +349 -302
- package/src/adapters/node/static-content-server.js +172 -186
- package/src/adapters/node/static-preview-host.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +88 -64
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/hmr/hmr-html-response.js +50 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +92 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +446 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +132 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/http/api-response.js +79 -0
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +26 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +49 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/http/explicit-static-render-preparation.js +29 -0
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/http/explicit-static-route-matcher.js +59 -0
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +84 -0
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/http/fs-server-response-factory.js +106 -0
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/http/fs-server-response-matcher.js +260 -0
- package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
- package/src/adapters/shared/http/run-middleware-chain.js +17 -0
- package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
- package/src/adapters/shared/runtime/application-adapter.js +75 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.d.ts +11 -0
- package/src/adapters/shared/runtime/collect-dev-prewarm-plan.js +29 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +27 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.d.ts +16 -0
- package/src/adapters/shared/runtime/dev-static-route-prewarm.js +66 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +226 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/runtime/render-context.js +99 -0
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -2
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +38 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +45 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +71 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +31 -50
- package/src/adapters/shared/runtime/server-adapter.js +301 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/runtime/server-route-handler.js +77 -0
- package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +26 -31
- package/src/adapters/shared/runtime/server-static-builder.js +172 -0
- package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
- package/src/adapters/shared/{node-http-websocket-upgrades.d.ts → ws/node-http-websocket-upgrades.d.ts} +1 -1
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +109 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +62 -0
- package/src/build/README.md +165 -45
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +145 -0
- package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +4 -0
- package/src/build/browser/browser-runtime-manifest.js +65 -0
- package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +3 -5
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +12 -13
- package/src/build/browser/browser-runtime-plugin.js +218 -0
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +55 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +4 -0
- package/src/build/build-adapter.d.ts +29 -340
- package/src/build/build-adapter.js +258 -260
- package/src/build/{build-input-fingerprint.d.ts → cache/build-input-fingerprint.d.ts} +3 -3
- package/src/build/cache/build-input-fingerprint.js +33 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +4 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +71 -0
- package/src/build/{pages-unified-graph-build.d.ts → cache/pages-unified-graph-build.d.ts} +1 -1
- package/src/build/cache/pages-unified-graph-build.js +199 -0
- package/src/build/cache/production-build-cache.d.ts +21 -0
- package/src/build/cache/production-build-cache.js +56 -0
- package/src/build/{server-entry-build-cache.d.ts → cache/server-entry-build-cache.d.ts} +3 -4
- package/src/build/cache/server-entry-build-cache.js +153 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/contracts/build-manifest.js +64 -0
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/contracts/content-virtual-modules.d.ts +12 -0
- package/src/build/contracts/content-virtual-modules.js +29 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +32 -9
- package/src/build/rolldown/rolldown-adapter-helpers.js +463 -0
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/rolldown/rolldown-build-adapter.js +57 -0
- package/src/build/{rolldown-build-invocation-metrics.d.ts → rolldown/rolldown-build-invocation-metrics.d.ts} +1 -1
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +39 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
- package/src/build/rolldown/rolldown-plugin-bridge.js +284 -0
- package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown/rolldown-source-transform-pass.js +70 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +253 -0
- package/src/build/rolldown/server-side-css-shim-plugin.js +58 -0
- package/src/build/runtime/build-profile-options.d.ts +7 -0
- package/src/build/runtime/build-profile-options.js +37 -0
- package/src/build/runtime/build-request-identity.d.ts +17 -0
- package/src/build/runtime/build-request-identity.js +79 -0
- package/src/build/runtime/build-request-policy.d.ts +58 -0
- package/src/build/runtime/build-request-policy.js +84 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +75 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +40 -0
- package/src/build/{parallel-build-executor.d.ts → runtime/parallel-build-executor.d.ts} +1 -1
- package/src/build/runtime/parallel-build-executor.js +60 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- package/src/build/runtime/serialized-build-executor.js +79 -0
- package/src/cache/index.d.ts +2 -1
- package/src/cache/index.js +7 -6
- package/src/cache/module-parse-cache.d.ts +5 -0
- package/src/cache/module-parse-cache.js +122 -67
- package/src/cache/module-transform-profiler.d.ts +8 -0
- package/src/cache/module-transform-profiler.js +8 -0
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +49 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +3 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.d.ts +1 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +61 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +16 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +90 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +33 -0
- package/src/client/scroll.test.browser.d.ts +1 -0
- package/src/client/scroll.test.browser.js +31 -0
- package/src/client/view-transitions.d.ts +32 -0
- package/src/client/view-transitions.js +120 -0
- package/src/client/view-transitions.test.browser.d.ts +1 -0
- package/src/client/view-transitions.test.browser.js +56 -0
- package/src/config/README.md +1 -1
- package/src/config/config-builder.d.ts +42 -12
- package/src/config/config-builder.js +645 -600
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +44 -23
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +10 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +8 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +10 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +25 -23
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +3 -0
- package/src/dev/sc-server.js +106 -103
- package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
- package/src/dev/transform-server/dev-transform-bundler.js +79 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.js +127 -0
- package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
- package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
- package/src/dev/transform-server/dev-transform-server.js +191 -0
- package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-url.js +58 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +28 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +166 -0
- package/src/dev/transform-server/index.d.ts +6 -0
- package/src/dev/transform-server/index.js +4 -0
- package/src/dev/transform-server/types.d.ts +15 -0
- package/src/dev/transform-server/types.js +1 -0
- package/src/dev-toolbar/README.md +52 -0
- package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
- package/src/dev-toolbar/define-dev-tool.js +9 -0
- package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
- package/src/dev-toolbar/dev-toolbar-config.js +19 -0
- package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
- package/src/dev-toolbar/dev-toolbar-host.js +117 -0
- package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
- package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.d.ts +22 -0
- package/src/dev-toolbar/dev-toolbar-manifest-contract.js +2 -0
- package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +34 -0
- package/src/dev-toolbar/dev-toolbar-package.js +78 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
- package/src/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +39 -0
- package/src/diagnostics/request-pipeline-metrics.d.ts +38 -0
- package/src/diagnostics/request-pipeline-metrics.js +121 -0
- package/src/diagnostics/startup-trace.d.ts +81 -0
- package/src/diagnostics/startup-trace.js +281 -0
- package/src/eco/README.md +17 -0
- package/src/eco/component-identity.d.ts +13 -0
- package/src/eco/component-identity.js +18 -0
- package/src/eco/eco-declared-component.d.ts +15 -0
- package/src/eco/eco-declared-component.js +23 -0
- package/src/eco/eco.browser.js +63 -70
- package/src/eco/eco.js +163 -97
- package/src/eco/eco.types.d.ts +47 -8
- package/src/eco/eco.types.js +5 -0
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -10
- package/src/eco/global-injector-map.js +55 -41
- package/src/eco/lazy-injector-map.js +90 -60
- package/src/eco/module-dependencies.js +52 -44
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +69 -0
- package/src/env.d.ts +2 -0
- package/src/errors/http-error.d.ts +8 -0
- package/src/errors/http-error.js +66 -49
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -6
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +21 -0
- package/src/hmr/client/hmr-runtime.js +119 -110
- package/src/hmr/client/module-update.d.ts +13 -0
- package/src/hmr/client/module-update.js +39 -0
- package/src/hmr/hmr-asset-paths.d.ts +14 -0
- package/src/hmr/hmr-asset-paths.js +22 -0
- package/src/hmr/hmr-entrypoint-output.d.ts +21 -0
- package/src/hmr/hmr-entrypoint-output.js +34 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +14 -0
- package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
- package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
- package/src/hmr/hmr-runtime-paths.d.ts +10 -0
- package/src/hmr/hmr-runtime-paths.js +13 -0
- package/src/hmr/hmr-strategy.d.ts +9 -0
- package/src/hmr/hmr-strategy.js +113 -42
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -97
- package/src/hmr/strategies/js-hmr-strategy.js +107 -167
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +35 -0
- package/src/index.browser.d.ts +1 -0
- package/src/index.browser.js +2 -4
- package/src/index.d.ts +4 -1
- package/src/index.js +7 -21
- package/src/islands/README.md +25 -0
- package/src/islands/island-host.d.ts +37 -0
- package/src/islands/island-host.js +55 -0
- package/src/plugins/README.md +2 -1
- package/src/plugins/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +35 -62
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +20 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +6 -102
- package/src/plugins/eco-component-meta-plugin.js +123 -162
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +49 -37
- package/src/plugins/integration-plugin.d.ts +24 -6
- package/src/plugins/integration-plugin.js +212 -195
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +21 -0
- package/src/plugins/package-specifier.d.ts +12 -0
- package/src/plugins/package-specifier.js +33 -0
- package/src/plugins/processor.d.ts +66 -12
- package/src/plugins/processor.js +168 -137
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.d.ts +32 -1
- package/src/plugins/source-transform.js +112 -60
- package/src/plugins/tsconfig-import-resolver.d.ts +37 -0
- package/src/plugins/tsconfig-import-resolver.js +262 -0
- package/src/route-renderer/GRAPH.md +24 -30
- package/src/route-renderer/README.md +52 -32
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +155 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +37 -0
- package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +196 -0
- package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +20 -7
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +195 -0
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +354 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +36 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +37 -153
- package/src/route-renderer/orchestration/integration-renderer.js +803 -1008
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +173 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +132 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +89 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +6 -2
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +77 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.d.ts +15 -0
- package/src/route-renderer/orchestration/page-browser-graph/grouped-graph-build-plan.js +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.d.ts +5 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.merge.js +30 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +126 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +542 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +47 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +248 -0
- package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +23 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.d.ts +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/route-instance-key.js +54 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +38 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +26 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +25 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +43 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +25 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +26 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +44 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +30 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +24 -54
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +215 -0
- package/src/{integrations/ghtml/ghtml-renderer.d.ts → route-renderer/orchestration/string-markup-renderer.d.ts} +8 -10
- package/src/route-renderer/orchestration/string-markup-renderer.js +52 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +121 -121
- package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
- package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +1 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +64 -51
- package/src/route-renderer/page-loading/file-scoped-dependency-components.d.ts +42 -0
- package/src/route-renderer/page-loading/file-scoped-dependency-components.js +94 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +47 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +39 -28
- package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
- package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
- package/src/route-renderer/page-loading/page-module-loader.d.ts +2 -1
- package/src/route-renderer/page-loading/page-module-loader.js +136 -124
- package/src/route-renderer/page-loading/resolved-page-dependencies.d.ts +12 -0
- package/src/route-renderer/page-loading/resolved-page-dependencies.js +38 -0
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/README.md +31 -0
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +56 -30
- package/src/router/client/link-intent.test.browser.js +50 -39
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +122 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +82 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +235 -211
- package/src/router/client/navigation-lifecycle.d.ts +55 -0
- package/src/router/client/navigation-lifecycle.js +50 -0
- package/src/router/client/navigation-lifecycle.test.browser.d.ts +1 -0
- package/src/router/client/navigation-lifecycle.test.browser.js +118 -0
- package/src/router/server/route-registry.js +237 -242
- package/src/services/README.md +5 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -50
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +12 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +335 -268
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +115 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -58
- package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +5 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +85 -60
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +8 -6
- package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +23 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +22 -0
- package/src/services/assets/asset-processing-service/page-package.js +70 -72
- package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
- package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -130
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +111 -111
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -94
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +26 -57
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +33 -67
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +44 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +15 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -44
- package/src/services/assets/browser-bundle.service.d.ts +27 -30
- package/src/services/assets/browser-bundle.service.js +54 -46
- package/src/services/assets/browser-runtime-asset-generation.d.ts +17 -0
- package/src/services/assets/browser-runtime-asset-generation.js +28 -0
- package/src/services/cache/cache.types.d.ts +4 -2
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/html-page-cache-dependency-index.d.ts +34 -0
- package/src/services/cache/html-page-cache-dependency-index.js +88 -0
- package/src/services/cache/index.d.ts +2 -0
- package/src/services/cache/index.js +8 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.d.ts +31 -1
- package/src/services/cache/page-cache-service.js +237 -150
- package/src/services/cache/page-request-cache-coordinator.service.d.ts +2 -1
- package/src/services/cache/page-request-cache-coordinator.service.js +112 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.d.ts +15 -1
- package/src/services/invalidation/development-invalidation.service.js +241 -204
- package/src/services/module-loading/README.md +9 -6
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +104 -106
- package/src/services/module-loading/collection-server-module-build.service.d.ts +19 -0
- package/src/services/module-loading/collection-server-module-build.service.js +83 -0
- package/src/services/module-loading/host-module-loader-registry.js +6 -11
- package/src/services/module-loading/module-loading-types.js +1 -0
- package/src/services/module-loading/page-module-import.service.d.ts +7 -12
- package/src/services/module-loading/page-module-import.service.js +232 -206
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +2 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +59 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.d.ts +10 -0
- package/src/services/module-loading/route-module-build-cache.store.js +213 -196
- package/src/services/module-loading/route-module-build-manifest.d.ts +10 -14
- package/src/services/module-loading/route-module-build-manifest.js +54 -118
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +2 -2
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -109
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -3
- package/src/services/module-loading/server-module-transpiler.service.js +65 -62
- package/src/services/module-loading/source-module-support.js +15 -7
- package/src/services/runtime-state/dev-graph.service.js +165 -157
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
- package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +156 -95
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.d.ts +7 -0
- package/src/services/validation/validate-standard-schema.js +14 -0
- package/src/static-site-generator/README.md +10 -2
- package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +32 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +57 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +36 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +42 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +2 -2
- package/src/static-site-generator/static-build-invalidation.js +33 -74
- package/src/static-site-generator/static-export-context.d.ts +9 -1
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.d.ts +27 -6
- package/src/static-site-generator/static-site-generator.js +528 -389
- package/src/types/internal-types.d.ts +55 -17
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +236 -95
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +30 -0
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +22 -5
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.d.ts +1 -0
- package/src/utils/parse-cli-args.js +73 -62
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +42 -0
- package/src/utils/path-utils.module.js +8 -11
- package/src/utils/resolve-entry-file.js +70 -38
- package/src/utils/resolve-work-dir.js +23 -27
- package/src/utils/runtime.js +24 -33
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +60 -53
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +54 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +17 -0
- package/src/watchers/project-watcher.d.ts +21 -6
- package/src/watchers/project-watcher.js +402 -277
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/api-response.js +0 -96
- package/src/adapters/shared/application-adapter.js +0 -90
- package/src/adapters/shared/bun-user-websocket-lifecycle.js +0 -102
- package/src/adapters/shared/copy-runtime-public-dir.js +0 -24
- package/src/adapters/shared/define-api-handler.d.ts +0 -25
- package/src/adapters/shared/define-api-handler.js +0 -15
- package/src/adapters/shared/explicit-static-render-preparation.js +0 -26
- package/src/adapters/shared/explicit-static-route-matcher.js +0 -101
- package/src/adapters/shared/file-route-middleware-pipeline.js +0 -90
- package/src/adapters/shared/fs-server-response-factory.js +0 -81
- package/src/adapters/shared/fs-server-response-matcher.js +0 -186
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +0 -55
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/hmr-html-response.js +0 -33
- package/src/adapters/shared/node-http-websocket-upgrades.js +0 -125
- package/src/adapters/shared/render-context.js +0 -93
- package/src/adapters/shared/runtime-app-bootstrap.js +0 -41
- package/src/adapters/shared/runtime-host.js +0 -0
- package/src/adapters/shared/server-adapter.js +0 -436
- package/src/adapters/shared/server-route-handler.js +0 -111
- package/src/adapters/shared/server-static-builder.js +0 -202
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -61
- package/src/adapters/shared/shared-hmr-manager.js +0 -273
- package/src/adapters/shared/static-preview-host.js +0 -0
- package/src/adapters/shared/websocket-lifecycle.d.ts +0 -3
- package/src/adapters/shared/websocket-lifecycle.js +0 -19
- package/src/build/browser-runtime-manifest.js +0 -61
- package/src/build/browser-runtime-plugin-helpers.js +0 -14
- package/src/build/browser-runtime-plugin.js +0 -173
- package/src/build/build-input-fingerprint.js +0 -31
- package/src/build/build-manifest.d.ts +0 -33
- package/src/build/build-manifest.js +0 -49
- package/src/build/build-types.js +0 -0
- package/src/build/jsx-ownership-plugins.d.ts +0 -10
- package/src/build/jsx-ownership-plugins.js +0 -17
- package/src/build/pages-unified-graph-build.js +0 -208
- package/src/build/parallel-build-executor.js +0 -52
- package/src/build/rolldown-adapter-helpers.js +0 -309
- package/src/build/rolldown-build-adapter.js +0 -67
- package/src/build/rolldown-build-invocation-metrics.js +0 -43
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -182
- package/src/build/rolldown-plugin-bridge.js +0 -199
- package/src/build/runtime-build-executor.d.ts +0 -15
- package/src/build/runtime-build-executor.js +0 -43
- package/src/build/runtime-build-output-normalizer.js +0 -203
- package/src/build/serialized-build-executor.js +0 -63
- package/src/build/server-entry-build-cache.js +0 -169
- package/src/build/server-side-css-shim-plugin.js +0 -35
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -54
- package/src/integrations/ghtml/ghtml-renderer.js +0 -57
- package/src/integrations/ghtml/ghtml.constants.d.ts +0 -1
- package/src/integrations/ghtml/ghtml.constants.js +0 -4
- package/src/integrations/ghtml/ghtml.plugin.d.ts +0 -16
- package/src/integrations/ghtml/ghtml.plugin.js +0 -20
- package/src/route-renderer/orchestration/component-render-context.js +0 -147
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
- package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +0 -231
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
- package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
- package/src/route-renderer/orchestration/ownership-validation.service.js +0 -53
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +0 -27
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
- package/src/route-renderer/orchestration/render-output.utils.js +0 -175
- package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -578
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- package/src/utils/html.d.ts +0 -1
- package/src/utils/html.js +0 -4
- /package/src/adapters/{shared → bun}/bun-user-websocket-lifecycle.d.ts +0 -0
- /package/src/adapters/shared/{copy-runtime-public-dir.d.ts → runtime/copy-runtime-public-dir.d.ts} +0 -0
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → adapters/shared/runtime/runtime-host.js} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → adapters/shared/runtime/static-preview-host.js} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{runtime-build-output-normalizer.d.ts → rolldown/runtime-build-output-normalizer.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
|
@@ -1,69 +1,35 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import { fileSystem } from
|
|
3
|
-
import { BaseProcessor } from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { fileSystem } from '@ecopages/file-system';
|
|
3
|
+
import { BaseProcessor } from '../base/base-processor.js';
|
|
4
|
+
import { applyStylesheetProcessors } from './stylesheet-processor-pipeline.js';
|
|
5
|
+
export class FileStylesheetProcessor extends BaseProcessor {
|
|
6
|
+
getStyleContent = (srcUrl) => {
|
|
7
|
+
return fileSystem.readFileAsBuffer(srcUrl);
|
|
8
|
+
};
|
|
9
|
+
async process(dep) {
|
|
10
|
+
const buffer = this.getStyleContent(dep.filepath);
|
|
11
|
+
const rawContent = buffer.toString();
|
|
12
|
+
const processedContent = await applyStylesheetProcessors(this.appConfig, rawContent, dep.filepath);
|
|
13
|
+
const hash = this.generateHash(processedContent);
|
|
14
|
+
const cachekey = this.buildCacheKey(dep.filepath, hash, dep);
|
|
15
|
+
return this.getOrProcess(cachekey, () => {
|
|
16
|
+
const filepath = path.join(this.getAssetsDir(), path.relative(this.appConfig.absolutePaths.srcDir, dep.filepath));
|
|
17
|
+
const outputBuffer = Buffer.from(processedContent);
|
|
18
|
+
if (!dep.inline) {
|
|
19
|
+
fileSystem.ensureDir(path.dirname(filepath));
|
|
20
|
+
fileSystem.write(filepath, outputBuffer);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
filepath: filepath,
|
|
24
|
+
sourceFilepath: dep.filepath,
|
|
25
|
+
content: dep.inline ? processedContent : undefined,
|
|
26
|
+
kind: 'stylesheet',
|
|
27
|
+
position: dep.position,
|
|
28
|
+
attributes: dep.attributes,
|
|
29
|
+
inline: dep.inline,
|
|
30
|
+
packageRole: dep.packageRole,
|
|
31
|
+
bundledSourceFilepaths: dep.bundledSourceFilepaths,
|
|
32
|
+
};
|
|
33
|
+
});
|
|
15
34
|
}
|
|
16
|
-
let transformedContent = content;
|
|
17
|
-
for (const processor of this.appConfig.processors.values()) {
|
|
18
|
-
const hasCapabilities = processor.getAssetCapabilities().length > 0;
|
|
19
|
-
const canProcessStylesheet = processor.canProcessAsset("stylesheet", filepath);
|
|
20
|
-
if (!canProcessStylesheet && (hasCapabilities || !processor.getName().includes("postcss"))) {
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
if (!processor.matchesFileFilter(filepath)) {
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
const result = await processor.process(transformedContent, filepath);
|
|
27
|
-
if (typeof result === "string") {
|
|
28
|
-
transformedContent = result;
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
if (result instanceof Buffer) {
|
|
32
|
-
transformedContent = result.toString();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return transformedContent;
|
|
36
|
-
}
|
|
37
|
-
async process(dep) {
|
|
38
|
-
const buffer = this.getStyleContent(dep.filepath);
|
|
39
|
-
const rawContent = buffer.toString();
|
|
40
|
-
const processedContent = await this.applyStylesheetProcessors(rawContent, dep.filepath);
|
|
41
|
-
const hash = this.generateHash(processedContent);
|
|
42
|
-
const cachekey = this.buildCacheKey(dep.filepath, hash, dep);
|
|
43
|
-
return this.getOrProcess(cachekey, () => {
|
|
44
|
-
const filepath = path.join(
|
|
45
|
-
this.getAssetsDir(),
|
|
46
|
-
path.relative(this.appConfig.absolutePaths.srcDir, dep.filepath)
|
|
47
|
-
);
|
|
48
|
-
const outputBuffer = Buffer.from(processedContent);
|
|
49
|
-
if (!dep.inline) {
|
|
50
|
-
fileSystem.ensureDir(path.dirname(filepath));
|
|
51
|
-
fileSystem.write(filepath, outputBuffer);
|
|
52
|
-
}
|
|
53
|
-
return {
|
|
54
|
-
filepath,
|
|
55
|
-
sourceFilepath: dep.filepath,
|
|
56
|
-
content: dep.inline ? processedContent : void 0,
|
|
57
|
-
kind: "stylesheet",
|
|
58
|
-
position: dep.position,
|
|
59
|
-
attributes: dep.attributes,
|
|
60
|
-
inline: dep.inline,
|
|
61
|
-
packageRole: dep.packageRole,
|
|
62
|
-
bundledSourceFilepaths: dep.bundledSourceFilepaths
|
|
63
|
-
};
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
35
|
}
|
|
67
|
-
export {
|
|
68
|
-
FileStylesheetProcessor
|
|
69
|
-
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
const PROCESSABLE_STYLESHEET_EXTENSIONS = new Set(['.css', '.scss', '.sass', '.less']);
|
|
3
|
+
function isProcessableStylesheet(filepath) {
|
|
4
|
+
return PROCESSABLE_STYLESHEET_EXTENSIONS.has(path.extname(filepath));
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Legacy fallback for processors that transform stylesheets without declaring
|
|
8
|
+
* capabilities (notably PostCSS before capability metadata was required).
|
|
9
|
+
*/
|
|
10
|
+
function shouldRunStylesheetProcessor(processor, filepath) {
|
|
11
|
+
const hasCapabilities = processor.getAssetCapabilities().length > 0;
|
|
12
|
+
const canProcessStylesheet = processor.canProcessAsset('stylesheet', filepath);
|
|
13
|
+
if (canProcessStylesheet) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
if (hasCapabilities) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return processor.getName().includes('postcss');
|
|
20
|
+
}
|
|
21
|
+
export async function applyStylesheetProcessors(appConfig, content, filepath) {
|
|
22
|
+
if (!isProcessableStylesheet(filepath)) {
|
|
23
|
+
return content;
|
|
24
|
+
}
|
|
25
|
+
let transformedContent = content;
|
|
26
|
+
const processors = appConfig.processors ? Array.from(appConfig.processors.values()) : [];
|
|
27
|
+
for (const processor of processors) {
|
|
28
|
+
if (!shouldRunStylesheetProcessor(processor, filepath)) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (!processor.matchesFileFilter(filepath)) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const result = await processor.process(transformedContent, filepath);
|
|
35
|
+
if (typeof result === 'string') {
|
|
36
|
+
transformedContent = result;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (result instanceof Buffer) {
|
|
40
|
+
transformedContent = result.toString();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return transformedContent;
|
|
44
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnyIntegrationPlugin } from '../../../plugins/integration-plugin.js';
|
|
2
|
+
import type { EcoPagesAppConfig } from '../../../types/internal-types.js';
|
|
3
|
+
/** Resolves the integration plugin that owns one asset-processing batch key. */
|
|
4
|
+
export declare function resolveIntegrationPluginForProcessingKey(appConfig: EcoPagesAppConfig, processingKey: string): AnyIntegrationPlugin | undefined;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Resolves the integration plugin that owns one asset-processing batch key. */
|
|
2
|
+
export function resolveIntegrationPluginForProcessingKey(appConfig, processingKey) {
|
|
3
|
+
if (!appConfig.integrations?.length) {
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
const exactMatch = appConfig.integrations.find((integration) => integration.name === processingKey);
|
|
7
|
+
if (exactMatch) {
|
|
8
|
+
return exactMatch;
|
|
9
|
+
}
|
|
10
|
+
const baseName = processingKey.split(':')[0];
|
|
11
|
+
if (!baseName || baseName === processingKey) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return appConfig.integrations.find((integration) => integration.name === baseName);
|
|
15
|
+
}
|
|
@@ -2,7 +2,6 @@ import type { AssetProcessor } from './processor.interface.js';
|
|
|
2
2
|
import type { AssetDefinition, ProcessedAsset } from './assets.types.js';
|
|
3
3
|
type ProcessUngroupedDependencyOptions = {
|
|
4
4
|
dep: AssetDefinition;
|
|
5
|
-
key: string;
|
|
6
5
|
depKey: string;
|
|
7
6
|
getCachedAsset: (dep: AssetDefinition, depKey: string) => ProcessedAsset | null;
|
|
8
7
|
getProcessor: (dep: AssetDefinition) => AssetProcessor | undefined;
|
|
@@ -1,45 +1,28 @@
|
|
|
1
|
-
import { fileSystem } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
dep,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
const processed = await processor.process(dep);
|
|
30
|
-
const srcUrl = resolveProcessedAssetSrcUrl(processed);
|
|
31
|
-
const processedWithKey = {
|
|
32
|
-
key,
|
|
33
|
-
...processed,
|
|
34
|
-
srcUrl
|
|
35
|
-
};
|
|
36
|
-
setCachedAsset(dep, depKey, processedWithKey);
|
|
37
|
-
return processedWithKey;
|
|
38
|
-
} catch (error) {
|
|
39
|
-
logProcessingError(dep, error);
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
1
|
+
import { fileSystem } from '@ecopages/file-system';
|
|
2
|
+
import { finalizeProcessedAsset } from './finalize-processed-asset.js';
|
|
3
|
+
export async function processUngroupedDependency(options) {
|
|
4
|
+
const { dep, depKey, getCachedAsset, getProcessor, resolveProcessedAssetSrcUrl, setCachedAsset, logMissingProcessor, logMissingFile, logProcessingError, } = options;
|
|
5
|
+
const cached = getCachedAsset(dep, depKey);
|
|
6
|
+
if (cached) {
|
|
7
|
+
return finalizeProcessedAsset(cached, resolveProcessedAssetSrcUrl);
|
|
8
|
+
}
|
|
9
|
+
const processor = getProcessor(dep);
|
|
10
|
+
if (!processor) {
|
|
11
|
+
logMissingProcessor(dep);
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
if (dep.source === 'file' && 'filepath' in dep && !fileSystem.exists(dep.filepath)) {
|
|
15
|
+
logMissingFile(dep);
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const processed = await processor.process(dep);
|
|
20
|
+
const finalized = finalizeProcessedAsset(processed, resolveProcessedAssetSrcUrl);
|
|
21
|
+
setCachedAsset(dep, depKey, finalized);
|
|
22
|
+
return finalized;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
logProcessingError(dep, error);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
42
28
|
}
|
|
43
|
-
export {
|
|
44
|
-
processUngroupedDependency
|
|
45
|
-
};
|
|
@@ -1,6 +1,24 @@
|
|
|
1
|
-
import type { BuildResult
|
|
2
|
-
import type {
|
|
1
|
+
import type { BuildResult } from '../../build/build-adapter.js';
|
|
2
|
+
import type { BuildTranspileProfile } from '../../build/build-adapter.js';
|
|
3
|
+
import type { EcoBuildPlugin } from '../../build/contracts/build-types.js';
|
|
3
4
|
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Browser-oriented build request accepted by {@link BrowserBundleService}.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* `profile` is a {@link BuildTranspileProfile} (transpile settings only).
|
|
10
|
+
* `executor` selects the {@link BuildRuntime} concurrency slot:
|
|
11
|
+
* - `'hmr'` + (`hmr-entrypoint` | `hmr-runtime`) → `'browser-hmr'`
|
|
12
|
+
* - everything else (including `browser-script`, and `'build'`) → `'route-module'`
|
|
13
|
+
*
|
|
14
|
+
* Defaults `executor` to `'hmr'`. Request options are always assembled with
|
|
15
|
+
* browser-hmr *defaults* via {@link createBrowserBuildRequest}; only the
|
|
16
|
+
* concurrency/dedupe wrapper differs.
|
|
17
|
+
*
|
|
18
|
+
* Uses request-scope {@link requestBuildDedupe} plus in-flight
|
|
19
|
+
* {@link DedupingBuildExecutor} coalescing; both key on
|
|
20
|
+
* {@link createBuildRequestIdentity}.
|
|
21
|
+
*/
|
|
4
22
|
export type BrowserBundleOptions = {
|
|
5
23
|
entrypoints: string[] | Record<string, string>;
|
|
6
24
|
outdir?: string;
|
|
@@ -17,28 +35,10 @@ export type BrowserBundleOptions = {
|
|
|
17
35
|
external?: string[];
|
|
18
36
|
plugins?: EcoBuildPlugin[];
|
|
19
37
|
executor?: 'build' | 'hmr';
|
|
20
|
-
[key: string]: unknown;
|
|
21
|
-
profile: BuildTranspileProfile;
|
|
22
|
-
excludeAppBuildPlugins?: string[];
|
|
23
|
-
};
|
|
24
|
-
type BrowserBundleGroupedOptions = {
|
|
25
|
-
outdir?: string;
|
|
26
|
-
outbase?: string;
|
|
27
|
-
naming?: string;
|
|
28
|
-
conditions?: string[];
|
|
29
|
-
define?: Record<string, string>;
|
|
30
|
-
minify?: boolean;
|
|
31
|
-
treeshaking?: boolean;
|
|
32
|
-
splitting?: boolean;
|
|
33
|
-
root?: string;
|
|
34
|
-
bundle?: boolean;
|
|
35
|
-
externalPackages?: boolean;
|
|
36
|
-
external?: string[];
|
|
37
|
-
plugins?: EcoBuildPlugin[];
|
|
38
|
-
[key: string]: unknown;
|
|
39
38
|
profile: BuildTranspileProfile;
|
|
40
39
|
excludeAppBuildPlugins?: string[];
|
|
41
40
|
};
|
|
41
|
+
type BrowserBundleGroupedOptions = Omit<BrowserBundleOptions, 'entrypoints'>;
|
|
42
42
|
export interface BrowserBundleExecutor {
|
|
43
43
|
bundle(options: BrowserBundleOptions): Promise<BuildResult>;
|
|
44
44
|
}
|
|
@@ -50,23 +50,20 @@ export type BrowserBundleGroupedEntry = {
|
|
|
50
50
|
* App-owned boundary for browser-oriented bundle work.
|
|
51
51
|
*
|
|
52
52
|
* @remarks
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
53
|
+
* Owns shared browser transpile defaults and ensures browser builds run through
|
|
54
|
+
* the app-owned executor rather than direct backend calls. Assembles a complete
|
|
55
|
+
* request via {@link createBrowserBuildRequest} before scheduling.
|
|
56
56
|
*/
|
|
57
57
|
export declare class BrowserBundleService implements BrowserBundleExecutor {
|
|
58
58
|
private readonly appConfig;
|
|
59
|
-
/**
|
|
60
|
-
* Creates the browser bundle boundary for one finalized app instance.
|
|
61
|
-
*/
|
|
62
59
|
constructor(appConfig: EcoPagesAppConfig);
|
|
63
60
|
/**
|
|
64
61
|
* Runs one browser-targeted build through the app-owned executor.
|
|
65
62
|
*
|
|
66
63
|
* @remarks
|
|
67
|
-
* Browser defaults
|
|
68
|
-
*
|
|
69
|
-
* site.
|
|
64
|
+
* Browser defaults, app-owned browser plugins, and
|
|
65
|
+
* {@link getAppSourceTransforms | app source transforms} are applied here
|
|
66
|
+
* so HMR and asset generation do not recreate that policy at each call site.
|
|
70
67
|
*/
|
|
71
68
|
bundle(options: BrowserBundleOptions): Promise<BuildResult>;
|
|
72
69
|
bundleGroupedEntries(entries: BrowserBundleGroupedEntry[], options: BrowserBundleGroupedOptions): Promise<BuildResult>;
|
|
@@ -1,47 +1,55 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
1
|
+
import { createBrowserBuildRequest } from '../../build/runtime/build-request-policy.js';
|
|
2
|
+
import { requireBuildRuntime } from '../../build/runtime/build-runtime.js';
|
|
3
|
+
import { startupTrace } from '../../diagnostics/startup-trace.js';
|
|
4
|
+
import { requestBuildDedupe } from '../../diagnostics/request-build-dedupe.js';
|
|
5
|
+
import { createBuildRequestIdentity } from '../../build/runtime/build-request-identity.js';
|
|
6
|
+
function resolveBrowserBundleExecutor(appConfig, profile, executor) {
|
|
7
|
+
const buildRuntime = requireBuildRuntime(appConfig);
|
|
8
|
+
if (executor === 'hmr' && (profile === 'hmr-entrypoint' || profile === 'hmr-runtime')) {
|
|
9
|
+
return buildRuntime.getProfile('browser-hmr');
|
|
10
|
+
}
|
|
11
|
+
return buildRuntime.getProfile('route-module');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* App-owned boundary for browser-oriented bundle work.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* Owns shared browser transpile defaults and ensures browser builds run through
|
|
18
|
+
* the app-owned executor rather than direct backend calls. Assembles a complete
|
|
19
|
+
* request via {@link createBrowserBuildRequest} before scheduling.
|
|
20
|
+
*/
|
|
21
|
+
export class BrowserBundleService {
|
|
22
|
+
appConfig;
|
|
23
|
+
constructor(appConfig) {
|
|
24
|
+
this.appConfig = appConfig;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Runs one browser-targeted build through the app-owned executor.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* Browser defaults, app-owned browser plugins, and
|
|
31
|
+
* {@link getAppSourceTransforms | app source transforms} are applied here
|
|
32
|
+
* so HMR and asset generation do not recreate that policy at each call site.
|
|
33
|
+
*/
|
|
34
|
+
async bundle(options) {
|
|
35
|
+
const { profile, executor = 'hmr', ...requestInput } = options;
|
|
36
|
+
const request = createBrowserBuildRequest(this.appConfig, {
|
|
37
|
+
...requestInput,
|
|
38
|
+
profile,
|
|
39
|
+
});
|
|
40
|
+
const buildExecutor = resolveBrowserBundleExecutor(this.appConfig, profile, executor);
|
|
41
|
+
const dedupeKey = createBuildRequestIdentity(request);
|
|
42
|
+
return requestBuildDedupe.dedupeBuild(dedupeKey, async () => {
|
|
43
|
+
const result = await buildExecutor.build(request);
|
|
44
|
+
startupTrace.recordBrowserBundle(result.outputs);
|
|
45
|
+
return result;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async bundleGroupedEntries(entries, options) {
|
|
49
|
+
const request = {
|
|
50
|
+
...options,
|
|
51
|
+
entrypoints: Object.fromEntries(entries.map((entry) => [entry.entryName, entry.entrypoint])),
|
|
52
|
+
};
|
|
53
|
+
return this.bundle(request);
|
|
54
|
+
}
|
|
44
55
|
}
|
|
45
|
-
export {
|
|
46
|
-
BrowserBundleService
|
|
47
|
-
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the current browser-runtime asset generation for one app.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Development HTML caches include this generation so rebuilt bootstrap and
|
|
7
|
+
* vendor URLs cannot leave stale script references behind.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getBrowserRuntimeAssetGeneration(appConfig: EcoPagesAppConfig): number;
|
|
10
|
+
/**
|
|
11
|
+
* Bumps browser-runtime asset generation and clears rendered HTML cache entries.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Only call this when a previously cached runtime/page-script asset filepath changes.
|
|
15
|
+
* First inserts must not bump generation or cold start thrash-clears the HTML cache.
|
|
16
|
+
*/
|
|
17
|
+
export declare function bumpBrowserRuntimeAssetGeneration(appConfig: EcoPagesAppConfig): Promise<void>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { clearAppPageCache } from '../cache/page-cache-service.js';
|
|
2
|
+
import { isDevelopmentRuntime } from '../../utils/runtime.js';
|
|
3
|
+
const generationByAppConfig = new WeakMap();
|
|
4
|
+
/**
|
|
5
|
+
* Returns the current browser-runtime asset generation for one app.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Development HTML caches include this generation so rebuilt bootstrap and
|
|
9
|
+
* vendor URLs cannot leave stale script references behind.
|
|
10
|
+
*/
|
|
11
|
+
export function getBrowserRuntimeAssetGeneration(appConfig) {
|
|
12
|
+
return generationByAppConfig.get(appConfig) ?? 0;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Bumps browser-runtime asset generation and clears rendered HTML cache entries.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* Only call this when a previously cached runtime/page-script asset filepath changes.
|
|
19
|
+
* First inserts must not bump generation or cold start thrash-clears the HTML cache.
|
|
20
|
+
*/
|
|
21
|
+
export async function bumpBrowserRuntimeAssetGeneration(appConfig) {
|
|
22
|
+
if (!isDevelopmentRuntime()) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const nextGeneration = getBrowserRuntimeAssetGeneration(appConfig) + 1;
|
|
26
|
+
generationByAppConfig.set(appConfig, nextGeneration);
|
|
27
|
+
await clearAppPageCache(appConfig);
|
|
28
|
+
}
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
export interface RenderResult {
|
|
9
9
|
html: string;
|
|
10
10
|
strategy: CacheStrategy;
|
|
11
|
+
/** Source paths that contributed to this render; used for selective HTML cache invalidation. */
|
|
12
|
+
sourceDependencyPaths?: readonly string[];
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* Render strategy configuration for pages.
|
|
@@ -83,8 +85,8 @@ export interface CacheConfig {
|
|
|
83
85
|
defaultStrategy?: CacheStrategy;
|
|
84
86
|
/**
|
|
85
87
|
* Whether caching is enabled.
|
|
86
|
-
*
|
|
87
|
-
* @default true
|
|
88
|
+
* In watch mode, defaults to `false` unless explicitly enabled.
|
|
89
|
+
* @default true in production builds, false in watch when omitted
|
|
88
90
|
*/
|
|
89
91
|
enabled?: boolean;
|
|
90
92
|
/**
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps source dependency paths to rendered HTML cache keys for selective invalidation.
|
|
3
|
+
*/
|
|
4
|
+
export declare class HtmlPageCacheDependencyIndex {
|
|
5
|
+
private readonly sourcePathToCacheKeys;
|
|
6
|
+
private readonly cacheKeyToSourcePaths;
|
|
7
|
+
/**
|
|
8
|
+
* Records which source paths contributed to one cached HTML entry.
|
|
9
|
+
*/
|
|
10
|
+
register(cacheKey: string, sourcePaths: readonly string[]): void;
|
|
11
|
+
/**
|
|
12
|
+
* Removes dependency metadata for one cache key.
|
|
13
|
+
*/
|
|
14
|
+
unregister(cacheKey: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* Returns cache keys that depend on any of the given source paths.
|
|
17
|
+
*/
|
|
18
|
+
resolveCacheKeysForSourcePaths(sourcePaths: readonly string[]): string[];
|
|
19
|
+
clear(): void;
|
|
20
|
+
}
|
|
21
|
+
type CollectHtmlCacheSourceDependencyPathsInput = {
|
|
22
|
+
routeFile: string;
|
|
23
|
+
processedAssets: readonly {
|
|
24
|
+
sourceFilepath?: string;
|
|
25
|
+
bundledSourceFilepaths?: readonly string[];
|
|
26
|
+
}[];
|
|
27
|
+
graphDependencyPaths?: ReadonlySet<string>;
|
|
28
|
+
additionalSourcePaths?: readonly string[];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Merges route, graph, processed-asset, and caller-supplied source paths for HTML cache invalidation.
|
|
32
|
+
*/
|
|
33
|
+
export declare function collectHtmlCacheSourceDependencyPaths(input: CollectHtmlCacheSourceDependencyPathsInput): string[];
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
/**
|
|
3
|
+
* Maps source dependency paths to rendered HTML cache keys for selective invalidation.
|
|
4
|
+
*/
|
|
5
|
+
export class HtmlPageCacheDependencyIndex {
|
|
6
|
+
sourcePathToCacheKeys = new Map();
|
|
7
|
+
cacheKeyToSourcePaths = new Map();
|
|
8
|
+
/**
|
|
9
|
+
* Records which source paths contributed to one cached HTML entry.
|
|
10
|
+
*/
|
|
11
|
+
register(cacheKey, sourcePaths) {
|
|
12
|
+
this.unregister(cacheKey);
|
|
13
|
+
if (sourcePaths.length === 0) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const normalizedSourcePaths = new Set(sourcePaths.map((sourcePath) => normalizeSourcePath(sourcePath)));
|
|
17
|
+
this.cacheKeyToSourcePaths.set(cacheKey, normalizedSourcePaths);
|
|
18
|
+
for (const sourcePath of normalizedSourcePaths) {
|
|
19
|
+
const cacheKeys = this.sourcePathToCacheKeys.get(sourcePath) ?? new Set();
|
|
20
|
+
cacheKeys.add(cacheKey);
|
|
21
|
+
this.sourcePathToCacheKeys.set(sourcePath, cacheKeys);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Removes dependency metadata for one cache key.
|
|
26
|
+
*/
|
|
27
|
+
unregister(cacheKey) {
|
|
28
|
+
const sourcePaths = this.cacheKeyToSourcePaths.get(cacheKey);
|
|
29
|
+
if (!sourcePaths) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const sourcePath of sourcePaths) {
|
|
33
|
+
const cacheKeys = this.sourcePathToCacheKeys.get(sourcePath);
|
|
34
|
+
cacheKeys?.delete(cacheKey);
|
|
35
|
+
if (cacheKeys?.size === 0) {
|
|
36
|
+
this.sourcePathToCacheKeys.delete(sourcePath);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.cacheKeyToSourcePaths.delete(cacheKey);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns cache keys that depend on any of the given source paths.
|
|
43
|
+
*/
|
|
44
|
+
resolveCacheKeysForSourcePaths(sourcePaths) {
|
|
45
|
+
const cacheKeys = new Set();
|
|
46
|
+
for (const sourcePath of sourcePaths) {
|
|
47
|
+
const normalizedSourcePath = normalizeSourcePath(sourcePath);
|
|
48
|
+
const matches = this.sourcePathToCacheKeys.get(normalizedSourcePath);
|
|
49
|
+
if (!matches) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
for (const cacheKey of matches) {
|
|
53
|
+
cacheKeys.add(cacheKey);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return [...cacheKeys];
|
|
57
|
+
}
|
|
58
|
+
clear() {
|
|
59
|
+
this.sourcePathToCacheKeys.clear();
|
|
60
|
+
this.cacheKeyToSourcePaths.clear();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function normalizeSourcePath(sourcePath) {
|
|
64
|
+
return path.resolve(sourcePath);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Merges route, graph, processed-asset, and caller-supplied source paths for HTML cache invalidation.
|
|
68
|
+
*/
|
|
69
|
+
export function collectHtmlCacheSourceDependencyPaths(input) {
|
|
70
|
+
const sourcePaths = new Set([normalizeSourcePath(input.routeFile)]);
|
|
71
|
+
for (const additionalPath of input.additionalSourcePaths ?? []) {
|
|
72
|
+
sourcePaths.add(normalizeSourcePath(additionalPath));
|
|
73
|
+
}
|
|
74
|
+
if (input.graphDependencyPaths) {
|
|
75
|
+
for (const graphPath of input.graphDependencyPaths) {
|
|
76
|
+
sourcePaths.add(normalizeSourcePath(graphPath));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const asset of input.processedAssets) {
|
|
80
|
+
if (asset.sourceFilepath) {
|
|
81
|
+
sourcePaths.add(normalizeSourcePath(asset.sourceFilepath));
|
|
82
|
+
}
|
|
83
|
+
for (const bundledSourceFilepath of asset.bundledSourceFilepaths ?? []) {
|
|
84
|
+
sourcePaths.add(normalizeSourcePath(bundledSourceFilepath));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return [...sourcePaths];
|
|
88
|
+
}
|
|
@@ -4,4 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export type { CacheConfig, CacheEntry, CacheResult, CacheStats, CacheStore, CacheStrategy, RenderResult, } from './cache.types.js';
|
|
6
6
|
export { MemoryCacheStore, type MemoryCacheStoreOptions } from './memory-cache-store.js';
|
|
7
|
+
export { HtmlPageCacheDependencyIndex } from './html-page-cache-dependency-index.js';
|
|
7
8
|
export { getCacheControlHeader, PageCacheService, type PageCacheServiceOptions } from './page-cache-service.js';
|
|
9
|
+
export { clearAppPageCache, getAppPageCacheService, invalidateAppPageCacheBySourcePaths, registerAppPageCacheService, } from './page-cache-service.js';
|