@ecopages/core 0.2.0-beta.30 → 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,165 +1,153 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import { fileSystem } from
|
|
3
|
-
import { resolveServerAppBuildPlugins } from
|
|
4
|
-
import { createBuildInputsFingerprint } from
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
RouteModuleDependencyHasher,
|
|
15
|
-
createRouteModuleDependencyHashes
|
|
16
|
-
} from "../../services/module-loading/route-module-dependency-hasher.js";
|
|
17
|
-
import { resolveInternalExecutionDir } from "../../utils/resolve-work-dir.js";
|
|
18
|
-
import { SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME } from "../../utils/resolve-entry-file.js";
|
|
19
|
-
import { SERVER_ENTRY_BUILD_CACHE_FILENAME } from "./cache-constants.js";
|
|
20
|
-
import { SERVER_ENTRY_BUILD_CACHE_FILENAME as SERVER_ENTRY_BUILD_CACHE_FILENAME2 } from "./cache-constants.js";
|
|
21
|
-
const SERVER_BUNDLE_MANIFEST_FILENAME = "manifest.json";
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { fileSystem } from '@ecopages/file-system';
|
|
3
|
+
import { resolveServerAppBuildPlugins } from '../runtime/build-request-policy.js';
|
|
4
|
+
import { createBuildInputsFingerprint } from './build-input-fingerprint.js';
|
|
5
|
+
import { isProductionCacheManifestCurrent, matchesProductionCacheBuildKey, matchesProductionCacheFingerprint, readProductionCacheManifest, writeProductionCacheManifest, } from './production-build-cache.js';
|
|
6
|
+
import { createPluginCacheKey, getCorePackageVersion } from './cache-keys.js';
|
|
7
|
+
import { RouteModuleDependencyHasher, createRouteModuleDependencyHashes, } from '../../services/module-loading/route-module-dependency-hasher.js';
|
|
8
|
+
import { resolveInternalExecutionDir } from '../../utils/resolve-work-dir.js';
|
|
9
|
+
import { SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME } from '../../utils/resolve-entry-file.js';
|
|
10
|
+
import { SERVER_ENTRY_BUILD_CACHE_FILENAME } from './cache-constants.js';
|
|
11
|
+
export { SERVER_ENTRY_BUILD_CACHE_FILENAME } from './cache-constants.js';
|
|
12
|
+
export const SERVER_BUNDLE_MANIFEST_FILENAME = 'manifest.json';
|
|
22
13
|
function getServerEntryCacheDir(appConfig) {
|
|
23
|
-
|
|
14
|
+
return path.join(resolveInternalExecutionDir(appConfig), '.server-entry');
|
|
24
15
|
}
|
|
25
16
|
function getServerEntryCacheManifestPath(appConfig) {
|
|
26
|
-
|
|
17
|
+
return path.join(getServerEntryCacheDir(appConfig), SERVER_ENTRY_BUILD_CACHE_FILENAME);
|
|
27
18
|
}
|
|
28
19
|
function hashDependencyGraph(entryPath, dependencyGraph, hasher, rootDir) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
if (!dependencyGraph) {
|
|
21
|
+
return { [path.resolve(entryPath)]: fileSystem.hash(entryPath) };
|
|
22
|
+
}
|
|
23
|
+
return createRouteModuleDependencyHashes(hasher, { dependencyGraph }, entryPath, rootDir);
|
|
33
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Fingerprints the app-owned output-affecting server request policy.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* Includes ordered server plugins and JSX ownership plugins via
|
|
30
|
+
* {@link resolveServerAppBuildPlugins}. The versioned prefix intentionally
|
|
31
|
+
* invalidates manifests written before server requests included JSX ownership.
|
|
32
|
+
*/
|
|
34
33
|
function createServerEntryBuildKey(appConfig) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
try {
|
|
35
|
+
return [
|
|
36
|
+
'server-entry-request-v2',
|
|
37
|
+
'node',
|
|
38
|
+
'esm',
|
|
39
|
+
'external-packages',
|
|
40
|
+
createPluginCacheKey(resolveServerAppBuildPlugins(appConfig)),
|
|
41
|
+
].join('::');
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return 'server-entry-request-v2::node::esm::external-packages';
|
|
45
|
+
}
|
|
46
46
|
}
|
|
47
|
-
function getServerBundleOutputPaths(appConfig) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
export function getServerBundleOutputPaths(appConfig) {
|
|
48
|
+
const distDir = appConfig.absolutePaths?.distDir ?? path.join(appConfig.rootDir, appConfig.distDir);
|
|
49
|
+
const serverOutdir = path.join(distDir, SERVER_BUNDLE_DIR);
|
|
50
|
+
const serverEntryPath = path.join(serverOutdir, SERVER_BUNDLE_FILENAME);
|
|
51
|
+
const manifestPath = path.join(serverOutdir, SERVER_BUNDLE_MANIFEST_FILENAME);
|
|
52
|
+
return { distDir, serverOutdir, serverEntryPath, manifestPath };
|
|
53
53
|
}
|
|
54
|
-
function readServerEntryBuildCacheManifest(appConfig) {
|
|
55
|
-
|
|
54
|
+
export function readServerEntryBuildCacheManifest(appConfig) {
|
|
55
|
+
return readProductionCacheManifest(getServerEntryCacheManifestPath(appConfig));
|
|
56
56
|
}
|
|
57
57
|
function writeServerEntryBuildCacheManifest(appConfig, manifest) {
|
|
58
|
-
|
|
59
|
-
path.join(getServerEntryCacheDir(appConfig), SERVER_ENTRY_BUILD_CACHE_FILENAME),
|
|
60
|
-
manifest
|
|
61
|
-
);
|
|
58
|
+
writeProductionCacheManifest(path.join(getServerEntryCacheDir(appConfig), SERVER_ENTRY_BUILD_CACHE_FILENAME), manifest);
|
|
62
59
|
}
|
|
63
|
-
function writeServerBundleDeployManifest(appConfig, serverEntryPath) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
`);
|
|
60
|
+
export function writeServerBundleDeployManifest(appConfig, serverEntryPath) {
|
|
61
|
+
const { distDir, manifestPath } = getServerBundleOutputPaths(appConfig);
|
|
62
|
+
fileSystem.ensureDir(path.dirname(manifestPath));
|
|
63
|
+
const payload = {
|
|
64
|
+
serverEntry: path.relative(path.dirname(manifestPath), serverEntryPath) || SERVER_BUNDLE_FILENAME,
|
|
65
|
+
distDir,
|
|
66
|
+
builtAt: Date.now(),
|
|
67
|
+
};
|
|
68
|
+
fileSystem.write(manifestPath, `${JSON.stringify(payload, null, '\t')}\n`);
|
|
73
69
|
}
|
|
74
|
-
function lookupServerEntryBuildCache(options) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
70
|
+
export function lookupServerEntryBuildCache(options) {
|
|
71
|
+
if (options.force) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
const entryPath = path.resolve(options.entryPath);
|
|
78
|
+
const entryHash = fileSystem.hash(entryPath);
|
|
79
|
+
const buildInputsFingerprint = createBuildInputsFingerprint(options.appConfig);
|
|
80
|
+
const buildKey = createServerEntryBuildKey(options.appConfig);
|
|
81
|
+
const manifest = readServerEntryBuildCacheManifest(options.appConfig);
|
|
82
|
+
if (!manifest) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
if (!isProductionCacheManifestCurrent(manifest, getCorePackageVersion())) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
if (manifest.entryPath !== entryPath ||
|
|
89
|
+
manifest.entryHash !== entryHash ||
|
|
90
|
+
!matchesProductionCacheFingerprint(manifest, buildInputsFingerprint) ||
|
|
91
|
+
!matchesProductionCacheBuildKey(manifest, buildKey)) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
const hasher = new RouteModuleDependencyHasher();
|
|
95
|
+
if (!hasher.matchesStoredHashes(manifest.dependencyHashes, entryPath, entryHash)) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
const existingOutputs = manifest.outputPaths.filter((outputPath) => fileSystem.exists(outputPath));
|
|
99
|
+
if (existingOutputs.length === 0) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
manifest,
|
|
104
|
+
outputPaths: existingOutputs,
|
|
105
|
+
};
|
|
107
106
|
}
|
|
108
|
-
function recordServerEntryBuildCache(options) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
outputPaths: options.outputPaths,
|
|
128
|
-
dependencyHashes,
|
|
129
|
-
builtAt: Date.now()
|
|
130
|
-
};
|
|
131
|
-
writeServerEntryBuildCacheManifest(options.appConfig, manifest);
|
|
107
|
+
export function recordServerEntryBuildCache(options) {
|
|
108
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const entryPath = path.resolve(options.entryPath);
|
|
112
|
+
const entryHash = fileSystem.hash(entryPath);
|
|
113
|
+
const hasher = new RouteModuleDependencyHasher();
|
|
114
|
+
const dependencyHashes = hashDependencyGraph(entryPath, options.buildResult.dependencyGraph, hasher, options.appConfig.rootDir);
|
|
115
|
+
const manifest = {
|
|
116
|
+
invalidationVersion: getCorePackageVersion(),
|
|
117
|
+
entryPath,
|
|
118
|
+
entryHash,
|
|
119
|
+
buildInputsFingerprint: createBuildInputsFingerprint(options.appConfig),
|
|
120
|
+
buildKey: createServerEntryBuildKey(options.appConfig),
|
|
121
|
+
outputPaths: options.outputPaths,
|
|
122
|
+
dependencyHashes,
|
|
123
|
+
builtAt: Date.now(),
|
|
124
|
+
};
|
|
125
|
+
writeServerEntryBuildCacheManifest(options.appConfig, manifest);
|
|
132
126
|
}
|
|
133
|
-
function resolveProductionServerEntry(cwd = process.cwd()) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
127
|
+
export function resolveProductionServerEntry(cwd = process.cwd()) {
|
|
128
|
+
const manifestPath = path.join(cwd, 'dist', SERVER_BUNDLE_DIR, SERVER_BUNDLE_MANIFEST_FILENAME);
|
|
129
|
+
if (fileSystem.exists(manifestPath)) {
|
|
130
|
+
try {
|
|
131
|
+
const parsed = JSON.parse(fileSystem.readFileSync(manifestPath));
|
|
132
|
+
if (parsed?.serverEntry) {
|
|
133
|
+
const fromManifest = path.isAbsolute(parsed.serverEntry)
|
|
134
|
+
? parsed.serverEntry
|
|
135
|
+
: path.join(path.dirname(manifestPath), parsed.serverEntry);
|
|
136
|
+
if (fileSystem.exists(fromManifest)) {
|
|
137
|
+
return fromManifest;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (parsed?.distDir) {
|
|
141
|
+
const fromDistDir = path.join(parsed.distDir, SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME);
|
|
142
|
+
if (fileSystem.exists(fromDistDir)) {
|
|
143
|
+
return fromDistDir;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
142
146
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const fromDistDir = path.join(parsed.distDir, SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME);
|
|
146
|
-
if (fileSystem.exists(fromDistDir)) {
|
|
147
|
-
return fromDistDir;
|
|
147
|
+
catch {
|
|
148
|
+
// fall through to legacy path
|
|
148
149
|
}
|
|
149
|
-
}
|
|
150
|
-
} catch {
|
|
151
150
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return fileSystem.exists(legacyPath) ? legacyPath : void 0;
|
|
151
|
+
const legacyPath = path.join(cwd, 'dist', SERVER_BUNDLE_DIR, SERVER_BUNDLE_FILENAME);
|
|
152
|
+
return fileSystem.exists(legacyPath) ? legacyPath : undefined;
|
|
155
153
|
}
|
|
156
|
-
export {
|
|
157
|
-
SERVER_BUNDLE_MANIFEST_FILENAME,
|
|
158
|
-
SERVER_ENTRY_BUILD_CACHE_FILENAME2 as SERVER_ENTRY_BUILD_CACHE_FILENAME,
|
|
159
|
-
getServerBundleOutputPaths,
|
|
160
|
-
lookupServerEntryBuildCache,
|
|
161
|
-
readServerEntryBuildCacheManifest,
|
|
162
|
-
recordServerEntryBuildCache,
|
|
163
|
-
resolveProductionServerEntry,
|
|
164
|
-
writeServerBundleDeployManifest
|
|
165
|
-
};
|
|
@@ -33,9 +33,9 @@ export interface BuildResult {
|
|
|
33
33
|
* Options accepted by every `BuildAdapter.build` call.
|
|
34
34
|
*
|
|
35
35
|
* @remarks
|
|
36
|
-
* Fields that the adapter can forward are honored
|
|
37
|
-
*
|
|
38
|
-
* call-
|
|
36
|
+
* Fields that the adapter can forward are honored. `splitting: false` disables
|
|
37
|
+
* Rolldown code splitting for single-entrypoint builds. `bundle` and `outbase`
|
|
38
|
+
* are accepted for call-site compatibility but ignored.
|
|
39
39
|
*/
|
|
40
40
|
export interface BuildOptions {
|
|
41
41
|
entrypoints: string[] | Record<string, string>;
|
|
@@ -57,7 +57,7 @@ export interface BuildOptions {
|
|
|
57
57
|
target?: string;
|
|
58
58
|
format?: string;
|
|
59
59
|
sourcemap?: string;
|
|
60
|
-
/**
|
|
60
|
+
/** When `false` with a single entrypoint, inlines dynamic imports into one output file. */
|
|
61
61
|
splitting?: boolean;
|
|
62
62
|
root?: string;
|
|
63
63
|
/** @deprecated Accepted for call-site compatibility only. */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,49 +1,64 @@
|
|
|
1
|
-
import { createBrowserRuntimePlugin, DEFAULT_BROWSER_RUNTIME_PLUGIN_NAME } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { createBrowserRuntimePlugin, DEFAULT_BROWSER_RUNTIME_PLUGIN_NAME } from '../browser/browser-runtime-plugin.js';
|
|
2
|
+
import { createBrowserRuntimeManifest, mergeBrowserRuntimeManifests, } from '../browser/browser-runtime-manifest.js';
|
|
3
|
+
/**
|
|
4
|
+
* Merges plugin lists while preserving first-registration precedence by name.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Build manifests treat plugin names as stable identities. The first plugin
|
|
8
|
+
* with a given name wins so config-time assembly stays deterministic across
|
|
9
|
+
* loader, runtime, and browser buckets.
|
|
10
|
+
*/
|
|
11
|
+
export function mergeEcoBuildPlugins(...pluginLists) {
|
|
12
|
+
const byName = new Map();
|
|
13
|
+
for (const plugins of pluginLists) {
|
|
14
|
+
for (const plugin of plugins ?? []) {
|
|
15
|
+
if (!byName.has(plugin.name)) {
|
|
16
|
+
byName.set(plugin.name, plugin);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
13
19
|
}
|
|
14
|
-
|
|
15
|
-
return Array.from(byName.values());
|
|
20
|
+
return Array.from(byName.values());
|
|
16
21
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Creates one app-owned build manifest from the supplied plugin buckets.
|
|
24
|
+
*/
|
|
25
|
+
export function createAppBuildManifest(input) {
|
|
26
|
+
return {
|
|
27
|
+
loaderPlugins: mergeEcoBuildPlugins(input?.loaderPlugins),
|
|
28
|
+
runtimePlugins: mergeEcoBuildPlugins(input?.runtimePlugins),
|
|
29
|
+
browserBundlePlugins: mergeEcoBuildPlugins(input?.browserBundlePlugins),
|
|
30
|
+
browserRuntimeManifest: mergeBrowserRuntimeManifests(input?.browserRuntimeManifest),
|
|
31
|
+
};
|
|
24
32
|
}
|
|
25
|
-
|
|
26
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Returns the shared browser runtime asset manifest sealed into the app build manifest.
|
|
35
|
+
*/
|
|
36
|
+
export function getBrowserRuntimeManifest(manifest) {
|
|
37
|
+
return manifest.browserRuntimeManifest ?? createBrowserRuntimeManifest();
|
|
27
38
|
}
|
|
28
|
-
|
|
29
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Returns the plugin list used for server-oriented builds.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* Merges `loaderPlugins` then `runtimePlugins`. Browser-only buckets and the
|
|
44
|
+
* synthesized browser-runtime rewrite plugin are excluded.
|
|
45
|
+
*/
|
|
46
|
+
export function getServerBuildPlugins(manifest) {
|
|
47
|
+
return mergeEcoBuildPlugins(manifest.loaderPlugins, manifest.runtimePlugins);
|
|
30
48
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Returns the plugin list used for browser-oriented builds.
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* Merges, in order: `loaderPlugins`, `runtimePlugins`, a synthesized
|
|
54
|
+
* `browser-runtime-plugin` when `browserRuntimeManifest` has entries, then
|
|
55
|
+
* `browserBundlePlugins`. Plugin names dedupe with first-registration wins via
|
|
56
|
+
* {@link mergeEcoBuildPlugins}.
|
|
57
|
+
*/
|
|
58
|
+
export function getBrowserBuildPlugins(manifest) {
|
|
59
|
+
const runtimeRewritePlugin = createBrowserRuntimePlugin({
|
|
60
|
+
name: DEFAULT_BROWSER_RUNTIME_PLUGIN_NAME,
|
|
61
|
+
manifest: getBrowserRuntimeManifest(manifest),
|
|
62
|
+
});
|
|
63
|
+
return mergeEcoBuildPlugins(manifest.loaderPlugins, manifest.runtimePlugins, runtimeRewritePlugin ? [runtimeRewritePlugin] : [], manifest.browserBundlePlugins);
|
|
42
64
|
}
|
|
43
|
-
export {
|
|
44
|
-
createAppBuildManifest,
|
|
45
|
-
getBrowserBuildPlugins,
|
|
46
|
-
getBrowserRuntimeManifest,
|
|
47
|
-
getServerBuildPlugins,
|
|
48
|
-
mergeEcoBuildPlugins
|
|
49
|
-
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -29,6 +29,15 @@ export declare function transpileProfileToOptions(profile: BuildTranspileProfile
|
|
|
29
29
|
* See {@link https://rolldown.rs/in-depth/external-modules | Rolldown external modules}.
|
|
30
30
|
*/
|
|
31
31
|
export declare function createNodeBuiltinExternalPlugin(): RolldownPlugin;
|
|
32
|
+
/**
|
|
33
|
+
* Rejects Node builtins in browser-target builds before Rolldown externalizes them.
|
|
34
|
+
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* With `platform: 'browser'`, Rolldown leaves `node:*` imports in the output as
|
|
37
|
+
* bare specifiers. This plugin fails the build instead so server-only graphs
|
|
38
|
+
* cannot reach the browser as silent CORS errors.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createBrowserNodeBuiltinGuardPlugin(): RolldownPlugin;
|
|
32
41
|
export declare function extractDependencyGraph(chunks: Array<{
|
|
33
42
|
facadeModuleId: string | null;
|
|
34
43
|
moduleIds: string[];
|