@ecopages/core 0.2.0-alpha.54 → 0.2.0-alpha.55
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/package.json +196 -91
- package/src/adapters/abstract/application-adapter.d.ts +194 -0
- package/src/adapters/abstract/application-adapter.js +121 -0
- package/src/adapters/abstract/router-adapter.d.ts +26 -0
- package/src/adapters/abstract/router-adapter.js +5 -0
- package/src/adapters/abstract/server-adapter.d.ts +69 -0
- package/src/adapters/abstract/server-adapter.js +15 -0
- package/src/adapters/bun/client-bridge.d.ts +34 -0
- package/src/adapters/bun/client-bridge.js +48 -0
- package/src/adapters/bun/create-app.d.ts +60 -0
- package/src/adapters/bun/create-app.js +140 -0
- package/src/adapters/bun/hmr-manager.d.ts +47 -0
- package/src/adapters/bun/hmr-manager.js +58 -0
- package/src/adapters/bun/index.d.ts +2 -0
- package/src/adapters/bun/index.js +8 -0
- 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 +223 -0
- package/src/adapters/bun/server-adapter.js +450 -0
- package/src/adapters/bun/static-preview-host.d.ts +28 -0
- package/src/adapters/bun/static-preview-host.js +45 -0
- package/src/adapters/create-app.d.ts +20 -0
- package/src/adapters/create-app.js +66 -0
- package/src/adapters/index.d.ts +2 -0
- package/src/adapters/index.js +8 -0
- package/src/adapters/node/create-app.d.ts +24 -0
- package/src/adapters/node/create-app.js +92 -0
- 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 +26 -0
- package/src/adapters/node/node-client-bridge.js +66 -0
- package/src/adapters/node/node-hmr-manager.d.ts +52 -0
- package/src/adapters/node/node-hmr-manager.js +49 -0
- 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 +138 -0
- package/src/adapters/node/server-adapter.js +313 -0
- package/src/adapters/node/static-content-server.d.ts +60 -0
- package/src/adapters/node/static-content-server.js +194 -0
- 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/api-response.d.ts +52 -0
- package/src/adapters/shared/api-response.js +96 -0
- package/src/adapters/shared/application-adapter.d.ts +18 -0
- package/src/adapters/shared/application-adapter.js +90 -0
- package/src/adapters/shared/define-api-handler.d.ts +25 -0
- package/src/adapters/shared/define-api-handler.js +15 -0
- 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 +41 -0
- package/src/adapters/shared/explicit-static-route-matcher.js +101 -0
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +62 -0
- package/src/adapters/shared/file-route-middleware-pipeline.js +90 -0
- package/src/adapters/shared/fs-server-response-factory.d.ts +23 -0
- package/src/adapters/shared/fs-server-response-factory.js +81 -0
- package/src/adapters/shared/fs-server-response-matcher.d.ts +75 -0
- package/src/adapters/shared/fs-server-response-matcher.js +186 -0
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
- package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
- package/src/adapters/shared/hmr-html-response.d.ts +22 -0
- package/src/adapters/shared/hmr-html-response.js +33 -0
- package/src/adapters/shared/render-context.d.ts +16 -0
- package/src/adapters/shared/render-context.js +93 -0
- 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/runtime-host.js +0 -0
- package/src/adapters/shared/server-adapter.d.ts +108 -0
- package/src/adapters/shared/server-adapter.js +436 -0
- package/src/adapters/shared/server-route-handler.d.ts +89 -0
- package/src/adapters/shared/server-route-handler.js +111 -0
- package/src/adapters/shared/server-static-builder.d.ts +71 -0
- package/src/adapters/shared/server-static-builder.js +100 -0
- 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/adapters/shared/static-preview-host.js +0 -0
- 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.ts → browser-runtime-plugin-helpers.d.ts} +2 -13
- 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 +172 -0
- package/src/build/build-adapter.d.ts +504 -0
- package/src/build/build-adapter.js +240 -0
- package/src/build/build-manifest.d.ts +33 -0
- package/src/build/build-manifest.js +49 -0
- package/src/build/build-types.d.ts +57 -0
- package/src/build/build-types.js +0 -0
- package/src/build/rolldown-build-adapter.d.ts +32 -0
- package/src/build/rolldown-build-adapter.js +260 -0
- package/src/build/rolldown-plugin-bridge.d.ts +50 -0
- package/src/build/rolldown-plugin-bridge.js +194 -0
- package/src/build/{runtime-build-executor.ts → runtime-build-executor.d.ts} +3 -19
- package/src/build/runtime-build-executor.js +19 -0
- 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.ts → index.d.ts} +1 -1
- 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/config-builder.d.ts +252 -0
- package/src/config/config-builder.js +589 -0
- package/src/config/{constants.ts → constants.d.ts} +13 -22
- package/src/config/constants.js +25 -0
- package/src/dev/host-runtime.d.ts +10 -0
- package/src/dev/host-runtime.js +24 -0
- package/src/dev/sc-server.d.ts +30 -0
- package/src/dev/sc-server.js +111 -0
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +88 -0
- package/src/eco/eco.d.ts +9 -0
- package/src/eco/eco.js +119 -0
- package/src/eco/eco.types.d.ts +230 -0
- package/src/eco/eco.types.js +0 -0
- package/src/eco/eco.utils.d.ts +1 -0
- package/src/eco/eco.utils.js +10 -0
- package/src/eco/global-injector-map.d.ts +16 -0
- package/src/eco/global-injector-map.js +80 -0
- package/src/eco/lazy-injector-map.d.ts +8 -0
- package/src/eco/lazy-injector-map.js +70 -0
- package/src/eco/module-dependencies.d.ts +18 -0
- package/src/eco/module-dependencies.js +49 -0
- package/src/errors/http-error.d.ts +31 -0
- package/src/errors/http-error.js +50 -0
- package/src/errors/index.d.ts +3 -0
- package/src/errors/index.js +6 -0
- package/src/errors/locals-access-error.d.ts +4 -0
- package/src/errors/locals-access-error.js +9 -0
- package/src/global/app-logger.d.ts +2 -0
- package/src/global/app-logger.js +6 -0
- package/src/hmr/client/hmr-runtime.d.ts +5 -0
- package/src/hmr/client/hmr-runtime.js +117 -0
- package/src/hmr/hmr-strategy.d.ts +162 -0
- package/src/hmr/hmr-strategy.js +44 -0
- package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
- package/src/hmr/hmr.postcss.test.e2e.js +31 -0
- package/src/hmr/hmr.test.e2e.d.ts +1 -0
- package/src/hmr/hmr.test.e2e.js +43 -0
- package/src/hmr/strategies/default-hmr-strategy.d.ts +43 -0
- package/src/hmr/strategies/default-hmr-strategy.js +34 -0
- package/src/hmr/strategies/js-hmr-strategy.d.ts +134 -0
- package/src/hmr/strategies/js-hmr-strategy.js +173 -0
- package/src/index.browser.d.ts +3 -0
- package/src/index.browser.js +4 -0
- package/src/index.d.ts +6 -0
- package/src/index.js +21 -0
- package/src/integrations/ghtml/ghtml-renderer.d.ts +16 -0
- package/src/integrations/ghtml/ghtml-renderer.js +57 -0
- 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 +16 -0
- package/src/integrations/ghtml/ghtml.plugin.js +20 -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 +6 -0
- package/src/plugins/alias-resolver-plugin.js +65 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +108 -0
- package/src/plugins/eco-component-meta-plugin.js +175 -0
- 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 +230 -0
- package/src/plugins/integration-plugin.js +201 -0
- package/src/plugins/processor.d.ts +97 -0
- package/src/plugins/processor.js +141 -0
- package/src/plugins/{runtime-capability.ts → runtime-capability.d.ts} +3 -8
- package/src/plugins/runtime-capability.js +0 -0
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- 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 +534 -0
- package/src/route-renderer/orchestration/integration-renderer.js +991 -0
- 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 +35 -0
- package/src/route-renderer/page-loading/dependency-resolver.js +115 -0
- 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 +90 -0
- package/src/route-renderer/page-loading/page-module-loader.js +127 -0
- package/src/route-renderer/route-renderer.d.ts +69 -0
- package/src/route-renderer/route-renderer.js +80 -0
- package/src/router/client/link-intent.js +34 -0
- package/src/router/client/link-intent.test.browser.d.ts +1 -0
- package/src/router/client/link-intent.test.browser.js +43 -0
- package/src/router/client/navigation-coordinator.d.ts +169 -0
- package/src/router/client/navigation-coordinator.js +215 -0
- package/src/router/server/route-registry.d.ts +78 -0
- package/src/router/server/route-registry.js +262 -0
- 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 +103 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.js +285 -0
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +17 -0
- package/src/services/assets/asset-processing-service/asset.factory.js +82 -0
- package/src/services/assets/asset-processing-service/assets.types.d.ts +103 -0
- package/src/services/assets/asset-processing-service/assets.types.js +0 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +57 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +49 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -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 -0
- package/src/services/assets/asset-processing-service/index.js +6 -0
- 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.ts → processor.interface.d.ts} +5 -10
- package/src/services/assets/asset-processing-service/processor.interface.js +6 -0
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processor.registry.js +15 -0
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +24 -0
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +65 -0
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +22 -0
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +136 -0
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
- package/src/services/assets/asset-processing-service/processors/index.js +5 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +6 -0
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +120 -0
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +9 -0
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +97 -0
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +42 -0
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +126 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +8 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +59 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +9 -0
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +69 -0
- 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 +73 -0
- package/src/services/assets/browser-bundle.service.js +41 -0
- package/src/services/cache/cache.types.d.ts +107 -0
- package/src/services/cache/cache.types.js +0 -0
- package/src/services/cache/index.d.ts +7 -0
- package/src/services/cache/index.js +7 -0
- package/src/services/cache/memory-cache-store.d.ts +42 -0
- package/src/services/cache/memory-cache-store.js +98 -0
- package/src/services/cache/page-cache-service.d.ts +70 -0
- package/src/services/cache/page-cache-service.js +152 -0
- package/src/services/cache/page-request-cache-coordinator.service.d.ts +75 -0
- package/src/services/cache/page-request-cache-coordinator.service.js +109 -0
- package/src/services/html/html-rewriter-provider.service.d.ts +40 -0
- package/src/services/html/html-rewriter-provider.service.js +68 -0
- package/src/services/html/html-transformer.service.d.ts +96 -0
- package/src/services/html/html-transformer.service.js +287 -0
- package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
- package/src/services/invalidation/development-invalidation.service.js +190 -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 +24 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +130 -0
- 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.ts → module-loading-types.d.ts} +0 -1
- package/src/services/module-loading/module-loading-types.js +0 -0
- package/src/services/module-loading/page-module-import.service.d.ts +95 -0
- package/src/services/module-loading/page-module-import.service.js +193 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +63 -0
- package/src/services/module-loading/server-module-transpiler.service.js +64 -0
- 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 +118 -0
- package/src/services/runtime-state/dev-graph.service.js +162 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
- package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
- package/src/services/validation/schema-validation-service.d.ts +122 -0
- package/src/services/validation/schema-validation-service.js +101 -0
- package/src/services/validation/{standard-schema.types.ts → standard-schema.types.d.ts} +17 -20
- package/src/services/validation/standard-schema.types.js +0 -0
- package/src/static-site-generator/static-site-generator.d.ts +104 -0
- package/src/static-site-generator/static-site-generator.js +316 -0
- package/src/types/internal-types.d.ts +232 -0
- package/src/types/internal-types.js +0 -0
- package/src/types/public-types.d.ts +1307 -0
- package/src/types/public-types.js +0 -0
- package/src/utils/deep-merge.d.ts +14 -0
- package/src/utils/deep-merge.js +32 -0
- package/src/utils/hash.d.ts +1 -0
- package/src/utils/hash.js +7 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/html.js +4 -0
- package/src/utils/invariant.d.ts +5 -0
- package/src/utils/invariant.js +11 -0
- package/src/utils/locals-utils.d.ts +15 -0
- package/src/utils/locals-utils.js +24 -0
- package/src/utils/parse-cli-args.d.ts +27 -0
- package/src/utils/parse-cli-args.js +62 -0
- package/src/utils/path-utils.module.d.ts +5 -0
- package/src/utils/path-utils.module.js +14 -0
- package/src/utils/resolve-work-dir.d.ts +11 -0
- package/src/utils/resolve-work-dir.js +31 -0
- package/src/utils/runtime.d.ts +11 -0
- package/src/utils/runtime.js +40 -0
- package/src/utils/server-utils.module.d.ts +19 -0
- package/src/utils/server-utils.module.js +56 -0
- package/src/watchers/project-watcher.d.ts +136 -0
- package/src/watchers/project-watcher.js +275 -0
- package/src/watchers/project-watcher.test-helpers.d.ts +4 -0
- package/src/watchers/project-watcher.test-helpers.js +52 -0
- package/src/adapters/abstract/application-adapter.test.ts +0 -218
- package/src/adapters/abstract/application-adapter.ts +0 -379
- 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 -214
- package/src/adapters/bun/hmr-manager.test.ts +0 -265
- package/src/adapters/bun/hmr-manager.ts +0 -88
- package/src/adapters/bun/index.ts +0 -2
- package/src/adapters/bun/runtime-host.ts +0 -76
- package/src/adapters/bun/server-adapter.ts +0 -605
- package/src/adapters/bun/static-preview-host.ts +0 -70
- package/src/adapters/create-app.test.ts +0 -10
- package/src/adapters/create-app.ts +0 -91
- package/src/adapters/index.ts +0 -2
- package/src/adapters/node/create-app.test.ts +0 -76
- package/src/adapters/node/create-app.ts +0 -116
- package/src/adapters/node/http-request-bridge.test.ts +0 -146
- package/src/adapters/node/http-request-bridge.ts +0 -176
- package/src/adapters/node/node-client-bridge.test.ts +0 -198
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.test.ts +0 -374
- package/src/adapters/node/node-hmr-manager.ts +0 -72
- package/src/adapters/node/runtime-host.test.ts +0 -49
- package/src/adapters/node/runtime-host.ts +0 -113
- package/src/adapters/node/server-adapter-dependencies.ts +0 -28
- package/src/adapters/node/server-adapter.test.ts +0 -84
- package/src/adapters/node/server-adapter.ts +0 -423
- package/src/adapters/node/static-content-server.test.ts +0 -60
- package/src/adapters/node/static-content-server.ts +0 -239
- package/src/adapters/node/static-preview-host.test.ts +0 -89
- package/src/adapters/node/static-preview-host.ts +0 -101
- package/src/adapters/shared/api-response.test.ts +0 -97
- 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-render-preparation.ts +0 -58
- package/src/adapters/shared/explicit-static-route-matcher.test.ts +0 -381
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -131
- package/src/adapters/shared/file-route-middleware-pipeline.test.ts +0 -85
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -118
- package/src/adapters/shared/fs-server-response-factory.test.ts +0 -176
- package/src/adapters/shared/fs-server-response-factory.ts +0 -96
- package/src/adapters/shared/fs-server-response-matcher.test.ts +0 -311
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -240
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
- package/src/adapters/shared/hmr-html-response.ts +0 -54
- package/src/adapters/shared/hmr-manager.contract.test.ts +0 -228
- package/src/adapters/shared/hmr-manager.dispatch.test.ts +0 -229
- package/src/adapters/shared/render-context.test.ts +0 -244
- package/src/adapters/shared/render-context.ts +0 -161
- package/src/adapters/shared/runtime-app-bootstrap.test.ts +0 -96
- package/src/adapters/shared/runtime-app-bootstrap.ts +0 -72
- package/src/adapters/shared/runtime-host.ts +0 -11
- package/src/adapters/shared/server-adapter.test.ts +0 -130
- package/src/adapters/shared/server-adapter.ts +0 -571
- package/src/adapters/shared/server-route-handler.test.ts +0 -112
- package/src/adapters/shared/server-route-handler.ts +0 -153
- package/src/adapters/shared/server-static-builder.test.ts +0 -338
- package/src/adapters/shared/server-static-builder.ts +0 -170
- package/src/adapters/shared/shared-hmr-manager.ts +0 -298
- package/src/adapters/shared/static-preview-host.ts +0 -12
- package/src/build/browser-runtime-manifest.test.ts +0 -121
- package/src/build/browser-runtime-manifest.ts +0 -105
- package/src/build/browser-runtime-plugin-helpers.test.ts +0 -49
- package/src/build/browser-runtime-plugin.test.ts +0 -256
- package/src/build/browser-runtime-plugin.ts +0 -306
- package/src/build/build-adapter.test.ts +0 -463
- package/src/build/build-adapter.ts +0 -788
- package/src/build/build-manifest.ts +0 -79
- package/src/build/build-types.ts +0 -83
- package/src/build/rolldown-build-adapter.test.ts +0 -352
- package/src/build/rolldown-build-adapter.ts +0 -363
- package/src/build/rolldown-plugin-bridge.test.ts +0 -256
- package/src/build/rolldown-plugin-bridge.ts +0 -309
- package/src/build/runtime-build-executor.test.ts +0 -130
- package/src/build/runtime-build-output-normalizer.ts +0 -137
- package/src/build/serialized-build-executor.test.ts +0 -96
- package/src/build/serialized-build-executor.ts +0 -90
- package/src/build/server-side-css-shim-plugin.ts +0 -77
- package/src/cache/module-parse-cache.test.ts +0 -73
- package/src/cache/module-parse-cache.ts +0 -137
- package/src/config/config-builder.test.ts +0 -456
- package/src/config/config-builder.ts +0 -728
- package/src/config/config-builder.typecheck.test.ts +0 -96
- package/src/dev/host-runtime.ts +0 -34
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/eco.browser.test.ts +0 -43
- package/src/eco/eco.browser.ts +0 -137
- package/src/eco/eco.test.ts +0 -781
- package/src/eco/eco.ts +0 -262
- package/src/eco/eco.types.ts +0 -293
- package/src/eco/eco.utils.test.ts +0 -219
- package/src/eco/eco.utils.ts +0 -5
- package/src/eco/global-injector-map.test.ts +0 -42
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.test.ts +0 -66
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.test.ts +0 -30
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.test.ts +0 -134
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -3
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/global/utils.test.ts +0 -12
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
- package/src/hmr/client/hmr-runtime.ts +0 -162
- package/src/hmr/hmr-strategy.test.ts +0 -124
- package/src/hmr/hmr-strategy.ts +0 -177
- 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.test.ts +0 -344
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -307
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -15
- package/src/integrations/ghtml/ghtml-renderer.test.ts +0 -253
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -87
- package/src/integrations/ghtml/ghtml.constants.ts +0 -1
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -28
- package/src/plugins/alias-resolver-cache.test.ts +0 -110
- package/src/plugins/alias-resolver-cache.ts +0 -145
- package/src/plugins/alias-resolver-plugin.test.ts +0 -41
- package/src/plugins/alias-resolver-plugin.ts +0 -75
- package/src/plugins/eco-component-meta-plugin.test.ts +0 -421
- package/src/plugins/eco-component-meta-plugin.ts +0 -518
- package/src/plugins/foreign-jsx-override-plugin.test.ts +0 -65
- package/src/plugins/foreign-jsx-override-plugin.ts +0 -76
- package/src/plugins/integration-plugin.test.ts +0 -151
- package/src/plugins/integration-plugin.ts +0 -344
- package/src/plugins/processor.test.ts +0 -148
- package/src/plugins/processor.ts +0 -257
- package/src/plugins/source-transform.test.ts +0 -82
- package/src/plugins/source-transform.ts +0 -123
- package/src/route-renderer/orchestration/component-render-context.ts +0 -338
- package/src/route-renderer/orchestration/declared-ownership-graph.ts +0 -62
- package/src/route-renderer/orchestration/foreign-subtree-execution.service.ts +0 -431
- package/src/route-renderer/orchestration/integration-renderer.test.ts +0 -2251
- package/src/route-renderer/orchestration/integration-renderer.ts +0 -1384
- package/src/route-renderer/orchestration/ownership-planning.service.ts +0 -97
- package/src/route-renderer/orchestration/ownership-validation.service.ts +0 -76
- package/src/route-renderer/orchestration/processed-asset-dedupe.ts +0 -29
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.test.ts +0 -435
- package/src/route-renderer/orchestration/queued-foreign-subtree-resolution.service.ts +0 -310
- package/src/route-renderer/orchestration/render-output.utils.ts +0 -310
- package/src/route-renderer/orchestration/route-render-orchestrator.prepare-render-options.test.ts +0 -1365
- package/src/route-renderer/orchestration/route-render-orchestrator.test.ts +0 -267
- package/src/route-renderer/orchestration/route-render-orchestrator.ts +0 -879
- package/src/route-renderer/orchestration/template-serialization.test.ts +0 -110
- package/src/route-renderer/orchestration/template-serialization.ts +0 -117
- package/src/route-renderer/page-loading/component-dependency-collection.ts +0 -202
- package/src/route-renderer/page-loading/declared-asset-collection.ts +0 -153
- package/src/route-renderer/page-loading/dependency-resolver.test.ts +0 -761
- package/src/route-renderer/page-loading/dependency-resolver.ts +0 -144
- package/src/route-renderer/page-loading/ecopages-virtual-imports.ts +0 -75
- package/src/route-renderer/page-loading/lazy-entry-collection.ts +0 -167
- package/src/route-renderer/page-loading/lazy-trigger-planning.ts +0 -74
- package/src/route-renderer/page-loading/module-declaration-aggregation.ts +0 -60
- package/src/route-renderer/page-loading/module-declaration-scripts.ts +0 -16
- package/src/route-renderer/page-loading/page-dependency-bundling.ts +0 -244
- package/src/route-renderer/page-loading/page-module-loader.test.ts +0 -183
- package/src/route-renderer/page-loading/page-module-loader.ts +0 -184
- package/src/route-renderer/route-renderer.ts +0 -133
- 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.test.ts +0 -237
- package/src/router/client/navigation-coordinator.ts +0 -453
- package/src/router/server/route-registry.test.ts +0 -176
- package/src/router/server/route-registry.ts +0 -382
- package/src/services/assets/asset-processing-service/asset-dependency-keys.ts +0 -66
- package/src/services/assets/asset-processing-service/asset-processing.service.test.ts +0 -473
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -344
- package/src/services/assets/asset-processing-service/asset.factory.test.ts +0 -63
- package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/assets/asset-processing-service/assets.types.ts +0 -128
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.test.ts +0 -74
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -98
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.test.ts +0 -67
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
- package/src/services/assets/asset-processing-service/grouped-content-bundles.ts +0 -104
- package/src/services/assets/asset-processing-service/index.ts +0 -6
- package/src/services/assets/asset-processing-service/page-package.test.ts +0 -135
- package/src/services/assets/asset-processing-service/page-package.ts +0 -103
- package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/assets/asset-processing-service/processors/base/base-processor.test.ts +0 -59
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -83
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -173
- package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.test.ts +0 -188
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -138
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.test.ts +0 -326
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -116
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.test.ts +0 -270
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -145
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.test.ts +0 -261
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -72
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -83
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.ts +0 -65
- package/src/services/assets/browser-bundle.service.test.ts +0 -66
- package/src/services/assets/browser-bundle.service.ts +0 -109
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.test.ts +0 -225
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.test.ts +0 -175
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/cache/page-request-cache-coordinator.service.test.ts +0 -79
- package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
- package/src/services/html/html-rewriter-provider.service.test.ts +0 -183
- package/src/services/html/html-rewriter-provider.service.ts +0 -105
- package/src/services/html/html-transformer.service.test.ts +0 -544
- package/src/services/html/html-transformer.service.ts +0 -369
- package/src/services/invalidation/development-invalidation.service.test.ts +0 -87
- package/src/services/invalidation/development-invalidation.service.ts +0 -262
- package/src/services/module-loading/app-module-loader.service.ts +0 -9
- package/src/services/module-loading/app-server-module-transpiler.service.test.ts +0 -297
- package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -168
- package/src/services/module-loading/host-module-loader-registry.ts +0 -15
- package/src/services/module-loading/page-module-import.service.test.ts +0 -652
- package/src/services/module-loading/page-module-import.service.ts +0 -302
- package/src/services/module-loading/server-module-transpiler.service.test.ts +0 -242
- package/src/services/module-loading/server-module-transpiler.service.ts +0 -104
- package/src/services/module-loading/source-module-support.ts +0 -19
- 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/server-invalidation-state.service.ts +0 -68
- package/src/services/validation/schema-validation-service.test.ts +0 -223
- package/src/services/validation/schema-validation-service.ts +0 -204
- package/src/static-site-generator/static-site-generator.test.ts +0 -408
- package/src/static-site-generator/static-site-generator.ts +0 -445
- package/src/types/internal-types.ts +0 -243
- package/src/types/public-types.ts +0 -1508
- package/src/utils/deep-merge.test.ts +0 -114
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html-escaping.ts +0 -9
- package/src/utils/invariant.test.ts +0 -22
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.test.ts +0 -69
- package/src/utils/parse-cli-args.ts +0 -105
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/path-utils.test.ts +0 -15
- 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/utils/server-utils.test.ts +0 -38
- package/src/watchers/project-watcher.integration.test.ts +0 -337
- package/src/watchers/project-watcher.test-helpers.ts +0 -42
- package/src/watchers/project-watcher.test.ts +0 -768
- package/src/watchers/project-watcher.ts +0 -357
- /package/src/utils/{html.ts → html.d.ts} +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
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. Each `EcoBuildPlugin` becomes its own
|
|
47
|
+
* Rolldown plugin so that the order of registrations is preserved as
|
|
48
|
+
* plugin priority.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createRolldownPluginBridge(plugins: EcoBuildPlugin[], contextRoot: string): Plugin[];
|
|
@@ -0,0 +1,194 @@
|
|
|
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 wrapEcoPlugin(ecoPlugin, contextRoot, moduleCounter) {
|
|
128
|
+
const resolveRegistrations = [];
|
|
129
|
+
const loadRegistrations = [];
|
|
130
|
+
const registerResolve = (filter, callback) => {
|
|
131
|
+
resolveRegistrations.push({ filter, callback });
|
|
132
|
+
};
|
|
133
|
+
const registerLoad = (filter, callback) => {
|
|
134
|
+
loadRegistrations.push({ filter, callback });
|
|
135
|
+
};
|
|
136
|
+
return {
|
|
137
|
+
name: `ecopages-plugin-bridge:${ecoPlugin.name}`,
|
|
138
|
+
buildStart: async () => {
|
|
139
|
+
const bridge = {
|
|
140
|
+
onResolve: (options, callback) => {
|
|
141
|
+
registerResolve(buildIdFilter(options.filter, options.namespace), callback);
|
|
142
|
+
},
|
|
143
|
+
onLoad: (options, callback) => {
|
|
144
|
+
registerLoad(buildIdFilter(options.filter, options.namespace), callback);
|
|
145
|
+
},
|
|
146
|
+
module: (specifier, callback) => {
|
|
147
|
+
const namespace = `ecopages-module-${moduleCounter.value}`;
|
|
148
|
+
moduleCounter.value += 1;
|
|
149
|
+
const filter = new RegExp(`^${escapeRegExp(specifier)}$`);
|
|
150
|
+
registerResolve(filter, async () => ({
|
|
151
|
+
path: joinNamespace(namespace, specifier)
|
|
152
|
+
}));
|
|
153
|
+
registerLoad(buildIdFilter(/.*/, namespace), async () => callback());
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
await ecoPlugin.setup(bridge);
|
|
157
|
+
},
|
|
158
|
+
resolveId: async (source, importer, _extraOptions) => {
|
|
159
|
+
for (const { filter, callback } of resolveRegistrations) {
|
|
160
|
+
if (!filter.test(source)) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const { namespace, path: sourcePath } = splitNamespace(source);
|
|
164
|
+
const result = await callback({ path: sourcePath, importer, namespace });
|
|
165
|
+
const converted = convertPluginOnResolveResult(result, importer, contextRoot);
|
|
166
|
+
if (converted !== void 0) {
|
|
167
|
+
return converted;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return void 0;
|
|
171
|
+
},
|
|
172
|
+
load: async (id) => {
|
|
173
|
+
for (const { filter, callback } of loadRegistrations) {
|
|
174
|
+
if (!filter.test(id)) {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const { namespace, path: sourcePath } = splitNamespace(id);
|
|
178
|
+
const result = await callback({ path: sourcePath, namespace });
|
|
179
|
+
const converted = convertPluginOnLoadResult({ id }, result);
|
|
180
|
+
if (converted !== void 0) {
|
|
181
|
+
return converted;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return void 0;
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
function createRolldownPluginBridge(plugins, contextRoot) {
|
|
189
|
+
const moduleCounter = { value: 0 };
|
|
190
|
+
return plugins.map((ecoPlugin) => wrapEcoPlugin(ecoPlugin, contextRoot, moduleCounter));
|
|
191
|
+
}
|
|
192
|
+
export {
|
|
193
|
+
createRolldownPluginBridge
|
|
194
|
+
};
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig } from '../types/internal-types.
|
|
2
|
-
import {
|
|
3
|
-
getAppBuildAdapter,
|
|
4
|
-
getAppBuildExecutor,
|
|
5
|
-
getAppServerBuildPlugins,
|
|
6
|
-
setAppBuildExecutor,
|
|
7
|
-
withBuildExecutorPlugins,
|
|
8
|
-
type BuildExecutor,
|
|
9
|
-
} from './build-adapter.ts';
|
|
10
|
-
import { SerializedBuildExecutor } from './serialized-build-executor.ts';
|
|
11
|
-
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
2
|
+
import { type BuildExecutor } from './build-adapter.js';
|
|
12
3
|
/**
|
|
13
4
|
* Installs the app-owned runtime build executor for one app instance.
|
|
14
5
|
*
|
|
@@ -27,11 +18,4 @@ import { SerializedBuildExecutor } from './serialized-build-executor.ts';
|
|
|
27
18
|
* app-owned adapter) and writes the wrapped executor back.
|
|
28
19
|
* @returns The installed {@link BuildExecutor}.
|
|
29
20
|
*/
|
|
30
|
-
export function installAppRuntimeBuildExecutor(appConfig: EcoPagesAppConfig): BuildExecutor
|
|
31
|
-
const baseExecutor = getAppBuildExecutor(appConfig) ?? getAppBuildAdapter(appConfig);
|
|
32
|
-
const buildExecutor = new SerializedBuildExecutor(
|
|
33
|
-
withBuildExecutorPlugins(baseExecutor, () => getAppServerBuildPlugins(appConfig)),
|
|
34
|
-
);
|
|
35
|
-
setAppBuildExecutor(appConfig, buildExecutor);
|
|
36
|
-
return buildExecutor;
|
|
37
|
-
}
|
|
21
|
+
export declare function installAppRuntimeBuildExecutor(appConfig: EcoPagesAppConfig): BuildExecutor;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAppBuildAdapter,
|
|
3
|
+
getAppBuildExecutor,
|
|
4
|
+
getAppServerBuildPlugins,
|
|
5
|
+
setAppBuildExecutor,
|
|
6
|
+
withBuildExecutorPlugins
|
|
7
|
+
} from "./build-adapter.js";
|
|
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
|
+
);
|
|
14
|
+
setAppBuildExecutor(appConfig, buildExecutor);
|
|
15
|
+
return buildExecutor;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
installAppRuntimeBuildExecutor
|
|
19
|
+
};
|
|
@@ -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;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
const corePackageRequire = createRequire(new URL("../../package.json", import.meta.url));
|
|
6
|
+
const appDeclaredPackageCache = /* @__PURE__ */ new Map();
|
|
7
|
+
function tryResolveRuntimeImport(specifier, resolver) {
|
|
8
|
+
try {
|
|
9
|
+
return resolver.resolve(specifier);
|
|
10
|
+
} catch {
|
|
11
|
+
return void 0;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function isBareRuntimeImport(specifier) {
|
|
15
|
+
return !specifier.startsWith(".") && !path.isAbsolute(specifier) && !specifier.startsWith("/") && !specifier.startsWith("node:") && !specifier.startsWith("@/") && !specifier.startsWith("~/") && !specifier.startsWith("#") && !specifier.includes(":");
|
|
16
|
+
}
|
|
17
|
+
function getPackageNameFromSpecifier(specifier) {
|
|
18
|
+
if (specifier.startsWith("@")) {
|
|
19
|
+
return specifier.split("/").slice(0, 2).join("/");
|
|
20
|
+
}
|
|
21
|
+
return specifier.split("/")[0] ?? specifier;
|
|
22
|
+
}
|
|
23
|
+
function getDeclaredAppPackages(rootDir) {
|
|
24
|
+
const cacheKey = path.resolve(rootDir);
|
|
25
|
+
const cached = appDeclaredPackageCache.get(cacheKey);
|
|
26
|
+
if (cached) {
|
|
27
|
+
return cached;
|
|
28
|
+
}
|
|
29
|
+
const packageJsonPath = path.resolve(rootDir, "package.json");
|
|
30
|
+
const declaredPackages = /* @__PURE__ */ new Set();
|
|
31
|
+
try {
|
|
32
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
33
|
+
for (const field of ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]) {
|
|
34
|
+
const entries = packageJson[field];
|
|
35
|
+
if (!entries || typeof entries !== "object") {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
for (const packageName of Object.keys(entries)) {
|
|
39
|
+
declaredPackages.add(packageName);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
} catch {
|
|
43
|
+
appDeclaredPackageCache.set(cacheKey, declaredPackages);
|
|
44
|
+
return declaredPackages;
|
|
45
|
+
}
|
|
46
|
+
appDeclaredPackageCache.set(cacheKey, declaredPackages);
|
|
47
|
+
return declaredPackages;
|
|
48
|
+
}
|
|
49
|
+
function isDeclaredAppPackageImport(specifier, rootDir) {
|
|
50
|
+
return getDeclaredAppPackages(rootDir).has(getPackageNameFromSpecifier(specifier));
|
|
51
|
+
}
|
|
52
|
+
function rewriteRuntimeImportSpecifier(specifier, quote, rootDir) {
|
|
53
|
+
if (!isBareRuntimeImport(specifier)) {
|
|
54
|
+
return void 0;
|
|
55
|
+
}
|
|
56
|
+
if (isDeclaredAppPackageImport(specifier, rootDir)) {
|
|
57
|
+
return void 0;
|
|
58
|
+
}
|
|
59
|
+
const resolvedPath = tryResolveRuntimeImport(specifier, corePackageRequire);
|
|
60
|
+
if (!resolvedPath || !/\.(?:[cm]?[jt]s|tsx|jsx)$/u.test(resolvedPath)) {
|
|
61
|
+
return void 0;
|
|
62
|
+
}
|
|
63
|
+
return `${quote}${pathToFileURL(resolvedPath).href}${quote}`;
|
|
64
|
+
}
|
|
65
|
+
function rewriteRuntimeBuildOutputImports(code, rootDir) {
|
|
66
|
+
const rewriteSpecifier = (prefix, quote, specifier) => {
|
|
67
|
+
const rewrittenSpecifier = rewriteRuntimeImportSpecifier(specifier, quote, rootDir);
|
|
68
|
+
return `${prefix}${rewrittenSpecifier ?? `${quote}${specifier}${quote}`}`;
|
|
69
|
+
};
|
|
70
|
+
const withResolvedPackages = code.replace(
|
|
71
|
+
/(\bfrom\s+)(['"])([^'"\\]+)\2/g,
|
|
72
|
+
(_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
|
|
73
|
+
).replace(
|
|
74
|
+
/(\bimport\s+)(['"])([^'"\\]+)\2/g,
|
|
75
|
+
(_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
|
|
76
|
+
).replace(
|
|
77
|
+
/(\bimport\s*\(\s*)(['"])([^'"\\]+)\2/g,
|
|
78
|
+
(_match, prefix, quote, specifier) => rewriteSpecifier(prefix, quote, specifier)
|
|
79
|
+
);
|
|
80
|
+
return withResolvedPackages.replace(
|
|
81
|
+
/(['"])(@oxc-project\/runtime\/(?:helpers(?:\/esm)?\/[^'"\\]+))\1/g,
|
|
82
|
+
(match, quote, specifier) => {
|
|
83
|
+
const resolvedPath = tryResolveRuntimeImport(specifier, corePackageRequire);
|
|
84
|
+
return resolvedPath ? `${quote}${pathToFileURL(resolvedPath).href}${quote}` : match;
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
function normalizeNodeRuntimeBuildOutputFile(filePath, rootDir) {
|
|
89
|
+
if (!/\.(?:[cm]?js)$/u.test(filePath)) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const fileSystem = corePackageRequire("node:fs");
|
|
93
|
+
if (!fileSystem.existsSync(filePath)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const code = fileSystem.readFileSync(filePath, "utf-8");
|
|
97
|
+
const rewritten = rewriteRuntimeBuildOutputImports(code, rootDir);
|
|
98
|
+
if (rewritten !== code) {
|
|
99
|
+
fileSystem.writeFileSync(filePath, rewritten);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function normalizeNodeRuntimeBuildOutputs(outputPaths, rootDir) {
|
|
103
|
+
for (const outputPath of outputPaths) {
|
|
104
|
+
normalizeNodeRuntimeBuildOutputFile(outputPath, rootDir);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export {
|
|
108
|
+
isDeclaredAppPackageImport,
|
|
109
|
+
normalizeNodeRuntimeBuildOutputFile,
|
|
110
|
+
normalizeNodeRuntimeBuildOutputs
|
|
111
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { BuildExecutor, BuildOptions, BuildResult } from './build-adapter.js';
|
|
2
|
+
/**
|
|
3
|
+
* FIFO-serialized build executor wrapper.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Wraps any `BuildExecutor` and ensures that no two builds run
|
|
7
|
+
* concurrently. The next build waits for the previous one to finish
|
|
8
|
+
* (success or failure) before starting.
|
|
9
|
+
*
|
|
10
|
+
* This is a bundler-agnostic primitive. It is unaware of bundler
|
|
11
|
+
* lifecycle events and exists purely to enforce one build at a time.
|
|
12
|
+
* Use it from the dev watch pipeline, the static preview path, or any
|
|
13
|
+
* caller that issues builds concurrently.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* FIFO-serialized wrapper around a {@link BuildExecutor}.
|
|
17
|
+
*
|
|
18
|
+
* Every `build()` call enqueues onto the wrapper's internal queue. A
|
|
19
|
+
* build only starts after the previous build's promise has settled.
|
|
20
|
+
*/
|
|
21
|
+
export declare class SerializedBuildExecutor implements BuildExecutor {
|
|
22
|
+
private readonly inner;
|
|
23
|
+
private tail;
|
|
24
|
+
constructor(inner: BuildExecutor);
|
|
25
|
+
/**
|
|
26
|
+
* Run a build through the serialized queue. The returned promise
|
|
27
|
+
* resolves with the inner executor's `BuildResult`. A rejected
|
|
28
|
+
* inner build does not block the queue — the next caller can
|
|
29
|
+
* proceed.
|
|
30
|
+
*/
|
|
31
|
+
build(options: BuildOptions): Promise<BuildResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Run an arbitrary async operation through the serialized queue.
|
|
34
|
+
*
|
|
35
|
+
* Use this when the work is not a `build()` call against a wrapped
|
|
36
|
+
* executor (e.g. when composing with a coordinator that needs to
|
|
37
|
+
* inject recovery around the inner call). The returned promise
|
|
38
|
+
* resolves with the operation's result. A rejected operation does
|
|
39
|
+
* not block the queue.
|
|
40
|
+
*/
|
|
41
|
+
run<T>(operation: () => Promise<T>): Promise<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Returns the wrapped executor. Tests use this to assert the
|
|
44
|
+
* delegation chain.
|
|
45
|
+
*/
|
|
46
|
+
unwrap(): BuildExecutor;
|
|
47
|
+
/**
|
|
48
|
+
* Reset the queue to an empty state. Tests use this to recover
|
|
49
|
+
* from a poisoned tail.
|
|
50
|
+
*/
|
|
51
|
+
resetForTests(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Overrides the internal queue tail for fault-recovery tests. The
|
|
54
|
+
* supplied promise is awaited before the next enqueued operation
|
|
55
|
+
* starts.
|
|
56
|
+
*/
|
|
57
|
+
setBuildQueueForTests(queue: Promise<unknown>): void;
|
|
58
|
+
/**
|
|
59
|
+
* Returns the current internal queue tail for fault-recovery
|
|
60
|
+
* tests. Tests await this to assert that recovery has cleared a
|
|
61
|
+
* wedged queue.
|
|
62
|
+
*/
|
|
63
|
+
getBuildQueueForTests(): Promise<unknown>;
|
|
64
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
class SerializedBuildExecutor {
|
|
2
|
+
inner;
|
|
3
|
+
tail = Promise.resolve();
|
|
4
|
+
constructor(inner) {
|
|
5
|
+
this.inner = inner;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Run a build through the serialized queue. The returned promise
|
|
9
|
+
* resolves with the inner executor's `BuildResult`. A rejected
|
|
10
|
+
* inner build does not block the queue — the next caller can
|
|
11
|
+
* proceed.
|
|
12
|
+
*/
|
|
13
|
+
build(options) {
|
|
14
|
+
return this.run(() => this.inner.build(options));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run an arbitrary async operation through the serialized queue.
|
|
18
|
+
*
|
|
19
|
+
* Use this when the work is not a `build()` call against a wrapped
|
|
20
|
+
* executor (e.g. when composing with a coordinator that needs to
|
|
21
|
+
* inject recovery around the inner call). The returned promise
|
|
22
|
+
* resolves with the operation's result. A rejected operation does
|
|
23
|
+
* not block the queue.
|
|
24
|
+
*/
|
|
25
|
+
run(operation) {
|
|
26
|
+
const next = this.tail.catch(() => void 0).then(() => operation());
|
|
27
|
+
this.tail = next.catch(() => void 0);
|
|
28
|
+
return next;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns the wrapped executor. Tests use this to assert the
|
|
32
|
+
* delegation chain.
|
|
33
|
+
*/
|
|
34
|
+
unwrap() {
|
|
35
|
+
return this.inner;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Reset the queue to an empty state. Tests use this to recover
|
|
39
|
+
* from a poisoned tail.
|
|
40
|
+
*/
|
|
41
|
+
resetForTests() {
|
|
42
|
+
this.tail = Promise.resolve();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Overrides the internal queue tail for fault-recovery tests. The
|
|
46
|
+
* supplied promise is awaited before the next enqueued operation
|
|
47
|
+
* starts.
|
|
48
|
+
*/
|
|
49
|
+
setBuildQueueForTests(queue) {
|
|
50
|
+
this.tail = queue;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Returns the current internal queue tail for fault-recovery
|
|
54
|
+
* tests. Tests await this to assert that recovery has cleared a
|
|
55
|
+
* wedged queue.
|
|
56
|
+
*/
|
|
57
|
+
getBuildQueueForTests() {
|
|
58
|
+
return this.tail;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export {
|
|
62
|
+
SerializedBuildExecutor
|
|
63
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side CSS shim plugin for the bundler adapter.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Page modules imported by the server (so the framework can read
|
|
6
|
+
* `getStaticProps` / `staticPaths` / page metadata) commonly have
|
|
7
|
+
* `import './style.css'` at the top. The bundler does not bundle
|
|
8
|
+
* CSS, and the server only needs the JS exports — the CSS itself
|
|
9
|
+
* is delivered to the browser via the page's `dependencies.stylesheets`
|
|
10
|
+
* declarations. This plugin:
|
|
11
|
+
*
|
|
12
|
+
* - Resolves `.css` imports to the absolute on-disk path.
|
|
13
|
+
* - Loads them and returns an empty ESM module with
|
|
14
|
+
* `moduleSideEffects: true` so the bundler keeps the import in
|
|
15
|
+
* the dependency graph without trying to bundle the bytes.
|
|
16
|
+
*
|
|
17
|
+
* The plugin is added by the adapter on every server-side build.
|
|
18
|
+
* Browser-side builds that want real CSS bundling should keep using
|
|
19
|
+
* a dedicated CSS pipeline (e.g. the postcss processor's output)
|
|
20
|
+
* and continue to declare stylesheets in `dependencies.stylesheets`
|
|
21
|
+
* — the shim is intentionally inert for those flows.
|
|
22
|
+
*/
|
|
23
|
+
type RolldownPluginLike = {
|
|
24
|
+
name: string;
|
|
25
|
+
resolveId: (source: string, importer: string | undefined) => Promise<string | null> | string | null;
|
|
26
|
+
load: (id: string) => Promise<{
|
|
27
|
+
code: string;
|
|
28
|
+
moduleType: 'js';
|
|
29
|
+
moduleSideEffects: boolean;
|
|
30
|
+
} | null> | {
|
|
31
|
+
code: string;
|
|
32
|
+
moduleType: 'js';
|
|
33
|
+
moduleSideEffects: boolean;
|
|
34
|
+
} | null;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Builds a Rolldown plugin that turns `.css` imports into no-op ESM
|
|
38
|
+
* modules while preserving the dependency graph.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createServerSideCssShimPlugin(): RolldownPluginLike;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const CSS_PATH = /\.css$/u;
|
|
4
|
+
const CSS_QUERY = "?ecopages-css-shim";
|
|
5
|
+
function stripShimQuery(id) {
|
|
6
|
+
const queryIndex = id.indexOf("?");
|
|
7
|
+
return queryIndex === -1 ? id : id.slice(0, queryIndex);
|
|
8
|
+
}
|
|
9
|
+
function createServerSideCssShimPlugin() {
|
|
10
|
+
return {
|
|
11
|
+
name: "ecopages:server-side-css-shim",
|
|
12
|
+
async resolveId(source, importer) {
|
|
13
|
+
if (!CSS_PATH.test(source)) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const resolved = importer ? path.resolve(path.dirname(importer), source) : path.resolve(source);
|
|
17
|
+
return existsSync(resolved) ? `${resolved}${CSS_QUERY}` : null;
|
|
18
|
+
},
|
|
19
|
+
async load(id) {
|
|
20
|
+
if (!id.endsWith(CSS_QUERY)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const realPath = stripShimQuery(id);
|
|
24
|
+
readFileSync(realPath, "utf-8");
|
|
25
|
+
return {
|
|
26
|
+
code: 'export default "";',
|
|
27
|
+
moduleType: "js",
|
|
28
|
+
moduleSideEffects: true
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
createServerSideCssShimPlugin
|
|
35
|
+
};
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module @ecopages/core/cache
|
|
5
5
|
*/
|
|
6
|
-
export { ModuleParseCache, moduleParseCache, cachedParseSync, type ModuleParseOptions } from './module-parse-cache.
|
|
6
|
+
export { ModuleParseCache, moduleParseCache, cachedParseSync, type ModuleParseOptions } from './module-parse-cache.js';
|