@ecopages/core 0.2.0-beta.3 → 0.2.0-beta.31
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 +38 -9
- package/package.json +241 -30
- package/src/adapters/README.md +6 -2
- package/src/adapters/abstract/application-adapter.d.ts +123 -6
- package/src/adapters/abstract/application-adapter.js +151 -1
- package/src/adapters/abstract/segment-path-matcher.d.ts +6 -0
- package/src/adapters/abstract/segment-path-matcher.js +149 -0
- package/src/adapters/abstract/server-adapter.d.ts +16 -2
- package/src/adapters/abstract/ws-pattern-matcher.d.ts +12 -0
- package/src/adapters/abstract/ws-pattern-matcher.js +30 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.d.ts +22 -0
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +96 -0
- package/src/adapters/bun/client-bridge.d.ts +1 -0
- package/src/adapters/bun/client-bridge.js +3 -0
- package/src/adapters/bun/create-app.d.ts +9 -6
- package/src/adapters/bun/create-app.js +76 -45
- package/src/adapters/bun/hmr-manager.d.ts +1 -1
- package/src/adapters/bun/hmr-manager.js +1 -1
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +25 -2
- package/src/adapters/bun/runtime-host.d.ts +1 -1
- package/src/adapters/bun/runtime-host.js +1 -1
- package/src/adapters/bun/server-adapter.d.ts +92 -41
- package/src/adapters/bun/server-adapter.js +256 -117
- package/src/adapters/bun/static-preview-host.d.ts +1 -1
- package/src/adapters/bun/static-preview-host.js +25 -20
- package/src/adapters/create-app.d.ts +13 -11
- package/src/adapters/create-app.js +2 -51
- package/src/adapters/index.d.ts +2 -2
- package/src/adapters/index.js +26 -4
- package/src/adapters/node/create-app.d.ts +8 -3
- package/src/adapters/node/create-app.js +61 -13
- package/src/adapters/node/node-client-bridge.d.ts +1 -0
- package/src/adapters/node/node-client-bridge.js +3 -0
- package/src/adapters/node/node-hmr-manager.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.js +1 -1
- package/src/adapters/node/runtime-host.d.ts +1 -1
- package/src/adapters/node/runtime-host.js +1 -1
- package/src/adapters/node/server-adapter-dependencies.js +4 -0
- package/src/adapters/node/server-adapter.d.ts +64 -23
- package/src/adapters/node/server-adapter.js +169 -142
- package/src/adapters/node/static-content-server.d.ts +1 -0
- package/src/adapters/node/static-content-server.js +10 -2
- package/src/adapters/node/static-preview-host.d.ts +1 -1
- package/src/adapters/node/static-preview-host.js +27 -12
- package/src/adapters/shared/{hmr-entrypoint-registrar.d.ts → hmr/hmr-entrypoint-registrar.d.ts} +31 -30
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +106 -0
- package/src/adapters/shared/{hmr-html-response.d.ts → hmr/hmr-html-response.d.ts} +2 -2
- package/src/adapters/shared/{hmr-html-response.js → hmr/hmr-html-response.js} +4 -1
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +101 -0
- package/src/adapters/shared/hmr/shared-hmr-manager.js +432 -0
- package/src/adapters/shared/http/api-request-pipeline.d.ts +23 -0
- package/src/adapters/shared/http/api-request-pipeline.js +129 -0
- package/src/adapters/shared/{api-response.d.ts → http/api-response.d.ts} +1 -1
- package/src/adapters/shared/{api-response.js → http/api-response.js} +6 -23
- package/src/adapters/shared/http/create-body-response.d.ts +12 -0
- package/src/adapters/shared/http/create-body-response.js +23 -0
- package/src/adapters/shared/http/define-api-handler.d.ts +90 -0
- package/src/adapters/shared/http/define-api-handler.js +63 -0
- package/src/adapters/shared/{explicit-static-render-preparation.d.ts → http/explicit-static-render-preparation.d.ts} +3 -3
- package/src/adapters/shared/{explicit-static-route-matcher.d.ts → http/explicit-static-route-matcher.d.ts} +3 -9
- package/src/adapters/shared/{explicit-static-route-matcher.js → http/explicit-static-route-matcher.js} +3 -38
- package/src/adapters/shared/{file-route-middleware-pipeline.d.ts → http/file-route-middleware-pipeline.d.ts} +2 -2
- package/src/adapters/shared/{file-route-middleware-pipeline.js → http/file-route-middleware-pipeline.js} +10 -22
- package/src/adapters/shared/{fs-server-response-factory.d.ts → http/fs-server-response-factory.d.ts} +7 -2
- package/src/adapters/shared/{fs-server-response-factory.js → http/fs-server-response-factory.js} +22 -2
- package/src/adapters/shared/{fs-server-response-matcher.d.ts → http/fs-server-response-matcher.d.ts} +25 -5
- package/src/adapters/shared/{fs-server-response-matcher.js → http/fs-server-response-matcher.js} +109 -27
- package/src/adapters/shared/http/run-middleware-chain.d.ts +5 -0
- package/src/adapters/shared/http/run-middleware-chain.js +17 -0
- package/src/adapters/shared/{application-adapter.d.ts → runtime/application-adapter.d.ts} +2 -2
- package/src/adapters/shared/{application-adapter.js → runtime/application-adapter.js} +1 -1
- package/src/adapters/shared/runtime/copy-runtime-public-dir.d.ts +6 -0
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +24 -0
- package/src/adapters/shared/runtime/port-manager.d.ts +116 -0
- package/src/adapters/shared/runtime/port-manager.js +196 -0
- package/src/adapters/shared/{render-context.d.ts → runtime/render-context.d.ts} +2 -2
- package/src/adapters/shared/{render-context.js → runtime/render-context.js} +8 -17
- package/src/adapters/shared/{runtime-app-bootstrap.d.ts → runtime/runtime-app-bootstrap.d.ts} +4 -3
- package/src/adapters/shared/{runtime-app-bootstrap.js → runtime/runtime-app-bootstrap.js} +4 -7
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +46 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +57 -0
- package/src/adapters/shared/{server-adapter.d.ts → runtime/server-adapter.d.ts} +23 -49
- package/src/adapters/shared/runtime/server-adapter.js +226 -0
- package/src/adapters/shared/{server-route-handler.d.ts → runtime/server-route-handler.d.ts} +6 -33
- package/src/adapters/shared/{server-route-handler.js → runtime/server-route-handler.js} +5 -43
- package/src/adapters/shared/{server-static-builder.d.ts → runtime/server-static-builder.d.ts} +27 -35
- package/src/adapters/shared/runtime/server-static-builder.js +191 -0
- package/src/adapters/shared/{static-preview-host.d.ts → runtime/static-preview-host.d.ts} +6 -1
- package/src/adapters/shared/ws/node-http-websocket-upgrades.d.ts +21 -0
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +100 -0
- package/src/adapters/shared/ws/websocket-lifecycle.d.ts +24 -0
- package/src/adapters/shared/ws/websocket-lifecycle.js +55 -0
- package/src/build/README.md +140 -31
- package/src/build/app-build-manifest-runtime.d.ts +39 -0
- package/src/build/app-build-manifest-runtime.js +124 -0
- package/src/build/{browser-runtime-plugin.d.ts → browser/browser-runtime-plugin.d.ts} +1 -1
- package/src/build/{browser-runtime-plugin.js → browser/browser-runtime-plugin.js} +1 -1
- package/src/build/browser/jsx-ownership-plugins.d.ts +24 -0
- package/src/build/browser/jsx-ownership-plugins.js +41 -0
- package/src/build/browser/lit-static-render-worker-context.d.ts +2 -0
- package/src/build/browser/lit-static-render-worker-context.js +6 -0
- package/src/build/build-adapter.d.ts +29 -334
- package/src/build/build-adapter.js +32 -133
- package/src/build/cache/build-input-fingerprint.d.ts +28 -0
- package/src/build/cache/build-input-fingerprint.js +31 -0
- package/src/build/cache/cache-constants.d.ts +4 -0
- package/src/build/cache/cache-constants.js +6 -0
- package/src/build/cache/cache-keys.d.ts +22 -0
- package/src/build/cache/cache-keys.js +63 -0
- package/src/build/cache/dev-browser-script-cache.d.ts +34 -0
- package/src/build/cache/dev-browser-script-cache.js +90 -0
- package/src/build/cache/pages-unified-graph-build.d.ts +31 -0
- package/src/build/cache/pages-unified-graph-build.js +198 -0
- package/src/build/cache/production-build-cache.d.ts +20 -0
- package/src/build/cache/production-build-cache.js +63 -0
- package/src/build/cache/server-entry-build-cache.d.ts +43 -0
- package/src/build/cache/server-entry-build-cache.js +165 -0
- package/src/build/contracts/build-contracts.d.ts +96 -0
- package/src/build/contracts/build-manifest.d.ts +90 -0
- package/src/build/{build-manifest.js → contracts/build-manifest.js} +2 -2
- package/src/build/contracts/build-types.js +0 -0
- package/src/build/{rolldown-adapter-helpers.d.ts → rolldown/rolldown-adapter-helpers.d.ts} +23 -9
- package/src/build/{rolldown-adapter-helpers.js → rolldown/rolldown-adapter-helpers.js} +99 -13
- package/src/build/{rolldown-build-adapter.d.ts → rolldown/rolldown-build-adapter.d.ts} +3 -7
- package/src/build/{rolldown-build-adapter.js → rolldown/rolldown-build-adapter.js} +3 -3
- package/src/build/rolldown/rolldown-build-invocation-metrics.d.ts +12 -0
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +43 -0
- package/src/build/{rolldown-plugin-bridge.d.ts → rolldown/rolldown-plugin-bridge.d.ts} +16 -2
- package/src/build/{rolldown-plugin-bridge.js → rolldown/rolldown-plugin-bridge.js} +21 -6
- package/src/build/rolldown/rolldown-source-transform-pass.d.ts +15 -0
- package/src/build/rolldown/rolldown-source-transform-pass.js +61 -0
- package/src/build/rolldown/runtime-build-output-normalizer.d.ts +10 -0
- package/src/build/rolldown/runtime-build-output-normalizer.js +201 -0
- package/src/build/runtime/build-profile-options.d.ts +7 -0
- package/src/build/runtime/build-profile-options.js +37 -0
- package/src/build/runtime/build-request-identity.d.ts +17 -0
- package/src/build/runtime/build-request-identity.js +54 -0
- package/src/build/runtime/build-request-policy.d.ts +59 -0
- package/src/build/runtime/build-request-policy.js +46 -0
- package/src/build/runtime/build-runtime.d.ts +28 -0
- package/src/build/runtime/build-runtime.js +65 -0
- package/src/build/runtime/deduping-build-executor.d.ts +21 -0
- package/src/build/runtime/deduping-build-executor.js +34 -0
- package/src/build/runtime/parallel-build-executor.d.ts +21 -0
- package/src/build/runtime/parallel-build-executor.js +52 -0
- package/src/build/{serialized-build-executor.d.ts → runtime/serialized-build-executor.d.ts} +1 -1
- package/src/client/navigation-scripts/classification.d.ts +16 -0
- package/src/client/navigation-scripts/classification.js +41 -0
- package/src/client/navigation-scripts/index.d.ts +3 -0
- package/src/client/navigation-scripts/index.js +23 -0
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +65 -0
- package/src/client/navigation-scripts/registry.d.ts +11 -0
- package/src/client/navigation-scripts/registry.js +12 -0
- package/src/client/navigation-scripts/rerun-queue.d.ts +37 -0
- package/src/client/navigation-scripts/rerun-queue.js +73 -0
- package/src/client/scroll.d.ts +17 -0
- package/src/client/scroll.js +25 -0
- package/src/client/scroll.test.browser.js +37 -0
- package/src/client/view-transitions.d.ts +16 -0
- package/src/client/view-transitions.js +63 -0
- package/src/config/config-builder.d.ts +25 -10
- package/src/config/config-builder.js +53 -11
- package/src/config/constants.d.ts +1 -0
- package/src/config/constants.js +2 -1
- package/src/dev/client-bridge-registry.d.ts +5 -0
- package/src/dev/client-bridge-registry.js +15 -0
- package/src/dev/dev-client-ownership.d.ts +7 -0
- package/src/dev/dev-client-ownership.js +6 -0
- package/src/dev/hmr-manager-registry.d.ts +8 -0
- package/src/dev/hmr-manager-registry.js +15 -0
- package/src/dev/host-runtime.d.ts +3 -0
- package/src/dev/host-runtime.js +7 -0
- package/src/dev/runtime-server-started-message.d.ts +2 -0
- package/src/dev/runtime-server-started-message.js +6 -0
- package/src/diagnostics/request-build-dedupe.d.ts +18 -0
- package/src/diagnostics/request-build-dedupe.js +33 -0
- package/src/diagnostics/startup-trace.d.ts +72 -0
- package/src/diagnostics/startup-trace.js +253 -0
- package/src/eco/README.md +11 -0
- package/src/eco/eco-declared-component.d.ts +14 -0
- package/src/eco/eco-declared-component.js +16 -0
- package/src/eco/eco.browser.js +5 -6
- package/src/eco/eco.js +7 -8
- package/src/eco/eco.types.d.ts +14 -3
- package/src/eco/eco.utils.d.ts +1 -1
- package/src/eco/eco.utils.js +1 -1
- package/src/eco/page-layout-normalization.d.ts +21 -0
- package/src/eco/page-layout-normalization.js +59 -0
- package/src/env.d.ts +2 -0
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +7 -1
- package/src/errors/undeclared-component-dependency-error.d.ts +11 -0
- package/src/errors/undeclared-component-dependency-error.js +17 -0
- package/src/hmr/client/hmr-runtime.js +7 -4
- package/src/hmr/hmr-entrypoint-output.d.ts +49 -0
- package/src/hmr/hmr-entrypoint-output.js +60 -0
- package/src/hmr/hmr-file-change-prep.d.ts +10 -0
- package/src/hmr/hmr-file-change-prep.js +17 -0
- package/src/hmr/hmr-strategy.d.ts +15 -0
- package/src/hmr/hmr-strategy.js +19 -0
- package/src/hmr/strategies/js-hmr-strategy.d.ts +3 -5
- package/src/hmr/strategies/js-hmr-strategy.js +72 -19
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.d.ts +17 -0
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +29 -0
- package/src/index.d.ts +2 -1
- package/src/index.js +28 -2
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -6
- package/src/integrations/ghtml/ghtml-renderer.js +2 -51
- package/src/integrations/ghtml/ghtml.plugin.d.ts +3 -16
- package/src/integrations/ghtml/ghtml.plugin.js +7 -14
- package/src/plugins/alias-resolver-cache.d.ts +6 -9
- package/src/plugins/alias-resolver-plugin.d.ts +3 -3
- package/src/plugins/alias-resolver-plugin.js +38 -51
- package/src/plugins/define-integration.d.ts +26 -0
- package/src/plugins/define-integration.js +19 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +1 -1
- package/src/plugins/eco-component-meta-plugin.js +5 -8
- package/src/plugins/foreign-jsx-override-plugin.d.ts +1 -1
- package/src/plugins/foreign-jsx-override-plugin.js +4 -6
- package/src/plugins/integration-plugin.d.ts +43 -14
- package/src/plugins/integration-plugin.js +18 -5
- package/src/plugins/jsx-import-source.utils.d.ts +8 -0
- package/src/plugins/jsx-import-source.utils.js +26 -0
- package/src/plugins/processor.d.ts +61 -12
- package/src/plugins/processor.js +24 -5
- package/src/plugins/source-transform.d.ts +32 -1
- package/src/plugins/source-transform.js +23 -1
- package/src/plugins/tsconfig-import-resolver.d.ts +18 -0
- package/src/plugins/tsconfig-import-resolver.js +159 -0
- package/src/route-renderer/GRAPH.md +26 -32
- package/src/route-renderer/README.md +38 -31
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.d.ts +107 -0
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +148 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.d.ts +20 -0
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +31 -0
- package/src/route-renderer/orchestration/{component-render-context.d.ts → foreign-child/component-render-context.d.ts} +8 -15
- package/src/route-renderer/orchestration/{component-render-context.js → foreign-child/component-render-context.js} +4 -2
- package/src/route-renderer/orchestration/{render-output.utils.d.ts → foreign-child/foreign-child-output.utils.d.ts} +17 -7
- package/src/route-renderer/orchestration/{render-output.utils.js → foreign-child/foreign-child-output.utils.js} +35 -26
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.d.ts → foreign-child/foreign-subtree-execution.service.d.ts} +64 -34
- package/src/route-renderer/orchestration/{foreign-subtree-execution.service.js → foreign-child/foreign-subtree-execution.service.js} +170 -37
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.d.ts +19 -0
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +35 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +24 -143
- package/src/route-renderer/orchestration/integration-renderer.js +163 -402
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.d.ts +75 -0
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +177 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.d.ts +10 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +143 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.d.ts +34 -0
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +96 -0
- package/src/route-renderer/orchestration/{ownership-validation.service.d.ts → ownership-graph/ownership-validation.service.d.ts} +7 -2
- package/src/route-renderer/orchestration/{ownership-validation.service.js → ownership-graph/ownership-validation.service.js} +30 -3
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.d.ts +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +32 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.d.ts +9 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +7 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.d.ts +12 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +29 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +106 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +436 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.d.ts +31 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +229 -0
- package/src/route-renderer/orchestration/{processed-asset-dedupe.d.ts → page-browser-graph/processed-asset-dedupe.d.ts} +1 -1
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +31 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +25 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.d.ts +6 -0
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +27 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.d.ts +15 -0
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +36 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +20 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +24 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.d.ts +25 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +49 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +33 -0
- package/src/route-renderer/orchestration/{route-render-orchestrator.d.ts → route-pipeline/route-render-orchestrator.d.ts} +13 -53
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +162 -0
- package/src/route-renderer/orchestration/string-markup-renderer.d.ts +14 -0
- package/src/route-renderer/orchestration/string-markup-renderer.js +55 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +5 -2
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +6 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +7 -2
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +4 -0
- package/src/router/client/link-intent.d.ts +11 -21
- package/src/router/client/link-intent.js +10 -0
- package/src/router/client/link-intent.test.browser.js +12 -1
- package/src/router/client/link-navigation-policy.d.ts +45 -0
- package/src/router/client/link-navigation-policy.js +101 -0
- package/src/router/client/link-navigation-policy.test.browser.d.ts +1 -0
- package/src/router/client/link-navigation-policy.test.browser.js +92 -0
- package/src/router/client/navigation-coordinator.d.ts +1 -1
- package/src/router/client/navigation-coordinator.js +12 -2
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +13 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +3 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +6 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.js +44 -5
- package/src/services/assets/asset-processing-service/assets.types.d.ts +1 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.d.ts +52 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +78 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +4 -2
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +28 -13
- package/src/services/assets/asset-processing-service/finalize-processed-asset.d.ts +3 -0
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +7 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +2 -1
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +38 -12
- package/src/services/assets/asset-processing-service/index.d.ts +2 -0
- package/src/services/assets/asset-processing-service/index.js +2 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.d.ts +11 -0
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +17 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.d.ts +9 -0
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +18 -0
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +0 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +2 -15
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +73 -68
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +0 -1
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +18 -15
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +17 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +2 -31
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +0 -3
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +2 -30
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.d.ts +2 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +43 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.d.ts +4 -0
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +17 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +0 -1
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +5 -10
- package/src/services/assets/browser-bundle.service.d.ts +28 -30
- package/src/services/assets/browser-bundle.service.js +28 -19
- package/src/services/html/html-transformer.service.d.ts +1 -1
- package/src/services/html/html-transformer.service.js +5 -5
- package/src/services/invalidation/development-invalidation.service.d.ts +25 -2
- package/src/services/invalidation/development-invalidation.service.js +64 -11
- package/src/services/module-loading/README.md +49 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +8 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +3 -21
- package/src/services/module-loading/page-module-import.service.d.ts +6 -2
- package/src/services/module-loading/page-module-import.service.js +110 -47
- package/src/services/module-loading/route-module-build-cache-registry.d.ts +24 -0
- package/src/services/module-loading/route-module-build-cache-registry.js +37 -0
- package/src/services/module-loading/route-module-build-cache.d.ts +4 -0
- package/src/services/module-loading/route-module-build-cache.js +38 -0
- package/src/services/module-loading/route-module-build-cache.store.d.ts +57 -0
- package/src/services/module-loading/route-module-build-cache.store.js +207 -0
- package/src/services/module-loading/route-module-build-manifest.d.ts +54 -0
- package/src/services/module-loading/route-module-build-manifest.js +85 -0
- package/src/services/module-loading/route-module-dependency-hasher.d.ts +81 -0
- package/src/services/module-loading/route-module-dependency-hasher.js +122 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +1 -1
- package/src/services/module-loading/server-module-transpiler.service.js +1 -1
- package/src/services/validation/schema-validation-service.d.ts +1 -4
- package/src/services/validation/schema-validation-service.js +12 -13
- package/src/services/validation/standard-schema.types.d.ts +9 -62
- package/src/services/validation/validate-standard-schema.d.ts +7 -0
- package/src/services/validation/validate-standard-schema.js +14 -0
- package/src/static-site-generator/README.md +41 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.d.ts +28 -0
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +22 -0
- package/src/static-site-generator/sitemap-routes.d.ts +14 -0
- package/src/static-site-generator/sitemap-routes.js +31 -0
- package/src/static-site-generator/sitemap.d.ts +15 -0
- package/src/static-site-generator/sitemap.js +33 -0
- package/src/static-site-generator/static-build-invalidation.d.ts +10 -0
- package/src/static-site-generator/static-build-invalidation.js +59 -0
- package/src/static-site-generator/static-export-context.d.ts +30 -0
- package/src/static-site-generator/static-export-context.js +0 -0
- package/src/static-site-generator/static-site-generator.d.ts +43 -25
- package/src/static-site-generator/static-site-generator.js +381 -106
- package/src/types/internal-types.d.ts +39 -13
- package/src/types/public-types.d.ts +289 -52
- package/src/utils/ecopages-route-info.d.ts +26 -0
- package/src/utils/ecopages-route-info.js +26 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +5 -1
- package/src/utils/parse-cli-args.d.ts +2 -0
- package/src/utils/parse-cli-args.js +6 -0
- package/src/utils/path-pattern.d.ts +23 -0
- package/src/utils/path-pattern.js +27 -0
- package/src/utils/server-utils.module.d.ts +3 -2
- package/src/utils/server-utils.module.js +5 -6
- package/src/utils/static-file-extensions.d.ts +12 -0
- package/src/utils/static-file-extensions.js +48 -0
- package/src/watchers/project-watcher-ignore.d.ts +11 -0
- package/src/watchers/project-watcher-ignore.js +16 -0
- package/src/watchers/project-watcher.d.ts +29 -6
- package/src/watchers/project-watcher.js +146 -34
- package/src/watchers/project-watcher.test-helpers.js +5 -5
- package/src/adapters/shared/define-api-handler.d.ts +0 -25
- package/src/adapters/shared/define-api-handler.js +0 -15
- package/src/adapters/shared/hmr-entrypoint-registrar.js +0 -87
- package/src/adapters/shared/server-adapter.js +0 -436
- package/src/adapters/shared/server-static-builder.js +0 -162
- package/src/adapters/shared/shared-hmr-manager.d.ts +0 -59
- package/src/adapters/shared/shared-hmr-manager.js +0 -241
- package/src/build/build-manifest.d.ts +0 -33
- package/src/build/rolldown-dev-build-adapter.d.ts +0 -82
- package/src/build/rolldown-dev-build-adapter.js +0 -166
- package/src/build/runtime-build-executor.d.ts +0 -21
- package/src/build/runtime-build-executor.js +0 -19
- package/src/build/runtime-build-output-normalizer.d.ts +0 -3
- package/src/build/runtime-build-output-normalizer.js +0 -111
- package/src/hmr/hmr.postcss.test.e2e.js +0 -31
- package/src/hmr/hmr.test.e2e.js +0 -43
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +0 -18
- package/src/route-renderer/orchestration/declared-ownership-graph.js +0 -34
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +0 -24
- package/src/route-renderer/orchestration/ownership-planning.service.js +0 -63
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +0 -91
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +0 -170
- package/src/route-renderer/orchestration/route-render-orchestrator.js +0 -577
- package/src/route-renderer/orchestration/template-serialization.d.ts +0 -38
- package/src/route-renderer/orchestration/template-serialization.js +0 -45
- /package/src/adapters/shared/{explicit-static-render-preparation.js → http/explicit-static-render-preparation.js} +0 -0
- /package/src/adapters/shared/{runtime-host.d.ts → runtime/runtime-host.d.ts} +0 -0
- /package/src/adapters/shared/{runtime-host.js → runtime/runtime-host.js} +0 -0
- /package/src/adapters/shared/{static-preview-host.js → runtime/static-preview-host.js} +0 -0
- /package/src/build/{browser-runtime-manifest.d.ts → browser/browser-runtime-manifest.d.ts} +0 -0
- /package/src/build/{browser-runtime-manifest.js → browser/browser-runtime-manifest.js} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.d.ts → browser/browser-runtime-plugin-helpers.d.ts} +0 -0
- /package/src/build/{browser-runtime-plugin-helpers.js → browser/browser-runtime-plugin-helpers.js} +0 -0
- /package/src/build/{build-types.js → contracts/build-contracts.js} +0 -0
- /package/src/build/{build-types.d.ts → contracts/build-types.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.d.ts → rolldown/server-side-css-shim-plugin.d.ts} +0 -0
- /package/src/build/{server-side-css-shim-plugin.js → rolldown/server-side-css-shim-plugin.js} +0 -0
- /package/src/build/{serialized-build-executor.js → runtime/serialized-build-executor.js} +0 -0
- /package/src/{hmr/hmr.postcss.test.e2e.d.ts → client/navigation-scripts/navigation-scripts.test.browser.d.ts} +0 -0
- /package/src/{hmr/hmr.test.e2e.d.ts → client/scroll.test.browser.d.ts} +0 -0
- /package/src/route-renderer/orchestration/{processed-asset-dedupe.js → page-browser-graph/processed-asset-dedupe.js} +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const invocationCounts = /* @__PURE__ */ new Map();
|
|
2
|
+
let pageModuleBuildInvocations = 0;
|
|
3
|
+
function isRolldownBuildMetricsEnabled() {
|
|
4
|
+
return process.env.ECOPAGES_ROLLDOWN_BUILD_METRICS === "1" || process.env.ECOPAGES_LOGGER_DEBUG === "true";
|
|
5
|
+
}
|
|
6
|
+
function recordRolldownBuildInvocation(adapter = "rolldown") {
|
|
7
|
+
if (!isRolldownBuildMetricsEnabled()) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
invocationCounts.set(adapter, (invocationCounts.get(adapter) ?? 0) + 1);
|
|
11
|
+
}
|
|
12
|
+
function getRolldownBuildInvocationCounts() {
|
|
13
|
+
return Object.fromEntries(invocationCounts);
|
|
14
|
+
}
|
|
15
|
+
function resetRolldownBuildInvocationCounts() {
|
|
16
|
+
invocationCounts.clear();
|
|
17
|
+
pageModuleBuildInvocations = 0;
|
|
18
|
+
}
|
|
19
|
+
function recordPageModuleBuildInvocation() {
|
|
20
|
+
if (!isRolldownBuildMetricsEnabled()) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
pageModuleBuildInvocations += 1;
|
|
24
|
+
}
|
|
25
|
+
function getPageModuleRolldownBuildInvocations() {
|
|
26
|
+
return pageModuleBuildInvocations;
|
|
27
|
+
}
|
|
28
|
+
function getTotalRolldownBuildInvocations() {
|
|
29
|
+
let total = 0;
|
|
30
|
+
for (const count of invocationCounts.values()) {
|
|
31
|
+
total += count;
|
|
32
|
+
}
|
|
33
|
+
return total;
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
getPageModuleRolldownBuildInvocations,
|
|
37
|
+
getRolldownBuildInvocationCounts,
|
|
38
|
+
getTotalRolldownBuildInvocations,
|
|
39
|
+
isRolldownBuildMetricsEnabled,
|
|
40
|
+
recordPageModuleBuildInvocation,
|
|
41
|
+
recordRolldownBuildInvocation,
|
|
42
|
+
resetRolldownBuildInvocationCounts
|
|
43
|
+
};
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
* on every source file.
|
|
41
41
|
*/
|
|
42
42
|
import type { Plugin } from 'rolldown';
|
|
43
|
-
import type {
|
|
43
|
+
import type { EcoSourceTransform } from '../../plugins/source-transform.js';
|
|
44
|
+
import type { EcoBuildPlugin } from '../contracts/build-types.js';
|
|
44
45
|
/**
|
|
45
46
|
* Creates a Rolldown `Plugin` array that drives the supplied
|
|
46
47
|
* `EcoBuildPlugin` instances.
|
|
@@ -55,5 +56,18 @@ import type { EcoBuildPlugin } from './build-types.js';
|
|
|
55
56
|
* Plugin ordering is preserved: registrations from earlier eco plugins
|
|
56
57
|
* are checked before registrations from later ones, matching the
|
|
57
58
|
* original per-plugin priority semantics.
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* Rolldown re-fires `buildStart` on each build, so registrations and the
|
|
62
|
+
* virtual-module counter are cleared before every `setup` pass — otherwise
|
|
63
|
+
* handlers accumulate when bridge plugins are reused.
|
|
64
|
+
*
|
|
65
|
+
* @param plugins - `EcoBuildPlugin` instances registered for this build.
|
|
66
|
+
* @param contextRoot - Project root used to resolve relative load paths.
|
|
67
|
+
* @param sourceTransforms - Optional app-owned transforms applied after a matching
|
|
68
|
+
* `onLoad` handler returns module contents. Browser builds pass
|
|
69
|
+
* {@link getAppSourceTransforms | app source transforms} here so metadata injection
|
|
70
|
+
* still runs on output rewritten by boundary/runtime plugins. Virtual modules,
|
|
71
|
+
* CSS, and asset loads are skipped.
|
|
58
72
|
*/
|
|
59
|
-
export declare function createRolldownPluginBridge(plugins: EcoBuildPlugin[], contextRoot: string): Plugin[];
|
|
73
|
+
export declare function createRolldownPluginBridge(plugins: EcoBuildPlugin[], contextRoot: string, sourceTransforms?: readonly EcoSourceTransform[]): Plugin[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
2
|
+
import { finalizeLoadResultWithSourceTransforms } from "./rolldown-source-transform-pass.js";
|
|
3
|
+
import { escapeRegExp } from "../browser/browser-runtime-plugin-helpers.js";
|
|
3
4
|
const NAMESPACE_SEPARATOR = ":";
|
|
4
5
|
function joinNamespace(namespace, value) {
|
|
5
6
|
return namespace ? `${namespace}${NAMESPACE_SEPARATOR}${value}` : value;
|
|
@@ -124,7 +125,7 @@ function convertPluginOnResolveResult(result, importer, contextRoot) {
|
|
|
124
125
|
}
|
|
125
126
|
return partial;
|
|
126
127
|
}
|
|
127
|
-
function createRolldownPluginBridge(plugins, contextRoot) {
|
|
128
|
+
function createRolldownPluginBridge(plugins, contextRoot, sourceTransforms = []) {
|
|
128
129
|
if (plugins.length === 0) {
|
|
129
130
|
return [];
|
|
130
131
|
}
|
|
@@ -152,22 +153,36 @@ function createRolldownPluginBridge(plugins, contextRoot) {
|
|
|
152
153
|
return void 0;
|
|
153
154
|
};
|
|
154
155
|
const loadHandler = async (id) => {
|
|
156
|
+
let loadResult;
|
|
155
157
|
for (const { filter, callback } of loadRegistrations) {
|
|
156
158
|
if (!filter.test(id)) {
|
|
157
159
|
continue;
|
|
158
160
|
}
|
|
159
|
-
const { namespace, path:
|
|
160
|
-
const result = await callback({ path:
|
|
161
|
+
const { namespace: namespace2, path: sourcePath2 } = splitNamespace(id);
|
|
162
|
+
const result = await callback({ path: sourcePath2, namespace: namespace2 });
|
|
161
163
|
const converted = convertPluginOnLoadResult({ id }, result);
|
|
162
164
|
if (converted !== void 0) {
|
|
163
|
-
|
|
165
|
+
loadResult = converted;
|
|
166
|
+
break;
|
|
164
167
|
}
|
|
165
168
|
}
|
|
166
|
-
|
|
169
|
+
const { namespace, path: sourcePath } = splitNamespace(id);
|
|
170
|
+
return finalizeLoadResultWithSourceTransforms({
|
|
171
|
+
id,
|
|
172
|
+
namespace,
|
|
173
|
+
sourcePath,
|
|
174
|
+
loadResult,
|
|
175
|
+
sourceTransforms,
|
|
176
|
+
contextRoot,
|
|
177
|
+
inferModuleTypeFromPath: (filePath) => inferRolldownModuleTypeFromPath(filePath)
|
|
178
|
+
});
|
|
167
179
|
};
|
|
168
180
|
const plugin = {
|
|
169
181
|
name: "ecopages-plugin-bridge",
|
|
170
182
|
buildStart: async () => {
|
|
183
|
+
resolveRegistrations.length = 0;
|
|
184
|
+
loadRegistrations.length = 0;
|
|
185
|
+
moduleCounter.value = 0;
|
|
171
186
|
for (const ecoPlugin of plugins) {
|
|
172
187
|
const bridge = {
|
|
173
188
|
onResolve: (options, callback) => {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LoadResult, SourceDescription } from 'rolldown';
|
|
2
|
+
import { type EcoSourceTransform } from '../../plugins/source-transform.js';
|
|
3
|
+
/**
|
|
4
|
+
* Runs app-owned source transforms after first-wins `onLoad` plugins produce
|
|
5
|
+
* module contents for one Rolldown load request.
|
|
6
|
+
*/
|
|
7
|
+
export declare function finalizeLoadResultWithSourceTransforms(options: {
|
|
8
|
+
id: string;
|
|
9
|
+
namespace: string | undefined;
|
|
10
|
+
sourcePath: string;
|
|
11
|
+
loadResult: LoadResult | undefined;
|
|
12
|
+
sourceTransforms: readonly EcoSourceTransform[];
|
|
13
|
+
contextRoot: string;
|
|
14
|
+
inferModuleTypeFromPath: (filePath: string) => SourceDescription['moduleType'];
|
|
15
|
+
}): Promise<LoadResult | undefined>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileSystem } from "@ecopages/file-system";
|
|
3
|
+
import {
|
|
4
|
+
applySourceTransforms,
|
|
5
|
+
normalizeTransformId
|
|
6
|
+
} from "../../plugins/source-transform.js";
|
|
7
|
+
const TRANSFORMABLE_SOURCE_EXTENSIONS = /* @__PURE__ */ new Set([".ts", ".tsx", ".js", ".jsx", ".mdx"]);
|
|
8
|
+
function shouldApplySourceTransforms(namespace, sourcePath) {
|
|
9
|
+
if (namespace !== void 0) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const normalizedPath = normalizeTransformId(sourcePath);
|
|
13
|
+
return TRANSFORMABLE_SOURCE_EXTENSIONS.has(path.extname(normalizedPath).toLowerCase());
|
|
14
|
+
}
|
|
15
|
+
function shouldTransformLoadedModule(moduleType) {
|
|
16
|
+
return moduleType !== "css" && moduleType !== "asset";
|
|
17
|
+
}
|
|
18
|
+
function applyTransformsToLoadedSource(sourceTransforms, id, sourcePath, code) {
|
|
19
|
+
if (sourceTransforms.length === 0) {
|
|
20
|
+
return code;
|
|
21
|
+
}
|
|
22
|
+
return applySourceTransforms(sourceTransforms, code, sourcePath);
|
|
23
|
+
}
|
|
24
|
+
async function finalizeLoadResultWithSourceTransforms(options) {
|
|
25
|
+
const { id, namespace, sourcePath, loadResult, sourceTransforms, contextRoot, inferModuleTypeFromPath } = options;
|
|
26
|
+
if (!shouldApplySourceTransforms(namespace, sourcePath)) {
|
|
27
|
+
return loadResult;
|
|
28
|
+
}
|
|
29
|
+
if (typeof loadResult === "object" && loadResult !== null && "code" in loadResult && typeof loadResult.code === "string") {
|
|
30
|
+
if (!shouldTransformLoadedModule(loadResult.moduleType)) {
|
|
31
|
+
return loadResult;
|
|
32
|
+
}
|
|
33
|
+
const transformedCode2 = applyTransformsToLoadedSource(sourceTransforms, id, sourcePath, loadResult.code);
|
|
34
|
+
if (transformedCode2 === loadResult.code) {
|
|
35
|
+
return loadResult;
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
code: transformedCode2,
|
|
39
|
+
moduleType: loadResult.moduleType
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (loadResult !== void 0 || sourceTransforms.length === 0) {
|
|
43
|
+
return loadResult;
|
|
44
|
+
}
|
|
45
|
+
const normalizedPath = path.isAbsolute(sourcePath) ? sourcePath : path.resolve(contextRoot, sourcePath);
|
|
46
|
+
if (!fileSystem.exists(normalizedPath)) {
|
|
47
|
+
return loadResult;
|
|
48
|
+
}
|
|
49
|
+
const originalCode = fileSystem.readFileSync(normalizedPath);
|
|
50
|
+
const transformedCode = applyTransformsToLoadedSource(sourceTransforms, id, sourcePath, originalCode);
|
|
51
|
+
if (transformedCode === originalCode) {
|
|
52
|
+
return loadResult;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
code: transformedCode,
|
|
56
|
+
moduleType: inferModuleTypeFromPath(normalizedPath)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export {
|
|
60
|
+
finalizeLoadResultWithSourceTransforms
|
|
61
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the given specifier is a workspace package.
|
|
3
|
+
*
|
|
4
|
+
* Workspace packages are declared with the `workspace:` protocol and are
|
|
5
|
+
* typically source-only, requiring bundling rather than externalization.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isWorkspacePackageImport(specifier: string, rootDir: string): boolean;
|
|
8
|
+
export declare function isDeclaredAppPackageImport(specifier: string, rootDir: string): boolean;
|
|
9
|
+
export declare function normalizeNodeRuntimeBuildOutputFile(filePath: string, rootDir: string): void;
|
|
10
|
+
export declare function normalizeNodeRuntimeBuildOutputs(outputPaths: string[], rootDir: string): void;
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
import { isBarePackageImportSpecifier } from "../../plugins/tsconfig-import-resolver.js";
|
|
6
|
+
const corePackageRequire = createRequire(new URL("../../../package.json", import.meta.url));
|
|
7
|
+
const appDeclaredPackageCache = /* @__PURE__ */ new Map();
|
|
8
|
+
const appWorkspacePackageCache = /* @__PURE__ */ new Map();
|
|
9
|
+
const CORE_RUNTIME_BARE_SPECIFIER_PACKAGES = /* @__PURE__ */ new Set(["ws"]);
|
|
10
|
+
function tryResolveRuntimeImport(specifier, resolver) {
|
|
11
|
+
try {
|
|
12
|
+
return resolver.resolve(specifier);
|
|
13
|
+
} catch {
|
|
14
|
+
return void 0;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function extractPackageNameFromFileUrl(specifier) {
|
|
18
|
+
if (!specifier.startsWith("file://")) {
|
|
19
|
+
return void 0;
|
|
20
|
+
}
|
|
21
|
+
const lastNodeModulesIndex = specifier.lastIndexOf("/node_modules/");
|
|
22
|
+
if (lastNodeModulesIndex === -1) {
|
|
23
|
+
return void 0;
|
|
24
|
+
}
|
|
25
|
+
const afterNodeModules = specifier.slice(lastNodeModulesIndex + "/node_modules/".length);
|
|
26
|
+
const parts = afterNodeModules.split("/");
|
|
27
|
+
if (parts.length === 0) {
|
|
28
|
+
return void 0;
|
|
29
|
+
}
|
|
30
|
+
if (parts[0]?.startsWith("@") && parts.length > 1) {
|
|
31
|
+
return `${parts[0]}/${parts[1]}`;
|
|
32
|
+
}
|
|
33
|
+
return parts[0];
|
|
34
|
+
}
|
|
35
|
+
function getPackageNameFromSpecifier(specifier) {
|
|
36
|
+
if (specifier.startsWith("@")) {
|
|
37
|
+
return specifier.split("/").slice(0, 2).join("/");
|
|
38
|
+
}
|
|
39
|
+
return specifier.split("/")[0] ?? specifier;
|
|
40
|
+
}
|
|
41
|
+
function getDeclaredAppPackages(rootDir) {
|
|
42
|
+
const cacheKey = path.resolve(rootDir);
|
|
43
|
+
const cached = appDeclaredPackageCache.get(cacheKey);
|
|
44
|
+
if (cached) {
|
|
45
|
+
return cached;
|
|
46
|
+
}
|
|
47
|
+
const packageJsonPath = path.resolve(rootDir, "package.json");
|
|
48
|
+
const declaredPackages = /* @__PURE__ */ new Set();
|
|
49
|
+
try {
|
|
50
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
51
|
+
for (const field of ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]) {
|
|
52
|
+
const entries = packageJson[field];
|
|
53
|
+
if (!entries || typeof entries !== "object") {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
for (const packageName of Object.keys(entries)) {
|
|
57
|
+
declaredPackages.add(packageName);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
} catch {
|
|
61
|
+
appDeclaredPackageCache.set(cacheKey, declaredPackages);
|
|
62
|
+
return declaredPackages;
|
|
63
|
+
}
|
|
64
|
+
appDeclaredPackageCache.set(cacheKey, declaredPackages);
|
|
65
|
+
return declaredPackages;
|
|
66
|
+
}
|
|
67
|
+
function getWorkspacePackages(rootDir) {
|
|
68
|
+
const cacheKey = path.resolve(rootDir);
|
|
69
|
+
const cached = appWorkspacePackageCache.get(cacheKey);
|
|
70
|
+
if (cached) {
|
|
71
|
+
return cached;
|
|
72
|
+
}
|
|
73
|
+
const packageJsonPath = path.resolve(rootDir, "package.json");
|
|
74
|
+
const workspacePackages = /* @__PURE__ */ new Set();
|
|
75
|
+
try {
|
|
76
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
77
|
+
for (const field of ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]) {
|
|
78
|
+
const entries = packageJson[field];
|
|
79
|
+
if (!entries || typeof entries !== "object") {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
for (const [packageName, version] of Object.entries(entries)) {
|
|
83
|
+
if (typeof version === "string" && version.startsWith("workspace:")) {
|
|
84
|
+
workspacePackages.add(packageName);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} catch {
|
|
89
|
+
appWorkspacePackageCache.set(cacheKey, workspacePackages);
|
|
90
|
+
return workspacePackages;
|
|
91
|
+
}
|
|
92
|
+
appWorkspacePackageCache.set(cacheKey, workspacePackages);
|
|
93
|
+
return workspacePackages;
|
|
94
|
+
}
|
|
95
|
+
function isWorkspacePackageImport(specifier, rootDir) {
|
|
96
|
+
return getWorkspacePackages(rootDir).has(getPackageNameFromSpecifier(specifier));
|
|
97
|
+
}
|
|
98
|
+
function isDeclaredAppPackageImport(specifier, rootDir) {
|
|
99
|
+
return getDeclaredAppPackages(rootDir).has(getPackageNameFromSpecifier(specifier));
|
|
100
|
+
}
|
|
101
|
+
function isDeclaredInResolutionChain(specifier, rootDir) {
|
|
102
|
+
const packageName = getPackageNameFromSpecifier(specifier);
|
|
103
|
+
if (CORE_RUNTIME_BARE_SPECIFIER_PACKAGES.has(packageName)) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
return isDeclaredAppPackageImport(specifier, rootDir);
|
|
107
|
+
}
|
|
108
|
+
function rewriteRuntimeImportSpecifier(specifier, quote, rootDir) {
|
|
109
|
+
if (!isBarePackageImportSpecifier(specifier, rootDir)) {
|
|
110
|
+
return void 0;
|
|
111
|
+
}
|
|
112
|
+
if (isDeclaredInResolutionChain(specifier, rootDir)) {
|
|
113
|
+
return void 0;
|
|
114
|
+
}
|
|
115
|
+
const resolvedPath = tryResolveRuntimeImport(specifier, corePackageRequire);
|
|
116
|
+
if (!resolvedPath || !/\.(?:[cm]?[jt]s|tsx|jsx)$/u.test(resolvedPath)) {
|
|
117
|
+
return void 0;
|
|
118
|
+
}
|
|
119
|
+
return `${quote}${pathToFileURL(resolvedPath).href}${quote}`;
|
|
120
|
+
}
|
|
121
|
+
function rewriteRuntimeBuildOutputImports(code, rootDir) {
|
|
122
|
+
const rewriteSpecifier = (prefix, quote, specifier) => {
|
|
123
|
+
const rewrittenSpecifier = rewriteRuntimeImportSpecifier(specifier, quote, rootDir);
|
|
124
|
+
return `${prefix}${rewrittenSpecifier ?? `${quote}${specifier}${quote}`}`;
|
|
125
|
+
};
|
|
126
|
+
const rewriteFileUrl = (prefix, quote, specifier) => {
|
|
127
|
+
const packageName = extractPackageNameFromFileUrl(specifier);
|
|
128
|
+
if (!packageName) {
|
|
129
|
+
return `${prefix}${quote}${specifier}${quote}`;
|
|
130
|
+
}
|
|
131
|
+
if (!isDeclaredInResolutionChain(packageName, rootDir)) {
|
|
132
|
+
return `${prefix}${quote}${specifier}${quote}`;
|
|
133
|
+
}
|
|
134
|
+
const lastNodeModulesIndex = specifier.lastIndexOf("/node_modules/");
|
|
135
|
+
if (lastNodeModulesIndex === -1) {
|
|
136
|
+
return `${prefix}${quote}${specifier}${quote}`;
|
|
137
|
+
}
|
|
138
|
+
const afterNodeModules = specifier.slice(lastNodeModulesIndex + "/node_modules/".length);
|
|
139
|
+
const afterPackage = afterNodeModules.slice(packageName.length);
|
|
140
|
+
const bareSpecifier = packageName + afterPackage;
|
|
141
|
+
return `${prefix}${quote}${bareSpecifier}${quote}`;
|
|
142
|
+
};
|
|
143
|
+
const withResolvedPackages = code.replace(
|
|
144
|
+
/(\bfrom\s+)(['"])([^'"\\]+)\2/g,
|
|
145
|
+
(_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
|
|
146
|
+
).replace(
|
|
147
|
+
/(\bimport\s+)(['"])([^'"\\]+)\2/g,
|
|
148
|
+
(_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
|
|
149
|
+
).replace(
|
|
150
|
+
/(\bimport\s*\(\s*)(['"])([^'"\\]+)\2/g,
|
|
151
|
+
(_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
|
|
152
|
+
);
|
|
153
|
+
const withBareSpecifiers = withResolvedPackages.replace(
|
|
154
|
+
/(\bfrom\s+)(['"])(file:\/\/[^'"\\]+)\2/g,
|
|
155
|
+
(_match, prefix, quote, specifier) => rewriteFileUrl(prefix, quote, specifier)
|
|
156
|
+
).replace(
|
|
157
|
+
/(\bimport\s+)(['"])(file:\/\/[^'"\\]+)\2/g,
|
|
158
|
+
(_match, prefix, quote, specifier) => rewriteFileUrl(prefix, quote, specifier)
|
|
159
|
+
).replace(
|
|
160
|
+
/(\bimport\s*\(\s*)(['"])(file:\/\/[^'"\\]+)\2/g,
|
|
161
|
+
(_match, prefix, quote, specifier) => rewriteFileUrl(prefix, quote, specifier)
|
|
162
|
+
);
|
|
163
|
+
return withBareSpecifiers.replace(
|
|
164
|
+
/(['"])(@oxc-project\/runtime\/(?:helpers(?:\/esm)?\/[^'"\\]+))\1/g,
|
|
165
|
+
(match, quote, specifier) => {
|
|
166
|
+
const resolvedPath = tryResolveRuntimeImport(specifier, corePackageRequire);
|
|
167
|
+
return resolvedPath ? `${quote}${pathToFileURL(resolvedPath).href}${quote}` : match;
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
function normalizeNodeRuntimeBuildOutputFile(filePath, rootDir) {
|
|
172
|
+
if (process.env.ECOPAGES_LOGGER_DEBUG === "true") {
|
|
173
|
+
console.log(`[normalizeNodeRuntimeBuildOutputFile] Checking ${filePath}`);
|
|
174
|
+
}
|
|
175
|
+
if (!/\.(?:[cm]?js)$/u.test(filePath)) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const fileSystem = corePackageRequire("node:fs");
|
|
179
|
+
if (!fileSystem.existsSync(filePath)) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const code = fileSystem.readFileSync(filePath, "utf-8");
|
|
183
|
+
const rewritten = rewriteRuntimeBuildOutputImports(code, rootDir);
|
|
184
|
+
if (rewritten !== code) {
|
|
185
|
+
if (process.env.ECOPAGES_LOGGER_DEBUG === "true") {
|
|
186
|
+
console.log(`[normalizeNodeRuntimeBuildOutputFile] Rewriting ${filePath}`);
|
|
187
|
+
}
|
|
188
|
+
fileSystem.writeFileSync(filePath, rewritten);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function normalizeNodeRuntimeBuildOutputs(outputPaths, rootDir) {
|
|
192
|
+
for (const outputPath of outputPaths) {
|
|
193
|
+
normalizeNodeRuntimeBuildOutputFile(outputPath, rootDir);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export {
|
|
197
|
+
isDeclaredAppPackageImport,
|
|
198
|
+
isWorkspacePackageImport,
|
|
199
|
+
normalizeNodeRuntimeBuildOutputFile,
|
|
200
|
+
normalizeNodeRuntimeBuildOutputs
|
|
201
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BuildOptions } from '../build-adapter.js';
|
|
2
|
+
import type { BuildProfile } from './build-runtime.js';
|
|
3
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves shared Rolldown options for a build profile.
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveBuildProfileOptions(profile: BuildProfile, appConfig: EcoPagesAppConfig, overrides?: Partial<BuildOptions>): Partial<BuildOptions>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
function resolveBuildProfileOptions(profile, appConfig, overrides = {}) {
|
|
2
|
+
const root = appConfig.rootDir;
|
|
3
|
+
switch (profile) {
|
|
4
|
+
case "server-entry":
|
|
5
|
+
return {
|
|
6
|
+
root,
|
|
7
|
+
target: "node",
|
|
8
|
+
format: "esm",
|
|
9
|
+
sourcemap: "none",
|
|
10
|
+
minify: false,
|
|
11
|
+
externalPackages: true,
|
|
12
|
+
...overrides
|
|
13
|
+
};
|
|
14
|
+
case "route-module":
|
|
15
|
+
return {
|
|
16
|
+
root,
|
|
17
|
+
target: "es2022",
|
|
18
|
+
format: "esm",
|
|
19
|
+
sourcemap: "none",
|
|
20
|
+
minify: false,
|
|
21
|
+
externalPackages: true,
|
|
22
|
+
...overrides
|
|
23
|
+
};
|
|
24
|
+
case "browser-hmr":
|
|
25
|
+
return {
|
|
26
|
+
root,
|
|
27
|
+
target: "browser",
|
|
28
|
+
format: "esm",
|
|
29
|
+
sourcemap: "none",
|
|
30
|
+
minify: false,
|
|
31
|
+
...overrides
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
resolveBuildProfileOptions
|
|
37
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BuildOptions } from '../contracts/build-contracts.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical identity for one complete {@link BuildOptions} request.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Semantically unordered collections (`external`, `define` keys, array entrypoints)
|
|
7
|
+
* are sorted. Plugin, `conditions`, and source-transform order is preserved because
|
|
8
|
+
* Rolldown hook and `conditionNames` precedence depend on it.
|
|
9
|
+
*
|
|
10
|
+
* Deprecated / ignored adapter fields (`splitting`, `bundle`, `outbase`) still
|
|
11
|
+
* participate in the key so requests that differ only on those fields do not
|
|
12
|
+
* coalesce. Empty `conditions` / `define` / `external` normalize to the same
|
|
13
|
+
* sentinel as `undefined`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createBuildRequestIdentity(options: BuildOptions): string;
|
|
16
|
+
/** @deprecated Use {@link createBuildRequestIdentity}. */
|
|
17
|
+
export declare const createBuildOptionsDedupeKey: typeof createBuildRequestIdentity;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { createJsxCacheKey, createPluginCacheKey, createSourceTransformCacheKey } from "../cache/cache-keys.js";
|
|
3
|
+
function normalizeEntrypoints(entrypoints) {
|
|
4
|
+
if (Array.isArray(entrypoints)) {
|
|
5
|
+
return entrypoints.map((entrypoint) => path.resolve(entrypoint)).sort().join("|");
|
|
6
|
+
}
|
|
7
|
+
return Object.entries(entrypoints).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}:${path.resolve(value)}`).join("|");
|
|
8
|
+
}
|
|
9
|
+
function normalizeOrderedStringList(values, label) {
|
|
10
|
+
if (!values || values.length === 0) {
|
|
11
|
+
return `${label}:default`;
|
|
12
|
+
}
|
|
13
|
+
return `${label}:${values.join(",")}`;
|
|
14
|
+
}
|
|
15
|
+
function normalizeUnorderedStringList(values, label) {
|
|
16
|
+
if (!values || values.length === 0) {
|
|
17
|
+
return `${label}:default`;
|
|
18
|
+
}
|
|
19
|
+
return `${label}:${[...values].sort().join(",")}`;
|
|
20
|
+
}
|
|
21
|
+
function normalizeDefine(define) {
|
|
22
|
+
if (!define || Object.keys(define).length === 0) {
|
|
23
|
+
return "define:default";
|
|
24
|
+
}
|
|
25
|
+
return `define:${Object.entries(define).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}=${value}`).join(",")}`;
|
|
26
|
+
}
|
|
27
|
+
function createBuildRequestIdentity(options) {
|
|
28
|
+
return [
|
|
29
|
+
normalizeEntrypoints(options.entrypoints),
|
|
30
|
+
options.root ? path.resolve(options.root) : "root:default",
|
|
31
|
+
options.outdir ? path.resolve(options.outdir) : "outdir:default",
|
|
32
|
+
options.outbase ? path.resolve(options.outbase) : "outbase:default",
|
|
33
|
+
options.splitting ?? "splitting:default",
|
|
34
|
+
options.bundle ?? "bundle:default",
|
|
35
|
+
options.externalPackages ?? "externalPackages:default",
|
|
36
|
+
options.target ?? "target:default",
|
|
37
|
+
options.format ?? "format:default",
|
|
38
|
+
options.sourcemap ?? "sourcemap:default",
|
|
39
|
+
options.minify ?? "minify:default",
|
|
40
|
+
options.treeshaking ?? "treeshaking:default",
|
|
41
|
+
options.naming ?? "naming:default",
|
|
42
|
+
normalizeOrderedStringList(options.conditions, "conditions"),
|
|
43
|
+
normalizeDefine(options.define),
|
|
44
|
+
normalizeUnorderedStringList(options.external, "external"),
|
|
45
|
+
createJsxCacheKey(options.jsx),
|
|
46
|
+
createPluginCacheKey(options.plugins),
|
|
47
|
+
createSourceTransformCacheKey(options.sourceTransforms)
|
|
48
|
+
].join("::");
|
|
49
|
+
}
|
|
50
|
+
const createBuildOptionsDedupeKey = createBuildRequestIdentity;
|
|
51
|
+
export {
|
|
52
|
+
createBuildOptionsDedupeKey,
|
|
53
|
+
createBuildRequestIdentity
|
|
54
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
import type { EcoBuildPlugin } from '../contracts/build-types.js';
|
|
3
|
+
import type { BuildOptions, BuildTranspileProfile } from '../contracts/build-contracts.js';
|
|
4
|
+
import type { BuildProfile } from './build-runtime.js';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves app-owned server plugins plus JSX ownership for one config.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Always goes through {@link getAppServerBuildPlugins} so sealed-manifest and
|
|
10
|
+
* loader-fallback apps share one plugin list with the alias resolver. Used by
|
|
11
|
+
* both request assembly and unified-graph cache keys.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveServerAppBuildPlugins(appConfig: EcoPagesAppConfig): EcoBuildPlugin[];
|
|
14
|
+
/**
|
|
15
|
+
* Merges caller plugins with app-owned manifest plugins.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* App-manifest plugins cannot be silently replaced by same-name caller plugins.
|
|
19
|
+
* Unique caller plugins are prepended so first-wins Rolldown hooks (for example
|
|
20
|
+
* React vendor/alias rewrites) still run before general app loaders. Use
|
|
21
|
+
* `excludeAppBuildPlugins` on browser requests to omit app-owned plugins.
|
|
22
|
+
*/
|
|
23
|
+
export declare function mergeCallerBuildPlugins(appPlugins: EcoBuildPlugin[], callerPlugins?: EcoBuildPlugin[]): EcoBuildPlugin[];
|
|
24
|
+
export type ServerBuildRequestInput = Partial<BuildOptions> & {
|
|
25
|
+
entrypoints: BuildOptions['entrypoints'];
|
|
26
|
+
profile?: Extract<BuildProfile, 'server-entry' | 'route-module'>;
|
|
27
|
+
};
|
|
28
|
+
export type BrowserBuildRequestInput = Partial<BuildOptions> & {
|
|
29
|
+
entrypoints: BuildOptions['entrypoints'];
|
|
30
|
+
profile: BuildTranspileProfile;
|
|
31
|
+
excludeAppBuildPlugins?: string[];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Assembles a complete server-oriented {@link BuildOptions} before scheduling.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* Defaults `profile` to `'route-module'`. Plugins are
|
|
38
|
+
* {@link resolveServerAppBuildPlugins} plus unique caller contributions via
|
|
39
|
+
* {@link mergeCallerBuildPlugins}. Does not attach `sourceTransforms` — unlike
|
|
40
|
+
* {@link createBrowserBuildRequest}. Pass the returned options into
|
|
41
|
+
* {@link BuildRuntime.getProfile}; the runtime no longer injects plugins.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createServerBuildRequest(appConfig: EcoPagesAppConfig, input: ServerBuildRequestInput): BuildOptions;
|
|
44
|
+
/**
|
|
45
|
+
* Assembles a complete browser-oriented {@link BuildOptions} before scheduling.
|
|
46
|
+
*
|
|
47
|
+
* @remarks
|
|
48
|
+
* Applies {@link resolveBuildProfileOptions} for `'browser-hmr'` (browser target
|
|
49
|
+
* defaults), then overlays {@link getAppTranspileOptions} for the given
|
|
50
|
+
* {@link BuildTranspileProfile}. That profile selects transpile settings only;
|
|
51
|
+
* the {@link BuildRuntime} executor slot is chosen later by the caller
|
|
52
|
+
* (typically {@link BrowserBundleService}).
|
|
53
|
+
*
|
|
54
|
+
* Always attaches {@link getAppSourceTransforms}. App browser plugins come from
|
|
55
|
+
* {@link getAppBrowserBuildPlugins} (includes JSX ownership); use
|
|
56
|
+
* `excludeAppBuildPlugins` to omit app-owned names. Caller plugins cannot
|
|
57
|
+
* replace app-manifest names ({@link mergeCallerBuildPlugins}).
|
|
58
|
+
*/
|
|
59
|
+
export declare function createBrowserBuildRequest(appConfig: EcoPagesAppConfig, input: BrowserBuildRequestInput): BuildOptions;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getAppBrowserBuildPlugins, getAppServerBuildPlugins, getAppTranspileOptions } from "../build-adapter.js";
|
|
2
|
+
import { resolveBuildProfileOptions } from "./build-profile-options.js";
|
|
3
|
+
import { getJsxOwnershipPlugins } from "../browser/jsx-ownership-plugins.js";
|
|
4
|
+
import { getAppSourceTransforms } from "../../plugins/source-transform.js";
|
|
5
|
+
function resolveServerAppBuildPlugins(appConfig) {
|
|
6
|
+
return [...getAppServerBuildPlugins(appConfig), ...getJsxOwnershipPlugins(appConfig)];
|
|
7
|
+
}
|
|
8
|
+
function mergeCallerBuildPlugins(appPlugins, callerPlugins) {
|
|
9
|
+
if (!callerPlugins || callerPlugins.length === 0) {
|
|
10
|
+
return appPlugins;
|
|
11
|
+
}
|
|
12
|
+
const appByName = new Map(appPlugins.map((plugin) => [plugin.name, plugin]));
|
|
13
|
+
const uniqueCallerPlugins = callerPlugins.filter((plugin) => !appByName.has(plugin.name));
|
|
14
|
+
return [...uniqueCallerPlugins, ...appPlugins];
|
|
15
|
+
}
|
|
16
|
+
function createServerBuildRequest(appConfig, input) {
|
|
17
|
+
const profile = input.profile ?? "route-module";
|
|
18
|
+
const plugins = mergeCallerBuildPlugins(resolveServerAppBuildPlugins(appConfig), input.plugins);
|
|
19
|
+
const { plugins: _callerPlugins, profile: _profile, ...overrides } = input;
|
|
20
|
+
return {
|
|
21
|
+
...resolveBuildProfileOptions(profile, appConfig, overrides),
|
|
22
|
+
...overrides,
|
|
23
|
+
entrypoints: input.entrypoints,
|
|
24
|
+
...plugins.length > 0 ? { plugins } : {}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function createBrowserBuildRequest(appConfig, input) {
|
|
28
|
+
const { profile, excludeAppBuildPlugins, plugins: callerPlugins, ...overrides } = input;
|
|
29
|
+
const appBrowserPlugins = getAppBrowserBuildPlugins(appConfig);
|
|
30
|
+
const filteredAppBrowserPlugins = excludeAppBuildPlugins && excludeAppBuildPlugins.length > 0 ? appBrowserPlugins.filter((plugin) => !excludeAppBuildPlugins.includes(plugin.name)) : appBrowserPlugins;
|
|
31
|
+
const plugins = mergeCallerBuildPlugins(filteredAppBrowserPlugins, callerPlugins);
|
|
32
|
+
return {
|
|
33
|
+
...resolveBuildProfileOptions("browser-hmr", appConfig, overrides),
|
|
34
|
+
...getAppTranspileOptions(appConfig, profile),
|
|
35
|
+
...overrides,
|
|
36
|
+
entrypoints: input.entrypoints,
|
|
37
|
+
plugins,
|
|
38
|
+
sourceTransforms: getAppSourceTransforms(appConfig)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
createBrowserBuildRequest,
|
|
43
|
+
createServerBuildRequest,
|
|
44
|
+
mergeCallerBuildPlugins,
|
|
45
|
+
resolveServerAppBuildPlugins
|
|
46
|
+
};
|