@ecopages/core 0.2.0-beta.31 → 0.2.0-beta.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/package.json +82 -3
- package/src/adapters/abstract/application-adapter.d.ts +0 -8
- package/src/adapters/abstract/application-adapter.js +252 -261
- package/src/adapters/abstract/router-adapter.js +12 -4
- package/src/adapters/abstract/segment-path-matcher.js +132 -134
- package/src/adapters/abstract/server-adapter.js +22 -14
- package/src/adapters/abstract/ws-pattern-matcher.js +24 -26
- package/src/adapters/bun/bun-user-websocket-lifecycle.js +83 -86
- package/src/adapters/bun/client-bridge.js +51 -50
- package/src/adapters/bun/create-app.js +171 -161
- package/src/adapters/bun/hmr-manager.js +62 -57
- package/src/adapters/bun/index.js +2 -31
- package/src/adapters/bun/runtime-host.js +61 -54
- package/src/adapters/bun/server-adapter.d.ts +0 -1
- package/src/adapters/bun/server-adapter.js +561 -561
- package/src/adapters/bun/static-preview-host.js +43 -46
- package/src/adapters/create-app.js +11 -14
- package/src/adapters/index.js +2 -30
- package/src/adapters/node/create-app.js +123 -129
- package/src/adapters/node/http-request-bridge.js +147 -106
- package/src/adapters/node/node-client-bridge.js +62 -64
- package/src/adapters/node/node-hmr-manager.js +58 -48
- package/src/adapters/node/runtime-host.js +96 -89
- package/src/adapters/node/server-adapter-dependencies.js +18 -21
- package/src/adapters/node/server-adapter.d.ts +0 -1
- package/src/adapters/node/server-adapter.js +347 -326
- package/src/adapters/node/static-content-server.js +172 -191
- package/src/adapters/node/static-preview-host.js +87 -78
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.d.ts +16 -0
- package/src/adapters/shared/hmr/dev-transform-entrypoint-registry.js +32 -0
- package/src/adapters/shared/hmr/hmr-html-response.js +46 -32
- package/src/adapters/shared/hmr/shared-hmr-manager.d.ts +29 -38
- package/src/adapters/shared/hmr/shared-hmr-manager.js +439 -425
- package/src/adapters/shared/http/api-request-pipeline.js +122 -119
- package/src/adapters/shared/http/api-response.js +77 -77
- package/src/adapters/shared/http/create-body-response.js +22 -19
- package/src/adapters/shared/http/define-api-handler.js +41 -55
- package/src/adapters/shared/http/explicit-static-render-preparation.js +26 -23
- package/src/adapters/shared/http/explicit-static-route-matcher.js +55 -62
- package/src/adapters/shared/http/file-route-middleware-pipeline.js +81 -75
- package/src/adapters/shared/http/fs-server-response-factory.js +101 -96
- package/src/adapters/shared/http/fs-server-response-matcher.js +239 -257
- package/src/adapters/shared/http/run-middleware-chain.js +15 -15
- package/src/adapters/shared/runtime/application-adapter.js +72 -87
- package/src/adapters/shared/runtime/copy-runtime-public-dir.js +25 -22
- package/src/adapters/shared/runtime/port-manager.js +207 -177
- package/src/adapters/shared/runtime/render-context.js +94 -79
- package/src/adapters/shared/runtime/runtime-app-bootstrap.js +33 -38
- package/src/adapters/shared/runtime/runtime-host.js +1 -0
- package/src/adapters/shared/runtime/runtime-server-lifecycle.d.ts +2 -3
- package/src/adapters/shared/runtime/runtime-server-lifecycle.js +65 -51
- package/src/adapters/shared/runtime/server-adapter.d.ts +1 -0
- package/src/adapters/shared/runtime/server-adapter.js +233 -217
- package/src/adapters/shared/runtime/server-route-handler.js +74 -70
- package/src/adapters/shared/runtime/server-static-builder.js +165 -184
- package/src/adapters/shared/runtime/static-preview-host.js +1 -0
- package/src/adapters/shared/ws/node-http-websocket-upgrades.js +97 -88
- package/src/adapters/shared/ws/websocket-lifecycle.js +57 -50
- package/src/build/README.md +52 -1
- package/src/build/app-build-manifest-runtime.js +129 -108
- package/src/build/browser/browser-runtime-manifest.js +47 -50
- package/src/build/browser/browser-runtime-plugin-helpers.js +32 -12
- package/src/build/browser/browser-runtime-plugin.js +206 -160
- package/src/build/browser/jsx-ownership-plugins.js +51 -37
- package/src/build/browser/lit-static-render-worker-context.js +3 -5
- package/src/build/build-adapter.js +276 -139
- package/src/build/cache/build-input-fingerprint.js +28 -26
- package/src/build/cache/cache-constants.js +4 -6
- package/src/build/cache/cache-keys.js +64 -56
- package/src/build/cache/pages-unified-graph-build.js +179 -178
- package/src/build/cache/production-build-cache.js +47 -54
- package/src/build/cache/server-entry-build-cache.js +134 -146
- package/src/build/contracts/build-contracts.d.ts +4 -4
- package/src/build/contracts/build-contracts.js +1 -0
- package/src/build/contracts/build-manifest.js +58 -43
- package/src/build/contracts/build-types.js +1 -0
- package/src/build/rolldown/rolldown-adapter-helpers.d.ts +9 -0
- package/src/build/rolldown/rolldown-adapter-helpers.js +405 -298
- package/src/build/rolldown/rolldown-build-adapter.js +53 -61
- package/src/build/rolldown/rolldown-build-invocation-metrics.js +31 -35
- package/src/build/rolldown/rolldown-plugin-bridge.js +264 -194
- package/src/build/rolldown/rolldown-source-transform-pass.js +59 -50
- package/src/build/rolldown/runtime-build-output-normalizer.js +227 -175
- package/src/build/rolldown/server-side-css-shim-plugin.js +54 -31
- package/src/build/runtime/build-profile-options.js +36 -36
- package/src/build/runtime/build-request-identity.js +70 -45
- package/src/build/runtime/build-request-policy.js +80 -42
- package/src/build/runtime/build-runtime.js +64 -54
- package/src/build/runtime/deduping-build-executor.js +38 -32
- package/src/build/runtime/parallel-build-executor.js +58 -50
- package/src/build/runtime/serialized-build-executor.js +78 -62
- package/src/cache/index.js +6 -6
- package/src/cache/module-parse-cache.js +99 -68
- package/src/client/navigation-scripts/classification.js +45 -37
- package/src/client/navigation-scripts/index.js +3 -23
- package/src/client/navigation-scripts/navigation-scripts.test.browser.js +58 -62
- package/src/client/navigation-scripts/registry.js +15 -11
- package/src/client/navigation-scripts/rerun-queue.js +81 -64
- package/src/client/scroll.js +32 -24
- package/src/client/scroll.test.browser.js +27 -33
- package/src/client/view-transitions.js +68 -55
- package/src/config/config-builder.d.ts +8 -0
- package/src/config/config-builder.js +637 -642
- package/src/config/constants.js +44 -24
- package/src/declarations.d.ts +1 -0
- package/src/dev/README.md +24 -0
- package/src/dev/client-bridge-registry.js +7 -12
- package/src/dev/dev-client-ownership.js +7 -5
- package/src/dev/hmr-manager-registry.js +7 -12
- package/src/dev/host-runtime.js +25 -30
- package/src/dev/runtime-server-started-message.js +2 -5
- package/src/dev/sc-server.js +106 -103
- package/src/dev/transform-server/dev-transform-bundler.d.ts +24 -0
- package/src/dev/transform-server/dev-transform-bundler.js +79 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.d.ts +12 -0
- package/src/dev/transform-server/dev-transform-externalize-plugin.js +29 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.d.ts +16 -0
- package/src/dev/transform-server/dev-transform-import-rewriter.js +110 -0
- package/src/dev/transform-server/dev-transform-module-kind.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-module-kind.js +17 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.d.ts +5 -0
- package/src/dev/transform-server/dev-transform-runtime-specifiers.js +16 -0
- package/src/dev/transform-server/dev-transform-server.d.ts +41 -0
- package/src/dev/transform-server/dev-transform-server.js +191 -0
- package/src/dev/transform-server/dev-transform-url.d.ts +13 -0
- package/src/dev/transform-server/dev-transform-url.js +58 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.d.ts +27 -0
- package/src/dev/transform-server/dev-transform-vendor-registry.js +145 -0
- package/src/dev/transform-server/index.d.ts +6 -0
- package/src/dev/transform-server/index.js +4 -0
- package/src/dev/transform-server/types.d.ts +15 -0
- package/src/dev/transform-server/types.js +1 -0
- package/src/dev-toolbar/README.md +51 -0
- package/src/dev-toolbar/define-dev-tool.d.ts +21 -0
- package/src/dev-toolbar/define-dev-tool.js +9 -0
- package/src/dev-toolbar/dev-toolbar-config.d.ts +25 -0
- package/src/dev-toolbar/dev-toolbar-config.js +19 -0
- package/src/dev-toolbar/dev-toolbar-host.d.ts +49 -0
- package/src/dev-toolbar/dev-toolbar-host.js +117 -0
- package/src/dev-toolbar/dev-toolbar-html-response.d.ts +11 -0
- package/src/dev-toolbar/dev-toolbar-html-response.js +14 -0
- package/src/dev-toolbar/dev-toolbar-manifest.d.ts +15 -0
- package/src/dev-toolbar/dev-toolbar-manifest.js +52 -0
- package/src/dev-toolbar/dev-toolbar-package.d.ts +31 -0
- package/src/dev-toolbar/dev-toolbar-package.js +72 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.d.ts +10 -0
- package/src/dev-toolbar/dev-toolbar-runtime-paths.js +13 -0
- package/src/diagnostics/request-build-dedupe.js +34 -28
- package/src/diagnostics/startup-trace.d.ts +10 -1
- package/src/diagnostics/startup-trace.js +269 -241
- package/src/eco/README.md +6 -0
- package/src/eco/eco-declared-component.js +19 -14
- package/src/eco/eco.browser.js +56 -69
- package/src/eco/eco.js +156 -96
- package/src/eco/eco.types.js +5 -0
- package/src/eco/eco.utils.js +1 -10
- package/src/eco/global-injector-map.js +55 -41
- package/src/eco/lazy-injector-map.js +90 -60
- package/src/eco/module-dependencies.js +52 -44
- package/src/eco/page-layout-normalization.js +59 -49
- package/src/errors/http-error.js +50 -49
- package/src/errors/index.js +3 -12
- package/src/errors/locals-access-error.js +5 -8
- package/src/errors/undeclared-component-dependency-error.js +15 -15
- package/src/global/app-logger.js +3 -6
- package/src/hmr/README.md +10 -0
- package/src/hmr/client/hmr-runtime.js +117 -113
- package/src/hmr/client/module-update.d.ts +13 -0
- package/src/hmr/client/module-update.js +39 -0
- package/src/hmr/hmr-asset-paths.d.ts +14 -0
- package/src/hmr/hmr-asset-paths.js +22 -0
- package/src/hmr/hmr-entrypoint-output.d.ts +11 -39
- package/src/hmr/hmr-entrypoint-output.js +28 -54
- package/src/hmr/hmr-file-change-prep.js +13 -16
- package/src/hmr/hmr-registered-entrypoints-context.d.ts +7 -0
- package/src/hmr/hmr-registered-entrypoints-context.js +1 -0
- package/src/hmr/hmr-runtime-paths.d.ts +10 -0
- package/src/hmr/hmr-runtime-paths.js +13 -0
- package/src/hmr/hmr-strategy.d.ts +5 -11
- package/src/hmr/hmr-strategy.js +113 -61
- package/src/hmr/strategies/default-hmr-strategy.js +55 -33
- package/src/hmr/strategies/js-hmr-strategy.d.ts +6 -95
- package/src/hmr/strategies/js-hmr-strategy.js +104 -217
- package/src/hmr/strategies/server-rendered-template-hmr-strategy.js +33 -27
- package/src/index.browser.js +1 -4
- package/src/index.d.ts +1 -0
- package/src/index.js +6 -47
- package/src/integrations/ghtml/ghtml-renderer.js +12 -7
- package/src/integrations/ghtml/ghtml.constants.js +1 -4
- package/src/integrations/ghtml/ghtml.plugin.js +9 -12
- package/src/islands/README.md +25 -0
- package/src/islands/island-host.d.ts +37 -0
- package/src/islands/island-host.js +55 -0
- package/src/plugins/alias-resolver-cache.js +114 -97
- package/src/plugins/alias-resolver-plugin.js +33 -47
- package/src/plugins/define-integration.js +18 -17
- package/src/plugins/eco-component-meta-plugin.js +387 -145
- package/src/plugins/foreign-jsx-override-plugin.js +49 -35
- package/src/plugins/integration-plugin.js +212 -203
- package/src/plugins/jsx-import-source.utils.js +16 -21
- package/src/plugins/processor.js +159 -149
- package/src/plugins/runtime-capability.js +1 -0
- package/src/plugins/source-transform.js +109 -79
- package/src/plugins/tsconfig-import-resolver.d.ts +17 -0
- package/src/plugins/tsconfig-import-resolver.js +218 -142
- package/src/route-renderer/README.md +12 -1
- package/src/route-renderer/orchestration/document-shell/document-shell-render.service.js +143 -136
- package/src/route-renderer/orchestration/document-shell/layout-shell-props.service.js +33 -27
- package/src/route-renderer/orchestration/foreign-child/component-render-context.js +173 -126
- package/src/route-renderer/orchestration/foreign-child/foreign-child-output.utils.js +165 -154
- package/src/route-renderer/orchestration/foreign-child/foreign-subtree-execution.service.js +329 -341
- package/src/route-renderer/orchestration/foreign-child/owning-renderer-resolution.js +33 -32
- package/src/route-renderer/orchestration/integration-renderer.d.ts +1 -0
- package/src/route-renderer/orchestration/integration-renderer.js +731 -750
- package/src/route-renderer/orchestration/integration-renderer.test-fixtures.js +168 -172
- package/src/route-renderer/orchestration/ownership-graph/component-graph-collectors.js +119 -131
- package/src/route-renderer/orchestration/ownership-graph/component-graph.js +82 -91
- package/src/route-renderer/orchestration/ownership-graph/ownership-validation.service.js +82 -76
- package/src/route-renderer/orchestration/page-browser-graph/global-injector-assets.service.js +29 -31
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-contribution.loader.js +10 -6
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-merge.utils.js +31 -28
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.d.ts +3 -0
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph-session.js +430 -413
- package/src/route-renderer/orchestration/page-browser-graph/page-browser-graph.service.js +191 -212
- package/src/route-renderer/orchestration/page-browser-graph/processed-asset-dedupe.js +20 -24
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.d.ts +4 -0
- package/src/route-renderer/orchestration/route-pipeline/integration-route-render-adapter.js +24 -24
- package/src/route-renderer/orchestration/route-pipeline/marker-artifact.utils.js +22 -24
- package/src/route-renderer/orchestration/route-pipeline/robots-meta.contribution.js +41 -34
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.d.ts +5 -0
- package/src/route-renderer/orchestration/route-pipeline/route-html-finalization.service.js +42 -22
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.builder.js +50 -48
- package/src/route-renderer/orchestration/route-pipeline/route-prepared-options.utils.js +29 -32
- package/src/route-renderer/orchestration/route-pipeline/route-render-orchestrator.js +150 -156
- package/src/route-renderer/orchestration/string-markup-renderer.js +48 -51
- package/src/route-renderer/page-loading/component-dependency-collection.js +120 -124
- package/src/route-renderer/page-loading/declared-asset-collection.js +66 -94
- package/src/route-renderer/page-loading/dependency-resolver.js +101 -104
- package/src/route-renderer/page-loading/ecopages-virtual-imports.js +68 -54
- package/src/route-renderer/page-loading/lazy-entry-collection.js +75 -98
- package/src/route-renderer/page-loading/lazy-trigger-planning.js +46 -36
- package/src/route-renderer/page-loading/module-declaration-aggregation.js +38 -31
- package/src/route-renderer/page-loading/module-declaration-scripts.js +10 -15
- package/src/route-renderer/page-loading/page-dependency-bundling.js +156 -113
- package/src/route-renderer/page-loading/page-module-loader.js +130 -124
- package/src/route-renderer/route-renderer.js +74 -76
- package/src/router/client/link-intent.js +55 -39
- package/src/router/client/link-intent.test.browser.js +49 -49
- package/src/router/client/link-navigation-policy.js +114 -93
- package/src/router/client/link-navigation-policy.test.browser.js +70 -80
- package/src/router/client/navigation-coordinator.js +235 -211
- package/src/router/server/route-registry.js +237 -242
- package/src/services/assets/asset-processing-service/asset-dependency-keys.js +64 -53
- package/src/services/assets/asset-processing-service/asset-processing.service.js +287 -303
- package/src/services/assets/asset-processing-service/asset.factory.js +78 -81
- package/src/services/assets/asset-processing-service/assets.types.js +1 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +57 -46
- package/src/services/assets/asset-processing-service/browser-runtime-entry-resolution.js +106 -69
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +53 -53
- package/src/services/assets/asset-processing-service/finalize-processed-asset.js +4 -6
- package/src/services/assets/asset-processing-service/grouped-content-bundles.js +79 -80
- package/src/services/assets/asset-processing-service/index.js +8 -8
- package/src/services/assets/asset-processing-service/inline-content-script-body.js +22 -16
- package/src/services/assets/asset-processing-service/materialize-content-script-asset.js +21 -17
- package/src/services/assets/asset-processing-service/page-package.js +70 -72
- package/src/services/assets/asset-processing-service/processor.interface.js +7 -5
- package/src/services/assets/asset-processing-service/processor.registry.js +11 -14
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +59 -62
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +102 -117
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +110 -115
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +95 -97
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +136 -135
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +27 -29
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +34 -40
- package/src/services/assets/asset-processing-service/processors/stylesheet/stylesheet-processor-pipeline.js +36 -35
- package/src/services/assets/asset-processing-service/resolve-integration-plugin.js +14 -16
- package/src/services/assets/asset-processing-service/ungrouped-dependency-processing.js +27 -39
- package/src/services/assets/browser-bundle.service.js +52 -47
- package/src/services/cache/cache.types.js +5 -0
- package/src/services/cache/index.js +6 -7
- package/src/services/cache/memory-cache-store.js +101 -89
- package/src/services/cache/page-cache-service.js +156 -145
- package/src/services/cache/page-request-cache-coordinator.service.js +102 -102
- package/src/services/html/html-rewriter-provider.service.js +61 -61
- package/src/services/html/html-transformer.service.js +249 -266
- package/src/services/invalidation/development-invalidation.service.js +252 -241
- package/src/services/module-loading/app-module-loader.service.js +1 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +107 -101
- package/src/services/module-loading/host-module-loader-registry.js +6 -11
- package/src/services/module-loading/module-loading-types.js +1 -0
- package/src/services/module-loading/page-module-import.service.js +235 -243
- package/src/services/module-loading/route-module-build-cache-registry.js +47 -33
- package/src/services/module-loading/route-module-build-cache.js +3 -38
- package/src/services/module-loading/route-module-build-cache.store.js +195 -200
- package/src/services/module-loading/route-module-build-manifest.js +61 -74
- package/src/services/module-loading/route-module-dependency-hasher.js +136 -110
- package/src/services/module-loading/server-module-transpiler.service.js +68 -62
- package/src/services/module-loading/source-module-support.js +15 -7
- package/src/services/runtime-state/dev-graph.service.js +165 -157
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -76
- package/src/services/runtime-state/server-invalidation-state.service.js +38 -30
- package/src/services/validation/schema-validation-service.js +157 -95
- package/src/services/validation/standard-schema.types.js +1 -0
- package/src/services/validation/validate-standard-schema.js +13 -13
- package/src/static-site-generator/production-page-browser-graph-prebuild.js +35 -19
- package/src/static-site-generator/sitemap-routes.js +33 -28
- package/src/static-site-generator/sitemap.js +38 -29
- package/src/static-site-generator/static-build-invalidation.js +34 -56
- package/src/static-site-generator/static-export-context.js +1 -0
- package/src/static-site-generator/static-site-generator.js +517 -553
- package/src/types/internal-types.d.ts +19 -3
- package/src/types/internal-types.js +1 -0
- package/src/types/public-types.d.ts +16 -46
- package/src/types/public-types.js +1 -0
- package/src/utils/deep-merge.js +39 -26
- package/src/utils/ecopages-route-info.js +27 -23
- package/src/utils/hash.js +3 -6
- package/src/utils/html-escaping.js +21 -8
- package/src/utils/html.js +1 -4
- package/src/utils/invariant.js +11 -10
- package/src/utils/locals-utils.js +32 -22
- package/src/utils/parse-cli-args.js +73 -65
- package/src/utils/path-pattern.js +38 -23
- package/src/utils/path-utils.module.js +8 -11
- package/src/utils/resolve-entry-file.js +70 -38
- package/src/utils/resolve-work-dir.js +23 -27
- package/src/utils/runtime.js +24 -33
- package/src/utils/server-utils.module.js +60 -52
- package/src/utils/static-file-extensions.js +52 -46
- package/src/watchers/project-watcher-ignore.js +16 -15
- package/src/watchers/project-watcher.js +385 -366
- package/src/watchers/project-watcher.test-helpers.js +45 -50
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.d.ts +0 -56
- package/src/adapters/shared/hmr/hmr-entrypoint-registrar.js +0 -106
- package/src/build/cache/dev-browser-script-cache.d.ts +0 -34
- package/src/build/cache/dev-browser-script-cache.js +0 -90
|
@@ -1,149 +1,196 @@
|
|
|
1
|
-
import { addTriggerAttribute, isThenable, wrapWithScriptsInjector } from
|
|
1
|
+
import { addTriggerAttribute, isThenable, wrapWithScriptsInjector } from './foreign-child-output.utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Shared output finalization behavior used both inside and outside active render contexts.
|
|
4
|
+
*
|
|
5
|
+
* This stage is responsible only for lazy trigger or injector wrapping. Foreign-child
|
|
6
|
+
* interception stays in `ContextualComponentRenderRuntime`.
|
|
7
|
+
*/
|
|
2
8
|
class ComponentRenderOutputRuntime {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
finalizeComponentRender(component, content) {
|
|
10
|
+
const lazyTriggers = component.config?._resolvedLazyTriggers;
|
|
11
|
+
if (lazyTriggers && lazyTriggers.length > 0) {
|
|
12
|
+
return this.addTriggerToContent(content, lazyTriggers[0].triggerId);
|
|
13
|
+
}
|
|
14
|
+
const lazyGroups = component.config?._resolvedLazyScripts;
|
|
15
|
+
if (lazyGroups && lazyGroups.length > 0) {
|
|
16
|
+
return this.wrapContentWithScriptsInjector(content, lazyGroups);
|
|
17
|
+
}
|
|
18
|
+
return content;
|
|
7
19
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
20
|
+
addTriggerToContent(content, triggerId) {
|
|
21
|
+
if (isThenable(content)) {
|
|
22
|
+
return content.then((resolvedContent) => addTriggerAttribute(resolvedContent, triggerId));
|
|
23
|
+
}
|
|
24
|
+
return addTriggerAttribute(content, triggerId);
|
|
11
25
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
26
|
+
wrapContentWithScriptsInjector(content, lazyGroups) {
|
|
27
|
+
if (isThenable(content)) {
|
|
28
|
+
return content.then((resolvedContent) => wrapWithScriptsInjector(resolvedContent, lazyGroups));
|
|
29
|
+
}
|
|
30
|
+
return wrapWithScriptsInjector(content, lazyGroups);
|
|
17
31
|
}
|
|
18
|
-
return addTriggerAttribute(content, triggerId);
|
|
19
|
-
}
|
|
20
|
-
wrapContentWithScriptsInjector(content, lazyGroups) {
|
|
21
|
-
if (isThenable(content)) {
|
|
22
|
-
return content.then((resolvedContent) => wrapWithScriptsInjector(resolvedContent, lazyGroups));
|
|
23
|
-
}
|
|
24
|
-
return wrapWithScriptsInjector(content, lazyGroups);
|
|
25
|
-
}
|
|
26
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Render-context-aware runtime that delegates foreign-child interception.
|
|
35
|
+
*/
|
|
27
36
|
class ContextualComponentRenderRuntime extends ComponentRenderOutputRuntime {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
applyForeignChildInterceptionResult(result) {
|
|
34
|
-
if (result.kind === "resolved") {
|
|
35
|
-
return result;
|
|
37
|
+
context;
|
|
38
|
+
constructor(context) {
|
|
39
|
+
super();
|
|
40
|
+
this.context = context;
|
|
36
41
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
* The runtime may choose inline rendering or immediate resolved output.
|
|
43
|
-
*/
|
|
44
|
-
interceptForeignChild(input) {
|
|
45
|
-
const foreignChildRuntimeInput = {
|
|
46
|
-
currentIntegration: this.context.currentIntegration,
|
|
47
|
-
targetIntegration: input.targetIntegration,
|
|
48
|
-
component: input.component,
|
|
49
|
-
props: input.props
|
|
50
|
-
};
|
|
51
|
-
const asyncInterception = this.context.foreignChildRuntime?.interceptForeignChild?.(foreignChildRuntimeInput);
|
|
52
|
-
if (asyncInterception !== void 0) {
|
|
53
|
-
if (isThenable(asyncInterception)) {
|
|
54
|
-
return asyncInterception.then(
|
|
55
|
-
(result) => result === void 0 ? void 0 : this.applyForeignChildInterceptionResult(result)
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
return this.applyForeignChildInterceptionResult(asyncInterception);
|
|
42
|
+
applyForeignChildInterceptionResult(result) {
|
|
43
|
+
if (result.kind === 'resolved') {
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
return result.props ? result : undefined;
|
|
59
47
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Resolves one foreign-child interception through the active runtime.
|
|
50
|
+
*
|
|
51
|
+
* The runtime may choose inline rendering or immediate resolved output.
|
|
52
|
+
*/
|
|
53
|
+
interceptForeignChild(input) {
|
|
54
|
+
const foreignChildRuntimeInput = {
|
|
55
|
+
currentIntegration: this.context.currentIntegration,
|
|
56
|
+
targetIntegration: input.targetIntegration,
|
|
57
|
+
component: input.component,
|
|
58
|
+
props: input.props,
|
|
59
|
+
};
|
|
60
|
+
const asyncInterception = this.context.foreignChildRuntime?.interceptForeignChild?.(foreignChildRuntimeInput);
|
|
61
|
+
if (asyncInterception !== undefined) {
|
|
62
|
+
if (isThenable(asyncInterception)) {
|
|
63
|
+
return asyncInterception.then((result) => result === undefined ? undefined : this.applyForeignChildInterceptionResult(result));
|
|
64
|
+
}
|
|
65
|
+
return this.applyForeignChildInterceptionResult(asyncInterception);
|
|
66
|
+
}
|
|
67
|
+
const syncInterception = this.context.foreignChildRuntime?.interceptForeignChildSync?.(foreignChildRuntimeInput);
|
|
68
|
+
if (syncInterception === undefined) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
return this.applyForeignChildInterceptionResult(syncInterception);
|
|
63
72
|
}
|
|
64
|
-
return this.applyForeignChildInterceptionResult(syncInterception);
|
|
65
|
-
}
|
|
66
73
|
}
|
|
67
|
-
const GLOBAL_COMPONENT_RENDER_CONTEXT_STATE_KEY =
|
|
74
|
+
const GLOBAL_COMPONENT_RENDER_CONTEXT_STATE_KEY = '__ECOPAGES_COMPONENT_RENDER_CONTEXT_STATE__';
|
|
75
|
+
/**
|
|
76
|
+
* Chooses the widest shared global scope available for process-wide state.
|
|
77
|
+
*
|
|
78
|
+
* `process` is preferred when present so duplicate bundles or module instances in
|
|
79
|
+
* the same runtime still converge on one shared context registry.
|
|
80
|
+
*/
|
|
68
81
|
function getSharedContextScope() {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
82
|
+
const globalProcess = globalThis.process;
|
|
83
|
+
if (globalProcess && typeof globalProcess === 'object') {
|
|
84
|
+
return globalProcess;
|
|
85
|
+
}
|
|
86
|
+
return globalThis;
|
|
74
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns the singleton mutable state used by component render contexts.
|
|
90
|
+
*/
|
|
75
91
|
function getComponentRenderContextState() {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
92
|
+
const sharedScope = getSharedContextScope();
|
|
93
|
+
sharedScope[GLOBAL_COMPONENT_RENDER_CONTEXT_STATE_KEY] ??= {
|
|
94
|
+
contextStack: [],
|
|
95
|
+
nodeContextStorage: null,
|
|
96
|
+
nodeContextStorageLoader: null,
|
|
97
|
+
};
|
|
98
|
+
return sharedScope[GLOBAL_COMPONENT_RENDER_CONTEXT_STATE_KEY];
|
|
83
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Lazily initializes async context storage for Node runtimes.
|
|
102
|
+
*
|
|
103
|
+
* Falls back to in-memory stack mode when async_hooks is unavailable.
|
|
104
|
+
*
|
|
105
|
+
* @returns Async context storage when available; otherwise `null`.
|
|
106
|
+
*/
|
|
84
107
|
async function getContextStorage() {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
108
|
+
const state = getComponentRenderContextState();
|
|
109
|
+
if (state.nodeContextStorage) {
|
|
110
|
+
return state.nodeContextStorage;
|
|
111
|
+
}
|
|
112
|
+
if (state.nodeContextStorageLoader) {
|
|
113
|
+
return state.nodeContextStorageLoader;
|
|
114
|
+
}
|
|
115
|
+
state.nodeContextStorageLoader = import('node:async_hooks')
|
|
116
|
+
.then((module) => {
|
|
117
|
+
const storage = new module.AsyncLocalStorage();
|
|
118
|
+
state.nodeContextStorage = {
|
|
119
|
+
getStore: () => storage.getStore(),
|
|
120
|
+
run: (store, callback) => storage.run(store, callback),
|
|
121
|
+
};
|
|
122
|
+
return state.nodeContextStorage;
|
|
123
|
+
})
|
|
124
|
+
.catch(() => {
|
|
125
|
+
state.nodeContextStorage = null;
|
|
126
|
+
return null;
|
|
127
|
+
})
|
|
128
|
+
.finally(() => {
|
|
129
|
+
state.nodeContextStorageLoader = null;
|
|
130
|
+
});
|
|
90
131
|
return state.nodeContextStorageLoader;
|
|
91
|
-
}
|
|
92
|
-
state.nodeContextStorageLoader = import("node:async_hooks").then((module) => {
|
|
93
|
-
const storage = new module.AsyncLocalStorage();
|
|
94
|
-
state.nodeContextStorage = {
|
|
95
|
-
getStore: () => storage.getStore(),
|
|
96
|
-
run: (store, callback) => storage.run(store, callback)
|
|
97
|
-
};
|
|
98
|
-
return state.nodeContextStorage;
|
|
99
|
-
}).catch(() => {
|
|
100
|
-
state.nodeContextStorage = null;
|
|
101
|
-
return null;
|
|
102
|
-
}).finally(() => {
|
|
103
|
-
state.nodeContextStorageLoader = null;
|
|
104
|
-
});
|
|
105
|
-
return state.nodeContextStorageLoader;
|
|
106
132
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Returns the current component render context, if one is active.
|
|
135
|
+
*
|
|
136
|
+
* @returns Active render context or `undefined` outside render execution.
|
|
137
|
+
*/
|
|
138
|
+
export function getComponentRenderContext() {
|
|
139
|
+
const state = getComponentRenderContextState();
|
|
140
|
+
return state.nodeContextStorage?.getStore() ?? state.contextStack[state.contextStack.length - 1];
|
|
110
141
|
}
|
|
111
142
|
const componentRenderOutputRuntime = new ComponentRenderOutputRuntime();
|
|
112
|
-
|
|
113
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Runs foreign-child interception for one component render step.
|
|
145
|
+
*
|
|
146
|
+
* The active runtime may resolve the foreign child immediately or keep it inline.
|
|
147
|
+
*/
|
|
148
|
+
export function interceptForeignChild(input) {
|
|
149
|
+
return getComponentRenderContext()?.interceptForeignChild(input);
|
|
114
150
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
151
|
+
/**
|
|
152
|
+
* Applies lazy trigger or injector wrapping to completed component output.
|
|
153
|
+
*
|
|
154
|
+
* This helper works both inside render-context execution and in fallback flows
|
|
155
|
+
* where no active context exists.
|
|
156
|
+
*/
|
|
157
|
+
export function finalizeComponentRender(component, content) {
|
|
158
|
+
const renderContext = getComponentRenderContext();
|
|
159
|
+
return (renderContext?.finalizeComponentRender(component, content) ??
|
|
160
|
+
componentRenderOutputRuntime.finalizeComponentRender(component, content));
|
|
118
161
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Runs render work under a fresh component render context and returns the
|
|
164
|
+
* resulting value.
|
|
165
|
+
*
|
|
166
|
+
* @param input Execution metadata for current integration and foreign-child policy.
|
|
167
|
+
* @param render Async render function to execute inside the context.
|
|
168
|
+
* @returns Render result value.
|
|
169
|
+
*/
|
|
170
|
+
export async function runWithComponentRenderContext(input, render) {
|
|
171
|
+
const context = {
|
|
172
|
+
currentIntegration: input.currentIntegration,
|
|
173
|
+
foreignChildRuntime: input.foreignChildRuntime,
|
|
174
|
+
};
|
|
175
|
+
const runtime = new ContextualComponentRenderRuntime(context);
|
|
176
|
+
context.interceptForeignChild = (deferredInput) => runtime.interceptForeignChild(deferredInput);
|
|
177
|
+
context.finalizeComponentRender = (component, content) => runtime.finalizeComponentRender(component, content);
|
|
178
|
+
const storage = await getContextStorage();
|
|
179
|
+
let value;
|
|
180
|
+
if (storage) {
|
|
181
|
+
value = await storage.run(context, render);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
const state = getComponentRenderContextState();
|
|
185
|
+
state.contextStack.push(context);
|
|
186
|
+
try {
|
|
187
|
+
value = await render();
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
state.contextStack.pop();
|
|
191
|
+
}
|
|
138
192
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
};
|
|
193
|
+
return {
|
|
194
|
+
value,
|
|
195
|
+
};
|
|
143
196
|
}
|
|
144
|
-
export {
|
|
145
|
-
finalizeComponentRender,
|
|
146
|
-
getComponentRenderContext,
|
|
147
|
-
interceptForeignChild,
|
|
148
|
-
runWithComponentRenderContext
|
|
149
|
-
};
|