@ecopages/core 0.2.0-alpha.9 → 0.2.1
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/CHANGELOG.md +18 -11
- package/README.md +23 -26
- package/package.json +76 -58
- package/src/adapters/README.md +2 -2
- package/src/adapters/abstract/application-adapter.d.ts +28 -2
- package/src/adapters/abstract/application-adapter.js +14 -2
- package/src/adapters/abstract/router-adapter.d.ts +1 -1
- package/src/adapters/abstract/server-adapter.d.ts +2 -2
- package/src/adapters/bun/client-bridge.d.ts +1 -1
- package/src/adapters/bun/create-app.d.ts +4 -12
- package/src/adapters/bun/create-app.js +4 -5
- package/src/adapters/bun/hmr-manager.d.ts +4 -4
- package/src/adapters/bun/hmr-manager.js +8 -8
- package/src/adapters/bun/index.d.ts +1 -1
- package/src/adapters/bun/index.js +2 -2
- package/src/adapters/bun/server-adapter.d.ts +5 -5
- package/src/adapters/bun/server-adapter.js +6 -5
- package/src/adapters/bun/server-lifecycle.d.ts +4 -4
- package/src/adapters/bun/server-lifecycle.js +2 -2
- package/src/{create-app.d.ts → adapters/create-app.d.ts} +9 -6
- package/src/{create-app.js → adapters/create-app.js} +4 -4
- package/src/adapters/index.d.ts +1 -5
- package/src/adapters/index.js +1 -7
- package/src/adapters/node/create-app.d.ts +6 -9
- package/src/adapters/node/create-app.js +12 -6
- package/src/adapters/node/node-client-bridge.d.ts +1 -1
- package/src/adapters/node/node-hmr-manager.d.ts +2 -2
- package/src/adapters/node/node-hmr-manager.js +3 -3
- package/src/adapters/node/server-adapter.d.ts +4 -4
- package/src/adapters/node/server-adapter.js +13 -12
- package/src/adapters/node/static-content-server.d.ts +1 -1
- package/src/adapters/node/static-content-server.js +1 -1
- package/src/adapters/shared/application-adapter.d.ts +1 -1
- package/src/adapters/shared/define-api-handler.d.ts +1 -1
- package/src/adapters/shared/explicit-static-route-matcher.d.ts +2 -2
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
- package/src/adapters/shared/fs-server-response-factory.d.ts +2 -2
- package/src/adapters/shared/fs-server-response-factory.js +1 -1
- package/src/adapters/shared/fs-server-response-matcher.d.ts +1 -1
- package/src/adapters/shared/hmr-entrypoint-registrar.js +1 -1
- package/src/adapters/shared/hmr-html-response.d.ts +1 -1
- package/src/adapters/shared/render-context.d.ts +2 -1
- package/src/adapters/shared/render-context.js +3 -1
- package/src/adapters/shared/runtime-bootstrap.d.ts +1 -1
- package/src/adapters/shared/runtime-bootstrap.js +1 -1
- package/src/adapters/shared/server-adapter.d.ts +1 -1
- package/src/adapters/shared/server-adapter.js +5 -1
- package/src/adapters/shared/server-route-handler.d.ts +4 -4
- package/src/adapters/shared/server-route-handler.js +3 -3
- package/src/adapters/shared/server-static-builder.d.ts +5 -5
- package/src/adapters/shared/server-static-builder.js +5 -4
- package/src/build/README.md +19 -13
- package/src/build/build-adapter.d.ts +67 -20
- package/src/build/build-adapter.js +420 -19
- package/src/build/dev-build-coordinator.d.ts +10 -12
- package/src/build/dev-build-coordinator.js +8 -15
- package/src/build/esbuild-build-adapter.d.ts +6 -0
- package/src/build/esbuild-build-adapter.js +94 -11
- package/src/build/runtime-build-executor.d.ts +5 -4
- package/src/build/runtime-build-executor.js +5 -3
- package/src/build/runtime-specifier-alias-plugin.js +19 -15
- package/src/build/runtime-specifier-aliases.d.ts +5 -0
- package/src/build/runtime-specifier-aliases.js +95 -0
- package/src/config/README.md +5 -2
- package/src/config/config-builder.d.ts +25 -2
- package/src/config/config-builder.js +44 -7
- package/src/declarations.d.ts +1 -1
- package/src/dev/sc-server.d.ts +1 -1
- package/src/dev/sc-server.js +1 -1
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +83 -0
- package/src/eco/eco.js +19 -48
- package/src/eco/eco.types.d.ts +1 -1
- package/src/eco/eco.utils.d.ts +1 -40
- package/src/eco/eco.utils.js +5 -35
- package/src/eco/global-injector-map.d.ts +1 -1
- package/src/eco/lazy-injector-map.d.ts +1 -1
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/strategies/default-hmr-strategy.d.ts +2 -2
- package/src/hmr/strategies/default-hmr-strategy.js +1 -1
- package/src/hmr/strategies/js-hmr-strategy.d.ts +2 -2
- package/src/hmr/strategies/js-hmr-strategy.js +2 -2
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +3 -2
- package/src/index.js +15 -4
- package/src/integrations/ghtml/ghtml-renderer.d.ts +6 -1
- package/src/integrations/ghtml/ghtml-renderer.js +29 -28
- package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -2
- package/src/integrations/ghtml/ghtml.plugin.js +2 -2
- package/src/plugins/README.md +1 -0
- package/src/plugins/eco-component-meta-plugin.d.ts +12 -1
- package/src/plugins/eco-component-meta-plugin.js +26 -20
- package/src/plugins/foreign-jsx-override-plugin.d.ts +31 -0
- package/src/plugins/foreign-jsx-override-plugin.js +35 -0
- package/src/plugins/integration-plugin.d.ts +99 -33
- package/src/plugins/integration-plugin.js +68 -21
- package/src/plugins/processor.d.ts +2 -2
- package/src/plugins/processor.js +2 -2
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +54 -84
- package/src/route-renderer/README.md +14 -20
- package/src/route-renderer/orchestration/component-render-context.d.ts +83 -0
- package/src/route-renderer/orchestration/component-render-context.js +147 -0
- package/src/route-renderer/orchestration/integration-renderer.d.ts +233 -76
- package/src/route-renderer/orchestration/integration-renderer.js +500 -143
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +93 -0
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
- package/src/route-renderer/orchestration/render-execution.service.d.ts +11 -71
- package/src/route-renderer/orchestration/render-execution.service.js +65 -80
- package/src/{eco/eco.utils.ts → route-renderer/orchestration/render-output.utils.d.ts} +10 -53
- package/src/route-renderer/orchestration/render-output.utils.js +65 -0
- package/src/route-renderer/orchestration/render-preparation.service.d.ts +2 -8
- package/src/route-renderer/orchestration/render-preparation.service.js +10 -17
- 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/dependency-resolver.d.ts +2 -2
- package/src/route-renderer/page-loading/dependency-resolver.js +10 -8
- package/src/route-renderer/page-loading/page-module-loader.d.ts +6 -4
- package/src/route-renderer/page-loading/page-module-loader.js +7 -5
- package/src/route-renderer/route-renderer.d.ts +5 -3
- package/src/route-renderer/route-renderer.js +13 -3
- package/src/router/README.md +79 -8
- package/src/router/client/navigation-coordinator.js +2 -2
- package/src/router/server/fs-router-scanner.d.ts +1 -1
- package/src/router/server/fs-router-scanner.js +6 -1
- package/src/router/server/fs-router.d.ts +1 -1
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +3 -3
- package/src/services/assets/asset-processing-service/asset-processing.service.js +6 -6
- package/src/services/assets/asset-processing-service/asset.factory.d.ts +1 -1
- package/src/services/assets/asset-processing-service/asset.factory.js +2 -2
- package/src/services/assets/asset-processing-service/index.d.ts +5 -5
- package/src/services/assets/asset-processing-service/index.js +5 -5
- package/src/services/assets/asset-processing-service/processor.interface.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processor.registry.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/base/base-processor.d.ts +1 -1
- package/src/services/assets/asset-processing-service/processors/base/base-processor.js +1 -1
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.d.ts +3 -3
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.js +2 -2
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -5
- package/src/services/assets/asset-processing-service/processors/index.js +5 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.js +1 -1
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.js +15 -3
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.d.ts +3 -3
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.js +1 -1
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.js +1 -1
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.js +1 -1
- package/src/services/assets/browser-bundle.service.d.ts +1 -1
- package/src/services/assets/browser-bundle.service.js +2 -2
- package/src/services/html/html-rewriter-provider.service.js +4 -1
- package/src/services/html/html-transformer.service.d.ts +2 -2
- package/src/services/html/html-transformer.service.js +4 -10
- package/src/services/invalidation/development-invalidation.service.d.ts +1 -1
- package/src/services/invalidation/development-invalidation.service.js +1 -0
- package/src/services/module-loading/app-module-loader.service.d.ts +25 -0
- package/src/services/module-loading/app-module-loader.service.js +31 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +9 -1
- package/src/services/module-loading/app-server-module-transpiler.service.js +77 -2
- package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
- package/src/services/module-loading/host-module-loader-registry.js +15 -0
- package/src/services/module-loading/module-loading-types.d.ts +2 -0
- package/src/{adapters/node/bootstrap-dependency-resolver.d.ts → services/module-loading/node-bootstrap-plugin.d.ts} +2 -24
- package/src/{adapters/node/bootstrap-dependency-resolver.js → services/module-loading/node-bootstrap-plugin.js} +42 -22
- package/src/services/module-loading/page-module-import.service.d.ts +4 -0
- package/src/services/module-loading/page-module-import.service.js +38 -9
- package/src/services/module-loading/server-module-transpiler.service.d.ts +3 -0
- package/src/services/module-loading/server-module-transpiler.service.js +4 -1
- package/src/services/runtime-state/dev-graph.service.d.ts +6 -6
- package/src/services/runtime-state/dev-graph.service.js +10 -10
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +1 -1
- package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +1 -1
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +1 -1
- package/src/static-site-generator/static-site-generator.d.ts +2 -2
- package/src/static-site-generator/static-site-generator.js +1 -1
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +24 -14
- package/src/{public-types.d.ts → types/public-types.d.ts} +30 -14
- package/src/types/public-types.js +0 -0
- package/src/utils/html-escaping.d.ts +7 -0
- package/src/utils/html-escaping.js +6 -0
- package/src/utils/locals-utils.d.ts +1 -1
- package/src/utils/parse-cli-args.d.ts +4 -1
- package/src/utils/parse-cli-args.js +16 -1
- package/src/utils/resolve-work-dir.js +1 -1
- package/src/watchers/project-watcher.d.ts +4 -4
- package/src/watchers/project-watcher.js +4 -10
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/adapters/abstract/application-adapter.ts +0 -337
- package/src/adapters/abstract/router-adapter.ts +0 -30
- package/src/adapters/abstract/server-adapter.ts +0 -79
- package/src/adapters/bun/client-bridge.ts +0 -62
- package/src/adapters/bun/create-app.ts +0 -189
- package/src/adapters/bun/hmr-manager.ts +0 -409
- package/src/adapters/bun/index.ts +0 -2
- package/src/adapters/bun/server-adapter.ts +0 -499
- package/src/adapters/bun/server-lifecycle.ts +0 -124
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/bootstrap-dependency-resolver.ts +0 -301
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -6
- package/src/adapters/node/index.js +0 -11
- package/src/adapters/node/index.ts +0 -16
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -381
- package/src/adapters/node/runtime-adapter.d.ts +0 -46
- package/src/adapters/node/runtime-adapter.js +0 -306
- package/src/adapters/node/runtime-adapter.ts +0 -439
- package/src/adapters/node/server-adapter.ts +0 -488
- package/src/adapters/node/static-content-server.ts +0 -239
- package/src/adapters/node/write-runtime-manifest.d.ts +0 -26
- package/src/adapters/node/write-runtime-manifest.js +0 -12
- package/src/adapters/node/write-runtime-manifest.ts +0 -38
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/define-api-handler.ts +0 -66
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -140
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -127
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -205
- package/src/adapters/shared/hmr-entrypoint-registrar.ts +0 -149
- package/src/adapters/shared/hmr-html-response.ts +0 -52
- package/src/adapters/shared/render-context.ts +0 -120
- package/src/adapters/shared/runtime-bootstrap.ts +0 -79
- package/src/adapters/shared/server-adapter.ts +0 -489
- package/src/adapters/shared/server-route-handler.ts +0 -153
- package/src/adapters/shared/server-static-builder.ts +0 -166
- package/src/build/build-adapter.ts +0 -361
- package/src/build/build-manifest.ts +0 -54
- package/src/build/build-types.ts +0 -83
- package/src/build/dev-build-coordinator.ts +0 -221
- package/src/build/esbuild-build-adapter.ts +0 -559
- package/src/build/runtime-build-executor.ts +0 -34
- package/src/build/runtime-specifier-alias-plugin.ts +0 -58
- package/src/config/config-builder.ts +0 -706
- package/src/constants.ts +0 -54
- package/src/create-app.ts +0 -87
- package/src/dev/sc-server.ts +0 -143
- package/src/eco/component-render-context.d.ts +0 -105
- package/src/eco/component-render-context.js +0 -87
- package/src/eco/component-render-context.ts +0 -224
- package/src/eco/eco.ts +0 -242
- package/src/eco/eco.types.ts +0 -221
- package/src/eco/global-injector-map.ts +0 -112
- package/src/eco/lazy-injector-map.ts +0 -120
- package/src/eco/module-dependencies.ts +0 -75
- package/src/errors/http-error.ts +0 -72
- package/src/errors/index.ts +0 -2
- package/src/errors/locals-access-error.ts +0 -7
- package/src/global/app-logger.ts +0 -4
- package/src/hmr/client/hmr-runtime.ts +0 -152
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.postcss.test.e2e.ts +0 -41
- package/src/hmr/hmr.test.e2e.ts +0 -66
- package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -320
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -5
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -96
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -232
- package/src/plugins/alias-resolver-plugin.ts +0 -63
- package/src/plugins/eco-component-meta-plugin.ts +0 -481
- package/src/plugins/integration-plugin.ts +0 -226
- package/src/plugins/processor.ts +0 -240
- package/src/plugins/runtime-capability.ts +0 -14
- package/src/public-types.ts +0 -1317
- package/src/route-renderer/component-graph/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph/component-graph.js +0 -72
- package/src/route-renderer/component-graph/component-graph.ts +0 -159
- package/src/route-renderer/component-graph/component-marker.d.ts +0 -52
- package/src/route-renderer/component-graph/component-marker.js +0 -46
- package/src/route-renderer/component-graph/component-marker.ts +0 -117
- package/src/route-renderer/component-graph/component-reference.d.ts +0 -10
- package/src/route-renderer/component-graph/component-reference.js +0 -19
- package/src/route-renderer/component-graph/component-reference.ts +0 -29
- package/src/route-renderer/component-graph/marker-graph-resolver.d.ts +0 -77
- package/src/route-renderer/component-graph/marker-graph-resolver.js +0 -95
- package/src/route-renderer/component-graph/marker-graph-resolver.ts +0 -155
- package/src/route-renderer/orchestration/integration-renderer.ts +0 -790
- package/src/route-renderer/orchestration/render-execution.service.ts +0 -230
- package/src/route-renderer/orchestration/render-preparation.service.ts +0 -476
- package/src/route-renderer/page-loading/dependency-resolver.ts +0 -612
- package/src/route-renderer/page-loading/page-module-loader.ts +0 -181
- package/src/route-renderer/route-renderer.ts +0 -115
- package/src/router/client/link-intent.test.browser.ts +0 -51
- package/src/router/client/link-intent.ts +0 -92
- package/src/router/client/navigation-coordinator.ts +0 -433
- package/src/router/server/fs-router-scanner.ts +0 -219
- package/src/router/server/fs-router.ts +0 -122
- package/src/services/assets/asset-processing-service/asset-processing.service.ts +0 -401
- package/src/services/assets/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/assets/asset-processing-service/assets.types.ts +0 -113
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.ts +0 -95
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.ts +0 -78
- package/src/services/assets/asset-processing-service/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/assets/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/assets/asset-processing-service/processors/base/base-processor.ts +0 -82
- package/src/services/assets/asset-processing-service/processors/base/base-script-processor.ts +0 -95
- package/src/services/assets/asset-processing-service/processors/index.ts +0 -5
- package/src/services/assets/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/assets/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/assets/asset-processing-service/processors/script/node-module-script.processor.ts +0 -85
- package/src/services/assets/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/assets/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -80
- package/src/services/assets/browser-bundle.service.ts +0 -53
- package/src/services/cache/cache.types.ts +0 -126
- package/src/services/cache/index.ts +0 -18
- package/src/services/cache/memory-cache-store.ts +0 -130
- package/src/services/cache/page-cache-service.ts +0 -202
- package/src/services/cache/page-request-cache-coordinator.service.ts +0 -131
- package/src/services/html/html-rewriter-provider.service.ts +0 -103
- package/src/services/html/html-transformer.service.ts +0 -279
- package/src/services/invalidation/development-invalidation.service.ts +0 -261
- package/src/services/module-loading/app-server-module-transpiler.service.ts +0 -52
- package/src/services/module-loading/page-module-import.service.ts +0 -200
- package/src/services/module-loading/server-loader.service.d.ts +0 -96
- package/src/services/module-loading/server-loader.service.js +0 -32
- package/src/services/module-loading/server-loader.service.ts +0 -130
- package/src/services/module-loading/server-module-transpiler.service.ts +0 -105
- package/src/services/runtime-manifest/node-runtime-manifest.service.d.ts +0 -35
- package/src/services/runtime-manifest/node-runtime-manifest.service.js +0 -60
- package/src/services/runtime-manifest/node-runtime-manifest.service.ts +0 -101
- package/src/services/runtime-state/dev-graph.service.ts +0 -217
- package/src/services/runtime-state/entrypoint-dependency-graph.service.ts +0 -136
- package/src/services/runtime-state/runtime-specifier-registry.service.ts +0 -96
- package/src/services/runtime-state/server-invalidation-state.service.ts +0 -68
- package/src/services/validation/schema-validation-service.ts +0 -204
- package/src/services/validation/standard-schema.types.ts +0 -68
- package/src/static-site-generator/static-site-generator.ts +0 -462
- package/src/utils/css.d.ts +0 -1
- package/src/utils/css.js +0 -7
- package/src/utils/css.ts +0 -5
- package/src/utils/deep-merge.ts +0 -47
- package/src/utils/hash.ts +0 -5
- package/src/utils/html.ts +0 -1
- package/src/utils/invariant.ts +0 -15
- package/src/utils/locals-utils.ts +0 -37
- package/src/utils/parse-cli-args.ts +0 -83
- package/src/utils/path-utils.module.ts +0 -14
- package/src/utils/resolve-work-dir.ts +0 -45
- package/src/utils/runtime.ts +0 -44
- package/src/utils/server-utils.module.ts +0 -67
- package/src/watchers/project-watcher.test-helpers.ts +0 -41
- package/src/watchers/project-watcher.ts +0 -363
- /package/src/{constants.d.ts → config/constants.d.ts} +0 -0
- /package/src/{constants.js → config/constants.js} +0 -0
- /package/src/{internal-types.js → services/module-loading/module-loading-types.js} +0 -0
- /package/src/{public-types.js → types/internal-types.js} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { RESOLVED_ASSETS_DIR } from "../../constants";
|
|
3
|
+
import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
|
|
4
4
|
import { getAppBuildExecutor } from "../../build/build-adapter.js";
|
|
5
5
|
import { fileSystem } from "@ecopages/file-system";
|
|
6
|
-
import { HmrStrategyType } from "../../hmr/hmr-strategy";
|
|
7
|
-
import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy";
|
|
8
|
-
import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy";
|
|
9
|
-
import { appLogger } from "../../global/app-logger";
|
|
6
|
+
import { HmrStrategyType } from "../../hmr/hmr-strategy.js";
|
|
7
|
+
import { DefaultHmrStrategy } from "../../hmr/strategies/default-hmr-strategy.js";
|
|
8
|
+
import { JsHmrStrategy } from "../../hmr/strategies/js-hmr-strategy.js";
|
|
9
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
10
10
|
import { HmrEntrypointRegistrar } from "../shared/hmr-entrypoint-registrar.js";
|
|
11
11
|
import { BrowserBundleService } from "../../services/assets/browser-bundle.service.js";
|
|
12
|
-
import { getAppServerModuleTranspiler } from "../../services/module-loading/app-server-module-transpiler.service";
|
|
12
|
+
import { getAppServerModuleTranspiler } from "../../services/module-loading/app-server-module-transpiler.service.js";
|
|
13
13
|
import {
|
|
14
14
|
getAppEntrypointDependencyGraph,
|
|
15
15
|
NoopEntrypointDependencyGraph,
|
|
@@ -251,7 +251,7 @@ class HmrManager {
|
|
|
251
251
|
*/
|
|
252
252
|
async registerEntrypoint(entrypointPath) {
|
|
253
253
|
return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
|
|
254
|
-
emit: async (normalizedEntrypoint
|
|
254
|
+
emit: async (normalizedEntrypoint) => await this.emitStrictEntrypoint(normalizedEntrypoint),
|
|
255
255
|
getMissingOutputError: (normalizedEntrypoint, outputPath) => new Error(
|
|
256
256
|
`[HMR] Integration failed to emit entrypoint ${normalizedEntrypoint} to ${outputPath}. Page entrypoints must be produced by their owning integration.`
|
|
257
257
|
)
|
|
@@ -278,7 +278,7 @@ class HmrManager {
|
|
|
278
278
|
* strategy processing without broadcasting, and then verifies that the owning
|
|
279
279
|
* integration emitted the expected file.
|
|
280
280
|
*/
|
|
281
|
-
async emitStrictEntrypoint(entrypointPath
|
|
281
|
+
async emitStrictEntrypoint(entrypointPath) {
|
|
282
282
|
await this.handleFileChange(entrypointPath, { broadcast: false });
|
|
283
283
|
}
|
|
284
284
|
/**
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { BunEcopagesApp, createApp } from './create-app.js';
|
|
2
2
|
export { defineApiHandler, defineGroupHandler, type GroupHandler } from '../shared/define-api-handler.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BunEcopagesApp, createApp } from "./create-app.js";
|
|
2
2
|
import { defineApiHandler, defineGroupHandler } from "../shared/define-api-handler.js";
|
|
3
3
|
export {
|
|
4
|
-
|
|
4
|
+
BunEcopagesApp,
|
|
5
5
|
createApp,
|
|
6
6
|
defineApiHandler,
|
|
7
7
|
defineGroupHandler
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Server, WebSocketHandler } from 'bun';
|
|
2
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
3
|
-
import type { ApiHandler, ErrorHandler, StaticRoute } from '../../public-types.js';
|
|
2
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
3
|
+
import type { ApiHandler, ErrorHandler, StaticRoute } from '../../types/public-types.js';
|
|
4
4
|
import { SharedServerAdapter } from '../shared/server-adapter.js';
|
|
5
5
|
import type { ServerAdapterResult } from '../abstract/server-adapter.js';
|
|
6
6
|
import { ServerRouteHandler, type ServerRouteHandlerParams } from '../shared/server-route-handler.js';
|
|
7
|
-
import { ServerStaticBuilder, type ServerStaticBuilderParams } from '../shared/server-static-builder';
|
|
8
|
-
import { ClientBridge } from './client-bridge';
|
|
9
|
-
import { HmrManager } from './hmr-manager';
|
|
7
|
+
import { ServerStaticBuilder, type ServerStaticBuilderParams } from '../shared/server-static-builder.js';
|
|
8
|
+
import { ClientBridge } from './client-bridge.js';
|
|
9
|
+
import { HmrManager } from './hmr-manager.js';
|
|
10
10
|
import { ServerLifecycle } from './server-lifecycle.js';
|
|
11
11
|
type BunServerInstance = Server<unknown>;
|
|
12
12
|
type BunNativeServeOptions = Bun.Serve.Options<unknown>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
|
|
1
2
|
import { appLogger } from "../../global/app-logger.js";
|
|
2
3
|
import { HttpError } from "../../errors/http-error.js";
|
|
3
4
|
import { createRequire } from "../../utils/locals-utils.js";
|
|
@@ -6,14 +7,14 @@ import { SharedServerAdapter } from "../shared/server-adapter.js";
|
|
|
6
7
|
import { ApiResponseBuilder } from "../shared/api-response.js";
|
|
7
8
|
import { installSharedRuntimeBuildExecutor } from "../shared/runtime-bootstrap.js";
|
|
8
9
|
import { ServerRouteHandler } from "../shared/server-route-handler.js";
|
|
9
|
-
import { ServerStaticBuilder } from "../shared/server-static-builder";
|
|
10
|
+
import { ServerStaticBuilder } from "../shared/server-static-builder.js";
|
|
10
11
|
import {
|
|
11
12
|
injectHmrRuntimeIntoHtmlResponse,
|
|
12
13
|
isHtmlResponse,
|
|
13
14
|
shouldInjectHmrHtmlResponse
|
|
14
|
-
} from "../shared/hmr-html-response";
|
|
15
|
-
import { ClientBridge } from "./client-bridge";
|
|
16
|
-
import { HmrManager } from "./hmr-manager";
|
|
15
|
+
} from "../shared/hmr-html-response.js";
|
|
16
|
+
import { ClientBridge } from "./client-bridge.js";
|
|
17
|
+
import { HmrManager } from "./hmr-manager.js";
|
|
17
18
|
import { ServerLifecycle } from "./server-lifecycle.js";
|
|
18
19
|
class BunServerAdapter extends SharedServerAdapter {
|
|
19
20
|
apiHandlers;
|
|
@@ -347,7 +348,7 @@ class BunServerAdapter extends SharedServerAdapter {
|
|
|
347
348
|
}
|
|
348
349
|
}
|
|
349
350
|
async function createBunServerAdapter(params) {
|
|
350
|
-
const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname ||
|
|
351
|
+
const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${params.serveOptions.port || DEFAULT_ECOPAGES_PORT}`;
|
|
351
352
|
const bridge = params.bridge ?? new ClientBridge();
|
|
352
353
|
const hmrManager = params.hmrManager ?? new HmrManager({ appConfig: params.appConfig, bridge });
|
|
353
354
|
const lifecycle = params.lifecycle ?? new ServerLifecycle({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig } from '../../internal-types';
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
2
|
import type { EcoBuildPlugin } from '../../build/build-types.js';
|
|
3
|
-
import { StaticSiteGenerator } from '../../static-site-generator/static-site-generator';
|
|
4
|
-
import type { ClientBridge } from './client-bridge';
|
|
5
|
-
import type { HmrManager } from './hmr-manager';
|
|
3
|
+
import { StaticSiteGenerator } from '../../static-site-generator/static-site-generator.js';
|
|
4
|
+
import type { ClientBridge } from './client-bridge.js';
|
|
5
|
+
import type { HmrManager } from './hmr-manager.js';
|
|
6
6
|
export interface WatcherCallbacks {
|
|
7
7
|
refreshRouterRoutesCallback: () => Promise<void>;
|
|
8
8
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getBunRuntime } from "../../utils/runtime.js";
|
|
2
|
-
import { appLogger } from "../../global/app-logger";
|
|
3
|
-
import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator";
|
|
2
|
+
import { appLogger } from "../../global/app-logger.js";
|
|
3
|
+
import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator.js";
|
|
4
4
|
import {
|
|
5
5
|
bindSharedRuntimeHmrManager,
|
|
6
6
|
initializeSharedRuntimePlugins,
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import { SharedApplicationAdapter } from './
|
|
5
|
-
export
|
|
6
|
-
|
|
1
|
+
import type { EcoPagesAppConfig } from '../types/internal-types.js';
|
|
2
|
+
import { AbstractApplicationAdapter } from './abstract/application-adapter.js';
|
|
3
|
+
import type { ApplicationAdapterOptions } from './abstract/application-adapter.js';
|
|
4
|
+
import { SharedApplicationAdapter } from './shared/application-adapter.js';
|
|
5
|
+
export interface EcopagesAppOptions extends ApplicationAdapterOptions {
|
|
6
|
+
appConfig: EcoPagesAppConfig;
|
|
7
|
+
serverOptions?: Record<string, any>;
|
|
8
|
+
}
|
|
9
|
+
export type UniversalEcopagesApp = AbstractApplicationAdapter<EcopagesAppOptions, unknown, Request>;
|
|
7
10
|
export declare function createApp<WebSocketData = undefined>(options: EcopagesAppOptions): Promise<UniversalEcopagesApp>;
|
|
8
11
|
export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, unknown, Request> {
|
|
9
12
|
private readonly appOptions;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { AbstractApplicationAdapter } from "./
|
|
2
|
-
import { SharedApplicationAdapter } from "./
|
|
1
|
+
import { AbstractApplicationAdapter } from "./abstract/application-adapter.js";
|
|
2
|
+
import { SharedApplicationAdapter } from "./shared/application-adapter.js";
|
|
3
3
|
async function createRuntimeApp(options) {
|
|
4
4
|
const bun = globalThis.Bun;
|
|
5
5
|
if (bun) {
|
|
6
|
-
const { createApp: createBunApp } = await import("./
|
|
6
|
+
const { createApp: createBunApp } = await import("./bun/create-app.js");
|
|
7
7
|
return await createBunApp(options);
|
|
8
8
|
}
|
|
9
|
-
const { createNodeApp } = await import("./
|
|
9
|
+
const { createApp: createNodeApp } = await import("./node/create-app.js");
|
|
10
10
|
return await createNodeApp(options);
|
|
11
11
|
}
|
|
12
12
|
async function createApp(options) {
|
package/src/adapters/index.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
export { EcopagesApp, createApp } from './
|
|
1
|
+
export { EcopagesApp, createApp } from './create-app.js';
|
|
2
2
|
export { defineApiHandler, defineGroupHandler, type GroupHandler } from './shared/define-api-handler.js';
|
|
3
|
-
export { NodeServerAdapter, createNodeServerAdapter } from './node/server-adapter.js';
|
|
4
|
-
export { EcopagesApp as NodeAdapterEcopagesApp, createNodeApp } from './node/create-app.js';
|
|
5
|
-
export type { NodeServerAdapterParams, NodeServerAdapterResult } from './node/server-adapter.js';
|
|
6
|
-
export type { EcopagesAppOptions as NodeEcopagesAppOptions } from './node/create-app.js';
|
package/src/adapters/index.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import { EcopagesApp, createApp } from "./
|
|
1
|
+
import { EcopagesApp, createApp } from "./create-app.js";
|
|
2
2
|
import { defineApiHandler, defineGroupHandler } from "./shared/define-api-handler.js";
|
|
3
|
-
import { NodeServerAdapter, createNodeServerAdapter } from "./node/server-adapter.js";
|
|
4
|
-
import { EcopagesApp as EcopagesApp2, createNodeApp } from "./node/create-app.js";
|
|
5
3
|
export {
|
|
6
4
|
EcopagesApp,
|
|
7
|
-
EcopagesApp2 as NodeAdapterEcopagesApp,
|
|
8
|
-
NodeServerAdapter,
|
|
9
5
|
createApp,
|
|
10
|
-
createNodeApp,
|
|
11
|
-
createNodeServerAdapter,
|
|
12
6
|
defineApiHandler,
|
|
13
7
|
defineGroupHandler
|
|
14
8
|
};
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { type Server as NodeServerInstance } from 'node:http';
|
|
2
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
3
|
-
import { type ApplicationAdapterOptions } from '../abstract/application-adapter.js';
|
|
4
2
|
import { SharedApplicationAdapter } from '../shared/application-adapter.js';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
serverOptions?: Record<string, any>;
|
|
9
|
-
}
|
|
10
|
-
export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
|
|
3
|
+
import type { EcopagesAppOptions } from '../create-app.js';
|
|
4
|
+
import { type NodeServerAdapterResult, createNodeServerAdapter } from './server-adapter.js';
|
|
5
|
+
export declare class NodeEcopagesApp extends SharedApplicationAdapter<EcopagesAppOptions, NodeServerInstance, Request> {
|
|
11
6
|
serverAdapter: NodeServerAdapterResult | undefined;
|
|
12
7
|
private server;
|
|
13
8
|
private runtimeOrigin;
|
|
9
|
+
protected createServerAdapter(params: Parameters<typeof createNodeServerAdapter>[0]): Promise<NodeServerAdapterResult>;
|
|
14
10
|
stop(force?: boolean): Promise<void>;
|
|
15
11
|
protected initializeServerAdapter(): Promise<NodeServerAdapterResult>;
|
|
16
12
|
start(): Promise<NodeServerInstance | void>;
|
|
@@ -18,4 +14,5 @@ export declare class EcopagesApp extends SharedApplicationAdapter<EcopagesAppOpt
|
|
|
18
14
|
private sendNodeResponse;
|
|
19
15
|
fetch(request: Request): Promise<Response>;
|
|
20
16
|
}
|
|
21
|
-
export declare function createNodeApp(options: EcopagesAppOptions): Promise<
|
|
17
|
+
export declare function createNodeApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
18
|
+
export declare function createApp(options: EcopagesAppOptions): Promise<NodeEcopagesApp>;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { Readable } from "node:stream";
|
|
3
|
-
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../constants.js";
|
|
3
|
+
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
|
|
4
4
|
import { appLogger } from "../../global/app-logger.js";
|
|
5
|
-
import {} from "../abstract/application-adapter.js";
|
|
6
5
|
import { SharedApplicationAdapter } from "../shared/application-adapter.js";
|
|
7
6
|
import { createNodeServerAdapter } from "./server-adapter.js";
|
|
8
|
-
class
|
|
7
|
+
class NodeEcopagesApp extends SharedApplicationAdapter {
|
|
9
8
|
serverAdapter;
|
|
10
9
|
server = null;
|
|
11
10
|
runtimeOrigin = "";
|
|
11
|
+
createServerAdapter(params) {
|
|
12
|
+
return createNodeServerAdapter(params);
|
|
13
|
+
}
|
|
12
14
|
async stop(force = true) {
|
|
13
15
|
if (!this.server) {
|
|
14
16
|
return;
|
|
@@ -36,7 +38,7 @@ class EcopagesApp extends SharedApplicationAdapter {
|
|
|
36
38
|
const preferredPort = cliPort ?? (envPort ? Number(envPort) : void 0) ?? DEFAULT_ECOPAGES_PORT;
|
|
37
39
|
const preferredHostname = cliHostname ?? envHostname ?? DEFAULT_ECOPAGES_HOSTNAME;
|
|
38
40
|
this.runtimeOrigin = `http://${preferredHostname}:${preferredPort}`;
|
|
39
|
-
return
|
|
41
|
+
return this.createServerAdapter({
|
|
40
42
|
runtimeOrigin: this.runtimeOrigin,
|
|
41
43
|
appConfig: this.appConfig,
|
|
42
44
|
apiHandlers: this.apiHandlers,
|
|
@@ -135,9 +137,13 @@ class EcopagesApp extends SharedApplicationAdapter {
|
|
|
135
137
|
}
|
|
136
138
|
}
|
|
137
139
|
async function createNodeApp(options) {
|
|
138
|
-
return new
|
|
140
|
+
return new NodeEcopagesApp(options);
|
|
141
|
+
}
|
|
142
|
+
async function createApp(options) {
|
|
143
|
+
return createNodeApp(options);
|
|
139
144
|
}
|
|
140
145
|
export {
|
|
141
|
-
|
|
146
|
+
NodeEcopagesApp,
|
|
147
|
+
createApp,
|
|
142
148
|
createNodeApp
|
|
143
149
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WebSocket } from 'ws';
|
|
2
|
-
import type { ClientBridgeEvent, IClientBridge } from '../../public-types.js';
|
|
2
|
+
import type { ClientBridgeEvent, IClientBridge } from '../../types/public-types.js';
|
|
3
3
|
export declare class NodeClientBridge implements IClientBridge {
|
|
4
4
|
private subscribers;
|
|
5
5
|
private heartbeatTimer;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { DefaultHmrContext, EcoPagesAppConfig, IHmrManager, IClientBridge } from '../../internal-types.js';
|
|
1
|
+
import type { DefaultHmrContext, EcoPagesAppConfig, IHmrManager, IClientBridge } from '../../types/internal-types.js';
|
|
2
2
|
import type { EcoBuildPlugin } from '../../build/build-types.js';
|
|
3
3
|
import { type HmrStrategy } from '../../hmr/hmr-strategy.js';
|
|
4
|
-
import type { ClientBridgeEvent } from '../../public-types.js';
|
|
4
|
+
import type { ClientBridgeEvent } from '../../types/public-types.js';
|
|
5
5
|
export interface NodeHmrManagerParams {
|
|
6
6
|
appConfig: EcoPagesAppConfig;
|
|
7
7
|
bridge: IClientBridge;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { RESOLVED_ASSETS_DIR } from "../../constants.js";
|
|
3
|
+
import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
|
|
4
4
|
import { getAppBuildExecutor } from "../../build/build-adapter.js";
|
|
5
5
|
import { fileSystem } from "@ecopages/file-system";
|
|
6
6
|
import { HmrStrategyType } from "../../hmr/hmr-strategy.js";
|
|
@@ -225,7 +225,7 @@ class NodeHmrManager {
|
|
|
225
225
|
*/
|
|
226
226
|
async registerEntrypoint(entrypointPath) {
|
|
227
227
|
return await this.entrypointRegistrar.registerEntrypoint(entrypointPath, {
|
|
228
|
-
emit: async (normalizedEntrypoint
|
|
228
|
+
emit: async (normalizedEntrypoint) => await this.emitStrictEntrypoint(normalizedEntrypoint),
|
|
229
229
|
getMissingOutputError: (normalizedEntrypoint, outputPath) => new Error(
|
|
230
230
|
`[HMR] Integration failed to emit entrypoint ${normalizedEntrypoint} to ${outputPath}. Page entrypoints must be produced by their owning integration.`
|
|
231
231
|
)
|
|
@@ -255,7 +255,7 @@ class NodeHmrManager {
|
|
|
255
255
|
* 3. Let the strategy chain try to emit the entrypoint without broadcasting.
|
|
256
256
|
* 4. Fail if the owning integration did not emit the expected output.
|
|
257
257
|
*/
|
|
258
|
-
async emitStrictEntrypoint(entrypointPath
|
|
258
|
+
async emitStrictEntrypoint(entrypointPath) {
|
|
259
259
|
await this.handleFileChange(entrypointPath, { broadcast: false });
|
|
260
260
|
}
|
|
261
261
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Server as NodeHttpServer } from 'node:http';
|
|
2
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
3
|
-
import type { ApiHandler, ErrorHandler, StaticRoute } from '../../public-types.js';
|
|
2
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
3
|
+
import type { ApiHandler, ErrorHandler, StaticRoute } from '../../types/public-types.js';
|
|
4
4
|
import { SharedServerAdapter } from '../shared/server-adapter.js';
|
|
5
5
|
import type { ServerAdapterResult } from '../abstract/server-adapter.js';
|
|
6
6
|
export type NodeServerInstance = NodeHttpServer;
|
|
@@ -132,7 +132,7 @@ export declare class NodeServerAdapter extends SharedServerAdapter<NodeServerAda
|
|
|
132
132
|
* underlying socket closes early — into a 499 response so it does not
|
|
133
133
|
* incorrectly surface as a 500 in application logs.
|
|
134
134
|
*/
|
|
135
|
-
handleRequest(
|
|
135
|
+
handleRequest(request: Request): Promise<Response>;
|
|
136
136
|
/**
|
|
137
137
|
* Called once the HTTP server is bound and listening.
|
|
138
138
|
*
|
|
@@ -149,7 +149,7 @@ export declare class NodeServerAdapter extends SharedServerAdapter<NodeServerAda
|
|
|
149
149
|
* WebSocket upgrade requests that do not target `/_hmr` are rejected with an
|
|
150
150
|
* immediate socket destroy to prevent unhandled upgrade leaks.
|
|
151
151
|
*/
|
|
152
|
-
completeInitialization(
|
|
152
|
+
completeInitialization(server: NodeServerInstance): Promise<void>;
|
|
153
153
|
}
|
|
154
154
|
/**
|
|
155
155
|
* Factory function that creates and fully initialises a `NodeServerAdapter`.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { appLogger } from "../../global/app-logger.js";
|
|
3
3
|
import { NodeClientBridge } from "./node-client-bridge.js";
|
|
4
|
-
import { NodeHmrManager } from "./node-hmr-manager.js";
|
|
5
4
|
import { StaticSiteGenerator } from "../../static-site-generator/static-site-generator.js";
|
|
6
5
|
import { SharedServerAdapter } from "../shared/server-adapter.js";
|
|
7
6
|
import { ServerStaticBuilder } from "../shared/server-static-builder.js";
|
|
@@ -13,6 +12,7 @@ import {
|
|
|
13
12
|
startSharedProjectWatching
|
|
14
13
|
} from "../shared/runtime-bootstrap.js";
|
|
15
14
|
import { NodeStaticContentServer } from "./static-content-server.js";
|
|
15
|
+
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT } from "../../config/constants.js";
|
|
16
16
|
class ClientAbortError extends Error {
|
|
17
17
|
constructor() {
|
|
18
18
|
super("Client closed the request");
|
|
@@ -102,12 +102,12 @@ class NodeServerAdapter extends SharedServerAdapter {
|
|
|
102
102
|
appConfig: this.appConfig,
|
|
103
103
|
options: {
|
|
104
104
|
hostname: this.serveOptions.hostname,
|
|
105
|
-
port: Number(this.serveOptions.port ||
|
|
105
|
+
port: Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT)
|
|
106
106
|
}
|
|
107
107
|
});
|
|
108
108
|
await this.previewServer.start();
|
|
109
|
-
const previewHostname = this.serveOptions.hostname ||
|
|
110
|
-
const previewPort = this.serveOptions.port ||
|
|
109
|
+
const previewHostname = this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME;
|
|
110
|
+
const previewPort = this.serveOptions.port || DEFAULT_ECOPAGES_PORT;
|
|
111
111
|
appLogger.info(`Preview running at http://${previewHostname}:${previewPort}`);
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
@@ -198,8 +198,8 @@ class NodeServerAdapter extends SharedServerAdapter {
|
|
|
198
198
|
* `stopBuildRuntimeServer`, so it never overlaps with the actual dev/prod server.
|
|
199
199
|
*/
|
|
200
200
|
async startBuildRuntimeServer() {
|
|
201
|
-
const hostname = String(this.serveOptions.hostname ||
|
|
202
|
-
const port = Number(this.serveOptions.port ||
|
|
201
|
+
const hostname = String(this.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME);
|
|
202
|
+
const port = Number(this.serveOptions.port || DEFAULT_ECOPAGES_PORT);
|
|
203
203
|
const server = createServer(async (req, res) => {
|
|
204
204
|
try {
|
|
205
205
|
const webRequest = this.createWebRequest(req);
|
|
@@ -269,12 +269,12 @@ class NodeServerAdapter extends SharedServerAdapter {
|
|
|
269
269
|
* underlying socket closes early — into a 499 response so it does not
|
|
270
270
|
* incorrectly surface as a 500 in application logs.
|
|
271
271
|
*/
|
|
272
|
-
async handleRequest(
|
|
272
|
+
async handleRequest(request) {
|
|
273
273
|
if (!this.initialized) {
|
|
274
274
|
throw new Error("Node server adapter is not initialized. Call createAdapter() first.");
|
|
275
275
|
}
|
|
276
276
|
try {
|
|
277
|
-
return await this.handleSharedRequest(
|
|
277
|
+
return await this.handleSharedRequest(request, {
|
|
278
278
|
apiHandlers: this.apiHandlers,
|
|
279
279
|
errorHandler: this.errorHandler,
|
|
280
280
|
serverInstance: this.serverInstance,
|
|
@@ -303,16 +303,17 @@ class NodeServerAdapter extends SharedServerAdapter {
|
|
|
303
303
|
* WebSocket upgrade requests that do not target `/_hmr` are rejected with an
|
|
304
304
|
* immediate socket destroy to prevent unhandled upgrade leaks.
|
|
305
305
|
*/
|
|
306
|
-
async completeInitialization(
|
|
307
|
-
this.serverInstance =
|
|
306
|
+
async completeInitialization(server) {
|
|
307
|
+
this.serverInstance = server;
|
|
308
308
|
if (this.options?.watch) {
|
|
309
|
+
const { NodeHmrManager } = await import("./node-hmr-manager.js");
|
|
309
310
|
const { WebSocketServer } = await import("ws");
|
|
310
311
|
const wss = new WebSocketServer({ noServer: true });
|
|
311
312
|
this.bridge = new NodeClientBridge();
|
|
312
313
|
this.hmrManager = new NodeHmrManager({ appConfig: this.appConfig, bridge: this.bridge });
|
|
313
314
|
this.hmrManager.setEnabled(true);
|
|
314
315
|
await this.hmrManager.buildRuntime();
|
|
315
|
-
|
|
316
|
+
server.on("upgrade", (req, socket, head) => {
|
|
316
317
|
const url = new URL(req.url ?? "/", this.runtimeOrigin);
|
|
317
318
|
if (url.pathname === "/_hmr") {
|
|
318
319
|
wss.handleUpgrade(req, socket, head, (ws) => {
|
|
@@ -345,7 +346,7 @@ class NodeServerAdapter extends SharedServerAdapter {
|
|
|
345
346
|
}
|
|
346
347
|
}
|
|
347
348
|
async function createNodeServerAdapter(params) {
|
|
348
|
-
const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname ||
|
|
349
|
+
const runtimeOrigin = params.runtimeOrigin ?? `http://${params.serveOptions.hostname || DEFAULT_ECOPAGES_HOSTNAME}:${params.serveOptions.port || DEFAULT_ECOPAGES_PORT}`;
|
|
349
350
|
const adapter = new NodeServerAdapter({
|
|
350
351
|
...params,
|
|
351
352
|
runtimeOrigin
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Server as NodeHttpServer } from 'node:http';
|
|
2
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
2
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
3
3
|
type NodeStaticContentServerOptions = {
|
|
4
4
|
hostname?: string;
|
|
5
5
|
port?: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { extname, join, normalize, sep } from "node:path";
|
|
3
|
-
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT, STATUS_MESSAGE } from "../../constants.js";
|
|
3
|
+
import { DEFAULT_ECOPAGES_HOSTNAME, DEFAULT_ECOPAGES_PORT, STATUS_MESSAGE } from "../../config/constants.js";
|
|
4
4
|
import { fileSystem } from "@ecopages/file-system";
|
|
5
5
|
import { ServerUtils } from "../../utils/server-utils.module.js";
|
|
6
6
|
class NodeStaticContentServer {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ApiHandler, ApiHandlerContext, Middleware, RouteGroupBuilder, RouteOptions } from '../../public-types.js';
|
|
1
|
+
import type { ApiHandler, ApiHandlerContext, Middleware, RouteGroupBuilder, RouteOptions } from '../../types/public-types.js';
|
|
2
2
|
import { AbstractApplicationAdapter, type ApplicationAdapterOptions, type RouteGroupDefinition, type RouteHandler } from '../abstract/application-adapter.js';
|
|
3
3
|
export declare abstract class SharedApplicationAdapter<TOptions extends ApplicationAdapterOptions = ApplicationAdapterOptions, TServer = any, TRequest extends Request = Request> extends AbstractApplicationAdapter<TOptions, TServer, TRequest> {
|
|
4
4
|
protected register<P extends string, TContext extends ApiHandlerContext<TRequest, TServer> = ApiHandlerContext<TRequest, TServer>>(path: P, method: ApiHandler['method'], handler: RouteHandler<TRequest, TServer, TContext>, options?: RouteOptions<TRequest, TServer, TContext>): this;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ApiHandler, ApiHandlerContext, Middleware, RouteSchema, TypedGroupHandlerContext } from '../../public-types.js';
|
|
1
|
+
import type { ApiHandler, ApiHandlerContext, Middleware, RouteSchema, TypedGroupHandlerContext } from '../../types/public-types.js';
|
|
2
2
|
type UniversalContext = ApiHandlerContext<Request, unknown>;
|
|
3
3
|
type SchemaHandlerContext<TSchema extends RouteSchema | undefined, TContext extends UniversalContext> = TSchema extends RouteSchema ? TypedGroupHandlerContext<TSchema, TContext> : TContext;
|
|
4
4
|
export declare function defineApiHandler<TPath extends string, TSchema extends RouteSchema | undefined = undefined, TContext extends UniversalContext = UniversalContext>(handler: Omit<ApiHandler<TPath, Request, unknown>, 'handler' | 'middleware' | 'schema'> & {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
2
|
-
import type { StaticRoute } from '../../public-types.js';
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
|
+
import type { StaticRoute } from '../../types/public-types.js';
|
|
3
3
|
import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
|
|
4
4
|
export declare const EXPLICIT_STATIC_ROUTE_MATCHER_ERRORS: {
|
|
5
5
|
readonly missingIntegration: (routePath: string) => string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Middleware, ApiHandlerContext, RequestLocals } from '../../public-types.js';
|
|
1
|
+
import type { Middleware, ApiHandlerContext, RequestLocals } from '../../types/public-types.js';
|
|
2
2
|
import type { PageCacheService } from '../../services/cache/page-cache-service.js';
|
|
3
3
|
export declare const FILE_ROUTE_MIDDLEWARE_PIPELINE_ERRORS: {
|
|
4
4
|
readonly CTX_RENDER_UNAVAILABLE: "[ecopages] ctx.render is not available in file-route middleware";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig, FileSystemServerOptions } from '../../internal-types.js';
|
|
2
|
-
import type { RouteRendererBody } from '../../public-types.js';
|
|
1
|
+
import type { EcoPagesAppConfig, FileSystemServerOptions } from '../../types/internal-types.js';
|
|
2
|
+
import type { RouteRendererBody } from '../../types/public-types.js';
|
|
3
3
|
import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
|
|
4
4
|
export declare class FileSystemServerResponseFactory {
|
|
5
5
|
private appConfig;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig, MatchResult } from '../../internal-types.js';
|
|
1
|
+
import type { EcoPagesAppConfig, MatchResult } from '../../types/internal-types.js';
|
|
2
2
|
import type { RouteRendererFactory } from '../../route-renderer/route-renderer.js';
|
|
3
3
|
import type { FSRouter } from '../../router/server/fs-router.js';
|
|
4
4
|
import type { PageCacheService } from '../../services/cache/page-cache-service.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { fileSystem } from "@ecopages/file-system";
|
|
3
3
|
import { appLogger } from "../../global/app-logger.js";
|
|
4
|
-
import { RESOLVED_ASSETS_DIR } from "../../constants.js";
|
|
4
|
+
import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
|
|
5
5
|
class HmrEntrypointRegistrar {
|
|
6
6
|
options;
|
|
7
7
|
constructor(options) {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { RenderContext } from '../../public-types.js';
|
|
1
|
+
import type { RenderContext } from '../../types/public-types.js';
|
|
2
2
|
import type { IntegrationPlugin } from '../../plugins/integration-plugin.js';
|
|
3
3
|
export interface CreateRenderContextOptions {
|
|
4
4
|
integrations: IntegrationPlugin[];
|
|
5
|
+
rendererModules?: unknown;
|
|
5
6
|
}
|
|
6
7
|
/**
|
|
7
8
|
* Creates a render context for route handlers.
|
|
@@ -15,7 +15,9 @@ function createRenderContext(options) {
|
|
|
15
15
|
);
|
|
16
16
|
const integration = integrations.find((i) => i.name === integrationName);
|
|
17
17
|
invariant(!!integration, `No integration found for: ${integrationName}`);
|
|
18
|
-
return integration.initializeRenderer(
|
|
18
|
+
return integration.initializeRenderer({
|
|
19
|
+
rendererModules: options.rendererModules
|
|
20
|
+
});
|
|
19
21
|
};
|
|
20
22
|
const renderContext = {
|
|
21
23
|
async render(view, props, renderOptions) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type BuildExecutor } from '../../build/build-adapter.js';
|
|
2
2
|
import type { EcoBuildPlugin } from '../../build/build-types.js';
|
|
3
|
-
import type { EcoPagesAppConfig, IClientBridge, IHmrManager } from '../../internal-types.js';
|
|
3
|
+
import type { EcoPagesAppConfig, IClientBridge, IHmrManager } from '../../types/internal-types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Installs and returns the app-owned runtime build executor used by adapter
|
|
6
6
|
* startup and follow-up runtime work.
|
|
@@ -2,7 +2,7 @@ import path from "node:path";
|
|
|
2
2
|
import { fileSystem } from "@ecopages/file-system";
|
|
3
3
|
import { getAppBrowserBuildPlugins, setupAppRuntimePlugins } from "../../build/build-adapter.js";
|
|
4
4
|
import { installAppRuntimeBuildExecutor } from "../../build/runtime-build-executor.js";
|
|
5
|
-
import { RESOLVED_ASSETS_DIR } from "../../constants.js";
|
|
5
|
+
import { RESOLVED_ASSETS_DIR } from "../../config/constants.js";
|
|
6
6
|
import { ProjectWatcher } from "../../watchers/project-watcher.js";
|
|
7
7
|
function installSharedRuntimeBuildExecutor(appConfig, options) {
|
|
8
8
|
return installAppRuntimeBuildExecutor(appConfig, options);
|
|
@@ -7,7 +7,7 @@ import { StaticSiteGenerator } from '../../static-site-generator/static-site-gen
|
|
|
7
7
|
import { ServerStaticBuilder } from './server-static-builder.js';
|
|
8
8
|
import { FileSystemResponseMatcher } from './fs-server-response-matcher.js';
|
|
9
9
|
import { ServerRouteHandler } from './server-route-handler.js';
|
|
10
|
-
import type { ApiHandler, CacheInvalidator, ErrorHandler, RenderContext, StaticRoute } from '../../public-types.js';
|
|
10
|
+
import type { ApiHandler, CacheInvalidator, ErrorHandler, RenderContext, StaticRoute } from '../../types/public-types.js';
|
|
11
11
|
export declare abstract class SharedServerAdapter<TOptions extends ServerAdapterOptions, TResult extends ServerAdapterResult> extends AbstractServerAdapter<TOptions, TResult> {
|
|
12
12
|
protected router: FSRouter;
|
|
13
13
|
protected fileSystemResponseMatcher: FileSystemResponseMatcher;
|
|
@@ -91,6 +91,7 @@ class SharedServerAdapter extends AbstractServerAdapter {
|
|
|
91
91
|
configureSharedResponseHandlers(staticRoutes, hmrManager) {
|
|
92
92
|
this.routeRendererFactory = new RouteRendererFactory({
|
|
93
93
|
appConfig: this.appConfig,
|
|
94
|
+
rendererModules: this.appConfig.runtime?.rendererModuleContext,
|
|
94
95
|
runtimeOrigin: this.runtimeOrigin
|
|
95
96
|
});
|
|
96
97
|
const fileSystemResponseFactory = new FileSystemServerResponseFactory({
|
|
@@ -132,7 +133,10 @@ class SharedServerAdapter extends AbstractServerAdapter {
|
|
|
132
133
|
return this.fileSystemResponseMatcher?.getCacheService() ?? null;
|
|
133
134
|
}
|
|
134
135
|
getRenderContext() {
|
|
135
|
-
return createRenderContext({
|
|
136
|
+
return createRenderContext({
|
|
137
|
+
integrations: this.appConfig.integrations,
|
|
138
|
+
rendererModules: this.appConfig.runtime?.rendererModuleContext
|
|
139
|
+
});
|
|
136
140
|
}
|
|
137
141
|
/**
|
|
138
142
|
* Executes an Application Programming Interface (API) handler in an environment-agnostic manner.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { IHmrManager } from '../../public-types';
|
|
2
|
-
import type { FSRouter } from '../../router/server/fs-router';
|
|
3
|
-
import type { ExplicitStaticRouteMatcher } from './explicit-static-route-matcher';
|
|
4
|
-
import type { FileSystemResponseMatcher } from './fs-server-response-matcher';
|
|
1
|
+
import type { IHmrManager } from '../../types/public-types.js';
|
|
2
|
+
import type { FSRouter } from '../../router/server/fs-router.js';
|
|
3
|
+
import type { ExplicitStaticRouteMatcher } from './explicit-static-route-matcher.js';
|
|
4
|
+
import type { FileSystemResponseMatcher } from './fs-server-response-matcher.js';
|
|
5
5
|
/**
|
|
6
6
|
* Configuration parameters for ServerRouteHandler.
|
|
7
7
|
*/
|