@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,20 +1,8 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, symlinkSync } from "node:fs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
4
5
|
import { resolveInternalExecutionDir } from "../../utils/resolve-work-dir.js";
|
|
5
|
-
function getNodeRuntimeNodeModulesDir(manifest) {
|
|
6
|
-
return path.join(
|
|
7
|
-
resolveInternalExecutionDir({
|
|
8
|
-
rootDir: manifest.appRootDir,
|
|
9
|
-
workDir: manifest.workDir,
|
|
10
|
-
absolutePaths: {
|
|
11
|
-
workDir: manifest.workDir,
|
|
12
|
-
distDir: manifest.distDir
|
|
13
|
-
}
|
|
14
|
-
}),
|
|
15
|
-
"node_modules"
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
6
|
function getAppRuntimeNodeModulesDir(appConfig) {
|
|
19
7
|
return path.join(resolveInternalExecutionDir(appConfig), "node_modules");
|
|
20
8
|
}
|
|
@@ -50,11 +38,21 @@ function ensureRuntimePackageLink(nodeModulesDir, specifier, resolvedPath) {
|
|
|
50
38
|
symlinkSync(packageRoot, linkPath, "dir");
|
|
51
39
|
}
|
|
52
40
|
function getNodeUnsupportedBuiltinError(specifier, importer) {
|
|
53
|
-
return `Node
|
|
41
|
+
return `Node bootstrap transpilation does not support Bun builtin specifier ${JSON.stringify(specifier)}${importer ? ` imported from ${importer}` : ""}.`;
|
|
54
42
|
}
|
|
55
43
|
function shouldResolveFromImporter(importer) {
|
|
56
44
|
return Boolean(importer && importer.includes(`${path.sep}node_modules${path.sep}`));
|
|
57
45
|
}
|
|
46
|
+
function resolveSpecifier(specifier, parentPath) {
|
|
47
|
+
try {
|
|
48
|
+
return createRequire(parentPath).resolve(specifier);
|
|
49
|
+
} catch {
|
|
50
|
+
return fileURLToPath(import.meta.resolve(specifier, pathToFileURL(parentPath).href));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function resolveFromCore(specifier) {
|
|
54
|
+
return createRequire(import.meta.url).resolve(specifier);
|
|
55
|
+
}
|
|
58
56
|
function getBootstrapBuildLoaderForPath(filePath) {
|
|
59
57
|
switch (path.extname(filePath).toLowerCase()) {
|
|
60
58
|
case ".ts":
|
|
@@ -100,14 +98,37 @@ function resolveNodeBootstrapDependency(args, options) {
|
|
|
100
98
|
if (args.path.startsWith("./") || args.path.startsWith("../") || args.path.startsWith("@/") || args.path.startsWith("/") || args.path.startsWith("node:")) {
|
|
101
99
|
return void 0;
|
|
102
100
|
}
|
|
103
|
-
const
|
|
104
|
-
const requireFromImporter = args.importer && path.isAbsolute(args.importer) && shouldResolveFromImporter(args.importer) ? createRequire(args.importer) : projectRequire;
|
|
101
|
+
const resolveParent = args.importer && path.isAbsolute(args.importer) && shouldResolveFromImporter(args.importer) ? args.importer : path.join(options.projectDir, "package.json");
|
|
105
102
|
if (args.path.startsWith("@ecopages/")) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
let resolvedPath2;
|
|
104
|
+
try {
|
|
105
|
+
resolvedPath2 = resolveFromCore(args.path);
|
|
106
|
+
} catch {
|
|
107
|
+
try {
|
|
108
|
+
resolvedPath2 = resolveSpecifier(args.path, resolveParent);
|
|
109
|
+
} catch {
|
|
110
|
+
const packageName = getPackageNameFromSpecifier(args.path);
|
|
111
|
+
const candidatePath = path.join(options.projectDir, "node_modules", packageName);
|
|
112
|
+
const candidatePackageJson = path.join(candidatePath, "package.json");
|
|
113
|
+
if (existsSync(candidatePackageJson)) {
|
|
114
|
+
ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, candidatePackageJson);
|
|
115
|
+
return { path: args.path, external: true };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (!resolvedPath2) {
|
|
120
|
+
return void 0;
|
|
121
|
+
}
|
|
122
|
+
if (resolvedPath2.includes(`${path.sep}node_modules${path.sep}`)) {
|
|
123
|
+
ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, resolvedPath2);
|
|
124
|
+
return {
|
|
125
|
+
path: args.path,
|
|
126
|
+
external: true
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return { path: resolvedPath2 };
|
|
109
130
|
}
|
|
110
|
-
const resolvedPath =
|
|
131
|
+
const resolvedPath = resolveSpecifier(args.path, resolveParent);
|
|
111
132
|
ensureRuntimePackageLink(options.runtimeNodeModulesDir, args.path, resolvedPath);
|
|
112
133
|
return {
|
|
113
134
|
path: args.path,
|
|
@@ -120,7 +141,7 @@ function createNodeBootstrapPlugin(options) {
|
|
|
120
141
|
(options.preserveImportMetaPaths ?? []).map((filePath) => path.resolve(filePath))
|
|
121
142
|
);
|
|
122
143
|
return {
|
|
123
|
-
name: "node-
|
|
144
|
+
name: "node-bootstrap-plugin",
|
|
124
145
|
setup(build) {
|
|
125
146
|
build.onResolve({ filter: /^bun:/ }, (args) => {
|
|
126
147
|
throw new Error(getNodeUnsupportedBuiltinError(args.path, args.importer));
|
|
@@ -166,7 +187,6 @@ export {
|
|
|
166
187
|
createAppNodeBootstrapPlugin,
|
|
167
188
|
createNodeBootstrapPlugin,
|
|
168
189
|
getAppRuntimeNodeModulesDir,
|
|
169
|
-
getNodeRuntimeNodeModulesDir,
|
|
170
190
|
getNodeUnsupportedBuiltinError,
|
|
171
191
|
resolveNodeBootstrapDependency
|
|
172
192
|
};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { build, type BuildExecutor, type BuildResult } from '../../build/build-adapter.js';
|
|
2
2
|
import type { EcoBuildPlugin } from '../../build/build-types.js';
|
|
3
|
+
import type { SourceModuleLoaderFactory } from './module-loading-types.js';
|
|
3
4
|
export interface PageModuleImportOptions {
|
|
4
5
|
filePath: string;
|
|
5
6
|
rootDir: string;
|
|
6
7
|
outdir: string;
|
|
8
|
+
bypassCache?: boolean;
|
|
7
9
|
buildExecutor?: BuildExecutor;
|
|
8
10
|
invalidationVersion?: number;
|
|
9
11
|
splitting?: boolean;
|
|
@@ -23,6 +25,8 @@ export interface PageModuleImportOptions {
|
|
|
23
25
|
export interface PageModuleImportDependencies {
|
|
24
26
|
hashFile(filePath: string): string;
|
|
25
27
|
buildModule(options: Parameters<typeof build>[0], buildExecutor?: BuildExecutor): Promise<BuildResult>;
|
|
28
|
+
canLoadSourceModuleFromHost(filePath: string): boolean;
|
|
29
|
+
getHostModuleLoader: SourceModuleLoaderFactory;
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
32
|
* Loads source page modules in a runtime-agnostic way.
|
|
@@ -9,7 +9,9 @@ class PageModuleImportService {
|
|
|
9
9
|
constructor(dependencies) {
|
|
10
10
|
this.dependencies = {
|
|
11
11
|
hashFile: dependencies?.hashFile ?? ((filePath) => fileSystem.hash(filePath)),
|
|
12
|
-
buildModule: dependencies?.buildModule ?? ((options, buildExecutor) => build(options, buildExecutor))
|
|
12
|
+
buildModule: dependencies?.buildModule ?? ((options, buildExecutor) => build(options, buildExecutor)),
|
|
13
|
+
canLoadSourceModuleFromHost: dependencies?.canLoadSourceModuleFromHost ?? supportsHostSourceModuleLoading,
|
|
14
|
+
getHostModuleLoader: dependencies?.getHostModuleLoader ?? (() => void 0)
|
|
13
15
|
};
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
@@ -47,7 +49,20 @@ class PageModuleImportService {
|
|
|
47
49
|
const { filePath, rootDir, externalPackages, splitting } = options;
|
|
48
50
|
const invalidationVersion = options.invalidationVersion ?? this.developmentInvalidationVersion;
|
|
49
51
|
const fileHash = this.dependencies.hashFile(filePath);
|
|
50
|
-
const
|
|
52
|
+
const hostModuleLoader = typeof Bun === "undefined" && process.env.NODE_ENV === "development" && this.dependencies.canLoadSourceModuleFromHost(filePath) ? this.dependencies.getHostModuleLoader() : void 0;
|
|
53
|
+
if (hostModuleLoader) {
|
|
54
|
+
const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, invalidationVersion);
|
|
55
|
+
return await hostModuleLoader(sourceModuleUrl.href);
|
|
56
|
+
}
|
|
57
|
+
if (options.bypassCache) {
|
|
58
|
+
this.developmentInvalidationVersion += 1;
|
|
59
|
+
return await this.loadModule({
|
|
60
|
+
...options,
|
|
61
|
+
invalidationVersion: this.developmentInvalidationVersion,
|
|
62
|
+
fileHash
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const runtime = typeof Bun !== "undefined" ? "bun" : "node-build";
|
|
51
66
|
const cacheKey = [
|
|
52
67
|
runtime,
|
|
53
68
|
filePath,
|
|
@@ -85,12 +100,12 @@ class PageModuleImportService {
|
|
|
85
100
|
noOutputMessage = (targetFilePath) => `No transpiled output generated for page module: ${targetFilePath}`,
|
|
86
101
|
fileHash
|
|
87
102
|
} = options;
|
|
103
|
+
const sourceModuleUrl = createRuntimeModuleUrl(filePath, fileHash, invalidationVersion);
|
|
88
104
|
if (typeof Bun !== "undefined") {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return await import(moduleUrl.href);
|
|
105
|
+
return await import(
|
|
106
|
+
/* @vite-ignore */
|
|
107
|
+
sourceModuleUrl.href
|
|
108
|
+
);
|
|
94
109
|
}
|
|
95
110
|
const fileBaseName = path.basename(filePath, path.extname(filePath));
|
|
96
111
|
const outputFileName = `${fileBaseName}-${fileHash}.js`;
|
|
@@ -99,7 +114,7 @@ class PageModuleImportService {
|
|
|
99
114
|
entrypoints: [filePath],
|
|
100
115
|
root: rootDir,
|
|
101
116
|
outdir,
|
|
102
|
-
target: "
|
|
117
|
+
target: "es2022",
|
|
103
118
|
format: "esm",
|
|
104
119
|
sourcemap: "none",
|
|
105
120
|
splitting: splitting ?? true,
|
|
@@ -124,9 +139,23 @@ class PageModuleImportService {
|
|
|
124
139
|
if (process.env.NODE_ENV === "development") {
|
|
125
140
|
compiledOutputUrl.searchParams.set("update", `${fileHash}-${invalidationVersion}`);
|
|
126
141
|
}
|
|
127
|
-
return await import(
|
|
142
|
+
return await import(
|
|
143
|
+
/* @vite-ignore */
|
|
144
|
+
compiledOutputUrl.href
|
|
145
|
+
);
|
|
128
146
|
}
|
|
129
147
|
}
|
|
148
|
+
function createRuntimeModuleUrl(filePath, fileHash, invalidationVersion) {
|
|
149
|
+
const moduleUrl = pathToFileURL(filePath);
|
|
150
|
+
if (process.env.NODE_ENV === "development") {
|
|
151
|
+
moduleUrl.searchParams.set("update", `${fileHash}-${invalidationVersion}`);
|
|
152
|
+
}
|
|
153
|
+
return moduleUrl;
|
|
154
|
+
}
|
|
155
|
+
function supportsHostSourceModuleLoading(filePath) {
|
|
156
|
+
const extension = path.extname(filePath);
|
|
157
|
+
return extension === ".js" || extension === ".jsx" || extension === ".ts" || extension === ".tsx" || extension === ".mjs" || extension === ".mts" || extension === ".cjs" || extension === ".cts";
|
|
158
|
+
}
|
|
130
159
|
export {
|
|
131
160
|
PageModuleImportService
|
|
132
161
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { BuildExecutor } from '../../build/build-adapter.js';
|
|
2
2
|
import type { EcoBuildPlugin } from '../../build/build-types.js';
|
|
3
3
|
import { type PageModuleImportOptions } from './page-module-import.service.js';
|
|
4
|
+
import type { SourceModuleLoaderFactory } from './module-loading-types.js';
|
|
4
5
|
export type ServerModuleTranspilerOptions = Omit<PageModuleImportOptions, 'rootDir' | 'buildExecutor'>;
|
|
5
6
|
/**
|
|
6
7
|
* Minimal import-service dependency required by the server module transpiler.
|
|
@@ -24,6 +25,8 @@ export interface ServerModuleImportDependency {
|
|
|
24
25
|
export type ServerModuleTranspilerBootstrapArgs = {
|
|
25
26
|
rootDir: string;
|
|
26
27
|
getBuildExecutor: () => BuildExecutor | undefined;
|
|
28
|
+
canLoadSourceModuleFromHost?: (filePath: string) => boolean;
|
|
29
|
+
getHostModuleLoader?: SourceModuleLoaderFactory;
|
|
27
30
|
getInvalidationVersion?: () => number;
|
|
28
31
|
invalidateModules?: (changedFiles?: string[]) => void;
|
|
29
32
|
pageModuleImportService?: ServerModuleImportDependency;
|
|
@@ -11,7 +11,10 @@ class ServerModuleTranspiler {
|
|
|
11
11
|
* context.
|
|
12
12
|
*/
|
|
13
13
|
constructor(args) {
|
|
14
|
-
this.pageModuleImportService = args.pageModuleImportService ?? new PageModuleImportService(
|
|
14
|
+
this.pageModuleImportService = args.pageModuleImportService ?? new PageModuleImportService({
|
|
15
|
+
canLoadSourceModuleFromHost: args.canLoadSourceModuleFromHost,
|
|
16
|
+
getHostModuleLoader: args.getHostModuleLoader
|
|
17
|
+
});
|
|
15
18
|
this.getRootDir = () => args.rootDir;
|
|
16
19
|
this.getBuildExecutor = args.getBuildExecutor;
|
|
17
20
|
this.getInvalidationVersion = () => args.getInvalidationVersion?.();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EcoPagesAppConfig } from '../../internal-types.js';
|
|
1
|
+
import type { EcoPagesAppConfig } from '../../types/internal-types.js';
|
|
2
2
|
import { type ServerInvalidationState } from './server-invalidation-state.service.js';
|
|
3
3
|
import { type EntrypointDependencyGraph } from './entrypoint-dependency-graph.service.js';
|
|
4
4
|
/**
|
|
@@ -32,7 +32,7 @@ export declare class NoopDevGraphService implements DevGraphService {
|
|
|
32
32
|
/**
|
|
33
33
|
* Invalidates all server-side module state by incrementing the shared version.
|
|
34
34
|
*/
|
|
35
|
-
invalidateServerModules(
|
|
35
|
+
invalidateServerModules(changedFiles?: string[]): void;
|
|
36
36
|
/**
|
|
37
37
|
* Indicates that this graph cannot target invalidation to one entrypoint set.
|
|
38
38
|
*/
|
|
@@ -41,19 +41,19 @@ export declare class NoopDevGraphService implements DevGraphService {
|
|
|
41
41
|
* Returns an empty entrypoint set because this implementation stores no
|
|
42
42
|
* dependency graph metadata.
|
|
43
43
|
*/
|
|
44
|
-
getDependencyEntrypoints(
|
|
44
|
+
getDependencyEntrypoints(filePath: string): Set<string>;
|
|
45
45
|
/**
|
|
46
46
|
* Accepts dependency updates to preserve interface compatibility, but stores no
|
|
47
47
|
* graph state in the noop implementation.
|
|
48
48
|
*/
|
|
49
|
-
setEntrypointDependencies(
|
|
49
|
+
setEntrypointDependencies(entrypointPath: string, dependencies: string[]): void;
|
|
50
50
|
/**
|
|
51
51
|
* Clears one entrypoint from the graph.
|
|
52
52
|
*
|
|
53
53
|
* @remarks
|
|
54
54
|
* There is no stored graph state in this implementation, so this is a no-op.
|
|
55
55
|
*/
|
|
56
|
-
clearEntrypointDependencies(
|
|
56
|
+
clearEntrypointDependencies(entrypointPath: string): void;
|
|
57
57
|
/**
|
|
58
58
|
* Resets graph-owned state for a fresh runtime cycle.
|
|
59
59
|
*/
|
|
@@ -82,7 +82,7 @@ export declare class InMemoryDevGraphService implements DevGraphService {
|
|
|
82
82
|
* modules. Selective dependency lookups are used by callers that need to limit
|
|
83
83
|
* browser rebuild work.
|
|
84
84
|
*/
|
|
85
|
-
invalidateServerModules(
|
|
85
|
+
invalidateServerModules(changedFiles?: string[]): void;
|
|
86
86
|
/**
|
|
87
87
|
* Indicates that this graph can answer dependency-to-entrypoint lookups.
|
|
88
88
|
*/
|
|
@@ -21,8 +21,8 @@ class NoopDevGraphService {
|
|
|
21
21
|
/**
|
|
22
22
|
* Invalidates all server-side module state by incrementing the shared version.
|
|
23
23
|
*/
|
|
24
|
-
invalidateServerModules(
|
|
25
|
-
this.invalidationState.invalidateServerModules(
|
|
24
|
+
invalidateServerModules(changedFiles) {
|
|
25
|
+
this.invalidationState.invalidateServerModules(changedFiles);
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Indicates that this graph cannot target invalidation to one entrypoint set.
|
|
@@ -34,15 +34,15 @@ class NoopDevGraphService {
|
|
|
34
34
|
* Returns an empty entrypoint set because this implementation stores no
|
|
35
35
|
* dependency graph metadata.
|
|
36
36
|
*/
|
|
37
|
-
getDependencyEntrypoints(
|
|
38
|
-
return this.dependencyGraph.getDependencyEntrypoints(
|
|
37
|
+
getDependencyEntrypoints(filePath) {
|
|
38
|
+
return this.dependencyGraph.getDependencyEntrypoints(filePath);
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* Accepts dependency updates to preserve interface compatibility, but stores no
|
|
42
42
|
* graph state in the noop implementation.
|
|
43
43
|
*/
|
|
44
|
-
setEntrypointDependencies(
|
|
45
|
-
this.dependencyGraph.setEntrypointDependencies(
|
|
44
|
+
setEntrypointDependencies(entrypointPath, dependencies) {
|
|
45
|
+
this.dependencyGraph.setEntrypointDependencies(entrypointPath, dependencies);
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Clears one entrypoint from the graph.
|
|
@@ -50,8 +50,8 @@ class NoopDevGraphService {
|
|
|
50
50
|
* @remarks
|
|
51
51
|
* There is no stored graph state in this implementation, so this is a no-op.
|
|
52
52
|
*/
|
|
53
|
-
clearEntrypointDependencies(
|
|
54
|
-
this.dependencyGraph.clearEntrypointDependencies(
|
|
53
|
+
clearEntrypointDependencies(entrypointPath) {
|
|
54
|
+
this.dependencyGraph.clearEntrypointDependencies(entrypointPath);
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Resets graph-owned state for a fresh runtime cycle.
|
|
@@ -78,8 +78,8 @@ class InMemoryDevGraphService {
|
|
|
78
78
|
* modules. Selective dependency lookups are used by callers that need to limit
|
|
79
79
|
* browser rebuild work.
|
|
80
80
|
*/
|
|
81
|
-
invalidateServerModules(
|
|
82
|
-
this.invalidationState.invalidateServerModules(
|
|
81
|
+
invalidateServerModules(changedFiles) {
|
|
82
|
+
this.invalidationState.invalidateServerModules(changedFiles);
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
85
|
* Indicates that this graph can answer dependency-to-entrypoint lookups.
|
|
@@ -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
|
import type { FSRouter } from '../router/server/fs-router.js';
|
|
5
5
|
export declare const STATIC_SITE_GENERATOR_ERRORS: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { DEFAULT_ECOPAGES_WORK_DIR } from "../constants.js";
|
|
2
|
+
import { DEFAULT_ECOPAGES_WORK_DIR } from "../config/constants.js";
|
|
3
3
|
import { appLogger } from "../global/app-logger.js";
|
|
4
4
|
import { fileSystem } from "@ecopages/file-system";
|
|
5
5
|
import { PathUtils } from "../utils/path-utils.module.js";
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import type { EcoBuildPlugin } from '
|
|
2
|
-
import type { AppBuildManifest } from '
|
|
3
|
-
import type { BuildAdapter, BuildExecutor } from '
|
|
4
|
-
import type { IntegrationPlugin } from '
|
|
5
|
-
import type { Processor } from '
|
|
1
|
+
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
2
|
+
import type { AppBuildManifest } from '../build/build-manifest.js';
|
|
3
|
+
import type { BuildAdapter, BuildExecutor, BuildOwnership } from '../build/build-adapter.js';
|
|
4
|
+
import type { IntegrationPlugin } from '../plugins/integration-plugin.js';
|
|
5
|
+
import type { Processor } from '../plugins/processor.js';
|
|
6
|
+
import type { EcoSourceTransform } from '../plugins/source-transform.js';
|
|
6
7
|
import type { PageMetadataProps } from './public-types.js';
|
|
7
|
-
import type { FSRouter } from '
|
|
8
|
-
import type { CacheConfig } from '
|
|
9
|
-
import type { DevGraphService } from '
|
|
10
|
-
import type {
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
13
|
-
import type {
|
|
14
|
-
import type {
|
|
8
|
+
import type { FSRouter } from '../router/server/fs-router.js';
|
|
9
|
+
import type { CacheConfig } from '../services/cache/cache.types.js';
|
|
10
|
+
import type { DevGraphService } from '../services/runtime-state/dev-graph.service.js';
|
|
11
|
+
import type { AppModuleLoader } from '../services/module-loading/app-module-loader.service.js';
|
|
12
|
+
import type { SourceModuleLoader } from '../services/module-loading/module-loading-types.js';
|
|
13
|
+
import type { EntrypointDependencyGraph } from '../services/runtime-state/entrypoint-dependency-graph.service.js';
|
|
14
|
+
import type { RuntimeSpecifierRegistry } from '../services/runtime-state/runtime-specifier-registry.service.js';
|
|
15
|
+
import type { ServerInvalidationState } from '../services/runtime-state/server-invalidation-state.service.js';
|
|
16
|
+
import type { ServerModuleTranspiler } from '../services/module-loading/server-module-transpiler.service.js';
|
|
15
17
|
export interface RobotsPreference {
|
|
16
18
|
/**
|
|
17
19
|
* The user agent
|
|
@@ -126,6 +128,11 @@ export type EcoPagesAppConfig = {
|
|
|
126
128
|
* Loaders to be used in the app, these are used to process the files when importing them
|
|
127
129
|
*/
|
|
128
130
|
loaders: Map<string, EcoBuildPlugin>;
|
|
131
|
+
/**
|
|
132
|
+
* App-owned source transforms that can be adapted into Vite or other
|
|
133
|
+
* transform-first bundlers without going through the legacy loader bridge.
|
|
134
|
+
*/
|
|
135
|
+
sourceTransforms: Map<string, EcoSourceTransform>;
|
|
129
136
|
/**
|
|
130
137
|
* Cache configuration for ISR and page caching.
|
|
131
138
|
* @default { store: 'memory', defaultStrategy: 'static', enabled: true }
|
|
@@ -139,12 +146,15 @@ export type EcoPagesAppConfig = {
|
|
|
139
146
|
* process-global registries.
|
|
140
147
|
*/
|
|
141
148
|
runtime?: {
|
|
149
|
+
appModuleLoader?: AppModuleLoader;
|
|
150
|
+
buildOwnership?: BuildOwnership;
|
|
142
151
|
buildAdapter?: BuildAdapter;
|
|
143
152
|
buildManifest?: AppBuildManifest;
|
|
144
153
|
buildExecutor?: BuildExecutor;
|
|
145
154
|
devGraphService?: DevGraphService;
|
|
146
155
|
entrypointDependencyGraph?: EntrypointDependencyGraph;
|
|
147
|
-
|
|
156
|
+
hostModuleLoader?: SourceModuleLoader;
|
|
157
|
+
rendererModuleContext?: unknown;
|
|
148
158
|
runtimeSpecifierRegistry?: RuntimeSpecifierRegistry;
|
|
149
159
|
serverInvalidationState?: ServerInvalidationState;
|
|
150
160
|
serverModuleTranspiler?: ServerModuleTranspiler;
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import type { Readable } from 'node:stream';
|
|
2
|
-
import type { ApiResponseBuilder } from '
|
|
3
|
-
import type { BuildExecutor } from '
|
|
4
|
-
import type { EcoBuildPlugin } from '
|
|
5
|
-
import type {
|
|
2
|
+
import type { ApiResponseBuilder } from '../adapters/shared/api-response.js';
|
|
3
|
+
import type { BuildExecutor } from '../build/build-adapter.js';
|
|
4
|
+
import type { EcoBuildPlugin } from '../build/build-types.js';
|
|
5
|
+
import type { ComponentBoundaryRuntime } from '../route-renderer/orchestration/component-render-context.js';
|
|
6
|
+
import type { EcoPageComponent } from '../eco/eco.types.js';
|
|
6
7
|
import type { EcoPagesAppConfig } from './internal-types.js';
|
|
7
|
-
import type { HmrStrategy } from '
|
|
8
|
-
import type { BrowserBundleExecutor } from '
|
|
9
|
-
import type { ProcessedAsset } from '
|
|
10
|
-
import type { CacheStats, CacheStrategy } from '
|
|
8
|
+
import type { HmrStrategy } from '../hmr/hmr-strategy.js';
|
|
9
|
+
import type { BrowserBundleExecutor } from '../services/assets/browser-bundle.service.js';
|
|
10
|
+
import type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
11
|
+
import type { CacheStats, CacheStrategy } from '../services/cache/cache.types.js';
|
|
11
12
|
import type { InteractionEventsString as ScriptsInjectorInteractionEventsString } from '@ecopages/scripts-injector/types';
|
|
12
|
-
export type {
|
|
13
|
-
export type {
|
|
14
|
-
export type { ProcessedAsset } from '
|
|
15
|
-
import type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput } from '
|
|
16
|
-
export type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, };
|
|
13
|
+
export type { EcoPagesAppConfig } from './internal-types.js';
|
|
14
|
+
export type { EcoPageComponent } from '../eco/eco.types.js';
|
|
15
|
+
export type { ProcessedAsset } from '../services/assets/asset-processing-service/assets.types.js';
|
|
16
|
+
import type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput } from '../services/validation/standard-schema.types.js';
|
|
17
|
+
export type { StandardSchema, StandardSchemaResult, StandardSchemaSuccessResult, StandardSchemaFailureResult, StandardSchemaIssue, InferOutput, ComponentBoundaryRuntime, };
|
|
17
18
|
export type InteractionEventsString = ScriptsInjectorInteractionEventsString;
|
|
18
19
|
export type DependencyLazyTrigger = {
|
|
19
20
|
'on:idle': true;
|
|
@@ -261,6 +262,21 @@ export type EcoComponentDependencies = {
|
|
|
261
262
|
components?: EcoComponent[];
|
|
262
263
|
};
|
|
263
264
|
export type EcoPagesElement = string | Promise<string>;
|
|
265
|
+
/**
|
|
266
|
+
* Serializable child payloads accepted by cross-integration deferred rendering.
|
|
267
|
+
*
|
|
268
|
+
* This models the broad value shapes that EcoPages already flattens when a
|
|
269
|
+
* foreign component boundary serializes its children for another integration.
|
|
270
|
+
* It is intentionally transport-oriented rather than framework-native, so it
|
|
271
|
+
* can be shared across Kita, Lit, React, and Ecopages JSX authoring surfaces
|
|
272
|
+
* without coupling core types to any one renderer.
|
|
273
|
+
*/
|
|
274
|
+
export type EcoChildren = string | Promise<string> | number | bigint | boolean | null | undefined | readonly EcoChildren[] | {
|
|
275
|
+
strings: readonly string[];
|
|
276
|
+
values?: readonly EcoChildren[];
|
|
277
|
+
} | {
|
|
278
|
+
[key: string]: EcoChildren;
|
|
279
|
+
};
|
|
264
280
|
/**
|
|
265
281
|
* Represents the input configuration for EcoPages.
|
|
266
282
|
*/
|
|
@@ -666,7 +682,7 @@ export type IntegrationRendererRenderOptions<C = EcoPagesElement> = RouteRendere
|
|
|
666
682
|
export interface ComponentRenderInput {
|
|
667
683
|
component: EcoComponent;
|
|
668
684
|
props: Record<string, unknown>;
|
|
669
|
-
children?:
|
|
685
|
+
children?: unknown;
|
|
670
686
|
integrationContext?: unknown;
|
|
671
687
|
}
|
|
672
688
|
export interface ComponentRenderResult {
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ApiHandlerContext } from '../public-types.js';
|
|
1
|
+
import type { ApiHandlerContext } from '../types/public-types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Creates a require function for validating and retrieving request locals.
|
|
4
4
|
* Supports both single key access and multiple keys with type safety.
|
|
@@ -17,8 +17,11 @@ export type ReturnParseCliArgs = {
|
|
|
17
17
|
hostname?: string;
|
|
18
18
|
reactFastRefresh?: boolean;
|
|
19
19
|
};
|
|
20
|
+
export type ParseCliArgsOptions = {
|
|
21
|
+
embeddedRuntime?: boolean;
|
|
22
|
+
};
|
|
20
23
|
/**
|
|
21
24
|
* Parses command line arguments for the server.
|
|
22
25
|
* It returns {@link ReturnParseCliArgs}
|
|
23
26
|
*/
|
|
24
|
-
export declare function parseCliArgs(): ReturnParseCliArgs;
|
|
27
|
+
export declare function parseCliArgs(options?: ParseCliArgsOptions): ReturnParseCliArgs;
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { parseArgs } from "node:util";
|
|
2
2
|
import { getRuntimeArgv } from "./runtime.js";
|
|
3
|
+
function getEmbeddedRuntimeCommandOptions() {
|
|
4
|
+
const isDevelopment = process.env.NODE_ENV === "development";
|
|
5
|
+
return {
|
|
6
|
+
preview: false,
|
|
7
|
+
build: false,
|
|
8
|
+
start: !isDevelopment,
|
|
9
|
+
dev: isDevelopment,
|
|
10
|
+
port: void 0,
|
|
11
|
+
hostname: void 0,
|
|
12
|
+
reactFastRefresh: void 0
|
|
13
|
+
};
|
|
14
|
+
}
|
|
3
15
|
const ECOPAGES_BIN_FILES = ["ecopages.ts", "ecopages.js", "cli.js"];
|
|
4
16
|
const ECOPAGES_AVAILABLE_COMMANDS = ["dev", "build", "start", "preview"];
|
|
5
|
-
function parseCliArgs() {
|
|
17
|
+
function parseCliArgs(options = {}) {
|
|
18
|
+
if (options.embeddedRuntime || process.env.ECOPAGES_INTERNAL_EMBEDDED_RUNTIME === "true") {
|
|
19
|
+
return getEmbeddedRuntimeCommandOptions();
|
|
20
|
+
}
|
|
6
21
|
const runtimeArgv = getRuntimeArgv();
|
|
7
22
|
const { values } = parseArgs({
|
|
8
23
|
args: runtimeArgv,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { DEFAULT_ECOPAGES_WORK_DIR } from "../constants.js";
|
|
2
|
+
import { DEFAULT_ECOPAGES_WORK_DIR } from "../config/constants.js";
|
|
3
3
|
function isInsideNodeModules(directory) {
|
|
4
4
|
return path.normalize(directory).split(path.sep).includes("node_modules");
|
|
5
5
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { type FSWatcher } from 'chokidar';
|
|
2
|
-
import type { EcoPagesAppConfig, IHmrManager, IClientBridge } from '../internal-types.js';
|
|
2
|
+
import type { EcoPagesAppConfig, IHmrManager, IClientBridge } from '../types/internal-types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration options for the ProjectWatcher
|
|
5
5
|
* @interface ProjectWatcherConfig
|
|
6
6
|
* @property {EcoPagesAppConfig} config - The application configuration
|
|
7
|
-
* @property {() => void} refreshRouterRoutesCallback - Callback to refresh router routes
|
|
7
|
+
* @property {() => Promise<void>} refreshRouterRoutesCallback - Callback to refresh router routes
|
|
8
8
|
* @property {IHmrManager} hmrManager - The HMR manager instance
|
|
9
9
|
* @property {ClientBridge} bridge - The client bridge instance
|
|
10
10
|
*/
|
|
11
11
|
export interface ProjectWatcherConfig {
|
|
12
12
|
config: EcoPagesAppConfig;
|
|
13
|
-
refreshRouterRoutesCallback: () => void
|
|
13
|
+
refreshRouterRoutesCallback: () => Promise<void>;
|
|
14
14
|
hmrManager: IHmrManager;
|
|
15
15
|
bridge: IClientBridge;
|
|
16
16
|
}
|
|
@@ -112,7 +112,7 @@ export declare class ProjectWatcher {
|
|
|
112
112
|
*
|
|
113
113
|
* @param {string} path - Path of the changed directory
|
|
114
114
|
*/
|
|
115
|
-
triggerRouterRefresh(changedPath: string): void
|
|
115
|
+
triggerRouterRefresh(changedPath: string): Promise<void>;
|
|
116
116
|
/**
|
|
117
117
|
* Handles and logs errors that occur during file watching.
|
|
118
118
|
*
|