@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
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundler-backed build adapter.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Implements {@link BuildAdapter} on top of Rolldown. This is the
|
|
6
|
+
* default adapter installed by `ConfigBuilder` and the adapter that
|
|
7
|
+
* issues real builds in production.
|
|
8
|
+
*
|
|
9
|
+
* Each `build()` creates a fresh `rolldown()` bundler, so there is no
|
|
10
|
+
* module-graph reuse across calls. For HMR/watch mode where the same
|
|
11
|
+
* entrypoints are rebuilt repeatedly, see {@link RolldownDevBuildAdapter}.
|
|
12
|
+
*/
|
|
13
|
+
import type { BuildAdapter, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from './build-adapter.js';
|
|
14
|
+
export declare class RolldownBuildAdapter implements BuildAdapter {
|
|
15
|
+
readonly ownership: "rolldown";
|
|
16
|
+
/** Per-adapter require cache, keyed on resolved context root. */
|
|
17
|
+
private readonly appRootRequireCache;
|
|
18
|
+
/**
|
|
19
|
+
* Issues one build. Creates a fresh `rolldown()` bundler per call,
|
|
20
|
+
* so no module-graph reuse. For repeated rebuilds on the same
|
|
21
|
+
* entrypoints, use {@link RolldownDevBuildAdapter}.
|
|
22
|
+
*/
|
|
23
|
+
buildOrThrow(options: BuildOptions): Promise<BuildResult>;
|
|
24
|
+
build(options: BuildOptions): Promise<BuildResult>;
|
|
25
|
+
resolve(importPath: string, rootDir: string): string;
|
|
26
|
+
getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
|
|
27
|
+
}
|
|
28
|
+
export declare function createRolldownBuildAdapter(): BuildAdapter;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { rolldown } from "rolldown";
|
|
4
|
+
import {
|
|
5
|
+
buildResultFromRolldownOutput,
|
|
6
|
+
resolveRolldownOptions,
|
|
7
|
+
rewriteBrowserRuntimeImportsInOutputs,
|
|
8
|
+
rewriteNodeRuntimeImportsInOutputs,
|
|
9
|
+
toBuildLogs,
|
|
10
|
+
transpileProfileToOptions
|
|
11
|
+
} from "./rolldown-adapter-helpers.js";
|
|
12
|
+
const moduleRequire = createRequire(import.meta.url);
|
|
13
|
+
class RolldownBuildAdapter {
|
|
14
|
+
ownership = "rolldown";
|
|
15
|
+
/** Per-adapter require cache, keyed on resolved context root. */
|
|
16
|
+
appRootRequireCache = /* @__PURE__ */ new Map();
|
|
17
|
+
/**
|
|
18
|
+
* Issues one build. Creates a fresh `rolldown()` bundler per call,
|
|
19
|
+
* so no module-graph reuse. For repeated rebuilds on the same
|
|
20
|
+
* entrypoints, use {@link RolldownDevBuildAdapter}.
|
|
21
|
+
*/
|
|
22
|
+
async buildOrThrow(options) {
|
|
23
|
+
const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
|
|
24
|
+
const outdir = path.resolve(options.outdir ?? "dist/assets");
|
|
25
|
+
const plugins = options.plugins ?? [];
|
|
26
|
+
const { inputOptions, outputOptions } = resolveRolldownOptions(
|
|
27
|
+
options,
|
|
28
|
+
contextRoot,
|
|
29
|
+
outdir,
|
|
30
|
+
this.appRootRequireCache
|
|
31
|
+
);
|
|
32
|
+
const bundle = await rolldown(inputOptions);
|
|
33
|
+
const output = await bundle.write(outputOptions);
|
|
34
|
+
await bundle.close();
|
|
35
|
+
const baseResult = buildResultFromRolldownOutput(output, outdir, contextRoot);
|
|
36
|
+
return rewriteNodeRuntimeImportsInOutputs(
|
|
37
|
+
rewriteBrowserRuntimeImportsInOutputs(baseResult, contextRoot, plugins),
|
|
38
|
+
contextRoot
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
async build(options) {
|
|
42
|
+
try {
|
|
43
|
+
return await this.buildOrThrow(options);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
logs: toBuildLogs(error),
|
|
48
|
+
outputs: []
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
resolve(importPath, rootDir) {
|
|
53
|
+
return moduleRequire.resolve(importPath, { paths: [rootDir] });
|
|
54
|
+
}
|
|
55
|
+
getTranspileOptions(profile) {
|
|
56
|
+
return transpileProfileToOptions(profile);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function createRolldownBuildAdapter() {
|
|
60
|
+
return new RolldownBuildAdapter();
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
RolldownBuildAdapter,
|
|
64
|
+
createRolldownBuildAdapter
|
|
65
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevEngine-backed build adapter for cached incremental rebuilds.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Wraps Rolldown's experimental `DevEngine` to provide cached incremental
|
|
6
|
+
* rebuilds. Unlike the standard `RolldownBuildAdapter` which creates a new
|
|
7
|
+
* bundler for every build, this adapter keeps a `DevEngine` instance alive
|
|
8
|
+
* and reuses the internal module graph, resolver cache, and transform cache
|
|
9
|
+
* across builds.
|
|
10
|
+
*
|
|
11
|
+
* The adapter is designed for the HMR rebuild path where the same entrypoints
|
|
12
|
+
* are rebuilt repeatedly with small changes. For one-off production builds,
|
|
13
|
+
* use `RolldownBuildAdapter` instead.
|
|
14
|
+
*
|
|
15
|
+
* The first build creates the engine and runs it. Subsequent builds with the
|
|
16
|
+
* same plugin/target/format triple reuse the cached engine and call
|
|
17
|
+
* `triggerFullBuild()`. The cache key incorporates the context root, plugin
|
|
18
|
+
* names, target, and format; when any of those change, the cached engine is
|
|
19
|
+
* closed and a new one is created.
|
|
20
|
+
*
|
|
21
|
+
* Call `close()` to release the cached engine and free resources.
|
|
22
|
+
*
|
|
23
|
+
* @module
|
|
24
|
+
*/
|
|
25
|
+
import type { BuildAdapter, BuildOptions, BuildResult, BuildTranspileOptions, BuildTranspileProfile } from './build-adapter.js';
|
|
26
|
+
/**
|
|
27
|
+
* Build adapter backed by Rolldown's DevEngine for cached incremental rebuilds.
|
|
28
|
+
*/
|
|
29
|
+
export declare class RolldownDevBuildAdapter implements BuildAdapter {
|
|
30
|
+
/**
|
|
31
|
+
* `'rolldown-dev'` (not `'rolldown'`) so {@link getBuildAdapterOwnership}
|
|
32
|
+
* round-trips correctly and `createBuildAdapter({ ownership })` can
|
|
33
|
+
* re-select this class.
|
|
34
|
+
*/
|
|
35
|
+
readonly ownership: "rolldown-dev";
|
|
36
|
+
private cachedEngine;
|
|
37
|
+
private engineInstanceCount;
|
|
38
|
+
private readonly pendingBuilds;
|
|
39
|
+
private readonly appRootRequireCache;
|
|
40
|
+
/**
|
|
41
|
+
* Stable key over the inputs that affect the engine configuration.
|
|
42
|
+
* Plugin order is intentionally not part of the key: two plugin
|
|
43
|
+
* sets with the same names are interchangeable for caching.
|
|
44
|
+
*/
|
|
45
|
+
private getCacheKey;
|
|
46
|
+
/**
|
|
47
|
+
* Returns the cached engine, creating a new one when the cache
|
|
48
|
+
* key changes. On a cache miss the prior engine is closed and
|
|
49
|
+
* {@link engineInstanceCount} is incremented.
|
|
50
|
+
*/
|
|
51
|
+
private getOrCreateEngine;
|
|
52
|
+
/**
|
|
53
|
+
* Triggers a build on the cached engine and returns the next
|
|
54
|
+
* `RolldownOutput` delivered to `onOutput`.
|
|
55
|
+
*
|
|
56
|
+
* First call after engine creation invokes `engine.run`; subsequent
|
|
57
|
+
* calls invoke `engine.triggerFullBuild` and reuse the cached
|
|
58
|
+
* module graph, resolver, and transform caches.
|
|
59
|
+
*
|
|
60
|
+
* If the trigger itself throws, the queued build is removed so
|
|
61
|
+
* the next `build()` does not consume a stale slot.
|
|
62
|
+
*/
|
|
63
|
+
private runBuild;
|
|
64
|
+
/** Throws on error; see {@link build} for the no-throw variant. */
|
|
65
|
+
buildOrThrow(options: BuildOptions): Promise<BuildResult>;
|
|
66
|
+
build(options: BuildOptions): Promise<BuildResult>;
|
|
67
|
+
resolve(importPath: string, rootDir: string): string;
|
|
68
|
+
getTranspileOptions(profile: BuildTranspileProfile): BuildTranspileOptions;
|
|
69
|
+
/**
|
|
70
|
+
* Closes the cached DevEngine and rejects any in-flight builds
|
|
71
|
+
* with `'DevBuildAdapter closed'`.
|
|
72
|
+
*
|
|
73
|
+
* @remarks
|
|
74
|
+
* Not on the {@link BuildAdapter} interface, so it is only
|
|
75
|
+
* reachable through the concrete class. The adapter is meant to
|
|
76
|
+
* live for the process lifetime; this is for explicit teardown.
|
|
77
|
+
*/
|
|
78
|
+
close(): Promise<void>;
|
|
79
|
+
/** Test-only: number of engines created over the adapter's lifetime. */
|
|
80
|
+
getEngineInstanceCountForTests(): number;
|
|
81
|
+
}
|
|
82
|
+
export declare function createRolldownDevBuildAdapter(): RolldownDevBuildAdapter;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { dev } from "rolldown/experimental";
|
|
4
|
+
import {
|
|
5
|
+
buildResultFromRolldownOutput,
|
|
6
|
+
resolveRolldownOptions,
|
|
7
|
+
rewriteBrowserRuntimeImportsInOutputs,
|
|
8
|
+
toBuildLogs,
|
|
9
|
+
transpileProfileToOptions
|
|
10
|
+
} from "./rolldown-adapter-helpers.js";
|
|
11
|
+
const moduleRequire = createRequire(import.meta.url);
|
|
12
|
+
class RolldownDevBuildAdapter {
|
|
13
|
+
/**
|
|
14
|
+
* `'rolldown-dev'` (not `'rolldown'`) so {@link getBuildAdapterOwnership}
|
|
15
|
+
* round-trips correctly and `createBuildAdapter({ ownership })` can
|
|
16
|
+
* re-select this class.
|
|
17
|
+
*/
|
|
18
|
+
ownership = "rolldown-dev";
|
|
19
|
+
cachedEngine;
|
|
20
|
+
engineInstanceCount = 0;
|
|
21
|
+
pendingBuilds = [];
|
|
22
|
+
appRootRequireCache = /* @__PURE__ */ new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Stable key over the inputs that affect the engine configuration.
|
|
25
|
+
* Plugin order is intentionally not part of the key: two plugin
|
|
26
|
+
* sets with the same names are interchangeable for caching.
|
|
27
|
+
*/
|
|
28
|
+
getCacheKey(plugins, contextRoot, target, format) {
|
|
29
|
+
const pluginNames = plugins.map((p) => p.name).join(":");
|
|
30
|
+
return `${contextRoot}::${pluginNames}::${target ?? "default"}::${format ?? "esm"}`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the cached engine, creating a new one when the cache
|
|
34
|
+
* key changes. On a cache miss the prior engine is closed and
|
|
35
|
+
* {@link engineInstanceCount} is incremented.
|
|
36
|
+
*/
|
|
37
|
+
async getOrCreateEngine(options, contextRoot) {
|
|
38
|
+
const bundlePlugins = options.plugins ?? [];
|
|
39
|
+
const cacheKey = this.getCacheKey(bundlePlugins, contextRoot, options.target, options.format);
|
|
40
|
+
if (this.cachedEngine) {
|
|
41
|
+
const existingKey = this.getCacheKey(
|
|
42
|
+
this.cachedEngine.bundlePlugins,
|
|
43
|
+
this.cachedEngine.contextRoot,
|
|
44
|
+
options.target,
|
|
45
|
+
options.format
|
|
46
|
+
);
|
|
47
|
+
if (existingKey === cacheKey) {
|
|
48
|
+
return this.cachedEngine;
|
|
49
|
+
}
|
|
50
|
+
await this.cachedEngine.engine.close();
|
|
51
|
+
this.cachedEngine = void 0;
|
|
52
|
+
}
|
|
53
|
+
const outdir = path.resolve(options.outdir ?? "dist/assets");
|
|
54
|
+
const { inputOptions, outputOptions } = resolveRolldownOptions(
|
|
55
|
+
options,
|
|
56
|
+
contextRoot,
|
|
57
|
+
outdir,
|
|
58
|
+
this.appRootRequireCache
|
|
59
|
+
);
|
|
60
|
+
const engine = await dev(inputOptions, outputOptions, {
|
|
61
|
+
rebuildStrategy: "never",
|
|
62
|
+
onOutput: (result) => {
|
|
63
|
+
if (result instanceof Error) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const next = this.pendingBuilds.shift();
|
|
67
|
+
if (next) {
|
|
68
|
+
next.resolve(result);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.cachedEngine = {
|
|
73
|
+
engine,
|
|
74
|
+
engineStarted: false,
|
|
75
|
+
contextRoot,
|
|
76
|
+
bundlePlugins
|
|
77
|
+
};
|
|
78
|
+
this.engineInstanceCount += 1;
|
|
79
|
+
return this.cachedEngine;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Triggers a build on the cached engine and returns the next
|
|
83
|
+
* `RolldownOutput` delivered to `onOutput`.
|
|
84
|
+
*
|
|
85
|
+
* First call after engine creation invokes `engine.run`; subsequent
|
|
86
|
+
* calls invoke `engine.triggerFullBuild` and reuse the cached
|
|
87
|
+
* module graph, resolver, and transform caches.
|
|
88
|
+
*
|
|
89
|
+
* If the trigger itself throws, the queued build is removed so
|
|
90
|
+
* the next `build()` does not consume a stale slot.
|
|
91
|
+
*/
|
|
92
|
+
async runBuild(cached) {
|
|
93
|
+
const outputPromise = new Promise((resolve, reject) => {
|
|
94
|
+
this.pendingBuilds.push({ resolve, reject });
|
|
95
|
+
});
|
|
96
|
+
try {
|
|
97
|
+
if (!cached.engineStarted) {
|
|
98
|
+
cached.engineStarted = true;
|
|
99
|
+
await cached.engine.run();
|
|
100
|
+
} else {
|
|
101
|
+
cached.engine.triggerFullBuild();
|
|
102
|
+
}
|
|
103
|
+
} catch (error) {
|
|
104
|
+
this.pendingBuilds.shift();
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
return outputPromise;
|
|
108
|
+
}
|
|
109
|
+
/** Throws on error; see {@link build} for the no-throw variant. */
|
|
110
|
+
async buildOrThrow(options) {
|
|
111
|
+
const contextRoot = options.root ? path.resolve(options.root) : process.cwd();
|
|
112
|
+
const outdir = path.resolve(options.outdir ?? "dist/assets");
|
|
113
|
+
const plugins = options.plugins ?? [];
|
|
114
|
+
const cached = await this.getOrCreateEngine(options, contextRoot);
|
|
115
|
+
const output = await this.runBuild(cached);
|
|
116
|
+
const baseResult = buildResultFromRolldownOutput(output, outdir, contextRoot);
|
|
117
|
+
return rewriteBrowserRuntimeImportsInOutputs(baseResult, contextRoot, plugins);
|
|
118
|
+
}
|
|
119
|
+
async build(options) {
|
|
120
|
+
try {
|
|
121
|
+
return await this.buildOrThrow(options);
|
|
122
|
+
} catch (error) {
|
|
123
|
+
return {
|
|
124
|
+
success: false,
|
|
125
|
+
logs: toBuildLogs(error),
|
|
126
|
+
outputs: []
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
resolve(importPath, rootDir) {
|
|
131
|
+
return moduleRequire.resolve(importPath, { paths: [rootDir] });
|
|
132
|
+
}
|
|
133
|
+
getTranspileOptions(profile) {
|
|
134
|
+
return transpileProfileToOptions(profile);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Closes the cached DevEngine and rejects any in-flight builds
|
|
138
|
+
* with `'DevBuildAdapter closed'`.
|
|
139
|
+
*
|
|
140
|
+
* @remarks
|
|
141
|
+
* Not on the {@link BuildAdapter} interface, so it is only
|
|
142
|
+
* reachable through the concrete class. The adapter is meant to
|
|
143
|
+
* live for the process lifetime; this is for explicit teardown.
|
|
144
|
+
*/
|
|
145
|
+
async close() {
|
|
146
|
+
if (this.cachedEngine) {
|
|
147
|
+
await this.cachedEngine.engine.close();
|
|
148
|
+
this.cachedEngine = void 0;
|
|
149
|
+
}
|
|
150
|
+
while (this.pendingBuilds.length > 0) {
|
|
151
|
+
const pending = this.pendingBuilds.shift();
|
|
152
|
+
pending?.reject(new Error("DevBuildAdapter closed"));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Test-only: number of engines created over the adapter's lifetime. */
|
|
156
|
+
getEngineInstanceCountForTests() {
|
|
157
|
+
return this.engineInstanceCount;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function createRolldownDevBuildAdapter() {
|
|
161
|
+
return new RolldownDevBuildAdapter();
|
|
162
|
+
}
|
|
163
|
+
export {
|
|
164
|
+
RolldownDevBuildAdapter,
|
|
165
|
+
createRolldownDevBuildAdapter
|
|
166
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundler plugin bridge.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Translates an array of `EcoBuildPlugin` instances (the runtime-agnostic
|
|
6
|
+
* plugin contract used by Ecopages processors and integrations) into
|
|
7
|
+
* the bundler's native `Plugin` array. The bridge exposes the same
|
|
8
|
+
* three hooks (`onResolve`, `onLoad`, `module`) the `EcoBuildPlugin`
|
|
9
|
+
* contract uses, but maps them to the bundler's `resolveId`/`load`
|
|
10
|
+
* hooks.
|
|
11
|
+
*
|
|
12
|
+
* The shared `EcoBuildPlugin` contract stays the boundary between
|
|
13
|
+
* integrations and bundler backends.
|
|
14
|
+
*
|
|
15
|
+
* **Namespace handling.**
|
|
16
|
+
*
|
|
17
|
+
* The shared `EcoBuildPlugin` contract scopes `onResolve`/`onLoad`
|
|
18
|
+
* handlers with a `namespace` string. The bundler encodes namespaces
|
|
19
|
+
* into the module id (no separate field). The bridge prepends
|
|
20
|
+
* `<namespace>:` to the resolved id when the result includes a
|
|
21
|
+
* namespace, and matches `onLoad`/`onResolve` filters against that
|
|
22
|
+
* prefix. The bridge strips the prefix before forwarding the id back
|
|
23
|
+
* to the callback so plugin code keeps seeing the same `path` shape
|
|
24
|
+
* it did on the historical contract.
|
|
25
|
+
*
|
|
26
|
+
* **Plugin ordering is semantically significant.**
|
|
27
|
+
*
|
|
28
|
+
* The bundler's `resolveId` and `load` are "first" hooks: the first
|
|
29
|
+
* plugin that returns a non-null value wins. Because the bridge
|
|
30
|
+
* translates each `EcoBuildPlugin` into its own bundler plugin and
|
|
31
|
+
* preserves the array order, the position of each plugin in the
|
|
32
|
+
* `plugins` array determines its priority:
|
|
33
|
+
*
|
|
34
|
+
* - **Index 0** has the highest priority.
|
|
35
|
+
* - **Last index** has the lowest priority.
|
|
36
|
+
*
|
|
37
|
+
* When adding new integrations or processors, ensure security-critical
|
|
38
|
+
* plugins (e.g. `ecopages-client-graph-boundary`) are placed **before**
|
|
39
|
+
* general-purpose loaders in the array so they always get first refusal
|
|
40
|
+
* on every source file.
|
|
41
|
+
*/
|
|
42
|
+
import type { Plugin } from 'rolldown';
|
|
43
|
+
import type { EcoBuildPlugin } from './build-types.js';
|
|
44
|
+
/**
|
|
45
|
+
* Creates a Rolldown `Plugin` array that drives the supplied
|
|
46
|
+
* `EcoBuildPlugin` instances.
|
|
47
|
+
*
|
|
48
|
+
* All eco plugins are merged into a single Rolldown plugin to minimize
|
|
49
|
+
* Rust→JS FFI overhead. Rolldown calls every hook for every module when
|
|
50
|
+
* there is no static filter, so N separate plugins would cause N
|
|
51
|
+
* `resolveId` + N `load` calls per module. Consolidating into one
|
|
52
|
+
* plugin reduces that to 1 call each, with JavaScript-side filtering
|
|
53
|
+
* routing to the correct eco plugin callback.
|
|
54
|
+
*
|
|
55
|
+
* Plugin ordering is preserved: registrations from earlier eco plugins
|
|
56
|
+
* are checked before registrations from later ones, matching the
|
|
57
|
+
* original per-plugin priority semantics.
|
|
58
|
+
*/
|
|
59
|
+
export declare function createRolldownPluginBridge(plugins: EcoBuildPlugin[], contextRoot: string): Plugin[];
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { escapeRegExp } from "./browser-runtime-plugin-helpers.js";
|
|
3
|
+
const NAMESPACE_SEPARATOR = ":";
|
|
4
|
+
function joinNamespace(namespace, value) {
|
|
5
|
+
return namespace ? `${namespace}${NAMESPACE_SEPARATOR}${value}` : value;
|
|
6
|
+
}
|
|
7
|
+
function splitNamespace(id) {
|
|
8
|
+
const separatorIndex = id.indexOf(NAMESPACE_SEPARATOR);
|
|
9
|
+
if (separatorIndex <= 0) {
|
|
10
|
+
return { namespace: void 0, path: id };
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
namespace: id.slice(0, separatorIndex),
|
|
14
|
+
path: id.slice(separatorIndex + 1)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function inferRolldownModuleTypeFromPath(filePath) {
|
|
18
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
19
|
+
switch (extension) {
|
|
20
|
+
case ".ts":
|
|
21
|
+
return "ts";
|
|
22
|
+
case ".tsx":
|
|
23
|
+
return "tsx";
|
|
24
|
+
case ".jsx":
|
|
25
|
+
return "jsx";
|
|
26
|
+
case ".json":
|
|
27
|
+
return "json";
|
|
28
|
+
case ".css":
|
|
29
|
+
return "css";
|
|
30
|
+
default:
|
|
31
|
+
return "js";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function normalizeRolldownModuleType(loader) {
|
|
35
|
+
switch (loader) {
|
|
36
|
+
case "js":
|
|
37
|
+
case "jsx":
|
|
38
|
+
case "ts":
|
|
39
|
+
case "tsx":
|
|
40
|
+
case "json":
|
|
41
|
+
case "css":
|
|
42
|
+
case "text":
|
|
43
|
+
case "base64":
|
|
44
|
+
case "dataurl":
|
|
45
|
+
case "binary":
|
|
46
|
+
case "empty":
|
|
47
|
+
return loader;
|
|
48
|
+
case "global-css":
|
|
49
|
+
case "local-css":
|
|
50
|
+
return "css";
|
|
51
|
+
case "file":
|
|
52
|
+
case "copy":
|
|
53
|
+
return "asset";
|
|
54
|
+
default:
|
|
55
|
+
return void 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function convertLoadResultToModuleSource(result) {
|
|
59
|
+
if (result.loader === "object" && result.exports && typeof result.exports === "object") {
|
|
60
|
+
return Object.entries(result.exports).map(
|
|
61
|
+
([key, value]) => key === "default" ? `export default ${JSON.stringify(value)};` : `export const ${key} = ${JSON.stringify(value)};`
|
|
62
|
+
).join("\n");
|
|
63
|
+
}
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
function buildIdFilter(filter, namespace) {
|
|
67
|
+
if (!namespace) {
|
|
68
|
+
return filter;
|
|
69
|
+
}
|
|
70
|
+
return new RegExp(`^${escapeRegExp(namespace)}${NAMESPACE_SEPARATOR}${filter.source.slice(1)}`);
|
|
71
|
+
}
|
|
72
|
+
function resolvePluginPath(value, importer, contextRoot) {
|
|
73
|
+
if (path.isAbsolute(value)) {
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
if (value.startsWith(".") || value.startsWith("..")) {
|
|
77
|
+
const baseDir = importer ? path.dirname(importer) : contextRoot;
|
|
78
|
+
return path.resolve(baseDir, value);
|
|
79
|
+
}
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
function convertPluginOnLoadResult(args, result) {
|
|
83
|
+
if (!result || typeof result !== "object") {
|
|
84
|
+
return void 0;
|
|
85
|
+
}
|
|
86
|
+
const candidate = result;
|
|
87
|
+
const { path: sourcePath } = splitNamespace(args.id);
|
|
88
|
+
const sourceFromExports = convertLoadResultToModuleSource(candidate);
|
|
89
|
+
if (sourceFromExports) {
|
|
90
|
+
const description = {
|
|
91
|
+
code: sourceFromExports,
|
|
92
|
+
moduleType: "js"
|
|
93
|
+
};
|
|
94
|
+
return description;
|
|
95
|
+
}
|
|
96
|
+
if (typeof candidate.contents === "string" || candidate.contents instanceof Uint8Array) {
|
|
97
|
+
const code = typeof candidate.contents === "string" ? candidate.contents : new TextDecoder().decode(candidate.contents);
|
|
98
|
+
const description = {
|
|
99
|
+
code,
|
|
100
|
+
moduleType: normalizeRolldownModuleType(candidate.loader) ?? inferRolldownModuleTypeFromPath(sourcePath)
|
|
101
|
+
};
|
|
102
|
+
return description;
|
|
103
|
+
}
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
function convertPluginOnResolveResult(result, importer, contextRoot) {
|
|
107
|
+
if (!result || typeof result !== "object") {
|
|
108
|
+
return void 0;
|
|
109
|
+
}
|
|
110
|
+
const candidate = result;
|
|
111
|
+
if (typeof candidate.path !== "string" && typeof candidate.namespace !== "string") {
|
|
112
|
+
if (typeof candidate.external !== "boolean") {
|
|
113
|
+
return void 0;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const partial = { id: "" };
|
|
117
|
+
if (typeof candidate.path === "string") {
|
|
118
|
+
partial.id = joinNamespace(candidate.namespace, resolvePluginPath(candidate.path, importer, contextRoot));
|
|
119
|
+
} else if (typeof candidate.namespace === "string") {
|
|
120
|
+
partial.id = joinNamespace(candidate.namespace, "");
|
|
121
|
+
}
|
|
122
|
+
if (typeof candidate.external === "boolean") {
|
|
123
|
+
partial.external = candidate.external;
|
|
124
|
+
}
|
|
125
|
+
return partial;
|
|
126
|
+
}
|
|
127
|
+
function createRolldownPluginBridge(plugins, contextRoot) {
|
|
128
|
+
if (plugins.length === 0) {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
const moduleCounter = { value: 0 };
|
|
132
|
+
const resolveRegistrations = [];
|
|
133
|
+
const loadRegistrations = [];
|
|
134
|
+
const registerResolve = (filter, callback) => {
|
|
135
|
+
resolveRegistrations.push({ filter, callback });
|
|
136
|
+
};
|
|
137
|
+
const registerLoad = (filter, callback) => {
|
|
138
|
+
loadRegistrations.push({ filter, callback });
|
|
139
|
+
};
|
|
140
|
+
const resolveIdHandler = async (source, importer, _extraOptions) => {
|
|
141
|
+
for (const { filter, callback } of resolveRegistrations) {
|
|
142
|
+
if (!filter.test(source)) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const { namespace, path: sourcePath } = splitNamespace(source);
|
|
146
|
+
const result = await callback({ path: sourcePath, importer, namespace });
|
|
147
|
+
const converted = convertPluginOnResolveResult(result, importer, contextRoot);
|
|
148
|
+
if (converted !== void 0) {
|
|
149
|
+
return converted;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return void 0;
|
|
153
|
+
};
|
|
154
|
+
const loadHandler = async (id) => {
|
|
155
|
+
for (const { filter, callback } of loadRegistrations) {
|
|
156
|
+
if (!filter.test(id)) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const { namespace, path: sourcePath } = splitNamespace(id);
|
|
160
|
+
const result = await callback({ path: sourcePath, namespace });
|
|
161
|
+
const converted = convertPluginOnLoadResult({ id }, result);
|
|
162
|
+
if (converted !== void 0) {
|
|
163
|
+
return converted;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return void 0;
|
|
167
|
+
};
|
|
168
|
+
const plugin = {
|
|
169
|
+
name: "ecopages-plugin-bridge",
|
|
170
|
+
buildStart: async () => {
|
|
171
|
+
for (const ecoPlugin of plugins) {
|
|
172
|
+
const bridge = {
|
|
173
|
+
onResolve: (options, callback) => {
|
|
174
|
+
registerResolve(buildIdFilter(options.filter, options.namespace), callback);
|
|
175
|
+
},
|
|
176
|
+
onLoad: (options, callback) => {
|
|
177
|
+
registerLoad(buildIdFilter(options.filter, options.namespace), callback);
|
|
178
|
+
},
|
|
179
|
+
module: (specifier, callback) => {
|
|
180
|
+
const namespace = `ecopages-module-${moduleCounter.value}`;
|
|
181
|
+
moduleCounter.value += 1;
|
|
182
|
+
const filter = new RegExp(`^${escapeRegExp(specifier)}$`);
|
|
183
|
+
registerResolve(filter, async () => ({
|
|
184
|
+
path: joinNamespace(namespace, specifier)
|
|
185
|
+
}));
|
|
186
|
+
registerLoad(buildIdFilter(/.*/, namespace), async () => callback());
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
await ecoPlugin.setup(bridge);
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
resolveId: resolveIdHandler,
|
|
193
|
+
load: loadHandler
|
|
194
|
+
};
|
|
195
|
+
return [plugin];
|
|
196
|
+
}
|
|
197
|
+
export {
|
|
198
|
+
createRolldownPluginBridge
|
|
199
|
+
};
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig } from '../internal-types.js';
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
2
2
|
import { type BuildExecutor } from './build-adapter.js';
|
|
3
3
|
/**
|
|
4
4
|
* Installs the app-owned runtime build executor for one app instance.
|
|
5
5
|
*
|
|
6
6
|
* @remarks
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Wraps the app-owned adapter in a {@link SerializedBuildExecutor} so
|
|
8
|
+
* every dev-watch caller issues builds against a single FIFO queue.
|
|
9
|
+
* Plugin injection is applied here via {@link withBuildExecutorPlugins}
|
|
10
|
+
* so app-owned plugins are merged into every rebuild without callers
|
|
11
|
+
* having to know about the manifest.
|
|
12
|
+
*
|
|
13
|
+
* Idempotent across calls: re-invoking replaces the existing executor
|
|
14
|
+
* on `appConfig.runtime` with a fresh wrapper.
|
|
15
|
+
*
|
|
16
|
+
* @param appConfig - The app config whose runtime state is updated.
|
|
17
|
+
* The function reads the existing executor (falling back to the
|
|
18
|
+
* app-owned adapter) and writes the wrapped executor back.
|
|
19
|
+
* @returns The installed {@link BuildExecutor}.
|
|
10
20
|
*/
|
|
11
|
-
export declare function installAppRuntimeBuildExecutor(appConfig: EcoPagesAppConfig
|
|
12
|
-
development: boolean;
|
|
13
|
-
}): BuildExecutor;
|
|
21
|
+
export declare function installAppRuntimeBuildExecutor(appConfig: EcoPagesAppConfig): BuildExecutor;
|
|
@@ -2,16 +2,15 @@ import {
|
|
|
2
2
|
getAppBuildAdapter,
|
|
3
3
|
getAppBuildExecutor,
|
|
4
4
|
getAppServerBuildPlugins,
|
|
5
|
-
setAppBuildExecutor
|
|
5
|
+
setAppBuildExecutor,
|
|
6
|
+
withBuildExecutorPlugins
|
|
6
7
|
} from "./build-adapter.js";
|
|
7
|
-
import {
|
|
8
|
-
function installAppRuntimeBuildExecutor(appConfig
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
getPlugins: () => getAppServerBuildPlugins(appConfig)
|
|
14
|
-
});
|
|
8
|
+
import { SerializedBuildExecutor } from "./serialized-build-executor.js";
|
|
9
|
+
function installAppRuntimeBuildExecutor(appConfig) {
|
|
10
|
+
const baseExecutor = getAppBuildExecutor(appConfig) ?? getAppBuildAdapter(appConfig);
|
|
11
|
+
const buildExecutor = new SerializedBuildExecutor(
|
|
12
|
+
withBuildExecutorPlugins(baseExecutor, () => getAppServerBuildPlugins(appConfig))
|
|
13
|
+
);
|
|
15
14
|
setAppBuildExecutor(appConfig, buildExecutor);
|
|
16
15
|
return buildExecutor;
|
|
17
16
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function isDeclaredAppPackageImport(specifier: string, rootDir: string): boolean;
|
|
2
|
+
export declare function normalizeNodeRuntimeBuildOutputFile(filePath: string, rootDir: string): void;
|
|
3
|
+
export declare function normalizeNodeRuntimeBuildOutputs(outputPaths: string[], rootDir: string): void;
|