@ecopages/core 0.2.0-alpha.8 → 0.2.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -28
- package/package.json +94 -116
- package/src/adapters/README.md +2 -2
- package/src/adapters/abstract/application-adapter.d.ts +28 -2
- package/src/adapters/abstract/application-adapter.js +14 -2
- package/src/adapters/abstract/router-adapter.d.ts +1 -1
- package/src/adapters/abstract/server-adapter.d.ts +2 -2
- package/src/adapters/bun/client-bridge.d.ts +1 -1
- package/src/adapters/bun/create-app.d.ts +12 -12
- package/src/adapters/bun/create-app.js +64 -41
- package/src/adapters/bun/hmr-manager.d.ts +19 -115
- package/src/adapters/bun/hmr-manager.js +25 -301
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -2
- package/src/adapters/bun/runtime-host.d.ts +52 -0
- package/src/adapters/bun/runtime-host.js +56 -0
- package/src/adapters/bun/server-adapter.d.ts +100 -32
- package/src/adapters/bun/server-adapter.js +142 -65
- package/src/adapters/bun/static-preview-host.d.ts +28 -0
- package/src/adapters/bun/static-preview-host.js +45 -0
- package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
- package/src/{create-app.js → adapters/create-app.js} +4 -4
- package/src/adapters/index.d.ts +1 -5
- package/src/adapters/index.js +1 -7
- package/src/adapters/node/create-app.d.ts +15 -12
- package/src/adapters/node/create-app.js +34 -85
- package/src/adapters/node/http-request-bridge.d.ts +57 -0
- package/src/adapters/node/http-request-bridge.js +118 -0
- package/src/adapters/node/node-client-bridge.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.d.ts +22 -103
- package/src/adapters/node/node-hmr-manager.js +26 -289
- package/src/adapters/node/runtime-host.d.ts +57 -0
- package/src/adapters/node/runtime-host.js +92 -0
- package/src/adapters/node/server-adapter-dependencies.d.ts +19 -0
- package/src/adapters/node/server-adapter-dependencies.js +18 -0
- package/src/adapters/node/server-adapter.d.ts +19 -42
- package/src/adapters/node/server-adapter.js +94 -139
- package/src/adapters/node/static-content-server.d.ts +1 -1
- package/src/adapters/node/static-content-server.js +1 -1
- package/src/adapters/node/static-preview-host.d.ts +55 -0
- package/src/adapters/node/static-preview-host.js +68 -0
- package/src/adapters/shared/application-adapter.d.ts +1 -1
- package/src/adapters/shared/define-api-handler.d.ts +1 -1
- package/src/adapters/shared/explicit-static-render-preparation.d.ts +25 -0
- package/src/adapters/shared/explicit-static-render-preparation.js +26 -0
- package/src/adapters/shared/explicit-static-route-matcher.d.ts +7 -4
- package/src/adapters/shared/explicit-static-route-matcher.js +14 -16
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +7 -10
- package/src/adapters/shared/file-route-middleware-pipeline.js +2 -11
- package/src/adapters/shared/fs-server-response-factory.d.ts +14 -10
- package/src/adapters/shared/fs-server-response-factory.js +11 -27
- package/src/adapters/shared/fs-server-response-matcher.d.ts +18 -18
- package/src/adapters/shared/fs-server-response-matcher.js +72 -46
- package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
- package/src/adapters/shared/hmr-html-response.d.ts +1 -1
- package/src/adapters/shared/hmr-html-response.js +4 -3
- package/src/adapters/shared/render-context.d.ts +5 -3
- package/src/adapters/shared/render-context.js +24 -1
- package/src/adapters/shared/runtime-app-bootstrap.d.ts +26 -0
- package/src/adapters/shared/runtime-app-bootstrap.js +46 -0
- package/src/adapters/shared/runtime-host.d.ts +12 -0
- package/src/adapters/shared/server-adapter.d.ts +22 -11
- package/src/adapters/shared/server-adapter.js +183 -133
- package/src/adapters/shared/server-route-handler.d.ts +5 -5
- package/src/adapters/shared/server-route-handler.js +4 -4
- package/src/adapters/shared/server-static-builder.d.ts +8 -7
- package/src/adapters/shared/server-static-builder.js +6 -5
- package/src/adapters/shared/shared-hmr-manager.d.ts +59 -0
- package/src/adapters/shared/shared-hmr-manager.js +241 -0
- package/src/adapters/shared/static-preview-host.d.ts +10 -0
- package/src/build/README.md +57 -67
- package/src/build/browser-runtime-manifest.d.ts +31 -0
- package/src/build/browser-runtime-manifest.js +61 -0
- package/src/build/browser-runtime-plugin-helpers.d.ts +26 -0
- package/src/build/browser-runtime-plugin-helpers.js +14 -0
- package/src/build/browser-runtime-plugin.d.ts +78 -0
- package/src/build/browser-runtime-plugin.js +173 -0
- package/src/build/build-adapter.d.ts +384 -63
- package/src/build/build-adapter.js +129 -54
- package/src/build/build-manifest.d.ts +6 -0
- package/src/build/build-manifest.js +21 -2
- package/src/build/build-types.d.ts +2 -2
- package/src/build/rolldown-adapter-helpers.d.ts +58 -0
- package/src/build/rolldown-adapter-helpers.js +265 -0
- package/src/build/rolldown-build-adapter.d.ts +28 -0
- package/src/build/rolldown-build-adapter.js +65 -0
- package/src/build/rolldown-dev-build-adapter.d.ts +82 -0
- package/src/build/rolldown-dev-build-adapter.js +166 -0
- package/src/build/rolldown-plugin-bridge.d.ts +59 -0
- package/src/build/rolldown-plugin-bridge.js +199 -0
- package/src/build/runtime-build-executor.d.ts +15 -7
- package/src/build/runtime-build-executor.js +8 -9
- package/src/build/runtime-build-output-normalizer.d.ts +3 -0
- package/src/build/runtime-build-output-normalizer.js +111 -0
- package/src/build/serialized-build-executor.d.ts +64 -0
- package/src/build/serialized-build-executor.js +63 -0
- package/src/build/server-side-css-shim-plugin.d.ts +41 -0
- package/src/build/server-side-css-shim-plugin.js +35 -0
- package/src/cache/index.d.ts +6 -0
- package/src/cache/index.js +6 -0
- package/src/cache/module-parse-cache.d.ts +65 -0
- package/src/cache/module-parse-cache.js +75 -0
- package/src/config/README.md +5 -2
- package/src/config/config-builder.d.ts +41 -13
- package/src/config/config-builder.js +62 -24
- package/src/declarations.d.ts +1 -1
- package/src/dev/host-runtime.d.ts +10 -0
- package/src/dev/host-runtime.js +24 -0
- package/src/dev/sc-server.d.ts +1 -1
- package/src/dev/sc-server.js +1 -1
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.js +50 -45
- package/src/eco/eco.types.d.ts +60 -8
- package/src/eco/eco.utils.d.ts +1 -40
- package/src/eco/eco.utils.js +5 -35
- package/src/eco/global-injector-map.d.ts +3 -3
- package/src/eco/global-injector-map.js +2 -2
- package/src/eco/lazy-injector-map.d.ts +2 -2
- package/src/errors/index.d.ts +1 -0
- package/src/errors/index.js +3 -1
- package/src/hmr/client/hmr-runtime.js +9 -1
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
- package/src/hmr/strategies/default-hmr-strategy.js +1 -1
- package/src/hmr/strategies/js-hmr-strategy.d.ts +4 -9
- package/src/hmr/strategies/js-hmr-strategy.js +5 -10
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +3 -2
- package/src/index.js +15 -4
- package/src/integrations/ghtml/ghtml-renderer.d.ts +2 -1
- package/src/integrations/ghtml/ghtml-renderer.js +24 -29
- package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
- package/src/integrations/ghtml/ghtml.constants.js +4 -0
- package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
- package/src/integrations/ghtml/ghtml.plugin.js +3 -4
- package/src/plugins/README.md +1 -0
- package/src/plugins/alias-resolver-cache.d.ts +68 -0
- package/src/plugins/alias-resolver-cache.js +106 -0
- package/src/plugins/alias-resolver-plugin.d.ts +5 -1
- package/src/plugins/alias-resolver-plugin.js +19 -7
- package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
- package/src/plugins/eco-component-meta-plugin.js +43 -25
- package/src/plugins/foreign-jsx-override-plugin.d.ts +33 -0
- package/src/plugins/foreign-jsx-override-plugin.js +41 -0
- package/src/plugins/integration-plugin.d.ts +136 -42
- package/src/plugins/integration-plugin.js +99 -31
- package/src/plugins/processor.d.ts +4 -2
- package/src/plugins/processor.js +8 -3
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +80 -318
- package/src/route-renderer/README.md +74 -78
- package/src/route-renderer/orchestration/component-render-context.d.ts +97 -0
- package/src/route-renderer/orchestration/component-render-context.js +147 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.d.ts +18 -0
- package/src/route-renderer/orchestration/declared-ownership-graph.js +34 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.d.ts +110 -0
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.js +233 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +290 -128
- package/src/route-renderer/orchestration/integration-renderer.js +660 -258
- package/src/route-renderer/orchestration/ownership-planning.service.d.ts +24 -0
- package/src/route-renderer/orchestration/ownership-planning.service.js +63 -0
- package/src/route-renderer/orchestration/ownership-validation.service.d.ts +29 -0
- package/src/route-renderer/orchestration/ownership-validation.service.js +53 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.d.ts +3 -0
- package/src/route-renderer/orchestration/processed-asset-dedupe.js +27 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.d.ts +91 -0
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.js +170 -0
- package/src/route-renderer/orchestration/render-output.utils.d.ts +66 -0
- package/src/route-renderer/orchestration/render-output.utils.js +171 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.d.ts +156 -0
- package/src/route-renderer/orchestration/route-render-orchestrator.js +577 -0
- package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
- package/src/route-renderer/orchestration/template-serialization.js +45 -0
- package/src/route-renderer/page-loading/component-dependency-collection.d.ts +37 -0
- package/src/route-renderer/page-loading/component-dependency-collection.js +132 -0
- package/src/route-renderer/page-loading/declared-asset-collection.d.ts +24 -0
- package/src/route-renderer/page-loading/declared-asset-collection.js +106 -0
- package/src/route-renderer/page-loading/dependency-resolver.d.ts +2 -2
- package/src/route-renderer/page-loading/dependency-resolver.js +27 -354
- package/src/route-renderer/page-loading/ecopages-virtual-imports.d.ts +11 -0
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +57 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.d.ts +45 -0
- package/src/route-renderer/page-loading/lazy-entry-collection.js +105 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.d.ts +19 -0
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +40 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.d.ts +5 -0
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +33 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.d.ts +3 -0
- package/src/route-renderer/page-loading/module-declaration-scripts.js +18 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.d.ts +13 -0
- package/src/route-renderer/page-loading/page-dependency-bundling.js +137 -0
- package/src/route-renderer/page-loading/page-module-loader.d.ts +7 -4
- package/src/route-renderer/page-loading/page-module-loader.js +8 -5
- package/src/route-renderer/route-renderer.d.ts +31 -23
- package/src/route-renderer/route-renderer.js +17 -24
- package/src/router/README.md +76 -8
- package/src/router/client/navigation-coordinator.d.ts +20 -0
- package/src/router/client/navigation-coordinator.js +2 -2
- package/src/router/server/route-registry.d.ts +78 -0
- package/src/router/server/route-registry.js +262 -0
- package/src/services/README.md +1 -2
- package/src/services/assets/asset-processing-service/asset-dependency-keys.d.ts +3 -0
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +56 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -20
- package/src/services/assets/asset-processing-service/asset-processing.service.js +52 -98
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
- package/src/services/assets/asset-processing-service/assets.types.d.ts +14 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +2 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +1 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.d.ts +30 -0
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +65 -0
- package/src/services/assets/asset-processing-service/index.d.ts +6 -5
- package/src/services/assets/asset-processing-service/index.js +6 -5
- package/src/services/assets/asset-processing-service/page-package.d.ts +6 -0
- package/src/services/assets/asset-processing-service/page-package.js +80 -0
- package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +3 -2
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +10 -5
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +69 -5
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +3 -2
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +66 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +27 -6
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +38 -3
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +57 -6
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +5 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +39 -5
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +5 -2
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.d.ts +18 -0
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +45 -0
- package/src/services/assets/browser-bundle.service.d.ts +44 -3
- package/src/services/assets/browser-bundle.service.js +15 -7
- package/src/services/html/html-rewriter-provider.service.d.ts +3 -0
- package/src/services/html/html-rewriter-provider.service.js +4 -1
- package/src/services/html/html-transformer.service.d.ts +22 -3
- package/src/services/html/html-transformer.service.js +101 -35
- package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
- package/src/services/invalidation/development-invalidation.service.js +1 -0
- package/src/services/module-loading/app-module-loader.service.d.ts +7 -0
- package/src/services/module-loading/app-module-loader.service.js +0 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
- package/src/services/module-loading/app-server-module-transpiler.service.js +102 -6
- package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
- package/src/services/module-loading/host-module-loader-registry.js +15 -0
- package/src/services/module-loading/module-loading-types.d.ts +2 -0
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/page-module-import.service.d.ts +32 -8
- package/src/services/module-loading/page-module-import.service.js +83 -22
- package/src/services/module-loading/server-module-transpiler.service.d.ts +8 -14
- package/src/services/module-loading/server-module-transpiler.service.js +5 -2
- package/src/services/module-loading/source-module-support.d.ts +5 -0
- package/src/services/module-loading/source-module-support.js +8 -0
- package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
- package/src/services/runtime-state/dev-graph.service.js +10 -10
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
- package/src/static-site-generator/static-site-generator.d.ts +23 -28
- package/src/static-site-generator/static-site-generator.js +119 -156
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +34 -23
- package/src/types/internal-types.js +0 -0
- package/src/{public-types.d.ts → types/public-types.d.ts} +195 -37
- package/src/types/public-types.js +0 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/locals-utils.d.ts +1 -1
- package/src/utils/parse-cli-args.d.ts +4 -1
- package/src/utils/parse-cli-args.js +16 -1
- package/src/utils/resolve-work-dir.js +1 -1
- package/src/watchers/project-watcher.d.ts +4 -4
- package/src/watchers/project-watcher.js +35 -41
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +5 -5
- package/CHANGELOG.md +0 -31
- package/src/adapters/abstract/application-adapter.ts +0 -337
- package/src/adapters/abstract/router-adapter.ts +0 -30
- package/src/adapters/abstract/server-adapter.ts +0 -79
- package/src/adapters/bun/client-bridge.ts +0 -62
- package/src/adapters/bun/create-app.ts +0 -189
- package/src/adapters/bun/hmr-manager.ts +0 -409
- package/src/adapters/bun/index.ts +0 -2
- package/src/adapters/bun/server-adapter.ts +0 -499
- package/src/adapters/bun/server-lifecycle.d.ts +0 -63
- package/src/adapters/bun/server-lifecycle.js +0 -92
- package/src/adapters/bun/server-lifecycle.ts +0 -124
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/bootstrap-dependency-resolver.d.ts +0 -44
- package/src/adapters/node/bootstrap-dependency-resolver.js +0 -172
- package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -6
- package/src/adapters/node/index.js +0 -11
- package/src/adapters/node/index.ts +0 -16
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -381
- package/src/adapters/node/runtime-adapter.d.ts +0 -46
- package/src/adapters/node/runtime-adapter.js +0 -306
- package/src/adapters/node/runtime-adapter.ts +0 -439
- package/src/adapters/node/server-adapter.ts +0 -488
- package/src/adapters/node/static-content-server.ts +0 -239
- package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
- package/src/adapters/node/write-runtime-manifest.js +0 -12
- package/src/adapters/node/write-runtime-manifest.ts +0 -38
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/define-api-handler.ts +0 -66
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
- package/src/adapters/shared/hmr-html-response.ts +0 -52
- package/src/adapters/shared/render-context.ts +0 -120
- package/src/adapters/shared/runtime-bootstrap.d.ts +0 -38
- package/src/adapters/shared/runtime-bootstrap.js +0 -43
- package/src/adapters/shared/runtime-bootstrap.ts +0 -79
- package/src/adapters/shared/server-adapter.ts +0 -489
- package/src/adapters/shared/server-route-handler.ts +0 -153
- package/src/adapters/shared/server-static-builder.ts +0 -166
- package/src/build/build-adapter.ts +0 -361
- package/src/build/build-manifest.ts +0 -54
- package/src/build/build-types.ts +0 -83
- package/src/build/dev-build-coordinator.d.ts +0 -74
- package/src/build/dev-build-coordinator.js +0 -161
- package/src/build/dev-build-coordinator.ts +0 -221
- package/src/build/esbuild-build-adapter.d.ts +0 -72
- package/src/build/esbuild-build-adapter.js +0 -422
- package/src/build/esbuild-build-adapter.ts +0 -559
- package/src/build/runtime-build-executor.ts +0 -34
- package/src/build/runtime-specifier-alias-plugin.d.ts +0 -15
- package/src/build/runtime-specifier-alias-plugin.js +0 -31
- package/src/build/runtime-specifier-alias-plugin.ts +0 -58
- package/src/config/config-builder.ts +0 -706
- package/src/constants.ts +0 -54
- package/src/create-app.ts +0 -87
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/component-render-context.d.ts +0 -105
- package/src/eco/component-render-context.js +0 -87
- package/src/eco/component-render-context.ts +0 -224
- package/src/eco/eco.ts +0 -242
- package/src/eco/eco.types.ts +0 -221
- package/src/eco/eco.utils.ts +0 -89
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -2
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/hmr/client/hmr-runtime.ts +0 -152
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
- package/src/hmr/hmr.test.e2e.ts +0 -66
- package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -5
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -232
- package/src/plugins/alias-resolver-plugin.ts +0 -63
- package/src/plugins/eco-component-meta-plugin.ts +0 -481
- package/src/plugins/integration-plugin.ts +0 -226
- package/src/plugins/processor.ts +0 -240
- package/src/plugins/runtime-capability.ts +0 -14
- package/src/public-types.ts +0 -1317
- package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph/component-graph.js +0 -72
- package/src/route-renderer/component-graph/component-graph.ts +0 -159
- package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
- package/src/route-renderer/component-graph/component-marker.js +0 -46
- package/src/route-renderer/component-graph/component-marker.ts +0 -117
- package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
- package/src/route-renderer/component-graph/component-reference.js +0 -19
- package/src/route-renderer/component-graph/component-reference.ts +0 -29
- package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
- package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
- package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
- package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
- package/src/route-renderer/orchestration/render-execution.service.d.ts +0 -103
- package/src/route-renderer/orchestration/render-execution.service.js +0 -121
- package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
- package/src/route-renderer/orchestration/render-preparation.service.d.ts +0 -121
- package/src/route-renderer/orchestration/render-preparation.service.js +0 -332
- package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
- package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
- package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
- package/src/route-renderer/route-renderer.ts +0 -115
- package/src/router/client/link-intent.test.browser.ts +0 -51
- package/src/router/client/link-intent.ts +0 -92
- package/src/router/client/navigation-coordinator.ts +0 -433
- package/src/router/server/fs-router-scanner.d.ts +0 -41
- package/src/router/server/fs-router-scanner.js +0 -156
- package/src/router/server/fs-router-scanner.ts +0 -219
- package/src/router/server/fs-router.d.ts +0 -26
- package/src/router/server/fs-router.js +0 -100
- package/src/router/server/fs-router.ts +0 -122
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
- package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
- package/src/services/assets/asset-processing-service/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
- package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
- package/src/services/assets/browser-bundle.service.ts +0 -53
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
- package/src/services/html/html-rewriter-provider.service.ts +0 -103
- package/src/services/html/html-transformer.service.ts +0 -279
- package/src/services/invalidation/development-invalidation.service.ts +0 -261
- package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
- package/src/services/module-loading/page-module-import.service.ts +0 -200
- package/src/services/module-loading/server-loader.service.d.ts +0 -96
- package/src/services/module-loading/server-loader.service.js +0 -32
- package/src/services/module-loading/server-loader.service.ts +0 -130
- package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
- package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
- package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
- package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
- package/src/services/runtime-state/dev-graph.service.ts +0 -217
- package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
- package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +0 -69
- package/src/services/runtime-state/runtime-specifier-registry.service.js +0 -37
- package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
- package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
- package/src/services/validation/schema-validation-service.ts +0 -204
- package/src/services/validation/standard-schema.types.ts +0 -68
- package/src/static-site-generator/static-site-generator.ts +0 -462
- package/src/utils/css.d.ts +0 -1
- package/src/utils/css.js +0 -7
- package/src/utils/css.ts +0 -5
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html.ts +0 -1
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.ts +0 -83
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/resolve-work-dir.ts +0 -45
- package/src/utils/runtime.ts +0 -44
- package/src/utils/server-utils.module.ts +0 -67
- package/src/watchers/project-watcher.test-helpers.ts +0 -41
- package/src/watchers/project-watcher.ts +0 -363
- /package/src/{internal-types.js → adapters/shared/runtime-host.js} +0 -0
- /package/src/{public-types.js → adapters/shared/static-preview-host.js} +0 -0
- /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
- /package/src/{constants.js → config/constants.js} +0 -0
|
@@ -1,63 +1,96 @@
|
|
|
1
|
+
import { mergeBrowserRuntimeManifests } from "./browser-runtime-manifest.js";
|
|
2
|
+
import { normalizeNodeRuntimeBuildOutputs } from "./runtime-build-output-normalizer.js";
|
|
3
|
+
import { createForeignJsxOverridePlugin } from "../plugins/foreign-jsx-override-plugin.js";
|
|
1
4
|
import {
|
|
2
5
|
createAppBuildManifest,
|
|
3
6
|
getBrowserBuildPlugins,
|
|
4
7
|
getServerBuildPlugins
|
|
5
8
|
} from "./build-manifest.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
function transpileProfileToOptions(profile) {
|
|
13
|
-
switch (profile) {
|
|
14
|
-
case "browser-script":
|
|
15
|
-
return {
|
|
16
|
-
target: "browser",
|
|
17
|
-
format: "esm",
|
|
18
|
-
sourcemap: "none"
|
|
19
|
-
};
|
|
20
|
-
case "hmr-runtime":
|
|
21
|
-
return {
|
|
22
|
-
target: "browser",
|
|
23
|
-
format: "esm",
|
|
24
|
-
sourcemap: "none"
|
|
25
|
-
};
|
|
26
|
-
case "hmr-entrypoint":
|
|
27
|
-
return {
|
|
28
|
-
target: "browser",
|
|
29
|
-
format: "esm",
|
|
30
|
-
sourcemap: "none"
|
|
31
|
-
};
|
|
9
|
+
import { createRolldownBuildAdapter } from "./rolldown-build-adapter.js";
|
|
10
|
+
import { createRolldownDevBuildAdapter } from "./rolldown-dev-build-adapter.js";
|
|
11
|
+
function mergeBuildExecutorPlugins(existing, appPlugins) {
|
|
12
|
+
if (!existing || existing.length === 0) {
|
|
13
|
+
return appPlugins;
|
|
32
14
|
}
|
|
15
|
+
const byName = /* @__PURE__ */ new Map();
|
|
16
|
+
for (const plugin of existing) {
|
|
17
|
+
byName.set(plugin.name, plugin);
|
|
18
|
+
}
|
|
19
|
+
for (const plugin of appPlugins) {
|
|
20
|
+
byName.set(plugin.name, plugin);
|
|
21
|
+
}
|
|
22
|
+
return Array.from(byName.values());
|
|
33
23
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
24
|
+
function withBuildExecutorPlugins(executor, getPlugins) {
|
|
25
|
+
return {
|
|
26
|
+
async build(options) {
|
|
27
|
+
const appPlugins = getPlugins();
|
|
28
|
+
if (appPlugins.length === 0) {
|
|
29
|
+
return executor.build(options);
|
|
30
|
+
}
|
|
31
|
+
return executor.build({
|
|
32
|
+
...options,
|
|
33
|
+
plugins: mergeBuildExecutorPlugins(options.plugins, appPlugins)
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function createHostOwnedBuildError(methodName) {
|
|
39
|
+
return new Error(
|
|
40
|
+
`Vite-hosted builds are owned by the host runtime. Core cannot ${methodName} through the host-owned compatibility adapter.`
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
class ViteHostBuildAdapter {
|
|
44
|
+
ownership = "vite-host";
|
|
45
|
+
async build(_options) {
|
|
46
|
+
throw createHostOwnedBuildError("build");
|
|
46
47
|
}
|
|
47
|
-
resolve(
|
|
48
|
-
|
|
48
|
+
resolve(_importPath, _rootDir) {
|
|
49
|
+
throw createHostOwnedBuildError("resolve imports");
|
|
49
50
|
}
|
|
50
|
-
getTranspileOptions(
|
|
51
|
-
|
|
51
|
+
getTranspileOptions(_profile) {
|
|
52
|
+
throw createHostOwnedBuildError("derive transpile options");
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
|
-
|
|
55
|
+
function createViteHostBuildAdapter() {
|
|
56
|
+
return new ViteHostBuildAdapter();
|
|
57
|
+
}
|
|
58
|
+
function createBuildAdapter(options) {
|
|
59
|
+
switch (options?.ownership ?? "rolldown") {
|
|
60
|
+
case "vite-host":
|
|
61
|
+
return createViteHostBuildAdapter();
|
|
62
|
+
case "rolldown-dev":
|
|
63
|
+
return createRolldownDevBuildAdapter();
|
|
64
|
+
case "rolldown":
|
|
65
|
+
default:
|
|
66
|
+
return createRolldownBuildAdapter();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const defaultRolldownBuildAdapter = createBuildAdapter({ ownership: "rolldown" });
|
|
70
|
+
const defaultViteHostBuildAdapter = createBuildAdapter({ ownership: "vite-host" });
|
|
71
|
+
const defaultBuildAdapter = defaultRolldownBuildAdapter;
|
|
72
|
+
function getDefaultBuildAdapter(ownership = "rolldown") {
|
|
73
|
+
return ownership === "vite-host" ? defaultViteHostBuildAdapter : defaultRolldownBuildAdapter;
|
|
74
|
+
}
|
|
75
|
+
function getBuildAdapterOwnership(buildAdapter) {
|
|
76
|
+
return buildAdapter?.ownership ?? "rolldown";
|
|
77
|
+
}
|
|
78
|
+
function getAppBuildOwnership(appConfig) {
|
|
79
|
+
return appConfig.runtime?.buildOwnership ?? getBuildAdapterOwnership(appConfig.runtime?.buildAdapter);
|
|
80
|
+
}
|
|
81
|
+
function setAppBuildOwnership(appConfig, buildOwnership) {
|
|
82
|
+
appConfig.runtime = {
|
|
83
|
+
...appConfig.runtime ?? {},
|
|
84
|
+
buildOwnership
|
|
85
|
+
};
|
|
86
|
+
}
|
|
55
87
|
function getAppBuildAdapter(appConfig) {
|
|
56
|
-
return appConfig.runtime?.buildAdapter ??
|
|
88
|
+
return appConfig.runtime?.buildAdapter ?? getDefaultBuildAdapter(getAppBuildOwnership(appConfig));
|
|
57
89
|
}
|
|
58
90
|
function setAppBuildAdapter(appConfig, buildAdapter) {
|
|
59
91
|
appConfig.runtime = {
|
|
60
92
|
...appConfig.runtime ?? {},
|
|
93
|
+
buildOwnership: getBuildAdapterOwnership(buildAdapter),
|
|
61
94
|
buildAdapter
|
|
62
95
|
};
|
|
63
96
|
}
|
|
@@ -76,7 +109,8 @@ function createConfiguredAppBuildManifest(appConfig, input) {
|
|
|
76
109
|
return createAppBuildManifest({
|
|
77
110
|
loaderPlugins: input?.loaderPlugins ?? Array.from(appConfig.loaders.values()),
|
|
78
111
|
runtimePlugins: input?.runtimePlugins,
|
|
79
|
-
browserBundlePlugins: input?.browserBundlePlugins
|
|
112
|
+
browserBundlePlugins: input?.browserBundlePlugins,
|
|
113
|
+
browserRuntimeManifest: input?.browserRuntimeManifest
|
|
80
114
|
});
|
|
81
115
|
}
|
|
82
116
|
function updateAppBuildManifest(appConfig, input) {
|
|
@@ -85,6 +119,7 @@ function updateAppBuildManifest(appConfig, input) {
|
|
|
85
119
|
async function collectConfiguredAppBuildManifestContributions(appConfig) {
|
|
86
120
|
const runtimePlugins = [];
|
|
87
121
|
const browserBundlePlugins = [];
|
|
122
|
+
const browserRuntimeManifests = [];
|
|
88
123
|
for (const processor of appConfig.processors.values()) {
|
|
89
124
|
await processor.prepareBuildContributions();
|
|
90
125
|
if (processor.plugins) {
|
|
@@ -97,14 +132,20 @@ async function collectConfiguredAppBuildManifestContributions(appConfig) {
|
|
|
97
132
|
for (const integration of appConfig.integrations) {
|
|
98
133
|
integration.setConfig(appConfig);
|
|
99
134
|
await integration.prepareBuildContributions();
|
|
100
|
-
runtimePlugins.push(...integration.plugins);
|
|
135
|
+
runtimePlugins.push(...integration.plugins ?? []);
|
|
136
|
+
browserBundlePlugins.push(...integration.browserBuildPlugins ?? []);
|
|
137
|
+
browserRuntimeManifests.push(integration.browserRuntimeManifest);
|
|
101
138
|
}
|
|
102
139
|
return {
|
|
103
140
|
runtimePlugins,
|
|
104
|
-
browserBundlePlugins
|
|
141
|
+
browserBundlePlugins,
|
|
142
|
+
browserRuntimeManifest: mergeBrowserRuntimeManifests(...browserRuntimeManifests)
|
|
105
143
|
};
|
|
106
144
|
}
|
|
107
145
|
async function setupAppRuntimePlugins(options) {
|
|
146
|
+
for (const loader of options.appConfig.loaders.values()) {
|
|
147
|
+
options.onRuntimePlugin?.(loader);
|
|
148
|
+
}
|
|
108
149
|
for (const processor of options.appConfig.processors.values()) {
|
|
109
150
|
await processor.setup();
|
|
110
151
|
if (processor.plugins) {
|
|
@@ -129,7 +170,22 @@ function getAppServerBuildPlugins(appConfig) {
|
|
|
129
170
|
return getServerBuildPlugins(getAppBuildManifest(appConfig));
|
|
130
171
|
}
|
|
131
172
|
function getAppBrowserBuildPlugins(appConfig) {
|
|
132
|
-
|
|
173
|
+
const manifest = getAppBuildManifest(appConfig);
|
|
174
|
+
const jsxOwnershipPlugins = collectJsxOwnershipPlugins(appConfig);
|
|
175
|
+
return [...getBrowserBuildPlugins(manifest), ...jsxOwnershipPlugins];
|
|
176
|
+
}
|
|
177
|
+
function collectJsxOwnershipPlugins(appConfig) {
|
|
178
|
+
const jsxExtensions = (appConfig.integrations ?? []).filter((integration) => integration.jsxImportSource).flatMap(
|
|
179
|
+
(integration) => integration.extensions.filter((extension) => extension.endsWith(".tsx") || extension.endsWith(".jsx")).map((extension) => ({ integration, extension }))
|
|
180
|
+
).sort((left, right) => right.extension.length - left.extension.length);
|
|
181
|
+
return jsxExtensions.map(
|
|
182
|
+
({ integration, extension }) => createForeignJsxOverridePlugin({
|
|
183
|
+
hostJsxImportSource: integration.jsxImportSource,
|
|
184
|
+
foreignExtensions: [extension],
|
|
185
|
+
excludeExtensions: jsxExtensions.filter((candidate) => candidate.extension.length > extension.length).filter((candidate) => candidate.extension.endsWith(extension)).map((candidate) => candidate.extension),
|
|
186
|
+
name: `ecopages-jsx-ownership-${integration.name}-${extension.replace(/[^a-zA-Z0-9]+/g, "-")}`
|
|
187
|
+
})
|
|
188
|
+
);
|
|
133
189
|
}
|
|
134
190
|
function getAppBuildExecutor(appConfig) {
|
|
135
191
|
return appConfig.runtime?.buildExecutor ?? getAppBuildAdapter(appConfig);
|
|
@@ -140,29 +196,48 @@ function setAppBuildExecutor(appConfig, buildExecutor) {
|
|
|
140
196
|
buildExecutor
|
|
141
197
|
};
|
|
142
198
|
}
|
|
143
|
-
function build(options, executor =
|
|
144
|
-
return executor.build(options)
|
|
199
|
+
function build(options, executor = defaultRolldownBuildAdapter) {
|
|
200
|
+
return executor.build(options).then((result) => {
|
|
201
|
+
if (result.success) {
|
|
202
|
+
normalizeNodeRuntimeBuildOutputs(
|
|
203
|
+
result.outputs.map((output) => output.path),
|
|
204
|
+
options.root ?? process.cwd()
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
return result;
|
|
208
|
+
});
|
|
145
209
|
}
|
|
146
210
|
function getTranspileOptions(profile) {
|
|
147
|
-
return
|
|
211
|
+
return defaultRolldownBuildAdapter.getTranspileOptions(profile);
|
|
212
|
+
}
|
|
213
|
+
function getAppTranspileOptions(appConfig, profile) {
|
|
214
|
+
return getAppBuildAdapter(appConfig).getTranspileOptions(profile);
|
|
148
215
|
}
|
|
149
216
|
export {
|
|
150
|
-
|
|
151
|
-
EsbuildBuildAdapter2 as EsbuildBuildAdapter,
|
|
217
|
+
ViteHostBuildAdapter,
|
|
152
218
|
build,
|
|
153
219
|
collectConfiguredAppBuildManifestContributions,
|
|
154
220
|
createBuildAdapter,
|
|
155
221
|
createConfiguredAppBuildManifest,
|
|
222
|
+
createViteHostBuildAdapter,
|
|
156
223
|
defaultBuildAdapter,
|
|
224
|
+
defaultRolldownBuildAdapter,
|
|
225
|
+
defaultViteHostBuildAdapter,
|
|
157
226
|
getAppBrowserBuildPlugins,
|
|
158
227
|
getAppBuildAdapter,
|
|
159
228
|
getAppBuildExecutor,
|
|
160
229
|
getAppBuildManifest,
|
|
230
|
+
getAppBuildOwnership,
|
|
161
231
|
getAppServerBuildPlugins,
|
|
232
|
+
getAppTranspileOptions,
|
|
233
|
+
getBuildAdapterOwnership,
|
|
234
|
+
getDefaultBuildAdapter,
|
|
162
235
|
getTranspileOptions,
|
|
163
236
|
setAppBuildAdapter,
|
|
164
237
|
setAppBuildExecutor,
|
|
165
238
|
setAppBuildManifest,
|
|
239
|
+
setAppBuildOwnership,
|
|
166
240
|
setupAppRuntimePlugins,
|
|
167
|
-
updateAppBuildManifest
|
|
241
|
+
updateAppBuildManifest,
|
|
242
|
+
withBuildExecutorPlugins
|
|
168
243
|
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { EcoBuildPlugin } from './build-types.js';
|
|
2
|
+
import { type BrowserRuntimeManifest } from './browser-runtime-manifest.js';
|
|
2
3
|
export interface AppBuildManifest {
|
|
3
4
|
loaderPlugins: EcoBuildPlugin[];
|
|
4
5
|
runtimePlugins: EcoBuildPlugin[];
|
|
5
6
|
browserBundlePlugins: EcoBuildPlugin[];
|
|
7
|
+
browserRuntimeManifest: BrowserRuntimeManifest;
|
|
6
8
|
}
|
|
7
9
|
/**
|
|
8
10
|
* Merges plugin lists while preserving first-registration precedence by name.
|
|
@@ -17,6 +19,10 @@ export declare function mergeEcoBuildPlugins(...pluginLists: Array<EcoBuildPlugi
|
|
|
17
19
|
* Creates one app-owned build manifest from the supplied plugin buckets.
|
|
18
20
|
*/
|
|
19
21
|
export declare function createAppBuildManifest(input?: Partial<AppBuildManifest>): AppBuildManifest;
|
|
22
|
+
/**
|
|
23
|
+
* Returns the shared browser runtime asset manifest sealed into the app build manifest.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getBrowserRuntimeManifest(manifest: AppBuildManifest): BrowserRuntimeManifest;
|
|
20
26
|
/**
|
|
21
27
|
* Returns the plugin list used for server-oriented builds.
|
|
22
28
|
*/
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { createBrowserRuntimePlugin, DEFAULT_BROWSER_RUNTIME_PLUGIN_NAME } from "./browser-runtime-plugin.js";
|
|
2
|
+
import {
|
|
3
|
+
createBrowserRuntimeManifest,
|
|
4
|
+
mergeBrowserRuntimeManifests
|
|
5
|
+
} from "./browser-runtime-manifest.js";
|
|
1
6
|
function mergeEcoBuildPlugins(...pluginLists) {
|
|
2
7
|
const byName = /* @__PURE__ */ new Map();
|
|
3
8
|
for (const plugins of pluginLists) {
|
|
@@ -13,18 +18,32 @@ function createAppBuildManifest(input) {
|
|
|
13
18
|
return {
|
|
14
19
|
loaderPlugins: mergeEcoBuildPlugins(input?.loaderPlugins),
|
|
15
20
|
runtimePlugins: mergeEcoBuildPlugins(input?.runtimePlugins),
|
|
16
|
-
browserBundlePlugins: mergeEcoBuildPlugins(input?.browserBundlePlugins)
|
|
21
|
+
browserBundlePlugins: mergeEcoBuildPlugins(input?.browserBundlePlugins),
|
|
22
|
+
browserRuntimeManifest: mergeBrowserRuntimeManifests(input?.browserRuntimeManifest)
|
|
17
23
|
};
|
|
18
24
|
}
|
|
25
|
+
function getBrowserRuntimeManifest(manifest) {
|
|
26
|
+
return manifest.browserRuntimeManifest ?? createBrowserRuntimeManifest();
|
|
27
|
+
}
|
|
19
28
|
function getServerBuildPlugins(manifest) {
|
|
20
29
|
return mergeEcoBuildPlugins(manifest.loaderPlugins, manifest.runtimePlugins);
|
|
21
30
|
}
|
|
22
31
|
function getBrowserBuildPlugins(manifest) {
|
|
23
|
-
|
|
32
|
+
const runtimeRewritePlugin = createBrowserRuntimePlugin({
|
|
33
|
+
name: DEFAULT_BROWSER_RUNTIME_PLUGIN_NAME,
|
|
34
|
+
manifest: getBrowserRuntimeManifest(manifest)
|
|
35
|
+
});
|
|
36
|
+
return mergeEcoBuildPlugins(
|
|
37
|
+
manifest.loaderPlugins,
|
|
38
|
+
manifest.runtimePlugins,
|
|
39
|
+
runtimeRewritePlugin ? [runtimeRewritePlugin] : [],
|
|
40
|
+
manifest.browserBundlePlugins
|
|
41
|
+
);
|
|
24
42
|
}
|
|
25
43
|
export {
|
|
26
44
|
createAppBuildManifest,
|
|
27
45
|
getBrowserBuildPlugins,
|
|
46
|
+
getBrowserRuntimeManifest,
|
|
28
47
|
getServerBuildPlugins,
|
|
29
48
|
mergeEcoBuildPlugins
|
|
30
49
|
};
|
|
@@ -22,7 +22,7 @@ export type EcoBuildOnLoadArgs = {
|
|
|
22
22
|
namespace?: string;
|
|
23
23
|
};
|
|
24
24
|
/**
|
|
25
|
-
* Loader kinds supported
|
|
25
|
+
* Loader kinds supported by the build plugin contract.
|
|
26
26
|
*/
|
|
27
27
|
export type EcoBuildLoader = 'base64' | 'binary' | 'copy' | 'css' | 'dataurl' | 'empty' | 'file' | 'global-css' | 'js' | 'json' | 'jsx' | 'local-css' | 'object' | 'text' | 'ts' | 'tsx';
|
|
28
28
|
/**
|
|
@@ -35,7 +35,7 @@ export type EcoBuildOnLoadResult = {
|
|
|
35
35
|
resolveDir?: string;
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
38
|
+
* Plugin builder contract consumed by build adapters.
|
|
39
39
|
*/
|
|
40
40
|
export interface EcoBuildPluginBuilder {
|
|
41
41
|
onResolve(options: {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for the Rolldown-backed build adapters.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* The standard {@link RolldownBuildAdapter} (one-shot production builds)
|
|
6
|
+
* and the dev {@link RolldownDevBuildAdapter} (DevEngine-backed
|
|
7
|
+
* incremental rebuilds) both need the same BuildOptions → Rolldown
|
|
8
|
+
* mapping, the same dependency-graph extraction, and the same
|
|
9
|
+
* post-build rewriting pipeline. This module hosts the shared code so
|
|
10
|
+
* the two adapters stay semantically identical.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import type { InputOptions, OutputOptions } from 'rolldown';
|
|
15
|
+
import type { EcoBuildPlugin } from './build-types.js';
|
|
16
|
+
import type { BuildDependencyGraph, BuildLog, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from './build-adapter.js';
|
|
17
|
+
export declare function transpileProfileToOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
|
|
18
|
+
export declare function extractDependencyGraph(chunks: Array<{
|
|
19
|
+
facadeModuleId: string | null;
|
|
20
|
+
moduleIds: string[];
|
|
21
|
+
}>, contextRoot: string): BuildDependencyGraph;
|
|
22
|
+
export declare function toBuildLogs(error: unknown): BuildLog[];
|
|
23
|
+
/** Translated Rolldown options for one {@link BuildOptions} request. */
|
|
24
|
+
export interface ResolvedRolldownOptions {
|
|
25
|
+
inputOptions: InputOptions;
|
|
26
|
+
outputOptions: OutputOptions;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Translates a {@link BuildOptions} into Rolldown's `InputOptions` and
|
|
30
|
+
* `OutputOptions`. Always sets `experimental.nativeMagicString: true`
|
|
31
|
+
* and always consolidates eco plugins via the bridge.
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveRolldownOptions(options: BuildOptions, contextRoot: string, outdir: string, appRootRequireCache: Map<string, NodeJS.Require>): ResolvedRolldownOptions;
|
|
34
|
+
/**
|
|
35
|
+
* Rewrites manifest-owned runtime specifiers in emitted JS output
|
|
36
|
+
* files. Skips work when the specifier map is empty or when a
|
|
37
|
+
* `(specifierMap, path, content)` tuple was already seen.
|
|
38
|
+
*
|
|
39
|
+
* The content cache is module-level and is keyed on a djb2 hash of
|
|
40
|
+
* the input bytes plus a sorted fingerprint of the specifier map. A
|
|
41
|
+
* manifest change correctly invalidates prior entries; different
|
|
42
|
+
* content of the same length does not collide.
|
|
43
|
+
*/
|
|
44
|
+
export declare function rewriteBrowserRuntimeImportsInOutputs(result: BuildResult, contextRoot: string, plugins: EcoBuildPlugin[]): BuildResult;
|
|
45
|
+
/** Test-only: clears the rewriter content cache. */
|
|
46
|
+
export declare function clearRewriteCacheForTests(): void;
|
|
47
|
+
/** Normalizes node-runtime import paths in emitted outputs. */
|
|
48
|
+
export declare function rewriteNodeRuntimeImportsInOutputs(result: BuildResult, contextRoot: string): BuildResult;
|
|
49
|
+
/** Maps a Rolldown `output` to a normalized {@link BuildResult}. */
|
|
50
|
+
export declare function buildResultFromRolldownOutput(output: {
|
|
51
|
+
output: Array<{
|
|
52
|
+
fileName: string;
|
|
53
|
+
type?: string;
|
|
54
|
+
isEntry?: boolean;
|
|
55
|
+
facadeModuleId?: string | null;
|
|
56
|
+
moduleIds?: string[];
|
|
57
|
+
}>;
|
|
58
|
+
}, outdir: string, contextRoot: string): BuildResult;
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { collectBrowserRuntimeImportRewriteMap, rewriteBrowserRuntimeImports } from "./browser-runtime-plugin.js";
|
|
4
|
+
import { createServerSideCssShimPlugin } from "./server-side-css-shim-plugin.js";
|
|
5
|
+
import { createRolldownPluginBridge } from "./rolldown-plugin-bridge.js";
|
|
6
|
+
import { isDeclaredAppPackageImport, normalizeNodeRuntimeBuildOutputs } from "./runtime-build-output-normalizer.js";
|
|
7
|
+
const corePackageRequire = createRequire(new URL("../../package.json", import.meta.url));
|
|
8
|
+
function transpileProfileToOptions(profile) {
|
|
9
|
+
switch (profile) {
|
|
10
|
+
case "browser-script":
|
|
11
|
+
case "hmr-runtime":
|
|
12
|
+
case "hmr-entrypoint":
|
|
13
|
+
return {
|
|
14
|
+
target: "browser",
|
|
15
|
+
format: "esm",
|
|
16
|
+
sourcemap: "none"
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function isPackageImport(id) {
|
|
21
|
+
return !id.startsWith(".") && !path.isAbsolute(id) && !id.startsWith("/") && !id.startsWith("node:") && !id.startsWith("@/") && !id.startsWith("~/") && !id.startsWith("#") && !id.includes(":");
|
|
22
|
+
}
|
|
23
|
+
function tryResolveModule(id, resolver) {
|
|
24
|
+
try {
|
|
25
|
+
return resolver.resolve(id);
|
|
26
|
+
} catch {
|
|
27
|
+
return void 0;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function getAppRootRequire(cache, contextRoot) {
|
|
31
|
+
const cacheKey = path.resolve(contextRoot);
|
|
32
|
+
let req = cache.get(cacheKey);
|
|
33
|
+
if (!req) {
|
|
34
|
+
req = createRequire(path.join(cacheKey, "package.json"));
|
|
35
|
+
cache.set(cacheKey, req);
|
|
36
|
+
}
|
|
37
|
+
return req;
|
|
38
|
+
}
|
|
39
|
+
function shouldBundlePackageImport(id, contextRoot, appRootRequireCache) {
|
|
40
|
+
if (isDeclaredAppPackageImport(id, contextRoot)) {
|
|
41
|
+
const appRootRequire = getAppRootRequire(appRootRequireCache, contextRoot);
|
|
42
|
+
const appResolvedPath = tryResolveModule(id, appRootRequire);
|
|
43
|
+
return Boolean(appResolvedPath && /\.(?:[cm]?ts|tsx|jsx)$/u.test(appResolvedPath));
|
|
44
|
+
}
|
|
45
|
+
const coreResolvedPath = tryResolveModule(id, corePackageRequire);
|
|
46
|
+
return Boolean(coreResolvedPath && /\.(?:[cm]?ts|tsx|jsx)$/u.test(coreResolvedPath));
|
|
47
|
+
}
|
|
48
|
+
function createExternalMatcher(options, appRootRequireCache) {
|
|
49
|
+
const explicitExternals = new Set(options.external ?? []);
|
|
50
|
+
const externalPackages = options.externalPackages === true;
|
|
51
|
+
const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
|
|
52
|
+
return (id) => {
|
|
53
|
+
if (explicitExternals.has(id)) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
if (!externalPackages || !isPackageImport(id)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return !shouldBundlePackageImport(id, contextRoot, appRootRequireCache);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function mapRolldownFormat(value) {
|
|
63
|
+
switch (value) {
|
|
64
|
+
case "cjs":
|
|
65
|
+
return "cjs";
|
|
66
|
+
case "iife":
|
|
67
|
+
return "iife";
|
|
68
|
+
default:
|
|
69
|
+
return "esm";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function mapRolldownPlatform(value) {
|
|
73
|
+
if (value === "browser") return "browser";
|
|
74
|
+
if (value === "node") return "node";
|
|
75
|
+
if (value && /^(?:es\d+|chrome\d+|edge\d+|firefox\d+|safari\d+|hermes|deno\d+|ios\d+)$/.test(value)) {
|
|
76
|
+
return "node";
|
|
77
|
+
}
|
|
78
|
+
return "neutral";
|
|
79
|
+
}
|
|
80
|
+
function mapRolldownSourcemap(value) {
|
|
81
|
+
switch (value) {
|
|
82
|
+
case "none":
|
|
83
|
+
return false;
|
|
84
|
+
case "inline":
|
|
85
|
+
return "inline";
|
|
86
|
+
case "external":
|
|
87
|
+
case "linked":
|
|
88
|
+
return "hidden";
|
|
89
|
+
default:
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function mapRolldownJsx(jsx) {
|
|
94
|
+
const { factory, fragment, ...rest } = jsx;
|
|
95
|
+
const out = { ...rest };
|
|
96
|
+
if (factory !== void 0) {
|
|
97
|
+
out.pragma = factory;
|
|
98
|
+
}
|
|
99
|
+
if (fragment !== void 0) {
|
|
100
|
+
out.pragmaFrag = fragment;
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
function toEntryFileNamesPattern(value) {
|
|
105
|
+
if (!value) {
|
|
106
|
+
return void 0;
|
|
107
|
+
}
|
|
108
|
+
const literal = !/\[[^\]]+\]/u.test(value);
|
|
109
|
+
const stripped = value.replaceAll(/\.?\[ext\]/g, "");
|
|
110
|
+
if (stripped.length === 0) {
|
|
111
|
+
return void 0;
|
|
112
|
+
}
|
|
113
|
+
return { pattern: stripped, literal };
|
|
114
|
+
}
|
|
115
|
+
function getJavaScriptOutExtension(options, literal) {
|
|
116
|
+
if (literal) {
|
|
117
|
+
return void 0;
|
|
118
|
+
}
|
|
119
|
+
if (options.target === "browser") {
|
|
120
|
+
return ".js";
|
|
121
|
+
}
|
|
122
|
+
if (options.format === "cjs") {
|
|
123
|
+
return ".cjs";
|
|
124
|
+
}
|
|
125
|
+
return ".mjs";
|
|
126
|
+
}
|
|
127
|
+
function normalizeOutputPath(outputPath, outdir) {
|
|
128
|
+
return path.isAbsolute(outputPath) ? path.normalize(outputPath) : path.normalize(path.join(outdir, outputPath));
|
|
129
|
+
}
|
|
130
|
+
function normalizeModulePath(modulePath, contextRoot) {
|
|
131
|
+
return path.isAbsolute(modulePath) ? path.normalize(modulePath) : path.normalize(path.resolve(contextRoot, modulePath));
|
|
132
|
+
}
|
|
133
|
+
function extractDependencyGraph(chunks, contextRoot) {
|
|
134
|
+
const entrypoints = {};
|
|
135
|
+
for (const chunk of chunks) {
|
|
136
|
+
if (!chunk.facadeModuleId) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const entrypointPath = normalizeModulePath(chunk.facadeModuleId, contextRoot);
|
|
140
|
+
entrypoints[entrypointPath] = Array.from(
|
|
141
|
+
/* @__PURE__ */ new Set([entrypointPath, ...chunk.moduleIds.map((id) => normalizeModulePath(id, contextRoot))])
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
return { entrypoints };
|
|
145
|
+
}
|
|
146
|
+
function toBuildLogs(error) {
|
|
147
|
+
if (error instanceof Error) {
|
|
148
|
+
return [{ message: error.message }];
|
|
149
|
+
}
|
|
150
|
+
return [{ message: "Unknown build error" }];
|
|
151
|
+
}
|
|
152
|
+
function resolveRolldownOptions(options, contextRoot, outdir, appRootRequireCache) {
|
|
153
|
+
const external = createExternalMatcher(options, appRootRequireCache);
|
|
154
|
+
const transformOptions = {};
|
|
155
|
+
if (options.define) {
|
|
156
|
+
transformOptions.define = options.define;
|
|
157
|
+
}
|
|
158
|
+
if (options.jsx) {
|
|
159
|
+
transformOptions.jsx = mapRolldownJsx(options.jsx);
|
|
160
|
+
}
|
|
161
|
+
if (options.target && /^(?:es|chrome|edge|firefox|safari|hermes|deno|ios)/.test(options.target)) {
|
|
162
|
+
transformOptions.target = options.target;
|
|
163
|
+
}
|
|
164
|
+
const bundlePlugins = options.plugins ?? [];
|
|
165
|
+
const appPlugins = createRolldownPluginBridge(bundlePlugins, contextRoot);
|
|
166
|
+
const allPlugins = [...options.target !== "browser" ? [createServerSideCssShimPlugin()] : [], ...appPlugins];
|
|
167
|
+
const inputOptions = {
|
|
168
|
+
input: options.entrypoints,
|
|
169
|
+
cwd: contextRoot,
|
|
170
|
+
external,
|
|
171
|
+
platform: mapRolldownPlatform(options.target),
|
|
172
|
+
transform: Object.keys(transformOptions).length > 0 ? transformOptions : void 0,
|
|
173
|
+
resolve: options.conditions ? { conditionNames: options.conditions } : void 0,
|
|
174
|
+
treeshake: typeof options.treeshaking === "boolean" ? options.treeshaking : true,
|
|
175
|
+
experimental: {
|
|
176
|
+
nativeMagicString: true
|
|
177
|
+
},
|
|
178
|
+
plugins: allPlugins
|
|
179
|
+
};
|
|
180
|
+
const entryFileNames = toEntryFileNamesPattern(options.naming);
|
|
181
|
+
const jsExtension = getJavaScriptOutExtension(options, entryFileNames?.literal ?? false);
|
|
182
|
+
const finalEntryFileNames = entryFileNames ? jsExtension ? `${entryFileNames.pattern}${jsExtension}` : entryFileNames.pattern : jsExtension ? `[name]${jsExtension}` : "[name]";
|
|
183
|
+
const outputOptions = {
|
|
184
|
+
dir: outdir,
|
|
185
|
+
format: mapRolldownFormat(options.format),
|
|
186
|
+
minify: !!options.minify,
|
|
187
|
+
entryFileNames: finalEntryFileNames,
|
|
188
|
+
chunkFileNames: "[name]-[hash].js",
|
|
189
|
+
assetFileNames: "[name]-[hash][extname]",
|
|
190
|
+
sourcemap: mapRolldownSourcemap(options.sourcemap)
|
|
191
|
+
};
|
|
192
|
+
return { inputOptions, outputOptions };
|
|
193
|
+
}
|
|
194
|
+
function rewriteBrowserRuntimeImportsInOutputs(result, contextRoot, plugins) {
|
|
195
|
+
if (!result.success || result.outputs.length === 0) {
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
const specifierMap = collectBrowserRuntimeImportRewriteMap(plugins);
|
|
199
|
+
if (specifierMap.size === 0) {
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
const moduleRequireFromContext = createRequire(path.join(contextRoot, "package.json"));
|
|
203
|
+
const fs = moduleRequireFromContext("node:fs");
|
|
204
|
+
const cacheFingerprint = `${Array.from(specifierMap.entries()).sort().join("|")}`;
|
|
205
|
+
for (const output of result.outputs) {
|
|
206
|
+
if (!/\.(?:[cm]?js)$/u.test(output.path)) {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
const code = fs.readFileSync(output.path, "utf-8");
|
|
210
|
+
const contentKey = `${cacheFingerprint}::${output.path}::${djb2(code)}`;
|
|
211
|
+
if (rewriteCache.has(contentKey)) {
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
const rewritten = rewriteBrowserRuntimeImports(code, specifierMap, output.path);
|
|
215
|
+
if (rewritten !== code) {
|
|
216
|
+
fs.writeFileSync(output.path, rewritten);
|
|
217
|
+
}
|
|
218
|
+
rewriteCache.add(contentKey);
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
const rewriteCache = /* @__PURE__ */ new Set();
|
|
223
|
+
function djb2(input) {
|
|
224
|
+
let hash = 5381;
|
|
225
|
+
for (let i = 0; i < input.length; i++) {
|
|
226
|
+
hash = (hash << 5) + hash + input.charCodeAt(i) | 0;
|
|
227
|
+
}
|
|
228
|
+
return hash.toString(36);
|
|
229
|
+
}
|
|
230
|
+
function clearRewriteCacheForTests() {
|
|
231
|
+
rewriteCache.clear();
|
|
232
|
+
}
|
|
233
|
+
function rewriteNodeRuntimeImportsInOutputs(result, contextRoot) {
|
|
234
|
+
if (!result.success || result.outputs.length === 0) {
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
normalizeNodeRuntimeBuildOutputs(
|
|
238
|
+
result.outputs.map((output) => output.path),
|
|
239
|
+
contextRoot
|
|
240
|
+
);
|
|
241
|
+
return result;
|
|
242
|
+
}
|
|
243
|
+
function buildResultFromRolldownOutput(output, outdir, contextRoot) {
|
|
244
|
+
const outputs = output.output.map((entry) => ({
|
|
245
|
+
path: normalizeOutputPath(entry.fileName, outdir)
|
|
246
|
+
}));
|
|
247
|
+
const entryChunks = output.output.filter((entry) => entry.type === "chunk" && entry.isEntry);
|
|
248
|
+
const dependencyGraph = entryChunks.length > 0 ? extractDependencyGraph(entryChunks, contextRoot) : void 0;
|
|
249
|
+
return {
|
|
250
|
+
success: true,
|
|
251
|
+
logs: [],
|
|
252
|
+
outputs,
|
|
253
|
+
dependencyGraph
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
export {
|
|
257
|
+
buildResultFromRolldownOutput,
|
|
258
|
+
clearRewriteCacheForTests,
|
|
259
|
+
extractDependencyGraph,
|
|
260
|
+
resolveRolldownOptions,
|
|
261
|
+
rewriteBrowserRuntimeImportsInOutputs,
|
|
262
|
+
rewriteNodeRuntimeImportsInOutputs,
|
|
263
|
+
toBuildLogs,
|
|
264
|
+
transpileProfileToOptions
|
|
265
|
+
};
|