@ecopages/core 0.2.0-beta.31 → 0.2.0-beta.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/package.json +82 -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/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/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,256 +1,248 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import { pathToFileURL } from
|
|
3
|
-
import { fileSystem } from
|
|
4
|
-
import { build } from
|
|
5
|
-
import { createServerBuildRequest } from
|
|
6
|
-
import { resolveBuildProfileOptions } from
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
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
|
-
|
|
44
|
-
this.importCache.clear();
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Invalidates all previously imported modules in development by clearing the
|
|
48
|
-
* import cache and incrementing the invalidation version included in cache keys.
|
|
49
|
-
*
|
|
50
|
-
* This forces all modules to be reloaded on the next import, even if their
|
|
51
|
-
* source content hasn't changed. This is necessary to ensure that changes to
|
|
52
|
-
* non-content aspects of modules (e.g. dependencies, transpilation output)
|
|
53
|
-
* are picked up during development.
|
|
54
|
-
*/
|
|
55
|
-
invalidateDevelopmentGraph() {
|
|
56
|
-
this.clearImportCache();
|
|
57
|
-
this.dependencyHasher.clearMemo();
|
|
58
|
-
this.developmentInvalidationVersion += 1;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Imports a page-like module from source.
|
|
62
|
-
*
|
|
63
|
-
* The caller controls the output directory and error wording so different
|
|
64
|
-
* subsystems can reuse the same loading mechanism while preserving their
|
|
65
|
-
* current diagnostics. Module identities stay stable for unchanged files and
|
|
66
|
-
* roll forward automatically when the source hash changes during watch mode.
|
|
67
|
-
*
|
|
68
|
-
* @typeParam T Expected module shape.
|
|
69
|
-
* @param options Runtime-specific import settings.
|
|
70
|
-
* @returns The loaded module.
|
|
71
|
-
*/
|
|
72
|
-
async importModule(options) {
|
|
73
|
-
const { filePath } = options;
|
|
74
|
-
const invalidationVersion = options.invalidationVersion ?? this.developmentInvalidationVersion;
|
|
75
|
-
const { externalPackages, splitting } = options;
|
|
76
|
-
const fileHash = this.dependencies.hashFile(filePath);
|
|
77
|
-
const hostModuleLoader = typeof Bun === "undefined" && process.env.NODE_ENV === "development" && this.dependencies.canLoadSourceModuleFromHost(filePath) ? this.dependencies.getHostModuleLoader() : void 0;
|
|
78
|
-
if (hostModuleLoader) {
|
|
79
|
-
const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, invalidationVersion, options.cacheScope);
|
|
80
|
-
return await hostModuleLoader(sourceModuleUrl.href);
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { fileSystem } from '@ecopages/file-system';
|
|
4
|
+
import { build } from '../../build/build-adapter.js';
|
|
5
|
+
import { createServerBuildRequest } from '../../build/runtime/build-request-policy.js';
|
|
6
|
+
import { resolveBuildProfileOptions } from '../../build/runtime/build-profile-options.js';
|
|
7
|
+
import { importPagesUnifiedGraphModule, isPagesUnifiedGraphPage, shouldBuildPagesUnifiedGraph, } from '../../build/cache/pages-unified-graph-build.js';
|
|
8
|
+
import { recordPageModuleBuildInvocation } from '../../build/rolldown/rolldown-build-invocation-metrics.js';
|
|
9
|
+
import { resolvePageModuleOutputFileName } from './route-module-build-cache.js';
|
|
10
|
+
import { createPluginCacheKey, createJsxCacheKey } from '../../build/cache/cache-keys.js';
|
|
11
|
+
import { getSharedRouteModuleBuildCache } from './route-module-build-cache-registry.js';
|
|
12
|
+
import { RouteModuleDependencyHasher, resolveRouteModuleDependencyPaths, } from './route-module-dependency-hasher.js';
|
|
13
|
+
import { supportsSourceModuleLoading } from './source-module-support.js';
|
|
14
|
+
/**
|
|
15
|
+
* Loads page-like modules through the Ecopages build pipeline.
|
|
16
|
+
*
|
|
17
|
+
* This service centralizes the shared build-first import strategy used by route
|
|
18
|
+
* scanning, page data loading, and request-time page inspection. In Node
|
|
19
|
+
* development it can still delegate compatible source imports to the active
|
|
20
|
+
* host loader, but the public contract remains one transpile-targeted module
|
|
21
|
+
* loading path.
|
|
22
|
+
*
|
|
23
|
+
* Keeping this logic in one place prevents subtle drift in cache-busting,
|
|
24
|
+
* transpilation settings, and error semantics across the different callers.
|
|
25
|
+
*/
|
|
26
|
+
export class PageModuleImportService {
|
|
27
|
+
appConfig;
|
|
28
|
+
dependencies;
|
|
29
|
+
dependencyHasher;
|
|
30
|
+
importCache = new Map();
|
|
31
|
+
developmentInvalidationVersion = 0;
|
|
32
|
+
constructor(appConfig, dependencies) {
|
|
33
|
+
this.appConfig = appConfig;
|
|
34
|
+
this.dependencies = {
|
|
35
|
+
hashFile: dependencies?.hashFile ?? ((filePath) => fileSystem.hash(filePath)),
|
|
36
|
+
buildModule: dependencies?.buildModule ?? ((options, buildExecutor) => build(options, buildExecutor)),
|
|
37
|
+
canLoadSourceModuleFromHost: dependencies?.canLoadSourceModuleFromHost ?? supportsSourceModuleLoading,
|
|
38
|
+
getHostModuleLoader: dependencies?.getHostModuleLoader ?? (() => undefined),
|
|
39
|
+
};
|
|
40
|
+
this.dependencyHasher = new RouteModuleDependencyHasher({
|
|
41
|
+
hashFile: (filePath) => this.dependencies.hashFile(filePath),
|
|
42
|
+
exists: (filePath) => fileSystem.exists(filePath),
|
|
43
|
+
});
|
|
81
44
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
fileHash
|
|
88
|
-
});
|
|
45
|
+
/**
|
|
46
|
+
* Clears the shared import cache used by framework-owned page-module loads.
|
|
47
|
+
*/
|
|
48
|
+
clearImportCache() {
|
|
49
|
+
this.importCache.clear();
|
|
89
50
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
].join("::");
|
|
104
|
-
const cachedModule = this.importCache.get(cacheKey);
|
|
105
|
-
if (cachedModule) {
|
|
106
|
-
if (!cachedModule.dependencyHashes) {
|
|
107
|
-
return await cachedModule.promise;
|
|
108
|
-
}
|
|
109
|
-
if (this.dependencyHasher.matchesStoredHashes(cachedModule.dependencyHashes, filePath, fileHash)) {
|
|
110
|
-
return await cachedModule.promise;
|
|
111
|
-
}
|
|
112
|
-
this.importCache.delete(cacheKey);
|
|
51
|
+
/**
|
|
52
|
+
* Invalidates all previously imported modules in development by clearing the
|
|
53
|
+
* import cache and incrementing the invalidation version included in cache keys.
|
|
54
|
+
*
|
|
55
|
+
* This forces all modules to be reloaded on the next import, even if their
|
|
56
|
+
* source content hasn't changed. This is necessary to ensure that changes to
|
|
57
|
+
* non-content aspects of modules (e.g. dependencies, transpilation output)
|
|
58
|
+
* are picked up during development.
|
|
59
|
+
*/
|
|
60
|
+
invalidateDevelopmentGraph() {
|
|
61
|
+
this.clearImportCache();
|
|
62
|
+
this.dependencyHasher.clearMemo();
|
|
63
|
+
this.developmentInvalidationVersion += 1;
|
|
113
64
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Imports a page-like module from source.
|
|
67
|
+
*
|
|
68
|
+
* The caller controls the output directory and error wording so different
|
|
69
|
+
* subsystems can reuse the same loading mechanism while preserving their
|
|
70
|
+
* current diagnostics. Module identities stay stable for unchanged files and
|
|
71
|
+
* roll forward automatically when the source hash changes during watch mode.
|
|
72
|
+
*
|
|
73
|
+
* @typeParam T Expected module shape.
|
|
74
|
+
* @param options Runtime-specific import settings.
|
|
75
|
+
* @returns The loaded module.
|
|
76
|
+
*/
|
|
77
|
+
async importModule(options) {
|
|
78
|
+
const { filePath } = options;
|
|
79
|
+
const invalidationVersion = options.invalidationVersion ?? this.developmentInvalidationVersion;
|
|
80
|
+
const { externalPackages, splitting } = options;
|
|
81
|
+
const fileHash = this.dependencies.hashFile(filePath);
|
|
82
|
+
const hostModuleLoader = typeof Bun === 'undefined' &&
|
|
83
|
+
process.env.NODE_ENV === 'development' &&
|
|
84
|
+
this.dependencies.canLoadSourceModuleFromHost(filePath)
|
|
85
|
+
? this.dependencies.getHostModuleLoader()
|
|
86
|
+
: undefined;
|
|
87
|
+
if (hostModuleLoader) {
|
|
88
|
+
const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, invalidationVersion, options.cacheScope);
|
|
89
|
+
return (await hostModuleLoader(sourceModuleUrl.href));
|
|
90
|
+
}
|
|
91
|
+
if (options.bypassCache) {
|
|
92
|
+
this.developmentInvalidationVersion += 1;
|
|
93
|
+
return await this.loadModule({
|
|
94
|
+
...options,
|
|
95
|
+
invalidationVersion: this.developmentInvalidationVersion,
|
|
96
|
+
fileHash,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const runtime = typeof Bun !== 'undefined' ? 'bun' : 'node-build';
|
|
100
|
+
const cacheKey = [
|
|
101
|
+
runtime,
|
|
102
|
+
filePath,
|
|
103
|
+
options.rootDir,
|
|
104
|
+
path.resolve(options.outdir),
|
|
105
|
+
splitting ?? 'default',
|
|
106
|
+
externalPackages ?? 'default',
|
|
107
|
+
options.cacheScope ?? 'default',
|
|
108
|
+
createJsxCacheKey(options.jsx),
|
|
109
|
+
createPluginCacheKey(options.plugins),
|
|
110
|
+
fileHash,
|
|
111
|
+
invalidationVersion,
|
|
112
|
+
].join('::');
|
|
113
|
+
const cachedModule = this.importCache.get(cacheKey);
|
|
114
|
+
if (cachedModule) {
|
|
115
|
+
if (!cachedModule.dependencyHashes) {
|
|
116
|
+
return (await cachedModule.promise);
|
|
117
|
+
}
|
|
118
|
+
if (this.dependencyHasher.matchesStoredHashes(cachedModule.dependencyHashes, filePath, fileHash)) {
|
|
119
|
+
return (await cachedModule.promise);
|
|
120
|
+
}
|
|
121
|
+
this.importCache.delete(cacheKey);
|
|
122
|
+
}
|
|
123
|
+
const importPromise = this.loadModule({
|
|
124
|
+
...options,
|
|
125
|
+
fileHash,
|
|
126
|
+
importCacheKey: cacheKey,
|
|
127
|
+
});
|
|
128
|
+
this.importCache.set(cacheKey, { promise: importPromise });
|
|
129
|
+
try {
|
|
130
|
+
return await importPromise;
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
this.importCache.delete(cacheKey);
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
125
136
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
137
|
+
async loadModule(options) {
|
|
138
|
+
const { filePath, invalidationVersion = this.developmentInvalidationVersion, cacheScope, fileHash, importCacheKey, } = options;
|
|
139
|
+
const { rootDir, outdir, splitting, externalPackages, transpileErrorMessage = (details) => `Error transpiling page module: ${details}`, noOutputMessage = (targetFilePath) => `No transpiled output generated for page module: ${targetFilePath}`, } = options;
|
|
140
|
+
const outputFileName = resolvePageModuleOutputFileName({
|
|
141
|
+
filePath,
|
|
142
|
+
fileHash,
|
|
143
|
+
cacheScope,
|
|
144
|
+
invalidationVersion,
|
|
145
|
+
});
|
|
146
|
+
const outputNamingTemplate = outputFileName.replace(/\.mjs$/u, '.[ext]');
|
|
147
|
+
const preferredOutputPath = path.join(outdir, outputFileName);
|
|
148
|
+
const buildOptions = this.appConfig
|
|
149
|
+
? createServerBuildRequest(this.appConfig, {
|
|
150
|
+
profile: 'route-module',
|
|
151
|
+
entrypoints: [filePath],
|
|
152
|
+
outdir,
|
|
153
|
+
naming: outputNamingTemplate,
|
|
154
|
+
splitting: splitting ?? true,
|
|
155
|
+
jsx: options.jsx,
|
|
156
|
+
plugins: options.plugins,
|
|
157
|
+
root: rootDir,
|
|
158
|
+
...(externalPackages !== undefined ? { externalPackages } : {}),
|
|
159
|
+
})
|
|
160
|
+
: {
|
|
161
|
+
...resolveBuildProfileOptions('route-module', { rootDir }, {
|
|
162
|
+
entrypoints: [filePath],
|
|
163
|
+
outdir,
|
|
164
|
+
naming: outputNamingTemplate,
|
|
165
|
+
splitting: splitting ?? true,
|
|
166
|
+
jsx: options.jsx,
|
|
167
|
+
plugins: options.plugins,
|
|
168
|
+
...(externalPackages !== undefined ? { externalPackages } : {}),
|
|
169
|
+
}),
|
|
170
|
+
root: rootDir,
|
|
171
|
+
entrypoints: [filePath],
|
|
172
|
+
};
|
|
173
|
+
const cacheBuildOptions = {
|
|
174
|
+
...options,
|
|
175
|
+
rootDir: buildOptions.root ?? rootDir,
|
|
176
|
+
outdir: buildOptions.outdir ?? outdir,
|
|
177
|
+
splitting: buildOptions.splitting,
|
|
178
|
+
externalPackages: buildOptions.externalPackages,
|
|
179
|
+
jsx: buildOptions.jsx,
|
|
180
|
+
plugins: buildOptions.plugins,
|
|
181
|
+
fileHash,
|
|
182
|
+
};
|
|
183
|
+
const routeModuleBuildCache = this.getRouteModuleBuildCache(outdir);
|
|
184
|
+
const cachedBuild = routeModuleBuildCache.lookup(cacheBuildOptions);
|
|
185
|
+
if (cachedBuild) {
|
|
186
|
+
return (await import(/* @vite-ignore */ pathToFileURL(cachedBuild.outputPath).href));
|
|
187
|
+
}
|
|
188
|
+
if (!cacheScope &&
|
|
189
|
+
shouldBuildPagesUnifiedGraph() &&
|
|
190
|
+
this.appConfig &&
|
|
191
|
+
isPagesUnifiedGraphPage(filePath, this.appConfig)) {
|
|
192
|
+
const graphModule = await importPagesUnifiedGraphModule(this.appConfig, filePath);
|
|
193
|
+
if (graphModule !== undefined) {
|
|
194
|
+
return graphModule;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
recordPageModuleBuildInvocation();
|
|
198
|
+
const buildResult = await this.dependencies.buildModule(buildOptions, options.buildExecutor);
|
|
199
|
+
if (!buildResult.success) {
|
|
200
|
+
const details = buildResult.logs.map((log) => log.message).join(' | ');
|
|
201
|
+
throw new Error(transpileErrorMessage(details));
|
|
202
|
+
}
|
|
203
|
+
const compiledOutput = buildResult.outputs.find((output) => output.path === preferredOutputPath)?.path ??
|
|
204
|
+
buildResult.outputs.find((output) => /\.(?:[cm]?js)$/u.test(output.path))?.path;
|
|
205
|
+
if (!compiledOutput) {
|
|
206
|
+
throw new Error(noOutputMessage(filePath));
|
|
207
|
+
}
|
|
208
|
+
const dependencyModulePaths = resolveRouteModuleDependencyPaths(buildResult, filePath, rootDir);
|
|
209
|
+
const dependencyHashes = this.dependencyHasher.createDependencyHashes(dependencyModulePaths);
|
|
210
|
+
dependencyHashes[path.normalize(filePath)] = fileHash;
|
|
211
|
+
if (importCacheKey) {
|
|
212
|
+
const cacheEntry = this.importCache.get(importCacheKey);
|
|
213
|
+
if (cacheEntry) {
|
|
214
|
+
cacheEntry.dependencyHashes = dependencyHashes;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
routeModuleBuildCache.recordBuild({
|
|
218
|
+
...cacheBuildOptions,
|
|
219
|
+
outputPath: compiledOutput,
|
|
220
|
+
dependencyModulePaths,
|
|
221
|
+
});
|
|
222
|
+
const compiledOutputUrl = pathToFileURL(compiledOutput);
|
|
223
|
+
if (shouldAddRuntimeUpdateQuery(invalidationVersion, cacheScope)) {
|
|
224
|
+
compiledOutputUrl.searchParams.set('update', [fileHash, invalidationVersion, cacheScope ? sanitizeCacheScope(cacheScope) : undefined]
|
|
225
|
+
.filter((value) => value !== undefined)
|
|
226
|
+
.join('-'));
|
|
227
|
+
}
|
|
228
|
+
return (await import(/* @vite-ignore */ compiledOutputUrl.href));
|
|
191
229
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (graphModule !== void 0) {
|
|
195
|
-
return graphModule;
|
|
196
|
-
}
|
|
230
|
+
getRouteModuleBuildCache(outdir) {
|
|
231
|
+
return getSharedRouteModuleBuildCache(outdir, this.appConfig);
|
|
197
232
|
}
|
|
198
|
-
recordPageModuleBuildInvocation();
|
|
199
|
-
const buildResult = await this.dependencies.buildModule(buildOptions, options.buildExecutor);
|
|
200
|
-
if (!buildResult.success) {
|
|
201
|
-
const details = buildResult.logs.map((log) => log.message).join(" | ");
|
|
202
|
-
throw new Error(transpileErrorMessage(details));
|
|
203
|
-
}
|
|
204
|
-
const compiledOutput = buildResult.outputs.find((output) => output.path === preferredOutputPath)?.path ?? buildResult.outputs.find((output) => /\.(?:[cm]?js)$/u.test(output.path))?.path;
|
|
205
|
-
if (!compiledOutput) {
|
|
206
|
-
throw new Error(noOutputMessage(filePath));
|
|
207
|
-
}
|
|
208
|
-
const dependencyModulePaths = resolveRouteModuleDependencyPaths(buildResult, filePath, rootDir);
|
|
209
|
-
const dependencyHashes = this.dependencyHasher.createDependencyHashes(dependencyModulePaths);
|
|
210
|
-
dependencyHashes[path.normalize(filePath)] = fileHash;
|
|
211
|
-
if (importCacheKey) {
|
|
212
|
-
const cacheEntry = this.importCache.get(importCacheKey);
|
|
213
|
-
if (cacheEntry) {
|
|
214
|
-
cacheEntry.dependencyHashes = dependencyHashes;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
routeModuleBuildCache.recordBuild({
|
|
218
|
-
...cacheBuildOptions,
|
|
219
|
-
outputPath: compiledOutput,
|
|
220
|
-
dependencyModulePaths
|
|
221
|
-
});
|
|
222
|
-
const compiledOutputUrl = pathToFileURL(compiledOutput);
|
|
223
|
-
if (shouldAddRuntimeUpdateQuery(invalidationVersion, cacheScope)) {
|
|
224
|
-
compiledOutputUrl.searchParams.set(
|
|
225
|
-
"update",
|
|
226
|
-
[fileHash, invalidationVersion, cacheScope ? sanitizeCacheScope(cacheScope) : void 0].filter((value) => value !== void 0).join("-")
|
|
227
|
-
);
|
|
228
|
-
}
|
|
229
|
-
return await import(
|
|
230
|
-
/* @vite-ignore */
|
|
231
|
-
compiledOutputUrl.href
|
|
232
|
-
);
|
|
233
|
-
}
|
|
234
|
-
getRouteModuleBuildCache(outdir) {
|
|
235
|
-
return getSharedRouteModuleBuildCache(outdir, this.appConfig);
|
|
236
|
-
}
|
|
237
233
|
}
|
|
238
234
|
function createRuntimeModuleUrl(filePath, fileHash, invalidationVersion, cacheScope) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return moduleUrl;
|
|
235
|
+
const moduleUrl = pathToFileURL(filePath);
|
|
236
|
+
if (shouldAddRuntimeUpdateQuery(invalidationVersion, cacheScope)) {
|
|
237
|
+
moduleUrl.searchParams.set('update', [fileHash, invalidationVersion, cacheScope ? sanitizeCacheScope(cacheScope) : undefined]
|
|
238
|
+
.filter((value) => value !== undefined)
|
|
239
|
+
.join('-'));
|
|
240
|
+
}
|
|
241
|
+
return moduleUrl;
|
|
247
242
|
}
|
|
248
243
|
function shouldAddRuntimeUpdateQuery(invalidationVersion, cacheScope) {
|
|
249
|
-
|
|
244
|
+
return process.env.NODE_ENV === 'development' || invalidationVersion > 0 || !!cacheScope;
|
|
250
245
|
}
|
|
251
246
|
function sanitizeCacheScope(cacheScope) {
|
|
252
|
-
|
|
247
|
+
return cacheScope.replace(/[^a-zA-Z0-9_-]+/g, '-');
|
|
253
248
|
}
|
|
254
|
-
export {
|
|
255
|
-
PageModuleImportService
|
|
256
|
-
};
|
|
@@ -1,37 +1,51 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import { resolveInternalExecutionDir } from
|
|
3
|
-
import { RouteModuleBuildCache } from
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { resolveInternalExecutionDir } from '../../utils/resolve-work-dir.js';
|
|
3
|
+
import { RouteModuleBuildCache } from './route-module-build-cache.store.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns the outdir whose transpile cache backs incremental static generation.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Static pages render through `.eco/.server-modules`. The manifest there carries
|
|
9
|
+
* import-graph hashes from transpile, so static-render reuse must read the same
|
|
10
|
+
* directory rather than `.server-route-modules`, which only serves route-registry
|
|
11
|
+
* scanning.
|
|
12
|
+
*/
|
|
13
|
+
export function getServerModuleBuildCacheOutdir(appConfig) {
|
|
14
|
+
return path.join(resolveInternalExecutionDir(appConfig), '.server-modules');
|
|
6
15
|
}
|
|
7
|
-
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use {@link getServerModuleBuildCacheOutdir}.
|
|
18
|
+
*/
|
|
19
|
+
export const getRouteModuleBuildCacheOutdir = getServerModuleBuildCacheOutdir;
|
|
8
20
|
function getRouteModuleBuildCacheMap(appConfig) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
const existing = appConfig.runtime?.routeModuleBuildCaches;
|
|
22
|
+
if (existing) {
|
|
23
|
+
return existing;
|
|
24
|
+
}
|
|
25
|
+
const routeModuleBuildCaches = new Map();
|
|
26
|
+
appConfig.runtime = {
|
|
27
|
+
...(appConfig.runtime ?? {}),
|
|
28
|
+
routeModuleBuildCaches,
|
|
29
|
+
};
|
|
30
|
+
return routeModuleBuildCaches;
|
|
19
31
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Returns the shared production build cache for one server-module outdir.
|
|
34
|
+
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* One app-scoped instance prevents manifest drift between page imports and static
|
|
37
|
+
* generation during the same build process.
|
|
38
|
+
*/
|
|
39
|
+
export function getSharedRouteModuleBuildCache(outdir, appConfig) {
|
|
40
|
+
if (!appConfig) {
|
|
41
|
+
return new RouteModuleBuildCache(outdir);
|
|
42
|
+
}
|
|
43
|
+
const caches = getRouteModuleBuildCacheMap(appConfig);
|
|
44
|
+
const existingCache = caches.get(outdir);
|
|
45
|
+
if (existingCache) {
|
|
46
|
+
return existingCache;
|
|
47
|
+
}
|
|
48
|
+
const routeModuleBuildCache = new RouteModuleBuildCache(outdir);
|
|
49
|
+
caches.set(outdir, routeModuleBuildCache);
|
|
50
|
+
return routeModuleBuildCache;
|
|
32
51
|
}
|
|
33
|
-
export {
|
|
34
|
-
getRouteModuleBuildCacheOutdir,
|
|
35
|
-
getServerModuleBuildCacheOutdir,
|
|
36
|
-
getSharedRouteModuleBuildCache
|
|
37
|
-
};
|
|
@@ -1,38 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
createPersistedRouteModuleBuildKey,
|
|
5
|
-
createPluginCacheKey,
|
|
6
|
-
createJsxCacheKey,
|
|
7
|
-
hashPluginSetup,
|
|
8
|
-
getCorePackageVersion,
|
|
9
|
-
normalizeRouteModuleCachePath,
|
|
10
|
-
readRouteModuleBuildCacheManifest,
|
|
11
|
-
resolvePageModuleOutputFileName,
|
|
12
|
-
shouldPersistRouteModuleBuildCache,
|
|
13
|
-
writeRouteModuleBuildCacheManifest
|
|
14
|
-
} from "./route-module-build-manifest.js";
|
|
15
|
-
import { RouteModuleBuildCache } from "./route-module-build-cache.store.js";
|
|
16
|
-
import {
|
|
17
|
-
getRouteModuleBuildCacheOutdir,
|
|
18
|
-
getServerModuleBuildCacheOutdir,
|
|
19
|
-
getSharedRouteModuleBuildCache
|
|
20
|
-
} from "./route-module-build-cache-registry.js";
|
|
21
|
-
export {
|
|
22
|
-
ROUTE_MODULE_BUILD_CACHE_FILENAME,
|
|
23
|
-
RouteModuleBuildCache,
|
|
24
|
-
createEmptyRouteModuleBuildCacheManifest,
|
|
25
|
-
createJsxCacheKey,
|
|
26
|
-
createPersistedRouteModuleBuildKey,
|
|
27
|
-
createPluginCacheKey,
|
|
28
|
-
getCorePackageVersion,
|
|
29
|
-
getRouteModuleBuildCacheOutdir,
|
|
30
|
-
getServerModuleBuildCacheOutdir,
|
|
31
|
-
getSharedRouteModuleBuildCache,
|
|
32
|
-
hashPluginSetup,
|
|
33
|
-
normalizeRouteModuleCachePath,
|
|
34
|
-
readRouteModuleBuildCacheManifest,
|
|
35
|
-
resolvePageModuleOutputFileName,
|
|
36
|
-
shouldPersistRouteModuleBuildCache,
|
|
37
|
-
writeRouteModuleBuildCacheManifest
|
|
38
|
-
};
|
|
1
|
+
export { ROUTE_MODULE_BUILD_CACHE_FILENAME, createEmptyRouteModuleBuildCacheManifest, createPersistedRouteModuleBuildKey, createPluginCacheKey, createJsxCacheKey, hashPluginSetup, getCorePackageVersion, normalizeRouteModuleCachePath, readRouteModuleBuildCacheManifest, resolvePageModuleOutputFileName, shouldPersistRouteModuleBuildCache, writeRouteModuleBuildCacheManifest, } from './route-module-build-manifest.js';
|
|
2
|
+
export { RouteModuleBuildCache } from './route-module-build-cache.store.js';
|
|
3
|
+
export { getRouteModuleBuildCacheOutdir, getServerModuleBuildCacheOutdir, getSharedRouteModuleBuildCache, } from './route-module-build-cache-registry.js';
|