@ecopages/core 0.2.0-alpha.2 → 0.2.0-alpha.20
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 +26 -64
- package/README.md +212 -14
- package/package.json +116 -66
- package/src/adapters/README.md +39 -0
- 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 +80 -21
- package/src/adapters/bun/hmr-manager.js +168 -62
- package/src/adapters/bun/index.d.ts +2 -3
- package/src/adapters/bun/index.js +3 -3
- package/src/adapters/bun/server-adapter.d.ts +5 -5
- package/src/adapters/bun/server-adapter.js +40 -34
- package/src/adapters/bun/server-lifecycle.d.ts +28 -17
- package/src/adapters/bun/server-lifecycle.js +34 -62
- 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 +2 -6
- package/src/adapters/index.js +2 -8
- 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 +89 -18
- package/src/adapters/node/node-hmr-manager.js +185 -95
- package/src/adapters/node/server-adapter.d.ts +6 -35
- package/src/adapters/node/server-adapter.js +44 -105
- package/src/adapters/node/static-content-server.d.ts +37 -1
- package/src/adapters/node/static-content-server.js +29 -1
- package/src/adapters/shared/application-adapter.d.ts +1 -1
- package/src/{define-api-handler.d.ts → 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/explicit-static-route-matcher.js +4 -1
- package/src/adapters/shared/file-route-middleware-pipeline.d.ts +1 -1
- package/src/adapters/shared/file-route-middleware-pipeline.js +1 -0
- 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 +8 -12
- package/src/adapters/shared/fs-server-response-matcher.js +10 -18
- package/src/adapters/shared/hmr-entrypoint-registrar.d.ts +55 -0
- package/src/adapters/shared/hmr-entrypoint-registrar.js +87 -0
- package/src/adapters/shared/hmr-html-response.d.ts +22 -0
- package/src/adapters/shared/hmr-html-response.js +32 -0
- package/src/adapters/shared/render-context.d.ts +2 -1
- package/src/adapters/shared/render-context.js +6 -3
- package/src/adapters/shared/runtime-bootstrap.d.ts +38 -0
- package/src/adapters/shared/runtime-bootstrap.js +43 -0
- package/src/adapters/shared/server-adapter.d.ts +13 -3
- package/src/adapters/shared/server-adapter.js +42 -5
- package/src/adapters/shared/server-route-handler.d.ts +4 -4
- package/src/adapters/shared/server-route-handler.js +6 -15
- package/src/adapters/shared/server-static-builder.d.ts +38 -6
- package/src/adapters/shared/server-static-builder.js +64 -10
- package/src/build/README.md +107 -0
- package/src/build/build-adapter.d.ts +168 -3
- package/src/build/build-adapter.js +604 -16
- package/src/build/build-manifest.d.ts +27 -0
- package/src/build/build-manifest.js +30 -0
- package/src/build/dev-build-coordinator.d.ts +72 -0
- package/src/build/dev-build-coordinator.js +154 -0
- package/src/build/esbuild-build-adapter.d.ts +15 -6
- package/src/build/esbuild-build-adapter.js +189 -74
- package/src/build/runtime-build-executor.d.ts +14 -0
- package/src/build/runtime-build-executor.js +22 -0
- package/src/build/runtime-specifier-alias-plugin.d.ts +15 -0
- package/src/build/runtime-specifier-alias-plugin.js +35 -0
- package/src/build/runtime-specifier-aliases.d.ts +5 -0
- package/src/build/runtime-specifier-aliases.js +95 -0
- package/src/config/README.md +36 -0
- package/src/config/config-builder.d.ts +52 -27
- package/src/config/config-builder.js +260 -49
- package/src/{constants.d.ts → config/constants.d.ts} +13 -0
- package/src/{constants.js → config/constants.js} +4 -0
- package/src/declarations.d.ts +19 -14
- package/src/dev/sc-server.d.ts +1 -1
- package/src/dev/sc-server.js +1 -1
- package/src/eco/README.md +70 -16
- package/src/eco/eco.browser.d.ts +2 -0
- package/src/eco/eco.browser.js +83 -0
- package/src/eco/eco.js +32 -57
- package/src/eco/eco.types.d.ts +12 -4
- 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/README.md +26 -0
- package/src/hmr/client/hmr-runtime.d.ts +1 -6
- package/src/hmr/client/hmr-runtime.js +30 -7
- package/src/hmr/hmr-strategy.d.ts +16 -13
- package/src/hmr/hmr-strategy.js +22 -7
- package/src/hmr/hmr.postcss.test.e2e.d.ts +1 -0
- package/src/hmr/hmr.postcss.test.e2e.js +31 -0
- package/src/hmr/hmr.test.e2e.js +26 -33
- 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 +46 -43
- package/src/hmr/strategies/js-hmr-strategy.js +72 -73
- package/src/index.browser.d.ts +2 -2
- package/src/index.browser.js +1 -1
- package/src/index.d.ts +4 -3
- package/src/index.js +16 -5
- package/src/integrations/ghtml/ghtml-renderer.d.ts +7 -2
- package/src/integrations/ghtml/ghtml-renderer.js +33 -30
- package/src/integrations/ghtml/ghtml.constants.d.ts +1 -0
- package/src/integrations/ghtml/ghtml.constants.js +4 -0
- package/src/integrations/ghtml/ghtml.plugin.d.ts +2 -6
- package/src/integrations/ghtml/ghtml.plugin.js +3 -4
- package/src/plugins/README.md +35 -0
- package/src/plugins/alias-resolver-plugin.js +17 -3
- package/src/plugins/eco-component-meta-plugin.d.ts +14 -1
- package/src/plugins/eco-component-meta-plugin.js +27 -21
- 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 +145 -28
- package/src/plugins/integration-plugin.js +109 -13
- package/src/plugins/processor.d.ts +15 -2
- package/src/plugins/processor.js +16 -2
- package/src/plugins/runtime-capability.d.ts +9 -0
- package/src/plugins/source-transform.d.ts +46 -0
- package/src/plugins/source-transform.js +71 -0
- package/src/route-renderer/GRAPH.md +64 -98
- package/src/route-renderer/README.md +67 -46
- package/src/route-renderer/orchestration/boundary-planning.service.d.ts +25 -0
- package/src/route-renderer/orchestration/boundary-planning.service.js +97 -0
- 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 +554 -0
- package/src/route-renderer/orchestration/integration-renderer.js +957 -0
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.d.ts +89 -0
- package/src/route-renderer/orchestration/queued-boundary-runtime.service.js +155 -0
- package/src/route-renderer/orchestration/render-execution.service.d.ts +43 -0
- package/src/route-renderer/orchestration/render-execution.service.js +106 -0
- 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/{render-preparation.service.d.ts → orchestration/render-preparation.service.d.ts} +18 -10
- package/src/route-renderer/{render-preparation.service.js → orchestration/render-preparation.service.js} +115 -17
- package/src/route-renderer/orchestration/route-shell-composer.service.d.ts +50 -0
- package/src/route-renderer/orchestration/route-shell-composer.service.js +81 -0
- package/src/route-renderer/orchestration/template-serialization.d.ts +38 -0
- package/src/route-renderer/orchestration/template-serialization.js +45 -0
- package/src/route-renderer/{dependency-resolver.d.ts → page-loading/dependency-resolver.d.ts} +15 -4
- package/src/route-renderer/{dependency-resolver.js → page-loading/dependency-resolver.js} +28 -12
- package/src/route-renderer/page-loading/page-module-loader.d.ts +90 -0
- package/src/route-renderer/{page-module-loader.js → page-loading/page-module-loader.js} +39 -14
- package/src/route-renderer/route-renderer.d.ts +45 -4
- package/src/route-renderer/route-renderer.js +38 -3
- package/src/router/README.md +97 -0
- package/src/router/client/link-intent.d.ts +53 -0
- package/src/router/client/link-intent.js +34 -0
- package/src/router/client/link-intent.test.browser.d.ts +1 -0
- package/src/router/client/link-intent.test.browser.js +43 -0
- package/src/router/client/navigation-coordinator.d.ts +149 -0
- package/src/router/client/navigation-coordinator.js +215 -0
- package/src/router/{fs-router-scanner.d.ts → server/fs-router-scanner.d.ts} +3 -3
- package/src/router/{fs-router-scanner.js → server/fs-router-scanner.js} +14 -8
- package/src/router/{fs-router.d.ts → server/fs-router.d.ts} +1 -1
- package/src/router/{fs-router.js → server/fs-router.js} +1 -1
- package/src/services/README.md +29 -0
- package/src/services/assets/asset-processing-service/asset-processing.service.d.ts +120 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset-processing.service.js +91 -10
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.d.ts +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/asset.factory.js +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.d.ts +2 -1
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.d.ts +55 -0
- package/src/services/assets/asset-processing-service/browser-runtime-asset.factory.js +48 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.d.ts +20 -0
- package/src/services/assets/asset-processing-service/browser-runtime-entry.factory.js +41 -0
- package/src/services/assets/asset-processing-service/index.d.ts +5 -0
- package/src/services/assets/asset-processing-service/index.js +5 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.d.ts +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-processor.js +9 -4
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.d.ts +5 -4
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/base/base-script-processor.js +15 -23
- package/src/services/assets/asset-processing-service/processors/index.d.ts +5 -0
- package/src/services/assets/asset-processing-service/processors/index.js +5 -0
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/content-script.processor.js +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.d.ts +4 -3
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/file-script.processor.js +16 -4
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.d.ts +3 -3
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/script/node-module-script.processor.js +6 -5
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/content-stylesheet.processor.js +1 -1
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.d.ts +2 -2
- package/src/services/{asset-processing-service → assets/asset-processing-service}/processors/stylesheet/file-stylesheet.processor.js +5 -2
- package/src/services/assets/browser-bundle.service.d.ts +32 -0
- package/src/services/assets/browser-bundle.service.js +33 -0
- package/src/services/{page-request-cache-coordinator.service.d.ts → cache/page-request-cache-coordinator.service.d.ts} +2 -2
- package/src/services/{page-request-cache-coordinator.service.js → cache/page-request-cache-coordinator.service.js} +3 -1
- package/src/services/html/html-rewriter-provider.service.d.ts +37 -0
- package/src/services/html/html-rewriter-provider.service.js +68 -0
- package/src/services/html/html-transformer.service.d.ts +77 -0
- package/src/services/html/html-transformer.service.js +215 -0
- package/src/services/invalidation/development-invalidation.service.d.ts +74 -0
- package/src/services/invalidation/development-invalidation.service.js +190 -0
- package/src/services/module-loading/app-module-loader.service.d.ts +28 -0
- package/src/services/module-loading/app-module-loader.service.js +35 -0
- package/src/services/module-loading/app-server-module-transpiler.service.d.ts +24 -0
- package/src/services/module-loading/app-server-module-transpiler.service.js +109 -0
- package/src/services/module-loading/host-module-loader-registry.d.ts +4 -0
- package/src/services/module-loading/host-module-loader-registry.js +15 -0
- package/src/services/module-loading/module-loading-types.d.ts +2 -0
- package/src/services/module-loading/node-bootstrap-plugin.d.ts +42 -0
- package/src/services/module-loading/node-bootstrap-plugin.js +204 -0
- package/src/services/module-loading/page-module-import.service.d.ts +76 -0
- package/src/services/module-loading/page-module-import.service.js +173 -0
- package/src/services/module-loading/server-module-transpiler.service.d.ts +72 -0
- package/src/services/module-loading/server-module-transpiler.service.js +64 -0
- package/src/services/runtime-state/dev-graph.service.d.ts +118 -0
- package/src/services/runtime-state/dev-graph.service.js +162 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.d.ts +41 -0
- package/src/services/runtime-state/entrypoint-dependency-graph.service.js +85 -0
- package/src/services/runtime-state/runtime-specifier-registry.service.d.ts +69 -0
- package/src/services/runtime-state/runtime-specifier-registry.service.js +37 -0
- package/src/services/runtime-state/server-invalidation-state.service.d.ts +26 -0
- package/src/services/runtime-state/server-invalidation-state.service.js +35 -0
- package/src/services/{schema-validation-service.d.ts → validation/schema-validation-service.d.ts} +1 -1
- package/src/static-site-generator/README.md +26 -0
- package/src/static-site-generator/static-site-generator.d.ts +50 -3
- package/src/static-site-generator/static-site-generator.js +71 -5
- package/src/{internal-types.d.ts → types/internal-types.d.ts} +53 -22
- package/src/types/internal-types.js +0 -0
- package/src/{public-types.d.ts → types/public-types.d.ts} +146 -21
- 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.d.ts +11 -0
- package/src/utils/resolve-work-dir.js +31 -0
- package/src/watchers/project-watcher.d.ts +40 -24
- package/src/watchers/project-watcher.js +129 -92
- package/src/watchers/project-watcher.test-helpers.d.ts +2 -2
- package/src/watchers/project-watcher.test-helpers.js +1 -0
- 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/define-api-handler.d.ts +0 -61
- package/src/adapters/bun/define-api-handler.ts +0 -114
- package/src/adapters/bun/hmr-manager.ts +0 -281
- package/src/adapters/bun/index.ts +0 -3
- package/src/adapters/bun/server-adapter.ts +0 -492
- package/src/adapters/bun/server-lifecycle.ts +0 -154
- package/src/adapters/index.ts +0 -6
- package/src/adapters/node/create-app.ts +0 -179
- package/src/adapters/node/index.d.ts +0 -4
- package/src/adapters/node/index.js +0 -8
- package/src/adapters/node/index.ts +0 -9
- package/src/adapters/node/node-client-bridge.ts +0 -79
- package/src/adapters/node/node-hmr-manager.ts +0 -271
- package/src/adapters/node/server-adapter.ts +0 -561
- package/src/adapters/node/static-content-server.ts +0 -203
- package/src/adapters/shared/api-response.ts +0 -104
- package/src/adapters/shared/application-adapter.ts +0 -199
- package/src/adapters/shared/explicit-static-route-matcher.ts +0 -134
- package/src/adapters/shared/file-route-middleware-pipeline.ts +0 -123
- package/src/adapters/shared/fs-server-response-factory.ts +0 -118
- package/src/adapters/shared/fs-server-response-matcher.ts +0 -198
- package/src/adapters/shared/render-context.ts +0 -105
- package/src/adapters/shared/server-adapter.ts +0 -442
- package/src/adapters/shared/server-route-handler.ts +0 -166
- package/src/adapters/shared/server-static-builder.ts +0 -82
- package/src/build/build-adapter.ts +0 -132
- package/src/build/build-types.ts +0 -83
- package/src/build/esbuild-build-adapter.ts +0 -510
- package/src/config/config-builder.ts +0 -474
- package/src/constants.ts +0 -39
- package/src/create-app.ts +0 -87
- package/src/define-api-handler.js +0 -15
- package/src/define-api-handler.ts +0 -66
- 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 -77
- package/src/eco/component-render-context.ts +0 -202
- package/src/eco/eco.ts +0 -221
- package/src/eco/eco.types.ts +0 -202
- 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/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-have-HMR-script-injected-in-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-HMR-Server-Integration-should-load-fixture-app-page-1.png +0 -0
- package/src/hmr/client/__screenshots__/hmr-runtime.test.browser.ts/HMR-Runtime-WebSocket-Connection-should-connect-to-correct-HMR-endpoint-1.png +0 -0
- package/src/hmr/client/hmr-runtime.ts +0 -121
- package/src/hmr/hmr-strategy.ts +0 -172
- package/src/hmr/hmr.test.e2e.ts +0 -75
- package/src/hmr/strategies/default-hmr-strategy.ts +0 -60
- package/src/hmr/strategies/js-hmr-strategy.ts +0 -308
- package/src/index.browser.ts +0 -3
- package/src/index.ts +0 -5
- package/src/integrations/ghtml/ghtml-renderer.ts +0 -93
- package/src/integrations/ghtml/ghtml.plugin.ts +0 -32
- package/src/internal-types.ts +0 -212
- package/src/plugins/alias-resolver-plugin.ts +0 -45
- package/src/plugins/eco-component-meta-plugin.ts +0 -474
- package/src/plugins/integration-plugin.ts +0 -184
- package/src/plugins/processor.ts +0 -220
- package/src/public-types.ts +0 -1255
- package/src/route-renderer/component-graph-executor.d.ts +0 -32
- package/src/route-renderer/component-graph-executor.js +0 -31
- package/src/route-renderer/component-graph-executor.ts +0 -84
- package/src/route-renderer/component-graph.d.ts +0 -42
- package/src/route-renderer/component-graph.js +0 -72
- package/src/route-renderer/component-graph.ts +0 -159
- package/src/route-renderer/component-marker.d.ts +0 -52
- package/src/route-renderer/component-marker.js +0 -46
- package/src/route-renderer/component-marker.ts +0 -117
- package/src/route-renderer/dependency-resolver.ts +0 -596
- package/src/route-renderer/html-post-processing.service.d.ts +0 -40
- package/src/route-renderer/html-post-processing.service.js +0 -86
- package/src/route-renderer/html-post-processing.service.ts +0 -103
- package/src/route-renderer/integration-renderer.d.ts +0 -339
- package/src/route-renderer/integration-renderer.js +0 -526
- package/src/route-renderer/integration-renderer.ts +0 -696
- package/src/route-renderer/marker-graph-resolver.d.ts +0 -76
- package/src/route-renderer/marker-graph-resolver.js +0 -93
- package/src/route-renderer/marker-graph-resolver.ts +0 -153
- package/src/route-renderer/page-module-loader.d.ts +0 -61
- package/src/route-renderer/page-module-loader.ts +0 -153
- package/src/route-renderer/render-execution.service.d.ts +0 -69
- package/src/route-renderer/render-execution.service.js +0 -91
- package/src/route-renderer/render-execution.service.ts +0 -158
- package/src/route-renderer/render-preparation.service.ts +0 -358
- package/src/route-renderer/route-renderer.ts +0 -80
- package/src/router/fs-router-scanner.ts +0 -217
- package/src/router/fs-router.ts +0 -122
- package/src/services/asset-processing-service/asset-processing.service.d.ts +0 -41
- package/src/services/asset-processing-service/asset-processing.service.ts +0 -306
- package/src/services/asset-processing-service/asset.factory.ts +0 -105
- package/src/services/asset-processing-service/assets.types.ts +0 -112
- package/src/services/asset-processing-service/index.d.ts +0 -3
- package/src/services/asset-processing-service/index.js +0 -3
- package/src/services/asset-processing-service/index.ts +0 -3
- package/src/services/asset-processing-service/processor.interface.ts +0 -27
- package/src/services/asset-processing-service/processor.registry.ts +0 -18
- package/src/services/asset-processing-service/processors/base/base-processor.ts +0 -76
- package/src/services/asset-processing-service/processors/base/base-script-processor.ts +0 -105
- package/src/services/asset-processing-service/processors/index.d.ts +0 -5
- package/src/services/asset-processing-service/processors/index.js +0 -5
- package/src/services/asset-processing-service/processors/index.ts +0 -5
- package/src/services/asset-processing-service/processors/script/content-script.processor.ts +0 -66
- package/src/services/asset-processing-service/processors/script/file-script.processor.ts +0 -88
- package/src/services/asset-processing-service/processors/script/node-module-script.processor.ts +0 -84
- package/src/services/asset-processing-service/processors/stylesheet/content-stylesheet.processor.ts +0 -27
- package/src/services/asset-processing-service/processors/stylesheet/file-stylesheet.processor.ts +0 -77
- 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/html-transformer.service.d.ts +0 -50
- package/src/services/html-transformer.service.js +0 -163
- package/src/services/html-transformer.service.ts +0 -217
- package/src/services/page-module-import.service.d.ts +0 -37
- package/src/services/page-module-import.service.js +0 -88
- package/src/services/page-module-import.service.ts +0 -129
- package/src/services/page-request-cache-coordinator.service.ts +0 -128
- package/src/services/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 -359
- 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/runtime.ts +0 -44
- package/src/utils/server-utils.module.ts +0 -67
- package/src/watchers/project-watcher.test-helpers.ts +0 -40
- package/src/watchers/project-watcher.ts +0 -306
- /package/src/adapters/{bun → shared}/define-api-handler.js +0 -0
- /package/src/{internal-types.js → plugins/runtime-capability.js} +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/assets.types.js +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.interface.js +0 -0
- /package/src/services/{asset-processing-service → assets/asset-processing-service}/processor.registry.js +0 -0
- /package/src/{public-types.js → services/module-loading/module-loading-types.js} +0 -0
- /package/src/services/{schema-validation-service.js → validation/schema-validation-service.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -8,82 +8,44 @@ All notable changes to `@ecopages/core` are documented here.
|
|
|
8
8
|
|
|
9
9
|
### Features
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **Node server adapter** — Full HTTP server adapter for Node.js via `packages/core/src/adapters/node/`, including request bridging, route handling, static content serving, and graceful shutdown.
|
|
14
|
-
- **Node static build pipeline** — Static-site build and preview server for Node.js runtime (`ab22f167`, `a47b4da3`, `435dc250`).
|
|
15
|
-
- **Node API handler pipeline** — `define-api-handler` now works cross-runtime; Node adapter wires API handler execution end-to-end (`73e57d87`, `f46aa528`).
|
|
16
|
-
- **Node client bridge** — `NodeClientBridge` with SSE-based HMR stream and heartbeat mechanism for connection health (`3361445f`).
|
|
17
|
-
- **Node HMR manager** — `NodeHmrManager` that mirrors Bun HMR capabilities on the Node runtime.
|
|
18
|
-
- **`createApp` universal factory** — Top-level `createApp` export that selects the correct adapter (Bun or Node) at runtime (`ce691bdf`, `2f1b1109`).
|
|
19
|
-
|
|
20
|
-
#### Build System
|
|
21
|
-
|
|
22
|
-
- **`EsbuildBuildAdapter`** — A new build backend backed by esbuild, replacing the Bun-only transpilation path. Includes module resolution routing, plugin registration, and transpilation defaults (`f503e86e`, `94c37d38`, `e4e124a1`).
|
|
23
|
-
- **Build dependency graph** — `BuildDependencyGraph` interface for tracking entrypoints and their asset dependencies, enabling more accurate HMR invalidation (`e7653c9b`).
|
|
24
|
-
- **Build adapter abstraction** — `build-adapter.ts` and `build-types.ts` decouple build and plugin contracts from Bun-specific types (`11b03bcc`).
|
|
25
|
-
|
|
26
|
-
#### Rendering & Orchestration
|
|
27
|
-
|
|
28
|
-
- **Boundary rendering policy** — Cross-integration component boundaries are now explicitly enforced (`ec1e4d66`).
|
|
29
|
-
- **Full orchestration mode** — Legacy rendering mode branches removed; the engine always runs in unified orchestration mode (`f652fa0a`).
|
|
30
|
-
- **Extracted render services** — The render pipeline is decomposed into focused services:
|
|
31
|
-
- `RenderExecutionService`
|
|
32
|
-
- `HtmlPostProcessingService`
|
|
33
|
-
- `RenderPreparationService`
|
|
34
|
-
- `MarkerGraphResolver`
|
|
35
|
-
- `FileRouteMiddlewarePipeline`
|
|
36
|
-
- `PageRequestCacheCoordinator`
|
|
37
|
-
- `PageModuleImportService`
|
|
38
|
-
- **Component render context** — New `ComponentRenderContext` consolidates component-level state during rendering (`eco/component-render-context.ts`).
|
|
39
|
-
- **Worker-tools HTML rewriter fallback** — `html-transformer` adopts `@worker-tools/html-rewriter` as a fallback for non-Bun environments (`54056d4f`).
|
|
40
|
-
|
|
41
|
-
#### Dependency & Injection
|
|
42
|
-
|
|
43
|
-
- **Global injector map** — `GlobalInjectorMap` and `LazyInjectorMap` provide structured, testable dependency injection for global and lazy assets (`c3a25072`).
|
|
44
|
-
- **Lazy dependency resolution** — SSR lazy script resolution now uses dedicated utility functions for dependency entry attributes and content generation (`71ce2f4f`).
|
|
45
|
-
- **Dependency entry type refactor** — Unified types for script and stylesheet dependency entries, with improved error messages (`1e02dba6`).
|
|
46
|
-
- **Module dependencies** — New `module-dependencies.ts` tracks explicit module-level asset relationships.
|
|
47
|
-
- **Eco utils extraction** — Shared utilities moved to `eco.utils.ts` to remove runtime metadata fallbacks (`bdc60d50`).
|
|
48
|
-
|
|
49
|
-
#### API Handlers
|
|
50
|
-
|
|
51
|
-
- **Unified typed API handler context** — `defineApiHandler` now exposes a fully typed, runtime-agnostic context object. The Bun-specific adapter is slimmed down to a thin wrapper (`2f1b1109`, `08e194b4`).
|
|
52
|
-
- **Portable root runtime API** — Core exposes a portable API surface that avoids runtime escape hatches (`ce691bdf`, `1ec42c02`).
|
|
11
|
+
- Added app-owned runtime and build ownership around `createApp()`, host module loading, the browser-safe `eco` export, `eco.html()`, `eco.layout()`, and the published `EcoPagesAppConfig` surface.
|
|
12
|
+
- Added boundary-plan metadata and a compatibility `renderBoundary()` payload contract for mixed-renderer orchestration.
|
|
53
13
|
|
|
54
14
|
### Refactoring
|
|
55
15
|
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
16
|
+
- Consolidated runtime state around shared module-loading services, app-owned build execution, and the universal `createApp()` boundary.
|
|
17
|
+
- Simplified route-renderer orchestration around renderer-owned boundary runtimes, shared string-boundary queue helpers, and a smaller component render context.
|
|
18
|
+
- Centralized shared integration renderer bootstrapping so package integrations only append renderer-specific config instead of duplicating core lifecycle wiring.
|
|
19
|
+
- Moved shared queued boundary resolution to attachment-policy payloads and constructor-injectable planning services.
|
|
20
|
+
- Extracted shared page, layout, and document-shell composition into a narrow `RouteShellComposer` while keeping renderer-owned boundary handoff in `IntegrationRenderer`.
|
|
21
|
+
- Removed marker-era compatibility capture, the shared route-level fallback resolver, deprecated `@ecopages/core/node*` escape hatches, and other dead route-renderer internals.
|
|
62
22
|
|
|
63
23
|
### Bug Fixes
|
|
64
24
|
|
|
65
|
-
- Fixed
|
|
66
|
-
- Fixed
|
|
67
|
-
-
|
|
25
|
+
- Fixed mixed-integration page, layout, document, and component rendering to resolve foreign boundaries inside their owning renderer across the built-in integrations.
|
|
26
|
+
- Fixed host/runtime module loading, published build-helper exports, asset output normalization, explicit render flows, and static or preview build stability across Bun, Node, Vite, and Nitro.
|
|
27
|
+
- Fixed development project watcher setup to register chokidar paths and handlers only once per app runtime.
|
|
28
|
+
- Fixed development script-entry registration to build only the requested HMR entrypoint instead of fanning out across all watched script entrypoints during startup.
|
|
29
|
+
- Fixed Node bootstrap runtime package linking to refresh dangling `.eco/node_modules` symlinks instead of failing with `EEXIST` during page transpilation.
|
|
30
|
+
- Fixed request-time and static-generation page inspection to preserve integration-specific page loading without reusing the normal render module identity.
|
|
31
|
+
- Fixed Node preview and static-generation React runtime resolution so app-owned page modules and server rendering share one React module identity.
|
|
32
|
+
- Fixed Bun browser output normalization so batched multi-entrypoint HMR rebuilds match emitted files to their expected served paths instead of Bun output order.
|
|
33
|
+
- Fixed render-preparation graph traversal so sparse component dependency arrays do not break custom 404 rendering or file-system response fallback flows.
|
|
68
34
|
|
|
69
|
-
###
|
|
35
|
+
### Documentation
|
|
70
36
|
|
|
71
|
-
- Added
|
|
72
|
-
- Strengthened HTML transformer mode matrix coverage (`286c1253`).
|
|
73
|
-
- Aligned integration and dependency processing tests to new orchestration model (`7cc73316`).
|
|
74
|
-
- Added `EsbuildBuildAdapter` test suite with 500+ lines (`build-adapter.test.ts`).
|
|
75
|
-
- Added `file-route-middleware-pipeline` tests.
|
|
37
|
+
- Added architecture and API documentation for config, plugins, services, adapters, HMR, routing, and rendering.
|
|
76
38
|
|
|
77
|
-
###
|
|
39
|
+
### Tests
|
|
78
40
|
|
|
79
|
-
-
|
|
80
|
-
-
|
|
41
|
+
- Added regression coverage for app-owned runtime services, Node fallback paths, and cross-runtime invalidation behavior.
|
|
42
|
+
- Strengthened the core ghtml integration tests so route and explicit render paths await real outcomes and cover `renderToResponse` behavior.
|
|
43
|
+
- Added core regression coverage for boundary plans, payload contracts, and typed mixed-boundary context flow.
|
|
81
44
|
|
|
82
45
|
---
|
|
83
46
|
|
|
84
47
|
## Migration Notes
|
|
85
48
|
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
- The old explicit `renderingMode` config option has been removed — full orchestration is always active.
|
|
49
|
+
- `createApp` is now the recommended entrypoint. Import it from `@ecopages/core/create-app`.
|
|
50
|
+
- `defineApiHandler` keeps the same call shape, but the handler context is now explicitly runtime-agnostic.
|
|
51
|
+
- The old explicit `renderingMode` config option has been removed and full orchestration is always active.
|
package/README.md
CHANGED
|
@@ -1,32 +1,230 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @ecopages/core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The foundational engine for the Ecopages framework. It provides the core build pipeline, development server, routing, and plugin architecture required to run an Ecopages application.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Overview
|
|
6
6
|
|
|
7
|
-
Ecopages
|
|
7
|
+
Ecopages is an extensible static site generator (SSG) built around a Bun-first core with Node fallback support and Vite-hosted compatibility for advanced dev and build orchestration. It embraces a strictly MPA (Multi-Page Application) architecture by default, rendering HTML at build-time or request-time, and hydrating interactive islands only where necessary.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
- **Runtime Boundary**: `createApp()` prefers Bun when available and falls back to Node otherwise. Vite and Nitro still own host-side dev and build orchestration.
|
|
10
|
+
- **Build Ownership**: Bun-native execution keeps a core-owned build path. Vite and Nitro own host-side transforms, module graph behavior, and deployment-oriented builds.
|
|
11
|
+
- **Framework agnostic**: First-class support for KitaJS, Lit, React, and MDX via official integration plugins.
|
|
12
|
+
- **Extensible**: Hook into the build process with custom processors or rendering integrations.
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
## Current Architecture
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
The current core package is organized around app-owned runtime state and explicit service boundaries.
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
The important ownership rules are:
|
|
19
|
+
|
|
20
|
+
- `ConfigBuilder.build()` finalizes app-owned build and runtime services.
|
|
21
|
+
- browser bundling and server module loading are explicit, separate paths.
|
|
22
|
+
- runtime hosts stay thin and delegate framework work into core services.
|
|
23
|
+
- HMR and invalidation use shared graph-aware services instead of runtime-specific ad hoc wiring.
|
|
24
|
+
|
|
25
|
+
### Bootstrap And Runtime Ownership
|
|
26
|
+
|
|
27
|
+
```mermaid
|
|
28
|
+
flowchart TD
|
|
29
|
+
A[eco.config.ts] --> B[ConfigBuilder.build]
|
|
30
|
+
B --> C[App build adapter]
|
|
31
|
+
B --> D[App build manifest]
|
|
32
|
+
B --> E[Build executor]
|
|
33
|
+
B --> F[Dev graph service]
|
|
34
|
+
B --> G[Runtime specifier registry]
|
|
35
|
+
B --> H[Host module loader boundary]
|
|
36
|
+
H --> I[PageModuleImportService]
|
|
37
|
+
E --> I
|
|
38
|
+
E --> J[BrowserBundleService]
|
|
39
|
+
I --> K[Runtime app adapter]
|
|
40
|
+
K --> L[Bun adapter or Node adapter]
|
|
41
|
+
D --> J
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Development Invalidation And HMR Flow
|
|
45
|
+
|
|
46
|
+
```mermaid
|
|
47
|
+
flowchart TD
|
|
48
|
+
A[File change] --> B[ProjectWatcher]
|
|
49
|
+
B --> C[DevelopmentInvalidationService]
|
|
50
|
+
C --> D{Change kind}
|
|
51
|
+
D -->|Route or server source| E[Invalidate server modules]
|
|
52
|
+
D -->|Public or include| F[Reload browser]
|
|
53
|
+
D -->|Processor-owned asset| G[Notify processor only]
|
|
54
|
+
D -->|HMR-eligible source| H[Core HMR manager]
|
|
55
|
+
H --> I[Strategy selection]
|
|
56
|
+
I --> J[Core JsHmrStrategy]
|
|
57
|
+
I --> K[Integration strategy e.g. ReactHmrStrategy]
|
|
58
|
+
J --> L[BrowserBundleService]
|
|
59
|
+
K --> L
|
|
60
|
+
K --> M[importServerModule]
|
|
61
|
+
M --> N[ServerModuleTranspiler]
|
|
62
|
+
L --> O[Updated browser bundle]
|
|
63
|
+
O --> P[Client bridge broadcast]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The manager/orchestration layer is core-owned, but framework-specific strategies such as React HMR are contributed by integrations and registered with the shared HMR manager.
|
|
67
|
+
|
|
68
|
+
### Practical Summary
|
|
69
|
+
|
|
70
|
+
- `ConfigBuilder` now seeds one app-owned build ownership path, adapter, manifest, executor, dev graph, and runtime registry.
|
|
71
|
+
- `BrowserBundleService` is the shared browser build seam used by HMR and asset-oriented browser output paths.
|
|
72
|
+
- `ServerModuleTranspiler` is the shared server-side source loading seam used by runtime bootstrap and HMR metadata loading.
|
|
73
|
+
- `createApp()` stays the universal runtime entrypoint, while Vite and Nitro hosts own their advanced dev and build workflows.
|
|
74
|
+
- esbuild remains only as a temporary Bun-path implementation detail and is not a strategic core dependency.
|
|
75
|
+
|
|
76
|
+
## Documentation Map
|
|
77
|
+
|
|
78
|
+
Use this package README as the top-level map, then drill into the focused subsystem READMEs:
|
|
79
|
+
|
|
80
|
+
- `src/config/README.md`: config finalization and app-owned runtime/build state
|
|
81
|
+
- `src/plugins/README.md`: integration and processor authoring contracts
|
|
82
|
+
- `src/build/README.md`: build adapter, executor, and development build coordination
|
|
83
|
+
- `src/services/README.md`: cross-cutting runtime services and orchestration helpers
|
|
84
|
+
- `src/adapters/README.md`: Bun, Node, and shared adapter boundaries
|
|
85
|
+
- `src/hmr/README.md`: HMR strategy and update-layer ownership
|
|
86
|
+
- `src/router/README.md`: route discovery, matching, and browser navigation coordination
|
|
87
|
+
- `src/route-renderer/README.md`: rendering orchestration and dependency resolution
|
|
88
|
+
- `src/static-site-generator/README.md`: static build execution path
|
|
89
|
+
- `src/eco/README.md`: `eco` authoring APIs for pages, layouts, and components
|
|
90
|
+
|
|
91
|
+
The intended reading order is:
|
|
92
|
+
|
|
93
|
+
1. this file for the big-picture architecture
|
|
94
|
+
2. `src/config/README.md` for config and lifecycle ownership
|
|
95
|
+
3. `src/plugins/README.md` and `src/build/README.md` for contribution contracts
|
|
96
|
+
4. `src/services/README.md` and `src/adapters/README.md` for runtime execution
|
|
97
|
+
5. `src/router/README.md` and `src/route-renderer/README.md` for request-time flow
|
|
98
|
+
|
|
99
|
+
## Installation
|
|
16
100
|
|
|
17
101
|
```bash
|
|
18
|
-
|
|
102
|
+
bun add @ecopages/core
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
_(You can also use `npm`, `yarn`, or `pnpm`)_
|
|
106
|
+
|
|
107
|
+
## Basic Usage
|
|
108
|
+
|
|
109
|
+
The Ecopages architecture revolves around an `eco.config.ts` file and an application entry point.
|
|
110
|
+
|
|
111
|
+
### 1. Configuration (`eco.config.ts`)
|
|
112
|
+
|
|
113
|
+
Configure your integratons, processors, and default metadata. Ecopages uses a builder pattern:
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import { ConfigBuilder } from '@ecopages/core/config-builder';
|
|
117
|
+
// import your desired plugins...
|
|
118
|
+
|
|
119
|
+
const config = await new ConfigBuilder()
|
|
120
|
+
.setRootDir(import.meta.dirname)
|
|
121
|
+
.setBaseUrl(import.meta.env.ECOPAGES_BASE_URL ?? 'http://localhost:3000')
|
|
122
|
+
.setDefaultMetadata({
|
|
123
|
+
title: 'My Ecopages Site',
|
|
124
|
+
description: 'Built with Ecopages',
|
|
125
|
+
})
|
|
126
|
+
// .setIntegrations([kitajsPlugin()])
|
|
127
|
+
.build();
|
|
128
|
+
|
|
129
|
+
export default config;
|
|
19
130
|
```
|
|
20
131
|
|
|
21
|
-
|
|
132
|
+
### 2. Application Entry (`app.ts`)
|
|
22
133
|
|
|
23
|
-
|
|
134
|
+
Start the application using `createApp`. It will choose the Bun adapter when Bun is available and fall back to Node otherwise.
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
import { createApp } from '@ecopages/core/create-app';
|
|
138
|
+
import appConfig from './eco.config';
|
|
139
|
+
|
|
140
|
+
const app = await createApp({ appConfig });
|
|
141
|
+
|
|
142
|
+
await app.start();
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 3. Creating Pages
|
|
146
|
+
|
|
147
|
+
Use the `eco.page()` factory to define static routes. Place these in `src/pages/`:
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
import { eco } from '@ecopages/core';
|
|
151
|
+
import { BaseLayout } from '@/layouts/base-layout';
|
|
152
|
+
|
|
153
|
+
export default eco.page({
|
|
154
|
+
layout: BaseLayout,
|
|
155
|
+
metadata: () => ({
|
|
156
|
+
title: 'Home',
|
|
157
|
+
}),
|
|
158
|
+
render: () => (
|
|
159
|
+
<div>
|
|
160
|
+
<h1>Welcome to Ecopages</h1>
|
|
161
|
+
</div>
|
|
162
|
+
),
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 4. Reusable Components
|
|
167
|
+
|
|
168
|
+
Define components with `eco.component()` to automatically inject necessary stylesheets or scripts only when that component is rendered:
|
|
169
|
+
|
|
170
|
+
```tsx
|
|
171
|
+
import { eco } from '@ecopages/core';
|
|
172
|
+
|
|
173
|
+
export const MyButton = eco.component({
|
|
174
|
+
dependencies: {
|
|
175
|
+
stylesheets: ['./button.css'],
|
|
176
|
+
},
|
|
177
|
+
render: ({ label }) => <button className="my-button">{label}</button>,
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 5. API Handlers
|
|
182
|
+
|
|
183
|
+
Add server-side routes using `defineApiHandler`. Register them on your `app` instance before starting:
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
import { defineApiHandler } from '@ecopages/core';
|
|
187
|
+
|
|
188
|
+
export const helloWorld = defineApiHandler({
|
|
189
|
+
path: '/api/hello',
|
|
190
|
+
method: 'GET',
|
|
191
|
+
handler: async ({ response }) => {
|
|
192
|
+
return response.json({ message: 'Hello World' });
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Attach the handler in your `app.ts` entry:
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// app.ts
|
|
201
|
+
import { createApp } from '@ecopages/core/create-app';
|
|
202
|
+
import { helloWorld } from './handlers/hello';
|
|
203
|
+
import appConfig from './eco.config';
|
|
204
|
+
|
|
205
|
+
const app = await createApp({ appConfig });
|
|
206
|
+
|
|
207
|
+
app.get(helloWorld); // Register the API handler
|
|
208
|
+
|
|
209
|
+
await app.start();
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
See the [official documentation](https://ecopages.app) for advanced usage, API handlers, and integrations.
|
|
213
|
+
|
|
214
|
+
## Import Structure
|
|
215
|
+
|
|
216
|
+
Use the `create-app` subpath for runtime startup and the root package for standard authoring helpers:
|
|
24
217
|
|
|
25
218
|
```ts
|
|
26
|
-
import {
|
|
219
|
+
import { createApp } from '@ecopages/core/create-app';
|
|
220
|
+
import { defineApiHandler, defineGroupHandler, eco } from '@ecopages/core';
|
|
27
221
|
```
|
|
28
222
|
|
|
29
|
-
|
|
223
|
+
> [!NOTE]
|
|
224
|
+
> `createApp` is the recommended entrypoint over `EcopagesApp`.
|
|
225
|
+
|
|
226
|
+
### Runtime Escape Hatches
|
|
227
|
+
|
|
228
|
+
Use runtime-specific subpaths only when you explicitly need Bun-native APIs that bypass the universal abstractions:
|
|
30
229
|
|
|
31
230
|
- `@ecopages/core/bun`
|
|
32
|
-
- `@ecopages/core/node`
|