@ecopages/core 0.2.0-beta.31 → 0.2.0-beta.33
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 +1 -0
- package/package.json +90 -3
- package/src/adapters/abstract/application-adapter.d.ts +0 -8
- package/src/adapters/abstract/application-adapter.js +252 -261
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.js +132 -134
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -26
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +83 -86
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.js +171 -161
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.js +2 -31
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +0 -1
- package/src/adapters/bun/server-adapter.js +561 -561
- package/src/adapters/bun/static-preview-host.js +43 -46
- package/src/adapters/create-app.js +11 -14
- package/src/adapters/index.js +2 -30
- package/src/adapters/node/create-app.js +123 -129
- 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.js +58 -48
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -21
- package/src/adapters/node/server-adapter.d.ts +0 -1
- package/src/adapters/node/server-adapter.js +347 -326
- package/src/adapters/node/static-content-server.js +172 -191
- package/src/adapters/node/static-preview-host.js +87 -78
- 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/hmr-html-response.js +46 -32
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +29 -38
- package/src/adapters/shared/hmr/shared-hmr-manager.js +439 -425
- package/src/adapters/shared/http/api-request-pipeline.js +122 -119
- package/src/adapters/shared/http/api-response.js +77 -77
- package/src/adapters/shared/http/create-body-response.js +22 -19
- package/src/adapters/shared/http/define-api-handler.js +41 -55
- package/src/adapters/shared/http/explicit-static-render-preparation.js +26 -23
- package/src/adapters/shared/http/explicit-static-route-matcher.js +55 -62
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +81 -75
- package/src/adapters/shared/http/fs-server-response-factory.js +101 -96
- package/src/adapters/shared/http/fs-server-response-matcher.js +239 -257
- package/src/adapters/shared/http/run-middleware-chain.js +15 -15
- package/src/adapters/shared/runtime/application-adapter.js +72 -87
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +25 -22
- package/src/adapters/shared/runtime/port-manager.js +207 -177
- package/src/adapters/shared/runtime/render-context.js +94 -79
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +33 -38
- package/src/adapters/shared/runtime/runtime-host.js +1 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +2 -3
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +65 -51
- package/src/adapters/shared/runtime/server-adapter.d.ts +1 -0
- package/src/adapters/shared/runtime/server-adapter.js +233 -217
- package/src/adapters/shared/runtime/server-route-handler.js +74 -70
- package/src/adapters/shared/runtime/server-static-builder.js +165 -184
- package/src/adapters/shared/runtime/static-preview-host.js +1 -0
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +97 -88
- package/src/adapters/shared/ws/websocket-lifecycle.js +57 -50
- package/src/build/README.md +52 -1
- package/src/build/app-build-manifest-runtime.js +129 -108
- package/src/build/browser/browser-runtime-manifest.js +47 -50
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -12
- package/src/build/browser/browser-runtime-plugin.js +206 -160
- package/src/build/browser/jsx-ownership-plugins.js +51 -37
- package/src/build/browser/lit-static-render-worker-context.js +3 -5
- package/src/build/build-adapter.js +276 -139
- package/src/build/cache/build-input-fingerprint.js +28 -26
- package/src/build/cache/cache-constants.js +4 -6
- package/src/build/cache/cache-keys.js +64 -56
- package/src/build/cache/pages-unified-graph-build.js +179 -178
- package/src/build/cache/production-build-cache.js +47 -54
- package/src/build/cache/server-entry-build-cache.js +134 -146
- package/src/build/contracts/build-contracts.d.ts +4 -4
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.js +58 -43
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/rolldown/rolldown-adapter-helpers.d.ts +9 -0
- package/src/build/rolldown/rolldown-adapter-helpers.js +405 -298
- package/src/build/rolldown/rolldown-build-adapter.js +53 -61
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +31 -35
- package/src/build/rolldown/rolldown-plugin-bridge.js +264 -194
- package/src/build/rolldown/rolldown-source-transform-pass.js +59 -50
- package/src/build/rolldown/runtime-build-output-normalizer.js +227 -175
- package/src/build/rolldown/server-side-css-shim-plugin.js +54 -31
- package/src/build/runtime/build-profile-options.js +36 -36
- package/src/build/runtime/build-request-identity.js +70 -45
- package/src/build/runtime/build-request-policy.js +80 -42
- package/src/build/runtime/build-runtime.js +64 -54
- package/src/build/runtime/deduping-build-executor.js +38 -32
- package/src/build/runtime/parallel-build-executor.js +58 -50
- package/src/build/runtime/serialized-build-executor.js +78 -62
- package/src/cache/index.js +6 -6
- package/src/cache/module-parse-cache.js +99 -68
- package/src/client/navigation-scripts/classification.js +45 -37
- package/src/client/navigation-scripts/index.js +3 -23
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +58 -62
- package/src/client/navigation-scripts/registry.js +15 -11
- package/src/client/navigation-scripts/rerun-queue.js +81 -64
- package/src/client/scroll.js +32 -24
- package/src/client/scroll.test.browser.js +27 -33
- package/src/client/view-transitions.js +68 -55
- package/src/config/config-builder.d.ts +8 -0
- package/src/config/config-builder.js +637 -642
- package/src/config/constants.js +44 -24
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.js +7 -12
- package/src/dev/dev-client-ownership.js +7 -5
- package/src/dev/hmr-manager-registry.js +7 -12
- package/src/dev/host-runtime.js +25 -30
- package/src/dev/runtime-server-started-message.js +2 -5
- 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 +110 -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 +27 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +145 -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 +51 -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.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +31 -0
- package/src/dev-toolbar/dev-toolbar-package.js +72 -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.js +34 -28
- package/src/diagnostics/startup-trace.d.ts +10 -1
- package/src/diagnostics/startup-trace.js +269 -241
- package/src/eco/README.md +6 -0
- package/src/eco/eco-declared-component.js +19 -14
- package/src/eco/eco.browser.js +56 -69
- package/src/eco/eco.js +156 -96
- package/src/eco/eco.types.js +5 -0
- 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.js +59 -49
- package/src/errors/http-error.js +50 -49
- package/src/errors/index.js +3 -12
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.js +15 -15
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +10 -0
- package/src/hmr/client/hmr-runtime.js +117 -113
- 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 +11 -39
- package/src/hmr/hmr-entrypoint-output.js +28 -54
- package/src/hmr/hmr-file-change-prep.js +13 -16
- 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 +5 -11
- package/src/hmr/hmr-strategy.js +113 -61
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -95
- package/src/hmr/strategies/js-hmr-strategy.js +104 -217
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +33 -27
- package/src/index.browser.js +1 -4
- package/src/index.d.ts +1 -0
- package/src/index.js +6 -47
- package/src/integrations/ghtml/ghtml-renderer.js +12 -7
- package/src/integrations/ghtml/ghtml.constants.js +1 -4
- package/src/integrations/ghtml/ghtml.plugin.js +9 -12
- 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/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.js +33 -47
- package/src/plugins/define-integration.js +18 -17
- package/src/plugins/eco-component-meta-plugin.js +387 -145
- package/src/plugins/foreign-jsx-override-plugin.js +49 -35
- package/src/plugins/integration-plugin.js +212 -203
- package/src/plugins/jsx-import-source.utils.js +16 -21
- package/src/plugins/processor.js +159 -149
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.js +109 -79
- package/src/plugins/tsconfig-import-resolver.d.ts +17 -0
- package/src/plugins/tsconfig-import-resolver.js +218 -142
- package/src/route-renderer/README.md +12 -1
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +143 -136
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +33 -27
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +173 -126
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +165 -154
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +329 -341
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +33 -32
- package/src/route-renderer/orchestration/integration-renderer.d.ts +1 -0
- package/src/route-renderer/orchestration/integration-renderer.js +731 -750
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +168 -172
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +119 -131
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +82 -91
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +82 -76
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +29 -31
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +10 -6
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +31 -28
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +3 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +430 -413
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +191 -212
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +20 -24
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +24 -24
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +22 -24
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +41 -34
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +5 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +42 -22
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +50 -48
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +29 -32
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +150 -156
- package/src/route-renderer/orchestration/string-markup-renderer.js +48 -51
- package/src/route-renderer/page-loading/component-dependency-collection.js +120 -124
- 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.js +68 -54
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +46 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +38 -31
- 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.js +130 -124
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/README.md +23 -0
- package/src/router/client/link-intent.js +55 -39
- package/src/router/client/link-intent.test.browser.js +49 -49
- package/src/router/client/link-navigation-policy.js +114 -93
- package/src/router/client/link-navigation-policy.test.browser.js +70 -80
- 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/assets/asset-processing-service/asset-dependency-keys.js +64 -53
- package/src/services/assets/asset-processing-service/asset-processing.service.js +287 -303
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- 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.js +106 -69
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -53
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +4 -6
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +79 -80
- package/src/services/assets/asset-processing-service/index.js +8 -8
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +22 -16
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +21 -17
- 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.js +102 -117
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +110 -115
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -97
- 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.js +27 -29
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +34 -40
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +36 -35
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +14 -16
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -39
- package/src/services/assets/browser-bundle.service.js +52 -47
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/index.js +6 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.js +156 -145
- package/src/services/cache/page-request-cache-coordinator.service.js +102 -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.js +252 -241
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +107 -101
- 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.js +235 -243
- package/src/services/module-loading/route-module-build-cache-registry.js +47 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.js +195 -200
- package/src/services/module-loading/route-module-build-manifest.js +61 -74
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -110
- package/src/services/module-loading/server-module-transpiler.service.js +68 -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.js +157 -95
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.js +13 -13
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +35 -19
- package/src/static-site-generator/sitemap-routes.js +33 -28
- package/src/static-site-generator/sitemap.js +38 -29
- package/src/static-site-generator/static-build-invalidation.js +34 -56
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.js +517 -553
- package/src/types/internal-types.d.ts +19 -3
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +16 -46
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.js +27 -23
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.js +21 -8
- package/src/utils/html.js +1 -4
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.js +73 -65
- package/src/utils/path-pattern.js +38 -23
- 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.js +60 -52
- package/src/utils/static-file-extensions.js +52 -46
- package/src/watchers/project-watcher-ignore.js +16 -15
- package/src/watchers/project-watcher.js +385 -366
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.d.ts +0 -56
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +0 -106
- package/src/build/cache/dev-browser-script-cache.d.ts +0 -34
- package/src/build/cache/dev-browser-script-cache.js +0 -90
|
@@ -1,52 +1,47 @@
|
|
|
1
|
-
import { vi } from
|
|
2
|
-
const createMockHmrManager = () => ({
|
|
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
|
-
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
export const createMockHmrManager = () => ({
|
|
3
|
+
handleFileChange: vi.fn(async () => { }),
|
|
4
|
+
broadcast: vi.fn(() => { }),
|
|
5
|
+
setEnabled: vi.fn(() => { }),
|
|
6
|
+
registerEntrypoint: vi.fn(async () => ''),
|
|
7
|
+
registerDevTransformContributor: vi.fn(() => { }),
|
|
8
|
+
registerScriptEntrypoint: vi.fn(async () => ({
|
|
9
|
+
sourcePath: '',
|
|
10
|
+
outputPath: '',
|
|
11
|
+
outputUrl: '',
|
|
12
|
+
role: 'script',
|
|
13
|
+
})),
|
|
14
|
+
registerStrategy: vi.fn(() => { }),
|
|
15
|
+
isEnabled: vi.fn(() => true),
|
|
16
|
+
getOutputUrl: vi.fn(() => undefined),
|
|
17
|
+
getWatchedFiles: vi.fn(() => new Map()),
|
|
18
|
+
getRegisteredEntrypoints: vi.fn(() => new Map()),
|
|
19
|
+
getRuntimeWorkDir: vi.fn(() => ''),
|
|
20
|
+
getRuntimePath: vi.fn(() => ''),
|
|
21
|
+
tryHandleAssetRequest: vi.fn(() => null),
|
|
22
|
+
getDefaultContext: vi.fn(() => ({
|
|
23
|
+
getWatchedFiles: () => new Map(),
|
|
24
|
+
getRegisteredEntrypoints: () => new Map(),
|
|
25
|
+
getSrcDir: () => '',
|
|
26
|
+
getLayoutsDir: () => '',
|
|
27
|
+
getPagesDir: () => '',
|
|
28
|
+
getEntrypointDependencyGraph: () => ({
|
|
29
|
+
supportsSelectiveInvalidation: () => false,
|
|
30
|
+
getDependencyEntrypoints: () => new Set(),
|
|
31
|
+
setEntrypointDependencies: () => { },
|
|
32
|
+
clearEntrypointDependencies: () => { },
|
|
33
|
+
reset: () => { },
|
|
34
|
+
}),
|
|
35
|
+
importServerModule: vi.fn(async () => ({})),
|
|
36
|
+
})),
|
|
31
37
|
});
|
|
32
|
-
const createMockBridge = () => ({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
subscribe: vi.fn(() => {
|
|
42
|
-
}),
|
|
43
|
-
unsubscribe: vi.fn(() => {
|
|
44
|
-
}),
|
|
45
|
-
broadcast: vi.fn(() => {
|
|
46
|
-
}),
|
|
47
|
-
subscriberCount: 0
|
|
38
|
+
export const createMockBridge = () => ({
|
|
39
|
+
reload: vi.fn(() => { }),
|
|
40
|
+
error: vi.fn(() => { }),
|
|
41
|
+
cssUpdate: vi.fn(() => { }),
|
|
42
|
+
update: vi.fn(() => { }),
|
|
43
|
+
subscribe: vi.fn(() => { }),
|
|
44
|
+
unsubscribe: vi.fn(() => { }),
|
|
45
|
+
broadcast: vi.fn(() => { }),
|
|
46
|
+
subscriberCount: 0,
|
|
48
47
|
});
|
|
49
|
-
export {
|
|
50
|
-
createMockBridge,
|
|
51
|
-
createMockHmrManager
|
|
52
|
-
};
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { type ResolvedHmrEntrypoint } from '../../../hmr/hmr-entrypoint-output.js';
|
|
2
|
-
/**
|
|
3
|
-
* Runtime-specific hooks required to materialize a single HMR entrypoint.
|
|
4
|
-
*/
|
|
5
|
-
export interface HmrEntrypointRegistrationOptions {
|
|
6
|
-
/**
|
|
7
|
-
* Emits the browser-consumable HMR artifact for an entrypoint.
|
|
8
|
-
*/
|
|
9
|
-
emit(entrypointPath: string, outputPath: string): Promise<void>;
|
|
10
|
-
/**
|
|
11
|
-
* Creates the runtime-specific error raised when the emit hook completes without producing output.
|
|
12
|
-
*/
|
|
13
|
-
getMissingOutputError(entrypointPath: string, outputPath: string): Error;
|
|
14
|
-
}
|
|
15
|
-
export interface HmrEntrypointRegistrarOptions {
|
|
16
|
-
/** Absolute source directory used to derive the emitted HMR path. */
|
|
17
|
-
srcDir: string;
|
|
18
|
-
/** Absolute distribution directory where HMR outputs are written. */
|
|
19
|
-
distDir: string;
|
|
20
|
-
/** Runtime-specific cleanup invoked when an entrypoint registration fails. */
|
|
21
|
-
clearFailedRegistration?: (entrypointPath: string) => void;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Coordinates the shared HMR entrypoint registration lifecycle for both Node and Bun managers.
|
|
25
|
-
*
|
|
26
|
-
* @remarks
|
|
27
|
-
* The registrar owns in-flight deduplication and the registered entrypoint table.
|
|
28
|
-
* A source path is committed only after emit succeeds and the expected output exists on disk.
|
|
29
|
-
*/
|
|
30
|
-
export declare class HmrEntrypointRegistrar {
|
|
31
|
-
private readonly options;
|
|
32
|
-
private readonly inFlight;
|
|
33
|
-
private readonly registered;
|
|
34
|
-
constructor(options: HmrEntrypointRegistrarOptions);
|
|
35
|
-
getRegistered(): ReadonlyMap<string, ResolvedHmrEntrypoint>;
|
|
36
|
-
getWatchedFiles(): Map<string, string>;
|
|
37
|
-
clearRegistration(entrypointPath: string): void;
|
|
38
|
-
/**
|
|
39
|
-
* Registers an already-materialized HMR entrypoint without running the emit hook.
|
|
40
|
-
*
|
|
41
|
-
* @remarks
|
|
42
|
-
* Cold dev batches build entrypoints in grouped Rolldown passes and then seed
|
|
43
|
-
* the registrar so the first SSR can resolve the artifact without rebuilding.
|
|
44
|
-
* The source path is committed verbatim so `getResolvedScriptOutput()` and the
|
|
45
|
-
* file watcher see it as a regular watched entrypoint.
|
|
46
|
-
*/
|
|
47
|
-
seedResolvedEntrypoint(resolved: ResolvedHmrEntrypoint): void;
|
|
48
|
-
clearAll(): void;
|
|
49
|
-
/**
|
|
50
|
-
* Registers a single source entrypoint and returns its verified HMR artifact.
|
|
51
|
-
*
|
|
52
|
-
* Concurrent requests for the same normalized entrypoint share the same in-flight promise.
|
|
53
|
-
*/
|
|
54
|
-
registerEntrypoint(entrypointPath: string, registrationOptions: HmrEntrypointRegistrationOptions): Promise<ResolvedHmrEntrypoint>;
|
|
55
|
-
private registerEntrypointInternal;
|
|
56
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { fileSystem } from "@ecopages/file-system";
|
|
3
|
-
import {
|
|
4
|
-
removeStaleHmrEntrypointOutput,
|
|
5
|
-
resolveHmrEntrypointOutputPaths
|
|
6
|
-
} from "../../../hmr/hmr-entrypoint-output.js";
|
|
7
|
-
class HmrEntrypointRegistrar {
|
|
8
|
-
options;
|
|
9
|
-
inFlight = /* @__PURE__ */ new Map();
|
|
10
|
-
registered = /* @__PURE__ */ new Map();
|
|
11
|
-
constructor(options) {
|
|
12
|
-
this.options = options;
|
|
13
|
-
}
|
|
14
|
-
getRegistered() {
|
|
15
|
-
return this.registered;
|
|
16
|
-
}
|
|
17
|
-
getWatchedFiles() {
|
|
18
|
-
const watchedFiles = /* @__PURE__ */ new Map();
|
|
19
|
-
for (const [sourcePath, entrypoint] of this.registered) {
|
|
20
|
-
watchedFiles.set(sourcePath, entrypoint.outputUrl);
|
|
21
|
-
}
|
|
22
|
-
return watchedFiles;
|
|
23
|
-
}
|
|
24
|
-
clearRegistration(entrypointPath) {
|
|
25
|
-
this.registered.delete(path.resolve(entrypointPath));
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Registers an already-materialized HMR entrypoint without running the emit hook.
|
|
29
|
-
*
|
|
30
|
-
* @remarks
|
|
31
|
-
* Cold dev batches build entrypoints in grouped Rolldown passes and then seed
|
|
32
|
-
* the registrar so the first SSR can resolve the artifact without rebuilding.
|
|
33
|
-
* The source path is committed verbatim so `getResolvedScriptOutput()` and the
|
|
34
|
-
* file watcher see it as a regular watched entrypoint.
|
|
35
|
-
*/
|
|
36
|
-
seedResolvedEntrypoint(resolved) {
|
|
37
|
-
this.registered.set(path.resolve(resolved.sourcePath), {
|
|
38
|
-
sourcePath: resolved.sourcePath,
|
|
39
|
-
outputPath: resolved.outputPath,
|
|
40
|
-
outputUrl: resolved.outputUrl
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
clearAll() {
|
|
44
|
-
this.inFlight.clear();
|
|
45
|
-
this.registered.clear();
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Registers a single source entrypoint and returns its verified HMR artifact.
|
|
49
|
-
*
|
|
50
|
-
* Concurrent requests for the same normalized entrypoint share the same in-flight promise.
|
|
51
|
-
*/
|
|
52
|
-
async registerEntrypoint(entrypointPath, registrationOptions) {
|
|
53
|
-
const normalizedEntrypoint = path.resolve(entrypointPath);
|
|
54
|
-
const existing = this.registered.get(normalizedEntrypoint);
|
|
55
|
-
if (existing && fileSystem.exists(existing.outputPath)) {
|
|
56
|
-
return existing;
|
|
57
|
-
}
|
|
58
|
-
const existingRegistration = this.inFlight.get(normalizedEntrypoint);
|
|
59
|
-
if (existingRegistration) {
|
|
60
|
-
return await existingRegistration;
|
|
61
|
-
}
|
|
62
|
-
const registration = this.registerEntrypointInternal(normalizedEntrypoint, registrationOptions);
|
|
63
|
-
this.inFlight.set(normalizedEntrypoint, registration);
|
|
64
|
-
try {
|
|
65
|
-
return await registration;
|
|
66
|
-
} catch (error) {
|
|
67
|
-
this.options.clearFailedRegistration?.(normalizedEntrypoint);
|
|
68
|
-
this.registered.delete(normalizedEntrypoint);
|
|
69
|
-
throw error;
|
|
70
|
-
} finally {
|
|
71
|
-
if (this.inFlight.get(normalizedEntrypoint) === registration) {
|
|
72
|
-
this.inFlight.delete(normalizedEntrypoint);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
async registerEntrypointInternal(entrypointPath, registrationOptions) {
|
|
77
|
-
const previous = this.registered.get(entrypointPath);
|
|
78
|
-
const { outputPath, outputUrl } = resolveHmrEntrypointOutputPaths(
|
|
79
|
-
this.options.srcDir,
|
|
80
|
-
this.options.distDir,
|
|
81
|
-
entrypointPath
|
|
82
|
-
);
|
|
83
|
-
removeStaleHmrEntrypointOutput(outputPath, "HMR");
|
|
84
|
-
try {
|
|
85
|
-
await registrationOptions.emit(entrypointPath, outputPath);
|
|
86
|
-
if (!fileSystem.exists(outputPath)) {
|
|
87
|
-
throw registrationOptions.getMissingOutputError(entrypointPath, outputPath);
|
|
88
|
-
}
|
|
89
|
-
const resolved = {
|
|
90
|
-
sourcePath: entrypointPath,
|
|
91
|
-
outputPath,
|
|
92
|
-
outputUrl
|
|
93
|
-
};
|
|
94
|
-
this.registered.set(entrypointPath, resolved);
|
|
95
|
-
return resolved;
|
|
96
|
-
} catch (error) {
|
|
97
|
-
if (previous && fileSystem.exists(previous.outputPath)) {
|
|
98
|
-
this.registered.set(entrypointPath, previous);
|
|
99
|
-
}
|
|
100
|
-
throw error;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
export {
|
|
105
|
-
HmrEntrypointRegistrar
|
|
106
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
-
import type { ProcessedAsset } from '../../services/assets/asset-processing-service/assets.types.js';
|
|
3
|
-
export declare const DEV_BROWSER_SCRIPT_CACHE_DIR = ".browser-script-bundles";
|
|
4
|
-
export declare const DEV_BROWSER_SCRIPT_CACHE_FILENAME = ".build-cache.json";
|
|
5
|
-
/** Output path restored from the dev disk cache before dependency metadata is merged. */
|
|
6
|
-
export type DevBrowserScriptCacheHit = {
|
|
7
|
-
filepath: string;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* @remarks
|
|
11
|
-
* Dev asset caching spans three scopes that should not be conflated:
|
|
12
|
-
* - request dedupe (`request-build-dedupe.ts`) — one in-flight build per request key
|
|
13
|
-
* - in-memory service cache (`AssetProcessingService`) — per-process reuse within one dev server
|
|
14
|
-
* - this disk manifest (`.eco/.browser-script-bundles`) — cross-request reuse of content-script bundles
|
|
15
|
-
*
|
|
16
|
-
* Disk entries intentionally store only output file paths. Declarative fields such as
|
|
17
|
-
* `groupedBundle`, `attributes`, and `packageRole` live on the originating
|
|
18
|
-
* `ContentScriptAsset` and are merged via `materializeContentScriptAsset()` on lookup.
|
|
19
|
-
*/
|
|
20
|
-
export interface DevBrowserScriptCacheEntry {
|
|
21
|
-
filepath: string;
|
|
22
|
-
builtAt: number;
|
|
23
|
-
}
|
|
24
|
-
export interface DevBrowserScriptCacheManifest {
|
|
25
|
-
invalidationVersion: string;
|
|
26
|
-
buildInputsFingerprint: string;
|
|
27
|
-
entries: Record<string, DevBrowserScriptCacheEntry>;
|
|
28
|
-
}
|
|
29
|
-
/** Returns whether dev-only cross-request content-script bundle cache is active. */
|
|
30
|
-
export declare function shouldUseDevBrowserScriptCache(): boolean;
|
|
31
|
-
/** Looks up one persisted dev content-script output path by dependency cache key. */
|
|
32
|
-
export declare function getDevBrowserScriptCacheEntry(appConfig: EcoPagesAppConfig, depKey: string): DevBrowserScriptCacheHit | null;
|
|
33
|
-
/** Persists one dev content-script bundle output for cross-request reuse. */
|
|
34
|
-
export declare function setDevBrowserScriptCacheEntry(appConfig: EcoPagesAppConfig, depKey: string, asset: ProcessedAsset): void;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { fileSystem } from "@ecopages/file-system";
|
|
3
|
-
import { getAppBrowserBuildPlugins } from "../build-adapter.js";
|
|
4
|
-
import { createBuildInputsFingerprint, hashAppConfigFile } from "./build-input-fingerprint.js";
|
|
5
|
-
import {
|
|
6
|
-
readProductionCacheManifest,
|
|
7
|
-
writeProductionCacheManifest,
|
|
8
|
-
isProductionCacheManifestCurrent,
|
|
9
|
-
matchesProductionCacheFingerprint
|
|
10
|
-
} from "./production-build-cache.js";
|
|
11
|
-
import { getCorePackageVersion } from "./cache-keys.js";
|
|
12
|
-
import { resolveInternalExecutionDir } from "../../utils/resolve-work-dir.js";
|
|
13
|
-
import { isDevelopmentRuntime } from "../../utils/runtime.js";
|
|
14
|
-
const DEV_BROWSER_SCRIPT_CACHE_DIR = ".browser-script-bundles";
|
|
15
|
-
const DEV_BROWSER_SCRIPT_CACHE_FILENAME = ".build-cache.json";
|
|
16
|
-
function getDevBrowserScriptCacheDir(appConfig) {
|
|
17
|
-
return path.join(resolveInternalExecutionDir(appConfig), DEV_BROWSER_SCRIPT_CACHE_DIR);
|
|
18
|
-
}
|
|
19
|
-
function getDevBrowserScriptCacheManifestPath(appConfig) {
|
|
20
|
-
return path.join(getDevBrowserScriptCacheDir(appConfig), DEV_BROWSER_SCRIPT_CACHE_FILENAME);
|
|
21
|
-
}
|
|
22
|
-
function createBrowserBuildKey(appConfig) {
|
|
23
|
-
try {
|
|
24
|
-
const pluginNames = getAppBrowserBuildPlugins(appConfig).map((plugin) => plugin.name).sort().join("|");
|
|
25
|
-
return pluginNames || "default";
|
|
26
|
-
} catch {
|
|
27
|
-
return "default";
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function createDevBrowserScriptCacheInvalidationVersion(appConfig) {
|
|
31
|
-
return [getCorePackageVersion(), hashAppConfigFile(appConfig), createBrowserBuildKey(appConfig)].join("::");
|
|
32
|
-
}
|
|
33
|
-
function readManifest(appConfig) {
|
|
34
|
-
const manifest = readProductionCacheManifest(
|
|
35
|
-
getDevBrowserScriptCacheManifestPath(appConfig)
|
|
36
|
-
);
|
|
37
|
-
if (!manifest) {
|
|
38
|
-
return void 0;
|
|
39
|
-
}
|
|
40
|
-
const invalidationVersion = createDevBrowserScriptCacheInvalidationVersion(appConfig);
|
|
41
|
-
const buildInputsFingerprint = createBuildInputsFingerprint(appConfig);
|
|
42
|
-
if (!isProductionCacheManifestCurrent(manifest, invalidationVersion) || !matchesProductionCacheFingerprint(manifest, buildInputsFingerprint)) {
|
|
43
|
-
return void 0;
|
|
44
|
-
}
|
|
45
|
-
return manifest;
|
|
46
|
-
}
|
|
47
|
-
function writeManifest(appConfig, manifest) {
|
|
48
|
-
writeProductionCacheManifest(getDevBrowserScriptCacheManifestPath(appConfig), manifest);
|
|
49
|
-
}
|
|
50
|
-
function shouldUseDevBrowserScriptCache() {
|
|
51
|
-
return isDevelopmentRuntime();
|
|
52
|
-
}
|
|
53
|
-
function getDevBrowserScriptCacheEntry(appConfig, depKey) {
|
|
54
|
-
if (!shouldUseDevBrowserScriptCache()) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
const manifest = readManifest(appConfig);
|
|
58
|
-
const entry = manifest?.entries[depKey];
|
|
59
|
-
if (!entry?.filepath || !fileSystem.exists(entry.filepath)) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
return { filepath: entry.filepath };
|
|
63
|
-
}
|
|
64
|
-
function setDevBrowserScriptCacheEntry(appConfig, depKey, asset) {
|
|
65
|
-
if (!shouldUseDevBrowserScriptCache() || !asset.filepath) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
const invalidationVersion = createDevBrowserScriptCacheInvalidationVersion(appConfig);
|
|
69
|
-
const buildInputsFingerprint = createBuildInputsFingerprint(appConfig);
|
|
70
|
-
const existing = readManifest(appConfig);
|
|
71
|
-
const manifest = existing ?? {
|
|
72
|
-
invalidationVersion,
|
|
73
|
-
buildInputsFingerprint,
|
|
74
|
-
entries: {}
|
|
75
|
-
};
|
|
76
|
-
manifest.invalidationVersion = invalidationVersion;
|
|
77
|
-
manifest.buildInputsFingerprint = buildInputsFingerprint;
|
|
78
|
-
manifest.entries[depKey] = {
|
|
79
|
-
filepath: asset.filepath,
|
|
80
|
-
builtAt: Date.now()
|
|
81
|
-
};
|
|
82
|
-
writeManifest(appConfig, manifest);
|
|
83
|
-
}
|
|
84
|
-
export {
|
|
85
|
-
DEV_BROWSER_SCRIPT_CACHE_DIR,
|
|
86
|
-
DEV_BROWSER_SCRIPT_CACHE_FILENAME,
|
|
87
|
-
getDevBrowserScriptCacheEntry,
|
|
88
|
-
setDevBrowserScriptCacheEntry,
|
|
89
|
-
shouldUseDevBrowserScriptCache
|
|
90
|
-
};
|